From 1bc2ff411cb49152c638e31189e5caa255aa7233 Mon Sep 17 00:00:00 2001 From: NeoZng Date: Thu, 13 Apr 2023 11:33:31 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E6=96=B0=E7=BB=84=E7=BB=87=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E7=BB=93=E6=9E=84=EF=BC=8C=E6=96=B9=E4=BE=BF=E4=BF=AE?= =?UTF-8?q?=E6=94=B9cubemx=E8=BF=9B=E8=A1=8C=E7=A7=BB=E6=A4=8D=E6=88=96?= =?UTF-8?q?=E6=96=B0=E5=A2=9E/=E5=87=8F=E5=B0=91=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Device/ST/STM32F4xx/Include/stm32f407xx.h | 0 .../Device/ST/STM32F4xx/Include/stm32f4xx.h | 0 .../ST/STM32F4xx/Include/system_stm32f4xx.h | 0 .../CMSIS/Device/ST/STM32F4xx/LICENSE.txt | 0 .../CMSIS/Include/cmsis_armcc.h | 0 .../CMSIS/Include/cmsis_armclang.h | 0 .../CMSIS/Include/cmsis_compiler.h | 0 .../CMSIS/Include/cmsis_gcc.h | 0 .../CMSIS/Include/cmsis_iccarm.h | 0 .../CMSIS/Include/cmsis_version.h | 0 Drivers/CMSIS/Include/core_armv8mbl.h | 1918 ++ Drivers/CMSIS/Include/core_armv8mml.h | 2927 ++ .../CMSIS/Include/core_cm0.h | 0 .../CMSIS/Include/core_cm0plus.h | 0 Drivers/CMSIS/Include/core_cm1.h | 976 + Drivers/CMSIS/Include/core_cm23.h | 1993 ++ Drivers/CMSIS/Include/core_cm3.h | 1941 ++ Drivers/CMSIS/Include/core_cm33.h | 3002 +++ .../CMSIS/Include/core_cm4.h | 0 Drivers/CMSIS/Include/core_cm7.h | 2671 ++ Drivers/CMSIS/Include/core_sc000.h | 1022 + Drivers/CMSIS/Include/core_sc300.h | 1915 ++ .../CMSIS/Include/mpu_armv7.h | 0 Drivers/CMSIS/Include/mpu_armv8.h | 333 + .../CMSIS/Include/tz_context.h | 0 .../Drivers => Drivers}/CMSIS/LICENSE.txt | 0 .../Inc/Legacy/stm32_hal_legacy.h | 0 .../STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal.h | 0 .../Inc/stm32f4xx_hal_adc.h | 0 .../Inc/stm32f4xx_hal_adc_ex.h | 0 .../Inc/stm32f4xx_hal_can.h | 0 .../Inc/stm32f4xx_hal_cortex.h | 0 .../Inc/stm32f4xx_hal_crc.h | 0 .../Inc/stm32f4xx_hal_dac.h | 0 .../Inc/stm32f4xx_hal_dac_ex.h | 0 .../Inc/stm32f4xx_hal_def.h | 0 .../Inc/stm32f4xx_hal_dma.h | 0 .../Inc/stm32f4xx_hal_dma_ex.h | 0 .../Inc/stm32f4xx_hal_exti.h | 0 .../Inc/stm32f4xx_hal_flash.h | 0 .../Inc/stm32f4xx_hal_flash_ex.h | 0 .../Inc/stm32f4xx_hal_flash_ramfunc.h | 0 .../Inc/stm32f4xx_hal_gpio.h | 0 .../Inc/stm32f4xx_hal_gpio_ex.h | 0 .../Inc/stm32f4xx_hal_i2c.h | 0 .../Inc/stm32f4xx_hal_i2c_ex.h | 0 .../Inc/stm32f4xx_hal_pcd.h | 0 .../Inc/stm32f4xx_hal_pcd_ex.h | 0 .../Inc/stm32f4xx_hal_pwr.h | 0 .../Inc/stm32f4xx_hal_pwr_ex.h | 0 .../Inc/stm32f4xx_hal_rcc.h | 0 .../Inc/stm32f4xx_hal_rcc_ex.h | 0 .../Inc/stm32f4xx_hal_rng.h | 0 .../Inc/stm32f4xx_hal_rtc.h | 0 .../Inc/stm32f4xx_hal_rtc_ex.h | 0 .../Inc/stm32f4xx_hal_spi.h | 0 .../Inc/stm32f4xx_hal_tim.h | 0 .../Inc/stm32f4xx_hal_tim_ex.h | 0 .../Inc/stm32f4xx_hal_uart.h | 0 .../Inc/stm32f4xx_ll_adc.h | 0 .../Inc/stm32f4xx_ll_bus.h | 0 .../Inc/stm32f4xx_ll_cortex.h | 0 .../Inc/stm32f4xx_ll_crc.h | 0 .../Inc/stm32f4xx_ll_dac.h | 0 .../Inc/stm32f4xx_ll_dma.h | 0 .../Inc/stm32f4xx_ll_exti.h | 0 .../Inc/stm32f4xx_ll_gpio.h | 0 .../Inc/stm32f4xx_ll_i2c.h | 0 .../Inc/stm32f4xx_ll_pwr.h | 0 .../Inc/stm32f4xx_ll_rcc.h | 0 .../Inc/stm32f4xx_ll_rng.h | 0 .../Inc/stm32f4xx_ll_rtc.h | 0 .../Inc/stm32f4xx_ll_system.h | 0 .../Inc/stm32f4xx_ll_tim.h | 0 .../Inc/stm32f4xx_ll_usart.h | 0 .../Inc/stm32f4xx_ll_usb.h | 0 .../Inc/stm32f4xx_ll_utils.h | 0 Drivers/STM32F4xx_HAL_Driver/LICENSE.txt | 6 + .../STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.c | 0 .../Src/stm32f4xx_hal_adc.c | 0 .../Src/stm32f4xx_hal_adc_ex.c | 0 .../Src/stm32f4xx_hal_can.c | 0 .../Src/stm32f4xx_hal_cortex.c | 0 .../Src/stm32f4xx_hal_crc.c | 0 .../Src/stm32f4xx_hal_dac.c | 0 .../Src/stm32f4xx_hal_dac_ex.c | 0 .../Src/stm32f4xx_hal_dma.c | 0 .../Src/stm32f4xx_hal_dma_ex.c | 0 .../Src/stm32f4xx_hal_exti.c | 0 .../Src/stm32f4xx_hal_flash.c | 0 .../Src/stm32f4xx_hal_flash_ex.c | 0 .../Src/stm32f4xx_hal_flash_ramfunc.c | 0 .../Src/stm32f4xx_hal_gpio.c | 0 .../Src/stm32f4xx_hal_i2c.c | 0 .../Src/stm32f4xx_hal_i2c_ex.c | 0 .../Src/stm32f4xx_hal_pcd.c | 0 .../Src/stm32f4xx_hal_pcd_ex.c | 0 .../Src/stm32f4xx_hal_pwr.c | 0 .../Src/stm32f4xx_hal_pwr_ex.c | 0 .../Src/stm32f4xx_hal_rcc.c | 0 .../Src/stm32f4xx_hal_rcc_ex.c | 0 .../Src/stm32f4xx_hal_rng.c | 0 .../Src/stm32f4xx_hal_rtc.c | 0 .../Src/stm32f4xx_hal_rtc_ex.c | 0 .../Src/stm32f4xx_hal_spi.c | 0 .../Src/stm32f4xx_hal_tim.c | 0 .../Src/stm32f4xx_hal_tim_ex.c | 0 .../Src/stm32f4xx_hal_uart.c | 0 .../Src/stm32f4xx_ll_adc.c | 0 .../Src/stm32f4xx_ll_usb.c | 0 .../CMSIS/DSP/Include/arm_common_tables.h | 121 - .../CMSIS/DSP/Include/arm_const_structs.h | 66 - .../Source/BasicMathFunctions/arm_abs_f32.c | 153 - .../Source/BasicMathFunctions/arm_abs_q15.c | 167 - .../Source/BasicMathFunctions/arm_abs_q31.c | 118 - .../Source/BasicMathFunctions/arm_abs_q7.c | 145 - .../Source/BasicMathFunctions/arm_add_f32.c | 138 - .../Source/BasicMathFunctions/arm_add_q15.c | 128 - .../Source/BasicMathFunctions/arm_add_q31.c | 136 - .../Source/BasicMathFunctions/arm_add_q7.c | 122 - .../BasicMathFunctions/arm_dot_prod_f32.c | 123 - .../BasicMathFunctions/arm_dot_prod_q15.c | 128 - .../BasicMathFunctions/arm_dot_prod_q31.c | 131 - .../BasicMathFunctions/arm_dot_prod_q7.c | 147 - .../Source/BasicMathFunctions/arm_mult_f32.c | 162 - .../Source/BasicMathFunctions/arm_mult_q15.c | 142 - .../Source/BasicMathFunctions/arm_mult_q31.c | 148 - .../Source/BasicMathFunctions/arm_mult_q7.c | 115 - .../BasicMathFunctions/arm_negate_f32.c | 134 - .../BasicMathFunctions/arm_negate_q15.c | 131 - .../BasicMathFunctions/arm_negate_q31.c | 117 - .../Source/BasicMathFunctions/arm_negate_q7.c | 113 - .../BasicMathFunctions/arm_offset_f32.c | 154 - .../BasicMathFunctions/arm_offset_q15.c | 124 - .../BasicMathFunctions/arm_offset_q31.c | 128 - .../Source/BasicMathFunctions/arm_offset_q7.c | 123 - .../Source/BasicMathFunctions/arm_scale_f32.c | 157 - .../Source/BasicMathFunctions/arm_scale_q15.c | 150 - .../Source/BasicMathFunctions/arm_scale_q31.c | 227 - .../Source/BasicMathFunctions/arm_scale_q7.c | 137 - .../Source/BasicMathFunctions/arm_shift_q15.c | 236 - .../Source/BasicMathFunctions/arm_shift_q31.c | 191 - .../Source/BasicMathFunctions/arm_shift_q7.c | 208 - .../Source/BasicMathFunctions/arm_sub_f32.c | 138 - .../Source/BasicMathFunctions/arm_sub_q15.c | 128 - .../Source/BasicMathFunctions/arm_sub_q31.c | 134 - .../Source/BasicMathFunctions/arm_sub_q7.c | 119 - .../Source/CommonTables/arm_common_tables.c | 22176 ---------------- .../Source/CommonTables/arm_const_structs.c | 379 - .../ComplexMathFunctions/arm_cmplx_conj_f32.c | 171 - .../ComplexMathFunctions/arm_cmplx_conj_q15.c | 149 - .../ComplexMathFunctions/arm_cmplx_conj_q31.c | 169 - .../arm_cmplx_dot_prod_f32.c | 191 - .../arm_cmplx_dot_prod_q15.c | 177 - .../arm_cmplx_dot_prod_q31.c | 175 - .../ComplexMathFunctions/arm_cmplx_mag_f32.c | 153 - .../ComplexMathFunctions/arm_cmplx_mag_q15.c | 141 - .../ComplexMathFunctions/arm_cmplx_mag_q31.c | 173 - .../arm_cmplx_mag_squared_f32.c | 204 - .../arm_cmplx_mag_squared_q15.c | 136 - .../arm_cmplx_mag_squared_q31.c | 149 - .../arm_cmplx_mult_cmplx_f32.c | 196 - .../arm_cmplx_mult_cmplx_q15.c | 181 - .../arm_cmplx_mult_cmplx_q31.c | 314 - .../arm_cmplx_mult_real_f32.c | 213 - .../arm_cmplx_mult_real_q15.c | 191 - .../arm_cmplx_mult_real_q31.c | 211 - .../ControllerFunctions/arm_pid_init_f32.c | 74 - .../ControllerFunctions/arm_pid_init_q15.c | 110 - .../ControllerFunctions/arm_pid_init_q31.c | 95 - .../ControllerFunctions/arm_pid_reset_f32.c | 53 - .../ControllerFunctions/arm_pid_reset_q15.c | 52 - .../ControllerFunctions/arm_pid_reset_q31.c | 53 - .../ControllerFunctions/arm_sin_cos_f32.c | 144 - .../ControllerFunctions/arm_sin_cos_q31.c | 110 - .../Source/FastMathFunctions/arm_cos_f32.c | 115 - .../Source/FastMathFunctions/arm_cos_q15.c | 84 - .../Source/FastMathFunctions/arm_cos_q31.c | 84 - .../Source/FastMathFunctions/arm_sin_f32.c | 123 - .../Source/FastMathFunctions/arm_sin_q15.c | 76 - .../Source/FastMathFunctions/arm_sin_q31.c | 75 - .../Source/FastMathFunctions/arm_sqrt_q15.c | 144 - .../Source/FastMathFunctions/arm_sqrt_q31.c | 142 - .../arm_biquad_cascade_df1_32x64_init_q31.c | 98 - .../arm_biquad_cascade_df1_32x64_q31.c | 549 - .../arm_biquad_cascade_df1_f32.c | 412 - .../arm_biquad_cascade_df1_fast_q15.c | 273 - .../arm_biquad_cascade_df1_fast_q31.c | 292 - .../arm_biquad_cascade_df1_init_f32.c | 97 - .../arm_biquad_cascade_df1_init_q15.c | 99 - .../arm_biquad_cascade_df1_init_q31.c | 98 - .../arm_biquad_cascade_df1_q15.c | 398 - .../arm_biquad_cascade_df1_q31.c | 392 - .../arm_biquad_cascade_df2T_f32.c | 590 - .../arm_biquad_cascade_df2T_f64.c | 590 - .../arm_biquad_cascade_df2T_init_f32.c | 89 - .../arm_biquad_cascade_df2T_init_f64.c | 89 - .../arm_biquad_cascade_stereo_df2T_f32.c | 670 - .../arm_biquad_cascade_stereo_df2T_init_f32.c | 89 - .../Source/FilteringFunctions/arm_conv_f32.c | 635 - .../arm_conv_fast_opt_q15.c | 531 - .../FilteringFunctions/arm_conv_fast_q15.c | 1398 - .../FilteringFunctions/arm_conv_fast_q31.c | 565 - .../FilteringFunctions/arm_conv_opt_q15.c | 533 - .../FilteringFunctions/arm_conv_opt_q7.c | 423 - .../FilteringFunctions/arm_conv_partial_f32.c | 678 - .../arm_conv_partial_fast_opt_q15.c | 756 - .../arm_conv_partial_fast_q15.c | 1494 -- .../arm_conv_partial_fast_q31.c | 620 - .../arm_conv_partial_opt_q15.c | 753 - .../arm_conv_partial_opt_q7.c | 791 - .../FilteringFunctions/arm_conv_partial_q15.c | 795 - .../FilteringFunctions/arm_conv_partial_q31.c | 616 - .../FilteringFunctions/arm_conv_partial_q7.c | 750 - .../Source/FilteringFunctions/arm_conv_q15.c | 722 - .../Source/FilteringFunctions/arm_conv_q31.c | 553 - .../Source/FilteringFunctions/arm_conv_q7.c | 678 - .../FilteringFunctions/arm_correlate_f32.c | 727 - .../arm_correlate_fast_opt_q15.c | 500 - .../arm_correlate_fast_q15.c | 1307 - .../arm_correlate_fast_q31.c | 600 - .../arm_correlate_opt_q15.c | 501 - .../FilteringFunctions/arm_correlate_opt_q7.c | 452 - .../FilteringFunctions/arm_correlate_q15.c | 707 - .../FilteringFunctions/arm_correlate_q31.c | 653 - .../FilteringFunctions/arm_correlate_q7.c | 778 - .../FilteringFunctions/arm_fir_decimate_f32.c | 512 - .../arm_fir_decimate_fast_q15.c | 586 - .../arm_fir_decimate_fast_q31.c | 339 - .../arm_fir_decimate_init_f32.c | 105 - .../arm_fir_decimate_init_q15.c | 107 - .../arm_fir_decimate_init_q31.c | 105 - .../FilteringFunctions/arm_fir_decimate_q15.c | 684 - .../FilteringFunctions/arm_fir_decimate_q31.c | 299 - .../Source/FilteringFunctions/arm_fir_f32.c | 985 - .../FilteringFunctions/arm_fir_fast_q15.c | 333 - .../FilteringFunctions/arm_fir_fast_q31.c | 293 - .../FilteringFunctions/arm_fir_init_f32.c | 84 - .../FilteringFunctions/arm_fir_init_q15.c | 142 - .../FilteringFunctions/arm_fir_init_q31.c | 84 - .../FilteringFunctions/arm_fir_init_q7.c | 82 - .../arm_fir_interpolate_f32.c | 569 - .../arm_fir_interpolate_init_f32.c | 109 - .../arm_fir_interpolate_init_q15.c | 108 - .../arm_fir_interpolate_init_q31.c | 109 - .../arm_fir_interpolate_q15.c | 496 - .../arm_fir_interpolate_q31.c | 492 - .../FilteringFunctions/arm_fir_lattice_f32.c | 494 - .../arm_fir_lattice_init_f32.c | 71 - .../arm_fir_lattice_init_q15.c | 71 - .../arm_fir_lattice_init_q31.c | 71 - .../FilteringFunctions/arm_fir_lattice_q15.c | 524 - .../FilteringFunctions/arm_fir_lattice_q31.c | 341 - .../Source/FilteringFunctions/arm_fir_q15.c | 679 - .../Source/FilteringFunctions/arm_fir_q31.c | 353 - .../Source/FilteringFunctions/arm_fir_q7.c | 385 - .../FilteringFunctions/arm_fir_sparse_f32.c | 433 - .../arm_fir_sparse_init_f32.c | 95 - .../arm_fir_sparse_init_q15.c | 95 - .../arm_fir_sparse_init_q31.c | 94 - .../arm_fir_sparse_init_q7.c | 95 - .../FilteringFunctions/arm_fir_sparse_q15.c | 470 - .../FilteringFunctions/arm_fir_sparse_q31.c | 450 - .../FilteringFunctions/arm_fir_sparse_q7.c | 469 - .../FilteringFunctions/arm_iir_lattice_f32.c | 435 - .../arm_iir_lattice_init_f32.c | 79 - .../arm_iir_lattice_init_q15.c | 79 - .../arm_iir_lattice_init_q31.c | 79 - .../FilteringFunctions/arm_iir_lattice_q15.c | 452 - .../FilteringFunctions/arm_iir_lattice_q31.c | 338 - .../Source/FilteringFunctions/arm_lms_f32.c | 430 - .../FilteringFunctions/arm_lms_init_f32.c | 83 - .../FilteringFunctions/arm_lms_init_q15.c | 93 - .../FilteringFunctions/arm_lms_init_q31.c | 93 - .../FilteringFunctions/arm_lms_norm_f32.c | 454 - .../arm_lms_norm_init_f32.c | 93 - .../arm_lms_norm_init_q15.c | 100 - .../arm_lms_norm_init_q31.c | 99 - .../FilteringFunctions/arm_lms_norm_q15.c | 428 - .../FilteringFunctions/arm_lms_norm_q31.c | 419 - .../Source/FilteringFunctions/arm_lms_q15.c | 368 - .../Source/FilteringFunctions/arm_lms_q31.c | 357 - .../Source/MatrixFunctions/arm_mat_add_f32.c | 196 - .../Source/MatrixFunctions/arm_mat_add_q15.c | 151 - .../Source/MatrixFunctions/arm_mat_add_q31.c | 195 - .../MatrixFunctions/arm_mat_cmplx_mult_f32.c | 272 - .../MatrixFunctions/arm_mat_cmplx_mult_q15.c | 413 - .../MatrixFunctions/arm_mat_cmplx_mult_q31.c | 282 - .../Source/MatrixFunctions/arm_mat_init_f32.c | 76 - .../Source/MatrixFunctions/arm_mat_init_q15.c | 67 - .../Source/MatrixFunctions/arm_mat_init_q31.c | 72 - .../MatrixFunctions/arm_mat_inverse_f32.c | 691 - .../MatrixFunctions/arm_mat_inverse_f64.c | 691 - .../Source/MatrixFunctions/arm_mat_mult_f32.c | 274 - .../MatrixFunctions/arm_mat_mult_fast_q15.c | 525 - .../MatrixFunctions/arm_mat_mult_fast_q31.c | 384 - .../Source/MatrixFunctions/arm_mat_mult_q15.c | 457 - .../Source/MatrixFunctions/arm_mat_mult_q31.c | 282 - .../MatrixFunctions/arm_mat_scale_f32.c | 169 - .../MatrixFunctions/arm_mat_scale_q15.c | 171 - .../MatrixFunctions/arm_mat_scale_q31.c | 191 - .../Source/MatrixFunctions/arm_mat_sub_f32.c | 197 - .../Source/MatrixFunctions/arm_mat_sub_q15.c | 148 - .../Source/MatrixFunctions/arm_mat_sub_q31.c | 196 - .../MatrixFunctions/arm_mat_trans_f32.c | 206 - .../MatrixFunctions/arm_mat_trans_q15.c | 272 - .../MatrixFunctions/arm_mat_trans_q31.c | 198 - .../Source/StatisticsFunctions/arm_max_f32.c | 170 - .../Source/StatisticsFunctions/arm_max_q15.c | 162 - .../Source/StatisticsFunctions/arm_max_q31.c | 162 - .../Source/StatisticsFunctions/arm_max_q7.c | 162 - .../Source/StatisticsFunctions/arm_mean_f32.c | 125 - .../Source/StatisticsFunctions/arm_mean_q15.c | 120 - .../Source/StatisticsFunctions/arm_mean_q31.c | 123 - .../Source/StatisticsFunctions/arm_mean_q7.c | 120 - .../Source/StatisticsFunctions/arm_min_f32.c | 170 - .../Source/StatisticsFunctions/arm_min_q15.c | 163 - .../Source/StatisticsFunctions/arm_min_q31.c | 163 - .../Source/StatisticsFunctions/arm_min_q7.c | 163 - .../StatisticsFunctions/arm_power_f32.c | 129 - .../StatisticsFunctions/arm_power_q15.c | 138 - .../StatisticsFunctions/arm_power_q31.c | 129 - .../Source/StatisticsFunctions/arm_power_q7.c | 127 - .../Source/StatisticsFunctions/arm_rms_f32.c | 127 - .../Source/StatisticsFunctions/arm_rms_q15.c | 139 - .../Source/StatisticsFunctions/arm_rms_q31.c | 137 - .../Source/StatisticsFunctions/arm_std_f32.c | 186 - .../Source/StatisticsFunctions/arm_std_q15.c | 174 - .../Source/StatisticsFunctions/arm_std_q31.c | 169 - .../Source/StatisticsFunctions/arm_var_f32.c | 181 - .../Source/StatisticsFunctions/arm_var_q15.c | 172 - .../Source/StatisticsFunctions/arm_var_q31.c | 169 - .../Source/SupportFunctions/arm_copy_f32.c | 123 - .../Source/SupportFunctions/arm_copy_q15.c | 102 - .../Source/SupportFunctions/arm_copy_q31.c | 111 - .../DSP/Source/SupportFunctions/arm_copy_q7.c | 103 - .../Source/SupportFunctions/arm_fill_f32.c | 122 - .../Source/SupportFunctions/arm_fill_q15.c | 108 - .../Source/SupportFunctions/arm_fill_q31.c | 109 - .../DSP/Source/SupportFunctions/arm_fill_q7.c | 106 - .../SupportFunctions/arm_float_to_q15.c | 192 - .../SupportFunctions/arm_float_to_q31.c | 199 - .../Source/SupportFunctions/arm_float_to_q7.c | 191 - .../SupportFunctions/arm_q15_to_float.c | 122 - .../Source/SupportFunctions/arm_q15_to_q31.c | 144 - .../Source/SupportFunctions/arm_q15_to_q7.c | 142 - .../SupportFunctions/arm_q31_to_float.c | 119 - .../Source/SupportFunctions/arm_q31_to_q15.c | 133 - .../Source/SupportFunctions/arm_q31_to_q7.c | 124 - .../Source/SupportFunctions/arm_q7_to_float.c | 119 - .../Source/SupportFunctions/arm_q7_to_q15.c | 145 - .../Source/SupportFunctions/arm_q7_to_q31.c | 130 - .../TransformFunctions/arm_bitreversal.c | 230 - .../TransformFunctions/arm_bitreversal2.S | 216 - .../Source/TransformFunctions/arm_cfft_f32.c | 620 - .../Source/TransformFunctions/arm_cfft_q15.c | 345 - .../Source/TransformFunctions/arm_cfft_q31.c | 252 - .../TransformFunctions/arm_cfft_radix2_f32.c | 472 - .../arm_cfft_radix2_init_f32.c | 192 - .../arm_cfft_radix2_init_q15.c | 177 - .../arm_cfft_radix2_init_q31.c | 174 - .../TransformFunctions/arm_cfft_radix2_q15.c | 729 - .../TransformFunctions/arm_cfft_radix2_q31.c | 338 - .../TransformFunctions/arm_cfft_radix4_f32.c | 1209 - .../arm_cfft_radix4_init_f32.c | 152 - .../arm_cfft_radix4_init_q15.c | 140 - .../arm_cfft_radix4_init_q31.c | 136 - .../TransformFunctions/arm_cfft_radix4_q15.c | 1910 -- .../TransformFunctions/arm_cfft_radix4_q31.c | 1389 - .../TransformFunctions/arm_cfft_radix8_f32.c | 285 - .../Source/TransformFunctions/arm_dct4_f32.c | 449 - .../TransformFunctions/arm_dct4_init_f32.c | 16513 ------------ .../TransformFunctions/arm_dct4_init_q15.c | 4280 --- .../TransformFunctions/arm_dct4_init_q31.c | 7686 ------ .../Source/TransformFunctions/arm_dct4_q15.c | 382 - .../Source/TransformFunctions/arm_dct4_q31.c | 383 - .../Source/TransformFunctions/arm_rfft_f32.c | 318 - .../TransformFunctions/arm_rfft_fast_f32.c | 317 - .../arm_rfft_fast_init_f32.c | 131 - .../TransformFunctions/arm_rfft_init_f32.c | 4273 --- .../TransformFunctions/arm_rfft_init_q15.c | 2229 -- .../TransformFunctions/arm_rfft_init_q31.c | 4280 --- .../Source/TransformFunctions/arm_rfft_q15.c | 426 - .../Source/TransformFunctions/arm_rfft_q31.c | 283 - .../CMSIS/Lib/GCC/libarm_cortexM4lf_math.a | Bin 3097502 -> 0 bytes HAL_N_Middlewares/Inc/usbd_cdc_if.h | 131 - .../Class/CDC/Inc/usbd_cdc_if_template.h | 43 - .../Class/CDC/Src/usbd_cdc_if_template.c | 247 - .../Core/Inc/usbd_conf_template.h | 222 - .../Core/Inc/usbd_desc_template.h | 61 - .../Core/Src/usbd_conf_template.c | 282 - .../Core/Src/usbd_desc_template.c | 452 - HAL_N_Middlewares/Src/main.c | 243 - HAL_N_Middlewares/Src/usbd_cdc_if.c | 344 - .../Inc => Inc}/FreeRTOSConfig.h | 0 {HAL_N_Middlewares/Inc => Inc}/adc.h | 0 {HAL_N_Middlewares/Inc => Inc}/can.h | 0 {HAL_N_Middlewares/Inc => Inc}/crc.h | 0 {HAL_N_Middlewares/Inc => Inc}/dac.h | 0 {HAL_N_Middlewares/Inc => Inc}/dma.h | 0 {HAL_N_Middlewares/Inc => Inc}/gpio.h | 0 {HAL_N_Middlewares/Inc => Inc}/i2c.h | 0 {HAL_N_Middlewares/Inc => Inc}/main.h | 0 {HAL_N_Middlewares/Inc => Inc}/rng.h | 0 {HAL_N_Middlewares/Inc => Inc}/rtc.h | 0 {HAL_N_Middlewares/Inc => Inc}/spi.h | 0 .../Inc => Inc}/stm32f4xx_hal_conf.h | 0 {HAL_N_Middlewares/Inc => Inc}/stm32f4xx_it.h | 0 {HAL_N_Middlewares/Inc => Inc}/tim.h | 0 {HAL_N_Middlewares/Inc => Inc}/usart.h | 0 {HAL_N_Middlewares/Inc => Inc}/usb_device.h | 0 Inc/usbd_cdc_if.h | 131 + {HAL_N_Middlewares/Inc => Inc}/usbd_conf.h | 0 {HAL_N_Middlewares/Inc => Inc}/usbd_desc.h | 0 Makefile | 232 +- .../ST/ARM/DSP/Inc}/arm_math.h | 0 .../ST/ARM/DSP/Lib/libarm_cortexM4lf_math.a | Bin 0 -> 5359640 bytes .../Class/CDC/Inc/usbd_cdc.h | 0 .../Class/CDC/Src/usbd_cdc.c | 0 .../Core/Inc/usbd_core.h | 0 .../Core/Inc/usbd_ctlreq.h | 0 .../Core/Inc/usbd_def.h | 0 .../Core/Inc/usbd_ioreq.h | 0 .../Core/Src/usbd_core.c | 0 .../Core/Src/usbd_ctlreq.c | 0 .../Core/Src/usbd_ioreq.c | 0 .../ST/STM32_USB_Device_Library/LICENSE.txt | 0 .../FreeRTOS/Source/CMSIS_RTOS/cmsis_os.c | 0 .../FreeRTOS/Source/CMSIS_RTOS/cmsis_os.h | 0 .../Third_Party/FreeRTOS/Source/LICENSE | 18 + .../Third_Party/FreeRTOS/Source/croutine.c | 0 .../FreeRTOS/Source/event_groups.c | 0 .../FreeRTOS/Source/include/FreeRTOS.h | 0 .../FreeRTOS/Source/include/StackMacros.h | 0 .../FreeRTOS/Source/include/atomic.h | 0 .../FreeRTOS/Source/include/croutine.h | 0 .../Source/include/deprecated_definitions.h | 0 .../FreeRTOS/Source/include/event_groups.h | 0 .../FreeRTOS/Source/include/list.h | 0 .../FreeRTOS/Source/include/message_buffer.h | 0 .../FreeRTOS/Source/include/mpu_prototypes.h | 0 .../FreeRTOS/Source/include/mpu_wrappers.h | 0 .../FreeRTOS/Source/include/portable.h | 0 .../FreeRTOS/Source/include/projdefs.h | 0 .../FreeRTOS/Source/include/queue.h | 0 .../FreeRTOS/Source/include/semphr.h | 0 .../FreeRTOS/Source/include/stack_macros.h | 0 .../FreeRTOS/Source/include/stream_buffer.h | 0 .../FreeRTOS/Source/include/task.h | 0 .../FreeRTOS/Source/include/timers.h | 0 .../Third_Party/FreeRTOS/Source/list.c | 0 .../Source/portable/GCC/ARM_CM4F/port.c | 0 .../Source/portable/GCC/ARM_CM4F/portmacro.h | 0 .../FreeRTOS/Source/portable/MemMang/heap_4.c | 0 .../Third_Party/FreeRTOS/Source/queue.c | 0 .../FreeRTOS/Source/stream_buffer.c | 0 .../Third_Party/FreeRTOS/Source/tasks.c | 0 .../Third_Party/FreeRTOS/Source/timers.c | 0 .../SEGGER/Config/SEGGER_RTT_Conf.h | 0 .../Third_Party/SEGGER/RTT/SEGGER_RTT.c | 0 .../Third_Party/SEGGER/RTT/SEGGER_RTT.h | 0 .../SEGGER/RTT/SEGGER_RTT_ASM_ARMv7M.s | 0 .../SEGGER/RTT/SEGGER_RTT_printf.c | 0 {HAL_N_Middlewares/Src => Src}/adc.c | 0 {HAL_N_Middlewares/Src => Src}/can.c | 2 +- {HAL_N_Middlewares/Src => Src}/crc.c | 0 {HAL_N_Middlewares/Src => Src}/dac.c | 0 {HAL_N_Middlewares/Src => Src}/dma.c | 0 {HAL_N_Middlewares/Src => Src}/freertos.c | 16 +- {HAL_N_Middlewares/Src => Src}/gpio.c | 0 {HAL_N_Middlewares/Src => Src}/i2c.c | 0 Src/main.c | 243 + {HAL_N_Middlewares/Src => Src}/rng.c | 0 {HAL_N_Middlewares/Src => Src}/rtc.c | 0 {HAL_N_Middlewares/Src => Src}/spi.c | 0 .../Src => Src}/stm32f4xx_hal_msp.c | 0 .../Src => Src}/stm32f4xx_hal_timebase_tim.c | 0 {HAL_N_Middlewares/Src => Src}/stm32f4xx_it.c | 177 +- .../Src => Src}/system_stm32f4xx.c | 0 {HAL_N_Middlewares/Src => Src}/tim.c | 0 {HAL_N_Middlewares/Src => Src}/usart.c | 2 +- {HAL_N_Middlewares/Src => Src}/usb_device.c | 0 Src/usbd_cdc_if.c | 328 + {HAL_N_Middlewares/Src => Src}/usbd_conf.c | 0 {HAL_N_Middlewares/Src => Src}/usbd_desc.c | 0 basic_framework.ioc | 3 +- bsp/bsp_init.c | 2 +- modules/can_comm/can_comm.c | 3 - modules/referee/referee_communication.c | 2 +- 修改HAL配置时文件目录的更改.md | 14 - 490 files changed, 19643 insertions(+), 139630 deletions(-) rename {HAL_N_Middlewares/Drivers => Drivers}/CMSIS/Device/ST/STM32F4xx/Include/stm32f407xx.h (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/CMSIS/Device/ST/STM32F4xx/Include/stm32f4xx.h (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/CMSIS/Device/ST/STM32F4xx/Include/system_stm32f4xx.h (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/CMSIS/Device/ST/STM32F4xx/LICENSE.txt (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/CMSIS/Include/cmsis_armcc.h (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/CMSIS/Include/cmsis_armclang.h (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/CMSIS/Include/cmsis_compiler.h (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/CMSIS/Include/cmsis_gcc.h (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/CMSIS/Include/cmsis_iccarm.h (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/CMSIS/Include/cmsis_version.h (100%) create mode 100644 Drivers/CMSIS/Include/core_armv8mbl.h create mode 100644 Drivers/CMSIS/Include/core_armv8mml.h rename {HAL_N_Middlewares/Drivers => Drivers}/CMSIS/Include/core_cm0.h (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/CMSIS/Include/core_cm0plus.h (100%) create mode 100644 Drivers/CMSIS/Include/core_cm1.h create mode 100644 Drivers/CMSIS/Include/core_cm23.h create mode 100644 Drivers/CMSIS/Include/core_cm3.h create mode 100644 Drivers/CMSIS/Include/core_cm33.h rename {HAL_N_Middlewares/Drivers => Drivers}/CMSIS/Include/core_cm4.h (100%) create mode 100644 Drivers/CMSIS/Include/core_cm7.h create mode 100644 Drivers/CMSIS/Include/core_sc000.h create mode 100644 Drivers/CMSIS/Include/core_sc300.h rename {HAL_N_Middlewares/Drivers => Drivers}/CMSIS/Include/mpu_armv7.h (100%) create mode 100644 Drivers/CMSIS/Include/mpu_armv8.h rename {HAL_N_Middlewares/Drivers => Drivers}/CMSIS/Include/tz_context.h (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/CMSIS/LICENSE.txt (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/STM32F4xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal.h (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_adc.h (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_adc_ex.h (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_can.h (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_cortex.h (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_crc.h (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_dac.h (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_dac_ex.h (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_def.h (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_dma.h (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_dma_ex.h (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_exti.h (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_flash.h (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_flash_ex.h (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_flash_ramfunc.h (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_gpio.h (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_gpio_ex.h (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_i2c.h (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_i2c_ex.h (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pcd.h (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pcd_ex.h (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pwr.h (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pwr_ex.h (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_rcc.h (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_rcc_ex.h (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_rng.h (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_rtc.h (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_rtc_ex.h (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_spi.h (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_tim.h (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_tim_ex.h (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_uart.h (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_adc.h (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_bus.h (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_cortex.h (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_crc.h (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_dac.h (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_dma.h (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_exti.h (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_gpio.h (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_i2c.h (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_pwr.h (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_rcc.h (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_rng.h (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_rtc.h (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_system.h (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_tim.h (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_usart.h (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_usb.h (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_utils.h (100%) create mode 100644 Drivers/STM32F4xx_HAL_Driver/LICENSE.txt rename {HAL_N_Middlewares/Drivers => Drivers}/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.c (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc.c (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc_ex.c (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_can.c (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.c (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_crc.c (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dac.c (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dac_ex.c (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.c (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma_ex.c (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_exti.c (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ex.c (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ramfunc.c (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.c (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c.c (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c_ex.c (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.c (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.c (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.c (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr_ex.c (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.c (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.c (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rng.c (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rtc.c (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rtc_ex.c (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.c (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.c (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.c (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.c (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_adc.c (100%) rename {HAL_N_Middlewares/Drivers => Drivers}/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.c (100%) delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Include/arm_common_tables.h delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Include/arm_const_structs.h delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_abs_f32.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_abs_q15.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_abs_q31.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_abs_q7.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_add_f32.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_add_q15.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_add_q31.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_add_q7.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_dot_prod_f32.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_dot_prod_q15.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_dot_prod_q31.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_dot_prod_q7.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_mult_f32.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_mult_q15.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_mult_q31.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_mult_q7.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_negate_f32.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_negate_q15.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_negate_q31.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_negate_q7.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_offset_f32.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_offset_q15.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_offset_q31.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_offset_q7.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_scale_f32.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_scale_q15.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_scale_q31.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_scale_q7.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_shift_q15.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_shift_q31.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_shift_q7.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_sub_f32.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_sub_q15.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_sub_q31.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_sub_q7.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/CommonTables/arm_common_tables.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/CommonTables/arm_const_structs.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_conj_f32.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_conj_q15.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_conj_q31.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_dot_prod_f32.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_dot_prod_q15.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_dot_prod_q31.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mag_f32.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mag_q15.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mag_q31.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mag_squared_f32.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mag_squared_q15.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mag_squared_q31.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mult_cmplx_f32.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mult_cmplx_q15.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mult_cmplx_q31.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mult_real_f32.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mult_real_q15.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mult_real_q31.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ControllerFunctions/arm_pid_init_f32.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ControllerFunctions/arm_pid_init_q15.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ControllerFunctions/arm_pid_init_q31.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ControllerFunctions/arm_pid_reset_f32.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ControllerFunctions/arm_pid_reset_q15.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ControllerFunctions/arm_pid_reset_q31.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ControllerFunctions/arm_sin_cos_f32.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ControllerFunctions/arm_sin_cos_q31.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FastMathFunctions/arm_cos_f32.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FastMathFunctions/arm_cos_q15.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FastMathFunctions/arm_cos_q31.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FastMathFunctions/arm_sin_f32.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FastMathFunctions/arm_sin_q15.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FastMathFunctions/arm_sin_q31.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FastMathFunctions/arm_sqrt_q15.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FastMathFunctions/arm_sqrt_q31.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_32x64_init_q31.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_32x64_q31.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_f32.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_fast_q15.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_fast_q31.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_init_f32.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_init_q15.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_init_q31.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_q15.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_q31.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df2T_f32.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df2T_f64.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df2T_init_f32.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df2T_init_f64.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_stereo_df2T_f32.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_stereo_df2T_init_f32.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_f32.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_fast_opt_q15.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_fast_q15.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_fast_q31.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_opt_q15.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_opt_q7.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_f32.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_fast_opt_q15.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_fast_q15.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_fast_q31.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_opt_q15.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_opt_q7.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_q15.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_q31.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_q7.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_q15.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_q31.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_q7.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_f32.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_fast_opt_q15.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_fast_q15.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_fast_q31.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_opt_q15.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_opt_q7.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_q15.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_q31.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_q7.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_f32.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_fast_q15.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_fast_q31.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_init_f32.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_init_q15.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_init_q31.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_q15.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_q31.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_f32.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_fast_q15.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_fast_q31.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_init_f32.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_init_q15.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_init_q31.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_init_q7.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_interpolate_f32.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_interpolate_init_f32.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_interpolate_init_q15.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_interpolate_init_q31.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_interpolate_q15.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_interpolate_q31.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_lattice_f32.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_lattice_init_f32.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_lattice_init_q15.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_lattice_init_q31.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_lattice_q15.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_lattice_q31.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_q15.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_q31.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_q7.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_f32.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_init_f32.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_init_q15.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_init_q31.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_init_q7.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_q15.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_q31.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_q7.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_iir_lattice_f32.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_iir_lattice_init_f32.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_iir_lattice_init_q15.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_iir_lattice_init_q31.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_iir_lattice_q15.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_iir_lattice_q31.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_f32.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_init_f32.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_init_q15.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_init_q31.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_norm_f32.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_norm_init_f32.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_norm_init_q15.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_norm_init_q31.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_norm_q15.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_norm_q31.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_q15.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_q31.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_add_f32.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_add_q15.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_add_q31.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_cmplx_mult_f32.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_cmplx_mult_q15.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_cmplx_mult_q31.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_init_f32.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_init_q15.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_init_q31.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_inverse_f32.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_inverse_f64.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_mult_f32.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_mult_fast_q15.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_mult_fast_q31.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_mult_q15.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_mult_q31.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_scale_f32.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_scale_q15.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_scale_q31.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_sub_f32.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_sub_q15.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_sub_q31.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_trans_f32.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_trans_q15.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_trans_q31.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_max_f32.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_max_q15.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_max_q31.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_max_q7.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_mean_f32.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_mean_q15.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_mean_q31.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_mean_q7.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_min_f32.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_min_q15.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_min_q31.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_min_q7.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_power_f32.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_power_q15.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_power_q31.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_power_q7.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_rms_f32.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_rms_q15.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_rms_q31.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_std_f32.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_std_q15.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_std_q31.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_var_f32.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_var_q15.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_var_q31.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_copy_f32.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_copy_q15.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_copy_q31.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_copy_q7.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_fill_f32.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_fill_q15.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_fill_q31.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_fill_q7.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_float_to_q15.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_float_to_q31.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_float_to_q7.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_q15_to_float.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_q15_to_q31.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_q15_to_q7.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_q31_to_float.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_q31_to_q15.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_q31_to_q7.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_q7_to_float.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_q7_to_q15.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_q7_to_q31.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_bitreversal.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_bitreversal2.S delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_f32.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_q15.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_q31.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix2_f32.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix2_init_f32.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix2_init_q15.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix2_init_q31.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix2_q15.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix2_q31.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix4_f32.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix4_init_f32.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix4_init_q15.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix4_init_q31.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix4_q15.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix4_q31.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix8_f32.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_dct4_f32.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_dct4_init_f32.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_dct4_init_q15.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_dct4_init_q31.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_dct4_q15.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_dct4_q31.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_rfft_f32.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_rfft_fast_f32.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_rfft_fast_init_f32.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_rfft_init_f32.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_rfft_init_q15.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_rfft_init_q31.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_rfft_q15.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_rfft_q31.c delete mode 100644 HAL_N_Middlewares/Drivers/CMSIS/Lib/GCC/libarm_cortexM4lf_math.a delete mode 100644 HAL_N_Middlewares/Inc/usbd_cdc_if.h delete mode 100644 HAL_N_Middlewares/Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc/usbd_cdc_if_template.h delete mode 100644 HAL_N_Middlewares/Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc_if_template.c delete mode 100644 HAL_N_Middlewares/Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_conf_template.h delete mode 100644 HAL_N_Middlewares/Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_desc_template.h delete mode 100644 HAL_N_Middlewares/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_conf_template.c delete mode 100644 HAL_N_Middlewares/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_desc_template.c delete mode 100644 HAL_N_Middlewares/Src/main.c delete mode 100644 HAL_N_Middlewares/Src/usbd_cdc_if.c rename {HAL_N_Middlewares/Inc => Inc}/FreeRTOSConfig.h (100%) rename {HAL_N_Middlewares/Inc => Inc}/adc.h (100%) rename {HAL_N_Middlewares/Inc => Inc}/can.h (100%) rename {HAL_N_Middlewares/Inc => Inc}/crc.h (100%) rename {HAL_N_Middlewares/Inc => Inc}/dac.h (100%) rename {HAL_N_Middlewares/Inc => Inc}/dma.h (100%) rename {HAL_N_Middlewares/Inc => Inc}/gpio.h (100%) rename {HAL_N_Middlewares/Inc => Inc}/i2c.h (100%) rename {HAL_N_Middlewares/Inc => Inc}/main.h (100%) rename {HAL_N_Middlewares/Inc => Inc}/rng.h (100%) rename {HAL_N_Middlewares/Inc => Inc}/rtc.h (100%) rename {HAL_N_Middlewares/Inc => Inc}/spi.h (100%) rename {HAL_N_Middlewares/Inc => Inc}/stm32f4xx_hal_conf.h (100%) rename {HAL_N_Middlewares/Inc => Inc}/stm32f4xx_it.h (100%) rename {HAL_N_Middlewares/Inc => Inc}/tim.h (100%) rename {HAL_N_Middlewares/Inc => Inc}/usart.h (100%) rename {HAL_N_Middlewares/Inc => Inc}/usb_device.h (100%) create mode 100644 Inc/usbd_cdc_if.h rename {HAL_N_Middlewares/Inc => Inc}/usbd_conf.h (100%) rename {HAL_N_Middlewares/Inc => Inc}/usbd_desc.h (100%) rename {HAL_N_Middlewares/Drivers/CMSIS/DSP/Include => Middlewares/ST/ARM/DSP/Inc}/arm_math.h (100%) create mode 100644 Middlewares/ST/ARM/DSP/Lib/libarm_cortexM4lf_math.a rename {HAL_N_Middlewares/Middlewares => Middlewares}/ST/STM32_USB_Device_Library/Class/CDC/Inc/usbd_cdc.h (100%) rename {HAL_N_Middlewares/Middlewares => Middlewares}/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.c (100%) rename {HAL_N_Middlewares/Middlewares => Middlewares}/ST/STM32_USB_Device_Library/Core/Inc/usbd_core.h (100%) rename {HAL_N_Middlewares/Middlewares => Middlewares}/ST/STM32_USB_Device_Library/Core/Inc/usbd_ctlreq.h (100%) rename {HAL_N_Middlewares/Middlewares => Middlewares}/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h (100%) rename {HAL_N_Middlewares/Middlewares => Middlewares}/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h (100%) rename {HAL_N_Middlewares/Middlewares => Middlewares}/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c (100%) rename {HAL_N_Middlewares/Middlewares => Middlewares}/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c (100%) rename {HAL_N_Middlewares/Middlewares => Middlewares}/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.c (100%) rename {HAL_N_Middlewares/Middlewares => Middlewares}/ST/STM32_USB_Device_Library/LICENSE.txt (100%) rename {HAL_N_Middlewares/Middlewares => Middlewares}/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.c (100%) rename {HAL_N_Middlewares/Middlewares => Middlewares}/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.h (100%) create mode 100644 Middlewares/Third_Party/FreeRTOS/Source/LICENSE rename {HAL_N_Middlewares/Middlewares => Middlewares}/Third_Party/FreeRTOS/Source/croutine.c (100%) rename {HAL_N_Middlewares/Middlewares => Middlewares}/Third_Party/FreeRTOS/Source/event_groups.c (100%) rename {HAL_N_Middlewares/Middlewares => Middlewares}/Third_Party/FreeRTOS/Source/include/FreeRTOS.h (100%) rename {HAL_N_Middlewares/Middlewares => Middlewares}/Third_Party/FreeRTOS/Source/include/StackMacros.h (100%) rename {HAL_N_Middlewares/Middlewares => Middlewares}/Third_Party/FreeRTOS/Source/include/atomic.h (100%) rename {HAL_N_Middlewares/Middlewares => Middlewares}/Third_Party/FreeRTOS/Source/include/croutine.h (100%) rename {HAL_N_Middlewares/Middlewares => Middlewares}/Third_Party/FreeRTOS/Source/include/deprecated_definitions.h (100%) rename {HAL_N_Middlewares/Middlewares => Middlewares}/Third_Party/FreeRTOS/Source/include/event_groups.h (100%) rename {HAL_N_Middlewares/Middlewares => Middlewares}/Third_Party/FreeRTOS/Source/include/list.h (100%) rename {HAL_N_Middlewares/Middlewares => Middlewares}/Third_Party/FreeRTOS/Source/include/message_buffer.h (100%) rename {HAL_N_Middlewares/Middlewares => Middlewares}/Third_Party/FreeRTOS/Source/include/mpu_prototypes.h (100%) rename {HAL_N_Middlewares/Middlewares => Middlewares}/Third_Party/FreeRTOS/Source/include/mpu_wrappers.h (100%) rename {HAL_N_Middlewares/Middlewares => Middlewares}/Third_Party/FreeRTOS/Source/include/portable.h (100%) rename {HAL_N_Middlewares/Middlewares => Middlewares}/Third_Party/FreeRTOS/Source/include/projdefs.h (100%) rename {HAL_N_Middlewares/Middlewares => Middlewares}/Third_Party/FreeRTOS/Source/include/queue.h (100%) rename {HAL_N_Middlewares/Middlewares => Middlewares}/Third_Party/FreeRTOS/Source/include/semphr.h (100%) rename {HAL_N_Middlewares/Middlewares => Middlewares}/Third_Party/FreeRTOS/Source/include/stack_macros.h (100%) rename {HAL_N_Middlewares/Middlewares => Middlewares}/Third_Party/FreeRTOS/Source/include/stream_buffer.h (100%) rename {HAL_N_Middlewares/Middlewares => Middlewares}/Third_Party/FreeRTOS/Source/include/task.h (100%) rename {HAL_N_Middlewares/Middlewares => Middlewares}/Third_Party/FreeRTOS/Source/include/timers.h (100%) rename {HAL_N_Middlewares/Middlewares => Middlewares}/Third_Party/FreeRTOS/Source/list.c (100%) rename {HAL_N_Middlewares/Middlewares => Middlewares}/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.c (100%) rename {HAL_N_Middlewares/Middlewares => Middlewares}/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/portmacro.h (100%) rename {HAL_N_Middlewares/Middlewares => Middlewares}/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.c (100%) rename {HAL_N_Middlewares/Middlewares => Middlewares}/Third_Party/FreeRTOS/Source/queue.c (100%) rename {HAL_N_Middlewares/Middlewares => Middlewares}/Third_Party/FreeRTOS/Source/stream_buffer.c (100%) rename {HAL_N_Middlewares/Middlewares => Middlewares}/Third_Party/FreeRTOS/Source/tasks.c (100%) rename {HAL_N_Middlewares/Middlewares => Middlewares}/Third_Party/FreeRTOS/Source/timers.c (100%) rename {HAL_N_Middlewares/Middlewares => Middlewares}/Third_Party/SEGGER/Config/SEGGER_RTT_Conf.h (100%) rename {HAL_N_Middlewares/Middlewares => Middlewares}/Third_Party/SEGGER/RTT/SEGGER_RTT.c (100%) rename {HAL_N_Middlewares/Middlewares => Middlewares}/Third_Party/SEGGER/RTT/SEGGER_RTT.h (100%) rename {HAL_N_Middlewares/Middlewares => Middlewares}/Third_Party/SEGGER/RTT/SEGGER_RTT_ASM_ARMv7M.s (100%) rename {HAL_N_Middlewares/Middlewares => Middlewares}/Third_Party/SEGGER/RTT/SEGGER_RTT_printf.c (100%) rename {HAL_N_Middlewares/Src => Src}/adc.c (100%) rename {HAL_N_Middlewares/Src => Src}/can.c (99%) rename {HAL_N_Middlewares/Src => Src}/crc.c (100%) rename {HAL_N_Middlewares/Src => Src}/dac.c (100%) rename {HAL_N_Middlewares/Src => Src}/dma.c (100%) rename {HAL_N_Middlewares/Src => Src}/freertos.c (97%) rename {HAL_N_Middlewares/Src => Src}/gpio.c (100%) rename {HAL_N_Middlewares/Src => Src}/i2c.c (100%) create mode 100644 Src/main.c rename {HAL_N_Middlewares/Src => Src}/rng.c (100%) rename {HAL_N_Middlewares/Src => Src}/rtc.c (100%) rename {HAL_N_Middlewares/Src => Src}/spi.c (100%) rename {HAL_N_Middlewares/Src => Src}/stm32f4xx_hal_msp.c (100%) rename {HAL_N_Middlewares/Src => Src}/stm32f4xx_hal_timebase_tim.c (100%) rename {HAL_N_Middlewares/Src => Src}/stm32f4xx_it.c (79%) rename {HAL_N_Middlewares/Src => Src}/system_stm32f4xx.c (100%) rename {HAL_N_Middlewares/Src => Src}/tim.c (100%) rename {HAL_N_Middlewares/Src => Src}/usart.c (99%) rename {HAL_N_Middlewares/Src => Src}/usb_device.c (100%) create mode 100644 Src/usbd_cdc_if.c rename {HAL_N_Middlewares/Src => Src}/usbd_conf.c (100%) rename {HAL_N_Middlewares/Src => Src}/usbd_desc.c (100%) delete mode 100644 修改HAL配置时文件目录的更改.md diff --git a/HAL_N_Middlewares/Drivers/CMSIS/Device/ST/STM32F4xx/Include/stm32f407xx.h b/Drivers/CMSIS/Device/ST/STM32F4xx/Include/stm32f407xx.h similarity index 100% rename from HAL_N_Middlewares/Drivers/CMSIS/Device/ST/STM32F4xx/Include/stm32f407xx.h rename to Drivers/CMSIS/Device/ST/STM32F4xx/Include/stm32f407xx.h diff --git a/HAL_N_Middlewares/Drivers/CMSIS/Device/ST/STM32F4xx/Include/stm32f4xx.h b/Drivers/CMSIS/Device/ST/STM32F4xx/Include/stm32f4xx.h similarity index 100% rename from HAL_N_Middlewares/Drivers/CMSIS/Device/ST/STM32F4xx/Include/stm32f4xx.h rename to Drivers/CMSIS/Device/ST/STM32F4xx/Include/stm32f4xx.h diff --git a/HAL_N_Middlewares/Drivers/CMSIS/Device/ST/STM32F4xx/Include/system_stm32f4xx.h b/Drivers/CMSIS/Device/ST/STM32F4xx/Include/system_stm32f4xx.h similarity index 100% rename from HAL_N_Middlewares/Drivers/CMSIS/Device/ST/STM32F4xx/Include/system_stm32f4xx.h rename to Drivers/CMSIS/Device/ST/STM32F4xx/Include/system_stm32f4xx.h diff --git a/HAL_N_Middlewares/Drivers/CMSIS/Device/ST/STM32F4xx/LICENSE.txt b/Drivers/CMSIS/Device/ST/STM32F4xx/LICENSE.txt similarity index 100% rename from HAL_N_Middlewares/Drivers/CMSIS/Device/ST/STM32F4xx/LICENSE.txt rename to Drivers/CMSIS/Device/ST/STM32F4xx/LICENSE.txt diff --git a/HAL_N_Middlewares/Drivers/CMSIS/Include/cmsis_armcc.h b/Drivers/CMSIS/Include/cmsis_armcc.h similarity index 100% rename from HAL_N_Middlewares/Drivers/CMSIS/Include/cmsis_armcc.h rename to Drivers/CMSIS/Include/cmsis_armcc.h diff --git a/HAL_N_Middlewares/Drivers/CMSIS/Include/cmsis_armclang.h b/Drivers/CMSIS/Include/cmsis_armclang.h similarity index 100% rename from HAL_N_Middlewares/Drivers/CMSIS/Include/cmsis_armclang.h rename to Drivers/CMSIS/Include/cmsis_armclang.h diff --git a/HAL_N_Middlewares/Drivers/CMSIS/Include/cmsis_compiler.h b/Drivers/CMSIS/Include/cmsis_compiler.h similarity index 100% rename from HAL_N_Middlewares/Drivers/CMSIS/Include/cmsis_compiler.h rename to Drivers/CMSIS/Include/cmsis_compiler.h diff --git a/HAL_N_Middlewares/Drivers/CMSIS/Include/cmsis_gcc.h b/Drivers/CMSIS/Include/cmsis_gcc.h similarity index 100% rename from HAL_N_Middlewares/Drivers/CMSIS/Include/cmsis_gcc.h rename to Drivers/CMSIS/Include/cmsis_gcc.h diff --git a/HAL_N_Middlewares/Drivers/CMSIS/Include/cmsis_iccarm.h b/Drivers/CMSIS/Include/cmsis_iccarm.h similarity index 100% rename from HAL_N_Middlewares/Drivers/CMSIS/Include/cmsis_iccarm.h rename to Drivers/CMSIS/Include/cmsis_iccarm.h diff --git a/HAL_N_Middlewares/Drivers/CMSIS/Include/cmsis_version.h b/Drivers/CMSIS/Include/cmsis_version.h similarity index 100% rename from HAL_N_Middlewares/Drivers/CMSIS/Include/cmsis_version.h rename to Drivers/CMSIS/Include/cmsis_version.h diff --git a/Drivers/CMSIS/Include/core_armv8mbl.h b/Drivers/CMSIS/Include/core_armv8mbl.h new file mode 100644 index 0000000..251e4ed --- /dev/null +++ b/Drivers/CMSIS/Include/core_armv8mbl.h @@ -0,0 +1,1918 @@ +/**************************************************************************//** + * @file core_armv8mbl.h + * @brief CMSIS Armv8-M Baseline Core Peripheral Access Layer Header File + * @version V5.0.7 + * @date 22. June 2018 + ******************************************************************************/ +/* + * Copyright (c) 2009-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef __CORE_ARMV8MBL_H_GENERIC +#define __CORE_ARMV8MBL_H_GENERIC + +#include + +#ifdef __cplusplus + extern "C" { +#endif + +/** + \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + CMSIS violates the following MISRA-C:2004 rules: + + \li Required Rule 8.5, object/function definition in header file.
+ Function definitions in header files are used to allow 'inlining'. + + \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
+ Unions are used for effective representation of core registers. + + \li Advisory Rule 19.7, Function-like macro defined.
+ Function-like macros are used to allow more efficient code. + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** + \ingroup Cortex_ARMv8MBL + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS definitions */ +#define __ARMv8MBL_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __ARMv8MBL_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __ARMv8MBL_CMSIS_VERSION ((__ARMv8MBL_CMSIS_VERSION_MAIN << 16U) | \ + __ARMv8MBL_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_M ( 2U) /*!< Cortex-M Core */ + +/** __FPU_USED indicates whether an FPU is used or not. + This core does not support an FPU at all +*/ +#define __FPU_USED 0U + +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined __ARM_PCS_VFP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TI_ARM__ ) + #if defined __TI_VFP_SUPPORT__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_ARMV8MBL_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_ARMV8MBL_H_DEPENDANT +#define __CORE_ARMV8MBL_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __ARMv8MBL_REV + #define __ARMv8MBL_REV 0x0000U + #warning "__ARMv8MBL_REV not defined in device header file; using default!" + #endif + + #ifndef __FPU_PRESENT + #define __FPU_PRESENT 0U + #warning "__FPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0U + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __SAUREGION_PRESENT + #define __SAUREGION_PRESENT 0U + #warning "__SAUREGION_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __VTOR_PRESENT + #define __VTOR_PRESENT 0U + #warning "__VTOR_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 2U + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0U + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif + + #ifndef __ETM_PRESENT + #define __ETM_PRESENT 0U + #warning "__ETM_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __MTB_PRESENT + #define __MTB_PRESENT 0U + #warning "__MTB_PRESENT not defined in device header file; using default!" + #endif + +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +/** + \defgroup CMSIS_glob_defs CMSIS Global Defines + + IO Type Qualifiers are used + \li to specify the access to peripheral variables. + \li for automatic generation of peripheral register debug information. +*/ +#ifdef __cplusplus + #define __I volatile /*!< Defines 'read only' permissions */ +#else + #define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +/* following defines should be used for structure members */ +#define __IM volatile const /*! Defines 'read only' structure member permissions */ +#define __OM volatile /*! Defines 'write only' structure member permissions */ +#define __IOM volatile /*! Defines 'read / write' structure member permissions */ + +/*@} end of group ARMv8MBL */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core Debug Register + - Core MPU Register + - Core SAU Register + ******************************************************************************/ +/** + \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for Cortex-M processor based devices. +*/ + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CORE Status and Control Registers + \brief Core Register type definitions. + @{ + */ + +/** + \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { + uint32_t _reserved0:28; /*!< bit: 0..27 Reserved */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + +/* APSR Register Definitions */ +#define APSR_N_Pos 31U /*!< APSR: N Position */ +#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */ + +#define APSR_Z_Pos 30U /*!< APSR: Z Position */ +#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */ + +#define APSR_C_Pos 29U /*!< APSR: C Position */ +#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */ + +#define APSR_V_Pos 28U /*!< APSR: V Position */ +#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */ + + +/** + \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + +/* IPSR Register Definitions */ +#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */ +#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */ + + +/** + \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:15; /*!< bit: 9..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ + uint32_t _reserved1:3; /*!< bit: 25..27 Reserved */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + +/* xPSR Register Definitions */ +#define xPSR_N_Pos 31U /*!< xPSR: N Position */ +#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */ + +#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */ +#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */ + +#define xPSR_C_Pos 29U /*!< xPSR: C Position */ +#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */ + +#define xPSR_V_Pos 28U /*!< xPSR: V Position */ +#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */ +#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */ + + +/** + \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + uint32_t SPSEL:1; /*!< bit: 1 Stack-pointer select */ + uint32_t _reserved1:30; /*!< bit: 2..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ + +#define CONTROL_nPRIV_Pos 0U /*!< CONTROL: nPRIV Position */ +#define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONTROL: nPRIV Mask */ + +/*@} end of group CMSIS_CORE */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + \brief Type definitions for the NVIC Registers + @{ + */ + +/** + \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IOM uint32_t ISER[16U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[16U]; + __IOM uint32_t ICER[16U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[16U]; + __IOM uint32_t ISPR[16U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[16U]; + __IOM uint32_t ICPR[16U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[16U]; + __IOM uint32_t IABR[16U]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ + uint32_t RESERVED4[16U]; + __IOM uint32_t ITNS[16U]; /*!< Offset: 0x280 (R/W) Interrupt Non-Secure State Register */ + uint32_t RESERVED5[16U]; + __IOM uint32_t IPR[124U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register */ +} NVIC_Type; + +/*@} end of group CMSIS_NVIC */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCB System Control Block (SCB) + \brief Type definitions for the System Control Block Registers + @{ + */ + +/** + \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) + __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ +#else + uint32_t RESERVED0; +#endif + __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + uint32_t RESERVED1; + __IOM uint32_t SHPR[2U]; /*!< Offset: 0x01C (R/W) System Handlers Priority Registers. [0] is RESERVED */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_PENDNMISET_Pos 31U /*!< SCB ICSR: PENDNMISET Position */ +#define SCB_ICSR_PENDNMISET_Msk (1UL << SCB_ICSR_PENDNMISET_Pos) /*!< SCB ICSR: PENDNMISET Mask */ + +#define SCB_ICSR_NMIPENDSET_Pos SCB_ICSR_PENDNMISET_Pos /*!< SCB ICSR: NMIPENDSET Position, backward compatibility */ +#define SCB_ICSR_NMIPENDSET_Msk SCB_ICSR_PENDNMISET_Msk /*!< SCB ICSR: NMIPENDSET Mask, backward compatibility */ + +#define SCB_ICSR_PENDNMICLR_Pos 30U /*!< SCB ICSR: PENDNMICLR Position */ +#define SCB_ICSR_PENDNMICLR_Msk (1UL << SCB_ICSR_PENDNMICLR_Pos) /*!< SCB ICSR: PENDNMICLR Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_STTNS_Pos 24U /*!< SCB ICSR: STTNS Position (Security Extension) */ +#define SCB_ICSR_STTNS_Msk (1UL << SCB_ICSR_STTNS_Pos) /*!< SCB ICSR: STTNS Mask (Security Extension) */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_RETTOBASE_Pos 11U /*!< SCB ICSR: RETTOBASE Position */ +#define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */ + +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) +/* SCB Vector Table Offset Register Definitions */ +#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ +#endif + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_PRIS_Pos 14U /*!< SCB AIRCR: PRIS Position */ +#define SCB_AIRCR_PRIS_Msk (1UL << SCB_AIRCR_PRIS_Pos) /*!< SCB AIRCR: PRIS Mask */ + +#define SCB_AIRCR_BFHFNMINS_Pos 13U /*!< SCB AIRCR: BFHFNMINS Position */ +#define SCB_AIRCR_BFHFNMINS_Msk (1UL << SCB_AIRCR_BFHFNMINS_Pos) /*!< SCB AIRCR: BFHFNMINS Mask */ + +#define SCB_AIRCR_SYSRESETREQS_Pos 3U /*!< SCB AIRCR: SYSRESETREQS Position */ +#define SCB_AIRCR_SYSRESETREQS_Msk (1UL << SCB_AIRCR_SYSRESETREQS_Pos) /*!< SCB AIRCR: SYSRESETREQS Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEPS_Pos 3U /*!< SCB SCR: SLEEPDEEPS Position */ +#define SCB_SCR_SLEEPDEEPS_Msk (1UL << SCB_SCR_SLEEPDEEPS_Pos) /*!< SCB SCR: SLEEPDEEPS Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_BP_Pos 18U /*!< SCB CCR: BP Position */ +#define SCB_CCR_BP_Msk (1UL << SCB_CCR_BP_Pos) /*!< SCB CCR: BP Mask */ + +#define SCB_CCR_IC_Pos 17U /*!< SCB CCR: IC Position */ +#define SCB_CCR_IC_Msk (1UL << SCB_CCR_IC_Pos) /*!< SCB CCR: IC Mask */ + +#define SCB_CCR_DC_Pos 16U /*!< SCB CCR: DC Position */ +#define SCB_CCR_DC_Msk (1UL << SCB_CCR_DC_Pos) /*!< SCB CCR: DC Mask */ + +#define SCB_CCR_STKOFHFNMIGN_Pos 10U /*!< SCB CCR: STKOFHFNMIGN Position */ +#define SCB_CCR_STKOFHFNMIGN_Msk (1UL << SCB_CCR_STKOFHFNMIGN_Pos) /*!< SCB CCR: STKOFHFNMIGN Mask */ + +#define SCB_CCR_BFHFNMIGN_Pos 8U /*!< SCB CCR: BFHFNMIGN Position */ +#define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ + +#define SCB_CCR_DIV_0_TRP_Pos 4U /*!< SCB CCR: DIV_0_TRP Position */ +#define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +#define SCB_CCR_USERSETMPEND_Pos 1U /*!< SCB CCR: USERSETMPEND Position */ +#define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_HARDFAULTPENDED_Pos 21U /*!< SCB SHCSR: HARDFAULTPENDED Position */ +#define SCB_SHCSR_HARDFAULTPENDED_Msk (1UL << SCB_SHCSR_HARDFAULTPENDED_Pos) /*!< SCB SHCSR: HARDFAULTPENDED Mask */ + +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +#define SCB_SHCSR_SYSTICKACT_Pos 11U /*!< SCB SHCSR: SYSTICKACT Position */ +#define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ + +#define SCB_SHCSR_PENDSVACT_Pos 10U /*!< SCB SHCSR: PENDSVACT Position */ +#define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ + +#define SCB_SHCSR_SVCALLACT_Pos 7U /*!< SCB SHCSR: SVCALLACT Position */ +#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ + +#define SCB_SHCSR_NMIACT_Pos 5U /*!< SCB SHCSR: NMIACT Position */ +#define SCB_SHCSR_NMIACT_Msk (1UL << SCB_SHCSR_NMIACT_Pos) /*!< SCB SHCSR: NMIACT Mask */ + +#define SCB_SHCSR_HARDFAULTACT_Pos 2U /*!< SCB SHCSR: HARDFAULTACT Position */ +#define SCB_SHCSR_HARDFAULTACT_Msk (1UL << SCB_SHCSR_HARDFAULTACT_Pos) /*!< SCB SHCSR: HARDFAULTACT Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick System Tick Timer (SysTick) + \brief Type definitions for the System Timer Registers. + @{ + */ + +/** + \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DWT Data Watchpoint and Trace (DWT) + \brief Type definitions for the Data Watchpoint and Trace (DWT) + @{ + */ + +/** + \brief Structure type to access the Data Watchpoint and Trace Register (DWT). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */ + uint32_t RESERVED0[6U]; + __IM uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register */ + __IOM uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */ + uint32_t RESERVED1[1U]; + __IOM uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */ + uint32_t RESERVED2[1U]; + __IOM uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */ + uint32_t RESERVED3[1U]; + __IOM uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */ + uint32_t RESERVED4[1U]; + __IOM uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */ + uint32_t RESERVED5[1U]; + __IOM uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */ + uint32_t RESERVED6[1U]; + __IOM uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */ + uint32_t RESERVED7[1U]; + __IOM uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */ + uint32_t RESERVED8[1U]; + __IOM uint32_t COMP4; /*!< Offset: 0x060 (R/W) Comparator Register 4 */ + uint32_t RESERVED9[1U]; + __IOM uint32_t FUNCTION4; /*!< Offset: 0x068 (R/W) Function Register 4 */ + uint32_t RESERVED10[1U]; + __IOM uint32_t COMP5; /*!< Offset: 0x070 (R/W) Comparator Register 5 */ + uint32_t RESERVED11[1U]; + __IOM uint32_t FUNCTION5; /*!< Offset: 0x078 (R/W) Function Register 5 */ + uint32_t RESERVED12[1U]; + __IOM uint32_t COMP6; /*!< Offset: 0x080 (R/W) Comparator Register 6 */ + uint32_t RESERVED13[1U]; + __IOM uint32_t FUNCTION6; /*!< Offset: 0x088 (R/W) Function Register 6 */ + uint32_t RESERVED14[1U]; + __IOM uint32_t COMP7; /*!< Offset: 0x090 (R/W) Comparator Register 7 */ + uint32_t RESERVED15[1U]; + __IOM uint32_t FUNCTION7; /*!< Offset: 0x098 (R/W) Function Register 7 */ + uint32_t RESERVED16[1U]; + __IOM uint32_t COMP8; /*!< Offset: 0x0A0 (R/W) Comparator Register 8 */ + uint32_t RESERVED17[1U]; + __IOM uint32_t FUNCTION8; /*!< Offset: 0x0A8 (R/W) Function Register 8 */ + uint32_t RESERVED18[1U]; + __IOM uint32_t COMP9; /*!< Offset: 0x0B0 (R/W) Comparator Register 9 */ + uint32_t RESERVED19[1U]; + __IOM uint32_t FUNCTION9; /*!< Offset: 0x0B8 (R/W) Function Register 9 */ + uint32_t RESERVED20[1U]; + __IOM uint32_t COMP10; /*!< Offset: 0x0C0 (R/W) Comparator Register 10 */ + uint32_t RESERVED21[1U]; + __IOM uint32_t FUNCTION10; /*!< Offset: 0x0C8 (R/W) Function Register 10 */ + uint32_t RESERVED22[1U]; + __IOM uint32_t COMP11; /*!< Offset: 0x0D0 (R/W) Comparator Register 11 */ + uint32_t RESERVED23[1U]; + __IOM uint32_t FUNCTION11; /*!< Offset: 0x0D8 (R/W) Function Register 11 */ + uint32_t RESERVED24[1U]; + __IOM uint32_t COMP12; /*!< Offset: 0x0E0 (R/W) Comparator Register 12 */ + uint32_t RESERVED25[1U]; + __IOM uint32_t FUNCTION12; /*!< Offset: 0x0E8 (R/W) Function Register 12 */ + uint32_t RESERVED26[1U]; + __IOM uint32_t COMP13; /*!< Offset: 0x0F0 (R/W) Comparator Register 13 */ + uint32_t RESERVED27[1U]; + __IOM uint32_t FUNCTION13; /*!< Offset: 0x0F8 (R/W) Function Register 13 */ + uint32_t RESERVED28[1U]; + __IOM uint32_t COMP14; /*!< Offset: 0x100 (R/W) Comparator Register 14 */ + uint32_t RESERVED29[1U]; + __IOM uint32_t FUNCTION14; /*!< Offset: 0x108 (R/W) Function Register 14 */ + uint32_t RESERVED30[1U]; + __IOM uint32_t COMP15; /*!< Offset: 0x110 (R/W) Comparator Register 15 */ + uint32_t RESERVED31[1U]; + __IOM uint32_t FUNCTION15; /*!< Offset: 0x118 (R/W) Function Register 15 */ +} DWT_Type; + +/* DWT Control Register Definitions */ +#define DWT_CTRL_NUMCOMP_Pos 28U /*!< DWT CTRL: NUMCOMP Position */ +#define DWT_CTRL_NUMCOMP_Msk (0xFUL << DWT_CTRL_NUMCOMP_Pos) /*!< DWT CTRL: NUMCOMP Mask */ + +#define DWT_CTRL_NOTRCPKT_Pos 27U /*!< DWT CTRL: NOTRCPKT Position */ +#define DWT_CTRL_NOTRCPKT_Msk (0x1UL << DWT_CTRL_NOTRCPKT_Pos) /*!< DWT CTRL: NOTRCPKT Mask */ + +#define DWT_CTRL_NOEXTTRIG_Pos 26U /*!< DWT CTRL: NOEXTTRIG Position */ +#define DWT_CTRL_NOEXTTRIG_Msk (0x1UL << DWT_CTRL_NOEXTTRIG_Pos) /*!< DWT CTRL: NOEXTTRIG Mask */ + +#define DWT_CTRL_NOCYCCNT_Pos 25U /*!< DWT CTRL: NOCYCCNT Position */ +#define DWT_CTRL_NOCYCCNT_Msk (0x1UL << DWT_CTRL_NOCYCCNT_Pos) /*!< DWT CTRL: NOCYCCNT Mask */ + +#define DWT_CTRL_NOPRFCNT_Pos 24U /*!< DWT CTRL: NOPRFCNT Position */ +#define DWT_CTRL_NOPRFCNT_Msk (0x1UL << DWT_CTRL_NOPRFCNT_Pos) /*!< DWT CTRL: NOPRFCNT Mask */ + +/* DWT Comparator Function Register Definitions */ +#define DWT_FUNCTION_ID_Pos 27U /*!< DWT FUNCTION: ID Position */ +#define DWT_FUNCTION_ID_Msk (0x1FUL << DWT_FUNCTION_ID_Pos) /*!< DWT FUNCTION: ID Mask */ + +#define DWT_FUNCTION_MATCHED_Pos 24U /*!< DWT FUNCTION: MATCHED Position */ +#define DWT_FUNCTION_MATCHED_Msk (0x1UL << DWT_FUNCTION_MATCHED_Pos) /*!< DWT FUNCTION: MATCHED Mask */ + +#define DWT_FUNCTION_DATAVSIZE_Pos 10U /*!< DWT FUNCTION: DATAVSIZE Position */ +#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */ + +#define DWT_FUNCTION_ACTION_Pos 4U /*!< DWT FUNCTION: ACTION Position */ +#define DWT_FUNCTION_ACTION_Msk (0x3UL << DWT_FUNCTION_ACTION_Pos) /*!< DWT FUNCTION: ACTION Mask */ + +#define DWT_FUNCTION_MATCH_Pos 0U /*!< DWT FUNCTION: MATCH Position */ +#define DWT_FUNCTION_MATCH_Msk (0xFUL /*<< DWT_FUNCTION_MATCH_Pos*/) /*!< DWT FUNCTION: MATCH Mask */ + +/*@}*/ /* end of group CMSIS_DWT */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_TPI Trace Port Interface (TPI) + \brief Type definitions for the Trace Port Interface (TPI) + @{ + */ + +/** + \brief Structure type to access the Trace Port Interface Register (TPI). + */ +typedef struct +{ + __IM uint32_t SSPSR; /*!< Offset: 0x000 (R/ ) Supported Parallel Port Sizes Register */ + __IOM uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Sizes Register */ + uint32_t RESERVED0[2U]; + __IOM uint32_t ACPR; /*!< Offset: 0x010 (R/W) Asynchronous Clock Prescaler Register */ + uint32_t RESERVED1[55U]; + __IOM uint32_t SPPR; /*!< Offset: 0x0F0 (R/W) Selected Pin Protocol Register */ + uint32_t RESERVED2[131U]; + __IM uint32_t FFSR; /*!< Offset: 0x300 (R/ ) Formatter and Flush Status Register */ + __IOM uint32_t FFCR; /*!< Offset: 0x304 (R/W) Formatter and Flush Control Register */ + __IOM uint32_t PSCR; /*!< Offset: 0x308 (R/W) Periodic Synchronization Control Register */ + uint32_t RESERVED3[809U]; + __OM uint32_t LAR; /*!< Offset: 0xFB0 ( /W) Software Lock Access Register */ + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) Software Lock Status Register */ + uint32_t RESERVED4[4U]; + __IM uint32_t TYPE; /*!< Offset: 0xFC8 (R/ ) Device Identifier Register */ + __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) Device Type Register */ +} TPI_Type; + +/* TPI Asynchronous Clock Prescaler Register Definitions */ +#define TPI_ACPR_SWOSCALER_Pos 0U /*!< TPI ACPR: SWOSCALER Position */ +#define TPI_ACPR_SWOSCALER_Msk (0xFFFFUL /*<< TPI_ACPR_SWOSCALER_Pos*/) /*!< TPI ACPR: SWOSCALER Mask */ + +/* TPI Selected Pin Protocol Register Definitions */ +#define TPI_SPPR_TXMODE_Pos 0U /*!< TPI SPPR: TXMODE Position */ +#define TPI_SPPR_TXMODE_Msk (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/) /*!< TPI SPPR: TXMODE Mask */ + +/* TPI Formatter and Flush Status Register Definitions */ +#define TPI_FFSR_FtNonStop_Pos 3U /*!< TPI FFSR: FtNonStop Position */ +#define TPI_FFSR_FtNonStop_Msk (0x1UL << TPI_FFSR_FtNonStop_Pos) /*!< TPI FFSR: FtNonStop Mask */ + +#define TPI_FFSR_TCPresent_Pos 2U /*!< TPI FFSR: TCPresent Position */ +#define TPI_FFSR_TCPresent_Msk (0x1UL << TPI_FFSR_TCPresent_Pos) /*!< TPI FFSR: TCPresent Mask */ + +#define TPI_FFSR_FtStopped_Pos 1U /*!< TPI FFSR: FtStopped Position */ +#define TPI_FFSR_FtStopped_Msk (0x1UL << TPI_FFSR_FtStopped_Pos) /*!< TPI FFSR: FtStopped Mask */ + +#define TPI_FFSR_FlInProg_Pos 0U /*!< TPI FFSR: FlInProg Position */ +#define TPI_FFSR_FlInProg_Msk (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/) /*!< TPI FFSR: FlInProg Mask */ + +/* TPI Formatter and Flush Control Register Definitions */ +#define TPI_FFCR_TrigIn_Pos 8U /*!< TPI FFCR: TrigIn Position */ +#define TPI_FFCR_TrigIn_Msk (0x1UL << TPI_FFCR_TrigIn_Pos) /*!< TPI FFCR: TrigIn Mask */ + +#define TPI_FFCR_FOnMan_Pos 6U /*!< TPI FFCR: FOnMan Position */ +#define TPI_FFCR_FOnMan_Msk (0x1UL << TPI_FFCR_FOnMan_Pos) /*!< TPI FFCR: FOnMan Mask */ + +#define TPI_FFCR_EnFCont_Pos 1U /*!< TPI FFCR: EnFCont Position */ +#define TPI_FFCR_EnFCont_Msk (0x1UL << TPI_FFCR_EnFCont_Pos) /*!< TPI FFCR: EnFCont Mask */ + +/* TPI Periodic Synchronization Control Register Definitions */ +#define TPI_PSCR_PSCount_Pos 0U /*!< TPI PSCR: PSCount Position */ +#define TPI_PSCR_PSCount_Msk (0x1FUL /*<< TPI_PSCR_PSCount_Pos*/) /*!< TPI PSCR: TPSCount Mask */ + +/* TPI Software Lock Status Register Definitions */ +#define TPI_LSR_nTT_Pos 1U /*!< TPI LSR: Not thirty-two bit. Position */ +#define TPI_LSR_nTT_Msk (0x1UL << TPI_LSR_nTT_Pos) /*!< TPI LSR: Not thirty-two bit. Mask */ + +#define TPI_LSR_SLK_Pos 1U /*!< TPI LSR: Software Lock status Position */ +#define TPI_LSR_SLK_Msk (0x1UL << TPI_LSR_SLK_Pos) /*!< TPI LSR: Software Lock status Mask */ + +#define TPI_LSR_SLI_Pos 0U /*!< TPI LSR: Software Lock implemented Position */ +#define TPI_LSR_SLI_Msk (0x1UL /*<< TPI_LSR_SLI_Pos*/) /*!< TPI LSR: Software Lock implemented Mask */ + +/* TPI DEVID Register Definitions */ +#define TPI_DEVID_NRZVALID_Pos 11U /*!< TPI DEVID: NRZVALID Position */ +#define TPI_DEVID_NRZVALID_Msk (0x1UL << TPI_DEVID_NRZVALID_Pos) /*!< TPI DEVID: NRZVALID Mask */ + +#define TPI_DEVID_MANCVALID_Pos 10U /*!< TPI DEVID: MANCVALID Position */ +#define TPI_DEVID_MANCVALID_Msk (0x1UL << TPI_DEVID_MANCVALID_Pos) /*!< TPI DEVID: MANCVALID Mask */ + +#define TPI_DEVID_PTINVALID_Pos 9U /*!< TPI DEVID: PTINVALID Position */ +#define TPI_DEVID_PTINVALID_Msk (0x1UL << TPI_DEVID_PTINVALID_Pos) /*!< TPI DEVID: PTINVALID Mask */ + +#define TPI_DEVID_FIFOSZ_Pos 6U /*!< TPI DEVID: FIFO depth Position */ +#define TPI_DEVID_FIFOSZ_Msk (0x7UL << TPI_DEVID_FIFOSZ_Pos) /*!< TPI DEVID: FIFO depth Mask */ + +/* TPI DEVTYPE Register Definitions */ +#define TPI_DEVTYPE_SubType_Pos 4U /*!< TPI DEVTYPE: SubType Position */ +#define TPI_DEVTYPE_SubType_Msk (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/) /*!< TPI DEVTYPE: SubType Mask */ + +#define TPI_DEVTYPE_MajorType_Pos 0U /*!< TPI DEVTYPE: MajorType Position */ +#define TPI_DEVTYPE_MajorType_Msk (0xFUL << TPI_DEVTYPE_MajorType_Pos) /*!< TPI DEVTYPE: MajorType Mask */ + +/*@}*/ /* end of group CMSIS_TPI */ + + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_MPU Memory Protection Unit (MPU) + \brief Type definitions for the Memory Protection Unit (MPU) + @{ + */ + +/** + \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) MPU Region Limit Address Register */ + uint32_t RESERVED0[7U]; + union { + __IOM uint32_t MAIR[2]; + struct { + __IOM uint32_t MAIR0; /*!< Offset: 0x030 (R/W) MPU Memory Attribute Indirection Register 0 */ + __IOM uint32_t MAIR1; /*!< Offset: 0x034 (R/W) MPU Memory Attribute Indirection Register 1 */ + }; + }; +} MPU_Type; + +#define MPU_TYPE_RALIASES 1U + +/* MPU Type Register Definitions */ +#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register Definitions */ +#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register Definitions */ +#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register Definitions */ +#define MPU_RBAR_BASE_Pos 5U /*!< MPU RBAR: BASE Position */ +#define MPU_RBAR_BASE_Msk (0x7FFFFFFUL << MPU_RBAR_BASE_Pos) /*!< MPU RBAR: BASE Mask */ + +#define MPU_RBAR_SH_Pos 3U /*!< MPU RBAR: SH Position */ +#define MPU_RBAR_SH_Msk (0x3UL << MPU_RBAR_SH_Pos) /*!< MPU RBAR: SH Mask */ + +#define MPU_RBAR_AP_Pos 1U /*!< MPU RBAR: AP Position */ +#define MPU_RBAR_AP_Msk (0x3UL << MPU_RBAR_AP_Pos) /*!< MPU RBAR: AP Mask */ + +#define MPU_RBAR_XN_Pos 0U /*!< MPU RBAR: XN Position */ +#define MPU_RBAR_XN_Msk (01UL /*<< MPU_RBAR_XN_Pos*/) /*!< MPU RBAR: XN Mask */ + +/* MPU Region Limit Address Register Definitions */ +#define MPU_RLAR_LIMIT_Pos 5U /*!< MPU RLAR: LIMIT Position */ +#define MPU_RLAR_LIMIT_Msk (0x7FFFFFFUL << MPU_RLAR_LIMIT_Pos) /*!< MPU RLAR: LIMIT Mask */ + +#define MPU_RLAR_AttrIndx_Pos 1U /*!< MPU RLAR: AttrIndx Position */ +#define MPU_RLAR_AttrIndx_Msk (0x7UL << MPU_RLAR_AttrIndx_Pos) /*!< MPU RLAR: AttrIndx Mask */ + +#define MPU_RLAR_EN_Pos 0U /*!< MPU RLAR: EN Position */ +#define MPU_RLAR_EN_Msk (1UL /*<< MPU_RLAR_EN_Pos*/) /*!< MPU RLAR: EN Mask */ + +/* MPU Memory Attribute Indirection Register 0 Definitions */ +#define MPU_MAIR0_Attr3_Pos 24U /*!< MPU MAIR0: Attr3 Position */ +#define MPU_MAIR0_Attr3_Msk (0xFFUL << MPU_MAIR0_Attr3_Pos) /*!< MPU MAIR0: Attr3 Mask */ + +#define MPU_MAIR0_Attr2_Pos 16U /*!< MPU MAIR0: Attr2 Position */ +#define MPU_MAIR0_Attr2_Msk (0xFFUL << MPU_MAIR0_Attr2_Pos) /*!< MPU MAIR0: Attr2 Mask */ + +#define MPU_MAIR0_Attr1_Pos 8U /*!< MPU MAIR0: Attr1 Position */ +#define MPU_MAIR0_Attr1_Msk (0xFFUL << MPU_MAIR0_Attr1_Pos) /*!< MPU MAIR0: Attr1 Mask */ + +#define MPU_MAIR0_Attr0_Pos 0U /*!< MPU MAIR0: Attr0 Position */ +#define MPU_MAIR0_Attr0_Msk (0xFFUL /*<< MPU_MAIR0_Attr0_Pos*/) /*!< MPU MAIR0: Attr0 Mask */ + +/* MPU Memory Attribute Indirection Register 1 Definitions */ +#define MPU_MAIR1_Attr7_Pos 24U /*!< MPU MAIR1: Attr7 Position */ +#define MPU_MAIR1_Attr7_Msk (0xFFUL << MPU_MAIR1_Attr7_Pos) /*!< MPU MAIR1: Attr7 Mask */ + +#define MPU_MAIR1_Attr6_Pos 16U /*!< MPU MAIR1: Attr6 Position */ +#define MPU_MAIR1_Attr6_Msk (0xFFUL << MPU_MAIR1_Attr6_Pos) /*!< MPU MAIR1: Attr6 Mask */ + +#define MPU_MAIR1_Attr5_Pos 8U /*!< MPU MAIR1: Attr5 Position */ +#define MPU_MAIR1_Attr5_Msk (0xFFUL << MPU_MAIR1_Attr5_Pos) /*!< MPU MAIR1: Attr5 Mask */ + +#define MPU_MAIR1_Attr4_Pos 0U /*!< MPU MAIR1: Attr4 Position */ +#define MPU_MAIR1_Attr4_Msk (0xFFUL /*<< MPU_MAIR1_Attr4_Pos*/) /*!< MPU MAIR1: Attr4 Mask */ + +/*@} end of group CMSIS_MPU */ +#endif + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SAU Security Attribution Unit (SAU) + \brief Type definitions for the Security Attribution Unit (SAU) + @{ + */ + +/** + \brief Structure type to access the Security Attribution Unit (SAU). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SAU Control Register */ + __IM uint32_t TYPE; /*!< Offset: 0x004 (R/ ) SAU Type Register */ +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) SAU Region Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) SAU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) SAU Region Limit Address Register */ +#endif +} SAU_Type; + +/* SAU Control Register Definitions */ +#define SAU_CTRL_ALLNS_Pos 1U /*!< SAU CTRL: ALLNS Position */ +#define SAU_CTRL_ALLNS_Msk (1UL << SAU_CTRL_ALLNS_Pos) /*!< SAU CTRL: ALLNS Mask */ + +#define SAU_CTRL_ENABLE_Pos 0U /*!< SAU CTRL: ENABLE Position */ +#define SAU_CTRL_ENABLE_Msk (1UL /*<< SAU_CTRL_ENABLE_Pos*/) /*!< SAU CTRL: ENABLE Mask */ + +/* SAU Type Register Definitions */ +#define SAU_TYPE_SREGION_Pos 0U /*!< SAU TYPE: SREGION Position */ +#define SAU_TYPE_SREGION_Msk (0xFFUL /*<< SAU_TYPE_SREGION_Pos*/) /*!< SAU TYPE: SREGION Mask */ + +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) +/* SAU Region Number Register Definitions */ +#define SAU_RNR_REGION_Pos 0U /*!< SAU RNR: REGION Position */ +#define SAU_RNR_REGION_Msk (0xFFUL /*<< SAU_RNR_REGION_Pos*/) /*!< SAU RNR: REGION Mask */ + +/* SAU Region Base Address Register Definitions */ +#define SAU_RBAR_BADDR_Pos 5U /*!< SAU RBAR: BADDR Position */ +#define SAU_RBAR_BADDR_Msk (0x7FFFFFFUL << SAU_RBAR_BADDR_Pos) /*!< SAU RBAR: BADDR Mask */ + +/* SAU Region Limit Address Register Definitions */ +#define SAU_RLAR_LADDR_Pos 5U /*!< SAU RLAR: LADDR Position */ +#define SAU_RLAR_LADDR_Msk (0x7FFFFFFUL << SAU_RLAR_LADDR_Pos) /*!< SAU RLAR: LADDR Mask */ + +#define SAU_RLAR_NSC_Pos 1U /*!< SAU RLAR: NSC Position */ +#define SAU_RLAR_NSC_Msk (1UL << SAU_RLAR_NSC_Pos) /*!< SAU RLAR: NSC Mask */ + +#define SAU_RLAR_ENABLE_Pos 0U /*!< SAU RLAR: ENABLE Position */ +#define SAU_RLAR_ENABLE_Msk (1UL /*<< SAU_RLAR_ENABLE_Pos*/) /*!< SAU RLAR: ENABLE Mask */ + +#endif /* defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) */ + +/*@} end of group CMSIS_SAU */ +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Type definitions for the Core Debug Registers + @{ + */ + +/** + \brief Structure type to access the Core Debug Register (CoreDebug). + */ +typedef struct +{ + __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ + uint32_t RESERVED4[1U]; + __IOM uint32_t DAUTHCTRL; /*!< Offset: 0x014 (R/W) Debug Authentication Control Register */ + __IOM uint32_t DSCSR; /*!< Offset: 0x018 (R/W) Debug Security Control and Status Register */ +} CoreDebug_Type; + +/* Debug Halting Control and Status Register Definitions */ +#define CoreDebug_DHCSR_DBGKEY_Pos 16U /*!< CoreDebug DHCSR: DBGKEY Position */ +#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< CoreDebug DHCSR: DBGKEY Mask */ + +#define CoreDebug_DHCSR_S_RESTART_ST_Pos 26U /*!< CoreDebug DHCSR: S_RESTART_ST Position */ +#define CoreDebug_DHCSR_S_RESTART_ST_Msk (1UL << CoreDebug_DHCSR_S_RESTART_ST_Pos) /*!< CoreDebug DHCSR: S_RESTART_ST Mask */ + +#define CoreDebug_DHCSR_S_RESET_ST_Pos 25U /*!< CoreDebug DHCSR: S_RESET_ST Position */ +#define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< CoreDebug DHCSR: S_RESET_ST Mask */ + +#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24U /*!< CoreDebug DHCSR: S_RETIRE_ST Position */ +#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */ + +#define CoreDebug_DHCSR_S_LOCKUP_Pos 19U /*!< CoreDebug DHCSR: S_LOCKUP Position */ +#define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< CoreDebug DHCSR: S_LOCKUP Mask */ + +#define CoreDebug_DHCSR_S_SLEEP_Pos 18U /*!< CoreDebug DHCSR: S_SLEEP Position */ +#define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< CoreDebug DHCSR: S_SLEEP Mask */ + +#define CoreDebug_DHCSR_S_HALT_Pos 17U /*!< CoreDebug DHCSR: S_HALT Position */ +#define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< CoreDebug DHCSR: S_HALT Mask */ + +#define CoreDebug_DHCSR_S_REGRDY_Pos 16U /*!< CoreDebug DHCSR: S_REGRDY Position */ +#define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< CoreDebug DHCSR: S_REGRDY Mask */ + +#define CoreDebug_DHCSR_C_MASKINTS_Pos 3U /*!< CoreDebug DHCSR: C_MASKINTS Position */ +#define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< CoreDebug DHCSR: C_MASKINTS Mask */ + +#define CoreDebug_DHCSR_C_STEP_Pos 2U /*!< CoreDebug DHCSR: C_STEP Position */ +#define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< CoreDebug DHCSR: C_STEP Mask */ + +#define CoreDebug_DHCSR_C_HALT_Pos 1U /*!< CoreDebug DHCSR: C_HALT Position */ +#define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< CoreDebug DHCSR: C_HALT Mask */ + +#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0U /*!< CoreDebug DHCSR: C_DEBUGEN Position */ +#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/) /*!< CoreDebug DHCSR: C_DEBUGEN Mask */ + +/* Debug Core Register Selector Register Definitions */ +#define CoreDebug_DCRSR_REGWnR_Pos 16U /*!< CoreDebug DCRSR: REGWnR Position */ +#define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< CoreDebug DCRSR: REGWnR Mask */ + +#define CoreDebug_DCRSR_REGSEL_Pos 0U /*!< CoreDebug DCRSR: REGSEL Position */ +#define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/) /*!< CoreDebug DCRSR: REGSEL Mask */ + +/* Debug Exception and Monitor Control Register */ +#define CoreDebug_DEMCR_DWTENA_Pos 24U /*!< CoreDebug DEMCR: DWTENA Position */ +#define CoreDebug_DEMCR_DWTENA_Msk (1UL << CoreDebug_DEMCR_DWTENA_Pos) /*!< CoreDebug DEMCR: DWTENA Mask */ + +#define CoreDebug_DEMCR_VC_HARDERR_Pos 10U /*!< CoreDebug DEMCR: VC_HARDERR Position */ +#define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< CoreDebug DEMCR: VC_HARDERR Mask */ + +#define CoreDebug_DEMCR_VC_CORERESET_Pos 0U /*!< CoreDebug DEMCR: VC_CORERESET Position */ +#define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/) /*!< CoreDebug DEMCR: VC_CORERESET Mask */ + +/* Debug Authentication Control Register Definitions */ +#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos 3U /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Position */ +#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos) /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Mask */ + +#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos 2U /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Position */ +#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Msk (1UL << CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos) /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Mask */ + +#define CoreDebug_DAUTHCTRL_INTSPIDEN_Pos 1U /*!< CoreDebug DAUTHCTRL: INTSPIDEN Position */ +#define CoreDebug_DAUTHCTRL_INTSPIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPIDEN_Pos) /*!< CoreDebug DAUTHCTRL: INTSPIDEN Mask */ + +#define CoreDebug_DAUTHCTRL_SPIDENSEL_Pos 0U /*!< CoreDebug DAUTHCTRL: SPIDENSEL Position */ +#define CoreDebug_DAUTHCTRL_SPIDENSEL_Msk (1UL /*<< CoreDebug_DAUTHCTRL_SPIDENSEL_Pos*/) /*!< CoreDebug DAUTHCTRL: SPIDENSEL Mask */ + +/* Debug Security Control and Status Register Definitions */ +#define CoreDebug_DSCSR_CDS_Pos 16U /*!< CoreDebug DSCSR: CDS Position */ +#define CoreDebug_DSCSR_CDS_Msk (1UL << CoreDebug_DSCSR_CDS_Pos) /*!< CoreDebug DSCSR: CDS Mask */ + +#define CoreDebug_DSCSR_SBRSEL_Pos 1U /*!< CoreDebug DSCSR: SBRSEL Position */ +#define CoreDebug_DSCSR_SBRSEL_Msk (1UL << CoreDebug_DSCSR_SBRSEL_Pos) /*!< CoreDebug DSCSR: SBRSEL Mask */ + +#define CoreDebug_DSCSR_SBRSELEN_Pos 0U /*!< CoreDebug DSCSR: SBRSELEN Position */ +#define CoreDebug_DSCSR_SBRSELEN_Msk (1UL /*<< CoreDebug_DSCSR_SBRSELEN_Pos*/) /*!< CoreDebug DSCSR: SBRSELEN Mask */ + +/*@} end of group CMSIS_CoreDebug */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_bitfield Core register bit field macros + \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk). + @{ + */ + +/** + \brief Mask and shift a bit field value for use in a register bit range. + \param[in] field Name of the register bit field. + \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk) + +/** + \brief Mask and shift a register value to extract a bit filed value. + \param[in] field Name of the register bit field. + \param[in] value Value of register. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos) + +/*@} end of group CMSIS_core_bitfield */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_base Core Definitions + \brief Definitions for base addresses, unions, and structures. + @{ + */ + +/* Memory mapping of Core Hardware */ + #define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ + #define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */ + #define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */ + #define CoreDebug_BASE (0xE000EDF0UL) /*!< Core Debug Base Address */ + #define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ + #define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ + #define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + + + #define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ + #define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ + #define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ + #define DWT ((DWT_Type *) DWT_BASE ) /*!< DWT configuration struct */ + #define TPI ((TPI_Type *) TPI_BASE ) /*!< TPI configuration struct */ + #define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE ) /*!< Core Debug configuration struct */ + + #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ + #endif + + #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #define SAU_BASE (SCS_BASE + 0x0DD0UL) /*!< Security Attribution Unit */ + #define SAU ((SAU_Type *) SAU_BASE ) /*!< Security Attribution Unit */ + #endif + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #define SCS_BASE_NS (0xE002E000UL) /*!< System Control Space Base Address (non-secure address space) */ + #define CoreDebug_BASE_NS (0xE002EDF0UL) /*!< Core Debug Base Address (non-secure address space) */ + #define SysTick_BASE_NS (SCS_BASE_NS + 0x0010UL) /*!< SysTick Base Address (non-secure address space) */ + #define NVIC_BASE_NS (SCS_BASE_NS + 0x0100UL) /*!< NVIC Base Address (non-secure address space) */ + #define SCB_BASE_NS (SCS_BASE_NS + 0x0D00UL) /*!< System Control Block Base Address (non-secure address space) */ + + #define SCB_NS ((SCB_Type *) SCB_BASE_NS ) /*!< SCB configuration struct (non-secure address space) */ + #define SysTick_NS ((SysTick_Type *) SysTick_BASE_NS ) /*!< SysTick configuration struct (non-secure address space) */ + #define NVIC_NS ((NVIC_Type *) NVIC_BASE_NS ) /*!< NVIC configuration struct (non-secure address space) */ + #define CoreDebug_NS ((CoreDebug_Type *) CoreDebug_BASE_NS) /*!< Core Debug configuration struct (non-secure address space) */ + + #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE_NS (SCS_BASE_NS + 0x0D90UL) /*!< Memory Protection Unit (non-secure address space) */ + #define MPU_NS ((MPU_Type *) MPU_BASE_NS ) /*!< Memory Protection Unit (non-secure address space) */ + #endif + +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Register Access Functions + ******************************************************************************/ +/** + \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +*/ + + + +/* ########################## NVIC functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions NVIC Functions + \brief Functions that manage interrupts and exceptions via the NVIC. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping + #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ + #define NVIC_GetActive __NVIC_GetActive + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* Special LR values for Secure/Non-Secure call handling and exception handling */ + +/* Function Return Payload (from ARMv8-M Architecture Reference Manual) LR value on entry from Secure BLXNS */ +#define FNC_RETURN (0xFEFFFFFFUL) /* bit [0] ignored when processing a branch */ + +/* The following EXC_RETURN mask values are used to evaluate the LR on exception entry */ +#define EXC_RETURN_PREFIX (0xFF000000UL) /* bits [31:24] set to indicate an EXC_RETURN value */ +#define EXC_RETURN_S (0x00000040UL) /* bit [6] stack used to push registers: 0=Non-secure 1=Secure */ +#define EXC_RETURN_DCRS (0x00000020UL) /* bit [5] stacking rules for called registers: 0=skipped 1=saved */ +#define EXC_RETURN_FTYPE (0x00000010UL) /* bit [4] allocate stack for floating-point context: 0=done 1=skipped */ +#define EXC_RETURN_MODE (0x00000008UL) /* bit [3] processor mode for return: 0=Handler mode 1=Thread mode */ +#define EXC_RETURN_SPSEL (0x00000002UL) /* bit [1] stack pointer used to restore context: 0=MSP 1=PSP */ +#define EXC_RETURN_ES (0x00000001UL) /* bit [0] security state exception was taken to: 0=Non-secure 1=Secure */ + +/* Integrity Signature (from ARMv8-M Architecture Reference Manual) for exception context stacking */ +#if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) /* Value for processors with floating-point extension: */ +#define EXC_INTEGRITY_SIGNATURE (0xFEFA125AUL) /* bit [0] SFTC must match LR bit[4] EXC_RETURN_FTYPE */ +#else +#define EXC_INTEGRITY_SIGNATURE (0xFEFA125BUL) /* Value for processors without floating-point extension */ +#endif + + +/* Interrupt Priorities are WORD accessible only under Armv6-M */ +/* The following MACROS handle generation of the register offset and byte masks */ +#define _BIT_SHIFT(IRQn) ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL) +#define _SHP_IDX(IRQn) ( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >> 2UL) ) +#define _IP_IDX(IRQn) ( (((uint32_t)(int32_t)(IRQn)) >> 2UL) ) + +#define __NVIC_SetPriorityGrouping(X) (void)(X) +#define __NVIC_GetPriorityGrouping() (0U) + +/** + \brief Enable Interrupt + \details Enables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt + \details Reads the active register in the NVIC and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Get Interrupt Target State + \details Reads the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + \return 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_GetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Target State + \details Sets the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_SetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] |= ((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Clear Interrupt Target State + \details Clears the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_ClearTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] &= ~((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every processor exception. + */ +__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IPR[_IP_IDX(IRQn)] = ((uint32_t)(NVIC->IPR[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } + else + { + SCB->SHPR[_SHP_IDX(IRQn)] = ((uint32_t)(SCB->SHPR[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. + Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IPR[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return((uint32_t)(((SCB->SHPR[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Encode Priority + \details Encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + +/** + \brief Decode Priority + \details Decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + VTOR must been relocated to SRAM before. + If VTOR is not present address 0 must be mapped to SRAM. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) + uint32_t *vectors = (uint32_t *)SCB->VTOR; +#else + uint32_t *vectors = (uint32_t *)0x0U; +#endif + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) + uint32_t *vectors = (uint32_t *)SCB->VTOR; +#else + uint32_t *vectors = (uint32_t *)0x0U; +#endif + return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = ((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + SCB_AIRCR_SYSRESETREQ_Msk); + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Enable Interrupt (non-secure) + \details Enables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_EnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status (non-secure) + \details Returns a device specific interrupt enable status from the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetEnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt (non-secure) + \details Disables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_DisableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Pending Interrupt (non-secure) + \details Reads the NVIC pending register in the non-secure NVIC when in secure state and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt (non-secure) + \details Sets the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_SetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt (non-secure) + \details Clears the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_ClearPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt (non-secure) + \details Reads the active register in non-secure NVIC when in secure state and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetActive_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Priority (non-secure) + \details Sets the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every non-secure processor exception. + */ +__STATIC_INLINE void TZ_NVIC_SetPriority_NS(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->IPR[_IP_IDX(IRQn)] = ((uint32_t)(NVIC_NS->IPR[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } + else + { + SCB_NS->SHPR[_SHP_IDX(IRQn)] = ((uint32_t)(SCB_NS->SHPR[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } +} + + +/** + \brief Get Interrupt Priority (non-secure) + \details Reads the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPriority_NS(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->IPR[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return((uint32_t)(((SCB_NS->SHPR[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) &&(__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_NVICFunctions */ + +/* ########################## MPU functions #################################### */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + +#include "mpu_armv8.h" + +#endif + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + return 0U; /* No FPU */ +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + + + +/* ########################## SAU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SAUFunctions SAU Functions + \brief Functions that configure the SAU. + @{ + */ + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + +/** + \brief Enable SAU + \details Enables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Enable(void) +{ + SAU->CTRL |= (SAU_CTRL_ENABLE_Msk); +} + + + +/** + \brief Disable SAU + \details Disables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Disable(void) +{ + SAU->CTRL &= ~(SAU_CTRL_ENABLE_Msk); +} + +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_SAUFunctions */ + + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U) + +/** + \brief System Tick Configuration + \details Initializes the System Timer and its interrupt, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief System Tick Configuration (non-secure) + \details Initializes the non-secure System Timer and its interrupt when in secure state, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function TZ_SysTick_Config_NS is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + + */ +__STATIC_INLINE uint32_t TZ_SysTick_Config_NS(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick_NS->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + TZ_NVIC_SetPriority_NS (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick_NS->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick_NS->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_ARMV8MBL_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/Drivers/CMSIS/Include/core_armv8mml.h b/Drivers/CMSIS/Include/core_armv8mml.h new file mode 100644 index 0000000..3a3148e --- /dev/null +++ b/Drivers/CMSIS/Include/core_armv8mml.h @@ -0,0 +1,2927 @@ +/**************************************************************************//** + * @file core_armv8mml.h + * @brief CMSIS Armv8-M Mainline Core Peripheral Access Layer Header File + * @version V5.0.7 + * @date 06. July 2018 + ******************************************************************************/ +/* + * Copyright (c) 2009-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef __CORE_ARMV8MML_H_GENERIC +#define __CORE_ARMV8MML_H_GENERIC + +#include + +#ifdef __cplusplus + extern "C" { +#endif + +/** + \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + CMSIS violates the following MISRA-C:2004 rules: + + \li Required Rule 8.5, object/function definition in header file.
+ Function definitions in header files are used to allow 'inlining'. + + \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
+ Unions are used for effective representation of core registers. + + \li Advisory Rule 19.7, Function-like macro defined.
+ Function-like macros are used to allow more efficient code. + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** + \ingroup Cortex_ARMv8MML + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS Armv8MML definitions */ +#define __ARMv8MML_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __ARMv8MML_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __ARMv8MML_CMSIS_VERSION ((__ARMv8MML_CMSIS_VERSION_MAIN << 16U) | \ + __ARMv8MML_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_M (81U) /*!< Cortex-M Core */ + +/** __FPU_USED indicates whether an FPU is used or not. + For this, __FPU_PRESENT has to be checked prior to making use of FPU specific registers and functions. +*/ +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined(__ARM_FEATURE_DSP) + #if defined(__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined __ARM_PCS_VFP + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined(__ARM_FEATURE_DSP) + #if defined(__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined(__ARM_FEATURE_DSP) + #if defined(__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined(__ARM_FEATURE_DSP) + #if defined(__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined ( __TI_ARM__ ) + #if defined __TI_VFP_SUPPORT__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_ARMV8MML_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_ARMV8MML_H_DEPENDANT +#define __CORE_ARMV8MML_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __ARMv8MML_REV + #define __ARMv8MML_REV 0x0000U + #warning "__ARMv8MML_REV not defined in device header file; using default!" + #endif + + #ifndef __FPU_PRESENT + #define __FPU_PRESENT 0U + #warning "__FPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0U + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __SAUREGION_PRESENT + #define __SAUREGION_PRESENT 0U + #warning "__SAUREGION_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __DSP_PRESENT + #define __DSP_PRESENT 0U + #warning "__DSP_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 3U + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0U + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +/** + \defgroup CMSIS_glob_defs CMSIS Global Defines + + IO Type Qualifiers are used + \li to specify the access to peripheral variables. + \li for automatic generation of peripheral register debug information. +*/ +#ifdef __cplusplus + #define __I volatile /*!< Defines 'read only' permissions */ +#else + #define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +/* following defines should be used for structure members */ +#define __IM volatile const /*! Defines 'read only' structure member permissions */ +#define __OM volatile /*! Defines 'write only' structure member permissions */ +#define __IOM volatile /*! Defines 'read / write' structure member permissions */ + +/*@} end of group ARMv8MML */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core Debug Register + - Core MPU Register + - Core SAU Register + - Core FPU Register + ******************************************************************************/ +/** + \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for Cortex-M processor based devices. +*/ + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CORE Status and Control Registers + \brief Core Register type definitions. + @{ + */ + +/** + \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { + uint32_t _reserved0:16; /*!< bit: 0..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:7; /*!< bit: 20..26 Reserved */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + +/* APSR Register Definitions */ +#define APSR_N_Pos 31U /*!< APSR: N Position */ +#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */ + +#define APSR_Z_Pos 30U /*!< APSR: Z Position */ +#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */ + +#define APSR_C_Pos 29U /*!< APSR: C Position */ +#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */ + +#define APSR_V_Pos 28U /*!< APSR: V Position */ +#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */ + +#define APSR_Q_Pos 27U /*!< APSR: Q Position */ +#define APSR_Q_Msk (1UL << APSR_Q_Pos) /*!< APSR: Q Mask */ + +#define APSR_GE_Pos 16U /*!< APSR: GE Position */ +#define APSR_GE_Msk (0xFUL << APSR_GE_Pos) /*!< APSR: GE Mask */ + + +/** + \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + +/* IPSR Register Definitions */ +#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */ +#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */ + + +/** + \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:7; /*!< bit: 9..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:4; /*!< bit: 20..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ + uint32_t IT:2; /*!< bit: 25..26 saved IT state (read 0) */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + +/* xPSR Register Definitions */ +#define xPSR_N_Pos 31U /*!< xPSR: N Position */ +#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */ + +#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */ +#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */ + +#define xPSR_C_Pos 29U /*!< xPSR: C Position */ +#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */ + +#define xPSR_V_Pos 28U /*!< xPSR: V Position */ +#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */ + +#define xPSR_Q_Pos 27U /*!< xPSR: Q Position */ +#define xPSR_Q_Msk (1UL << xPSR_Q_Pos) /*!< xPSR: Q Mask */ + +#define xPSR_IT_Pos 25U /*!< xPSR: IT Position */ +#define xPSR_IT_Msk (3UL << xPSR_IT_Pos) /*!< xPSR: IT Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_GE_Pos 16U /*!< xPSR: GE Position */ +#define xPSR_GE_Msk (0xFUL << xPSR_GE_Pos) /*!< xPSR: GE Mask */ + +#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */ +#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */ + + +/** + \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + uint32_t SPSEL:1; /*!< bit: 1 Stack-pointer select */ + uint32_t FPCA:1; /*!< bit: 2 Floating-point context active */ + uint32_t SFPA:1; /*!< bit: 3 Secure floating-point active */ + uint32_t _reserved1:28; /*!< bit: 4..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_SFPA_Pos 3U /*!< CONTROL: SFPA Position */ +#define CONTROL_SFPA_Msk (1UL << CONTROL_SFPA_Pos) /*!< CONTROL: SFPA Mask */ + +#define CONTROL_FPCA_Pos 2U /*!< CONTROL: FPCA Position */ +#define CONTROL_FPCA_Msk (1UL << CONTROL_FPCA_Pos) /*!< CONTROL: FPCA Mask */ + +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ + +#define CONTROL_nPRIV_Pos 0U /*!< CONTROL: nPRIV Position */ +#define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONTROL: nPRIV Mask */ + +/*@} end of group CMSIS_CORE */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + \brief Type definitions for the NVIC Registers + @{ + */ + +/** + \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IOM uint32_t ISER[16U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[16U]; + __IOM uint32_t ICER[16U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[16U]; + __IOM uint32_t ISPR[16U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[16U]; + __IOM uint32_t ICPR[16U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[16U]; + __IOM uint32_t IABR[16U]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ + uint32_t RESERVED4[16U]; + __IOM uint32_t ITNS[16U]; /*!< Offset: 0x280 (R/W) Interrupt Non-Secure State Register */ + uint32_t RESERVED5[16U]; + __IOM uint8_t IPR[496U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register (8Bit wide) */ + uint32_t RESERVED6[580U]; + __OM uint32_t STIR; /*!< Offset: 0xE00 ( /W) Software Trigger Interrupt Register */ +} NVIC_Type; + +/* Software Triggered Interrupt Register Definitions */ +#define NVIC_STIR_INTID_Pos 0U /*!< STIR: INTLINESNUM Position */ +#define NVIC_STIR_INTID_Msk (0x1FFUL /*<< NVIC_STIR_INTID_Pos*/) /*!< STIR: INTLINESNUM Mask */ + +/*@} end of group CMSIS_NVIC */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCB System Control Block (SCB) + \brief Type definitions for the System Control Block Registers + @{ + */ + +/** + \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ + __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ + __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + __IOM uint8_t SHPR[12U]; /*!< Offset: 0x018 (R/W) System Handlers Priority Registers (4-7, 8-11, 12-15) */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ + __IOM uint32_t CFSR; /*!< Offset: 0x028 (R/W) Configurable Fault Status Register */ + __IOM uint32_t HFSR; /*!< Offset: 0x02C (R/W) HardFault Status Register */ + __IOM uint32_t DFSR; /*!< Offset: 0x030 (R/W) Debug Fault Status Register */ + __IOM uint32_t MMFAR; /*!< Offset: 0x034 (R/W) MemManage Fault Address Register */ + __IOM uint32_t BFAR; /*!< Offset: 0x038 (R/W) BusFault Address Register */ + __IOM uint32_t AFSR; /*!< Offset: 0x03C (R/W) Auxiliary Fault Status Register */ + __IM uint32_t ID_PFR[2U]; /*!< Offset: 0x040 (R/ ) Processor Feature Register */ + __IM uint32_t ID_DFR; /*!< Offset: 0x048 (R/ ) Debug Feature Register */ + __IM uint32_t ID_ADR; /*!< Offset: 0x04C (R/ ) Auxiliary Feature Register */ + __IM uint32_t ID_MMFR[4U]; /*!< Offset: 0x050 (R/ ) Memory Model Feature Register */ + __IM uint32_t ID_ISAR[6U]; /*!< Offset: 0x060 (R/ ) Instruction Set Attributes Register */ + __IM uint32_t CLIDR; /*!< Offset: 0x078 (R/ ) Cache Level ID register */ + __IM uint32_t CTR; /*!< Offset: 0x07C (R/ ) Cache Type register */ + __IM uint32_t CCSIDR; /*!< Offset: 0x080 (R/ ) Cache Size ID Register */ + __IOM uint32_t CSSELR; /*!< Offset: 0x084 (R/W) Cache Size Selection Register */ + __IOM uint32_t CPACR; /*!< Offset: 0x088 (R/W) Coprocessor Access Control Register */ + __IOM uint32_t NSACR; /*!< Offset: 0x08C (R/W) Non-Secure Access Control Register */ + uint32_t RESERVED3[92U]; + __OM uint32_t STIR; /*!< Offset: 0x200 ( /W) Software Triggered Interrupt Register */ + uint32_t RESERVED4[15U]; + __IM uint32_t MVFR0; /*!< Offset: 0x240 (R/ ) Media and VFP Feature Register 0 */ + __IM uint32_t MVFR1; /*!< Offset: 0x244 (R/ ) Media and VFP Feature Register 1 */ + __IM uint32_t MVFR2; /*!< Offset: 0x248 (R/ ) Media and VFP Feature Register 2 */ + uint32_t RESERVED5[1U]; + __OM uint32_t ICIALLU; /*!< Offset: 0x250 ( /W) I-Cache Invalidate All to PoU */ + uint32_t RESERVED6[1U]; + __OM uint32_t ICIMVAU; /*!< Offset: 0x258 ( /W) I-Cache Invalidate by MVA to PoU */ + __OM uint32_t DCIMVAC; /*!< Offset: 0x25C ( /W) D-Cache Invalidate by MVA to PoC */ + __OM uint32_t DCISW; /*!< Offset: 0x260 ( /W) D-Cache Invalidate by Set-way */ + __OM uint32_t DCCMVAU; /*!< Offset: 0x264 ( /W) D-Cache Clean by MVA to PoU */ + __OM uint32_t DCCMVAC; /*!< Offset: 0x268 ( /W) D-Cache Clean by MVA to PoC */ + __OM uint32_t DCCSW; /*!< Offset: 0x26C ( /W) D-Cache Clean by Set-way */ + __OM uint32_t DCCIMVAC; /*!< Offset: 0x270 ( /W) D-Cache Clean and Invalidate by MVA to PoC */ + __OM uint32_t DCCISW; /*!< Offset: 0x274 ( /W) D-Cache Clean and Invalidate by Set-way */ + uint32_t RESERVED7[6U]; + __IOM uint32_t ITCMCR; /*!< Offset: 0x290 (R/W) Instruction Tightly-Coupled Memory Control Register */ + __IOM uint32_t DTCMCR; /*!< Offset: 0x294 (R/W) Data Tightly-Coupled Memory Control Registers */ + __IOM uint32_t AHBPCR; /*!< Offset: 0x298 (R/W) AHBP Control Register */ + __IOM uint32_t CACR; /*!< Offset: 0x29C (R/W) L1 Cache Control Register */ + __IOM uint32_t AHBSCR; /*!< Offset: 0x2A0 (R/W) AHB Slave Control Register */ + uint32_t RESERVED8[1U]; + __IOM uint32_t ABFSR; /*!< Offset: 0x2A8 (R/W) Auxiliary Bus Fault Status Register */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_PENDNMISET_Pos 31U /*!< SCB ICSR: PENDNMISET Position */ +#define SCB_ICSR_PENDNMISET_Msk (1UL << SCB_ICSR_PENDNMISET_Pos) /*!< SCB ICSR: PENDNMISET Mask */ + +#define SCB_ICSR_NMIPENDSET_Pos SCB_ICSR_PENDNMISET_Pos /*!< SCB ICSR: NMIPENDSET Position, backward compatibility */ +#define SCB_ICSR_NMIPENDSET_Msk SCB_ICSR_PENDNMISET_Msk /*!< SCB ICSR: NMIPENDSET Mask, backward compatibility */ + +#define SCB_ICSR_PENDNMICLR_Pos 30U /*!< SCB ICSR: PENDNMICLR Position */ +#define SCB_ICSR_PENDNMICLR_Msk (1UL << SCB_ICSR_PENDNMICLR_Pos) /*!< SCB ICSR: PENDNMICLR Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_STTNS_Pos 24U /*!< SCB ICSR: STTNS Position (Security Extension) */ +#define SCB_ICSR_STTNS_Msk (1UL << SCB_ICSR_STTNS_Pos) /*!< SCB ICSR: STTNS Mask (Security Extension) */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_RETTOBASE_Pos 11U /*!< SCB ICSR: RETTOBASE Position */ +#define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */ + +/* SCB Vector Table Offset Register Definitions */ +#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_PRIS_Pos 14U /*!< SCB AIRCR: PRIS Position */ +#define SCB_AIRCR_PRIS_Msk (1UL << SCB_AIRCR_PRIS_Pos) /*!< SCB AIRCR: PRIS Mask */ + +#define SCB_AIRCR_BFHFNMINS_Pos 13U /*!< SCB AIRCR: BFHFNMINS Position */ +#define SCB_AIRCR_BFHFNMINS_Msk (1UL << SCB_AIRCR_BFHFNMINS_Pos) /*!< SCB AIRCR: BFHFNMINS Mask */ + +#define SCB_AIRCR_PRIGROUP_Pos 8U /*!< SCB AIRCR: PRIGROUP Position */ +#define SCB_AIRCR_PRIGROUP_Msk (7UL << SCB_AIRCR_PRIGROUP_Pos) /*!< SCB AIRCR: PRIGROUP Mask */ + +#define SCB_AIRCR_SYSRESETREQS_Pos 3U /*!< SCB AIRCR: SYSRESETREQS Position */ +#define SCB_AIRCR_SYSRESETREQS_Msk (1UL << SCB_AIRCR_SYSRESETREQS_Pos) /*!< SCB AIRCR: SYSRESETREQS Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEPS_Pos 3U /*!< SCB SCR: SLEEPDEEPS Position */ +#define SCB_SCR_SLEEPDEEPS_Msk (1UL << SCB_SCR_SLEEPDEEPS_Pos) /*!< SCB SCR: SLEEPDEEPS Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_BP_Pos 18U /*!< SCB CCR: BP Position */ +#define SCB_CCR_BP_Msk (1UL << SCB_CCR_BP_Pos) /*!< SCB CCR: BP Mask */ + +#define SCB_CCR_IC_Pos 17U /*!< SCB CCR: IC Position */ +#define SCB_CCR_IC_Msk (1UL << SCB_CCR_IC_Pos) /*!< SCB CCR: IC Mask */ + +#define SCB_CCR_DC_Pos 16U /*!< SCB CCR: DC Position */ +#define SCB_CCR_DC_Msk (1UL << SCB_CCR_DC_Pos) /*!< SCB CCR: DC Mask */ + +#define SCB_CCR_STKOFHFNMIGN_Pos 10U /*!< SCB CCR: STKOFHFNMIGN Position */ +#define SCB_CCR_STKOFHFNMIGN_Msk (1UL << SCB_CCR_STKOFHFNMIGN_Pos) /*!< SCB CCR: STKOFHFNMIGN Mask */ + +#define SCB_CCR_BFHFNMIGN_Pos 8U /*!< SCB CCR: BFHFNMIGN Position */ +#define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ + +#define SCB_CCR_DIV_0_TRP_Pos 4U /*!< SCB CCR: DIV_0_TRP Position */ +#define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +#define SCB_CCR_USERSETMPEND_Pos 1U /*!< SCB CCR: USERSETMPEND Position */ +#define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_HARDFAULTPENDED_Pos 21U /*!< SCB SHCSR: HARDFAULTPENDED Position */ +#define SCB_SHCSR_HARDFAULTPENDED_Msk (1UL << SCB_SHCSR_HARDFAULTPENDED_Pos) /*!< SCB SHCSR: HARDFAULTPENDED Mask */ + +#define SCB_SHCSR_SECUREFAULTPENDED_Pos 20U /*!< SCB SHCSR: SECUREFAULTPENDED Position */ +#define SCB_SHCSR_SECUREFAULTPENDED_Msk (1UL << SCB_SHCSR_SECUREFAULTPENDED_Pos) /*!< SCB SHCSR: SECUREFAULTPENDED Mask */ + +#define SCB_SHCSR_SECUREFAULTENA_Pos 19U /*!< SCB SHCSR: SECUREFAULTENA Position */ +#define SCB_SHCSR_SECUREFAULTENA_Msk (1UL << SCB_SHCSR_SECUREFAULTENA_Pos) /*!< SCB SHCSR: SECUREFAULTENA Mask */ + +#define SCB_SHCSR_USGFAULTENA_Pos 18U /*!< SCB SHCSR: USGFAULTENA Position */ +#define SCB_SHCSR_USGFAULTENA_Msk (1UL << SCB_SHCSR_USGFAULTENA_Pos) /*!< SCB SHCSR: USGFAULTENA Mask */ + +#define SCB_SHCSR_BUSFAULTENA_Pos 17U /*!< SCB SHCSR: BUSFAULTENA Position */ +#define SCB_SHCSR_BUSFAULTENA_Msk (1UL << SCB_SHCSR_BUSFAULTENA_Pos) /*!< SCB SHCSR: BUSFAULTENA Mask */ + +#define SCB_SHCSR_MEMFAULTENA_Pos 16U /*!< SCB SHCSR: MEMFAULTENA Position */ +#define SCB_SHCSR_MEMFAULTENA_Msk (1UL << SCB_SHCSR_MEMFAULTENA_Pos) /*!< SCB SHCSR: MEMFAULTENA Mask */ + +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +#define SCB_SHCSR_BUSFAULTPENDED_Pos 14U /*!< SCB SHCSR: BUSFAULTPENDED Position */ +#define SCB_SHCSR_BUSFAULTPENDED_Msk (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos) /*!< SCB SHCSR: BUSFAULTPENDED Mask */ + +#define SCB_SHCSR_MEMFAULTPENDED_Pos 13U /*!< SCB SHCSR: MEMFAULTPENDED Position */ +#define SCB_SHCSR_MEMFAULTPENDED_Msk (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos) /*!< SCB SHCSR: MEMFAULTPENDED Mask */ + +#define SCB_SHCSR_USGFAULTPENDED_Pos 12U /*!< SCB SHCSR: USGFAULTPENDED Position */ +#define SCB_SHCSR_USGFAULTPENDED_Msk (1UL << SCB_SHCSR_USGFAULTPENDED_Pos) /*!< SCB SHCSR: USGFAULTPENDED Mask */ + +#define SCB_SHCSR_SYSTICKACT_Pos 11U /*!< SCB SHCSR: SYSTICKACT Position */ +#define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ + +#define SCB_SHCSR_PENDSVACT_Pos 10U /*!< SCB SHCSR: PENDSVACT Position */ +#define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ + +#define SCB_SHCSR_MONITORACT_Pos 8U /*!< SCB SHCSR: MONITORACT Position */ +#define SCB_SHCSR_MONITORACT_Msk (1UL << SCB_SHCSR_MONITORACT_Pos) /*!< SCB SHCSR: MONITORACT Mask */ + +#define SCB_SHCSR_SVCALLACT_Pos 7U /*!< SCB SHCSR: SVCALLACT Position */ +#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ + +#define SCB_SHCSR_NMIACT_Pos 5U /*!< SCB SHCSR: NMIACT Position */ +#define SCB_SHCSR_NMIACT_Msk (1UL << SCB_SHCSR_NMIACT_Pos) /*!< SCB SHCSR: NMIACT Mask */ + +#define SCB_SHCSR_SECUREFAULTACT_Pos 4U /*!< SCB SHCSR: SECUREFAULTACT Position */ +#define SCB_SHCSR_SECUREFAULTACT_Msk (1UL << SCB_SHCSR_SECUREFAULTACT_Pos) /*!< SCB SHCSR: SECUREFAULTACT Mask */ + +#define SCB_SHCSR_USGFAULTACT_Pos 3U /*!< SCB SHCSR: USGFAULTACT Position */ +#define SCB_SHCSR_USGFAULTACT_Msk (1UL << SCB_SHCSR_USGFAULTACT_Pos) /*!< SCB SHCSR: USGFAULTACT Mask */ + +#define SCB_SHCSR_HARDFAULTACT_Pos 2U /*!< SCB SHCSR: HARDFAULTACT Position */ +#define SCB_SHCSR_HARDFAULTACT_Msk (1UL << SCB_SHCSR_HARDFAULTACT_Pos) /*!< SCB SHCSR: HARDFAULTACT Mask */ + +#define SCB_SHCSR_BUSFAULTACT_Pos 1U /*!< SCB SHCSR: BUSFAULTACT Position */ +#define SCB_SHCSR_BUSFAULTACT_Msk (1UL << SCB_SHCSR_BUSFAULTACT_Pos) /*!< SCB SHCSR: BUSFAULTACT Mask */ + +#define SCB_SHCSR_MEMFAULTACT_Pos 0U /*!< SCB SHCSR: MEMFAULTACT Position */ +#define SCB_SHCSR_MEMFAULTACT_Msk (1UL /*<< SCB_SHCSR_MEMFAULTACT_Pos*/) /*!< SCB SHCSR: MEMFAULTACT Mask */ + +/* SCB Configurable Fault Status Register Definitions */ +#define SCB_CFSR_USGFAULTSR_Pos 16U /*!< SCB CFSR: Usage Fault Status Register Position */ +#define SCB_CFSR_USGFAULTSR_Msk (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos) /*!< SCB CFSR: Usage Fault Status Register Mask */ + +#define SCB_CFSR_BUSFAULTSR_Pos 8U /*!< SCB CFSR: Bus Fault Status Register Position */ +#define SCB_CFSR_BUSFAULTSR_Msk (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos) /*!< SCB CFSR: Bus Fault Status Register Mask */ + +#define SCB_CFSR_MEMFAULTSR_Pos 0U /*!< SCB CFSR: Memory Manage Fault Status Register Position */ +#define SCB_CFSR_MEMFAULTSR_Msk (0xFFUL /*<< SCB_CFSR_MEMFAULTSR_Pos*/) /*!< SCB CFSR: Memory Manage Fault Status Register Mask */ + +/* MemManage Fault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_MMARVALID_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 7U) /*!< SCB CFSR (MMFSR): MMARVALID Position */ +#define SCB_CFSR_MMARVALID_Msk (1UL << SCB_CFSR_MMARVALID_Pos) /*!< SCB CFSR (MMFSR): MMARVALID Mask */ + +#define SCB_CFSR_MLSPERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 5U) /*!< SCB CFSR (MMFSR): MLSPERR Position */ +#define SCB_CFSR_MLSPERR_Msk (1UL << SCB_CFSR_MLSPERR_Pos) /*!< SCB CFSR (MMFSR): MLSPERR Mask */ + +#define SCB_CFSR_MSTKERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 4U) /*!< SCB CFSR (MMFSR): MSTKERR Position */ +#define SCB_CFSR_MSTKERR_Msk (1UL << SCB_CFSR_MSTKERR_Pos) /*!< SCB CFSR (MMFSR): MSTKERR Mask */ + +#define SCB_CFSR_MUNSTKERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 3U) /*!< SCB CFSR (MMFSR): MUNSTKERR Position */ +#define SCB_CFSR_MUNSTKERR_Msk (1UL << SCB_CFSR_MUNSTKERR_Pos) /*!< SCB CFSR (MMFSR): MUNSTKERR Mask */ + +#define SCB_CFSR_DACCVIOL_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 1U) /*!< SCB CFSR (MMFSR): DACCVIOL Position */ +#define SCB_CFSR_DACCVIOL_Msk (1UL << SCB_CFSR_DACCVIOL_Pos) /*!< SCB CFSR (MMFSR): DACCVIOL Mask */ + +#define SCB_CFSR_IACCVIOL_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 0U) /*!< SCB CFSR (MMFSR): IACCVIOL Position */ +#define SCB_CFSR_IACCVIOL_Msk (1UL /*<< SCB_CFSR_IACCVIOL_Pos*/) /*!< SCB CFSR (MMFSR): IACCVIOL Mask */ + +/* BusFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_BFARVALID_Pos (SCB_CFSR_BUSFAULTSR_Pos + 7U) /*!< SCB CFSR (BFSR): BFARVALID Position */ +#define SCB_CFSR_BFARVALID_Msk (1UL << SCB_CFSR_BFARVALID_Pos) /*!< SCB CFSR (BFSR): BFARVALID Mask */ + +#define SCB_CFSR_LSPERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 5U) /*!< SCB CFSR (BFSR): LSPERR Position */ +#define SCB_CFSR_LSPERR_Msk (1UL << SCB_CFSR_LSPERR_Pos) /*!< SCB CFSR (BFSR): LSPERR Mask */ + +#define SCB_CFSR_STKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 4U) /*!< SCB CFSR (BFSR): STKERR Position */ +#define SCB_CFSR_STKERR_Msk (1UL << SCB_CFSR_STKERR_Pos) /*!< SCB CFSR (BFSR): STKERR Mask */ + +#define SCB_CFSR_UNSTKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 3U) /*!< SCB CFSR (BFSR): UNSTKERR Position */ +#define SCB_CFSR_UNSTKERR_Msk (1UL << SCB_CFSR_UNSTKERR_Pos) /*!< SCB CFSR (BFSR): UNSTKERR Mask */ + +#define SCB_CFSR_IMPRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 2U) /*!< SCB CFSR (BFSR): IMPRECISERR Position */ +#define SCB_CFSR_IMPRECISERR_Msk (1UL << SCB_CFSR_IMPRECISERR_Pos) /*!< SCB CFSR (BFSR): IMPRECISERR Mask */ + +#define SCB_CFSR_PRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 1U) /*!< SCB CFSR (BFSR): PRECISERR Position */ +#define SCB_CFSR_PRECISERR_Msk (1UL << SCB_CFSR_PRECISERR_Pos) /*!< SCB CFSR (BFSR): PRECISERR Mask */ + +#define SCB_CFSR_IBUSERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 0U) /*!< SCB CFSR (BFSR): IBUSERR Position */ +#define SCB_CFSR_IBUSERR_Msk (1UL << SCB_CFSR_IBUSERR_Pos) /*!< SCB CFSR (BFSR): IBUSERR Mask */ + +/* UsageFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_DIVBYZERO_Pos (SCB_CFSR_USGFAULTSR_Pos + 9U) /*!< SCB CFSR (UFSR): DIVBYZERO Position */ +#define SCB_CFSR_DIVBYZERO_Msk (1UL << SCB_CFSR_DIVBYZERO_Pos) /*!< SCB CFSR (UFSR): DIVBYZERO Mask */ + +#define SCB_CFSR_UNALIGNED_Pos (SCB_CFSR_USGFAULTSR_Pos + 8U) /*!< SCB CFSR (UFSR): UNALIGNED Position */ +#define SCB_CFSR_UNALIGNED_Msk (1UL << SCB_CFSR_UNALIGNED_Pos) /*!< SCB CFSR (UFSR): UNALIGNED Mask */ + +#define SCB_CFSR_STKOF_Pos (SCB_CFSR_USGFAULTSR_Pos + 4U) /*!< SCB CFSR (UFSR): STKOF Position */ +#define SCB_CFSR_STKOF_Msk (1UL << SCB_CFSR_STKOF_Pos) /*!< SCB CFSR (UFSR): STKOF Mask */ + +#define SCB_CFSR_NOCP_Pos (SCB_CFSR_USGFAULTSR_Pos + 3U) /*!< SCB CFSR (UFSR): NOCP Position */ +#define SCB_CFSR_NOCP_Msk (1UL << SCB_CFSR_NOCP_Pos) /*!< SCB CFSR (UFSR): NOCP Mask */ + +#define SCB_CFSR_INVPC_Pos (SCB_CFSR_USGFAULTSR_Pos + 2U) /*!< SCB CFSR (UFSR): INVPC Position */ +#define SCB_CFSR_INVPC_Msk (1UL << SCB_CFSR_INVPC_Pos) /*!< SCB CFSR (UFSR): INVPC Mask */ + +#define SCB_CFSR_INVSTATE_Pos (SCB_CFSR_USGFAULTSR_Pos + 1U) /*!< SCB CFSR (UFSR): INVSTATE Position */ +#define SCB_CFSR_INVSTATE_Msk (1UL << SCB_CFSR_INVSTATE_Pos) /*!< SCB CFSR (UFSR): INVSTATE Mask */ + +#define SCB_CFSR_UNDEFINSTR_Pos (SCB_CFSR_USGFAULTSR_Pos + 0U) /*!< SCB CFSR (UFSR): UNDEFINSTR Position */ +#define SCB_CFSR_UNDEFINSTR_Msk (1UL << SCB_CFSR_UNDEFINSTR_Pos) /*!< SCB CFSR (UFSR): UNDEFINSTR Mask */ + +/* SCB Hard Fault Status Register Definitions */ +#define SCB_HFSR_DEBUGEVT_Pos 31U /*!< SCB HFSR: DEBUGEVT Position */ +#define SCB_HFSR_DEBUGEVT_Msk (1UL << SCB_HFSR_DEBUGEVT_Pos) /*!< SCB HFSR: DEBUGEVT Mask */ + +#define SCB_HFSR_FORCED_Pos 30U /*!< SCB HFSR: FORCED Position */ +#define SCB_HFSR_FORCED_Msk (1UL << SCB_HFSR_FORCED_Pos) /*!< SCB HFSR: FORCED Mask */ + +#define SCB_HFSR_VECTTBL_Pos 1U /*!< SCB HFSR: VECTTBL Position */ +#define SCB_HFSR_VECTTBL_Msk (1UL << SCB_HFSR_VECTTBL_Pos) /*!< SCB HFSR: VECTTBL Mask */ + +/* SCB Debug Fault Status Register Definitions */ +#define SCB_DFSR_EXTERNAL_Pos 4U /*!< SCB DFSR: EXTERNAL Position */ +#define SCB_DFSR_EXTERNAL_Msk (1UL << SCB_DFSR_EXTERNAL_Pos) /*!< SCB DFSR: EXTERNAL Mask */ + +#define SCB_DFSR_VCATCH_Pos 3U /*!< SCB DFSR: VCATCH Position */ +#define SCB_DFSR_VCATCH_Msk (1UL << SCB_DFSR_VCATCH_Pos) /*!< SCB DFSR: VCATCH Mask */ + +#define SCB_DFSR_DWTTRAP_Pos 2U /*!< SCB DFSR: DWTTRAP Position */ +#define SCB_DFSR_DWTTRAP_Msk (1UL << SCB_DFSR_DWTTRAP_Pos) /*!< SCB DFSR: DWTTRAP Mask */ + +#define SCB_DFSR_BKPT_Pos 1U /*!< SCB DFSR: BKPT Position */ +#define SCB_DFSR_BKPT_Msk (1UL << SCB_DFSR_BKPT_Pos) /*!< SCB DFSR: BKPT Mask */ + +#define SCB_DFSR_HALTED_Pos 0U /*!< SCB DFSR: HALTED Position */ +#define SCB_DFSR_HALTED_Msk (1UL /*<< SCB_DFSR_HALTED_Pos*/) /*!< SCB DFSR: HALTED Mask */ + +/* SCB Non-Secure Access Control Register Definitions */ +#define SCB_NSACR_CP11_Pos 11U /*!< SCB NSACR: CP11 Position */ +#define SCB_NSACR_CP11_Msk (1UL << SCB_NSACR_CP11_Pos) /*!< SCB NSACR: CP11 Mask */ + +#define SCB_NSACR_CP10_Pos 10U /*!< SCB NSACR: CP10 Position */ +#define SCB_NSACR_CP10_Msk (1UL << SCB_NSACR_CP10_Pos) /*!< SCB NSACR: CP10 Mask */ + +#define SCB_NSACR_CPn_Pos 0U /*!< SCB NSACR: CPn Position */ +#define SCB_NSACR_CPn_Msk (1UL /*<< SCB_NSACR_CPn_Pos*/) /*!< SCB NSACR: CPn Mask */ + +/* SCB Cache Level ID Register Definitions */ +#define SCB_CLIDR_LOUU_Pos 27U /*!< SCB CLIDR: LoUU Position */ +#define SCB_CLIDR_LOUU_Msk (7UL << SCB_CLIDR_LOUU_Pos) /*!< SCB CLIDR: LoUU Mask */ + +#define SCB_CLIDR_LOC_Pos 24U /*!< SCB CLIDR: LoC Position */ +#define SCB_CLIDR_LOC_Msk (7UL << SCB_CLIDR_LOC_Pos) /*!< SCB CLIDR: LoC Mask */ + +/* SCB Cache Type Register Definitions */ +#define SCB_CTR_FORMAT_Pos 29U /*!< SCB CTR: Format Position */ +#define SCB_CTR_FORMAT_Msk (7UL << SCB_CTR_FORMAT_Pos) /*!< SCB CTR: Format Mask */ + +#define SCB_CTR_CWG_Pos 24U /*!< SCB CTR: CWG Position */ +#define SCB_CTR_CWG_Msk (0xFUL << SCB_CTR_CWG_Pos) /*!< SCB CTR: CWG Mask */ + +#define SCB_CTR_ERG_Pos 20U /*!< SCB CTR: ERG Position */ +#define SCB_CTR_ERG_Msk (0xFUL << SCB_CTR_ERG_Pos) /*!< SCB CTR: ERG Mask */ + +#define SCB_CTR_DMINLINE_Pos 16U /*!< SCB CTR: DminLine Position */ +#define SCB_CTR_DMINLINE_Msk (0xFUL << SCB_CTR_DMINLINE_Pos) /*!< SCB CTR: DminLine Mask */ + +#define SCB_CTR_IMINLINE_Pos 0U /*!< SCB CTR: ImInLine Position */ +#define SCB_CTR_IMINLINE_Msk (0xFUL /*<< SCB_CTR_IMINLINE_Pos*/) /*!< SCB CTR: ImInLine Mask */ + +/* SCB Cache Size ID Register Definitions */ +#define SCB_CCSIDR_WT_Pos 31U /*!< SCB CCSIDR: WT Position */ +#define SCB_CCSIDR_WT_Msk (1UL << SCB_CCSIDR_WT_Pos) /*!< SCB CCSIDR: WT Mask */ + +#define SCB_CCSIDR_WB_Pos 30U /*!< SCB CCSIDR: WB Position */ +#define SCB_CCSIDR_WB_Msk (1UL << SCB_CCSIDR_WB_Pos) /*!< SCB CCSIDR: WB Mask */ + +#define SCB_CCSIDR_RA_Pos 29U /*!< SCB CCSIDR: RA Position */ +#define SCB_CCSIDR_RA_Msk (1UL << SCB_CCSIDR_RA_Pos) /*!< SCB CCSIDR: RA Mask */ + +#define SCB_CCSIDR_WA_Pos 28U /*!< SCB CCSIDR: WA Position */ +#define SCB_CCSIDR_WA_Msk (1UL << SCB_CCSIDR_WA_Pos) /*!< SCB CCSIDR: WA Mask */ + +#define SCB_CCSIDR_NUMSETS_Pos 13U /*!< SCB CCSIDR: NumSets Position */ +#define SCB_CCSIDR_NUMSETS_Msk (0x7FFFUL << SCB_CCSIDR_NUMSETS_Pos) /*!< SCB CCSIDR: NumSets Mask */ + +#define SCB_CCSIDR_ASSOCIATIVITY_Pos 3U /*!< SCB CCSIDR: Associativity Position */ +#define SCB_CCSIDR_ASSOCIATIVITY_Msk (0x3FFUL << SCB_CCSIDR_ASSOCIATIVITY_Pos) /*!< SCB CCSIDR: Associativity Mask */ + +#define SCB_CCSIDR_LINESIZE_Pos 0U /*!< SCB CCSIDR: LineSize Position */ +#define SCB_CCSIDR_LINESIZE_Msk (7UL /*<< SCB_CCSIDR_LINESIZE_Pos*/) /*!< SCB CCSIDR: LineSize Mask */ + +/* SCB Cache Size Selection Register Definitions */ +#define SCB_CSSELR_LEVEL_Pos 1U /*!< SCB CSSELR: Level Position */ +#define SCB_CSSELR_LEVEL_Msk (7UL << SCB_CSSELR_LEVEL_Pos) /*!< SCB CSSELR: Level Mask */ + +#define SCB_CSSELR_IND_Pos 0U /*!< SCB CSSELR: InD Position */ +#define SCB_CSSELR_IND_Msk (1UL /*<< SCB_CSSELR_IND_Pos*/) /*!< SCB CSSELR: InD Mask */ + +/* SCB Software Triggered Interrupt Register Definitions */ +#define SCB_STIR_INTID_Pos 0U /*!< SCB STIR: INTID Position */ +#define SCB_STIR_INTID_Msk (0x1FFUL /*<< SCB_STIR_INTID_Pos*/) /*!< SCB STIR: INTID Mask */ + +/* SCB D-Cache Invalidate by Set-way Register Definitions */ +#define SCB_DCISW_WAY_Pos 30U /*!< SCB DCISW: Way Position */ +#define SCB_DCISW_WAY_Msk (3UL << SCB_DCISW_WAY_Pos) /*!< SCB DCISW: Way Mask */ + +#define SCB_DCISW_SET_Pos 5U /*!< SCB DCISW: Set Position */ +#define SCB_DCISW_SET_Msk (0x1FFUL << SCB_DCISW_SET_Pos) /*!< SCB DCISW: Set Mask */ + +/* SCB D-Cache Clean by Set-way Register Definitions */ +#define SCB_DCCSW_WAY_Pos 30U /*!< SCB DCCSW: Way Position */ +#define SCB_DCCSW_WAY_Msk (3UL << SCB_DCCSW_WAY_Pos) /*!< SCB DCCSW: Way Mask */ + +#define SCB_DCCSW_SET_Pos 5U /*!< SCB DCCSW: Set Position */ +#define SCB_DCCSW_SET_Msk (0x1FFUL << SCB_DCCSW_SET_Pos) /*!< SCB DCCSW: Set Mask */ + +/* SCB D-Cache Clean and Invalidate by Set-way Register Definitions */ +#define SCB_DCCISW_WAY_Pos 30U /*!< SCB DCCISW: Way Position */ +#define SCB_DCCISW_WAY_Msk (3UL << SCB_DCCISW_WAY_Pos) /*!< SCB DCCISW: Way Mask */ + +#define SCB_DCCISW_SET_Pos 5U /*!< SCB DCCISW: Set Position */ +#define SCB_DCCISW_SET_Msk (0x1FFUL << SCB_DCCISW_SET_Pos) /*!< SCB DCCISW: Set Mask */ + +/* Instruction Tightly-Coupled Memory Control Register Definitions */ +#define SCB_ITCMCR_SZ_Pos 3U /*!< SCB ITCMCR: SZ Position */ +#define SCB_ITCMCR_SZ_Msk (0xFUL << SCB_ITCMCR_SZ_Pos) /*!< SCB ITCMCR: SZ Mask */ + +#define SCB_ITCMCR_RETEN_Pos 2U /*!< SCB ITCMCR: RETEN Position */ +#define SCB_ITCMCR_RETEN_Msk (1UL << SCB_ITCMCR_RETEN_Pos) /*!< SCB ITCMCR: RETEN Mask */ + +#define SCB_ITCMCR_RMW_Pos 1U /*!< SCB ITCMCR: RMW Position */ +#define SCB_ITCMCR_RMW_Msk (1UL << SCB_ITCMCR_RMW_Pos) /*!< SCB ITCMCR: RMW Mask */ + +#define SCB_ITCMCR_EN_Pos 0U /*!< SCB ITCMCR: EN Position */ +#define SCB_ITCMCR_EN_Msk (1UL /*<< SCB_ITCMCR_EN_Pos*/) /*!< SCB ITCMCR: EN Mask */ + +/* Data Tightly-Coupled Memory Control Register Definitions */ +#define SCB_DTCMCR_SZ_Pos 3U /*!< SCB DTCMCR: SZ Position */ +#define SCB_DTCMCR_SZ_Msk (0xFUL << SCB_DTCMCR_SZ_Pos) /*!< SCB DTCMCR: SZ Mask */ + +#define SCB_DTCMCR_RETEN_Pos 2U /*!< SCB DTCMCR: RETEN Position */ +#define SCB_DTCMCR_RETEN_Msk (1UL << SCB_DTCMCR_RETEN_Pos) /*!< SCB DTCMCR: RETEN Mask */ + +#define SCB_DTCMCR_RMW_Pos 1U /*!< SCB DTCMCR: RMW Position */ +#define SCB_DTCMCR_RMW_Msk (1UL << SCB_DTCMCR_RMW_Pos) /*!< SCB DTCMCR: RMW Mask */ + +#define SCB_DTCMCR_EN_Pos 0U /*!< SCB DTCMCR: EN Position */ +#define SCB_DTCMCR_EN_Msk (1UL /*<< SCB_DTCMCR_EN_Pos*/) /*!< SCB DTCMCR: EN Mask */ + +/* AHBP Control Register Definitions */ +#define SCB_AHBPCR_SZ_Pos 1U /*!< SCB AHBPCR: SZ Position */ +#define SCB_AHBPCR_SZ_Msk (7UL << SCB_AHBPCR_SZ_Pos) /*!< SCB AHBPCR: SZ Mask */ + +#define SCB_AHBPCR_EN_Pos 0U /*!< SCB AHBPCR: EN Position */ +#define SCB_AHBPCR_EN_Msk (1UL /*<< SCB_AHBPCR_EN_Pos*/) /*!< SCB AHBPCR: EN Mask */ + +/* L1 Cache Control Register Definitions */ +#define SCB_CACR_FORCEWT_Pos 2U /*!< SCB CACR: FORCEWT Position */ +#define SCB_CACR_FORCEWT_Msk (1UL << SCB_CACR_FORCEWT_Pos) /*!< SCB CACR: FORCEWT Mask */ + +#define SCB_CACR_ECCEN_Pos 1U /*!< SCB CACR: ECCEN Position */ +#define SCB_CACR_ECCEN_Msk (1UL << SCB_CACR_ECCEN_Pos) /*!< SCB CACR: ECCEN Mask */ + +#define SCB_CACR_SIWT_Pos 0U /*!< SCB CACR: SIWT Position */ +#define SCB_CACR_SIWT_Msk (1UL /*<< SCB_CACR_SIWT_Pos*/) /*!< SCB CACR: SIWT Mask */ + +/* AHBS Control Register Definitions */ +#define SCB_AHBSCR_INITCOUNT_Pos 11U /*!< SCB AHBSCR: INITCOUNT Position */ +#define SCB_AHBSCR_INITCOUNT_Msk (0x1FUL << SCB_AHBPCR_INITCOUNT_Pos) /*!< SCB AHBSCR: INITCOUNT Mask */ + +#define SCB_AHBSCR_TPRI_Pos 2U /*!< SCB AHBSCR: TPRI Position */ +#define SCB_AHBSCR_TPRI_Msk (0x1FFUL << SCB_AHBPCR_TPRI_Pos) /*!< SCB AHBSCR: TPRI Mask */ + +#define SCB_AHBSCR_CTL_Pos 0U /*!< SCB AHBSCR: CTL Position*/ +#define SCB_AHBSCR_CTL_Msk (3UL /*<< SCB_AHBPCR_CTL_Pos*/) /*!< SCB AHBSCR: CTL Mask */ + +/* Auxiliary Bus Fault Status Register Definitions */ +#define SCB_ABFSR_AXIMTYPE_Pos 8U /*!< SCB ABFSR: AXIMTYPE Position*/ +#define SCB_ABFSR_AXIMTYPE_Msk (3UL << SCB_ABFSR_AXIMTYPE_Pos) /*!< SCB ABFSR: AXIMTYPE Mask */ + +#define SCB_ABFSR_EPPB_Pos 4U /*!< SCB ABFSR: EPPB Position*/ +#define SCB_ABFSR_EPPB_Msk (1UL << SCB_ABFSR_EPPB_Pos) /*!< SCB ABFSR: EPPB Mask */ + +#define SCB_ABFSR_AXIM_Pos 3U /*!< SCB ABFSR: AXIM Position*/ +#define SCB_ABFSR_AXIM_Msk (1UL << SCB_ABFSR_AXIM_Pos) /*!< SCB ABFSR: AXIM Mask */ + +#define SCB_ABFSR_AHBP_Pos 2U /*!< SCB ABFSR: AHBP Position*/ +#define SCB_ABFSR_AHBP_Msk (1UL << SCB_ABFSR_AHBP_Pos) /*!< SCB ABFSR: AHBP Mask */ + +#define SCB_ABFSR_DTCM_Pos 1U /*!< SCB ABFSR: DTCM Position*/ +#define SCB_ABFSR_DTCM_Msk (1UL << SCB_ABFSR_DTCM_Pos) /*!< SCB ABFSR: DTCM Mask */ + +#define SCB_ABFSR_ITCM_Pos 0U /*!< SCB ABFSR: ITCM Position*/ +#define SCB_ABFSR_ITCM_Msk (1UL /*<< SCB_ABFSR_ITCM_Pos*/) /*!< SCB ABFSR: ITCM Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB) + \brief Type definitions for the System Control and ID Register not in the SCB + @{ + */ + +/** + \brief Structure type to access the System Control and ID Register not in the SCB. + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IM uint32_t ICTR; /*!< Offset: 0x004 (R/ ) Interrupt Controller Type Register */ + __IOM uint32_t ACTLR; /*!< Offset: 0x008 (R/W) Auxiliary Control Register */ + __IOM uint32_t CPPWR; /*!< Offset: 0x00C (R/W) Coprocessor Power Control Register */ +} SCnSCB_Type; + +/* Interrupt Controller Type Register Definitions */ +#define SCnSCB_ICTR_INTLINESNUM_Pos 0U /*!< ICTR: INTLINESNUM Position */ +#define SCnSCB_ICTR_INTLINESNUM_Msk (0xFUL /*<< SCnSCB_ICTR_INTLINESNUM_Pos*/) /*!< ICTR: INTLINESNUM Mask */ + +/*@} end of group CMSIS_SCnotSCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick System Tick Timer (SysTick) + \brief Type definitions for the System Timer Registers. + @{ + */ + +/** + \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_ITM Instrumentation Trace Macrocell (ITM) + \brief Type definitions for the Instrumentation Trace Macrocell (ITM) + @{ + */ + +/** + \brief Structure type to access the Instrumentation Trace Macrocell Register (ITM). + */ +typedef struct +{ + __OM union + { + __OM uint8_t u8; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 8-bit */ + __OM uint16_t u16; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 16-bit */ + __OM uint32_t u32; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 32-bit */ + } PORT [32U]; /*!< Offset: 0x000 ( /W) ITM Stimulus Port Registers */ + uint32_t RESERVED0[864U]; + __IOM uint32_t TER; /*!< Offset: 0xE00 (R/W) ITM Trace Enable Register */ + uint32_t RESERVED1[15U]; + __IOM uint32_t TPR; /*!< Offset: 0xE40 (R/W) ITM Trace Privilege Register */ + uint32_t RESERVED2[15U]; + __IOM uint32_t TCR; /*!< Offset: 0xE80 (R/W) ITM Trace Control Register */ + uint32_t RESERVED3[29U]; + __OM uint32_t IWR; /*!< Offset: 0xEF8 ( /W) ITM Integration Write Register */ + __IM uint32_t IRR; /*!< Offset: 0xEFC (R/ ) ITM Integration Read Register */ + __IOM uint32_t IMCR; /*!< Offset: 0xF00 (R/W) ITM Integration Mode Control Register */ + uint32_t RESERVED4[43U]; + __OM uint32_t LAR; /*!< Offset: 0xFB0 ( /W) ITM Lock Access Register */ + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) ITM Lock Status Register */ + uint32_t RESERVED5[1U]; + __IM uint32_t DEVARCH; /*!< Offset: 0xFBC (R/ ) ITM Device Architecture Register */ + uint32_t RESERVED6[4U]; + __IM uint32_t PID4; /*!< Offset: 0xFD0 (R/ ) ITM Peripheral Identification Register #4 */ + __IM uint32_t PID5; /*!< Offset: 0xFD4 (R/ ) ITM Peripheral Identification Register #5 */ + __IM uint32_t PID6; /*!< Offset: 0xFD8 (R/ ) ITM Peripheral Identification Register #6 */ + __IM uint32_t PID7; /*!< Offset: 0xFDC (R/ ) ITM Peripheral Identification Register #7 */ + __IM uint32_t PID0; /*!< Offset: 0xFE0 (R/ ) ITM Peripheral Identification Register #0 */ + __IM uint32_t PID1; /*!< Offset: 0xFE4 (R/ ) ITM Peripheral Identification Register #1 */ + __IM uint32_t PID2; /*!< Offset: 0xFE8 (R/ ) ITM Peripheral Identification Register #2 */ + __IM uint32_t PID3; /*!< Offset: 0xFEC (R/ ) ITM Peripheral Identification Register #3 */ + __IM uint32_t CID0; /*!< Offset: 0xFF0 (R/ ) ITM Component Identification Register #0 */ + __IM uint32_t CID1; /*!< Offset: 0xFF4 (R/ ) ITM Component Identification Register #1 */ + __IM uint32_t CID2; /*!< Offset: 0xFF8 (R/ ) ITM Component Identification Register #2 */ + __IM uint32_t CID3; /*!< Offset: 0xFFC (R/ ) ITM Component Identification Register #3 */ +} ITM_Type; + +/* ITM Stimulus Port Register Definitions */ +#define ITM_STIM_DISABLED_Pos 1U /*!< ITM STIM: DISABLED Position */ +#define ITM_STIM_DISABLED_Msk (0x1UL << ITM_STIM_DISABLED_Pos) /*!< ITM STIM: DISABLED Mask */ + +#define ITM_STIM_FIFOREADY_Pos 0U /*!< ITM STIM: FIFOREADY Position */ +#define ITM_STIM_FIFOREADY_Msk (0x1UL /*<< ITM_STIM_FIFOREADY_Pos*/) /*!< ITM STIM: FIFOREADY Mask */ + +/* ITM Trace Privilege Register Definitions */ +#define ITM_TPR_PRIVMASK_Pos 0U /*!< ITM TPR: PRIVMASK Position */ +#define ITM_TPR_PRIVMASK_Msk (0xFUL /*<< ITM_TPR_PRIVMASK_Pos*/) /*!< ITM TPR: PRIVMASK Mask */ + +/* ITM Trace Control Register Definitions */ +#define ITM_TCR_BUSY_Pos 23U /*!< ITM TCR: BUSY Position */ +#define ITM_TCR_BUSY_Msk (1UL << ITM_TCR_BUSY_Pos) /*!< ITM TCR: BUSY Mask */ + +#define ITM_TCR_TRACEBUSID_Pos 16U /*!< ITM TCR: ATBID Position */ +#define ITM_TCR_TRACEBUSID_Msk (0x7FUL << ITM_TCR_TRACEBUSID_Pos) /*!< ITM TCR: ATBID Mask */ + +#define ITM_TCR_GTSFREQ_Pos 10U /*!< ITM TCR: Global timestamp frequency Position */ +#define ITM_TCR_GTSFREQ_Msk (3UL << ITM_TCR_GTSFREQ_Pos) /*!< ITM TCR: Global timestamp frequency Mask */ + +#define ITM_TCR_TSPRESCALE_Pos 8U /*!< ITM TCR: TSPRESCALE Position */ +#define ITM_TCR_TSPRESCALE_Msk (3UL << ITM_TCR_TSPRESCALE_Pos) /*!< ITM TCR: TSPRESCALE Mask */ + +#define ITM_TCR_STALLENA_Pos 5U /*!< ITM TCR: STALLENA Position */ +#define ITM_TCR_STALLENA_Msk (1UL << ITM_TCR_STALLENA_Pos) /*!< ITM TCR: STALLENA Mask */ + +#define ITM_TCR_SWOENA_Pos 4U /*!< ITM TCR: SWOENA Position */ +#define ITM_TCR_SWOENA_Msk (1UL << ITM_TCR_SWOENA_Pos) /*!< ITM TCR: SWOENA Mask */ + +#define ITM_TCR_DWTENA_Pos 3U /*!< ITM TCR: DWTENA Position */ +#define ITM_TCR_DWTENA_Msk (1UL << ITM_TCR_DWTENA_Pos) /*!< ITM TCR: DWTENA Mask */ + +#define ITM_TCR_SYNCENA_Pos 2U /*!< ITM TCR: SYNCENA Position */ +#define ITM_TCR_SYNCENA_Msk (1UL << ITM_TCR_SYNCENA_Pos) /*!< ITM TCR: SYNCENA Mask */ + +#define ITM_TCR_TSENA_Pos 1U /*!< ITM TCR: TSENA Position */ +#define ITM_TCR_TSENA_Msk (1UL << ITM_TCR_TSENA_Pos) /*!< ITM TCR: TSENA Mask */ + +#define ITM_TCR_ITMENA_Pos 0U /*!< ITM TCR: ITM Enable bit Position */ +#define ITM_TCR_ITMENA_Msk (1UL /*<< ITM_TCR_ITMENA_Pos*/) /*!< ITM TCR: ITM Enable bit Mask */ + +/* ITM Integration Write Register Definitions */ +#define ITM_IWR_ATVALIDM_Pos 0U /*!< ITM IWR: ATVALIDM Position */ +#define ITM_IWR_ATVALIDM_Msk (1UL /*<< ITM_IWR_ATVALIDM_Pos*/) /*!< ITM IWR: ATVALIDM Mask */ + +/* ITM Integration Read Register Definitions */ +#define ITM_IRR_ATREADYM_Pos 0U /*!< ITM IRR: ATREADYM Position */ +#define ITM_IRR_ATREADYM_Msk (1UL /*<< ITM_IRR_ATREADYM_Pos*/) /*!< ITM IRR: ATREADYM Mask */ + +/* ITM Integration Mode Control Register Definitions */ +#define ITM_IMCR_INTEGRATION_Pos 0U /*!< ITM IMCR: INTEGRATION Position */ +#define ITM_IMCR_INTEGRATION_Msk (1UL /*<< ITM_IMCR_INTEGRATION_Pos*/) /*!< ITM IMCR: INTEGRATION Mask */ + +/* ITM Lock Status Register Definitions */ +#define ITM_LSR_ByteAcc_Pos 2U /*!< ITM LSR: ByteAcc Position */ +#define ITM_LSR_ByteAcc_Msk (1UL << ITM_LSR_ByteAcc_Pos) /*!< ITM LSR: ByteAcc Mask */ + +#define ITM_LSR_Access_Pos 1U /*!< ITM LSR: Access Position */ +#define ITM_LSR_Access_Msk (1UL << ITM_LSR_Access_Pos) /*!< ITM LSR: Access Mask */ + +#define ITM_LSR_Present_Pos 0U /*!< ITM LSR: Present Position */ +#define ITM_LSR_Present_Msk (1UL /*<< ITM_LSR_Present_Pos*/) /*!< ITM LSR: Present Mask */ + +/*@}*/ /* end of group CMSIS_ITM */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DWT Data Watchpoint and Trace (DWT) + \brief Type definitions for the Data Watchpoint and Trace (DWT) + @{ + */ + +/** + \brief Structure type to access the Data Watchpoint and Trace Register (DWT). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */ + __IOM uint32_t CYCCNT; /*!< Offset: 0x004 (R/W) Cycle Count Register */ + __IOM uint32_t CPICNT; /*!< Offset: 0x008 (R/W) CPI Count Register */ + __IOM uint32_t EXCCNT; /*!< Offset: 0x00C (R/W) Exception Overhead Count Register */ + __IOM uint32_t SLEEPCNT; /*!< Offset: 0x010 (R/W) Sleep Count Register */ + __IOM uint32_t LSUCNT; /*!< Offset: 0x014 (R/W) LSU Count Register */ + __IOM uint32_t FOLDCNT; /*!< Offset: 0x018 (R/W) Folded-instruction Count Register */ + __IM uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register */ + __IOM uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */ + uint32_t RESERVED1[1U]; + __IOM uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */ + uint32_t RESERVED2[1U]; + __IOM uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */ + uint32_t RESERVED3[1U]; + __IOM uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */ + uint32_t RESERVED4[1U]; + __IOM uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */ + uint32_t RESERVED5[1U]; + __IOM uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */ + uint32_t RESERVED6[1U]; + __IOM uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */ + uint32_t RESERVED7[1U]; + __IOM uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */ + uint32_t RESERVED8[1U]; + __IOM uint32_t COMP4; /*!< Offset: 0x060 (R/W) Comparator Register 4 */ + uint32_t RESERVED9[1U]; + __IOM uint32_t FUNCTION4; /*!< Offset: 0x068 (R/W) Function Register 4 */ + uint32_t RESERVED10[1U]; + __IOM uint32_t COMP5; /*!< Offset: 0x070 (R/W) Comparator Register 5 */ + uint32_t RESERVED11[1U]; + __IOM uint32_t FUNCTION5; /*!< Offset: 0x078 (R/W) Function Register 5 */ + uint32_t RESERVED12[1U]; + __IOM uint32_t COMP6; /*!< Offset: 0x080 (R/W) Comparator Register 6 */ + uint32_t RESERVED13[1U]; + __IOM uint32_t FUNCTION6; /*!< Offset: 0x088 (R/W) Function Register 6 */ + uint32_t RESERVED14[1U]; + __IOM uint32_t COMP7; /*!< Offset: 0x090 (R/W) Comparator Register 7 */ + uint32_t RESERVED15[1U]; + __IOM uint32_t FUNCTION7; /*!< Offset: 0x098 (R/W) Function Register 7 */ + uint32_t RESERVED16[1U]; + __IOM uint32_t COMP8; /*!< Offset: 0x0A0 (R/W) Comparator Register 8 */ + uint32_t RESERVED17[1U]; + __IOM uint32_t FUNCTION8; /*!< Offset: 0x0A8 (R/W) Function Register 8 */ + uint32_t RESERVED18[1U]; + __IOM uint32_t COMP9; /*!< Offset: 0x0B0 (R/W) Comparator Register 9 */ + uint32_t RESERVED19[1U]; + __IOM uint32_t FUNCTION9; /*!< Offset: 0x0B8 (R/W) Function Register 9 */ + uint32_t RESERVED20[1U]; + __IOM uint32_t COMP10; /*!< Offset: 0x0C0 (R/W) Comparator Register 10 */ + uint32_t RESERVED21[1U]; + __IOM uint32_t FUNCTION10; /*!< Offset: 0x0C8 (R/W) Function Register 10 */ + uint32_t RESERVED22[1U]; + __IOM uint32_t COMP11; /*!< Offset: 0x0D0 (R/W) Comparator Register 11 */ + uint32_t RESERVED23[1U]; + __IOM uint32_t FUNCTION11; /*!< Offset: 0x0D8 (R/W) Function Register 11 */ + uint32_t RESERVED24[1U]; + __IOM uint32_t COMP12; /*!< Offset: 0x0E0 (R/W) Comparator Register 12 */ + uint32_t RESERVED25[1U]; + __IOM uint32_t FUNCTION12; /*!< Offset: 0x0E8 (R/W) Function Register 12 */ + uint32_t RESERVED26[1U]; + __IOM uint32_t COMP13; /*!< Offset: 0x0F0 (R/W) Comparator Register 13 */ + uint32_t RESERVED27[1U]; + __IOM uint32_t FUNCTION13; /*!< Offset: 0x0F8 (R/W) Function Register 13 */ + uint32_t RESERVED28[1U]; + __IOM uint32_t COMP14; /*!< Offset: 0x100 (R/W) Comparator Register 14 */ + uint32_t RESERVED29[1U]; + __IOM uint32_t FUNCTION14; /*!< Offset: 0x108 (R/W) Function Register 14 */ + uint32_t RESERVED30[1U]; + __IOM uint32_t COMP15; /*!< Offset: 0x110 (R/W) Comparator Register 15 */ + uint32_t RESERVED31[1U]; + __IOM uint32_t FUNCTION15; /*!< Offset: 0x118 (R/W) Function Register 15 */ + uint32_t RESERVED32[934U]; + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R ) Lock Status Register */ + uint32_t RESERVED33[1U]; + __IM uint32_t DEVARCH; /*!< Offset: 0xFBC (R/ ) Device Architecture Register */ +} DWT_Type; + +/* DWT Control Register Definitions */ +#define DWT_CTRL_NUMCOMP_Pos 28U /*!< DWT CTRL: NUMCOMP Position */ +#define DWT_CTRL_NUMCOMP_Msk (0xFUL << DWT_CTRL_NUMCOMP_Pos) /*!< DWT CTRL: NUMCOMP Mask */ + +#define DWT_CTRL_NOTRCPKT_Pos 27U /*!< DWT CTRL: NOTRCPKT Position */ +#define DWT_CTRL_NOTRCPKT_Msk (0x1UL << DWT_CTRL_NOTRCPKT_Pos) /*!< DWT CTRL: NOTRCPKT Mask */ + +#define DWT_CTRL_NOEXTTRIG_Pos 26U /*!< DWT CTRL: NOEXTTRIG Position */ +#define DWT_CTRL_NOEXTTRIG_Msk (0x1UL << DWT_CTRL_NOEXTTRIG_Pos) /*!< DWT CTRL: NOEXTTRIG Mask */ + +#define DWT_CTRL_NOCYCCNT_Pos 25U /*!< DWT CTRL: NOCYCCNT Position */ +#define DWT_CTRL_NOCYCCNT_Msk (0x1UL << DWT_CTRL_NOCYCCNT_Pos) /*!< DWT CTRL: NOCYCCNT Mask */ + +#define DWT_CTRL_NOPRFCNT_Pos 24U /*!< DWT CTRL: NOPRFCNT Position */ +#define DWT_CTRL_NOPRFCNT_Msk (0x1UL << DWT_CTRL_NOPRFCNT_Pos) /*!< DWT CTRL: NOPRFCNT Mask */ + +#define DWT_CTRL_CYCDISS_Pos 23U /*!< DWT CTRL: CYCDISS Position */ +#define DWT_CTRL_CYCDISS_Msk (0x1UL << DWT_CTRL_CYCDISS_Pos) /*!< DWT CTRL: CYCDISS Mask */ + +#define DWT_CTRL_CYCEVTENA_Pos 22U /*!< DWT CTRL: CYCEVTENA Position */ +#define DWT_CTRL_CYCEVTENA_Msk (0x1UL << DWT_CTRL_CYCEVTENA_Pos) /*!< DWT CTRL: CYCEVTENA Mask */ + +#define DWT_CTRL_FOLDEVTENA_Pos 21U /*!< DWT CTRL: FOLDEVTENA Position */ +#define DWT_CTRL_FOLDEVTENA_Msk (0x1UL << DWT_CTRL_FOLDEVTENA_Pos) /*!< DWT CTRL: FOLDEVTENA Mask */ + +#define DWT_CTRL_LSUEVTENA_Pos 20U /*!< DWT CTRL: LSUEVTENA Position */ +#define DWT_CTRL_LSUEVTENA_Msk (0x1UL << DWT_CTRL_LSUEVTENA_Pos) /*!< DWT CTRL: LSUEVTENA Mask */ + +#define DWT_CTRL_SLEEPEVTENA_Pos 19U /*!< DWT CTRL: SLEEPEVTENA Position */ +#define DWT_CTRL_SLEEPEVTENA_Msk (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos) /*!< DWT CTRL: SLEEPEVTENA Mask */ + +#define DWT_CTRL_EXCEVTENA_Pos 18U /*!< DWT CTRL: EXCEVTENA Position */ +#define DWT_CTRL_EXCEVTENA_Msk (0x1UL << DWT_CTRL_EXCEVTENA_Pos) /*!< DWT CTRL: EXCEVTENA Mask */ + +#define DWT_CTRL_CPIEVTENA_Pos 17U /*!< DWT CTRL: CPIEVTENA Position */ +#define DWT_CTRL_CPIEVTENA_Msk (0x1UL << DWT_CTRL_CPIEVTENA_Pos) /*!< DWT CTRL: CPIEVTENA Mask */ + +#define DWT_CTRL_EXCTRCENA_Pos 16U /*!< DWT CTRL: EXCTRCENA Position */ +#define DWT_CTRL_EXCTRCENA_Msk (0x1UL << DWT_CTRL_EXCTRCENA_Pos) /*!< DWT CTRL: EXCTRCENA Mask */ + +#define DWT_CTRL_PCSAMPLENA_Pos 12U /*!< DWT CTRL: PCSAMPLENA Position */ +#define DWT_CTRL_PCSAMPLENA_Msk (0x1UL << DWT_CTRL_PCSAMPLENA_Pos) /*!< DWT CTRL: PCSAMPLENA Mask */ + +#define DWT_CTRL_SYNCTAP_Pos 10U /*!< DWT CTRL: SYNCTAP Position */ +#define DWT_CTRL_SYNCTAP_Msk (0x3UL << DWT_CTRL_SYNCTAP_Pos) /*!< DWT CTRL: SYNCTAP Mask */ + +#define DWT_CTRL_CYCTAP_Pos 9U /*!< DWT CTRL: CYCTAP Position */ +#define DWT_CTRL_CYCTAP_Msk (0x1UL << DWT_CTRL_CYCTAP_Pos) /*!< DWT CTRL: CYCTAP Mask */ + +#define DWT_CTRL_POSTINIT_Pos 5U /*!< DWT CTRL: POSTINIT Position */ +#define DWT_CTRL_POSTINIT_Msk (0xFUL << DWT_CTRL_POSTINIT_Pos) /*!< DWT CTRL: POSTINIT Mask */ + +#define DWT_CTRL_POSTPRESET_Pos 1U /*!< DWT CTRL: POSTPRESET Position */ +#define DWT_CTRL_POSTPRESET_Msk (0xFUL << DWT_CTRL_POSTPRESET_Pos) /*!< DWT CTRL: POSTPRESET Mask */ + +#define DWT_CTRL_CYCCNTENA_Pos 0U /*!< DWT CTRL: CYCCNTENA Position */ +#define DWT_CTRL_CYCCNTENA_Msk (0x1UL /*<< DWT_CTRL_CYCCNTENA_Pos*/) /*!< DWT CTRL: CYCCNTENA Mask */ + +/* DWT CPI Count Register Definitions */ +#define DWT_CPICNT_CPICNT_Pos 0U /*!< DWT CPICNT: CPICNT Position */ +#define DWT_CPICNT_CPICNT_Msk (0xFFUL /*<< DWT_CPICNT_CPICNT_Pos*/) /*!< DWT CPICNT: CPICNT Mask */ + +/* DWT Exception Overhead Count Register Definitions */ +#define DWT_EXCCNT_EXCCNT_Pos 0U /*!< DWT EXCCNT: EXCCNT Position */ +#define DWT_EXCCNT_EXCCNT_Msk (0xFFUL /*<< DWT_EXCCNT_EXCCNT_Pos*/) /*!< DWT EXCCNT: EXCCNT Mask */ + +/* DWT Sleep Count Register Definitions */ +#define DWT_SLEEPCNT_SLEEPCNT_Pos 0U /*!< DWT SLEEPCNT: SLEEPCNT Position */ +#define DWT_SLEEPCNT_SLEEPCNT_Msk (0xFFUL /*<< DWT_SLEEPCNT_SLEEPCNT_Pos*/) /*!< DWT SLEEPCNT: SLEEPCNT Mask */ + +/* DWT LSU Count Register Definitions */ +#define DWT_LSUCNT_LSUCNT_Pos 0U /*!< DWT LSUCNT: LSUCNT Position */ +#define DWT_LSUCNT_LSUCNT_Msk (0xFFUL /*<< DWT_LSUCNT_LSUCNT_Pos*/) /*!< DWT LSUCNT: LSUCNT Mask */ + +/* DWT Folded-instruction Count Register Definitions */ +#define DWT_FOLDCNT_FOLDCNT_Pos 0U /*!< DWT FOLDCNT: FOLDCNT Position */ +#define DWT_FOLDCNT_FOLDCNT_Msk (0xFFUL /*<< DWT_FOLDCNT_FOLDCNT_Pos*/) /*!< DWT FOLDCNT: FOLDCNT Mask */ + +/* DWT Comparator Function Register Definitions */ +#define DWT_FUNCTION_ID_Pos 27U /*!< DWT FUNCTION: ID Position */ +#define DWT_FUNCTION_ID_Msk (0x1FUL << DWT_FUNCTION_ID_Pos) /*!< DWT FUNCTION: ID Mask */ + +#define DWT_FUNCTION_MATCHED_Pos 24U /*!< DWT FUNCTION: MATCHED Position */ +#define DWT_FUNCTION_MATCHED_Msk (0x1UL << DWT_FUNCTION_MATCHED_Pos) /*!< DWT FUNCTION: MATCHED Mask */ + +#define DWT_FUNCTION_DATAVSIZE_Pos 10U /*!< DWT FUNCTION: DATAVSIZE Position */ +#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */ + +#define DWT_FUNCTION_ACTION_Pos 4U /*!< DWT FUNCTION: ACTION Position */ +#define DWT_FUNCTION_ACTION_Msk (0x1UL << DWT_FUNCTION_ACTION_Pos) /*!< DWT FUNCTION: ACTION Mask */ + +#define DWT_FUNCTION_MATCH_Pos 0U /*!< DWT FUNCTION: MATCH Position */ +#define DWT_FUNCTION_MATCH_Msk (0xFUL /*<< DWT_FUNCTION_MATCH_Pos*/) /*!< DWT FUNCTION: MATCH Mask */ + +/*@}*/ /* end of group CMSIS_DWT */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_TPI Trace Port Interface (TPI) + \brief Type definitions for the Trace Port Interface (TPI) + @{ + */ + +/** + \brief Structure type to access the Trace Port Interface Register (TPI). + */ +typedef struct +{ + __IM uint32_t SSPSR; /*!< Offset: 0x000 (R/ ) Supported Parallel Port Sizes Register */ + __IOM uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Sizes Register */ + uint32_t RESERVED0[2U]; + __IOM uint32_t ACPR; /*!< Offset: 0x010 (R/W) Asynchronous Clock Prescaler Register */ + uint32_t RESERVED1[55U]; + __IOM uint32_t SPPR; /*!< Offset: 0x0F0 (R/W) Selected Pin Protocol Register */ + uint32_t RESERVED2[131U]; + __IM uint32_t FFSR; /*!< Offset: 0x300 (R/ ) Formatter and Flush Status Register */ + __IOM uint32_t FFCR; /*!< Offset: 0x304 (R/W) Formatter and Flush Control Register */ + __IOM uint32_t PSCR; /*!< Offset: 0x308 (R/W) Periodic Synchronization Control Register */ + uint32_t RESERVED3[809U]; + __OM uint32_t LAR; /*!< Offset: 0xFB0 ( /W) Software Lock Access Register */ + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) Software Lock Status Register */ + uint32_t RESERVED4[4U]; + __IM uint32_t TYPE; /*!< Offset: 0xFC8 (R/ ) Device Identifier Register */ + __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) Device Type Register */ +} TPI_Type; + +/* TPI Asynchronous Clock Prescaler Register Definitions */ +#define TPI_ACPR_SWOSCALER_Pos 0U /*!< TPI ACPR: SWOSCALER Position */ +#define TPI_ACPR_SWOSCALER_Msk (0xFFFFUL /*<< TPI_ACPR_SWOSCALER_Pos*/) /*!< TPI ACPR: SWOSCALER Mask */ + +/* TPI Selected Pin Protocol Register Definitions */ +#define TPI_SPPR_TXMODE_Pos 0U /*!< TPI SPPR: TXMODE Position */ +#define TPI_SPPR_TXMODE_Msk (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/) /*!< TPI SPPR: TXMODE Mask */ + +/* TPI Formatter and Flush Status Register Definitions */ +#define TPI_FFSR_FtNonStop_Pos 3U /*!< TPI FFSR: FtNonStop Position */ +#define TPI_FFSR_FtNonStop_Msk (0x1UL << TPI_FFSR_FtNonStop_Pos) /*!< TPI FFSR: FtNonStop Mask */ + +#define TPI_FFSR_TCPresent_Pos 2U /*!< TPI FFSR: TCPresent Position */ +#define TPI_FFSR_TCPresent_Msk (0x1UL << TPI_FFSR_TCPresent_Pos) /*!< TPI FFSR: TCPresent Mask */ + +#define TPI_FFSR_FtStopped_Pos 1U /*!< TPI FFSR: FtStopped Position */ +#define TPI_FFSR_FtStopped_Msk (0x1UL << TPI_FFSR_FtStopped_Pos) /*!< TPI FFSR: FtStopped Mask */ + +#define TPI_FFSR_FlInProg_Pos 0U /*!< TPI FFSR: FlInProg Position */ +#define TPI_FFSR_FlInProg_Msk (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/) /*!< TPI FFSR: FlInProg Mask */ + +/* TPI Formatter and Flush Control Register Definitions */ +#define TPI_FFCR_TrigIn_Pos 8U /*!< TPI FFCR: TrigIn Position */ +#define TPI_FFCR_TrigIn_Msk (0x1UL << TPI_FFCR_TrigIn_Pos) /*!< TPI FFCR: TrigIn Mask */ + +#define TPI_FFCR_FOnMan_Pos 6U /*!< TPI FFCR: FOnMan Position */ +#define TPI_FFCR_FOnMan_Msk (0x1UL << TPI_FFCR_FOnMan_Pos) /*!< TPI FFCR: FOnMan Mask */ + +#define TPI_FFCR_EnFCont_Pos 1U /*!< TPI FFCR: EnFCont Position */ +#define TPI_FFCR_EnFCont_Msk (0x1UL << TPI_FFCR_EnFCont_Pos) /*!< TPI FFCR: EnFCont Mask */ + +/* TPI Periodic Synchronization Control Register Definitions */ +#define TPI_PSCR_PSCount_Pos 0U /*!< TPI PSCR: PSCount Position */ +#define TPI_PSCR_PSCount_Msk (0x1FUL /*<< TPI_PSCR_PSCount_Pos*/) /*!< TPI PSCR: TPSCount Mask */ + +/* TPI Software Lock Status Register Definitions */ +#define TPI_LSR_nTT_Pos 1U /*!< TPI LSR: Not thirty-two bit. Position */ +#define TPI_LSR_nTT_Msk (0x1UL << TPI_LSR_nTT_Pos) /*!< TPI LSR: Not thirty-two bit. Mask */ + +#define TPI_LSR_SLK_Pos 1U /*!< TPI LSR: Software Lock status Position */ +#define TPI_LSR_SLK_Msk (0x1UL << TPI_LSR_SLK_Pos) /*!< TPI LSR: Software Lock status Mask */ + +#define TPI_LSR_SLI_Pos 0U /*!< TPI LSR: Software Lock implemented Position */ +#define TPI_LSR_SLI_Msk (0x1UL /*<< TPI_LSR_SLI_Pos*/) /*!< TPI LSR: Software Lock implemented Mask */ + +/* TPI DEVID Register Definitions */ +#define TPI_DEVID_NRZVALID_Pos 11U /*!< TPI DEVID: NRZVALID Position */ +#define TPI_DEVID_NRZVALID_Msk (0x1UL << TPI_DEVID_NRZVALID_Pos) /*!< TPI DEVID: NRZVALID Mask */ + +#define TPI_DEVID_MANCVALID_Pos 10U /*!< TPI DEVID: MANCVALID Position */ +#define TPI_DEVID_MANCVALID_Msk (0x1UL << TPI_DEVID_MANCVALID_Pos) /*!< TPI DEVID: MANCVALID Mask */ + +#define TPI_DEVID_PTINVALID_Pos 9U /*!< TPI DEVID: PTINVALID Position */ +#define TPI_DEVID_PTINVALID_Msk (0x1UL << TPI_DEVID_PTINVALID_Pos) /*!< TPI DEVID: PTINVALID Mask */ + +#define TPI_DEVID_FIFOSZ_Pos 6U /*!< TPI DEVID: FIFO depth Position */ +#define TPI_DEVID_FIFOSZ_Msk (0x7UL << TPI_DEVID_FIFOSZ_Pos) /*!< TPI DEVID: FIFO depth Mask */ + +/* TPI DEVTYPE Register Definitions */ +#define TPI_DEVTYPE_SubType_Pos 4U /*!< TPI DEVTYPE: SubType Position */ +#define TPI_DEVTYPE_SubType_Msk (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/) /*!< TPI DEVTYPE: SubType Mask */ + +#define TPI_DEVTYPE_MajorType_Pos 0U /*!< TPI DEVTYPE: MajorType Position */ +#define TPI_DEVTYPE_MajorType_Msk (0xFUL << TPI_DEVTYPE_MajorType_Pos) /*!< TPI DEVTYPE: MajorType Mask */ + +/*@}*/ /* end of group CMSIS_TPI */ + + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_MPU Memory Protection Unit (MPU) + \brief Type definitions for the Memory Protection Unit (MPU) + @{ + */ + +/** + \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) MPU Region Limit Address Register */ + __IOM uint32_t RBAR_A1; /*!< Offset: 0x014 (R/W) MPU Region Base Address Register Alias 1 */ + __IOM uint32_t RLAR_A1; /*!< Offset: 0x018 (R/W) MPU Region Limit Address Register Alias 1 */ + __IOM uint32_t RBAR_A2; /*!< Offset: 0x01C (R/W) MPU Region Base Address Register Alias 2 */ + __IOM uint32_t RLAR_A2; /*!< Offset: 0x020 (R/W) MPU Region Limit Address Register Alias 2 */ + __IOM uint32_t RBAR_A3; /*!< Offset: 0x024 (R/W) MPU Region Base Address Register Alias 3 */ + __IOM uint32_t RLAR_A3; /*!< Offset: 0x028 (R/W) MPU Region Limit Address Register Alias 3 */ + uint32_t RESERVED0[1]; + union { + __IOM uint32_t MAIR[2]; + struct { + __IOM uint32_t MAIR0; /*!< Offset: 0x030 (R/W) MPU Memory Attribute Indirection Register 0 */ + __IOM uint32_t MAIR1; /*!< Offset: 0x034 (R/W) MPU Memory Attribute Indirection Register 1 */ + }; + }; +} MPU_Type; + +#define MPU_TYPE_RALIASES 4U + +/* MPU Type Register Definitions */ +#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register Definitions */ +#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register Definitions */ +#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register Definitions */ +#define MPU_RBAR_BASE_Pos 5U /*!< MPU RBAR: BASE Position */ +#define MPU_RBAR_BASE_Msk (0x7FFFFFFUL << MPU_RBAR_BASE_Pos) /*!< MPU RBAR: BASE Mask */ + +#define MPU_RBAR_SH_Pos 3U /*!< MPU RBAR: SH Position */ +#define MPU_RBAR_SH_Msk (0x3UL << MPU_RBAR_SH_Pos) /*!< MPU RBAR: SH Mask */ + +#define MPU_RBAR_AP_Pos 1U /*!< MPU RBAR: AP Position */ +#define MPU_RBAR_AP_Msk (0x3UL << MPU_RBAR_AP_Pos) /*!< MPU RBAR: AP Mask */ + +#define MPU_RBAR_XN_Pos 0U /*!< MPU RBAR: XN Position */ +#define MPU_RBAR_XN_Msk (01UL /*<< MPU_RBAR_XN_Pos*/) /*!< MPU RBAR: XN Mask */ + +/* MPU Region Limit Address Register Definitions */ +#define MPU_RLAR_LIMIT_Pos 5U /*!< MPU RLAR: LIMIT Position */ +#define MPU_RLAR_LIMIT_Msk (0x7FFFFFFUL << MPU_RLAR_LIMIT_Pos) /*!< MPU RLAR: LIMIT Mask */ + +#define MPU_RLAR_AttrIndx_Pos 1U /*!< MPU RLAR: AttrIndx Position */ +#define MPU_RLAR_AttrIndx_Msk (0x7UL << MPU_RLAR_AttrIndx_Pos) /*!< MPU RLAR: AttrIndx Mask */ + +#define MPU_RLAR_EN_Pos 0U /*!< MPU RLAR: Region enable bit Position */ +#define MPU_RLAR_EN_Msk (1UL /*<< MPU_RLAR_EN_Pos*/) /*!< MPU RLAR: Region enable bit Disable Mask */ + +/* MPU Memory Attribute Indirection Register 0 Definitions */ +#define MPU_MAIR0_Attr3_Pos 24U /*!< MPU MAIR0: Attr3 Position */ +#define MPU_MAIR0_Attr3_Msk (0xFFUL << MPU_MAIR0_Attr3_Pos) /*!< MPU MAIR0: Attr3 Mask */ + +#define MPU_MAIR0_Attr2_Pos 16U /*!< MPU MAIR0: Attr2 Position */ +#define MPU_MAIR0_Attr2_Msk (0xFFUL << MPU_MAIR0_Attr2_Pos) /*!< MPU MAIR0: Attr2 Mask */ + +#define MPU_MAIR0_Attr1_Pos 8U /*!< MPU MAIR0: Attr1 Position */ +#define MPU_MAIR0_Attr1_Msk (0xFFUL << MPU_MAIR0_Attr1_Pos) /*!< MPU MAIR0: Attr1 Mask */ + +#define MPU_MAIR0_Attr0_Pos 0U /*!< MPU MAIR0: Attr0 Position */ +#define MPU_MAIR0_Attr0_Msk (0xFFUL /*<< MPU_MAIR0_Attr0_Pos*/) /*!< MPU MAIR0: Attr0 Mask */ + +/* MPU Memory Attribute Indirection Register 1 Definitions */ +#define MPU_MAIR1_Attr7_Pos 24U /*!< MPU MAIR1: Attr7 Position */ +#define MPU_MAIR1_Attr7_Msk (0xFFUL << MPU_MAIR1_Attr7_Pos) /*!< MPU MAIR1: Attr7 Mask */ + +#define MPU_MAIR1_Attr6_Pos 16U /*!< MPU MAIR1: Attr6 Position */ +#define MPU_MAIR1_Attr6_Msk (0xFFUL << MPU_MAIR1_Attr6_Pos) /*!< MPU MAIR1: Attr6 Mask */ + +#define MPU_MAIR1_Attr5_Pos 8U /*!< MPU MAIR1: Attr5 Position */ +#define MPU_MAIR1_Attr5_Msk (0xFFUL << MPU_MAIR1_Attr5_Pos) /*!< MPU MAIR1: Attr5 Mask */ + +#define MPU_MAIR1_Attr4_Pos 0U /*!< MPU MAIR1: Attr4 Position */ +#define MPU_MAIR1_Attr4_Msk (0xFFUL /*<< MPU_MAIR1_Attr4_Pos*/) /*!< MPU MAIR1: Attr4 Mask */ + +/*@} end of group CMSIS_MPU */ +#endif + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SAU Security Attribution Unit (SAU) + \brief Type definitions for the Security Attribution Unit (SAU) + @{ + */ + +/** + \brief Structure type to access the Security Attribution Unit (SAU). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SAU Control Register */ + __IM uint32_t TYPE; /*!< Offset: 0x004 (R/ ) SAU Type Register */ +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) SAU Region Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) SAU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) SAU Region Limit Address Register */ +#else + uint32_t RESERVED0[3]; +#endif + __IOM uint32_t SFSR; /*!< Offset: 0x014 (R/W) Secure Fault Status Register */ + __IOM uint32_t SFAR; /*!< Offset: 0x018 (R/W) Secure Fault Address Register */ +} SAU_Type; + +/* SAU Control Register Definitions */ +#define SAU_CTRL_ALLNS_Pos 1U /*!< SAU CTRL: ALLNS Position */ +#define SAU_CTRL_ALLNS_Msk (1UL << SAU_CTRL_ALLNS_Pos) /*!< SAU CTRL: ALLNS Mask */ + +#define SAU_CTRL_ENABLE_Pos 0U /*!< SAU CTRL: ENABLE Position */ +#define SAU_CTRL_ENABLE_Msk (1UL /*<< SAU_CTRL_ENABLE_Pos*/) /*!< SAU CTRL: ENABLE Mask */ + +/* SAU Type Register Definitions */ +#define SAU_TYPE_SREGION_Pos 0U /*!< SAU TYPE: SREGION Position */ +#define SAU_TYPE_SREGION_Msk (0xFFUL /*<< SAU_TYPE_SREGION_Pos*/) /*!< SAU TYPE: SREGION Mask */ + +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) +/* SAU Region Number Register Definitions */ +#define SAU_RNR_REGION_Pos 0U /*!< SAU RNR: REGION Position */ +#define SAU_RNR_REGION_Msk (0xFFUL /*<< SAU_RNR_REGION_Pos*/) /*!< SAU RNR: REGION Mask */ + +/* SAU Region Base Address Register Definitions */ +#define SAU_RBAR_BADDR_Pos 5U /*!< SAU RBAR: BADDR Position */ +#define SAU_RBAR_BADDR_Msk (0x7FFFFFFUL << SAU_RBAR_BADDR_Pos) /*!< SAU RBAR: BADDR Mask */ + +/* SAU Region Limit Address Register Definitions */ +#define SAU_RLAR_LADDR_Pos 5U /*!< SAU RLAR: LADDR Position */ +#define SAU_RLAR_LADDR_Msk (0x7FFFFFFUL << SAU_RLAR_LADDR_Pos) /*!< SAU RLAR: LADDR Mask */ + +#define SAU_RLAR_NSC_Pos 1U /*!< SAU RLAR: NSC Position */ +#define SAU_RLAR_NSC_Msk (1UL << SAU_RLAR_NSC_Pos) /*!< SAU RLAR: NSC Mask */ + +#define SAU_RLAR_ENABLE_Pos 0U /*!< SAU RLAR: ENABLE Position */ +#define SAU_RLAR_ENABLE_Msk (1UL /*<< SAU_RLAR_ENABLE_Pos*/) /*!< SAU RLAR: ENABLE Mask */ + +#endif /* defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) */ + +/* Secure Fault Status Register Definitions */ +#define SAU_SFSR_LSERR_Pos 7U /*!< SAU SFSR: LSERR Position */ +#define SAU_SFSR_LSERR_Msk (1UL << SAU_SFSR_LSERR_Pos) /*!< SAU SFSR: LSERR Mask */ + +#define SAU_SFSR_SFARVALID_Pos 6U /*!< SAU SFSR: SFARVALID Position */ +#define SAU_SFSR_SFARVALID_Msk (1UL << SAU_SFSR_SFARVALID_Pos) /*!< SAU SFSR: SFARVALID Mask */ + +#define SAU_SFSR_LSPERR_Pos 5U /*!< SAU SFSR: LSPERR Position */ +#define SAU_SFSR_LSPERR_Msk (1UL << SAU_SFSR_LSPERR_Pos) /*!< SAU SFSR: LSPERR Mask */ + +#define SAU_SFSR_INVTRAN_Pos 4U /*!< SAU SFSR: INVTRAN Position */ +#define SAU_SFSR_INVTRAN_Msk (1UL << SAU_SFSR_INVTRAN_Pos) /*!< SAU SFSR: INVTRAN Mask */ + +#define SAU_SFSR_AUVIOL_Pos 3U /*!< SAU SFSR: AUVIOL Position */ +#define SAU_SFSR_AUVIOL_Msk (1UL << SAU_SFSR_AUVIOL_Pos) /*!< SAU SFSR: AUVIOL Mask */ + +#define SAU_SFSR_INVER_Pos 2U /*!< SAU SFSR: INVER Position */ +#define SAU_SFSR_INVER_Msk (1UL << SAU_SFSR_INVER_Pos) /*!< SAU SFSR: INVER Mask */ + +#define SAU_SFSR_INVIS_Pos 1U /*!< SAU SFSR: INVIS Position */ +#define SAU_SFSR_INVIS_Msk (1UL << SAU_SFSR_INVIS_Pos) /*!< SAU SFSR: INVIS Mask */ + +#define SAU_SFSR_INVEP_Pos 0U /*!< SAU SFSR: INVEP Position */ +#define SAU_SFSR_INVEP_Msk (1UL /*<< SAU_SFSR_INVEP_Pos*/) /*!< SAU SFSR: INVEP Mask */ + +/*@} end of group CMSIS_SAU */ +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_FPU Floating Point Unit (FPU) + \brief Type definitions for the Floating Point Unit (FPU) + @{ + */ + +/** + \brief Structure type to access the Floating Point Unit (FPU). + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IOM uint32_t FPCCR; /*!< Offset: 0x004 (R/W) Floating-Point Context Control Register */ + __IOM uint32_t FPCAR; /*!< Offset: 0x008 (R/W) Floating-Point Context Address Register */ + __IOM uint32_t FPDSCR; /*!< Offset: 0x00C (R/W) Floating-Point Default Status Control Register */ + __IM uint32_t MVFR0; /*!< Offset: 0x010 (R/ ) Media and FP Feature Register 0 */ + __IM uint32_t MVFR1; /*!< Offset: 0x014 (R/ ) Media and FP Feature Register 1 */ +} FPU_Type; + +/* Floating-Point Context Control Register Definitions */ +#define FPU_FPCCR_ASPEN_Pos 31U /*!< FPCCR: ASPEN bit Position */ +#define FPU_FPCCR_ASPEN_Msk (1UL << FPU_FPCCR_ASPEN_Pos) /*!< FPCCR: ASPEN bit Mask */ + +#define FPU_FPCCR_LSPEN_Pos 30U /*!< FPCCR: LSPEN Position */ +#define FPU_FPCCR_LSPEN_Msk (1UL << FPU_FPCCR_LSPEN_Pos) /*!< FPCCR: LSPEN bit Mask */ + +#define FPU_FPCCR_LSPENS_Pos 29U /*!< FPCCR: LSPENS Position */ +#define FPU_FPCCR_LSPENS_Msk (1UL << FPU_FPCCR_LSPENS_Pos) /*!< FPCCR: LSPENS bit Mask */ + +#define FPU_FPCCR_CLRONRET_Pos 28U /*!< FPCCR: CLRONRET Position */ +#define FPU_FPCCR_CLRONRET_Msk (1UL << FPU_FPCCR_CLRONRET_Pos) /*!< FPCCR: CLRONRET bit Mask */ + +#define FPU_FPCCR_CLRONRETS_Pos 27U /*!< FPCCR: CLRONRETS Position */ +#define FPU_FPCCR_CLRONRETS_Msk (1UL << FPU_FPCCR_CLRONRETS_Pos) /*!< FPCCR: CLRONRETS bit Mask */ + +#define FPU_FPCCR_TS_Pos 26U /*!< FPCCR: TS Position */ +#define FPU_FPCCR_TS_Msk (1UL << FPU_FPCCR_TS_Pos) /*!< FPCCR: TS bit Mask */ + +#define FPU_FPCCR_UFRDY_Pos 10U /*!< FPCCR: UFRDY Position */ +#define FPU_FPCCR_UFRDY_Msk (1UL << FPU_FPCCR_UFRDY_Pos) /*!< FPCCR: UFRDY bit Mask */ + +#define FPU_FPCCR_SPLIMVIOL_Pos 9U /*!< FPCCR: SPLIMVIOL Position */ +#define FPU_FPCCR_SPLIMVIOL_Msk (1UL << FPU_FPCCR_SPLIMVIOL_Pos) /*!< FPCCR: SPLIMVIOL bit Mask */ + +#define FPU_FPCCR_MONRDY_Pos 8U /*!< FPCCR: MONRDY Position */ +#define FPU_FPCCR_MONRDY_Msk (1UL << FPU_FPCCR_MONRDY_Pos) /*!< FPCCR: MONRDY bit Mask */ + +#define FPU_FPCCR_SFRDY_Pos 7U /*!< FPCCR: SFRDY Position */ +#define FPU_FPCCR_SFRDY_Msk (1UL << FPU_FPCCR_SFRDY_Pos) /*!< FPCCR: SFRDY bit Mask */ + +#define FPU_FPCCR_BFRDY_Pos 6U /*!< FPCCR: BFRDY Position */ +#define FPU_FPCCR_BFRDY_Msk (1UL << FPU_FPCCR_BFRDY_Pos) /*!< FPCCR: BFRDY bit Mask */ + +#define FPU_FPCCR_MMRDY_Pos 5U /*!< FPCCR: MMRDY Position */ +#define FPU_FPCCR_MMRDY_Msk (1UL << FPU_FPCCR_MMRDY_Pos) /*!< FPCCR: MMRDY bit Mask */ + +#define FPU_FPCCR_HFRDY_Pos 4U /*!< FPCCR: HFRDY Position */ +#define FPU_FPCCR_HFRDY_Msk (1UL << FPU_FPCCR_HFRDY_Pos) /*!< FPCCR: HFRDY bit Mask */ + +#define FPU_FPCCR_THREAD_Pos 3U /*!< FPCCR: processor mode bit Position */ +#define FPU_FPCCR_THREAD_Msk (1UL << FPU_FPCCR_THREAD_Pos) /*!< FPCCR: processor mode active bit Mask */ + +#define FPU_FPCCR_S_Pos 2U /*!< FPCCR: Security status of the FP context bit Position */ +#define FPU_FPCCR_S_Msk (1UL << FPU_FPCCR_S_Pos) /*!< FPCCR: Security status of the FP context bit Mask */ + +#define FPU_FPCCR_USER_Pos 1U /*!< FPCCR: privilege level bit Position */ +#define FPU_FPCCR_USER_Msk (1UL << FPU_FPCCR_USER_Pos) /*!< FPCCR: privilege level bit Mask */ + +#define FPU_FPCCR_LSPACT_Pos 0U /*!< FPCCR: Lazy state preservation active bit Position */ +#define FPU_FPCCR_LSPACT_Msk (1UL /*<< FPU_FPCCR_LSPACT_Pos*/) /*!< FPCCR: Lazy state preservation active bit Mask */ + +/* Floating-Point Context Address Register Definitions */ +#define FPU_FPCAR_ADDRESS_Pos 3U /*!< FPCAR: ADDRESS bit Position */ +#define FPU_FPCAR_ADDRESS_Msk (0x1FFFFFFFUL << FPU_FPCAR_ADDRESS_Pos) /*!< FPCAR: ADDRESS bit Mask */ + +/* Floating-Point Default Status Control Register Definitions */ +#define FPU_FPDSCR_AHP_Pos 26U /*!< FPDSCR: AHP bit Position */ +#define FPU_FPDSCR_AHP_Msk (1UL << FPU_FPDSCR_AHP_Pos) /*!< FPDSCR: AHP bit Mask */ + +#define FPU_FPDSCR_DN_Pos 25U /*!< FPDSCR: DN bit Position */ +#define FPU_FPDSCR_DN_Msk (1UL << FPU_FPDSCR_DN_Pos) /*!< FPDSCR: DN bit Mask */ + +#define FPU_FPDSCR_FZ_Pos 24U /*!< FPDSCR: FZ bit Position */ +#define FPU_FPDSCR_FZ_Msk (1UL << FPU_FPDSCR_FZ_Pos) /*!< FPDSCR: FZ bit Mask */ + +#define FPU_FPDSCR_RMode_Pos 22U /*!< FPDSCR: RMode bit Position */ +#define FPU_FPDSCR_RMode_Msk (3UL << FPU_FPDSCR_RMode_Pos) /*!< FPDSCR: RMode bit Mask */ + +/* Media and FP Feature Register 0 Definitions */ +#define FPU_MVFR0_FP_rounding_modes_Pos 28U /*!< MVFR0: FP rounding modes bits Position */ +#define FPU_MVFR0_FP_rounding_modes_Msk (0xFUL << FPU_MVFR0_FP_rounding_modes_Pos) /*!< MVFR0: FP rounding modes bits Mask */ + +#define FPU_MVFR0_Short_vectors_Pos 24U /*!< MVFR0: Short vectors bits Position */ +#define FPU_MVFR0_Short_vectors_Msk (0xFUL << FPU_MVFR0_Short_vectors_Pos) /*!< MVFR0: Short vectors bits Mask */ + +#define FPU_MVFR0_Square_root_Pos 20U /*!< MVFR0: Square root bits Position */ +#define FPU_MVFR0_Square_root_Msk (0xFUL << FPU_MVFR0_Square_root_Pos) /*!< MVFR0: Square root bits Mask */ + +#define FPU_MVFR0_Divide_Pos 16U /*!< MVFR0: Divide bits Position */ +#define FPU_MVFR0_Divide_Msk (0xFUL << FPU_MVFR0_Divide_Pos) /*!< MVFR0: Divide bits Mask */ + +#define FPU_MVFR0_FP_excep_trapping_Pos 12U /*!< MVFR0: FP exception trapping bits Position */ +#define FPU_MVFR0_FP_excep_trapping_Msk (0xFUL << FPU_MVFR0_FP_excep_trapping_Pos) /*!< MVFR0: FP exception trapping bits Mask */ + +#define FPU_MVFR0_Double_precision_Pos 8U /*!< MVFR0: Double-precision bits Position */ +#define FPU_MVFR0_Double_precision_Msk (0xFUL << FPU_MVFR0_Double_precision_Pos) /*!< MVFR0: Double-precision bits Mask */ + +#define FPU_MVFR0_Single_precision_Pos 4U /*!< MVFR0: Single-precision bits Position */ +#define FPU_MVFR0_Single_precision_Msk (0xFUL << FPU_MVFR0_Single_precision_Pos) /*!< MVFR0: Single-precision bits Mask */ + +#define FPU_MVFR0_A_SIMD_registers_Pos 0U /*!< MVFR0: A_SIMD registers bits Position */ +#define FPU_MVFR0_A_SIMD_registers_Msk (0xFUL /*<< FPU_MVFR0_A_SIMD_registers_Pos*/) /*!< MVFR0: A_SIMD registers bits Mask */ + +/* Media and FP Feature Register 1 Definitions */ +#define FPU_MVFR1_FP_fused_MAC_Pos 28U /*!< MVFR1: FP fused MAC bits Position */ +#define FPU_MVFR1_FP_fused_MAC_Msk (0xFUL << FPU_MVFR1_FP_fused_MAC_Pos) /*!< MVFR1: FP fused MAC bits Mask */ + +#define FPU_MVFR1_FP_HPFP_Pos 24U /*!< MVFR1: FP HPFP bits Position */ +#define FPU_MVFR1_FP_HPFP_Msk (0xFUL << FPU_MVFR1_FP_HPFP_Pos) /*!< MVFR1: FP HPFP bits Mask */ + +#define FPU_MVFR1_D_NaN_mode_Pos 4U /*!< MVFR1: D_NaN mode bits Position */ +#define FPU_MVFR1_D_NaN_mode_Msk (0xFUL << FPU_MVFR1_D_NaN_mode_Pos) /*!< MVFR1: D_NaN mode bits Mask */ + +#define FPU_MVFR1_FtZ_mode_Pos 0U /*!< MVFR1: FtZ mode bits Position */ +#define FPU_MVFR1_FtZ_mode_Msk (0xFUL /*<< FPU_MVFR1_FtZ_mode_Pos*/) /*!< MVFR1: FtZ mode bits Mask */ + +/*@} end of group CMSIS_FPU */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Type definitions for the Core Debug Registers + @{ + */ + +/** + \brief Structure type to access the Core Debug Register (CoreDebug). + */ +typedef struct +{ + __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ + uint32_t RESERVED4[1U]; + __IOM uint32_t DAUTHCTRL; /*!< Offset: 0x014 (R/W) Debug Authentication Control Register */ + __IOM uint32_t DSCSR; /*!< Offset: 0x018 (R/W) Debug Security Control and Status Register */ +} CoreDebug_Type; + +/* Debug Halting Control and Status Register Definitions */ +#define CoreDebug_DHCSR_DBGKEY_Pos 16U /*!< CoreDebug DHCSR: DBGKEY Position */ +#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< CoreDebug DHCSR: DBGKEY Mask */ + +#define CoreDebug_DHCSR_S_RESTART_ST_Pos 26U /*!< CoreDebug DHCSR: S_RESTART_ST Position */ +#define CoreDebug_DHCSR_S_RESTART_ST_Msk (1UL << CoreDebug_DHCSR_S_RESTART_ST_Pos) /*!< CoreDebug DHCSR: S_RESTART_ST Mask */ + +#define CoreDebug_DHCSR_S_RESET_ST_Pos 25U /*!< CoreDebug DHCSR: S_RESET_ST Position */ +#define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< CoreDebug DHCSR: S_RESET_ST Mask */ + +#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24U /*!< CoreDebug DHCSR: S_RETIRE_ST Position */ +#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */ + +#define CoreDebug_DHCSR_S_LOCKUP_Pos 19U /*!< CoreDebug DHCSR: S_LOCKUP Position */ +#define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< CoreDebug DHCSR: S_LOCKUP Mask */ + +#define CoreDebug_DHCSR_S_SLEEP_Pos 18U /*!< CoreDebug DHCSR: S_SLEEP Position */ +#define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< CoreDebug DHCSR: S_SLEEP Mask */ + +#define CoreDebug_DHCSR_S_HALT_Pos 17U /*!< CoreDebug DHCSR: S_HALT Position */ +#define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< CoreDebug DHCSR: S_HALT Mask */ + +#define CoreDebug_DHCSR_S_REGRDY_Pos 16U /*!< CoreDebug DHCSR: S_REGRDY Position */ +#define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< CoreDebug DHCSR: S_REGRDY Mask */ + +#define CoreDebug_DHCSR_C_SNAPSTALL_Pos 5U /*!< CoreDebug DHCSR: C_SNAPSTALL Position */ +#define CoreDebug_DHCSR_C_SNAPSTALL_Msk (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos) /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */ + +#define CoreDebug_DHCSR_C_MASKINTS_Pos 3U /*!< CoreDebug DHCSR: C_MASKINTS Position */ +#define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< CoreDebug DHCSR: C_MASKINTS Mask */ + +#define CoreDebug_DHCSR_C_STEP_Pos 2U /*!< CoreDebug DHCSR: C_STEP Position */ +#define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< CoreDebug DHCSR: C_STEP Mask */ + +#define CoreDebug_DHCSR_C_HALT_Pos 1U /*!< CoreDebug DHCSR: C_HALT Position */ +#define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< CoreDebug DHCSR: C_HALT Mask */ + +#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0U /*!< CoreDebug DHCSR: C_DEBUGEN Position */ +#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/) /*!< CoreDebug DHCSR: C_DEBUGEN Mask */ + +/* Debug Core Register Selector Register Definitions */ +#define CoreDebug_DCRSR_REGWnR_Pos 16U /*!< CoreDebug DCRSR: REGWnR Position */ +#define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< CoreDebug DCRSR: REGWnR Mask */ + +#define CoreDebug_DCRSR_REGSEL_Pos 0U /*!< CoreDebug DCRSR: REGSEL Position */ +#define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/) /*!< CoreDebug DCRSR: REGSEL Mask */ + +/* Debug Exception and Monitor Control Register Definitions */ +#define CoreDebug_DEMCR_TRCENA_Pos 24U /*!< CoreDebug DEMCR: TRCENA Position */ +#define CoreDebug_DEMCR_TRCENA_Msk (1UL << CoreDebug_DEMCR_TRCENA_Pos) /*!< CoreDebug DEMCR: TRCENA Mask */ + +#define CoreDebug_DEMCR_MON_REQ_Pos 19U /*!< CoreDebug DEMCR: MON_REQ Position */ +#define CoreDebug_DEMCR_MON_REQ_Msk (1UL << CoreDebug_DEMCR_MON_REQ_Pos) /*!< CoreDebug DEMCR: MON_REQ Mask */ + +#define CoreDebug_DEMCR_MON_STEP_Pos 18U /*!< CoreDebug DEMCR: MON_STEP Position */ +#define CoreDebug_DEMCR_MON_STEP_Msk (1UL << CoreDebug_DEMCR_MON_STEP_Pos) /*!< CoreDebug DEMCR: MON_STEP Mask */ + +#define CoreDebug_DEMCR_MON_PEND_Pos 17U /*!< CoreDebug DEMCR: MON_PEND Position */ +#define CoreDebug_DEMCR_MON_PEND_Msk (1UL << CoreDebug_DEMCR_MON_PEND_Pos) /*!< CoreDebug DEMCR: MON_PEND Mask */ + +#define CoreDebug_DEMCR_MON_EN_Pos 16U /*!< CoreDebug DEMCR: MON_EN Position */ +#define CoreDebug_DEMCR_MON_EN_Msk (1UL << CoreDebug_DEMCR_MON_EN_Pos) /*!< CoreDebug DEMCR: MON_EN Mask */ + +#define CoreDebug_DEMCR_VC_HARDERR_Pos 10U /*!< CoreDebug DEMCR: VC_HARDERR Position */ +#define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< CoreDebug DEMCR: VC_HARDERR Mask */ + +#define CoreDebug_DEMCR_VC_INTERR_Pos 9U /*!< CoreDebug DEMCR: VC_INTERR Position */ +#define CoreDebug_DEMCR_VC_INTERR_Msk (1UL << CoreDebug_DEMCR_VC_INTERR_Pos) /*!< CoreDebug DEMCR: VC_INTERR Mask */ + +#define CoreDebug_DEMCR_VC_BUSERR_Pos 8U /*!< CoreDebug DEMCR: VC_BUSERR Position */ +#define CoreDebug_DEMCR_VC_BUSERR_Msk (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos) /*!< CoreDebug DEMCR: VC_BUSERR Mask */ + +#define CoreDebug_DEMCR_VC_STATERR_Pos 7U /*!< CoreDebug DEMCR: VC_STATERR Position */ +#define CoreDebug_DEMCR_VC_STATERR_Msk (1UL << CoreDebug_DEMCR_VC_STATERR_Pos) /*!< CoreDebug DEMCR: VC_STATERR Mask */ + +#define CoreDebug_DEMCR_VC_CHKERR_Pos 6U /*!< CoreDebug DEMCR: VC_CHKERR Position */ +#define CoreDebug_DEMCR_VC_CHKERR_Msk (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos) /*!< CoreDebug DEMCR: VC_CHKERR Mask */ + +#define CoreDebug_DEMCR_VC_NOCPERR_Pos 5U /*!< CoreDebug DEMCR: VC_NOCPERR Position */ +#define CoreDebug_DEMCR_VC_NOCPERR_Msk (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos) /*!< CoreDebug DEMCR: VC_NOCPERR Mask */ + +#define CoreDebug_DEMCR_VC_MMERR_Pos 4U /*!< CoreDebug DEMCR: VC_MMERR Position */ +#define CoreDebug_DEMCR_VC_MMERR_Msk (1UL << CoreDebug_DEMCR_VC_MMERR_Pos) /*!< CoreDebug DEMCR: VC_MMERR Mask */ + +#define CoreDebug_DEMCR_VC_CORERESET_Pos 0U /*!< CoreDebug DEMCR: VC_CORERESET Position */ +#define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/) /*!< CoreDebug DEMCR: VC_CORERESET Mask */ + +/* Debug Authentication Control Register Definitions */ +#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos 3U /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Position */ +#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos) /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Mask */ + +#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos 2U /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Position */ +#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Msk (1UL << CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos) /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Mask */ + +#define CoreDebug_DAUTHCTRL_INTSPIDEN_Pos 1U /*!< CoreDebug DAUTHCTRL: INTSPIDEN Position */ +#define CoreDebug_DAUTHCTRL_INTSPIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPIDEN_Pos) /*!< CoreDebug DAUTHCTRL: INTSPIDEN Mask */ + +#define CoreDebug_DAUTHCTRL_SPIDENSEL_Pos 0U /*!< CoreDebug DAUTHCTRL: SPIDENSEL Position */ +#define CoreDebug_DAUTHCTRL_SPIDENSEL_Msk (1UL /*<< CoreDebug_DAUTHCTRL_SPIDENSEL_Pos*/) /*!< CoreDebug DAUTHCTRL: SPIDENSEL Mask */ + +/* Debug Security Control and Status Register Definitions */ +#define CoreDebug_DSCSR_CDS_Pos 16U /*!< CoreDebug DSCSR: CDS Position */ +#define CoreDebug_DSCSR_CDS_Msk (1UL << CoreDebug_DSCSR_CDS_Pos) /*!< CoreDebug DSCSR: CDS Mask */ + +#define CoreDebug_DSCSR_SBRSEL_Pos 1U /*!< CoreDebug DSCSR: SBRSEL Position */ +#define CoreDebug_DSCSR_SBRSEL_Msk (1UL << CoreDebug_DSCSR_SBRSEL_Pos) /*!< CoreDebug DSCSR: SBRSEL Mask */ + +#define CoreDebug_DSCSR_SBRSELEN_Pos 0U /*!< CoreDebug DSCSR: SBRSELEN Position */ +#define CoreDebug_DSCSR_SBRSELEN_Msk (1UL /*<< CoreDebug_DSCSR_SBRSELEN_Pos*/) /*!< CoreDebug DSCSR: SBRSELEN Mask */ + +/*@} end of group CMSIS_CoreDebug */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_bitfield Core register bit field macros + \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk). + @{ + */ + +/** + \brief Mask and shift a bit field value for use in a register bit range. + \param[in] field Name of the register bit field. + \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk) + +/** + \brief Mask and shift a register value to extract a bit filed value. + \param[in] field Name of the register bit field. + \param[in] value Value of register. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos) + +/*@} end of group CMSIS_core_bitfield */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_base Core Definitions + \brief Definitions for base addresses, unions, and structures. + @{ + */ + +/* Memory mapping of Core Hardware */ + #define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ + #define ITM_BASE (0xE0000000UL) /*!< ITM Base Address */ + #define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */ + #define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */ + #define CoreDebug_BASE (0xE000EDF0UL) /*!< Core Debug Base Address */ + #define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ + #define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ + #define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + + #define SCnSCB ((SCnSCB_Type *) SCS_BASE ) /*!< System control Register not in SCB */ + #define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ + #define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ + #define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ + #define ITM ((ITM_Type *) ITM_BASE ) /*!< ITM configuration struct */ + #define DWT ((DWT_Type *) DWT_BASE ) /*!< DWT configuration struct */ + #define TPI ((TPI_Type *) TPI_BASE ) /*!< TPI configuration struct */ + #define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE ) /*!< Core Debug configuration struct */ + + #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ + #endif + + #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #define SAU_BASE (SCS_BASE + 0x0DD0UL) /*!< Security Attribution Unit */ + #define SAU ((SAU_Type *) SAU_BASE ) /*!< Security Attribution Unit */ + #endif + + #define FPU_BASE (SCS_BASE + 0x0F30UL) /*!< Floating Point Unit */ + #define FPU ((FPU_Type *) FPU_BASE ) /*!< Floating Point Unit */ + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #define SCS_BASE_NS (0xE002E000UL) /*!< System Control Space Base Address (non-secure address space) */ + #define CoreDebug_BASE_NS (0xE002EDF0UL) /*!< Core Debug Base Address (non-secure address space) */ + #define SysTick_BASE_NS (SCS_BASE_NS + 0x0010UL) /*!< SysTick Base Address (non-secure address space) */ + #define NVIC_BASE_NS (SCS_BASE_NS + 0x0100UL) /*!< NVIC Base Address (non-secure address space) */ + #define SCB_BASE_NS (SCS_BASE_NS + 0x0D00UL) /*!< System Control Block Base Address (non-secure address space) */ + + #define SCnSCB_NS ((SCnSCB_Type *) SCS_BASE_NS ) /*!< System control Register not in SCB(non-secure address space) */ + #define SCB_NS ((SCB_Type *) SCB_BASE_NS ) /*!< SCB configuration struct (non-secure address space) */ + #define SysTick_NS ((SysTick_Type *) SysTick_BASE_NS ) /*!< SysTick configuration struct (non-secure address space) */ + #define NVIC_NS ((NVIC_Type *) NVIC_BASE_NS ) /*!< NVIC configuration struct (non-secure address space) */ + #define CoreDebug_NS ((CoreDebug_Type *) CoreDebug_BASE_NS) /*!< Core Debug configuration struct (non-secure address space) */ + + #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE_NS (SCS_BASE_NS + 0x0D90UL) /*!< Memory Protection Unit (non-secure address space) */ + #define MPU_NS ((MPU_Type *) MPU_BASE_NS ) /*!< Memory Protection Unit (non-secure address space) */ + #endif + + #define FPU_BASE_NS (SCS_BASE_NS + 0x0F30UL) /*!< Floating Point Unit (non-secure address space) */ + #define FPU_NS ((FPU_Type *) FPU_BASE_NS ) /*!< Floating Point Unit (non-secure address space) */ + +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Debug Functions + - Core Register Access Functions + ******************************************************************************/ +/** + \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +*/ + + + +/* ########################## NVIC functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions NVIC Functions + \brief Functions that manage interrupts and exceptions via the NVIC. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping + #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ + #define NVIC_GetActive __NVIC_GetActive + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* Special LR values for Secure/Non-Secure call handling and exception handling */ + +/* Function Return Payload (from ARMv8-M Architecture Reference Manual) LR value on entry from Secure BLXNS */ +#define FNC_RETURN (0xFEFFFFFFUL) /* bit [0] ignored when processing a branch */ + +/* The following EXC_RETURN mask values are used to evaluate the LR on exception entry */ +#define EXC_RETURN_PREFIX (0xFF000000UL) /* bits [31:24] set to indicate an EXC_RETURN value */ +#define EXC_RETURN_S (0x00000040UL) /* bit [6] stack used to push registers: 0=Non-secure 1=Secure */ +#define EXC_RETURN_DCRS (0x00000020UL) /* bit [5] stacking rules for called registers: 0=skipped 1=saved */ +#define EXC_RETURN_FTYPE (0x00000010UL) /* bit [4] allocate stack for floating-point context: 0=done 1=skipped */ +#define EXC_RETURN_MODE (0x00000008UL) /* bit [3] processor mode for return: 0=Handler mode 1=Thread mode */ +#define EXC_RETURN_SPSEL (0x00000002UL) /* bit [1] stack pointer used to restore context: 0=MSP 1=PSP */ +#define EXC_RETURN_ES (0x00000001UL) /* bit [0] security state exception was taken to: 0=Non-secure 1=Secure */ + +/* Integrity Signature (from ARMv8-M Architecture Reference Manual) for exception context stacking */ +#if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) /* Value for processors with floating-point extension: */ +#define EXC_INTEGRITY_SIGNATURE (0xFEFA125AUL) /* bit [0] SFTC must match LR bit[4] EXC_RETURN_FTYPE */ +#else +#define EXC_INTEGRITY_SIGNATURE (0xFEFA125BUL) /* Value for processors without floating-point extension */ +#endif + + +/** + \brief Set Priority Grouping + \details Sets the priority grouping field using the required unlock sequence. + The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. + Only values from 0..7 are used. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + + reg_value = SCB->AIRCR; /* read old register configuration */ + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << 8U) ); /* Insert write key and priorty group */ + SCB->AIRCR = reg_value; +} + + +/** + \brief Get Priority Grouping + \details Reads the priority grouping field from the NVIC Interrupt Controller. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void) +{ + return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); +} + + +/** + \brief Enable Interrupt + \details Enables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt + \details Reads the active register in the NVIC and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Get Interrupt Target State + \details Reads the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + \return 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_GetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Target State + \details Sets the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_SetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] |= ((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Clear Interrupt Target State + \details Clears the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_ClearTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] &= ~((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every processor exception. + */ +__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IPR[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } + else + { + SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. + Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return(((uint32_t)NVIC->IPR[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return(((uint32_t)SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Encode Priority + \details Encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + +/** + \brief Decode Priority + \details Decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + VTOR must been relocated to SRAM before. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | + SCB_AIRCR_SYSRESETREQ_Msk ); /* Keep priority group unchanged */ + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Set Priority Grouping (non-secure) + \details Sets the non-secure priority grouping field when in secure state using the required unlock sequence. + The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. + Only values from 0..7 are used. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void TZ_NVIC_SetPriorityGrouping_NS(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + + reg_value = SCB_NS->AIRCR; /* read old register configuration */ + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << 8U) ); /* Insert write key and priorty group */ + SCB_NS->AIRCR = reg_value; +} + + +/** + \brief Get Priority Grouping (non-secure) + \details Reads the priority grouping field from the non-secure NVIC when in secure state. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPriorityGrouping_NS(void) +{ + return ((uint32_t)((SCB_NS->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); +} + + +/** + \brief Enable Interrupt (non-secure) + \details Enables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_EnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status (non-secure) + \details Returns a device specific interrupt enable status from the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetEnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt (non-secure) + \details Disables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_DisableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Pending Interrupt (non-secure) + \details Reads the NVIC pending register in the non-secure NVIC when in secure state and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt (non-secure) + \details Sets the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_SetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt (non-secure) + \details Clears the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_ClearPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt (non-secure) + \details Reads the active register in non-secure NVIC when in secure state and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetActive_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Priority (non-secure) + \details Sets the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every non-secure processor exception. + */ +__STATIC_INLINE void TZ_NVIC_SetPriority_NS(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->IPR[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } + else + { + SCB_NS->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + + +/** + \brief Get Interrupt Priority (non-secure) + \details Reads the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPriority_NS(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return(((uint32_t)NVIC_NS->IPR[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return(((uint32_t)SCB_NS->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS))); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) &&(__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_NVICFunctions */ + +/* ########################## MPU functions #################################### */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + +#include "mpu_armv8.h" + +#endif + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + uint32_t mvfr0; + + mvfr0 = FPU->MVFR0; + if ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x220U) + { + return 2U; /* Double + Single precision FPU */ + } + else if ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x020U) + { + return 1U; /* Single precision FPU */ + } + else + { + return 0U; /* No FPU */ + } +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + + + +/* ########################## SAU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SAUFunctions SAU Functions + \brief Functions that configure the SAU. + @{ + */ + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + +/** + \brief Enable SAU + \details Enables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Enable(void) +{ + SAU->CTRL |= (SAU_CTRL_ENABLE_Msk); +} + + + +/** + \brief Disable SAU + \details Disables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Disable(void) +{ + SAU->CTRL &= ~(SAU_CTRL_ENABLE_Msk); +} + +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_SAUFunctions */ + + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U) + +/** + \brief System Tick Configuration + \details Initializes the System Timer and its interrupt, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief System Tick Configuration (non-secure) + \details Initializes the non-secure System Timer and its interrupt when in secure state, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function TZ_SysTick_Config_NS is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + + */ +__STATIC_INLINE uint32_t TZ_SysTick_Config_NS(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick_NS->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + TZ_NVIC_SetPriority_NS (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick_NS->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick_NS->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + +/* ##################################### Debug In/Output function ########################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_core_DebugFunctions ITM Functions + \brief Functions that access the ITM debug interface. + @{ + */ + +extern volatile int32_t ITM_RxBuffer; /*!< External variable to receive characters. */ +#define ITM_RXBUFFER_EMPTY ((int32_t)0x5AA55AA5U) /*!< Value identifying \ref ITM_RxBuffer is ready for next character. */ + + +/** + \brief ITM Send Character + \details Transmits a character via the ITM channel 0, and + \li Just returns when no debugger is connected that has booked the output. + \li Is blocking when a debugger is connected, but the previous character sent has not been transmitted. + \param [in] ch Character to transmit. + \returns Character to transmit. + */ +__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch) +{ + if (((ITM->TCR & ITM_TCR_ITMENA_Msk) != 0UL) && /* ITM enabled */ + ((ITM->TER & 1UL ) != 0UL) ) /* ITM Port #0 enabled */ + { + while (ITM->PORT[0U].u32 == 0UL) + { + __NOP(); + } + ITM->PORT[0U].u8 = (uint8_t)ch; + } + return (ch); +} + + +/** + \brief ITM Receive Character + \details Inputs a character via the external variable \ref ITM_RxBuffer. + \return Received character. + \return -1 No character pending. + */ +__STATIC_INLINE int32_t ITM_ReceiveChar (void) +{ + int32_t ch = -1; /* no character available */ + + if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY) + { + ch = ITM_RxBuffer; + ITM_RxBuffer = ITM_RXBUFFER_EMPTY; /* ready for next character */ + } + + return (ch); +} + + +/** + \brief ITM Check Character + \details Checks whether a character is pending for reading in the variable \ref ITM_RxBuffer. + \return 0 No character available. + \return 1 Character available. + */ +__STATIC_INLINE int32_t ITM_CheckChar (void) +{ + + if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY) + { + return (0); /* no character available */ + } + else + { + return (1); /* character available */ + } +} + +/*@} end of CMSIS_core_DebugFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_ARMV8MML_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/Include/core_cm0.h b/Drivers/CMSIS/Include/core_cm0.h similarity index 100% rename from HAL_N_Middlewares/Drivers/CMSIS/Include/core_cm0.h rename to Drivers/CMSIS/Include/core_cm0.h diff --git a/HAL_N_Middlewares/Drivers/CMSIS/Include/core_cm0plus.h b/Drivers/CMSIS/Include/core_cm0plus.h similarity index 100% rename from HAL_N_Middlewares/Drivers/CMSIS/Include/core_cm0plus.h rename to Drivers/CMSIS/Include/core_cm0plus.h diff --git a/Drivers/CMSIS/Include/core_cm1.h b/Drivers/CMSIS/Include/core_cm1.h new file mode 100644 index 0000000..0ed678e --- /dev/null +++ b/Drivers/CMSIS/Include/core_cm1.h @@ -0,0 +1,976 @@ +/**************************************************************************//** + * @file core_cm1.h + * @brief CMSIS Cortex-M1 Core Peripheral Access Layer Header File + * @version V1.0.0 + * @date 23. July 2018 + ******************************************************************************/ +/* + * Copyright (c) 2009-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef __CORE_CM1_H_GENERIC +#define __CORE_CM1_H_GENERIC + +#include + +#ifdef __cplusplus + extern "C" { +#endif + +/** + \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + CMSIS violates the following MISRA-C:2004 rules: + + \li Required Rule 8.5, object/function definition in header file.
+ Function definitions in header files are used to allow 'inlining'. + + \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
+ Unions are used for effective representation of core registers. + + \li Advisory Rule 19.7, Function-like macro defined.
+ Function-like macros are used to allow more efficient code. + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** + \ingroup Cortex_M1 + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS CM1 definitions */ +#define __CM1_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __CM1_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __CM1_CMSIS_VERSION ((__CM1_CMSIS_VERSION_MAIN << 16U) | \ + __CM1_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_M (1U) /*!< Cortex-M Core */ + +/** __FPU_USED indicates whether an FPU is used or not. + This core does not support an FPU at all +*/ +#define __FPU_USED 0U + +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined __ARM_PCS_VFP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TI_ARM__ ) + #if defined __TI_VFP_SUPPORT__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM1_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_CM1_H_DEPENDANT +#define __CORE_CM1_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __CM1_REV + #define __CM1_REV 0x0100U + #warning "__CM1_REV not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 2U + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0U + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +/** + \defgroup CMSIS_glob_defs CMSIS Global Defines + + IO Type Qualifiers are used + \li to specify the access to peripheral variables. + \li for automatic generation of peripheral register debug information. +*/ +#ifdef __cplusplus + #define __I volatile /*!< Defines 'read only' permissions */ +#else + #define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +/* following defines should be used for structure members */ +#define __IM volatile const /*! Defines 'read only' structure member permissions */ +#define __OM volatile /*! Defines 'write only' structure member permissions */ +#define __IOM volatile /*! Defines 'read / write' structure member permissions */ + +/*@} end of group Cortex_M1 */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + ******************************************************************************/ +/** + \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for Cortex-M processor based devices. +*/ + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CORE Status and Control Registers + \brief Core Register type definitions. + @{ + */ + +/** + \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { + uint32_t _reserved0:28; /*!< bit: 0..27 Reserved */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + +/* APSR Register Definitions */ +#define APSR_N_Pos 31U /*!< APSR: N Position */ +#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */ + +#define APSR_Z_Pos 30U /*!< APSR: Z Position */ +#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */ + +#define APSR_C_Pos 29U /*!< APSR: C Position */ +#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */ + +#define APSR_V_Pos 28U /*!< APSR: V Position */ +#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */ + + +/** + \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + +/* IPSR Register Definitions */ +#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */ +#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */ + + +/** + \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:15; /*!< bit: 9..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ + uint32_t _reserved1:3; /*!< bit: 25..27 Reserved */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + +/* xPSR Register Definitions */ +#define xPSR_N_Pos 31U /*!< xPSR: N Position */ +#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */ + +#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */ +#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */ + +#define xPSR_C_Pos 29U /*!< xPSR: C Position */ +#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */ + +#define xPSR_V_Pos 28U /*!< xPSR: V Position */ +#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */ +#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */ + + +/** + \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t _reserved0:1; /*!< bit: 0 Reserved */ + uint32_t SPSEL:1; /*!< bit: 1 Stack to be used */ + uint32_t _reserved1:30; /*!< bit: 2..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ + +/*@} end of group CMSIS_CORE */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + \brief Type definitions for the NVIC Registers + @{ + */ + +/** + \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IOM uint32_t ISER[1U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[31U]; + __IOM uint32_t ICER[1U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[31U]; + __IOM uint32_t ISPR[1U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[31U]; + __IOM uint32_t ICPR[1U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[31U]; + uint32_t RESERVED4[64U]; + __IOM uint32_t IP[8U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register */ +} NVIC_Type; + +/*@} end of group CMSIS_NVIC */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCB System Control Block (SCB) + \brief Type definitions for the System Control Block Registers + @{ + */ + +/** + \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ + uint32_t RESERVED0; + __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + uint32_t RESERVED1; + __IOM uint32_t SHP[2U]; /*!< Offset: 0x01C (R/W) System Handlers Priority Registers. [0] is RESERVED */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_NMIPENDSET_Pos 31U /*!< SCB ICSR: NMIPENDSET Position */ +#define SCB_ICSR_NMIPENDSET_Msk (1UL << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB ICSR: NMIPENDSET Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */ + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_STKALIGN_Pos 9U /*!< SCB CCR: STKALIGN Position */ +#define SCB_CCR_STKALIGN_Msk (1UL << SCB_CCR_STKALIGN_Pos) /*!< SCB CCR: STKALIGN Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB) + \brief Type definitions for the System Control and ID Register not in the SCB + @{ + */ + +/** + \brief Structure type to access the System Control and ID Register not in the SCB. + */ +typedef struct +{ + uint32_t RESERVED0[2U]; + __IOM uint32_t ACTLR; /*!< Offset: 0x008 (R/W) Auxiliary Control Register */ +} SCnSCB_Type; + +/* Auxiliary Control Register Definitions */ +#define SCnSCB_ACTLR_ITCMUAEN_Pos 4U /*!< ACTLR: Instruction TCM Upper Alias Enable Position */ +#define SCnSCB_ACTLR_ITCMUAEN_Msk (1UL << SCnSCB_ACTLR_ITCMUAEN_Pos) /*!< ACTLR: Instruction TCM Upper Alias Enable Mask */ + +#define SCnSCB_ACTLR_ITCMLAEN_Pos 3U /*!< ACTLR: Instruction TCM Lower Alias Enable Position */ +#define SCnSCB_ACTLR_ITCMLAEN_Msk (1UL << SCnSCB_ACTLR_ITCMLAEN_Pos) /*!< ACTLR: Instruction TCM Lower Alias Enable Mask */ + +/*@} end of group CMSIS_SCnotSCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick System Tick Timer (SysTick) + \brief Type definitions for the System Timer Registers. + @{ + */ + +/** + \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Cortex-M1 Core Debug Registers (DCB registers, SHCSR, and DFSR) are only accessible over DAP and not via processor. + Therefore they are not covered by the Cortex-M1 header file. + @{ + */ +/*@} end of group CMSIS_CoreDebug */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_bitfield Core register bit field macros + \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk). + @{ + */ + +/** + \brief Mask and shift a bit field value for use in a register bit range. + \param[in] field Name of the register bit field. + \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk) + +/** + \brief Mask and shift a register value to extract a bit filed value. + \param[in] field Name of the register bit field. + \param[in] value Value of register. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos) + +/*@} end of group CMSIS_core_bitfield */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_base Core Definitions + \brief Definitions for base addresses, unions, and structures. + @{ + */ + +/* Memory mapping of Core Hardware */ +#define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ +#define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ +#define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ +#define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + +#define SCnSCB ((SCnSCB_Type *) SCS_BASE ) /*!< System control Register not in SCB */ +#define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ +#define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ +#define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ + + +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Register Access Functions + ******************************************************************************/ +/** + \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +*/ + + + +/* ########################## NVIC functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions NVIC Functions + \brief Functions that manage interrupts and exceptions via the NVIC. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping + #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ +/*#define NVIC_GetActive __NVIC_GetActive not available for Cortex-M1 */ + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* The following EXC_RETURN values are saved the LR on exception entry */ +#define EXC_RETURN_HANDLER (0xFFFFFFF1UL) /* return to Handler mode, uses MSP after return */ +#define EXC_RETURN_THREAD_MSP (0xFFFFFFF9UL) /* return to Thread mode, uses MSP after return */ +#define EXC_RETURN_THREAD_PSP (0xFFFFFFFDUL) /* return to Thread mode, uses PSP after return */ + + +/* Interrupt Priorities are WORD accessible only under Armv6-M */ +/* The following MACROS handle generation of the register offset and byte masks */ +#define _BIT_SHIFT(IRQn) ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL) +#define _SHP_IDX(IRQn) ( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >> 2UL) ) +#define _IP_IDX(IRQn) ( (((uint32_t)(int32_t)(IRQn)) >> 2UL) ) + +#define __NVIC_SetPriorityGrouping(X) (void)(X) +#define __NVIC_GetPriorityGrouping() (0U) + +/** + \brief Enable Interrupt + \details Enables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every processor exception. + */ +__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IP[_IP_IDX(IRQn)] = ((uint32_t)(NVIC->IP[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } + else + { + SCB->SHP[_SHP_IDX(IRQn)] = ((uint32_t)(SCB->SHP[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. + Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IP[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return((uint32_t)(((SCB->SHP[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Encode Priority + \details Encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + +/** + \brief Decode Priority + \details Decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + Address 0 must be mapped to SRAM. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ + uint32_t *vectors = (uint32_t *)0x0U; + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ + uint32_t *vectors = (uint32_t *)0x0U; + return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = ((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + SCB_AIRCR_SYSRESETREQ_Msk); + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +/*@} end of CMSIS_Core_NVICFunctions */ + + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + return 0U; /* No FPU */ +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U) + +/** + \brief System Tick Configuration + \details Initializes the System Timer and its interrupt, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM1_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/Drivers/CMSIS/Include/core_cm23.h b/Drivers/CMSIS/Include/core_cm23.h new file mode 100644 index 0000000..acbc5df --- /dev/null +++ b/Drivers/CMSIS/Include/core_cm23.h @@ -0,0 +1,1993 @@ +/**************************************************************************//** + * @file core_cm23.h + * @brief CMSIS Cortex-M23 Core Peripheral Access Layer Header File + * @version V5.0.7 + * @date 22. June 2018 + ******************************************************************************/ +/* + * Copyright (c) 2009-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef __CORE_CM23_H_GENERIC +#define __CORE_CM23_H_GENERIC + +#include + +#ifdef __cplusplus + extern "C" { +#endif + +/** + \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + CMSIS violates the following MISRA-C:2004 rules: + + \li Required Rule 8.5, object/function definition in header file.
+ Function definitions in header files are used to allow 'inlining'. + + \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
+ Unions are used for effective representation of core registers. + + \li Advisory Rule 19.7, Function-like macro defined.
+ Function-like macros are used to allow more efficient code. + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** + \ingroup Cortex_M23 + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS definitions */ +#define __CM23_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __CM23_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __CM23_CMSIS_VERSION ((__CM23_CMSIS_VERSION_MAIN << 16U) | \ + __CM23_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_M (23U) /*!< Cortex-M Core */ + +/** __FPU_USED indicates whether an FPU is used or not. + This core does not support an FPU at all +*/ +#define __FPU_USED 0U + +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined __ARM_PCS_VFP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TI_ARM__ ) + #if defined __TI_VFP_SUPPORT__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM23_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_CM23_H_DEPENDANT +#define __CORE_CM23_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __CM23_REV + #define __CM23_REV 0x0000U + #warning "__CM23_REV not defined in device header file; using default!" + #endif + + #ifndef __FPU_PRESENT + #define __FPU_PRESENT 0U + #warning "__FPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0U + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __SAUREGION_PRESENT + #define __SAUREGION_PRESENT 0U + #warning "__SAUREGION_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __VTOR_PRESENT + #define __VTOR_PRESENT 0U + #warning "__VTOR_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 2U + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0U + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif + + #ifndef __ETM_PRESENT + #define __ETM_PRESENT 0U + #warning "__ETM_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __MTB_PRESENT + #define __MTB_PRESENT 0U + #warning "__MTB_PRESENT not defined in device header file; using default!" + #endif + +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +/** + \defgroup CMSIS_glob_defs CMSIS Global Defines + + IO Type Qualifiers are used + \li to specify the access to peripheral variables. + \li for automatic generation of peripheral register debug information. +*/ +#ifdef __cplusplus + #define __I volatile /*!< Defines 'read only' permissions */ +#else + #define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +/* following defines should be used for structure members */ +#define __IM volatile const /*! Defines 'read only' structure member permissions */ +#define __OM volatile /*! Defines 'write only' structure member permissions */ +#define __IOM volatile /*! Defines 'read / write' structure member permissions */ + +/*@} end of group Cortex_M23 */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core Debug Register + - Core MPU Register + - Core SAU Register + ******************************************************************************/ +/** + \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for Cortex-M processor based devices. +*/ + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CORE Status and Control Registers + \brief Core Register type definitions. + @{ + */ + +/** + \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { + uint32_t _reserved0:28; /*!< bit: 0..27 Reserved */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + +/* APSR Register Definitions */ +#define APSR_N_Pos 31U /*!< APSR: N Position */ +#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */ + +#define APSR_Z_Pos 30U /*!< APSR: Z Position */ +#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */ + +#define APSR_C_Pos 29U /*!< APSR: C Position */ +#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */ + +#define APSR_V_Pos 28U /*!< APSR: V Position */ +#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */ + + +/** + \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + +/* IPSR Register Definitions */ +#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */ +#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */ + + +/** + \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:15; /*!< bit: 9..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ + uint32_t _reserved1:3; /*!< bit: 25..27 Reserved */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + +/* xPSR Register Definitions */ +#define xPSR_N_Pos 31U /*!< xPSR: N Position */ +#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */ + +#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */ +#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */ + +#define xPSR_C_Pos 29U /*!< xPSR: C Position */ +#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */ + +#define xPSR_V_Pos 28U /*!< xPSR: V Position */ +#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */ +#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */ + + +/** + \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + uint32_t SPSEL:1; /*!< bit: 1 Stack-pointer select */ + uint32_t _reserved1:30; /*!< bit: 2..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ + +#define CONTROL_nPRIV_Pos 0U /*!< CONTROL: nPRIV Position */ +#define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONTROL: nPRIV Mask */ + +/*@} end of group CMSIS_CORE */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + \brief Type definitions for the NVIC Registers + @{ + */ + +/** + \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IOM uint32_t ISER[16U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[16U]; + __IOM uint32_t ICER[16U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[16U]; + __IOM uint32_t ISPR[16U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[16U]; + __IOM uint32_t ICPR[16U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[16U]; + __IOM uint32_t IABR[16U]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ + uint32_t RESERVED4[16U]; + __IOM uint32_t ITNS[16U]; /*!< Offset: 0x280 (R/W) Interrupt Non-Secure State Register */ + uint32_t RESERVED5[16U]; + __IOM uint32_t IPR[124U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register */ +} NVIC_Type; + +/*@} end of group CMSIS_NVIC */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCB System Control Block (SCB) + \brief Type definitions for the System Control Block Registers + @{ + */ + +/** + \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) + __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ +#else + uint32_t RESERVED0; +#endif + __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + uint32_t RESERVED1; + __IOM uint32_t SHPR[2U]; /*!< Offset: 0x01C (R/W) System Handlers Priority Registers. [0] is RESERVED */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_PENDNMISET_Pos 31U /*!< SCB ICSR: PENDNMISET Position */ +#define SCB_ICSR_PENDNMISET_Msk (1UL << SCB_ICSR_PENDNMISET_Pos) /*!< SCB ICSR: PENDNMISET Mask */ + +#define SCB_ICSR_NMIPENDSET_Pos SCB_ICSR_PENDNMISET_Pos /*!< SCB ICSR: NMIPENDSET Position, backward compatibility */ +#define SCB_ICSR_NMIPENDSET_Msk SCB_ICSR_PENDNMISET_Msk /*!< SCB ICSR: NMIPENDSET Mask, backward compatibility */ + +#define SCB_ICSR_PENDNMICLR_Pos 30U /*!< SCB ICSR: PENDNMICLR Position */ +#define SCB_ICSR_PENDNMICLR_Msk (1UL << SCB_ICSR_PENDNMICLR_Pos) /*!< SCB ICSR: PENDNMICLR Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_STTNS_Pos 24U /*!< SCB ICSR: STTNS Position (Security Extension) */ +#define SCB_ICSR_STTNS_Msk (1UL << SCB_ICSR_STTNS_Pos) /*!< SCB ICSR: STTNS Mask (Security Extension) */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_RETTOBASE_Pos 11U /*!< SCB ICSR: RETTOBASE Position */ +#define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */ + +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) +/* SCB Vector Table Offset Register Definitions */ +#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ +#endif + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_PRIS_Pos 14U /*!< SCB AIRCR: PRIS Position */ +#define SCB_AIRCR_PRIS_Msk (1UL << SCB_AIRCR_PRIS_Pos) /*!< SCB AIRCR: PRIS Mask */ + +#define SCB_AIRCR_BFHFNMINS_Pos 13U /*!< SCB AIRCR: BFHFNMINS Position */ +#define SCB_AIRCR_BFHFNMINS_Msk (1UL << SCB_AIRCR_BFHFNMINS_Pos) /*!< SCB AIRCR: BFHFNMINS Mask */ + +#define SCB_AIRCR_SYSRESETREQS_Pos 3U /*!< SCB AIRCR: SYSRESETREQS Position */ +#define SCB_AIRCR_SYSRESETREQS_Msk (1UL << SCB_AIRCR_SYSRESETREQS_Pos) /*!< SCB AIRCR: SYSRESETREQS Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEPS_Pos 3U /*!< SCB SCR: SLEEPDEEPS Position */ +#define SCB_SCR_SLEEPDEEPS_Msk (1UL << SCB_SCR_SLEEPDEEPS_Pos) /*!< SCB SCR: SLEEPDEEPS Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_BP_Pos 18U /*!< SCB CCR: BP Position */ +#define SCB_CCR_BP_Msk (1UL << SCB_CCR_BP_Pos) /*!< SCB CCR: BP Mask */ + +#define SCB_CCR_IC_Pos 17U /*!< SCB CCR: IC Position */ +#define SCB_CCR_IC_Msk (1UL << SCB_CCR_IC_Pos) /*!< SCB CCR: IC Mask */ + +#define SCB_CCR_DC_Pos 16U /*!< SCB CCR: DC Position */ +#define SCB_CCR_DC_Msk (1UL << SCB_CCR_DC_Pos) /*!< SCB CCR: DC Mask */ + +#define SCB_CCR_STKOFHFNMIGN_Pos 10U /*!< SCB CCR: STKOFHFNMIGN Position */ +#define SCB_CCR_STKOFHFNMIGN_Msk (1UL << SCB_CCR_STKOFHFNMIGN_Pos) /*!< SCB CCR: STKOFHFNMIGN Mask */ + +#define SCB_CCR_BFHFNMIGN_Pos 8U /*!< SCB CCR: BFHFNMIGN Position */ +#define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ + +#define SCB_CCR_DIV_0_TRP_Pos 4U /*!< SCB CCR: DIV_0_TRP Position */ +#define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +#define SCB_CCR_USERSETMPEND_Pos 1U /*!< SCB CCR: USERSETMPEND Position */ +#define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_HARDFAULTPENDED_Pos 21U /*!< SCB SHCSR: HARDFAULTPENDED Position */ +#define SCB_SHCSR_HARDFAULTPENDED_Msk (1UL << SCB_SHCSR_HARDFAULTPENDED_Pos) /*!< SCB SHCSR: HARDFAULTPENDED Mask */ + +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +#define SCB_SHCSR_SYSTICKACT_Pos 11U /*!< SCB SHCSR: SYSTICKACT Position */ +#define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ + +#define SCB_SHCSR_PENDSVACT_Pos 10U /*!< SCB SHCSR: PENDSVACT Position */ +#define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ + +#define SCB_SHCSR_SVCALLACT_Pos 7U /*!< SCB SHCSR: SVCALLACT Position */ +#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ + +#define SCB_SHCSR_NMIACT_Pos 5U /*!< SCB SHCSR: NMIACT Position */ +#define SCB_SHCSR_NMIACT_Msk (1UL << SCB_SHCSR_NMIACT_Pos) /*!< SCB SHCSR: NMIACT Mask */ + +#define SCB_SHCSR_HARDFAULTACT_Pos 2U /*!< SCB SHCSR: HARDFAULTACT Position */ +#define SCB_SHCSR_HARDFAULTACT_Msk (1UL << SCB_SHCSR_HARDFAULTACT_Pos) /*!< SCB SHCSR: HARDFAULTACT Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick System Tick Timer (SysTick) + \brief Type definitions for the System Timer Registers. + @{ + */ + +/** + \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DWT Data Watchpoint and Trace (DWT) + \brief Type definitions for the Data Watchpoint and Trace (DWT) + @{ + */ + +/** + \brief Structure type to access the Data Watchpoint and Trace Register (DWT). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */ + uint32_t RESERVED0[6U]; + __IM uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register */ + __IOM uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */ + uint32_t RESERVED1[1U]; + __IOM uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */ + uint32_t RESERVED2[1U]; + __IOM uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */ + uint32_t RESERVED3[1U]; + __IOM uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */ + uint32_t RESERVED4[1U]; + __IOM uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */ + uint32_t RESERVED5[1U]; + __IOM uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */ + uint32_t RESERVED6[1U]; + __IOM uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */ + uint32_t RESERVED7[1U]; + __IOM uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */ + uint32_t RESERVED8[1U]; + __IOM uint32_t COMP4; /*!< Offset: 0x060 (R/W) Comparator Register 4 */ + uint32_t RESERVED9[1U]; + __IOM uint32_t FUNCTION4; /*!< Offset: 0x068 (R/W) Function Register 4 */ + uint32_t RESERVED10[1U]; + __IOM uint32_t COMP5; /*!< Offset: 0x070 (R/W) Comparator Register 5 */ + uint32_t RESERVED11[1U]; + __IOM uint32_t FUNCTION5; /*!< Offset: 0x078 (R/W) Function Register 5 */ + uint32_t RESERVED12[1U]; + __IOM uint32_t COMP6; /*!< Offset: 0x080 (R/W) Comparator Register 6 */ + uint32_t RESERVED13[1U]; + __IOM uint32_t FUNCTION6; /*!< Offset: 0x088 (R/W) Function Register 6 */ + uint32_t RESERVED14[1U]; + __IOM uint32_t COMP7; /*!< Offset: 0x090 (R/W) Comparator Register 7 */ + uint32_t RESERVED15[1U]; + __IOM uint32_t FUNCTION7; /*!< Offset: 0x098 (R/W) Function Register 7 */ + uint32_t RESERVED16[1U]; + __IOM uint32_t COMP8; /*!< Offset: 0x0A0 (R/W) Comparator Register 8 */ + uint32_t RESERVED17[1U]; + __IOM uint32_t FUNCTION8; /*!< Offset: 0x0A8 (R/W) Function Register 8 */ + uint32_t RESERVED18[1U]; + __IOM uint32_t COMP9; /*!< Offset: 0x0B0 (R/W) Comparator Register 9 */ + uint32_t RESERVED19[1U]; + __IOM uint32_t FUNCTION9; /*!< Offset: 0x0B8 (R/W) Function Register 9 */ + uint32_t RESERVED20[1U]; + __IOM uint32_t COMP10; /*!< Offset: 0x0C0 (R/W) Comparator Register 10 */ + uint32_t RESERVED21[1U]; + __IOM uint32_t FUNCTION10; /*!< Offset: 0x0C8 (R/W) Function Register 10 */ + uint32_t RESERVED22[1U]; + __IOM uint32_t COMP11; /*!< Offset: 0x0D0 (R/W) Comparator Register 11 */ + uint32_t RESERVED23[1U]; + __IOM uint32_t FUNCTION11; /*!< Offset: 0x0D8 (R/W) Function Register 11 */ + uint32_t RESERVED24[1U]; + __IOM uint32_t COMP12; /*!< Offset: 0x0E0 (R/W) Comparator Register 12 */ + uint32_t RESERVED25[1U]; + __IOM uint32_t FUNCTION12; /*!< Offset: 0x0E8 (R/W) Function Register 12 */ + uint32_t RESERVED26[1U]; + __IOM uint32_t COMP13; /*!< Offset: 0x0F0 (R/W) Comparator Register 13 */ + uint32_t RESERVED27[1U]; + __IOM uint32_t FUNCTION13; /*!< Offset: 0x0F8 (R/W) Function Register 13 */ + uint32_t RESERVED28[1U]; + __IOM uint32_t COMP14; /*!< Offset: 0x100 (R/W) Comparator Register 14 */ + uint32_t RESERVED29[1U]; + __IOM uint32_t FUNCTION14; /*!< Offset: 0x108 (R/W) Function Register 14 */ + uint32_t RESERVED30[1U]; + __IOM uint32_t COMP15; /*!< Offset: 0x110 (R/W) Comparator Register 15 */ + uint32_t RESERVED31[1U]; + __IOM uint32_t FUNCTION15; /*!< Offset: 0x118 (R/W) Function Register 15 */ +} DWT_Type; + +/* DWT Control Register Definitions */ +#define DWT_CTRL_NUMCOMP_Pos 28U /*!< DWT CTRL: NUMCOMP Position */ +#define DWT_CTRL_NUMCOMP_Msk (0xFUL << DWT_CTRL_NUMCOMP_Pos) /*!< DWT CTRL: NUMCOMP Mask */ + +#define DWT_CTRL_NOTRCPKT_Pos 27U /*!< DWT CTRL: NOTRCPKT Position */ +#define DWT_CTRL_NOTRCPKT_Msk (0x1UL << DWT_CTRL_NOTRCPKT_Pos) /*!< DWT CTRL: NOTRCPKT Mask */ + +#define DWT_CTRL_NOEXTTRIG_Pos 26U /*!< DWT CTRL: NOEXTTRIG Position */ +#define DWT_CTRL_NOEXTTRIG_Msk (0x1UL << DWT_CTRL_NOEXTTRIG_Pos) /*!< DWT CTRL: NOEXTTRIG Mask */ + +#define DWT_CTRL_NOCYCCNT_Pos 25U /*!< DWT CTRL: NOCYCCNT Position */ +#define DWT_CTRL_NOCYCCNT_Msk (0x1UL << DWT_CTRL_NOCYCCNT_Pos) /*!< DWT CTRL: NOCYCCNT Mask */ + +#define DWT_CTRL_NOPRFCNT_Pos 24U /*!< DWT CTRL: NOPRFCNT Position */ +#define DWT_CTRL_NOPRFCNT_Msk (0x1UL << DWT_CTRL_NOPRFCNT_Pos) /*!< DWT CTRL: NOPRFCNT Mask */ + +/* DWT Comparator Function Register Definitions */ +#define DWT_FUNCTION_ID_Pos 27U /*!< DWT FUNCTION: ID Position */ +#define DWT_FUNCTION_ID_Msk (0x1FUL << DWT_FUNCTION_ID_Pos) /*!< DWT FUNCTION: ID Mask */ + +#define DWT_FUNCTION_MATCHED_Pos 24U /*!< DWT FUNCTION: MATCHED Position */ +#define DWT_FUNCTION_MATCHED_Msk (0x1UL << DWT_FUNCTION_MATCHED_Pos) /*!< DWT FUNCTION: MATCHED Mask */ + +#define DWT_FUNCTION_DATAVSIZE_Pos 10U /*!< DWT FUNCTION: DATAVSIZE Position */ +#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */ + +#define DWT_FUNCTION_ACTION_Pos 4U /*!< DWT FUNCTION: ACTION Position */ +#define DWT_FUNCTION_ACTION_Msk (0x3UL << DWT_FUNCTION_ACTION_Pos) /*!< DWT FUNCTION: ACTION Mask */ + +#define DWT_FUNCTION_MATCH_Pos 0U /*!< DWT FUNCTION: MATCH Position */ +#define DWT_FUNCTION_MATCH_Msk (0xFUL /*<< DWT_FUNCTION_MATCH_Pos*/) /*!< DWT FUNCTION: MATCH Mask */ + +/*@}*/ /* end of group CMSIS_DWT */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_TPI Trace Port Interface (TPI) + \brief Type definitions for the Trace Port Interface (TPI) + @{ + */ + +/** + \brief Structure type to access the Trace Port Interface Register (TPI). + */ +typedef struct +{ + __IM uint32_t SSPSR; /*!< Offset: 0x000 (R/ ) Supported Parallel Port Size Register */ + __IOM uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Size Register */ + uint32_t RESERVED0[2U]; + __IOM uint32_t ACPR; /*!< Offset: 0x010 (R/W) Asynchronous Clock Prescaler Register */ + uint32_t RESERVED1[55U]; + __IOM uint32_t SPPR; /*!< Offset: 0x0F0 (R/W) Selected Pin Protocol Register */ + uint32_t RESERVED2[131U]; + __IM uint32_t FFSR; /*!< Offset: 0x300 (R/ ) Formatter and Flush Status Register */ + __IOM uint32_t FFCR; /*!< Offset: 0x304 (R/W) Formatter and Flush Control Register */ + __IOM uint32_t PSCR; /*!< Offset: 0x308 (R/W) Periodic Synchronization Control Register */ + uint32_t RESERVED3[759U]; + __IM uint32_t TRIGGER; /*!< Offset: 0xEE8 (R/ ) TRIGGER Register */ + __IM uint32_t ITFTTD0; /*!< Offset: 0xEEC (R/ ) Integration Test FIFO Test Data 0 Register */ + __IOM uint32_t ITATBCTR2; /*!< Offset: 0xEF0 (R/W) Integration Test ATB Control Register 2 */ + uint32_t RESERVED4[1U]; + __IM uint32_t ITATBCTR0; /*!< Offset: 0xEF8 (R/ ) Integration Test ATB Control Register 0 */ + __IM uint32_t ITFTTD1; /*!< Offset: 0xEFC (R/ ) Integration Test FIFO Test Data 1 Register */ + __IOM uint32_t ITCTRL; /*!< Offset: 0xF00 (R/W) Integration Mode Control */ + uint32_t RESERVED5[39U]; + __IOM uint32_t CLAIMSET; /*!< Offset: 0xFA0 (R/W) Claim tag set */ + __IOM uint32_t CLAIMCLR; /*!< Offset: 0xFA4 (R/W) Claim tag clear */ + uint32_t RESERVED7[8U]; + __IM uint32_t DEVID; /*!< Offset: 0xFC8 (R/ ) Device Configuration Register */ + __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) Device Type Identifier Register */ +} TPI_Type; + +/* TPI Asynchronous Clock Prescaler Register Definitions */ +#define TPI_ACPR_PRESCALER_Pos 0U /*!< TPI ACPR: PRESCALER Position */ +#define TPI_ACPR_PRESCALER_Msk (0x1FFFUL /*<< TPI_ACPR_PRESCALER_Pos*/) /*!< TPI ACPR: PRESCALER Mask */ + +/* TPI Selected Pin Protocol Register Definitions */ +#define TPI_SPPR_TXMODE_Pos 0U /*!< TPI SPPR: TXMODE Position */ +#define TPI_SPPR_TXMODE_Msk (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/) /*!< TPI SPPR: TXMODE Mask */ + +/* TPI Formatter and Flush Status Register Definitions */ +#define TPI_FFSR_FtNonStop_Pos 3U /*!< TPI FFSR: FtNonStop Position */ +#define TPI_FFSR_FtNonStop_Msk (0x1UL << TPI_FFSR_FtNonStop_Pos) /*!< TPI FFSR: FtNonStop Mask */ + +#define TPI_FFSR_TCPresent_Pos 2U /*!< TPI FFSR: TCPresent Position */ +#define TPI_FFSR_TCPresent_Msk (0x1UL << TPI_FFSR_TCPresent_Pos) /*!< TPI FFSR: TCPresent Mask */ + +#define TPI_FFSR_FtStopped_Pos 1U /*!< TPI FFSR: FtStopped Position */ +#define TPI_FFSR_FtStopped_Msk (0x1UL << TPI_FFSR_FtStopped_Pos) /*!< TPI FFSR: FtStopped Mask */ + +#define TPI_FFSR_FlInProg_Pos 0U /*!< TPI FFSR: FlInProg Position */ +#define TPI_FFSR_FlInProg_Msk (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/) /*!< TPI FFSR: FlInProg Mask */ + +/* TPI Formatter and Flush Control Register Definitions */ +#define TPI_FFCR_TrigIn_Pos 8U /*!< TPI FFCR: TrigIn Position */ +#define TPI_FFCR_TrigIn_Msk (0x1UL << TPI_FFCR_TrigIn_Pos) /*!< TPI FFCR: TrigIn Mask */ + +#define TPI_FFCR_FOnMan_Pos 6U /*!< TPI FFCR: FOnMan Position */ +#define TPI_FFCR_FOnMan_Msk (0x1UL << TPI_FFCR_FOnMan_Pos) /*!< TPI FFCR: FOnMan Mask */ + +#define TPI_FFCR_EnFCont_Pos 1U /*!< TPI FFCR: EnFCont Position */ +#define TPI_FFCR_EnFCont_Msk (0x1UL << TPI_FFCR_EnFCont_Pos) /*!< TPI FFCR: EnFCont Mask */ + +/* TPI TRIGGER Register Definitions */ +#define TPI_TRIGGER_TRIGGER_Pos 0U /*!< TPI TRIGGER: TRIGGER Position */ +#define TPI_TRIGGER_TRIGGER_Msk (0x1UL /*<< TPI_TRIGGER_TRIGGER_Pos*/) /*!< TPI TRIGGER: TRIGGER Mask */ + +/* TPI Integration Test FIFO Test Data 0 Register Definitions */ +#define TPI_ITFTTD0_ATB_IF2_ATVALID_Pos 29U /*!< TPI ITFTTD0: ATB Interface 2 ATVALIDPosition */ +#define TPI_ITFTTD0_ATB_IF2_ATVALID_Msk (0x3UL << TPI_ITFTTD0_ATB_IF2_ATVALID_Pos) /*!< TPI ITFTTD0: ATB Interface 2 ATVALID Mask */ + +#define TPI_ITFTTD0_ATB_IF2_bytecount_Pos 27U /*!< TPI ITFTTD0: ATB Interface 2 byte count Position */ +#define TPI_ITFTTD0_ATB_IF2_bytecount_Msk (0x3UL << TPI_ITFTTD0_ATB_IF2_bytecount_Pos) /*!< TPI ITFTTD0: ATB Interface 2 byte count Mask */ + +#define TPI_ITFTTD0_ATB_IF1_ATVALID_Pos 26U /*!< TPI ITFTTD0: ATB Interface 1 ATVALID Position */ +#define TPI_ITFTTD0_ATB_IF1_ATVALID_Msk (0x3UL << TPI_ITFTTD0_ATB_IF1_ATVALID_Pos) /*!< TPI ITFTTD0: ATB Interface 1 ATVALID Mask */ + +#define TPI_ITFTTD0_ATB_IF1_bytecount_Pos 24U /*!< TPI ITFTTD0: ATB Interface 1 byte count Position */ +#define TPI_ITFTTD0_ATB_IF1_bytecount_Msk (0x3UL << TPI_ITFTTD0_ATB_IF1_bytecount_Pos) /*!< TPI ITFTTD0: ATB Interface 1 byte countt Mask */ + +#define TPI_ITFTTD0_ATB_IF1_data2_Pos 16U /*!< TPI ITFTTD0: ATB Interface 1 data2 Position */ +#define TPI_ITFTTD0_ATB_IF1_data2_Msk (0xFFUL << TPI_ITFTTD0_ATB_IF1_data1_Pos) /*!< TPI ITFTTD0: ATB Interface 1 data2 Mask */ + +#define TPI_ITFTTD0_ATB_IF1_data1_Pos 8U /*!< TPI ITFTTD0: ATB Interface 1 data1 Position */ +#define TPI_ITFTTD0_ATB_IF1_data1_Msk (0xFFUL << TPI_ITFTTD0_ATB_IF1_data1_Pos) /*!< TPI ITFTTD0: ATB Interface 1 data1 Mask */ + +#define TPI_ITFTTD0_ATB_IF1_data0_Pos 0U /*!< TPI ITFTTD0: ATB Interface 1 data0 Position */ +#define TPI_ITFTTD0_ATB_IF1_data0_Msk (0xFFUL /*<< TPI_ITFTTD0_ATB_IF1_data0_Pos*/) /*!< TPI ITFTTD0: ATB Interface 1 data0 Mask */ + +/* TPI Integration Test ATB Control Register 2 Register Definitions */ +#define TPI_ITATBCTR2_AFVALID2S_Pos 1U /*!< TPI ITATBCTR2: AFVALID2S Position */ +#define TPI_ITATBCTR2_AFVALID2S_Msk (0x1UL << TPI_ITATBCTR2_AFVALID2S_Pos) /*!< TPI ITATBCTR2: AFVALID2SS Mask */ + +#define TPI_ITATBCTR2_AFVALID1S_Pos 1U /*!< TPI ITATBCTR2: AFVALID1S Position */ +#define TPI_ITATBCTR2_AFVALID1S_Msk (0x1UL << TPI_ITATBCTR2_AFVALID1S_Pos) /*!< TPI ITATBCTR2: AFVALID1SS Mask */ + +#define TPI_ITATBCTR2_ATREADY2S_Pos 0U /*!< TPI ITATBCTR2: ATREADY2S Position */ +#define TPI_ITATBCTR2_ATREADY2S_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY2S_Pos*/) /*!< TPI ITATBCTR2: ATREADY2S Mask */ + +#define TPI_ITATBCTR2_ATREADY1S_Pos 0U /*!< TPI ITATBCTR2: ATREADY1S Position */ +#define TPI_ITATBCTR2_ATREADY1S_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY1S_Pos*/) /*!< TPI ITATBCTR2: ATREADY1S Mask */ + +/* TPI Integration Test FIFO Test Data 1 Register Definitions */ +#define TPI_ITFTTD1_ATB_IF2_ATVALID_Pos 29U /*!< TPI ITFTTD1: ATB Interface 2 ATVALID Position */ +#define TPI_ITFTTD1_ATB_IF2_ATVALID_Msk (0x3UL << TPI_ITFTTD1_ATB_IF2_ATVALID_Pos) /*!< TPI ITFTTD1: ATB Interface 2 ATVALID Mask */ + +#define TPI_ITFTTD1_ATB_IF2_bytecount_Pos 27U /*!< TPI ITFTTD1: ATB Interface 2 byte count Position */ +#define TPI_ITFTTD1_ATB_IF2_bytecount_Msk (0x3UL << TPI_ITFTTD1_ATB_IF2_bytecount_Pos) /*!< TPI ITFTTD1: ATB Interface 2 byte count Mask */ + +#define TPI_ITFTTD1_ATB_IF1_ATVALID_Pos 26U /*!< TPI ITFTTD1: ATB Interface 1 ATVALID Position */ +#define TPI_ITFTTD1_ATB_IF1_ATVALID_Msk (0x3UL << TPI_ITFTTD1_ATB_IF1_ATVALID_Pos) /*!< TPI ITFTTD1: ATB Interface 1 ATVALID Mask */ + +#define TPI_ITFTTD1_ATB_IF1_bytecount_Pos 24U /*!< TPI ITFTTD1: ATB Interface 1 byte count Position */ +#define TPI_ITFTTD1_ATB_IF1_bytecount_Msk (0x3UL << TPI_ITFTTD1_ATB_IF1_bytecount_Pos) /*!< TPI ITFTTD1: ATB Interface 1 byte countt Mask */ + +#define TPI_ITFTTD1_ATB_IF2_data2_Pos 16U /*!< TPI ITFTTD1: ATB Interface 2 data2 Position */ +#define TPI_ITFTTD1_ATB_IF2_data2_Msk (0xFFUL << TPI_ITFTTD1_ATB_IF2_data1_Pos) /*!< TPI ITFTTD1: ATB Interface 2 data2 Mask */ + +#define TPI_ITFTTD1_ATB_IF2_data1_Pos 8U /*!< TPI ITFTTD1: ATB Interface 2 data1 Position */ +#define TPI_ITFTTD1_ATB_IF2_data1_Msk (0xFFUL << TPI_ITFTTD1_ATB_IF2_data1_Pos) /*!< TPI ITFTTD1: ATB Interface 2 data1 Mask */ + +#define TPI_ITFTTD1_ATB_IF2_data0_Pos 0U /*!< TPI ITFTTD1: ATB Interface 2 data0 Position */ +#define TPI_ITFTTD1_ATB_IF2_data0_Msk (0xFFUL /*<< TPI_ITFTTD1_ATB_IF2_data0_Pos*/) /*!< TPI ITFTTD1: ATB Interface 2 data0 Mask */ + +/* TPI Integration Test ATB Control Register 0 Definitions */ +#define TPI_ITATBCTR0_AFVALID2S_Pos 1U /*!< TPI ITATBCTR0: AFVALID2S Position */ +#define TPI_ITATBCTR0_AFVALID2S_Msk (0x1UL << TPI_ITATBCTR0_AFVALID2S_Pos) /*!< TPI ITATBCTR0: AFVALID2SS Mask */ + +#define TPI_ITATBCTR0_AFVALID1S_Pos 1U /*!< TPI ITATBCTR0: AFVALID1S Position */ +#define TPI_ITATBCTR0_AFVALID1S_Msk (0x1UL << TPI_ITATBCTR0_AFVALID1S_Pos) /*!< TPI ITATBCTR0: AFVALID1SS Mask */ + +#define TPI_ITATBCTR0_ATREADY2S_Pos 0U /*!< TPI ITATBCTR0: ATREADY2S Position */ +#define TPI_ITATBCTR0_ATREADY2S_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY2S_Pos*/) /*!< TPI ITATBCTR0: ATREADY2S Mask */ + +#define TPI_ITATBCTR0_ATREADY1S_Pos 0U /*!< TPI ITATBCTR0: ATREADY1S Position */ +#define TPI_ITATBCTR0_ATREADY1S_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY1S_Pos*/) /*!< TPI ITATBCTR0: ATREADY1S Mask */ + +/* TPI Integration Mode Control Register Definitions */ +#define TPI_ITCTRL_Mode_Pos 0U /*!< TPI ITCTRL: Mode Position */ +#define TPI_ITCTRL_Mode_Msk (0x3UL /*<< TPI_ITCTRL_Mode_Pos*/) /*!< TPI ITCTRL: Mode Mask */ + +/* TPI DEVID Register Definitions */ +#define TPI_DEVID_NRZVALID_Pos 11U /*!< TPI DEVID: NRZVALID Position */ +#define TPI_DEVID_NRZVALID_Msk (0x1UL << TPI_DEVID_NRZVALID_Pos) /*!< TPI DEVID: NRZVALID Mask */ + +#define TPI_DEVID_MANCVALID_Pos 10U /*!< TPI DEVID: MANCVALID Position */ +#define TPI_DEVID_MANCVALID_Msk (0x1UL << TPI_DEVID_MANCVALID_Pos) /*!< TPI DEVID: MANCVALID Mask */ + +#define TPI_DEVID_PTINVALID_Pos 9U /*!< TPI DEVID: PTINVALID Position */ +#define TPI_DEVID_PTINVALID_Msk (0x1UL << TPI_DEVID_PTINVALID_Pos) /*!< TPI DEVID: PTINVALID Mask */ + +#define TPI_DEVID_FIFOSZ_Pos 6U /*!< TPI DEVID: FIFOSZ Position */ +#define TPI_DEVID_FIFOSZ_Msk (0x7UL << TPI_DEVID_FIFOSZ_Pos) /*!< TPI DEVID: FIFOSZ Mask */ + +#define TPI_DEVID_NrTraceInput_Pos 0U /*!< TPI DEVID: NrTraceInput Position */ +#define TPI_DEVID_NrTraceInput_Msk (0x3FUL /*<< TPI_DEVID_NrTraceInput_Pos*/) /*!< TPI DEVID: NrTraceInput Mask */ + +/* TPI DEVTYPE Register Definitions */ +#define TPI_DEVTYPE_SubType_Pos 4U /*!< TPI DEVTYPE: SubType Position */ +#define TPI_DEVTYPE_SubType_Msk (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/) /*!< TPI DEVTYPE: SubType Mask */ + +#define TPI_DEVTYPE_MajorType_Pos 0U /*!< TPI DEVTYPE: MajorType Position */ +#define TPI_DEVTYPE_MajorType_Msk (0xFUL << TPI_DEVTYPE_MajorType_Pos) /*!< TPI DEVTYPE: MajorType Mask */ + +/*@}*/ /* end of group CMSIS_TPI */ + + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_MPU Memory Protection Unit (MPU) + \brief Type definitions for the Memory Protection Unit (MPU) + @{ + */ + +/** + \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) MPU Region Limit Address Register */ + uint32_t RESERVED0[7U]; + union { + __IOM uint32_t MAIR[2]; + struct { + __IOM uint32_t MAIR0; /*!< Offset: 0x030 (R/W) MPU Memory Attribute Indirection Register 0 */ + __IOM uint32_t MAIR1; /*!< Offset: 0x034 (R/W) MPU Memory Attribute Indirection Register 1 */ + }; + }; +} MPU_Type; + +#define MPU_TYPE_RALIASES 1U + +/* MPU Type Register Definitions */ +#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register Definitions */ +#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register Definitions */ +#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register Definitions */ +#define MPU_RBAR_BASE_Pos 5U /*!< MPU RBAR: BASE Position */ +#define MPU_RBAR_BASE_Msk (0x7FFFFFFUL << MPU_RBAR_BASE_Pos) /*!< MPU RBAR: BASE Mask */ + +#define MPU_RBAR_SH_Pos 3U /*!< MPU RBAR: SH Position */ +#define MPU_RBAR_SH_Msk (0x3UL << MPU_RBAR_SH_Pos) /*!< MPU RBAR: SH Mask */ + +#define MPU_RBAR_AP_Pos 1U /*!< MPU RBAR: AP Position */ +#define MPU_RBAR_AP_Msk (0x3UL << MPU_RBAR_AP_Pos) /*!< MPU RBAR: AP Mask */ + +#define MPU_RBAR_XN_Pos 0U /*!< MPU RBAR: XN Position */ +#define MPU_RBAR_XN_Msk (01UL /*<< MPU_RBAR_XN_Pos*/) /*!< MPU RBAR: XN Mask */ + +/* MPU Region Limit Address Register Definitions */ +#define MPU_RLAR_LIMIT_Pos 5U /*!< MPU RLAR: LIMIT Position */ +#define MPU_RLAR_LIMIT_Msk (0x7FFFFFFUL << MPU_RLAR_LIMIT_Pos) /*!< MPU RLAR: LIMIT Mask */ + +#define MPU_RLAR_AttrIndx_Pos 1U /*!< MPU RLAR: AttrIndx Position */ +#define MPU_RLAR_AttrIndx_Msk (0x7UL << MPU_RLAR_AttrIndx_Pos) /*!< MPU RLAR: AttrIndx Mask */ + +#define MPU_RLAR_EN_Pos 0U /*!< MPU RLAR: EN Position */ +#define MPU_RLAR_EN_Msk (1UL /*<< MPU_RLAR_EN_Pos*/) /*!< MPU RLAR: EN Mask */ + +/* MPU Memory Attribute Indirection Register 0 Definitions */ +#define MPU_MAIR0_Attr3_Pos 24U /*!< MPU MAIR0: Attr3 Position */ +#define MPU_MAIR0_Attr3_Msk (0xFFUL << MPU_MAIR0_Attr3_Pos) /*!< MPU MAIR0: Attr3 Mask */ + +#define MPU_MAIR0_Attr2_Pos 16U /*!< MPU MAIR0: Attr2 Position */ +#define MPU_MAIR0_Attr2_Msk (0xFFUL << MPU_MAIR0_Attr2_Pos) /*!< MPU MAIR0: Attr2 Mask */ + +#define MPU_MAIR0_Attr1_Pos 8U /*!< MPU MAIR0: Attr1 Position */ +#define MPU_MAIR0_Attr1_Msk (0xFFUL << MPU_MAIR0_Attr1_Pos) /*!< MPU MAIR0: Attr1 Mask */ + +#define MPU_MAIR0_Attr0_Pos 0U /*!< MPU MAIR0: Attr0 Position */ +#define MPU_MAIR0_Attr0_Msk (0xFFUL /*<< MPU_MAIR0_Attr0_Pos*/) /*!< MPU MAIR0: Attr0 Mask */ + +/* MPU Memory Attribute Indirection Register 1 Definitions */ +#define MPU_MAIR1_Attr7_Pos 24U /*!< MPU MAIR1: Attr7 Position */ +#define MPU_MAIR1_Attr7_Msk (0xFFUL << MPU_MAIR1_Attr7_Pos) /*!< MPU MAIR1: Attr7 Mask */ + +#define MPU_MAIR1_Attr6_Pos 16U /*!< MPU MAIR1: Attr6 Position */ +#define MPU_MAIR1_Attr6_Msk (0xFFUL << MPU_MAIR1_Attr6_Pos) /*!< MPU MAIR1: Attr6 Mask */ + +#define MPU_MAIR1_Attr5_Pos 8U /*!< MPU MAIR1: Attr5 Position */ +#define MPU_MAIR1_Attr5_Msk (0xFFUL << MPU_MAIR1_Attr5_Pos) /*!< MPU MAIR1: Attr5 Mask */ + +#define MPU_MAIR1_Attr4_Pos 0U /*!< MPU MAIR1: Attr4 Position */ +#define MPU_MAIR1_Attr4_Msk (0xFFUL /*<< MPU_MAIR1_Attr4_Pos*/) /*!< MPU MAIR1: Attr4 Mask */ + +/*@} end of group CMSIS_MPU */ +#endif + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SAU Security Attribution Unit (SAU) + \brief Type definitions for the Security Attribution Unit (SAU) + @{ + */ + +/** + \brief Structure type to access the Security Attribution Unit (SAU). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SAU Control Register */ + __IM uint32_t TYPE; /*!< Offset: 0x004 (R/ ) SAU Type Register */ +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) SAU Region Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) SAU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) SAU Region Limit Address Register */ +#endif +} SAU_Type; + +/* SAU Control Register Definitions */ +#define SAU_CTRL_ALLNS_Pos 1U /*!< SAU CTRL: ALLNS Position */ +#define SAU_CTRL_ALLNS_Msk (1UL << SAU_CTRL_ALLNS_Pos) /*!< SAU CTRL: ALLNS Mask */ + +#define SAU_CTRL_ENABLE_Pos 0U /*!< SAU CTRL: ENABLE Position */ +#define SAU_CTRL_ENABLE_Msk (1UL /*<< SAU_CTRL_ENABLE_Pos*/) /*!< SAU CTRL: ENABLE Mask */ + +/* SAU Type Register Definitions */ +#define SAU_TYPE_SREGION_Pos 0U /*!< SAU TYPE: SREGION Position */ +#define SAU_TYPE_SREGION_Msk (0xFFUL /*<< SAU_TYPE_SREGION_Pos*/) /*!< SAU TYPE: SREGION Mask */ + +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) +/* SAU Region Number Register Definitions */ +#define SAU_RNR_REGION_Pos 0U /*!< SAU RNR: REGION Position */ +#define SAU_RNR_REGION_Msk (0xFFUL /*<< SAU_RNR_REGION_Pos*/) /*!< SAU RNR: REGION Mask */ + +/* SAU Region Base Address Register Definitions */ +#define SAU_RBAR_BADDR_Pos 5U /*!< SAU RBAR: BADDR Position */ +#define SAU_RBAR_BADDR_Msk (0x7FFFFFFUL << SAU_RBAR_BADDR_Pos) /*!< SAU RBAR: BADDR Mask */ + +/* SAU Region Limit Address Register Definitions */ +#define SAU_RLAR_LADDR_Pos 5U /*!< SAU RLAR: LADDR Position */ +#define SAU_RLAR_LADDR_Msk (0x7FFFFFFUL << SAU_RLAR_LADDR_Pos) /*!< SAU RLAR: LADDR Mask */ + +#define SAU_RLAR_NSC_Pos 1U /*!< SAU RLAR: NSC Position */ +#define SAU_RLAR_NSC_Msk (1UL << SAU_RLAR_NSC_Pos) /*!< SAU RLAR: NSC Mask */ + +#define SAU_RLAR_ENABLE_Pos 0U /*!< SAU RLAR: ENABLE Position */ +#define SAU_RLAR_ENABLE_Msk (1UL /*<< SAU_RLAR_ENABLE_Pos*/) /*!< SAU RLAR: ENABLE Mask */ + +#endif /* defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) */ + +/*@} end of group CMSIS_SAU */ +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Type definitions for the Core Debug Registers + @{ + */ + +/** + \brief Structure type to access the Core Debug Register (CoreDebug). + */ +typedef struct +{ + __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ + uint32_t RESERVED4[1U]; + __IOM uint32_t DAUTHCTRL; /*!< Offset: 0x014 (R/W) Debug Authentication Control Register */ + __IOM uint32_t DSCSR; /*!< Offset: 0x018 (R/W) Debug Security Control and Status Register */ +} CoreDebug_Type; + +/* Debug Halting Control and Status Register Definitions */ +#define CoreDebug_DHCSR_DBGKEY_Pos 16U /*!< CoreDebug DHCSR: DBGKEY Position */ +#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< CoreDebug DHCSR: DBGKEY Mask */ + +#define CoreDebug_DHCSR_S_RESTART_ST_Pos 26U /*!< CoreDebug DHCSR: S_RESTART_ST Position */ +#define CoreDebug_DHCSR_S_RESTART_ST_Msk (1UL << CoreDebug_DHCSR_S_RESTART_ST_Pos) /*!< CoreDebug DHCSR: S_RESTART_ST Mask */ + +#define CoreDebug_DHCSR_S_RESET_ST_Pos 25U /*!< CoreDebug DHCSR: S_RESET_ST Position */ +#define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< CoreDebug DHCSR: S_RESET_ST Mask */ + +#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24U /*!< CoreDebug DHCSR: S_RETIRE_ST Position */ +#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */ + +#define CoreDebug_DHCSR_S_LOCKUP_Pos 19U /*!< CoreDebug DHCSR: S_LOCKUP Position */ +#define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< CoreDebug DHCSR: S_LOCKUP Mask */ + +#define CoreDebug_DHCSR_S_SLEEP_Pos 18U /*!< CoreDebug DHCSR: S_SLEEP Position */ +#define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< CoreDebug DHCSR: S_SLEEP Mask */ + +#define CoreDebug_DHCSR_S_HALT_Pos 17U /*!< CoreDebug DHCSR: S_HALT Position */ +#define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< CoreDebug DHCSR: S_HALT Mask */ + +#define CoreDebug_DHCSR_S_REGRDY_Pos 16U /*!< CoreDebug DHCSR: S_REGRDY Position */ +#define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< CoreDebug DHCSR: S_REGRDY Mask */ + +#define CoreDebug_DHCSR_C_MASKINTS_Pos 3U /*!< CoreDebug DHCSR: C_MASKINTS Position */ +#define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< CoreDebug DHCSR: C_MASKINTS Mask */ + +#define CoreDebug_DHCSR_C_STEP_Pos 2U /*!< CoreDebug DHCSR: C_STEP Position */ +#define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< CoreDebug DHCSR: C_STEP Mask */ + +#define CoreDebug_DHCSR_C_HALT_Pos 1U /*!< CoreDebug DHCSR: C_HALT Position */ +#define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< CoreDebug DHCSR: C_HALT Mask */ + +#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0U /*!< CoreDebug DHCSR: C_DEBUGEN Position */ +#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/) /*!< CoreDebug DHCSR: C_DEBUGEN Mask */ + +/* Debug Core Register Selector Register Definitions */ +#define CoreDebug_DCRSR_REGWnR_Pos 16U /*!< CoreDebug DCRSR: REGWnR Position */ +#define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< CoreDebug DCRSR: REGWnR Mask */ + +#define CoreDebug_DCRSR_REGSEL_Pos 0U /*!< CoreDebug DCRSR: REGSEL Position */ +#define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/) /*!< CoreDebug DCRSR: REGSEL Mask */ + +/* Debug Exception and Monitor Control Register */ +#define CoreDebug_DEMCR_DWTENA_Pos 24U /*!< CoreDebug DEMCR: DWTENA Position */ +#define CoreDebug_DEMCR_DWTENA_Msk (1UL << CoreDebug_DEMCR_DWTENA_Pos) /*!< CoreDebug DEMCR: DWTENA Mask */ + +#define CoreDebug_DEMCR_VC_HARDERR_Pos 10U /*!< CoreDebug DEMCR: VC_HARDERR Position */ +#define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< CoreDebug DEMCR: VC_HARDERR Mask */ + +#define CoreDebug_DEMCR_VC_CORERESET_Pos 0U /*!< CoreDebug DEMCR: VC_CORERESET Position */ +#define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/) /*!< CoreDebug DEMCR: VC_CORERESET Mask */ + +/* Debug Authentication Control Register Definitions */ +#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos 3U /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Position */ +#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos) /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Mask */ + +#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos 2U /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Position */ +#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Msk (1UL << CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos) /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Mask */ + +#define CoreDebug_DAUTHCTRL_INTSPIDEN_Pos 1U /*!< CoreDebug DAUTHCTRL: INTSPIDEN Position */ +#define CoreDebug_DAUTHCTRL_INTSPIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPIDEN_Pos) /*!< CoreDebug DAUTHCTRL: INTSPIDEN Mask */ + +#define CoreDebug_DAUTHCTRL_SPIDENSEL_Pos 0U /*!< CoreDebug DAUTHCTRL: SPIDENSEL Position */ +#define CoreDebug_DAUTHCTRL_SPIDENSEL_Msk (1UL /*<< CoreDebug_DAUTHCTRL_SPIDENSEL_Pos*/) /*!< CoreDebug DAUTHCTRL: SPIDENSEL Mask */ + +/* Debug Security Control and Status Register Definitions */ +#define CoreDebug_DSCSR_CDS_Pos 16U /*!< CoreDebug DSCSR: CDS Position */ +#define CoreDebug_DSCSR_CDS_Msk (1UL << CoreDebug_DSCSR_CDS_Pos) /*!< CoreDebug DSCSR: CDS Mask */ + +#define CoreDebug_DSCSR_SBRSEL_Pos 1U /*!< CoreDebug DSCSR: SBRSEL Position */ +#define CoreDebug_DSCSR_SBRSEL_Msk (1UL << CoreDebug_DSCSR_SBRSEL_Pos) /*!< CoreDebug DSCSR: SBRSEL Mask */ + +#define CoreDebug_DSCSR_SBRSELEN_Pos 0U /*!< CoreDebug DSCSR: SBRSELEN Position */ +#define CoreDebug_DSCSR_SBRSELEN_Msk (1UL /*<< CoreDebug_DSCSR_SBRSELEN_Pos*/) /*!< CoreDebug DSCSR: SBRSELEN Mask */ + +/*@} end of group CMSIS_CoreDebug */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_bitfield Core register bit field macros + \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk). + @{ + */ + +/** + \brief Mask and shift a bit field value for use in a register bit range. + \param[in] field Name of the register bit field. + \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk) + +/** + \brief Mask and shift a register value to extract a bit filed value. + \param[in] field Name of the register bit field. + \param[in] value Value of register. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos) + +/*@} end of group CMSIS_core_bitfield */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_base Core Definitions + \brief Definitions for base addresses, unions, and structures. + @{ + */ + +/* Memory mapping of Core Hardware */ + #define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ + #define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */ + #define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */ + #define CoreDebug_BASE (0xE000EDF0UL) /*!< Core Debug Base Address */ + #define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ + #define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ + #define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + + + #define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ + #define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ + #define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ + #define DWT ((DWT_Type *) DWT_BASE ) /*!< DWT configuration struct */ + #define TPI ((TPI_Type *) TPI_BASE ) /*!< TPI configuration struct */ + #define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE ) /*!< Core Debug configuration struct */ + + #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ + #endif + + #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #define SAU_BASE (SCS_BASE + 0x0DD0UL) /*!< Security Attribution Unit */ + #define SAU ((SAU_Type *) SAU_BASE ) /*!< Security Attribution Unit */ + #endif + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #define SCS_BASE_NS (0xE002E000UL) /*!< System Control Space Base Address (non-secure address space) */ + #define CoreDebug_BASE_NS (0xE002EDF0UL) /*!< Core Debug Base Address (non-secure address space) */ + #define SysTick_BASE_NS (SCS_BASE_NS + 0x0010UL) /*!< SysTick Base Address (non-secure address space) */ + #define NVIC_BASE_NS (SCS_BASE_NS + 0x0100UL) /*!< NVIC Base Address (non-secure address space) */ + #define SCB_BASE_NS (SCS_BASE_NS + 0x0D00UL) /*!< System Control Block Base Address (non-secure address space) */ + + #define SCB_NS ((SCB_Type *) SCB_BASE_NS ) /*!< SCB configuration struct (non-secure address space) */ + #define SysTick_NS ((SysTick_Type *) SysTick_BASE_NS ) /*!< SysTick configuration struct (non-secure address space) */ + #define NVIC_NS ((NVIC_Type *) NVIC_BASE_NS ) /*!< NVIC configuration struct (non-secure address space) */ + #define CoreDebug_NS ((CoreDebug_Type *) CoreDebug_BASE_NS) /*!< Core Debug configuration struct (non-secure address space) */ + + #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE_NS (SCS_BASE_NS + 0x0D90UL) /*!< Memory Protection Unit (non-secure address space) */ + #define MPU_NS ((MPU_Type *) MPU_BASE_NS ) /*!< Memory Protection Unit (non-secure address space) */ + #endif + +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Register Access Functions + ******************************************************************************/ +/** + \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +*/ + + + +/* ########################## NVIC functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions NVIC Functions + \brief Functions that manage interrupts and exceptions via the NVIC. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else +/*#define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping not available for Cortex-M23 */ +/*#define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping not available for Cortex-M23 */ + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ + #define NVIC_GetActive __NVIC_GetActive + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* Special LR values for Secure/Non-Secure call handling and exception handling */ + +/* Function Return Payload (from ARMv8-M Architecture Reference Manual) LR value on entry from Secure BLXNS */ +#define FNC_RETURN (0xFEFFFFFFUL) /* bit [0] ignored when processing a branch */ + +/* The following EXC_RETURN mask values are used to evaluate the LR on exception entry */ +#define EXC_RETURN_PREFIX (0xFF000000UL) /* bits [31:24] set to indicate an EXC_RETURN value */ +#define EXC_RETURN_S (0x00000040UL) /* bit [6] stack used to push registers: 0=Non-secure 1=Secure */ +#define EXC_RETURN_DCRS (0x00000020UL) /* bit [5] stacking rules for called registers: 0=skipped 1=saved */ +#define EXC_RETURN_FTYPE (0x00000010UL) /* bit [4] allocate stack for floating-point context: 0=done 1=skipped */ +#define EXC_RETURN_MODE (0x00000008UL) /* bit [3] processor mode for return: 0=Handler mode 1=Thread mode */ +#define EXC_RETURN_SPSEL (0x00000002UL) /* bit [1] stack pointer used to restore context: 0=MSP 1=PSP */ +#define EXC_RETURN_ES (0x00000001UL) /* bit [0] security state exception was taken to: 0=Non-secure 1=Secure */ + +/* Integrity Signature (from ARMv8-M Architecture Reference Manual) for exception context stacking */ +#if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) /* Value for processors with floating-point extension: */ +#define EXC_INTEGRITY_SIGNATURE (0xFEFA125AUL) /* bit [0] SFTC must match LR bit[4] EXC_RETURN_FTYPE */ +#else +#define EXC_INTEGRITY_SIGNATURE (0xFEFA125BUL) /* Value for processors without floating-point extension */ +#endif + + +/* Interrupt Priorities are WORD accessible only under Armv6-M */ +/* The following MACROS handle generation of the register offset and byte masks */ +#define _BIT_SHIFT(IRQn) ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL) +#define _SHP_IDX(IRQn) ( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >> 2UL) ) +#define _IP_IDX(IRQn) ( (((uint32_t)(int32_t)(IRQn)) >> 2UL) ) + +#define __NVIC_SetPriorityGrouping(X) (void)(X) +#define __NVIC_GetPriorityGrouping() (0U) + +/** + \brief Enable Interrupt + \details Enables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt + \details Reads the active register in the NVIC and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Get Interrupt Target State + \details Reads the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + \return 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_GetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Target State + \details Sets the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_SetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] |= ((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Clear Interrupt Target State + \details Clears the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_ClearTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] &= ~((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every processor exception. + */ +__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IPR[_IP_IDX(IRQn)] = ((uint32_t)(NVIC->IPR[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } + else + { + SCB->SHPR[_SHP_IDX(IRQn)] = ((uint32_t)(SCB->SHPR[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. + Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IPR[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return((uint32_t)(((SCB->SHPR[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Encode Priority + \details Encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + +/** + \brief Decode Priority + \details Decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + VTOR must been relocated to SRAM before. + If VTOR is not present address 0 must be mapped to SRAM. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) + uint32_t *vectors = (uint32_t *)SCB->VTOR; +#else + uint32_t *vectors = (uint32_t *)0x0U; +#endif + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) + uint32_t *vectors = (uint32_t *)SCB->VTOR; +#else + uint32_t *vectors = (uint32_t *)0x0U; +#endif + return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = ((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + SCB_AIRCR_SYSRESETREQ_Msk); + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Enable Interrupt (non-secure) + \details Enables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_EnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status (non-secure) + \details Returns a device specific interrupt enable status from the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetEnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt (non-secure) + \details Disables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_DisableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Pending Interrupt (non-secure) + \details Reads the NVIC pending register in the non-secure NVIC when in secure state and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt (non-secure) + \details Sets the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_SetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt (non-secure) + \details Clears the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_ClearPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt (non-secure) + \details Reads the active register in non-secure NVIC when in secure state and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetActive_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Priority (non-secure) + \details Sets the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every non-secure processor exception. + */ +__STATIC_INLINE void TZ_NVIC_SetPriority_NS(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->IPR[_IP_IDX(IRQn)] = ((uint32_t)(NVIC_NS->IPR[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } + else + { + SCB_NS->SHPR[_SHP_IDX(IRQn)] = ((uint32_t)(SCB_NS->SHPR[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } +} + + +/** + \brief Get Interrupt Priority (non-secure) + \details Reads the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPriority_NS(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->IPR[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return((uint32_t)(((SCB_NS->SHPR[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) &&(__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_NVICFunctions */ + +/* ########################## MPU functions #################################### */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + +#include "mpu_armv8.h" + +#endif + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + return 0U; /* No FPU */ +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + + + +/* ########################## SAU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SAUFunctions SAU Functions + \brief Functions that configure the SAU. + @{ + */ + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + +/** + \brief Enable SAU + \details Enables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Enable(void) +{ + SAU->CTRL |= (SAU_CTRL_ENABLE_Msk); +} + + + +/** + \brief Disable SAU + \details Disables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Disable(void) +{ + SAU->CTRL &= ~(SAU_CTRL_ENABLE_Msk); +} + +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_SAUFunctions */ + + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U) + +/** + \brief System Tick Configuration + \details Initializes the System Timer and its interrupt, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief System Tick Configuration (non-secure) + \details Initializes the non-secure System Timer and its interrupt when in secure state, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function TZ_SysTick_Config_NS is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + + */ +__STATIC_INLINE uint32_t TZ_SysTick_Config_NS(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick_NS->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + TZ_NVIC_SetPriority_NS (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick_NS->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick_NS->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM23_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/Drivers/CMSIS/Include/core_cm3.h b/Drivers/CMSIS/Include/core_cm3.h new file mode 100644 index 0000000..74bff64 --- /dev/null +++ b/Drivers/CMSIS/Include/core_cm3.h @@ -0,0 +1,1941 @@ +/**************************************************************************//** + * @file core_cm3.h + * @brief CMSIS Cortex-M3 Core Peripheral Access Layer Header File + * @version V5.0.8 + * @date 04. June 2018 + ******************************************************************************/ +/* + * Copyright (c) 2009-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef __CORE_CM3_H_GENERIC +#define __CORE_CM3_H_GENERIC + +#include + +#ifdef __cplusplus + extern "C" { +#endif + +/** + \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + CMSIS violates the following MISRA-C:2004 rules: + + \li Required Rule 8.5, object/function definition in header file.
+ Function definitions in header files are used to allow 'inlining'. + + \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
+ Unions are used for effective representation of core registers. + + \li Advisory Rule 19.7, Function-like macro defined.
+ Function-like macros are used to allow more efficient code. + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** + \ingroup Cortex_M3 + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS CM3 definitions */ +#define __CM3_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __CM3_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __CM3_CMSIS_VERSION ((__CM3_CMSIS_VERSION_MAIN << 16U) | \ + __CM3_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_M (3U) /*!< Cortex-M Core */ + +/** __FPU_USED indicates whether an FPU is used or not. + This core does not support an FPU at all +*/ +#define __FPU_USED 0U + +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined __ARM_PCS_VFP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TI_ARM__ ) + #if defined __TI_VFP_SUPPORT__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM3_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_CM3_H_DEPENDANT +#define __CORE_CM3_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __CM3_REV + #define __CM3_REV 0x0200U + #warning "__CM3_REV not defined in device header file; using default!" + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0U + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 3U + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0U + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +/** + \defgroup CMSIS_glob_defs CMSIS Global Defines + + IO Type Qualifiers are used + \li to specify the access to peripheral variables. + \li for automatic generation of peripheral register debug information. +*/ +#ifdef __cplusplus + #define __I volatile /*!< Defines 'read only' permissions */ +#else + #define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +/* following defines should be used for structure members */ +#define __IM volatile const /*! Defines 'read only' structure member permissions */ +#define __OM volatile /*! Defines 'write only' structure member permissions */ +#define __IOM volatile /*! Defines 'read / write' structure member permissions */ + +/*@} end of group Cortex_M3 */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core Debug Register + - Core MPU Register + ******************************************************************************/ +/** + \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for Cortex-M processor based devices. +*/ + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CORE Status and Control Registers + \brief Core Register type definitions. + @{ + */ + +/** + \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { + uint32_t _reserved0:27; /*!< bit: 0..26 Reserved */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + +/* APSR Register Definitions */ +#define APSR_N_Pos 31U /*!< APSR: N Position */ +#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */ + +#define APSR_Z_Pos 30U /*!< APSR: Z Position */ +#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */ + +#define APSR_C_Pos 29U /*!< APSR: C Position */ +#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */ + +#define APSR_V_Pos 28U /*!< APSR: V Position */ +#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */ + +#define APSR_Q_Pos 27U /*!< APSR: Q Position */ +#define APSR_Q_Msk (1UL << APSR_Q_Pos) /*!< APSR: Q Mask */ + + +/** + \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + +/* IPSR Register Definitions */ +#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */ +#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */ + + +/** + \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:1; /*!< bit: 9 Reserved */ + uint32_t ICI_IT_1:6; /*!< bit: 10..15 ICI/IT part 1 */ + uint32_t _reserved1:8; /*!< bit: 16..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit */ + uint32_t ICI_IT_2:2; /*!< bit: 25..26 ICI/IT part 2 */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + +/* xPSR Register Definitions */ +#define xPSR_N_Pos 31U /*!< xPSR: N Position */ +#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */ + +#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */ +#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */ + +#define xPSR_C_Pos 29U /*!< xPSR: C Position */ +#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */ + +#define xPSR_V_Pos 28U /*!< xPSR: V Position */ +#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */ + +#define xPSR_Q_Pos 27U /*!< xPSR: Q Position */ +#define xPSR_Q_Msk (1UL << xPSR_Q_Pos) /*!< xPSR: Q Mask */ + +#define xPSR_ICI_IT_2_Pos 25U /*!< xPSR: ICI/IT part 2 Position */ +#define xPSR_ICI_IT_2_Msk (3UL << xPSR_ICI_IT_2_Pos) /*!< xPSR: ICI/IT part 2 Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_ICI_IT_1_Pos 10U /*!< xPSR: ICI/IT part 1 Position */ +#define xPSR_ICI_IT_1_Msk (0x3FUL << xPSR_ICI_IT_1_Pos) /*!< xPSR: ICI/IT part 1 Mask */ + +#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */ +#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */ + + +/** + \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + uint32_t SPSEL:1; /*!< bit: 1 Stack to be used */ + uint32_t _reserved1:30; /*!< bit: 2..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ + +#define CONTROL_nPRIV_Pos 0U /*!< CONTROL: nPRIV Position */ +#define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONTROL: nPRIV Mask */ + +/*@} end of group CMSIS_CORE */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + \brief Type definitions for the NVIC Registers + @{ + */ + +/** + \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IOM uint32_t ISER[8U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[24U]; + __IOM uint32_t ICER[8U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[24U]; + __IOM uint32_t ISPR[8U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[24U]; + __IOM uint32_t ICPR[8U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[24U]; + __IOM uint32_t IABR[8U]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ + uint32_t RESERVED4[56U]; + __IOM uint8_t IP[240U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register (8Bit wide) */ + uint32_t RESERVED5[644U]; + __OM uint32_t STIR; /*!< Offset: 0xE00 ( /W) Software Trigger Interrupt Register */ +} NVIC_Type; + +/* Software Triggered Interrupt Register Definitions */ +#define NVIC_STIR_INTID_Pos 0U /*!< STIR: INTLINESNUM Position */ +#define NVIC_STIR_INTID_Msk (0x1FFUL /*<< NVIC_STIR_INTID_Pos*/) /*!< STIR: INTLINESNUM Mask */ + +/*@} end of group CMSIS_NVIC */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCB System Control Block (SCB) + \brief Type definitions for the System Control Block Registers + @{ + */ + +/** + \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ + __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ + __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + __IOM uint8_t SHP[12U]; /*!< Offset: 0x018 (R/W) System Handlers Priority Registers (4-7, 8-11, 12-15) */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ + __IOM uint32_t CFSR; /*!< Offset: 0x028 (R/W) Configurable Fault Status Register */ + __IOM uint32_t HFSR; /*!< Offset: 0x02C (R/W) HardFault Status Register */ + __IOM uint32_t DFSR; /*!< Offset: 0x030 (R/W) Debug Fault Status Register */ + __IOM uint32_t MMFAR; /*!< Offset: 0x034 (R/W) MemManage Fault Address Register */ + __IOM uint32_t BFAR; /*!< Offset: 0x038 (R/W) BusFault Address Register */ + __IOM uint32_t AFSR; /*!< Offset: 0x03C (R/W) Auxiliary Fault Status Register */ + __IM uint32_t PFR[2U]; /*!< Offset: 0x040 (R/ ) Processor Feature Register */ + __IM uint32_t DFR; /*!< Offset: 0x048 (R/ ) Debug Feature Register */ + __IM uint32_t ADR; /*!< Offset: 0x04C (R/ ) Auxiliary Feature Register */ + __IM uint32_t MMFR[4U]; /*!< Offset: 0x050 (R/ ) Memory Model Feature Register */ + __IM uint32_t ISAR[5U]; /*!< Offset: 0x060 (R/ ) Instruction Set Attributes Register */ + uint32_t RESERVED0[5U]; + __IOM uint32_t CPACR; /*!< Offset: 0x088 (R/W) Coprocessor Access Control Register */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_NMIPENDSET_Pos 31U /*!< SCB ICSR: NMIPENDSET Position */ +#define SCB_ICSR_NMIPENDSET_Msk (1UL << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB ICSR: NMIPENDSET Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_RETTOBASE_Pos 11U /*!< SCB ICSR: RETTOBASE Position */ +#define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */ + +/* SCB Vector Table Offset Register Definitions */ +#if defined (__CM3_REV) && (__CM3_REV < 0x0201U) /* core r2p1 */ +#define SCB_VTOR_TBLBASE_Pos 29U /*!< SCB VTOR: TBLBASE Position */ +#define SCB_VTOR_TBLBASE_Msk (1UL << SCB_VTOR_TBLBASE_Pos) /*!< SCB VTOR: TBLBASE Mask */ + +#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x3FFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ +#else +#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ +#endif + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_PRIGROUP_Pos 8U /*!< SCB AIRCR: PRIGROUP Position */ +#define SCB_AIRCR_PRIGROUP_Msk (7UL << SCB_AIRCR_PRIGROUP_Pos) /*!< SCB AIRCR: PRIGROUP Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +#define SCB_AIRCR_VECTRESET_Pos 0U /*!< SCB AIRCR: VECTRESET Position */ +#define SCB_AIRCR_VECTRESET_Msk (1UL /*<< SCB_AIRCR_VECTRESET_Pos*/) /*!< SCB AIRCR: VECTRESET Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_STKALIGN_Pos 9U /*!< SCB CCR: STKALIGN Position */ +#define SCB_CCR_STKALIGN_Msk (1UL << SCB_CCR_STKALIGN_Pos) /*!< SCB CCR: STKALIGN Mask */ + +#define SCB_CCR_BFHFNMIGN_Pos 8U /*!< SCB CCR: BFHFNMIGN Position */ +#define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ + +#define SCB_CCR_DIV_0_TRP_Pos 4U /*!< SCB CCR: DIV_0_TRP Position */ +#define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +#define SCB_CCR_USERSETMPEND_Pos 1U /*!< SCB CCR: USERSETMPEND Position */ +#define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ + +#define SCB_CCR_NONBASETHRDENA_Pos 0U /*!< SCB CCR: NONBASETHRDENA Position */ +#define SCB_CCR_NONBASETHRDENA_Msk (1UL /*<< SCB_CCR_NONBASETHRDENA_Pos*/) /*!< SCB CCR: NONBASETHRDENA Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_USGFAULTENA_Pos 18U /*!< SCB SHCSR: USGFAULTENA Position */ +#define SCB_SHCSR_USGFAULTENA_Msk (1UL << SCB_SHCSR_USGFAULTENA_Pos) /*!< SCB SHCSR: USGFAULTENA Mask */ + +#define SCB_SHCSR_BUSFAULTENA_Pos 17U /*!< SCB SHCSR: BUSFAULTENA Position */ +#define SCB_SHCSR_BUSFAULTENA_Msk (1UL << SCB_SHCSR_BUSFAULTENA_Pos) /*!< SCB SHCSR: BUSFAULTENA Mask */ + +#define SCB_SHCSR_MEMFAULTENA_Pos 16U /*!< SCB SHCSR: MEMFAULTENA Position */ +#define SCB_SHCSR_MEMFAULTENA_Msk (1UL << SCB_SHCSR_MEMFAULTENA_Pos) /*!< SCB SHCSR: MEMFAULTENA Mask */ + +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +#define SCB_SHCSR_BUSFAULTPENDED_Pos 14U /*!< SCB SHCSR: BUSFAULTPENDED Position */ +#define SCB_SHCSR_BUSFAULTPENDED_Msk (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos) /*!< SCB SHCSR: BUSFAULTPENDED Mask */ + +#define SCB_SHCSR_MEMFAULTPENDED_Pos 13U /*!< SCB SHCSR: MEMFAULTPENDED Position */ +#define SCB_SHCSR_MEMFAULTPENDED_Msk (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos) /*!< SCB SHCSR: MEMFAULTPENDED Mask */ + +#define SCB_SHCSR_USGFAULTPENDED_Pos 12U /*!< SCB SHCSR: USGFAULTPENDED Position */ +#define SCB_SHCSR_USGFAULTPENDED_Msk (1UL << SCB_SHCSR_USGFAULTPENDED_Pos) /*!< SCB SHCSR: USGFAULTPENDED Mask */ + +#define SCB_SHCSR_SYSTICKACT_Pos 11U /*!< SCB SHCSR: SYSTICKACT Position */ +#define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ + +#define SCB_SHCSR_PENDSVACT_Pos 10U /*!< SCB SHCSR: PENDSVACT Position */ +#define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ + +#define SCB_SHCSR_MONITORACT_Pos 8U /*!< SCB SHCSR: MONITORACT Position */ +#define SCB_SHCSR_MONITORACT_Msk (1UL << SCB_SHCSR_MONITORACT_Pos) /*!< SCB SHCSR: MONITORACT Mask */ + +#define SCB_SHCSR_SVCALLACT_Pos 7U /*!< SCB SHCSR: SVCALLACT Position */ +#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ + +#define SCB_SHCSR_USGFAULTACT_Pos 3U /*!< SCB SHCSR: USGFAULTACT Position */ +#define SCB_SHCSR_USGFAULTACT_Msk (1UL << SCB_SHCSR_USGFAULTACT_Pos) /*!< SCB SHCSR: USGFAULTACT Mask */ + +#define SCB_SHCSR_BUSFAULTACT_Pos 1U /*!< SCB SHCSR: BUSFAULTACT Position */ +#define SCB_SHCSR_BUSFAULTACT_Msk (1UL << SCB_SHCSR_BUSFAULTACT_Pos) /*!< SCB SHCSR: BUSFAULTACT Mask */ + +#define SCB_SHCSR_MEMFAULTACT_Pos 0U /*!< SCB SHCSR: MEMFAULTACT Position */ +#define SCB_SHCSR_MEMFAULTACT_Msk (1UL /*<< SCB_SHCSR_MEMFAULTACT_Pos*/) /*!< SCB SHCSR: MEMFAULTACT Mask */ + +/* SCB Configurable Fault Status Register Definitions */ +#define SCB_CFSR_USGFAULTSR_Pos 16U /*!< SCB CFSR: Usage Fault Status Register Position */ +#define SCB_CFSR_USGFAULTSR_Msk (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos) /*!< SCB CFSR: Usage Fault Status Register Mask */ + +#define SCB_CFSR_BUSFAULTSR_Pos 8U /*!< SCB CFSR: Bus Fault Status Register Position */ +#define SCB_CFSR_BUSFAULTSR_Msk (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos) /*!< SCB CFSR: Bus Fault Status Register Mask */ + +#define SCB_CFSR_MEMFAULTSR_Pos 0U /*!< SCB CFSR: Memory Manage Fault Status Register Position */ +#define SCB_CFSR_MEMFAULTSR_Msk (0xFFUL /*<< SCB_CFSR_MEMFAULTSR_Pos*/) /*!< SCB CFSR: Memory Manage Fault Status Register Mask */ + +/* MemManage Fault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_MMARVALID_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 7U) /*!< SCB CFSR (MMFSR): MMARVALID Position */ +#define SCB_CFSR_MMARVALID_Msk (1UL << SCB_CFSR_MMARVALID_Pos) /*!< SCB CFSR (MMFSR): MMARVALID Mask */ + +#define SCB_CFSR_MSTKERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 4U) /*!< SCB CFSR (MMFSR): MSTKERR Position */ +#define SCB_CFSR_MSTKERR_Msk (1UL << SCB_CFSR_MSTKERR_Pos) /*!< SCB CFSR (MMFSR): MSTKERR Mask */ + +#define SCB_CFSR_MUNSTKERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 3U) /*!< SCB CFSR (MMFSR): MUNSTKERR Position */ +#define SCB_CFSR_MUNSTKERR_Msk (1UL << SCB_CFSR_MUNSTKERR_Pos) /*!< SCB CFSR (MMFSR): MUNSTKERR Mask */ + +#define SCB_CFSR_DACCVIOL_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 1U) /*!< SCB CFSR (MMFSR): DACCVIOL Position */ +#define SCB_CFSR_DACCVIOL_Msk (1UL << SCB_CFSR_DACCVIOL_Pos) /*!< SCB CFSR (MMFSR): DACCVIOL Mask */ + +#define SCB_CFSR_IACCVIOL_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 0U) /*!< SCB CFSR (MMFSR): IACCVIOL Position */ +#define SCB_CFSR_IACCVIOL_Msk (1UL /*<< SCB_CFSR_IACCVIOL_Pos*/) /*!< SCB CFSR (MMFSR): IACCVIOL Mask */ + +/* BusFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_BFARVALID_Pos (SCB_CFSR_BUSFAULTSR_Pos + 7U) /*!< SCB CFSR (BFSR): BFARVALID Position */ +#define SCB_CFSR_BFARVALID_Msk (1UL << SCB_CFSR_BFARVALID_Pos) /*!< SCB CFSR (BFSR): BFARVALID Mask */ + +#define SCB_CFSR_STKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 4U) /*!< SCB CFSR (BFSR): STKERR Position */ +#define SCB_CFSR_STKERR_Msk (1UL << SCB_CFSR_STKERR_Pos) /*!< SCB CFSR (BFSR): STKERR Mask */ + +#define SCB_CFSR_UNSTKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 3U) /*!< SCB CFSR (BFSR): UNSTKERR Position */ +#define SCB_CFSR_UNSTKERR_Msk (1UL << SCB_CFSR_UNSTKERR_Pos) /*!< SCB CFSR (BFSR): UNSTKERR Mask */ + +#define SCB_CFSR_IMPRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 2U) /*!< SCB CFSR (BFSR): IMPRECISERR Position */ +#define SCB_CFSR_IMPRECISERR_Msk (1UL << SCB_CFSR_IMPRECISERR_Pos) /*!< SCB CFSR (BFSR): IMPRECISERR Mask */ + +#define SCB_CFSR_PRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 1U) /*!< SCB CFSR (BFSR): PRECISERR Position */ +#define SCB_CFSR_PRECISERR_Msk (1UL << SCB_CFSR_PRECISERR_Pos) /*!< SCB CFSR (BFSR): PRECISERR Mask */ + +#define SCB_CFSR_IBUSERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 0U) /*!< SCB CFSR (BFSR): IBUSERR Position */ +#define SCB_CFSR_IBUSERR_Msk (1UL << SCB_CFSR_IBUSERR_Pos) /*!< SCB CFSR (BFSR): IBUSERR Mask */ + +/* UsageFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_DIVBYZERO_Pos (SCB_CFSR_USGFAULTSR_Pos + 9U) /*!< SCB CFSR (UFSR): DIVBYZERO Position */ +#define SCB_CFSR_DIVBYZERO_Msk (1UL << SCB_CFSR_DIVBYZERO_Pos) /*!< SCB CFSR (UFSR): DIVBYZERO Mask */ + +#define SCB_CFSR_UNALIGNED_Pos (SCB_CFSR_USGFAULTSR_Pos + 8U) /*!< SCB CFSR (UFSR): UNALIGNED Position */ +#define SCB_CFSR_UNALIGNED_Msk (1UL << SCB_CFSR_UNALIGNED_Pos) /*!< SCB CFSR (UFSR): UNALIGNED Mask */ + +#define SCB_CFSR_NOCP_Pos (SCB_CFSR_USGFAULTSR_Pos + 3U) /*!< SCB CFSR (UFSR): NOCP Position */ +#define SCB_CFSR_NOCP_Msk (1UL << SCB_CFSR_NOCP_Pos) /*!< SCB CFSR (UFSR): NOCP Mask */ + +#define SCB_CFSR_INVPC_Pos (SCB_CFSR_USGFAULTSR_Pos + 2U) /*!< SCB CFSR (UFSR): INVPC Position */ +#define SCB_CFSR_INVPC_Msk (1UL << SCB_CFSR_INVPC_Pos) /*!< SCB CFSR (UFSR): INVPC Mask */ + +#define SCB_CFSR_INVSTATE_Pos (SCB_CFSR_USGFAULTSR_Pos + 1U) /*!< SCB CFSR (UFSR): INVSTATE Position */ +#define SCB_CFSR_INVSTATE_Msk (1UL << SCB_CFSR_INVSTATE_Pos) /*!< SCB CFSR (UFSR): INVSTATE Mask */ + +#define SCB_CFSR_UNDEFINSTR_Pos (SCB_CFSR_USGFAULTSR_Pos + 0U) /*!< SCB CFSR (UFSR): UNDEFINSTR Position */ +#define SCB_CFSR_UNDEFINSTR_Msk (1UL << SCB_CFSR_UNDEFINSTR_Pos) /*!< SCB CFSR (UFSR): UNDEFINSTR Mask */ + +/* SCB Hard Fault Status Register Definitions */ +#define SCB_HFSR_DEBUGEVT_Pos 31U /*!< SCB HFSR: DEBUGEVT Position */ +#define SCB_HFSR_DEBUGEVT_Msk (1UL << SCB_HFSR_DEBUGEVT_Pos) /*!< SCB HFSR: DEBUGEVT Mask */ + +#define SCB_HFSR_FORCED_Pos 30U /*!< SCB HFSR: FORCED Position */ +#define SCB_HFSR_FORCED_Msk (1UL << SCB_HFSR_FORCED_Pos) /*!< SCB HFSR: FORCED Mask */ + +#define SCB_HFSR_VECTTBL_Pos 1U /*!< SCB HFSR: VECTTBL Position */ +#define SCB_HFSR_VECTTBL_Msk (1UL << SCB_HFSR_VECTTBL_Pos) /*!< SCB HFSR: VECTTBL Mask */ + +/* SCB Debug Fault Status Register Definitions */ +#define SCB_DFSR_EXTERNAL_Pos 4U /*!< SCB DFSR: EXTERNAL Position */ +#define SCB_DFSR_EXTERNAL_Msk (1UL << SCB_DFSR_EXTERNAL_Pos) /*!< SCB DFSR: EXTERNAL Mask */ + +#define SCB_DFSR_VCATCH_Pos 3U /*!< SCB DFSR: VCATCH Position */ +#define SCB_DFSR_VCATCH_Msk (1UL << SCB_DFSR_VCATCH_Pos) /*!< SCB DFSR: VCATCH Mask */ + +#define SCB_DFSR_DWTTRAP_Pos 2U /*!< SCB DFSR: DWTTRAP Position */ +#define SCB_DFSR_DWTTRAP_Msk (1UL << SCB_DFSR_DWTTRAP_Pos) /*!< SCB DFSR: DWTTRAP Mask */ + +#define SCB_DFSR_BKPT_Pos 1U /*!< SCB DFSR: BKPT Position */ +#define SCB_DFSR_BKPT_Msk (1UL << SCB_DFSR_BKPT_Pos) /*!< SCB DFSR: BKPT Mask */ + +#define SCB_DFSR_HALTED_Pos 0U /*!< SCB DFSR: HALTED Position */ +#define SCB_DFSR_HALTED_Msk (1UL /*<< SCB_DFSR_HALTED_Pos*/) /*!< SCB DFSR: HALTED Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB) + \brief Type definitions for the System Control and ID Register not in the SCB + @{ + */ + +/** + \brief Structure type to access the System Control and ID Register not in the SCB. + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IM uint32_t ICTR; /*!< Offset: 0x004 (R/ ) Interrupt Controller Type Register */ +#if defined (__CM3_REV) && (__CM3_REV >= 0x200U) + __IOM uint32_t ACTLR; /*!< Offset: 0x008 (R/W) Auxiliary Control Register */ +#else + uint32_t RESERVED1[1U]; +#endif +} SCnSCB_Type; + +/* Interrupt Controller Type Register Definitions */ +#define SCnSCB_ICTR_INTLINESNUM_Pos 0U /*!< ICTR: INTLINESNUM Position */ +#define SCnSCB_ICTR_INTLINESNUM_Msk (0xFUL /*<< SCnSCB_ICTR_INTLINESNUM_Pos*/) /*!< ICTR: INTLINESNUM Mask */ + +/* Auxiliary Control Register Definitions */ + +#define SCnSCB_ACTLR_DISFOLD_Pos 2U /*!< ACTLR: DISFOLD Position */ +#define SCnSCB_ACTLR_DISFOLD_Msk (1UL << SCnSCB_ACTLR_DISFOLD_Pos) /*!< ACTLR: DISFOLD Mask */ + +#define SCnSCB_ACTLR_DISDEFWBUF_Pos 1U /*!< ACTLR: DISDEFWBUF Position */ +#define SCnSCB_ACTLR_DISDEFWBUF_Msk (1UL << SCnSCB_ACTLR_DISDEFWBUF_Pos) /*!< ACTLR: DISDEFWBUF Mask */ + +#define SCnSCB_ACTLR_DISMCYCINT_Pos 0U /*!< ACTLR: DISMCYCINT Position */ +#define SCnSCB_ACTLR_DISMCYCINT_Msk (1UL /*<< SCnSCB_ACTLR_DISMCYCINT_Pos*/) /*!< ACTLR: DISMCYCINT Mask */ + +/*@} end of group CMSIS_SCnotSCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick System Tick Timer (SysTick) + \brief Type definitions for the System Timer Registers. + @{ + */ + +/** + \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_ITM Instrumentation Trace Macrocell (ITM) + \brief Type definitions for the Instrumentation Trace Macrocell (ITM) + @{ + */ + +/** + \brief Structure type to access the Instrumentation Trace Macrocell Register (ITM). + */ +typedef struct +{ + __OM union + { + __OM uint8_t u8; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 8-bit */ + __OM uint16_t u16; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 16-bit */ + __OM uint32_t u32; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 32-bit */ + } PORT [32U]; /*!< Offset: 0x000 ( /W) ITM Stimulus Port Registers */ + uint32_t RESERVED0[864U]; + __IOM uint32_t TER; /*!< Offset: 0xE00 (R/W) ITM Trace Enable Register */ + uint32_t RESERVED1[15U]; + __IOM uint32_t TPR; /*!< Offset: 0xE40 (R/W) ITM Trace Privilege Register */ + uint32_t RESERVED2[15U]; + __IOM uint32_t TCR; /*!< Offset: 0xE80 (R/W) ITM Trace Control Register */ + uint32_t RESERVED3[29U]; + __OM uint32_t IWR; /*!< Offset: 0xEF8 ( /W) ITM Integration Write Register */ + __IM uint32_t IRR; /*!< Offset: 0xEFC (R/ ) ITM Integration Read Register */ + __IOM uint32_t IMCR; /*!< Offset: 0xF00 (R/W) ITM Integration Mode Control Register */ + uint32_t RESERVED4[43U]; + __OM uint32_t LAR; /*!< Offset: 0xFB0 ( /W) ITM Lock Access Register */ + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) ITM Lock Status Register */ + uint32_t RESERVED5[6U]; + __IM uint32_t PID4; /*!< Offset: 0xFD0 (R/ ) ITM Peripheral Identification Register #4 */ + __IM uint32_t PID5; /*!< Offset: 0xFD4 (R/ ) ITM Peripheral Identification Register #5 */ + __IM uint32_t PID6; /*!< Offset: 0xFD8 (R/ ) ITM Peripheral Identification Register #6 */ + __IM uint32_t PID7; /*!< Offset: 0xFDC (R/ ) ITM Peripheral Identification Register #7 */ + __IM uint32_t PID0; /*!< Offset: 0xFE0 (R/ ) ITM Peripheral Identification Register #0 */ + __IM uint32_t PID1; /*!< Offset: 0xFE4 (R/ ) ITM Peripheral Identification Register #1 */ + __IM uint32_t PID2; /*!< Offset: 0xFE8 (R/ ) ITM Peripheral Identification Register #2 */ + __IM uint32_t PID3; /*!< Offset: 0xFEC (R/ ) ITM Peripheral Identification Register #3 */ + __IM uint32_t CID0; /*!< Offset: 0xFF0 (R/ ) ITM Component Identification Register #0 */ + __IM uint32_t CID1; /*!< Offset: 0xFF4 (R/ ) ITM Component Identification Register #1 */ + __IM uint32_t CID2; /*!< Offset: 0xFF8 (R/ ) ITM Component Identification Register #2 */ + __IM uint32_t CID3; /*!< Offset: 0xFFC (R/ ) ITM Component Identification Register #3 */ +} ITM_Type; + +/* ITM Trace Privilege Register Definitions */ +#define ITM_TPR_PRIVMASK_Pos 0U /*!< ITM TPR: PRIVMASK Position */ +#define ITM_TPR_PRIVMASK_Msk (0xFFFFFFFFUL /*<< ITM_TPR_PRIVMASK_Pos*/) /*!< ITM TPR: PRIVMASK Mask */ + +/* ITM Trace Control Register Definitions */ +#define ITM_TCR_BUSY_Pos 23U /*!< ITM TCR: BUSY Position */ +#define ITM_TCR_BUSY_Msk (1UL << ITM_TCR_BUSY_Pos) /*!< ITM TCR: BUSY Mask */ + +#define ITM_TCR_TraceBusID_Pos 16U /*!< ITM TCR: ATBID Position */ +#define ITM_TCR_TraceBusID_Msk (0x7FUL << ITM_TCR_TraceBusID_Pos) /*!< ITM TCR: ATBID Mask */ + +#define ITM_TCR_GTSFREQ_Pos 10U /*!< ITM TCR: Global timestamp frequency Position */ +#define ITM_TCR_GTSFREQ_Msk (3UL << ITM_TCR_GTSFREQ_Pos) /*!< ITM TCR: Global timestamp frequency Mask */ + +#define ITM_TCR_TSPrescale_Pos 8U /*!< ITM TCR: TSPrescale Position */ +#define ITM_TCR_TSPrescale_Msk (3UL << ITM_TCR_TSPrescale_Pos) /*!< ITM TCR: TSPrescale Mask */ + +#define ITM_TCR_SWOENA_Pos 4U /*!< ITM TCR: SWOENA Position */ +#define ITM_TCR_SWOENA_Msk (1UL << ITM_TCR_SWOENA_Pos) /*!< ITM TCR: SWOENA Mask */ + +#define ITM_TCR_DWTENA_Pos 3U /*!< ITM TCR: DWTENA Position */ +#define ITM_TCR_DWTENA_Msk (1UL << ITM_TCR_DWTENA_Pos) /*!< ITM TCR: DWTENA Mask */ + +#define ITM_TCR_SYNCENA_Pos 2U /*!< ITM TCR: SYNCENA Position */ +#define ITM_TCR_SYNCENA_Msk (1UL << ITM_TCR_SYNCENA_Pos) /*!< ITM TCR: SYNCENA Mask */ + +#define ITM_TCR_TSENA_Pos 1U /*!< ITM TCR: TSENA Position */ +#define ITM_TCR_TSENA_Msk (1UL << ITM_TCR_TSENA_Pos) /*!< ITM TCR: TSENA Mask */ + +#define ITM_TCR_ITMENA_Pos 0U /*!< ITM TCR: ITM Enable bit Position */ +#define ITM_TCR_ITMENA_Msk (1UL /*<< ITM_TCR_ITMENA_Pos*/) /*!< ITM TCR: ITM Enable bit Mask */ + +/* ITM Integration Write Register Definitions */ +#define ITM_IWR_ATVALIDM_Pos 0U /*!< ITM IWR: ATVALIDM Position */ +#define ITM_IWR_ATVALIDM_Msk (1UL /*<< ITM_IWR_ATVALIDM_Pos*/) /*!< ITM IWR: ATVALIDM Mask */ + +/* ITM Integration Read Register Definitions */ +#define ITM_IRR_ATREADYM_Pos 0U /*!< ITM IRR: ATREADYM Position */ +#define ITM_IRR_ATREADYM_Msk (1UL /*<< ITM_IRR_ATREADYM_Pos*/) /*!< ITM IRR: ATREADYM Mask */ + +/* ITM Integration Mode Control Register Definitions */ +#define ITM_IMCR_INTEGRATION_Pos 0U /*!< ITM IMCR: INTEGRATION Position */ +#define ITM_IMCR_INTEGRATION_Msk (1UL /*<< ITM_IMCR_INTEGRATION_Pos*/) /*!< ITM IMCR: INTEGRATION Mask */ + +/* ITM Lock Status Register Definitions */ +#define ITM_LSR_ByteAcc_Pos 2U /*!< ITM LSR: ByteAcc Position */ +#define ITM_LSR_ByteAcc_Msk (1UL << ITM_LSR_ByteAcc_Pos) /*!< ITM LSR: ByteAcc Mask */ + +#define ITM_LSR_Access_Pos 1U /*!< ITM LSR: Access Position */ +#define ITM_LSR_Access_Msk (1UL << ITM_LSR_Access_Pos) /*!< ITM LSR: Access Mask */ + +#define ITM_LSR_Present_Pos 0U /*!< ITM LSR: Present Position */ +#define ITM_LSR_Present_Msk (1UL /*<< ITM_LSR_Present_Pos*/) /*!< ITM LSR: Present Mask */ + +/*@}*/ /* end of group CMSIS_ITM */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DWT Data Watchpoint and Trace (DWT) + \brief Type definitions for the Data Watchpoint and Trace (DWT) + @{ + */ + +/** + \brief Structure type to access the Data Watchpoint and Trace Register (DWT). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */ + __IOM uint32_t CYCCNT; /*!< Offset: 0x004 (R/W) Cycle Count Register */ + __IOM uint32_t CPICNT; /*!< Offset: 0x008 (R/W) CPI Count Register */ + __IOM uint32_t EXCCNT; /*!< Offset: 0x00C (R/W) Exception Overhead Count Register */ + __IOM uint32_t SLEEPCNT; /*!< Offset: 0x010 (R/W) Sleep Count Register */ + __IOM uint32_t LSUCNT; /*!< Offset: 0x014 (R/W) LSU Count Register */ + __IOM uint32_t FOLDCNT; /*!< Offset: 0x018 (R/W) Folded-instruction Count Register */ + __IM uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register */ + __IOM uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */ + __IOM uint32_t MASK0; /*!< Offset: 0x024 (R/W) Mask Register 0 */ + __IOM uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */ + uint32_t RESERVED0[1U]; + __IOM uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */ + __IOM uint32_t MASK1; /*!< Offset: 0x034 (R/W) Mask Register 1 */ + __IOM uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */ + uint32_t RESERVED1[1U]; + __IOM uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */ + __IOM uint32_t MASK2; /*!< Offset: 0x044 (R/W) Mask Register 2 */ + __IOM uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */ + uint32_t RESERVED2[1U]; + __IOM uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */ + __IOM uint32_t MASK3; /*!< Offset: 0x054 (R/W) Mask Register 3 */ + __IOM uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */ +} DWT_Type; + +/* DWT Control Register Definitions */ +#define DWT_CTRL_NUMCOMP_Pos 28U /*!< DWT CTRL: NUMCOMP Position */ +#define DWT_CTRL_NUMCOMP_Msk (0xFUL << DWT_CTRL_NUMCOMP_Pos) /*!< DWT CTRL: NUMCOMP Mask */ + +#define DWT_CTRL_NOTRCPKT_Pos 27U /*!< DWT CTRL: NOTRCPKT Position */ +#define DWT_CTRL_NOTRCPKT_Msk (0x1UL << DWT_CTRL_NOTRCPKT_Pos) /*!< DWT CTRL: NOTRCPKT Mask */ + +#define DWT_CTRL_NOEXTTRIG_Pos 26U /*!< DWT CTRL: NOEXTTRIG Position */ +#define DWT_CTRL_NOEXTTRIG_Msk (0x1UL << DWT_CTRL_NOEXTTRIG_Pos) /*!< DWT CTRL: NOEXTTRIG Mask */ + +#define DWT_CTRL_NOCYCCNT_Pos 25U /*!< DWT CTRL: NOCYCCNT Position */ +#define DWT_CTRL_NOCYCCNT_Msk (0x1UL << DWT_CTRL_NOCYCCNT_Pos) /*!< DWT CTRL: NOCYCCNT Mask */ + +#define DWT_CTRL_NOPRFCNT_Pos 24U /*!< DWT CTRL: NOPRFCNT Position */ +#define DWT_CTRL_NOPRFCNT_Msk (0x1UL << DWT_CTRL_NOPRFCNT_Pos) /*!< DWT CTRL: NOPRFCNT Mask */ + +#define DWT_CTRL_CYCEVTENA_Pos 22U /*!< DWT CTRL: CYCEVTENA Position */ +#define DWT_CTRL_CYCEVTENA_Msk (0x1UL << DWT_CTRL_CYCEVTENA_Pos) /*!< DWT CTRL: CYCEVTENA Mask */ + +#define DWT_CTRL_FOLDEVTENA_Pos 21U /*!< DWT CTRL: FOLDEVTENA Position */ +#define DWT_CTRL_FOLDEVTENA_Msk (0x1UL << DWT_CTRL_FOLDEVTENA_Pos) /*!< DWT CTRL: FOLDEVTENA Mask */ + +#define DWT_CTRL_LSUEVTENA_Pos 20U /*!< DWT CTRL: LSUEVTENA Position */ +#define DWT_CTRL_LSUEVTENA_Msk (0x1UL << DWT_CTRL_LSUEVTENA_Pos) /*!< DWT CTRL: LSUEVTENA Mask */ + +#define DWT_CTRL_SLEEPEVTENA_Pos 19U /*!< DWT CTRL: SLEEPEVTENA Position */ +#define DWT_CTRL_SLEEPEVTENA_Msk (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos) /*!< DWT CTRL: SLEEPEVTENA Mask */ + +#define DWT_CTRL_EXCEVTENA_Pos 18U /*!< DWT CTRL: EXCEVTENA Position */ +#define DWT_CTRL_EXCEVTENA_Msk (0x1UL << DWT_CTRL_EXCEVTENA_Pos) /*!< DWT CTRL: EXCEVTENA Mask */ + +#define DWT_CTRL_CPIEVTENA_Pos 17U /*!< DWT CTRL: CPIEVTENA Position */ +#define DWT_CTRL_CPIEVTENA_Msk (0x1UL << DWT_CTRL_CPIEVTENA_Pos) /*!< DWT CTRL: CPIEVTENA Mask */ + +#define DWT_CTRL_EXCTRCENA_Pos 16U /*!< DWT CTRL: EXCTRCENA Position */ +#define DWT_CTRL_EXCTRCENA_Msk (0x1UL << DWT_CTRL_EXCTRCENA_Pos) /*!< DWT CTRL: EXCTRCENA Mask */ + +#define DWT_CTRL_PCSAMPLENA_Pos 12U /*!< DWT CTRL: PCSAMPLENA Position */ +#define DWT_CTRL_PCSAMPLENA_Msk (0x1UL << DWT_CTRL_PCSAMPLENA_Pos) /*!< DWT CTRL: PCSAMPLENA Mask */ + +#define DWT_CTRL_SYNCTAP_Pos 10U /*!< DWT CTRL: SYNCTAP Position */ +#define DWT_CTRL_SYNCTAP_Msk (0x3UL << DWT_CTRL_SYNCTAP_Pos) /*!< DWT CTRL: SYNCTAP Mask */ + +#define DWT_CTRL_CYCTAP_Pos 9U /*!< DWT CTRL: CYCTAP Position */ +#define DWT_CTRL_CYCTAP_Msk (0x1UL << DWT_CTRL_CYCTAP_Pos) /*!< DWT CTRL: CYCTAP Mask */ + +#define DWT_CTRL_POSTINIT_Pos 5U /*!< DWT CTRL: POSTINIT Position */ +#define DWT_CTRL_POSTINIT_Msk (0xFUL << DWT_CTRL_POSTINIT_Pos) /*!< DWT CTRL: POSTINIT Mask */ + +#define DWT_CTRL_POSTPRESET_Pos 1U /*!< DWT CTRL: POSTPRESET Position */ +#define DWT_CTRL_POSTPRESET_Msk (0xFUL << DWT_CTRL_POSTPRESET_Pos) /*!< DWT CTRL: POSTPRESET Mask */ + +#define DWT_CTRL_CYCCNTENA_Pos 0U /*!< DWT CTRL: CYCCNTENA Position */ +#define DWT_CTRL_CYCCNTENA_Msk (0x1UL /*<< DWT_CTRL_CYCCNTENA_Pos*/) /*!< DWT CTRL: CYCCNTENA Mask */ + +/* DWT CPI Count Register Definitions */ +#define DWT_CPICNT_CPICNT_Pos 0U /*!< DWT CPICNT: CPICNT Position */ +#define DWT_CPICNT_CPICNT_Msk (0xFFUL /*<< DWT_CPICNT_CPICNT_Pos*/) /*!< DWT CPICNT: CPICNT Mask */ + +/* DWT Exception Overhead Count Register Definitions */ +#define DWT_EXCCNT_EXCCNT_Pos 0U /*!< DWT EXCCNT: EXCCNT Position */ +#define DWT_EXCCNT_EXCCNT_Msk (0xFFUL /*<< DWT_EXCCNT_EXCCNT_Pos*/) /*!< DWT EXCCNT: EXCCNT Mask */ + +/* DWT Sleep Count Register Definitions */ +#define DWT_SLEEPCNT_SLEEPCNT_Pos 0U /*!< DWT SLEEPCNT: SLEEPCNT Position */ +#define DWT_SLEEPCNT_SLEEPCNT_Msk (0xFFUL /*<< DWT_SLEEPCNT_SLEEPCNT_Pos*/) /*!< DWT SLEEPCNT: SLEEPCNT Mask */ + +/* DWT LSU Count Register Definitions */ +#define DWT_LSUCNT_LSUCNT_Pos 0U /*!< DWT LSUCNT: LSUCNT Position */ +#define DWT_LSUCNT_LSUCNT_Msk (0xFFUL /*<< DWT_LSUCNT_LSUCNT_Pos*/) /*!< DWT LSUCNT: LSUCNT Mask */ + +/* DWT Folded-instruction Count Register Definitions */ +#define DWT_FOLDCNT_FOLDCNT_Pos 0U /*!< DWT FOLDCNT: FOLDCNT Position */ +#define DWT_FOLDCNT_FOLDCNT_Msk (0xFFUL /*<< DWT_FOLDCNT_FOLDCNT_Pos*/) /*!< DWT FOLDCNT: FOLDCNT Mask */ + +/* DWT Comparator Mask Register Definitions */ +#define DWT_MASK_MASK_Pos 0U /*!< DWT MASK: MASK Position */ +#define DWT_MASK_MASK_Msk (0x1FUL /*<< DWT_MASK_MASK_Pos*/) /*!< DWT MASK: MASK Mask */ + +/* DWT Comparator Function Register Definitions */ +#define DWT_FUNCTION_MATCHED_Pos 24U /*!< DWT FUNCTION: MATCHED Position */ +#define DWT_FUNCTION_MATCHED_Msk (0x1UL << DWT_FUNCTION_MATCHED_Pos) /*!< DWT FUNCTION: MATCHED Mask */ + +#define DWT_FUNCTION_DATAVADDR1_Pos 16U /*!< DWT FUNCTION: DATAVADDR1 Position */ +#define DWT_FUNCTION_DATAVADDR1_Msk (0xFUL << DWT_FUNCTION_DATAVADDR1_Pos) /*!< DWT FUNCTION: DATAVADDR1 Mask */ + +#define DWT_FUNCTION_DATAVADDR0_Pos 12U /*!< DWT FUNCTION: DATAVADDR0 Position */ +#define DWT_FUNCTION_DATAVADDR0_Msk (0xFUL << DWT_FUNCTION_DATAVADDR0_Pos) /*!< DWT FUNCTION: DATAVADDR0 Mask */ + +#define DWT_FUNCTION_DATAVSIZE_Pos 10U /*!< DWT FUNCTION: DATAVSIZE Position */ +#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */ + +#define DWT_FUNCTION_LNK1ENA_Pos 9U /*!< DWT FUNCTION: LNK1ENA Position */ +#define DWT_FUNCTION_LNK1ENA_Msk (0x1UL << DWT_FUNCTION_LNK1ENA_Pos) /*!< DWT FUNCTION: LNK1ENA Mask */ + +#define DWT_FUNCTION_DATAVMATCH_Pos 8U /*!< DWT FUNCTION: DATAVMATCH Position */ +#define DWT_FUNCTION_DATAVMATCH_Msk (0x1UL << DWT_FUNCTION_DATAVMATCH_Pos) /*!< DWT FUNCTION: DATAVMATCH Mask */ + +#define DWT_FUNCTION_CYCMATCH_Pos 7U /*!< DWT FUNCTION: CYCMATCH Position */ +#define DWT_FUNCTION_CYCMATCH_Msk (0x1UL << DWT_FUNCTION_CYCMATCH_Pos) /*!< DWT FUNCTION: CYCMATCH Mask */ + +#define DWT_FUNCTION_EMITRANGE_Pos 5U /*!< DWT FUNCTION: EMITRANGE Position */ +#define DWT_FUNCTION_EMITRANGE_Msk (0x1UL << DWT_FUNCTION_EMITRANGE_Pos) /*!< DWT FUNCTION: EMITRANGE Mask */ + +#define DWT_FUNCTION_FUNCTION_Pos 0U /*!< DWT FUNCTION: FUNCTION Position */ +#define DWT_FUNCTION_FUNCTION_Msk (0xFUL /*<< DWT_FUNCTION_FUNCTION_Pos*/) /*!< DWT FUNCTION: FUNCTION Mask */ + +/*@}*/ /* end of group CMSIS_DWT */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_TPI Trace Port Interface (TPI) + \brief Type definitions for the Trace Port Interface (TPI) + @{ + */ + +/** + \brief Structure type to access the Trace Port Interface Register (TPI). + */ +typedef struct +{ + __IM uint32_t SSPSR; /*!< Offset: 0x000 (R/ ) Supported Parallel Port Size Register */ + __IOM uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Size Register */ + uint32_t RESERVED0[2U]; + __IOM uint32_t ACPR; /*!< Offset: 0x010 (R/W) Asynchronous Clock Prescaler Register */ + uint32_t RESERVED1[55U]; + __IOM uint32_t SPPR; /*!< Offset: 0x0F0 (R/W) Selected Pin Protocol Register */ + uint32_t RESERVED2[131U]; + __IM uint32_t FFSR; /*!< Offset: 0x300 (R/ ) Formatter and Flush Status Register */ + __IOM uint32_t FFCR; /*!< Offset: 0x304 (R/W) Formatter and Flush Control Register */ + __IM uint32_t FSCR; /*!< Offset: 0x308 (R/ ) Formatter Synchronization Counter Register */ + uint32_t RESERVED3[759U]; + __IM uint32_t TRIGGER; /*!< Offset: 0xEE8 (R/ ) TRIGGER Register */ + __IM uint32_t FIFO0; /*!< Offset: 0xEEC (R/ ) Integration ETM Data */ + __IM uint32_t ITATBCTR2; /*!< Offset: 0xEF0 (R/ ) ITATBCTR2 */ + uint32_t RESERVED4[1U]; + __IM uint32_t ITATBCTR0; /*!< Offset: 0xEF8 (R/ ) ITATBCTR0 */ + __IM uint32_t FIFO1; /*!< Offset: 0xEFC (R/ ) Integration ITM Data */ + __IOM uint32_t ITCTRL; /*!< Offset: 0xF00 (R/W) Integration Mode Control */ + uint32_t RESERVED5[39U]; + __IOM uint32_t CLAIMSET; /*!< Offset: 0xFA0 (R/W) Claim tag set */ + __IOM uint32_t CLAIMCLR; /*!< Offset: 0xFA4 (R/W) Claim tag clear */ + uint32_t RESERVED7[8U]; + __IM uint32_t DEVID; /*!< Offset: 0xFC8 (R/ ) TPIU_DEVID */ + __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) TPIU_DEVTYPE */ +} TPI_Type; + +/* TPI Asynchronous Clock Prescaler Register Definitions */ +#define TPI_ACPR_PRESCALER_Pos 0U /*!< TPI ACPR: PRESCALER Position */ +#define TPI_ACPR_PRESCALER_Msk (0x1FFFUL /*<< TPI_ACPR_PRESCALER_Pos*/) /*!< TPI ACPR: PRESCALER Mask */ + +/* TPI Selected Pin Protocol Register Definitions */ +#define TPI_SPPR_TXMODE_Pos 0U /*!< TPI SPPR: TXMODE Position */ +#define TPI_SPPR_TXMODE_Msk (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/) /*!< TPI SPPR: TXMODE Mask */ + +/* TPI Formatter and Flush Status Register Definitions */ +#define TPI_FFSR_FtNonStop_Pos 3U /*!< TPI FFSR: FtNonStop Position */ +#define TPI_FFSR_FtNonStop_Msk (0x1UL << TPI_FFSR_FtNonStop_Pos) /*!< TPI FFSR: FtNonStop Mask */ + +#define TPI_FFSR_TCPresent_Pos 2U /*!< TPI FFSR: TCPresent Position */ +#define TPI_FFSR_TCPresent_Msk (0x1UL << TPI_FFSR_TCPresent_Pos) /*!< TPI FFSR: TCPresent Mask */ + +#define TPI_FFSR_FtStopped_Pos 1U /*!< TPI FFSR: FtStopped Position */ +#define TPI_FFSR_FtStopped_Msk (0x1UL << TPI_FFSR_FtStopped_Pos) /*!< TPI FFSR: FtStopped Mask */ + +#define TPI_FFSR_FlInProg_Pos 0U /*!< TPI FFSR: FlInProg Position */ +#define TPI_FFSR_FlInProg_Msk (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/) /*!< TPI FFSR: FlInProg Mask */ + +/* TPI Formatter and Flush Control Register Definitions */ +#define TPI_FFCR_TrigIn_Pos 8U /*!< TPI FFCR: TrigIn Position */ +#define TPI_FFCR_TrigIn_Msk (0x1UL << TPI_FFCR_TrigIn_Pos) /*!< TPI FFCR: TrigIn Mask */ + +#define TPI_FFCR_EnFCont_Pos 1U /*!< TPI FFCR: EnFCont Position */ +#define TPI_FFCR_EnFCont_Msk (0x1UL << TPI_FFCR_EnFCont_Pos) /*!< TPI FFCR: EnFCont Mask */ + +/* TPI TRIGGER Register Definitions */ +#define TPI_TRIGGER_TRIGGER_Pos 0U /*!< TPI TRIGGER: TRIGGER Position */ +#define TPI_TRIGGER_TRIGGER_Msk (0x1UL /*<< TPI_TRIGGER_TRIGGER_Pos*/) /*!< TPI TRIGGER: TRIGGER Mask */ + +/* TPI Integration ETM Data Register Definitions (FIFO0) */ +#define TPI_FIFO0_ITM_ATVALID_Pos 29U /*!< TPI FIFO0: ITM_ATVALID Position */ +#define TPI_FIFO0_ITM_ATVALID_Msk (0x3UL << TPI_FIFO0_ITM_ATVALID_Pos) /*!< TPI FIFO0: ITM_ATVALID Mask */ + +#define TPI_FIFO0_ITM_bytecount_Pos 27U /*!< TPI FIFO0: ITM_bytecount Position */ +#define TPI_FIFO0_ITM_bytecount_Msk (0x3UL << TPI_FIFO0_ITM_bytecount_Pos) /*!< TPI FIFO0: ITM_bytecount Mask */ + +#define TPI_FIFO0_ETM_ATVALID_Pos 26U /*!< TPI FIFO0: ETM_ATVALID Position */ +#define TPI_FIFO0_ETM_ATVALID_Msk (0x3UL << TPI_FIFO0_ETM_ATVALID_Pos) /*!< TPI FIFO0: ETM_ATVALID Mask */ + +#define TPI_FIFO0_ETM_bytecount_Pos 24U /*!< TPI FIFO0: ETM_bytecount Position */ +#define TPI_FIFO0_ETM_bytecount_Msk (0x3UL << TPI_FIFO0_ETM_bytecount_Pos) /*!< TPI FIFO0: ETM_bytecount Mask */ + +#define TPI_FIFO0_ETM2_Pos 16U /*!< TPI FIFO0: ETM2 Position */ +#define TPI_FIFO0_ETM2_Msk (0xFFUL << TPI_FIFO0_ETM2_Pos) /*!< TPI FIFO0: ETM2 Mask */ + +#define TPI_FIFO0_ETM1_Pos 8U /*!< TPI FIFO0: ETM1 Position */ +#define TPI_FIFO0_ETM1_Msk (0xFFUL << TPI_FIFO0_ETM1_Pos) /*!< TPI FIFO0: ETM1 Mask */ + +#define TPI_FIFO0_ETM0_Pos 0U /*!< TPI FIFO0: ETM0 Position */ +#define TPI_FIFO0_ETM0_Msk (0xFFUL /*<< TPI_FIFO0_ETM0_Pos*/) /*!< TPI FIFO0: ETM0 Mask */ + +/* TPI ITATBCTR2 Register Definitions */ +#define TPI_ITATBCTR2_ATREADY2_Pos 0U /*!< TPI ITATBCTR2: ATREADY2 Position */ +#define TPI_ITATBCTR2_ATREADY2_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY2_Pos*/) /*!< TPI ITATBCTR2: ATREADY2 Mask */ + +#define TPI_ITATBCTR2_ATREADY1_Pos 0U /*!< TPI ITATBCTR2: ATREADY1 Position */ +#define TPI_ITATBCTR2_ATREADY1_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY1_Pos*/) /*!< TPI ITATBCTR2: ATREADY1 Mask */ + +/* TPI Integration ITM Data Register Definitions (FIFO1) */ +#define TPI_FIFO1_ITM_ATVALID_Pos 29U /*!< TPI FIFO1: ITM_ATVALID Position */ +#define TPI_FIFO1_ITM_ATVALID_Msk (0x3UL << TPI_FIFO1_ITM_ATVALID_Pos) /*!< TPI FIFO1: ITM_ATVALID Mask */ + +#define TPI_FIFO1_ITM_bytecount_Pos 27U /*!< TPI FIFO1: ITM_bytecount Position */ +#define TPI_FIFO1_ITM_bytecount_Msk (0x3UL << TPI_FIFO1_ITM_bytecount_Pos) /*!< TPI FIFO1: ITM_bytecount Mask */ + +#define TPI_FIFO1_ETM_ATVALID_Pos 26U /*!< TPI FIFO1: ETM_ATVALID Position */ +#define TPI_FIFO1_ETM_ATVALID_Msk (0x3UL << TPI_FIFO1_ETM_ATVALID_Pos) /*!< TPI FIFO1: ETM_ATVALID Mask */ + +#define TPI_FIFO1_ETM_bytecount_Pos 24U /*!< TPI FIFO1: ETM_bytecount Position */ +#define TPI_FIFO1_ETM_bytecount_Msk (0x3UL << TPI_FIFO1_ETM_bytecount_Pos) /*!< TPI FIFO1: ETM_bytecount Mask */ + +#define TPI_FIFO1_ITM2_Pos 16U /*!< TPI FIFO1: ITM2 Position */ +#define TPI_FIFO1_ITM2_Msk (0xFFUL << TPI_FIFO1_ITM2_Pos) /*!< TPI FIFO1: ITM2 Mask */ + +#define TPI_FIFO1_ITM1_Pos 8U /*!< TPI FIFO1: ITM1 Position */ +#define TPI_FIFO1_ITM1_Msk (0xFFUL << TPI_FIFO1_ITM1_Pos) /*!< TPI FIFO1: ITM1 Mask */ + +#define TPI_FIFO1_ITM0_Pos 0U /*!< TPI FIFO1: ITM0 Position */ +#define TPI_FIFO1_ITM0_Msk (0xFFUL /*<< TPI_FIFO1_ITM0_Pos*/) /*!< TPI FIFO1: ITM0 Mask */ + +/* TPI ITATBCTR0 Register Definitions */ +#define TPI_ITATBCTR0_ATREADY2_Pos 0U /*!< TPI ITATBCTR0: ATREADY2 Position */ +#define TPI_ITATBCTR0_ATREADY2_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY2_Pos*/) /*!< TPI ITATBCTR0: ATREADY2 Mask */ + +#define TPI_ITATBCTR0_ATREADY1_Pos 0U /*!< TPI ITATBCTR0: ATREADY1 Position */ +#define TPI_ITATBCTR0_ATREADY1_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY1_Pos*/) /*!< TPI ITATBCTR0: ATREADY1 Mask */ + +/* TPI Integration Mode Control Register Definitions */ +#define TPI_ITCTRL_Mode_Pos 0U /*!< TPI ITCTRL: Mode Position */ +#define TPI_ITCTRL_Mode_Msk (0x3UL /*<< TPI_ITCTRL_Mode_Pos*/) /*!< TPI ITCTRL: Mode Mask */ + +/* TPI DEVID Register Definitions */ +#define TPI_DEVID_NRZVALID_Pos 11U /*!< TPI DEVID: NRZVALID Position */ +#define TPI_DEVID_NRZVALID_Msk (0x1UL << TPI_DEVID_NRZVALID_Pos) /*!< TPI DEVID: NRZVALID Mask */ + +#define TPI_DEVID_MANCVALID_Pos 10U /*!< TPI DEVID: MANCVALID Position */ +#define TPI_DEVID_MANCVALID_Msk (0x1UL << TPI_DEVID_MANCVALID_Pos) /*!< TPI DEVID: MANCVALID Mask */ + +#define TPI_DEVID_PTINVALID_Pos 9U /*!< TPI DEVID: PTINVALID Position */ +#define TPI_DEVID_PTINVALID_Msk (0x1UL << TPI_DEVID_PTINVALID_Pos) /*!< TPI DEVID: PTINVALID Mask */ + +#define TPI_DEVID_MinBufSz_Pos 6U /*!< TPI DEVID: MinBufSz Position */ +#define TPI_DEVID_MinBufSz_Msk (0x7UL << TPI_DEVID_MinBufSz_Pos) /*!< TPI DEVID: MinBufSz Mask */ + +#define TPI_DEVID_AsynClkIn_Pos 5U /*!< TPI DEVID: AsynClkIn Position */ +#define TPI_DEVID_AsynClkIn_Msk (0x1UL << TPI_DEVID_AsynClkIn_Pos) /*!< TPI DEVID: AsynClkIn Mask */ + +#define TPI_DEVID_NrTraceInput_Pos 0U /*!< TPI DEVID: NrTraceInput Position */ +#define TPI_DEVID_NrTraceInput_Msk (0x1FUL /*<< TPI_DEVID_NrTraceInput_Pos*/) /*!< TPI DEVID: NrTraceInput Mask */ + +/* TPI DEVTYPE Register Definitions */ +#define TPI_DEVTYPE_SubType_Pos 4U /*!< TPI DEVTYPE: SubType Position */ +#define TPI_DEVTYPE_SubType_Msk (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/) /*!< TPI DEVTYPE: SubType Mask */ + +#define TPI_DEVTYPE_MajorType_Pos 0U /*!< TPI DEVTYPE: MajorType Position */ +#define TPI_DEVTYPE_MajorType_Msk (0xFUL << TPI_DEVTYPE_MajorType_Pos) /*!< TPI DEVTYPE: MajorType Mask */ + +/*@}*/ /* end of group CMSIS_TPI */ + + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_MPU Memory Protection Unit (MPU) + \brief Type definitions for the Memory Protection Unit (MPU) + @{ + */ + +/** + \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region RNRber Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IOM uint32_t RASR; /*!< Offset: 0x010 (R/W) MPU Region Attribute and Size Register */ + __IOM uint32_t RBAR_A1; /*!< Offset: 0x014 (R/W) MPU Alias 1 Region Base Address Register */ + __IOM uint32_t RASR_A1; /*!< Offset: 0x018 (R/W) MPU Alias 1 Region Attribute and Size Register */ + __IOM uint32_t RBAR_A2; /*!< Offset: 0x01C (R/W) MPU Alias 2 Region Base Address Register */ + __IOM uint32_t RASR_A2; /*!< Offset: 0x020 (R/W) MPU Alias 2 Region Attribute and Size Register */ + __IOM uint32_t RBAR_A3; /*!< Offset: 0x024 (R/W) MPU Alias 3 Region Base Address Register */ + __IOM uint32_t RASR_A3; /*!< Offset: 0x028 (R/W) MPU Alias 3 Region Attribute and Size Register */ +} MPU_Type; + +#define MPU_TYPE_RALIASES 4U + +/* MPU Type Register Definitions */ +#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register Definitions */ +#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register Definitions */ +#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register Definitions */ +#define MPU_RBAR_ADDR_Pos 5U /*!< MPU RBAR: ADDR Position */ +#define MPU_RBAR_ADDR_Msk (0x7FFFFFFUL << MPU_RBAR_ADDR_Pos) /*!< MPU RBAR: ADDR Mask */ + +#define MPU_RBAR_VALID_Pos 4U /*!< MPU RBAR: VALID Position */ +#define MPU_RBAR_VALID_Msk (1UL << MPU_RBAR_VALID_Pos) /*!< MPU RBAR: VALID Mask */ + +#define MPU_RBAR_REGION_Pos 0U /*!< MPU RBAR: REGION Position */ +#define MPU_RBAR_REGION_Msk (0xFUL /*<< MPU_RBAR_REGION_Pos*/) /*!< MPU RBAR: REGION Mask */ + +/* MPU Region Attribute and Size Register Definitions */ +#define MPU_RASR_ATTRS_Pos 16U /*!< MPU RASR: MPU Region Attribute field Position */ +#define MPU_RASR_ATTRS_Msk (0xFFFFUL << MPU_RASR_ATTRS_Pos) /*!< MPU RASR: MPU Region Attribute field Mask */ + +#define MPU_RASR_XN_Pos 28U /*!< MPU RASR: ATTRS.XN Position */ +#define MPU_RASR_XN_Msk (1UL << MPU_RASR_XN_Pos) /*!< MPU RASR: ATTRS.XN Mask */ + +#define MPU_RASR_AP_Pos 24U /*!< MPU RASR: ATTRS.AP Position */ +#define MPU_RASR_AP_Msk (0x7UL << MPU_RASR_AP_Pos) /*!< MPU RASR: ATTRS.AP Mask */ + +#define MPU_RASR_TEX_Pos 19U /*!< MPU RASR: ATTRS.TEX Position */ +#define MPU_RASR_TEX_Msk (0x7UL << MPU_RASR_TEX_Pos) /*!< MPU RASR: ATTRS.TEX Mask */ + +#define MPU_RASR_S_Pos 18U /*!< MPU RASR: ATTRS.S Position */ +#define MPU_RASR_S_Msk (1UL << MPU_RASR_S_Pos) /*!< MPU RASR: ATTRS.S Mask */ + +#define MPU_RASR_C_Pos 17U /*!< MPU RASR: ATTRS.C Position */ +#define MPU_RASR_C_Msk (1UL << MPU_RASR_C_Pos) /*!< MPU RASR: ATTRS.C Mask */ + +#define MPU_RASR_B_Pos 16U /*!< MPU RASR: ATTRS.B Position */ +#define MPU_RASR_B_Msk (1UL << MPU_RASR_B_Pos) /*!< MPU RASR: ATTRS.B Mask */ + +#define MPU_RASR_SRD_Pos 8U /*!< MPU RASR: Sub-Region Disable Position */ +#define MPU_RASR_SRD_Msk (0xFFUL << MPU_RASR_SRD_Pos) /*!< MPU RASR: Sub-Region Disable Mask */ + +#define MPU_RASR_SIZE_Pos 1U /*!< MPU RASR: Region Size Field Position */ +#define MPU_RASR_SIZE_Msk (0x1FUL << MPU_RASR_SIZE_Pos) /*!< MPU RASR: Region Size Field Mask */ + +#define MPU_RASR_ENABLE_Pos 0U /*!< MPU RASR: Region enable bit Position */ +#define MPU_RASR_ENABLE_Msk (1UL /*<< MPU_RASR_ENABLE_Pos*/) /*!< MPU RASR: Region enable bit Disable Mask */ + +/*@} end of group CMSIS_MPU */ +#endif + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Type definitions for the Core Debug Registers + @{ + */ + +/** + \brief Structure type to access the Core Debug Register (CoreDebug). + */ +typedef struct +{ + __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ +} CoreDebug_Type; + +/* Debug Halting Control and Status Register Definitions */ +#define CoreDebug_DHCSR_DBGKEY_Pos 16U /*!< CoreDebug DHCSR: DBGKEY Position */ +#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< CoreDebug DHCSR: DBGKEY Mask */ + +#define CoreDebug_DHCSR_S_RESET_ST_Pos 25U /*!< CoreDebug DHCSR: S_RESET_ST Position */ +#define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< CoreDebug DHCSR: S_RESET_ST Mask */ + +#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24U /*!< CoreDebug DHCSR: S_RETIRE_ST Position */ +#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */ + +#define CoreDebug_DHCSR_S_LOCKUP_Pos 19U /*!< CoreDebug DHCSR: S_LOCKUP Position */ +#define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< CoreDebug DHCSR: S_LOCKUP Mask */ + +#define CoreDebug_DHCSR_S_SLEEP_Pos 18U /*!< CoreDebug DHCSR: S_SLEEP Position */ +#define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< CoreDebug DHCSR: S_SLEEP Mask */ + +#define CoreDebug_DHCSR_S_HALT_Pos 17U /*!< CoreDebug DHCSR: S_HALT Position */ +#define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< CoreDebug DHCSR: S_HALT Mask */ + +#define CoreDebug_DHCSR_S_REGRDY_Pos 16U /*!< CoreDebug DHCSR: S_REGRDY Position */ +#define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< CoreDebug DHCSR: S_REGRDY Mask */ + +#define CoreDebug_DHCSR_C_SNAPSTALL_Pos 5U /*!< CoreDebug DHCSR: C_SNAPSTALL Position */ +#define CoreDebug_DHCSR_C_SNAPSTALL_Msk (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos) /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */ + +#define CoreDebug_DHCSR_C_MASKINTS_Pos 3U /*!< CoreDebug DHCSR: C_MASKINTS Position */ +#define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< CoreDebug DHCSR: C_MASKINTS Mask */ + +#define CoreDebug_DHCSR_C_STEP_Pos 2U /*!< CoreDebug DHCSR: C_STEP Position */ +#define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< CoreDebug DHCSR: C_STEP Mask */ + +#define CoreDebug_DHCSR_C_HALT_Pos 1U /*!< CoreDebug DHCSR: C_HALT Position */ +#define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< CoreDebug DHCSR: C_HALT Mask */ + +#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0U /*!< CoreDebug DHCSR: C_DEBUGEN Position */ +#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/) /*!< CoreDebug DHCSR: C_DEBUGEN Mask */ + +/* Debug Core Register Selector Register Definitions */ +#define CoreDebug_DCRSR_REGWnR_Pos 16U /*!< CoreDebug DCRSR: REGWnR Position */ +#define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< CoreDebug DCRSR: REGWnR Mask */ + +#define CoreDebug_DCRSR_REGSEL_Pos 0U /*!< CoreDebug DCRSR: REGSEL Position */ +#define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/) /*!< CoreDebug DCRSR: REGSEL Mask */ + +/* Debug Exception and Monitor Control Register Definitions */ +#define CoreDebug_DEMCR_TRCENA_Pos 24U /*!< CoreDebug DEMCR: TRCENA Position */ +#define CoreDebug_DEMCR_TRCENA_Msk (1UL << CoreDebug_DEMCR_TRCENA_Pos) /*!< CoreDebug DEMCR: TRCENA Mask */ + +#define CoreDebug_DEMCR_MON_REQ_Pos 19U /*!< CoreDebug DEMCR: MON_REQ Position */ +#define CoreDebug_DEMCR_MON_REQ_Msk (1UL << CoreDebug_DEMCR_MON_REQ_Pos) /*!< CoreDebug DEMCR: MON_REQ Mask */ + +#define CoreDebug_DEMCR_MON_STEP_Pos 18U /*!< CoreDebug DEMCR: MON_STEP Position */ +#define CoreDebug_DEMCR_MON_STEP_Msk (1UL << CoreDebug_DEMCR_MON_STEP_Pos) /*!< CoreDebug DEMCR: MON_STEP Mask */ + +#define CoreDebug_DEMCR_MON_PEND_Pos 17U /*!< CoreDebug DEMCR: MON_PEND Position */ +#define CoreDebug_DEMCR_MON_PEND_Msk (1UL << CoreDebug_DEMCR_MON_PEND_Pos) /*!< CoreDebug DEMCR: MON_PEND Mask */ + +#define CoreDebug_DEMCR_MON_EN_Pos 16U /*!< CoreDebug DEMCR: MON_EN Position */ +#define CoreDebug_DEMCR_MON_EN_Msk (1UL << CoreDebug_DEMCR_MON_EN_Pos) /*!< CoreDebug DEMCR: MON_EN Mask */ + +#define CoreDebug_DEMCR_VC_HARDERR_Pos 10U /*!< CoreDebug DEMCR: VC_HARDERR Position */ +#define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< CoreDebug DEMCR: VC_HARDERR Mask */ + +#define CoreDebug_DEMCR_VC_INTERR_Pos 9U /*!< CoreDebug DEMCR: VC_INTERR Position */ +#define CoreDebug_DEMCR_VC_INTERR_Msk (1UL << CoreDebug_DEMCR_VC_INTERR_Pos) /*!< CoreDebug DEMCR: VC_INTERR Mask */ + +#define CoreDebug_DEMCR_VC_BUSERR_Pos 8U /*!< CoreDebug DEMCR: VC_BUSERR Position */ +#define CoreDebug_DEMCR_VC_BUSERR_Msk (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos) /*!< CoreDebug DEMCR: VC_BUSERR Mask */ + +#define CoreDebug_DEMCR_VC_STATERR_Pos 7U /*!< CoreDebug DEMCR: VC_STATERR Position */ +#define CoreDebug_DEMCR_VC_STATERR_Msk (1UL << CoreDebug_DEMCR_VC_STATERR_Pos) /*!< CoreDebug DEMCR: VC_STATERR Mask */ + +#define CoreDebug_DEMCR_VC_CHKERR_Pos 6U /*!< CoreDebug DEMCR: VC_CHKERR Position */ +#define CoreDebug_DEMCR_VC_CHKERR_Msk (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos) /*!< CoreDebug DEMCR: VC_CHKERR Mask */ + +#define CoreDebug_DEMCR_VC_NOCPERR_Pos 5U /*!< CoreDebug DEMCR: VC_NOCPERR Position */ +#define CoreDebug_DEMCR_VC_NOCPERR_Msk (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos) /*!< CoreDebug DEMCR: VC_NOCPERR Mask */ + +#define CoreDebug_DEMCR_VC_MMERR_Pos 4U /*!< CoreDebug DEMCR: VC_MMERR Position */ +#define CoreDebug_DEMCR_VC_MMERR_Msk (1UL << CoreDebug_DEMCR_VC_MMERR_Pos) /*!< CoreDebug DEMCR: VC_MMERR Mask */ + +#define CoreDebug_DEMCR_VC_CORERESET_Pos 0U /*!< CoreDebug DEMCR: VC_CORERESET Position */ +#define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/) /*!< CoreDebug DEMCR: VC_CORERESET Mask */ + +/*@} end of group CMSIS_CoreDebug */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_bitfield Core register bit field macros + \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk). + @{ + */ + +/** + \brief Mask and shift a bit field value for use in a register bit range. + \param[in] field Name of the register bit field. + \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk) + +/** + \brief Mask and shift a register value to extract a bit filed value. + \param[in] field Name of the register bit field. + \param[in] value Value of register. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos) + +/*@} end of group CMSIS_core_bitfield */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_base Core Definitions + \brief Definitions for base addresses, unions, and structures. + @{ + */ + +/* Memory mapping of Core Hardware */ +#define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ +#define ITM_BASE (0xE0000000UL) /*!< ITM Base Address */ +#define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */ +#define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */ +#define CoreDebug_BASE (0xE000EDF0UL) /*!< Core Debug Base Address */ +#define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ +#define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ +#define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + +#define SCnSCB ((SCnSCB_Type *) SCS_BASE ) /*!< System control Register not in SCB */ +#define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ +#define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ +#define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ +#define ITM ((ITM_Type *) ITM_BASE ) /*!< ITM configuration struct */ +#define DWT ((DWT_Type *) DWT_BASE ) /*!< DWT configuration struct */ +#define TPI ((TPI_Type *) TPI_BASE ) /*!< TPI configuration struct */ +#define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE) /*!< Core Debug configuration struct */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ +#endif + +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Debug Functions + - Core Register Access Functions + ******************************************************************************/ +/** + \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +*/ + + + +/* ########################## NVIC functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions NVIC Functions + \brief Functions that manage interrupts and exceptions via the NVIC. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping + #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ + #define NVIC_GetActive __NVIC_GetActive + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* The following EXC_RETURN values are saved the LR on exception entry */ +#define EXC_RETURN_HANDLER (0xFFFFFFF1UL) /* return to Handler mode, uses MSP after return */ +#define EXC_RETURN_THREAD_MSP (0xFFFFFFF9UL) /* return to Thread mode, uses MSP after return */ +#define EXC_RETURN_THREAD_PSP (0xFFFFFFFDUL) /* return to Thread mode, uses PSP after return */ + + +/** + \brief Set Priority Grouping + \details Sets the priority grouping field using the required unlock sequence. + The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. + Only values from 0..7 are used. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + + reg_value = SCB->AIRCR; /* read old register configuration */ + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */ + SCB->AIRCR = reg_value; +} + + +/** + \brief Get Priority Grouping + \details Reads the priority grouping field from the NVIC Interrupt Controller. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void) +{ + return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); +} + + +/** + \brief Enable Interrupt + \details Enables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt + \details Reads the active register in the NVIC and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every processor exception. + */ +__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IP[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } + else + { + SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. + Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return(((uint32_t)NVIC->IP[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return(((uint32_t)SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Encode Priority + \details Encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + +/** + \brief Decode Priority + \details Decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + VTOR must been relocated to SRAM before. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | + SCB_AIRCR_SYSRESETREQ_Msk ); /* Keep priority group unchanged */ + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +/*@} end of CMSIS_Core_NVICFunctions */ + +/* ########################## MPU functions #################################### */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + +#include "mpu_armv7.h" + +#endif + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + return 0U; /* No FPU */ +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U) + +/** + \brief System Tick Configuration + \details Initializes the System Timer and its interrupt, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + +/* ##################################### Debug In/Output function ########################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_core_DebugFunctions ITM Functions + \brief Functions that access the ITM debug interface. + @{ + */ + +extern volatile int32_t ITM_RxBuffer; /*!< External variable to receive characters. */ +#define ITM_RXBUFFER_EMPTY ((int32_t)0x5AA55AA5U) /*!< Value identifying \ref ITM_RxBuffer is ready for next character. */ + + +/** + \brief ITM Send Character + \details Transmits a character via the ITM channel 0, and + \li Just returns when no debugger is connected that has booked the output. + \li Is blocking when a debugger is connected, but the previous character sent has not been transmitted. + \param [in] ch Character to transmit. + \returns Character to transmit. + */ +__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch) +{ + if (((ITM->TCR & ITM_TCR_ITMENA_Msk) != 0UL) && /* ITM enabled */ + ((ITM->TER & 1UL ) != 0UL) ) /* ITM Port #0 enabled */ + { + while (ITM->PORT[0U].u32 == 0UL) + { + __NOP(); + } + ITM->PORT[0U].u8 = (uint8_t)ch; + } + return (ch); +} + + +/** + \brief ITM Receive Character + \details Inputs a character via the external variable \ref ITM_RxBuffer. + \return Received character. + \return -1 No character pending. + */ +__STATIC_INLINE int32_t ITM_ReceiveChar (void) +{ + int32_t ch = -1; /* no character available */ + + if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY) + { + ch = ITM_RxBuffer; + ITM_RxBuffer = ITM_RXBUFFER_EMPTY; /* ready for next character */ + } + + return (ch); +} + + +/** + \brief ITM Check Character + \details Checks whether a character is pending for reading in the variable \ref ITM_RxBuffer. + \return 0 No character available. + \return 1 Character available. + */ +__STATIC_INLINE int32_t ITM_CheckChar (void) +{ + + if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY) + { + return (0); /* no character available */ + } + else + { + return (1); /* character available */ + } +} + +/*@} end of CMSIS_core_DebugFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM3_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/Drivers/CMSIS/Include/core_cm33.h b/Drivers/CMSIS/Include/core_cm33.h new file mode 100644 index 0000000..6cd2db7 --- /dev/null +++ b/Drivers/CMSIS/Include/core_cm33.h @@ -0,0 +1,3002 @@ +/**************************************************************************//** + * @file core_cm33.h + * @brief CMSIS Cortex-M33 Core Peripheral Access Layer Header File + * @version V5.0.9 + * @date 06. July 2018 + ******************************************************************************/ +/* + * Copyright (c) 2009-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef __CORE_CM33_H_GENERIC +#define __CORE_CM33_H_GENERIC + +#include + +#ifdef __cplusplus + extern "C" { +#endif + +/** + \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + CMSIS violates the following MISRA-C:2004 rules: + + \li Required Rule 8.5, object/function definition in header file.
+ Function definitions in header files are used to allow 'inlining'. + + \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
+ Unions are used for effective representation of core registers. + + \li Advisory Rule 19.7, Function-like macro defined.
+ Function-like macros are used to allow more efficient code. + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** + \ingroup Cortex_M33 + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS CM33 definitions */ +#define __CM33_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __CM33_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __CM33_CMSIS_VERSION ((__CM33_CMSIS_VERSION_MAIN << 16U) | \ + __CM33_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_M (33U) /*!< Cortex-M Core */ + +/** __FPU_USED indicates whether an FPU is used or not. + For this, __FPU_PRESENT has to be checked prior to making use of FPU specific registers and functions. +*/ +#if defined ( __CC_ARM ) + #if defined (__TARGET_FPU_VFP) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1U) + #if defined (__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined (__ARM_PCS_VFP) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1U) + #if defined (__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1U) + #if defined (__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined ( __ICCARM__ ) + #if defined (__ARMVFP__) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1U) + #if defined (__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined ( __TI_ARM__ ) + #if defined (__TI_VFP_SUPPORT__) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __TASKING__ ) + #if defined (__FPU_VFP__) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM33_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_CM33_H_DEPENDANT +#define __CORE_CM33_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __CM33_REV + #define __CM33_REV 0x0000U + #warning "__CM33_REV not defined in device header file; using default!" + #endif + + #ifndef __FPU_PRESENT + #define __FPU_PRESENT 0U + #warning "__FPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0U + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __SAUREGION_PRESENT + #define __SAUREGION_PRESENT 0U + #warning "__SAUREGION_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __DSP_PRESENT + #define __DSP_PRESENT 0U + #warning "__DSP_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 3U + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0U + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +/** + \defgroup CMSIS_glob_defs CMSIS Global Defines + + IO Type Qualifiers are used + \li to specify the access to peripheral variables. + \li for automatic generation of peripheral register debug information. +*/ +#ifdef __cplusplus + #define __I volatile /*!< Defines 'read only' permissions */ +#else + #define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +/* following defines should be used for structure members */ +#define __IM volatile const /*! Defines 'read only' structure member permissions */ +#define __OM volatile /*! Defines 'write only' structure member permissions */ +#define __IOM volatile /*! Defines 'read / write' structure member permissions */ + +/*@} end of group Cortex_M33 */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core Debug Register + - Core MPU Register + - Core SAU Register + - Core FPU Register + ******************************************************************************/ +/** + \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for Cortex-M processor based devices. +*/ + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CORE Status and Control Registers + \brief Core Register type definitions. + @{ + */ + +/** + \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { + uint32_t _reserved0:16; /*!< bit: 0..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:7; /*!< bit: 20..26 Reserved */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + +/* APSR Register Definitions */ +#define APSR_N_Pos 31U /*!< APSR: N Position */ +#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */ + +#define APSR_Z_Pos 30U /*!< APSR: Z Position */ +#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */ + +#define APSR_C_Pos 29U /*!< APSR: C Position */ +#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */ + +#define APSR_V_Pos 28U /*!< APSR: V Position */ +#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */ + +#define APSR_Q_Pos 27U /*!< APSR: Q Position */ +#define APSR_Q_Msk (1UL << APSR_Q_Pos) /*!< APSR: Q Mask */ + +#define APSR_GE_Pos 16U /*!< APSR: GE Position */ +#define APSR_GE_Msk (0xFUL << APSR_GE_Pos) /*!< APSR: GE Mask */ + + +/** + \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + +/* IPSR Register Definitions */ +#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */ +#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */ + + +/** + \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:7; /*!< bit: 9..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:4; /*!< bit: 20..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ + uint32_t IT:2; /*!< bit: 25..26 saved IT state (read 0) */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + +/* xPSR Register Definitions */ +#define xPSR_N_Pos 31U /*!< xPSR: N Position */ +#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */ + +#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */ +#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */ + +#define xPSR_C_Pos 29U /*!< xPSR: C Position */ +#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */ + +#define xPSR_V_Pos 28U /*!< xPSR: V Position */ +#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */ + +#define xPSR_Q_Pos 27U /*!< xPSR: Q Position */ +#define xPSR_Q_Msk (1UL << xPSR_Q_Pos) /*!< xPSR: Q Mask */ + +#define xPSR_IT_Pos 25U /*!< xPSR: IT Position */ +#define xPSR_IT_Msk (3UL << xPSR_IT_Pos) /*!< xPSR: IT Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_GE_Pos 16U /*!< xPSR: GE Position */ +#define xPSR_GE_Msk (0xFUL << xPSR_GE_Pos) /*!< xPSR: GE Mask */ + +#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */ +#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */ + + +/** + \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + uint32_t SPSEL:1; /*!< bit: 1 Stack-pointer select */ + uint32_t FPCA:1; /*!< bit: 2 Floating-point context active */ + uint32_t SFPA:1; /*!< bit: 3 Secure floating-point active */ + uint32_t _reserved1:28; /*!< bit: 4..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_SFPA_Pos 3U /*!< CONTROL: SFPA Position */ +#define CONTROL_SFPA_Msk (1UL << CONTROL_SFPA_Pos) /*!< CONTROL: SFPA Mask */ + +#define CONTROL_FPCA_Pos 2U /*!< CONTROL: FPCA Position */ +#define CONTROL_FPCA_Msk (1UL << CONTROL_FPCA_Pos) /*!< CONTROL: FPCA Mask */ + +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ + +#define CONTROL_nPRIV_Pos 0U /*!< CONTROL: nPRIV Position */ +#define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONTROL: nPRIV Mask */ + +/*@} end of group CMSIS_CORE */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + \brief Type definitions for the NVIC Registers + @{ + */ + +/** + \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IOM uint32_t ISER[16U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[16U]; + __IOM uint32_t ICER[16U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[16U]; + __IOM uint32_t ISPR[16U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[16U]; + __IOM uint32_t ICPR[16U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[16U]; + __IOM uint32_t IABR[16U]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ + uint32_t RESERVED4[16U]; + __IOM uint32_t ITNS[16U]; /*!< Offset: 0x280 (R/W) Interrupt Non-Secure State Register */ + uint32_t RESERVED5[16U]; + __IOM uint8_t IPR[496U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register (8Bit wide) */ + uint32_t RESERVED6[580U]; + __OM uint32_t STIR; /*!< Offset: 0xE00 ( /W) Software Trigger Interrupt Register */ +} NVIC_Type; + +/* Software Triggered Interrupt Register Definitions */ +#define NVIC_STIR_INTID_Pos 0U /*!< STIR: INTLINESNUM Position */ +#define NVIC_STIR_INTID_Msk (0x1FFUL /*<< NVIC_STIR_INTID_Pos*/) /*!< STIR: INTLINESNUM Mask */ + +/*@} end of group CMSIS_NVIC */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCB System Control Block (SCB) + \brief Type definitions for the System Control Block Registers + @{ + */ + +/** + \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ + __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ + __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + __IOM uint8_t SHPR[12U]; /*!< Offset: 0x018 (R/W) System Handlers Priority Registers (4-7, 8-11, 12-15) */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ + __IOM uint32_t CFSR; /*!< Offset: 0x028 (R/W) Configurable Fault Status Register */ + __IOM uint32_t HFSR; /*!< Offset: 0x02C (R/W) HardFault Status Register */ + __IOM uint32_t DFSR; /*!< Offset: 0x030 (R/W) Debug Fault Status Register */ + __IOM uint32_t MMFAR; /*!< Offset: 0x034 (R/W) MemManage Fault Address Register */ + __IOM uint32_t BFAR; /*!< Offset: 0x038 (R/W) BusFault Address Register */ + __IOM uint32_t AFSR; /*!< Offset: 0x03C (R/W) Auxiliary Fault Status Register */ + __IM uint32_t ID_PFR[2U]; /*!< Offset: 0x040 (R/ ) Processor Feature Register */ + __IM uint32_t ID_DFR; /*!< Offset: 0x048 (R/ ) Debug Feature Register */ + __IM uint32_t ID_ADR; /*!< Offset: 0x04C (R/ ) Auxiliary Feature Register */ + __IM uint32_t ID_MMFR[4U]; /*!< Offset: 0x050 (R/ ) Memory Model Feature Register */ + __IM uint32_t ID_ISAR[6U]; /*!< Offset: 0x060 (R/ ) Instruction Set Attributes Register */ + __IM uint32_t CLIDR; /*!< Offset: 0x078 (R/ ) Cache Level ID register */ + __IM uint32_t CTR; /*!< Offset: 0x07C (R/ ) Cache Type register */ + __IM uint32_t CCSIDR; /*!< Offset: 0x080 (R/ ) Cache Size ID Register */ + __IOM uint32_t CSSELR; /*!< Offset: 0x084 (R/W) Cache Size Selection Register */ + __IOM uint32_t CPACR; /*!< Offset: 0x088 (R/W) Coprocessor Access Control Register */ + __IOM uint32_t NSACR; /*!< Offset: 0x08C (R/W) Non-Secure Access Control Register */ + uint32_t RESERVED3[92U]; + __OM uint32_t STIR; /*!< Offset: 0x200 ( /W) Software Triggered Interrupt Register */ + uint32_t RESERVED4[15U]; + __IM uint32_t MVFR0; /*!< Offset: 0x240 (R/ ) Media and VFP Feature Register 0 */ + __IM uint32_t MVFR1; /*!< Offset: 0x244 (R/ ) Media and VFP Feature Register 1 */ + __IM uint32_t MVFR2; /*!< Offset: 0x248 (R/ ) Media and VFP Feature Register 2 */ + uint32_t RESERVED5[1U]; + __OM uint32_t ICIALLU; /*!< Offset: 0x250 ( /W) I-Cache Invalidate All to PoU */ + uint32_t RESERVED6[1U]; + __OM uint32_t ICIMVAU; /*!< Offset: 0x258 ( /W) I-Cache Invalidate by MVA to PoU */ + __OM uint32_t DCIMVAC; /*!< Offset: 0x25C ( /W) D-Cache Invalidate by MVA to PoC */ + __OM uint32_t DCISW; /*!< Offset: 0x260 ( /W) D-Cache Invalidate by Set-way */ + __OM uint32_t DCCMVAU; /*!< Offset: 0x264 ( /W) D-Cache Clean by MVA to PoU */ + __OM uint32_t DCCMVAC; /*!< Offset: 0x268 ( /W) D-Cache Clean by MVA to PoC */ + __OM uint32_t DCCSW; /*!< Offset: 0x26C ( /W) D-Cache Clean by Set-way */ + __OM uint32_t DCCIMVAC; /*!< Offset: 0x270 ( /W) D-Cache Clean and Invalidate by MVA to PoC */ + __OM uint32_t DCCISW; /*!< Offset: 0x274 ( /W) D-Cache Clean and Invalidate by Set-way */ + uint32_t RESERVED7[6U]; + __IOM uint32_t ITCMCR; /*!< Offset: 0x290 (R/W) Instruction Tightly-Coupled Memory Control Register */ + __IOM uint32_t DTCMCR; /*!< Offset: 0x294 (R/W) Data Tightly-Coupled Memory Control Registers */ + __IOM uint32_t AHBPCR; /*!< Offset: 0x298 (R/W) AHBP Control Register */ + __IOM uint32_t CACR; /*!< Offset: 0x29C (R/W) L1 Cache Control Register */ + __IOM uint32_t AHBSCR; /*!< Offset: 0x2A0 (R/W) AHB Slave Control Register */ + uint32_t RESERVED8[1U]; + __IOM uint32_t ABFSR; /*!< Offset: 0x2A8 (R/W) Auxiliary Bus Fault Status Register */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_PENDNMISET_Pos 31U /*!< SCB ICSR: PENDNMISET Position */ +#define SCB_ICSR_PENDNMISET_Msk (1UL << SCB_ICSR_PENDNMISET_Pos) /*!< SCB ICSR: PENDNMISET Mask */ + +#define SCB_ICSR_NMIPENDSET_Pos SCB_ICSR_PENDNMISET_Pos /*!< SCB ICSR: NMIPENDSET Position, backward compatibility */ +#define SCB_ICSR_NMIPENDSET_Msk SCB_ICSR_PENDNMISET_Msk /*!< SCB ICSR: NMIPENDSET Mask, backward compatibility */ + +#define SCB_ICSR_PENDNMICLR_Pos 30U /*!< SCB ICSR: PENDNMICLR Position */ +#define SCB_ICSR_PENDNMICLR_Msk (1UL << SCB_ICSR_PENDNMICLR_Pos) /*!< SCB ICSR: PENDNMICLR Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_STTNS_Pos 24U /*!< SCB ICSR: STTNS Position (Security Extension) */ +#define SCB_ICSR_STTNS_Msk (1UL << SCB_ICSR_STTNS_Pos) /*!< SCB ICSR: STTNS Mask (Security Extension) */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_RETTOBASE_Pos 11U /*!< SCB ICSR: RETTOBASE Position */ +#define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */ + +/* SCB Vector Table Offset Register Definitions */ +#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_PRIS_Pos 14U /*!< SCB AIRCR: PRIS Position */ +#define SCB_AIRCR_PRIS_Msk (1UL << SCB_AIRCR_PRIS_Pos) /*!< SCB AIRCR: PRIS Mask */ + +#define SCB_AIRCR_BFHFNMINS_Pos 13U /*!< SCB AIRCR: BFHFNMINS Position */ +#define SCB_AIRCR_BFHFNMINS_Msk (1UL << SCB_AIRCR_BFHFNMINS_Pos) /*!< SCB AIRCR: BFHFNMINS Mask */ + +#define SCB_AIRCR_PRIGROUP_Pos 8U /*!< SCB AIRCR: PRIGROUP Position */ +#define SCB_AIRCR_PRIGROUP_Msk (7UL << SCB_AIRCR_PRIGROUP_Pos) /*!< SCB AIRCR: PRIGROUP Mask */ + +#define SCB_AIRCR_SYSRESETREQS_Pos 3U /*!< SCB AIRCR: SYSRESETREQS Position */ +#define SCB_AIRCR_SYSRESETREQS_Msk (1UL << SCB_AIRCR_SYSRESETREQS_Pos) /*!< SCB AIRCR: SYSRESETREQS Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEPS_Pos 3U /*!< SCB SCR: SLEEPDEEPS Position */ +#define SCB_SCR_SLEEPDEEPS_Msk (1UL << SCB_SCR_SLEEPDEEPS_Pos) /*!< SCB SCR: SLEEPDEEPS Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_BP_Pos 18U /*!< SCB CCR: BP Position */ +#define SCB_CCR_BP_Msk (1UL << SCB_CCR_BP_Pos) /*!< SCB CCR: BP Mask */ + +#define SCB_CCR_IC_Pos 17U /*!< SCB CCR: IC Position */ +#define SCB_CCR_IC_Msk (1UL << SCB_CCR_IC_Pos) /*!< SCB CCR: IC Mask */ + +#define SCB_CCR_DC_Pos 16U /*!< SCB CCR: DC Position */ +#define SCB_CCR_DC_Msk (1UL << SCB_CCR_DC_Pos) /*!< SCB CCR: DC Mask */ + +#define SCB_CCR_STKOFHFNMIGN_Pos 10U /*!< SCB CCR: STKOFHFNMIGN Position */ +#define SCB_CCR_STKOFHFNMIGN_Msk (1UL << SCB_CCR_STKOFHFNMIGN_Pos) /*!< SCB CCR: STKOFHFNMIGN Mask */ + +#define SCB_CCR_BFHFNMIGN_Pos 8U /*!< SCB CCR: BFHFNMIGN Position */ +#define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ + +#define SCB_CCR_DIV_0_TRP_Pos 4U /*!< SCB CCR: DIV_0_TRP Position */ +#define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +#define SCB_CCR_USERSETMPEND_Pos 1U /*!< SCB CCR: USERSETMPEND Position */ +#define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_HARDFAULTPENDED_Pos 21U /*!< SCB SHCSR: HARDFAULTPENDED Position */ +#define SCB_SHCSR_HARDFAULTPENDED_Msk (1UL << SCB_SHCSR_HARDFAULTPENDED_Pos) /*!< SCB SHCSR: HARDFAULTPENDED Mask */ + +#define SCB_SHCSR_SECUREFAULTPENDED_Pos 20U /*!< SCB SHCSR: SECUREFAULTPENDED Position */ +#define SCB_SHCSR_SECUREFAULTPENDED_Msk (1UL << SCB_SHCSR_SECUREFAULTPENDED_Pos) /*!< SCB SHCSR: SECUREFAULTPENDED Mask */ + +#define SCB_SHCSR_SECUREFAULTENA_Pos 19U /*!< SCB SHCSR: SECUREFAULTENA Position */ +#define SCB_SHCSR_SECUREFAULTENA_Msk (1UL << SCB_SHCSR_SECUREFAULTENA_Pos) /*!< SCB SHCSR: SECUREFAULTENA Mask */ + +#define SCB_SHCSR_USGFAULTENA_Pos 18U /*!< SCB SHCSR: USGFAULTENA Position */ +#define SCB_SHCSR_USGFAULTENA_Msk (1UL << SCB_SHCSR_USGFAULTENA_Pos) /*!< SCB SHCSR: USGFAULTENA Mask */ + +#define SCB_SHCSR_BUSFAULTENA_Pos 17U /*!< SCB SHCSR: BUSFAULTENA Position */ +#define SCB_SHCSR_BUSFAULTENA_Msk (1UL << SCB_SHCSR_BUSFAULTENA_Pos) /*!< SCB SHCSR: BUSFAULTENA Mask */ + +#define SCB_SHCSR_MEMFAULTENA_Pos 16U /*!< SCB SHCSR: MEMFAULTENA Position */ +#define SCB_SHCSR_MEMFAULTENA_Msk (1UL << SCB_SHCSR_MEMFAULTENA_Pos) /*!< SCB SHCSR: MEMFAULTENA Mask */ + +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +#define SCB_SHCSR_BUSFAULTPENDED_Pos 14U /*!< SCB SHCSR: BUSFAULTPENDED Position */ +#define SCB_SHCSR_BUSFAULTPENDED_Msk (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos) /*!< SCB SHCSR: BUSFAULTPENDED Mask */ + +#define SCB_SHCSR_MEMFAULTPENDED_Pos 13U /*!< SCB SHCSR: MEMFAULTPENDED Position */ +#define SCB_SHCSR_MEMFAULTPENDED_Msk (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos) /*!< SCB SHCSR: MEMFAULTPENDED Mask */ + +#define SCB_SHCSR_USGFAULTPENDED_Pos 12U /*!< SCB SHCSR: USGFAULTPENDED Position */ +#define SCB_SHCSR_USGFAULTPENDED_Msk (1UL << SCB_SHCSR_USGFAULTPENDED_Pos) /*!< SCB SHCSR: USGFAULTPENDED Mask */ + +#define SCB_SHCSR_SYSTICKACT_Pos 11U /*!< SCB SHCSR: SYSTICKACT Position */ +#define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ + +#define SCB_SHCSR_PENDSVACT_Pos 10U /*!< SCB SHCSR: PENDSVACT Position */ +#define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ + +#define SCB_SHCSR_MONITORACT_Pos 8U /*!< SCB SHCSR: MONITORACT Position */ +#define SCB_SHCSR_MONITORACT_Msk (1UL << SCB_SHCSR_MONITORACT_Pos) /*!< SCB SHCSR: MONITORACT Mask */ + +#define SCB_SHCSR_SVCALLACT_Pos 7U /*!< SCB SHCSR: SVCALLACT Position */ +#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ + +#define SCB_SHCSR_NMIACT_Pos 5U /*!< SCB SHCSR: NMIACT Position */ +#define SCB_SHCSR_NMIACT_Msk (1UL << SCB_SHCSR_NMIACT_Pos) /*!< SCB SHCSR: NMIACT Mask */ + +#define SCB_SHCSR_SECUREFAULTACT_Pos 4U /*!< SCB SHCSR: SECUREFAULTACT Position */ +#define SCB_SHCSR_SECUREFAULTACT_Msk (1UL << SCB_SHCSR_SECUREFAULTACT_Pos) /*!< SCB SHCSR: SECUREFAULTACT Mask */ + +#define SCB_SHCSR_USGFAULTACT_Pos 3U /*!< SCB SHCSR: USGFAULTACT Position */ +#define SCB_SHCSR_USGFAULTACT_Msk (1UL << SCB_SHCSR_USGFAULTACT_Pos) /*!< SCB SHCSR: USGFAULTACT Mask */ + +#define SCB_SHCSR_HARDFAULTACT_Pos 2U /*!< SCB SHCSR: HARDFAULTACT Position */ +#define SCB_SHCSR_HARDFAULTACT_Msk (1UL << SCB_SHCSR_HARDFAULTACT_Pos) /*!< SCB SHCSR: HARDFAULTACT Mask */ + +#define SCB_SHCSR_BUSFAULTACT_Pos 1U /*!< SCB SHCSR: BUSFAULTACT Position */ +#define SCB_SHCSR_BUSFAULTACT_Msk (1UL << SCB_SHCSR_BUSFAULTACT_Pos) /*!< SCB SHCSR: BUSFAULTACT Mask */ + +#define SCB_SHCSR_MEMFAULTACT_Pos 0U /*!< SCB SHCSR: MEMFAULTACT Position */ +#define SCB_SHCSR_MEMFAULTACT_Msk (1UL /*<< SCB_SHCSR_MEMFAULTACT_Pos*/) /*!< SCB SHCSR: MEMFAULTACT Mask */ + +/* SCB Configurable Fault Status Register Definitions */ +#define SCB_CFSR_USGFAULTSR_Pos 16U /*!< SCB CFSR: Usage Fault Status Register Position */ +#define SCB_CFSR_USGFAULTSR_Msk (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos) /*!< SCB CFSR: Usage Fault Status Register Mask */ + +#define SCB_CFSR_BUSFAULTSR_Pos 8U /*!< SCB CFSR: Bus Fault Status Register Position */ +#define SCB_CFSR_BUSFAULTSR_Msk (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos) /*!< SCB CFSR: Bus Fault Status Register Mask */ + +#define SCB_CFSR_MEMFAULTSR_Pos 0U /*!< SCB CFSR: Memory Manage Fault Status Register Position */ +#define SCB_CFSR_MEMFAULTSR_Msk (0xFFUL /*<< SCB_CFSR_MEMFAULTSR_Pos*/) /*!< SCB CFSR: Memory Manage Fault Status Register Mask */ + +/* MemManage Fault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_MMARVALID_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 7U) /*!< SCB CFSR (MMFSR): MMARVALID Position */ +#define SCB_CFSR_MMARVALID_Msk (1UL << SCB_CFSR_MMARVALID_Pos) /*!< SCB CFSR (MMFSR): MMARVALID Mask */ + +#define SCB_CFSR_MLSPERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 5U) /*!< SCB CFSR (MMFSR): MLSPERR Position */ +#define SCB_CFSR_MLSPERR_Msk (1UL << SCB_CFSR_MLSPERR_Pos) /*!< SCB CFSR (MMFSR): MLSPERR Mask */ + +#define SCB_CFSR_MSTKERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 4U) /*!< SCB CFSR (MMFSR): MSTKERR Position */ +#define SCB_CFSR_MSTKERR_Msk (1UL << SCB_CFSR_MSTKERR_Pos) /*!< SCB CFSR (MMFSR): MSTKERR Mask */ + +#define SCB_CFSR_MUNSTKERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 3U) /*!< SCB CFSR (MMFSR): MUNSTKERR Position */ +#define SCB_CFSR_MUNSTKERR_Msk (1UL << SCB_CFSR_MUNSTKERR_Pos) /*!< SCB CFSR (MMFSR): MUNSTKERR Mask */ + +#define SCB_CFSR_DACCVIOL_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 1U) /*!< SCB CFSR (MMFSR): DACCVIOL Position */ +#define SCB_CFSR_DACCVIOL_Msk (1UL << SCB_CFSR_DACCVIOL_Pos) /*!< SCB CFSR (MMFSR): DACCVIOL Mask */ + +#define SCB_CFSR_IACCVIOL_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 0U) /*!< SCB CFSR (MMFSR): IACCVIOL Position */ +#define SCB_CFSR_IACCVIOL_Msk (1UL /*<< SCB_CFSR_IACCVIOL_Pos*/) /*!< SCB CFSR (MMFSR): IACCVIOL Mask */ + +/* BusFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_BFARVALID_Pos (SCB_CFSR_BUSFAULTSR_Pos + 7U) /*!< SCB CFSR (BFSR): BFARVALID Position */ +#define SCB_CFSR_BFARVALID_Msk (1UL << SCB_CFSR_BFARVALID_Pos) /*!< SCB CFSR (BFSR): BFARVALID Mask */ + +#define SCB_CFSR_LSPERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 5U) /*!< SCB CFSR (BFSR): LSPERR Position */ +#define SCB_CFSR_LSPERR_Msk (1UL << SCB_CFSR_LSPERR_Pos) /*!< SCB CFSR (BFSR): LSPERR Mask */ + +#define SCB_CFSR_STKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 4U) /*!< SCB CFSR (BFSR): STKERR Position */ +#define SCB_CFSR_STKERR_Msk (1UL << SCB_CFSR_STKERR_Pos) /*!< SCB CFSR (BFSR): STKERR Mask */ + +#define SCB_CFSR_UNSTKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 3U) /*!< SCB CFSR (BFSR): UNSTKERR Position */ +#define SCB_CFSR_UNSTKERR_Msk (1UL << SCB_CFSR_UNSTKERR_Pos) /*!< SCB CFSR (BFSR): UNSTKERR Mask */ + +#define SCB_CFSR_IMPRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 2U) /*!< SCB CFSR (BFSR): IMPRECISERR Position */ +#define SCB_CFSR_IMPRECISERR_Msk (1UL << SCB_CFSR_IMPRECISERR_Pos) /*!< SCB CFSR (BFSR): IMPRECISERR Mask */ + +#define SCB_CFSR_PRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 1U) /*!< SCB CFSR (BFSR): PRECISERR Position */ +#define SCB_CFSR_PRECISERR_Msk (1UL << SCB_CFSR_PRECISERR_Pos) /*!< SCB CFSR (BFSR): PRECISERR Mask */ + +#define SCB_CFSR_IBUSERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 0U) /*!< SCB CFSR (BFSR): IBUSERR Position */ +#define SCB_CFSR_IBUSERR_Msk (1UL << SCB_CFSR_IBUSERR_Pos) /*!< SCB CFSR (BFSR): IBUSERR Mask */ + +/* UsageFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_DIVBYZERO_Pos (SCB_CFSR_USGFAULTSR_Pos + 9U) /*!< SCB CFSR (UFSR): DIVBYZERO Position */ +#define SCB_CFSR_DIVBYZERO_Msk (1UL << SCB_CFSR_DIVBYZERO_Pos) /*!< SCB CFSR (UFSR): DIVBYZERO Mask */ + +#define SCB_CFSR_UNALIGNED_Pos (SCB_CFSR_USGFAULTSR_Pos + 8U) /*!< SCB CFSR (UFSR): UNALIGNED Position */ +#define SCB_CFSR_UNALIGNED_Msk (1UL << SCB_CFSR_UNALIGNED_Pos) /*!< SCB CFSR (UFSR): UNALIGNED Mask */ + +#define SCB_CFSR_STKOF_Pos (SCB_CFSR_USGFAULTSR_Pos + 4U) /*!< SCB CFSR (UFSR): STKOF Position */ +#define SCB_CFSR_STKOF_Msk (1UL << SCB_CFSR_STKOF_Pos) /*!< SCB CFSR (UFSR): STKOF Mask */ + +#define SCB_CFSR_NOCP_Pos (SCB_CFSR_USGFAULTSR_Pos + 3U) /*!< SCB CFSR (UFSR): NOCP Position */ +#define SCB_CFSR_NOCP_Msk (1UL << SCB_CFSR_NOCP_Pos) /*!< SCB CFSR (UFSR): NOCP Mask */ + +#define SCB_CFSR_INVPC_Pos (SCB_CFSR_USGFAULTSR_Pos + 2U) /*!< SCB CFSR (UFSR): INVPC Position */ +#define SCB_CFSR_INVPC_Msk (1UL << SCB_CFSR_INVPC_Pos) /*!< SCB CFSR (UFSR): INVPC Mask */ + +#define SCB_CFSR_INVSTATE_Pos (SCB_CFSR_USGFAULTSR_Pos + 1U) /*!< SCB CFSR (UFSR): INVSTATE Position */ +#define SCB_CFSR_INVSTATE_Msk (1UL << SCB_CFSR_INVSTATE_Pos) /*!< SCB CFSR (UFSR): INVSTATE Mask */ + +#define SCB_CFSR_UNDEFINSTR_Pos (SCB_CFSR_USGFAULTSR_Pos + 0U) /*!< SCB CFSR (UFSR): UNDEFINSTR Position */ +#define SCB_CFSR_UNDEFINSTR_Msk (1UL << SCB_CFSR_UNDEFINSTR_Pos) /*!< SCB CFSR (UFSR): UNDEFINSTR Mask */ + +/* SCB Hard Fault Status Register Definitions */ +#define SCB_HFSR_DEBUGEVT_Pos 31U /*!< SCB HFSR: DEBUGEVT Position */ +#define SCB_HFSR_DEBUGEVT_Msk (1UL << SCB_HFSR_DEBUGEVT_Pos) /*!< SCB HFSR: DEBUGEVT Mask */ + +#define SCB_HFSR_FORCED_Pos 30U /*!< SCB HFSR: FORCED Position */ +#define SCB_HFSR_FORCED_Msk (1UL << SCB_HFSR_FORCED_Pos) /*!< SCB HFSR: FORCED Mask */ + +#define SCB_HFSR_VECTTBL_Pos 1U /*!< SCB HFSR: VECTTBL Position */ +#define SCB_HFSR_VECTTBL_Msk (1UL << SCB_HFSR_VECTTBL_Pos) /*!< SCB HFSR: VECTTBL Mask */ + +/* SCB Debug Fault Status Register Definitions */ +#define SCB_DFSR_EXTERNAL_Pos 4U /*!< SCB DFSR: EXTERNAL Position */ +#define SCB_DFSR_EXTERNAL_Msk (1UL << SCB_DFSR_EXTERNAL_Pos) /*!< SCB DFSR: EXTERNAL Mask */ + +#define SCB_DFSR_VCATCH_Pos 3U /*!< SCB DFSR: VCATCH Position */ +#define SCB_DFSR_VCATCH_Msk (1UL << SCB_DFSR_VCATCH_Pos) /*!< SCB DFSR: VCATCH Mask */ + +#define SCB_DFSR_DWTTRAP_Pos 2U /*!< SCB DFSR: DWTTRAP Position */ +#define SCB_DFSR_DWTTRAP_Msk (1UL << SCB_DFSR_DWTTRAP_Pos) /*!< SCB DFSR: DWTTRAP Mask */ + +#define SCB_DFSR_BKPT_Pos 1U /*!< SCB DFSR: BKPT Position */ +#define SCB_DFSR_BKPT_Msk (1UL << SCB_DFSR_BKPT_Pos) /*!< SCB DFSR: BKPT Mask */ + +#define SCB_DFSR_HALTED_Pos 0U /*!< SCB DFSR: HALTED Position */ +#define SCB_DFSR_HALTED_Msk (1UL /*<< SCB_DFSR_HALTED_Pos*/) /*!< SCB DFSR: HALTED Mask */ + +/* SCB Non-Secure Access Control Register Definitions */ +#define SCB_NSACR_CP11_Pos 11U /*!< SCB NSACR: CP11 Position */ +#define SCB_NSACR_CP11_Msk (1UL << SCB_NSACR_CP11_Pos) /*!< SCB NSACR: CP11 Mask */ + +#define SCB_NSACR_CP10_Pos 10U /*!< SCB NSACR: CP10 Position */ +#define SCB_NSACR_CP10_Msk (1UL << SCB_NSACR_CP10_Pos) /*!< SCB NSACR: CP10 Mask */ + +#define SCB_NSACR_CPn_Pos 0U /*!< SCB NSACR: CPn Position */ +#define SCB_NSACR_CPn_Msk (1UL /*<< SCB_NSACR_CPn_Pos*/) /*!< SCB NSACR: CPn Mask */ + +/* SCB Cache Level ID Register Definitions */ +#define SCB_CLIDR_LOUU_Pos 27U /*!< SCB CLIDR: LoUU Position */ +#define SCB_CLIDR_LOUU_Msk (7UL << SCB_CLIDR_LOUU_Pos) /*!< SCB CLIDR: LoUU Mask */ + +#define SCB_CLIDR_LOC_Pos 24U /*!< SCB CLIDR: LoC Position */ +#define SCB_CLIDR_LOC_Msk (7UL << SCB_CLIDR_LOC_Pos) /*!< SCB CLIDR: LoC Mask */ + +/* SCB Cache Type Register Definitions */ +#define SCB_CTR_FORMAT_Pos 29U /*!< SCB CTR: Format Position */ +#define SCB_CTR_FORMAT_Msk (7UL << SCB_CTR_FORMAT_Pos) /*!< SCB CTR: Format Mask */ + +#define SCB_CTR_CWG_Pos 24U /*!< SCB CTR: CWG Position */ +#define SCB_CTR_CWG_Msk (0xFUL << SCB_CTR_CWG_Pos) /*!< SCB CTR: CWG Mask */ + +#define SCB_CTR_ERG_Pos 20U /*!< SCB CTR: ERG Position */ +#define SCB_CTR_ERG_Msk (0xFUL << SCB_CTR_ERG_Pos) /*!< SCB CTR: ERG Mask */ + +#define SCB_CTR_DMINLINE_Pos 16U /*!< SCB CTR: DminLine Position */ +#define SCB_CTR_DMINLINE_Msk (0xFUL << SCB_CTR_DMINLINE_Pos) /*!< SCB CTR: DminLine Mask */ + +#define SCB_CTR_IMINLINE_Pos 0U /*!< SCB CTR: ImInLine Position */ +#define SCB_CTR_IMINLINE_Msk (0xFUL /*<< SCB_CTR_IMINLINE_Pos*/) /*!< SCB CTR: ImInLine Mask */ + +/* SCB Cache Size ID Register Definitions */ +#define SCB_CCSIDR_WT_Pos 31U /*!< SCB CCSIDR: WT Position */ +#define SCB_CCSIDR_WT_Msk (1UL << SCB_CCSIDR_WT_Pos) /*!< SCB CCSIDR: WT Mask */ + +#define SCB_CCSIDR_WB_Pos 30U /*!< SCB CCSIDR: WB Position */ +#define SCB_CCSIDR_WB_Msk (1UL << SCB_CCSIDR_WB_Pos) /*!< SCB CCSIDR: WB Mask */ + +#define SCB_CCSIDR_RA_Pos 29U /*!< SCB CCSIDR: RA Position */ +#define SCB_CCSIDR_RA_Msk (1UL << SCB_CCSIDR_RA_Pos) /*!< SCB CCSIDR: RA Mask */ + +#define SCB_CCSIDR_WA_Pos 28U /*!< SCB CCSIDR: WA Position */ +#define SCB_CCSIDR_WA_Msk (1UL << SCB_CCSIDR_WA_Pos) /*!< SCB CCSIDR: WA Mask */ + +#define SCB_CCSIDR_NUMSETS_Pos 13U /*!< SCB CCSIDR: NumSets Position */ +#define SCB_CCSIDR_NUMSETS_Msk (0x7FFFUL << SCB_CCSIDR_NUMSETS_Pos) /*!< SCB CCSIDR: NumSets Mask */ + +#define SCB_CCSIDR_ASSOCIATIVITY_Pos 3U /*!< SCB CCSIDR: Associativity Position */ +#define SCB_CCSIDR_ASSOCIATIVITY_Msk (0x3FFUL << SCB_CCSIDR_ASSOCIATIVITY_Pos) /*!< SCB CCSIDR: Associativity Mask */ + +#define SCB_CCSIDR_LINESIZE_Pos 0U /*!< SCB CCSIDR: LineSize Position */ +#define SCB_CCSIDR_LINESIZE_Msk (7UL /*<< SCB_CCSIDR_LINESIZE_Pos*/) /*!< SCB CCSIDR: LineSize Mask */ + +/* SCB Cache Size Selection Register Definitions */ +#define SCB_CSSELR_LEVEL_Pos 1U /*!< SCB CSSELR: Level Position */ +#define SCB_CSSELR_LEVEL_Msk (7UL << SCB_CSSELR_LEVEL_Pos) /*!< SCB CSSELR: Level Mask */ + +#define SCB_CSSELR_IND_Pos 0U /*!< SCB CSSELR: InD Position */ +#define SCB_CSSELR_IND_Msk (1UL /*<< SCB_CSSELR_IND_Pos*/) /*!< SCB CSSELR: InD Mask */ + +/* SCB Software Triggered Interrupt Register Definitions */ +#define SCB_STIR_INTID_Pos 0U /*!< SCB STIR: INTID Position */ +#define SCB_STIR_INTID_Msk (0x1FFUL /*<< SCB_STIR_INTID_Pos*/) /*!< SCB STIR: INTID Mask */ + +/* SCB D-Cache Invalidate by Set-way Register Definitions */ +#define SCB_DCISW_WAY_Pos 30U /*!< SCB DCISW: Way Position */ +#define SCB_DCISW_WAY_Msk (3UL << SCB_DCISW_WAY_Pos) /*!< SCB DCISW: Way Mask */ + +#define SCB_DCISW_SET_Pos 5U /*!< SCB DCISW: Set Position */ +#define SCB_DCISW_SET_Msk (0x1FFUL << SCB_DCISW_SET_Pos) /*!< SCB DCISW: Set Mask */ + +/* SCB D-Cache Clean by Set-way Register Definitions */ +#define SCB_DCCSW_WAY_Pos 30U /*!< SCB DCCSW: Way Position */ +#define SCB_DCCSW_WAY_Msk (3UL << SCB_DCCSW_WAY_Pos) /*!< SCB DCCSW: Way Mask */ + +#define SCB_DCCSW_SET_Pos 5U /*!< SCB DCCSW: Set Position */ +#define SCB_DCCSW_SET_Msk (0x1FFUL << SCB_DCCSW_SET_Pos) /*!< SCB DCCSW: Set Mask */ + +/* SCB D-Cache Clean and Invalidate by Set-way Register Definitions */ +#define SCB_DCCISW_WAY_Pos 30U /*!< SCB DCCISW: Way Position */ +#define SCB_DCCISW_WAY_Msk (3UL << SCB_DCCISW_WAY_Pos) /*!< SCB DCCISW: Way Mask */ + +#define SCB_DCCISW_SET_Pos 5U /*!< SCB DCCISW: Set Position */ +#define SCB_DCCISW_SET_Msk (0x1FFUL << SCB_DCCISW_SET_Pos) /*!< SCB DCCISW: Set Mask */ + +/* Instruction Tightly-Coupled Memory Control Register Definitions */ +#define SCB_ITCMCR_SZ_Pos 3U /*!< SCB ITCMCR: SZ Position */ +#define SCB_ITCMCR_SZ_Msk (0xFUL << SCB_ITCMCR_SZ_Pos) /*!< SCB ITCMCR: SZ Mask */ + +#define SCB_ITCMCR_RETEN_Pos 2U /*!< SCB ITCMCR: RETEN Position */ +#define SCB_ITCMCR_RETEN_Msk (1UL << SCB_ITCMCR_RETEN_Pos) /*!< SCB ITCMCR: RETEN Mask */ + +#define SCB_ITCMCR_RMW_Pos 1U /*!< SCB ITCMCR: RMW Position */ +#define SCB_ITCMCR_RMW_Msk (1UL << SCB_ITCMCR_RMW_Pos) /*!< SCB ITCMCR: RMW Mask */ + +#define SCB_ITCMCR_EN_Pos 0U /*!< SCB ITCMCR: EN Position */ +#define SCB_ITCMCR_EN_Msk (1UL /*<< SCB_ITCMCR_EN_Pos*/) /*!< SCB ITCMCR: EN Mask */ + +/* Data Tightly-Coupled Memory Control Register Definitions */ +#define SCB_DTCMCR_SZ_Pos 3U /*!< SCB DTCMCR: SZ Position */ +#define SCB_DTCMCR_SZ_Msk (0xFUL << SCB_DTCMCR_SZ_Pos) /*!< SCB DTCMCR: SZ Mask */ + +#define SCB_DTCMCR_RETEN_Pos 2U /*!< SCB DTCMCR: RETEN Position */ +#define SCB_DTCMCR_RETEN_Msk (1UL << SCB_DTCMCR_RETEN_Pos) /*!< SCB DTCMCR: RETEN Mask */ + +#define SCB_DTCMCR_RMW_Pos 1U /*!< SCB DTCMCR: RMW Position */ +#define SCB_DTCMCR_RMW_Msk (1UL << SCB_DTCMCR_RMW_Pos) /*!< SCB DTCMCR: RMW Mask */ + +#define SCB_DTCMCR_EN_Pos 0U /*!< SCB DTCMCR: EN Position */ +#define SCB_DTCMCR_EN_Msk (1UL /*<< SCB_DTCMCR_EN_Pos*/) /*!< SCB DTCMCR: EN Mask */ + +/* AHBP Control Register Definitions */ +#define SCB_AHBPCR_SZ_Pos 1U /*!< SCB AHBPCR: SZ Position */ +#define SCB_AHBPCR_SZ_Msk (7UL << SCB_AHBPCR_SZ_Pos) /*!< SCB AHBPCR: SZ Mask */ + +#define SCB_AHBPCR_EN_Pos 0U /*!< SCB AHBPCR: EN Position */ +#define SCB_AHBPCR_EN_Msk (1UL /*<< SCB_AHBPCR_EN_Pos*/) /*!< SCB AHBPCR: EN Mask */ + +/* L1 Cache Control Register Definitions */ +#define SCB_CACR_FORCEWT_Pos 2U /*!< SCB CACR: FORCEWT Position */ +#define SCB_CACR_FORCEWT_Msk (1UL << SCB_CACR_FORCEWT_Pos) /*!< SCB CACR: FORCEWT Mask */ + +#define SCB_CACR_ECCEN_Pos 1U /*!< SCB CACR: ECCEN Position */ +#define SCB_CACR_ECCEN_Msk (1UL << SCB_CACR_ECCEN_Pos) /*!< SCB CACR: ECCEN Mask */ + +#define SCB_CACR_SIWT_Pos 0U /*!< SCB CACR: SIWT Position */ +#define SCB_CACR_SIWT_Msk (1UL /*<< SCB_CACR_SIWT_Pos*/) /*!< SCB CACR: SIWT Mask */ + +/* AHBS Control Register Definitions */ +#define SCB_AHBSCR_INITCOUNT_Pos 11U /*!< SCB AHBSCR: INITCOUNT Position */ +#define SCB_AHBSCR_INITCOUNT_Msk (0x1FUL << SCB_AHBPCR_INITCOUNT_Pos) /*!< SCB AHBSCR: INITCOUNT Mask */ + +#define SCB_AHBSCR_TPRI_Pos 2U /*!< SCB AHBSCR: TPRI Position */ +#define SCB_AHBSCR_TPRI_Msk (0x1FFUL << SCB_AHBPCR_TPRI_Pos) /*!< SCB AHBSCR: TPRI Mask */ + +#define SCB_AHBSCR_CTL_Pos 0U /*!< SCB AHBSCR: CTL Position*/ +#define SCB_AHBSCR_CTL_Msk (3UL /*<< SCB_AHBPCR_CTL_Pos*/) /*!< SCB AHBSCR: CTL Mask */ + +/* Auxiliary Bus Fault Status Register Definitions */ +#define SCB_ABFSR_AXIMTYPE_Pos 8U /*!< SCB ABFSR: AXIMTYPE Position*/ +#define SCB_ABFSR_AXIMTYPE_Msk (3UL << SCB_ABFSR_AXIMTYPE_Pos) /*!< SCB ABFSR: AXIMTYPE Mask */ + +#define SCB_ABFSR_EPPB_Pos 4U /*!< SCB ABFSR: EPPB Position*/ +#define SCB_ABFSR_EPPB_Msk (1UL << SCB_ABFSR_EPPB_Pos) /*!< SCB ABFSR: EPPB Mask */ + +#define SCB_ABFSR_AXIM_Pos 3U /*!< SCB ABFSR: AXIM Position*/ +#define SCB_ABFSR_AXIM_Msk (1UL << SCB_ABFSR_AXIM_Pos) /*!< SCB ABFSR: AXIM Mask */ + +#define SCB_ABFSR_AHBP_Pos 2U /*!< SCB ABFSR: AHBP Position*/ +#define SCB_ABFSR_AHBP_Msk (1UL << SCB_ABFSR_AHBP_Pos) /*!< SCB ABFSR: AHBP Mask */ + +#define SCB_ABFSR_DTCM_Pos 1U /*!< SCB ABFSR: DTCM Position*/ +#define SCB_ABFSR_DTCM_Msk (1UL << SCB_ABFSR_DTCM_Pos) /*!< SCB ABFSR: DTCM Mask */ + +#define SCB_ABFSR_ITCM_Pos 0U /*!< SCB ABFSR: ITCM Position*/ +#define SCB_ABFSR_ITCM_Msk (1UL /*<< SCB_ABFSR_ITCM_Pos*/) /*!< SCB ABFSR: ITCM Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB) + \brief Type definitions for the System Control and ID Register not in the SCB + @{ + */ + +/** + \brief Structure type to access the System Control and ID Register not in the SCB. + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IM uint32_t ICTR; /*!< Offset: 0x004 (R/ ) Interrupt Controller Type Register */ + __IOM uint32_t ACTLR; /*!< Offset: 0x008 (R/W) Auxiliary Control Register */ + __IOM uint32_t CPPWR; /*!< Offset: 0x00C (R/W) Coprocessor Power Control Register */ +} SCnSCB_Type; + +/* Interrupt Controller Type Register Definitions */ +#define SCnSCB_ICTR_INTLINESNUM_Pos 0U /*!< ICTR: INTLINESNUM Position */ +#define SCnSCB_ICTR_INTLINESNUM_Msk (0xFUL /*<< SCnSCB_ICTR_INTLINESNUM_Pos*/) /*!< ICTR: INTLINESNUM Mask */ + +/*@} end of group CMSIS_SCnotSCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick System Tick Timer (SysTick) + \brief Type definitions for the System Timer Registers. + @{ + */ + +/** + \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_ITM Instrumentation Trace Macrocell (ITM) + \brief Type definitions for the Instrumentation Trace Macrocell (ITM) + @{ + */ + +/** + \brief Structure type to access the Instrumentation Trace Macrocell Register (ITM). + */ +typedef struct +{ + __OM union + { + __OM uint8_t u8; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 8-bit */ + __OM uint16_t u16; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 16-bit */ + __OM uint32_t u32; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 32-bit */ + } PORT [32U]; /*!< Offset: 0x000 ( /W) ITM Stimulus Port Registers */ + uint32_t RESERVED0[864U]; + __IOM uint32_t TER; /*!< Offset: 0xE00 (R/W) ITM Trace Enable Register */ + uint32_t RESERVED1[15U]; + __IOM uint32_t TPR; /*!< Offset: 0xE40 (R/W) ITM Trace Privilege Register */ + uint32_t RESERVED2[15U]; + __IOM uint32_t TCR; /*!< Offset: 0xE80 (R/W) ITM Trace Control Register */ + uint32_t RESERVED3[29U]; + __OM uint32_t IWR; /*!< Offset: 0xEF8 ( /W) ITM Integration Write Register */ + __IM uint32_t IRR; /*!< Offset: 0xEFC (R/ ) ITM Integration Read Register */ + __IOM uint32_t IMCR; /*!< Offset: 0xF00 (R/W) ITM Integration Mode Control Register */ + uint32_t RESERVED4[43U]; + __OM uint32_t LAR; /*!< Offset: 0xFB0 ( /W) ITM Lock Access Register */ + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) ITM Lock Status Register */ + uint32_t RESERVED5[1U]; + __IM uint32_t DEVARCH; /*!< Offset: 0xFBC (R/ ) ITM Device Architecture Register */ + uint32_t RESERVED6[4U]; + __IM uint32_t PID4; /*!< Offset: 0xFD0 (R/ ) ITM Peripheral Identification Register #4 */ + __IM uint32_t PID5; /*!< Offset: 0xFD4 (R/ ) ITM Peripheral Identification Register #5 */ + __IM uint32_t PID6; /*!< Offset: 0xFD8 (R/ ) ITM Peripheral Identification Register #6 */ + __IM uint32_t PID7; /*!< Offset: 0xFDC (R/ ) ITM Peripheral Identification Register #7 */ + __IM uint32_t PID0; /*!< Offset: 0xFE0 (R/ ) ITM Peripheral Identification Register #0 */ + __IM uint32_t PID1; /*!< Offset: 0xFE4 (R/ ) ITM Peripheral Identification Register #1 */ + __IM uint32_t PID2; /*!< Offset: 0xFE8 (R/ ) ITM Peripheral Identification Register #2 */ + __IM uint32_t PID3; /*!< Offset: 0xFEC (R/ ) ITM Peripheral Identification Register #3 */ + __IM uint32_t CID0; /*!< Offset: 0xFF0 (R/ ) ITM Component Identification Register #0 */ + __IM uint32_t CID1; /*!< Offset: 0xFF4 (R/ ) ITM Component Identification Register #1 */ + __IM uint32_t CID2; /*!< Offset: 0xFF8 (R/ ) ITM Component Identification Register #2 */ + __IM uint32_t CID3; /*!< Offset: 0xFFC (R/ ) ITM Component Identification Register #3 */ +} ITM_Type; + +/* ITM Stimulus Port Register Definitions */ +#define ITM_STIM_DISABLED_Pos 1U /*!< ITM STIM: DISABLED Position */ +#define ITM_STIM_DISABLED_Msk (0x1UL << ITM_STIM_DISABLED_Pos) /*!< ITM STIM: DISABLED Mask */ + +#define ITM_STIM_FIFOREADY_Pos 0U /*!< ITM STIM: FIFOREADY Position */ +#define ITM_STIM_FIFOREADY_Msk (0x1UL /*<< ITM_STIM_FIFOREADY_Pos*/) /*!< ITM STIM: FIFOREADY Mask */ + +/* ITM Trace Privilege Register Definitions */ +#define ITM_TPR_PRIVMASK_Pos 0U /*!< ITM TPR: PRIVMASK Position */ +#define ITM_TPR_PRIVMASK_Msk (0xFFFFFFFFUL /*<< ITM_TPR_PRIVMASK_Pos*/) /*!< ITM TPR: PRIVMASK Mask */ + +/* ITM Trace Control Register Definitions */ +#define ITM_TCR_BUSY_Pos 23U /*!< ITM TCR: BUSY Position */ +#define ITM_TCR_BUSY_Msk (1UL << ITM_TCR_BUSY_Pos) /*!< ITM TCR: BUSY Mask */ + +#define ITM_TCR_TRACEBUSID_Pos 16U /*!< ITM TCR: ATBID Position */ +#define ITM_TCR_TRACEBUSID_Msk (0x7FUL << ITM_TCR_TRACEBUSID_Pos) /*!< ITM TCR: ATBID Mask */ + +#define ITM_TCR_GTSFREQ_Pos 10U /*!< ITM TCR: Global timestamp frequency Position */ +#define ITM_TCR_GTSFREQ_Msk (3UL << ITM_TCR_GTSFREQ_Pos) /*!< ITM TCR: Global timestamp frequency Mask */ + +#define ITM_TCR_TSPRESCALE_Pos 8U /*!< ITM TCR: TSPRESCALE Position */ +#define ITM_TCR_TSPRESCALE_Msk (3UL << ITM_TCR_TSPRESCALE_Pos) /*!< ITM TCR: TSPRESCALE Mask */ + +#define ITM_TCR_STALLENA_Pos 5U /*!< ITM TCR: STALLENA Position */ +#define ITM_TCR_STALLENA_Msk (1UL << ITM_TCR_STALLENA_Pos) /*!< ITM TCR: STALLENA Mask */ + +#define ITM_TCR_SWOENA_Pos 4U /*!< ITM TCR: SWOENA Position */ +#define ITM_TCR_SWOENA_Msk (1UL << ITM_TCR_SWOENA_Pos) /*!< ITM TCR: SWOENA Mask */ + +#define ITM_TCR_DWTENA_Pos 3U /*!< ITM TCR: DWTENA Position */ +#define ITM_TCR_DWTENA_Msk (1UL << ITM_TCR_DWTENA_Pos) /*!< ITM TCR: DWTENA Mask */ + +#define ITM_TCR_SYNCENA_Pos 2U /*!< ITM TCR: SYNCENA Position */ +#define ITM_TCR_SYNCENA_Msk (1UL << ITM_TCR_SYNCENA_Pos) /*!< ITM TCR: SYNCENA Mask */ + +#define ITM_TCR_TSENA_Pos 1U /*!< ITM TCR: TSENA Position */ +#define ITM_TCR_TSENA_Msk (1UL << ITM_TCR_TSENA_Pos) /*!< ITM TCR: TSENA Mask */ + +#define ITM_TCR_ITMENA_Pos 0U /*!< ITM TCR: ITM Enable bit Position */ +#define ITM_TCR_ITMENA_Msk (1UL /*<< ITM_TCR_ITMENA_Pos*/) /*!< ITM TCR: ITM Enable bit Mask */ + +/* ITM Integration Write Register Definitions */ +#define ITM_IWR_ATVALIDM_Pos 0U /*!< ITM IWR: ATVALIDM Position */ +#define ITM_IWR_ATVALIDM_Msk (1UL /*<< ITM_IWR_ATVALIDM_Pos*/) /*!< ITM IWR: ATVALIDM Mask */ + +/* ITM Integration Read Register Definitions */ +#define ITM_IRR_ATREADYM_Pos 0U /*!< ITM IRR: ATREADYM Position */ +#define ITM_IRR_ATREADYM_Msk (1UL /*<< ITM_IRR_ATREADYM_Pos*/) /*!< ITM IRR: ATREADYM Mask */ + +/* ITM Integration Mode Control Register Definitions */ +#define ITM_IMCR_INTEGRATION_Pos 0U /*!< ITM IMCR: INTEGRATION Position */ +#define ITM_IMCR_INTEGRATION_Msk (1UL /*<< ITM_IMCR_INTEGRATION_Pos*/) /*!< ITM IMCR: INTEGRATION Mask */ + +/* ITM Lock Status Register Definitions */ +#define ITM_LSR_ByteAcc_Pos 2U /*!< ITM LSR: ByteAcc Position */ +#define ITM_LSR_ByteAcc_Msk (1UL << ITM_LSR_ByteAcc_Pos) /*!< ITM LSR: ByteAcc Mask */ + +#define ITM_LSR_Access_Pos 1U /*!< ITM LSR: Access Position */ +#define ITM_LSR_Access_Msk (1UL << ITM_LSR_Access_Pos) /*!< ITM LSR: Access Mask */ + +#define ITM_LSR_Present_Pos 0U /*!< ITM LSR: Present Position */ +#define ITM_LSR_Present_Msk (1UL /*<< ITM_LSR_Present_Pos*/) /*!< ITM LSR: Present Mask */ + +/*@}*/ /* end of group CMSIS_ITM */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DWT Data Watchpoint and Trace (DWT) + \brief Type definitions for the Data Watchpoint and Trace (DWT) + @{ + */ + +/** + \brief Structure type to access the Data Watchpoint and Trace Register (DWT). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */ + __IOM uint32_t CYCCNT; /*!< Offset: 0x004 (R/W) Cycle Count Register */ + __IOM uint32_t CPICNT; /*!< Offset: 0x008 (R/W) CPI Count Register */ + __IOM uint32_t EXCCNT; /*!< Offset: 0x00C (R/W) Exception Overhead Count Register */ + __IOM uint32_t SLEEPCNT; /*!< Offset: 0x010 (R/W) Sleep Count Register */ + __IOM uint32_t LSUCNT; /*!< Offset: 0x014 (R/W) LSU Count Register */ + __IOM uint32_t FOLDCNT; /*!< Offset: 0x018 (R/W) Folded-instruction Count Register */ + __IM uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register */ + __IOM uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */ + uint32_t RESERVED1[1U]; + __IOM uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */ + uint32_t RESERVED2[1U]; + __IOM uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */ + uint32_t RESERVED3[1U]; + __IOM uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */ + uint32_t RESERVED4[1U]; + __IOM uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */ + uint32_t RESERVED5[1U]; + __IOM uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */ + uint32_t RESERVED6[1U]; + __IOM uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */ + uint32_t RESERVED7[1U]; + __IOM uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */ + uint32_t RESERVED8[1U]; + __IOM uint32_t COMP4; /*!< Offset: 0x060 (R/W) Comparator Register 4 */ + uint32_t RESERVED9[1U]; + __IOM uint32_t FUNCTION4; /*!< Offset: 0x068 (R/W) Function Register 4 */ + uint32_t RESERVED10[1U]; + __IOM uint32_t COMP5; /*!< Offset: 0x070 (R/W) Comparator Register 5 */ + uint32_t RESERVED11[1U]; + __IOM uint32_t FUNCTION5; /*!< Offset: 0x078 (R/W) Function Register 5 */ + uint32_t RESERVED12[1U]; + __IOM uint32_t COMP6; /*!< Offset: 0x080 (R/W) Comparator Register 6 */ + uint32_t RESERVED13[1U]; + __IOM uint32_t FUNCTION6; /*!< Offset: 0x088 (R/W) Function Register 6 */ + uint32_t RESERVED14[1U]; + __IOM uint32_t COMP7; /*!< Offset: 0x090 (R/W) Comparator Register 7 */ + uint32_t RESERVED15[1U]; + __IOM uint32_t FUNCTION7; /*!< Offset: 0x098 (R/W) Function Register 7 */ + uint32_t RESERVED16[1U]; + __IOM uint32_t COMP8; /*!< Offset: 0x0A0 (R/W) Comparator Register 8 */ + uint32_t RESERVED17[1U]; + __IOM uint32_t FUNCTION8; /*!< Offset: 0x0A8 (R/W) Function Register 8 */ + uint32_t RESERVED18[1U]; + __IOM uint32_t COMP9; /*!< Offset: 0x0B0 (R/W) Comparator Register 9 */ + uint32_t RESERVED19[1U]; + __IOM uint32_t FUNCTION9; /*!< Offset: 0x0B8 (R/W) Function Register 9 */ + uint32_t RESERVED20[1U]; + __IOM uint32_t COMP10; /*!< Offset: 0x0C0 (R/W) Comparator Register 10 */ + uint32_t RESERVED21[1U]; + __IOM uint32_t FUNCTION10; /*!< Offset: 0x0C8 (R/W) Function Register 10 */ + uint32_t RESERVED22[1U]; + __IOM uint32_t COMP11; /*!< Offset: 0x0D0 (R/W) Comparator Register 11 */ + uint32_t RESERVED23[1U]; + __IOM uint32_t FUNCTION11; /*!< Offset: 0x0D8 (R/W) Function Register 11 */ + uint32_t RESERVED24[1U]; + __IOM uint32_t COMP12; /*!< Offset: 0x0E0 (R/W) Comparator Register 12 */ + uint32_t RESERVED25[1U]; + __IOM uint32_t FUNCTION12; /*!< Offset: 0x0E8 (R/W) Function Register 12 */ + uint32_t RESERVED26[1U]; + __IOM uint32_t COMP13; /*!< Offset: 0x0F0 (R/W) Comparator Register 13 */ + uint32_t RESERVED27[1U]; + __IOM uint32_t FUNCTION13; /*!< Offset: 0x0F8 (R/W) Function Register 13 */ + uint32_t RESERVED28[1U]; + __IOM uint32_t COMP14; /*!< Offset: 0x100 (R/W) Comparator Register 14 */ + uint32_t RESERVED29[1U]; + __IOM uint32_t FUNCTION14; /*!< Offset: 0x108 (R/W) Function Register 14 */ + uint32_t RESERVED30[1U]; + __IOM uint32_t COMP15; /*!< Offset: 0x110 (R/W) Comparator Register 15 */ + uint32_t RESERVED31[1U]; + __IOM uint32_t FUNCTION15; /*!< Offset: 0x118 (R/W) Function Register 15 */ + uint32_t RESERVED32[934U]; + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R ) Lock Status Register */ + uint32_t RESERVED33[1U]; + __IM uint32_t DEVARCH; /*!< Offset: 0xFBC (R/ ) Device Architecture Register */ +} DWT_Type; + +/* DWT Control Register Definitions */ +#define DWT_CTRL_NUMCOMP_Pos 28U /*!< DWT CTRL: NUMCOMP Position */ +#define DWT_CTRL_NUMCOMP_Msk (0xFUL << DWT_CTRL_NUMCOMP_Pos) /*!< DWT CTRL: NUMCOMP Mask */ + +#define DWT_CTRL_NOTRCPKT_Pos 27U /*!< DWT CTRL: NOTRCPKT Position */ +#define DWT_CTRL_NOTRCPKT_Msk (0x1UL << DWT_CTRL_NOTRCPKT_Pos) /*!< DWT CTRL: NOTRCPKT Mask */ + +#define DWT_CTRL_NOEXTTRIG_Pos 26U /*!< DWT CTRL: NOEXTTRIG Position */ +#define DWT_CTRL_NOEXTTRIG_Msk (0x1UL << DWT_CTRL_NOEXTTRIG_Pos) /*!< DWT CTRL: NOEXTTRIG Mask */ + +#define DWT_CTRL_NOCYCCNT_Pos 25U /*!< DWT CTRL: NOCYCCNT Position */ +#define DWT_CTRL_NOCYCCNT_Msk (0x1UL << DWT_CTRL_NOCYCCNT_Pos) /*!< DWT CTRL: NOCYCCNT Mask */ + +#define DWT_CTRL_NOPRFCNT_Pos 24U /*!< DWT CTRL: NOPRFCNT Position */ +#define DWT_CTRL_NOPRFCNT_Msk (0x1UL << DWT_CTRL_NOPRFCNT_Pos) /*!< DWT CTRL: NOPRFCNT Mask */ + +#define DWT_CTRL_CYCDISS_Pos 23U /*!< DWT CTRL: CYCDISS Position */ +#define DWT_CTRL_CYCDISS_Msk (0x1UL << DWT_CTRL_CYCDISS_Pos) /*!< DWT CTRL: CYCDISS Mask */ + +#define DWT_CTRL_CYCEVTENA_Pos 22U /*!< DWT CTRL: CYCEVTENA Position */ +#define DWT_CTRL_CYCEVTENA_Msk (0x1UL << DWT_CTRL_CYCEVTENA_Pos) /*!< DWT CTRL: CYCEVTENA Mask */ + +#define DWT_CTRL_FOLDEVTENA_Pos 21U /*!< DWT CTRL: FOLDEVTENA Position */ +#define DWT_CTRL_FOLDEVTENA_Msk (0x1UL << DWT_CTRL_FOLDEVTENA_Pos) /*!< DWT CTRL: FOLDEVTENA Mask */ + +#define DWT_CTRL_LSUEVTENA_Pos 20U /*!< DWT CTRL: LSUEVTENA Position */ +#define DWT_CTRL_LSUEVTENA_Msk (0x1UL << DWT_CTRL_LSUEVTENA_Pos) /*!< DWT CTRL: LSUEVTENA Mask */ + +#define DWT_CTRL_SLEEPEVTENA_Pos 19U /*!< DWT CTRL: SLEEPEVTENA Position */ +#define DWT_CTRL_SLEEPEVTENA_Msk (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos) /*!< DWT CTRL: SLEEPEVTENA Mask */ + +#define DWT_CTRL_EXCEVTENA_Pos 18U /*!< DWT CTRL: EXCEVTENA Position */ +#define DWT_CTRL_EXCEVTENA_Msk (0x1UL << DWT_CTRL_EXCEVTENA_Pos) /*!< DWT CTRL: EXCEVTENA Mask */ + +#define DWT_CTRL_CPIEVTENA_Pos 17U /*!< DWT CTRL: CPIEVTENA Position */ +#define DWT_CTRL_CPIEVTENA_Msk (0x1UL << DWT_CTRL_CPIEVTENA_Pos) /*!< DWT CTRL: CPIEVTENA Mask */ + +#define DWT_CTRL_EXCTRCENA_Pos 16U /*!< DWT CTRL: EXCTRCENA Position */ +#define DWT_CTRL_EXCTRCENA_Msk (0x1UL << DWT_CTRL_EXCTRCENA_Pos) /*!< DWT CTRL: EXCTRCENA Mask */ + +#define DWT_CTRL_PCSAMPLENA_Pos 12U /*!< DWT CTRL: PCSAMPLENA Position */ +#define DWT_CTRL_PCSAMPLENA_Msk (0x1UL << DWT_CTRL_PCSAMPLENA_Pos) /*!< DWT CTRL: PCSAMPLENA Mask */ + +#define DWT_CTRL_SYNCTAP_Pos 10U /*!< DWT CTRL: SYNCTAP Position */ +#define DWT_CTRL_SYNCTAP_Msk (0x3UL << DWT_CTRL_SYNCTAP_Pos) /*!< DWT CTRL: SYNCTAP Mask */ + +#define DWT_CTRL_CYCTAP_Pos 9U /*!< DWT CTRL: CYCTAP Position */ +#define DWT_CTRL_CYCTAP_Msk (0x1UL << DWT_CTRL_CYCTAP_Pos) /*!< DWT CTRL: CYCTAP Mask */ + +#define DWT_CTRL_POSTINIT_Pos 5U /*!< DWT CTRL: POSTINIT Position */ +#define DWT_CTRL_POSTINIT_Msk (0xFUL << DWT_CTRL_POSTINIT_Pos) /*!< DWT CTRL: POSTINIT Mask */ + +#define DWT_CTRL_POSTPRESET_Pos 1U /*!< DWT CTRL: POSTPRESET Position */ +#define DWT_CTRL_POSTPRESET_Msk (0xFUL << DWT_CTRL_POSTPRESET_Pos) /*!< DWT CTRL: POSTPRESET Mask */ + +#define DWT_CTRL_CYCCNTENA_Pos 0U /*!< DWT CTRL: CYCCNTENA Position */ +#define DWT_CTRL_CYCCNTENA_Msk (0x1UL /*<< DWT_CTRL_CYCCNTENA_Pos*/) /*!< DWT CTRL: CYCCNTENA Mask */ + +/* DWT CPI Count Register Definitions */ +#define DWT_CPICNT_CPICNT_Pos 0U /*!< DWT CPICNT: CPICNT Position */ +#define DWT_CPICNT_CPICNT_Msk (0xFFUL /*<< DWT_CPICNT_CPICNT_Pos*/) /*!< DWT CPICNT: CPICNT Mask */ + +/* DWT Exception Overhead Count Register Definitions */ +#define DWT_EXCCNT_EXCCNT_Pos 0U /*!< DWT EXCCNT: EXCCNT Position */ +#define DWT_EXCCNT_EXCCNT_Msk (0xFFUL /*<< DWT_EXCCNT_EXCCNT_Pos*/) /*!< DWT EXCCNT: EXCCNT Mask */ + +/* DWT Sleep Count Register Definitions */ +#define DWT_SLEEPCNT_SLEEPCNT_Pos 0U /*!< DWT SLEEPCNT: SLEEPCNT Position */ +#define DWT_SLEEPCNT_SLEEPCNT_Msk (0xFFUL /*<< DWT_SLEEPCNT_SLEEPCNT_Pos*/) /*!< DWT SLEEPCNT: SLEEPCNT Mask */ + +/* DWT LSU Count Register Definitions */ +#define DWT_LSUCNT_LSUCNT_Pos 0U /*!< DWT LSUCNT: LSUCNT Position */ +#define DWT_LSUCNT_LSUCNT_Msk (0xFFUL /*<< DWT_LSUCNT_LSUCNT_Pos*/) /*!< DWT LSUCNT: LSUCNT Mask */ + +/* DWT Folded-instruction Count Register Definitions */ +#define DWT_FOLDCNT_FOLDCNT_Pos 0U /*!< DWT FOLDCNT: FOLDCNT Position */ +#define DWT_FOLDCNT_FOLDCNT_Msk (0xFFUL /*<< DWT_FOLDCNT_FOLDCNT_Pos*/) /*!< DWT FOLDCNT: FOLDCNT Mask */ + +/* DWT Comparator Function Register Definitions */ +#define DWT_FUNCTION_ID_Pos 27U /*!< DWT FUNCTION: ID Position */ +#define DWT_FUNCTION_ID_Msk (0x1FUL << DWT_FUNCTION_ID_Pos) /*!< DWT FUNCTION: ID Mask */ + +#define DWT_FUNCTION_MATCHED_Pos 24U /*!< DWT FUNCTION: MATCHED Position */ +#define DWT_FUNCTION_MATCHED_Msk (0x1UL << DWT_FUNCTION_MATCHED_Pos) /*!< DWT FUNCTION: MATCHED Mask */ + +#define DWT_FUNCTION_DATAVSIZE_Pos 10U /*!< DWT FUNCTION: DATAVSIZE Position */ +#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */ + +#define DWT_FUNCTION_ACTION_Pos 4U /*!< DWT FUNCTION: ACTION Position */ +#define DWT_FUNCTION_ACTION_Msk (0x1UL << DWT_FUNCTION_ACTION_Pos) /*!< DWT FUNCTION: ACTION Mask */ + +#define DWT_FUNCTION_MATCH_Pos 0U /*!< DWT FUNCTION: MATCH Position */ +#define DWT_FUNCTION_MATCH_Msk (0xFUL /*<< DWT_FUNCTION_MATCH_Pos*/) /*!< DWT FUNCTION: MATCH Mask */ + +/*@}*/ /* end of group CMSIS_DWT */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_TPI Trace Port Interface (TPI) + \brief Type definitions for the Trace Port Interface (TPI) + @{ + */ + +/** + \brief Structure type to access the Trace Port Interface Register (TPI). + */ +typedef struct +{ + __IM uint32_t SSPSR; /*!< Offset: 0x000 (R/ ) Supported Parallel Port Size Register */ + __IOM uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Size Register */ + uint32_t RESERVED0[2U]; + __IOM uint32_t ACPR; /*!< Offset: 0x010 (R/W) Asynchronous Clock Prescaler Register */ + uint32_t RESERVED1[55U]; + __IOM uint32_t SPPR; /*!< Offset: 0x0F0 (R/W) Selected Pin Protocol Register */ + uint32_t RESERVED2[131U]; + __IM uint32_t FFSR; /*!< Offset: 0x300 (R/ ) Formatter and Flush Status Register */ + __IOM uint32_t FFCR; /*!< Offset: 0x304 (R/W) Formatter and Flush Control Register */ + __IOM uint32_t PSCR; /*!< Offset: 0x308 (R/W) Periodic Synchronization Control Register */ + uint32_t RESERVED3[759U]; + __IM uint32_t TRIGGER; /*!< Offset: 0xEE8 (R/ ) TRIGGER Register */ + __IM uint32_t ITFTTD0; /*!< Offset: 0xEEC (R/ ) Integration Test FIFO Test Data 0 Register */ + __IOM uint32_t ITATBCTR2; /*!< Offset: 0xEF0 (R/W) Integration Test ATB Control Register 2 */ + uint32_t RESERVED4[1U]; + __IM uint32_t ITATBCTR0; /*!< Offset: 0xEF8 (R/ ) Integration Test ATB Control Register 0 */ + __IM uint32_t ITFTTD1; /*!< Offset: 0xEFC (R/ ) Integration Test FIFO Test Data 1 Register */ + __IOM uint32_t ITCTRL; /*!< Offset: 0xF00 (R/W) Integration Mode Control */ + uint32_t RESERVED5[39U]; + __IOM uint32_t CLAIMSET; /*!< Offset: 0xFA0 (R/W) Claim tag set */ + __IOM uint32_t CLAIMCLR; /*!< Offset: 0xFA4 (R/W) Claim tag clear */ + uint32_t RESERVED7[8U]; + __IM uint32_t DEVID; /*!< Offset: 0xFC8 (R/ ) Device Configuration Register */ + __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) Device Type Identifier Register */ +} TPI_Type; + +/* TPI Asynchronous Clock Prescaler Register Definitions */ +#define TPI_ACPR_PRESCALER_Pos 0U /*!< TPI ACPR: PRESCALER Position */ +#define TPI_ACPR_PRESCALER_Msk (0x1FFFUL /*<< TPI_ACPR_PRESCALER_Pos*/) /*!< TPI ACPR: PRESCALER Mask */ + +/* TPI Selected Pin Protocol Register Definitions */ +#define TPI_SPPR_TXMODE_Pos 0U /*!< TPI SPPR: TXMODE Position */ +#define TPI_SPPR_TXMODE_Msk (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/) /*!< TPI SPPR: TXMODE Mask */ + +/* TPI Formatter and Flush Status Register Definitions */ +#define TPI_FFSR_FtNonStop_Pos 3U /*!< TPI FFSR: FtNonStop Position */ +#define TPI_FFSR_FtNonStop_Msk (0x1UL << TPI_FFSR_FtNonStop_Pos) /*!< TPI FFSR: FtNonStop Mask */ + +#define TPI_FFSR_TCPresent_Pos 2U /*!< TPI FFSR: TCPresent Position */ +#define TPI_FFSR_TCPresent_Msk (0x1UL << TPI_FFSR_TCPresent_Pos) /*!< TPI FFSR: TCPresent Mask */ + +#define TPI_FFSR_FtStopped_Pos 1U /*!< TPI FFSR: FtStopped Position */ +#define TPI_FFSR_FtStopped_Msk (0x1UL << TPI_FFSR_FtStopped_Pos) /*!< TPI FFSR: FtStopped Mask */ + +#define TPI_FFSR_FlInProg_Pos 0U /*!< TPI FFSR: FlInProg Position */ +#define TPI_FFSR_FlInProg_Msk (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/) /*!< TPI FFSR: FlInProg Mask */ + +/* TPI Formatter and Flush Control Register Definitions */ +#define TPI_FFCR_TrigIn_Pos 8U /*!< TPI FFCR: TrigIn Position */ +#define TPI_FFCR_TrigIn_Msk (0x1UL << TPI_FFCR_TrigIn_Pos) /*!< TPI FFCR: TrigIn Mask */ + +#define TPI_FFCR_FOnMan_Pos 6U /*!< TPI FFCR: FOnMan Position */ +#define TPI_FFCR_FOnMan_Msk (0x1UL << TPI_FFCR_FOnMan_Pos) /*!< TPI FFCR: FOnMan Mask */ + +#define TPI_FFCR_EnFCont_Pos 1U /*!< TPI FFCR: EnFCont Position */ +#define TPI_FFCR_EnFCont_Msk (0x1UL << TPI_FFCR_EnFCont_Pos) /*!< TPI FFCR: EnFCont Mask */ + +/* TPI TRIGGER Register Definitions */ +#define TPI_TRIGGER_TRIGGER_Pos 0U /*!< TPI TRIGGER: TRIGGER Position */ +#define TPI_TRIGGER_TRIGGER_Msk (0x1UL /*<< TPI_TRIGGER_TRIGGER_Pos*/) /*!< TPI TRIGGER: TRIGGER Mask */ + +/* TPI Integration Test FIFO Test Data 0 Register Definitions */ +#define TPI_ITFTTD0_ATB_IF2_ATVALID_Pos 29U /*!< TPI ITFTTD0: ATB Interface 2 ATVALIDPosition */ +#define TPI_ITFTTD0_ATB_IF2_ATVALID_Msk (0x3UL << TPI_ITFTTD0_ATB_IF2_ATVALID_Pos) /*!< TPI ITFTTD0: ATB Interface 2 ATVALID Mask */ + +#define TPI_ITFTTD0_ATB_IF2_bytecount_Pos 27U /*!< TPI ITFTTD0: ATB Interface 2 byte count Position */ +#define TPI_ITFTTD0_ATB_IF2_bytecount_Msk (0x3UL << TPI_ITFTTD0_ATB_IF2_bytecount_Pos) /*!< TPI ITFTTD0: ATB Interface 2 byte count Mask */ + +#define TPI_ITFTTD0_ATB_IF1_ATVALID_Pos 26U /*!< TPI ITFTTD0: ATB Interface 1 ATVALID Position */ +#define TPI_ITFTTD0_ATB_IF1_ATVALID_Msk (0x3UL << TPI_ITFTTD0_ATB_IF1_ATVALID_Pos) /*!< TPI ITFTTD0: ATB Interface 1 ATVALID Mask */ + +#define TPI_ITFTTD0_ATB_IF1_bytecount_Pos 24U /*!< TPI ITFTTD0: ATB Interface 1 byte count Position */ +#define TPI_ITFTTD0_ATB_IF1_bytecount_Msk (0x3UL << TPI_ITFTTD0_ATB_IF1_bytecount_Pos) /*!< TPI ITFTTD0: ATB Interface 1 byte countt Mask */ + +#define TPI_ITFTTD0_ATB_IF1_data2_Pos 16U /*!< TPI ITFTTD0: ATB Interface 1 data2 Position */ +#define TPI_ITFTTD0_ATB_IF1_data2_Msk (0xFFUL << TPI_ITFTTD0_ATB_IF1_data1_Pos) /*!< TPI ITFTTD0: ATB Interface 1 data2 Mask */ + +#define TPI_ITFTTD0_ATB_IF1_data1_Pos 8U /*!< TPI ITFTTD0: ATB Interface 1 data1 Position */ +#define TPI_ITFTTD0_ATB_IF1_data1_Msk (0xFFUL << TPI_ITFTTD0_ATB_IF1_data1_Pos) /*!< TPI ITFTTD0: ATB Interface 1 data1 Mask */ + +#define TPI_ITFTTD0_ATB_IF1_data0_Pos 0U /*!< TPI ITFTTD0: ATB Interface 1 data0 Position */ +#define TPI_ITFTTD0_ATB_IF1_data0_Msk (0xFFUL /*<< TPI_ITFTTD0_ATB_IF1_data0_Pos*/) /*!< TPI ITFTTD0: ATB Interface 1 data0 Mask */ + +/* TPI Integration Test ATB Control Register 2 Register Definitions */ +#define TPI_ITATBCTR2_AFVALID2S_Pos 1U /*!< TPI ITATBCTR2: AFVALID2S Position */ +#define TPI_ITATBCTR2_AFVALID2S_Msk (0x1UL << TPI_ITATBCTR2_AFVALID2S_Pos) /*!< TPI ITATBCTR2: AFVALID2SS Mask */ + +#define TPI_ITATBCTR2_AFVALID1S_Pos 1U /*!< TPI ITATBCTR2: AFVALID1S Position */ +#define TPI_ITATBCTR2_AFVALID1S_Msk (0x1UL << TPI_ITATBCTR2_AFVALID1S_Pos) /*!< TPI ITATBCTR2: AFVALID1SS Mask */ + +#define TPI_ITATBCTR2_ATREADY2S_Pos 0U /*!< TPI ITATBCTR2: ATREADY2S Position */ +#define TPI_ITATBCTR2_ATREADY2S_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY2S_Pos*/) /*!< TPI ITATBCTR2: ATREADY2S Mask */ + +#define TPI_ITATBCTR2_ATREADY1S_Pos 0U /*!< TPI ITATBCTR2: ATREADY1S Position */ +#define TPI_ITATBCTR2_ATREADY1S_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY1S_Pos*/) /*!< TPI ITATBCTR2: ATREADY1S Mask */ + +/* TPI Integration Test FIFO Test Data 1 Register Definitions */ +#define TPI_ITFTTD1_ATB_IF2_ATVALID_Pos 29U /*!< TPI ITFTTD1: ATB Interface 2 ATVALID Position */ +#define TPI_ITFTTD1_ATB_IF2_ATVALID_Msk (0x3UL << TPI_ITFTTD1_ATB_IF2_ATVALID_Pos) /*!< TPI ITFTTD1: ATB Interface 2 ATVALID Mask */ + +#define TPI_ITFTTD1_ATB_IF2_bytecount_Pos 27U /*!< TPI ITFTTD1: ATB Interface 2 byte count Position */ +#define TPI_ITFTTD1_ATB_IF2_bytecount_Msk (0x3UL << TPI_ITFTTD1_ATB_IF2_bytecount_Pos) /*!< TPI ITFTTD1: ATB Interface 2 byte count Mask */ + +#define TPI_ITFTTD1_ATB_IF1_ATVALID_Pos 26U /*!< TPI ITFTTD1: ATB Interface 1 ATVALID Position */ +#define TPI_ITFTTD1_ATB_IF1_ATVALID_Msk (0x3UL << TPI_ITFTTD1_ATB_IF1_ATVALID_Pos) /*!< TPI ITFTTD1: ATB Interface 1 ATVALID Mask */ + +#define TPI_ITFTTD1_ATB_IF1_bytecount_Pos 24U /*!< TPI ITFTTD1: ATB Interface 1 byte count Position */ +#define TPI_ITFTTD1_ATB_IF1_bytecount_Msk (0x3UL << TPI_ITFTTD1_ATB_IF1_bytecount_Pos) /*!< TPI ITFTTD1: ATB Interface 1 byte countt Mask */ + +#define TPI_ITFTTD1_ATB_IF2_data2_Pos 16U /*!< TPI ITFTTD1: ATB Interface 2 data2 Position */ +#define TPI_ITFTTD1_ATB_IF2_data2_Msk (0xFFUL << TPI_ITFTTD1_ATB_IF2_data1_Pos) /*!< TPI ITFTTD1: ATB Interface 2 data2 Mask */ + +#define TPI_ITFTTD1_ATB_IF2_data1_Pos 8U /*!< TPI ITFTTD1: ATB Interface 2 data1 Position */ +#define TPI_ITFTTD1_ATB_IF2_data1_Msk (0xFFUL << TPI_ITFTTD1_ATB_IF2_data1_Pos) /*!< TPI ITFTTD1: ATB Interface 2 data1 Mask */ + +#define TPI_ITFTTD1_ATB_IF2_data0_Pos 0U /*!< TPI ITFTTD1: ATB Interface 2 data0 Position */ +#define TPI_ITFTTD1_ATB_IF2_data0_Msk (0xFFUL /*<< TPI_ITFTTD1_ATB_IF2_data0_Pos*/) /*!< TPI ITFTTD1: ATB Interface 2 data0 Mask */ + +/* TPI Integration Test ATB Control Register 0 Definitions */ +#define TPI_ITATBCTR0_AFVALID2S_Pos 1U /*!< TPI ITATBCTR0: AFVALID2S Position */ +#define TPI_ITATBCTR0_AFVALID2S_Msk (0x1UL << TPI_ITATBCTR0_AFVALID2S_Pos) /*!< TPI ITATBCTR0: AFVALID2SS Mask */ + +#define TPI_ITATBCTR0_AFVALID1S_Pos 1U /*!< TPI ITATBCTR0: AFVALID1S Position */ +#define TPI_ITATBCTR0_AFVALID1S_Msk (0x1UL << TPI_ITATBCTR0_AFVALID1S_Pos) /*!< TPI ITATBCTR0: AFVALID1SS Mask */ + +#define TPI_ITATBCTR0_ATREADY2S_Pos 0U /*!< TPI ITATBCTR0: ATREADY2S Position */ +#define TPI_ITATBCTR0_ATREADY2S_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY2S_Pos*/) /*!< TPI ITATBCTR0: ATREADY2S Mask */ + +#define TPI_ITATBCTR0_ATREADY1S_Pos 0U /*!< TPI ITATBCTR0: ATREADY1S Position */ +#define TPI_ITATBCTR0_ATREADY1S_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY1S_Pos*/) /*!< TPI ITATBCTR0: ATREADY1S Mask */ + +/* TPI Integration Mode Control Register Definitions */ +#define TPI_ITCTRL_Mode_Pos 0U /*!< TPI ITCTRL: Mode Position */ +#define TPI_ITCTRL_Mode_Msk (0x3UL /*<< TPI_ITCTRL_Mode_Pos*/) /*!< TPI ITCTRL: Mode Mask */ + +/* TPI DEVID Register Definitions */ +#define TPI_DEVID_NRZVALID_Pos 11U /*!< TPI DEVID: NRZVALID Position */ +#define TPI_DEVID_NRZVALID_Msk (0x1UL << TPI_DEVID_NRZVALID_Pos) /*!< TPI DEVID: NRZVALID Mask */ + +#define TPI_DEVID_MANCVALID_Pos 10U /*!< TPI DEVID: MANCVALID Position */ +#define TPI_DEVID_MANCVALID_Msk (0x1UL << TPI_DEVID_MANCVALID_Pos) /*!< TPI DEVID: MANCVALID Mask */ + +#define TPI_DEVID_PTINVALID_Pos 9U /*!< TPI DEVID: PTINVALID Position */ +#define TPI_DEVID_PTINVALID_Msk (0x1UL << TPI_DEVID_PTINVALID_Pos) /*!< TPI DEVID: PTINVALID Mask */ + +#define TPI_DEVID_FIFOSZ_Pos 6U /*!< TPI DEVID: FIFOSZ Position */ +#define TPI_DEVID_FIFOSZ_Msk (0x7UL << TPI_DEVID_FIFOSZ_Pos) /*!< TPI DEVID: FIFOSZ Mask */ + +#define TPI_DEVID_NrTraceInput_Pos 0U /*!< TPI DEVID: NrTraceInput Position */ +#define TPI_DEVID_NrTraceInput_Msk (0x3FUL /*<< TPI_DEVID_NrTraceInput_Pos*/) /*!< TPI DEVID: NrTraceInput Mask */ + +/* TPI DEVTYPE Register Definitions */ +#define TPI_DEVTYPE_SubType_Pos 4U /*!< TPI DEVTYPE: SubType Position */ +#define TPI_DEVTYPE_SubType_Msk (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/) /*!< TPI DEVTYPE: SubType Mask */ + +#define TPI_DEVTYPE_MajorType_Pos 0U /*!< TPI DEVTYPE: MajorType Position */ +#define TPI_DEVTYPE_MajorType_Msk (0xFUL << TPI_DEVTYPE_MajorType_Pos) /*!< TPI DEVTYPE: MajorType Mask */ + +/*@}*/ /* end of group CMSIS_TPI */ + + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_MPU Memory Protection Unit (MPU) + \brief Type definitions for the Memory Protection Unit (MPU) + @{ + */ + +/** + \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) MPU Region Limit Address Register */ + __IOM uint32_t RBAR_A1; /*!< Offset: 0x014 (R/W) MPU Region Base Address Register Alias 1 */ + __IOM uint32_t RLAR_A1; /*!< Offset: 0x018 (R/W) MPU Region Limit Address Register Alias 1 */ + __IOM uint32_t RBAR_A2; /*!< Offset: 0x01C (R/W) MPU Region Base Address Register Alias 2 */ + __IOM uint32_t RLAR_A2; /*!< Offset: 0x020 (R/W) MPU Region Limit Address Register Alias 2 */ + __IOM uint32_t RBAR_A3; /*!< Offset: 0x024 (R/W) MPU Region Base Address Register Alias 3 */ + __IOM uint32_t RLAR_A3; /*!< Offset: 0x028 (R/W) MPU Region Limit Address Register Alias 3 */ + uint32_t RESERVED0[1]; + union { + __IOM uint32_t MAIR[2]; + struct { + __IOM uint32_t MAIR0; /*!< Offset: 0x030 (R/W) MPU Memory Attribute Indirection Register 0 */ + __IOM uint32_t MAIR1; /*!< Offset: 0x034 (R/W) MPU Memory Attribute Indirection Register 1 */ + }; + }; +} MPU_Type; + +#define MPU_TYPE_RALIASES 4U + +/* MPU Type Register Definitions */ +#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register Definitions */ +#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register Definitions */ +#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register Definitions */ +#define MPU_RBAR_BASE_Pos 5U /*!< MPU RBAR: BASE Position */ +#define MPU_RBAR_BASE_Msk (0x7FFFFFFUL << MPU_RBAR_BASE_Pos) /*!< MPU RBAR: BASE Mask */ + +#define MPU_RBAR_SH_Pos 3U /*!< MPU RBAR: SH Position */ +#define MPU_RBAR_SH_Msk (0x3UL << MPU_RBAR_SH_Pos) /*!< MPU RBAR: SH Mask */ + +#define MPU_RBAR_AP_Pos 1U /*!< MPU RBAR: AP Position */ +#define MPU_RBAR_AP_Msk (0x3UL << MPU_RBAR_AP_Pos) /*!< MPU RBAR: AP Mask */ + +#define MPU_RBAR_XN_Pos 0U /*!< MPU RBAR: XN Position */ +#define MPU_RBAR_XN_Msk (01UL /*<< MPU_RBAR_XN_Pos*/) /*!< MPU RBAR: XN Mask */ + +/* MPU Region Limit Address Register Definitions */ +#define MPU_RLAR_LIMIT_Pos 5U /*!< MPU RLAR: LIMIT Position */ +#define MPU_RLAR_LIMIT_Msk (0x7FFFFFFUL << MPU_RLAR_LIMIT_Pos) /*!< MPU RLAR: LIMIT Mask */ + +#define MPU_RLAR_AttrIndx_Pos 1U /*!< MPU RLAR: AttrIndx Position */ +#define MPU_RLAR_AttrIndx_Msk (0x7UL << MPU_RLAR_AttrIndx_Pos) /*!< MPU RLAR: AttrIndx Mask */ + +#define MPU_RLAR_EN_Pos 0U /*!< MPU RLAR: Region enable bit Position */ +#define MPU_RLAR_EN_Msk (1UL /*<< MPU_RLAR_EN_Pos*/) /*!< MPU RLAR: Region enable bit Disable Mask */ + +/* MPU Memory Attribute Indirection Register 0 Definitions */ +#define MPU_MAIR0_Attr3_Pos 24U /*!< MPU MAIR0: Attr3 Position */ +#define MPU_MAIR0_Attr3_Msk (0xFFUL << MPU_MAIR0_Attr3_Pos) /*!< MPU MAIR0: Attr3 Mask */ + +#define MPU_MAIR0_Attr2_Pos 16U /*!< MPU MAIR0: Attr2 Position */ +#define MPU_MAIR0_Attr2_Msk (0xFFUL << MPU_MAIR0_Attr2_Pos) /*!< MPU MAIR0: Attr2 Mask */ + +#define MPU_MAIR0_Attr1_Pos 8U /*!< MPU MAIR0: Attr1 Position */ +#define MPU_MAIR0_Attr1_Msk (0xFFUL << MPU_MAIR0_Attr1_Pos) /*!< MPU MAIR0: Attr1 Mask */ + +#define MPU_MAIR0_Attr0_Pos 0U /*!< MPU MAIR0: Attr0 Position */ +#define MPU_MAIR0_Attr0_Msk (0xFFUL /*<< MPU_MAIR0_Attr0_Pos*/) /*!< MPU MAIR0: Attr0 Mask */ + +/* MPU Memory Attribute Indirection Register 1 Definitions */ +#define MPU_MAIR1_Attr7_Pos 24U /*!< MPU MAIR1: Attr7 Position */ +#define MPU_MAIR1_Attr7_Msk (0xFFUL << MPU_MAIR1_Attr7_Pos) /*!< MPU MAIR1: Attr7 Mask */ + +#define MPU_MAIR1_Attr6_Pos 16U /*!< MPU MAIR1: Attr6 Position */ +#define MPU_MAIR1_Attr6_Msk (0xFFUL << MPU_MAIR1_Attr6_Pos) /*!< MPU MAIR1: Attr6 Mask */ + +#define MPU_MAIR1_Attr5_Pos 8U /*!< MPU MAIR1: Attr5 Position */ +#define MPU_MAIR1_Attr5_Msk (0xFFUL << MPU_MAIR1_Attr5_Pos) /*!< MPU MAIR1: Attr5 Mask */ + +#define MPU_MAIR1_Attr4_Pos 0U /*!< MPU MAIR1: Attr4 Position */ +#define MPU_MAIR1_Attr4_Msk (0xFFUL /*<< MPU_MAIR1_Attr4_Pos*/) /*!< MPU MAIR1: Attr4 Mask */ + +/*@} end of group CMSIS_MPU */ +#endif + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SAU Security Attribution Unit (SAU) + \brief Type definitions for the Security Attribution Unit (SAU) + @{ + */ + +/** + \brief Structure type to access the Security Attribution Unit (SAU). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SAU Control Register */ + __IM uint32_t TYPE; /*!< Offset: 0x004 (R/ ) SAU Type Register */ +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) SAU Region Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) SAU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) SAU Region Limit Address Register */ +#else + uint32_t RESERVED0[3]; +#endif + __IOM uint32_t SFSR; /*!< Offset: 0x014 (R/W) Secure Fault Status Register */ + __IOM uint32_t SFAR; /*!< Offset: 0x018 (R/W) Secure Fault Address Register */ +} SAU_Type; + +/* SAU Control Register Definitions */ +#define SAU_CTRL_ALLNS_Pos 1U /*!< SAU CTRL: ALLNS Position */ +#define SAU_CTRL_ALLNS_Msk (1UL << SAU_CTRL_ALLNS_Pos) /*!< SAU CTRL: ALLNS Mask */ + +#define SAU_CTRL_ENABLE_Pos 0U /*!< SAU CTRL: ENABLE Position */ +#define SAU_CTRL_ENABLE_Msk (1UL /*<< SAU_CTRL_ENABLE_Pos*/) /*!< SAU CTRL: ENABLE Mask */ + +/* SAU Type Register Definitions */ +#define SAU_TYPE_SREGION_Pos 0U /*!< SAU TYPE: SREGION Position */ +#define SAU_TYPE_SREGION_Msk (0xFFUL /*<< SAU_TYPE_SREGION_Pos*/) /*!< SAU TYPE: SREGION Mask */ + +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) +/* SAU Region Number Register Definitions */ +#define SAU_RNR_REGION_Pos 0U /*!< SAU RNR: REGION Position */ +#define SAU_RNR_REGION_Msk (0xFFUL /*<< SAU_RNR_REGION_Pos*/) /*!< SAU RNR: REGION Mask */ + +/* SAU Region Base Address Register Definitions */ +#define SAU_RBAR_BADDR_Pos 5U /*!< SAU RBAR: BADDR Position */ +#define SAU_RBAR_BADDR_Msk (0x7FFFFFFUL << SAU_RBAR_BADDR_Pos) /*!< SAU RBAR: BADDR Mask */ + +/* SAU Region Limit Address Register Definitions */ +#define SAU_RLAR_LADDR_Pos 5U /*!< SAU RLAR: LADDR Position */ +#define SAU_RLAR_LADDR_Msk (0x7FFFFFFUL << SAU_RLAR_LADDR_Pos) /*!< SAU RLAR: LADDR Mask */ + +#define SAU_RLAR_NSC_Pos 1U /*!< SAU RLAR: NSC Position */ +#define SAU_RLAR_NSC_Msk (1UL << SAU_RLAR_NSC_Pos) /*!< SAU RLAR: NSC Mask */ + +#define SAU_RLAR_ENABLE_Pos 0U /*!< SAU RLAR: ENABLE Position */ +#define SAU_RLAR_ENABLE_Msk (1UL /*<< SAU_RLAR_ENABLE_Pos*/) /*!< SAU RLAR: ENABLE Mask */ + +#endif /* defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) */ + +/* Secure Fault Status Register Definitions */ +#define SAU_SFSR_LSERR_Pos 7U /*!< SAU SFSR: LSERR Position */ +#define SAU_SFSR_LSERR_Msk (1UL << SAU_SFSR_LSERR_Pos) /*!< SAU SFSR: LSERR Mask */ + +#define SAU_SFSR_SFARVALID_Pos 6U /*!< SAU SFSR: SFARVALID Position */ +#define SAU_SFSR_SFARVALID_Msk (1UL << SAU_SFSR_SFARVALID_Pos) /*!< SAU SFSR: SFARVALID Mask */ + +#define SAU_SFSR_LSPERR_Pos 5U /*!< SAU SFSR: LSPERR Position */ +#define SAU_SFSR_LSPERR_Msk (1UL << SAU_SFSR_LSPERR_Pos) /*!< SAU SFSR: LSPERR Mask */ + +#define SAU_SFSR_INVTRAN_Pos 4U /*!< SAU SFSR: INVTRAN Position */ +#define SAU_SFSR_INVTRAN_Msk (1UL << SAU_SFSR_INVTRAN_Pos) /*!< SAU SFSR: INVTRAN Mask */ + +#define SAU_SFSR_AUVIOL_Pos 3U /*!< SAU SFSR: AUVIOL Position */ +#define SAU_SFSR_AUVIOL_Msk (1UL << SAU_SFSR_AUVIOL_Pos) /*!< SAU SFSR: AUVIOL Mask */ + +#define SAU_SFSR_INVER_Pos 2U /*!< SAU SFSR: INVER Position */ +#define SAU_SFSR_INVER_Msk (1UL << SAU_SFSR_INVER_Pos) /*!< SAU SFSR: INVER Mask */ + +#define SAU_SFSR_INVIS_Pos 1U /*!< SAU SFSR: INVIS Position */ +#define SAU_SFSR_INVIS_Msk (1UL << SAU_SFSR_INVIS_Pos) /*!< SAU SFSR: INVIS Mask */ + +#define SAU_SFSR_INVEP_Pos 0U /*!< SAU SFSR: INVEP Position */ +#define SAU_SFSR_INVEP_Msk (1UL /*<< SAU_SFSR_INVEP_Pos*/) /*!< SAU SFSR: INVEP Mask */ + +/*@} end of group CMSIS_SAU */ +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_FPU Floating Point Unit (FPU) + \brief Type definitions for the Floating Point Unit (FPU) + @{ + */ + +/** + \brief Structure type to access the Floating Point Unit (FPU). + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IOM uint32_t FPCCR; /*!< Offset: 0x004 (R/W) Floating-Point Context Control Register */ + __IOM uint32_t FPCAR; /*!< Offset: 0x008 (R/W) Floating-Point Context Address Register */ + __IOM uint32_t FPDSCR; /*!< Offset: 0x00C (R/W) Floating-Point Default Status Control Register */ + __IM uint32_t MVFR0; /*!< Offset: 0x010 (R/ ) Media and FP Feature Register 0 */ + __IM uint32_t MVFR1; /*!< Offset: 0x014 (R/ ) Media and FP Feature Register 1 */ +} FPU_Type; + +/* Floating-Point Context Control Register Definitions */ +#define FPU_FPCCR_ASPEN_Pos 31U /*!< FPCCR: ASPEN bit Position */ +#define FPU_FPCCR_ASPEN_Msk (1UL << FPU_FPCCR_ASPEN_Pos) /*!< FPCCR: ASPEN bit Mask */ + +#define FPU_FPCCR_LSPEN_Pos 30U /*!< FPCCR: LSPEN Position */ +#define FPU_FPCCR_LSPEN_Msk (1UL << FPU_FPCCR_LSPEN_Pos) /*!< FPCCR: LSPEN bit Mask */ + +#define FPU_FPCCR_LSPENS_Pos 29U /*!< FPCCR: LSPENS Position */ +#define FPU_FPCCR_LSPENS_Msk (1UL << FPU_FPCCR_LSPENS_Pos) /*!< FPCCR: LSPENS bit Mask */ + +#define FPU_FPCCR_CLRONRET_Pos 28U /*!< FPCCR: CLRONRET Position */ +#define FPU_FPCCR_CLRONRET_Msk (1UL << FPU_FPCCR_CLRONRET_Pos) /*!< FPCCR: CLRONRET bit Mask */ + +#define FPU_FPCCR_CLRONRETS_Pos 27U /*!< FPCCR: CLRONRETS Position */ +#define FPU_FPCCR_CLRONRETS_Msk (1UL << FPU_FPCCR_CLRONRETS_Pos) /*!< FPCCR: CLRONRETS bit Mask */ + +#define FPU_FPCCR_TS_Pos 26U /*!< FPCCR: TS Position */ +#define FPU_FPCCR_TS_Msk (1UL << FPU_FPCCR_TS_Pos) /*!< FPCCR: TS bit Mask */ + +#define FPU_FPCCR_UFRDY_Pos 10U /*!< FPCCR: UFRDY Position */ +#define FPU_FPCCR_UFRDY_Msk (1UL << FPU_FPCCR_UFRDY_Pos) /*!< FPCCR: UFRDY bit Mask */ + +#define FPU_FPCCR_SPLIMVIOL_Pos 9U /*!< FPCCR: SPLIMVIOL Position */ +#define FPU_FPCCR_SPLIMVIOL_Msk (1UL << FPU_FPCCR_SPLIMVIOL_Pos) /*!< FPCCR: SPLIMVIOL bit Mask */ + +#define FPU_FPCCR_MONRDY_Pos 8U /*!< FPCCR: MONRDY Position */ +#define FPU_FPCCR_MONRDY_Msk (1UL << FPU_FPCCR_MONRDY_Pos) /*!< FPCCR: MONRDY bit Mask */ + +#define FPU_FPCCR_SFRDY_Pos 7U /*!< FPCCR: SFRDY Position */ +#define FPU_FPCCR_SFRDY_Msk (1UL << FPU_FPCCR_SFRDY_Pos) /*!< FPCCR: SFRDY bit Mask */ + +#define FPU_FPCCR_BFRDY_Pos 6U /*!< FPCCR: BFRDY Position */ +#define FPU_FPCCR_BFRDY_Msk (1UL << FPU_FPCCR_BFRDY_Pos) /*!< FPCCR: BFRDY bit Mask */ + +#define FPU_FPCCR_MMRDY_Pos 5U /*!< FPCCR: MMRDY Position */ +#define FPU_FPCCR_MMRDY_Msk (1UL << FPU_FPCCR_MMRDY_Pos) /*!< FPCCR: MMRDY bit Mask */ + +#define FPU_FPCCR_HFRDY_Pos 4U /*!< FPCCR: HFRDY Position */ +#define FPU_FPCCR_HFRDY_Msk (1UL << FPU_FPCCR_HFRDY_Pos) /*!< FPCCR: HFRDY bit Mask */ + +#define FPU_FPCCR_THREAD_Pos 3U /*!< FPCCR: processor mode bit Position */ +#define FPU_FPCCR_THREAD_Msk (1UL << FPU_FPCCR_THREAD_Pos) /*!< FPCCR: processor mode active bit Mask */ + +#define FPU_FPCCR_S_Pos 2U /*!< FPCCR: Security status of the FP context bit Position */ +#define FPU_FPCCR_S_Msk (1UL << FPU_FPCCR_S_Pos) /*!< FPCCR: Security status of the FP context bit Mask */ + +#define FPU_FPCCR_USER_Pos 1U /*!< FPCCR: privilege level bit Position */ +#define FPU_FPCCR_USER_Msk (1UL << FPU_FPCCR_USER_Pos) /*!< FPCCR: privilege level bit Mask */ + +#define FPU_FPCCR_LSPACT_Pos 0U /*!< FPCCR: Lazy state preservation active bit Position */ +#define FPU_FPCCR_LSPACT_Msk (1UL /*<< FPU_FPCCR_LSPACT_Pos*/) /*!< FPCCR: Lazy state preservation active bit Mask */ + +/* Floating-Point Context Address Register Definitions */ +#define FPU_FPCAR_ADDRESS_Pos 3U /*!< FPCAR: ADDRESS bit Position */ +#define FPU_FPCAR_ADDRESS_Msk (0x1FFFFFFFUL << FPU_FPCAR_ADDRESS_Pos) /*!< FPCAR: ADDRESS bit Mask */ + +/* Floating-Point Default Status Control Register Definitions */ +#define FPU_FPDSCR_AHP_Pos 26U /*!< FPDSCR: AHP bit Position */ +#define FPU_FPDSCR_AHP_Msk (1UL << FPU_FPDSCR_AHP_Pos) /*!< FPDSCR: AHP bit Mask */ + +#define FPU_FPDSCR_DN_Pos 25U /*!< FPDSCR: DN bit Position */ +#define FPU_FPDSCR_DN_Msk (1UL << FPU_FPDSCR_DN_Pos) /*!< FPDSCR: DN bit Mask */ + +#define FPU_FPDSCR_FZ_Pos 24U /*!< FPDSCR: FZ bit Position */ +#define FPU_FPDSCR_FZ_Msk (1UL << FPU_FPDSCR_FZ_Pos) /*!< FPDSCR: FZ bit Mask */ + +#define FPU_FPDSCR_RMode_Pos 22U /*!< FPDSCR: RMode bit Position */ +#define FPU_FPDSCR_RMode_Msk (3UL << FPU_FPDSCR_RMode_Pos) /*!< FPDSCR: RMode bit Mask */ + +/* Media and FP Feature Register 0 Definitions */ +#define FPU_MVFR0_FP_rounding_modes_Pos 28U /*!< MVFR0: FP rounding modes bits Position */ +#define FPU_MVFR0_FP_rounding_modes_Msk (0xFUL << FPU_MVFR0_FP_rounding_modes_Pos) /*!< MVFR0: FP rounding modes bits Mask */ + +#define FPU_MVFR0_Short_vectors_Pos 24U /*!< MVFR0: Short vectors bits Position */ +#define FPU_MVFR0_Short_vectors_Msk (0xFUL << FPU_MVFR0_Short_vectors_Pos) /*!< MVFR0: Short vectors bits Mask */ + +#define FPU_MVFR0_Square_root_Pos 20U /*!< MVFR0: Square root bits Position */ +#define FPU_MVFR0_Square_root_Msk (0xFUL << FPU_MVFR0_Square_root_Pos) /*!< MVFR0: Square root bits Mask */ + +#define FPU_MVFR0_Divide_Pos 16U /*!< MVFR0: Divide bits Position */ +#define FPU_MVFR0_Divide_Msk (0xFUL << FPU_MVFR0_Divide_Pos) /*!< MVFR0: Divide bits Mask */ + +#define FPU_MVFR0_FP_excep_trapping_Pos 12U /*!< MVFR0: FP exception trapping bits Position */ +#define FPU_MVFR0_FP_excep_trapping_Msk (0xFUL << FPU_MVFR0_FP_excep_trapping_Pos) /*!< MVFR0: FP exception trapping bits Mask */ + +#define FPU_MVFR0_Double_precision_Pos 8U /*!< MVFR0: Double-precision bits Position */ +#define FPU_MVFR0_Double_precision_Msk (0xFUL << FPU_MVFR0_Double_precision_Pos) /*!< MVFR0: Double-precision bits Mask */ + +#define FPU_MVFR0_Single_precision_Pos 4U /*!< MVFR0: Single-precision bits Position */ +#define FPU_MVFR0_Single_precision_Msk (0xFUL << FPU_MVFR0_Single_precision_Pos) /*!< MVFR0: Single-precision bits Mask */ + +#define FPU_MVFR0_A_SIMD_registers_Pos 0U /*!< MVFR0: A_SIMD registers bits Position */ +#define FPU_MVFR0_A_SIMD_registers_Msk (0xFUL /*<< FPU_MVFR0_A_SIMD_registers_Pos*/) /*!< MVFR0: A_SIMD registers bits Mask */ + +/* Media and FP Feature Register 1 Definitions */ +#define FPU_MVFR1_FP_fused_MAC_Pos 28U /*!< MVFR1: FP fused MAC bits Position */ +#define FPU_MVFR1_FP_fused_MAC_Msk (0xFUL << FPU_MVFR1_FP_fused_MAC_Pos) /*!< MVFR1: FP fused MAC bits Mask */ + +#define FPU_MVFR1_FP_HPFP_Pos 24U /*!< MVFR1: FP HPFP bits Position */ +#define FPU_MVFR1_FP_HPFP_Msk (0xFUL << FPU_MVFR1_FP_HPFP_Pos) /*!< MVFR1: FP HPFP bits Mask */ + +#define FPU_MVFR1_D_NaN_mode_Pos 4U /*!< MVFR1: D_NaN mode bits Position */ +#define FPU_MVFR1_D_NaN_mode_Msk (0xFUL << FPU_MVFR1_D_NaN_mode_Pos) /*!< MVFR1: D_NaN mode bits Mask */ + +#define FPU_MVFR1_FtZ_mode_Pos 0U /*!< MVFR1: FtZ mode bits Position */ +#define FPU_MVFR1_FtZ_mode_Msk (0xFUL /*<< FPU_MVFR1_FtZ_mode_Pos*/) /*!< MVFR1: FtZ mode bits Mask */ + +/*@} end of group CMSIS_FPU */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Type definitions for the Core Debug Registers + @{ + */ + +/** + \brief Structure type to access the Core Debug Register (CoreDebug). + */ +typedef struct +{ + __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ + uint32_t RESERVED4[1U]; + __IOM uint32_t DAUTHCTRL; /*!< Offset: 0x014 (R/W) Debug Authentication Control Register */ + __IOM uint32_t DSCSR; /*!< Offset: 0x018 (R/W) Debug Security Control and Status Register */ +} CoreDebug_Type; + +/* Debug Halting Control and Status Register Definitions */ +#define CoreDebug_DHCSR_DBGKEY_Pos 16U /*!< CoreDebug DHCSR: DBGKEY Position */ +#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< CoreDebug DHCSR: DBGKEY Mask */ + +#define CoreDebug_DHCSR_S_RESTART_ST_Pos 26U /*!< CoreDebug DHCSR: S_RESTART_ST Position */ +#define CoreDebug_DHCSR_S_RESTART_ST_Msk (1UL << CoreDebug_DHCSR_S_RESTART_ST_Pos) /*!< CoreDebug DHCSR: S_RESTART_ST Mask */ + +#define CoreDebug_DHCSR_S_RESET_ST_Pos 25U /*!< CoreDebug DHCSR: S_RESET_ST Position */ +#define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< CoreDebug DHCSR: S_RESET_ST Mask */ + +#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24U /*!< CoreDebug DHCSR: S_RETIRE_ST Position */ +#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */ + +#define CoreDebug_DHCSR_S_LOCKUP_Pos 19U /*!< CoreDebug DHCSR: S_LOCKUP Position */ +#define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< CoreDebug DHCSR: S_LOCKUP Mask */ + +#define CoreDebug_DHCSR_S_SLEEP_Pos 18U /*!< CoreDebug DHCSR: S_SLEEP Position */ +#define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< CoreDebug DHCSR: S_SLEEP Mask */ + +#define CoreDebug_DHCSR_S_HALT_Pos 17U /*!< CoreDebug DHCSR: S_HALT Position */ +#define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< CoreDebug DHCSR: S_HALT Mask */ + +#define CoreDebug_DHCSR_S_REGRDY_Pos 16U /*!< CoreDebug DHCSR: S_REGRDY Position */ +#define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< CoreDebug DHCSR: S_REGRDY Mask */ + +#define CoreDebug_DHCSR_C_SNAPSTALL_Pos 5U /*!< CoreDebug DHCSR: C_SNAPSTALL Position */ +#define CoreDebug_DHCSR_C_SNAPSTALL_Msk (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos) /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */ + +#define CoreDebug_DHCSR_C_MASKINTS_Pos 3U /*!< CoreDebug DHCSR: C_MASKINTS Position */ +#define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< CoreDebug DHCSR: C_MASKINTS Mask */ + +#define CoreDebug_DHCSR_C_STEP_Pos 2U /*!< CoreDebug DHCSR: C_STEP Position */ +#define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< CoreDebug DHCSR: C_STEP Mask */ + +#define CoreDebug_DHCSR_C_HALT_Pos 1U /*!< CoreDebug DHCSR: C_HALT Position */ +#define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< CoreDebug DHCSR: C_HALT Mask */ + +#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0U /*!< CoreDebug DHCSR: C_DEBUGEN Position */ +#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/) /*!< CoreDebug DHCSR: C_DEBUGEN Mask */ + +/* Debug Core Register Selector Register Definitions */ +#define CoreDebug_DCRSR_REGWnR_Pos 16U /*!< CoreDebug DCRSR: REGWnR Position */ +#define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< CoreDebug DCRSR: REGWnR Mask */ + +#define CoreDebug_DCRSR_REGSEL_Pos 0U /*!< CoreDebug DCRSR: REGSEL Position */ +#define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/) /*!< CoreDebug DCRSR: REGSEL Mask */ + +/* Debug Exception and Monitor Control Register Definitions */ +#define CoreDebug_DEMCR_TRCENA_Pos 24U /*!< CoreDebug DEMCR: TRCENA Position */ +#define CoreDebug_DEMCR_TRCENA_Msk (1UL << CoreDebug_DEMCR_TRCENA_Pos) /*!< CoreDebug DEMCR: TRCENA Mask */ + +#define CoreDebug_DEMCR_MON_REQ_Pos 19U /*!< CoreDebug DEMCR: MON_REQ Position */ +#define CoreDebug_DEMCR_MON_REQ_Msk (1UL << CoreDebug_DEMCR_MON_REQ_Pos) /*!< CoreDebug DEMCR: MON_REQ Mask */ + +#define CoreDebug_DEMCR_MON_STEP_Pos 18U /*!< CoreDebug DEMCR: MON_STEP Position */ +#define CoreDebug_DEMCR_MON_STEP_Msk (1UL << CoreDebug_DEMCR_MON_STEP_Pos) /*!< CoreDebug DEMCR: MON_STEP Mask */ + +#define CoreDebug_DEMCR_MON_PEND_Pos 17U /*!< CoreDebug DEMCR: MON_PEND Position */ +#define CoreDebug_DEMCR_MON_PEND_Msk (1UL << CoreDebug_DEMCR_MON_PEND_Pos) /*!< CoreDebug DEMCR: MON_PEND Mask */ + +#define CoreDebug_DEMCR_MON_EN_Pos 16U /*!< CoreDebug DEMCR: MON_EN Position */ +#define CoreDebug_DEMCR_MON_EN_Msk (1UL << CoreDebug_DEMCR_MON_EN_Pos) /*!< CoreDebug DEMCR: MON_EN Mask */ + +#define CoreDebug_DEMCR_VC_HARDERR_Pos 10U /*!< CoreDebug DEMCR: VC_HARDERR Position */ +#define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< CoreDebug DEMCR: VC_HARDERR Mask */ + +#define CoreDebug_DEMCR_VC_INTERR_Pos 9U /*!< CoreDebug DEMCR: VC_INTERR Position */ +#define CoreDebug_DEMCR_VC_INTERR_Msk (1UL << CoreDebug_DEMCR_VC_INTERR_Pos) /*!< CoreDebug DEMCR: VC_INTERR Mask */ + +#define CoreDebug_DEMCR_VC_BUSERR_Pos 8U /*!< CoreDebug DEMCR: VC_BUSERR Position */ +#define CoreDebug_DEMCR_VC_BUSERR_Msk (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos) /*!< CoreDebug DEMCR: VC_BUSERR Mask */ + +#define CoreDebug_DEMCR_VC_STATERR_Pos 7U /*!< CoreDebug DEMCR: VC_STATERR Position */ +#define CoreDebug_DEMCR_VC_STATERR_Msk (1UL << CoreDebug_DEMCR_VC_STATERR_Pos) /*!< CoreDebug DEMCR: VC_STATERR Mask */ + +#define CoreDebug_DEMCR_VC_CHKERR_Pos 6U /*!< CoreDebug DEMCR: VC_CHKERR Position */ +#define CoreDebug_DEMCR_VC_CHKERR_Msk (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos) /*!< CoreDebug DEMCR: VC_CHKERR Mask */ + +#define CoreDebug_DEMCR_VC_NOCPERR_Pos 5U /*!< CoreDebug DEMCR: VC_NOCPERR Position */ +#define CoreDebug_DEMCR_VC_NOCPERR_Msk (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos) /*!< CoreDebug DEMCR: VC_NOCPERR Mask */ + +#define CoreDebug_DEMCR_VC_MMERR_Pos 4U /*!< CoreDebug DEMCR: VC_MMERR Position */ +#define CoreDebug_DEMCR_VC_MMERR_Msk (1UL << CoreDebug_DEMCR_VC_MMERR_Pos) /*!< CoreDebug DEMCR: VC_MMERR Mask */ + +#define CoreDebug_DEMCR_VC_CORERESET_Pos 0U /*!< CoreDebug DEMCR: VC_CORERESET Position */ +#define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/) /*!< CoreDebug DEMCR: VC_CORERESET Mask */ + +/* Debug Authentication Control Register Definitions */ +#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos 3U /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Position */ +#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos) /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Mask */ + +#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos 2U /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Position */ +#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Msk (1UL << CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos) /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Mask */ + +#define CoreDebug_DAUTHCTRL_INTSPIDEN_Pos 1U /*!< CoreDebug DAUTHCTRL: INTSPIDEN Position */ +#define CoreDebug_DAUTHCTRL_INTSPIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPIDEN_Pos) /*!< CoreDebug DAUTHCTRL: INTSPIDEN Mask */ + +#define CoreDebug_DAUTHCTRL_SPIDENSEL_Pos 0U /*!< CoreDebug DAUTHCTRL: SPIDENSEL Position */ +#define CoreDebug_DAUTHCTRL_SPIDENSEL_Msk (1UL /*<< CoreDebug_DAUTHCTRL_SPIDENSEL_Pos*/) /*!< CoreDebug DAUTHCTRL: SPIDENSEL Mask */ + +/* Debug Security Control and Status Register Definitions */ +#define CoreDebug_DSCSR_CDS_Pos 16U /*!< CoreDebug DSCSR: CDS Position */ +#define CoreDebug_DSCSR_CDS_Msk (1UL << CoreDebug_DSCSR_CDS_Pos) /*!< CoreDebug DSCSR: CDS Mask */ + +#define CoreDebug_DSCSR_SBRSEL_Pos 1U /*!< CoreDebug DSCSR: SBRSEL Position */ +#define CoreDebug_DSCSR_SBRSEL_Msk (1UL << CoreDebug_DSCSR_SBRSEL_Pos) /*!< CoreDebug DSCSR: SBRSEL Mask */ + +#define CoreDebug_DSCSR_SBRSELEN_Pos 0U /*!< CoreDebug DSCSR: SBRSELEN Position */ +#define CoreDebug_DSCSR_SBRSELEN_Msk (1UL /*<< CoreDebug_DSCSR_SBRSELEN_Pos*/) /*!< CoreDebug DSCSR: SBRSELEN Mask */ + +/*@} end of group CMSIS_CoreDebug */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_bitfield Core register bit field macros + \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk). + @{ + */ + +/** + \brief Mask and shift a bit field value for use in a register bit range. + \param[in] field Name of the register bit field. + \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk) + +/** + \brief Mask and shift a register value to extract a bit filed value. + \param[in] field Name of the register bit field. + \param[in] value Value of register. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos) + +/*@} end of group CMSIS_core_bitfield */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_base Core Definitions + \brief Definitions for base addresses, unions, and structures. + @{ + */ + +/* Memory mapping of Core Hardware */ + #define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ + #define ITM_BASE (0xE0000000UL) /*!< ITM Base Address */ + #define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */ + #define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */ + #define CoreDebug_BASE (0xE000EDF0UL) /*!< Core Debug Base Address */ + #define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ + #define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ + #define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + + #define SCnSCB ((SCnSCB_Type *) SCS_BASE ) /*!< System control Register not in SCB */ + #define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ + #define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ + #define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ + #define ITM ((ITM_Type *) ITM_BASE ) /*!< ITM configuration struct */ + #define DWT ((DWT_Type *) DWT_BASE ) /*!< DWT configuration struct */ + #define TPI ((TPI_Type *) TPI_BASE ) /*!< TPI configuration struct */ + #define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE ) /*!< Core Debug configuration struct */ + + #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ + #endif + + #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #define SAU_BASE (SCS_BASE + 0x0DD0UL) /*!< Security Attribution Unit */ + #define SAU ((SAU_Type *) SAU_BASE ) /*!< Security Attribution Unit */ + #endif + + #define FPU_BASE (SCS_BASE + 0x0F30UL) /*!< Floating Point Unit */ + #define FPU ((FPU_Type *) FPU_BASE ) /*!< Floating Point Unit */ + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #define SCS_BASE_NS (0xE002E000UL) /*!< System Control Space Base Address (non-secure address space) */ + #define CoreDebug_BASE_NS (0xE002EDF0UL) /*!< Core Debug Base Address (non-secure address space) */ + #define SysTick_BASE_NS (SCS_BASE_NS + 0x0010UL) /*!< SysTick Base Address (non-secure address space) */ + #define NVIC_BASE_NS (SCS_BASE_NS + 0x0100UL) /*!< NVIC Base Address (non-secure address space) */ + #define SCB_BASE_NS (SCS_BASE_NS + 0x0D00UL) /*!< System Control Block Base Address (non-secure address space) */ + + #define SCnSCB_NS ((SCnSCB_Type *) SCS_BASE_NS ) /*!< System control Register not in SCB(non-secure address space) */ + #define SCB_NS ((SCB_Type *) SCB_BASE_NS ) /*!< SCB configuration struct (non-secure address space) */ + #define SysTick_NS ((SysTick_Type *) SysTick_BASE_NS ) /*!< SysTick configuration struct (non-secure address space) */ + #define NVIC_NS ((NVIC_Type *) NVIC_BASE_NS ) /*!< NVIC configuration struct (non-secure address space) */ + #define CoreDebug_NS ((CoreDebug_Type *) CoreDebug_BASE_NS) /*!< Core Debug configuration struct (non-secure address space) */ + + #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE_NS (SCS_BASE_NS + 0x0D90UL) /*!< Memory Protection Unit (non-secure address space) */ + #define MPU_NS ((MPU_Type *) MPU_BASE_NS ) /*!< Memory Protection Unit (non-secure address space) */ + #endif + + #define FPU_BASE_NS (SCS_BASE_NS + 0x0F30UL) /*!< Floating Point Unit (non-secure address space) */ + #define FPU_NS ((FPU_Type *) FPU_BASE_NS ) /*!< Floating Point Unit (non-secure address space) */ + +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Debug Functions + - Core Register Access Functions + ******************************************************************************/ +/** + \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +*/ + + + +/* ########################## NVIC functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions NVIC Functions + \brief Functions that manage interrupts and exceptions via the NVIC. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping + #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ + #define NVIC_GetActive __NVIC_GetActive + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* Special LR values for Secure/Non-Secure call handling and exception handling */ + +/* Function Return Payload (from ARMv8-M Architecture Reference Manual) LR value on entry from Secure BLXNS */ +#define FNC_RETURN (0xFEFFFFFFUL) /* bit [0] ignored when processing a branch */ + +/* The following EXC_RETURN mask values are used to evaluate the LR on exception entry */ +#define EXC_RETURN_PREFIX (0xFF000000UL) /* bits [31:24] set to indicate an EXC_RETURN value */ +#define EXC_RETURN_S (0x00000040UL) /* bit [6] stack used to push registers: 0=Non-secure 1=Secure */ +#define EXC_RETURN_DCRS (0x00000020UL) /* bit [5] stacking rules for called registers: 0=skipped 1=saved */ +#define EXC_RETURN_FTYPE (0x00000010UL) /* bit [4] allocate stack for floating-point context: 0=done 1=skipped */ +#define EXC_RETURN_MODE (0x00000008UL) /* bit [3] processor mode for return: 0=Handler mode 1=Thread mode */ +#define EXC_RETURN_SPSEL (0x00000002UL) /* bit [1] stack pointer used to restore context: 0=MSP 1=PSP */ +#define EXC_RETURN_ES (0x00000001UL) /* bit [0] security state exception was taken to: 0=Non-secure 1=Secure */ + +/* Integrity Signature (from ARMv8-M Architecture Reference Manual) for exception context stacking */ +#if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) /* Value for processors with floating-point extension: */ +#define EXC_INTEGRITY_SIGNATURE (0xFEFA125AUL) /* bit [0] SFTC must match LR bit[4] EXC_RETURN_FTYPE */ +#else +#define EXC_INTEGRITY_SIGNATURE (0xFEFA125BUL) /* Value for processors without floating-point extension */ +#endif + + +/** + \brief Set Priority Grouping + \details Sets the priority grouping field using the required unlock sequence. + The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. + Only values from 0..7 are used. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + + reg_value = SCB->AIRCR; /* read old register configuration */ + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << 8U) ); /* Insert write key and priority group */ + SCB->AIRCR = reg_value; +} + + +/** + \brief Get Priority Grouping + \details Reads the priority grouping field from the NVIC Interrupt Controller. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void) +{ + return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); +} + + +/** + \brief Enable Interrupt + \details Enables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt + \details Reads the active register in the NVIC and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Get Interrupt Target State + \details Reads the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + \return 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_GetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Target State + \details Sets the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_SetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] |= ((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Clear Interrupt Target State + \details Clears the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_ClearTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] &= ~((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every processor exception. + */ +__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IPR[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } + else + { + SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. + Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return(((uint32_t)NVIC->IPR[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return(((uint32_t)SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Encode Priority + \details Encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + +/** + \brief Decode Priority + \details Decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + VTOR must been relocated to SRAM before. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | + SCB_AIRCR_SYSRESETREQ_Msk ); /* Keep priority group unchanged */ + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Set Priority Grouping (non-secure) + \details Sets the non-secure priority grouping field when in secure state using the required unlock sequence. + The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. + Only values from 0..7 are used. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void TZ_NVIC_SetPriorityGrouping_NS(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + + reg_value = SCB_NS->AIRCR; /* read old register configuration */ + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */ + SCB_NS->AIRCR = reg_value; +} + + +/** + \brief Get Priority Grouping (non-secure) + \details Reads the priority grouping field from the non-secure NVIC when in secure state. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPriorityGrouping_NS(void) +{ + return ((uint32_t)((SCB_NS->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); +} + + +/** + \brief Enable Interrupt (non-secure) + \details Enables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_EnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status (non-secure) + \details Returns a device specific interrupt enable status from the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetEnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt (non-secure) + \details Disables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_DisableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Pending Interrupt (non-secure) + \details Reads the NVIC pending register in the non-secure NVIC when in secure state and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt (non-secure) + \details Sets the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_SetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt (non-secure) + \details Clears the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_ClearPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt (non-secure) + \details Reads the active register in non-secure NVIC when in secure state and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetActive_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Priority (non-secure) + \details Sets the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every non-secure processor exception. + */ +__STATIC_INLINE void TZ_NVIC_SetPriority_NS(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->IPR[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } + else + { + SCB_NS->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + + +/** + \brief Get Interrupt Priority (non-secure) + \details Reads the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPriority_NS(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return(((uint32_t)NVIC_NS->IPR[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return(((uint32_t)SCB_NS->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS))); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) &&(__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_NVICFunctions */ + +/* ########################## MPU functions #################################### */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + +#include "mpu_armv8.h" + +#endif + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + uint32_t mvfr0; + + mvfr0 = FPU->MVFR0; + if ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x220U) + { + return 2U; /* Double + Single precision FPU */ + } + else if ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x020U) + { + return 1U; /* Single precision FPU */ + } + else + { + return 0U; /* No FPU */ + } +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + + + +/* ########################## SAU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SAUFunctions SAU Functions + \brief Functions that configure the SAU. + @{ + */ + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + +/** + \brief Enable SAU + \details Enables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Enable(void) +{ + SAU->CTRL |= (SAU_CTRL_ENABLE_Msk); +} + + + +/** + \brief Disable SAU + \details Disables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Disable(void) +{ + SAU->CTRL &= ~(SAU_CTRL_ENABLE_Msk); +} + +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_SAUFunctions */ + + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U) + +/** + \brief System Tick Configuration + \details Initializes the System Timer and its interrupt, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief System Tick Configuration (non-secure) + \details Initializes the non-secure System Timer and its interrupt when in secure state, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function TZ_SysTick_Config_NS is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + + */ +__STATIC_INLINE uint32_t TZ_SysTick_Config_NS(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick_NS->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + TZ_NVIC_SetPriority_NS (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick_NS->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick_NS->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + +/* ##################################### Debug In/Output function ########################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_core_DebugFunctions ITM Functions + \brief Functions that access the ITM debug interface. + @{ + */ + +extern volatile int32_t ITM_RxBuffer; /*!< External variable to receive characters. */ +#define ITM_RXBUFFER_EMPTY ((int32_t)0x5AA55AA5U) /*!< Value identifying \ref ITM_RxBuffer is ready for next character. */ + + +/** + \brief ITM Send Character + \details Transmits a character via the ITM channel 0, and + \li Just returns when no debugger is connected that has booked the output. + \li Is blocking when a debugger is connected, but the previous character sent has not been transmitted. + \param [in] ch Character to transmit. + \returns Character to transmit. + */ +__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch) +{ + if (((ITM->TCR & ITM_TCR_ITMENA_Msk) != 0UL) && /* ITM enabled */ + ((ITM->TER & 1UL ) != 0UL) ) /* ITM Port #0 enabled */ + { + while (ITM->PORT[0U].u32 == 0UL) + { + __NOP(); + } + ITM->PORT[0U].u8 = (uint8_t)ch; + } + return (ch); +} + + +/** + \brief ITM Receive Character + \details Inputs a character via the external variable \ref ITM_RxBuffer. + \return Received character. + \return -1 No character pending. + */ +__STATIC_INLINE int32_t ITM_ReceiveChar (void) +{ + int32_t ch = -1; /* no character available */ + + if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY) + { + ch = ITM_RxBuffer; + ITM_RxBuffer = ITM_RXBUFFER_EMPTY; /* ready for next character */ + } + + return (ch); +} + + +/** + \brief ITM Check Character + \details Checks whether a character is pending for reading in the variable \ref ITM_RxBuffer. + \return 0 No character available. + \return 1 Character available. + */ +__STATIC_INLINE int32_t ITM_CheckChar (void) +{ + + if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY) + { + return (0); /* no character available */ + } + else + { + return (1); /* character available */ + } +} + +/*@} end of CMSIS_core_DebugFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM33_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/Include/core_cm4.h b/Drivers/CMSIS/Include/core_cm4.h similarity index 100% rename from HAL_N_Middlewares/Drivers/CMSIS/Include/core_cm4.h rename to Drivers/CMSIS/Include/core_cm4.h diff --git a/Drivers/CMSIS/Include/core_cm7.h b/Drivers/CMSIS/Include/core_cm7.h new file mode 100644 index 0000000..a14dc62 --- /dev/null +++ b/Drivers/CMSIS/Include/core_cm7.h @@ -0,0 +1,2671 @@ +/**************************************************************************//** + * @file core_cm7.h + * @brief CMSIS Cortex-M7 Core Peripheral Access Layer Header File + * @version V5.0.8 + * @date 04. June 2018 + ******************************************************************************/ +/* + * Copyright (c) 2009-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef __CORE_CM7_H_GENERIC +#define __CORE_CM7_H_GENERIC + +#include + +#ifdef __cplusplus + extern "C" { +#endif + +/** + \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + CMSIS violates the following MISRA-C:2004 rules: + + \li Required Rule 8.5, object/function definition in header file.
+ Function definitions in header files are used to allow 'inlining'. + + \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
+ Unions are used for effective representation of core registers. + + \li Advisory Rule 19.7, Function-like macro defined.
+ Function-like macros are used to allow more efficient code. + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** + \ingroup Cortex_M7 + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS CM7 definitions */ +#define __CM7_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __CM7_CMSIS_VERSION_SUB ( __CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __CM7_CMSIS_VERSION ((__CM7_CMSIS_VERSION_MAIN << 16U) | \ + __CM7_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_M (7U) /*!< Cortex-M Core */ + +/** __FPU_USED indicates whether an FPU is used or not. + For this, __FPU_PRESENT has to be checked prior to making use of FPU specific registers and functions. +*/ +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined __ARM_PCS_VFP + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __TI_ARM__ ) + #if defined __TI_VFP_SUPPORT__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM7_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_CM7_H_DEPENDANT +#define __CORE_CM7_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __CM7_REV + #define __CM7_REV 0x0000U + #warning "__CM7_REV not defined in device header file; using default!" + #endif + + #ifndef __FPU_PRESENT + #define __FPU_PRESENT 0U + #warning "__FPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0U + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __ICACHE_PRESENT + #define __ICACHE_PRESENT 0U + #warning "__ICACHE_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __DCACHE_PRESENT + #define __DCACHE_PRESENT 0U + #warning "__DCACHE_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __DTCM_PRESENT + #define __DTCM_PRESENT 0U + #warning "__DTCM_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 3U + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0U + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +/** + \defgroup CMSIS_glob_defs CMSIS Global Defines + + IO Type Qualifiers are used + \li to specify the access to peripheral variables. + \li for automatic generation of peripheral register debug information. +*/ +#ifdef __cplusplus + #define __I volatile /*!< Defines 'read only' permissions */ +#else + #define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +/* following defines should be used for structure members */ +#define __IM volatile const /*! Defines 'read only' structure member permissions */ +#define __OM volatile /*! Defines 'write only' structure member permissions */ +#define __IOM volatile /*! Defines 'read / write' structure member permissions */ + +/*@} end of group Cortex_M7 */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core Debug Register + - Core MPU Register + - Core FPU Register + ******************************************************************************/ +/** + \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for Cortex-M processor based devices. +*/ + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CORE Status and Control Registers + \brief Core Register type definitions. + @{ + */ + +/** + \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { + uint32_t _reserved0:16; /*!< bit: 0..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:7; /*!< bit: 20..26 Reserved */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + +/* APSR Register Definitions */ +#define APSR_N_Pos 31U /*!< APSR: N Position */ +#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */ + +#define APSR_Z_Pos 30U /*!< APSR: Z Position */ +#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */ + +#define APSR_C_Pos 29U /*!< APSR: C Position */ +#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */ + +#define APSR_V_Pos 28U /*!< APSR: V Position */ +#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */ + +#define APSR_Q_Pos 27U /*!< APSR: Q Position */ +#define APSR_Q_Msk (1UL << APSR_Q_Pos) /*!< APSR: Q Mask */ + +#define APSR_GE_Pos 16U /*!< APSR: GE Position */ +#define APSR_GE_Msk (0xFUL << APSR_GE_Pos) /*!< APSR: GE Mask */ + + +/** + \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + +/* IPSR Register Definitions */ +#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */ +#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */ + + +/** + \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:1; /*!< bit: 9 Reserved */ + uint32_t ICI_IT_1:6; /*!< bit: 10..15 ICI/IT part 1 */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:4; /*!< bit: 20..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit */ + uint32_t ICI_IT_2:2; /*!< bit: 25..26 ICI/IT part 2 */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + +/* xPSR Register Definitions */ +#define xPSR_N_Pos 31U /*!< xPSR: N Position */ +#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */ + +#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */ +#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */ + +#define xPSR_C_Pos 29U /*!< xPSR: C Position */ +#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */ + +#define xPSR_V_Pos 28U /*!< xPSR: V Position */ +#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */ + +#define xPSR_Q_Pos 27U /*!< xPSR: Q Position */ +#define xPSR_Q_Msk (1UL << xPSR_Q_Pos) /*!< xPSR: Q Mask */ + +#define xPSR_ICI_IT_2_Pos 25U /*!< xPSR: ICI/IT part 2 Position */ +#define xPSR_ICI_IT_2_Msk (3UL << xPSR_ICI_IT_2_Pos) /*!< xPSR: ICI/IT part 2 Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_GE_Pos 16U /*!< xPSR: GE Position */ +#define xPSR_GE_Msk (0xFUL << xPSR_GE_Pos) /*!< xPSR: GE Mask */ + +#define xPSR_ICI_IT_1_Pos 10U /*!< xPSR: ICI/IT part 1 Position */ +#define xPSR_ICI_IT_1_Msk (0x3FUL << xPSR_ICI_IT_1_Pos) /*!< xPSR: ICI/IT part 1 Mask */ + +#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */ +#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */ + + +/** + \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + uint32_t SPSEL:1; /*!< bit: 1 Stack to be used */ + uint32_t FPCA:1; /*!< bit: 2 FP extension active flag */ + uint32_t _reserved0:29; /*!< bit: 3..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_FPCA_Pos 2U /*!< CONTROL: FPCA Position */ +#define CONTROL_FPCA_Msk (1UL << CONTROL_FPCA_Pos) /*!< CONTROL: FPCA Mask */ + +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ + +#define CONTROL_nPRIV_Pos 0U /*!< CONTROL: nPRIV Position */ +#define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONTROL: nPRIV Mask */ + +/*@} end of group CMSIS_CORE */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + \brief Type definitions for the NVIC Registers + @{ + */ + +/** + \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IOM uint32_t ISER[8U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[24U]; + __IOM uint32_t ICER[8U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[24U]; + __IOM uint32_t ISPR[8U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[24U]; + __IOM uint32_t ICPR[8U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[24U]; + __IOM uint32_t IABR[8U]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ + uint32_t RESERVED4[56U]; + __IOM uint8_t IP[240U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register (8Bit wide) */ + uint32_t RESERVED5[644U]; + __OM uint32_t STIR; /*!< Offset: 0xE00 ( /W) Software Trigger Interrupt Register */ +} NVIC_Type; + +/* Software Triggered Interrupt Register Definitions */ +#define NVIC_STIR_INTID_Pos 0U /*!< STIR: INTLINESNUM Position */ +#define NVIC_STIR_INTID_Msk (0x1FFUL /*<< NVIC_STIR_INTID_Pos*/) /*!< STIR: INTLINESNUM Mask */ + +/*@} end of group CMSIS_NVIC */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCB System Control Block (SCB) + \brief Type definitions for the System Control Block Registers + @{ + */ + +/** + \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ + __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ + __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + __IOM uint8_t SHPR[12U]; /*!< Offset: 0x018 (R/W) System Handlers Priority Registers (4-7, 8-11, 12-15) */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ + __IOM uint32_t CFSR; /*!< Offset: 0x028 (R/W) Configurable Fault Status Register */ + __IOM uint32_t HFSR; /*!< Offset: 0x02C (R/W) HardFault Status Register */ + __IOM uint32_t DFSR; /*!< Offset: 0x030 (R/W) Debug Fault Status Register */ + __IOM uint32_t MMFAR; /*!< Offset: 0x034 (R/W) MemManage Fault Address Register */ + __IOM uint32_t BFAR; /*!< Offset: 0x038 (R/W) BusFault Address Register */ + __IOM uint32_t AFSR; /*!< Offset: 0x03C (R/W) Auxiliary Fault Status Register */ + __IM uint32_t ID_PFR[2U]; /*!< Offset: 0x040 (R/ ) Processor Feature Register */ + __IM uint32_t ID_DFR; /*!< Offset: 0x048 (R/ ) Debug Feature Register */ + __IM uint32_t ID_AFR; /*!< Offset: 0x04C (R/ ) Auxiliary Feature Register */ + __IM uint32_t ID_MFR[4U]; /*!< Offset: 0x050 (R/ ) Memory Model Feature Register */ + __IM uint32_t ID_ISAR[5U]; /*!< Offset: 0x060 (R/ ) Instruction Set Attributes Register */ + uint32_t RESERVED0[1U]; + __IM uint32_t CLIDR; /*!< Offset: 0x078 (R/ ) Cache Level ID register */ + __IM uint32_t CTR; /*!< Offset: 0x07C (R/ ) Cache Type register */ + __IM uint32_t CCSIDR; /*!< Offset: 0x080 (R/ ) Cache Size ID Register */ + __IOM uint32_t CSSELR; /*!< Offset: 0x084 (R/W) Cache Size Selection Register */ + __IOM uint32_t CPACR; /*!< Offset: 0x088 (R/W) Coprocessor Access Control Register */ + uint32_t RESERVED3[93U]; + __OM uint32_t STIR; /*!< Offset: 0x200 ( /W) Software Triggered Interrupt Register */ + uint32_t RESERVED4[15U]; + __IM uint32_t MVFR0; /*!< Offset: 0x240 (R/ ) Media and VFP Feature Register 0 */ + __IM uint32_t MVFR1; /*!< Offset: 0x244 (R/ ) Media and VFP Feature Register 1 */ + __IM uint32_t MVFR2; /*!< Offset: 0x248 (R/ ) Media and VFP Feature Register 2 */ + uint32_t RESERVED5[1U]; + __OM uint32_t ICIALLU; /*!< Offset: 0x250 ( /W) I-Cache Invalidate All to PoU */ + uint32_t RESERVED6[1U]; + __OM uint32_t ICIMVAU; /*!< Offset: 0x258 ( /W) I-Cache Invalidate by MVA to PoU */ + __OM uint32_t DCIMVAC; /*!< Offset: 0x25C ( /W) D-Cache Invalidate by MVA to PoC */ + __OM uint32_t DCISW; /*!< Offset: 0x260 ( /W) D-Cache Invalidate by Set-way */ + __OM uint32_t DCCMVAU; /*!< Offset: 0x264 ( /W) D-Cache Clean by MVA to PoU */ + __OM uint32_t DCCMVAC; /*!< Offset: 0x268 ( /W) D-Cache Clean by MVA to PoC */ + __OM uint32_t DCCSW; /*!< Offset: 0x26C ( /W) D-Cache Clean by Set-way */ + __OM uint32_t DCCIMVAC; /*!< Offset: 0x270 ( /W) D-Cache Clean and Invalidate by MVA to PoC */ + __OM uint32_t DCCISW; /*!< Offset: 0x274 ( /W) D-Cache Clean and Invalidate by Set-way */ + uint32_t RESERVED7[6U]; + __IOM uint32_t ITCMCR; /*!< Offset: 0x290 (R/W) Instruction Tightly-Coupled Memory Control Register */ + __IOM uint32_t DTCMCR; /*!< Offset: 0x294 (R/W) Data Tightly-Coupled Memory Control Registers */ + __IOM uint32_t AHBPCR; /*!< Offset: 0x298 (R/W) AHBP Control Register */ + __IOM uint32_t CACR; /*!< Offset: 0x29C (R/W) L1 Cache Control Register */ + __IOM uint32_t AHBSCR; /*!< Offset: 0x2A0 (R/W) AHB Slave Control Register */ + uint32_t RESERVED8[1U]; + __IOM uint32_t ABFSR; /*!< Offset: 0x2A8 (R/W) Auxiliary Bus Fault Status Register */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_NMIPENDSET_Pos 31U /*!< SCB ICSR: NMIPENDSET Position */ +#define SCB_ICSR_NMIPENDSET_Msk (1UL << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB ICSR: NMIPENDSET Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_RETTOBASE_Pos 11U /*!< SCB ICSR: RETTOBASE Position */ +#define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */ + +/* SCB Vector Table Offset Register Definitions */ +#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_PRIGROUP_Pos 8U /*!< SCB AIRCR: PRIGROUP Position */ +#define SCB_AIRCR_PRIGROUP_Msk (7UL << SCB_AIRCR_PRIGROUP_Pos) /*!< SCB AIRCR: PRIGROUP Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +#define SCB_AIRCR_VECTRESET_Pos 0U /*!< SCB AIRCR: VECTRESET Position */ +#define SCB_AIRCR_VECTRESET_Msk (1UL /*<< SCB_AIRCR_VECTRESET_Pos*/) /*!< SCB AIRCR: VECTRESET Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_BP_Pos 18U /*!< SCB CCR: Branch prediction enable bit Position */ +#define SCB_CCR_BP_Msk (1UL << SCB_CCR_BP_Pos) /*!< SCB CCR: Branch prediction enable bit Mask */ + +#define SCB_CCR_IC_Pos 17U /*!< SCB CCR: Instruction cache enable bit Position */ +#define SCB_CCR_IC_Msk (1UL << SCB_CCR_IC_Pos) /*!< SCB CCR: Instruction cache enable bit Mask */ + +#define SCB_CCR_DC_Pos 16U /*!< SCB CCR: Cache enable bit Position */ +#define SCB_CCR_DC_Msk (1UL << SCB_CCR_DC_Pos) /*!< SCB CCR: Cache enable bit Mask */ + +#define SCB_CCR_STKALIGN_Pos 9U /*!< SCB CCR: STKALIGN Position */ +#define SCB_CCR_STKALIGN_Msk (1UL << SCB_CCR_STKALIGN_Pos) /*!< SCB CCR: STKALIGN Mask */ + +#define SCB_CCR_BFHFNMIGN_Pos 8U /*!< SCB CCR: BFHFNMIGN Position */ +#define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ + +#define SCB_CCR_DIV_0_TRP_Pos 4U /*!< SCB CCR: DIV_0_TRP Position */ +#define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +#define SCB_CCR_USERSETMPEND_Pos 1U /*!< SCB CCR: USERSETMPEND Position */ +#define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ + +#define SCB_CCR_NONBASETHRDENA_Pos 0U /*!< SCB CCR: NONBASETHRDENA Position */ +#define SCB_CCR_NONBASETHRDENA_Msk (1UL /*<< SCB_CCR_NONBASETHRDENA_Pos*/) /*!< SCB CCR: NONBASETHRDENA Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_USGFAULTENA_Pos 18U /*!< SCB SHCSR: USGFAULTENA Position */ +#define SCB_SHCSR_USGFAULTENA_Msk (1UL << SCB_SHCSR_USGFAULTENA_Pos) /*!< SCB SHCSR: USGFAULTENA Mask */ + +#define SCB_SHCSR_BUSFAULTENA_Pos 17U /*!< SCB SHCSR: BUSFAULTENA Position */ +#define SCB_SHCSR_BUSFAULTENA_Msk (1UL << SCB_SHCSR_BUSFAULTENA_Pos) /*!< SCB SHCSR: BUSFAULTENA Mask */ + +#define SCB_SHCSR_MEMFAULTENA_Pos 16U /*!< SCB SHCSR: MEMFAULTENA Position */ +#define SCB_SHCSR_MEMFAULTENA_Msk (1UL << SCB_SHCSR_MEMFAULTENA_Pos) /*!< SCB SHCSR: MEMFAULTENA Mask */ + +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +#define SCB_SHCSR_BUSFAULTPENDED_Pos 14U /*!< SCB SHCSR: BUSFAULTPENDED Position */ +#define SCB_SHCSR_BUSFAULTPENDED_Msk (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos) /*!< SCB SHCSR: BUSFAULTPENDED Mask */ + +#define SCB_SHCSR_MEMFAULTPENDED_Pos 13U /*!< SCB SHCSR: MEMFAULTPENDED Position */ +#define SCB_SHCSR_MEMFAULTPENDED_Msk (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos) /*!< SCB SHCSR: MEMFAULTPENDED Mask */ + +#define SCB_SHCSR_USGFAULTPENDED_Pos 12U /*!< SCB SHCSR: USGFAULTPENDED Position */ +#define SCB_SHCSR_USGFAULTPENDED_Msk (1UL << SCB_SHCSR_USGFAULTPENDED_Pos) /*!< SCB SHCSR: USGFAULTPENDED Mask */ + +#define SCB_SHCSR_SYSTICKACT_Pos 11U /*!< SCB SHCSR: SYSTICKACT Position */ +#define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ + +#define SCB_SHCSR_PENDSVACT_Pos 10U /*!< SCB SHCSR: PENDSVACT Position */ +#define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ + +#define SCB_SHCSR_MONITORACT_Pos 8U /*!< SCB SHCSR: MONITORACT Position */ +#define SCB_SHCSR_MONITORACT_Msk (1UL << SCB_SHCSR_MONITORACT_Pos) /*!< SCB SHCSR: MONITORACT Mask */ + +#define SCB_SHCSR_SVCALLACT_Pos 7U /*!< SCB SHCSR: SVCALLACT Position */ +#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ + +#define SCB_SHCSR_USGFAULTACT_Pos 3U /*!< SCB SHCSR: USGFAULTACT Position */ +#define SCB_SHCSR_USGFAULTACT_Msk (1UL << SCB_SHCSR_USGFAULTACT_Pos) /*!< SCB SHCSR: USGFAULTACT Mask */ + +#define SCB_SHCSR_BUSFAULTACT_Pos 1U /*!< SCB SHCSR: BUSFAULTACT Position */ +#define SCB_SHCSR_BUSFAULTACT_Msk (1UL << SCB_SHCSR_BUSFAULTACT_Pos) /*!< SCB SHCSR: BUSFAULTACT Mask */ + +#define SCB_SHCSR_MEMFAULTACT_Pos 0U /*!< SCB SHCSR: MEMFAULTACT Position */ +#define SCB_SHCSR_MEMFAULTACT_Msk (1UL /*<< SCB_SHCSR_MEMFAULTACT_Pos*/) /*!< SCB SHCSR: MEMFAULTACT Mask */ + +/* SCB Configurable Fault Status Register Definitions */ +#define SCB_CFSR_USGFAULTSR_Pos 16U /*!< SCB CFSR: Usage Fault Status Register Position */ +#define SCB_CFSR_USGFAULTSR_Msk (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos) /*!< SCB CFSR: Usage Fault Status Register Mask */ + +#define SCB_CFSR_BUSFAULTSR_Pos 8U /*!< SCB CFSR: Bus Fault Status Register Position */ +#define SCB_CFSR_BUSFAULTSR_Msk (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos) /*!< SCB CFSR: Bus Fault Status Register Mask */ + +#define SCB_CFSR_MEMFAULTSR_Pos 0U /*!< SCB CFSR: Memory Manage Fault Status Register Position */ +#define SCB_CFSR_MEMFAULTSR_Msk (0xFFUL /*<< SCB_CFSR_MEMFAULTSR_Pos*/) /*!< SCB CFSR: Memory Manage Fault Status Register Mask */ + +/* MemManage Fault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_MMARVALID_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 7U) /*!< SCB CFSR (MMFSR): MMARVALID Position */ +#define SCB_CFSR_MMARVALID_Msk (1UL << SCB_CFSR_MMARVALID_Pos) /*!< SCB CFSR (MMFSR): MMARVALID Mask */ + +#define SCB_CFSR_MLSPERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 5U) /*!< SCB CFSR (MMFSR): MLSPERR Position */ +#define SCB_CFSR_MLSPERR_Msk (1UL << SCB_CFSR_MLSPERR_Pos) /*!< SCB CFSR (MMFSR): MLSPERR Mask */ + +#define SCB_CFSR_MSTKERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 4U) /*!< SCB CFSR (MMFSR): MSTKERR Position */ +#define SCB_CFSR_MSTKERR_Msk (1UL << SCB_CFSR_MSTKERR_Pos) /*!< SCB CFSR (MMFSR): MSTKERR Mask */ + +#define SCB_CFSR_MUNSTKERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 3U) /*!< SCB CFSR (MMFSR): MUNSTKERR Position */ +#define SCB_CFSR_MUNSTKERR_Msk (1UL << SCB_CFSR_MUNSTKERR_Pos) /*!< SCB CFSR (MMFSR): MUNSTKERR Mask */ + +#define SCB_CFSR_DACCVIOL_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 1U) /*!< SCB CFSR (MMFSR): DACCVIOL Position */ +#define SCB_CFSR_DACCVIOL_Msk (1UL << SCB_CFSR_DACCVIOL_Pos) /*!< SCB CFSR (MMFSR): DACCVIOL Mask */ + +#define SCB_CFSR_IACCVIOL_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 0U) /*!< SCB CFSR (MMFSR): IACCVIOL Position */ +#define SCB_CFSR_IACCVIOL_Msk (1UL /*<< SCB_CFSR_IACCVIOL_Pos*/) /*!< SCB CFSR (MMFSR): IACCVIOL Mask */ + +/* BusFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_BFARVALID_Pos (SCB_CFSR_BUSFAULTSR_Pos + 7U) /*!< SCB CFSR (BFSR): BFARVALID Position */ +#define SCB_CFSR_BFARVALID_Msk (1UL << SCB_CFSR_BFARVALID_Pos) /*!< SCB CFSR (BFSR): BFARVALID Mask */ + +#define SCB_CFSR_LSPERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 5U) /*!< SCB CFSR (BFSR): LSPERR Position */ +#define SCB_CFSR_LSPERR_Msk (1UL << SCB_CFSR_LSPERR_Pos) /*!< SCB CFSR (BFSR): LSPERR Mask */ + +#define SCB_CFSR_STKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 4U) /*!< SCB CFSR (BFSR): STKERR Position */ +#define SCB_CFSR_STKERR_Msk (1UL << SCB_CFSR_STKERR_Pos) /*!< SCB CFSR (BFSR): STKERR Mask */ + +#define SCB_CFSR_UNSTKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 3U) /*!< SCB CFSR (BFSR): UNSTKERR Position */ +#define SCB_CFSR_UNSTKERR_Msk (1UL << SCB_CFSR_UNSTKERR_Pos) /*!< SCB CFSR (BFSR): UNSTKERR Mask */ + +#define SCB_CFSR_IMPRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 2U) /*!< SCB CFSR (BFSR): IMPRECISERR Position */ +#define SCB_CFSR_IMPRECISERR_Msk (1UL << SCB_CFSR_IMPRECISERR_Pos) /*!< SCB CFSR (BFSR): IMPRECISERR Mask */ + +#define SCB_CFSR_PRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 1U) /*!< SCB CFSR (BFSR): PRECISERR Position */ +#define SCB_CFSR_PRECISERR_Msk (1UL << SCB_CFSR_PRECISERR_Pos) /*!< SCB CFSR (BFSR): PRECISERR Mask */ + +#define SCB_CFSR_IBUSERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 0U) /*!< SCB CFSR (BFSR): IBUSERR Position */ +#define SCB_CFSR_IBUSERR_Msk (1UL << SCB_CFSR_IBUSERR_Pos) /*!< SCB CFSR (BFSR): IBUSERR Mask */ + +/* UsageFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_DIVBYZERO_Pos (SCB_CFSR_USGFAULTSR_Pos + 9U) /*!< SCB CFSR (UFSR): DIVBYZERO Position */ +#define SCB_CFSR_DIVBYZERO_Msk (1UL << SCB_CFSR_DIVBYZERO_Pos) /*!< SCB CFSR (UFSR): DIVBYZERO Mask */ + +#define SCB_CFSR_UNALIGNED_Pos (SCB_CFSR_USGFAULTSR_Pos + 8U) /*!< SCB CFSR (UFSR): UNALIGNED Position */ +#define SCB_CFSR_UNALIGNED_Msk (1UL << SCB_CFSR_UNALIGNED_Pos) /*!< SCB CFSR (UFSR): UNALIGNED Mask */ + +#define SCB_CFSR_NOCP_Pos (SCB_CFSR_USGFAULTSR_Pos + 3U) /*!< SCB CFSR (UFSR): NOCP Position */ +#define SCB_CFSR_NOCP_Msk (1UL << SCB_CFSR_NOCP_Pos) /*!< SCB CFSR (UFSR): NOCP Mask */ + +#define SCB_CFSR_INVPC_Pos (SCB_CFSR_USGFAULTSR_Pos + 2U) /*!< SCB CFSR (UFSR): INVPC Position */ +#define SCB_CFSR_INVPC_Msk (1UL << SCB_CFSR_INVPC_Pos) /*!< SCB CFSR (UFSR): INVPC Mask */ + +#define SCB_CFSR_INVSTATE_Pos (SCB_CFSR_USGFAULTSR_Pos + 1U) /*!< SCB CFSR (UFSR): INVSTATE Position */ +#define SCB_CFSR_INVSTATE_Msk (1UL << SCB_CFSR_INVSTATE_Pos) /*!< SCB CFSR (UFSR): INVSTATE Mask */ + +#define SCB_CFSR_UNDEFINSTR_Pos (SCB_CFSR_USGFAULTSR_Pos + 0U) /*!< SCB CFSR (UFSR): UNDEFINSTR Position */ +#define SCB_CFSR_UNDEFINSTR_Msk (1UL << SCB_CFSR_UNDEFINSTR_Pos) /*!< SCB CFSR (UFSR): UNDEFINSTR Mask */ + +/* SCB Hard Fault Status Register Definitions */ +#define SCB_HFSR_DEBUGEVT_Pos 31U /*!< SCB HFSR: DEBUGEVT Position */ +#define SCB_HFSR_DEBUGEVT_Msk (1UL << SCB_HFSR_DEBUGEVT_Pos) /*!< SCB HFSR: DEBUGEVT Mask */ + +#define SCB_HFSR_FORCED_Pos 30U /*!< SCB HFSR: FORCED Position */ +#define SCB_HFSR_FORCED_Msk (1UL << SCB_HFSR_FORCED_Pos) /*!< SCB HFSR: FORCED Mask */ + +#define SCB_HFSR_VECTTBL_Pos 1U /*!< SCB HFSR: VECTTBL Position */ +#define SCB_HFSR_VECTTBL_Msk (1UL << SCB_HFSR_VECTTBL_Pos) /*!< SCB HFSR: VECTTBL Mask */ + +/* SCB Debug Fault Status Register Definitions */ +#define SCB_DFSR_EXTERNAL_Pos 4U /*!< SCB DFSR: EXTERNAL Position */ +#define SCB_DFSR_EXTERNAL_Msk (1UL << SCB_DFSR_EXTERNAL_Pos) /*!< SCB DFSR: EXTERNAL Mask */ + +#define SCB_DFSR_VCATCH_Pos 3U /*!< SCB DFSR: VCATCH Position */ +#define SCB_DFSR_VCATCH_Msk (1UL << SCB_DFSR_VCATCH_Pos) /*!< SCB DFSR: VCATCH Mask */ + +#define SCB_DFSR_DWTTRAP_Pos 2U /*!< SCB DFSR: DWTTRAP Position */ +#define SCB_DFSR_DWTTRAP_Msk (1UL << SCB_DFSR_DWTTRAP_Pos) /*!< SCB DFSR: DWTTRAP Mask */ + +#define SCB_DFSR_BKPT_Pos 1U /*!< SCB DFSR: BKPT Position */ +#define SCB_DFSR_BKPT_Msk (1UL << SCB_DFSR_BKPT_Pos) /*!< SCB DFSR: BKPT Mask */ + +#define SCB_DFSR_HALTED_Pos 0U /*!< SCB DFSR: HALTED Position */ +#define SCB_DFSR_HALTED_Msk (1UL /*<< SCB_DFSR_HALTED_Pos*/) /*!< SCB DFSR: HALTED Mask */ + +/* SCB Cache Level ID Register Definitions */ +#define SCB_CLIDR_LOUU_Pos 27U /*!< SCB CLIDR: LoUU Position */ +#define SCB_CLIDR_LOUU_Msk (7UL << SCB_CLIDR_LOUU_Pos) /*!< SCB CLIDR: LoUU Mask */ + +#define SCB_CLIDR_LOC_Pos 24U /*!< SCB CLIDR: LoC Position */ +#define SCB_CLIDR_LOC_Msk (7UL << SCB_CLIDR_LOC_Pos) /*!< SCB CLIDR: LoC Mask */ + +/* SCB Cache Type Register Definitions */ +#define SCB_CTR_FORMAT_Pos 29U /*!< SCB CTR: Format Position */ +#define SCB_CTR_FORMAT_Msk (7UL << SCB_CTR_FORMAT_Pos) /*!< SCB CTR: Format Mask */ + +#define SCB_CTR_CWG_Pos 24U /*!< SCB CTR: CWG Position */ +#define SCB_CTR_CWG_Msk (0xFUL << SCB_CTR_CWG_Pos) /*!< SCB CTR: CWG Mask */ + +#define SCB_CTR_ERG_Pos 20U /*!< SCB CTR: ERG Position */ +#define SCB_CTR_ERG_Msk (0xFUL << SCB_CTR_ERG_Pos) /*!< SCB CTR: ERG Mask */ + +#define SCB_CTR_DMINLINE_Pos 16U /*!< SCB CTR: DminLine Position */ +#define SCB_CTR_DMINLINE_Msk (0xFUL << SCB_CTR_DMINLINE_Pos) /*!< SCB CTR: DminLine Mask */ + +#define SCB_CTR_IMINLINE_Pos 0U /*!< SCB CTR: ImInLine Position */ +#define SCB_CTR_IMINLINE_Msk (0xFUL /*<< SCB_CTR_IMINLINE_Pos*/) /*!< SCB CTR: ImInLine Mask */ + +/* SCB Cache Size ID Register Definitions */ +#define SCB_CCSIDR_WT_Pos 31U /*!< SCB CCSIDR: WT Position */ +#define SCB_CCSIDR_WT_Msk (1UL << SCB_CCSIDR_WT_Pos) /*!< SCB CCSIDR: WT Mask */ + +#define SCB_CCSIDR_WB_Pos 30U /*!< SCB CCSIDR: WB Position */ +#define SCB_CCSIDR_WB_Msk (1UL << SCB_CCSIDR_WB_Pos) /*!< SCB CCSIDR: WB Mask */ + +#define SCB_CCSIDR_RA_Pos 29U /*!< SCB CCSIDR: RA Position */ +#define SCB_CCSIDR_RA_Msk (1UL << SCB_CCSIDR_RA_Pos) /*!< SCB CCSIDR: RA Mask */ + +#define SCB_CCSIDR_WA_Pos 28U /*!< SCB CCSIDR: WA Position */ +#define SCB_CCSIDR_WA_Msk (1UL << SCB_CCSIDR_WA_Pos) /*!< SCB CCSIDR: WA Mask */ + +#define SCB_CCSIDR_NUMSETS_Pos 13U /*!< SCB CCSIDR: NumSets Position */ +#define SCB_CCSIDR_NUMSETS_Msk (0x7FFFUL << SCB_CCSIDR_NUMSETS_Pos) /*!< SCB CCSIDR: NumSets Mask */ + +#define SCB_CCSIDR_ASSOCIATIVITY_Pos 3U /*!< SCB CCSIDR: Associativity Position */ +#define SCB_CCSIDR_ASSOCIATIVITY_Msk (0x3FFUL << SCB_CCSIDR_ASSOCIATIVITY_Pos) /*!< SCB CCSIDR: Associativity Mask */ + +#define SCB_CCSIDR_LINESIZE_Pos 0U /*!< SCB CCSIDR: LineSize Position */ +#define SCB_CCSIDR_LINESIZE_Msk (7UL /*<< SCB_CCSIDR_LINESIZE_Pos*/) /*!< SCB CCSIDR: LineSize Mask */ + +/* SCB Cache Size Selection Register Definitions */ +#define SCB_CSSELR_LEVEL_Pos 1U /*!< SCB CSSELR: Level Position */ +#define SCB_CSSELR_LEVEL_Msk (7UL << SCB_CSSELR_LEVEL_Pos) /*!< SCB CSSELR: Level Mask */ + +#define SCB_CSSELR_IND_Pos 0U /*!< SCB CSSELR: InD Position */ +#define SCB_CSSELR_IND_Msk (1UL /*<< SCB_CSSELR_IND_Pos*/) /*!< SCB CSSELR: InD Mask */ + +/* SCB Software Triggered Interrupt Register Definitions */ +#define SCB_STIR_INTID_Pos 0U /*!< SCB STIR: INTID Position */ +#define SCB_STIR_INTID_Msk (0x1FFUL /*<< SCB_STIR_INTID_Pos*/) /*!< SCB STIR: INTID Mask */ + +/* SCB D-Cache Invalidate by Set-way Register Definitions */ +#define SCB_DCISW_WAY_Pos 30U /*!< SCB DCISW: Way Position */ +#define SCB_DCISW_WAY_Msk (3UL << SCB_DCISW_WAY_Pos) /*!< SCB DCISW: Way Mask */ + +#define SCB_DCISW_SET_Pos 5U /*!< SCB DCISW: Set Position */ +#define SCB_DCISW_SET_Msk (0x1FFUL << SCB_DCISW_SET_Pos) /*!< SCB DCISW: Set Mask */ + +/* SCB D-Cache Clean by Set-way Register Definitions */ +#define SCB_DCCSW_WAY_Pos 30U /*!< SCB DCCSW: Way Position */ +#define SCB_DCCSW_WAY_Msk (3UL << SCB_DCCSW_WAY_Pos) /*!< SCB DCCSW: Way Mask */ + +#define SCB_DCCSW_SET_Pos 5U /*!< SCB DCCSW: Set Position */ +#define SCB_DCCSW_SET_Msk (0x1FFUL << SCB_DCCSW_SET_Pos) /*!< SCB DCCSW: Set Mask */ + +/* SCB D-Cache Clean and Invalidate by Set-way Register Definitions */ +#define SCB_DCCISW_WAY_Pos 30U /*!< SCB DCCISW: Way Position */ +#define SCB_DCCISW_WAY_Msk (3UL << SCB_DCCISW_WAY_Pos) /*!< SCB DCCISW: Way Mask */ + +#define SCB_DCCISW_SET_Pos 5U /*!< SCB DCCISW: Set Position */ +#define SCB_DCCISW_SET_Msk (0x1FFUL << SCB_DCCISW_SET_Pos) /*!< SCB DCCISW: Set Mask */ + +/* Instruction Tightly-Coupled Memory Control Register Definitions */ +#define SCB_ITCMCR_SZ_Pos 3U /*!< SCB ITCMCR: SZ Position */ +#define SCB_ITCMCR_SZ_Msk (0xFUL << SCB_ITCMCR_SZ_Pos) /*!< SCB ITCMCR: SZ Mask */ + +#define SCB_ITCMCR_RETEN_Pos 2U /*!< SCB ITCMCR: RETEN Position */ +#define SCB_ITCMCR_RETEN_Msk (1UL << SCB_ITCMCR_RETEN_Pos) /*!< SCB ITCMCR: RETEN Mask */ + +#define SCB_ITCMCR_RMW_Pos 1U /*!< SCB ITCMCR: RMW Position */ +#define SCB_ITCMCR_RMW_Msk (1UL << SCB_ITCMCR_RMW_Pos) /*!< SCB ITCMCR: RMW Mask */ + +#define SCB_ITCMCR_EN_Pos 0U /*!< SCB ITCMCR: EN Position */ +#define SCB_ITCMCR_EN_Msk (1UL /*<< SCB_ITCMCR_EN_Pos*/) /*!< SCB ITCMCR: EN Mask */ + +/* Data Tightly-Coupled Memory Control Register Definitions */ +#define SCB_DTCMCR_SZ_Pos 3U /*!< SCB DTCMCR: SZ Position */ +#define SCB_DTCMCR_SZ_Msk (0xFUL << SCB_DTCMCR_SZ_Pos) /*!< SCB DTCMCR: SZ Mask */ + +#define SCB_DTCMCR_RETEN_Pos 2U /*!< SCB DTCMCR: RETEN Position */ +#define SCB_DTCMCR_RETEN_Msk (1UL << SCB_DTCMCR_RETEN_Pos) /*!< SCB DTCMCR: RETEN Mask */ + +#define SCB_DTCMCR_RMW_Pos 1U /*!< SCB DTCMCR: RMW Position */ +#define SCB_DTCMCR_RMW_Msk (1UL << SCB_DTCMCR_RMW_Pos) /*!< SCB DTCMCR: RMW Mask */ + +#define SCB_DTCMCR_EN_Pos 0U /*!< SCB DTCMCR: EN Position */ +#define SCB_DTCMCR_EN_Msk (1UL /*<< SCB_DTCMCR_EN_Pos*/) /*!< SCB DTCMCR: EN Mask */ + +/* AHBP Control Register Definitions */ +#define SCB_AHBPCR_SZ_Pos 1U /*!< SCB AHBPCR: SZ Position */ +#define SCB_AHBPCR_SZ_Msk (7UL << SCB_AHBPCR_SZ_Pos) /*!< SCB AHBPCR: SZ Mask */ + +#define SCB_AHBPCR_EN_Pos 0U /*!< SCB AHBPCR: EN Position */ +#define SCB_AHBPCR_EN_Msk (1UL /*<< SCB_AHBPCR_EN_Pos*/) /*!< SCB AHBPCR: EN Mask */ + +/* L1 Cache Control Register Definitions */ +#define SCB_CACR_FORCEWT_Pos 2U /*!< SCB CACR: FORCEWT Position */ +#define SCB_CACR_FORCEWT_Msk (1UL << SCB_CACR_FORCEWT_Pos) /*!< SCB CACR: FORCEWT Mask */ + +#define SCB_CACR_ECCEN_Pos 1U /*!< SCB CACR: ECCEN Position */ +#define SCB_CACR_ECCEN_Msk (1UL << SCB_CACR_ECCEN_Pos) /*!< SCB CACR: ECCEN Mask */ + +#define SCB_CACR_SIWT_Pos 0U /*!< SCB CACR: SIWT Position */ +#define SCB_CACR_SIWT_Msk (1UL /*<< SCB_CACR_SIWT_Pos*/) /*!< SCB CACR: SIWT Mask */ + +/* AHBS Control Register Definitions */ +#define SCB_AHBSCR_INITCOUNT_Pos 11U /*!< SCB AHBSCR: INITCOUNT Position */ +#define SCB_AHBSCR_INITCOUNT_Msk (0x1FUL << SCB_AHBPCR_INITCOUNT_Pos) /*!< SCB AHBSCR: INITCOUNT Mask */ + +#define SCB_AHBSCR_TPRI_Pos 2U /*!< SCB AHBSCR: TPRI Position */ +#define SCB_AHBSCR_TPRI_Msk (0x1FFUL << SCB_AHBPCR_TPRI_Pos) /*!< SCB AHBSCR: TPRI Mask */ + +#define SCB_AHBSCR_CTL_Pos 0U /*!< SCB AHBSCR: CTL Position*/ +#define SCB_AHBSCR_CTL_Msk (3UL /*<< SCB_AHBPCR_CTL_Pos*/) /*!< SCB AHBSCR: CTL Mask */ + +/* Auxiliary Bus Fault Status Register Definitions */ +#define SCB_ABFSR_AXIMTYPE_Pos 8U /*!< SCB ABFSR: AXIMTYPE Position*/ +#define SCB_ABFSR_AXIMTYPE_Msk (3UL << SCB_ABFSR_AXIMTYPE_Pos) /*!< SCB ABFSR: AXIMTYPE Mask */ + +#define SCB_ABFSR_EPPB_Pos 4U /*!< SCB ABFSR: EPPB Position*/ +#define SCB_ABFSR_EPPB_Msk (1UL << SCB_ABFSR_EPPB_Pos) /*!< SCB ABFSR: EPPB Mask */ + +#define SCB_ABFSR_AXIM_Pos 3U /*!< SCB ABFSR: AXIM Position*/ +#define SCB_ABFSR_AXIM_Msk (1UL << SCB_ABFSR_AXIM_Pos) /*!< SCB ABFSR: AXIM Mask */ + +#define SCB_ABFSR_AHBP_Pos 2U /*!< SCB ABFSR: AHBP Position*/ +#define SCB_ABFSR_AHBP_Msk (1UL << SCB_ABFSR_AHBP_Pos) /*!< SCB ABFSR: AHBP Mask */ + +#define SCB_ABFSR_DTCM_Pos 1U /*!< SCB ABFSR: DTCM Position*/ +#define SCB_ABFSR_DTCM_Msk (1UL << SCB_ABFSR_DTCM_Pos) /*!< SCB ABFSR: DTCM Mask */ + +#define SCB_ABFSR_ITCM_Pos 0U /*!< SCB ABFSR: ITCM Position*/ +#define SCB_ABFSR_ITCM_Msk (1UL /*<< SCB_ABFSR_ITCM_Pos*/) /*!< SCB ABFSR: ITCM Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB) + \brief Type definitions for the System Control and ID Register not in the SCB + @{ + */ + +/** + \brief Structure type to access the System Control and ID Register not in the SCB. + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IM uint32_t ICTR; /*!< Offset: 0x004 (R/ ) Interrupt Controller Type Register */ + __IOM uint32_t ACTLR; /*!< Offset: 0x008 (R/W) Auxiliary Control Register */ +} SCnSCB_Type; + +/* Interrupt Controller Type Register Definitions */ +#define SCnSCB_ICTR_INTLINESNUM_Pos 0U /*!< ICTR: INTLINESNUM Position */ +#define SCnSCB_ICTR_INTLINESNUM_Msk (0xFUL /*<< SCnSCB_ICTR_INTLINESNUM_Pos*/) /*!< ICTR: INTLINESNUM Mask */ + +/* Auxiliary Control Register Definitions */ +#define SCnSCB_ACTLR_DISITMATBFLUSH_Pos 12U /*!< ACTLR: DISITMATBFLUSH Position */ +#define SCnSCB_ACTLR_DISITMATBFLUSH_Msk (1UL << SCnSCB_ACTLR_DISITMATBFLUSH_Pos) /*!< ACTLR: DISITMATBFLUSH Mask */ + +#define SCnSCB_ACTLR_DISRAMODE_Pos 11U /*!< ACTLR: DISRAMODE Position */ +#define SCnSCB_ACTLR_DISRAMODE_Msk (1UL << SCnSCB_ACTLR_DISRAMODE_Pos) /*!< ACTLR: DISRAMODE Mask */ + +#define SCnSCB_ACTLR_FPEXCODIS_Pos 10U /*!< ACTLR: FPEXCODIS Position */ +#define SCnSCB_ACTLR_FPEXCODIS_Msk (1UL << SCnSCB_ACTLR_FPEXCODIS_Pos) /*!< ACTLR: FPEXCODIS Mask */ + +#define SCnSCB_ACTLR_DISFOLD_Pos 2U /*!< ACTLR: DISFOLD Position */ +#define SCnSCB_ACTLR_DISFOLD_Msk (1UL << SCnSCB_ACTLR_DISFOLD_Pos) /*!< ACTLR: DISFOLD Mask */ + +#define SCnSCB_ACTLR_DISMCYCINT_Pos 0U /*!< ACTLR: DISMCYCINT Position */ +#define SCnSCB_ACTLR_DISMCYCINT_Msk (1UL /*<< SCnSCB_ACTLR_DISMCYCINT_Pos*/) /*!< ACTLR: DISMCYCINT Mask */ + +/*@} end of group CMSIS_SCnotSCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick System Tick Timer (SysTick) + \brief Type definitions for the System Timer Registers. + @{ + */ + +/** + \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_ITM Instrumentation Trace Macrocell (ITM) + \brief Type definitions for the Instrumentation Trace Macrocell (ITM) + @{ + */ + +/** + \brief Structure type to access the Instrumentation Trace Macrocell Register (ITM). + */ +typedef struct +{ + __OM union + { + __OM uint8_t u8; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 8-bit */ + __OM uint16_t u16; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 16-bit */ + __OM uint32_t u32; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 32-bit */ + } PORT [32U]; /*!< Offset: 0x000 ( /W) ITM Stimulus Port Registers */ + uint32_t RESERVED0[864U]; + __IOM uint32_t TER; /*!< Offset: 0xE00 (R/W) ITM Trace Enable Register */ + uint32_t RESERVED1[15U]; + __IOM uint32_t TPR; /*!< Offset: 0xE40 (R/W) ITM Trace Privilege Register */ + uint32_t RESERVED2[15U]; + __IOM uint32_t TCR; /*!< Offset: 0xE80 (R/W) ITM Trace Control Register */ + uint32_t RESERVED3[29U]; + __OM uint32_t IWR; /*!< Offset: 0xEF8 ( /W) ITM Integration Write Register */ + __IM uint32_t IRR; /*!< Offset: 0xEFC (R/ ) ITM Integration Read Register */ + __IOM uint32_t IMCR; /*!< Offset: 0xF00 (R/W) ITM Integration Mode Control Register */ + uint32_t RESERVED4[43U]; + __OM uint32_t LAR; /*!< Offset: 0xFB0 ( /W) ITM Lock Access Register */ + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) ITM Lock Status Register */ + uint32_t RESERVED5[6U]; + __IM uint32_t PID4; /*!< Offset: 0xFD0 (R/ ) ITM Peripheral Identification Register #4 */ + __IM uint32_t PID5; /*!< Offset: 0xFD4 (R/ ) ITM Peripheral Identification Register #5 */ + __IM uint32_t PID6; /*!< Offset: 0xFD8 (R/ ) ITM Peripheral Identification Register #6 */ + __IM uint32_t PID7; /*!< Offset: 0xFDC (R/ ) ITM Peripheral Identification Register #7 */ + __IM uint32_t PID0; /*!< Offset: 0xFE0 (R/ ) ITM Peripheral Identification Register #0 */ + __IM uint32_t PID1; /*!< Offset: 0xFE4 (R/ ) ITM Peripheral Identification Register #1 */ + __IM uint32_t PID2; /*!< Offset: 0xFE8 (R/ ) ITM Peripheral Identification Register #2 */ + __IM uint32_t PID3; /*!< Offset: 0xFEC (R/ ) ITM Peripheral Identification Register #3 */ + __IM uint32_t CID0; /*!< Offset: 0xFF0 (R/ ) ITM Component Identification Register #0 */ + __IM uint32_t CID1; /*!< Offset: 0xFF4 (R/ ) ITM Component Identification Register #1 */ + __IM uint32_t CID2; /*!< Offset: 0xFF8 (R/ ) ITM Component Identification Register #2 */ + __IM uint32_t CID3; /*!< Offset: 0xFFC (R/ ) ITM Component Identification Register #3 */ +} ITM_Type; + +/* ITM Trace Privilege Register Definitions */ +#define ITM_TPR_PRIVMASK_Pos 0U /*!< ITM TPR: PRIVMASK Position */ +#define ITM_TPR_PRIVMASK_Msk (0xFFFFFFFFUL /*<< ITM_TPR_PRIVMASK_Pos*/) /*!< ITM TPR: PRIVMASK Mask */ + +/* ITM Trace Control Register Definitions */ +#define ITM_TCR_BUSY_Pos 23U /*!< ITM TCR: BUSY Position */ +#define ITM_TCR_BUSY_Msk (1UL << ITM_TCR_BUSY_Pos) /*!< ITM TCR: BUSY Mask */ + +#define ITM_TCR_TraceBusID_Pos 16U /*!< ITM TCR: ATBID Position */ +#define ITM_TCR_TraceBusID_Msk (0x7FUL << ITM_TCR_TraceBusID_Pos) /*!< ITM TCR: ATBID Mask */ + +#define ITM_TCR_GTSFREQ_Pos 10U /*!< ITM TCR: Global timestamp frequency Position */ +#define ITM_TCR_GTSFREQ_Msk (3UL << ITM_TCR_GTSFREQ_Pos) /*!< ITM TCR: Global timestamp frequency Mask */ + +#define ITM_TCR_TSPrescale_Pos 8U /*!< ITM TCR: TSPrescale Position */ +#define ITM_TCR_TSPrescale_Msk (3UL << ITM_TCR_TSPrescale_Pos) /*!< ITM TCR: TSPrescale Mask */ + +#define ITM_TCR_SWOENA_Pos 4U /*!< ITM TCR: SWOENA Position */ +#define ITM_TCR_SWOENA_Msk (1UL << ITM_TCR_SWOENA_Pos) /*!< ITM TCR: SWOENA Mask */ + +#define ITM_TCR_DWTENA_Pos 3U /*!< ITM TCR: DWTENA Position */ +#define ITM_TCR_DWTENA_Msk (1UL << ITM_TCR_DWTENA_Pos) /*!< ITM TCR: DWTENA Mask */ + +#define ITM_TCR_SYNCENA_Pos 2U /*!< ITM TCR: SYNCENA Position */ +#define ITM_TCR_SYNCENA_Msk (1UL << ITM_TCR_SYNCENA_Pos) /*!< ITM TCR: SYNCENA Mask */ + +#define ITM_TCR_TSENA_Pos 1U /*!< ITM TCR: TSENA Position */ +#define ITM_TCR_TSENA_Msk (1UL << ITM_TCR_TSENA_Pos) /*!< ITM TCR: TSENA Mask */ + +#define ITM_TCR_ITMENA_Pos 0U /*!< ITM TCR: ITM Enable bit Position */ +#define ITM_TCR_ITMENA_Msk (1UL /*<< ITM_TCR_ITMENA_Pos*/) /*!< ITM TCR: ITM Enable bit Mask */ + +/* ITM Integration Write Register Definitions */ +#define ITM_IWR_ATVALIDM_Pos 0U /*!< ITM IWR: ATVALIDM Position */ +#define ITM_IWR_ATVALIDM_Msk (1UL /*<< ITM_IWR_ATVALIDM_Pos*/) /*!< ITM IWR: ATVALIDM Mask */ + +/* ITM Integration Read Register Definitions */ +#define ITM_IRR_ATREADYM_Pos 0U /*!< ITM IRR: ATREADYM Position */ +#define ITM_IRR_ATREADYM_Msk (1UL /*<< ITM_IRR_ATREADYM_Pos*/) /*!< ITM IRR: ATREADYM Mask */ + +/* ITM Integration Mode Control Register Definitions */ +#define ITM_IMCR_INTEGRATION_Pos 0U /*!< ITM IMCR: INTEGRATION Position */ +#define ITM_IMCR_INTEGRATION_Msk (1UL /*<< ITM_IMCR_INTEGRATION_Pos*/) /*!< ITM IMCR: INTEGRATION Mask */ + +/* ITM Lock Status Register Definitions */ +#define ITM_LSR_ByteAcc_Pos 2U /*!< ITM LSR: ByteAcc Position */ +#define ITM_LSR_ByteAcc_Msk (1UL << ITM_LSR_ByteAcc_Pos) /*!< ITM LSR: ByteAcc Mask */ + +#define ITM_LSR_Access_Pos 1U /*!< ITM LSR: Access Position */ +#define ITM_LSR_Access_Msk (1UL << ITM_LSR_Access_Pos) /*!< ITM LSR: Access Mask */ + +#define ITM_LSR_Present_Pos 0U /*!< ITM LSR: Present Position */ +#define ITM_LSR_Present_Msk (1UL /*<< ITM_LSR_Present_Pos*/) /*!< ITM LSR: Present Mask */ + +/*@}*/ /* end of group CMSIS_ITM */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DWT Data Watchpoint and Trace (DWT) + \brief Type definitions for the Data Watchpoint and Trace (DWT) + @{ + */ + +/** + \brief Structure type to access the Data Watchpoint and Trace Register (DWT). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */ + __IOM uint32_t CYCCNT; /*!< Offset: 0x004 (R/W) Cycle Count Register */ + __IOM uint32_t CPICNT; /*!< Offset: 0x008 (R/W) CPI Count Register */ + __IOM uint32_t EXCCNT; /*!< Offset: 0x00C (R/W) Exception Overhead Count Register */ + __IOM uint32_t SLEEPCNT; /*!< Offset: 0x010 (R/W) Sleep Count Register */ + __IOM uint32_t LSUCNT; /*!< Offset: 0x014 (R/W) LSU Count Register */ + __IOM uint32_t FOLDCNT; /*!< Offset: 0x018 (R/W) Folded-instruction Count Register */ + __IM uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register */ + __IOM uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */ + __IOM uint32_t MASK0; /*!< Offset: 0x024 (R/W) Mask Register 0 */ + __IOM uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */ + uint32_t RESERVED0[1U]; + __IOM uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */ + __IOM uint32_t MASK1; /*!< Offset: 0x034 (R/W) Mask Register 1 */ + __IOM uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */ + uint32_t RESERVED1[1U]; + __IOM uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */ + __IOM uint32_t MASK2; /*!< Offset: 0x044 (R/W) Mask Register 2 */ + __IOM uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */ + uint32_t RESERVED2[1U]; + __IOM uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */ + __IOM uint32_t MASK3; /*!< Offset: 0x054 (R/W) Mask Register 3 */ + __IOM uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */ + uint32_t RESERVED3[981U]; + __OM uint32_t LAR; /*!< Offset: 0xFB0 ( W) Lock Access Register */ + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R ) Lock Status Register */ +} DWT_Type; + +/* DWT Control Register Definitions */ +#define DWT_CTRL_NUMCOMP_Pos 28U /*!< DWT CTRL: NUMCOMP Position */ +#define DWT_CTRL_NUMCOMP_Msk (0xFUL << DWT_CTRL_NUMCOMP_Pos) /*!< DWT CTRL: NUMCOMP Mask */ + +#define DWT_CTRL_NOTRCPKT_Pos 27U /*!< DWT CTRL: NOTRCPKT Position */ +#define DWT_CTRL_NOTRCPKT_Msk (0x1UL << DWT_CTRL_NOTRCPKT_Pos) /*!< DWT CTRL: NOTRCPKT Mask */ + +#define DWT_CTRL_NOEXTTRIG_Pos 26U /*!< DWT CTRL: NOEXTTRIG Position */ +#define DWT_CTRL_NOEXTTRIG_Msk (0x1UL << DWT_CTRL_NOEXTTRIG_Pos) /*!< DWT CTRL: NOEXTTRIG Mask */ + +#define DWT_CTRL_NOCYCCNT_Pos 25U /*!< DWT CTRL: NOCYCCNT Position */ +#define DWT_CTRL_NOCYCCNT_Msk (0x1UL << DWT_CTRL_NOCYCCNT_Pos) /*!< DWT CTRL: NOCYCCNT Mask */ + +#define DWT_CTRL_NOPRFCNT_Pos 24U /*!< DWT CTRL: NOPRFCNT Position */ +#define DWT_CTRL_NOPRFCNT_Msk (0x1UL << DWT_CTRL_NOPRFCNT_Pos) /*!< DWT CTRL: NOPRFCNT Mask */ + +#define DWT_CTRL_CYCEVTENA_Pos 22U /*!< DWT CTRL: CYCEVTENA Position */ +#define DWT_CTRL_CYCEVTENA_Msk (0x1UL << DWT_CTRL_CYCEVTENA_Pos) /*!< DWT CTRL: CYCEVTENA Mask */ + +#define DWT_CTRL_FOLDEVTENA_Pos 21U /*!< DWT CTRL: FOLDEVTENA Position */ +#define DWT_CTRL_FOLDEVTENA_Msk (0x1UL << DWT_CTRL_FOLDEVTENA_Pos) /*!< DWT CTRL: FOLDEVTENA Mask */ + +#define DWT_CTRL_LSUEVTENA_Pos 20U /*!< DWT CTRL: LSUEVTENA Position */ +#define DWT_CTRL_LSUEVTENA_Msk (0x1UL << DWT_CTRL_LSUEVTENA_Pos) /*!< DWT CTRL: LSUEVTENA Mask */ + +#define DWT_CTRL_SLEEPEVTENA_Pos 19U /*!< DWT CTRL: SLEEPEVTENA Position */ +#define DWT_CTRL_SLEEPEVTENA_Msk (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos) /*!< DWT CTRL: SLEEPEVTENA Mask */ + +#define DWT_CTRL_EXCEVTENA_Pos 18U /*!< DWT CTRL: EXCEVTENA Position */ +#define DWT_CTRL_EXCEVTENA_Msk (0x1UL << DWT_CTRL_EXCEVTENA_Pos) /*!< DWT CTRL: EXCEVTENA Mask */ + +#define DWT_CTRL_CPIEVTENA_Pos 17U /*!< DWT CTRL: CPIEVTENA Position */ +#define DWT_CTRL_CPIEVTENA_Msk (0x1UL << DWT_CTRL_CPIEVTENA_Pos) /*!< DWT CTRL: CPIEVTENA Mask */ + +#define DWT_CTRL_EXCTRCENA_Pos 16U /*!< DWT CTRL: EXCTRCENA Position */ +#define DWT_CTRL_EXCTRCENA_Msk (0x1UL << DWT_CTRL_EXCTRCENA_Pos) /*!< DWT CTRL: EXCTRCENA Mask */ + +#define DWT_CTRL_PCSAMPLENA_Pos 12U /*!< DWT CTRL: PCSAMPLENA Position */ +#define DWT_CTRL_PCSAMPLENA_Msk (0x1UL << DWT_CTRL_PCSAMPLENA_Pos) /*!< DWT CTRL: PCSAMPLENA Mask */ + +#define DWT_CTRL_SYNCTAP_Pos 10U /*!< DWT CTRL: SYNCTAP Position */ +#define DWT_CTRL_SYNCTAP_Msk (0x3UL << DWT_CTRL_SYNCTAP_Pos) /*!< DWT CTRL: SYNCTAP Mask */ + +#define DWT_CTRL_CYCTAP_Pos 9U /*!< DWT CTRL: CYCTAP Position */ +#define DWT_CTRL_CYCTAP_Msk (0x1UL << DWT_CTRL_CYCTAP_Pos) /*!< DWT CTRL: CYCTAP Mask */ + +#define DWT_CTRL_POSTINIT_Pos 5U /*!< DWT CTRL: POSTINIT Position */ +#define DWT_CTRL_POSTINIT_Msk (0xFUL << DWT_CTRL_POSTINIT_Pos) /*!< DWT CTRL: POSTINIT Mask */ + +#define DWT_CTRL_POSTPRESET_Pos 1U /*!< DWT CTRL: POSTPRESET Position */ +#define DWT_CTRL_POSTPRESET_Msk (0xFUL << DWT_CTRL_POSTPRESET_Pos) /*!< DWT CTRL: POSTPRESET Mask */ + +#define DWT_CTRL_CYCCNTENA_Pos 0U /*!< DWT CTRL: CYCCNTENA Position */ +#define DWT_CTRL_CYCCNTENA_Msk (0x1UL /*<< DWT_CTRL_CYCCNTENA_Pos*/) /*!< DWT CTRL: CYCCNTENA Mask */ + +/* DWT CPI Count Register Definitions */ +#define DWT_CPICNT_CPICNT_Pos 0U /*!< DWT CPICNT: CPICNT Position */ +#define DWT_CPICNT_CPICNT_Msk (0xFFUL /*<< DWT_CPICNT_CPICNT_Pos*/) /*!< DWT CPICNT: CPICNT Mask */ + +/* DWT Exception Overhead Count Register Definitions */ +#define DWT_EXCCNT_EXCCNT_Pos 0U /*!< DWT EXCCNT: EXCCNT Position */ +#define DWT_EXCCNT_EXCCNT_Msk (0xFFUL /*<< DWT_EXCCNT_EXCCNT_Pos*/) /*!< DWT EXCCNT: EXCCNT Mask */ + +/* DWT Sleep Count Register Definitions */ +#define DWT_SLEEPCNT_SLEEPCNT_Pos 0U /*!< DWT SLEEPCNT: SLEEPCNT Position */ +#define DWT_SLEEPCNT_SLEEPCNT_Msk (0xFFUL /*<< DWT_SLEEPCNT_SLEEPCNT_Pos*/) /*!< DWT SLEEPCNT: SLEEPCNT Mask */ + +/* DWT LSU Count Register Definitions */ +#define DWT_LSUCNT_LSUCNT_Pos 0U /*!< DWT LSUCNT: LSUCNT Position */ +#define DWT_LSUCNT_LSUCNT_Msk (0xFFUL /*<< DWT_LSUCNT_LSUCNT_Pos*/) /*!< DWT LSUCNT: LSUCNT Mask */ + +/* DWT Folded-instruction Count Register Definitions */ +#define DWT_FOLDCNT_FOLDCNT_Pos 0U /*!< DWT FOLDCNT: FOLDCNT Position */ +#define DWT_FOLDCNT_FOLDCNT_Msk (0xFFUL /*<< DWT_FOLDCNT_FOLDCNT_Pos*/) /*!< DWT FOLDCNT: FOLDCNT Mask */ + +/* DWT Comparator Mask Register Definitions */ +#define DWT_MASK_MASK_Pos 0U /*!< DWT MASK: MASK Position */ +#define DWT_MASK_MASK_Msk (0x1FUL /*<< DWT_MASK_MASK_Pos*/) /*!< DWT MASK: MASK Mask */ + +/* DWT Comparator Function Register Definitions */ +#define DWT_FUNCTION_MATCHED_Pos 24U /*!< DWT FUNCTION: MATCHED Position */ +#define DWT_FUNCTION_MATCHED_Msk (0x1UL << DWT_FUNCTION_MATCHED_Pos) /*!< DWT FUNCTION: MATCHED Mask */ + +#define DWT_FUNCTION_DATAVADDR1_Pos 16U /*!< DWT FUNCTION: DATAVADDR1 Position */ +#define DWT_FUNCTION_DATAVADDR1_Msk (0xFUL << DWT_FUNCTION_DATAVADDR1_Pos) /*!< DWT FUNCTION: DATAVADDR1 Mask */ + +#define DWT_FUNCTION_DATAVADDR0_Pos 12U /*!< DWT FUNCTION: DATAVADDR0 Position */ +#define DWT_FUNCTION_DATAVADDR0_Msk (0xFUL << DWT_FUNCTION_DATAVADDR0_Pos) /*!< DWT FUNCTION: DATAVADDR0 Mask */ + +#define DWT_FUNCTION_DATAVSIZE_Pos 10U /*!< DWT FUNCTION: DATAVSIZE Position */ +#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */ + +#define DWT_FUNCTION_LNK1ENA_Pos 9U /*!< DWT FUNCTION: LNK1ENA Position */ +#define DWT_FUNCTION_LNK1ENA_Msk (0x1UL << DWT_FUNCTION_LNK1ENA_Pos) /*!< DWT FUNCTION: LNK1ENA Mask */ + +#define DWT_FUNCTION_DATAVMATCH_Pos 8U /*!< DWT FUNCTION: DATAVMATCH Position */ +#define DWT_FUNCTION_DATAVMATCH_Msk (0x1UL << DWT_FUNCTION_DATAVMATCH_Pos) /*!< DWT FUNCTION: DATAVMATCH Mask */ + +#define DWT_FUNCTION_CYCMATCH_Pos 7U /*!< DWT FUNCTION: CYCMATCH Position */ +#define DWT_FUNCTION_CYCMATCH_Msk (0x1UL << DWT_FUNCTION_CYCMATCH_Pos) /*!< DWT FUNCTION: CYCMATCH Mask */ + +#define DWT_FUNCTION_EMITRANGE_Pos 5U /*!< DWT FUNCTION: EMITRANGE Position */ +#define DWT_FUNCTION_EMITRANGE_Msk (0x1UL << DWT_FUNCTION_EMITRANGE_Pos) /*!< DWT FUNCTION: EMITRANGE Mask */ + +#define DWT_FUNCTION_FUNCTION_Pos 0U /*!< DWT FUNCTION: FUNCTION Position */ +#define DWT_FUNCTION_FUNCTION_Msk (0xFUL /*<< DWT_FUNCTION_FUNCTION_Pos*/) /*!< DWT FUNCTION: FUNCTION Mask */ + +/*@}*/ /* end of group CMSIS_DWT */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_TPI Trace Port Interface (TPI) + \brief Type definitions for the Trace Port Interface (TPI) + @{ + */ + +/** + \brief Structure type to access the Trace Port Interface Register (TPI). + */ +typedef struct +{ + __IM uint32_t SSPSR; /*!< Offset: 0x000 (R/ ) Supported Parallel Port Size Register */ + __IOM uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Size Register */ + uint32_t RESERVED0[2U]; + __IOM uint32_t ACPR; /*!< Offset: 0x010 (R/W) Asynchronous Clock Prescaler Register */ + uint32_t RESERVED1[55U]; + __IOM uint32_t SPPR; /*!< Offset: 0x0F0 (R/W) Selected Pin Protocol Register */ + uint32_t RESERVED2[131U]; + __IM uint32_t FFSR; /*!< Offset: 0x300 (R/ ) Formatter and Flush Status Register */ + __IOM uint32_t FFCR; /*!< Offset: 0x304 (R/W) Formatter and Flush Control Register */ + __IM uint32_t FSCR; /*!< Offset: 0x308 (R/ ) Formatter Synchronization Counter Register */ + uint32_t RESERVED3[759U]; + __IM uint32_t TRIGGER; /*!< Offset: 0xEE8 (R/ ) TRIGGER Register */ + __IM uint32_t FIFO0; /*!< Offset: 0xEEC (R/ ) Integration ETM Data */ + __IM uint32_t ITATBCTR2; /*!< Offset: 0xEF0 (R/ ) ITATBCTR2 */ + uint32_t RESERVED4[1U]; + __IM uint32_t ITATBCTR0; /*!< Offset: 0xEF8 (R/ ) ITATBCTR0 */ + __IM uint32_t FIFO1; /*!< Offset: 0xEFC (R/ ) Integration ITM Data */ + __IOM uint32_t ITCTRL; /*!< Offset: 0xF00 (R/W) Integration Mode Control */ + uint32_t RESERVED5[39U]; + __IOM uint32_t CLAIMSET; /*!< Offset: 0xFA0 (R/W) Claim tag set */ + __IOM uint32_t CLAIMCLR; /*!< Offset: 0xFA4 (R/W) Claim tag clear */ + uint32_t RESERVED7[8U]; + __IM uint32_t DEVID; /*!< Offset: 0xFC8 (R/ ) TPIU_DEVID */ + __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) TPIU_DEVTYPE */ +} TPI_Type; + +/* TPI Asynchronous Clock Prescaler Register Definitions */ +#define TPI_ACPR_PRESCALER_Pos 0U /*!< TPI ACPR: PRESCALER Position */ +#define TPI_ACPR_PRESCALER_Msk (0x1FFFUL /*<< TPI_ACPR_PRESCALER_Pos*/) /*!< TPI ACPR: PRESCALER Mask */ + +/* TPI Selected Pin Protocol Register Definitions */ +#define TPI_SPPR_TXMODE_Pos 0U /*!< TPI SPPR: TXMODE Position */ +#define TPI_SPPR_TXMODE_Msk (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/) /*!< TPI SPPR: TXMODE Mask */ + +/* TPI Formatter and Flush Status Register Definitions */ +#define TPI_FFSR_FtNonStop_Pos 3U /*!< TPI FFSR: FtNonStop Position */ +#define TPI_FFSR_FtNonStop_Msk (0x1UL << TPI_FFSR_FtNonStop_Pos) /*!< TPI FFSR: FtNonStop Mask */ + +#define TPI_FFSR_TCPresent_Pos 2U /*!< TPI FFSR: TCPresent Position */ +#define TPI_FFSR_TCPresent_Msk (0x1UL << TPI_FFSR_TCPresent_Pos) /*!< TPI FFSR: TCPresent Mask */ + +#define TPI_FFSR_FtStopped_Pos 1U /*!< TPI FFSR: FtStopped Position */ +#define TPI_FFSR_FtStopped_Msk (0x1UL << TPI_FFSR_FtStopped_Pos) /*!< TPI FFSR: FtStopped Mask */ + +#define TPI_FFSR_FlInProg_Pos 0U /*!< TPI FFSR: FlInProg Position */ +#define TPI_FFSR_FlInProg_Msk (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/) /*!< TPI FFSR: FlInProg Mask */ + +/* TPI Formatter and Flush Control Register Definitions */ +#define TPI_FFCR_TrigIn_Pos 8U /*!< TPI FFCR: TrigIn Position */ +#define TPI_FFCR_TrigIn_Msk (0x1UL << TPI_FFCR_TrigIn_Pos) /*!< TPI FFCR: TrigIn Mask */ + +#define TPI_FFCR_EnFCont_Pos 1U /*!< TPI FFCR: EnFCont Position */ +#define TPI_FFCR_EnFCont_Msk (0x1UL << TPI_FFCR_EnFCont_Pos) /*!< TPI FFCR: EnFCont Mask */ + +/* TPI TRIGGER Register Definitions */ +#define TPI_TRIGGER_TRIGGER_Pos 0U /*!< TPI TRIGGER: TRIGGER Position */ +#define TPI_TRIGGER_TRIGGER_Msk (0x1UL /*<< TPI_TRIGGER_TRIGGER_Pos*/) /*!< TPI TRIGGER: TRIGGER Mask */ + +/* TPI Integration ETM Data Register Definitions (FIFO0) */ +#define TPI_FIFO0_ITM_ATVALID_Pos 29U /*!< TPI FIFO0: ITM_ATVALID Position */ +#define TPI_FIFO0_ITM_ATVALID_Msk (0x3UL << TPI_FIFO0_ITM_ATVALID_Pos) /*!< TPI FIFO0: ITM_ATVALID Mask */ + +#define TPI_FIFO0_ITM_bytecount_Pos 27U /*!< TPI FIFO0: ITM_bytecount Position */ +#define TPI_FIFO0_ITM_bytecount_Msk (0x3UL << TPI_FIFO0_ITM_bytecount_Pos) /*!< TPI FIFO0: ITM_bytecount Mask */ + +#define TPI_FIFO0_ETM_ATVALID_Pos 26U /*!< TPI FIFO0: ETM_ATVALID Position */ +#define TPI_FIFO0_ETM_ATVALID_Msk (0x3UL << TPI_FIFO0_ETM_ATVALID_Pos) /*!< TPI FIFO0: ETM_ATVALID Mask */ + +#define TPI_FIFO0_ETM_bytecount_Pos 24U /*!< TPI FIFO0: ETM_bytecount Position */ +#define TPI_FIFO0_ETM_bytecount_Msk (0x3UL << TPI_FIFO0_ETM_bytecount_Pos) /*!< TPI FIFO0: ETM_bytecount Mask */ + +#define TPI_FIFO0_ETM2_Pos 16U /*!< TPI FIFO0: ETM2 Position */ +#define TPI_FIFO0_ETM2_Msk (0xFFUL << TPI_FIFO0_ETM2_Pos) /*!< TPI FIFO0: ETM2 Mask */ + +#define TPI_FIFO0_ETM1_Pos 8U /*!< TPI FIFO0: ETM1 Position */ +#define TPI_FIFO0_ETM1_Msk (0xFFUL << TPI_FIFO0_ETM1_Pos) /*!< TPI FIFO0: ETM1 Mask */ + +#define TPI_FIFO0_ETM0_Pos 0U /*!< TPI FIFO0: ETM0 Position */ +#define TPI_FIFO0_ETM0_Msk (0xFFUL /*<< TPI_FIFO0_ETM0_Pos*/) /*!< TPI FIFO0: ETM0 Mask */ + +/* TPI ITATBCTR2 Register Definitions */ +#define TPI_ITATBCTR2_ATREADY2_Pos 0U /*!< TPI ITATBCTR2: ATREADY2 Position */ +#define TPI_ITATBCTR2_ATREADY2_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY2_Pos*/) /*!< TPI ITATBCTR2: ATREADY2 Mask */ + +#define TPI_ITATBCTR2_ATREADY1_Pos 0U /*!< TPI ITATBCTR2: ATREADY1 Position */ +#define TPI_ITATBCTR2_ATREADY1_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY1_Pos*/) /*!< TPI ITATBCTR2: ATREADY1 Mask */ + +/* TPI Integration ITM Data Register Definitions (FIFO1) */ +#define TPI_FIFO1_ITM_ATVALID_Pos 29U /*!< TPI FIFO1: ITM_ATVALID Position */ +#define TPI_FIFO1_ITM_ATVALID_Msk (0x3UL << TPI_FIFO1_ITM_ATVALID_Pos) /*!< TPI FIFO1: ITM_ATVALID Mask */ + +#define TPI_FIFO1_ITM_bytecount_Pos 27U /*!< TPI FIFO1: ITM_bytecount Position */ +#define TPI_FIFO1_ITM_bytecount_Msk (0x3UL << TPI_FIFO1_ITM_bytecount_Pos) /*!< TPI FIFO1: ITM_bytecount Mask */ + +#define TPI_FIFO1_ETM_ATVALID_Pos 26U /*!< TPI FIFO1: ETM_ATVALID Position */ +#define TPI_FIFO1_ETM_ATVALID_Msk (0x3UL << TPI_FIFO1_ETM_ATVALID_Pos) /*!< TPI FIFO1: ETM_ATVALID Mask */ + +#define TPI_FIFO1_ETM_bytecount_Pos 24U /*!< TPI FIFO1: ETM_bytecount Position */ +#define TPI_FIFO1_ETM_bytecount_Msk (0x3UL << TPI_FIFO1_ETM_bytecount_Pos) /*!< TPI FIFO1: ETM_bytecount Mask */ + +#define TPI_FIFO1_ITM2_Pos 16U /*!< TPI FIFO1: ITM2 Position */ +#define TPI_FIFO1_ITM2_Msk (0xFFUL << TPI_FIFO1_ITM2_Pos) /*!< TPI FIFO1: ITM2 Mask */ + +#define TPI_FIFO1_ITM1_Pos 8U /*!< TPI FIFO1: ITM1 Position */ +#define TPI_FIFO1_ITM1_Msk (0xFFUL << TPI_FIFO1_ITM1_Pos) /*!< TPI FIFO1: ITM1 Mask */ + +#define TPI_FIFO1_ITM0_Pos 0U /*!< TPI FIFO1: ITM0 Position */ +#define TPI_FIFO1_ITM0_Msk (0xFFUL /*<< TPI_FIFO1_ITM0_Pos*/) /*!< TPI FIFO1: ITM0 Mask */ + +/* TPI ITATBCTR0 Register Definitions */ +#define TPI_ITATBCTR0_ATREADY2_Pos 0U /*!< TPI ITATBCTR0: ATREADY2 Position */ +#define TPI_ITATBCTR0_ATREADY2_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY2_Pos*/) /*!< TPI ITATBCTR0: ATREADY2 Mask */ + +#define TPI_ITATBCTR0_ATREADY1_Pos 0U /*!< TPI ITATBCTR0: ATREADY1 Position */ +#define TPI_ITATBCTR0_ATREADY1_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY1_Pos*/) /*!< TPI ITATBCTR0: ATREADY1 Mask */ + +/* TPI Integration Mode Control Register Definitions */ +#define TPI_ITCTRL_Mode_Pos 0U /*!< TPI ITCTRL: Mode Position */ +#define TPI_ITCTRL_Mode_Msk (0x3UL /*<< TPI_ITCTRL_Mode_Pos*/) /*!< TPI ITCTRL: Mode Mask */ + +/* TPI DEVID Register Definitions */ +#define TPI_DEVID_NRZVALID_Pos 11U /*!< TPI DEVID: NRZVALID Position */ +#define TPI_DEVID_NRZVALID_Msk (0x1UL << TPI_DEVID_NRZVALID_Pos) /*!< TPI DEVID: NRZVALID Mask */ + +#define TPI_DEVID_MANCVALID_Pos 10U /*!< TPI DEVID: MANCVALID Position */ +#define TPI_DEVID_MANCVALID_Msk (0x1UL << TPI_DEVID_MANCVALID_Pos) /*!< TPI DEVID: MANCVALID Mask */ + +#define TPI_DEVID_PTINVALID_Pos 9U /*!< TPI DEVID: PTINVALID Position */ +#define TPI_DEVID_PTINVALID_Msk (0x1UL << TPI_DEVID_PTINVALID_Pos) /*!< TPI DEVID: PTINVALID Mask */ + +#define TPI_DEVID_MinBufSz_Pos 6U /*!< TPI DEVID: MinBufSz Position */ +#define TPI_DEVID_MinBufSz_Msk (0x7UL << TPI_DEVID_MinBufSz_Pos) /*!< TPI DEVID: MinBufSz Mask */ + +#define TPI_DEVID_AsynClkIn_Pos 5U /*!< TPI DEVID: AsynClkIn Position */ +#define TPI_DEVID_AsynClkIn_Msk (0x1UL << TPI_DEVID_AsynClkIn_Pos) /*!< TPI DEVID: AsynClkIn Mask */ + +#define TPI_DEVID_NrTraceInput_Pos 0U /*!< TPI DEVID: NrTraceInput Position */ +#define TPI_DEVID_NrTraceInput_Msk (0x1FUL /*<< TPI_DEVID_NrTraceInput_Pos*/) /*!< TPI DEVID: NrTraceInput Mask */ + +/* TPI DEVTYPE Register Definitions */ +#define TPI_DEVTYPE_SubType_Pos 4U /*!< TPI DEVTYPE: SubType Position */ +#define TPI_DEVTYPE_SubType_Msk (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/) /*!< TPI DEVTYPE: SubType Mask */ + +#define TPI_DEVTYPE_MajorType_Pos 0U /*!< TPI DEVTYPE: MajorType Position */ +#define TPI_DEVTYPE_MajorType_Msk (0xFUL << TPI_DEVTYPE_MajorType_Pos) /*!< TPI DEVTYPE: MajorType Mask */ + +/*@}*/ /* end of group CMSIS_TPI */ + + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_MPU Memory Protection Unit (MPU) + \brief Type definitions for the Memory Protection Unit (MPU) + @{ + */ + +/** + \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region RNRber Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IOM uint32_t RASR; /*!< Offset: 0x010 (R/W) MPU Region Attribute and Size Register */ + __IOM uint32_t RBAR_A1; /*!< Offset: 0x014 (R/W) MPU Alias 1 Region Base Address Register */ + __IOM uint32_t RASR_A1; /*!< Offset: 0x018 (R/W) MPU Alias 1 Region Attribute and Size Register */ + __IOM uint32_t RBAR_A2; /*!< Offset: 0x01C (R/W) MPU Alias 2 Region Base Address Register */ + __IOM uint32_t RASR_A2; /*!< Offset: 0x020 (R/W) MPU Alias 2 Region Attribute and Size Register */ + __IOM uint32_t RBAR_A3; /*!< Offset: 0x024 (R/W) MPU Alias 3 Region Base Address Register */ + __IOM uint32_t RASR_A3; /*!< Offset: 0x028 (R/W) MPU Alias 3 Region Attribute and Size Register */ +} MPU_Type; + +#define MPU_TYPE_RALIASES 4U + +/* MPU Type Register Definitions */ +#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register Definitions */ +#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register Definitions */ +#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register Definitions */ +#define MPU_RBAR_ADDR_Pos 5U /*!< MPU RBAR: ADDR Position */ +#define MPU_RBAR_ADDR_Msk (0x7FFFFFFUL << MPU_RBAR_ADDR_Pos) /*!< MPU RBAR: ADDR Mask */ + +#define MPU_RBAR_VALID_Pos 4U /*!< MPU RBAR: VALID Position */ +#define MPU_RBAR_VALID_Msk (1UL << MPU_RBAR_VALID_Pos) /*!< MPU RBAR: VALID Mask */ + +#define MPU_RBAR_REGION_Pos 0U /*!< MPU RBAR: REGION Position */ +#define MPU_RBAR_REGION_Msk (0xFUL /*<< MPU_RBAR_REGION_Pos*/) /*!< MPU RBAR: REGION Mask */ + +/* MPU Region Attribute and Size Register Definitions */ +#define MPU_RASR_ATTRS_Pos 16U /*!< MPU RASR: MPU Region Attribute field Position */ +#define MPU_RASR_ATTRS_Msk (0xFFFFUL << MPU_RASR_ATTRS_Pos) /*!< MPU RASR: MPU Region Attribute field Mask */ + +#define MPU_RASR_XN_Pos 28U /*!< MPU RASR: ATTRS.XN Position */ +#define MPU_RASR_XN_Msk (1UL << MPU_RASR_XN_Pos) /*!< MPU RASR: ATTRS.XN Mask */ + +#define MPU_RASR_AP_Pos 24U /*!< MPU RASR: ATTRS.AP Position */ +#define MPU_RASR_AP_Msk (0x7UL << MPU_RASR_AP_Pos) /*!< MPU RASR: ATTRS.AP Mask */ + +#define MPU_RASR_TEX_Pos 19U /*!< MPU RASR: ATTRS.TEX Position */ +#define MPU_RASR_TEX_Msk (0x7UL << MPU_RASR_TEX_Pos) /*!< MPU RASR: ATTRS.TEX Mask */ + +#define MPU_RASR_S_Pos 18U /*!< MPU RASR: ATTRS.S Position */ +#define MPU_RASR_S_Msk (1UL << MPU_RASR_S_Pos) /*!< MPU RASR: ATTRS.S Mask */ + +#define MPU_RASR_C_Pos 17U /*!< MPU RASR: ATTRS.C Position */ +#define MPU_RASR_C_Msk (1UL << MPU_RASR_C_Pos) /*!< MPU RASR: ATTRS.C Mask */ + +#define MPU_RASR_B_Pos 16U /*!< MPU RASR: ATTRS.B Position */ +#define MPU_RASR_B_Msk (1UL << MPU_RASR_B_Pos) /*!< MPU RASR: ATTRS.B Mask */ + +#define MPU_RASR_SRD_Pos 8U /*!< MPU RASR: Sub-Region Disable Position */ +#define MPU_RASR_SRD_Msk (0xFFUL << MPU_RASR_SRD_Pos) /*!< MPU RASR: Sub-Region Disable Mask */ + +#define MPU_RASR_SIZE_Pos 1U /*!< MPU RASR: Region Size Field Position */ +#define MPU_RASR_SIZE_Msk (0x1FUL << MPU_RASR_SIZE_Pos) /*!< MPU RASR: Region Size Field Mask */ + +#define MPU_RASR_ENABLE_Pos 0U /*!< MPU RASR: Region enable bit Position */ +#define MPU_RASR_ENABLE_Msk (1UL /*<< MPU_RASR_ENABLE_Pos*/) /*!< MPU RASR: Region enable bit Disable Mask */ + +/*@} end of group CMSIS_MPU */ +#endif /* defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_FPU Floating Point Unit (FPU) + \brief Type definitions for the Floating Point Unit (FPU) + @{ + */ + +/** + \brief Structure type to access the Floating Point Unit (FPU). + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IOM uint32_t FPCCR; /*!< Offset: 0x004 (R/W) Floating-Point Context Control Register */ + __IOM uint32_t FPCAR; /*!< Offset: 0x008 (R/W) Floating-Point Context Address Register */ + __IOM uint32_t FPDSCR; /*!< Offset: 0x00C (R/W) Floating-Point Default Status Control Register */ + __IM uint32_t MVFR0; /*!< Offset: 0x010 (R/ ) Media and FP Feature Register 0 */ + __IM uint32_t MVFR1; /*!< Offset: 0x014 (R/ ) Media and FP Feature Register 1 */ + __IM uint32_t MVFR2; /*!< Offset: 0x018 (R/ ) Media and FP Feature Register 2 */ +} FPU_Type; + +/* Floating-Point Context Control Register Definitions */ +#define FPU_FPCCR_ASPEN_Pos 31U /*!< FPCCR: ASPEN bit Position */ +#define FPU_FPCCR_ASPEN_Msk (1UL << FPU_FPCCR_ASPEN_Pos) /*!< FPCCR: ASPEN bit Mask */ + +#define FPU_FPCCR_LSPEN_Pos 30U /*!< FPCCR: LSPEN Position */ +#define FPU_FPCCR_LSPEN_Msk (1UL << FPU_FPCCR_LSPEN_Pos) /*!< FPCCR: LSPEN bit Mask */ + +#define FPU_FPCCR_MONRDY_Pos 8U /*!< FPCCR: MONRDY Position */ +#define FPU_FPCCR_MONRDY_Msk (1UL << FPU_FPCCR_MONRDY_Pos) /*!< FPCCR: MONRDY bit Mask */ + +#define FPU_FPCCR_BFRDY_Pos 6U /*!< FPCCR: BFRDY Position */ +#define FPU_FPCCR_BFRDY_Msk (1UL << FPU_FPCCR_BFRDY_Pos) /*!< FPCCR: BFRDY bit Mask */ + +#define FPU_FPCCR_MMRDY_Pos 5U /*!< FPCCR: MMRDY Position */ +#define FPU_FPCCR_MMRDY_Msk (1UL << FPU_FPCCR_MMRDY_Pos) /*!< FPCCR: MMRDY bit Mask */ + +#define FPU_FPCCR_HFRDY_Pos 4U /*!< FPCCR: HFRDY Position */ +#define FPU_FPCCR_HFRDY_Msk (1UL << FPU_FPCCR_HFRDY_Pos) /*!< FPCCR: HFRDY bit Mask */ + +#define FPU_FPCCR_THREAD_Pos 3U /*!< FPCCR: processor mode bit Position */ +#define FPU_FPCCR_THREAD_Msk (1UL << FPU_FPCCR_THREAD_Pos) /*!< FPCCR: processor mode active bit Mask */ + +#define FPU_FPCCR_USER_Pos 1U /*!< FPCCR: privilege level bit Position */ +#define FPU_FPCCR_USER_Msk (1UL << FPU_FPCCR_USER_Pos) /*!< FPCCR: privilege level bit Mask */ + +#define FPU_FPCCR_LSPACT_Pos 0U /*!< FPCCR: Lazy state preservation active bit Position */ +#define FPU_FPCCR_LSPACT_Msk (1UL /*<< FPU_FPCCR_LSPACT_Pos*/) /*!< FPCCR: Lazy state preservation active bit Mask */ + +/* Floating-Point Context Address Register Definitions */ +#define FPU_FPCAR_ADDRESS_Pos 3U /*!< FPCAR: ADDRESS bit Position */ +#define FPU_FPCAR_ADDRESS_Msk (0x1FFFFFFFUL << FPU_FPCAR_ADDRESS_Pos) /*!< FPCAR: ADDRESS bit Mask */ + +/* Floating-Point Default Status Control Register Definitions */ +#define FPU_FPDSCR_AHP_Pos 26U /*!< FPDSCR: AHP bit Position */ +#define FPU_FPDSCR_AHP_Msk (1UL << FPU_FPDSCR_AHP_Pos) /*!< FPDSCR: AHP bit Mask */ + +#define FPU_FPDSCR_DN_Pos 25U /*!< FPDSCR: DN bit Position */ +#define FPU_FPDSCR_DN_Msk (1UL << FPU_FPDSCR_DN_Pos) /*!< FPDSCR: DN bit Mask */ + +#define FPU_FPDSCR_FZ_Pos 24U /*!< FPDSCR: FZ bit Position */ +#define FPU_FPDSCR_FZ_Msk (1UL << FPU_FPDSCR_FZ_Pos) /*!< FPDSCR: FZ bit Mask */ + +#define FPU_FPDSCR_RMode_Pos 22U /*!< FPDSCR: RMode bit Position */ +#define FPU_FPDSCR_RMode_Msk (3UL << FPU_FPDSCR_RMode_Pos) /*!< FPDSCR: RMode bit Mask */ + +/* Media and FP Feature Register 0 Definitions */ +#define FPU_MVFR0_FP_rounding_modes_Pos 28U /*!< MVFR0: FP rounding modes bits Position */ +#define FPU_MVFR0_FP_rounding_modes_Msk (0xFUL << FPU_MVFR0_FP_rounding_modes_Pos) /*!< MVFR0: FP rounding modes bits Mask */ + +#define FPU_MVFR0_Short_vectors_Pos 24U /*!< MVFR0: Short vectors bits Position */ +#define FPU_MVFR0_Short_vectors_Msk (0xFUL << FPU_MVFR0_Short_vectors_Pos) /*!< MVFR0: Short vectors bits Mask */ + +#define FPU_MVFR0_Square_root_Pos 20U /*!< MVFR0: Square root bits Position */ +#define FPU_MVFR0_Square_root_Msk (0xFUL << FPU_MVFR0_Square_root_Pos) /*!< MVFR0: Square root bits Mask */ + +#define FPU_MVFR0_Divide_Pos 16U /*!< MVFR0: Divide bits Position */ +#define FPU_MVFR0_Divide_Msk (0xFUL << FPU_MVFR0_Divide_Pos) /*!< MVFR0: Divide bits Mask */ + +#define FPU_MVFR0_FP_excep_trapping_Pos 12U /*!< MVFR0: FP exception trapping bits Position */ +#define FPU_MVFR0_FP_excep_trapping_Msk (0xFUL << FPU_MVFR0_FP_excep_trapping_Pos) /*!< MVFR0: FP exception trapping bits Mask */ + +#define FPU_MVFR0_Double_precision_Pos 8U /*!< MVFR0: Double-precision bits Position */ +#define FPU_MVFR0_Double_precision_Msk (0xFUL << FPU_MVFR0_Double_precision_Pos) /*!< MVFR0: Double-precision bits Mask */ + +#define FPU_MVFR0_Single_precision_Pos 4U /*!< MVFR0: Single-precision bits Position */ +#define FPU_MVFR0_Single_precision_Msk (0xFUL << FPU_MVFR0_Single_precision_Pos) /*!< MVFR0: Single-precision bits Mask */ + +#define FPU_MVFR0_A_SIMD_registers_Pos 0U /*!< MVFR0: A_SIMD registers bits Position */ +#define FPU_MVFR0_A_SIMD_registers_Msk (0xFUL /*<< FPU_MVFR0_A_SIMD_registers_Pos*/) /*!< MVFR0: A_SIMD registers bits Mask */ + +/* Media and FP Feature Register 1 Definitions */ +#define FPU_MVFR1_FP_fused_MAC_Pos 28U /*!< MVFR1: FP fused MAC bits Position */ +#define FPU_MVFR1_FP_fused_MAC_Msk (0xFUL << FPU_MVFR1_FP_fused_MAC_Pos) /*!< MVFR1: FP fused MAC bits Mask */ + +#define FPU_MVFR1_FP_HPFP_Pos 24U /*!< MVFR1: FP HPFP bits Position */ +#define FPU_MVFR1_FP_HPFP_Msk (0xFUL << FPU_MVFR1_FP_HPFP_Pos) /*!< MVFR1: FP HPFP bits Mask */ + +#define FPU_MVFR1_D_NaN_mode_Pos 4U /*!< MVFR1: D_NaN mode bits Position */ +#define FPU_MVFR1_D_NaN_mode_Msk (0xFUL << FPU_MVFR1_D_NaN_mode_Pos) /*!< MVFR1: D_NaN mode bits Mask */ + +#define FPU_MVFR1_FtZ_mode_Pos 0U /*!< MVFR1: FtZ mode bits Position */ +#define FPU_MVFR1_FtZ_mode_Msk (0xFUL /*<< FPU_MVFR1_FtZ_mode_Pos*/) /*!< MVFR1: FtZ mode bits Mask */ + +/* Media and FP Feature Register 2 Definitions */ + +/*@} end of group CMSIS_FPU */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Type definitions for the Core Debug Registers + @{ + */ + +/** + \brief Structure type to access the Core Debug Register (CoreDebug). + */ +typedef struct +{ + __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ +} CoreDebug_Type; + +/* Debug Halting Control and Status Register Definitions */ +#define CoreDebug_DHCSR_DBGKEY_Pos 16U /*!< CoreDebug DHCSR: DBGKEY Position */ +#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< CoreDebug DHCSR: DBGKEY Mask */ + +#define CoreDebug_DHCSR_S_RESET_ST_Pos 25U /*!< CoreDebug DHCSR: S_RESET_ST Position */ +#define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< CoreDebug DHCSR: S_RESET_ST Mask */ + +#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24U /*!< CoreDebug DHCSR: S_RETIRE_ST Position */ +#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */ + +#define CoreDebug_DHCSR_S_LOCKUP_Pos 19U /*!< CoreDebug DHCSR: S_LOCKUP Position */ +#define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< CoreDebug DHCSR: S_LOCKUP Mask */ + +#define CoreDebug_DHCSR_S_SLEEP_Pos 18U /*!< CoreDebug DHCSR: S_SLEEP Position */ +#define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< CoreDebug DHCSR: S_SLEEP Mask */ + +#define CoreDebug_DHCSR_S_HALT_Pos 17U /*!< CoreDebug DHCSR: S_HALT Position */ +#define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< CoreDebug DHCSR: S_HALT Mask */ + +#define CoreDebug_DHCSR_S_REGRDY_Pos 16U /*!< CoreDebug DHCSR: S_REGRDY Position */ +#define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< CoreDebug DHCSR: S_REGRDY Mask */ + +#define CoreDebug_DHCSR_C_SNAPSTALL_Pos 5U /*!< CoreDebug DHCSR: C_SNAPSTALL Position */ +#define CoreDebug_DHCSR_C_SNAPSTALL_Msk (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos) /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */ + +#define CoreDebug_DHCSR_C_MASKINTS_Pos 3U /*!< CoreDebug DHCSR: C_MASKINTS Position */ +#define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< CoreDebug DHCSR: C_MASKINTS Mask */ + +#define CoreDebug_DHCSR_C_STEP_Pos 2U /*!< CoreDebug DHCSR: C_STEP Position */ +#define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< CoreDebug DHCSR: C_STEP Mask */ + +#define CoreDebug_DHCSR_C_HALT_Pos 1U /*!< CoreDebug DHCSR: C_HALT Position */ +#define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< CoreDebug DHCSR: C_HALT Mask */ + +#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0U /*!< CoreDebug DHCSR: C_DEBUGEN Position */ +#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/) /*!< CoreDebug DHCSR: C_DEBUGEN Mask */ + +/* Debug Core Register Selector Register Definitions */ +#define CoreDebug_DCRSR_REGWnR_Pos 16U /*!< CoreDebug DCRSR: REGWnR Position */ +#define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< CoreDebug DCRSR: REGWnR Mask */ + +#define CoreDebug_DCRSR_REGSEL_Pos 0U /*!< CoreDebug DCRSR: REGSEL Position */ +#define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/) /*!< CoreDebug DCRSR: REGSEL Mask */ + +/* Debug Exception and Monitor Control Register Definitions */ +#define CoreDebug_DEMCR_TRCENA_Pos 24U /*!< CoreDebug DEMCR: TRCENA Position */ +#define CoreDebug_DEMCR_TRCENA_Msk (1UL << CoreDebug_DEMCR_TRCENA_Pos) /*!< CoreDebug DEMCR: TRCENA Mask */ + +#define CoreDebug_DEMCR_MON_REQ_Pos 19U /*!< CoreDebug DEMCR: MON_REQ Position */ +#define CoreDebug_DEMCR_MON_REQ_Msk (1UL << CoreDebug_DEMCR_MON_REQ_Pos) /*!< CoreDebug DEMCR: MON_REQ Mask */ + +#define CoreDebug_DEMCR_MON_STEP_Pos 18U /*!< CoreDebug DEMCR: MON_STEP Position */ +#define CoreDebug_DEMCR_MON_STEP_Msk (1UL << CoreDebug_DEMCR_MON_STEP_Pos) /*!< CoreDebug DEMCR: MON_STEP Mask */ + +#define CoreDebug_DEMCR_MON_PEND_Pos 17U /*!< CoreDebug DEMCR: MON_PEND Position */ +#define CoreDebug_DEMCR_MON_PEND_Msk (1UL << CoreDebug_DEMCR_MON_PEND_Pos) /*!< CoreDebug DEMCR: MON_PEND Mask */ + +#define CoreDebug_DEMCR_MON_EN_Pos 16U /*!< CoreDebug DEMCR: MON_EN Position */ +#define CoreDebug_DEMCR_MON_EN_Msk (1UL << CoreDebug_DEMCR_MON_EN_Pos) /*!< CoreDebug DEMCR: MON_EN Mask */ + +#define CoreDebug_DEMCR_VC_HARDERR_Pos 10U /*!< CoreDebug DEMCR: VC_HARDERR Position */ +#define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< CoreDebug DEMCR: VC_HARDERR Mask */ + +#define CoreDebug_DEMCR_VC_INTERR_Pos 9U /*!< CoreDebug DEMCR: VC_INTERR Position */ +#define CoreDebug_DEMCR_VC_INTERR_Msk (1UL << CoreDebug_DEMCR_VC_INTERR_Pos) /*!< CoreDebug DEMCR: VC_INTERR Mask */ + +#define CoreDebug_DEMCR_VC_BUSERR_Pos 8U /*!< CoreDebug DEMCR: VC_BUSERR Position */ +#define CoreDebug_DEMCR_VC_BUSERR_Msk (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos) /*!< CoreDebug DEMCR: VC_BUSERR Mask */ + +#define CoreDebug_DEMCR_VC_STATERR_Pos 7U /*!< CoreDebug DEMCR: VC_STATERR Position */ +#define CoreDebug_DEMCR_VC_STATERR_Msk (1UL << CoreDebug_DEMCR_VC_STATERR_Pos) /*!< CoreDebug DEMCR: VC_STATERR Mask */ + +#define CoreDebug_DEMCR_VC_CHKERR_Pos 6U /*!< CoreDebug DEMCR: VC_CHKERR Position */ +#define CoreDebug_DEMCR_VC_CHKERR_Msk (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos) /*!< CoreDebug DEMCR: VC_CHKERR Mask */ + +#define CoreDebug_DEMCR_VC_NOCPERR_Pos 5U /*!< CoreDebug DEMCR: VC_NOCPERR Position */ +#define CoreDebug_DEMCR_VC_NOCPERR_Msk (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos) /*!< CoreDebug DEMCR: VC_NOCPERR Mask */ + +#define CoreDebug_DEMCR_VC_MMERR_Pos 4U /*!< CoreDebug DEMCR: VC_MMERR Position */ +#define CoreDebug_DEMCR_VC_MMERR_Msk (1UL << CoreDebug_DEMCR_VC_MMERR_Pos) /*!< CoreDebug DEMCR: VC_MMERR Mask */ + +#define CoreDebug_DEMCR_VC_CORERESET_Pos 0U /*!< CoreDebug DEMCR: VC_CORERESET Position */ +#define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/) /*!< CoreDebug DEMCR: VC_CORERESET Mask */ + +/*@} end of group CMSIS_CoreDebug */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_bitfield Core register bit field macros + \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk). + @{ + */ + +/** + \brief Mask and shift a bit field value for use in a register bit range. + \param[in] field Name of the register bit field. + \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk) + +/** + \brief Mask and shift a register value to extract a bit filed value. + \param[in] field Name of the register bit field. + \param[in] value Value of register. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos) + +/*@} end of group CMSIS_core_bitfield */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_base Core Definitions + \brief Definitions for base addresses, unions, and structures. + @{ + */ + +/* Memory mapping of Core Hardware */ +#define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ +#define ITM_BASE (0xE0000000UL) /*!< ITM Base Address */ +#define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */ +#define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */ +#define CoreDebug_BASE (0xE000EDF0UL) /*!< Core Debug Base Address */ +#define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ +#define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ +#define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + +#define SCnSCB ((SCnSCB_Type *) SCS_BASE ) /*!< System control Register not in SCB */ +#define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ +#define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ +#define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ +#define ITM ((ITM_Type *) ITM_BASE ) /*!< ITM configuration struct */ +#define DWT ((DWT_Type *) DWT_BASE ) /*!< DWT configuration struct */ +#define TPI ((TPI_Type *) TPI_BASE ) /*!< TPI configuration struct */ +#define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE) /*!< Core Debug configuration struct */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ +#endif + +#define FPU_BASE (SCS_BASE + 0x0F30UL) /*!< Floating Point Unit */ +#define FPU ((FPU_Type *) FPU_BASE ) /*!< Floating Point Unit */ + +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Debug Functions + - Core Register Access Functions + ******************************************************************************/ +/** + \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +*/ + + + +/* ########################## NVIC functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions NVIC Functions + \brief Functions that manage interrupts and exceptions via the NVIC. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping + #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ + #define NVIC_GetActive __NVIC_GetActive + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* The following EXC_RETURN values are saved the LR on exception entry */ +#define EXC_RETURN_HANDLER (0xFFFFFFF1UL) /* return to Handler mode, uses MSP after return */ +#define EXC_RETURN_THREAD_MSP (0xFFFFFFF9UL) /* return to Thread mode, uses MSP after return */ +#define EXC_RETURN_THREAD_PSP (0xFFFFFFFDUL) /* return to Thread mode, uses PSP after return */ +#define EXC_RETURN_HANDLER_FPU (0xFFFFFFE1UL) /* return to Handler mode, uses MSP after return, restore floating-point state */ +#define EXC_RETURN_THREAD_MSP_FPU (0xFFFFFFE9UL) /* return to Thread mode, uses MSP after return, restore floating-point state */ +#define EXC_RETURN_THREAD_PSP_FPU (0xFFFFFFEDUL) /* return to Thread mode, uses PSP after return, restore floating-point state */ + + +/** + \brief Set Priority Grouping + \details Sets the priority grouping field using the required unlock sequence. + The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. + Only values from 0..7 are used. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + + reg_value = SCB->AIRCR; /* read old register configuration */ + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */ + SCB->AIRCR = reg_value; +} + + +/** + \brief Get Priority Grouping + \details Reads the priority grouping field from the NVIC Interrupt Controller. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void) +{ + return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); +} + + +/** + \brief Enable Interrupt + \details Enables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt + \details Reads the active register in the NVIC and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every processor exception. + */ +__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IP[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } + else + { + SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. + Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return(((uint32_t)NVIC->IP[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return(((uint32_t)SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Encode Priority + \details Encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + +/** + \brief Decode Priority + \details Decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + VTOR must been relocated to SRAM before. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | + SCB_AIRCR_SYSRESETREQ_Msk ); /* Keep priority group unchanged */ + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +/*@} end of CMSIS_Core_NVICFunctions */ + +/* ########################## MPU functions #################################### */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + +#include "mpu_armv7.h" + +#endif + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + uint32_t mvfr0; + + mvfr0 = SCB->MVFR0; + if ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x220U) + { + return 2U; /* Double + Single precision FPU */ + } + else if ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x020U) + { + return 1U; /* Single precision FPU */ + } + else + { + return 0U; /* No FPU */ + } +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + + + +/* ########################## Cache functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_CacheFunctions Cache Functions + \brief Functions that configure Instruction and Data cache. + @{ + */ + +/* Cache Size ID Register Macros */ +#define CCSIDR_WAYS(x) (((x) & SCB_CCSIDR_ASSOCIATIVITY_Msk) >> SCB_CCSIDR_ASSOCIATIVITY_Pos) +#define CCSIDR_SETS(x) (((x) & SCB_CCSIDR_NUMSETS_Msk ) >> SCB_CCSIDR_NUMSETS_Pos ) + + +/** + \brief Enable I-Cache + \details Turns on I-Cache + */ +__STATIC_INLINE void SCB_EnableICache (void) +{ + #if defined (__ICACHE_PRESENT) && (__ICACHE_PRESENT == 1U) + __DSB(); + __ISB(); + SCB->ICIALLU = 0UL; /* invalidate I-Cache */ + __DSB(); + __ISB(); + SCB->CCR |= (uint32_t)SCB_CCR_IC_Msk; /* enable I-Cache */ + __DSB(); + __ISB(); + #endif +} + + +/** + \brief Disable I-Cache + \details Turns off I-Cache + */ +__STATIC_INLINE void SCB_DisableICache (void) +{ + #if defined (__ICACHE_PRESENT) && (__ICACHE_PRESENT == 1U) + __DSB(); + __ISB(); + SCB->CCR &= ~(uint32_t)SCB_CCR_IC_Msk; /* disable I-Cache */ + SCB->ICIALLU = 0UL; /* invalidate I-Cache */ + __DSB(); + __ISB(); + #endif +} + + +/** + \brief Invalidate I-Cache + \details Invalidates I-Cache + */ +__STATIC_INLINE void SCB_InvalidateICache (void) +{ + #if defined (__ICACHE_PRESENT) && (__ICACHE_PRESENT == 1U) + __DSB(); + __ISB(); + SCB->ICIALLU = 0UL; + __DSB(); + __ISB(); + #endif +} + + +/** + \brief Enable D-Cache + \details Turns on D-Cache + */ +__STATIC_INLINE void SCB_EnableDCache (void) +{ + #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) + uint32_t ccsidr; + uint32_t sets; + uint32_t ways; + + SCB->CSSELR = 0U; /*(0U << 1U) | 0U;*/ /* Level 1 data cache */ + __DSB(); + + ccsidr = SCB->CCSIDR; + + /* invalidate D-Cache */ + sets = (uint32_t)(CCSIDR_SETS(ccsidr)); + do { + ways = (uint32_t)(CCSIDR_WAYS(ccsidr)); + do { + SCB->DCISW = (((sets << SCB_DCISW_SET_Pos) & SCB_DCISW_SET_Msk) | + ((ways << SCB_DCISW_WAY_Pos) & SCB_DCISW_WAY_Msk) ); + #if defined ( __CC_ARM ) + __schedule_barrier(); + #endif + } while (ways-- != 0U); + } while(sets-- != 0U); + __DSB(); + + SCB->CCR |= (uint32_t)SCB_CCR_DC_Msk; /* enable D-Cache */ + + __DSB(); + __ISB(); + #endif +} + + +/** + \brief Disable D-Cache + \details Turns off D-Cache + */ +__STATIC_INLINE void SCB_DisableDCache (void) +{ + #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) + uint32_t ccsidr; + uint32_t sets; + uint32_t ways; + + SCB->CSSELR = 0U; /*(0U << 1U) | 0U;*/ /* Level 1 data cache */ + __DSB(); + + SCB->CCR &= ~(uint32_t)SCB_CCR_DC_Msk; /* disable D-Cache */ + __DSB(); + + ccsidr = SCB->CCSIDR; + + /* clean & invalidate D-Cache */ + sets = (uint32_t)(CCSIDR_SETS(ccsidr)); + do { + ways = (uint32_t)(CCSIDR_WAYS(ccsidr)); + do { + SCB->DCCISW = (((sets << SCB_DCCISW_SET_Pos) & SCB_DCCISW_SET_Msk) | + ((ways << SCB_DCCISW_WAY_Pos) & SCB_DCCISW_WAY_Msk) ); + #if defined ( __CC_ARM ) + __schedule_barrier(); + #endif + } while (ways-- != 0U); + } while(sets-- != 0U); + + __DSB(); + __ISB(); + #endif +} + + +/** + \brief Invalidate D-Cache + \details Invalidates D-Cache + */ +__STATIC_INLINE void SCB_InvalidateDCache (void) +{ + #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) + uint32_t ccsidr; + uint32_t sets; + uint32_t ways; + + SCB->CSSELR = 0U; /*(0U << 1U) | 0U;*/ /* Level 1 data cache */ + __DSB(); + + ccsidr = SCB->CCSIDR; + + /* invalidate D-Cache */ + sets = (uint32_t)(CCSIDR_SETS(ccsidr)); + do { + ways = (uint32_t)(CCSIDR_WAYS(ccsidr)); + do { + SCB->DCISW = (((sets << SCB_DCISW_SET_Pos) & SCB_DCISW_SET_Msk) | + ((ways << SCB_DCISW_WAY_Pos) & SCB_DCISW_WAY_Msk) ); + #if defined ( __CC_ARM ) + __schedule_barrier(); + #endif + } while (ways-- != 0U); + } while(sets-- != 0U); + + __DSB(); + __ISB(); + #endif +} + + +/** + \brief Clean D-Cache + \details Cleans D-Cache + */ +__STATIC_INLINE void SCB_CleanDCache (void) +{ + #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) + uint32_t ccsidr; + uint32_t sets; + uint32_t ways; + + SCB->CSSELR = 0U; /*(0U << 1U) | 0U;*/ /* Level 1 data cache */ + __DSB(); + + ccsidr = SCB->CCSIDR; + + /* clean D-Cache */ + sets = (uint32_t)(CCSIDR_SETS(ccsidr)); + do { + ways = (uint32_t)(CCSIDR_WAYS(ccsidr)); + do { + SCB->DCCSW = (((sets << SCB_DCCSW_SET_Pos) & SCB_DCCSW_SET_Msk) | + ((ways << SCB_DCCSW_WAY_Pos) & SCB_DCCSW_WAY_Msk) ); + #if defined ( __CC_ARM ) + __schedule_barrier(); + #endif + } while (ways-- != 0U); + } while(sets-- != 0U); + + __DSB(); + __ISB(); + #endif +} + + +/** + \brief Clean & Invalidate D-Cache + \details Cleans and Invalidates D-Cache + */ +__STATIC_INLINE void SCB_CleanInvalidateDCache (void) +{ + #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) + uint32_t ccsidr; + uint32_t sets; + uint32_t ways; + + SCB->CSSELR = 0U; /*(0U << 1U) | 0U;*/ /* Level 1 data cache */ + __DSB(); + + ccsidr = SCB->CCSIDR; + + /* clean & invalidate D-Cache */ + sets = (uint32_t)(CCSIDR_SETS(ccsidr)); + do { + ways = (uint32_t)(CCSIDR_WAYS(ccsidr)); + do { + SCB->DCCISW = (((sets << SCB_DCCISW_SET_Pos) & SCB_DCCISW_SET_Msk) | + ((ways << SCB_DCCISW_WAY_Pos) & SCB_DCCISW_WAY_Msk) ); + #if defined ( __CC_ARM ) + __schedule_barrier(); + #endif + } while (ways-- != 0U); + } while(sets-- != 0U); + + __DSB(); + __ISB(); + #endif +} + + +/** + \brief D-Cache Invalidate by address + \details Invalidates D-Cache for the given address + \param[in] addr address (aligned to 32-byte boundary) + \param[in] dsize size of memory block (in number of bytes) +*/ +__STATIC_INLINE void SCB_InvalidateDCache_by_Addr (uint32_t *addr, int32_t dsize) +{ + #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) + int32_t op_size = dsize; + uint32_t op_addr = (uint32_t)addr; + int32_t linesize = 32; /* in Cortex-M7 size of cache line is fixed to 8 words (32 bytes) */ + + __DSB(); + + while (op_size > 0) { + SCB->DCIMVAC = op_addr; + op_addr += (uint32_t)linesize; + op_size -= linesize; + } + + __DSB(); + __ISB(); + #endif +} + + +/** + \brief D-Cache Clean by address + \details Cleans D-Cache for the given address + \param[in] addr address (aligned to 32-byte boundary) + \param[in] dsize size of memory block (in number of bytes) +*/ +__STATIC_INLINE void SCB_CleanDCache_by_Addr (uint32_t *addr, int32_t dsize) +{ + #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) + int32_t op_size = dsize; + uint32_t op_addr = (uint32_t) addr; + int32_t linesize = 32; /* in Cortex-M7 size of cache line is fixed to 8 words (32 bytes) */ + + __DSB(); + + while (op_size > 0) { + SCB->DCCMVAC = op_addr; + op_addr += (uint32_t)linesize; + op_size -= linesize; + } + + __DSB(); + __ISB(); + #endif +} + + +/** + \brief D-Cache Clean and Invalidate by address + \details Cleans and invalidates D_Cache for the given address + \param[in] addr address (aligned to 32-byte boundary) + \param[in] dsize size of memory block (in number of bytes) +*/ +__STATIC_INLINE void SCB_CleanInvalidateDCache_by_Addr (uint32_t *addr, int32_t dsize) +{ + #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) + int32_t op_size = dsize; + uint32_t op_addr = (uint32_t) addr; + int32_t linesize = 32; /* in Cortex-M7 size of cache line is fixed to 8 words (32 bytes) */ + + __DSB(); + + while (op_size > 0) { + SCB->DCCIMVAC = op_addr; + op_addr += (uint32_t)linesize; + op_size -= linesize; + } + + __DSB(); + __ISB(); + #endif +} + + +/*@} end of CMSIS_Core_CacheFunctions */ + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U) + +/** + \brief System Tick Configuration + \details Initializes the System Timer and its interrupt, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + +/* ##################################### Debug In/Output function ########################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_core_DebugFunctions ITM Functions + \brief Functions that access the ITM debug interface. + @{ + */ + +extern volatile int32_t ITM_RxBuffer; /*!< External variable to receive characters. */ +#define ITM_RXBUFFER_EMPTY ((int32_t)0x5AA55AA5U) /*!< Value identifying \ref ITM_RxBuffer is ready for next character. */ + + +/** + \brief ITM Send Character + \details Transmits a character via the ITM channel 0, and + \li Just returns when no debugger is connected that has booked the output. + \li Is blocking when a debugger is connected, but the previous character sent has not been transmitted. + \param [in] ch Character to transmit. + \returns Character to transmit. + */ +__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch) +{ + if (((ITM->TCR & ITM_TCR_ITMENA_Msk) != 0UL) && /* ITM enabled */ + ((ITM->TER & 1UL ) != 0UL) ) /* ITM Port #0 enabled */ + { + while (ITM->PORT[0U].u32 == 0UL) + { + __NOP(); + } + ITM->PORT[0U].u8 = (uint8_t)ch; + } + return (ch); +} + + +/** + \brief ITM Receive Character + \details Inputs a character via the external variable \ref ITM_RxBuffer. + \return Received character. + \return -1 No character pending. + */ +__STATIC_INLINE int32_t ITM_ReceiveChar (void) +{ + int32_t ch = -1; /* no character available */ + + if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY) + { + ch = ITM_RxBuffer; + ITM_RxBuffer = ITM_RXBUFFER_EMPTY; /* ready for next character */ + } + + return (ch); +} + + +/** + \brief ITM Check Character + \details Checks whether a character is pending for reading in the variable \ref ITM_RxBuffer. + \return 0 No character available. + \return 1 Character available. + */ +__STATIC_INLINE int32_t ITM_CheckChar (void) +{ + + if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY) + { + return (0); /* no character available */ + } + else + { + return (1); /* character available */ + } +} + +/*@} end of CMSIS_core_DebugFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM7_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/Drivers/CMSIS/Include/core_sc000.h b/Drivers/CMSIS/Include/core_sc000.h new file mode 100644 index 0000000..9b67c92 --- /dev/null +++ b/Drivers/CMSIS/Include/core_sc000.h @@ -0,0 +1,1022 @@ +/**************************************************************************//** + * @file core_sc000.h + * @brief CMSIS SC000 Core Peripheral Access Layer Header File + * @version V5.0.5 + * @date 28. May 2018 + ******************************************************************************/ +/* + * Copyright (c) 2009-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef __CORE_SC000_H_GENERIC +#define __CORE_SC000_H_GENERIC + +#include + +#ifdef __cplusplus + extern "C" { +#endif + +/** + \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + CMSIS violates the following MISRA-C:2004 rules: + + \li Required Rule 8.5, object/function definition in header file.
+ Function definitions in header files are used to allow 'inlining'. + + \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
+ Unions are used for effective representation of core registers. + + \li Advisory Rule 19.7, Function-like macro defined.
+ Function-like macros are used to allow more efficient code. + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** + \ingroup SC000 + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS SC000 definitions */ +#define __SC000_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __SC000_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __SC000_CMSIS_VERSION ((__SC000_CMSIS_VERSION_MAIN << 16U) | \ + __SC000_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_SC (000U) /*!< Cortex secure core */ + +/** __FPU_USED indicates whether an FPU is used or not. + This core does not support an FPU at all +*/ +#define __FPU_USED 0U + +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined __ARM_PCS_VFP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TI_ARM__ ) + #if defined __TI_VFP_SUPPORT__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_SC000_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_SC000_H_DEPENDANT +#define __CORE_SC000_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __SC000_REV + #define __SC000_REV 0x0000U + #warning "__SC000_REV not defined in device header file; using default!" + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0U + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 2U + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0U + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +/** + \defgroup CMSIS_glob_defs CMSIS Global Defines + + IO Type Qualifiers are used + \li to specify the access to peripheral variables. + \li for automatic generation of peripheral register debug information. +*/ +#ifdef __cplusplus + #define __I volatile /*!< Defines 'read only' permissions */ +#else + #define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +/* following defines should be used for structure members */ +#define __IM volatile const /*! Defines 'read only' structure member permissions */ +#define __OM volatile /*! Defines 'write only' structure member permissions */ +#define __IOM volatile /*! Defines 'read / write' structure member permissions */ + +/*@} end of group SC000 */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core MPU Register + ******************************************************************************/ +/** + \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for Cortex-M processor based devices. +*/ + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CORE Status and Control Registers + \brief Core Register type definitions. + @{ + */ + +/** + \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { + uint32_t _reserved0:28; /*!< bit: 0..27 Reserved */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + +/* APSR Register Definitions */ +#define APSR_N_Pos 31U /*!< APSR: N Position */ +#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */ + +#define APSR_Z_Pos 30U /*!< APSR: Z Position */ +#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */ + +#define APSR_C_Pos 29U /*!< APSR: C Position */ +#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */ + +#define APSR_V_Pos 28U /*!< APSR: V Position */ +#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */ + + +/** + \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + +/* IPSR Register Definitions */ +#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */ +#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */ + + +/** + \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:15; /*!< bit: 9..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ + uint32_t _reserved1:3; /*!< bit: 25..27 Reserved */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + +/* xPSR Register Definitions */ +#define xPSR_N_Pos 31U /*!< xPSR: N Position */ +#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */ + +#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */ +#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */ + +#define xPSR_C_Pos 29U /*!< xPSR: C Position */ +#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */ + +#define xPSR_V_Pos 28U /*!< xPSR: V Position */ +#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */ +#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */ + + +/** + \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t _reserved0:1; /*!< bit: 0 Reserved */ + uint32_t SPSEL:1; /*!< bit: 1 Stack to be used */ + uint32_t _reserved1:30; /*!< bit: 2..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ + +/*@} end of group CMSIS_CORE */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + \brief Type definitions for the NVIC Registers + @{ + */ + +/** + \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IOM uint32_t ISER[1U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[31U]; + __IOM uint32_t ICER[1U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[31U]; + __IOM uint32_t ISPR[1U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[31U]; + __IOM uint32_t ICPR[1U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[31U]; + uint32_t RESERVED4[64U]; + __IOM uint32_t IP[8U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register */ +} NVIC_Type; + +/*@} end of group CMSIS_NVIC */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCB System Control Block (SCB) + \brief Type definitions for the System Control Block Registers + @{ + */ + +/** + \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ + __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ + __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + uint32_t RESERVED0[1U]; + __IOM uint32_t SHP[2U]; /*!< Offset: 0x01C (R/W) System Handlers Priority Registers. [0] is RESERVED */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ + uint32_t RESERVED1[154U]; + __IOM uint32_t SFCR; /*!< Offset: 0x290 (R/W) Security Features Control Register */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_NMIPENDSET_Pos 31U /*!< SCB ICSR: NMIPENDSET Position */ +#define SCB_ICSR_NMIPENDSET_Msk (1UL << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB ICSR: NMIPENDSET Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_STKALIGN_Pos 9U /*!< SCB CCR: STKALIGN Position */ +#define SCB_CCR_STKALIGN_Msk (1UL << SCB_CCR_STKALIGN_Pos) /*!< SCB CCR: STKALIGN Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB) + \brief Type definitions for the System Control and ID Register not in the SCB + @{ + */ + +/** + \brief Structure type to access the System Control and ID Register not in the SCB. + */ +typedef struct +{ + uint32_t RESERVED0[2U]; + __IOM uint32_t ACTLR; /*!< Offset: 0x008 (R/W) Auxiliary Control Register */ +} SCnSCB_Type; + +/* Auxiliary Control Register Definitions */ +#define SCnSCB_ACTLR_DISMCYCINT_Pos 0U /*!< ACTLR: DISMCYCINT Position */ +#define SCnSCB_ACTLR_DISMCYCINT_Msk (1UL /*<< SCnSCB_ACTLR_DISMCYCINT_Pos*/) /*!< ACTLR: DISMCYCINT Mask */ + +/*@} end of group CMSIS_SCnotSCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick System Tick Timer (SysTick) + \brief Type definitions for the System Timer Registers. + @{ + */ + +/** + \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_MPU Memory Protection Unit (MPU) + \brief Type definitions for the Memory Protection Unit (MPU) + @{ + */ + +/** + \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region RNRber Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IOM uint32_t RASR; /*!< Offset: 0x010 (R/W) MPU Region Attribute and Size Register */ +} MPU_Type; + +/* MPU Type Register Definitions */ +#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register Definitions */ +#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register Definitions */ +#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register Definitions */ +#define MPU_RBAR_ADDR_Pos 8U /*!< MPU RBAR: ADDR Position */ +#define MPU_RBAR_ADDR_Msk (0xFFFFFFUL << MPU_RBAR_ADDR_Pos) /*!< MPU RBAR: ADDR Mask */ + +#define MPU_RBAR_VALID_Pos 4U /*!< MPU RBAR: VALID Position */ +#define MPU_RBAR_VALID_Msk (1UL << MPU_RBAR_VALID_Pos) /*!< MPU RBAR: VALID Mask */ + +#define MPU_RBAR_REGION_Pos 0U /*!< MPU RBAR: REGION Position */ +#define MPU_RBAR_REGION_Msk (0xFUL /*<< MPU_RBAR_REGION_Pos*/) /*!< MPU RBAR: REGION Mask */ + +/* MPU Region Attribute and Size Register Definitions */ +#define MPU_RASR_ATTRS_Pos 16U /*!< MPU RASR: MPU Region Attribute field Position */ +#define MPU_RASR_ATTRS_Msk (0xFFFFUL << MPU_RASR_ATTRS_Pos) /*!< MPU RASR: MPU Region Attribute field Mask */ + +#define MPU_RASR_XN_Pos 28U /*!< MPU RASR: ATTRS.XN Position */ +#define MPU_RASR_XN_Msk (1UL << MPU_RASR_XN_Pos) /*!< MPU RASR: ATTRS.XN Mask */ + +#define MPU_RASR_AP_Pos 24U /*!< MPU RASR: ATTRS.AP Position */ +#define MPU_RASR_AP_Msk (0x7UL << MPU_RASR_AP_Pos) /*!< MPU RASR: ATTRS.AP Mask */ + +#define MPU_RASR_TEX_Pos 19U /*!< MPU RASR: ATTRS.TEX Position */ +#define MPU_RASR_TEX_Msk (0x7UL << MPU_RASR_TEX_Pos) /*!< MPU RASR: ATTRS.TEX Mask */ + +#define MPU_RASR_S_Pos 18U /*!< MPU RASR: ATTRS.S Position */ +#define MPU_RASR_S_Msk (1UL << MPU_RASR_S_Pos) /*!< MPU RASR: ATTRS.S Mask */ + +#define MPU_RASR_C_Pos 17U /*!< MPU RASR: ATTRS.C Position */ +#define MPU_RASR_C_Msk (1UL << MPU_RASR_C_Pos) /*!< MPU RASR: ATTRS.C Mask */ + +#define MPU_RASR_B_Pos 16U /*!< MPU RASR: ATTRS.B Position */ +#define MPU_RASR_B_Msk (1UL << MPU_RASR_B_Pos) /*!< MPU RASR: ATTRS.B Mask */ + +#define MPU_RASR_SRD_Pos 8U /*!< MPU RASR: Sub-Region Disable Position */ +#define MPU_RASR_SRD_Msk (0xFFUL << MPU_RASR_SRD_Pos) /*!< MPU RASR: Sub-Region Disable Mask */ + +#define MPU_RASR_SIZE_Pos 1U /*!< MPU RASR: Region Size Field Position */ +#define MPU_RASR_SIZE_Msk (0x1FUL << MPU_RASR_SIZE_Pos) /*!< MPU RASR: Region Size Field Mask */ + +#define MPU_RASR_ENABLE_Pos 0U /*!< MPU RASR: Region enable bit Position */ +#define MPU_RASR_ENABLE_Msk (1UL /*<< MPU_RASR_ENABLE_Pos*/) /*!< MPU RASR: Region enable bit Disable Mask */ + +/*@} end of group CMSIS_MPU */ +#endif + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief SC000 Core Debug Registers (DCB registers, SHCSR, and DFSR) are only accessible over DAP and not via processor. + Therefore they are not covered by the SC000 header file. + @{ + */ +/*@} end of group CMSIS_CoreDebug */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_bitfield Core register bit field macros + \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk). + @{ + */ + +/** + \brief Mask and shift a bit field value for use in a register bit range. + \param[in] field Name of the register bit field. + \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk) + +/** + \brief Mask and shift a register value to extract a bit filed value. + \param[in] field Name of the register bit field. + \param[in] value Value of register. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos) + +/*@} end of group CMSIS_core_bitfield */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_base Core Definitions + \brief Definitions for base addresses, unions, and structures. + @{ + */ + +/* Memory mapping of Core Hardware */ +#define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ +#define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ +#define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ +#define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + +#define SCnSCB ((SCnSCB_Type *) SCS_BASE ) /*!< System control Register not in SCB */ +#define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ +#define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ +#define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ +#endif + +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Register Access Functions + ******************************************************************************/ +/** + \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +*/ + + + +/* ########################## NVIC functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions NVIC Functions + \brief Functions that manage interrupts and exceptions via the NVIC. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else +/*#define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping not available for SC000 */ +/*#define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping not available for SC000 */ + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ +/*#define NVIC_GetActive __NVIC_GetActive not available for SC000 */ + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* The following EXC_RETURN values are saved the LR on exception entry */ +#define EXC_RETURN_HANDLER (0xFFFFFFF1UL) /* return to Handler mode, uses MSP after return */ +#define EXC_RETURN_THREAD_MSP (0xFFFFFFF9UL) /* return to Thread mode, uses MSP after return */ +#define EXC_RETURN_THREAD_PSP (0xFFFFFFFDUL) /* return to Thread mode, uses PSP after return */ + + +/* Interrupt Priorities are WORD accessible only under Armv6-M */ +/* The following MACROS handle generation of the register offset and byte masks */ +#define _BIT_SHIFT(IRQn) ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL) +#define _SHP_IDX(IRQn) ( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >> 2UL) ) +#define _IP_IDX(IRQn) ( (((uint32_t)(int32_t)(IRQn)) >> 2UL) ) + + +/** + \brief Enable Interrupt + \details Enables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every processor exception. + */ +__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IP[_IP_IDX(IRQn)] = ((uint32_t)(NVIC->IP[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } + else + { + SCB->SHP[_SHP_IDX(IRQn)] = ((uint32_t)(SCB->SHP[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. + Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IP[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return((uint32_t)(((SCB->SHP[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + VTOR must been relocated to SRAM before. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = ((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + SCB_AIRCR_SYSRESETREQ_Msk); + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +/*@} end of CMSIS_Core_NVICFunctions */ + + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + return 0U; /* No FPU */ +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U) + +/** + \brief System Tick Configuration + \details Initializes the System Timer and its interrupt, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_SC000_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/Drivers/CMSIS/Include/core_sc300.h b/Drivers/CMSIS/Include/core_sc300.h new file mode 100644 index 0000000..3e8a471 --- /dev/null +++ b/Drivers/CMSIS/Include/core_sc300.h @@ -0,0 +1,1915 @@ +/**************************************************************************//** + * @file core_sc300.h + * @brief CMSIS SC300 Core Peripheral Access Layer Header File + * @version V5.0.6 + * @date 04. June 2018 + ******************************************************************************/ +/* + * Copyright (c) 2009-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef __CORE_SC300_H_GENERIC +#define __CORE_SC300_H_GENERIC + +#include + +#ifdef __cplusplus + extern "C" { +#endif + +/** + \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + CMSIS violates the following MISRA-C:2004 rules: + + \li Required Rule 8.5, object/function definition in header file.
+ Function definitions in header files are used to allow 'inlining'. + + \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
+ Unions are used for effective representation of core registers. + + \li Advisory Rule 19.7, Function-like macro defined.
+ Function-like macros are used to allow more efficient code. + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** + \ingroup SC3000 + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS SC300 definitions */ +#define __SC300_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __SC300_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __SC300_CMSIS_VERSION ((__SC300_CMSIS_VERSION_MAIN << 16U) | \ + __SC300_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_SC (300U) /*!< Cortex secure core */ + +/** __FPU_USED indicates whether an FPU is used or not. + This core does not support an FPU at all +*/ +#define __FPU_USED 0U + +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined __ARM_PCS_VFP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TI_ARM__ ) + #if defined __TI_VFP_SUPPORT__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_SC300_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_SC300_H_DEPENDANT +#define __CORE_SC300_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __SC300_REV + #define __SC300_REV 0x0000U + #warning "__SC300_REV not defined in device header file; using default!" + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0U + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 3U + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0U + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +/** + \defgroup CMSIS_glob_defs CMSIS Global Defines + + IO Type Qualifiers are used + \li to specify the access to peripheral variables. + \li for automatic generation of peripheral register debug information. +*/ +#ifdef __cplusplus + #define __I volatile /*!< Defines 'read only' permissions */ +#else + #define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +/* following defines should be used for structure members */ +#define __IM volatile const /*! Defines 'read only' structure member permissions */ +#define __OM volatile /*! Defines 'write only' structure member permissions */ +#define __IOM volatile /*! Defines 'read / write' structure member permissions */ + +/*@} end of group SC300 */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core Debug Register + - Core MPU Register + ******************************************************************************/ +/** + \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for Cortex-M processor based devices. +*/ + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CORE Status and Control Registers + \brief Core Register type definitions. + @{ + */ + +/** + \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { + uint32_t _reserved0:27; /*!< bit: 0..26 Reserved */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + +/* APSR Register Definitions */ +#define APSR_N_Pos 31U /*!< APSR: N Position */ +#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */ + +#define APSR_Z_Pos 30U /*!< APSR: Z Position */ +#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */ + +#define APSR_C_Pos 29U /*!< APSR: C Position */ +#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */ + +#define APSR_V_Pos 28U /*!< APSR: V Position */ +#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */ + +#define APSR_Q_Pos 27U /*!< APSR: Q Position */ +#define APSR_Q_Msk (1UL << APSR_Q_Pos) /*!< APSR: Q Mask */ + + +/** + \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + +/* IPSR Register Definitions */ +#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */ +#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */ + + +/** + \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:1; /*!< bit: 9 Reserved */ + uint32_t ICI_IT_1:6; /*!< bit: 10..15 ICI/IT part 1 */ + uint32_t _reserved1:8; /*!< bit: 16..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit */ + uint32_t ICI_IT_2:2; /*!< bit: 25..26 ICI/IT part 2 */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + +/* xPSR Register Definitions */ +#define xPSR_N_Pos 31U /*!< xPSR: N Position */ +#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */ + +#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */ +#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */ + +#define xPSR_C_Pos 29U /*!< xPSR: C Position */ +#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */ + +#define xPSR_V_Pos 28U /*!< xPSR: V Position */ +#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */ + +#define xPSR_Q_Pos 27U /*!< xPSR: Q Position */ +#define xPSR_Q_Msk (1UL << xPSR_Q_Pos) /*!< xPSR: Q Mask */ + +#define xPSR_ICI_IT_2_Pos 25U /*!< xPSR: ICI/IT part 2 Position */ +#define xPSR_ICI_IT_2_Msk (3UL << xPSR_ICI_IT_2_Pos) /*!< xPSR: ICI/IT part 2 Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_ICI_IT_1_Pos 10U /*!< xPSR: ICI/IT part 1 Position */ +#define xPSR_ICI_IT_1_Msk (0x3FUL << xPSR_ICI_IT_1_Pos) /*!< xPSR: ICI/IT part 1 Mask */ + +#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */ +#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */ + + +/** + \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + uint32_t SPSEL:1; /*!< bit: 1 Stack to be used */ + uint32_t _reserved1:30; /*!< bit: 2..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ + +#define CONTROL_nPRIV_Pos 0U /*!< CONTROL: nPRIV Position */ +#define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONTROL: nPRIV Mask */ + +/*@} end of group CMSIS_CORE */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + \brief Type definitions for the NVIC Registers + @{ + */ + +/** + \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IOM uint32_t ISER[8U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[24U]; + __IOM uint32_t ICER[8U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[24U]; + __IOM uint32_t ISPR[8U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[24U]; + __IOM uint32_t ICPR[8U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[24U]; + __IOM uint32_t IABR[8U]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ + uint32_t RESERVED4[56U]; + __IOM uint8_t IP[240U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register (8Bit wide) */ + uint32_t RESERVED5[644U]; + __OM uint32_t STIR; /*!< Offset: 0xE00 ( /W) Software Trigger Interrupt Register */ +} NVIC_Type; + +/* Software Triggered Interrupt Register Definitions */ +#define NVIC_STIR_INTID_Pos 0U /*!< STIR: INTLINESNUM Position */ +#define NVIC_STIR_INTID_Msk (0x1FFUL /*<< NVIC_STIR_INTID_Pos*/) /*!< STIR: INTLINESNUM Mask */ + +/*@} end of group CMSIS_NVIC */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCB System Control Block (SCB) + \brief Type definitions for the System Control Block Registers + @{ + */ + +/** + \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ + __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ + __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + __IOM uint8_t SHP[12U]; /*!< Offset: 0x018 (R/W) System Handlers Priority Registers (4-7, 8-11, 12-15) */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ + __IOM uint32_t CFSR; /*!< Offset: 0x028 (R/W) Configurable Fault Status Register */ + __IOM uint32_t HFSR; /*!< Offset: 0x02C (R/W) HardFault Status Register */ + __IOM uint32_t DFSR; /*!< Offset: 0x030 (R/W) Debug Fault Status Register */ + __IOM uint32_t MMFAR; /*!< Offset: 0x034 (R/W) MemManage Fault Address Register */ + __IOM uint32_t BFAR; /*!< Offset: 0x038 (R/W) BusFault Address Register */ + __IOM uint32_t AFSR; /*!< Offset: 0x03C (R/W) Auxiliary Fault Status Register */ + __IM uint32_t PFR[2U]; /*!< Offset: 0x040 (R/ ) Processor Feature Register */ + __IM uint32_t DFR; /*!< Offset: 0x048 (R/ ) Debug Feature Register */ + __IM uint32_t ADR; /*!< Offset: 0x04C (R/ ) Auxiliary Feature Register */ + __IM uint32_t MMFR[4U]; /*!< Offset: 0x050 (R/ ) Memory Model Feature Register */ + __IM uint32_t ISAR[5U]; /*!< Offset: 0x060 (R/ ) Instruction Set Attributes Register */ + uint32_t RESERVED0[5U]; + __IOM uint32_t CPACR; /*!< Offset: 0x088 (R/W) Coprocessor Access Control Register */ + uint32_t RESERVED1[129U]; + __IOM uint32_t SFCR; /*!< Offset: 0x290 (R/W) Security Features Control Register */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_NMIPENDSET_Pos 31U /*!< SCB ICSR: NMIPENDSET Position */ +#define SCB_ICSR_NMIPENDSET_Msk (1UL << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB ICSR: NMIPENDSET Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_RETTOBASE_Pos 11U /*!< SCB ICSR: RETTOBASE Position */ +#define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */ + +/* SCB Vector Table Offset Register Definitions */ +#define SCB_VTOR_TBLBASE_Pos 29U /*!< SCB VTOR: TBLBASE Position */ +#define SCB_VTOR_TBLBASE_Msk (1UL << SCB_VTOR_TBLBASE_Pos) /*!< SCB VTOR: TBLBASE Mask */ + +#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x3FFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_PRIGROUP_Pos 8U /*!< SCB AIRCR: PRIGROUP Position */ +#define SCB_AIRCR_PRIGROUP_Msk (7UL << SCB_AIRCR_PRIGROUP_Pos) /*!< SCB AIRCR: PRIGROUP Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +#define SCB_AIRCR_VECTRESET_Pos 0U /*!< SCB AIRCR: VECTRESET Position */ +#define SCB_AIRCR_VECTRESET_Msk (1UL /*<< SCB_AIRCR_VECTRESET_Pos*/) /*!< SCB AIRCR: VECTRESET Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_STKALIGN_Pos 9U /*!< SCB CCR: STKALIGN Position */ +#define SCB_CCR_STKALIGN_Msk (1UL << SCB_CCR_STKALIGN_Pos) /*!< SCB CCR: STKALIGN Mask */ + +#define SCB_CCR_BFHFNMIGN_Pos 8U /*!< SCB CCR: BFHFNMIGN Position */ +#define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ + +#define SCB_CCR_DIV_0_TRP_Pos 4U /*!< SCB CCR: DIV_0_TRP Position */ +#define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +#define SCB_CCR_USERSETMPEND_Pos 1U /*!< SCB CCR: USERSETMPEND Position */ +#define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ + +#define SCB_CCR_NONBASETHRDENA_Pos 0U /*!< SCB CCR: NONBASETHRDENA Position */ +#define SCB_CCR_NONBASETHRDENA_Msk (1UL /*<< SCB_CCR_NONBASETHRDENA_Pos*/) /*!< SCB CCR: NONBASETHRDENA Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_USGFAULTENA_Pos 18U /*!< SCB SHCSR: USGFAULTENA Position */ +#define SCB_SHCSR_USGFAULTENA_Msk (1UL << SCB_SHCSR_USGFAULTENA_Pos) /*!< SCB SHCSR: USGFAULTENA Mask */ + +#define SCB_SHCSR_BUSFAULTENA_Pos 17U /*!< SCB SHCSR: BUSFAULTENA Position */ +#define SCB_SHCSR_BUSFAULTENA_Msk (1UL << SCB_SHCSR_BUSFAULTENA_Pos) /*!< SCB SHCSR: BUSFAULTENA Mask */ + +#define SCB_SHCSR_MEMFAULTENA_Pos 16U /*!< SCB SHCSR: MEMFAULTENA Position */ +#define SCB_SHCSR_MEMFAULTENA_Msk (1UL << SCB_SHCSR_MEMFAULTENA_Pos) /*!< SCB SHCSR: MEMFAULTENA Mask */ + +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +#define SCB_SHCSR_BUSFAULTPENDED_Pos 14U /*!< SCB SHCSR: BUSFAULTPENDED Position */ +#define SCB_SHCSR_BUSFAULTPENDED_Msk (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos) /*!< SCB SHCSR: BUSFAULTPENDED Mask */ + +#define SCB_SHCSR_MEMFAULTPENDED_Pos 13U /*!< SCB SHCSR: MEMFAULTPENDED Position */ +#define SCB_SHCSR_MEMFAULTPENDED_Msk (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos) /*!< SCB SHCSR: MEMFAULTPENDED Mask */ + +#define SCB_SHCSR_USGFAULTPENDED_Pos 12U /*!< SCB SHCSR: USGFAULTPENDED Position */ +#define SCB_SHCSR_USGFAULTPENDED_Msk (1UL << SCB_SHCSR_USGFAULTPENDED_Pos) /*!< SCB SHCSR: USGFAULTPENDED Mask */ + +#define SCB_SHCSR_SYSTICKACT_Pos 11U /*!< SCB SHCSR: SYSTICKACT Position */ +#define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ + +#define SCB_SHCSR_PENDSVACT_Pos 10U /*!< SCB SHCSR: PENDSVACT Position */ +#define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ + +#define SCB_SHCSR_MONITORACT_Pos 8U /*!< SCB SHCSR: MONITORACT Position */ +#define SCB_SHCSR_MONITORACT_Msk (1UL << SCB_SHCSR_MONITORACT_Pos) /*!< SCB SHCSR: MONITORACT Mask */ + +#define SCB_SHCSR_SVCALLACT_Pos 7U /*!< SCB SHCSR: SVCALLACT Position */ +#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ + +#define SCB_SHCSR_USGFAULTACT_Pos 3U /*!< SCB SHCSR: USGFAULTACT Position */ +#define SCB_SHCSR_USGFAULTACT_Msk (1UL << SCB_SHCSR_USGFAULTACT_Pos) /*!< SCB SHCSR: USGFAULTACT Mask */ + +#define SCB_SHCSR_BUSFAULTACT_Pos 1U /*!< SCB SHCSR: BUSFAULTACT Position */ +#define SCB_SHCSR_BUSFAULTACT_Msk (1UL << SCB_SHCSR_BUSFAULTACT_Pos) /*!< SCB SHCSR: BUSFAULTACT Mask */ + +#define SCB_SHCSR_MEMFAULTACT_Pos 0U /*!< SCB SHCSR: MEMFAULTACT Position */ +#define SCB_SHCSR_MEMFAULTACT_Msk (1UL /*<< SCB_SHCSR_MEMFAULTACT_Pos*/) /*!< SCB SHCSR: MEMFAULTACT Mask */ + +/* SCB Configurable Fault Status Register Definitions */ +#define SCB_CFSR_USGFAULTSR_Pos 16U /*!< SCB CFSR: Usage Fault Status Register Position */ +#define SCB_CFSR_USGFAULTSR_Msk (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos) /*!< SCB CFSR: Usage Fault Status Register Mask */ + +#define SCB_CFSR_BUSFAULTSR_Pos 8U /*!< SCB CFSR: Bus Fault Status Register Position */ +#define SCB_CFSR_BUSFAULTSR_Msk (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos) /*!< SCB CFSR: Bus Fault Status Register Mask */ + +#define SCB_CFSR_MEMFAULTSR_Pos 0U /*!< SCB CFSR: Memory Manage Fault Status Register Position */ +#define SCB_CFSR_MEMFAULTSR_Msk (0xFFUL /*<< SCB_CFSR_MEMFAULTSR_Pos*/) /*!< SCB CFSR: Memory Manage Fault Status Register Mask */ + +/* MemManage Fault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_MMARVALID_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 7U) /*!< SCB CFSR (MMFSR): MMARVALID Position */ +#define SCB_CFSR_MMARVALID_Msk (1UL << SCB_CFSR_MMARVALID_Pos) /*!< SCB CFSR (MMFSR): MMARVALID Mask */ + +#define SCB_CFSR_MSTKERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 4U) /*!< SCB CFSR (MMFSR): MSTKERR Position */ +#define SCB_CFSR_MSTKERR_Msk (1UL << SCB_CFSR_MSTKERR_Pos) /*!< SCB CFSR (MMFSR): MSTKERR Mask */ + +#define SCB_CFSR_MUNSTKERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 3U) /*!< SCB CFSR (MMFSR): MUNSTKERR Position */ +#define SCB_CFSR_MUNSTKERR_Msk (1UL << SCB_CFSR_MUNSTKERR_Pos) /*!< SCB CFSR (MMFSR): MUNSTKERR Mask */ + +#define SCB_CFSR_DACCVIOL_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 1U) /*!< SCB CFSR (MMFSR): DACCVIOL Position */ +#define SCB_CFSR_DACCVIOL_Msk (1UL << SCB_CFSR_DACCVIOL_Pos) /*!< SCB CFSR (MMFSR): DACCVIOL Mask */ + +#define SCB_CFSR_IACCVIOL_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 0U) /*!< SCB CFSR (MMFSR): IACCVIOL Position */ +#define SCB_CFSR_IACCVIOL_Msk (1UL /*<< SCB_CFSR_IACCVIOL_Pos*/) /*!< SCB CFSR (MMFSR): IACCVIOL Mask */ + +/* BusFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_BFARVALID_Pos (SCB_CFSR_BUSFAULTSR_Pos + 7U) /*!< SCB CFSR (BFSR): BFARVALID Position */ +#define SCB_CFSR_BFARVALID_Msk (1UL << SCB_CFSR_BFARVALID_Pos) /*!< SCB CFSR (BFSR): BFARVALID Mask */ + +#define SCB_CFSR_STKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 4U) /*!< SCB CFSR (BFSR): STKERR Position */ +#define SCB_CFSR_STKERR_Msk (1UL << SCB_CFSR_STKERR_Pos) /*!< SCB CFSR (BFSR): STKERR Mask */ + +#define SCB_CFSR_UNSTKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 3U) /*!< SCB CFSR (BFSR): UNSTKERR Position */ +#define SCB_CFSR_UNSTKERR_Msk (1UL << SCB_CFSR_UNSTKERR_Pos) /*!< SCB CFSR (BFSR): UNSTKERR Mask */ + +#define SCB_CFSR_IMPRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 2U) /*!< SCB CFSR (BFSR): IMPRECISERR Position */ +#define SCB_CFSR_IMPRECISERR_Msk (1UL << SCB_CFSR_IMPRECISERR_Pos) /*!< SCB CFSR (BFSR): IMPRECISERR Mask */ + +#define SCB_CFSR_PRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 1U) /*!< SCB CFSR (BFSR): PRECISERR Position */ +#define SCB_CFSR_PRECISERR_Msk (1UL << SCB_CFSR_PRECISERR_Pos) /*!< SCB CFSR (BFSR): PRECISERR Mask */ + +#define SCB_CFSR_IBUSERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 0U) /*!< SCB CFSR (BFSR): IBUSERR Position */ +#define SCB_CFSR_IBUSERR_Msk (1UL << SCB_CFSR_IBUSERR_Pos) /*!< SCB CFSR (BFSR): IBUSERR Mask */ + +/* UsageFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_DIVBYZERO_Pos (SCB_CFSR_USGFAULTSR_Pos + 9U) /*!< SCB CFSR (UFSR): DIVBYZERO Position */ +#define SCB_CFSR_DIVBYZERO_Msk (1UL << SCB_CFSR_DIVBYZERO_Pos) /*!< SCB CFSR (UFSR): DIVBYZERO Mask */ + +#define SCB_CFSR_UNALIGNED_Pos (SCB_CFSR_USGFAULTSR_Pos + 8U) /*!< SCB CFSR (UFSR): UNALIGNED Position */ +#define SCB_CFSR_UNALIGNED_Msk (1UL << SCB_CFSR_UNALIGNED_Pos) /*!< SCB CFSR (UFSR): UNALIGNED Mask */ + +#define SCB_CFSR_NOCP_Pos (SCB_CFSR_USGFAULTSR_Pos + 3U) /*!< SCB CFSR (UFSR): NOCP Position */ +#define SCB_CFSR_NOCP_Msk (1UL << SCB_CFSR_NOCP_Pos) /*!< SCB CFSR (UFSR): NOCP Mask */ + +#define SCB_CFSR_INVPC_Pos (SCB_CFSR_USGFAULTSR_Pos + 2U) /*!< SCB CFSR (UFSR): INVPC Position */ +#define SCB_CFSR_INVPC_Msk (1UL << SCB_CFSR_INVPC_Pos) /*!< SCB CFSR (UFSR): INVPC Mask */ + +#define SCB_CFSR_INVSTATE_Pos (SCB_CFSR_USGFAULTSR_Pos + 1U) /*!< SCB CFSR (UFSR): INVSTATE Position */ +#define SCB_CFSR_INVSTATE_Msk (1UL << SCB_CFSR_INVSTATE_Pos) /*!< SCB CFSR (UFSR): INVSTATE Mask */ + +#define SCB_CFSR_UNDEFINSTR_Pos (SCB_CFSR_USGFAULTSR_Pos + 0U) /*!< SCB CFSR (UFSR): UNDEFINSTR Position */ +#define SCB_CFSR_UNDEFINSTR_Msk (1UL << SCB_CFSR_UNDEFINSTR_Pos) /*!< SCB CFSR (UFSR): UNDEFINSTR Mask */ + +/* SCB Hard Fault Status Register Definitions */ +#define SCB_HFSR_DEBUGEVT_Pos 31U /*!< SCB HFSR: DEBUGEVT Position */ +#define SCB_HFSR_DEBUGEVT_Msk (1UL << SCB_HFSR_DEBUGEVT_Pos) /*!< SCB HFSR: DEBUGEVT Mask */ + +#define SCB_HFSR_FORCED_Pos 30U /*!< SCB HFSR: FORCED Position */ +#define SCB_HFSR_FORCED_Msk (1UL << SCB_HFSR_FORCED_Pos) /*!< SCB HFSR: FORCED Mask */ + +#define SCB_HFSR_VECTTBL_Pos 1U /*!< SCB HFSR: VECTTBL Position */ +#define SCB_HFSR_VECTTBL_Msk (1UL << SCB_HFSR_VECTTBL_Pos) /*!< SCB HFSR: VECTTBL Mask */ + +/* SCB Debug Fault Status Register Definitions */ +#define SCB_DFSR_EXTERNAL_Pos 4U /*!< SCB DFSR: EXTERNAL Position */ +#define SCB_DFSR_EXTERNAL_Msk (1UL << SCB_DFSR_EXTERNAL_Pos) /*!< SCB DFSR: EXTERNAL Mask */ + +#define SCB_DFSR_VCATCH_Pos 3U /*!< SCB DFSR: VCATCH Position */ +#define SCB_DFSR_VCATCH_Msk (1UL << SCB_DFSR_VCATCH_Pos) /*!< SCB DFSR: VCATCH Mask */ + +#define SCB_DFSR_DWTTRAP_Pos 2U /*!< SCB DFSR: DWTTRAP Position */ +#define SCB_DFSR_DWTTRAP_Msk (1UL << SCB_DFSR_DWTTRAP_Pos) /*!< SCB DFSR: DWTTRAP Mask */ + +#define SCB_DFSR_BKPT_Pos 1U /*!< SCB DFSR: BKPT Position */ +#define SCB_DFSR_BKPT_Msk (1UL << SCB_DFSR_BKPT_Pos) /*!< SCB DFSR: BKPT Mask */ + +#define SCB_DFSR_HALTED_Pos 0U /*!< SCB DFSR: HALTED Position */ +#define SCB_DFSR_HALTED_Msk (1UL /*<< SCB_DFSR_HALTED_Pos*/) /*!< SCB DFSR: HALTED Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB) + \brief Type definitions for the System Control and ID Register not in the SCB + @{ + */ + +/** + \brief Structure type to access the System Control and ID Register not in the SCB. + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IM uint32_t ICTR; /*!< Offset: 0x004 (R/ ) Interrupt Controller Type Register */ + uint32_t RESERVED1[1U]; +} SCnSCB_Type; + +/* Interrupt Controller Type Register Definitions */ +#define SCnSCB_ICTR_INTLINESNUM_Pos 0U /*!< ICTR: INTLINESNUM Position */ +#define SCnSCB_ICTR_INTLINESNUM_Msk (0xFUL /*<< SCnSCB_ICTR_INTLINESNUM_Pos*/) /*!< ICTR: INTLINESNUM Mask */ + +/*@} end of group CMSIS_SCnotSCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick System Tick Timer (SysTick) + \brief Type definitions for the System Timer Registers. + @{ + */ + +/** + \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_ITM Instrumentation Trace Macrocell (ITM) + \brief Type definitions for the Instrumentation Trace Macrocell (ITM) + @{ + */ + +/** + \brief Structure type to access the Instrumentation Trace Macrocell Register (ITM). + */ +typedef struct +{ + __OM union + { + __OM uint8_t u8; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 8-bit */ + __OM uint16_t u16; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 16-bit */ + __OM uint32_t u32; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 32-bit */ + } PORT [32U]; /*!< Offset: 0x000 ( /W) ITM Stimulus Port Registers */ + uint32_t RESERVED0[864U]; + __IOM uint32_t TER; /*!< Offset: 0xE00 (R/W) ITM Trace Enable Register */ + uint32_t RESERVED1[15U]; + __IOM uint32_t TPR; /*!< Offset: 0xE40 (R/W) ITM Trace Privilege Register */ + uint32_t RESERVED2[15U]; + __IOM uint32_t TCR; /*!< Offset: 0xE80 (R/W) ITM Trace Control Register */ + uint32_t RESERVED3[29U]; + __OM uint32_t IWR; /*!< Offset: 0xEF8 ( /W) ITM Integration Write Register */ + __IM uint32_t IRR; /*!< Offset: 0xEFC (R/ ) ITM Integration Read Register */ + __IOM uint32_t IMCR; /*!< Offset: 0xF00 (R/W) ITM Integration Mode Control Register */ + uint32_t RESERVED4[43U]; + __OM uint32_t LAR; /*!< Offset: 0xFB0 ( /W) ITM Lock Access Register */ + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) ITM Lock Status Register */ + uint32_t RESERVED5[6U]; + __IM uint32_t PID4; /*!< Offset: 0xFD0 (R/ ) ITM Peripheral Identification Register #4 */ + __IM uint32_t PID5; /*!< Offset: 0xFD4 (R/ ) ITM Peripheral Identification Register #5 */ + __IM uint32_t PID6; /*!< Offset: 0xFD8 (R/ ) ITM Peripheral Identification Register #6 */ + __IM uint32_t PID7; /*!< Offset: 0xFDC (R/ ) ITM Peripheral Identification Register #7 */ + __IM uint32_t PID0; /*!< Offset: 0xFE0 (R/ ) ITM Peripheral Identification Register #0 */ + __IM uint32_t PID1; /*!< Offset: 0xFE4 (R/ ) ITM Peripheral Identification Register #1 */ + __IM uint32_t PID2; /*!< Offset: 0xFE8 (R/ ) ITM Peripheral Identification Register #2 */ + __IM uint32_t PID3; /*!< Offset: 0xFEC (R/ ) ITM Peripheral Identification Register #3 */ + __IM uint32_t CID0; /*!< Offset: 0xFF0 (R/ ) ITM Component Identification Register #0 */ + __IM uint32_t CID1; /*!< Offset: 0xFF4 (R/ ) ITM Component Identification Register #1 */ + __IM uint32_t CID2; /*!< Offset: 0xFF8 (R/ ) ITM Component Identification Register #2 */ + __IM uint32_t CID3; /*!< Offset: 0xFFC (R/ ) ITM Component Identification Register #3 */ +} ITM_Type; + +/* ITM Trace Privilege Register Definitions */ +#define ITM_TPR_PRIVMASK_Pos 0U /*!< ITM TPR: PRIVMASK Position */ +#define ITM_TPR_PRIVMASK_Msk (0xFUL /*<< ITM_TPR_PRIVMASK_Pos*/) /*!< ITM TPR: PRIVMASK Mask */ + +/* ITM Trace Control Register Definitions */ +#define ITM_TCR_BUSY_Pos 23U /*!< ITM TCR: BUSY Position */ +#define ITM_TCR_BUSY_Msk (1UL << ITM_TCR_BUSY_Pos) /*!< ITM TCR: BUSY Mask */ + +#define ITM_TCR_TraceBusID_Pos 16U /*!< ITM TCR: ATBID Position */ +#define ITM_TCR_TraceBusID_Msk (0x7FUL << ITM_TCR_TraceBusID_Pos) /*!< ITM TCR: ATBID Mask */ + +#define ITM_TCR_GTSFREQ_Pos 10U /*!< ITM TCR: Global timestamp frequency Position */ +#define ITM_TCR_GTSFREQ_Msk (3UL << ITM_TCR_GTSFREQ_Pos) /*!< ITM TCR: Global timestamp frequency Mask */ + +#define ITM_TCR_TSPrescale_Pos 8U /*!< ITM TCR: TSPrescale Position */ +#define ITM_TCR_TSPrescale_Msk (3UL << ITM_TCR_TSPrescale_Pos) /*!< ITM TCR: TSPrescale Mask */ + +#define ITM_TCR_SWOENA_Pos 4U /*!< ITM TCR: SWOENA Position */ +#define ITM_TCR_SWOENA_Msk (1UL << ITM_TCR_SWOENA_Pos) /*!< ITM TCR: SWOENA Mask */ + +#define ITM_TCR_DWTENA_Pos 3U /*!< ITM TCR: DWTENA Position */ +#define ITM_TCR_DWTENA_Msk (1UL << ITM_TCR_DWTENA_Pos) /*!< ITM TCR: DWTENA Mask */ + +#define ITM_TCR_SYNCENA_Pos 2U /*!< ITM TCR: SYNCENA Position */ +#define ITM_TCR_SYNCENA_Msk (1UL << ITM_TCR_SYNCENA_Pos) /*!< ITM TCR: SYNCENA Mask */ + +#define ITM_TCR_TSENA_Pos 1U /*!< ITM TCR: TSENA Position */ +#define ITM_TCR_TSENA_Msk (1UL << ITM_TCR_TSENA_Pos) /*!< ITM TCR: TSENA Mask */ + +#define ITM_TCR_ITMENA_Pos 0U /*!< ITM TCR: ITM Enable bit Position */ +#define ITM_TCR_ITMENA_Msk (1UL /*<< ITM_TCR_ITMENA_Pos*/) /*!< ITM TCR: ITM Enable bit Mask */ + +/* ITM Integration Write Register Definitions */ +#define ITM_IWR_ATVALIDM_Pos 0U /*!< ITM IWR: ATVALIDM Position */ +#define ITM_IWR_ATVALIDM_Msk (1UL /*<< ITM_IWR_ATVALIDM_Pos*/) /*!< ITM IWR: ATVALIDM Mask */ + +/* ITM Integration Read Register Definitions */ +#define ITM_IRR_ATREADYM_Pos 0U /*!< ITM IRR: ATREADYM Position */ +#define ITM_IRR_ATREADYM_Msk (1UL /*<< ITM_IRR_ATREADYM_Pos*/) /*!< ITM IRR: ATREADYM Mask */ + +/* ITM Integration Mode Control Register Definitions */ +#define ITM_IMCR_INTEGRATION_Pos 0U /*!< ITM IMCR: INTEGRATION Position */ +#define ITM_IMCR_INTEGRATION_Msk (1UL /*<< ITM_IMCR_INTEGRATION_Pos*/) /*!< ITM IMCR: INTEGRATION Mask */ + +/* ITM Lock Status Register Definitions */ +#define ITM_LSR_ByteAcc_Pos 2U /*!< ITM LSR: ByteAcc Position */ +#define ITM_LSR_ByteAcc_Msk (1UL << ITM_LSR_ByteAcc_Pos) /*!< ITM LSR: ByteAcc Mask */ + +#define ITM_LSR_Access_Pos 1U /*!< ITM LSR: Access Position */ +#define ITM_LSR_Access_Msk (1UL << ITM_LSR_Access_Pos) /*!< ITM LSR: Access Mask */ + +#define ITM_LSR_Present_Pos 0U /*!< ITM LSR: Present Position */ +#define ITM_LSR_Present_Msk (1UL /*<< ITM_LSR_Present_Pos*/) /*!< ITM LSR: Present Mask */ + +/*@}*/ /* end of group CMSIS_ITM */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DWT Data Watchpoint and Trace (DWT) + \brief Type definitions for the Data Watchpoint and Trace (DWT) + @{ + */ + +/** + \brief Structure type to access the Data Watchpoint and Trace Register (DWT). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */ + __IOM uint32_t CYCCNT; /*!< Offset: 0x004 (R/W) Cycle Count Register */ + __IOM uint32_t CPICNT; /*!< Offset: 0x008 (R/W) CPI Count Register */ + __IOM uint32_t EXCCNT; /*!< Offset: 0x00C (R/W) Exception Overhead Count Register */ + __IOM uint32_t SLEEPCNT; /*!< Offset: 0x010 (R/W) Sleep Count Register */ + __IOM uint32_t LSUCNT; /*!< Offset: 0x014 (R/W) LSU Count Register */ + __IOM uint32_t FOLDCNT; /*!< Offset: 0x018 (R/W) Folded-instruction Count Register */ + __IM uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register */ + __IOM uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */ + __IOM uint32_t MASK0; /*!< Offset: 0x024 (R/W) Mask Register 0 */ + __IOM uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */ + uint32_t RESERVED0[1U]; + __IOM uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */ + __IOM uint32_t MASK1; /*!< Offset: 0x034 (R/W) Mask Register 1 */ + __IOM uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */ + uint32_t RESERVED1[1U]; + __IOM uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */ + __IOM uint32_t MASK2; /*!< Offset: 0x044 (R/W) Mask Register 2 */ + __IOM uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */ + uint32_t RESERVED2[1U]; + __IOM uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */ + __IOM uint32_t MASK3; /*!< Offset: 0x054 (R/W) Mask Register 3 */ + __IOM uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */ +} DWT_Type; + +/* DWT Control Register Definitions */ +#define DWT_CTRL_NUMCOMP_Pos 28U /*!< DWT CTRL: NUMCOMP Position */ +#define DWT_CTRL_NUMCOMP_Msk (0xFUL << DWT_CTRL_NUMCOMP_Pos) /*!< DWT CTRL: NUMCOMP Mask */ + +#define DWT_CTRL_NOTRCPKT_Pos 27U /*!< DWT CTRL: NOTRCPKT Position */ +#define DWT_CTRL_NOTRCPKT_Msk (0x1UL << DWT_CTRL_NOTRCPKT_Pos) /*!< DWT CTRL: NOTRCPKT Mask */ + +#define DWT_CTRL_NOEXTTRIG_Pos 26U /*!< DWT CTRL: NOEXTTRIG Position */ +#define DWT_CTRL_NOEXTTRIG_Msk (0x1UL << DWT_CTRL_NOEXTTRIG_Pos) /*!< DWT CTRL: NOEXTTRIG Mask */ + +#define DWT_CTRL_NOCYCCNT_Pos 25U /*!< DWT CTRL: NOCYCCNT Position */ +#define DWT_CTRL_NOCYCCNT_Msk (0x1UL << DWT_CTRL_NOCYCCNT_Pos) /*!< DWT CTRL: NOCYCCNT Mask */ + +#define DWT_CTRL_NOPRFCNT_Pos 24U /*!< DWT CTRL: NOPRFCNT Position */ +#define DWT_CTRL_NOPRFCNT_Msk (0x1UL << DWT_CTRL_NOPRFCNT_Pos) /*!< DWT CTRL: NOPRFCNT Mask */ + +#define DWT_CTRL_CYCEVTENA_Pos 22U /*!< DWT CTRL: CYCEVTENA Position */ +#define DWT_CTRL_CYCEVTENA_Msk (0x1UL << DWT_CTRL_CYCEVTENA_Pos) /*!< DWT CTRL: CYCEVTENA Mask */ + +#define DWT_CTRL_FOLDEVTENA_Pos 21U /*!< DWT CTRL: FOLDEVTENA Position */ +#define DWT_CTRL_FOLDEVTENA_Msk (0x1UL << DWT_CTRL_FOLDEVTENA_Pos) /*!< DWT CTRL: FOLDEVTENA Mask */ + +#define DWT_CTRL_LSUEVTENA_Pos 20U /*!< DWT CTRL: LSUEVTENA Position */ +#define DWT_CTRL_LSUEVTENA_Msk (0x1UL << DWT_CTRL_LSUEVTENA_Pos) /*!< DWT CTRL: LSUEVTENA Mask */ + +#define DWT_CTRL_SLEEPEVTENA_Pos 19U /*!< DWT CTRL: SLEEPEVTENA Position */ +#define DWT_CTRL_SLEEPEVTENA_Msk (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos) /*!< DWT CTRL: SLEEPEVTENA Mask */ + +#define DWT_CTRL_EXCEVTENA_Pos 18U /*!< DWT CTRL: EXCEVTENA Position */ +#define DWT_CTRL_EXCEVTENA_Msk (0x1UL << DWT_CTRL_EXCEVTENA_Pos) /*!< DWT CTRL: EXCEVTENA Mask */ + +#define DWT_CTRL_CPIEVTENA_Pos 17U /*!< DWT CTRL: CPIEVTENA Position */ +#define DWT_CTRL_CPIEVTENA_Msk (0x1UL << DWT_CTRL_CPIEVTENA_Pos) /*!< DWT CTRL: CPIEVTENA Mask */ + +#define DWT_CTRL_EXCTRCENA_Pos 16U /*!< DWT CTRL: EXCTRCENA Position */ +#define DWT_CTRL_EXCTRCENA_Msk (0x1UL << DWT_CTRL_EXCTRCENA_Pos) /*!< DWT CTRL: EXCTRCENA Mask */ + +#define DWT_CTRL_PCSAMPLENA_Pos 12U /*!< DWT CTRL: PCSAMPLENA Position */ +#define DWT_CTRL_PCSAMPLENA_Msk (0x1UL << DWT_CTRL_PCSAMPLENA_Pos) /*!< DWT CTRL: PCSAMPLENA Mask */ + +#define DWT_CTRL_SYNCTAP_Pos 10U /*!< DWT CTRL: SYNCTAP Position */ +#define DWT_CTRL_SYNCTAP_Msk (0x3UL << DWT_CTRL_SYNCTAP_Pos) /*!< DWT CTRL: SYNCTAP Mask */ + +#define DWT_CTRL_CYCTAP_Pos 9U /*!< DWT CTRL: CYCTAP Position */ +#define DWT_CTRL_CYCTAP_Msk (0x1UL << DWT_CTRL_CYCTAP_Pos) /*!< DWT CTRL: CYCTAP Mask */ + +#define DWT_CTRL_POSTINIT_Pos 5U /*!< DWT CTRL: POSTINIT Position */ +#define DWT_CTRL_POSTINIT_Msk (0xFUL << DWT_CTRL_POSTINIT_Pos) /*!< DWT CTRL: POSTINIT Mask */ + +#define DWT_CTRL_POSTPRESET_Pos 1U /*!< DWT CTRL: POSTPRESET Position */ +#define DWT_CTRL_POSTPRESET_Msk (0xFUL << DWT_CTRL_POSTPRESET_Pos) /*!< DWT CTRL: POSTPRESET Mask */ + +#define DWT_CTRL_CYCCNTENA_Pos 0U /*!< DWT CTRL: CYCCNTENA Position */ +#define DWT_CTRL_CYCCNTENA_Msk (0x1UL /*<< DWT_CTRL_CYCCNTENA_Pos*/) /*!< DWT CTRL: CYCCNTENA Mask */ + +/* DWT CPI Count Register Definitions */ +#define DWT_CPICNT_CPICNT_Pos 0U /*!< DWT CPICNT: CPICNT Position */ +#define DWT_CPICNT_CPICNT_Msk (0xFFUL /*<< DWT_CPICNT_CPICNT_Pos*/) /*!< DWT CPICNT: CPICNT Mask */ + +/* DWT Exception Overhead Count Register Definitions */ +#define DWT_EXCCNT_EXCCNT_Pos 0U /*!< DWT EXCCNT: EXCCNT Position */ +#define DWT_EXCCNT_EXCCNT_Msk (0xFFUL /*<< DWT_EXCCNT_EXCCNT_Pos*/) /*!< DWT EXCCNT: EXCCNT Mask */ + +/* DWT Sleep Count Register Definitions */ +#define DWT_SLEEPCNT_SLEEPCNT_Pos 0U /*!< DWT SLEEPCNT: SLEEPCNT Position */ +#define DWT_SLEEPCNT_SLEEPCNT_Msk (0xFFUL /*<< DWT_SLEEPCNT_SLEEPCNT_Pos*/) /*!< DWT SLEEPCNT: SLEEPCNT Mask */ + +/* DWT LSU Count Register Definitions */ +#define DWT_LSUCNT_LSUCNT_Pos 0U /*!< DWT LSUCNT: LSUCNT Position */ +#define DWT_LSUCNT_LSUCNT_Msk (0xFFUL /*<< DWT_LSUCNT_LSUCNT_Pos*/) /*!< DWT LSUCNT: LSUCNT Mask */ + +/* DWT Folded-instruction Count Register Definitions */ +#define DWT_FOLDCNT_FOLDCNT_Pos 0U /*!< DWT FOLDCNT: FOLDCNT Position */ +#define DWT_FOLDCNT_FOLDCNT_Msk (0xFFUL /*<< DWT_FOLDCNT_FOLDCNT_Pos*/) /*!< DWT FOLDCNT: FOLDCNT Mask */ + +/* DWT Comparator Mask Register Definitions */ +#define DWT_MASK_MASK_Pos 0U /*!< DWT MASK: MASK Position */ +#define DWT_MASK_MASK_Msk (0x1FUL /*<< DWT_MASK_MASK_Pos*/) /*!< DWT MASK: MASK Mask */ + +/* DWT Comparator Function Register Definitions */ +#define DWT_FUNCTION_MATCHED_Pos 24U /*!< DWT FUNCTION: MATCHED Position */ +#define DWT_FUNCTION_MATCHED_Msk (0x1UL << DWT_FUNCTION_MATCHED_Pos) /*!< DWT FUNCTION: MATCHED Mask */ + +#define DWT_FUNCTION_DATAVADDR1_Pos 16U /*!< DWT FUNCTION: DATAVADDR1 Position */ +#define DWT_FUNCTION_DATAVADDR1_Msk (0xFUL << DWT_FUNCTION_DATAVADDR1_Pos) /*!< DWT FUNCTION: DATAVADDR1 Mask */ + +#define DWT_FUNCTION_DATAVADDR0_Pos 12U /*!< DWT FUNCTION: DATAVADDR0 Position */ +#define DWT_FUNCTION_DATAVADDR0_Msk (0xFUL << DWT_FUNCTION_DATAVADDR0_Pos) /*!< DWT FUNCTION: DATAVADDR0 Mask */ + +#define DWT_FUNCTION_DATAVSIZE_Pos 10U /*!< DWT FUNCTION: DATAVSIZE Position */ +#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */ + +#define DWT_FUNCTION_LNK1ENA_Pos 9U /*!< DWT FUNCTION: LNK1ENA Position */ +#define DWT_FUNCTION_LNK1ENA_Msk (0x1UL << DWT_FUNCTION_LNK1ENA_Pos) /*!< DWT FUNCTION: LNK1ENA Mask */ + +#define DWT_FUNCTION_DATAVMATCH_Pos 8U /*!< DWT FUNCTION: DATAVMATCH Position */ +#define DWT_FUNCTION_DATAVMATCH_Msk (0x1UL << DWT_FUNCTION_DATAVMATCH_Pos) /*!< DWT FUNCTION: DATAVMATCH Mask */ + +#define DWT_FUNCTION_CYCMATCH_Pos 7U /*!< DWT FUNCTION: CYCMATCH Position */ +#define DWT_FUNCTION_CYCMATCH_Msk (0x1UL << DWT_FUNCTION_CYCMATCH_Pos) /*!< DWT FUNCTION: CYCMATCH Mask */ + +#define DWT_FUNCTION_EMITRANGE_Pos 5U /*!< DWT FUNCTION: EMITRANGE Position */ +#define DWT_FUNCTION_EMITRANGE_Msk (0x1UL << DWT_FUNCTION_EMITRANGE_Pos) /*!< DWT FUNCTION: EMITRANGE Mask */ + +#define DWT_FUNCTION_FUNCTION_Pos 0U /*!< DWT FUNCTION: FUNCTION Position */ +#define DWT_FUNCTION_FUNCTION_Msk (0xFUL /*<< DWT_FUNCTION_FUNCTION_Pos*/) /*!< DWT FUNCTION: FUNCTION Mask */ + +/*@}*/ /* end of group CMSIS_DWT */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_TPI Trace Port Interface (TPI) + \brief Type definitions for the Trace Port Interface (TPI) + @{ + */ + +/** + \brief Structure type to access the Trace Port Interface Register (TPI). + */ +typedef struct +{ + __IM uint32_t SSPSR; /*!< Offset: 0x000 (R/ ) Supported Parallel Port Size Register */ + __IOM uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Size Register */ + uint32_t RESERVED0[2U]; + __IOM uint32_t ACPR; /*!< Offset: 0x010 (R/W) Asynchronous Clock Prescaler Register */ + uint32_t RESERVED1[55U]; + __IOM uint32_t SPPR; /*!< Offset: 0x0F0 (R/W) Selected Pin Protocol Register */ + uint32_t RESERVED2[131U]; + __IM uint32_t FFSR; /*!< Offset: 0x300 (R/ ) Formatter and Flush Status Register */ + __IOM uint32_t FFCR; /*!< Offset: 0x304 (R/W) Formatter and Flush Control Register */ + __IM uint32_t FSCR; /*!< Offset: 0x308 (R/ ) Formatter Synchronization Counter Register */ + uint32_t RESERVED3[759U]; + __IM uint32_t TRIGGER; /*!< Offset: 0xEE8 (R/ ) TRIGGER Register */ + __IM uint32_t FIFO0; /*!< Offset: 0xEEC (R/ ) Integration ETM Data */ + __IM uint32_t ITATBCTR2; /*!< Offset: 0xEF0 (R/ ) ITATBCTR2 */ + uint32_t RESERVED4[1U]; + __IM uint32_t ITATBCTR0; /*!< Offset: 0xEF8 (R/ ) ITATBCTR0 */ + __IM uint32_t FIFO1; /*!< Offset: 0xEFC (R/ ) Integration ITM Data */ + __IOM uint32_t ITCTRL; /*!< Offset: 0xF00 (R/W) Integration Mode Control */ + uint32_t RESERVED5[39U]; + __IOM uint32_t CLAIMSET; /*!< Offset: 0xFA0 (R/W) Claim tag set */ + __IOM uint32_t CLAIMCLR; /*!< Offset: 0xFA4 (R/W) Claim tag clear */ + uint32_t RESERVED7[8U]; + __IM uint32_t DEVID; /*!< Offset: 0xFC8 (R/ ) TPIU_DEVID */ + __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) TPIU_DEVTYPE */ +} TPI_Type; + +/* TPI Asynchronous Clock Prescaler Register Definitions */ +#define TPI_ACPR_PRESCALER_Pos 0U /*!< TPI ACPR: PRESCALER Position */ +#define TPI_ACPR_PRESCALER_Msk (0x1FFFUL /*<< TPI_ACPR_PRESCALER_Pos*/) /*!< TPI ACPR: PRESCALER Mask */ + +/* TPI Selected Pin Protocol Register Definitions */ +#define TPI_SPPR_TXMODE_Pos 0U /*!< TPI SPPR: TXMODE Position */ +#define TPI_SPPR_TXMODE_Msk (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/) /*!< TPI SPPR: TXMODE Mask */ + +/* TPI Formatter and Flush Status Register Definitions */ +#define TPI_FFSR_FtNonStop_Pos 3U /*!< TPI FFSR: FtNonStop Position */ +#define TPI_FFSR_FtNonStop_Msk (0x1UL << TPI_FFSR_FtNonStop_Pos) /*!< TPI FFSR: FtNonStop Mask */ + +#define TPI_FFSR_TCPresent_Pos 2U /*!< TPI FFSR: TCPresent Position */ +#define TPI_FFSR_TCPresent_Msk (0x1UL << TPI_FFSR_TCPresent_Pos) /*!< TPI FFSR: TCPresent Mask */ + +#define TPI_FFSR_FtStopped_Pos 1U /*!< TPI FFSR: FtStopped Position */ +#define TPI_FFSR_FtStopped_Msk (0x1UL << TPI_FFSR_FtStopped_Pos) /*!< TPI FFSR: FtStopped Mask */ + +#define TPI_FFSR_FlInProg_Pos 0U /*!< TPI FFSR: FlInProg Position */ +#define TPI_FFSR_FlInProg_Msk (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/) /*!< TPI FFSR: FlInProg Mask */ + +/* TPI Formatter and Flush Control Register Definitions */ +#define TPI_FFCR_TrigIn_Pos 8U /*!< TPI FFCR: TrigIn Position */ +#define TPI_FFCR_TrigIn_Msk (0x1UL << TPI_FFCR_TrigIn_Pos) /*!< TPI FFCR: TrigIn Mask */ + +#define TPI_FFCR_EnFCont_Pos 1U /*!< TPI FFCR: EnFCont Position */ +#define TPI_FFCR_EnFCont_Msk (0x1UL << TPI_FFCR_EnFCont_Pos) /*!< TPI FFCR: EnFCont Mask */ + +/* TPI TRIGGER Register Definitions */ +#define TPI_TRIGGER_TRIGGER_Pos 0U /*!< TPI TRIGGER: TRIGGER Position */ +#define TPI_TRIGGER_TRIGGER_Msk (0x1UL /*<< TPI_TRIGGER_TRIGGER_Pos*/) /*!< TPI TRIGGER: TRIGGER Mask */ + +/* TPI Integration ETM Data Register Definitions (FIFO0) */ +#define TPI_FIFO0_ITM_ATVALID_Pos 29U /*!< TPI FIFO0: ITM_ATVALID Position */ +#define TPI_FIFO0_ITM_ATVALID_Msk (0x3UL << TPI_FIFO0_ITM_ATVALID_Pos) /*!< TPI FIFO0: ITM_ATVALID Mask */ + +#define TPI_FIFO0_ITM_bytecount_Pos 27U /*!< TPI FIFO0: ITM_bytecount Position */ +#define TPI_FIFO0_ITM_bytecount_Msk (0x3UL << TPI_FIFO0_ITM_bytecount_Pos) /*!< TPI FIFO0: ITM_bytecount Mask */ + +#define TPI_FIFO0_ETM_ATVALID_Pos 26U /*!< TPI FIFO0: ETM_ATVALID Position */ +#define TPI_FIFO0_ETM_ATVALID_Msk (0x3UL << TPI_FIFO0_ETM_ATVALID_Pos) /*!< TPI FIFO0: ETM_ATVALID Mask */ + +#define TPI_FIFO0_ETM_bytecount_Pos 24U /*!< TPI FIFO0: ETM_bytecount Position */ +#define TPI_FIFO0_ETM_bytecount_Msk (0x3UL << TPI_FIFO0_ETM_bytecount_Pos) /*!< TPI FIFO0: ETM_bytecount Mask */ + +#define TPI_FIFO0_ETM2_Pos 16U /*!< TPI FIFO0: ETM2 Position */ +#define TPI_FIFO0_ETM2_Msk (0xFFUL << TPI_FIFO0_ETM2_Pos) /*!< TPI FIFO0: ETM2 Mask */ + +#define TPI_FIFO0_ETM1_Pos 8U /*!< TPI FIFO0: ETM1 Position */ +#define TPI_FIFO0_ETM1_Msk (0xFFUL << TPI_FIFO0_ETM1_Pos) /*!< TPI FIFO0: ETM1 Mask */ + +#define TPI_FIFO0_ETM0_Pos 0U /*!< TPI FIFO0: ETM0 Position */ +#define TPI_FIFO0_ETM0_Msk (0xFFUL /*<< TPI_FIFO0_ETM0_Pos*/) /*!< TPI FIFO0: ETM0 Mask */ + +/* TPI ITATBCTR2 Register Definitions */ +#define TPI_ITATBCTR2_ATREADY2_Pos 0U /*!< TPI ITATBCTR2: ATREADY2 Position */ +#define TPI_ITATBCTR2_ATREADY2_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY2_Pos*/) /*!< TPI ITATBCTR2: ATREADY2 Mask */ + +#define TPI_ITATBCTR2_ATREADY1_Pos 0U /*!< TPI ITATBCTR2: ATREADY1 Position */ +#define TPI_ITATBCTR2_ATREADY1_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY1_Pos*/) /*!< TPI ITATBCTR2: ATREADY1 Mask */ + +/* TPI Integration ITM Data Register Definitions (FIFO1) */ +#define TPI_FIFO1_ITM_ATVALID_Pos 29U /*!< TPI FIFO1: ITM_ATVALID Position */ +#define TPI_FIFO1_ITM_ATVALID_Msk (0x3UL << TPI_FIFO1_ITM_ATVALID_Pos) /*!< TPI FIFO1: ITM_ATVALID Mask */ + +#define TPI_FIFO1_ITM_bytecount_Pos 27U /*!< TPI FIFO1: ITM_bytecount Position */ +#define TPI_FIFO1_ITM_bytecount_Msk (0x3UL << TPI_FIFO1_ITM_bytecount_Pos) /*!< TPI FIFO1: ITM_bytecount Mask */ + +#define TPI_FIFO1_ETM_ATVALID_Pos 26U /*!< TPI FIFO1: ETM_ATVALID Position */ +#define TPI_FIFO1_ETM_ATVALID_Msk (0x3UL << TPI_FIFO1_ETM_ATVALID_Pos) /*!< TPI FIFO1: ETM_ATVALID Mask */ + +#define TPI_FIFO1_ETM_bytecount_Pos 24U /*!< TPI FIFO1: ETM_bytecount Position */ +#define TPI_FIFO1_ETM_bytecount_Msk (0x3UL << TPI_FIFO1_ETM_bytecount_Pos) /*!< TPI FIFO1: ETM_bytecount Mask */ + +#define TPI_FIFO1_ITM2_Pos 16U /*!< TPI FIFO1: ITM2 Position */ +#define TPI_FIFO1_ITM2_Msk (0xFFUL << TPI_FIFO1_ITM2_Pos) /*!< TPI FIFO1: ITM2 Mask */ + +#define TPI_FIFO1_ITM1_Pos 8U /*!< TPI FIFO1: ITM1 Position */ +#define TPI_FIFO1_ITM1_Msk (0xFFUL << TPI_FIFO1_ITM1_Pos) /*!< TPI FIFO1: ITM1 Mask */ + +#define TPI_FIFO1_ITM0_Pos 0U /*!< TPI FIFO1: ITM0 Position */ +#define TPI_FIFO1_ITM0_Msk (0xFFUL /*<< TPI_FIFO1_ITM0_Pos*/) /*!< TPI FIFO1: ITM0 Mask */ + +/* TPI ITATBCTR0 Register Definitions */ +#define TPI_ITATBCTR0_ATREADY2_Pos 0U /*!< TPI ITATBCTR0: ATREADY2 Position */ +#define TPI_ITATBCTR0_ATREADY2_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY2_Pos*/) /*!< TPI ITATBCTR0: ATREADY2 Mask */ + +#define TPI_ITATBCTR0_ATREADY1_Pos 0U /*!< TPI ITATBCTR0: ATREADY1 Position */ +#define TPI_ITATBCTR0_ATREADY1_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY1_Pos*/) /*!< TPI ITATBCTR0: ATREADY1 Mask */ + +/* TPI Integration Mode Control Register Definitions */ +#define TPI_ITCTRL_Mode_Pos 0U /*!< TPI ITCTRL: Mode Position */ +#define TPI_ITCTRL_Mode_Msk (0x3UL /*<< TPI_ITCTRL_Mode_Pos*/) /*!< TPI ITCTRL: Mode Mask */ + +/* TPI DEVID Register Definitions */ +#define TPI_DEVID_NRZVALID_Pos 11U /*!< TPI DEVID: NRZVALID Position */ +#define TPI_DEVID_NRZVALID_Msk (0x1UL << TPI_DEVID_NRZVALID_Pos) /*!< TPI DEVID: NRZVALID Mask */ + +#define TPI_DEVID_MANCVALID_Pos 10U /*!< TPI DEVID: MANCVALID Position */ +#define TPI_DEVID_MANCVALID_Msk (0x1UL << TPI_DEVID_MANCVALID_Pos) /*!< TPI DEVID: MANCVALID Mask */ + +#define TPI_DEVID_PTINVALID_Pos 9U /*!< TPI DEVID: PTINVALID Position */ +#define TPI_DEVID_PTINVALID_Msk (0x1UL << TPI_DEVID_PTINVALID_Pos) /*!< TPI DEVID: PTINVALID Mask */ + +#define TPI_DEVID_MinBufSz_Pos 6U /*!< TPI DEVID: MinBufSz Position */ +#define TPI_DEVID_MinBufSz_Msk (0x7UL << TPI_DEVID_MinBufSz_Pos) /*!< TPI DEVID: MinBufSz Mask */ + +#define TPI_DEVID_AsynClkIn_Pos 5U /*!< TPI DEVID: AsynClkIn Position */ +#define TPI_DEVID_AsynClkIn_Msk (0x1UL << TPI_DEVID_AsynClkIn_Pos) /*!< TPI DEVID: AsynClkIn Mask */ + +#define TPI_DEVID_NrTraceInput_Pos 0U /*!< TPI DEVID: NrTraceInput Position */ +#define TPI_DEVID_NrTraceInput_Msk (0x1FUL /*<< TPI_DEVID_NrTraceInput_Pos*/) /*!< TPI DEVID: NrTraceInput Mask */ + +/* TPI DEVTYPE Register Definitions */ +#define TPI_DEVTYPE_SubType_Pos 4U /*!< TPI DEVTYPE: SubType Position */ +#define TPI_DEVTYPE_SubType_Msk (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/) /*!< TPI DEVTYPE: SubType Mask */ + +#define TPI_DEVTYPE_MajorType_Pos 0U /*!< TPI DEVTYPE: MajorType Position */ +#define TPI_DEVTYPE_MajorType_Msk (0xFUL << TPI_DEVTYPE_MajorType_Pos) /*!< TPI DEVTYPE: MajorType Mask */ + +/*@}*/ /* end of group CMSIS_TPI */ + + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_MPU Memory Protection Unit (MPU) + \brief Type definitions for the Memory Protection Unit (MPU) + @{ + */ + +/** + \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region RNRber Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IOM uint32_t RASR; /*!< Offset: 0x010 (R/W) MPU Region Attribute and Size Register */ + __IOM uint32_t RBAR_A1; /*!< Offset: 0x014 (R/W) MPU Alias 1 Region Base Address Register */ + __IOM uint32_t RASR_A1; /*!< Offset: 0x018 (R/W) MPU Alias 1 Region Attribute and Size Register */ + __IOM uint32_t RBAR_A2; /*!< Offset: 0x01C (R/W) MPU Alias 2 Region Base Address Register */ + __IOM uint32_t RASR_A2; /*!< Offset: 0x020 (R/W) MPU Alias 2 Region Attribute and Size Register */ + __IOM uint32_t RBAR_A3; /*!< Offset: 0x024 (R/W) MPU Alias 3 Region Base Address Register */ + __IOM uint32_t RASR_A3; /*!< Offset: 0x028 (R/W) MPU Alias 3 Region Attribute and Size Register */ +} MPU_Type; + +/* MPU Type Register Definitions */ +#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register Definitions */ +#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register Definitions */ +#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register Definitions */ +#define MPU_RBAR_ADDR_Pos 5U /*!< MPU RBAR: ADDR Position */ +#define MPU_RBAR_ADDR_Msk (0x7FFFFFFUL << MPU_RBAR_ADDR_Pos) /*!< MPU RBAR: ADDR Mask */ + +#define MPU_RBAR_VALID_Pos 4U /*!< MPU RBAR: VALID Position */ +#define MPU_RBAR_VALID_Msk (1UL << MPU_RBAR_VALID_Pos) /*!< MPU RBAR: VALID Mask */ + +#define MPU_RBAR_REGION_Pos 0U /*!< MPU RBAR: REGION Position */ +#define MPU_RBAR_REGION_Msk (0xFUL /*<< MPU_RBAR_REGION_Pos*/) /*!< MPU RBAR: REGION Mask */ + +/* MPU Region Attribute and Size Register Definitions */ +#define MPU_RASR_ATTRS_Pos 16U /*!< MPU RASR: MPU Region Attribute field Position */ +#define MPU_RASR_ATTRS_Msk (0xFFFFUL << MPU_RASR_ATTRS_Pos) /*!< MPU RASR: MPU Region Attribute field Mask */ + +#define MPU_RASR_XN_Pos 28U /*!< MPU RASR: ATTRS.XN Position */ +#define MPU_RASR_XN_Msk (1UL << MPU_RASR_XN_Pos) /*!< MPU RASR: ATTRS.XN Mask */ + +#define MPU_RASR_AP_Pos 24U /*!< MPU RASR: ATTRS.AP Position */ +#define MPU_RASR_AP_Msk (0x7UL << MPU_RASR_AP_Pos) /*!< MPU RASR: ATTRS.AP Mask */ + +#define MPU_RASR_TEX_Pos 19U /*!< MPU RASR: ATTRS.TEX Position */ +#define MPU_RASR_TEX_Msk (0x7UL << MPU_RASR_TEX_Pos) /*!< MPU RASR: ATTRS.TEX Mask */ + +#define MPU_RASR_S_Pos 18U /*!< MPU RASR: ATTRS.S Position */ +#define MPU_RASR_S_Msk (1UL << MPU_RASR_S_Pos) /*!< MPU RASR: ATTRS.S Mask */ + +#define MPU_RASR_C_Pos 17U /*!< MPU RASR: ATTRS.C Position */ +#define MPU_RASR_C_Msk (1UL << MPU_RASR_C_Pos) /*!< MPU RASR: ATTRS.C Mask */ + +#define MPU_RASR_B_Pos 16U /*!< MPU RASR: ATTRS.B Position */ +#define MPU_RASR_B_Msk (1UL << MPU_RASR_B_Pos) /*!< MPU RASR: ATTRS.B Mask */ + +#define MPU_RASR_SRD_Pos 8U /*!< MPU RASR: Sub-Region Disable Position */ +#define MPU_RASR_SRD_Msk (0xFFUL << MPU_RASR_SRD_Pos) /*!< MPU RASR: Sub-Region Disable Mask */ + +#define MPU_RASR_SIZE_Pos 1U /*!< MPU RASR: Region Size Field Position */ +#define MPU_RASR_SIZE_Msk (0x1FUL << MPU_RASR_SIZE_Pos) /*!< MPU RASR: Region Size Field Mask */ + +#define MPU_RASR_ENABLE_Pos 0U /*!< MPU RASR: Region enable bit Position */ +#define MPU_RASR_ENABLE_Msk (1UL /*<< MPU_RASR_ENABLE_Pos*/) /*!< MPU RASR: Region enable bit Disable Mask */ + +/*@} end of group CMSIS_MPU */ +#endif + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Type definitions for the Core Debug Registers + @{ + */ + +/** + \brief Structure type to access the Core Debug Register (CoreDebug). + */ +typedef struct +{ + __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ +} CoreDebug_Type; + +/* Debug Halting Control and Status Register Definitions */ +#define CoreDebug_DHCSR_DBGKEY_Pos 16U /*!< CoreDebug DHCSR: DBGKEY Position */ +#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< CoreDebug DHCSR: DBGKEY Mask */ + +#define CoreDebug_DHCSR_S_RESET_ST_Pos 25U /*!< CoreDebug DHCSR: S_RESET_ST Position */ +#define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< CoreDebug DHCSR: S_RESET_ST Mask */ + +#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24U /*!< CoreDebug DHCSR: S_RETIRE_ST Position */ +#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */ + +#define CoreDebug_DHCSR_S_LOCKUP_Pos 19U /*!< CoreDebug DHCSR: S_LOCKUP Position */ +#define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< CoreDebug DHCSR: S_LOCKUP Mask */ + +#define CoreDebug_DHCSR_S_SLEEP_Pos 18U /*!< CoreDebug DHCSR: S_SLEEP Position */ +#define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< CoreDebug DHCSR: S_SLEEP Mask */ + +#define CoreDebug_DHCSR_S_HALT_Pos 17U /*!< CoreDebug DHCSR: S_HALT Position */ +#define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< CoreDebug DHCSR: S_HALT Mask */ + +#define CoreDebug_DHCSR_S_REGRDY_Pos 16U /*!< CoreDebug DHCSR: S_REGRDY Position */ +#define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< CoreDebug DHCSR: S_REGRDY Mask */ + +#define CoreDebug_DHCSR_C_SNAPSTALL_Pos 5U /*!< CoreDebug DHCSR: C_SNAPSTALL Position */ +#define CoreDebug_DHCSR_C_SNAPSTALL_Msk (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos) /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */ + +#define CoreDebug_DHCSR_C_MASKINTS_Pos 3U /*!< CoreDebug DHCSR: C_MASKINTS Position */ +#define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< CoreDebug DHCSR: C_MASKINTS Mask */ + +#define CoreDebug_DHCSR_C_STEP_Pos 2U /*!< CoreDebug DHCSR: C_STEP Position */ +#define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< CoreDebug DHCSR: C_STEP Mask */ + +#define CoreDebug_DHCSR_C_HALT_Pos 1U /*!< CoreDebug DHCSR: C_HALT Position */ +#define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< CoreDebug DHCSR: C_HALT Mask */ + +#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0U /*!< CoreDebug DHCSR: C_DEBUGEN Position */ +#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/) /*!< CoreDebug DHCSR: C_DEBUGEN Mask */ + +/* Debug Core Register Selector Register Definitions */ +#define CoreDebug_DCRSR_REGWnR_Pos 16U /*!< CoreDebug DCRSR: REGWnR Position */ +#define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< CoreDebug DCRSR: REGWnR Mask */ + +#define CoreDebug_DCRSR_REGSEL_Pos 0U /*!< CoreDebug DCRSR: REGSEL Position */ +#define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/) /*!< CoreDebug DCRSR: REGSEL Mask */ + +/* Debug Exception and Monitor Control Register Definitions */ +#define CoreDebug_DEMCR_TRCENA_Pos 24U /*!< CoreDebug DEMCR: TRCENA Position */ +#define CoreDebug_DEMCR_TRCENA_Msk (1UL << CoreDebug_DEMCR_TRCENA_Pos) /*!< CoreDebug DEMCR: TRCENA Mask */ + +#define CoreDebug_DEMCR_MON_REQ_Pos 19U /*!< CoreDebug DEMCR: MON_REQ Position */ +#define CoreDebug_DEMCR_MON_REQ_Msk (1UL << CoreDebug_DEMCR_MON_REQ_Pos) /*!< CoreDebug DEMCR: MON_REQ Mask */ + +#define CoreDebug_DEMCR_MON_STEP_Pos 18U /*!< CoreDebug DEMCR: MON_STEP Position */ +#define CoreDebug_DEMCR_MON_STEP_Msk (1UL << CoreDebug_DEMCR_MON_STEP_Pos) /*!< CoreDebug DEMCR: MON_STEP Mask */ + +#define CoreDebug_DEMCR_MON_PEND_Pos 17U /*!< CoreDebug DEMCR: MON_PEND Position */ +#define CoreDebug_DEMCR_MON_PEND_Msk (1UL << CoreDebug_DEMCR_MON_PEND_Pos) /*!< CoreDebug DEMCR: MON_PEND Mask */ + +#define CoreDebug_DEMCR_MON_EN_Pos 16U /*!< CoreDebug DEMCR: MON_EN Position */ +#define CoreDebug_DEMCR_MON_EN_Msk (1UL << CoreDebug_DEMCR_MON_EN_Pos) /*!< CoreDebug DEMCR: MON_EN Mask */ + +#define CoreDebug_DEMCR_VC_HARDERR_Pos 10U /*!< CoreDebug DEMCR: VC_HARDERR Position */ +#define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< CoreDebug DEMCR: VC_HARDERR Mask */ + +#define CoreDebug_DEMCR_VC_INTERR_Pos 9U /*!< CoreDebug DEMCR: VC_INTERR Position */ +#define CoreDebug_DEMCR_VC_INTERR_Msk (1UL << CoreDebug_DEMCR_VC_INTERR_Pos) /*!< CoreDebug DEMCR: VC_INTERR Mask */ + +#define CoreDebug_DEMCR_VC_BUSERR_Pos 8U /*!< CoreDebug DEMCR: VC_BUSERR Position */ +#define CoreDebug_DEMCR_VC_BUSERR_Msk (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos) /*!< CoreDebug DEMCR: VC_BUSERR Mask */ + +#define CoreDebug_DEMCR_VC_STATERR_Pos 7U /*!< CoreDebug DEMCR: VC_STATERR Position */ +#define CoreDebug_DEMCR_VC_STATERR_Msk (1UL << CoreDebug_DEMCR_VC_STATERR_Pos) /*!< CoreDebug DEMCR: VC_STATERR Mask */ + +#define CoreDebug_DEMCR_VC_CHKERR_Pos 6U /*!< CoreDebug DEMCR: VC_CHKERR Position */ +#define CoreDebug_DEMCR_VC_CHKERR_Msk (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos) /*!< CoreDebug DEMCR: VC_CHKERR Mask */ + +#define CoreDebug_DEMCR_VC_NOCPERR_Pos 5U /*!< CoreDebug DEMCR: VC_NOCPERR Position */ +#define CoreDebug_DEMCR_VC_NOCPERR_Msk (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos) /*!< CoreDebug DEMCR: VC_NOCPERR Mask */ + +#define CoreDebug_DEMCR_VC_MMERR_Pos 4U /*!< CoreDebug DEMCR: VC_MMERR Position */ +#define CoreDebug_DEMCR_VC_MMERR_Msk (1UL << CoreDebug_DEMCR_VC_MMERR_Pos) /*!< CoreDebug DEMCR: VC_MMERR Mask */ + +#define CoreDebug_DEMCR_VC_CORERESET_Pos 0U /*!< CoreDebug DEMCR: VC_CORERESET Position */ +#define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/) /*!< CoreDebug DEMCR: VC_CORERESET Mask */ + +/*@} end of group CMSIS_CoreDebug */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_bitfield Core register bit field macros + \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk). + @{ + */ + +/** + \brief Mask and shift a bit field value for use in a register bit range. + \param[in] field Name of the register bit field. + \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk) + +/** + \brief Mask and shift a register value to extract a bit filed value. + \param[in] field Name of the register bit field. + \param[in] value Value of register. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos) + +/*@} end of group CMSIS_core_bitfield */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_base Core Definitions + \brief Definitions for base addresses, unions, and structures. + @{ + */ + +/* Memory mapping of Core Hardware */ +#define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ +#define ITM_BASE (0xE0000000UL) /*!< ITM Base Address */ +#define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */ +#define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */ +#define CoreDebug_BASE (0xE000EDF0UL) /*!< Core Debug Base Address */ +#define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ +#define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ +#define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + +#define SCnSCB ((SCnSCB_Type *) SCS_BASE ) /*!< System control Register not in SCB */ +#define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ +#define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ +#define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ +#define ITM ((ITM_Type *) ITM_BASE ) /*!< ITM configuration struct */ +#define DWT ((DWT_Type *) DWT_BASE ) /*!< DWT configuration struct */ +#define TPI ((TPI_Type *) TPI_BASE ) /*!< TPI configuration struct */ +#define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE) /*!< Core Debug configuration struct */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ +#endif + +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Debug Functions + - Core Register Access Functions + ******************************************************************************/ +/** + \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +*/ + + + +/* ########################## NVIC functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions NVIC Functions + \brief Functions that manage interrupts and exceptions via the NVIC. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping + #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ + #define NVIC_GetActive __NVIC_GetActive + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* The following EXC_RETURN values are saved the LR on exception entry */ +#define EXC_RETURN_HANDLER (0xFFFFFFF1UL) /* return to Handler mode, uses MSP after return */ +#define EXC_RETURN_THREAD_MSP (0xFFFFFFF9UL) /* return to Thread mode, uses MSP after return */ +#define EXC_RETURN_THREAD_PSP (0xFFFFFFFDUL) /* return to Thread mode, uses PSP after return */ + + + +/** + \brief Set Priority Grouping + \details Sets the priority grouping field using the required unlock sequence. + The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. + Only values from 0..7 are used. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + + reg_value = SCB->AIRCR; /* read old register configuration */ + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << 8U) ); /* Insert write key and priorty group */ + SCB->AIRCR = reg_value; +} + + +/** + \brief Get Priority Grouping + \details Reads the priority grouping field from the NVIC Interrupt Controller. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void) +{ + return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); +} + + +/** + \brief Enable Interrupt + \details Enables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt + \details Reads the active register in the NVIC and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every processor exception. + */ +__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IP[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } + else + { + SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. + Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return(((uint32_t)NVIC->IP[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return(((uint32_t)SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Encode Priority + \details Encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + +/** + \brief Decode Priority + \details Decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + VTOR must been relocated to SRAM before. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | + SCB_AIRCR_SYSRESETREQ_Msk ); /* Keep priority group unchanged */ + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +/*@} end of CMSIS_Core_NVICFunctions */ + + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + return 0U; /* No FPU */ +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U) + +/** + \brief System Tick Configuration + \details Initializes the System Timer and its interrupt, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + +/* ##################################### Debug In/Output function ########################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_core_DebugFunctions ITM Functions + \brief Functions that access the ITM debug interface. + @{ + */ + +extern volatile int32_t ITM_RxBuffer; /*!< External variable to receive characters. */ +#define ITM_RXBUFFER_EMPTY ((int32_t)0x5AA55AA5U) /*!< Value identifying \ref ITM_RxBuffer is ready for next character. */ + + +/** + \brief ITM Send Character + \details Transmits a character via the ITM channel 0, and + \li Just returns when no debugger is connected that has booked the output. + \li Is blocking when a debugger is connected, but the previous character sent has not been transmitted. + \param [in] ch Character to transmit. + \returns Character to transmit. + */ +__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch) +{ + if (((ITM->TCR & ITM_TCR_ITMENA_Msk) != 0UL) && /* ITM enabled */ + ((ITM->TER & 1UL ) != 0UL) ) /* ITM Port #0 enabled */ + { + while (ITM->PORT[0U].u32 == 0UL) + { + __NOP(); + } + ITM->PORT[0U].u8 = (uint8_t)ch; + } + return (ch); +} + + +/** + \brief ITM Receive Character + \details Inputs a character via the external variable \ref ITM_RxBuffer. + \return Received character. + \return -1 No character pending. + */ +__STATIC_INLINE int32_t ITM_ReceiveChar (void) +{ + int32_t ch = -1; /* no character available */ + + if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY) + { + ch = ITM_RxBuffer; + ITM_RxBuffer = ITM_RXBUFFER_EMPTY; /* ready for next character */ + } + + return (ch); +} + + +/** + \brief ITM Check Character + \details Checks whether a character is pending for reading in the variable \ref ITM_RxBuffer. + \return 0 No character available. + \return 1 Character available. + */ +__STATIC_INLINE int32_t ITM_CheckChar (void) +{ + + if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY) + { + return (0); /* no character available */ + } + else + { + return (1); /* character available */ + } +} + +/*@} end of CMSIS_core_DebugFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_SC300_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/Include/mpu_armv7.h b/Drivers/CMSIS/Include/mpu_armv7.h similarity index 100% rename from HAL_N_Middlewares/Drivers/CMSIS/Include/mpu_armv7.h rename to Drivers/CMSIS/Include/mpu_armv7.h diff --git a/Drivers/CMSIS/Include/mpu_armv8.h b/Drivers/CMSIS/Include/mpu_armv8.h new file mode 100644 index 0000000..62571da --- /dev/null +++ b/Drivers/CMSIS/Include/mpu_armv8.h @@ -0,0 +1,333 @@ +/****************************************************************************** + * @file mpu_armv8.h + * @brief CMSIS MPU API for Armv8-M MPU + * @version V5.0.4 + * @date 10. January 2018 + ******************************************************************************/ +/* + * Copyright (c) 2017-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef ARM_MPU_ARMV8_H +#define ARM_MPU_ARMV8_H + +/** \brief Attribute for device memory (outer only) */ +#define ARM_MPU_ATTR_DEVICE ( 0U ) + +/** \brief Attribute for non-cacheable, normal memory */ +#define ARM_MPU_ATTR_NON_CACHEABLE ( 4U ) + +/** \brief Attribute for normal memory (outer and inner) +* \param NT Non-Transient: Set to 1 for non-transient data. +* \param WB Write-Back: Set to 1 to use write-back update policy. +* \param RA Read Allocation: Set to 1 to use cache allocation on read miss. +* \param WA Write Allocation: Set to 1 to use cache allocation on write miss. +*/ +#define ARM_MPU_ATTR_MEMORY_(NT, WB, RA, WA) \ + (((NT & 1U) << 3U) | ((WB & 1U) << 2U) | ((RA & 1U) << 1U) | (WA & 1U)) + +/** \brief Device memory type non Gathering, non Re-ordering, non Early Write Acknowledgement */ +#define ARM_MPU_ATTR_DEVICE_nGnRnE (0U) + +/** \brief Device memory type non Gathering, non Re-ordering, Early Write Acknowledgement */ +#define ARM_MPU_ATTR_DEVICE_nGnRE (1U) + +/** \brief Device memory type non Gathering, Re-ordering, Early Write Acknowledgement */ +#define ARM_MPU_ATTR_DEVICE_nGRE (2U) + +/** \brief Device memory type Gathering, Re-ordering, Early Write Acknowledgement */ +#define ARM_MPU_ATTR_DEVICE_GRE (3U) + +/** \brief Memory Attribute +* \param O Outer memory attributes +* \param I O == ARM_MPU_ATTR_DEVICE: Device memory attributes, else: Inner memory attributes +*/ +#define ARM_MPU_ATTR(O, I) (((O & 0xFU) << 4U) | (((O & 0xFU) != 0U) ? (I & 0xFU) : ((I & 0x3U) << 2U))) + +/** \brief Normal memory non-shareable */ +#define ARM_MPU_SH_NON (0U) + +/** \brief Normal memory outer shareable */ +#define ARM_MPU_SH_OUTER (2U) + +/** \brief Normal memory inner shareable */ +#define ARM_MPU_SH_INNER (3U) + +/** \brief Memory access permissions +* \param RO Read-Only: Set to 1 for read-only memory. +* \param NP Non-Privileged: Set to 1 for non-privileged memory. +*/ +#define ARM_MPU_AP_(RO, NP) (((RO & 1U) << 1U) | (NP & 1U)) + +/** \brief Region Base Address Register value +* \param BASE The base address bits [31:5] of a memory region. The value is zero extended. Effective address gets 32 byte aligned. +* \param SH Defines the Shareability domain for this memory region. +* \param RO Read-Only: Set to 1 for a read-only memory region. +* \param NP Non-Privileged: Set to 1 for a non-privileged memory region. +* \oaram XN eXecute Never: Set to 1 for a non-executable memory region. +*/ +#define ARM_MPU_RBAR(BASE, SH, RO, NP, XN) \ + ((BASE & MPU_RBAR_BASE_Msk) | \ + ((SH << MPU_RBAR_SH_Pos) & MPU_RBAR_SH_Msk) | \ + ((ARM_MPU_AP_(RO, NP) << MPU_RBAR_AP_Pos) & MPU_RBAR_AP_Msk) | \ + ((XN << MPU_RBAR_XN_Pos) & MPU_RBAR_XN_Msk)) + +/** \brief Region Limit Address Register value +* \param LIMIT The limit address bits [31:5] for this memory region. The value is one extended. +* \param IDX The attribute index to be associated with this memory region. +*/ +#define ARM_MPU_RLAR(LIMIT, IDX) \ + ((LIMIT & MPU_RLAR_LIMIT_Msk) | \ + ((IDX << MPU_RLAR_AttrIndx_Pos) & MPU_RLAR_AttrIndx_Msk) | \ + (MPU_RLAR_EN_Msk)) + +/** +* Struct for a single MPU Region +*/ +typedef struct { + uint32_t RBAR; /*!< Region Base Address Register value */ + uint32_t RLAR; /*!< Region Limit Address Register value */ +} ARM_MPU_Region_t; + +/** Enable the MPU. +* \param MPU_Control Default access permissions for unconfigured regions. +*/ +__STATIC_INLINE void ARM_MPU_Enable(uint32_t MPU_Control) +{ + __DSB(); + __ISB(); + MPU->CTRL = MPU_Control | MPU_CTRL_ENABLE_Msk; +#ifdef SCB_SHCSR_MEMFAULTENA_Msk + SCB->SHCSR |= SCB_SHCSR_MEMFAULTENA_Msk; +#endif +} + +/** Disable the MPU. +*/ +__STATIC_INLINE void ARM_MPU_Disable(void) +{ + __DSB(); + __ISB(); +#ifdef SCB_SHCSR_MEMFAULTENA_Msk + SCB->SHCSR &= ~SCB_SHCSR_MEMFAULTENA_Msk; +#endif + MPU->CTRL &= ~MPU_CTRL_ENABLE_Msk; +} + +#ifdef MPU_NS +/** Enable the Non-secure MPU. +* \param MPU_Control Default access permissions for unconfigured regions. +*/ +__STATIC_INLINE void ARM_MPU_Enable_NS(uint32_t MPU_Control) +{ + __DSB(); + __ISB(); + MPU_NS->CTRL = MPU_Control | MPU_CTRL_ENABLE_Msk; +#ifdef SCB_SHCSR_MEMFAULTENA_Msk + SCB_NS->SHCSR |= SCB_SHCSR_MEMFAULTENA_Msk; +#endif +} + +/** Disable the Non-secure MPU. +*/ +__STATIC_INLINE void ARM_MPU_Disable_NS(void) +{ + __DSB(); + __ISB(); +#ifdef SCB_SHCSR_MEMFAULTENA_Msk + SCB_NS->SHCSR &= ~SCB_SHCSR_MEMFAULTENA_Msk; +#endif + MPU_NS->CTRL &= ~MPU_CTRL_ENABLE_Msk; +} +#endif + +/** Set the memory attribute encoding to the given MPU. +* \param mpu Pointer to the MPU to be configured. +* \param idx The attribute index to be set [0-7] +* \param attr The attribute value to be set. +*/ +__STATIC_INLINE void ARM_MPU_SetMemAttrEx(MPU_Type* mpu, uint8_t idx, uint8_t attr) +{ + const uint8_t reg = idx / 4U; + const uint32_t pos = ((idx % 4U) * 8U); + const uint32_t mask = 0xFFU << pos; + + if (reg >= (sizeof(mpu->MAIR) / sizeof(mpu->MAIR[0]))) { + return; // invalid index + } + + mpu->MAIR[reg] = ((mpu->MAIR[reg] & ~mask) | ((attr << pos) & mask)); +} + +/** Set the memory attribute encoding. +* \param idx The attribute index to be set [0-7] +* \param attr The attribute value to be set. +*/ +__STATIC_INLINE void ARM_MPU_SetMemAttr(uint8_t idx, uint8_t attr) +{ + ARM_MPU_SetMemAttrEx(MPU, idx, attr); +} + +#ifdef MPU_NS +/** Set the memory attribute encoding to the Non-secure MPU. +* \param idx The attribute index to be set [0-7] +* \param attr The attribute value to be set. +*/ +__STATIC_INLINE void ARM_MPU_SetMemAttr_NS(uint8_t idx, uint8_t attr) +{ + ARM_MPU_SetMemAttrEx(MPU_NS, idx, attr); +} +#endif + +/** Clear and disable the given MPU region of the given MPU. +* \param mpu Pointer to MPU to be used. +* \param rnr Region number to be cleared. +*/ +__STATIC_INLINE void ARM_MPU_ClrRegionEx(MPU_Type* mpu, uint32_t rnr) +{ + mpu->RNR = rnr; + mpu->RLAR = 0U; +} + +/** Clear and disable the given MPU region. +* \param rnr Region number to be cleared. +*/ +__STATIC_INLINE void ARM_MPU_ClrRegion(uint32_t rnr) +{ + ARM_MPU_ClrRegionEx(MPU, rnr); +} + +#ifdef MPU_NS +/** Clear and disable the given Non-secure MPU region. +* \param rnr Region number to be cleared. +*/ +__STATIC_INLINE void ARM_MPU_ClrRegion_NS(uint32_t rnr) +{ + ARM_MPU_ClrRegionEx(MPU_NS, rnr); +} +#endif + +/** Configure the given MPU region of the given MPU. +* \param mpu Pointer to MPU to be used. +* \param rnr Region number to be configured. +* \param rbar Value for RBAR register. +* \param rlar Value for RLAR register. +*/ +__STATIC_INLINE void ARM_MPU_SetRegionEx(MPU_Type* mpu, uint32_t rnr, uint32_t rbar, uint32_t rlar) +{ + mpu->RNR = rnr; + mpu->RBAR = rbar; + mpu->RLAR = rlar; +} + +/** Configure the given MPU region. +* \param rnr Region number to be configured. +* \param rbar Value for RBAR register. +* \param rlar Value for RLAR register. +*/ +__STATIC_INLINE void ARM_MPU_SetRegion(uint32_t rnr, uint32_t rbar, uint32_t rlar) +{ + ARM_MPU_SetRegionEx(MPU, rnr, rbar, rlar); +} + +#ifdef MPU_NS +/** Configure the given Non-secure MPU region. +* \param rnr Region number to be configured. +* \param rbar Value for RBAR register. +* \param rlar Value for RLAR register. +*/ +__STATIC_INLINE void ARM_MPU_SetRegion_NS(uint32_t rnr, uint32_t rbar, uint32_t rlar) +{ + ARM_MPU_SetRegionEx(MPU_NS, rnr, rbar, rlar); +} +#endif + +/** Memcopy with strictly ordered memory access, e.g. for register targets. +* \param dst Destination data is copied to. +* \param src Source data is copied from. +* \param len Amount of data words to be copied. +*/ +__STATIC_INLINE void orderedCpy(volatile uint32_t* dst, const uint32_t* __RESTRICT src, uint32_t len) +{ + uint32_t i; + for (i = 0U; i < len; ++i) + { + dst[i] = src[i]; + } +} + +/** Load the given number of MPU regions from a table to the given MPU. +* \param mpu Pointer to the MPU registers to be used. +* \param rnr First region number to be configured. +* \param table Pointer to the MPU configuration table. +* \param cnt Amount of regions to be configured. +*/ +__STATIC_INLINE void ARM_MPU_LoadEx(MPU_Type* mpu, uint32_t rnr, ARM_MPU_Region_t const* table, uint32_t cnt) +{ + const uint32_t rowWordSize = sizeof(ARM_MPU_Region_t)/4U; + if (cnt == 1U) { + mpu->RNR = rnr; + orderedCpy(&(mpu->RBAR), &(table->RBAR), rowWordSize); + } else { + uint32_t rnrBase = rnr & ~(MPU_TYPE_RALIASES-1U); + uint32_t rnrOffset = rnr % MPU_TYPE_RALIASES; + + mpu->RNR = rnrBase; + while ((rnrOffset + cnt) > MPU_TYPE_RALIASES) { + uint32_t c = MPU_TYPE_RALIASES - rnrOffset; + orderedCpy(&(mpu->RBAR)+(rnrOffset*2U), &(table->RBAR), c*rowWordSize); + table += c; + cnt -= c; + rnrOffset = 0U; + rnrBase += MPU_TYPE_RALIASES; + mpu->RNR = rnrBase; + } + + orderedCpy(&(mpu->RBAR)+(rnrOffset*2U), &(table->RBAR), cnt*rowWordSize); + } +} + +/** Load the given number of MPU regions from a table. +* \param rnr First region number to be configured. +* \param table Pointer to the MPU configuration table. +* \param cnt Amount of regions to be configured. +*/ +__STATIC_INLINE void ARM_MPU_Load(uint32_t rnr, ARM_MPU_Region_t const* table, uint32_t cnt) +{ + ARM_MPU_LoadEx(MPU, rnr, table, cnt); +} + +#ifdef MPU_NS +/** Load the given number of MPU regions from a table to the Non-secure MPU. +* \param rnr First region number to be configured. +* \param table Pointer to the MPU configuration table. +* \param cnt Amount of regions to be configured. +*/ +__STATIC_INLINE void ARM_MPU_Load_NS(uint32_t rnr, ARM_MPU_Region_t const* table, uint32_t cnt) +{ + ARM_MPU_LoadEx(MPU_NS, rnr, table, cnt); +} +#endif + +#endif + diff --git a/HAL_N_Middlewares/Drivers/CMSIS/Include/tz_context.h b/Drivers/CMSIS/Include/tz_context.h similarity index 100% rename from HAL_N_Middlewares/Drivers/CMSIS/Include/tz_context.h rename to Drivers/CMSIS/Include/tz_context.h diff --git a/HAL_N_Middlewares/Drivers/CMSIS/LICENSE.txt b/Drivers/CMSIS/LICENSE.txt similarity index 100% rename from HAL_N_Middlewares/Drivers/CMSIS/LICENSE.txt rename to Drivers/CMSIS/LICENSE.txt diff --git a/HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h b/Drivers/STM32F4xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h similarity index 100% rename from HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h rename to Drivers/STM32F4xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h diff --git a/HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal.h b/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal.h similarity index 100% rename from HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal.h rename to Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal.h diff --git a/HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_adc.h b/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_adc.h similarity index 100% rename from HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_adc.h rename to Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_adc.h diff --git a/HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_adc_ex.h b/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_adc_ex.h similarity index 100% rename from HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_adc_ex.h rename to Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_adc_ex.h diff --git a/HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_can.h b/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_can.h similarity index 100% rename from HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_can.h rename to Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_can.h diff --git a/HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_cortex.h b/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_cortex.h similarity index 100% rename from HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_cortex.h rename to Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_cortex.h diff --git a/HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_crc.h b/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_crc.h similarity index 100% rename from HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_crc.h rename to Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_crc.h diff --git a/HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_dac.h b/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_dac.h similarity index 100% rename from HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_dac.h rename to Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_dac.h diff --git a/HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_dac_ex.h b/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_dac_ex.h similarity index 100% rename from HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_dac_ex.h rename to Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_dac_ex.h diff --git a/HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_def.h b/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_def.h similarity index 100% rename from HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_def.h rename to Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_def.h diff --git a/HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_dma.h b/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_dma.h similarity index 100% rename from HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_dma.h rename to Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_dma.h diff --git a/HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_dma_ex.h b/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_dma_ex.h similarity index 100% rename from HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_dma_ex.h rename to Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_dma_ex.h diff --git a/HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_exti.h b/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_exti.h similarity index 100% rename from HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_exti.h rename to Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_exti.h diff --git a/HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_flash.h b/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_flash.h similarity index 100% rename from HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_flash.h rename to Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_flash.h diff --git a/HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_flash_ex.h b/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_flash_ex.h similarity index 100% rename from HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_flash_ex.h rename to Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_flash_ex.h diff --git a/HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_flash_ramfunc.h b/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_flash_ramfunc.h similarity index 100% rename from HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_flash_ramfunc.h rename to Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_flash_ramfunc.h diff --git a/HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_gpio.h b/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_gpio.h similarity index 100% rename from HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_gpio.h rename to Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_gpio.h diff --git a/HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_gpio_ex.h b/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_gpio_ex.h similarity index 100% rename from HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_gpio_ex.h rename to Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_gpio_ex.h diff --git a/HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_i2c.h b/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_i2c.h similarity index 100% rename from HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_i2c.h rename to Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_i2c.h diff --git a/HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_i2c_ex.h b/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_i2c_ex.h similarity index 100% rename from HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_i2c_ex.h rename to Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_i2c_ex.h diff --git a/HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pcd.h b/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pcd.h similarity index 100% rename from HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pcd.h rename to Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pcd.h diff --git a/HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pcd_ex.h b/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pcd_ex.h similarity index 100% rename from HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pcd_ex.h rename to Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pcd_ex.h diff --git a/HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pwr.h b/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pwr.h similarity index 100% rename from HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pwr.h rename to Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pwr.h diff --git a/HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pwr_ex.h b/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pwr_ex.h similarity index 100% rename from HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pwr_ex.h rename to Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pwr_ex.h diff --git a/HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_rcc.h b/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_rcc.h similarity index 100% rename from HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_rcc.h rename to Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_rcc.h diff --git a/HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_rcc_ex.h b/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_rcc_ex.h similarity index 100% rename from HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_rcc_ex.h rename to Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_rcc_ex.h diff --git a/HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_rng.h b/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_rng.h similarity index 100% rename from HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_rng.h rename to Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_rng.h diff --git a/HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_rtc.h b/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_rtc.h similarity index 100% rename from HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_rtc.h rename to Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_rtc.h diff --git a/HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_rtc_ex.h b/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_rtc_ex.h similarity index 100% rename from HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_rtc_ex.h rename to Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_rtc_ex.h diff --git a/HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_spi.h b/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_spi.h similarity index 100% rename from HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_spi.h rename to Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_spi.h diff --git a/HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_tim.h b/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_tim.h similarity index 100% rename from HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_tim.h rename to Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_tim.h diff --git a/HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_tim_ex.h b/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_tim_ex.h similarity index 100% rename from HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_tim_ex.h rename to Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_tim_ex.h diff --git a/HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_uart.h b/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_uart.h similarity index 100% rename from HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_uart.h rename to Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_uart.h diff --git a/HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_adc.h b/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_adc.h similarity index 100% rename from HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_adc.h rename to Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_adc.h diff --git a/HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_bus.h b/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_bus.h similarity index 100% rename from HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_bus.h rename to Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_bus.h diff --git a/HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_cortex.h b/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_cortex.h similarity index 100% rename from HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_cortex.h rename to Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_cortex.h diff --git a/HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_crc.h b/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_crc.h similarity index 100% rename from HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_crc.h rename to Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_crc.h diff --git a/HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_dac.h b/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_dac.h similarity index 100% rename from HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_dac.h rename to Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_dac.h diff --git a/HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_dma.h b/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_dma.h similarity index 100% rename from HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_dma.h rename to Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_dma.h diff --git a/HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_exti.h b/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_exti.h similarity index 100% rename from HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_exti.h rename to Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_exti.h diff --git a/HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_gpio.h b/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_gpio.h similarity index 100% rename from HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_gpio.h rename to Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_gpio.h diff --git a/HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_i2c.h b/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_i2c.h similarity index 100% rename from HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_i2c.h rename to Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_i2c.h diff --git a/HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_pwr.h b/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_pwr.h similarity index 100% rename from HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_pwr.h rename to Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_pwr.h diff --git a/HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_rcc.h b/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_rcc.h similarity index 100% rename from HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_rcc.h rename to Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_rcc.h diff --git a/HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_rng.h b/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_rng.h similarity index 100% rename from HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_rng.h rename to Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_rng.h diff --git a/HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_rtc.h b/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_rtc.h similarity index 100% rename from HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_rtc.h rename to Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_rtc.h diff --git a/HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_system.h b/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_system.h similarity index 100% rename from HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_system.h rename to Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_system.h diff --git a/HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_tim.h b/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_tim.h similarity index 100% rename from HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_tim.h rename to Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_tim.h diff --git a/HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_usart.h b/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_usart.h similarity index 100% rename from HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_usart.h rename to Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_usart.h diff --git a/HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_usb.h b/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_usb.h similarity index 100% rename from HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_usb.h rename to Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_usb.h diff --git a/HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_utils.h b/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_utils.h similarity index 100% rename from HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_utils.h rename to Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_utils.h diff --git a/Drivers/STM32F4xx_HAL_Driver/LICENSE.txt b/Drivers/STM32F4xx_HAL_Driver/LICENSE.txt new file mode 100644 index 0000000..3edc4d1 --- /dev/null +++ b/Drivers/STM32F4xx_HAL_Driver/LICENSE.txt @@ -0,0 +1,6 @@ +This software component is provided to you as part of a software package and +applicable license terms are in the Package_license file. If you received this +software component outside of a package or without applicable license terms, +the terms of the BSD-3-Clause license shall apply. +You may obtain a copy of the BSD-3-Clause at: +https://opensource.org/licenses/BSD-3-Clause diff --git a/HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.c b/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.c similarity index 100% rename from HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.c rename to Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.c diff --git a/HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc.c b/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc.c similarity index 100% rename from HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc.c rename to Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc.c diff --git a/HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc_ex.c b/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc_ex.c similarity index 100% rename from HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc_ex.c rename to Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc_ex.c diff --git a/HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_can.c b/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_can.c similarity index 100% rename from HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_can.c rename to Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_can.c diff --git a/HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.c b/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.c similarity index 100% rename from HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.c rename to Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.c diff --git a/HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_crc.c b/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_crc.c similarity index 100% rename from HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_crc.c rename to Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_crc.c diff --git a/HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dac.c b/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dac.c similarity index 100% rename from HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dac.c rename to Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dac.c diff --git a/HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dac_ex.c b/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dac_ex.c similarity index 100% rename from HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dac_ex.c rename to Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dac_ex.c diff --git a/HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.c b/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.c similarity index 100% rename from HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.c rename to Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.c diff --git a/HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma_ex.c b/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma_ex.c similarity index 100% rename from HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma_ex.c rename to Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma_ex.c diff --git a/HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_exti.c b/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_exti.c similarity index 100% rename from HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_exti.c rename to Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_exti.c diff --git a/HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c b/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c similarity index 100% rename from HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c rename to Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c diff --git a/HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ex.c b/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ex.c similarity index 100% rename from HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ex.c rename to Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ex.c diff --git a/HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ramfunc.c b/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ramfunc.c similarity index 100% rename from HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ramfunc.c rename to Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ramfunc.c diff --git a/HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.c b/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.c similarity index 100% rename from HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.c rename to Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.c diff --git a/HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c.c b/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c.c similarity index 100% rename from HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c.c rename to Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c.c diff --git a/HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c_ex.c b/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c_ex.c similarity index 100% rename from HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c_ex.c rename to Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c_ex.c diff --git a/HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.c b/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.c similarity index 100% rename from HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.c rename to Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.c diff --git a/HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.c b/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.c similarity index 100% rename from HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.c rename to Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.c diff --git a/HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.c b/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.c similarity index 100% rename from HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.c rename to Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.c diff --git a/HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr_ex.c b/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr_ex.c similarity index 100% rename from HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr_ex.c rename to Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr_ex.c diff --git a/HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.c b/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.c similarity index 100% rename from HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.c rename to Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.c diff --git a/HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.c b/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.c similarity index 100% rename from HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.c rename to Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.c diff --git a/HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rng.c b/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rng.c similarity index 100% rename from HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rng.c rename to Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rng.c diff --git a/HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rtc.c b/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rtc.c similarity index 100% rename from HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rtc.c rename to Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rtc.c diff --git a/HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rtc_ex.c b/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rtc_ex.c similarity index 100% rename from HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rtc_ex.c rename to Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rtc_ex.c diff --git a/HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.c b/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.c similarity index 100% rename from HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.c rename to Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.c diff --git a/HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.c b/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.c similarity index 100% rename from HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.c rename to Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.c diff --git a/HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.c b/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.c similarity index 100% rename from HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.c rename to Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.c diff --git a/HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.c b/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.c similarity index 100% rename from HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.c rename to Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.c diff --git a/HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_adc.c b/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_adc.c similarity index 100% rename from HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_adc.c rename to Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_adc.c diff --git a/HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.c b/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.c similarity index 100% rename from HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.c rename to Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.c diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Include/arm_common_tables.h b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Include/arm_common_tables.h deleted file mode 100644 index dfea746..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Include/arm_common_tables.h +++ /dev/null @@ -1,121 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_common_tables.h - * Description: Extern declaration for common tables - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _ARM_COMMON_TABLES_H -#define _ARM_COMMON_TABLES_H - -#include "arm_math.h" - -extern const uint16_t armBitRevTable[1024]; -extern const q15_t armRecipTableQ15[64]; -extern const q31_t armRecipTableQ31[64]; -extern const float32_t twiddleCoef_16[32]; -extern const float32_t twiddleCoef_32[64]; -extern const float32_t twiddleCoef_64[128]; -extern const float32_t twiddleCoef_128[256]; -extern const float32_t twiddleCoef_256[512]; -extern const float32_t twiddleCoef_512[1024]; -extern const float32_t twiddleCoef_1024[2048]; -extern const float32_t twiddleCoef_2048[4096]; -extern const float32_t twiddleCoef_4096[8192]; -#define twiddleCoef twiddleCoef_4096 -extern const q31_t twiddleCoef_16_q31[24]; -extern const q31_t twiddleCoef_32_q31[48]; -extern const q31_t twiddleCoef_64_q31[96]; -extern const q31_t twiddleCoef_128_q31[192]; -extern const q31_t twiddleCoef_256_q31[384]; -extern const q31_t twiddleCoef_512_q31[768]; -extern const q31_t twiddleCoef_1024_q31[1536]; -extern const q31_t twiddleCoef_2048_q31[3072]; -extern const q31_t twiddleCoef_4096_q31[6144]; -extern const q15_t twiddleCoef_16_q15[24]; -extern const q15_t twiddleCoef_32_q15[48]; -extern const q15_t twiddleCoef_64_q15[96]; -extern const q15_t twiddleCoef_128_q15[192]; -extern const q15_t twiddleCoef_256_q15[384]; -extern const q15_t twiddleCoef_512_q15[768]; -extern const q15_t twiddleCoef_1024_q15[1536]; -extern const q15_t twiddleCoef_2048_q15[3072]; -extern const q15_t twiddleCoef_4096_q15[6144]; -extern const float32_t twiddleCoef_rfft_32[32]; -extern const float32_t twiddleCoef_rfft_64[64]; -extern const float32_t twiddleCoef_rfft_128[128]; -extern const float32_t twiddleCoef_rfft_256[256]; -extern const float32_t twiddleCoef_rfft_512[512]; -extern const float32_t twiddleCoef_rfft_1024[1024]; -extern const float32_t twiddleCoef_rfft_2048[2048]; -extern const float32_t twiddleCoef_rfft_4096[4096]; - -/* floating-point bit reversal tables */ -#define ARMBITREVINDEXTABLE_16_TABLE_LENGTH ((uint16_t)20) -#define ARMBITREVINDEXTABLE_32_TABLE_LENGTH ((uint16_t)48) -#define ARMBITREVINDEXTABLE_64_TABLE_LENGTH ((uint16_t)56) -#define ARMBITREVINDEXTABLE_128_TABLE_LENGTH ((uint16_t)208) -#define ARMBITREVINDEXTABLE_256_TABLE_LENGTH ((uint16_t)440) -#define ARMBITREVINDEXTABLE_512_TABLE_LENGTH ((uint16_t)448) -#define ARMBITREVINDEXTABLE_1024_TABLE_LENGTH ((uint16_t)1800) -#define ARMBITREVINDEXTABLE_2048_TABLE_LENGTH ((uint16_t)3808) -#define ARMBITREVINDEXTABLE_4096_TABLE_LENGTH ((uint16_t)4032) - -extern const uint16_t armBitRevIndexTable16[ARMBITREVINDEXTABLE_16_TABLE_LENGTH]; -extern const uint16_t armBitRevIndexTable32[ARMBITREVINDEXTABLE_32_TABLE_LENGTH]; -extern const uint16_t armBitRevIndexTable64[ARMBITREVINDEXTABLE_64_TABLE_LENGTH]; -extern const uint16_t armBitRevIndexTable128[ARMBITREVINDEXTABLE_128_TABLE_LENGTH]; -extern const uint16_t armBitRevIndexTable256[ARMBITREVINDEXTABLE_256_TABLE_LENGTH]; -extern const uint16_t armBitRevIndexTable512[ARMBITREVINDEXTABLE_512_TABLE_LENGTH]; -extern const uint16_t armBitRevIndexTable1024[ARMBITREVINDEXTABLE_1024_TABLE_LENGTH]; -extern const uint16_t armBitRevIndexTable2048[ARMBITREVINDEXTABLE_2048_TABLE_LENGTH]; -extern const uint16_t armBitRevIndexTable4096[ARMBITREVINDEXTABLE_4096_TABLE_LENGTH]; - -/* fixed-point bit reversal tables */ -#define ARMBITREVINDEXTABLE_FIXED_16_TABLE_LENGTH ((uint16_t)12) -#define ARMBITREVINDEXTABLE_FIXED_32_TABLE_LENGTH ((uint16_t)24) -#define ARMBITREVINDEXTABLE_FIXED_64_TABLE_LENGTH ((uint16_t)56) -#define ARMBITREVINDEXTABLE_FIXED_128_TABLE_LENGTH ((uint16_t)112) -#define ARMBITREVINDEXTABLE_FIXED_256_TABLE_LENGTH ((uint16_t)240) -#define ARMBITREVINDEXTABLE_FIXED_512_TABLE_LENGTH ((uint16_t)480) -#define ARMBITREVINDEXTABLE_FIXED_1024_TABLE_LENGTH ((uint16_t)992) -#define ARMBITREVINDEXTABLE_FIXED_2048_TABLE_LENGTH ((uint16_t)1984) -#define ARMBITREVINDEXTABLE_FIXED_4096_TABLE_LENGTH ((uint16_t)4032) - -extern const uint16_t armBitRevIndexTable_fixed_16[ARMBITREVINDEXTABLE_FIXED_16_TABLE_LENGTH]; -extern const uint16_t armBitRevIndexTable_fixed_32[ARMBITREVINDEXTABLE_FIXED_32_TABLE_LENGTH]; -extern const uint16_t armBitRevIndexTable_fixed_64[ARMBITREVINDEXTABLE_FIXED_64_TABLE_LENGTH]; -extern const uint16_t armBitRevIndexTable_fixed_128[ARMBITREVINDEXTABLE_FIXED_128_TABLE_LENGTH]; -extern const uint16_t armBitRevIndexTable_fixed_256[ARMBITREVINDEXTABLE_FIXED_256_TABLE_LENGTH]; -extern const uint16_t armBitRevIndexTable_fixed_512[ARMBITREVINDEXTABLE_FIXED_512_TABLE_LENGTH]; -extern const uint16_t armBitRevIndexTable_fixed_1024[ARMBITREVINDEXTABLE_FIXED_1024_TABLE_LENGTH]; -extern const uint16_t armBitRevIndexTable_fixed_2048[ARMBITREVINDEXTABLE_FIXED_2048_TABLE_LENGTH]; -extern const uint16_t armBitRevIndexTable_fixed_4096[ARMBITREVINDEXTABLE_FIXED_4096_TABLE_LENGTH]; - -/* Tables for Fast Math Sine and Cosine */ -extern const float32_t sinTable_f32[FAST_MATH_TABLE_SIZE + 1]; -extern const q31_t sinTable_q31[FAST_MATH_TABLE_SIZE + 1]; -extern const q15_t sinTable_q15[FAST_MATH_TABLE_SIZE + 1]; - -#endif /* ARM_COMMON_TABLES_H */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Include/arm_const_structs.h b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Include/arm_const_structs.h deleted file mode 100644 index 80a3e8b..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Include/arm_const_structs.h +++ /dev/null @@ -1,66 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_const_structs.h - * Description: Constant structs that are initialized for user convenience. - * For example, some can be given as arguments to the arm_cfft_f32() function. - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _ARM_CONST_STRUCTS_H -#define _ARM_CONST_STRUCTS_H - -#include "arm_math.h" -#include "arm_common_tables.h" - - extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len16; - extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len32; - extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len64; - extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len128; - extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len256; - extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len512; - extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len1024; - extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len2048; - extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len4096; - - extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len16; - extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len32; - extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len64; - extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len128; - extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len256; - extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len512; - extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len1024; - extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len2048; - extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len4096; - - extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len16; - extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len32; - extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len64; - extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len128; - extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len256; - extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len512; - extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len1024; - extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len2048; - extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len4096; - -#endif diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_abs_f32.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_abs_f32.c deleted file mode 100644 index f88ef95..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_abs_f32.c +++ /dev/null @@ -1,153 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_abs_f32.c - * Description: Floating-point vector absolute value - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" -#include - -/** - * @ingroup groupMath - */ - -/** - * @defgroup BasicAbs Vector Absolute Value - * - * Computes the absolute value of a vector on an element-by-element basis. - * - *
- *     pDst[n] = abs(pSrc[n]),   0 <= n < blockSize.
- * 
- * - * The functions support in-place computation allowing the source and - * destination pointers to reference the same memory buffer. - * There are separate functions for floating-point, Q7, Q15, and Q31 data types. - */ - -/** - * @addtogroup BasicAbs - * @{ - */ - -/** - * @brief Floating-point vector absolute value. - * @param[in] *pSrc points to the input buffer - * @param[out] *pDst points to the output buffer - * @param[in] blockSize number of samples in each vector - * @return none. - */ - -void arm_abs_f32( - float32_t * pSrc, - float32_t * pDst, - uint32_t blockSize) -{ - uint32_t blkCnt; /* loop counter */ - -#if defined (ARM_MATH_DSP) - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - float32_t in1, in2, in3, in4; /* temporary variables */ - - /*loop Unrolling */ - blkCnt = blockSize >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - /* C = |A| */ - /* Calculate absolute and then store the results in the destination buffer. */ - /* read sample from source */ - in1 = *pSrc; - in2 = *(pSrc + 1); - in3 = *(pSrc + 2); - - /* find absolute value */ - in1 = fabsf(in1); - - /* read sample from source */ - in4 = *(pSrc + 3); - - /* find absolute value */ - in2 = fabsf(in2); - - /* read sample from source */ - *pDst = in1; - - /* find absolute value */ - in3 = fabsf(in3); - - /* find absolute value */ - in4 = fabsf(in4); - - /* store result to destination */ - *(pDst + 1) = in2; - - /* store result to destination */ - *(pDst + 2) = in3; - - /* store result to destination */ - *(pDst + 3) = in4; - - - /* Update source pointer to process next sampels */ - pSrc += 4U; - - /* Update destination pointer to process next sampels */ - pDst += 4U; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize % 0x4U; - -#else - - /* Run the below code for Cortex-M0 */ - - /* Initialize blkCnt with number of samples */ - blkCnt = blockSize; - -#endif /* #if defined (ARM_MATH_DSP) */ - - while (blkCnt > 0U) - { - /* C = |A| */ - /* Calculate absolute and then store the results in the destination buffer. */ - *pDst++ = fabsf(*pSrc++); - - /* Decrement the loop counter */ - blkCnt--; - } -} - -/** - * @} end of BasicAbs group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_abs_q15.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_abs_q15.c deleted file mode 100644 index ec47fff..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_abs_q15.c +++ /dev/null @@ -1,167 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_abs_q15.c - * Description: Q15 vector absolute value - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupMath - */ - -/** - * @addtogroup BasicAbs - * @{ - */ - -/** - * @brief Q15 vector absolute value. - * @param[in] *pSrc points to the input buffer - * @param[out] *pDst points to the output buffer - * @param[in] blockSize number of samples in each vector - * @return none. - * - * Scaling and Overflow Behavior: - * \par - * The function uses saturating arithmetic. - * The Q15 value -1 (0x8000) will be saturated to the maximum allowable positive value 0x7FFF. - */ - -void arm_abs_q15( - q15_t * pSrc, - q15_t * pDst, - uint32_t blockSize) -{ - uint32_t blkCnt; /* loop counter */ - -#if defined (ARM_MATH_DSP) - __SIMD32_TYPE *simd; - -/* Run the below code for Cortex-M4 and Cortex-M3 */ - - q15_t in1; /* Input value1 */ - q15_t in2; /* Input value2 */ - - - /*loop Unrolling */ - blkCnt = blockSize >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - simd = __SIMD32_CONST(pDst); - while (blkCnt > 0U) - { - /* C = |A| */ - /* Read two inputs */ - in1 = *pSrc++; - in2 = *pSrc++; - - - /* Store the Absolute result in the destination buffer by packing the two values, in a single cycle */ -#ifndef ARM_MATH_BIG_ENDIAN - *simd++ = - __PKHBT(((in1 > 0) ? in1 : (q15_t)__QSUB16(0, in1)), - ((in2 > 0) ? in2 : (q15_t)__QSUB16(0, in2)), 16); - -#else - - - *simd++ = - __PKHBT(((in2 > 0) ? in2 : (q15_t)__QSUB16(0, in2)), - ((in1 > 0) ? in1 : (q15_t)__QSUB16(0, in1)), 16); - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - in1 = *pSrc++; - in2 = *pSrc++; - - -#ifndef ARM_MATH_BIG_ENDIAN - - *simd++ = - __PKHBT(((in1 > 0) ? in1 : (q15_t)__QSUB16(0, in1)), - ((in2 > 0) ? in2 : (q15_t)__QSUB16(0, in2)), 16); - -#else - - - *simd++ = - __PKHBT(((in2 > 0) ? in2 : (q15_t)__QSUB16(0, in2)), - ((in1 > 0) ? in1 : (q15_t)__QSUB16(0, in1)), 16); - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - /* Decrement the loop counter */ - blkCnt--; - } - pDst = (q15_t *)simd; - - /* If the blockSize is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize % 0x4U; - - while (blkCnt > 0U) - { - /* C = |A| */ - /* Read the input */ - in1 = *pSrc++; - - /* Calculate absolute value of input and then store the result in the destination buffer. */ - *pDst++ = (in1 > 0) ? in1 : (q15_t)__QSUB16(0, in1); - - /* Decrement the loop counter */ - blkCnt--; - } - -#else - - /* Run the below code for Cortex-M0 */ - - q15_t in; /* Temporary input variable */ - - /* Initialize blkCnt with number of samples */ - blkCnt = blockSize; - - while (blkCnt > 0U) - { - /* C = |A| */ - /* Read the input */ - in = *pSrc++; - - /* Calculate absolute value of input and then store the result in the destination buffer. */ - *pDst++ = (in > 0) ? in : ((in == (q15_t) 0x8000) ? 0x7fff : -in); - - /* Decrement the loop counter */ - blkCnt--; - } - -#endif /* #if defined (ARM_MATH_DSP) */ - -} - -/** - * @} end of BasicAbs group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_abs_q31.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_abs_q31.c deleted file mode 100644 index 2733f51..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_abs_q31.c +++ /dev/null @@ -1,118 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_abs_q31.c - * Description: Q31 vector absolute value - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupMath - */ - -/** - * @addtogroup BasicAbs - * @{ - */ - - -/** - * @brief Q31 vector absolute value. - * @param[in] *pSrc points to the input buffer - * @param[out] *pDst points to the output buffer - * @param[in] blockSize number of samples in each vector - * @return none. - * - * Scaling and Overflow Behavior: - * \par - * The function uses saturating arithmetic. - * The Q31 value -1 (0x80000000) will be saturated to the maximum allowable positive value 0x7FFFFFFF. - */ - -void arm_abs_q31( - q31_t * pSrc, - q31_t * pDst, - uint32_t blockSize) -{ - uint32_t blkCnt; /* loop counter */ - q31_t in; /* Input value */ - -#if defined (ARM_MATH_DSP) - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - q31_t in1, in2, in3, in4; - - /*loop Unrolling */ - blkCnt = blockSize >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - /* C = |A| */ - /* Calculate absolute of input (if -1 then saturated to 0x7fffffff) and then store the results in the destination buffer. */ - in1 = *pSrc++; - in2 = *pSrc++; - in3 = *pSrc++; - in4 = *pSrc++; - - *pDst++ = (in1 > 0) ? in1 : (q31_t)__QSUB(0, in1); - *pDst++ = (in2 > 0) ? in2 : (q31_t)__QSUB(0, in2); - *pDst++ = (in3 > 0) ? in3 : (q31_t)__QSUB(0, in3); - *pDst++ = (in4 > 0) ? in4 : (q31_t)__QSUB(0, in4); - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize % 0x4U; - -#else - - /* Run the below code for Cortex-M0 */ - - /* Initialize blkCnt with number of samples */ - blkCnt = blockSize; - -#endif /* #if defined (ARM_MATH_DSP) */ - - while (blkCnt > 0U) - { - /* C = |A| */ - /* Calculate absolute value of the input (if -1 then saturated to 0x7fffffff) and then store the results in the destination buffer. */ - in = *pSrc++; - *pDst++ = (in > 0) ? in : ((in == INT32_MIN) ? INT32_MAX : -in); - - /* Decrement the loop counter */ - blkCnt--; - } - -} - -/** - * @} end of BasicAbs group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_abs_q7.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_abs_q7.c deleted file mode 100644 index d0acbfc..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_abs_q7.c +++ /dev/null @@ -1,145 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_abs_q7.c - * Description: Q7 vector absolute value - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupMath - */ - -/** - * @addtogroup BasicAbs - * @{ - */ - -/** - * @brief Q7 vector absolute value. - * @param[in] *pSrc points to the input buffer - * @param[out] *pDst points to the output buffer - * @param[in] blockSize number of samples in each vector - * @return none. - * - * \par Conditions for optimum performance - * Input and output buffers should be aligned by 32-bit - * - * - * Scaling and Overflow Behavior: - * \par - * The function uses saturating arithmetic. - * The Q7 value -1 (0x80) will be saturated to the maximum allowable positive value 0x7F. - */ - -void arm_abs_q7( - q7_t * pSrc, - q7_t * pDst, - uint32_t blockSize) -{ - uint32_t blkCnt; /* loop counter */ - q7_t in; /* Input value1 */ - -#if defined (ARM_MATH_DSP) - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - q31_t in1, in2, in3, in4; /* temporary input variables */ - q31_t out1, out2, out3, out4; /* temporary output variables */ - - /*loop Unrolling */ - blkCnt = blockSize >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - /* C = |A| */ - /* Read inputs */ - in1 = (q31_t) * pSrc; - in2 = (q31_t) * (pSrc + 1); - in3 = (q31_t) * (pSrc + 2); - - /* find absolute value */ - out1 = (in1 > 0) ? in1 : (q31_t)__QSUB8(0, in1); - - /* read input */ - in4 = (q31_t) * (pSrc + 3); - - /* find absolute value */ - out2 = (in2 > 0) ? in2 : (q31_t)__QSUB8(0, in2); - - /* store result to destination */ - *pDst = (q7_t) out1; - - /* find absolute value */ - out3 = (in3 > 0) ? in3 : (q31_t)__QSUB8(0, in3); - - /* find absolute value */ - out4 = (in4 > 0) ? in4 : (q31_t)__QSUB8(0, in4); - - /* store result to destination */ - *(pDst + 1) = (q7_t) out2; - - /* store result to destination */ - *(pDst + 2) = (q7_t) out3; - - /* store result to destination */ - *(pDst + 3) = (q7_t) out4; - - /* update pointers to process next samples */ - pSrc += 4U; - pDst += 4U; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize % 0x4U; -#else - - /* Run the below code for Cortex-M0 */ - blkCnt = blockSize; - -#endif /* #define ARM_MATH_CM0_FAMILY */ - - while (blkCnt > 0U) - { - /* C = |A| */ - /* Read the input */ - in = *pSrc++; - - /* Store the Absolute result in the destination buffer */ - *pDst++ = (in > 0) ? in : ((in == (q7_t) 0x80) ? 0x7f : -in); - - /* Decrement the loop counter */ - blkCnt--; - } -} - -/** - * @} end of BasicAbs group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_add_f32.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_add_f32.c deleted file mode 100644 index 78feb64..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_add_f32.c +++ /dev/null @@ -1,138 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_add_f32.c - * Description: Floating-point vector addition - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupMath - */ - -/** - * @defgroup BasicAdd Vector Addition - * - * Element-by-element addition of two vectors. - * - *
- *     pDst[n] = pSrcA[n] + pSrcB[n],   0 <= n < blockSize.
- * 
- * - * There are separate functions for floating-point, Q7, Q15, and Q31 data types. - */ - -/** - * @addtogroup BasicAdd - * @{ - */ - -/** - * @brief Floating-point vector addition. - * @param[in] *pSrcA points to the first input vector - * @param[in] *pSrcB points to the second input vector - * @param[out] *pDst points to the output vector - * @param[in] blockSize number of samples in each vector - * @return none. - */ - -void arm_add_f32( - float32_t * pSrcA, - float32_t * pSrcB, - float32_t * pDst, - uint32_t blockSize) -{ - uint32_t blkCnt; /* loop counter */ - -#if defined (ARM_MATH_DSP) - -/* Run the below code for Cortex-M4 and Cortex-M3 */ - float32_t inA1, inA2, inA3, inA4; /* temporary input variabels */ - float32_t inB1, inB2, inB3, inB4; /* temporary input variables */ - - /*loop Unrolling */ - blkCnt = blockSize >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - /* C = A + B */ - /* Add and then store the results in the destination buffer. */ - - /* read four inputs from sourceA and four inputs from sourceB */ - inA1 = *pSrcA; - inB1 = *pSrcB; - inA2 = *(pSrcA + 1); - inB2 = *(pSrcB + 1); - inA3 = *(pSrcA + 2); - inB3 = *(pSrcB + 2); - inA4 = *(pSrcA + 3); - inB4 = *(pSrcB + 3); - - /* C = A + B */ - /* add and store result to destination */ - *pDst = inA1 + inB1; - *(pDst + 1) = inA2 + inB2; - *(pDst + 2) = inA3 + inB3; - *(pDst + 3) = inA4 + inB4; - - /* update pointers to process next samples */ - pSrcA += 4U; - pSrcB += 4U; - pDst += 4U; - - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize % 0x4U; - -#else - - /* Run the below code for Cortex-M0 */ - - /* Initialize blkCnt with number of samples */ - blkCnt = blockSize; - -#endif /* #if defined (ARM_MATH_DSP) */ - - while (blkCnt > 0U) - { - /* C = A + B */ - /* Add and then store the results in the destination buffer. */ - *pDst++ = (*pSrcA++) + (*pSrcB++); - - /* Decrement the loop counter */ - blkCnt--; - } -} - -/** - * @} end of BasicAdd group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_add_q15.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_add_q15.c deleted file mode 100644 index 80a523f..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_add_q15.c +++ /dev/null @@ -1,128 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_add_q15.c - * Description: Q15 vector addition - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupMath - */ - -/** - * @addtogroup BasicAdd - * @{ - */ - -/** - * @brief Q15 vector addition. - * @param[in] *pSrcA points to the first input vector - * @param[in] *pSrcB points to the second input vector - * @param[out] *pDst points to the output vector - * @param[in] blockSize number of samples in each vector - * @return none. - * - * Scaling and Overflow Behavior: - * \par - * The function uses saturating arithmetic. - * Results outside of the allowable Q15 range [0x8000 0x7FFF] will be saturated. - */ - -void arm_add_q15( - q15_t * pSrcA, - q15_t * pSrcB, - q15_t * pDst, - uint32_t blockSize) -{ - uint32_t blkCnt; /* loop counter */ - -#if defined (ARM_MATH_DSP) - -/* Run the below code for Cortex-M4 and Cortex-M3 */ - q31_t inA1, inA2, inB1, inB2; - - /*loop Unrolling */ - blkCnt = blockSize >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - /* C = A + B */ - /* Add and then store the results in the destination buffer. */ - inA1 = *__SIMD32(pSrcA)++; - inA2 = *__SIMD32(pSrcA)++; - inB1 = *__SIMD32(pSrcB)++; - inB2 = *__SIMD32(pSrcB)++; - - *__SIMD32(pDst)++ = __QADD16(inA1, inB1); - *__SIMD32(pDst)++ = __QADD16(inA2, inB2); - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize % 0x4U; - - while (blkCnt > 0U) - { - /* C = A + B */ - /* Add and then store the results in the destination buffer. */ - *pDst++ = (q15_t) __QADD16(*pSrcA++, *pSrcB++); - - /* Decrement the loop counter */ - blkCnt--; - } - -#else - - /* Run the below code for Cortex-M0 */ - - - - /* Initialize blkCnt with number of samples */ - blkCnt = blockSize; - - while (blkCnt > 0U) - { - /* C = A + B */ - /* Add and then store the results in the destination buffer. */ - *pDst++ = (q15_t) __SSAT(((q31_t) * pSrcA++ + *pSrcB++), 16); - - /* Decrement the loop counter */ - blkCnt--; - } - -#endif /* #if defined (ARM_MATH_DSP) */ - - -} - -/** - * @} end of BasicAdd group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_add_q31.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_add_q31.c deleted file mode 100644 index c008bcc..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_add_q31.c +++ /dev/null @@ -1,136 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_add_q31.c - * Description: Q31 vector addition - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupMath - */ - -/** - * @addtogroup BasicAdd - * @{ - */ - - -/** - * @brief Q31 vector addition. - * @param[in] *pSrcA points to the first input vector - * @param[in] *pSrcB points to the second input vector - * @param[out] *pDst points to the output vector - * @param[in] blockSize number of samples in each vector - * @return none. - * - * Scaling and Overflow Behavior: - * \par - * The function uses saturating arithmetic. - * Results outside of the allowable Q31 range[0x80000000 0x7FFFFFFF] will be saturated. - */ - -void arm_add_q31( - q31_t * pSrcA, - q31_t * pSrcB, - q31_t * pDst, - uint32_t blockSize) -{ - uint32_t blkCnt; /* loop counter */ - -#if defined (ARM_MATH_DSP) - -/* Run the below code for Cortex-M4 and Cortex-M3 */ - q31_t inA1, inA2, inA3, inA4; - q31_t inB1, inB2, inB3, inB4; - - /*loop Unrolling */ - blkCnt = blockSize >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - /* C = A + B */ - /* Add and then store the results in the destination buffer. */ - inA1 = *pSrcA++; - inA2 = *pSrcA++; - inB1 = *pSrcB++; - inB2 = *pSrcB++; - - inA3 = *pSrcA++; - inA4 = *pSrcA++; - inB3 = *pSrcB++; - inB4 = *pSrcB++; - - *pDst++ = __QADD(inA1, inB1); - *pDst++ = __QADD(inA2, inB2); - *pDst++ = __QADD(inA3, inB3); - *pDst++ = __QADD(inA4, inB4); - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize % 0x4U; - - while (blkCnt > 0U) - { - /* C = A + B */ - /* Add and then store the results in the destination buffer. */ - *pDst++ = __QADD(*pSrcA++, *pSrcB++); - - /* Decrement the loop counter */ - blkCnt--; - } - -#else - - /* Run the below code for Cortex-M0 */ - - - - /* Initialize blkCnt with number of samples */ - blkCnt = blockSize; - - while (blkCnt > 0U) - { - /* C = A + B */ - /* Add and then store the results in the destination buffer. */ - *pDst++ = (q31_t) clip_q63_to_q31((q63_t) * pSrcA++ + *pSrcB++); - - /* Decrement the loop counter */ - blkCnt--; - } - -#endif /* #if defined (ARM_MATH_DSP) */ - -} - -/** - * @} end of BasicAdd group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_add_q7.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_add_q7.c deleted file mode 100644 index ab4e785..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_add_q7.c +++ /dev/null @@ -1,122 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_add_q7.c - * Description: Q7 vector addition - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupMath - */ - -/** - * @addtogroup BasicAdd - * @{ - */ - -/** - * @brief Q7 vector addition. - * @param[in] *pSrcA points to the first input vector - * @param[in] *pSrcB points to the second input vector - * @param[out] *pDst points to the output vector - * @param[in] blockSize number of samples in each vector - * @return none. - * - * Scaling and Overflow Behavior: - * \par - * The function uses saturating arithmetic. - * Results outside of the allowable Q7 range [0x80 0x7F] will be saturated. - */ - -void arm_add_q7( - q7_t * pSrcA, - q7_t * pSrcB, - q7_t * pDst, - uint32_t blockSize) -{ - uint32_t blkCnt; /* loop counter */ - -#if defined (ARM_MATH_DSP) - -/* Run the below code for Cortex-M4 and Cortex-M3 */ - - - /*loop Unrolling */ - blkCnt = blockSize >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - /* C = A + B */ - /* Add and then store the results in the destination buffer. */ - *__SIMD32(pDst)++ = __QADD8(*__SIMD32(pSrcA)++, *__SIMD32(pSrcB)++); - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize % 0x4U; - - while (blkCnt > 0U) - { - /* C = A + B */ - /* Add and then store the results in the destination buffer. */ - *pDst++ = (q7_t) __SSAT(*pSrcA++ + *pSrcB++, 8); - - /* Decrement the loop counter */ - blkCnt--; - } - -#else - - /* Run the below code for Cortex-M0 */ - - - - /* Initialize blkCnt with number of samples */ - blkCnt = blockSize; - - while (blkCnt > 0U) - { - /* C = A + B */ - /* Add and then store the results in the destination buffer. */ - *pDst++ = (q7_t) __SSAT((q15_t) * pSrcA++ + *pSrcB++, 8); - - /* Decrement the loop counter */ - blkCnt--; - } - -#endif /* #if defined (ARM_MATH_DSP) */ - - -} - -/** - * @} end of BasicAdd group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_dot_prod_f32.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_dot_prod_f32.c deleted file mode 100644 index 0cd0afc..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_dot_prod_f32.c +++ /dev/null @@ -1,123 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_dot_prod_f32.c - * Description: Floating-point dot product - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupMath - */ - -/** - * @defgroup dot_prod Vector Dot Product - * - * Computes the dot product of two vectors. - * The vectors are multiplied element-by-element and then summed. - * - *
- *     sum = pSrcA[0]*pSrcB[0] + pSrcA[1]*pSrcB[1] + ... + pSrcA[blockSize-1]*pSrcB[blockSize-1]
- * 
- * - * There are separate functions for floating-point, Q7, Q15, and Q31 data types. - */ - -/** - * @addtogroup dot_prod - * @{ - */ - -/** - * @brief Dot product of floating-point vectors. - * @param[in] *pSrcA points to the first input vector - * @param[in] *pSrcB points to the second input vector - * @param[in] blockSize number of samples in each vector - * @param[out] *result output result returned here - * @return none. - */ - - -void arm_dot_prod_f32( - float32_t * pSrcA, - float32_t * pSrcB, - uint32_t blockSize, - float32_t * result) -{ - float32_t sum = 0.0f; /* Temporary result storage */ - uint32_t blkCnt; /* loop counter */ - - -#if defined (ARM_MATH_DSP) - -/* Run the below code for Cortex-M4 and Cortex-M3 */ - /*loop Unrolling */ - blkCnt = blockSize >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - /* C = A[0]* B[0] + A[1]* B[1] + A[2]* B[2] + .....+ A[blockSize-1]* B[blockSize-1] */ - /* Calculate dot product and then store the result in a temporary buffer */ - sum += (*pSrcA++) * (*pSrcB++); - sum += (*pSrcA++) * (*pSrcB++); - sum += (*pSrcA++) * (*pSrcB++); - sum += (*pSrcA++) * (*pSrcB++); - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize % 0x4U; - -#else - - /* Run the below code for Cortex-M0 */ - - /* Initialize blkCnt with number of samples */ - blkCnt = blockSize; - -#endif /* #if defined (ARM_MATH_DSP) */ - - - while (blkCnt > 0U) - { - /* C = A[0]* B[0] + A[1]* B[1] + A[2]* B[2] + .....+ A[blockSize-1]* B[blockSize-1] */ - /* Calculate dot product and then store the result in a temporary buffer. */ - sum += (*pSrcA++) * (*pSrcB++); - - /* Decrement the loop counter */ - blkCnt--; - } - /* Store the result back in the destination buffer */ - *result = sum; -} - -/** - * @} end of dot_prod group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_dot_prod_q15.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_dot_prod_q15.c deleted file mode 100644 index dec4ec5..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_dot_prod_q15.c +++ /dev/null @@ -1,128 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_dot_prod_q15.c - * Description: Q15 dot product - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupMath - */ - -/** - * @addtogroup dot_prod - * @{ - */ - -/** - * @brief Dot product of Q15 vectors. - * @param[in] *pSrcA points to the first input vector - * @param[in] *pSrcB points to the second input vector - * @param[in] blockSize number of samples in each vector - * @param[out] *result output result returned here - * @return none. - * - * Scaling and Overflow Behavior: - * \par - * The intermediate multiplications are in 1.15 x 1.15 = 2.30 format and these - * results are added to a 64-bit accumulator in 34.30 format. - * Nonsaturating additions are used and given that there are 33 guard bits in the accumulator - * there is no risk of overflow. - * The return result is in 34.30 format. - */ - -void arm_dot_prod_q15( - q15_t * pSrcA, - q15_t * pSrcB, - uint32_t blockSize, - q63_t * result) -{ - q63_t sum = 0; /* Temporary result storage */ - uint32_t blkCnt; /* loop counter */ - -#if defined (ARM_MATH_DSP) - -/* Run the below code for Cortex-M4 and Cortex-M3 */ - - - /*loop Unrolling */ - blkCnt = blockSize >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - /* C = A[0]* B[0] + A[1]* B[1] + A[2]* B[2] + .....+ A[blockSize-1]* B[blockSize-1] */ - /* Calculate dot product and then store the result in a temporary buffer. */ - sum = __SMLALD(*__SIMD32(pSrcA)++, *__SIMD32(pSrcB)++, sum); - sum = __SMLALD(*__SIMD32(pSrcA)++, *__SIMD32(pSrcB)++, sum); - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize % 0x4U; - - while (blkCnt > 0U) - { - /* C = A[0]* B[0] + A[1]* B[1] + A[2]* B[2] + .....+ A[blockSize-1]* B[blockSize-1] */ - /* Calculate dot product and then store the results in a temporary buffer. */ - sum = __SMLALD(*pSrcA++, *pSrcB++, sum); - - /* Decrement the loop counter */ - blkCnt--; - } - - -#else - - /* Run the below code for Cortex-M0 */ - - /* Initialize blkCnt with number of samples */ - blkCnt = blockSize; - - while (blkCnt > 0U) - { - /* C = A[0]* B[0] + A[1]* B[1] + A[2]* B[2] + .....+ A[blockSize-1]* B[blockSize-1] */ - /* Calculate dot product and then store the results in a temporary buffer. */ - sum += (q63_t) ((q31_t) * pSrcA++ * *pSrcB++); - - /* Decrement the loop counter */ - blkCnt--; - } - -#endif /* #if defined (ARM_MATH_DSP) */ - - /* Store the result in the destination buffer in 34.30 format */ - *result = sum; - -} - -/** - * @} end of dot_prod group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_dot_prod_q31.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_dot_prod_q31.c deleted file mode 100644 index 67ae887..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_dot_prod_q31.c +++ /dev/null @@ -1,131 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_dot_prod_q31.c - * Description: Q31 dot product - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupMath - */ - -/** - * @addtogroup dot_prod - * @{ - */ - -/** - * @brief Dot product of Q31 vectors. - * @param[in] *pSrcA points to the first input vector - * @param[in] *pSrcB points to the second input vector - * @param[in] blockSize number of samples in each vector - * @param[out] *result output result returned here - * @return none. - * - * Scaling and Overflow Behavior: - * \par - * The intermediate multiplications are in 1.31 x 1.31 = 2.62 format and these - * are truncated to 2.48 format by discarding the lower 14 bits. - * The 2.48 result is then added without saturation to a 64-bit accumulator in 16.48 format. - * There are 15 guard bits in the accumulator and there is no risk of overflow as long as - * the length of the vectors is less than 2^16 elements. - * The return result is in 16.48 format. - */ - -void arm_dot_prod_q31( - q31_t * pSrcA, - q31_t * pSrcB, - uint32_t blockSize, - q63_t * result) -{ - q63_t sum = 0; /* Temporary result storage */ - uint32_t blkCnt; /* loop counter */ - - -#if defined (ARM_MATH_DSP) - -/* Run the below code for Cortex-M4 and Cortex-M3 */ - q31_t inA1, inA2, inA3, inA4; - q31_t inB1, inB2, inB3, inB4; - - /*loop Unrolling */ - blkCnt = blockSize >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - /* C = A[0]* B[0] + A[1]* B[1] + A[2]* B[2] + .....+ A[blockSize-1]* B[blockSize-1] */ - /* Calculate dot product and then store the result in a temporary buffer. */ - inA1 = *pSrcA++; - inA2 = *pSrcA++; - inA3 = *pSrcA++; - inA4 = *pSrcA++; - inB1 = *pSrcB++; - inB2 = *pSrcB++; - inB3 = *pSrcB++; - inB4 = *pSrcB++; - - sum += ((q63_t) inA1 * inB1) >> 14U; - sum += ((q63_t) inA2 * inB2) >> 14U; - sum += ((q63_t) inA3 * inB3) >> 14U; - sum += ((q63_t) inA4 * inB4) >> 14U; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize % 0x4U; - -#else - - /* Run the below code for Cortex-M0 */ - - /* Initialize blkCnt with number of samples */ - blkCnt = blockSize; - -#endif /* #if defined (ARM_MATH_DSP) */ - - - while (blkCnt > 0U) - { - /* C = A[0]* B[0] + A[1]* B[1] + A[2]* B[2] + .....+ A[blockSize-1]* B[blockSize-1] */ - /* Calculate dot product and then store the result in a temporary buffer. */ - sum += ((q63_t) * pSrcA++ * *pSrcB++) >> 14U; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* Store the result in the destination buffer in 16.48 format */ - *result = sum; -} - -/** - * @} end of dot_prod group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_dot_prod_q7.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_dot_prod_q7.c deleted file mode 100644 index 487efe3..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_dot_prod_q7.c +++ /dev/null @@ -1,147 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_dot_prod_q7.c - * Description: Q7 dot product - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupMath - */ - -/** - * @addtogroup dot_prod - * @{ - */ - -/** - * @brief Dot product of Q7 vectors. - * @param[in] *pSrcA points to the first input vector - * @param[in] *pSrcB points to the second input vector - * @param[in] blockSize number of samples in each vector - * @param[out] *result output result returned here - * @return none. - * - * Scaling and Overflow Behavior: - * \par - * The intermediate multiplications are in 1.7 x 1.7 = 2.14 format and these - * results are added to an accumulator in 18.14 format. - * Nonsaturating additions are used and there is no danger of wrap around as long as - * the vectors are less than 2^18 elements long. - * The return result is in 18.14 format. - */ - -void arm_dot_prod_q7( - q7_t * pSrcA, - q7_t * pSrcB, - uint32_t blockSize, - q31_t * result) -{ - uint32_t blkCnt; /* loop counter */ - - q31_t sum = 0; /* Temporary variables to store output */ - -#if defined (ARM_MATH_DSP) - -/* Run the below code for Cortex-M4 and Cortex-M3 */ - - q31_t input1, input2; /* Temporary variables to store input */ - q31_t inA1, inA2, inB1, inB2; /* Temporary variables to store input */ - - - - /*loop Unrolling */ - blkCnt = blockSize >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - /* read 4 samples at a time from sourceA */ - input1 = *__SIMD32(pSrcA)++; - /* read 4 samples at a time from sourceB */ - input2 = *__SIMD32(pSrcB)++; - - /* extract two q7_t samples to q15_t samples */ - inA1 = __SXTB16(__ROR(input1, 8)); - /* extract reminaing two samples */ - inA2 = __SXTB16(input1); - /* extract two q7_t samples to q15_t samples */ - inB1 = __SXTB16(__ROR(input2, 8)); - /* extract reminaing two samples */ - inB2 = __SXTB16(input2); - - /* multiply and accumulate two samples at a time */ - sum = __SMLAD(inA1, inB1, sum); - sum = __SMLAD(inA2, inB2, sum); - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize % 0x4U; - - while (blkCnt > 0U) - { - /* C = A[0]* B[0] + A[1]* B[1] + A[2]* B[2] + .....+ A[blockSize-1]* B[blockSize-1] */ - /* Dot product and then store the results in a temporary buffer. */ - sum = __SMLAD(*pSrcA++, *pSrcB++, sum); - - /* Decrement the loop counter */ - blkCnt--; - } - -#else - - /* Run the below code for Cortex-M0 */ - - - - /* Initialize blkCnt with number of samples */ - blkCnt = blockSize; - - while (blkCnt > 0U) - { - /* C = A[0]* B[0] + A[1]* B[1] + A[2]* B[2] + .....+ A[blockSize-1]* B[blockSize-1] */ - /* Dot product and then store the results in a temporary buffer. */ - sum += (q31_t) ((q15_t) * pSrcA++ * *pSrcB++); - - /* Decrement the loop counter */ - blkCnt--; - } - -#endif /* #if defined (ARM_MATH_DSP) */ - - - /* Store the result in the destination buffer in 18.14 format */ - *result = sum; -} - -/** - * @} end of dot_prod group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_mult_f32.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_mult_f32.c deleted file mode 100644 index e4a9ef2..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_mult_f32.c +++ /dev/null @@ -1,162 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_mult_f32.c - * Description: Floating-point vector multiplication - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupMath - */ - -/** - * @defgroup BasicMult Vector Multiplication - * - * Element-by-element multiplication of two vectors. - * - *
- *     pDst[n] = pSrcA[n] * pSrcB[n],   0 <= n < blockSize.
- * 
- * - * There are separate functions for floating-point, Q7, Q15, and Q31 data types. - */ - -/** - * @addtogroup BasicMult - * @{ - */ - -/** - * @brief Floating-point vector multiplication. - * @param[in] *pSrcA points to the first input vector - * @param[in] *pSrcB points to the second input vector - * @param[out] *pDst points to the output vector - * @param[in] blockSize number of samples in each vector - * @return none. - */ - -void arm_mult_f32( - float32_t * pSrcA, - float32_t * pSrcB, - float32_t * pDst, - uint32_t blockSize) -{ - uint32_t blkCnt; /* loop counters */ -#if defined (ARM_MATH_DSP) - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - float32_t inA1, inA2, inA3, inA4; /* temporary input variables */ - float32_t inB1, inB2, inB3, inB4; /* temporary input variables */ - float32_t out1, out2, out3, out4; /* temporary output variables */ - - /* loop Unrolling */ - blkCnt = blockSize >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - /* C = A * B */ - /* Multiply the inputs and store the results in output buffer */ - /* read sample from sourceA */ - inA1 = *pSrcA; - /* read sample from sourceB */ - inB1 = *pSrcB; - /* read sample from sourceA */ - inA2 = *(pSrcA + 1); - /* read sample from sourceB */ - inB2 = *(pSrcB + 1); - - /* out = sourceA * sourceB */ - out1 = inA1 * inB1; - - /* read sample from sourceA */ - inA3 = *(pSrcA + 2); - /* read sample from sourceB */ - inB3 = *(pSrcB + 2); - - /* out = sourceA * sourceB */ - out2 = inA2 * inB2; - - /* read sample from sourceA */ - inA4 = *(pSrcA + 3); - - /* store result to destination buffer */ - *pDst = out1; - - /* read sample from sourceB */ - inB4 = *(pSrcB + 3); - - /* out = sourceA * sourceB */ - out3 = inA3 * inB3; - - /* store result to destination buffer */ - *(pDst + 1) = out2; - - /* out = sourceA * sourceB */ - out4 = inA4 * inB4; - /* store result to destination buffer */ - *(pDst + 2) = out3; - /* store result to destination buffer */ - *(pDst + 3) = out4; - - - /* update pointers to process next samples */ - pSrcA += 4U; - pSrcB += 4U; - pDst += 4U; - - /* Decrement the blockSize loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize % 0x4U; - -#else - - /* Run the below code for Cortex-M0 */ - - /* Initialize blkCnt with number of samples */ - blkCnt = blockSize; - -#endif /* #if defined (ARM_MATH_DSP) */ - - while (blkCnt > 0U) - { - /* C = A * B */ - /* Multiply the inputs and store the results in output buffer */ - *pDst++ = (*pSrcA++) * (*pSrcB++); - - /* Decrement the blockSize loop counter */ - blkCnt--; - } -} - -/** - * @} end of BasicMult group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_mult_q15.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_mult_q15.c deleted file mode 100644 index 8e20963..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_mult_q15.c +++ /dev/null @@ -1,142 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_mult_q15.c - * Description: Q15 vector multiplication - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupMath - */ - -/** - * @addtogroup BasicMult - * @{ - */ - - -/** - * @brief Q15 vector multiplication - * @param[in] *pSrcA points to the first input vector - * @param[in] *pSrcB points to the second input vector - * @param[out] *pDst points to the output vector - * @param[in] blockSize number of samples in each vector - * @return none. - * - * Scaling and Overflow Behavior: - * \par - * The function uses saturating arithmetic. - * Results outside of the allowable Q15 range [0x8000 0x7FFF] will be saturated. - */ - -void arm_mult_q15( - q15_t * pSrcA, - q15_t * pSrcB, - q15_t * pDst, - uint32_t blockSize) -{ - uint32_t blkCnt; /* loop counters */ - -#if defined (ARM_MATH_DSP) - -/* Run the below code for Cortex-M4 and Cortex-M3 */ - q31_t inA1, inA2, inB1, inB2; /* temporary input variables */ - q15_t out1, out2, out3, out4; /* temporary output variables */ - q31_t mul1, mul2, mul3, mul4; /* temporary variables */ - - /* loop Unrolling */ - blkCnt = blockSize >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - /* read two samples at a time from sourceA */ - inA1 = *__SIMD32(pSrcA)++; - /* read two samples at a time from sourceB */ - inB1 = *__SIMD32(pSrcB)++; - /* read two samples at a time from sourceA */ - inA2 = *__SIMD32(pSrcA)++; - /* read two samples at a time from sourceB */ - inB2 = *__SIMD32(pSrcB)++; - - /* multiply mul = sourceA * sourceB */ - mul1 = (q31_t) ((q15_t) (inA1 >> 16) * (q15_t) (inB1 >> 16)); - mul2 = (q31_t) ((q15_t) inA1 * (q15_t) inB1); - mul3 = (q31_t) ((q15_t) (inA2 >> 16) * (q15_t) (inB2 >> 16)); - mul4 = (q31_t) ((q15_t) inA2 * (q15_t) inB2); - - /* saturate result to 16 bit */ - out1 = (q15_t) __SSAT(mul1 >> 15, 16); - out2 = (q15_t) __SSAT(mul2 >> 15, 16); - out3 = (q15_t) __SSAT(mul3 >> 15, 16); - out4 = (q15_t) __SSAT(mul4 >> 15, 16); - - /* store the result */ -#ifndef ARM_MATH_BIG_ENDIAN - - *__SIMD32(pDst)++ = __PKHBT(out2, out1, 16); - *__SIMD32(pDst)++ = __PKHBT(out4, out3, 16); - -#else - - *__SIMD32(pDst)++ = __PKHBT(out2, out1, 16); - *__SIMD32(pDst)++ = __PKHBT(out4, out3, 16); - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - /* Decrement the blockSize loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize % 0x4U; - -#else - - /* Run the below code for Cortex-M0 */ - - /* Initialize blkCnt with number of samples */ - blkCnt = blockSize; - -#endif /* #if defined (ARM_MATH_DSP) */ - - - while (blkCnt > 0U) - { - /* C = A * B */ - /* Multiply the inputs and store the result in the destination buffer */ - *pDst++ = (q15_t) __SSAT((((q31_t) (*pSrcA++) * (*pSrcB++)) >> 15), 16); - - /* Decrement the blockSize loop counter */ - blkCnt--; - } -} - -/** - * @} end of BasicMult group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_mult_q31.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_mult_q31.c deleted file mode 100644 index c302b01..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_mult_q31.c +++ /dev/null @@ -1,148 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_mult_q31.c - * Description: Q31 vector multiplication - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupMath - */ - -/** - * @addtogroup BasicMult - * @{ - */ - -/** - * @brief Q31 vector multiplication. - * @param[in] *pSrcA points to the first input vector - * @param[in] *pSrcB points to the second input vector - * @param[out] *pDst points to the output vector - * @param[in] blockSize number of samples in each vector - * @return none. - * - * Scaling and Overflow Behavior: - * \par - * The function uses saturating arithmetic. - * Results outside of the allowable Q31 range[0x80000000 0x7FFFFFFF] will be saturated. - */ - -void arm_mult_q31( - q31_t * pSrcA, - q31_t * pSrcB, - q31_t * pDst, - uint32_t blockSize) -{ - uint32_t blkCnt; /* loop counters */ - -#if defined (ARM_MATH_DSP) - -/* Run the below code for Cortex-M4 and Cortex-M3 */ - q31_t inA1, inA2, inA3, inA4; /* temporary input variables */ - q31_t inB1, inB2, inB3, inB4; /* temporary input variables */ - q31_t out1, out2, out3, out4; /* temporary output variables */ - - /* loop Unrolling */ - blkCnt = blockSize >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - /* C = A * B */ - /* Multiply the inputs and then store the results in the destination buffer. */ - inA1 = *pSrcA++; - inA2 = *pSrcA++; - inA3 = *pSrcA++; - inA4 = *pSrcA++; - inB1 = *pSrcB++; - inB2 = *pSrcB++; - inB3 = *pSrcB++; - inB4 = *pSrcB++; - - out1 = ((q63_t) inA1 * inB1) >> 32; - out2 = ((q63_t) inA2 * inB2) >> 32; - out3 = ((q63_t) inA3 * inB3) >> 32; - out4 = ((q63_t) inA4 * inB4) >> 32; - - out1 = __SSAT(out1, 31); - out2 = __SSAT(out2, 31); - out3 = __SSAT(out3, 31); - out4 = __SSAT(out4, 31); - - *pDst++ = out1 << 1U; - *pDst++ = out2 << 1U; - *pDst++ = out3 << 1U; - *pDst++ = out4 << 1U; - - /* Decrement the blockSize loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize % 0x4U; - - while (blkCnt > 0U) - { - /* C = A * B */ - /* Multiply the inputs and then store the results in the destination buffer. */ - inA1 = *pSrcA++; - inB1 = *pSrcB++; - out1 = ((q63_t) inA1 * inB1) >> 32; - out1 = __SSAT(out1, 31); - *pDst++ = out1 << 1U; - - /* Decrement the blockSize loop counter */ - blkCnt--; - } - -#else - - /* Run the below code for Cortex-M0 */ - - /* Initialize blkCnt with number of samples */ - blkCnt = blockSize; - - - while (blkCnt > 0U) - { - /* C = A * B */ - /* Multiply the inputs and then store the results in the destination buffer. */ - *pDst++ = - (q31_t) clip_q63_to_q31(((q63_t) (*pSrcA++) * (*pSrcB++)) >> 31); - - /* Decrement the blockSize loop counter */ - blkCnt--; - } - -#endif /* #if defined (ARM_MATH_DSP) */ -} - -/** - * @} end of BasicMult group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_mult_q7.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_mult_q7.c deleted file mode 100644 index d8a2f8a..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_mult_q7.c +++ /dev/null @@ -1,115 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_mult_q7.c - * Description: Q7 vector multiplication - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupMath - */ - -/** - * @addtogroup BasicMult - * @{ - */ - -/** - * @brief Q7 vector multiplication - * @param[in] *pSrcA points to the first input vector - * @param[in] *pSrcB points to the second input vector - * @param[out] *pDst points to the output vector - * @param[in] blockSize number of samples in each vector - * @return none. - * - * Scaling and Overflow Behavior: - * \par - * The function uses saturating arithmetic. - * Results outside of the allowable Q7 range [0x80 0x7F] will be saturated. - */ - -void arm_mult_q7( - q7_t * pSrcA, - q7_t * pSrcB, - q7_t * pDst, - uint32_t blockSize) -{ - uint32_t blkCnt; /* loop counters */ - -#if defined (ARM_MATH_DSP) - -/* Run the below code for Cortex-M4 and Cortex-M3 */ - q7_t out1, out2, out3, out4; /* Temporary variables to store the product */ - - /* loop Unrolling */ - blkCnt = blockSize >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - /* C = A * B */ - /* Multiply the inputs and store the results in temporary variables */ - out1 = (q7_t) __SSAT((((q15_t) (*pSrcA++) * (*pSrcB++)) >> 7), 8); - out2 = (q7_t) __SSAT((((q15_t) (*pSrcA++) * (*pSrcB++)) >> 7), 8); - out3 = (q7_t) __SSAT((((q15_t) (*pSrcA++) * (*pSrcB++)) >> 7), 8); - out4 = (q7_t) __SSAT((((q15_t) (*pSrcA++) * (*pSrcB++)) >> 7), 8); - - /* Store the results of 4 inputs in the destination buffer in single cycle by packing */ - *__SIMD32(pDst)++ = __PACKq7(out1, out2, out3, out4); - - /* Decrement the blockSize loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize % 0x4U; - -#else - - /* Run the below code for Cortex-M0 */ - - /* Initialize blkCnt with number of samples */ - blkCnt = blockSize; - -#endif /* #if defined (ARM_MATH_DSP) */ - - - while (blkCnt > 0U) - { - /* C = A * B */ - /* Multiply the inputs and store the result in the destination buffer */ - *pDst++ = (q7_t) __SSAT((((q15_t) (*pSrcA++) * (*pSrcB++)) >> 7), 8); - - /* Decrement the blockSize loop counter */ - blkCnt--; - } -} - -/** - * @} end of BasicMult group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_negate_f32.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_negate_f32.c deleted file mode 100644 index e39624c..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_negate_f32.c +++ /dev/null @@ -1,134 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_negate_f32.c - * Description: Negates floating-point vectors - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupMath - */ - -/** - * @defgroup negate Vector Negate - * - * Negates the elements of a vector. - * - *
- *     pDst[n] = -pSrc[n],   0 <= n < blockSize.
- * 
- * - * The functions support in-place computation allowing the source and - * destination pointers to reference the same memory buffer. - * There are separate functions for floating-point, Q7, Q15, and Q31 data types. - */ - -/** - * @addtogroup negate - * @{ - */ - -/** - * @brief Negates the elements of a floating-point vector. - * @param[in] *pSrc points to the input vector - * @param[out] *pDst points to the output vector - * @param[in] blockSize number of samples in the vector - * @return none. - */ - -void arm_negate_f32( - float32_t * pSrc, - float32_t * pDst, - uint32_t blockSize) -{ - uint32_t blkCnt; /* loop counter */ - - -#if defined (ARM_MATH_DSP) - -/* Run the below code for Cortex-M4 and Cortex-M3 */ - float32_t in1, in2, in3, in4; /* temporary variables */ - - /*loop Unrolling */ - blkCnt = blockSize >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - /* read inputs from source */ - in1 = *pSrc; - in2 = *(pSrc + 1); - in3 = *(pSrc + 2); - in4 = *(pSrc + 3); - - /* negate the input */ - in1 = -in1; - in2 = -in2; - in3 = -in3; - in4 = -in4; - - /* store the result to destination */ - *pDst = in1; - *(pDst + 1) = in2; - *(pDst + 2) = in3; - *(pDst + 3) = in4; - - /* update pointers to process next samples */ - pSrc += 4U; - pDst += 4U; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize % 0x4U; - -#else - - /* Run the below code for Cortex-M0 */ - - /* Initialize blkCnt with number of samples */ - blkCnt = blockSize; - -#endif /* #if defined (ARM_MATH_DSP) */ - - while (blkCnt > 0U) - { - /* C = -A */ - /* Negate and then store the results in the destination buffer. */ - *pDst++ = -*pSrc++; - - /* Decrement the loop counter */ - blkCnt--; - } -} - -/** - * @} end of negate group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_negate_q15.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_negate_q15.c deleted file mode 100644 index 9624160..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_negate_q15.c +++ /dev/null @@ -1,131 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_negate_q15.c - * Description: Negates Q15 vectors - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupMath - */ - -/** - * @addtogroup negate - * @{ - */ - -/** - * @brief Negates the elements of a Q15 vector. - * @param[in] *pSrc points to the input vector - * @param[out] *pDst points to the output vector - * @param[in] blockSize number of samples in the vector - * @return none. - * - * \par Conditions for optimum performance - * Input and output buffers should be aligned by 32-bit - * - * - * Scaling and Overflow Behavior: - * \par - * The function uses saturating arithmetic. - * The Q15 value -1 (0x8000) will be saturated to the maximum allowable positive value 0x7FFF. - */ - -void arm_negate_q15( - q15_t * pSrc, - q15_t * pDst, - uint32_t blockSize) -{ - uint32_t blkCnt; /* loop counter */ - q15_t in; - -#if defined (ARM_MATH_DSP) - -/* Run the below code for Cortex-M4 and Cortex-M3 */ - - q31_t in1, in2; /* Temporary variables */ - - - /*loop Unrolling */ - blkCnt = blockSize >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - /* C = -A */ - /* Read two inputs at a time */ - in1 = _SIMD32_OFFSET(pSrc); - in2 = _SIMD32_OFFSET(pSrc + 2); - - /* negate two samples at a time */ - in1 = __QSUB16(0, in1); - - /* negate two samples at a time */ - in2 = __QSUB16(0, in2); - - /* store the result to destination 2 samples at a time */ - _SIMD32_OFFSET(pDst) = in1; - /* store the result to destination 2 samples at a time */ - _SIMD32_OFFSET(pDst + 2) = in2; - - - /* update pointers to process next samples */ - pSrc += 4U; - pDst += 4U; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize % 0x4U; - -#else - - /* Run the below code for Cortex-M0 */ - - /* Initialize blkCnt with number of samples */ - blkCnt = blockSize; - -#endif /* #if defined (ARM_MATH_DSP) */ - - while (blkCnt > 0U) - { - /* C = -A */ - /* Negate and then store the result in the destination buffer. */ - in = *pSrc++; - *pDst++ = (in == (q15_t) 0x8000) ? 0x7fff : -in; - - /* Decrement the loop counter */ - blkCnt--; - } -} - -/** - * @} end of negate group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_negate_q31.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_negate_q31.c deleted file mode 100644 index 4a5a58d..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_negate_q31.c +++ /dev/null @@ -1,117 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_negate_q31.c - * Description: Negates Q31 vectors - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupMath - */ - -/** - * @addtogroup negate - * @{ - */ - -/** - * @brief Negates the elements of a Q31 vector. - * @param[in] *pSrc points to the input vector - * @param[out] *pDst points to the output vector - * @param[in] blockSize number of samples in the vector - * @return none. - * - * Scaling and Overflow Behavior: - * \par - * The function uses saturating arithmetic. - * The Q31 value -1 (0x80000000) will be saturated to the maximum allowable positive value 0x7FFFFFFF. - */ - -void arm_negate_q31( - q31_t * pSrc, - q31_t * pDst, - uint32_t blockSize) -{ - q31_t in; /* Temporary variable */ - uint32_t blkCnt; /* loop counter */ - -#if defined (ARM_MATH_DSP) - -/* Run the below code for Cortex-M4 and Cortex-M3 */ - q31_t in1, in2, in3, in4; - - /*loop Unrolling */ - blkCnt = blockSize >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - /* C = -A */ - /* Negate and then store the results in the destination buffer. */ - in1 = *pSrc++; - in2 = *pSrc++; - in3 = *pSrc++; - in4 = *pSrc++; - - *pDst++ = __QSUB(0, in1); - *pDst++ = __QSUB(0, in2); - *pDst++ = __QSUB(0, in3); - *pDst++ = __QSUB(0, in4); - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize % 0x4U; - -#else - - /* Run the below code for Cortex-M0 */ - - /* Initialize blkCnt with number of samples */ - blkCnt = blockSize; - -#endif /* #if defined (ARM_MATH_DSP) */ - - - while (blkCnt > 0U) - { - /* C = -A */ - /* Negate and then store the result in the destination buffer. */ - in = *pSrc++; - *pDst++ = (in == INT32_MIN) ? INT32_MAX : -in; - - /* Decrement the loop counter */ - blkCnt--; - } -} - -/** - * @} end of negate group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_negate_q7.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_negate_q7.c deleted file mode 100644 index d72c317..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_negate_q7.c +++ /dev/null @@ -1,113 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_negate_q7.c - * Description: Negates Q7 vectors - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupMath - */ - -/** - * @addtogroup negate - * @{ - */ - -/** - * @brief Negates the elements of a Q7 vector. - * @param[in] *pSrc points to the input vector - * @param[out] *pDst points to the output vector - * @param[in] blockSize number of samples in the vector - * @return none. - * - * Scaling and Overflow Behavior: - * \par - * The function uses saturating arithmetic. - * The Q7 value -1 (0x80) will be saturated to the maximum allowable positive value 0x7F. - */ - -void arm_negate_q7( - q7_t * pSrc, - q7_t * pDst, - uint32_t blockSize) -{ - uint32_t blkCnt; /* loop counter */ - q7_t in; - -#if defined (ARM_MATH_DSP) - -/* Run the below code for Cortex-M4 and Cortex-M3 */ - q31_t input; /* Input values1-4 */ - q31_t zero = 0x00000000; - - - /*loop Unrolling */ - blkCnt = blockSize >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - /* C = -A */ - /* Read four inputs */ - input = *__SIMD32(pSrc)++; - - /* Store the Negated results in the destination buffer in a single cycle by packing the results */ - *__SIMD32(pDst)++ = __QSUB8(zero, input); - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize % 0x4U; - -#else - - /* Run the below code for Cortex-M0 */ - - /* Initialize blkCnt with number of samples */ - blkCnt = blockSize; - -#endif /* #if defined (ARM_MATH_DSP) */ - - while (blkCnt > 0U) - { - /* C = -A */ - /* Negate and then store the results in the destination buffer. */ \ - in = *pSrc++; - *pDst++ = (in == (q7_t) 0x80) ? 0x7f : -in; - - /* Decrement the loop counter */ - blkCnt--; - } -} - -/** - * @} end of negate group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_offset_f32.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_offset_f32.c deleted file mode 100644 index ebc20a4..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_offset_f32.c +++ /dev/null @@ -1,154 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_offset_f32.c - * Description: Floating-point vector offset - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupMath - */ - -/** - * @defgroup offset Vector Offset - * - * Adds a constant offset to each element of a vector. - * - *
- *     pDst[n] = pSrc[n] + offset,   0 <= n < blockSize.
- * 
- * - * The functions support in-place computation allowing the source and - * destination pointers to reference the same memory buffer. - * There are separate functions for floating-point, Q7, Q15, and Q31 data types. - */ - -/** - * @addtogroup offset - * @{ - */ - -/** - * @brief Adds a constant offset to a floating-point vector. - * @param[in] *pSrc points to the input vector - * @param[in] offset is the offset to be added - * @param[out] *pDst points to the output vector - * @param[in] blockSize number of samples in the vector - * @return none. - */ - - -void arm_offset_f32( - float32_t * pSrc, - float32_t offset, - float32_t * pDst, - uint32_t blockSize) -{ - uint32_t blkCnt; /* loop counter */ - -#if defined (ARM_MATH_DSP) - -/* Run the below code for Cortex-M4 and Cortex-M3 */ - float32_t in1, in2, in3, in4; - - /*loop Unrolling */ - blkCnt = blockSize >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - /* C = A + offset */ - /* Add offset and then store the results in the destination buffer. */ - /* read samples from source */ - in1 = *pSrc; - in2 = *(pSrc + 1); - - /* add offset to input */ - in1 = in1 + offset; - - /* read samples from source */ - in3 = *(pSrc + 2); - - /* add offset to input */ - in2 = in2 + offset; - - /* read samples from source */ - in4 = *(pSrc + 3); - - /* add offset to input */ - in3 = in3 + offset; - - /* store result to destination */ - *pDst = in1; - - /* add offset to input */ - in4 = in4 + offset; - - /* store result to destination */ - *(pDst + 1) = in2; - - /* store result to destination */ - *(pDst + 2) = in3; - - /* store result to destination */ - *(pDst + 3) = in4; - - /* update pointers to process next samples */ - pSrc += 4U; - pDst += 4U; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize % 0x4U; - -#else - - /* Run the below code for Cortex-M0 */ - - /* Initialize blkCnt with number of samples */ - blkCnt = blockSize; - -#endif /* #if defined (ARM_MATH_DSP) */ - - while (blkCnt > 0U) - { - /* C = A + offset */ - /* Add offset and then store the result in the destination buffer. */ - *pDst++ = (*pSrc++) + offset; - - /* Decrement the loop counter */ - blkCnt--; - } -} - -/** - * @} end of offset group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_offset_q15.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_offset_q15.c deleted file mode 100644 index dab0b10..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_offset_q15.c +++ /dev/null @@ -1,124 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_offset_q15.c - * Description: Q15 vector offset - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupMath - */ - -/** - * @addtogroup offset - * @{ - */ - -/** - * @brief Adds a constant offset to a Q15 vector. - * @param[in] *pSrc points to the input vector - * @param[in] offset is the offset to be added - * @param[out] *pDst points to the output vector - * @param[in] blockSize number of samples in the vector - * @return none. - * - * Scaling and Overflow Behavior: - * \par - * The function uses saturating arithmetic. - * Results outside of the allowable Q15 range [0x8000 0x7FFF] are saturated. - */ - -void arm_offset_q15( - q15_t * pSrc, - q15_t offset, - q15_t * pDst, - uint32_t blockSize) -{ - uint32_t blkCnt; /* loop counter */ - -#if defined (ARM_MATH_DSP) - -/* Run the below code for Cortex-M4 and Cortex-M3 */ - q31_t offset_packed; /* Offset packed to 32 bit */ - - - /*loop Unrolling */ - blkCnt = blockSize >> 2U; - - /* Offset is packed to 32 bit in order to use SIMD32 for addition */ - offset_packed = __PKHBT(offset, offset, 16); - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - /* C = A + offset */ - /* Add offset and then store the results in the destination buffer, 2 samples at a time. */ - *__SIMD32(pDst)++ = __QADD16(*__SIMD32(pSrc)++, offset_packed); - *__SIMD32(pDst)++ = __QADD16(*__SIMD32(pSrc)++, offset_packed); - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize % 0x4U; - - while (blkCnt > 0U) - { - /* C = A + offset */ - /* Add offset and then store the results in the destination buffer. */ - *pDst++ = (q15_t) __QADD16(*pSrc++, offset); - - /* Decrement the loop counter */ - blkCnt--; - } - -#else - - /* Run the below code for Cortex-M0 */ - - /* Initialize blkCnt with number of samples */ - blkCnt = blockSize; - - while (blkCnt > 0U) - { - /* C = A + offset */ - /* Add offset and then store the results in the destination buffer. */ - *pDst++ = (q15_t) __SSAT(((q31_t) * pSrc++ + offset), 16); - - /* Decrement the loop counter */ - blkCnt--; - } - -#endif /* #if defined (ARM_MATH_DSP) */ - -} - -/** - * @} end of offset group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_offset_q31.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_offset_q31.c deleted file mode 100644 index 655426e..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_offset_q31.c +++ /dev/null @@ -1,128 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_offset_q31.c - * Description: Q31 vector offset - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupMath - */ - -/** - * @addtogroup offset - * @{ - */ - -/** - * @brief Adds a constant offset to a Q31 vector. - * @param[in] *pSrc points to the input vector - * @param[in] offset is the offset to be added - * @param[out] *pDst points to the output vector - * @param[in] blockSize number of samples in the vector - * @return none. - * - * Scaling and Overflow Behavior: - * \par - * The function uses saturating arithmetic. - * Results outside of the allowable Q31 range [0x80000000 0x7FFFFFFF] are saturated. - */ - -void arm_offset_q31( - q31_t * pSrc, - q31_t offset, - q31_t * pDst, - uint32_t blockSize) -{ - uint32_t blkCnt; /* loop counter */ - -#if defined (ARM_MATH_DSP) - -/* Run the below code for Cortex-M4 and Cortex-M3 */ - q31_t in1, in2, in3, in4; - - - /*loop Unrolling */ - blkCnt = blockSize >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - /* C = A + offset */ - /* Add offset and then store the results in the destination buffer. */ - in1 = *pSrc++; - in2 = *pSrc++; - in3 = *pSrc++; - in4 = *pSrc++; - - *pDst++ = __QADD(in1, offset); - *pDst++ = __QADD(in2, offset); - *pDst++ = __QADD(in3, offset); - *pDst++ = __QADD(in4, offset); - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize % 0x4U; - - while (blkCnt > 0U) - { - /* C = A + offset */ - /* Add offset and then store the result in the destination buffer. */ - *pDst++ = __QADD(*pSrc++, offset); - - /* Decrement the loop counter */ - blkCnt--; - } - -#else - - /* Run the below code for Cortex-M0 */ - - /* Initialize blkCnt with number of samples */ - blkCnt = blockSize; - - while (blkCnt > 0U) - { - /* C = A + offset */ - /* Add offset and then store the result in the destination buffer. */ - *pDst++ = (q31_t) clip_q63_to_q31((q63_t) * pSrc++ + offset); - - /* Decrement the loop counter */ - blkCnt--; - } - -#endif /* #if defined (ARM_MATH_DSP) */ - -} - -/** - * @} end of offset group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_offset_q7.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_offset_q7.c deleted file mode 100644 index 5de6241..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_offset_q7.c +++ /dev/null @@ -1,123 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_offset_q7.c - * Description: Q7 vector offset - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupMath - */ - -/** - * @addtogroup offset - * @{ - */ - -/** - * @brief Adds a constant offset to a Q7 vector. - * @param[in] *pSrc points to the input vector - * @param[in] offset is the offset to be added - * @param[out] *pDst points to the output vector - * @param[in] blockSize number of samples in the vector - * @return none. - * - * Scaling and Overflow Behavior: - * \par - * The function uses saturating arithmetic. - * Results outside of the allowable Q7 range [0x80 0x7F] are saturated. - */ - -void arm_offset_q7( - q7_t * pSrc, - q7_t offset, - q7_t * pDst, - uint32_t blockSize) -{ - uint32_t blkCnt; /* loop counter */ - -#if defined (ARM_MATH_DSP) - -/* Run the below code for Cortex-M4 and Cortex-M3 */ - q31_t offset_packed; /* Offset packed to 32 bit */ - - - /*loop Unrolling */ - blkCnt = blockSize >> 2U; - - /* Offset is packed to 32 bit in order to use SIMD32 for addition */ - offset_packed = __PACKq7(offset, offset, offset, offset); - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - /* C = A + offset */ - /* Add offset and then store the results in the destination bufferfor 4 samples at a time. */ - *__SIMD32(pDst)++ = __QADD8(*__SIMD32(pSrc)++, offset_packed); - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize % 0x4U; - - while (blkCnt > 0U) - { - /* C = A + offset */ - /* Add offset and then store the result in the destination buffer. */ - *pDst++ = (q7_t) __SSAT(*pSrc++ + offset, 8); - - /* Decrement the loop counter */ - blkCnt--; - } - -#else - - /* Run the below code for Cortex-M0 */ - - /* Initialize blkCnt with number of samples */ - blkCnt = blockSize; - - while (blkCnt > 0U) - { - /* C = A + offset */ - /* Add offset and then store the result in the destination buffer. */ - *pDst++ = (q7_t) __SSAT((q15_t) * pSrc++ + offset, 8); - - /* Decrement the loop counter */ - blkCnt--; - } - -#endif /* #if defined (ARM_MATH_DSP) */ - -} - -/** - * @} end of offset group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_scale_f32.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_scale_f32.c deleted file mode 100644 index c90c037..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_scale_f32.c +++ /dev/null @@ -1,157 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_scale_f32.c - * Description: Multiplies a floating-point vector by a scalar - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupMath - */ - -/** - * @defgroup scale Vector Scale - * - * Multiply a vector by a scalar value. For floating-point data, the algorithm used is: - * - *
- *     pDst[n] = pSrc[n] * scale,   0 <= n < blockSize.
- * 
- * - * In the fixed-point Q7, Q15, and Q31 functions, scale is represented by - * a fractional multiplication scaleFract and an arithmetic shift shift. - * The shift allows the gain of the scaling operation to exceed 1.0. - * The algorithm used with fixed-point data is: - * - *
- *     pDst[n] = (pSrc[n] * scaleFract) << shift,   0 <= n < blockSize.
- * 
- * - * The overall scale factor applied to the fixed-point data is - *
- *     scale = scaleFract * 2^shift.
- * 
- * - * The functions support in-place computation allowing the source and destination - * pointers to reference the same memory buffer. - */ - -/** - * @addtogroup scale - * @{ - */ - -/** - * @brief Multiplies a floating-point vector by a scalar. - * @param[in] *pSrc points to the input vector - * @param[in] scale scale factor to be applied - * @param[out] *pDst points to the output vector - * @param[in] blockSize number of samples in the vector - * @return none. - */ - - -void arm_scale_f32( - float32_t * pSrc, - float32_t scale, - float32_t * pDst, - uint32_t blockSize) -{ - uint32_t blkCnt; /* loop counter */ -#if defined (ARM_MATH_DSP) - -/* Run the below code for Cortex-M4 and Cortex-M3 */ - float32_t in1, in2, in3, in4; /* temporary variabels */ - - /*loop Unrolling */ - blkCnt = blockSize >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - /* C = A * scale */ - /* Scale the input and then store the results in the destination buffer. */ - /* read input samples from source */ - in1 = *pSrc; - in2 = *(pSrc + 1); - - /* multiply with scaling factor */ - in1 = in1 * scale; - - /* read input sample from source */ - in3 = *(pSrc + 2); - - /* multiply with scaling factor */ - in2 = in2 * scale; - - /* read input sample from source */ - in4 = *(pSrc + 3); - - /* multiply with scaling factor */ - in3 = in3 * scale; - in4 = in4 * scale; - /* store the result to destination */ - *pDst = in1; - *(pDst + 1) = in2; - *(pDst + 2) = in3; - *(pDst + 3) = in4; - - /* update pointers to process next samples */ - pSrc += 4U; - pDst += 4U; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize % 0x4U; - -#else - - /* Run the below code for Cortex-M0 */ - - /* Initialize blkCnt with number of samples */ - blkCnt = blockSize; - -#endif /* #if defined (ARM_MATH_DSP) */ - - while (blkCnt > 0U) - { - /* C = A * scale */ - /* Scale the input and then store the result in the destination buffer. */ - *pDst++ = (*pSrc++) * scale; - - /* Decrement the loop counter */ - blkCnt--; - } -} - -/** - * @} end of scale group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_scale_q15.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_scale_q15.c deleted file mode 100644 index 9d5727d..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_scale_q15.c +++ /dev/null @@ -1,150 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_scale_q15.c - * Description: Multiplies a Q15 vector by a scalar - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupMath - */ - -/** - * @addtogroup scale - * @{ - */ - -/** - * @brief Multiplies a Q15 vector by a scalar. - * @param[in] *pSrc points to the input vector - * @param[in] scaleFract fractional portion of the scale value - * @param[in] shift number of bits to shift the result by - * @param[out] *pDst points to the output vector - * @param[in] blockSize number of samples in the vector - * @return none. - * - * Scaling and Overflow Behavior: - * \par - * The input data *pSrc and scaleFract are in 1.15 format. - * These are multiplied to yield a 2.30 intermediate result and this is shifted with saturation to 1.15 format. - */ - - -void arm_scale_q15( - q15_t * pSrc, - q15_t scaleFract, - int8_t shift, - q15_t * pDst, - uint32_t blockSize) -{ - int8_t kShift = 15 - shift; /* shift to apply after scaling */ - uint32_t blkCnt; /* loop counter */ - -#if defined (ARM_MATH_DSP) - -/* Run the below code for Cortex-M4 and Cortex-M3 */ - q15_t in1, in2, in3, in4; - q31_t inA1, inA2; /* Temporary variables */ - q31_t out1, out2, out3, out4; - - - /*loop Unrolling */ - blkCnt = blockSize >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - /* Reading 2 inputs from memory */ - inA1 = *__SIMD32(pSrc)++; - inA2 = *__SIMD32(pSrc)++; - - /* C = A * scale */ - /* Scale the inputs and then store the 2 results in the destination buffer - * in single cycle by packing the outputs */ - out1 = (q31_t) ((q15_t) (inA1 >> 16) * scaleFract); - out2 = (q31_t) ((q15_t) inA1 * scaleFract); - out3 = (q31_t) ((q15_t) (inA2 >> 16) * scaleFract); - out4 = (q31_t) ((q15_t) inA2 * scaleFract); - - /* apply shifting */ - out1 = out1 >> kShift; - out2 = out2 >> kShift; - out3 = out3 >> kShift; - out4 = out4 >> kShift; - - /* saturate the output */ - in1 = (q15_t) (__SSAT(out1, 16)); - in2 = (q15_t) (__SSAT(out2, 16)); - in3 = (q15_t) (__SSAT(out3, 16)); - in4 = (q15_t) (__SSAT(out4, 16)); - - /* store the result to destination */ - *__SIMD32(pDst)++ = __PKHBT(in2, in1, 16); - *__SIMD32(pDst)++ = __PKHBT(in4, in3, 16); - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize % 0x4U; - - while (blkCnt > 0U) - { - /* C = A * scale */ - /* Scale the input and then store the result in the destination buffer. */ - *pDst++ = (q15_t) (__SSAT(((*pSrc++) * scaleFract) >> kShift, 16)); - - /* Decrement the loop counter */ - blkCnt--; - } - -#else - - /* Run the below code for Cortex-M0 */ - - /* Initialize blkCnt with number of samples */ - blkCnt = blockSize; - - while (blkCnt > 0U) - { - /* C = A * scale */ - /* Scale the input and then store the result in the destination buffer. */ - *pDst++ = (q15_t) (__SSAT(((q31_t) * pSrc++ * scaleFract) >> kShift, 16)); - - /* Decrement the loop counter */ - blkCnt--; - } - -#endif /* #if defined (ARM_MATH_DSP) */ - -} - -/** - * @} end of scale group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_scale_q31.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_scale_q31.c deleted file mode 100644 index e89524d..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_scale_q31.c +++ /dev/null @@ -1,227 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_scale_q31.c - * Description: Multiplies a Q31 vector by a scalar - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupMath - */ - -/** - * @addtogroup scale - * @{ - */ - -/** - * @brief Multiplies a Q31 vector by a scalar. - * @param[in] *pSrc points to the input vector - * @param[in] scaleFract fractional portion of the scale value - * @param[in] shift number of bits to shift the result by - * @param[out] *pDst points to the output vector - * @param[in] blockSize number of samples in the vector - * @return none. - * - * Scaling and Overflow Behavior: - * \par - * The input data *pSrc and scaleFract are in 1.31 format. - * These are multiplied to yield a 2.62 intermediate result and this is shifted with saturation to 1.31 format. - */ - -void arm_scale_q31( - q31_t * pSrc, - q31_t scaleFract, - int8_t shift, - q31_t * pDst, - uint32_t blockSize) -{ - int8_t kShift = shift + 1; /* Shift to apply after scaling */ - int8_t sign = (kShift & 0x80); - uint32_t blkCnt; /* loop counter */ - q31_t in, out; - -#if defined (ARM_MATH_DSP) - -/* Run the below code for Cortex-M4 and Cortex-M3 */ - - q31_t in1, in2, in3, in4; /* temporary input variables */ - q31_t out1, out2, out3, out4; /* temporary output variabels */ - - - /*loop Unrolling */ - blkCnt = blockSize >> 2U; - - if (sign == 0U) - { - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - /* read four inputs from source */ - in1 = *pSrc; - in2 = *(pSrc + 1); - in3 = *(pSrc + 2); - in4 = *(pSrc + 3); - - /* multiply input with scaler value */ - in1 = ((q63_t) in1 * scaleFract) >> 32; - in2 = ((q63_t) in2 * scaleFract) >> 32; - in3 = ((q63_t) in3 * scaleFract) >> 32; - in4 = ((q63_t) in4 * scaleFract) >> 32; - - /* apply shifting */ - out1 = in1 << kShift; - out2 = in2 << kShift; - - /* saturate the results. */ - if (in1 != (out1 >> kShift)) - out1 = 0x7FFFFFFF ^ (in1 >> 31); - - if (in2 != (out2 >> kShift)) - out2 = 0x7FFFFFFF ^ (in2 >> 31); - - out3 = in3 << kShift; - out4 = in4 << kShift; - - *pDst = out1; - *(pDst + 1) = out2; - - if (in3 != (out3 >> kShift)) - out3 = 0x7FFFFFFF ^ (in3 >> 31); - - if (in4 != (out4 >> kShift)) - out4 = 0x7FFFFFFF ^ (in4 >> 31); - - /* Store result destination */ - *(pDst + 2) = out3; - *(pDst + 3) = out4; - - /* Update pointers to process next sampels */ - pSrc += 4U; - pDst += 4U; - - /* Decrement the loop counter */ - blkCnt--; - } - - } - else - { - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - /* read four inputs from source */ - in1 = *pSrc; - in2 = *(pSrc + 1); - in3 = *(pSrc + 2); - in4 = *(pSrc + 3); - - /* multiply input with scaler value */ - in1 = ((q63_t) in1 * scaleFract) >> 32; - in2 = ((q63_t) in2 * scaleFract) >> 32; - in3 = ((q63_t) in3 * scaleFract) >> 32; - in4 = ((q63_t) in4 * scaleFract) >> 32; - - /* apply shifting */ - out1 = in1 >> -kShift; - out2 = in2 >> -kShift; - - out3 = in3 >> -kShift; - out4 = in4 >> -kShift; - - /* Store result destination */ - *pDst = out1; - *(pDst + 1) = out2; - - *(pDst + 2) = out3; - *(pDst + 3) = out4; - - /* Update pointers to process next sampels */ - pSrc += 4U; - pDst += 4U; - - /* Decrement the loop counter */ - blkCnt--; - } - } - /* If the blockSize is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize % 0x4U; - -#else - - /* Run the below code for Cortex-M0 */ - - /* Initialize blkCnt with number of samples */ - blkCnt = blockSize; - -#endif /* #if defined (ARM_MATH_DSP) */ - - if (sign == 0) - { - while (blkCnt > 0U) - { - /* C = A * scale */ - /* Scale the input and then store the result in the destination buffer. */ - in = *pSrc++; - in = ((q63_t) in * scaleFract) >> 32; - - out = in << kShift; - - if (in != (out >> kShift)) - out = 0x7FFFFFFF ^ (in >> 31); - - *pDst++ = out; - - /* Decrement the loop counter */ - blkCnt--; - } - } - else - { - while (blkCnt > 0U) - { - /* C = A * scale */ - /* Scale the input and then store the result in the destination buffer. */ - in = *pSrc++; - in = ((q63_t) in * scaleFract) >> 32; - - out = in >> -kShift; - - *pDst++ = out; - - /* Decrement the loop counter */ - blkCnt--; - } - - } -} - -/** - * @} end of scale group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_scale_q7.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_scale_q7.c deleted file mode 100644 index 6cf1bbb..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_scale_q7.c +++ /dev/null @@ -1,137 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_scale_q7.c - * Description: Multiplies a Q7 vector by a scalar - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupMath - */ - -/** - * @addtogroup scale - * @{ - */ - -/** - * @brief Multiplies a Q7 vector by a scalar. - * @param[in] *pSrc points to the input vector - * @param[in] scaleFract fractional portion of the scale value - * @param[in] shift number of bits to shift the result by - * @param[out] *pDst points to the output vector - * @param[in] blockSize number of samples in the vector - * @return none. - * - * Scaling and Overflow Behavior: - * \par - * The input data *pSrc and scaleFract are in 1.7 format. - * These are multiplied to yield a 2.14 intermediate result and this is shifted with saturation to 1.7 format. - */ - -void arm_scale_q7( - q7_t * pSrc, - q7_t scaleFract, - int8_t shift, - q7_t * pDst, - uint32_t blockSize) -{ - int8_t kShift = 7 - shift; /* shift to apply after scaling */ - uint32_t blkCnt; /* loop counter */ - -#if defined (ARM_MATH_DSP) - -/* Run the below code for Cortex-M4 and Cortex-M3 */ - q7_t in1, in2, in3, in4, out1, out2, out3, out4; /* Temporary variables to store input & output */ - - - /*loop Unrolling */ - blkCnt = blockSize >> 2U; - - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - /* Reading 4 inputs from memory */ - in1 = *pSrc++; - in2 = *pSrc++; - in3 = *pSrc++; - in4 = *pSrc++; - - /* C = A * scale */ - /* Scale the inputs and then store the results in the temporary variables. */ - out1 = (q7_t) (__SSAT(((in1) * scaleFract) >> kShift, 8)); - out2 = (q7_t) (__SSAT(((in2) * scaleFract) >> kShift, 8)); - out3 = (q7_t) (__SSAT(((in3) * scaleFract) >> kShift, 8)); - out4 = (q7_t) (__SSAT(((in4) * scaleFract) >> kShift, 8)); - - /* Packing the individual outputs into 32bit and storing in - * destination buffer in single write */ - *__SIMD32(pDst)++ = __PACKq7(out1, out2, out3, out4); - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize % 0x4U; - - while (blkCnt > 0U) - { - /* C = A * scale */ - /* Scale the input and then store the result in the destination buffer. */ - *pDst++ = (q7_t) (__SSAT(((*pSrc++) * scaleFract) >> kShift, 8)); - - /* Decrement the loop counter */ - blkCnt--; - } - -#else - - /* Run the below code for Cortex-M0 */ - - /* Initialize blkCnt with number of samples */ - blkCnt = blockSize; - - while (blkCnt > 0U) - { - /* C = A * scale */ - /* Scale the input and then store the result in the destination buffer. */ - *pDst++ = (q7_t) (__SSAT((((q15_t) * pSrc++ * scaleFract) >> kShift), 8)); - - /* Decrement the loop counter */ - blkCnt--; - } - -#endif /* #if defined (ARM_MATH_DSP) */ - -} - -/** - * @} end of scale group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_shift_q15.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_shift_q15.c deleted file mode 100644 index d2cd037..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_shift_q15.c +++ /dev/null @@ -1,236 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_shift_q15.c - * Description: Shifts the elements of a Q15 vector by a specified number of bits - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupMath - */ - -/** - * @addtogroup shift - * @{ - */ - -/** - * @brief Shifts the elements of a Q15 vector a specified number of bits. - * @param[in] *pSrc points to the input vector - * @param[in] shiftBits number of bits to shift. A positive value shifts left; a negative value shifts right. - * @param[out] *pDst points to the output vector - * @param[in] blockSize number of samples in the vector - * @return none. - * - * Scaling and Overflow Behavior: - * \par - * The function uses saturating arithmetic. - * Results outside of the allowable Q15 range [0x8000 0x7FFF] will be saturated. - */ - -void arm_shift_q15( - q15_t * pSrc, - int8_t shiftBits, - q15_t * pDst, - uint32_t blockSize) -{ - uint32_t blkCnt; /* loop counter */ - uint8_t sign; /* Sign of shiftBits */ - -#if defined (ARM_MATH_DSP) - -/* Run the below code for Cortex-M4 and Cortex-M3 */ - - q15_t in1, in2; /* Temporary variables */ - - - /*loop Unrolling */ - blkCnt = blockSize >> 2U; - - /* Getting the sign of shiftBits */ - sign = (shiftBits & 0x80); - - /* If the shift value is positive then do right shift else left shift */ - if (sign == 0U) - { - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - /* Read 2 inputs */ - in1 = *pSrc++; - in2 = *pSrc++; - /* C = A << shiftBits */ - /* Shift the inputs and then store the results in the destination buffer. */ -#ifndef ARM_MATH_BIG_ENDIAN - - *__SIMD32(pDst)++ = __PKHBT(__SSAT((in1 << shiftBits), 16), - __SSAT((in2 << shiftBits), 16), 16); - -#else - - *__SIMD32(pDst)++ = __PKHBT(__SSAT((in2 << shiftBits), 16), - __SSAT((in1 << shiftBits), 16), 16); - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - in1 = *pSrc++; - in2 = *pSrc++; - -#ifndef ARM_MATH_BIG_ENDIAN - - *__SIMD32(pDst)++ = __PKHBT(__SSAT((in1 << shiftBits), 16), - __SSAT((in2 << shiftBits), 16), 16); - -#else - - *__SIMD32(pDst)++ = __PKHBT(__SSAT((in2 << shiftBits), 16), - __SSAT((in1 << shiftBits), 16), 16); - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize % 0x4U; - - while (blkCnt > 0U) - { - /* C = A << shiftBits */ - /* Shift and then store the results in the destination buffer. */ - *pDst++ = __SSAT((*pSrc++ << shiftBits), 16); - - /* Decrement the loop counter */ - blkCnt--; - } - } - else - { - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - /* Read 2 inputs */ - in1 = *pSrc++; - in2 = *pSrc++; - - /* C = A >> shiftBits */ - /* Shift the inputs and then store the results in the destination buffer. */ -#ifndef ARM_MATH_BIG_ENDIAN - - *__SIMD32(pDst)++ = __PKHBT((in1 >> -shiftBits), - (in2 >> -shiftBits), 16); - -#else - - *__SIMD32(pDst)++ = __PKHBT((in2 >> -shiftBits), - (in1 >> -shiftBits), 16); - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - in1 = *pSrc++; - in2 = *pSrc++; - -#ifndef ARM_MATH_BIG_ENDIAN - - *__SIMD32(pDst)++ = __PKHBT((in1 >> -shiftBits), - (in2 >> -shiftBits), 16); - -#else - - *__SIMD32(pDst)++ = __PKHBT((in2 >> -shiftBits), - (in1 >> -shiftBits), 16); - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize % 0x4U; - - while (blkCnt > 0U) - { - /* C = A >> shiftBits */ - /* Shift the inputs and then store the results in the destination buffer. */ - *pDst++ = (*pSrc++ >> -shiftBits); - - /* Decrement the loop counter */ - blkCnt--; - } - } - -#else - - /* Run the below code for Cortex-M0 */ - - /* Getting the sign of shiftBits */ - sign = (shiftBits & 0x80); - - /* If the shift value is positive then do right shift else left shift */ - if (sign == 0U) - { - /* Initialize blkCnt with number of samples */ - blkCnt = blockSize; - - while (blkCnt > 0U) - { - /* C = A << shiftBits */ - /* Shift and then store the results in the destination buffer. */ - *pDst++ = __SSAT(((q31_t) * pSrc++ << shiftBits), 16); - - /* Decrement the loop counter */ - blkCnt--; - } - } - else - { - /* Initialize blkCnt with number of samples */ - blkCnt = blockSize; - - while (blkCnt > 0U) - { - /* C = A >> shiftBits */ - /* Shift the inputs and then store the results in the destination buffer. */ - *pDst++ = (*pSrc++ >> -shiftBits); - - /* Decrement the loop counter */ - blkCnt--; - } - } - -#endif /* #if defined (ARM_MATH_DSP) */ - -} - -/** - * @} end of shift group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_shift_q31.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_shift_q31.c deleted file mode 100644 index 7e728d4..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_shift_q31.c +++ /dev/null @@ -1,191 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_shift_q31.c - * Description: Shifts the elements of a Q31 vector by a specified number of bits - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupMath - */ -/** - * @defgroup shift Vector Shift - * - * Shifts the elements of a fixed-point vector by a specified number of bits. - * There are separate functions for Q7, Q15, and Q31 data types. - * The underlying algorithm used is: - * - *
- *     pDst[n] = pSrc[n] << shift,   0 <= n < blockSize.
- * 
- * - * If shift is positive then the elements of the vector are shifted to the left. - * If shift is negative then the elements of the vector are shifted to the right. - * - * The functions support in-place computation allowing the source and destination - * pointers to reference the same memory buffer. - */ - -/** - * @addtogroup shift - * @{ - */ - -/** - * @brief Shifts the elements of a Q31 vector a specified number of bits. - * @param[in] *pSrc points to the input vector - * @param[in] shiftBits number of bits to shift. A positive value shifts left; a negative value shifts right. - * @param[out] *pDst points to the output vector - * @param[in] blockSize number of samples in the vector - * @return none. - * - * - * Scaling and Overflow Behavior: - * \par - * The function uses saturating arithmetic. - * Results outside of the allowable Q31 range [0x80000000 0x7FFFFFFF] will be saturated. - */ - -void arm_shift_q31( - q31_t * pSrc, - int8_t shiftBits, - q31_t * pDst, - uint32_t blockSize) -{ - uint32_t blkCnt; /* loop counter */ - uint8_t sign = (shiftBits & 0x80); /* Sign of shiftBits */ - -#if defined (ARM_MATH_DSP) - - q31_t in1, in2, in3, in4; /* Temporary input variables */ - q31_t out1, out2, out3, out4; /* Temporary output variables */ - - /*loop Unrolling */ - blkCnt = blockSize >> 2U; - - - if (sign == 0U) - { - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - /* C = A << shiftBits */ - /* Shift the input and then store the results in the destination buffer. */ - in1 = *pSrc; - in2 = *(pSrc + 1); - out1 = in1 << shiftBits; - in3 = *(pSrc + 2); - out2 = in2 << shiftBits; - in4 = *(pSrc + 3); - if (in1 != (out1 >> shiftBits)) - out1 = 0x7FFFFFFF ^ (in1 >> 31); - - if (in2 != (out2 >> shiftBits)) - out2 = 0x7FFFFFFF ^ (in2 >> 31); - - *pDst = out1; - out3 = in3 << shiftBits; - *(pDst + 1) = out2; - out4 = in4 << shiftBits; - - if (in3 != (out3 >> shiftBits)) - out3 = 0x7FFFFFFF ^ (in3 >> 31); - - if (in4 != (out4 >> shiftBits)) - out4 = 0x7FFFFFFF ^ (in4 >> 31); - - *(pDst + 2) = out3; - *(pDst + 3) = out4; - - /* Update destination pointer to process next sampels */ - pSrc += 4U; - pDst += 4U; - - /* Decrement the loop counter */ - blkCnt--; - } - } - else - { - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - /* C = A >> shiftBits */ - /* Shift the input and then store the results in the destination buffer. */ - in1 = *pSrc; - in2 = *(pSrc + 1); - in3 = *(pSrc + 2); - in4 = *(pSrc + 3); - - *pDst = (in1 >> -shiftBits); - *(pDst + 1) = (in2 >> -shiftBits); - *(pDst + 2) = (in3 >> -shiftBits); - *(pDst + 3) = (in4 >> -shiftBits); - - - pSrc += 4U; - pDst += 4U; - - blkCnt--; - } - - } - - /* If the blockSize is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize % 0x4U; - -#else - - /* Run the below code for Cortex-M0 */ - - - /* Initialize blkCnt with number of samples */ - blkCnt = blockSize; - -#endif /* #if defined (ARM_MATH_DSP) */ - - - while (blkCnt > 0U) - { - /* C = A (>> or <<) shiftBits */ - /* Shift the input and then store the result in the destination buffer. */ - *pDst++ = (sign == 0U) ? clip_q63_to_q31((q63_t) * pSrc++ << shiftBits) : - (*pSrc++ >> -shiftBits); - - /* Decrement the loop counter */ - blkCnt--; - } - - -} - -/** - * @} end of shift group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_shift_q7.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_shift_q7.c deleted file mode 100644 index fd508b4..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_shift_q7.c +++ /dev/null @@ -1,208 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_shift_q7.c - * Description: Processing function for the Q7 Shifting - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupMath - */ - -/** - * @addtogroup shift - * @{ - */ - - -/** - * @brief Shifts the elements of a Q7 vector a specified number of bits. - * @param[in] *pSrc points to the input vector - * @param[in] shiftBits number of bits to shift. A positive value shifts left; a negative value shifts right. - * @param[out] *pDst points to the output vector - * @param[in] blockSize number of samples in the vector - * @return none. - * - * \par Conditions for optimum performance - * Input and output buffers should be aligned by 32-bit - * - * - * Scaling and Overflow Behavior: - * \par - * The function uses saturating arithmetic. - * Results outside of the allowable Q7 range [0x8 0x7F] will be saturated. - */ - -void arm_shift_q7( - q7_t * pSrc, - int8_t shiftBits, - q7_t * pDst, - uint32_t blockSize) -{ - uint32_t blkCnt; /* loop counter */ - uint8_t sign; /* Sign of shiftBits */ - -#if defined (ARM_MATH_DSP) - -/* Run the below code for Cortex-M4 and Cortex-M3 */ - q7_t in1; /* Input value1 */ - q7_t in2; /* Input value2 */ - q7_t in3; /* Input value3 */ - q7_t in4; /* Input value4 */ - - - /*loop Unrolling */ - blkCnt = blockSize >> 2U; - - /* Getting the sign of shiftBits */ - sign = (shiftBits & 0x80); - - /* If the shift value is positive then do right shift else left shift */ - if (sign == 0U) - { - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - /* C = A << shiftBits */ - /* Read 4 inputs */ - in1 = *pSrc; - in2 = *(pSrc + 1); - in3 = *(pSrc + 2); - in4 = *(pSrc + 3); - - /* Store the Shifted result in the destination buffer in single cycle by packing the outputs */ - *__SIMD32(pDst)++ = __PACKq7(__SSAT((in1 << shiftBits), 8), - __SSAT((in2 << shiftBits), 8), - __SSAT((in3 << shiftBits), 8), - __SSAT((in4 << shiftBits), 8)); - /* Update source pointer to process next sampels */ - pSrc += 4U; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize % 0x4U; - - while (blkCnt > 0U) - { - /* C = A << shiftBits */ - /* Shift the input and then store the result in the destination buffer. */ - *pDst++ = (q7_t) __SSAT((*pSrc++ << shiftBits), 8); - - /* Decrement the loop counter */ - blkCnt--; - } - } - else - { - shiftBits = -shiftBits; - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - /* C = A >> shiftBits */ - /* Read 4 inputs */ - in1 = *pSrc; - in2 = *(pSrc + 1); - in3 = *(pSrc + 2); - in4 = *(pSrc + 3); - - /* Store the Shifted result in the destination buffer in single cycle by packing the outputs */ - *__SIMD32(pDst)++ = __PACKq7((in1 >> shiftBits), (in2 >> shiftBits), - (in3 >> shiftBits), (in4 >> shiftBits)); - - - pSrc += 4U; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize % 0x4U; - - while (blkCnt > 0U) - { - /* C = A >> shiftBits */ - /* Shift the input and then store the result in the destination buffer. */ - in1 = *pSrc++; - *pDst++ = (in1 >> shiftBits); - - /* Decrement the loop counter */ - blkCnt--; - } - } - -#else - - /* Run the below code for Cortex-M0 */ - - /* Getting the sign of shiftBits */ - sign = (shiftBits & 0x80); - - /* If the shift value is positive then do right shift else left shift */ - if (sign == 0U) - { - /* Initialize blkCnt with number of samples */ - blkCnt = blockSize; - - while (blkCnt > 0U) - { - /* C = A << shiftBits */ - /* Shift the input and then store the result in the destination buffer. */ - *pDst++ = (q7_t) __SSAT(((q15_t) * pSrc++ << shiftBits), 8); - - /* Decrement the loop counter */ - blkCnt--; - } - } - else - { - /* Initialize blkCnt with number of samples */ - blkCnt = blockSize; - - while (blkCnt > 0U) - { - /* C = A >> shiftBits */ - /* Shift the input and then store the result in the destination buffer. */ - *pDst++ = (*pSrc++ >> -shiftBits); - - /* Decrement the loop counter */ - blkCnt--; - } - } - -#endif /* #if defined (ARM_MATH_DSP) */ -} - -/** - * @} end of shift group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_sub_f32.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_sub_f32.c deleted file mode 100644 index 74a2944..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_sub_f32.c +++ /dev/null @@ -1,138 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_sub_f32.c - * Description: Floating-point vector subtraction. - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupMath - */ - -/** - * @defgroup BasicSub Vector Subtraction - * - * Element-by-element subtraction of two vectors. - * - *
- *     pDst[n] = pSrcA[n] - pSrcB[n],   0 <= n < blockSize.
- * 
- * - * There are separate functions for floating-point, Q7, Q15, and Q31 data types. - */ - -/** - * @addtogroup BasicSub - * @{ - */ - - -/** - * @brief Floating-point vector subtraction. - * @param[in] *pSrcA points to the first input vector - * @param[in] *pSrcB points to the second input vector - * @param[out] *pDst points to the output vector - * @param[in] blockSize number of samples in each vector - * @return none. - */ - -void arm_sub_f32( - float32_t * pSrcA, - float32_t * pSrcB, - float32_t * pDst, - uint32_t blockSize) -{ - uint32_t blkCnt; /* loop counter */ - -#if defined (ARM_MATH_DSP) - -/* Run the below code for Cortex-M4 and Cortex-M3 */ - float32_t inA1, inA2, inA3, inA4; /* temporary variables */ - float32_t inB1, inB2, inB3, inB4; /* temporary variables */ - - /*loop Unrolling */ - blkCnt = blockSize >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - /* C = A - B */ - /* Subtract and then store the results in the destination buffer. */ - /* Read 4 input samples from sourceA and sourceB */ - inA1 = *pSrcA; - inB1 = *pSrcB; - inA2 = *(pSrcA + 1); - inB2 = *(pSrcB + 1); - inA3 = *(pSrcA + 2); - inB3 = *(pSrcB + 2); - inA4 = *(pSrcA + 3); - inB4 = *(pSrcB + 3); - - /* dst = srcA - srcB */ - /* subtract and store the result */ - *pDst = inA1 - inB1; - *(pDst + 1) = inA2 - inB2; - *(pDst + 2) = inA3 - inB3; - *(pDst + 3) = inA4 - inB4; - - - /* Update pointers to process next sampels */ - pSrcA += 4U; - pSrcB += 4U; - pDst += 4U; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize % 0x4U; - -#else - - /* Run the below code for Cortex-M0 */ - - /* Initialize blkCnt with number of samples */ - blkCnt = blockSize; - -#endif /* #if defined (ARM_MATH_DSP) */ - - while (blkCnt > 0U) - { - /* C = A - B */ - /* Subtract and then store the results in the destination buffer. */ - *pDst++ = (*pSrcA++) - (*pSrcB++); - - /* Decrement the loop counter */ - blkCnt--; - } -} - -/** - * @} end of BasicSub group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_sub_q15.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_sub_q15.c deleted file mode 100644 index 17942eb..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_sub_q15.c +++ /dev/null @@ -1,128 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_sub_q15.c - * Description: Q15 vector subtraction - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupMath - */ - -/** - * @addtogroup BasicSub - * @{ - */ - -/** - * @brief Q15 vector subtraction. - * @param[in] *pSrcA points to the first input vector - * @param[in] *pSrcB points to the second input vector - * @param[out] *pDst points to the output vector - * @param[in] blockSize number of samples in each vector - * @return none. - * - * Scaling and Overflow Behavior: - * \par - * The function uses saturating arithmetic. - * Results outside of the allowable Q15 range [0x8000 0x7FFF] will be saturated. - */ - -void arm_sub_q15( - q15_t * pSrcA, - q15_t * pSrcB, - q15_t * pDst, - uint32_t blockSize) -{ - uint32_t blkCnt; /* loop counter */ - - -#if defined (ARM_MATH_DSP) - -/* Run the below code for Cortex-M4 and Cortex-M3 */ - q31_t inA1, inA2; - q31_t inB1, inB2; - - /*loop Unrolling */ - blkCnt = blockSize >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - /* C = A - B */ - /* Subtract and then store the results in the destination buffer two samples at a time. */ - inA1 = *__SIMD32(pSrcA)++; - inA2 = *__SIMD32(pSrcA)++; - inB1 = *__SIMD32(pSrcB)++; - inB2 = *__SIMD32(pSrcB)++; - - *__SIMD32(pDst)++ = __QSUB16(inA1, inB1); - *__SIMD32(pDst)++ = __QSUB16(inA2, inB2); - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize % 0x4U; - - while (blkCnt > 0U) - { - /* C = A - B */ - /* Subtract and then store the result in the destination buffer. */ - *pDst++ = (q15_t) __QSUB16(*pSrcA++, *pSrcB++); - - /* Decrement the loop counter */ - blkCnt--; - } - -#else - - /* Run the below code for Cortex-M0 */ - - /* Initialize blkCnt with number of samples */ - blkCnt = blockSize; - - while (blkCnt > 0U) - { - /* C = A - B */ - /* Subtract and then store the result in the destination buffer. */ - *pDst++ = (q15_t) __SSAT(((q31_t) * pSrcA++ - *pSrcB++), 16); - - /* Decrement the loop counter */ - blkCnt--; - } - -#endif /* #if defined (ARM_MATH_DSP) */ - - -} - -/** - * @} end of BasicSub group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_sub_q31.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_sub_q31.c deleted file mode 100644 index 72b8597..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_sub_q31.c +++ /dev/null @@ -1,134 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_sub_q31.c - * Description: Q31 vector subtraction - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupMath - */ - -/** - * @addtogroup BasicSub - * @{ - */ - -/** - * @brief Q31 vector subtraction. - * @param[in] *pSrcA points to the first input vector - * @param[in] *pSrcB points to the second input vector - * @param[out] *pDst points to the output vector - * @param[in] blockSize number of samples in each vector - * @return none. - * - * Scaling and Overflow Behavior: - * \par - * The function uses saturating arithmetic. - * Results outside of the allowable Q31 range [0x80000000 0x7FFFFFFF] will be saturated. - */ - -void arm_sub_q31( - q31_t * pSrcA, - q31_t * pSrcB, - q31_t * pDst, - uint32_t blockSize) -{ - uint32_t blkCnt; /* loop counter */ - - -#if defined (ARM_MATH_DSP) - -/* Run the below code for Cortex-M4 and Cortex-M3 */ - q31_t inA1, inA2, inA3, inA4; - q31_t inB1, inB2, inB3, inB4; - - /*loop Unrolling */ - blkCnt = blockSize >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - /* C = A - B */ - /* Subtract and then store the results in the destination buffer. */ - inA1 = *pSrcA++; - inA2 = *pSrcA++; - inB1 = *pSrcB++; - inB2 = *pSrcB++; - - inA3 = *pSrcA++; - inA4 = *pSrcA++; - inB3 = *pSrcB++; - inB4 = *pSrcB++; - - *pDst++ = __QSUB(inA1, inB1); - *pDst++ = __QSUB(inA2, inB2); - *pDst++ = __QSUB(inA3, inB3); - *pDst++ = __QSUB(inA4, inB4); - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize % 0x4U; - - while (blkCnt > 0U) - { - /* C = A - B */ - /* Subtract and then store the result in the destination buffer. */ - *pDst++ = __QSUB(*pSrcA++, *pSrcB++); - - /* Decrement the loop counter */ - blkCnt--; - } - -#else - - /* Run the below code for Cortex-M0 */ - - /* Initialize blkCnt with number of samples */ - blkCnt = blockSize; - - while (blkCnt > 0U) - { - /* C = A - B */ - /* Subtract and then store the result in the destination buffer. */ - *pDst++ = (q31_t) clip_q63_to_q31((q63_t) * pSrcA++ - *pSrcB++); - - /* Decrement the loop counter */ - blkCnt--; - } - -#endif /* #if defined (ARM_MATH_DSP) */ - -} - -/** - * @} end of BasicSub group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_sub_q7.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_sub_q7.c deleted file mode 100644 index d211f40..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_sub_q7.c +++ /dev/null @@ -1,119 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_sub_q7.c - * Description: Q7 vector subtraction - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupMath - */ - -/** - * @addtogroup BasicSub - * @{ - */ - -/** - * @brief Q7 vector subtraction. - * @param[in] *pSrcA points to the first input vector - * @param[in] *pSrcB points to the second input vector - * @param[out] *pDst points to the output vector - * @param[in] blockSize number of samples in each vector - * @return none. - * - * Scaling and Overflow Behavior: - * \par - * The function uses saturating arithmetic. - * Results outside of the allowable Q7 range [0x80 0x7F] will be saturated. - */ - -void arm_sub_q7( - q7_t * pSrcA, - q7_t * pSrcB, - q7_t * pDst, - uint32_t blockSize) -{ - uint32_t blkCnt; /* loop counter */ - -#if defined (ARM_MATH_DSP) - -/* Run the below code for Cortex-M4 and Cortex-M3 */ - - /*loop Unrolling */ - blkCnt = blockSize >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - /* C = A - B */ - /* Subtract and then store the results in the destination buffer 4 samples at a time. */ - *__SIMD32(pDst)++ = __QSUB8(*__SIMD32(pSrcA)++, *__SIMD32(pSrcB)++); - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize % 0x4U; - - while (blkCnt > 0U) - { - /* C = A - B */ - /* Subtract and then store the result in the destination buffer. */ - *pDst++ = __SSAT(*pSrcA++ - *pSrcB++, 8); - - /* Decrement the loop counter */ - blkCnt--; - } - -#else - - /* Run the below code for Cortex-M0 */ - - /* Initialize blkCnt with number of samples */ - blkCnt = blockSize; - - while (blkCnt > 0U) - { - /* C = A - B */ - /* Subtract and then store the result in the destination buffer. */ - *pDst++ = (q7_t) __SSAT((q15_t) * pSrcA++ - *pSrcB++, 8); - - /* Decrement the loop counter */ - blkCnt--; - } - -#endif /* #if defined (ARM_MATH_DSP) */ - - -} - -/** - * @} end of BasicSub group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/CommonTables/arm_common_tables.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/CommonTables/arm_common_tables.c deleted file mode 100644 index 1f8f589..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/CommonTables/arm_common_tables.c +++ /dev/null @@ -1,22176 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_common_tables.c - * Description: common tables like fft twiddle factors, Bitreverse, reciprocal etc - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" -#include "arm_common_tables.h" - -/** - * @ingroup ComplexFFT - */ - -/** - * @addtogroup CFFT_CIFFT Complex FFT Tables - * @{ - */ - -/** -* \par -* Pseudo code for Generation of Bit reversal Table is -* \par -*
for(l=1;l <= N/4;l++)
-* {
-*   for(i=0;i> 1;
-*  } 
-* \par -* where N = 4096 logN2 = 12 -* \par -* N is the maximum FFT Size supported -*/ - -/* -* @brief Table for bit reversal process -*/ -const uint16_t armBitRevTable[1024] = { - 0x400, 0x200, 0x600, 0x100, 0x500, 0x300, 0x700, 0x80, 0x480, 0x280, - 0x680, 0x180, 0x580, 0x380, 0x780, 0x40, 0x440, 0x240, 0x640, 0x140, - 0x540, 0x340, 0x740, 0xc0, 0x4c0, 0x2c0, 0x6c0, 0x1c0, 0x5c0, 0x3c0, - 0x7c0, 0x20, 0x420, 0x220, 0x620, 0x120, 0x520, 0x320, 0x720, 0xa0, - 0x4a0, 0x2a0, 0x6a0, 0x1a0, 0x5a0, 0x3a0, 0x7a0, 0x60, 0x460, 0x260, - 0x660, 0x160, 0x560, 0x360, 0x760, 0xe0, 0x4e0, 0x2e0, 0x6e0, 0x1e0, - 0x5e0, 0x3e0, 0x7e0, 0x10, 0x410, 0x210, 0x610, 0x110, 0x510, 0x310, - 0x710, 0x90, 0x490, 0x290, 0x690, 0x190, 0x590, 0x390, 0x790, 0x50, - 0x450, 0x250, 0x650, 0x150, 0x550, 0x350, 0x750, 0xd0, 0x4d0, 0x2d0, - 0x6d0, 0x1d0, 0x5d0, 0x3d0, 0x7d0, 0x30, 0x430, 0x230, 0x630, 0x130, - 0x530, 0x330, 0x730, 0xb0, 0x4b0, 0x2b0, 0x6b0, 0x1b0, 0x5b0, 0x3b0, - 0x7b0, 0x70, 0x470, 0x270, 0x670, 0x170, 0x570, 0x370, 0x770, 0xf0, - 0x4f0, 0x2f0, 0x6f0, 0x1f0, 0x5f0, 0x3f0, 0x7f0, 0x8, 0x408, 0x208, - 0x608, 0x108, 0x508, 0x308, 0x708, 0x88, 0x488, 0x288, 0x688, 0x188, - 0x588, 0x388, 0x788, 0x48, 0x448, 0x248, 0x648, 0x148, 0x548, 0x348, - 0x748, 0xc8, 0x4c8, 0x2c8, 0x6c8, 0x1c8, 0x5c8, 0x3c8, 0x7c8, 0x28, - 0x428, 0x228, 0x628, 0x128, 0x528, 0x328, 0x728, 0xa8, 0x4a8, 0x2a8, - 0x6a8, 0x1a8, 0x5a8, 0x3a8, 0x7a8, 0x68, 0x468, 0x268, 0x668, 0x168, - 0x568, 0x368, 0x768, 0xe8, 0x4e8, 0x2e8, 0x6e8, 0x1e8, 0x5e8, 0x3e8, - 0x7e8, 0x18, 0x418, 0x218, 0x618, 0x118, 0x518, 0x318, 0x718, 0x98, - 0x498, 0x298, 0x698, 0x198, 0x598, 0x398, 0x798, 0x58, 0x458, 0x258, - 0x658, 0x158, 0x558, 0x358, 0x758, 0xd8, 0x4d8, 0x2d8, 0x6d8, 0x1d8, - 0x5d8, 0x3d8, 0x7d8, 0x38, 0x438, 0x238, 0x638, 0x138, 0x538, 0x338, - 0x738, 0xb8, 0x4b8, 0x2b8, 0x6b8, 0x1b8, 0x5b8, 0x3b8, 0x7b8, 0x78, - 0x478, 0x278, 0x678, 0x178, 0x578, 0x378, 0x778, 0xf8, 0x4f8, 0x2f8, - 0x6f8, 0x1f8, 0x5f8, 0x3f8, 0x7f8, 0x4, 0x404, 0x204, 0x604, 0x104, - 0x504, 0x304, 0x704, 0x84, 0x484, 0x284, 0x684, 0x184, 0x584, 0x384, - 0x784, 0x44, 0x444, 0x244, 0x644, 0x144, 0x544, 0x344, 0x744, 0xc4, - 0x4c4, 0x2c4, 0x6c4, 0x1c4, 0x5c4, 0x3c4, 0x7c4, 0x24, 0x424, 0x224, - 0x624, 0x124, 0x524, 0x324, 0x724, 0xa4, 0x4a4, 0x2a4, 0x6a4, 0x1a4, - 0x5a4, 0x3a4, 0x7a4, 0x64, 0x464, 0x264, 0x664, 0x164, 0x564, 0x364, - 0x764, 0xe4, 0x4e4, 0x2e4, 0x6e4, 0x1e4, 0x5e4, 0x3e4, 0x7e4, 0x14, - 0x414, 0x214, 0x614, 0x114, 0x514, 0x314, 0x714, 0x94, 0x494, 0x294, - 0x694, 0x194, 0x594, 0x394, 0x794, 0x54, 0x454, 0x254, 0x654, 0x154, - 0x554, 0x354, 0x754, 0xd4, 0x4d4, 0x2d4, 0x6d4, 0x1d4, 0x5d4, 0x3d4, - 0x7d4, 0x34, 0x434, 0x234, 0x634, 0x134, 0x534, 0x334, 0x734, 0xb4, - 0x4b4, 0x2b4, 0x6b4, 0x1b4, 0x5b4, 0x3b4, 0x7b4, 0x74, 0x474, 0x274, - 0x674, 0x174, 0x574, 0x374, 0x774, 0xf4, 0x4f4, 0x2f4, 0x6f4, 0x1f4, - 0x5f4, 0x3f4, 0x7f4, 0xc, 0x40c, 0x20c, 0x60c, 0x10c, 0x50c, 0x30c, - 0x70c, 0x8c, 0x48c, 0x28c, 0x68c, 0x18c, 0x58c, 0x38c, 0x78c, 0x4c, - 0x44c, 0x24c, 0x64c, 0x14c, 0x54c, 0x34c, 0x74c, 0xcc, 0x4cc, 0x2cc, - 0x6cc, 0x1cc, 0x5cc, 0x3cc, 0x7cc, 0x2c, 0x42c, 0x22c, 0x62c, 0x12c, - 0x52c, 0x32c, 0x72c, 0xac, 0x4ac, 0x2ac, 0x6ac, 0x1ac, 0x5ac, 0x3ac, - 0x7ac, 0x6c, 0x46c, 0x26c, 0x66c, 0x16c, 0x56c, 0x36c, 0x76c, 0xec, - 0x4ec, 0x2ec, 0x6ec, 0x1ec, 0x5ec, 0x3ec, 0x7ec, 0x1c, 0x41c, 0x21c, - 0x61c, 0x11c, 0x51c, 0x31c, 0x71c, 0x9c, 0x49c, 0x29c, 0x69c, 0x19c, - 0x59c, 0x39c, 0x79c, 0x5c, 0x45c, 0x25c, 0x65c, 0x15c, 0x55c, 0x35c, - 0x75c, 0xdc, 0x4dc, 0x2dc, 0x6dc, 0x1dc, 0x5dc, 0x3dc, 0x7dc, 0x3c, - 0x43c, 0x23c, 0x63c, 0x13c, 0x53c, 0x33c, 0x73c, 0xbc, 0x4bc, 0x2bc, - 0x6bc, 0x1bc, 0x5bc, 0x3bc, 0x7bc, 0x7c, 0x47c, 0x27c, 0x67c, 0x17c, - 0x57c, 0x37c, 0x77c, 0xfc, 0x4fc, 0x2fc, 0x6fc, 0x1fc, 0x5fc, 0x3fc, - 0x7fc, 0x2, 0x402, 0x202, 0x602, 0x102, 0x502, 0x302, 0x702, 0x82, - 0x482, 0x282, 0x682, 0x182, 0x582, 0x382, 0x782, 0x42, 0x442, 0x242, - 0x642, 0x142, 0x542, 0x342, 0x742, 0xc2, 0x4c2, 0x2c2, 0x6c2, 0x1c2, - 0x5c2, 0x3c2, 0x7c2, 0x22, 0x422, 0x222, 0x622, 0x122, 0x522, 0x322, - 0x722, 0xa2, 0x4a2, 0x2a2, 0x6a2, 0x1a2, 0x5a2, 0x3a2, 0x7a2, 0x62, - 0x462, 0x262, 0x662, 0x162, 0x562, 0x362, 0x762, 0xe2, 0x4e2, 0x2e2, - 0x6e2, 0x1e2, 0x5e2, 0x3e2, 0x7e2, 0x12, 0x412, 0x212, 0x612, 0x112, - 0x512, 0x312, 0x712, 0x92, 0x492, 0x292, 0x692, 0x192, 0x592, 0x392, - 0x792, 0x52, 0x452, 0x252, 0x652, 0x152, 0x552, 0x352, 0x752, 0xd2, - 0x4d2, 0x2d2, 0x6d2, 0x1d2, 0x5d2, 0x3d2, 0x7d2, 0x32, 0x432, 0x232, - 0x632, 0x132, 0x532, 0x332, 0x732, 0xb2, 0x4b2, 0x2b2, 0x6b2, 0x1b2, - 0x5b2, 0x3b2, 0x7b2, 0x72, 0x472, 0x272, 0x672, 0x172, 0x572, 0x372, - 0x772, 0xf2, 0x4f2, 0x2f2, 0x6f2, 0x1f2, 0x5f2, 0x3f2, 0x7f2, 0xa, - 0x40a, 0x20a, 0x60a, 0x10a, 0x50a, 0x30a, 0x70a, 0x8a, 0x48a, 0x28a, - 0x68a, 0x18a, 0x58a, 0x38a, 0x78a, 0x4a, 0x44a, 0x24a, 0x64a, 0x14a, - 0x54a, 0x34a, 0x74a, 0xca, 0x4ca, 0x2ca, 0x6ca, 0x1ca, 0x5ca, 0x3ca, - 0x7ca, 0x2a, 0x42a, 0x22a, 0x62a, 0x12a, 0x52a, 0x32a, 0x72a, 0xaa, - 0x4aa, 0x2aa, 0x6aa, 0x1aa, 0x5aa, 0x3aa, 0x7aa, 0x6a, 0x46a, 0x26a, - 0x66a, 0x16a, 0x56a, 0x36a, 0x76a, 0xea, 0x4ea, 0x2ea, 0x6ea, 0x1ea, - 0x5ea, 0x3ea, 0x7ea, 0x1a, 0x41a, 0x21a, 0x61a, 0x11a, 0x51a, 0x31a, - 0x71a, 0x9a, 0x49a, 0x29a, 0x69a, 0x19a, 0x59a, 0x39a, 0x79a, 0x5a, - 0x45a, 0x25a, 0x65a, 0x15a, 0x55a, 0x35a, 0x75a, 0xda, 0x4da, 0x2da, - 0x6da, 0x1da, 0x5da, 0x3da, 0x7da, 0x3a, 0x43a, 0x23a, 0x63a, 0x13a, - 0x53a, 0x33a, 0x73a, 0xba, 0x4ba, 0x2ba, 0x6ba, 0x1ba, 0x5ba, 0x3ba, - 0x7ba, 0x7a, 0x47a, 0x27a, 0x67a, 0x17a, 0x57a, 0x37a, 0x77a, 0xfa, - 0x4fa, 0x2fa, 0x6fa, 0x1fa, 0x5fa, 0x3fa, 0x7fa, 0x6, 0x406, 0x206, - 0x606, 0x106, 0x506, 0x306, 0x706, 0x86, 0x486, 0x286, 0x686, 0x186, - 0x586, 0x386, 0x786, 0x46, 0x446, 0x246, 0x646, 0x146, 0x546, 0x346, - 0x746, 0xc6, 0x4c6, 0x2c6, 0x6c6, 0x1c6, 0x5c6, 0x3c6, 0x7c6, 0x26, - 0x426, 0x226, 0x626, 0x126, 0x526, 0x326, 0x726, 0xa6, 0x4a6, 0x2a6, - 0x6a6, 0x1a6, 0x5a6, 0x3a6, 0x7a6, 0x66, 0x466, 0x266, 0x666, 0x166, - 0x566, 0x366, 0x766, 0xe6, 0x4e6, 0x2e6, 0x6e6, 0x1e6, 0x5e6, 0x3e6, - 0x7e6, 0x16, 0x416, 0x216, 0x616, 0x116, 0x516, 0x316, 0x716, 0x96, - 0x496, 0x296, 0x696, 0x196, 0x596, 0x396, 0x796, 0x56, 0x456, 0x256, - 0x656, 0x156, 0x556, 0x356, 0x756, 0xd6, 0x4d6, 0x2d6, 0x6d6, 0x1d6, - 0x5d6, 0x3d6, 0x7d6, 0x36, 0x436, 0x236, 0x636, 0x136, 0x536, 0x336, - 0x736, 0xb6, 0x4b6, 0x2b6, 0x6b6, 0x1b6, 0x5b6, 0x3b6, 0x7b6, 0x76, - 0x476, 0x276, 0x676, 0x176, 0x576, 0x376, 0x776, 0xf6, 0x4f6, 0x2f6, - 0x6f6, 0x1f6, 0x5f6, 0x3f6, 0x7f6, 0xe, 0x40e, 0x20e, 0x60e, 0x10e, - 0x50e, 0x30e, 0x70e, 0x8e, 0x48e, 0x28e, 0x68e, 0x18e, 0x58e, 0x38e, - 0x78e, 0x4e, 0x44e, 0x24e, 0x64e, 0x14e, 0x54e, 0x34e, 0x74e, 0xce, - 0x4ce, 0x2ce, 0x6ce, 0x1ce, 0x5ce, 0x3ce, 0x7ce, 0x2e, 0x42e, 0x22e, - 0x62e, 0x12e, 0x52e, 0x32e, 0x72e, 0xae, 0x4ae, 0x2ae, 0x6ae, 0x1ae, - 0x5ae, 0x3ae, 0x7ae, 0x6e, 0x46e, 0x26e, 0x66e, 0x16e, 0x56e, 0x36e, - 0x76e, 0xee, 0x4ee, 0x2ee, 0x6ee, 0x1ee, 0x5ee, 0x3ee, 0x7ee, 0x1e, - 0x41e, 0x21e, 0x61e, 0x11e, 0x51e, 0x31e, 0x71e, 0x9e, 0x49e, 0x29e, - 0x69e, 0x19e, 0x59e, 0x39e, 0x79e, 0x5e, 0x45e, 0x25e, 0x65e, 0x15e, - 0x55e, 0x35e, 0x75e, 0xde, 0x4de, 0x2de, 0x6de, 0x1de, 0x5de, 0x3de, - 0x7de, 0x3e, 0x43e, 0x23e, 0x63e, 0x13e, 0x53e, 0x33e, 0x73e, 0xbe, - 0x4be, 0x2be, 0x6be, 0x1be, 0x5be, 0x3be, 0x7be, 0x7e, 0x47e, 0x27e, - 0x67e, 0x17e, 0x57e, 0x37e, 0x77e, 0xfe, 0x4fe, 0x2fe, 0x6fe, 0x1fe, - 0x5fe, 0x3fe, 0x7fe, 0x1 -}; - - -/* -* @brief Floating-point Twiddle factors Table Generation -*/ - -/** -* \par -* Example code for Floating-point Twiddle factors Generation: -* \par -*
for(i = 0; i< N/; i++)
-* {
-*	twiddleCoef[2*i]= cos(i * 2*PI/(float)N);
-*	twiddleCoef[2*i+1]= sin(i * 2*PI/(float)N);
-* } 
-* \par -* where N = 16 and PI = 3.14159265358979 -* \par -* Cos and Sin values are in interleaved fashion -* -*/ -const float32_t twiddleCoef_16[32] = { - 1.000000000f, 0.000000000f, - 0.923879533f, 0.382683432f, - 0.707106781f, 0.707106781f, - 0.382683432f, 0.923879533f, - 0.000000000f, 1.000000000f, - -0.382683432f, 0.923879533f, - -0.707106781f, 0.707106781f, - -0.923879533f, 0.382683432f, - -1.000000000f, 0.000000000f, - -0.923879533f, -0.382683432f, - -0.707106781f, -0.707106781f, - -0.382683432f, -0.923879533f, - -0.000000000f, -1.000000000f, - 0.382683432f, -0.923879533f, - 0.707106781f, -0.707106781f, - 0.923879533f, -0.382683432f -}; - -/** -* \par -* Example code for Floating-point Twiddle factors Generation: -* \par -*
for(i = 0; i< N/; i++)
-* {
-*	twiddleCoef[2*i]= cos(i * 2*PI/(float)N);
-*	twiddleCoef[2*i+1]= sin(i * 2*PI/(float)N);
-* } 
-* \par -* where N = 32 and PI = 3.14159265358979 -* \par -* Cos and Sin values are in interleaved fashion -* -*/ -const float32_t twiddleCoef_32[64] = { - 1.000000000f, 0.000000000f, - 0.980785280f, 0.195090322f, - 0.923879533f, 0.382683432f, - 0.831469612f, 0.555570233f, - 0.707106781f, 0.707106781f, - 0.555570233f, 0.831469612f, - 0.382683432f, 0.923879533f, - 0.195090322f, 0.980785280f, - 0.000000000f, 1.000000000f, - -0.195090322f, 0.980785280f, - -0.382683432f, 0.923879533f, - -0.555570233f, 0.831469612f, - -0.707106781f, 0.707106781f, - -0.831469612f, 0.555570233f, - -0.923879533f, 0.382683432f, - -0.980785280f, 0.195090322f, - -1.000000000f, 0.000000000f, - -0.980785280f, -0.195090322f, - -0.923879533f, -0.382683432f, - -0.831469612f, -0.555570233f, - -0.707106781f, -0.707106781f, - -0.555570233f, -0.831469612f, - -0.382683432f, -0.923879533f, - -0.195090322f, -0.980785280f, - -0.000000000f, -1.000000000f, - 0.195090322f, -0.980785280f, - 0.382683432f, -0.923879533f, - 0.555570233f, -0.831469612f, - 0.707106781f, -0.707106781f, - 0.831469612f, -0.555570233f, - 0.923879533f, -0.382683432f, - 0.980785280f, -0.195090322f -}; - -/** -* \par -* Example code for Floating-point Twiddle factors Generation: -* \par -*
for(i = 0; i< N/; i++)
-* {
-*	twiddleCoef[2*i]= cos(i * 2*PI/(float)N);
-*	twiddleCoef[2*i+1]= sin(i * 2*PI/(float)N);
-* } 
-* \par -* where N = 64 and PI = 3.14159265358979 -* \par -* Cos and Sin values are in interleaved fashion -* -*/ -const float32_t twiddleCoef_64[128] = { - 1.000000000f, 0.000000000f, - 0.995184727f, 0.098017140f, - 0.980785280f, 0.195090322f, - 0.956940336f, 0.290284677f, - 0.923879533f, 0.382683432f, - 0.881921264f, 0.471396737f, - 0.831469612f, 0.555570233f, - 0.773010453f, 0.634393284f, - 0.707106781f, 0.707106781f, - 0.634393284f, 0.773010453f, - 0.555570233f, 0.831469612f, - 0.471396737f, 0.881921264f, - 0.382683432f, 0.923879533f, - 0.290284677f, 0.956940336f, - 0.195090322f, 0.980785280f, - 0.098017140f, 0.995184727f, - 0.000000000f, 1.000000000f, - -0.098017140f, 0.995184727f, - -0.195090322f, 0.980785280f, - -0.290284677f, 0.956940336f, - -0.382683432f, 0.923879533f, - -0.471396737f, 0.881921264f, - -0.555570233f, 0.831469612f, - -0.634393284f, 0.773010453f, - -0.707106781f, 0.707106781f, - -0.773010453f, 0.634393284f, - -0.831469612f, 0.555570233f, - -0.881921264f, 0.471396737f, - -0.923879533f, 0.382683432f, - -0.956940336f, 0.290284677f, - -0.980785280f, 0.195090322f, - -0.995184727f, 0.098017140f, - -1.000000000f, 0.000000000f, - -0.995184727f, -0.098017140f, - -0.980785280f, -0.195090322f, - -0.956940336f, -0.290284677f, - -0.923879533f, -0.382683432f, - -0.881921264f, -0.471396737f, - -0.831469612f, -0.555570233f, - -0.773010453f, -0.634393284f, - -0.707106781f, -0.707106781f, - -0.634393284f, -0.773010453f, - -0.555570233f, -0.831469612f, - -0.471396737f, -0.881921264f, - -0.382683432f, -0.923879533f, - -0.290284677f, -0.956940336f, - -0.195090322f, -0.980785280f, - -0.098017140f, -0.995184727f, - -0.000000000f, -1.000000000f, - 0.098017140f, -0.995184727f, - 0.195090322f, -0.980785280f, - 0.290284677f, -0.956940336f, - 0.382683432f, -0.923879533f, - 0.471396737f, -0.881921264f, - 0.555570233f, -0.831469612f, - 0.634393284f, -0.773010453f, - 0.707106781f, -0.707106781f, - 0.773010453f, -0.634393284f, - 0.831469612f, -0.555570233f, - 0.881921264f, -0.471396737f, - 0.923879533f, -0.382683432f, - 0.956940336f, -0.290284677f, - 0.980785280f, -0.195090322f, - 0.995184727f, -0.098017140f -}; - -/** -* \par -* Example code for Floating-point Twiddle factors Generation: -* \par -*
for(i = 0; i< N/; i++)
-* {
-*	twiddleCoef[2*i]= cos(i * 2*PI/(float)N);
-*	twiddleCoef[2*i+1]= sin(i * 2*PI/(float)N);
-* } 
-* \par -* where N = 128 and PI = 3.14159265358979 -* \par -* Cos and Sin values are in interleaved fashion -* -*/ - -const float32_t twiddleCoef_128[256] = { - 1.000000000f, 0.000000000f, - 0.998795456f, 0.049067674f, - 0.995184727f, 0.098017140f, - 0.989176510f, 0.146730474f, - 0.980785280f, 0.195090322f, - 0.970031253f, 0.242980180f, - 0.956940336f, 0.290284677f, - 0.941544065f, 0.336889853f, - 0.923879533f, 0.382683432f, - 0.903989293f, 0.427555093f, - 0.881921264f, 0.471396737f, - 0.857728610f, 0.514102744f, - 0.831469612f, 0.555570233f, - 0.803207531f, 0.595699304f, - 0.773010453f, 0.634393284f, - 0.740951125f, 0.671558955f, - 0.707106781f, 0.707106781f, - 0.671558955f, 0.740951125f, - 0.634393284f, 0.773010453f, - 0.595699304f, 0.803207531f, - 0.555570233f, 0.831469612f, - 0.514102744f, 0.857728610f, - 0.471396737f, 0.881921264f, - 0.427555093f, 0.903989293f, - 0.382683432f, 0.923879533f, - 0.336889853f, 0.941544065f, - 0.290284677f, 0.956940336f, - 0.242980180f, 0.970031253f, - 0.195090322f, 0.980785280f, - 0.146730474f, 0.989176510f, - 0.098017140f, 0.995184727f, - 0.049067674f, 0.998795456f, - 0.000000000f, 1.000000000f, - -0.049067674f, 0.998795456f, - -0.098017140f, 0.995184727f, - -0.146730474f, 0.989176510f, - -0.195090322f, 0.980785280f, - -0.242980180f, 0.970031253f, - -0.290284677f, 0.956940336f, - -0.336889853f, 0.941544065f, - -0.382683432f, 0.923879533f, - -0.427555093f, 0.903989293f, - -0.471396737f, 0.881921264f, - -0.514102744f, 0.857728610f, - -0.555570233f, 0.831469612f, - -0.595699304f, 0.803207531f, - -0.634393284f, 0.773010453f, - -0.671558955f, 0.740951125f, - -0.707106781f, 0.707106781f, - -0.740951125f, 0.671558955f, - -0.773010453f, 0.634393284f, - -0.803207531f, 0.595699304f, - -0.831469612f, 0.555570233f, - -0.857728610f, 0.514102744f, - -0.881921264f, 0.471396737f, - -0.903989293f, 0.427555093f, - -0.923879533f, 0.382683432f, - -0.941544065f, 0.336889853f, - -0.956940336f, 0.290284677f, - -0.970031253f, 0.242980180f, - -0.980785280f, 0.195090322f, - -0.989176510f, 0.146730474f, - -0.995184727f, 0.098017140f, - -0.998795456f, 0.049067674f, - -1.000000000f, 0.000000000f, - -0.998795456f, -0.049067674f, - -0.995184727f, -0.098017140f, - -0.989176510f, -0.146730474f, - -0.980785280f, -0.195090322f, - -0.970031253f, -0.242980180f, - -0.956940336f, -0.290284677f, - -0.941544065f, -0.336889853f, - -0.923879533f, -0.382683432f, - -0.903989293f, -0.427555093f, - -0.881921264f, -0.471396737f, - -0.857728610f, -0.514102744f, - -0.831469612f, -0.555570233f, - -0.803207531f, -0.595699304f, - -0.773010453f, -0.634393284f, - -0.740951125f, -0.671558955f, - -0.707106781f, -0.707106781f, - -0.671558955f, -0.740951125f, - -0.634393284f, -0.773010453f, - -0.595699304f, -0.803207531f, - -0.555570233f, -0.831469612f, - -0.514102744f, -0.857728610f, - -0.471396737f, -0.881921264f, - -0.427555093f, -0.903989293f, - -0.382683432f, -0.923879533f, - -0.336889853f, -0.941544065f, - -0.290284677f, -0.956940336f, - -0.242980180f, -0.970031253f, - -0.195090322f, -0.980785280f, - -0.146730474f, -0.989176510f, - -0.098017140f, -0.995184727f, - -0.049067674f, -0.998795456f, - -0.000000000f, -1.000000000f, - 0.049067674f, -0.998795456f, - 0.098017140f, -0.995184727f, - 0.146730474f, -0.989176510f, - 0.195090322f, -0.980785280f, - 0.242980180f, -0.970031253f, - 0.290284677f, -0.956940336f, - 0.336889853f, -0.941544065f, - 0.382683432f, -0.923879533f, - 0.427555093f, -0.903989293f, - 0.471396737f, -0.881921264f, - 0.514102744f, -0.857728610f, - 0.555570233f, -0.831469612f, - 0.595699304f, -0.803207531f, - 0.634393284f, -0.773010453f, - 0.671558955f, -0.740951125f, - 0.707106781f, -0.707106781f, - 0.740951125f, -0.671558955f, - 0.773010453f, -0.634393284f, - 0.803207531f, -0.595699304f, - 0.831469612f, -0.555570233f, - 0.857728610f, -0.514102744f, - 0.881921264f, -0.471396737f, - 0.903989293f, -0.427555093f, - 0.923879533f, -0.382683432f, - 0.941544065f, -0.336889853f, - 0.956940336f, -0.290284677f, - 0.970031253f, -0.242980180f, - 0.980785280f, -0.195090322f, - 0.989176510f, -0.146730474f, - 0.995184727f, -0.098017140f, - 0.998795456f, -0.049067674f -}; - -/** -* \par -* Example code for Floating-point Twiddle factors Generation: -* \par -*
for(i = 0; i< N/; i++)
-* {
-*	twiddleCoef[2*i]= cos(i * 2*PI/(float)N);
-*	twiddleCoef[2*i+1]= sin(i * 2*PI/(float)N);
-* } 
-* \par -* where N = 256 and PI = 3.14159265358979 -* \par -* Cos and Sin values are in interleaved fashion -* -*/ -const float32_t twiddleCoef_256[512] = { - 1.000000000f, 0.000000000f, - 0.999698819f, 0.024541229f, - 0.998795456f, 0.049067674f, - 0.997290457f, 0.073564564f, - 0.995184727f, 0.098017140f, - 0.992479535f, 0.122410675f, - 0.989176510f, 0.146730474f, - 0.985277642f, 0.170961889f, - 0.980785280f, 0.195090322f, - 0.975702130f, 0.219101240f, - 0.970031253f, 0.242980180f, - 0.963776066f, 0.266712757f, - 0.956940336f, 0.290284677f, - 0.949528181f, 0.313681740f, - 0.941544065f, 0.336889853f, - 0.932992799f, 0.359895037f, - 0.923879533f, 0.382683432f, - 0.914209756f, 0.405241314f, - 0.903989293f, 0.427555093f, - 0.893224301f, 0.449611330f, - 0.881921264f, 0.471396737f, - 0.870086991f, 0.492898192f, - 0.857728610f, 0.514102744f, - 0.844853565f, 0.534997620f, - 0.831469612f, 0.555570233f, - 0.817584813f, 0.575808191f, - 0.803207531f, 0.595699304f, - 0.788346428f, 0.615231591f, - 0.773010453f, 0.634393284f, - 0.757208847f, 0.653172843f, - 0.740951125f, 0.671558955f, - 0.724247083f, 0.689540545f, - 0.707106781f, 0.707106781f, - 0.689540545f, 0.724247083f, - 0.671558955f, 0.740951125f, - 0.653172843f, 0.757208847f, - 0.634393284f, 0.773010453f, - 0.615231591f, 0.788346428f, - 0.595699304f, 0.803207531f, - 0.575808191f, 0.817584813f, - 0.555570233f, 0.831469612f, - 0.534997620f, 0.844853565f, - 0.514102744f, 0.857728610f, - 0.492898192f, 0.870086991f, - 0.471396737f, 0.881921264f, - 0.449611330f, 0.893224301f, - 0.427555093f, 0.903989293f, - 0.405241314f, 0.914209756f, - 0.382683432f, 0.923879533f, - 0.359895037f, 0.932992799f, - 0.336889853f, 0.941544065f, - 0.313681740f, 0.949528181f, - 0.290284677f, 0.956940336f, - 0.266712757f, 0.963776066f, - 0.242980180f, 0.970031253f, - 0.219101240f, 0.975702130f, - 0.195090322f, 0.980785280f, - 0.170961889f, 0.985277642f, - 0.146730474f, 0.989176510f, - 0.122410675f, 0.992479535f, - 0.098017140f, 0.995184727f, - 0.073564564f, 0.997290457f, - 0.049067674f, 0.998795456f, - 0.024541229f, 0.999698819f, - 0.000000000f, 1.000000000f, - -0.024541229f, 0.999698819f, - -0.049067674f, 0.998795456f, - -0.073564564f, 0.997290457f, - -0.098017140f, 0.995184727f, - -0.122410675f, 0.992479535f, - -0.146730474f, 0.989176510f, - -0.170961889f, 0.985277642f, - -0.195090322f, 0.980785280f, - -0.219101240f, 0.975702130f, - -0.242980180f, 0.970031253f, - -0.266712757f, 0.963776066f, - -0.290284677f, 0.956940336f, - -0.313681740f, 0.949528181f, - -0.336889853f, 0.941544065f, - -0.359895037f, 0.932992799f, - -0.382683432f, 0.923879533f, - -0.405241314f, 0.914209756f, - -0.427555093f, 0.903989293f, - -0.449611330f, 0.893224301f, - -0.471396737f, 0.881921264f, - -0.492898192f, 0.870086991f, - -0.514102744f, 0.857728610f, - -0.534997620f, 0.844853565f, - -0.555570233f, 0.831469612f, - -0.575808191f, 0.817584813f, - -0.595699304f, 0.803207531f, - -0.615231591f, 0.788346428f, - -0.634393284f, 0.773010453f, - -0.653172843f, 0.757208847f, - -0.671558955f, 0.740951125f, - -0.689540545f, 0.724247083f, - -0.707106781f, 0.707106781f, - -0.724247083f, 0.689540545f, - -0.740951125f, 0.671558955f, - -0.757208847f, 0.653172843f, - -0.773010453f, 0.634393284f, - -0.788346428f, 0.615231591f, - -0.803207531f, 0.595699304f, - -0.817584813f, 0.575808191f, - -0.831469612f, 0.555570233f, - -0.844853565f, 0.534997620f, - -0.857728610f, 0.514102744f, - -0.870086991f, 0.492898192f, - -0.881921264f, 0.471396737f, - -0.893224301f, 0.449611330f, - -0.903989293f, 0.427555093f, - -0.914209756f, 0.405241314f, - -0.923879533f, 0.382683432f, - -0.932992799f, 0.359895037f, - -0.941544065f, 0.336889853f, - -0.949528181f, 0.313681740f, - -0.956940336f, 0.290284677f, - -0.963776066f, 0.266712757f, - -0.970031253f, 0.242980180f, - -0.975702130f, 0.219101240f, - -0.980785280f, 0.195090322f, - -0.985277642f, 0.170961889f, - -0.989176510f, 0.146730474f, - -0.992479535f, 0.122410675f, - -0.995184727f, 0.098017140f, - -0.997290457f, 0.073564564f, - -0.998795456f, 0.049067674f, - -0.999698819f, 0.024541229f, - -1.000000000f, 0.000000000f, - -0.999698819f, -0.024541229f, - -0.998795456f, -0.049067674f, - -0.997290457f, -0.073564564f, - -0.995184727f, -0.098017140f, - -0.992479535f, -0.122410675f, - -0.989176510f, -0.146730474f, - -0.985277642f, -0.170961889f, - -0.980785280f, -0.195090322f, - -0.975702130f, -0.219101240f, - -0.970031253f, -0.242980180f, - -0.963776066f, -0.266712757f, - -0.956940336f, -0.290284677f, - -0.949528181f, -0.313681740f, - -0.941544065f, -0.336889853f, - -0.932992799f, -0.359895037f, - -0.923879533f, -0.382683432f, - -0.914209756f, -0.405241314f, - -0.903989293f, -0.427555093f, - -0.893224301f, -0.449611330f, - -0.881921264f, -0.471396737f, - -0.870086991f, -0.492898192f, - -0.857728610f, -0.514102744f, - -0.844853565f, -0.534997620f, - -0.831469612f, -0.555570233f, - -0.817584813f, -0.575808191f, - -0.803207531f, -0.595699304f, - -0.788346428f, -0.615231591f, - -0.773010453f, -0.634393284f, - -0.757208847f, -0.653172843f, - -0.740951125f, -0.671558955f, - -0.724247083f, -0.689540545f, - -0.707106781f, -0.707106781f, - -0.689540545f, -0.724247083f, - -0.671558955f, -0.740951125f, - -0.653172843f, -0.757208847f, - -0.634393284f, -0.773010453f, - -0.615231591f, -0.788346428f, - -0.595699304f, -0.803207531f, - -0.575808191f, -0.817584813f, - -0.555570233f, -0.831469612f, - -0.534997620f, -0.844853565f, - -0.514102744f, -0.857728610f, - -0.492898192f, -0.870086991f, - -0.471396737f, -0.881921264f, - -0.449611330f, -0.893224301f, - -0.427555093f, -0.903989293f, - -0.405241314f, -0.914209756f, - -0.382683432f, -0.923879533f, - -0.359895037f, -0.932992799f, - -0.336889853f, -0.941544065f, - -0.313681740f, -0.949528181f, - -0.290284677f, -0.956940336f, - -0.266712757f, -0.963776066f, - -0.242980180f, -0.970031253f, - -0.219101240f, -0.975702130f, - -0.195090322f, -0.980785280f, - -0.170961889f, -0.985277642f, - -0.146730474f, -0.989176510f, - -0.122410675f, -0.992479535f, - -0.098017140f, -0.995184727f, - -0.073564564f, -0.997290457f, - -0.049067674f, -0.998795456f, - -0.024541229f, -0.999698819f, - -0.000000000f, -1.000000000f, - 0.024541229f, -0.999698819f, - 0.049067674f, -0.998795456f, - 0.073564564f, -0.997290457f, - 0.098017140f, -0.995184727f, - 0.122410675f, -0.992479535f, - 0.146730474f, -0.989176510f, - 0.170961889f, -0.985277642f, - 0.195090322f, -0.980785280f, - 0.219101240f, -0.975702130f, - 0.242980180f, -0.970031253f, - 0.266712757f, -0.963776066f, - 0.290284677f, -0.956940336f, - 0.313681740f, -0.949528181f, - 0.336889853f, -0.941544065f, - 0.359895037f, -0.932992799f, - 0.382683432f, -0.923879533f, - 0.405241314f, -0.914209756f, - 0.427555093f, -0.903989293f, - 0.449611330f, -0.893224301f, - 0.471396737f, -0.881921264f, - 0.492898192f, -0.870086991f, - 0.514102744f, -0.857728610f, - 0.534997620f, -0.844853565f, - 0.555570233f, -0.831469612f, - 0.575808191f, -0.817584813f, - 0.595699304f, -0.803207531f, - 0.615231591f, -0.788346428f, - 0.634393284f, -0.773010453f, - 0.653172843f, -0.757208847f, - 0.671558955f, -0.740951125f, - 0.689540545f, -0.724247083f, - 0.707106781f, -0.707106781f, - 0.724247083f, -0.689540545f, - 0.740951125f, -0.671558955f, - 0.757208847f, -0.653172843f, - 0.773010453f, -0.634393284f, - 0.788346428f, -0.615231591f, - 0.803207531f, -0.595699304f, - 0.817584813f, -0.575808191f, - 0.831469612f, -0.555570233f, - 0.844853565f, -0.534997620f, - 0.857728610f, -0.514102744f, - 0.870086991f, -0.492898192f, - 0.881921264f, -0.471396737f, - 0.893224301f, -0.449611330f, - 0.903989293f, -0.427555093f, - 0.914209756f, -0.405241314f, - 0.923879533f, -0.382683432f, - 0.932992799f, -0.359895037f, - 0.941544065f, -0.336889853f, - 0.949528181f, -0.313681740f, - 0.956940336f, -0.290284677f, - 0.963776066f, -0.266712757f, - 0.970031253f, -0.242980180f, - 0.975702130f, -0.219101240f, - 0.980785280f, -0.195090322f, - 0.985277642f, -0.170961889f, - 0.989176510f, -0.146730474f, - 0.992479535f, -0.122410675f, - 0.995184727f, -0.098017140f, - 0.997290457f, -0.073564564f, - 0.998795456f, -0.049067674f, - 0.999698819f, -0.024541229f -}; - -/** -* \par -* Example code for Floating-point Twiddle factors Generation: -* \par -*
for(i = 0; i< N/; i++)
-* {
-*	twiddleCoef[2*i]= cos(i * 2*PI/(float)N);
-*	twiddleCoef[2*i+1]= sin(i * 2*PI/(float)N);
-* } 
-* \par -* where N = 512 and PI = 3.14159265358979 -* \par -* Cos and Sin values are in interleaved fashion -* -*/ -const float32_t twiddleCoef_512[1024] = { - 1.000000000f, 0.000000000f, - 0.999924702f, 0.012271538f, - 0.999698819f, 0.024541229f, - 0.999322385f, 0.036807223f, - 0.998795456f, 0.049067674f, - 0.998118113f, 0.061320736f, - 0.997290457f, 0.073564564f, - 0.996312612f, 0.085797312f, - 0.995184727f, 0.098017140f, - 0.993906970f, 0.110222207f, - 0.992479535f, 0.122410675f, - 0.990902635f, 0.134580709f, - 0.989176510f, 0.146730474f, - 0.987301418f, 0.158858143f, - 0.985277642f, 0.170961889f, - 0.983105487f, 0.183039888f, - 0.980785280f, 0.195090322f, - 0.978317371f, 0.207111376f, - 0.975702130f, 0.219101240f, - 0.972939952f, 0.231058108f, - 0.970031253f, 0.242980180f, - 0.966976471f, 0.254865660f, - 0.963776066f, 0.266712757f, - 0.960430519f, 0.278519689f, - 0.956940336f, 0.290284677f, - 0.953306040f, 0.302005949f, - 0.949528181f, 0.313681740f, - 0.945607325f, 0.325310292f, - 0.941544065f, 0.336889853f, - 0.937339012f, 0.348418680f, - 0.932992799f, 0.359895037f, - 0.928506080f, 0.371317194f, - 0.923879533f, 0.382683432f, - 0.919113852f, 0.393992040f, - 0.914209756f, 0.405241314f, - 0.909167983f, 0.416429560f, - 0.903989293f, 0.427555093f, - 0.898674466f, 0.438616239f, - 0.893224301f, 0.449611330f, - 0.887639620f, 0.460538711f, - 0.881921264f, 0.471396737f, - 0.876070094f, 0.482183772f, - 0.870086991f, 0.492898192f, - 0.863972856f, 0.503538384f, - 0.857728610f, 0.514102744f, - 0.851355193f, 0.524589683f, - 0.844853565f, 0.534997620f, - 0.838224706f, 0.545324988f, - 0.831469612f, 0.555570233f, - 0.824589303f, 0.565731811f, - 0.817584813f, 0.575808191f, - 0.810457198f, 0.585797857f, - 0.803207531f, 0.595699304f, - 0.795836905f, 0.605511041f, - 0.788346428f, 0.615231591f, - 0.780737229f, 0.624859488f, - 0.773010453f, 0.634393284f, - 0.765167266f, 0.643831543f, - 0.757208847f, 0.653172843f, - 0.749136395f, 0.662415778f, - 0.740951125f, 0.671558955f, - 0.732654272f, 0.680600998f, - 0.724247083f, 0.689540545f, - 0.715730825f, 0.698376249f, - 0.707106781f, 0.707106781f, - 0.698376249f, 0.715730825f, - 0.689540545f, 0.724247083f, - 0.680600998f, 0.732654272f, - 0.671558955f, 0.740951125f, - 0.662415778f, 0.749136395f, - 0.653172843f, 0.757208847f, - 0.643831543f, 0.765167266f, - 0.634393284f, 0.773010453f, - 0.624859488f, 0.780737229f, - 0.615231591f, 0.788346428f, - 0.605511041f, 0.795836905f, - 0.595699304f, 0.803207531f, - 0.585797857f, 0.810457198f, - 0.575808191f, 0.817584813f, - 0.565731811f, 0.824589303f, - 0.555570233f, 0.831469612f, - 0.545324988f, 0.838224706f, - 0.534997620f, 0.844853565f, - 0.524589683f, 0.851355193f, - 0.514102744f, 0.857728610f, - 0.503538384f, 0.863972856f, - 0.492898192f, 0.870086991f, - 0.482183772f, 0.876070094f, - 0.471396737f, 0.881921264f, - 0.460538711f, 0.887639620f, - 0.449611330f, 0.893224301f, - 0.438616239f, 0.898674466f, - 0.427555093f, 0.903989293f, - 0.416429560f, 0.909167983f, - 0.405241314f, 0.914209756f, - 0.393992040f, 0.919113852f, - 0.382683432f, 0.923879533f, - 0.371317194f, 0.928506080f, - 0.359895037f, 0.932992799f, - 0.348418680f, 0.937339012f, - 0.336889853f, 0.941544065f, - 0.325310292f, 0.945607325f, - 0.313681740f, 0.949528181f, - 0.302005949f, 0.953306040f, - 0.290284677f, 0.956940336f, - 0.278519689f, 0.960430519f, - 0.266712757f, 0.963776066f, - 0.254865660f, 0.966976471f, - 0.242980180f, 0.970031253f, - 0.231058108f, 0.972939952f, - 0.219101240f, 0.975702130f, - 0.207111376f, 0.978317371f, - 0.195090322f, 0.980785280f, - 0.183039888f, 0.983105487f, - 0.170961889f, 0.985277642f, - 0.158858143f, 0.987301418f, - 0.146730474f, 0.989176510f, - 0.134580709f, 0.990902635f, - 0.122410675f, 0.992479535f, - 0.110222207f, 0.993906970f, - 0.098017140f, 0.995184727f, - 0.085797312f, 0.996312612f, - 0.073564564f, 0.997290457f, - 0.061320736f, 0.998118113f, - 0.049067674f, 0.998795456f, - 0.036807223f, 0.999322385f, - 0.024541229f, 0.999698819f, - 0.012271538f, 0.999924702f, - 0.000000000f, 1.000000000f, - -0.012271538f, 0.999924702f, - -0.024541229f, 0.999698819f, - -0.036807223f, 0.999322385f, - -0.049067674f, 0.998795456f, - -0.061320736f, 0.998118113f, - -0.073564564f, 0.997290457f, - -0.085797312f, 0.996312612f, - -0.098017140f, 0.995184727f, - -0.110222207f, 0.993906970f, - -0.122410675f, 0.992479535f, - -0.134580709f, 0.990902635f, - -0.146730474f, 0.989176510f, - -0.158858143f, 0.987301418f, - -0.170961889f, 0.985277642f, - -0.183039888f, 0.983105487f, - -0.195090322f, 0.980785280f, - -0.207111376f, 0.978317371f, - -0.219101240f, 0.975702130f, - -0.231058108f, 0.972939952f, - -0.242980180f, 0.970031253f, - -0.254865660f, 0.966976471f, - -0.266712757f, 0.963776066f, - -0.278519689f, 0.960430519f, - -0.290284677f, 0.956940336f, - -0.302005949f, 0.953306040f, - -0.313681740f, 0.949528181f, - -0.325310292f, 0.945607325f, - -0.336889853f, 0.941544065f, - -0.348418680f, 0.937339012f, - -0.359895037f, 0.932992799f, - -0.371317194f, 0.928506080f, - -0.382683432f, 0.923879533f, - -0.393992040f, 0.919113852f, - -0.405241314f, 0.914209756f, - -0.416429560f, 0.909167983f, - -0.427555093f, 0.903989293f, - -0.438616239f, 0.898674466f, - -0.449611330f, 0.893224301f, - -0.460538711f, 0.887639620f, - -0.471396737f, 0.881921264f, - -0.482183772f, 0.876070094f, - -0.492898192f, 0.870086991f, - -0.503538384f, 0.863972856f, - -0.514102744f, 0.857728610f, - -0.524589683f, 0.851355193f, - -0.534997620f, 0.844853565f, - -0.545324988f, 0.838224706f, - -0.555570233f, 0.831469612f, - -0.565731811f, 0.824589303f, - -0.575808191f, 0.817584813f, - -0.585797857f, 0.810457198f, - -0.595699304f, 0.803207531f, - -0.605511041f, 0.795836905f, - -0.615231591f, 0.788346428f, - -0.624859488f, 0.780737229f, - -0.634393284f, 0.773010453f, - -0.643831543f, 0.765167266f, - -0.653172843f, 0.757208847f, - -0.662415778f, 0.749136395f, - -0.671558955f, 0.740951125f, - -0.680600998f, 0.732654272f, - -0.689540545f, 0.724247083f, - -0.698376249f, 0.715730825f, - -0.707106781f, 0.707106781f, - -0.715730825f, 0.698376249f, - -0.724247083f, 0.689540545f, - -0.732654272f, 0.680600998f, - -0.740951125f, 0.671558955f, - -0.749136395f, 0.662415778f, - -0.757208847f, 0.653172843f, - -0.765167266f, 0.643831543f, - -0.773010453f, 0.634393284f, - -0.780737229f, 0.624859488f, - -0.788346428f, 0.615231591f, - -0.795836905f, 0.605511041f, - -0.803207531f, 0.595699304f, - -0.810457198f, 0.585797857f, - -0.817584813f, 0.575808191f, - -0.824589303f, 0.565731811f, - -0.831469612f, 0.555570233f, - -0.838224706f, 0.545324988f, - -0.844853565f, 0.534997620f, - -0.851355193f, 0.524589683f, - -0.857728610f, 0.514102744f, - -0.863972856f, 0.503538384f, - -0.870086991f, 0.492898192f, - -0.876070094f, 0.482183772f, - -0.881921264f, 0.471396737f, - -0.887639620f, 0.460538711f, - -0.893224301f, 0.449611330f, - -0.898674466f, 0.438616239f, - -0.903989293f, 0.427555093f, - -0.909167983f, 0.416429560f, - -0.914209756f, 0.405241314f, - -0.919113852f, 0.393992040f, - -0.923879533f, 0.382683432f, - -0.928506080f, 0.371317194f, - -0.932992799f, 0.359895037f, - -0.937339012f, 0.348418680f, - -0.941544065f, 0.336889853f, - -0.945607325f, 0.325310292f, - -0.949528181f, 0.313681740f, - -0.953306040f, 0.302005949f, - -0.956940336f, 0.290284677f, - -0.960430519f, 0.278519689f, - -0.963776066f, 0.266712757f, - -0.966976471f, 0.254865660f, - -0.970031253f, 0.242980180f, - -0.972939952f, 0.231058108f, - -0.975702130f, 0.219101240f, - -0.978317371f, 0.207111376f, - -0.980785280f, 0.195090322f, - -0.983105487f, 0.183039888f, - -0.985277642f, 0.170961889f, - -0.987301418f, 0.158858143f, - -0.989176510f, 0.146730474f, - -0.990902635f, 0.134580709f, - -0.992479535f, 0.122410675f, - -0.993906970f, 0.110222207f, - -0.995184727f, 0.098017140f, - -0.996312612f, 0.085797312f, - -0.997290457f, 0.073564564f, - -0.998118113f, 0.061320736f, - -0.998795456f, 0.049067674f, - -0.999322385f, 0.036807223f, - -0.999698819f, 0.024541229f, - -0.999924702f, 0.012271538f, - -1.000000000f, 0.000000000f, - -0.999924702f, -0.012271538f, - -0.999698819f, -0.024541229f, - -0.999322385f, -0.036807223f, - -0.998795456f, -0.049067674f, - -0.998118113f, -0.061320736f, - -0.997290457f, -0.073564564f, - -0.996312612f, -0.085797312f, - -0.995184727f, -0.098017140f, - -0.993906970f, -0.110222207f, - -0.992479535f, -0.122410675f, - -0.990902635f, -0.134580709f, - -0.989176510f, -0.146730474f, - -0.987301418f, -0.158858143f, - -0.985277642f, -0.170961889f, - -0.983105487f, -0.183039888f, - -0.980785280f, -0.195090322f, - -0.978317371f, -0.207111376f, - -0.975702130f, -0.219101240f, - -0.972939952f, -0.231058108f, - -0.970031253f, -0.242980180f, - -0.966976471f, -0.254865660f, - -0.963776066f, -0.266712757f, - -0.960430519f, -0.278519689f, - -0.956940336f, -0.290284677f, - -0.953306040f, -0.302005949f, - -0.949528181f, -0.313681740f, - -0.945607325f, -0.325310292f, - -0.941544065f, -0.336889853f, - -0.937339012f, -0.348418680f, - -0.932992799f, -0.359895037f, - -0.928506080f, -0.371317194f, - -0.923879533f, -0.382683432f, - -0.919113852f, -0.393992040f, - -0.914209756f, -0.405241314f, - -0.909167983f, -0.416429560f, - -0.903989293f, -0.427555093f, - -0.898674466f, -0.438616239f, - -0.893224301f, -0.449611330f, - -0.887639620f, -0.460538711f, - -0.881921264f, -0.471396737f, - -0.876070094f, -0.482183772f, - -0.870086991f, -0.492898192f, - -0.863972856f, -0.503538384f, - -0.857728610f, -0.514102744f, - -0.851355193f, -0.524589683f, - -0.844853565f, -0.534997620f, - -0.838224706f, -0.545324988f, - -0.831469612f, -0.555570233f, - -0.824589303f, -0.565731811f, - -0.817584813f, -0.575808191f, - -0.810457198f, -0.585797857f, - -0.803207531f, -0.595699304f, - -0.795836905f, -0.605511041f, - -0.788346428f, -0.615231591f, - -0.780737229f, -0.624859488f, - -0.773010453f, -0.634393284f, - -0.765167266f, -0.643831543f, - -0.757208847f, -0.653172843f, - -0.749136395f, -0.662415778f, - -0.740951125f, -0.671558955f, - -0.732654272f, -0.680600998f, - -0.724247083f, -0.689540545f, - -0.715730825f, -0.698376249f, - -0.707106781f, -0.707106781f, - -0.698376249f, -0.715730825f, - -0.689540545f, -0.724247083f, - -0.680600998f, -0.732654272f, - -0.671558955f, -0.740951125f, - -0.662415778f, -0.749136395f, - -0.653172843f, -0.757208847f, - -0.643831543f, -0.765167266f, - -0.634393284f, -0.773010453f, - -0.624859488f, -0.780737229f, - -0.615231591f, -0.788346428f, - -0.605511041f, -0.795836905f, - -0.595699304f, -0.803207531f, - -0.585797857f, -0.810457198f, - -0.575808191f, -0.817584813f, - -0.565731811f, -0.824589303f, - -0.555570233f, -0.831469612f, - -0.545324988f, -0.838224706f, - -0.534997620f, -0.844853565f, - -0.524589683f, -0.851355193f, - -0.514102744f, -0.857728610f, - -0.503538384f, -0.863972856f, - -0.492898192f, -0.870086991f, - -0.482183772f, -0.876070094f, - -0.471396737f, -0.881921264f, - -0.460538711f, -0.887639620f, - -0.449611330f, -0.893224301f, - -0.438616239f, -0.898674466f, - -0.427555093f, -0.903989293f, - -0.416429560f, -0.909167983f, - -0.405241314f, -0.914209756f, - -0.393992040f, -0.919113852f, - -0.382683432f, -0.923879533f, - -0.371317194f, -0.928506080f, - -0.359895037f, -0.932992799f, - -0.348418680f, -0.937339012f, - -0.336889853f, -0.941544065f, - -0.325310292f, -0.945607325f, - -0.313681740f, -0.949528181f, - -0.302005949f, -0.953306040f, - -0.290284677f, -0.956940336f, - -0.278519689f, -0.960430519f, - -0.266712757f, -0.963776066f, - -0.254865660f, -0.966976471f, - -0.242980180f, -0.970031253f, - -0.231058108f, -0.972939952f, - -0.219101240f, -0.975702130f, - -0.207111376f, -0.978317371f, - -0.195090322f, -0.980785280f, - -0.183039888f, -0.983105487f, - -0.170961889f, -0.985277642f, - -0.158858143f, -0.987301418f, - -0.146730474f, -0.989176510f, - -0.134580709f, -0.990902635f, - -0.122410675f, -0.992479535f, - -0.110222207f, -0.993906970f, - -0.098017140f, -0.995184727f, - -0.085797312f, -0.996312612f, - -0.073564564f, -0.997290457f, - -0.061320736f, -0.998118113f, - -0.049067674f, -0.998795456f, - -0.036807223f, -0.999322385f, - -0.024541229f, -0.999698819f, - -0.012271538f, -0.999924702f, - -0.000000000f, -1.000000000f, - 0.012271538f, -0.999924702f, - 0.024541229f, -0.999698819f, - 0.036807223f, -0.999322385f, - 0.049067674f, -0.998795456f, - 0.061320736f, -0.998118113f, - 0.073564564f, -0.997290457f, - 0.085797312f, -0.996312612f, - 0.098017140f, -0.995184727f, - 0.110222207f, -0.993906970f, - 0.122410675f, -0.992479535f, - 0.134580709f, -0.990902635f, - 0.146730474f, -0.989176510f, - 0.158858143f, -0.987301418f, - 0.170961889f, -0.985277642f, - 0.183039888f, -0.983105487f, - 0.195090322f, -0.980785280f, - 0.207111376f, -0.978317371f, - 0.219101240f, -0.975702130f, - 0.231058108f, -0.972939952f, - 0.242980180f, -0.970031253f, - 0.254865660f, -0.966976471f, - 0.266712757f, -0.963776066f, - 0.278519689f, -0.960430519f, - 0.290284677f, -0.956940336f, - 0.302005949f, -0.953306040f, - 0.313681740f, -0.949528181f, - 0.325310292f, -0.945607325f, - 0.336889853f, -0.941544065f, - 0.348418680f, -0.937339012f, - 0.359895037f, -0.932992799f, - 0.371317194f, -0.928506080f, - 0.382683432f, -0.923879533f, - 0.393992040f, -0.919113852f, - 0.405241314f, -0.914209756f, - 0.416429560f, -0.909167983f, - 0.427555093f, -0.903989293f, - 0.438616239f, -0.898674466f, - 0.449611330f, -0.893224301f, - 0.460538711f, -0.887639620f, - 0.471396737f, -0.881921264f, - 0.482183772f, -0.876070094f, - 0.492898192f, -0.870086991f, - 0.503538384f, -0.863972856f, - 0.514102744f, -0.857728610f, - 0.524589683f, -0.851355193f, - 0.534997620f, -0.844853565f, - 0.545324988f, -0.838224706f, - 0.555570233f, -0.831469612f, - 0.565731811f, -0.824589303f, - 0.575808191f, -0.817584813f, - 0.585797857f, -0.810457198f, - 0.595699304f, -0.803207531f, - 0.605511041f, -0.795836905f, - 0.615231591f, -0.788346428f, - 0.624859488f, -0.780737229f, - 0.634393284f, -0.773010453f, - 0.643831543f, -0.765167266f, - 0.653172843f, -0.757208847f, - 0.662415778f, -0.749136395f, - 0.671558955f, -0.740951125f, - 0.680600998f, -0.732654272f, - 0.689540545f, -0.724247083f, - 0.698376249f, -0.715730825f, - 0.707106781f, -0.707106781f, - 0.715730825f, -0.698376249f, - 0.724247083f, -0.689540545f, - 0.732654272f, -0.680600998f, - 0.740951125f, -0.671558955f, - 0.749136395f, -0.662415778f, - 0.757208847f, -0.653172843f, - 0.765167266f, -0.643831543f, - 0.773010453f, -0.634393284f, - 0.780737229f, -0.624859488f, - 0.788346428f, -0.615231591f, - 0.795836905f, -0.605511041f, - 0.803207531f, -0.595699304f, - 0.810457198f, -0.585797857f, - 0.817584813f, -0.575808191f, - 0.824589303f, -0.565731811f, - 0.831469612f, -0.555570233f, - 0.838224706f, -0.545324988f, - 0.844853565f, -0.534997620f, - 0.851355193f, -0.524589683f, - 0.857728610f, -0.514102744f, - 0.863972856f, -0.503538384f, - 0.870086991f, -0.492898192f, - 0.876070094f, -0.482183772f, - 0.881921264f, -0.471396737f, - 0.887639620f, -0.460538711f, - 0.893224301f, -0.449611330f, - 0.898674466f, -0.438616239f, - 0.903989293f, -0.427555093f, - 0.909167983f, -0.416429560f, - 0.914209756f, -0.405241314f, - 0.919113852f, -0.393992040f, - 0.923879533f, -0.382683432f, - 0.928506080f, -0.371317194f, - 0.932992799f, -0.359895037f, - 0.937339012f, -0.348418680f, - 0.941544065f, -0.336889853f, - 0.945607325f, -0.325310292f, - 0.949528181f, -0.313681740f, - 0.953306040f, -0.302005949f, - 0.956940336f, -0.290284677f, - 0.960430519f, -0.278519689f, - 0.963776066f, -0.266712757f, - 0.966976471f, -0.254865660f, - 0.970031253f, -0.242980180f, - 0.972939952f, -0.231058108f, - 0.975702130f, -0.219101240f, - 0.978317371f, -0.207111376f, - 0.980785280f, -0.195090322f, - 0.983105487f, -0.183039888f, - 0.985277642f, -0.170961889f, - 0.987301418f, -0.158858143f, - 0.989176510f, -0.146730474f, - 0.990902635f, -0.134580709f, - 0.992479535f, -0.122410675f, - 0.993906970f, -0.110222207f, - 0.995184727f, -0.098017140f, - 0.996312612f, -0.085797312f, - 0.997290457f, -0.073564564f, - 0.998118113f, -0.061320736f, - 0.998795456f, -0.049067674f, - 0.999322385f, -0.036807223f, - 0.999698819f, -0.024541229f, - 0.999924702f, -0.012271538f -}; -/** -* \par -* Example code for Floating-point Twiddle factors Generation: -* \par -*
for(i = 0; i< N/; i++)
-* {
-*	twiddleCoef[2*i]= cos(i * 2*PI/(float)N);
-*	twiddleCoef[2*i+1]= sin(i * 2*PI/(float)N);
-* } 
-* \par -* where N = 1024 and PI = 3.14159265358979 -* \par -* Cos and Sin values are in interleaved fashion -* -*/ -const float32_t twiddleCoef_1024[2048] = { - 1.000000000f, 0.000000000f, - 0.999981175f, 0.006135885f, - 0.999924702f, 0.012271538f, - 0.999830582f, 0.018406730f, - 0.999698819f, 0.024541229f, - 0.999529418f, 0.030674803f, - 0.999322385f, 0.036807223f, - 0.999077728f, 0.042938257f, - 0.998795456f, 0.049067674f, - 0.998475581f, 0.055195244f, - 0.998118113f, 0.061320736f, - 0.997723067f, 0.067443920f, - 0.997290457f, 0.073564564f, - 0.996820299f, 0.079682438f, - 0.996312612f, 0.085797312f, - 0.995767414f, 0.091908956f, - 0.995184727f, 0.098017140f, - 0.994564571f, 0.104121634f, - 0.993906970f, 0.110222207f, - 0.993211949f, 0.116318631f, - 0.992479535f, 0.122410675f, - 0.991709754f, 0.128498111f, - 0.990902635f, 0.134580709f, - 0.990058210f, 0.140658239f, - 0.989176510f, 0.146730474f, - 0.988257568f, 0.152797185f, - 0.987301418f, 0.158858143f, - 0.986308097f, 0.164913120f, - 0.985277642f, 0.170961889f, - 0.984210092f, 0.177004220f, - 0.983105487f, 0.183039888f, - 0.981963869f, 0.189068664f, - 0.980785280f, 0.195090322f, - 0.979569766f, 0.201104635f, - 0.978317371f, 0.207111376f, - 0.977028143f, 0.213110320f, - 0.975702130f, 0.219101240f, - 0.974339383f, 0.225083911f, - 0.972939952f, 0.231058108f, - 0.971503891f, 0.237023606f, - 0.970031253f, 0.242980180f, - 0.968522094f, 0.248927606f, - 0.966976471f, 0.254865660f, - 0.965394442f, 0.260794118f, - 0.963776066f, 0.266712757f, - 0.962121404f, 0.272621355f, - 0.960430519f, 0.278519689f, - 0.958703475f, 0.284407537f, - 0.956940336f, 0.290284677f, - 0.955141168f, 0.296150888f, - 0.953306040f, 0.302005949f, - 0.951435021f, 0.307849640f, - 0.949528181f, 0.313681740f, - 0.947585591f, 0.319502031f, - 0.945607325f, 0.325310292f, - 0.943593458f, 0.331106306f, - 0.941544065f, 0.336889853f, - 0.939459224f, 0.342660717f, - 0.937339012f, 0.348418680f, - 0.935183510f, 0.354163525f, - 0.932992799f, 0.359895037f, - 0.930766961f, 0.365612998f, - 0.928506080f, 0.371317194f, - 0.926210242f, 0.377007410f, - 0.923879533f, 0.382683432f, - 0.921514039f, 0.388345047f, - 0.919113852f, 0.393992040f, - 0.916679060f, 0.399624200f, - 0.914209756f, 0.405241314f, - 0.911706032f, 0.410843171f, - 0.909167983f, 0.416429560f, - 0.906595705f, 0.422000271f, - 0.903989293f, 0.427555093f, - 0.901348847f, 0.433093819f, - 0.898674466f, 0.438616239f, - 0.895966250f, 0.444122145f, - 0.893224301f, 0.449611330f, - 0.890448723f, 0.455083587f, - 0.887639620f, 0.460538711f, - 0.884797098f, 0.465976496f, - 0.881921264f, 0.471396737f, - 0.879012226f, 0.476799230f, - 0.876070094f, 0.482183772f, - 0.873094978f, 0.487550160f, - 0.870086991f, 0.492898192f, - 0.867046246f, 0.498227667f, - 0.863972856f, 0.503538384f, - 0.860866939f, 0.508830143f, - 0.857728610f, 0.514102744f, - 0.854557988f, 0.519355990f, - 0.851355193f, 0.524589683f, - 0.848120345f, 0.529803625f, - 0.844853565f, 0.534997620f, - 0.841554977f, 0.540171473f, - 0.838224706f, 0.545324988f, - 0.834862875f, 0.550457973f, - 0.831469612f, 0.555570233f, - 0.828045045f, 0.560661576f, - 0.824589303f, 0.565731811f, - 0.821102515f, 0.570780746f, - 0.817584813f, 0.575808191f, - 0.814036330f, 0.580813958f, - 0.810457198f, 0.585797857f, - 0.806847554f, 0.590759702f, - 0.803207531f, 0.595699304f, - 0.799537269f, 0.600616479f, - 0.795836905f, 0.605511041f, - 0.792106577f, 0.610382806f, - 0.788346428f, 0.615231591f, - 0.784556597f, 0.620057212f, - 0.780737229f, 0.624859488f, - 0.776888466f, 0.629638239f, - 0.773010453f, 0.634393284f, - 0.769103338f, 0.639124445f, - 0.765167266f, 0.643831543f, - 0.761202385f, 0.648514401f, - 0.757208847f, 0.653172843f, - 0.753186799f, 0.657806693f, - 0.749136395f, 0.662415778f, - 0.745057785f, 0.666999922f, - 0.740951125f, 0.671558955f, - 0.736816569f, 0.676092704f, - 0.732654272f, 0.680600998f, - 0.728464390f, 0.685083668f, - 0.724247083f, 0.689540545f, - 0.720002508f, 0.693971461f, - 0.715730825f, 0.698376249f, - 0.711432196f, 0.702754744f, - 0.707106781f, 0.707106781f, - 0.702754744f, 0.711432196f, - 0.698376249f, 0.715730825f, - 0.693971461f, 0.720002508f, - 0.689540545f, 0.724247083f, - 0.685083668f, 0.728464390f, - 0.680600998f, 0.732654272f, - 0.676092704f, 0.736816569f, - 0.671558955f, 0.740951125f, - 0.666999922f, 0.745057785f, - 0.662415778f, 0.749136395f, - 0.657806693f, 0.753186799f, - 0.653172843f, 0.757208847f, - 0.648514401f, 0.761202385f, - 0.643831543f, 0.765167266f, - 0.639124445f, 0.769103338f, - 0.634393284f, 0.773010453f, - 0.629638239f, 0.776888466f, - 0.624859488f, 0.780737229f, - 0.620057212f, 0.784556597f, - 0.615231591f, 0.788346428f, - 0.610382806f, 0.792106577f, - 0.605511041f, 0.795836905f, - 0.600616479f, 0.799537269f, - 0.595699304f, 0.803207531f, - 0.590759702f, 0.806847554f, - 0.585797857f, 0.810457198f, - 0.580813958f, 0.814036330f, - 0.575808191f, 0.817584813f, - 0.570780746f, 0.821102515f, - 0.565731811f, 0.824589303f, - 0.560661576f, 0.828045045f, - 0.555570233f, 0.831469612f, - 0.550457973f, 0.834862875f, - 0.545324988f, 0.838224706f, - 0.540171473f, 0.841554977f, - 0.534997620f, 0.844853565f, - 0.529803625f, 0.848120345f, - 0.524589683f, 0.851355193f, - 0.519355990f, 0.854557988f, - 0.514102744f, 0.857728610f, - 0.508830143f, 0.860866939f, - 0.503538384f, 0.863972856f, - 0.498227667f, 0.867046246f, - 0.492898192f, 0.870086991f, - 0.487550160f, 0.873094978f, - 0.482183772f, 0.876070094f, - 0.476799230f, 0.879012226f, - 0.471396737f, 0.881921264f, - 0.465976496f, 0.884797098f, - 0.460538711f, 0.887639620f, - 0.455083587f, 0.890448723f, - 0.449611330f, 0.893224301f, - 0.444122145f, 0.895966250f, - 0.438616239f, 0.898674466f, - 0.433093819f, 0.901348847f, - 0.427555093f, 0.903989293f, - 0.422000271f, 0.906595705f, - 0.416429560f, 0.909167983f, - 0.410843171f, 0.911706032f, - 0.405241314f, 0.914209756f, - 0.399624200f, 0.916679060f, - 0.393992040f, 0.919113852f, - 0.388345047f, 0.921514039f, - 0.382683432f, 0.923879533f, - 0.377007410f, 0.926210242f, - 0.371317194f, 0.928506080f, - 0.365612998f, 0.930766961f, - 0.359895037f, 0.932992799f, - 0.354163525f, 0.935183510f, - 0.348418680f, 0.937339012f, - 0.342660717f, 0.939459224f, - 0.336889853f, 0.941544065f, - 0.331106306f, 0.943593458f, - 0.325310292f, 0.945607325f, - 0.319502031f, 0.947585591f, - 0.313681740f, 0.949528181f, - 0.307849640f, 0.951435021f, - 0.302005949f, 0.953306040f, - 0.296150888f, 0.955141168f, - 0.290284677f, 0.956940336f, - 0.284407537f, 0.958703475f, - 0.278519689f, 0.960430519f, - 0.272621355f, 0.962121404f, - 0.266712757f, 0.963776066f, - 0.260794118f, 0.965394442f, - 0.254865660f, 0.966976471f, - 0.248927606f, 0.968522094f, - 0.242980180f, 0.970031253f, - 0.237023606f, 0.971503891f, - 0.231058108f, 0.972939952f, - 0.225083911f, 0.974339383f, - 0.219101240f, 0.975702130f, - 0.213110320f, 0.977028143f, - 0.207111376f, 0.978317371f, - 0.201104635f, 0.979569766f, - 0.195090322f, 0.980785280f, - 0.189068664f, 0.981963869f, - 0.183039888f, 0.983105487f, - 0.177004220f, 0.984210092f, - 0.170961889f, 0.985277642f, - 0.164913120f, 0.986308097f, - 0.158858143f, 0.987301418f, - 0.152797185f, 0.988257568f, - 0.146730474f, 0.989176510f, - 0.140658239f, 0.990058210f, - 0.134580709f, 0.990902635f, - 0.128498111f, 0.991709754f, - 0.122410675f, 0.992479535f, - 0.116318631f, 0.993211949f, - 0.110222207f, 0.993906970f, - 0.104121634f, 0.994564571f, - 0.098017140f, 0.995184727f, - 0.091908956f, 0.995767414f, - 0.085797312f, 0.996312612f, - 0.079682438f, 0.996820299f, - 0.073564564f, 0.997290457f, - 0.067443920f, 0.997723067f, - 0.061320736f, 0.998118113f, - 0.055195244f, 0.998475581f, - 0.049067674f, 0.998795456f, - 0.042938257f, 0.999077728f, - 0.036807223f, 0.999322385f, - 0.030674803f, 0.999529418f, - 0.024541229f, 0.999698819f, - 0.018406730f, 0.999830582f, - 0.012271538f, 0.999924702f, - 0.006135885f, 0.999981175f, - 0.000000000f, 1.000000000f, - -0.006135885f, 0.999981175f, - -0.012271538f, 0.999924702f, - -0.018406730f, 0.999830582f, - -0.024541229f, 0.999698819f, - -0.030674803f, 0.999529418f, - -0.036807223f, 0.999322385f, - -0.042938257f, 0.999077728f, - -0.049067674f, 0.998795456f, - -0.055195244f, 0.998475581f, - -0.061320736f, 0.998118113f, - -0.067443920f, 0.997723067f, - -0.073564564f, 0.997290457f, - -0.079682438f, 0.996820299f, - -0.085797312f, 0.996312612f, - -0.091908956f, 0.995767414f, - -0.098017140f, 0.995184727f, - -0.104121634f, 0.994564571f, - -0.110222207f, 0.993906970f, - -0.116318631f, 0.993211949f, - -0.122410675f, 0.992479535f, - -0.128498111f, 0.991709754f, - -0.134580709f, 0.990902635f, - -0.140658239f, 0.990058210f, - -0.146730474f, 0.989176510f, - -0.152797185f, 0.988257568f, - -0.158858143f, 0.987301418f, - -0.164913120f, 0.986308097f, - -0.170961889f, 0.985277642f, - -0.177004220f, 0.984210092f, - -0.183039888f, 0.983105487f, - -0.189068664f, 0.981963869f, - -0.195090322f, 0.980785280f, - -0.201104635f, 0.979569766f, - -0.207111376f, 0.978317371f, - -0.213110320f, 0.977028143f, - -0.219101240f, 0.975702130f, - -0.225083911f, 0.974339383f, - -0.231058108f, 0.972939952f, - -0.237023606f, 0.971503891f, - -0.242980180f, 0.970031253f, - -0.248927606f, 0.968522094f, - -0.254865660f, 0.966976471f, - -0.260794118f, 0.965394442f, - -0.266712757f, 0.963776066f, - -0.272621355f, 0.962121404f, - -0.278519689f, 0.960430519f, - -0.284407537f, 0.958703475f, - -0.290284677f, 0.956940336f, - -0.296150888f, 0.955141168f, - -0.302005949f, 0.953306040f, - -0.307849640f, 0.951435021f, - -0.313681740f, 0.949528181f, - -0.319502031f, 0.947585591f, - -0.325310292f, 0.945607325f, - -0.331106306f, 0.943593458f, - -0.336889853f, 0.941544065f, - -0.342660717f, 0.939459224f, - -0.348418680f, 0.937339012f, - -0.354163525f, 0.935183510f, - -0.359895037f, 0.932992799f, - -0.365612998f, 0.930766961f, - -0.371317194f, 0.928506080f, - -0.377007410f, 0.926210242f, - -0.382683432f, 0.923879533f, - -0.388345047f, 0.921514039f, - -0.393992040f, 0.919113852f, - -0.399624200f, 0.916679060f, - -0.405241314f, 0.914209756f, - -0.410843171f, 0.911706032f, - -0.416429560f, 0.909167983f, - -0.422000271f, 0.906595705f, - -0.427555093f, 0.903989293f, - -0.433093819f, 0.901348847f, - -0.438616239f, 0.898674466f, - -0.444122145f, 0.895966250f, - -0.449611330f, 0.893224301f, - -0.455083587f, 0.890448723f, - -0.460538711f, 0.887639620f, - -0.465976496f, 0.884797098f, - -0.471396737f, 0.881921264f, - -0.476799230f, 0.879012226f, - -0.482183772f, 0.876070094f, - -0.487550160f, 0.873094978f, - -0.492898192f, 0.870086991f, - -0.498227667f, 0.867046246f, - -0.503538384f, 0.863972856f, - -0.508830143f, 0.860866939f, - -0.514102744f, 0.857728610f, - -0.519355990f, 0.854557988f, - -0.524589683f, 0.851355193f, - -0.529803625f, 0.848120345f, - -0.534997620f, 0.844853565f, - -0.540171473f, 0.841554977f, - -0.545324988f, 0.838224706f, - -0.550457973f, 0.834862875f, - -0.555570233f, 0.831469612f, - -0.560661576f, 0.828045045f, - -0.565731811f, 0.824589303f, - -0.570780746f, 0.821102515f, - -0.575808191f, 0.817584813f, - -0.580813958f, 0.814036330f, - -0.585797857f, 0.810457198f, - -0.590759702f, 0.806847554f, - -0.595699304f, 0.803207531f, - -0.600616479f, 0.799537269f, - -0.605511041f, 0.795836905f, - -0.610382806f, 0.792106577f, - -0.615231591f, 0.788346428f, - -0.620057212f, 0.784556597f, - -0.624859488f, 0.780737229f, - -0.629638239f, 0.776888466f, - -0.634393284f, 0.773010453f, - -0.639124445f, 0.769103338f, - -0.643831543f, 0.765167266f, - -0.648514401f, 0.761202385f, - -0.653172843f, 0.757208847f, - -0.657806693f, 0.753186799f, - -0.662415778f, 0.749136395f, - -0.666999922f, 0.745057785f, - -0.671558955f, 0.740951125f, - -0.676092704f, 0.736816569f, - -0.680600998f, 0.732654272f, - -0.685083668f, 0.728464390f, - -0.689540545f, 0.724247083f, - -0.693971461f, 0.720002508f, - -0.698376249f, 0.715730825f, - -0.702754744f, 0.711432196f, - -0.707106781f, 0.707106781f, - -0.711432196f, 0.702754744f, - -0.715730825f, 0.698376249f, - -0.720002508f, 0.693971461f, - -0.724247083f, 0.689540545f, - -0.728464390f, 0.685083668f, - -0.732654272f, 0.680600998f, - -0.736816569f, 0.676092704f, - -0.740951125f, 0.671558955f, - -0.745057785f, 0.666999922f, - -0.749136395f, 0.662415778f, - -0.753186799f, 0.657806693f, - -0.757208847f, 0.653172843f, - -0.761202385f, 0.648514401f, - -0.765167266f, 0.643831543f, - -0.769103338f, 0.639124445f, - -0.773010453f, 0.634393284f, - -0.776888466f, 0.629638239f, - -0.780737229f, 0.624859488f, - -0.784556597f, 0.620057212f, - -0.788346428f, 0.615231591f, - -0.792106577f, 0.610382806f, - -0.795836905f, 0.605511041f, - -0.799537269f, 0.600616479f, - -0.803207531f, 0.595699304f, - -0.806847554f, 0.590759702f, - -0.810457198f, 0.585797857f, - -0.814036330f, 0.580813958f, - -0.817584813f, 0.575808191f, - -0.821102515f, 0.570780746f, - -0.824589303f, 0.565731811f, - -0.828045045f, 0.560661576f, - -0.831469612f, 0.555570233f, - -0.834862875f, 0.550457973f, - -0.838224706f, 0.545324988f, - -0.841554977f, 0.540171473f, - -0.844853565f, 0.534997620f, - -0.848120345f, 0.529803625f, - -0.851355193f, 0.524589683f, - -0.854557988f, 0.519355990f, - -0.857728610f, 0.514102744f, - -0.860866939f, 0.508830143f, - -0.863972856f, 0.503538384f, - -0.867046246f, 0.498227667f, - -0.870086991f, 0.492898192f, - -0.873094978f, 0.487550160f, - -0.876070094f, 0.482183772f, - -0.879012226f, 0.476799230f, - -0.881921264f, 0.471396737f, - -0.884797098f, 0.465976496f, - -0.887639620f, 0.460538711f, - -0.890448723f, 0.455083587f, - -0.893224301f, 0.449611330f, - -0.895966250f, 0.444122145f, - -0.898674466f, 0.438616239f, - -0.901348847f, 0.433093819f, - -0.903989293f, 0.427555093f, - -0.906595705f, 0.422000271f, - -0.909167983f, 0.416429560f, - -0.911706032f, 0.410843171f, - -0.914209756f, 0.405241314f, - -0.916679060f, 0.399624200f, - -0.919113852f, 0.393992040f, - -0.921514039f, 0.388345047f, - -0.923879533f, 0.382683432f, - -0.926210242f, 0.377007410f, - -0.928506080f, 0.371317194f, - -0.930766961f, 0.365612998f, - -0.932992799f, 0.359895037f, - -0.935183510f, 0.354163525f, - -0.937339012f, 0.348418680f, - -0.939459224f, 0.342660717f, - -0.941544065f, 0.336889853f, - -0.943593458f, 0.331106306f, - -0.945607325f, 0.325310292f, - -0.947585591f, 0.319502031f, - -0.949528181f, 0.313681740f, - -0.951435021f, 0.307849640f, - -0.953306040f, 0.302005949f, - -0.955141168f, 0.296150888f, - -0.956940336f, 0.290284677f, - -0.958703475f, 0.284407537f, - -0.960430519f, 0.278519689f, - -0.962121404f, 0.272621355f, - -0.963776066f, 0.266712757f, - -0.965394442f, 0.260794118f, - -0.966976471f, 0.254865660f, - -0.968522094f, 0.248927606f, - -0.970031253f, 0.242980180f, - -0.971503891f, 0.237023606f, - -0.972939952f, 0.231058108f, - -0.974339383f, 0.225083911f, - -0.975702130f, 0.219101240f, - -0.977028143f, 0.213110320f, - -0.978317371f, 0.207111376f, - -0.979569766f, 0.201104635f, - -0.980785280f, 0.195090322f, - -0.981963869f, 0.189068664f, - -0.983105487f, 0.183039888f, - -0.984210092f, 0.177004220f, - -0.985277642f, 0.170961889f, - -0.986308097f, 0.164913120f, - -0.987301418f, 0.158858143f, - -0.988257568f, 0.152797185f, - -0.989176510f, 0.146730474f, - -0.990058210f, 0.140658239f, - -0.990902635f, 0.134580709f, - -0.991709754f, 0.128498111f, - -0.992479535f, 0.122410675f, - -0.993211949f, 0.116318631f, - -0.993906970f, 0.110222207f, - -0.994564571f, 0.104121634f, - -0.995184727f, 0.098017140f, - -0.995767414f, 0.091908956f, - -0.996312612f, 0.085797312f, - -0.996820299f, 0.079682438f, - -0.997290457f, 0.073564564f, - -0.997723067f, 0.067443920f, - -0.998118113f, 0.061320736f, - -0.998475581f, 0.055195244f, - -0.998795456f, 0.049067674f, - -0.999077728f, 0.042938257f, - -0.999322385f, 0.036807223f, - -0.999529418f, 0.030674803f, - -0.999698819f, 0.024541229f, - -0.999830582f, 0.018406730f, - -0.999924702f, 0.012271538f, - -0.999981175f, 0.006135885f, - -1.000000000f, 0.000000000f, - -0.999981175f, -0.006135885f, - -0.999924702f, -0.012271538f, - -0.999830582f, -0.018406730f, - -0.999698819f, -0.024541229f, - -0.999529418f, -0.030674803f, - -0.999322385f, -0.036807223f, - -0.999077728f, -0.042938257f, - -0.998795456f, -0.049067674f, - -0.998475581f, -0.055195244f, - -0.998118113f, -0.061320736f, - -0.997723067f, -0.067443920f, - -0.997290457f, -0.073564564f, - -0.996820299f, -0.079682438f, - -0.996312612f, -0.085797312f, - -0.995767414f, -0.091908956f, - -0.995184727f, -0.098017140f, - -0.994564571f, -0.104121634f, - -0.993906970f, -0.110222207f, - -0.993211949f, -0.116318631f, - -0.992479535f, -0.122410675f, - -0.991709754f, -0.128498111f, - -0.990902635f, -0.134580709f, - -0.990058210f, -0.140658239f, - -0.989176510f, -0.146730474f, - -0.988257568f, -0.152797185f, - -0.987301418f, -0.158858143f, - -0.986308097f, -0.164913120f, - -0.985277642f, -0.170961889f, - -0.984210092f, -0.177004220f, - -0.983105487f, -0.183039888f, - -0.981963869f, -0.189068664f, - -0.980785280f, -0.195090322f, - -0.979569766f, -0.201104635f, - -0.978317371f, -0.207111376f, - -0.977028143f, -0.213110320f, - -0.975702130f, -0.219101240f, - -0.974339383f, -0.225083911f, - -0.972939952f, -0.231058108f, - -0.971503891f, -0.237023606f, - -0.970031253f, -0.242980180f, - -0.968522094f, -0.248927606f, - -0.966976471f, -0.254865660f, - -0.965394442f, -0.260794118f, - -0.963776066f, -0.266712757f, - -0.962121404f, -0.272621355f, - -0.960430519f, -0.278519689f, - -0.958703475f, -0.284407537f, - -0.956940336f, -0.290284677f, - -0.955141168f, -0.296150888f, - -0.953306040f, -0.302005949f, - -0.951435021f, -0.307849640f, - -0.949528181f, -0.313681740f, - -0.947585591f, -0.319502031f, - -0.945607325f, -0.325310292f, - -0.943593458f, -0.331106306f, - -0.941544065f, -0.336889853f, - -0.939459224f, -0.342660717f, - -0.937339012f, -0.348418680f, - -0.935183510f, -0.354163525f, - -0.932992799f, -0.359895037f, - -0.930766961f, -0.365612998f, - -0.928506080f, -0.371317194f, - -0.926210242f, -0.377007410f, - -0.923879533f, -0.382683432f, - -0.921514039f, -0.388345047f, - -0.919113852f, -0.393992040f, - -0.916679060f, -0.399624200f, - -0.914209756f, -0.405241314f, - -0.911706032f, -0.410843171f, - -0.909167983f, -0.416429560f, - -0.906595705f, -0.422000271f, - -0.903989293f, -0.427555093f, - -0.901348847f, -0.433093819f, - -0.898674466f, -0.438616239f, - -0.895966250f, -0.444122145f, - -0.893224301f, -0.449611330f, - -0.890448723f, -0.455083587f, - -0.887639620f, -0.460538711f, - -0.884797098f, -0.465976496f, - -0.881921264f, -0.471396737f, - -0.879012226f, -0.476799230f, - -0.876070094f, -0.482183772f, - -0.873094978f, -0.487550160f, - -0.870086991f, -0.492898192f, - -0.867046246f, -0.498227667f, - -0.863972856f, -0.503538384f, - -0.860866939f, -0.508830143f, - -0.857728610f, -0.514102744f, - -0.854557988f, -0.519355990f, - -0.851355193f, -0.524589683f, - -0.848120345f, -0.529803625f, - -0.844853565f, -0.534997620f, - -0.841554977f, -0.540171473f, - -0.838224706f, -0.545324988f, - -0.834862875f, -0.550457973f, - -0.831469612f, -0.555570233f, - -0.828045045f, -0.560661576f, - -0.824589303f, -0.565731811f, - -0.821102515f, -0.570780746f, - -0.817584813f, -0.575808191f, - -0.814036330f, -0.580813958f, - -0.810457198f, -0.585797857f, - -0.806847554f, -0.590759702f, - -0.803207531f, -0.595699304f, - -0.799537269f, -0.600616479f, - -0.795836905f, -0.605511041f, - -0.792106577f, -0.610382806f, - -0.788346428f, -0.615231591f, - -0.784556597f, -0.620057212f, - -0.780737229f, -0.624859488f, - -0.776888466f, -0.629638239f, - -0.773010453f, -0.634393284f, - -0.769103338f, -0.639124445f, - -0.765167266f, -0.643831543f, - -0.761202385f, -0.648514401f, - -0.757208847f, -0.653172843f, - -0.753186799f, -0.657806693f, - -0.749136395f, -0.662415778f, - -0.745057785f, -0.666999922f, - -0.740951125f, -0.671558955f, - -0.736816569f, -0.676092704f, - -0.732654272f, -0.680600998f, - -0.728464390f, -0.685083668f, - -0.724247083f, -0.689540545f, - -0.720002508f, -0.693971461f, - -0.715730825f, -0.698376249f, - -0.711432196f, -0.702754744f, - -0.707106781f, -0.707106781f, - -0.702754744f, -0.711432196f, - -0.698376249f, -0.715730825f, - -0.693971461f, -0.720002508f, - -0.689540545f, -0.724247083f, - -0.685083668f, -0.728464390f, - -0.680600998f, -0.732654272f, - -0.676092704f, -0.736816569f, - -0.671558955f, -0.740951125f, - -0.666999922f, -0.745057785f, - -0.662415778f, -0.749136395f, - -0.657806693f, -0.753186799f, - -0.653172843f, -0.757208847f, - -0.648514401f, -0.761202385f, - -0.643831543f, -0.765167266f, - -0.639124445f, -0.769103338f, - -0.634393284f, -0.773010453f, - -0.629638239f, -0.776888466f, - -0.624859488f, -0.780737229f, - -0.620057212f, -0.784556597f, - -0.615231591f, -0.788346428f, - -0.610382806f, -0.792106577f, - -0.605511041f, -0.795836905f, - -0.600616479f, -0.799537269f, - -0.595699304f, -0.803207531f, - -0.590759702f, -0.806847554f, - -0.585797857f, -0.810457198f, - -0.580813958f, -0.814036330f, - -0.575808191f, -0.817584813f, - -0.570780746f, -0.821102515f, - -0.565731811f, -0.824589303f, - -0.560661576f, -0.828045045f, - -0.555570233f, -0.831469612f, - -0.550457973f, -0.834862875f, - -0.545324988f, -0.838224706f, - -0.540171473f, -0.841554977f, - -0.534997620f, -0.844853565f, - -0.529803625f, -0.848120345f, - -0.524589683f, -0.851355193f, - -0.519355990f, -0.854557988f, - -0.514102744f, -0.857728610f, - -0.508830143f, -0.860866939f, - -0.503538384f, -0.863972856f, - -0.498227667f, -0.867046246f, - -0.492898192f, -0.870086991f, - -0.487550160f, -0.873094978f, - -0.482183772f, -0.876070094f, - -0.476799230f, -0.879012226f, - -0.471396737f, -0.881921264f, - -0.465976496f, -0.884797098f, - -0.460538711f, -0.887639620f, - -0.455083587f, -0.890448723f, - -0.449611330f, -0.893224301f, - -0.444122145f, -0.895966250f, - -0.438616239f, -0.898674466f, - -0.433093819f, -0.901348847f, - -0.427555093f, -0.903989293f, - -0.422000271f, -0.906595705f, - -0.416429560f, -0.909167983f, - -0.410843171f, -0.911706032f, - -0.405241314f, -0.914209756f, - -0.399624200f, -0.916679060f, - -0.393992040f, -0.919113852f, - -0.388345047f, -0.921514039f, - -0.382683432f, -0.923879533f, - -0.377007410f, -0.926210242f, - -0.371317194f, -0.928506080f, - -0.365612998f, -0.930766961f, - -0.359895037f, -0.932992799f, - -0.354163525f, -0.935183510f, - -0.348418680f, -0.937339012f, - -0.342660717f, -0.939459224f, - -0.336889853f, -0.941544065f, - -0.331106306f, -0.943593458f, - -0.325310292f, -0.945607325f, - -0.319502031f, -0.947585591f, - -0.313681740f, -0.949528181f, - -0.307849640f, -0.951435021f, - -0.302005949f, -0.953306040f, - -0.296150888f, -0.955141168f, - -0.290284677f, -0.956940336f, - -0.284407537f, -0.958703475f, - -0.278519689f, -0.960430519f, - -0.272621355f, -0.962121404f, - -0.266712757f, -0.963776066f, - -0.260794118f, -0.965394442f, - -0.254865660f, -0.966976471f, - -0.248927606f, -0.968522094f, - -0.242980180f, -0.970031253f, - -0.237023606f, -0.971503891f, - -0.231058108f, -0.972939952f, - -0.225083911f, -0.974339383f, - -0.219101240f, -0.975702130f, - -0.213110320f, -0.977028143f, - -0.207111376f, -0.978317371f, - -0.201104635f, -0.979569766f, - -0.195090322f, -0.980785280f, - -0.189068664f, -0.981963869f, - -0.183039888f, -0.983105487f, - -0.177004220f, -0.984210092f, - -0.170961889f, -0.985277642f, - -0.164913120f, -0.986308097f, - -0.158858143f, -0.987301418f, - -0.152797185f, -0.988257568f, - -0.146730474f, -0.989176510f, - -0.140658239f, -0.990058210f, - -0.134580709f, -0.990902635f, - -0.128498111f, -0.991709754f, - -0.122410675f, -0.992479535f, - -0.116318631f, -0.993211949f, - -0.110222207f, -0.993906970f, - -0.104121634f, -0.994564571f, - -0.098017140f, -0.995184727f, - -0.091908956f, -0.995767414f, - -0.085797312f, -0.996312612f, - -0.079682438f, -0.996820299f, - -0.073564564f, -0.997290457f, - -0.067443920f, -0.997723067f, - -0.061320736f, -0.998118113f, - -0.055195244f, -0.998475581f, - -0.049067674f, -0.998795456f, - -0.042938257f, -0.999077728f, - -0.036807223f, -0.999322385f, - -0.030674803f, -0.999529418f, - -0.024541229f, -0.999698819f, - -0.018406730f, -0.999830582f, - -0.012271538f, -0.999924702f, - -0.006135885f, -0.999981175f, - -0.000000000f, -1.000000000f, - 0.006135885f, -0.999981175f, - 0.012271538f, -0.999924702f, - 0.018406730f, -0.999830582f, - 0.024541229f, -0.999698819f, - 0.030674803f, -0.999529418f, - 0.036807223f, -0.999322385f, - 0.042938257f, -0.999077728f, - 0.049067674f, -0.998795456f, - 0.055195244f, -0.998475581f, - 0.061320736f, -0.998118113f, - 0.067443920f, -0.997723067f, - 0.073564564f, -0.997290457f, - 0.079682438f, -0.996820299f, - 0.085797312f, -0.996312612f, - 0.091908956f, -0.995767414f, - 0.098017140f, -0.995184727f, - 0.104121634f, -0.994564571f, - 0.110222207f, -0.993906970f, - 0.116318631f, -0.993211949f, - 0.122410675f, -0.992479535f, - 0.128498111f, -0.991709754f, - 0.134580709f, -0.990902635f, - 0.140658239f, -0.990058210f, - 0.146730474f, -0.989176510f, - 0.152797185f, -0.988257568f, - 0.158858143f, -0.987301418f, - 0.164913120f, -0.986308097f, - 0.170961889f, -0.985277642f, - 0.177004220f, -0.984210092f, - 0.183039888f, -0.983105487f, - 0.189068664f, -0.981963869f, - 0.195090322f, -0.980785280f, - 0.201104635f, -0.979569766f, - 0.207111376f, -0.978317371f, - 0.213110320f, -0.977028143f, - 0.219101240f, -0.975702130f, - 0.225083911f, -0.974339383f, - 0.231058108f, -0.972939952f, - 0.237023606f, -0.971503891f, - 0.242980180f, -0.970031253f, - 0.248927606f, -0.968522094f, - 0.254865660f, -0.966976471f, - 0.260794118f, -0.965394442f, - 0.266712757f, -0.963776066f, - 0.272621355f, -0.962121404f, - 0.278519689f, -0.960430519f, - 0.284407537f, -0.958703475f, - 0.290284677f, -0.956940336f, - 0.296150888f, -0.955141168f, - 0.302005949f, -0.953306040f, - 0.307849640f, -0.951435021f, - 0.313681740f, -0.949528181f, - 0.319502031f, -0.947585591f, - 0.325310292f, -0.945607325f, - 0.331106306f, -0.943593458f, - 0.336889853f, -0.941544065f, - 0.342660717f, -0.939459224f, - 0.348418680f, -0.937339012f, - 0.354163525f, -0.935183510f, - 0.359895037f, -0.932992799f, - 0.365612998f, -0.930766961f, - 0.371317194f, -0.928506080f, - 0.377007410f, -0.926210242f, - 0.382683432f, -0.923879533f, - 0.388345047f, -0.921514039f, - 0.393992040f, -0.919113852f, - 0.399624200f, -0.916679060f, - 0.405241314f, -0.914209756f, - 0.410843171f, -0.911706032f, - 0.416429560f, -0.909167983f, - 0.422000271f, -0.906595705f, - 0.427555093f, -0.903989293f, - 0.433093819f, -0.901348847f, - 0.438616239f, -0.898674466f, - 0.444122145f, -0.895966250f, - 0.449611330f, -0.893224301f, - 0.455083587f, -0.890448723f, - 0.460538711f, -0.887639620f, - 0.465976496f, -0.884797098f, - 0.471396737f, -0.881921264f, - 0.476799230f, -0.879012226f, - 0.482183772f, -0.876070094f, - 0.487550160f, -0.873094978f, - 0.492898192f, -0.870086991f, - 0.498227667f, -0.867046246f, - 0.503538384f, -0.863972856f, - 0.508830143f, -0.860866939f, - 0.514102744f, -0.857728610f, - 0.519355990f, -0.854557988f, - 0.524589683f, -0.851355193f, - 0.529803625f, -0.848120345f, - 0.534997620f, -0.844853565f, - 0.540171473f, -0.841554977f, - 0.545324988f, -0.838224706f, - 0.550457973f, -0.834862875f, - 0.555570233f, -0.831469612f, - 0.560661576f, -0.828045045f, - 0.565731811f, -0.824589303f, - 0.570780746f, -0.821102515f, - 0.575808191f, -0.817584813f, - 0.580813958f, -0.814036330f, - 0.585797857f, -0.810457198f, - 0.590759702f, -0.806847554f, - 0.595699304f, -0.803207531f, - 0.600616479f, -0.799537269f, - 0.605511041f, -0.795836905f, - 0.610382806f, -0.792106577f, - 0.615231591f, -0.788346428f, - 0.620057212f, -0.784556597f, - 0.624859488f, -0.780737229f, - 0.629638239f, -0.776888466f, - 0.634393284f, -0.773010453f, - 0.639124445f, -0.769103338f, - 0.643831543f, -0.765167266f, - 0.648514401f, -0.761202385f, - 0.653172843f, -0.757208847f, - 0.657806693f, -0.753186799f, - 0.662415778f, -0.749136395f, - 0.666999922f, -0.745057785f, - 0.671558955f, -0.740951125f, - 0.676092704f, -0.736816569f, - 0.680600998f, -0.732654272f, - 0.685083668f, -0.728464390f, - 0.689540545f, -0.724247083f, - 0.693971461f, -0.720002508f, - 0.698376249f, -0.715730825f, - 0.702754744f, -0.711432196f, - 0.707106781f, -0.707106781f, - 0.711432196f, -0.702754744f, - 0.715730825f, -0.698376249f, - 0.720002508f, -0.693971461f, - 0.724247083f, -0.689540545f, - 0.728464390f, -0.685083668f, - 0.732654272f, -0.680600998f, - 0.736816569f, -0.676092704f, - 0.740951125f, -0.671558955f, - 0.745057785f, -0.666999922f, - 0.749136395f, -0.662415778f, - 0.753186799f, -0.657806693f, - 0.757208847f, -0.653172843f, - 0.761202385f, -0.648514401f, - 0.765167266f, -0.643831543f, - 0.769103338f, -0.639124445f, - 0.773010453f, -0.634393284f, - 0.776888466f, -0.629638239f, - 0.780737229f, -0.624859488f, - 0.784556597f, -0.620057212f, - 0.788346428f, -0.615231591f, - 0.792106577f, -0.610382806f, - 0.795836905f, -0.605511041f, - 0.799537269f, -0.600616479f, - 0.803207531f, -0.595699304f, - 0.806847554f, -0.590759702f, - 0.810457198f, -0.585797857f, - 0.814036330f, -0.580813958f, - 0.817584813f, -0.575808191f, - 0.821102515f, -0.570780746f, - 0.824589303f, -0.565731811f, - 0.828045045f, -0.560661576f, - 0.831469612f, -0.555570233f, - 0.834862875f, -0.550457973f, - 0.838224706f, -0.545324988f, - 0.841554977f, -0.540171473f, - 0.844853565f, -0.534997620f, - 0.848120345f, -0.529803625f, - 0.851355193f, -0.524589683f, - 0.854557988f, -0.519355990f, - 0.857728610f, -0.514102744f, - 0.860866939f, -0.508830143f, - 0.863972856f, -0.503538384f, - 0.867046246f, -0.498227667f, - 0.870086991f, -0.492898192f, - 0.873094978f, -0.487550160f, - 0.876070094f, -0.482183772f, - 0.879012226f, -0.476799230f, - 0.881921264f, -0.471396737f, - 0.884797098f, -0.465976496f, - 0.887639620f, -0.460538711f, - 0.890448723f, -0.455083587f, - 0.893224301f, -0.449611330f, - 0.895966250f, -0.444122145f, - 0.898674466f, -0.438616239f, - 0.901348847f, -0.433093819f, - 0.903989293f, -0.427555093f, - 0.906595705f, -0.422000271f, - 0.909167983f, -0.416429560f, - 0.911706032f, -0.410843171f, - 0.914209756f, -0.405241314f, - 0.916679060f, -0.399624200f, - 0.919113852f, -0.393992040f, - 0.921514039f, -0.388345047f, - 0.923879533f, -0.382683432f, - 0.926210242f, -0.377007410f, - 0.928506080f, -0.371317194f, - 0.930766961f, -0.365612998f, - 0.932992799f, -0.359895037f, - 0.935183510f, -0.354163525f, - 0.937339012f, -0.348418680f, - 0.939459224f, -0.342660717f, - 0.941544065f, -0.336889853f, - 0.943593458f, -0.331106306f, - 0.945607325f, -0.325310292f, - 0.947585591f, -0.319502031f, - 0.949528181f, -0.313681740f, - 0.951435021f, -0.307849640f, - 0.953306040f, -0.302005949f, - 0.955141168f, -0.296150888f, - 0.956940336f, -0.290284677f, - 0.958703475f, -0.284407537f, - 0.960430519f, -0.278519689f, - 0.962121404f, -0.272621355f, - 0.963776066f, -0.266712757f, - 0.965394442f, -0.260794118f, - 0.966976471f, -0.254865660f, - 0.968522094f, -0.248927606f, - 0.970031253f, -0.242980180f, - 0.971503891f, -0.237023606f, - 0.972939952f, -0.231058108f, - 0.974339383f, -0.225083911f, - 0.975702130f, -0.219101240f, - 0.977028143f, -0.213110320f, - 0.978317371f, -0.207111376f, - 0.979569766f, -0.201104635f, - 0.980785280f, -0.195090322f, - 0.981963869f, -0.189068664f, - 0.983105487f, -0.183039888f, - 0.984210092f, -0.177004220f, - 0.985277642f, -0.170961889f, - 0.986308097f, -0.164913120f, - 0.987301418f, -0.158858143f, - 0.988257568f, -0.152797185f, - 0.989176510f, -0.146730474f, - 0.990058210f, -0.140658239f, - 0.990902635f, -0.134580709f, - 0.991709754f, -0.128498111f, - 0.992479535f, -0.122410675f, - 0.993211949f, -0.116318631f, - 0.993906970f, -0.110222207f, - 0.994564571f, -0.104121634f, - 0.995184727f, -0.098017140f, - 0.995767414f, -0.091908956f, - 0.996312612f, -0.085797312f, - 0.996820299f, -0.079682438f, - 0.997290457f, -0.073564564f, - 0.997723067f, -0.067443920f, - 0.998118113f, -0.061320736f, - 0.998475581f, -0.055195244f, - 0.998795456f, -0.049067674f, - 0.999077728f, -0.042938257f, - 0.999322385f, -0.036807223f, - 0.999529418f, -0.030674803f, - 0.999698819f, -0.024541229f, - 0.999830582f, -0.018406730f, - 0.999924702f, -0.012271538f, - 0.999981175f, -0.006135885f -}; - -/** -* \par -* Example code for Floating-point Twiddle factors Generation: -* \par -*
for(i = 0; i< N/; i++)
-* {
-*	twiddleCoef[2*i]= cos(i * 2*PI/(float)N);
-*	twiddleCoef[2*i+1]= sin(i * 2*PI/(float)N);
-* } 
-* \par -* where N = 2048 and PI = 3.14159265358979 -* \par -* Cos and Sin values are in interleaved fashion -* -*/ -const float32_t twiddleCoef_2048[4096] = { - 1.000000000f, 0.000000000f, - 0.999995294f, 0.003067957f, - 0.999981175f, 0.006135885f, - 0.999957645f, 0.009203755f, - 0.999924702f, 0.012271538f, - 0.999882347f, 0.015339206f, - 0.999830582f, 0.018406730f, - 0.999769405f, 0.021474080f, - 0.999698819f, 0.024541229f, - 0.999618822f, 0.027608146f, - 0.999529418f, 0.030674803f, - 0.999430605f, 0.033741172f, - 0.999322385f, 0.036807223f, - 0.999204759f, 0.039872928f, - 0.999077728f, 0.042938257f, - 0.998941293f, 0.046003182f, - 0.998795456f, 0.049067674f, - 0.998640218f, 0.052131705f, - 0.998475581f, 0.055195244f, - 0.998301545f, 0.058258265f, - 0.998118113f, 0.061320736f, - 0.997925286f, 0.064382631f, - 0.997723067f, 0.067443920f, - 0.997511456f, 0.070504573f, - 0.997290457f, 0.073564564f, - 0.997060070f, 0.076623861f, - 0.996820299f, 0.079682438f, - 0.996571146f, 0.082740265f, - 0.996312612f, 0.085797312f, - 0.996044701f, 0.088853553f, - 0.995767414f, 0.091908956f, - 0.995480755f, 0.094963495f, - 0.995184727f, 0.098017140f, - 0.994879331f, 0.101069863f, - 0.994564571f, 0.104121634f, - 0.994240449f, 0.107172425f, - 0.993906970f, 0.110222207f, - 0.993564136f, 0.113270952f, - 0.993211949f, 0.116318631f, - 0.992850414f, 0.119365215f, - 0.992479535f, 0.122410675f, - 0.992099313f, 0.125454983f, - 0.991709754f, 0.128498111f, - 0.991310860f, 0.131540029f, - 0.990902635f, 0.134580709f, - 0.990485084f, 0.137620122f, - 0.990058210f, 0.140658239f, - 0.989622017f, 0.143695033f, - 0.989176510f, 0.146730474f, - 0.988721692f, 0.149764535f, - 0.988257568f, 0.152797185f, - 0.987784142f, 0.155828398f, - 0.987301418f, 0.158858143f, - 0.986809402f, 0.161886394f, - 0.986308097f, 0.164913120f, - 0.985797509f, 0.167938295f, - 0.985277642f, 0.170961889f, - 0.984748502f, 0.173983873f, - 0.984210092f, 0.177004220f, - 0.983662419f, 0.180022901f, - 0.983105487f, 0.183039888f, - 0.982539302f, 0.186055152f, - 0.981963869f, 0.189068664f, - 0.981379193f, 0.192080397f, - 0.980785280f, 0.195090322f, - 0.980182136f, 0.198098411f, - 0.979569766f, 0.201104635f, - 0.978948175f, 0.204108966f, - 0.978317371f, 0.207111376f, - 0.977677358f, 0.210111837f, - 0.977028143f, 0.213110320f, - 0.976369731f, 0.216106797f, - 0.975702130f, 0.219101240f, - 0.975025345f, 0.222093621f, - 0.974339383f, 0.225083911f, - 0.973644250f, 0.228072083f, - 0.972939952f, 0.231058108f, - 0.972226497f, 0.234041959f, - 0.971503891f, 0.237023606f, - 0.970772141f, 0.240003022f, - 0.970031253f, 0.242980180f, - 0.969281235f, 0.245955050f, - 0.968522094f, 0.248927606f, - 0.967753837f, 0.251897818f, - 0.966976471f, 0.254865660f, - 0.966190003f, 0.257831102f, - 0.965394442f, 0.260794118f, - 0.964589793f, 0.263754679f, - 0.963776066f, 0.266712757f, - 0.962953267f, 0.269668326f, - 0.962121404f, 0.272621355f, - 0.961280486f, 0.275571819f, - 0.960430519f, 0.278519689f, - 0.959571513f, 0.281464938f, - 0.958703475f, 0.284407537f, - 0.957826413f, 0.287347460f, - 0.956940336f, 0.290284677f, - 0.956045251f, 0.293219163f, - 0.955141168f, 0.296150888f, - 0.954228095f, 0.299079826f, - 0.953306040f, 0.302005949f, - 0.952375013f, 0.304929230f, - 0.951435021f, 0.307849640f, - 0.950486074f, 0.310767153f, - 0.949528181f, 0.313681740f, - 0.948561350f, 0.316593376f, - 0.947585591f, 0.319502031f, - 0.946600913f, 0.322407679f, - 0.945607325f, 0.325310292f, - 0.944604837f, 0.328209844f, - 0.943593458f, 0.331106306f, - 0.942573198f, 0.333999651f, - 0.941544065f, 0.336889853f, - 0.940506071f, 0.339776884f, - 0.939459224f, 0.342660717f, - 0.938403534f, 0.345541325f, - 0.937339012f, 0.348418680f, - 0.936265667f, 0.351292756f, - 0.935183510f, 0.354163525f, - 0.934092550f, 0.357030961f, - 0.932992799f, 0.359895037f, - 0.931884266f, 0.362755724f, - 0.930766961f, 0.365612998f, - 0.929640896f, 0.368466830f, - 0.928506080f, 0.371317194f, - 0.927362526f, 0.374164063f, - 0.926210242f, 0.377007410f, - 0.925049241f, 0.379847209f, - 0.923879533f, 0.382683432f, - 0.922701128f, 0.385516054f, - 0.921514039f, 0.388345047f, - 0.920318277f, 0.391170384f, - 0.919113852f, 0.393992040f, - 0.917900776f, 0.396809987f, - 0.916679060f, 0.399624200f, - 0.915448716f, 0.402434651f, - 0.914209756f, 0.405241314f, - 0.912962190f, 0.408044163f, - 0.911706032f, 0.410843171f, - 0.910441292f, 0.413638312f, - 0.909167983f, 0.416429560f, - 0.907886116f, 0.419216888f, - 0.906595705f, 0.422000271f, - 0.905296759f, 0.424779681f, - 0.903989293f, 0.427555093f, - 0.902673318f, 0.430326481f, - 0.901348847f, 0.433093819f, - 0.900015892f, 0.435857080f, - 0.898674466f, 0.438616239f, - 0.897324581f, 0.441371269f, - 0.895966250f, 0.444122145f, - 0.894599486f, 0.446868840f, - 0.893224301f, 0.449611330f, - 0.891840709f, 0.452349587f, - 0.890448723f, 0.455083587f, - 0.889048356f, 0.457813304f, - 0.887639620f, 0.460538711f, - 0.886222530f, 0.463259784f, - 0.884797098f, 0.465976496f, - 0.883363339f, 0.468688822f, - 0.881921264f, 0.471396737f, - 0.880470889f, 0.474100215f, - 0.879012226f, 0.476799230f, - 0.877545290f, 0.479493758f, - 0.876070094f, 0.482183772f, - 0.874586652f, 0.484869248f, - 0.873094978f, 0.487550160f, - 0.871595087f, 0.490226483f, - 0.870086991f, 0.492898192f, - 0.868570706f, 0.495565262f, - 0.867046246f, 0.498227667f, - 0.865513624f, 0.500885383f, - 0.863972856f, 0.503538384f, - 0.862423956f, 0.506186645f, - 0.860866939f, 0.508830143f, - 0.859301818f, 0.511468850f, - 0.857728610f, 0.514102744f, - 0.856147328f, 0.516731799f, - 0.854557988f, 0.519355990f, - 0.852960605f, 0.521975293f, - 0.851355193f, 0.524589683f, - 0.849741768f, 0.527199135f, - 0.848120345f, 0.529803625f, - 0.846490939f, 0.532403128f, - 0.844853565f, 0.534997620f, - 0.843208240f, 0.537587076f, - 0.841554977f, 0.540171473f, - 0.839893794f, 0.542750785f, - 0.838224706f, 0.545324988f, - 0.836547727f, 0.547894059f, - 0.834862875f, 0.550457973f, - 0.833170165f, 0.553016706f, - 0.831469612f, 0.555570233f, - 0.829761234f, 0.558118531f, - 0.828045045f, 0.560661576f, - 0.826321063f, 0.563199344f, - 0.824589303f, 0.565731811f, - 0.822849781f, 0.568258953f, - 0.821102515f, 0.570780746f, - 0.819347520f, 0.573297167f, - 0.817584813f, 0.575808191f, - 0.815814411f, 0.578313796f, - 0.814036330f, 0.580813958f, - 0.812250587f, 0.583308653f, - 0.810457198f, 0.585797857f, - 0.808656182f, 0.588281548f, - 0.806847554f, 0.590759702f, - 0.805031331f, 0.593232295f, - 0.803207531f, 0.595699304f, - 0.801376172f, 0.598160707f, - 0.799537269f, 0.600616479f, - 0.797690841f, 0.603066599f, - 0.795836905f, 0.605511041f, - 0.793975478f, 0.607949785f, - 0.792106577f, 0.610382806f, - 0.790230221f, 0.612810082f, - 0.788346428f, 0.615231591f, - 0.786455214f, 0.617647308f, - 0.784556597f, 0.620057212f, - 0.782650596f, 0.622461279f, - 0.780737229f, 0.624859488f, - 0.778816512f, 0.627251815f, - 0.776888466f, 0.629638239f, - 0.774953107f, 0.632018736f, - 0.773010453f, 0.634393284f, - 0.771060524f, 0.636761861f, - 0.769103338f, 0.639124445f, - 0.767138912f, 0.641481013f, - 0.765167266f, 0.643831543f, - 0.763188417f, 0.646176013f, - 0.761202385f, 0.648514401f, - 0.759209189f, 0.650846685f, - 0.757208847f, 0.653172843f, - 0.755201377f, 0.655492853f, - 0.753186799f, 0.657806693f, - 0.751165132f, 0.660114342f, - 0.749136395f, 0.662415778f, - 0.747100606f, 0.664710978f, - 0.745057785f, 0.666999922f, - 0.743007952f, 0.669282588f, - 0.740951125f, 0.671558955f, - 0.738887324f, 0.673829000f, - 0.736816569f, 0.676092704f, - 0.734738878f, 0.678350043f, - 0.732654272f, 0.680600998f, - 0.730562769f, 0.682845546f, - 0.728464390f, 0.685083668f, - 0.726359155f, 0.687315341f, - 0.724247083f, 0.689540545f, - 0.722128194f, 0.691759258f, - 0.720002508f, 0.693971461f, - 0.717870045f, 0.696177131f, - 0.715730825f, 0.698376249f, - 0.713584869f, 0.700568794f, - 0.711432196f, 0.702754744f, - 0.709272826f, 0.704934080f, - 0.707106781f, 0.707106781f, - 0.704934080f, 0.709272826f, - 0.702754744f, 0.711432196f, - 0.700568794f, 0.713584869f, - 0.698376249f, 0.715730825f, - 0.696177131f, 0.717870045f, - 0.693971461f, 0.720002508f, - 0.691759258f, 0.722128194f, - 0.689540545f, 0.724247083f, - 0.687315341f, 0.726359155f, - 0.685083668f, 0.728464390f, - 0.682845546f, 0.730562769f, - 0.680600998f, 0.732654272f, - 0.678350043f, 0.734738878f, - 0.676092704f, 0.736816569f, - 0.673829000f, 0.738887324f, - 0.671558955f, 0.740951125f, - 0.669282588f, 0.743007952f, - 0.666999922f, 0.745057785f, - 0.664710978f, 0.747100606f, - 0.662415778f, 0.749136395f, - 0.660114342f, 0.751165132f, - 0.657806693f, 0.753186799f, - 0.655492853f, 0.755201377f, - 0.653172843f, 0.757208847f, - 0.650846685f, 0.759209189f, - 0.648514401f, 0.761202385f, - 0.646176013f, 0.763188417f, - 0.643831543f, 0.765167266f, - 0.641481013f, 0.767138912f, - 0.639124445f, 0.769103338f, - 0.636761861f, 0.771060524f, - 0.634393284f, 0.773010453f, - 0.632018736f, 0.774953107f, - 0.629638239f, 0.776888466f, - 0.627251815f, 0.778816512f, - 0.624859488f, 0.780737229f, - 0.622461279f, 0.782650596f, - 0.620057212f, 0.784556597f, - 0.617647308f, 0.786455214f, - 0.615231591f, 0.788346428f, - 0.612810082f, 0.790230221f, - 0.610382806f, 0.792106577f, - 0.607949785f, 0.793975478f, - 0.605511041f, 0.795836905f, - 0.603066599f, 0.797690841f, - 0.600616479f, 0.799537269f, - 0.598160707f, 0.801376172f, - 0.595699304f, 0.803207531f, - 0.593232295f, 0.805031331f, - 0.590759702f, 0.806847554f, - 0.588281548f, 0.808656182f, - 0.585797857f, 0.810457198f, - 0.583308653f, 0.812250587f, - 0.580813958f, 0.814036330f, - 0.578313796f, 0.815814411f, - 0.575808191f, 0.817584813f, - 0.573297167f, 0.819347520f, - 0.570780746f, 0.821102515f, - 0.568258953f, 0.822849781f, - 0.565731811f, 0.824589303f, - 0.563199344f, 0.826321063f, - 0.560661576f, 0.828045045f, - 0.558118531f, 0.829761234f, - 0.555570233f, 0.831469612f, - 0.553016706f, 0.833170165f, - 0.550457973f, 0.834862875f, - 0.547894059f, 0.836547727f, - 0.545324988f, 0.838224706f, - 0.542750785f, 0.839893794f, - 0.540171473f, 0.841554977f, - 0.537587076f, 0.843208240f, - 0.534997620f, 0.844853565f, - 0.532403128f, 0.846490939f, - 0.529803625f, 0.848120345f, - 0.527199135f, 0.849741768f, - 0.524589683f, 0.851355193f, - 0.521975293f, 0.852960605f, - 0.519355990f, 0.854557988f, - 0.516731799f, 0.856147328f, - 0.514102744f, 0.857728610f, - 0.511468850f, 0.859301818f, - 0.508830143f, 0.860866939f, - 0.506186645f, 0.862423956f, - 0.503538384f, 0.863972856f, - 0.500885383f, 0.865513624f, - 0.498227667f, 0.867046246f, - 0.495565262f, 0.868570706f, - 0.492898192f, 0.870086991f, - 0.490226483f, 0.871595087f, - 0.487550160f, 0.873094978f, - 0.484869248f, 0.874586652f, - 0.482183772f, 0.876070094f, - 0.479493758f, 0.877545290f, - 0.476799230f, 0.879012226f, - 0.474100215f, 0.880470889f, - 0.471396737f, 0.881921264f, - 0.468688822f, 0.883363339f, - 0.465976496f, 0.884797098f, - 0.463259784f, 0.886222530f, - 0.460538711f, 0.887639620f, - 0.457813304f, 0.889048356f, - 0.455083587f, 0.890448723f, - 0.452349587f, 0.891840709f, - 0.449611330f, 0.893224301f, - 0.446868840f, 0.894599486f, - 0.444122145f, 0.895966250f, - 0.441371269f, 0.897324581f, - 0.438616239f, 0.898674466f, - 0.435857080f, 0.900015892f, - 0.433093819f, 0.901348847f, - 0.430326481f, 0.902673318f, - 0.427555093f, 0.903989293f, - 0.424779681f, 0.905296759f, - 0.422000271f, 0.906595705f, - 0.419216888f, 0.907886116f, - 0.416429560f, 0.909167983f, - 0.413638312f, 0.910441292f, - 0.410843171f, 0.911706032f, - 0.408044163f, 0.912962190f, - 0.405241314f, 0.914209756f, - 0.402434651f, 0.915448716f, - 0.399624200f, 0.916679060f, - 0.396809987f, 0.917900776f, - 0.393992040f, 0.919113852f, - 0.391170384f, 0.920318277f, - 0.388345047f, 0.921514039f, - 0.385516054f, 0.922701128f, - 0.382683432f, 0.923879533f, - 0.379847209f, 0.925049241f, - 0.377007410f, 0.926210242f, - 0.374164063f, 0.927362526f, - 0.371317194f, 0.928506080f, - 0.368466830f, 0.929640896f, - 0.365612998f, 0.930766961f, - 0.362755724f, 0.931884266f, - 0.359895037f, 0.932992799f, - 0.357030961f, 0.934092550f, - 0.354163525f, 0.935183510f, - 0.351292756f, 0.936265667f, - 0.348418680f, 0.937339012f, - 0.345541325f, 0.938403534f, - 0.342660717f, 0.939459224f, - 0.339776884f, 0.940506071f, - 0.336889853f, 0.941544065f, - 0.333999651f, 0.942573198f, - 0.331106306f, 0.943593458f, - 0.328209844f, 0.944604837f, - 0.325310292f, 0.945607325f, - 0.322407679f, 0.946600913f, - 0.319502031f, 0.947585591f, - 0.316593376f, 0.948561350f, - 0.313681740f, 0.949528181f, - 0.310767153f, 0.950486074f, - 0.307849640f, 0.951435021f, - 0.304929230f, 0.952375013f, - 0.302005949f, 0.953306040f, - 0.299079826f, 0.954228095f, - 0.296150888f, 0.955141168f, - 0.293219163f, 0.956045251f, - 0.290284677f, 0.956940336f, - 0.287347460f, 0.957826413f, - 0.284407537f, 0.958703475f, - 0.281464938f, 0.959571513f, - 0.278519689f, 0.960430519f, - 0.275571819f, 0.961280486f, - 0.272621355f, 0.962121404f, - 0.269668326f, 0.962953267f, - 0.266712757f, 0.963776066f, - 0.263754679f, 0.964589793f, - 0.260794118f, 0.965394442f, - 0.257831102f, 0.966190003f, - 0.254865660f, 0.966976471f, - 0.251897818f, 0.967753837f, - 0.248927606f, 0.968522094f, - 0.245955050f, 0.969281235f, - 0.242980180f, 0.970031253f, - 0.240003022f, 0.970772141f, - 0.237023606f, 0.971503891f, - 0.234041959f, 0.972226497f, - 0.231058108f, 0.972939952f, - 0.228072083f, 0.973644250f, - 0.225083911f, 0.974339383f, - 0.222093621f, 0.975025345f, - 0.219101240f, 0.975702130f, - 0.216106797f, 0.976369731f, - 0.213110320f, 0.977028143f, - 0.210111837f, 0.977677358f, - 0.207111376f, 0.978317371f, - 0.204108966f, 0.978948175f, - 0.201104635f, 0.979569766f, - 0.198098411f, 0.980182136f, - 0.195090322f, 0.980785280f, - 0.192080397f, 0.981379193f, - 0.189068664f, 0.981963869f, - 0.186055152f, 0.982539302f, - 0.183039888f, 0.983105487f, - 0.180022901f, 0.983662419f, - 0.177004220f, 0.984210092f, - 0.173983873f, 0.984748502f, - 0.170961889f, 0.985277642f, - 0.167938295f, 0.985797509f, - 0.164913120f, 0.986308097f, - 0.161886394f, 0.986809402f, - 0.158858143f, 0.987301418f, - 0.155828398f, 0.987784142f, - 0.152797185f, 0.988257568f, - 0.149764535f, 0.988721692f, - 0.146730474f, 0.989176510f, - 0.143695033f, 0.989622017f, - 0.140658239f, 0.990058210f, - 0.137620122f, 0.990485084f, - 0.134580709f, 0.990902635f, - 0.131540029f, 0.991310860f, - 0.128498111f, 0.991709754f, - 0.125454983f, 0.992099313f, - 0.122410675f, 0.992479535f, - 0.119365215f, 0.992850414f, - 0.116318631f, 0.993211949f, - 0.113270952f, 0.993564136f, - 0.110222207f, 0.993906970f, - 0.107172425f, 0.994240449f, - 0.104121634f, 0.994564571f, - 0.101069863f, 0.994879331f, - 0.098017140f, 0.995184727f, - 0.094963495f, 0.995480755f, - 0.091908956f, 0.995767414f, - 0.088853553f, 0.996044701f, - 0.085797312f, 0.996312612f, - 0.082740265f, 0.996571146f, - 0.079682438f, 0.996820299f, - 0.076623861f, 0.997060070f, - 0.073564564f, 0.997290457f, - 0.070504573f, 0.997511456f, - 0.067443920f, 0.997723067f, - 0.064382631f, 0.997925286f, - 0.061320736f, 0.998118113f, - 0.058258265f, 0.998301545f, - 0.055195244f, 0.998475581f, - 0.052131705f, 0.998640218f, - 0.049067674f, 0.998795456f, - 0.046003182f, 0.998941293f, - 0.042938257f, 0.999077728f, - 0.039872928f, 0.999204759f, - 0.036807223f, 0.999322385f, - 0.033741172f, 0.999430605f, - 0.030674803f, 0.999529418f, - 0.027608146f, 0.999618822f, - 0.024541229f, 0.999698819f, - 0.021474080f, 0.999769405f, - 0.018406730f, 0.999830582f, - 0.015339206f, 0.999882347f, - 0.012271538f, 0.999924702f, - 0.009203755f, 0.999957645f, - 0.006135885f, 0.999981175f, - 0.003067957f, 0.999995294f, - 0.000000000f, 1.000000000f, - -0.003067957f, 0.999995294f, - -0.006135885f, 0.999981175f, - -0.009203755f, 0.999957645f, - -0.012271538f, 0.999924702f, - -0.015339206f, 0.999882347f, - -0.018406730f, 0.999830582f, - -0.021474080f, 0.999769405f, - -0.024541229f, 0.999698819f, - -0.027608146f, 0.999618822f, - -0.030674803f, 0.999529418f, - -0.033741172f, 0.999430605f, - -0.036807223f, 0.999322385f, - -0.039872928f, 0.999204759f, - -0.042938257f, 0.999077728f, - -0.046003182f, 0.998941293f, - -0.049067674f, 0.998795456f, - -0.052131705f, 0.998640218f, - -0.055195244f, 0.998475581f, - -0.058258265f, 0.998301545f, - -0.061320736f, 0.998118113f, - -0.064382631f, 0.997925286f, - -0.067443920f, 0.997723067f, - -0.070504573f, 0.997511456f, - -0.073564564f, 0.997290457f, - -0.076623861f, 0.997060070f, - -0.079682438f, 0.996820299f, - -0.082740265f, 0.996571146f, - -0.085797312f, 0.996312612f, - -0.088853553f, 0.996044701f, - -0.091908956f, 0.995767414f, - -0.094963495f, 0.995480755f, - -0.098017140f, 0.995184727f, - -0.101069863f, 0.994879331f, - -0.104121634f, 0.994564571f, - -0.107172425f, 0.994240449f, - -0.110222207f, 0.993906970f, - -0.113270952f, 0.993564136f, - -0.116318631f, 0.993211949f, - -0.119365215f, 0.992850414f, - -0.122410675f, 0.992479535f, - -0.125454983f, 0.992099313f, - -0.128498111f, 0.991709754f, - -0.131540029f, 0.991310860f, - -0.134580709f, 0.990902635f, - -0.137620122f, 0.990485084f, - -0.140658239f, 0.990058210f, - -0.143695033f, 0.989622017f, - -0.146730474f, 0.989176510f, - -0.149764535f, 0.988721692f, - -0.152797185f, 0.988257568f, - -0.155828398f, 0.987784142f, - -0.158858143f, 0.987301418f, - -0.161886394f, 0.986809402f, - -0.164913120f, 0.986308097f, - -0.167938295f, 0.985797509f, - -0.170961889f, 0.985277642f, - -0.173983873f, 0.984748502f, - -0.177004220f, 0.984210092f, - -0.180022901f, 0.983662419f, - -0.183039888f, 0.983105487f, - -0.186055152f, 0.982539302f, - -0.189068664f, 0.981963869f, - -0.192080397f, 0.981379193f, - -0.195090322f, 0.980785280f, - -0.198098411f, 0.980182136f, - -0.201104635f, 0.979569766f, - -0.204108966f, 0.978948175f, - -0.207111376f, 0.978317371f, - -0.210111837f, 0.977677358f, - -0.213110320f, 0.977028143f, - -0.216106797f, 0.976369731f, - -0.219101240f, 0.975702130f, - -0.222093621f, 0.975025345f, - -0.225083911f, 0.974339383f, - -0.228072083f, 0.973644250f, - -0.231058108f, 0.972939952f, - -0.234041959f, 0.972226497f, - -0.237023606f, 0.971503891f, - -0.240003022f, 0.970772141f, - -0.242980180f, 0.970031253f, - -0.245955050f, 0.969281235f, - -0.248927606f, 0.968522094f, - -0.251897818f, 0.967753837f, - -0.254865660f, 0.966976471f, - -0.257831102f, 0.966190003f, - -0.260794118f, 0.965394442f, - -0.263754679f, 0.964589793f, - -0.266712757f, 0.963776066f, - -0.269668326f, 0.962953267f, - -0.272621355f, 0.962121404f, - -0.275571819f, 0.961280486f, - -0.278519689f, 0.960430519f, - -0.281464938f, 0.959571513f, - -0.284407537f, 0.958703475f, - -0.287347460f, 0.957826413f, - -0.290284677f, 0.956940336f, - -0.293219163f, 0.956045251f, - -0.296150888f, 0.955141168f, - -0.299079826f, 0.954228095f, - -0.302005949f, 0.953306040f, - -0.304929230f, 0.952375013f, - -0.307849640f, 0.951435021f, - -0.310767153f, 0.950486074f, - -0.313681740f, 0.949528181f, - -0.316593376f, 0.948561350f, - -0.319502031f, 0.947585591f, - -0.322407679f, 0.946600913f, - -0.325310292f, 0.945607325f, - -0.328209844f, 0.944604837f, - -0.331106306f, 0.943593458f, - -0.333999651f, 0.942573198f, - -0.336889853f, 0.941544065f, - -0.339776884f, 0.940506071f, - -0.342660717f, 0.939459224f, - -0.345541325f, 0.938403534f, - -0.348418680f, 0.937339012f, - -0.351292756f, 0.936265667f, - -0.354163525f, 0.935183510f, - -0.357030961f, 0.934092550f, - -0.359895037f, 0.932992799f, - -0.362755724f, 0.931884266f, - -0.365612998f, 0.930766961f, - -0.368466830f, 0.929640896f, - -0.371317194f, 0.928506080f, - -0.374164063f, 0.927362526f, - -0.377007410f, 0.926210242f, - -0.379847209f, 0.925049241f, - -0.382683432f, 0.923879533f, - -0.385516054f, 0.922701128f, - -0.388345047f, 0.921514039f, - -0.391170384f, 0.920318277f, - -0.393992040f, 0.919113852f, - -0.396809987f, 0.917900776f, - -0.399624200f, 0.916679060f, - -0.402434651f, 0.915448716f, - -0.405241314f, 0.914209756f, - -0.408044163f, 0.912962190f, - -0.410843171f, 0.911706032f, - -0.413638312f, 0.910441292f, - -0.416429560f, 0.909167983f, - -0.419216888f, 0.907886116f, - -0.422000271f, 0.906595705f, - -0.424779681f, 0.905296759f, - -0.427555093f, 0.903989293f, - -0.430326481f, 0.902673318f, - -0.433093819f, 0.901348847f, - -0.435857080f, 0.900015892f, - -0.438616239f, 0.898674466f, - -0.441371269f, 0.897324581f, - -0.444122145f, 0.895966250f, - -0.446868840f, 0.894599486f, - -0.449611330f, 0.893224301f, - -0.452349587f, 0.891840709f, - -0.455083587f, 0.890448723f, - -0.457813304f, 0.889048356f, - -0.460538711f, 0.887639620f, - -0.463259784f, 0.886222530f, - -0.465976496f, 0.884797098f, - -0.468688822f, 0.883363339f, - -0.471396737f, 0.881921264f, - -0.474100215f, 0.880470889f, - -0.476799230f, 0.879012226f, - -0.479493758f, 0.877545290f, - -0.482183772f, 0.876070094f, - -0.484869248f, 0.874586652f, - -0.487550160f, 0.873094978f, - -0.490226483f, 0.871595087f, - -0.492898192f, 0.870086991f, - -0.495565262f, 0.868570706f, - -0.498227667f, 0.867046246f, - -0.500885383f, 0.865513624f, - -0.503538384f, 0.863972856f, - -0.506186645f, 0.862423956f, - -0.508830143f, 0.860866939f, - -0.511468850f, 0.859301818f, - -0.514102744f, 0.857728610f, - -0.516731799f, 0.856147328f, - -0.519355990f, 0.854557988f, - -0.521975293f, 0.852960605f, - -0.524589683f, 0.851355193f, - -0.527199135f, 0.849741768f, - -0.529803625f, 0.848120345f, - -0.532403128f, 0.846490939f, - -0.534997620f, 0.844853565f, - -0.537587076f, 0.843208240f, - -0.540171473f, 0.841554977f, - -0.542750785f, 0.839893794f, - -0.545324988f, 0.838224706f, - -0.547894059f, 0.836547727f, - -0.550457973f, 0.834862875f, - -0.553016706f, 0.833170165f, - -0.555570233f, 0.831469612f, - -0.558118531f, 0.829761234f, - -0.560661576f, 0.828045045f, - -0.563199344f, 0.826321063f, - -0.565731811f, 0.824589303f, - -0.568258953f, 0.822849781f, - -0.570780746f, 0.821102515f, - -0.573297167f, 0.819347520f, - -0.575808191f, 0.817584813f, - -0.578313796f, 0.815814411f, - -0.580813958f, 0.814036330f, - -0.583308653f, 0.812250587f, - -0.585797857f, 0.810457198f, - -0.588281548f, 0.808656182f, - -0.590759702f, 0.806847554f, - -0.593232295f, 0.805031331f, - -0.595699304f, 0.803207531f, - -0.598160707f, 0.801376172f, - -0.600616479f, 0.799537269f, - -0.603066599f, 0.797690841f, - -0.605511041f, 0.795836905f, - -0.607949785f, 0.793975478f, - -0.610382806f, 0.792106577f, - -0.612810082f, 0.790230221f, - -0.615231591f, 0.788346428f, - -0.617647308f, 0.786455214f, - -0.620057212f, 0.784556597f, - -0.622461279f, 0.782650596f, - -0.624859488f, 0.780737229f, - -0.627251815f, 0.778816512f, - -0.629638239f, 0.776888466f, - -0.632018736f, 0.774953107f, - -0.634393284f, 0.773010453f, - -0.636761861f, 0.771060524f, - -0.639124445f, 0.769103338f, - -0.641481013f, 0.767138912f, - -0.643831543f, 0.765167266f, - -0.646176013f, 0.763188417f, - -0.648514401f, 0.761202385f, - -0.650846685f, 0.759209189f, - -0.653172843f, 0.757208847f, - -0.655492853f, 0.755201377f, - -0.657806693f, 0.753186799f, - -0.660114342f, 0.751165132f, - -0.662415778f, 0.749136395f, - -0.664710978f, 0.747100606f, - -0.666999922f, 0.745057785f, - -0.669282588f, 0.743007952f, - -0.671558955f, 0.740951125f, - -0.673829000f, 0.738887324f, - -0.676092704f, 0.736816569f, - -0.678350043f, 0.734738878f, - -0.680600998f, 0.732654272f, - -0.682845546f, 0.730562769f, - -0.685083668f, 0.728464390f, - -0.687315341f, 0.726359155f, - -0.689540545f, 0.724247083f, - -0.691759258f, 0.722128194f, - -0.693971461f, 0.720002508f, - -0.696177131f, 0.717870045f, - -0.698376249f, 0.715730825f, - -0.700568794f, 0.713584869f, - -0.702754744f, 0.711432196f, - -0.704934080f, 0.709272826f, - -0.707106781f, 0.707106781f, - -0.709272826f, 0.704934080f, - -0.711432196f, 0.702754744f, - -0.713584869f, 0.700568794f, - -0.715730825f, 0.698376249f, - -0.717870045f, 0.696177131f, - -0.720002508f, 0.693971461f, - -0.722128194f, 0.691759258f, - -0.724247083f, 0.689540545f, - -0.726359155f, 0.687315341f, - -0.728464390f, 0.685083668f, - -0.730562769f, 0.682845546f, - -0.732654272f, 0.680600998f, - -0.734738878f, 0.678350043f, - -0.736816569f, 0.676092704f, - -0.738887324f, 0.673829000f, - -0.740951125f, 0.671558955f, - -0.743007952f, 0.669282588f, - -0.745057785f, 0.666999922f, - -0.747100606f, 0.664710978f, - -0.749136395f, 0.662415778f, - -0.751165132f, 0.660114342f, - -0.753186799f, 0.657806693f, - -0.755201377f, 0.655492853f, - -0.757208847f, 0.653172843f, - -0.759209189f, 0.650846685f, - -0.761202385f, 0.648514401f, - -0.763188417f, 0.646176013f, - -0.765167266f, 0.643831543f, - -0.767138912f, 0.641481013f, - -0.769103338f, 0.639124445f, - -0.771060524f, 0.636761861f, - -0.773010453f, 0.634393284f, - -0.774953107f, 0.632018736f, - -0.776888466f, 0.629638239f, - -0.778816512f, 0.627251815f, - -0.780737229f, 0.624859488f, - -0.782650596f, 0.622461279f, - -0.784556597f, 0.620057212f, - -0.786455214f, 0.617647308f, - -0.788346428f, 0.615231591f, - -0.790230221f, 0.612810082f, - -0.792106577f, 0.610382806f, - -0.793975478f, 0.607949785f, - -0.795836905f, 0.605511041f, - -0.797690841f, 0.603066599f, - -0.799537269f, 0.600616479f, - -0.801376172f, 0.598160707f, - -0.803207531f, 0.595699304f, - -0.805031331f, 0.593232295f, - -0.806847554f, 0.590759702f, - -0.808656182f, 0.588281548f, - -0.810457198f, 0.585797857f, - -0.812250587f, 0.583308653f, - -0.814036330f, 0.580813958f, - -0.815814411f, 0.578313796f, - -0.817584813f, 0.575808191f, - -0.819347520f, 0.573297167f, - -0.821102515f, 0.570780746f, - -0.822849781f, 0.568258953f, - -0.824589303f, 0.565731811f, - -0.826321063f, 0.563199344f, - -0.828045045f, 0.560661576f, - -0.829761234f, 0.558118531f, - -0.831469612f, 0.555570233f, - -0.833170165f, 0.553016706f, - -0.834862875f, 0.550457973f, - -0.836547727f, 0.547894059f, - -0.838224706f, 0.545324988f, - -0.839893794f, 0.542750785f, - -0.841554977f, 0.540171473f, - -0.843208240f, 0.537587076f, - -0.844853565f, 0.534997620f, - -0.846490939f, 0.532403128f, - -0.848120345f, 0.529803625f, - -0.849741768f, 0.527199135f, - -0.851355193f, 0.524589683f, - -0.852960605f, 0.521975293f, - -0.854557988f, 0.519355990f, - -0.856147328f, 0.516731799f, - -0.857728610f, 0.514102744f, - -0.859301818f, 0.511468850f, - -0.860866939f, 0.508830143f, - -0.862423956f, 0.506186645f, - -0.863972856f, 0.503538384f, - -0.865513624f, 0.500885383f, - -0.867046246f, 0.498227667f, - -0.868570706f, 0.495565262f, - -0.870086991f, 0.492898192f, - -0.871595087f, 0.490226483f, - -0.873094978f, 0.487550160f, - -0.874586652f, 0.484869248f, - -0.876070094f, 0.482183772f, - -0.877545290f, 0.479493758f, - -0.879012226f, 0.476799230f, - -0.880470889f, 0.474100215f, - -0.881921264f, 0.471396737f, - -0.883363339f, 0.468688822f, - -0.884797098f, 0.465976496f, - -0.886222530f, 0.463259784f, - -0.887639620f, 0.460538711f, - -0.889048356f, 0.457813304f, - -0.890448723f, 0.455083587f, - -0.891840709f, 0.452349587f, - -0.893224301f, 0.449611330f, - -0.894599486f, 0.446868840f, - -0.895966250f, 0.444122145f, - -0.897324581f, 0.441371269f, - -0.898674466f, 0.438616239f, - -0.900015892f, 0.435857080f, - -0.901348847f, 0.433093819f, - -0.902673318f, 0.430326481f, - -0.903989293f, 0.427555093f, - -0.905296759f, 0.424779681f, - -0.906595705f, 0.422000271f, - -0.907886116f, 0.419216888f, - -0.909167983f, 0.416429560f, - -0.910441292f, 0.413638312f, - -0.911706032f, 0.410843171f, - -0.912962190f, 0.408044163f, - -0.914209756f, 0.405241314f, - -0.915448716f, 0.402434651f, - -0.916679060f, 0.399624200f, - -0.917900776f, 0.396809987f, - -0.919113852f, 0.393992040f, - -0.920318277f, 0.391170384f, - -0.921514039f, 0.388345047f, - -0.922701128f, 0.385516054f, - -0.923879533f, 0.382683432f, - -0.925049241f, 0.379847209f, - -0.926210242f, 0.377007410f, - -0.927362526f, 0.374164063f, - -0.928506080f, 0.371317194f, - -0.929640896f, 0.368466830f, - -0.930766961f, 0.365612998f, - -0.931884266f, 0.362755724f, - -0.932992799f, 0.359895037f, - -0.934092550f, 0.357030961f, - -0.935183510f, 0.354163525f, - -0.936265667f, 0.351292756f, - -0.937339012f, 0.348418680f, - -0.938403534f, 0.345541325f, - -0.939459224f, 0.342660717f, - -0.940506071f, 0.339776884f, - -0.941544065f, 0.336889853f, - -0.942573198f, 0.333999651f, - -0.943593458f, 0.331106306f, - -0.944604837f, 0.328209844f, - -0.945607325f, 0.325310292f, - -0.946600913f, 0.322407679f, - -0.947585591f, 0.319502031f, - -0.948561350f, 0.316593376f, - -0.949528181f, 0.313681740f, - -0.950486074f, 0.310767153f, - -0.951435021f, 0.307849640f, - -0.952375013f, 0.304929230f, - -0.953306040f, 0.302005949f, - -0.954228095f, 0.299079826f, - -0.955141168f, 0.296150888f, - -0.956045251f, 0.293219163f, - -0.956940336f, 0.290284677f, - -0.957826413f, 0.287347460f, - -0.958703475f, 0.284407537f, - -0.959571513f, 0.281464938f, - -0.960430519f, 0.278519689f, - -0.961280486f, 0.275571819f, - -0.962121404f, 0.272621355f, - -0.962953267f, 0.269668326f, - -0.963776066f, 0.266712757f, - -0.964589793f, 0.263754679f, - -0.965394442f, 0.260794118f, - -0.966190003f, 0.257831102f, - -0.966976471f, 0.254865660f, - -0.967753837f, 0.251897818f, - -0.968522094f, 0.248927606f, - -0.969281235f, 0.245955050f, - -0.970031253f, 0.242980180f, - -0.970772141f, 0.240003022f, - -0.971503891f, 0.237023606f, - -0.972226497f, 0.234041959f, - -0.972939952f, 0.231058108f, - -0.973644250f, 0.228072083f, - -0.974339383f, 0.225083911f, - -0.975025345f, 0.222093621f, - -0.975702130f, 0.219101240f, - -0.976369731f, 0.216106797f, - -0.977028143f, 0.213110320f, - -0.977677358f, 0.210111837f, - -0.978317371f, 0.207111376f, - -0.978948175f, 0.204108966f, - -0.979569766f, 0.201104635f, - -0.980182136f, 0.198098411f, - -0.980785280f, 0.195090322f, - -0.981379193f, 0.192080397f, - -0.981963869f, 0.189068664f, - -0.982539302f, 0.186055152f, - -0.983105487f, 0.183039888f, - -0.983662419f, 0.180022901f, - -0.984210092f, 0.177004220f, - -0.984748502f, 0.173983873f, - -0.985277642f, 0.170961889f, - -0.985797509f, 0.167938295f, - -0.986308097f, 0.164913120f, - -0.986809402f, 0.161886394f, - -0.987301418f, 0.158858143f, - -0.987784142f, 0.155828398f, - -0.988257568f, 0.152797185f, - -0.988721692f, 0.149764535f, - -0.989176510f, 0.146730474f, - -0.989622017f, 0.143695033f, - -0.990058210f, 0.140658239f, - -0.990485084f, 0.137620122f, - -0.990902635f, 0.134580709f, - -0.991310860f, 0.131540029f, - -0.991709754f, 0.128498111f, - -0.992099313f, 0.125454983f, - -0.992479535f, 0.122410675f, - -0.992850414f, 0.119365215f, - -0.993211949f, 0.116318631f, - -0.993564136f, 0.113270952f, - -0.993906970f, 0.110222207f, - -0.994240449f, 0.107172425f, - -0.994564571f, 0.104121634f, - -0.994879331f, 0.101069863f, - -0.995184727f, 0.098017140f, - -0.995480755f, 0.094963495f, - -0.995767414f, 0.091908956f, - -0.996044701f, 0.088853553f, - -0.996312612f, 0.085797312f, - -0.996571146f, 0.082740265f, - -0.996820299f, 0.079682438f, - -0.997060070f, 0.076623861f, - -0.997290457f, 0.073564564f, - -0.997511456f, 0.070504573f, - -0.997723067f, 0.067443920f, - -0.997925286f, 0.064382631f, - -0.998118113f, 0.061320736f, - -0.998301545f, 0.058258265f, - -0.998475581f, 0.055195244f, - -0.998640218f, 0.052131705f, - -0.998795456f, 0.049067674f, - -0.998941293f, 0.046003182f, - -0.999077728f, 0.042938257f, - -0.999204759f, 0.039872928f, - -0.999322385f, 0.036807223f, - -0.999430605f, 0.033741172f, - -0.999529418f, 0.030674803f, - -0.999618822f, 0.027608146f, - -0.999698819f, 0.024541229f, - -0.999769405f, 0.021474080f, - -0.999830582f, 0.018406730f, - -0.999882347f, 0.015339206f, - -0.999924702f, 0.012271538f, - -0.999957645f, 0.009203755f, - -0.999981175f, 0.006135885f, - -0.999995294f, 0.003067957f, - -1.000000000f, 0.000000000f, - -0.999995294f, -0.003067957f, - -0.999981175f, -0.006135885f, - -0.999957645f, -0.009203755f, - -0.999924702f, -0.012271538f, - -0.999882347f, -0.015339206f, - -0.999830582f, -0.018406730f, - -0.999769405f, -0.021474080f, - -0.999698819f, -0.024541229f, - -0.999618822f, -0.027608146f, - -0.999529418f, -0.030674803f, - -0.999430605f, -0.033741172f, - -0.999322385f, -0.036807223f, - -0.999204759f, -0.039872928f, - -0.999077728f, -0.042938257f, - -0.998941293f, -0.046003182f, - -0.998795456f, -0.049067674f, - -0.998640218f, -0.052131705f, - -0.998475581f, -0.055195244f, - -0.998301545f, -0.058258265f, - -0.998118113f, -0.061320736f, - -0.997925286f, -0.064382631f, - -0.997723067f, -0.067443920f, - -0.997511456f, -0.070504573f, - -0.997290457f, -0.073564564f, - -0.997060070f, -0.076623861f, - -0.996820299f, -0.079682438f, - -0.996571146f, -0.082740265f, - -0.996312612f, -0.085797312f, - -0.996044701f, -0.088853553f, - -0.995767414f, -0.091908956f, - -0.995480755f, -0.094963495f, - -0.995184727f, -0.098017140f, - -0.994879331f, -0.101069863f, - -0.994564571f, -0.104121634f, - -0.994240449f, -0.107172425f, - -0.993906970f, -0.110222207f, - -0.993564136f, -0.113270952f, - -0.993211949f, -0.116318631f, - -0.992850414f, -0.119365215f, - -0.992479535f, -0.122410675f, - -0.992099313f, -0.125454983f, - -0.991709754f, -0.128498111f, - -0.991310860f, -0.131540029f, - -0.990902635f, -0.134580709f, - -0.990485084f, -0.137620122f, - -0.990058210f, -0.140658239f, - -0.989622017f, -0.143695033f, - -0.989176510f, -0.146730474f, - -0.988721692f, -0.149764535f, - -0.988257568f, -0.152797185f, - -0.987784142f, -0.155828398f, - -0.987301418f, -0.158858143f, - -0.986809402f, -0.161886394f, - -0.986308097f, -0.164913120f, - -0.985797509f, -0.167938295f, - -0.985277642f, -0.170961889f, - -0.984748502f, -0.173983873f, - -0.984210092f, -0.177004220f, - -0.983662419f, -0.180022901f, - -0.983105487f, -0.183039888f, - -0.982539302f, -0.186055152f, - -0.981963869f, -0.189068664f, - -0.981379193f, -0.192080397f, - -0.980785280f, -0.195090322f, - -0.980182136f, -0.198098411f, - -0.979569766f, -0.201104635f, - -0.978948175f, -0.204108966f, - -0.978317371f, -0.207111376f, - -0.977677358f, -0.210111837f, - -0.977028143f, -0.213110320f, - -0.976369731f, -0.216106797f, - -0.975702130f, -0.219101240f, - -0.975025345f, -0.222093621f, - -0.974339383f, -0.225083911f, - -0.973644250f, -0.228072083f, - -0.972939952f, -0.231058108f, - -0.972226497f, -0.234041959f, - -0.971503891f, -0.237023606f, - -0.970772141f, -0.240003022f, - -0.970031253f, -0.242980180f, - -0.969281235f, -0.245955050f, - -0.968522094f, -0.248927606f, - -0.967753837f, -0.251897818f, - -0.966976471f, -0.254865660f, - -0.966190003f, -0.257831102f, - -0.965394442f, -0.260794118f, - -0.964589793f, -0.263754679f, - -0.963776066f, -0.266712757f, - -0.962953267f, -0.269668326f, - -0.962121404f, -0.272621355f, - -0.961280486f, -0.275571819f, - -0.960430519f, -0.278519689f, - -0.959571513f, -0.281464938f, - -0.958703475f, -0.284407537f, - -0.957826413f, -0.287347460f, - -0.956940336f, -0.290284677f, - -0.956045251f, -0.293219163f, - -0.955141168f, -0.296150888f, - -0.954228095f, -0.299079826f, - -0.953306040f, -0.302005949f, - -0.952375013f, -0.304929230f, - -0.951435021f, -0.307849640f, - -0.950486074f, -0.310767153f, - -0.949528181f, -0.313681740f, - -0.948561350f, -0.316593376f, - -0.947585591f, -0.319502031f, - -0.946600913f, -0.322407679f, - -0.945607325f, -0.325310292f, - -0.944604837f, -0.328209844f, - -0.943593458f, -0.331106306f, - -0.942573198f, -0.333999651f, - -0.941544065f, -0.336889853f, - -0.940506071f, -0.339776884f, - -0.939459224f, -0.342660717f, - -0.938403534f, -0.345541325f, - -0.937339012f, -0.348418680f, - -0.936265667f, -0.351292756f, - -0.935183510f, -0.354163525f, - -0.934092550f, -0.357030961f, - -0.932992799f, -0.359895037f, - -0.931884266f, -0.362755724f, - -0.930766961f, -0.365612998f, - -0.929640896f, -0.368466830f, - -0.928506080f, -0.371317194f, - -0.927362526f, -0.374164063f, - -0.926210242f, -0.377007410f, - -0.925049241f, -0.379847209f, - -0.923879533f, -0.382683432f, - -0.922701128f, -0.385516054f, - -0.921514039f, -0.388345047f, - -0.920318277f, -0.391170384f, - -0.919113852f, -0.393992040f, - -0.917900776f, -0.396809987f, - -0.916679060f, -0.399624200f, - -0.915448716f, -0.402434651f, - -0.914209756f, -0.405241314f, - -0.912962190f, -0.408044163f, - -0.911706032f, -0.410843171f, - -0.910441292f, -0.413638312f, - -0.909167983f, -0.416429560f, - -0.907886116f, -0.419216888f, - -0.906595705f, -0.422000271f, - -0.905296759f, -0.424779681f, - -0.903989293f, -0.427555093f, - -0.902673318f, -0.430326481f, - -0.901348847f, -0.433093819f, - -0.900015892f, -0.435857080f, - -0.898674466f, -0.438616239f, - -0.897324581f, -0.441371269f, - -0.895966250f, -0.444122145f, - -0.894599486f, -0.446868840f, - -0.893224301f, -0.449611330f, - -0.891840709f, -0.452349587f, - -0.890448723f, -0.455083587f, - -0.889048356f, -0.457813304f, - -0.887639620f, -0.460538711f, - -0.886222530f, -0.463259784f, - -0.884797098f, -0.465976496f, - -0.883363339f, -0.468688822f, - -0.881921264f, -0.471396737f, - -0.880470889f, -0.474100215f, - -0.879012226f, -0.476799230f, - -0.877545290f, -0.479493758f, - -0.876070094f, -0.482183772f, - -0.874586652f, -0.484869248f, - -0.873094978f, -0.487550160f, - -0.871595087f, -0.490226483f, - -0.870086991f, -0.492898192f, - -0.868570706f, -0.495565262f, - -0.867046246f, -0.498227667f, - -0.865513624f, -0.500885383f, - -0.863972856f, -0.503538384f, - -0.862423956f, -0.506186645f, - -0.860866939f, -0.508830143f, - -0.859301818f, -0.511468850f, - -0.857728610f, -0.514102744f, - -0.856147328f, -0.516731799f, - -0.854557988f, -0.519355990f, - -0.852960605f, -0.521975293f, - -0.851355193f, -0.524589683f, - -0.849741768f, -0.527199135f, - -0.848120345f, -0.529803625f, - -0.846490939f, -0.532403128f, - -0.844853565f, -0.534997620f, - -0.843208240f, -0.537587076f, - -0.841554977f, -0.540171473f, - -0.839893794f, -0.542750785f, - -0.838224706f, -0.545324988f, - -0.836547727f, -0.547894059f, - -0.834862875f, -0.550457973f, - -0.833170165f, -0.553016706f, - -0.831469612f, -0.555570233f, - -0.829761234f, -0.558118531f, - -0.828045045f, -0.560661576f, - -0.826321063f, -0.563199344f, - -0.824589303f, -0.565731811f, - -0.822849781f, -0.568258953f, - -0.821102515f, -0.570780746f, - -0.819347520f, -0.573297167f, - -0.817584813f, -0.575808191f, - -0.815814411f, -0.578313796f, - -0.814036330f, -0.580813958f, - -0.812250587f, -0.583308653f, - -0.810457198f, -0.585797857f, - -0.808656182f, -0.588281548f, - -0.806847554f, -0.590759702f, - -0.805031331f, -0.593232295f, - -0.803207531f, -0.595699304f, - -0.801376172f, -0.598160707f, - -0.799537269f, -0.600616479f, - -0.797690841f, -0.603066599f, - -0.795836905f, -0.605511041f, - -0.793975478f, -0.607949785f, - -0.792106577f, -0.610382806f, - -0.790230221f, -0.612810082f, - -0.788346428f, -0.615231591f, - -0.786455214f, -0.617647308f, - -0.784556597f, -0.620057212f, - -0.782650596f, -0.622461279f, - -0.780737229f, -0.624859488f, - -0.778816512f, -0.627251815f, - -0.776888466f, -0.629638239f, - -0.774953107f, -0.632018736f, - -0.773010453f, -0.634393284f, - -0.771060524f, -0.636761861f, - -0.769103338f, -0.639124445f, - -0.767138912f, -0.641481013f, - -0.765167266f, -0.643831543f, - -0.763188417f, -0.646176013f, - -0.761202385f, -0.648514401f, - -0.759209189f, -0.650846685f, - -0.757208847f, -0.653172843f, - -0.755201377f, -0.655492853f, - -0.753186799f, -0.657806693f, - -0.751165132f, -0.660114342f, - -0.749136395f, -0.662415778f, - -0.747100606f, -0.664710978f, - -0.745057785f, -0.666999922f, - -0.743007952f, -0.669282588f, - -0.740951125f, -0.671558955f, - -0.738887324f, -0.673829000f, - -0.736816569f, -0.676092704f, - -0.734738878f, -0.678350043f, - -0.732654272f, -0.680600998f, - -0.730562769f, -0.682845546f, - -0.728464390f, -0.685083668f, - -0.726359155f, -0.687315341f, - -0.724247083f, -0.689540545f, - -0.722128194f, -0.691759258f, - -0.720002508f, -0.693971461f, - -0.717870045f, -0.696177131f, - -0.715730825f, -0.698376249f, - -0.713584869f, -0.700568794f, - -0.711432196f, -0.702754744f, - -0.709272826f, -0.704934080f, - -0.707106781f, -0.707106781f, - -0.704934080f, -0.709272826f, - -0.702754744f, -0.711432196f, - -0.700568794f, -0.713584869f, - -0.698376249f, -0.715730825f, - -0.696177131f, -0.717870045f, - -0.693971461f, -0.720002508f, - -0.691759258f, -0.722128194f, - -0.689540545f, -0.724247083f, - -0.687315341f, -0.726359155f, - -0.685083668f, -0.728464390f, - -0.682845546f, -0.730562769f, - -0.680600998f, -0.732654272f, - -0.678350043f, -0.734738878f, - -0.676092704f, -0.736816569f, - -0.673829000f, -0.738887324f, - -0.671558955f, -0.740951125f, - -0.669282588f, -0.743007952f, - -0.666999922f, -0.745057785f, - -0.664710978f, -0.747100606f, - -0.662415778f, -0.749136395f, - -0.660114342f, -0.751165132f, - -0.657806693f, -0.753186799f, - -0.655492853f, -0.755201377f, - -0.653172843f, -0.757208847f, - -0.650846685f, -0.759209189f, - -0.648514401f, -0.761202385f, - -0.646176013f, -0.763188417f, - -0.643831543f, -0.765167266f, - -0.641481013f, -0.767138912f, - -0.639124445f, -0.769103338f, - -0.636761861f, -0.771060524f, - -0.634393284f, -0.773010453f, - -0.632018736f, -0.774953107f, - -0.629638239f, -0.776888466f, - -0.627251815f, -0.778816512f, - -0.624859488f, -0.780737229f, - -0.622461279f, -0.782650596f, - -0.620057212f, -0.784556597f, - -0.617647308f, -0.786455214f, - -0.615231591f, -0.788346428f, - -0.612810082f, -0.790230221f, - -0.610382806f, -0.792106577f, - -0.607949785f, -0.793975478f, - -0.605511041f, -0.795836905f, - -0.603066599f, -0.797690841f, - -0.600616479f, -0.799537269f, - -0.598160707f, -0.801376172f, - -0.595699304f, -0.803207531f, - -0.593232295f, -0.805031331f, - -0.590759702f, -0.806847554f, - -0.588281548f, -0.808656182f, - -0.585797857f, -0.810457198f, - -0.583308653f, -0.812250587f, - -0.580813958f, -0.814036330f, - -0.578313796f, -0.815814411f, - -0.575808191f, -0.817584813f, - -0.573297167f, -0.819347520f, - -0.570780746f, -0.821102515f, - -0.568258953f, -0.822849781f, - -0.565731811f, -0.824589303f, - -0.563199344f, -0.826321063f, - -0.560661576f, -0.828045045f, - -0.558118531f, -0.829761234f, - -0.555570233f, -0.831469612f, - -0.553016706f, -0.833170165f, - -0.550457973f, -0.834862875f, - -0.547894059f, -0.836547727f, - -0.545324988f, -0.838224706f, - -0.542750785f, -0.839893794f, - -0.540171473f, -0.841554977f, - -0.537587076f, -0.843208240f, - -0.534997620f, -0.844853565f, - -0.532403128f, -0.846490939f, - -0.529803625f, -0.848120345f, - -0.527199135f, -0.849741768f, - -0.524589683f, -0.851355193f, - -0.521975293f, -0.852960605f, - -0.519355990f, -0.854557988f, - -0.516731799f, -0.856147328f, - -0.514102744f, -0.857728610f, - -0.511468850f, -0.859301818f, - -0.508830143f, -0.860866939f, - -0.506186645f, -0.862423956f, - -0.503538384f, -0.863972856f, - -0.500885383f, -0.865513624f, - -0.498227667f, -0.867046246f, - -0.495565262f, -0.868570706f, - -0.492898192f, -0.870086991f, - -0.490226483f, -0.871595087f, - -0.487550160f, -0.873094978f, - -0.484869248f, -0.874586652f, - -0.482183772f, -0.876070094f, - -0.479493758f, -0.877545290f, - -0.476799230f, -0.879012226f, - -0.474100215f, -0.880470889f, - -0.471396737f, -0.881921264f, - -0.468688822f, -0.883363339f, - -0.465976496f, -0.884797098f, - -0.463259784f, -0.886222530f, - -0.460538711f, -0.887639620f, - -0.457813304f, -0.889048356f, - -0.455083587f, -0.890448723f, - -0.452349587f, -0.891840709f, - -0.449611330f, -0.893224301f, - -0.446868840f, -0.894599486f, - -0.444122145f, -0.895966250f, - -0.441371269f, -0.897324581f, - -0.438616239f, -0.898674466f, - -0.435857080f, -0.900015892f, - -0.433093819f, -0.901348847f, - -0.430326481f, -0.902673318f, - -0.427555093f, -0.903989293f, - -0.424779681f, -0.905296759f, - -0.422000271f, -0.906595705f, - -0.419216888f, -0.907886116f, - -0.416429560f, -0.909167983f, - -0.413638312f, -0.910441292f, - -0.410843171f, -0.911706032f, - -0.408044163f, -0.912962190f, - -0.405241314f, -0.914209756f, - -0.402434651f, -0.915448716f, - -0.399624200f, -0.916679060f, - -0.396809987f, -0.917900776f, - -0.393992040f, -0.919113852f, - -0.391170384f, -0.920318277f, - -0.388345047f, -0.921514039f, - -0.385516054f, -0.922701128f, - -0.382683432f, -0.923879533f, - -0.379847209f, -0.925049241f, - -0.377007410f, -0.926210242f, - -0.374164063f, -0.927362526f, - -0.371317194f, -0.928506080f, - -0.368466830f, -0.929640896f, - -0.365612998f, -0.930766961f, - -0.362755724f, -0.931884266f, - -0.359895037f, -0.932992799f, - -0.357030961f, -0.934092550f, - -0.354163525f, -0.935183510f, - -0.351292756f, -0.936265667f, - -0.348418680f, -0.937339012f, - -0.345541325f, -0.938403534f, - -0.342660717f, -0.939459224f, - -0.339776884f, -0.940506071f, - -0.336889853f, -0.941544065f, - -0.333999651f, -0.942573198f, - -0.331106306f, -0.943593458f, - -0.328209844f, -0.944604837f, - -0.325310292f, -0.945607325f, - -0.322407679f, -0.946600913f, - -0.319502031f, -0.947585591f, - -0.316593376f, -0.948561350f, - -0.313681740f, -0.949528181f, - -0.310767153f, -0.950486074f, - -0.307849640f, -0.951435021f, - -0.304929230f, -0.952375013f, - -0.302005949f, -0.953306040f, - -0.299079826f, -0.954228095f, - -0.296150888f, -0.955141168f, - -0.293219163f, -0.956045251f, - -0.290284677f, -0.956940336f, - -0.287347460f, -0.957826413f, - -0.284407537f, -0.958703475f, - -0.281464938f, -0.959571513f, - -0.278519689f, -0.960430519f, - -0.275571819f, -0.961280486f, - -0.272621355f, -0.962121404f, - -0.269668326f, -0.962953267f, - -0.266712757f, -0.963776066f, - -0.263754679f, -0.964589793f, - -0.260794118f, -0.965394442f, - -0.257831102f, -0.966190003f, - -0.254865660f, -0.966976471f, - -0.251897818f, -0.967753837f, - -0.248927606f, -0.968522094f, - -0.245955050f, -0.969281235f, - -0.242980180f, -0.970031253f, - -0.240003022f, -0.970772141f, - -0.237023606f, -0.971503891f, - -0.234041959f, -0.972226497f, - -0.231058108f, -0.972939952f, - -0.228072083f, -0.973644250f, - -0.225083911f, -0.974339383f, - -0.222093621f, -0.975025345f, - -0.219101240f, -0.975702130f, - -0.216106797f, -0.976369731f, - -0.213110320f, -0.977028143f, - -0.210111837f, -0.977677358f, - -0.207111376f, -0.978317371f, - -0.204108966f, -0.978948175f, - -0.201104635f, -0.979569766f, - -0.198098411f, -0.980182136f, - -0.195090322f, -0.980785280f, - -0.192080397f, -0.981379193f, - -0.189068664f, -0.981963869f, - -0.186055152f, -0.982539302f, - -0.183039888f, -0.983105487f, - -0.180022901f, -0.983662419f, - -0.177004220f, -0.984210092f, - -0.173983873f, -0.984748502f, - -0.170961889f, -0.985277642f, - -0.167938295f, -0.985797509f, - -0.164913120f, -0.986308097f, - -0.161886394f, -0.986809402f, - -0.158858143f, -0.987301418f, - -0.155828398f, -0.987784142f, - -0.152797185f, -0.988257568f, - -0.149764535f, -0.988721692f, - -0.146730474f, -0.989176510f, - -0.143695033f, -0.989622017f, - -0.140658239f, -0.990058210f, - -0.137620122f, -0.990485084f, - -0.134580709f, -0.990902635f, - -0.131540029f, -0.991310860f, - -0.128498111f, -0.991709754f, - -0.125454983f, -0.992099313f, - -0.122410675f, -0.992479535f, - -0.119365215f, -0.992850414f, - -0.116318631f, -0.993211949f, - -0.113270952f, -0.993564136f, - -0.110222207f, -0.993906970f, - -0.107172425f, -0.994240449f, - -0.104121634f, -0.994564571f, - -0.101069863f, -0.994879331f, - -0.098017140f, -0.995184727f, - -0.094963495f, -0.995480755f, - -0.091908956f, -0.995767414f, - -0.088853553f, -0.996044701f, - -0.085797312f, -0.996312612f, - -0.082740265f, -0.996571146f, - -0.079682438f, -0.996820299f, - -0.076623861f, -0.997060070f, - -0.073564564f, -0.997290457f, - -0.070504573f, -0.997511456f, - -0.067443920f, -0.997723067f, - -0.064382631f, -0.997925286f, - -0.061320736f, -0.998118113f, - -0.058258265f, -0.998301545f, - -0.055195244f, -0.998475581f, - -0.052131705f, -0.998640218f, - -0.049067674f, -0.998795456f, - -0.046003182f, -0.998941293f, - -0.042938257f, -0.999077728f, - -0.039872928f, -0.999204759f, - -0.036807223f, -0.999322385f, - -0.033741172f, -0.999430605f, - -0.030674803f, -0.999529418f, - -0.027608146f, -0.999618822f, - -0.024541229f, -0.999698819f, - -0.021474080f, -0.999769405f, - -0.018406730f, -0.999830582f, - -0.015339206f, -0.999882347f, - -0.012271538f, -0.999924702f, - -0.009203755f, -0.999957645f, - -0.006135885f, -0.999981175f, - -0.003067957f, -0.999995294f, - -0.000000000f, -1.000000000f, - 0.003067957f, -0.999995294f, - 0.006135885f, -0.999981175f, - 0.009203755f, -0.999957645f, - 0.012271538f, -0.999924702f, - 0.015339206f, -0.999882347f, - 0.018406730f, -0.999830582f, - 0.021474080f, -0.999769405f, - 0.024541229f, -0.999698819f, - 0.027608146f, -0.999618822f, - 0.030674803f, -0.999529418f, - 0.033741172f, -0.999430605f, - 0.036807223f, -0.999322385f, - 0.039872928f, -0.999204759f, - 0.042938257f, -0.999077728f, - 0.046003182f, -0.998941293f, - 0.049067674f, -0.998795456f, - 0.052131705f, -0.998640218f, - 0.055195244f, -0.998475581f, - 0.058258265f, -0.998301545f, - 0.061320736f, -0.998118113f, - 0.064382631f, -0.997925286f, - 0.067443920f, -0.997723067f, - 0.070504573f, -0.997511456f, - 0.073564564f, -0.997290457f, - 0.076623861f, -0.997060070f, - 0.079682438f, -0.996820299f, - 0.082740265f, -0.996571146f, - 0.085797312f, -0.996312612f, - 0.088853553f, -0.996044701f, - 0.091908956f, -0.995767414f, - 0.094963495f, -0.995480755f, - 0.098017140f, -0.995184727f, - 0.101069863f, -0.994879331f, - 0.104121634f, -0.994564571f, - 0.107172425f, -0.994240449f, - 0.110222207f, -0.993906970f, - 0.113270952f, -0.993564136f, - 0.116318631f, -0.993211949f, - 0.119365215f, -0.992850414f, - 0.122410675f, -0.992479535f, - 0.125454983f, -0.992099313f, - 0.128498111f, -0.991709754f, - 0.131540029f, -0.991310860f, - 0.134580709f, -0.990902635f, - 0.137620122f, -0.990485084f, - 0.140658239f, -0.990058210f, - 0.143695033f, -0.989622017f, - 0.146730474f, -0.989176510f, - 0.149764535f, -0.988721692f, - 0.152797185f, -0.988257568f, - 0.155828398f, -0.987784142f, - 0.158858143f, -0.987301418f, - 0.161886394f, -0.986809402f, - 0.164913120f, -0.986308097f, - 0.167938295f, -0.985797509f, - 0.170961889f, -0.985277642f, - 0.173983873f, -0.984748502f, - 0.177004220f, -0.984210092f, - 0.180022901f, -0.983662419f, - 0.183039888f, -0.983105487f, - 0.186055152f, -0.982539302f, - 0.189068664f, -0.981963869f, - 0.192080397f, -0.981379193f, - 0.195090322f, -0.980785280f, - 0.198098411f, -0.980182136f, - 0.201104635f, -0.979569766f, - 0.204108966f, -0.978948175f, - 0.207111376f, -0.978317371f, - 0.210111837f, -0.977677358f, - 0.213110320f, -0.977028143f, - 0.216106797f, -0.976369731f, - 0.219101240f, -0.975702130f, - 0.222093621f, -0.975025345f, - 0.225083911f, -0.974339383f, - 0.228072083f, -0.973644250f, - 0.231058108f, -0.972939952f, - 0.234041959f, -0.972226497f, - 0.237023606f, -0.971503891f, - 0.240003022f, -0.970772141f, - 0.242980180f, -0.970031253f, - 0.245955050f, -0.969281235f, - 0.248927606f, -0.968522094f, - 0.251897818f, -0.967753837f, - 0.254865660f, -0.966976471f, - 0.257831102f, -0.966190003f, - 0.260794118f, -0.965394442f, - 0.263754679f, -0.964589793f, - 0.266712757f, -0.963776066f, - 0.269668326f, -0.962953267f, - 0.272621355f, -0.962121404f, - 0.275571819f, -0.961280486f, - 0.278519689f, -0.960430519f, - 0.281464938f, -0.959571513f, - 0.284407537f, -0.958703475f, - 0.287347460f, -0.957826413f, - 0.290284677f, -0.956940336f, - 0.293219163f, -0.956045251f, - 0.296150888f, -0.955141168f, - 0.299079826f, -0.954228095f, - 0.302005949f, -0.953306040f, - 0.304929230f, -0.952375013f, - 0.307849640f, -0.951435021f, - 0.310767153f, -0.950486074f, - 0.313681740f, -0.949528181f, - 0.316593376f, -0.948561350f, - 0.319502031f, -0.947585591f, - 0.322407679f, -0.946600913f, - 0.325310292f, -0.945607325f, - 0.328209844f, -0.944604837f, - 0.331106306f, -0.943593458f, - 0.333999651f, -0.942573198f, - 0.336889853f, -0.941544065f, - 0.339776884f, -0.940506071f, - 0.342660717f, -0.939459224f, - 0.345541325f, -0.938403534f, - 0.348418680f, -0.937339012f, - 0.351292756f, -0.936265667f, - 0.354163525f, -0.935183510f, - 0.357030961f, -0.934092550f, - 0.359895037f, -0.932992799f, - 0.362755724f, -0.931884266f, - 0.365612998f, -0.930766961f, - 0.368466830f, -0.929640896f, - 0.371317194f, -0.928506080f, - 0.374164063f, -0.927362526f, - 0.377007410f, -0.926210242f, - 0.379847209f, -0.925049241f, - 0.382683432f, -0.923879533f, - 0.385516054f, -0.922701128f, - 0.388345047f, -0.921514039f, - 0.391170384f, -0.920318277f, - 0.393992040f, -0.919113852f, - 0.396809987f, -0.917900776f, - 0.399624200f, -0.916679060f, - 0.402434651f, -0.915448716f, - 0.405241314f, -0.914209756f, - 0.408044163f, -0.912962190f, - 0.410843171f, -0.911706032f, - 0.413638312f, -0.910441292f, - 0.416429560f, -0.909167983f, - 0.419216888f, -0.907886116f, - 0.422000271f, -0.906595705f, - 0.424779681f, -0.905296759f, - 0.427555093f, -0.903989293f, - 0.430326481f, -0.902673318f, - 0.433093819f, -0.901348847f, - 0.435857080f, -0.900015892f, - 0.438616239f, -0.898674466f, - 0.441371269f, -0.897324581f, - 0.444122145f, -0.895966250f, - 0.446868840f, -0.894599486f, - 0.449611330f, -0.893224301f, - 0.452349587f, -0.891840709f, - 0.455083587f, -0.890448723f, - 0.457813304f, -0.889048356f, - 0.460538711f, -0.887639620f, - 0.463259784f, -0.886222530f, - 0.465976496f, -0.884797098f, - 0.468688822f, -0.883363339f, - 0.471396737f, -0.881921264f, - 0.474100215f, -0.880470889f, - 0.476799230f, -0.879012226f, - 0.479493758f, -0.877545290f, - 0.482183772f, -0.876070094f, - 0.484869248f, -0.874586652f, - 0.487550160f, -0.873094978f, - 0.490226483f, -0.871595087f, - 0.492898192f, -0.870086991f, - 0.495565262f, -0.868570706f, - 0.498227667f, -0.867046246f, - 0.500885383f, -0.865513624f, - 0.503538384f, -0.863972856f, - 0.506186645f, -0.862423956f, - 0.508830143f, -0.860866939f, - 0.511468850f, -0.859301818f, - 0.514102744f, -0.857728610f, - 0.516731799f, -0.856147328f, - 0.519355990f, -0.854557988f, - 0.521975293f, -0.852960605f, - 0.524589683f, -0.851355193f, - 0.527199135f, -0.849741768f, - 0.529803625f, -0.848120345f, - 0.532403128f, -0.846490939f, - 0.534997620f, -0.844853565f, - 0.537587076f, -0.843208240f, - 0.540171473f, -0.841554977f, - 0.542750785f, -0.839893794f, - 0.545324988f, -0.838224706f, - 0.547894059f, -0.836547727f, - 0.550457973f, -0.834862875f, - 0.553016706f, -0.833170165f, - 0.555570233f, -0.831469612f, - 0.558118531f, -0.829761234f, - 0.560661576f, -0.828045045f, - 0.563199344f, -0.826321063f, - 0.565731811f, -0.824589303f, - 0.568258953f, -0.822849781f, - 0.570780746f, -0.821102515f, - 0.573297167f, -0.819347520f, - 0.575808191f, -0.817584813f, - 0.578313796f, -0.815814411f, - 0.580813958f, -0.814036330f, - 0.583308653f, -0.812250587f, - 0.585797857f, -0.810457198f, - 0.588281548f, -0.808656182f, - 0.590759702f, -0.806847554f, - 0.593232295f, -0.805031331f, - 0.595699304f, -0.803207531f, - 0.598160707f, -0.801376172f, - 0.600616479f, -0.799537269f, - 0.603066599f, -0.797690841f, - 0.605511041f, -0.795836905f, - 0.607949785f, -0.793975478f, - 0.610382806f, -0.792106577f, - 0.612810082f, -0.790230221f, - 0.615231591f, -0.788346428f, - 0.617647308f, -0.786455214f, - 0.620057212f, -0.784556597f, - 0.622461279f, -0.782650596f, - 0.624859488f, -0.780737229f, - 0.627251815f, -0.778816512f, - 0.629638239f, -0.776888466f, - 0.632018736f, -0.774953107f, - 0.634393284f, -0.773010453f, - 0.636761861f, -0.771060524f, - 0.639124445f, -0.769103338f, - 0.641481013f, -0.767138912f, - 0.643831543f, -0.765167266f, - 0.646176013f, -0.763188417f, - 0.648514401f, -0.761202385f, - 0.650846685f, -0.759209189f, - 0.653172843f, -0.757208847f, - 0.655492853f, -0.755201377f, - 0.657806693f, -0.753186799f, - 0.660114342f, -0.751165132f, - 0.662415778f, -0.749136395f, - 0.664710978f, -0.747100606f, - 0.666999922f, -0.745057785f, - 0.669282588f, -0.743007952f, - 0.671558955f, -0.740951125f, - 0.673829000f, -0.738887324f, - 0.676092704f, -0.736816569f, - 0.678350043f, -0.734738878f, - 0.680600998f, -0.732654272f, - 0.682845546f, -0.730562769f, - 0.685083668f, -0.728464390f, - 0.687315341f, -0.726359155f, - 0.689540545f, -0.724247083f, - 0.691759258f, -0.722128194f, - 0.693971461f, -0.720002508f, - 0.696177131f, -0.717870045f, - 0.698376249f, -0.715730825f, - 0.700568794f, -0.713584869f, - 0.702754744f, -0.711432196f, - 0.704934080f, -0.709272826f, - 0.707106781f, -0.707106781f, - 0.709272826f, -0.704934080f, - 0.711432196f, -0.702754744f, - 0.713584869f, -0.700568794f, - 0.715730825f, -0.698376249f, - 0.717870045f, -0.696177131f, - 0.720002508f, -0.693971461f, - 0.722128194f, -0.691759258f, - 0.724247083f, -0.689540545f, - 0.726359155f, -0.687315341f, - 0.728464390f, -0.685083668f, - 0.730562769f, -0.682845546f, - 0.732654272f, -0.680600998f, - 0.734738878f, -0.678350043f, - 0.736816569f, -0.676092704f, - 0.738887324f, -0.673829000f, - 0.740951125f, -0.671558955f, - 0.743007952f, -0.669282588f, - 0.745057785f, -0.666999922f, - 0.747100606f, -0.664710978f, - 0.749136395f, -0.662415778f, - 0.751165132f, -0.660114342f, - 0.753186799f, -0.657806693f, - 0.755201377f, -0.655492853f, - 0.757208847f, -0.653172843f, - 0.759209189f, -0.650846685f, - 0.761202385f, -0.648514401f, - 0.763188417f, -0.646176013f, - 0.765167266f, -0.643831543f, - 0.767138912f, -0.641481013f, - 0.769103338f, -0.639124445f, - 0.771060524f, -0.636761861f, - 0.773010453f, -0.634393284f, - 0.774953107f, -0.632018736f, - 0.776888466f, -0.629638239f, - 0.778816512f, -0.627251815f, - 0.780737229f, -0.624859488f, - 0.782650596f, -0.622461279f, - 0.784556597f, -0.620057212f, - 0.786455214f, -0.617647308f, - 0.788346428f, -0.615231591f, - 0.790230221f, -0.612810082f, - 0.792106577f, -0.610382806f, - 0.793975478f, -0.607949785f, - 0.795836905f, -0.605511041f, - 0.797690841f, -0.603066599f, - 0.799537269f, -0.600616479f, - 0.801376172f, -0.598160707f, - 0.803207531f, -0.595699304f, - 0.805031331f, -0.593232295f, - 0.806847554f, -0.590759702f, - 0.808656182f, -0.588281548f, - 0.810457198f, -0.585797857f, - 0.812250587f, -0.583308653f, - 0.814036330f, -0.580813958f, - 0.815814411f, -0.578313796f, - 0.817584813f, -0.575808191f, - 0.819347520f, -0.573297167f, - 0.821102515f, -0.570780746f, - 0.822849781f, -0.568258953f, - 0.824589303f, -0.565731811f, - 0.826321063f, -0.563199344f, - 0.828045045f, -0.560661576f, - 0.829761234f, -0.558118531f, - 0.831469612f, -0.555570233f, - 0.833170165f, -0.553016706f, - 0.834862875f, -0.550457973f, - 0.836547727f, -0.547894059f, - 0.838224706f, -0.545324988f, - 0.839893794f, -0.542750785f, - 0.841554977f, -0.540171473f, - 0.843208240f, -0.537587076f, - 0.844853565f, -0.534997620f, - 0.846490939f, -0.532403128f, - 0.848120345f, -0.529803625f, - 0.849741768f, -0.527199135f, - 0.851355193f, -0.524589683f, - 0.852960605f, -0.521975293f, - 0.854557988f, -0.519355990f, - 0.856147328f, -0.516731799f, - 0.857728610f, -0.514102744f, - 0.859301818f, -0.511468850f, - 0.860866939f, -0.508830143f, - 0.862423956f, -0.506186645f, - 0.863972856f, -0.503538384f, - 0.865513624f, -0.500885383f, - 0.867046246f, -0.498227667f, - 0.868570706f, -0.495565262f, - 0.870086991f, -0.492898192f, - 0.871595087f, -0.490226483f, - 0.873094978f, -0.487550160f, - 0.874586652f, -0.484869248f, - 0.876070094f, -0.482183772f, - 0.877545290f, -0.479493758f, - 0.879012226f, -0.476799230f, - 0.880470889f, -0.474100215f, - 0.881921264f, -0.471396737f, - 0.883363339f, -0.468688822f, - 0.884797098f, -0.465976496f, - 0.886222530f, -0.463259784f, - 0.887639620f, -0.460538711f, - 0.889048356f, -0.457813304f, - 0.890448723f, -0.455083587f, - 0.891840709f, -0.452349587f, - 0.893224301f, -0.449611330f, - 0.894599486f, -0.446868840f, - 0.895966250f, -0.444122145f, - 0.897324581f, -0.441371269f, - 0.898674466f, -0.438616239f, - 0.900015892f, -0.435857080f, - 0.901348847f, -0.433093819f, - 0.902673318f, -0.430326481f, - 0.903989293f, -0.427555093f, - 0.905296759f, -0.424779681f, - 0.906595705f, -0.422000271f, - 0.907886116f, -0.419216888f, - 0.909167983f, -0.416429560f, - 0.910441292f, -0.413638312f, - 0.911706032f, -0.410843171f, - 0.912962190f, -0.408044163f, - 0.914209756f, -0.405241314f, - 0.915448716f, -0.402434651f, - 0.916679060f, -0.399624200f, - 0.917900776f, -0.396809987f, - 0.919113852f, -0.393992040f, - 0.920318277f, -0.391170384f, - 0.921514039f, -0.388345047f, - 0.922701128f, -0.385516054f, - 0.923879533f, -0.382683432f, - 0.925049241f, -0.379847209f, - 0.926210242f, -0.377007410f, - 0.927362526f, -0.374164063f, - 0.928506080f, -0.371317194f, - 0.929640896f, -0.368466830f, - 0.930766961f, -0.365612998f, - 0.931884266f, -0.362755724f, - 0.932992799f, -0.359895037f, - 0.934092550f, -0.357030961f, - 0.935183510f, -0.354163525f, - 0.936265667f, -0.351292756f, - 0.937339012f, -0.348418680f, - 0.938403534f, -0.345541325f, - 0.939459224f, -0.342660717f, - 0.940506071f, -0.339776884f, - 0.941544065f, -0.336889853f, - 0.942573198f, -0.333999651f, - 0.943593458f, -0.331106306f, - 0.944604837f, -0.328209844f, - 0.945607325f, -0.325310292f, - 0.946600913f, -0.322407679f, - 0.947585591f, -0.319502031f, - 0.948561350f, -0.316593376f, - 0.949528181f, -0.313681740f, - 0.950486074f, -0.310767153f, - 0.951435021f, -0.307849640f, - 0.952375013f, -0.304929230f, - 0.953306040f, -0.302005949f, - 0.954228095f, -0.299079826f, - 0.955141168f, -0.296150888f, - 0.956045251f, -0.293219163f, - 0.956940336f, -0.290284677f, - 0.957826413f, -0.287347460f, - 0.958703475f, -0.284407537f, - 0.959571513f, -0.281464938f, - 0.960430519f, -0.278519689f, - 0.961280486f, -0.275571819f, - 0.962121404f, -0.272621355f, - 0.962953267f, -0.269668326f, - 0.963776066f, -0.266712757f, - 0.964589793f, -0.263754679f, - 0.965394442f, -0.260794118f, - 0.966190003f, -0.257831102f, - 0.966976471f, -0.254865660f, - 0.967753837f, -0.251897818f, - 0.968522094f, -0.248927606f, - 0.969281235f, -0.245955050f, - 0.970031253f, -0.242980180f, - 0.970772141f, -0.240003022f, - 0.971503891f, -0.237023606f, - 0.972226497f, -0.234041959f, - 0.972939952f, -0.231058108f, - 0.973644250f, -0.228072083f, - 0.974339383f, -0.225083911f, - 0.975025345f, -0.222093621f, - 0.975702130f, -0.219101240f, - 0.976369731f, -0.216106797f, - 0.977028143f, -0.213110320f, - 0.977677358f, -0.210111837f, - 0.978317371f, -0.207111376f, - 0.978948175f, -0.204108966f, - 0.979569766f, -0.201104635f, - 0.980182136f, -0.198098411f, - 0.980785280f, -0.195090322f, - 0.981379193f, -0.192080397f, - 0.981963869f, -0.189068664f, - 0.982539302f, -0.186055152f, - 0.983105487f, -0.183039888f, - 0.983662419f, -0.180022901f, - 0.984210092f, -0.177004220f, - 0.984748502f, -0.173983873f, - 0.985277642f, -0.170961889f, - 0.985797509f, -0.167938295f, - 0.986308097f, -0.164913120f, - 0.986809402f, -0.161886394f, - 0.987301418f, -0.158858143f, - 0.987784142f, -0.155828398f, - 0.988257568f, -0.152797185f, - 0.988721692f, -0.149764535f, - 0.989176510f, -0.146730474f, - 0.989622017f, -0.143695033f, - 0.990058210f, -0.140658239f, - 0.990485084f, -0.137620122f, - 0.990902635f, -0.134580709f, - 0.991310860f, -0.131540029f, - 0.991709754f, -0.128498111f, - 0.992099313f, -0.125454983f, - 0.992479535f, -0.122410675f, - 0.992850414f, -0.119365215f, - 0.993211949f, -0.116318631f, - 0.993564136f, -0.113270952f, - 0.993906970f, -0.110222207f, - 0.994240449f, -0.107172425f, - 0.994564571f, -0.104121634f, - 0.994879331f, -0.101069863f, - 0.995184727f, -0.098017140f, - 0.995480755f, -0.094963495f, - 0.995767414f, -0.091908956f, - 0.996044701f, -0.088853553f, - 0.996312612f, -0.085797312f, - 0.996571146f, -0.082740265f, - 0.996820299f, -0.079682438f, - 0.997060070f, -0.076623861f, - 0.997290457f, -0.073564564f, - 0.997511456f, -0.070504573f, - 0.997723067f, -0.067443920f, - 0.997925286f, -0.064382631f, - 0.998118113f, -0.061320736f, - 0.998301545f, -0.058258265f, - 0.998475581f, -0.055195244f, - 0.998640218f, -0.052131705f, - 0.998795456f, -0.049067674f, - 0.998941293f, -0.046003182f, - 0.999077728f, -0.042938257f, - 0.999204759f, -0.039872928f, - 0.999322385f, -0.036807223f, - 0.999430605f, -0.033741172f, - 0.999529418f, -0.030674803f, - 0.999618822f, -0.027608146f, - 0.999698819f, -0.024541229f, - 0.999769405f, -0.021474080f, - 0.999830582f, -0.018406730f, - 0.999882347f, -0.015339206f, - 0.999924702f, -0.012271538f, - 0.999957645f, -0.009203755f, - 0.999981175f, -0.006135885f, - 0.999995294f, -0.003067957f -}; - -/** -* \par -* Example code for Floating-point Twiddle factors Generation: -* \par -*
for(i = 0; i< N/; i++)
-* {
-*	twiddleCoef[2*i]= cos(i * 2*PI/(float)N);
-*	twiddleCoef[2*i+1]= sin(i * 2*PI/(float)N);
-* } 
-* \par -* where N = 4096 and PI = 3.14159265358979 -* \par -* Cos and Sin values are in interleaved fashion -* -*/ -const float32_t twiddleCoef_4096[8192] = { - 1.000000000f, 0.000000000f, - 0.999998823f, 0.001533980f, - 0.999995294f, 0.003067957f, - 0.999989411f, 0.004601926f, - 0.999981175f, 0.006135885f, - 0.999970586f, 0.007669829f, - 0.999957645f, 0.009203755f, - 0.999942350f, 0.010737659f, - 0.999924702f, 0.012271538f, - 0.999904701f, 0.013805389f, - 0.999882347f, 0.015339206f, - 0.999857641f, 0.016872988f, - 0.999830582f, 0.018406730f, - 0.999801170f, 0.019940429f, - 0.999769405f, 0.021474080f, - 0.999735288f, 0.023007681f, - 0.999698819f, 0.024541229f, - 0.999659997f, 0.026074718f, - 0.999618822f, 0.027608146f, - 0.999575296f, 0.029141509f, - 0.999529418f, 0.030674803f, - 0.999481187f, 0.032208025f, - 0.999430605f, 0.033741172f, - 0.999377670f, 0.035274239f, - 0.999322385f, 0.036807223f, - 0.999264747f, 0.038340120f, - 0.999204759f, 0.039872928f, - 0.999142419f, 0.041405641f, - 0.999077728f, 0.042938257f, - 0.999010686f, 0.044470772f, - 0.998941293f, 0.046003182f, - 0.998869550f, 0.047535484f, - 0.998795456f, 0.049067674f, - 0.998719012f, 0.050599749f, - 0.998640218f, 0.052131705f, - 0.998559074f, 0.053663538f, - 0.998475581f, 0.055195244f, - 0.998389737f, 0.056726821f, - 0.998301545f, 0.058258265f, - 0.998211003f, 0.059789571f, - 0.998118113f, 0.061320736f, - 0.998022874f, 0.062851758f, - 0.997925286f, 0.064382631f, - 0.997825350f, 0.065913353f, - 0.997723067f, 0.067443920f, - 0.997618435f, 0.068974328f, - 0.997511456f, 0.070504573f, - 0.997402130f, 0.072034653f, - 0.997290457f, 0.073564564f, - 0.997176437f, 0.075094301f, - 0.997060070f, 0.076623861f, - 0.996941358f, 0.078153242f, - 0.996820299f, 0.079682438f, - 0.996696895f, 0.081211447f, - 0.996571146f, 0.082740265f, - 0.996443051f, 0.084268888f, - 0.996312612f, 0.085797312f, - 0.996179829f, 0.087325535f, - 0.996044701f, 0.088853553f, - 0.995907229f, 0.090381361f, - 0.995767414f, 0.091908956f, - 0.995625256f, 0.093436336f, - 0.995480755f, 0.094963495f, - 0.995333912f, 0.096490431f, - 0.995184727f, 0.098017140f, - 0.995033199f, 0.099543619f, - 0.994879331f, 0.101069863f, - 0.994723121f, 0.102595869f, - 0.994564571f, 0.104121634f, - 0.994403680f, 0.105647154f, - 0.994240449f, 0.107172425f, - 0.994074879f, 0.108697444f, - 0.993906970f, 0.110222207f, - 0.993736722f, 0.111746711f, - 0.993564136f, 0.113270952f, - 0.993389211f, 0.114794927f, - 0.993211949f, 0.116318631f, - 0.993032350f, 0.117842062f, - 0.992850414f, 0.119365215f, - 0.992666142f, 0.120888087f, - 0.992479535f, 0.122410675f, - 0.992290591f, 0.123932975f, - 0.992099313f, 0.125454983f, - 0.991905700f, 0.126976696f, - 0.991709754f, 0.128498111f, - 0.991511473f, 0.130019223f, - 0.991310860f, 0.131540029f, - 0.991107914f, 0.133060525f, - 0.990902635f, 0.134580709f, - 0.990695025f, 0.136100575f, - 0.990485084f, 0.137620122f, - 0.990272812f, 0.139139344f, - 0.990058210f, 0.140658239f, - 0.989841278f, 0.142176804f, - 0.989622017f, 0.143695033f, - 0.989400428f, 0.145212925f, - 0.989176510f, 0.146730474f, - 0.988950265f, 0.148247679f, - 0.988721692f, 0.149764535f, - 0.988490793f, 0.151281038f, - 0.988257568f, 0.152797185f, - 0.988022017f, 0.154312973f, - 0.987784142f, 0.155828398f, - 0.987543942f, 0.157343456f, - 0.987301418f, 0.158858143f, - 0.987056571f, 0.160372457f, - 0.986809402f, 0.161886394f, - 0.986559910f, 0.163399949f, - 0.986308097f, 0.164913120f, - 0.986053963f, 0.166425904f, - 0.985797509f, 0.167938295f, - 0.985538735f, 0.169450291f, - 0.985277642f, 0.170961889f, - 0.985014231f, 0.172473084f, - 0.984748502f, 0.173983873f, - 0.984480455f, 0.175494253f, - 0.984210092f, 0.177004220f, - 0.983937413f, 0.178513771f, - 0.983662419f, 0.180022901f, - 0.983385110f, 0.181531608f, - 0.983105487f, 0.183039888f, - 0.982823551f, 0.184547737f, - 0.982539302f, 0.186055152f, - 0.982252741f, 0.187562129f, - 0.981963869f, 0.189068664f, - 0.981672686f, 0.190574755f, - 0.981379193f, 0.192080397f, - 0.981083391f, 0.193585587f, - 0.980785280f, 0.195090322f, - 0.980484862f, 0.196594598f, - 0.980182136f, 0.198098411f, - 0.979877104f, 0.199601758f, - 0.979569766f, 0.201104635f, - 0.979260123f, 0.202607039f, - 0.978948175f, 0.204108966f, - 0.978633924f, 0.205610413f, - 0.978317371f, 0.207111376f, - 0.977998515f, 0.208611852f, - 0.977677358f, 0.210111837f, - 0.977353900f, 0.211611327f, - 0.977028143f, 0.213110320f, - 0.976700086f, 0.214608811f, - 0.976369731f, 0.216106797f, - 0.976037079f, 0.217604275f, - 0.975702130f, 0.219101240f, - 0.975364885f, 0.220597690f, - 0.975025345f, 0.222093621f, - 0.974683511f, 0.223589029f, - 0.974339383f, 0.225083911f, - 0.973992962f, 0.226578264f, - 0.973644250f, 0.228072083f, - 0.973293246f, 0.229565366f, - 0.972939952f, 0.231058108f, - 0.972584369f, 0.232550307f, - 0.972226497f, 0.234041959f, - 0.971866337f, 0.235533059f, - 0.971503891f, 0.237023606f, - 0.971139158f, 0.238513595f, - 0.970772141f, 0.240003022f, - 0.970402839f, 0.241491885f, - 0.970031253f, 0.242980180f, - 0.969657385f, 0.244467903f, - 0.969281235f, 0.245955050f, - 0.968902805f, 0.247441619f, - 0.968522094f, 0.248927606f, - 0.968139105f, 0.250413007f, - 0.967753837f, 0.251897818f, - 0.967366292f, 0.253382037f, - 0.966976471f, 0.254865660f, - 0.966584374f, 0.256348682f, - 0.966190003f, 0.257831102f, - 0.965793359f, 0.259312915f, - 0.965394442f, 0.260794118f, - 0.964993253f, 0.262274707f, - 0.964589793f, 0.263754679f, - 0.964184064f, 0.265234030f, - 0.963776066f, 0.266712757f, - 0.963365800f, 0.268190857f, - 0.962953267f, 0.269668326f, - 0.962538468f, 0.271145160f, - 0.962121404f, 0.272621355f, - 0.961702077f, 0.274096910f, - 0.961280486f, 0.275571819f, - 0.960856633f, 0.277046080f, - 0.960430519f, 0.278519689f, - 0.960002146f, 0.279992643f, - 0.959571513f, 0.281464938f, - 0.959138622f, 0.282936570f, - 0.958703475f, 0.284407537f, - 0.958266071f, 0.285877835f, - 0.957826413f, 0.287347460f, - 0.957384501f, 0.288816408f, - 0.956940336f, 0.290284677f, - 0.956493919f, 0.291752263f, - 0.956045251f, 0.293219163f, - 0.955594334f, 0.294685372f, - 0.955141168f, 0.296150888f, - 0.954685755f, 0.297615707f, - 0.954228095f, 0.299079826f, - 0.953768190f, 0.300543241f, - 0.953306040f, 0.302005949f, - 0.952841648f, 0.303467947f, - 0.952375013f, 0.304929230f, - 0.951906137f, 0.306389795f, - 0.951435021f, 0.307849640f, - 0.950961666f, 0.309308760f, - 0.950486074f, 0.310767153f, - 0.950008245f, 0.312224814f, - 0.949528181f, 0.313681740f, - 0.949045882f, 0.315137929f, - 0.948561350f, 0.316593376f, - 0.948074586f, 0.318048077f, - 0.947585591f, 0.319502031f, - 0.947094366f, 0.320955232f, - 0.946600913f, 0.322407679f, - 0.946105232f, 0.323859367f, - 0.945607325f, 0.325310292f, - 0.945107193f, 0.326760452f, - 0.944604837f, 0.328209844f, - 0.944100258f, 0.329658463f, - 0.943593458f, 0.331106306f, - 0.943084437f, 0.332553370f, - 0.942573198f, 0.333999651f, - 0.942059740f, 0.335445147f, - 0.941544065f, 0.336889853f, - 0.941026175f, 0.338333767f, - 0.940506071f, 0.339776884f, - 0.939983753f, 0.341219202f, - 0.939459224f, 0.342660717f, - 0.938932484f, 0.344101426f, - 0.938403534f, 0.345541325f, - 0.937872376f, 0.346980411f, - 0.937339012f, 0.348418680f, - 0.936803442f, 0.349856130f, - 0.936265667f, 0.351292756f, - 0.935725689f, 0.352728556f, - 0.935183510f, 0.354163525f, - 0.934639130f, 0.355597662f, - 0.934092550f, 0.357030961f, - 0.933543773f, 0.358463421f, - 0.932992799f, 0.359895037f, - 0.932439629f, 0.361325806f, - 0.931884266f, 0.362755724f, - 0.931326709f, 0.364184790f, - 0.930766961f, 0.365612998f, - 0.930205023f, 0.367040346f, - 0.929640896f, 0.368466830f, - 0.929074581f, 0.369892447f, - 0.928506080f, 0.371317194f, - 0.927935395f, 0.372741067f, - 0.927362526f, 0.374164063f, - 0.926787474f, 0.375586178f, - 0.926210242f, 0.377007410f, - 0.925630831f, 0.378427755f, - 0.925049241f, 0.379847209f, - 0.924465474f, 0.381265769f, - 0.923879533f, 0.382683432f, - 0.923291417f, 0.384100195f, - 0.922701128f, 0.385516054f, - 0.922108669f, 0.386931006f, - 0.921514039f, 0.388345047f, - 0.920917242f, 0.389758174f, - 0.920318277f, 0.391170384f, - 0.919717146f, 0.392581674f, - 0.919113852f, 0.393992040f, - 0.918508394f, 0.395401479f, - 0.917900776f, 0.396809987f, - 0.917290997f, 0.398217562f, - 0.916679060f, 0.399624200f, - 0.916064966f, 0.401029897f, - 0.915448716f, 0.402434651f, - 0.914830312f, 0.403838458f, - 0.914209756f, 0.405241314f, - 0.913587048f, 0.406643217f, - 0.912962190f, 0.408044163f, - 0.912335185f, 0.409444149f, - 0.911706032f, 0.410843171f, - 0.911074734f, 0.412241227f, - 0.910441292f, 0.413638312f, - 0.909805708f, 0.415034424f, - 0.909167983f, 0.416429560f, - 0.908528119f, 0.417823716f, - 0.907886116f, 0.419216888f, - 0.907241978f, 0.420609074f, - 0.906595705f, 0.422000271f, - 0.905947298f, 0.423390474f, - 0.905296759f, 0.424779681f, - 0.904644091f, 0.426167889f, - 0.903989293f, 0.427555093f, - 0.903332368f, 0.428941292f, - 0.902673318f, 0.430326481f, - 0.902012144f, 0.431710658f, - 0.901348847f, 0.433093819f, - 0.900683429f, 0.434475961f, - 0.900015892f, 0.435857080f, - 0.899346237f, 0.437237174f, - 0.898674466f, 0.438616239f, - 0.898000580f, 0.439994271f, - 0.897324581f, 0.441371269f, - 0.896646470f, 0.442747228f, - 0.895966250f, 0.444122145f, - 0.895283921f, 0.445496017f, - 0.894599486f, 0.446868840f, - 0.893912945f, 0.448240612f, - 0.893224301f, 0.449611330f, - 0.892533555f, 0.450980989f, - 0.891840709f, 0.452349587f, - 0.891145765f, 0.453717121f, - 0.890448723f, 0.455083587f, - 0.889749586f, 0.456448982f, - 0.889048356f, 0.457813304f, - 0.888345033f, 0.459176548f, - 0.887639620f, 0.460538711f, - 0.886932119f, 0.461899791f, - 0.886222530f, 0.463259784f, - 0.885510856f, 0.464618686f, - 0.884797098f, 0.465976496f, - 0.884081259f, 0.467333209f, - 0.883363339f, 0.468688822f, - 0.882643340f, 0.470043332f, - 0.881921264f, 0.471396737f, - 0.881197113f, 0.472749032f, - 0.880470889f, 0.474100215f, - 0.879742593f, 0.475450282f, - 0.879012226f, 0.476799230f, - 0.878279792f, 0.478147056f, - 0.877545290f, 0.479493758f, - 0.876808724f, 0.480839331f, - 0.876070094f, 0.482183772f, - 0.875329403f, 0.483527079f, - 0.874586652f, 0.484869248f, - 0.873841843f, 0.486210276f, - 0.873094978f, 0.487550160f, - 0.872346059f, 0.488888897f, - 0.871595087f, 0.490226483f, - 0.870842063f, 0.491562916f, - 0.870086991f, 0.492898192f, - 0.869329871f, 0.494232309f, - 0.868570706f, 0.495565262f, - 0.867809497f, 0.496897049f, - 0.867046246f, 0.498227667f, - 0.866280954f, 0.499557113f, - 0.865513624f, 0.500885383f, - 0.864744258f, 0.502212474f, - 0.863972856f, 0.503538384f, - 0.863199422f, 0.504863109f, - 0.862423956f, 0.506186645f, - 0.861646461f, 0.507508991f, - 0.860866939f, 0.508830143f, - 0.860085390f, 0.510150097f, - 0.859301818f, 0.511468850f, - 0.858516224f, 0.512786401f, - 0.857728610f, 0.514102744f, - 0.856938977f, 0.515417878f, - 0.856147328f, 0.516731799f, - 0.855353665f, 0.518044504f, - 0.854557988f, 0.519355990f, - 0.853760301f, 0.520666254f, - 0.852960605f, 0.521975293f, - 0.852158902f, 0.523283103f, - 0.851355193f, 0.524589683f, - 0.850549481f, 0.525895027f, - 0.849741768f, 0.527199135f, - 0.848932055f, 0.528502002f, - 0.848120345f, 0.529803625f, - 0.847306639f, 0.531104001f, - 0.846490939f, 0.532403128f, - 0.845673247f, 0.533701002f, - 0.844853565f, 0.534997620f, - 0.844031895f, 0.536292979f, - 0.843208240f, 0.537587076f, - 0.842382600f, 0.538879909f, - 0.841554977f, 0.540171473f, - 0.840725375f, 0.541461766f, - 0.839893794f, 0.542750785f, - 0.839060237f, 0.544038527f, - 0.838224706f, 0.545324988f, - 0.837387202f, 0.546610167f, - 0.836547727f, 0.547894059f, - 0.835706284f, 0.549176662f, - 0.834862875f, 0.550457973f, - 0.834017501f, 0.551737988f, - 0.833170165f, 0.553016706f, - 0.832320868f, 0.554294121f, - 0.831469612f, 0.555570233f, - 0.830616400f, 0.556845037f, - 0.829761234f, 0.558118531f, - 0.828904115f, 0.559390712f, - 0.828045045f, 0.560661576f, - 0.827184027f, 0.561931121f, - 0.826321063f, 0.563199344f, - 0.825456154f, 0.564466242f, - 0.824589303f, 0.565731811f, - 0.823720511f, 0.566996049f, - 0.822849781f, 0.568258953f, - 0.821977115f, 0.569520519f, - 0.821102515f, 0.570780746f, - 0.820225983f, 0.572039629f, - 0.819347520f, 0.573297167f, - 0.818467130f, 0.574553355f, - 0.817584813f, 0.575808191f, - 0.816700573f, 0.577061673f, - 0.815814411f, 0.578313796f, - 0.814926329f, 0.579564559f, - 0.814036330f, 0.580813958f, - 0.813144415f, 0.582061990f, - 0.812250587f, 0.583308653f, - 0.811354847f, 0.584553943f, - 0.810457198f, 0.585797857f, - 0.809557642f, 0.587040394f, - 0.808656182f, 0.588281548f, - 0.807752818f, 0.589521319f, - 0.806847554f, 0.590759702f, - 0.805940391f, 0.591996695f, - 0.805031331f, 0.593232295f, - 0.804120377f, 0.594466499f, - 0.803207531f, 0.595699304f, - 0.802292796f, 0.596930708f, - 0.801376172f, 0.598160707f, - 0.800457662f, 0.599389298f, - 0.799537269f, 0.600616479f, - 0.798614995f, 0.601842247f, - 0.797690841f, 0.603066599f, - 0.796764810f, 0.604289531f, - 0.795836905f, 0.605511041f, - 0.794907126f, 0.606731127f, - 0.793975478f, 0.607949785f, - 0.793041960f, 0.609167012f, - 0.792106577f, 0.610382806f, - 0.791169330f, 0.611597164f, - 0.790230221f, 0.612810082f, - 0.789289253f, 0.614021559f, - 0.788346428f, 0.615231591f, - 0.787401747f, 0.616440175f, - 0.786455214f, 0.617647308f, - 0.785506830f, 0.618852988f, - 0.784556597f, 0.620057212f, - 0.783604519f, 0.621259977f, - 0.782650596f, 0.622461279f, - 0.781694832f, 0.623661118f, - 0.780737229f, 0.624859488f, - 0.779777788f, 0.626056388f, - 0.778816512f, 0.627251815f, - 0.777853404f, 0.628445767f, - 0.776888466f, 0.629638239f, - 0.775921699f, 0.630829230f, - 0.774953107f, 0.632018736f, - 0.773982691f, 0.633206755f, - 0.773010453f, 0.634393284f, - 0.772036397f, 0.635578320f, - 0.771060524f, 0.636761861f, - 0.770082837f, 0.637943904f, - 0.769103338f, 0.639124445f, - 0.768122029f, 0.640303482f, - 0.767138912f, 0.641481013f, - 0.766153990f, 0.642657034f, - 0.765167266f, 0.643831543f, - 0.764178741f, 0.645004537f, - 0.763188417f, 0.646176013f, - 0.762196298f, 0.647345969f, - 0.761202385f, 0.648514401f, - 0.760206682f, 0.649681307f, - 0.759209189f, 0.650846685f, - 0.758209910f, 0.652010531f, - 0.757208847f, 0.653172843f, - 0.756206001f, 0.654333618f, - 0.755201377f, 0.655492853f, - 0.754194975f, 0.656650546f, - 0.753186799f, 0.657806693f, - 0.752176850f, 0.658961293f, - 0.751165132f, 0.660114342f, - 0.750151646f, 0.661265838f, - 0.749136395f, 0.662415778f, - 0.748119380f, 0.663564159f, - 0.747100606f, 0.664710978f, - 0.746080074f, 0.665856234f, - 0.745057785f, 0.666999922f, - 0.744033744f, 0.668142041f, - 0.743007952f, 0.669282588f, - 0.741980412f, 0.670421560f, - 0.740951125f, 0.671558955f, - 0.739920095f, 0.672694769f, - 0.738887324f, 0.673829000f, - 0.737852815f, 0.674961646f, - 0.736816569f, 0.676092704f, - 0.735778589f, 0.677222170f, - 0.734738878f, 0.678350043f, - 0.733697438f, 0.679476320f, - 0.732654272f, 0.680600998f, - 0.731609381f, 0.681724074f, - 0.730562769f, 0.682845546f, - 0.729514438f, 0.683965412f, - 0.728464390f, 0.685083668f, - 0.727412629f, 0.686200312f, - 0.726359155f, 0.687315341f, - 0.725303972f, 0.688428753f, - 0.724247083f, 0.689540545f, - 0.723188489f, 0.690650714f, - 0.722128194f, 0.691759258f, - 0.721066199f, 0.692866175f, - 0.720002508f, 0.693971461f, - 0.718937122f, 0.695075114f, - 0.717870045f, 0.696177131f, - 0.716801279f, 0.697277511f, - 0.715730825f, 0.698376249f, - 0.714658688f, 0.699473345f, - 0.713584869f, 0.700568794f, - 0.712509371f, 0.701662595f, - 0.711432196f, 0.702754744f, - 0.710353347f, 0.703845241f, - 0.709272826f, 0.704934080f, - 0.708190637f, 0.706021261f, - 0.707106781f, 0.707106781f, - 0.706021261f, 0.708190637f, - 0.704934080f, 0.709272826f, - 0.703845241f, 0.710353347f, - 0.702754744f, 0.711432196f, - 0.701662595f, 0.712509371f, - 0.700568794f, 0.713584869f, - 0.699473345f, 0.714658688f, - 0.698376249f, 0.715730825f, - 0.697277511f, 0.716801279f, - 0.696177131f, 0.717870045f, - 0.695075114f, 0.718937122f, - 0.693971461f, 0.720002508f, - 0.692866175f, 0.721066199f, - 0.691759258f, 0.722128194f, - 0.690650714f, 0.723188489f, - 0.689540545f, 0.724247083f, - 0.688428753f, 0.725303972f, - 0.687315341f, 0.726359155f, - 0.686200312f, 0.727412629f, - 0.685083668f, 0.728464390f, - 0.683965412f, 0.729514438f, - 0.682845546f, 0.730562769f, - 0.681724074f, 0.731609381f, - 0.680600998f, 0.732654272f, - 0.679476320f, 0.733697438f, - 0.678350043f, 0.734738878f, - 0.677222170f, 0.735778589f, - 0.676092704f, 0.736816569f, - 0.674961646f, 0.737852815f, - 0.673829000f, 0.738887324f, - 0.672694769f, 0.739920095f, - 0.671558955f, 0.740951125f, - 0.670421560f, 0.741980412f, - 0.669282588f, 0.743007952f, - 0.668142041f, 0.744033744f, - 0.666999922f, 0.745057785f, - 0.665856234f, 0.746080074f, - 0.664710978f, 0.747100606f, - 0.663564159f, 0.748119380f, - 0.662415778f, 0.749136395f, - 0.661265838f, 0.750151646f, - 0.660114342f, 0.751165132f, - 0.658961293f, 0.752176850f, - 0.657806693f, 0.753186799f, - 0.656650546f, 0.754194975f, - 0.655492853f, 0.755201377f, - 0.654333618f, 0.756206001f, - 0.653172843f, 0.757208847f, - 0.652010531f, 0.758209910f, - 0.650846685f, 0.759209189f, - 0.649681307f, 0.760206682f, - 0.648514401f, 0.761202385f, - 0.647345969f, 0.762196298f, - 0.646176013f, 0.763188417f, - 0.645004537f, 0.764178741f, - 0.643831543f, 0.765167266f, - 0.642657034f, 0.766153990f, - 0.641481013f, 0.767138912f, - 0.640303482f, 0.768122029f, - 0.639124445f, 0.769103338f, - 0.637943904f, 0.770082837f, - 0.636761861f, 0.771060524f, - 0.635578320f, 0.772036397f, - 0.634393284f, 0.773010453f, - 0.633206755f, 0.773982691f, - 0.632018736f, 0.774953107f, - 0.630829230f, 0.775921699f, - 0.629638239f, 0.776888466f, - 0.628445767f, 0.777853404f, - 0.627251815f, 0.778816512f, - 0.626056388f, 0.779777788f, - 0.624859488f, 0.780737229f, - 0.623661118f, 0.781694832f, - 0.622461279f, 0.782650596f, - 0.621259977f, 0.783604519f, - 0.620057212f, 0.784556597f, - 0.618852988f, 0.785506830f, - 0.617647308f, 0.786455214f, - 0.616440175f, 0.787401747f, - 0.615231591f, 0.788346428f, - 0.614021559f, 0.789289253f, - 0.612810082f, 0.790230221f, - 0.611597164f, 0.791169330f, - 0.610382806f, 0.792106577f, - 0.609167012f, 0.793041960f, - 0.607949785f, 0.793975478f, - 0.606731127f, 0.794907126f, - 0.605511041f, 0.795836905f, - 0.604289531f, 0.796764810f, - 0.603066599f, 0.797690841f, - 0.601842247f, 0.798614995f, - 0.600616479f, 0.799537269f, - 0.599389298f, 0.800457662f, - 0.598160707f, 0.801376172f, - 0.596930708f, 0.802292796f, - 0.595699304f, 0.803207531f, - 0.594466499f, 0.804120377f, - 0.593232295f, 0.805031331f, - 0.591996695f, 0.805940391f, - 0.590759702f, 0.806847554f, - 0.589521319f, 0.807752818f, - 0.588281548f, 0.808656182f, - 0.587040394f, 0.809557642f, - 0.585797857f, 0.810457198f, - 0.584553943f, 0.811354847f, - 0.583308653f, 0.812250587f, - 0.582061990f, 0.813144415f, - 0.580813958f, 0.814036330f, - 0.579564559f, 0.814926329f, - 0.578313796f, 0.815814411f, - 0.577061673f, 0.816700573f, - 0.575808191f, 0.817584813f, - 0.574553355f, 0.818467130f, - 0.573297167f, 0.819347520f, - 0.572039629f, 0.820225983f, - 0.570780746f, 0.821102515f, - 0.569520519f, 0.821977115f, - 0.568258953f, 0.822849781f, - 0.566996049f, 0.823720511f, - 0.565731811f, 0.824589303f, - 0.564466242f, 0.825456154f, - 0.563199344f, 0.826321063f, - 0.561931121f, 0.827184027f, - 0.560661576f, 0.828045045f, - 0.559390712f, 0.828904115f, - 0.558118531f, 0.829761234f, - 0.556845037f, 0.830616400f, - 0.555570233f, 0.831469612f, - 0.554294121f, 0.832320868f, - 0.553016706f, 0.833170165f, - 0.551737988f, 0.834017501f, - 0.550457973f, 0.834862875f, - 0.549176662f, 0.835706284f, - 0.547894059f, 0.836547727f, - 0.546610167f, 0.837387202f, - 0.545324988f, 0.838224706f, - 0.544038527f, 0.839060237f, - 0.542750785f, 0.839893794f, - 0.541461766f, 0.840725375f, - 0.540171473f, 0.841554977f, - 0.538879909f, 0.842382600f, - 0.537587076f, 0.843208240f, - 0.536292979f, 0.844031895f, - 0.534997620f, 0.844853565f, - 0.533701002f, 0.845673247f, - 0.532403128f, 0.846490939f, - 0.531104001f, 0.847306639f, - 0.529803625f, 0.848120345f, - 0.528502002f, 0.848932055f, - 0.527199135f, 0.849741768f, - 0.525895027f, 0.850549481f, - 0.524589683f, 0.851355193f, - 0.523283103f, 0.852158902f, - 0.521975293f, 0.852960605f, - 0.520666254f, 0.853760301f, - 0.519355990f, 0.854557988f, - 0.518044504f, 0.855353665f, - 0.516731799f, 0.856147328f, - 0.515417878f, 0.856938977f, - 0.514102744f, 0.857728610f, - 0.512786401f, 0.858516224f, - 0.511468850f, 0.859301818f, - 0.510150097f, 0.860085390f, - 0.508830143f, 0.860866939f, - 0.507508991f, 0.861646461f, - 0.506186645f, 0.862423956f, - 0.504863109f, 0.863199422f, - 0.503538384f, 0.863972856f, - 0.502212474f, 0.864744258f, - 0.500885383f, 0.865513624f, - 0.499557113f, 0.866280954f, - 0.498227667f, 0.867046246f, - 0.496897049f, 0.867809497f, - 0.495565262f, 0.868570706f, - 0.494232309f, 0.869329871f, - 0.492898192f, 0.870086991f, - 0.491562916f, 0.870842063f, - 0.490226483f, 0.871595087f, - 0.488888897f, 0.872346059f, - 0.487550160f, 0.873094978f, - 0.486210276f, 0.873841843f, - 0.484869248f, 0.874586652f, - 0.483527079f, 0.875329403f, - 0.482183772f, 0.876070094f, - 0.480839331f, 0.876808724f, - 0.479493758f, 0.877545290f, - 0.478147056f, 0.878279792f, - 0.476799230f, 0.879012226f, - 0.475450282f, 0.879742593f, - 0.474100215f, 0.880470889f, - 0.472749032f, 0.881197113f, - 0.471396737f, 0.881921264f, - 0.470043332f, 0.882643340f, - 0.468688822f, 0.883363339f, - 0.467333209f, 0.884081259f, - 0.465976496f, 0.884797098f, - 0.464618686f, 0.885510856f, - 0.463259784f, 0.886222530f, - 0.461899791f, 0.886932119f, - 0.460538711f, 0.887639620f, - 0.459176548f, 0.888345033f, - 0.457813304f, 0.889048356f, - 0.456448982f, 0.889749586f, - 0.455083587f, 0.890448723f, - 0.453717121f, 0.891145765f, - 0.452349587f, 0.891840709f, - 0.450980989f, 0.892533555f, - 0.449611330f, 0.893224301f, - 0.448240612f, 0.893912945f, - 0.446868840f, 0.894599486f, - 0.445496017f, 0.895283921f, - 0.444122145f, 0.895966250f, - 0.442747228f, 0.896646470f, - 0.441371269f, 0.897324581f, - 0.439994271f, 0.898000580f, - 0.438616239f, 0.898674466f, - 0.437237174f, 0.899346237f, - 0.435857080f, 0.900015892f, - 0.434475961f, 0.900683429f, - 0.433093819f, 0.901348847f, - 0.431710658f, 0.902012144f, - 0.430326481f, 0.902673318f, - 0.428941292f, 0.903332368f, - 0.427555093f, 0.903989293f, - 0.426167889f, 0.904644091f, - 0.424779681f, 0.905296759f, - 0.423390474f, 0.905947298f, - 0.422000271f, 0.906595705f, - 0.420609074f, 0.907241978f, - 0.419216888f, 0.907886116f, - 0.417823716f, 0.908528119f, - 0.416429560f, 0.909167983f, - 0.415034424f, 0.909805708f, - 0.413638312f, 0.910441292f, - 0.412241227f, 0.911074734f, - 0.410843171f, 0.911706032f, - 0.409444149f, 0.912335185f, - 0.408044163f, 0.912962190f, - 0.406643217f, 0.913587048f, - 0.405241314f, 0.914209756f, - 0.403838458f, 0.914830312f, - 0.402434651f, 0.915448716f, - 0.401029897f, 0.916064966f, - 0.399624200f, 0.916679060f, - 0.398217562f, 0.917290997f, - 0.396809987f, 0.917900776f, - 0.395401479f, 0.918508394f, - 0.393992040f, 0.919113852f, - 0.392581674f, 0.919717146f, - 0.391170384f, 0.920318277f, - 0.389758174f, 0.920917242f, - 0.388345047f, 0.921514039f, - 0.386931006f, 0.922108669f, - 0.385516054f, 0.922701128f, - 0.384100195f, 0.923291417f, - 0.382683432f, 0.923879533f, - 0.381265769f, 0.924465474f, - 0.379847209f, 0.925049241f, - 0.378427755f, 0.925630831f, - 0.377007410f, 0.926210242f, - 0.375586178f, 0.926787474f, - 0.374164063f, 0.927362526f, - 0.372741067f, 0.927935395f, - 0.371317194f, 0.928506080f, - 0.369892447f, 0.929074581f, - 0.368466830f, 0.929640896f, - 0.367040346f, 0.930205023f, - 0.365612998f, 0.930766961f, - 0.364184790f, 0.931326709f, - 0.362755724f, 0.931884266f, - 0.361325806f, 0.932439629f, - 0.359895037f, 0.932992799f, - 0.358463421f, 0.933543773f, - 0.357030961f, 0.934092550f, - 0.355597662f, 0.934639130f, - 0.354163525f, 0.935183510f, - 0.352728556f, 0.935725689f, - 0.351292756f, 0.936265667f, - 0.349856130f, 0.936803442f, - 0.348418680f, 0.937339012f, - 0.346980411f, 0.937872376f, - 0.345541325f, 0.938403534f, - 0.344101426f, 0.938932484f, - 0.342660717f, 0.939459224f, - 0.341219202f, 0.939983753f, - 0.339776884f, 0.940506071f, - 0.338333767f, 0.941026175f, - 0.336889853f, 0.941544065f, - 0.335445147f, 0.942059740f, - 0.333999651f, 0.942573198f, - 0.332553370f, 0.943084437f, - 0.331106306f, 0.943593458f, - 0.329658463f, 0.944100258f, - 0.328209844f, 0.944604837f, - 0.326760452f, 0.945107193f, - 0.325310292f, 0.945607325f, - 0.323859367f, 0.946105232f, - 0.322407679f, 0.946600913f, - 0.320955232f, 0.947094366f, - 0.319502031f, 0.947585591f, - 0.318048077f, 0.948074586f, - 0.316593376f, 0.948561350f, - 0.315137929f, 0.949045882f, - 0.313681740f, 0.949528181f, - 0.312224814f, 0.950008245f, - 0.310767153f, 0.950486074f, - 0.309308760f, 0.950961666f, - 0.307849640f, 0.951435021f, - 0.306389795f, 0.951906137f, - 0.304929230f, 0.952375013f, - 0.303467947f, 0.952841648f, - 0.302005949f, 0.953306040f, - 0.300543241f, 0.953768190f, - 0.299079826f, 0.954228095f, - 0.297615707f, 0.954685755f, - 0.296150888f, 0.955141168f, - 0.294685372f, 0.955594334f, - 0.293219163f, 0.956045251f, - 0.291752263f, 0.956493919f, - 0.290284677f, 0.956940336f, - 0.288816408f, 0.957384501f, - 0.287347460f, 0.957826413f, - 0.285877835f, 0.958266071f, - 0.284407537f, 0.958703475f, - 0.282936570f, 0.959138622f, - 0.281464938f, 0.959571513f, - 0.279992643f, 0.960002146f, - 0.278519689f, 0.960430519f, - 0.277046080f, 0.960856633f, - 0.275571819f, 0.961280486f, - 0.274096910f, 0.961702077f, - 0.272621355f, 0.962121404f, - 0.271145160f, 0.962538468f, - 0.269668326f, 0.962953267f, - 0.268190857f, 0.963365800f, - 0.266712757f, 0.963776066f, - 0.265234030f, 0.964184064f, - 0.263754679f, 0.964589793f, - 0.262274707f, 0.964993253f, - 0.260794118f, 0.965394442f, - 0.259312915f, 0.965793359f, - 0.257831102f, 0.966190003f, - 0.256348682f, 0.966584374f, - 0.254865660f, 0.966976471f, - 0.253382037f, 0.967366292f, - 0.251897818f, 0.967753837f, - 0.250413007f, 0.968139105f, - 0.248927606f, 0.968522094f, - 0.247441619f, 0.968902805f, - 0.245955050f, 0.969281235f, - 0.244467903f, 0.969657385f, - 0.242980180f, 0.970031253f, - 0.241491885f, 0.970402839f, - 0.240003022f, 0.970772141f, - 0.238513595f, 0.971139158f, - 0.237023606f, 0.971503891f, - 0.235533059f, 0.971866337f, - 0.234041959f, 0.972226497f, - 0.232550307f, 0.972584369f, - 0.231058108f, 0.972939952f, - 0.229565366f, 0.973293246f, - 0.228072083f, 0.973644250f, - 0.226578264f, 0.973992962f, - 0.225083911f, 0.974339383f, - 0.223589029f, 0.974683511f, - 0.222093621f, 0.975025345f, - 0.220597690f, 0.975364885f, - 0.219101240f, 0.975702130f, - 0.217604275f, 0.976037079f, - 0.216106797f, 0.976369731f, - 0.214608811f, 0.976700086f, - 0.213110320f, 0.977028143f, - 0.211611327f, 0.977353900f, - 0.210111837f, 0.977677358f, - 0.208611852f, 0.977998515f, - 0.207111376f, 0.978317371f, - 0.205610413f, 0.978633924f, - 0.204108966f, 0.978948175f, - 0.202607039f, 0.979260123f, - 0.201104635f, 0.979569766f, - 0.199601758f, 0.979877104f, - 0.198098411f, 0.980182136f, - 0.196594598f, 0.980484862f, - 0.195090322f, 0.980785280f, - 0.193585587f, 0.981083391f, - 0.192080397f, 0.981379193f, - 0.190574755f, 0.981672686f, - 0.189068664f, 0.981963869f, - 0.187562129f, 0.982252741f, - 0.186055152f, 0.982539302f, - 0.184547737f, 0.982823551f, - 0.183039888f, 0.983105487f, - 0.181531608f, 0.983385110f, - 0.180022901f, 0.983662419f, - 0.178513771f, 0.983937413f, - 0.177004220f, 0.984210092f, - 0.175494253f, 0.984480455f, - 0.173983873f, 0.984748502f, - 0.172473084f, 0.985014231f, - 0.170961889f, 0.985277642f, - 0.169450291f, 0.985538735f, - 0.167938295f, 0.985797509f, - 0.166425904f, 0.986053963f, - 0.164913120f, 0.986308097f, - 0.163399949f, 0.986559910f, - 0.161886394f, 0.986809402f, - 0.160372457f, 0.987056571f, - 0.158858143f, 0.987301418f, - 0.157343456f, 0.987543942f, - 0.155828398f, 0.987784142f, - 0.154312973f, 0.988022017f, - 0.152797185f, 0.988257568f, - 0.151281038f, 0.988490793f, - 0.149764535f, 0.988721692f, - 0.148247679f, 0.988950265f, - 0.146730474f, 0.989176510f, - 0.145212925f, 0.989400428f, - 0.143695033f, 0.989622017f, - 0.142176804f, 0.989841278f, - 0.140658239f, 0.990058210f, - 0.139139344f, 0.990272812f, - 0.137620122f, 0.990485084f, - 0.136100575f, 0.990695025f, - 0.134580709f, 0.990902635f, - 0.133060525f, 0.991107914f, - 0.131540029f, 0.991310860f, - 0.130019223f, 0.991511473f, - 0.128498111f, 0.991709754f, - 0.126976696f, 0.991905700f, - 0.125454983f, 0.992099313f, - 0.123932975f, 0.992290591f, - 0.122410675f, 0.992479535f, - 0.120888087f, 0.992666142f, - 0.119365215f, 0.992850414f, - 0.117842062f, 0.993032350f, - 0.116318631f, 0.993211949f, - 0.114794927f, 0.993389211f, - 0.113270952f, 0.993564136f, - 0.111746711f, 0.993736722f, - 0.110222207f, 0.993906970f, - 0.108697444f, 0.994074879f, - 0.107172425f, 0.994240449f, - 0.105647154f, 0.994403680f, - 0.104121634f, 0.994564571f, - 0.102595869f, 0.994723121f, - 0.101069863f, 0.994879331f, - 0.099543619f, 0.995033199f, - 0.098017140f, 0.995184727f, - 0.096490431f, 0.995333912f, - 0.094963495f, 0.995480755f, - 0.093436336f, 0.995625256f, - 0.091908956f, 0.995767414f, - 0.090381361f, 0.995907229f, - 0.088853553f, 0.996044701f, - 0.087325535f, 0.996179829f, - 0.085797312f, 0.996312612f, - 0.084268888f, 0.996443051f, - 0.082740265f, 0.996571146f, - 0.081211447f, 0.996696895f, - 0.079682438f, 0.996820299f, - 0.078153242f, 0.996941358f, - 0.076623861f, 0.997060070f, - 0.075094301f, 0.997176437f, - 0.073564564f, 0.997290457f, - 0.072034653f, 0.997402130f, - 0.070504573f, 0.997511456f, - 0.068974328f, 0.997618435f, - 0.067443920f, 0.997723067f, - 0.065913353f, 0.997825350f, - 0.064382631f, 0.997925286f, - 0.062851758f, 0.998022874f, - 0.061320736f, 0.998118113f, - 0.059789571f, 0.998211003f, - 0.058258265f, 0.998301545f, - 0.056726821f, 0.998389737f, - 0.055195244f, 0.998475581f, - 0.053663538f, 0.998559074f, - 0.052131705f, 0.998640218f, - 0.050599749f, 0.998719012f, - 0.049067674f, 0.998795456f, - 0.047535484f, 0.998869550f, - 0.046003182f, 0.998941293f, - 0.044470772f, 0.999010686f, - 0.042938257f, 0.999077728f, - 0.041405641f, 0.999142419f, - 0.039872928f, 0.999204759f, - 0.038340120f, 0.999264747f, - 0.036807223f, 0.999322385f, - 0.035274239f, 0.999377670f, - 0.033741172f, 0.999430605f, - 0.032208025f, 0.999481187f, - 0.030674803f, 0.999529418f, - 0.029141509f, 0.999575296f, - 0.027608146f, 0.999618822f, - 0.026074718f, 0.999659997f, - 0.024541229f, 0.999698819f, - 0.023007681f, 0.999735288f, - 0.021474080f, 0.999769405f, - 0.019940429f, 0.999801170f, - 0.018406730f, 0.999830582f, - 0.016872988f, 0.999857641f, - 0.015339206f, 0.999882347f, - 0.013805389f, 0.999904701f, - 0.012271538f, 0.999924702f, - 0.010737659f, 0.999942350f, - 0.009203755f, 0.999957645f, - 0.007669829f, 0.999970586f, - 0.006135885f, 0.999981175f, - 0.004601926f, 0.999989411f, - 0.003067957f, 0.999995294f, - 0.001533980f, 0.999998823f, - 0.000000000f, 1.000000000f, - -0.001533980f, 0.999998823f, - -0.003067957f, 0.999995294f, - -0.004601926f, 0.999989411f, - -0.006135885f, 0.999981175f, - -0.007669829f, 0.999970586f, - -0.009203755f, 0.999957645f, - -0.010737659f, 0.999942350f, - -0.012271538f, 0.999924702f, - -0.013805389f, 0.999904701f, - -0.015339206f, 0.999882347f, - -0.016872988f, 0.999857641f, - -0.018406730f, 0.999830582f, - -0.019940429f, 0.999801170f, - -0.021474080f, 0.999769405f, - -0.023007681f, 0.999735288f, - -0.024541229f, 0.999698819f, - -0.026074718f, 0.999659997f, - -0.027608146f, 0.999618822f, - -0.029141509f, 0.999575296f, - -0.030674803f, 0.999529418f, - -0.032208025f, 0.999481187f, - -0.033741172f, 0.999430605f, - -0.035274239f, 0.999377670f, - -0.036807223f, 0.999322385f, - -0.038340120f, 0.999264747f, - -0.039872928f, 0.999204759f, - -0.041405641f, 0.999142419f, - -0.042938257f, 0.999077728f, - -0.044470772f, 0.999010686f, - -0.046003182f, 0.998941293f, - -0.047535484f, 0.998869550f, - -0.049067674f, 0.998795456f, - -0.050599749f, 0.998719012f, - -0.052131705f, 0.998640218f, - -0.053663538f, 0.998559074f, - -0.055195244f, 0.998475581f, - -0.056726821f, 0.998389737f, - -0.058258265f, 0.998301545f, - -0.059789571f, 0.998211003f, - -0.061320736f, 0.998118113f, - -0.062851758f, 0.998022874f, - -0.064382631f, 0.997925286f, - -0.065913353f, 0.997825350f, - -0.067443920f, 0.997723067f, - -0.068974328f, 0.997618435f, - -0.070504573f, 0.997511456f, - -0.072034653f, 0.997402130f, - -0.073564564f, 0.997290457f, - -0.075094301f, 0.997176437f, - -0.076623861f, 0.997060070f, - -0.078153242f, 0.996941358f, - -0.079682438f, 0.996820299f, - -0.081211447f, 0.996696895f, - -0.082740265f, 0.996571146f, - -0.084268888f, 0.996443051f, - -0.085797312f, 0.996312612f, - -0.087325535f, 0.996179829f, - -0.088853553f, 0.996044701f, - -0.090381361f, 0.995907229f, - -0.091908956f, 0.995767414f, - -0.093436336f, 0.995625256f, - -0.094963495f, 0.995480755f, - -0.096490431f, 0.995333912f, - -0.098017140f, 0.995184727f, - -0.099543619f, 0.995033199f, - -0.101069863f, 0.994879331f, - -0.102595869f, 0.994723121f, - -0.104121634f, 0.994564571f, - -0.105647154f, 0.994403680f, - -0.107172425f, 0.994240449f, - -0.108697444f, 0.994074879f, - -0.110222207f, 0.993906970f, - -0.111746711f, 0.993736722f, - -0.113270952f, 0.993564136f, - -0.114794927f, 0.993389211f, - -0.116318631f, 0.993211949f, - -0.117842062f, 0.993032350f, - -0.119365215f, 0.992850414f, - -0.120888087f, 0.992666142f, - -0.122410675f, 0.992479535f, - -0.123932975f, 0.992290591f, - -0.125454983f, 0.992099313f, - -0.126976696f, 0.991905700f, - -0.128498111f, 0.991709754f, - -0.130019223f, 0.991511473f, - -0.131540029f, 0.991310860f, - -0.133060525f, 0.991107914f, - -0.134580709f, 0.990902635f, - -0.136100575f, 0.990695025f, - -0.137620122f, 0.990485084f, - -0.139139344f, 0.990272812f, - -0.140658239f, 0.990058210f, - -0.142176804f, 0.989841278f, - -0.143695033f, 0.989622017f, - -0.145212925f, 0.989400428f, - -0.146730474f, 0.989176510f, - -0.148247679f, 0.988950265f, - -0.149764535f, 0.988721692f, - -0.151281038f, 0.988490793f, - -0.152797185f, 0.988257568f, - -0.154312973f, 0.988022017f, - -0.155828398f, 0.987784142f, - -0.157343456f, 0.987543942f, - -0.158858143f, 0.987301418f, - -0.160372457f, 0.987056571f, - -0.161886394f, 0.986809402f, - -0.163399949f, 0.986559910f, - -0.164913120f, 0.986308097f, - -0.166425904f, 0.986053963f, - -0.167938295f, 0.985797509f, - -0.169450291f, 0.985538735f, - -0.170961889f, 0.985277642f, - -0.172473084f, 0.985014231f, - -0.173983873f, 0.984748502f, - -0.175494253f, 0.984480455f, - -0.177004220f, 0.984210092f, - -0.178513771f, 0.983937413f, - -0.180022901f, 0.983662419f, - -0.181531608f, 0.983385110f, - -0.183039888f, 0.983105487f, - -0.184547737f, 0.982823551f, - -0.186055152f, 0.982539302f, - -0.187562129f, 0.982252741f, - -0.189068664f, 0.981963869f, - -0.190574755f, 0.981672686f, - -0.192080397f, 0.981379193f, - -0.193585587f, 0.981083391f, - -0.195090322f, 0.980785280f, - -0.196594598f, 0.980484862f, - -0.198098411f, 0.980182136f, - -0.199601758f, 0.979877104f, - -0.201104635f, 0.979569766f, - -0.202607039f, 0.979260123f, - -0.204108966f, 0.978948175f, - -0.205610413f, 0.978633924f, - -0.207111376f, 0.978317371f, - -0.208611852f, 0.977998515f, - -0.210111837f, 0.977677358f, - -0.211611327f, 0.977353900f, - -0.213110320f, 0.977028143f, - -0.214608811f, 0.976700086f, - -0.216106797f, 0.976369731f, - -0.217604275f, 0.976037079f, - -0.219101240f, 0.975702130f, - -0.220597690f, 0.975364885f, - -0.222093621f, 0.975025345f, - -0.223589029f, 0.974683511f, - -0.225083911f, 0.974339383f, - -0.226578264f, 0.973992962f, - -0.228072083f, 0.973644250f, - -0.229565366f, 0.973293246f, - -0.231058108f, 0.972939952f, - -0.232550307f, 0.972584369f, - -0.234041959f, 0.972226497f, - -0.235533059f, 0.971866337f, - -0.237023606f, 0.971503891f, - -0.238513595f, 0.971139158f, - -0.240003022f, 0.970772141f, - -0.241491885f, 0.970402839f, - -0.242980180f, 0.970031253f, - -0.244467903f, 0.969657385f, - -0.245955050f, 0.969281235f, - -0.247441619f, 0.968902805f, - -0.248927606f, 0.968522094f, - -0.250413007f, 0.968139105f, - -0.251897818f, 0.967753837f, - -0.253382037f, 0.967366292f, - -0.254865660f, 0.966976471f, - -0.256348682f, 0.966584374f, - -0.257831102f, 0.966190003f, - -0.259312915f, 0.965793359f, - -0.260794118f, 0.965394442f, - -0.262274707f, 0.964993253f, - -0.263754679f, 0.964589793f, - -0.265234030f, 0.964184064f, - -0.266712757f, 0.963776066f, - -0.268190857f, 0.963365800f, - -0.269668326f, 0.962953267f, - -0.271145160f, 0.962538468f, - -0.272621355f, 0.962121404f, - -0.274096910f, 0.961702077f, - -0.275571819f, 0.961280486f, - -0.277046080f, 0.960856633f, - -0.278519689f, 0.960430519f, - -0.279992643f, 0.960002146f, - -0.281464938f, 0.959571513f, - -0.282936570f, 0.959138622f, - -0.284407537f, 0.958703475f, - -0.285877835f, 0.958266071f, - -0.287347460f, 0.957826413f, - -0.288816408f, 0.957384501f, - -0.290284677f, 0.956940336f, - -0.291752263f, 0.956493919f, - -0.293219163f, 0.956045251f, - -0.294685372f, 0.955594334f, - -0.296150888f, 0.955141168f, - -0.297615707f, 0.954685755f, - -0.299079826f, 0.954228095f, - -0.300543241f, 0.953768190f, - -0.302005949f, 0.953306040f, - -0.303467947f, 0.952841648f, - -0.304929230f, 0.952375013f, - -0.306389795f, 0.951906137f, - -0.307849640f, 0.951435021f, - -0.309308760f, 0.950961666f, - -0.310767153f, 0.950486074f, - -0.312224814f, 0.950008245f, - -0.313681740f, 0.949528181f, - -0.315137929f, 0.949045882f, - -0.316593376f, 0.948561350f, - -0.318048077f, 0.948074586f, - -0.319502031f, 0.947585591f, - -0.320955232f, 0.947094366f, - -0.322407679f, 0.946600913f, - -0.323859367f, 0.946105232f, - -0.325310292f, 0.945607325f, - -0.326760452f, 0.945107193f, - -0.328209844f, 0.944604837f, - -0.329658463f, 0.944100258f, - -0.331106306f, 0.943593458f, - -0.332553370f, 0.943084437f, - -0.333999651f, 0.942573198f, - -0.335445147f, 0.942059740f, - -0.336889853f, 0.941544065f, - -0.338333767f, 0.941026175f, - -0.339776884f, 0.940506071f, - -0.341219202f, 0.939983753f, - -0.342660717f, 0.939459224f, - -0.344101426f, 0.938932484f, - -0.345541325f, 0.938403534f, - -0.346980411f, 0.937872376f, - -0.348418680f, 0.937339012f, - -0.349856130f, 0.936803442f, - -0.351292756f, 0.936265667f, - -0.352728556f, 0.935725689f, - -0.354163525f, 0.935183510f, - -0.355597662f, 0.934639130f, - -0.357030961f, 0.934092550f, - -0.358463421f, 0.933543773f, - -0.359895037f, 0.932992799f, - -0.361325806f, 0.932439629f, - -0.362755724f, 0.931884266f, - -0.364184790f, 0.931326709f, - -0.365612998f, 0.930766961f, - -0.367040346f, 0.930205023f, - -0.368466830f, 0.929640896f, - -0.369892447f, 0.929074581f, - -0.371317194f, 0.928506080f, - -0.372741067f, 0.927935395f, - -0.374164063f, 0.927362526f, - -0.375586178f, 0.926787474f, - -0.377007410f, 0.926210242f, - -0.378427755f, 0.925630831f, - -0.379847209f, 0.925049241f, - -0.381265769f, 0.924465474f, - -0.382683432f, 0.923879533f, - -0.384100195f, 0.923291417f, - -0.385516054f, 0.922701128f, - -0.386931006f, 0.922108669f, - -0.388345047f, 0.921514039f, - -0.389758174f, 0.920917242f, - -0.391170384f, 0.920318277f, - -0.392581674f, 0.919717146f, - -0.393992040f, 0.919113852f, - -0.395401479f, 0.918508394f, - -0.396809987f, 0.917900776f, - -0.398217562f, 0.917290997f, - -0.399624200f, 0.916679060f, - -0.401029897f, 0.916064966f, - -0.402434651f, 0.915448716f, - -0.403838458f, 0.914830312f, - -0.405241314f, 0.914209756f, - -0.406643217f, 0.913587048f, - -0.408044163f, 0.912962190f, - -0.409444149f, 0.912335185f, - -0.410843171f, 0.911706032f, - -0.412241227f, 0.911074734f, - -0.413638312f, 0.910441292f, - -0.415034424f, 0.909805708f, - -0.416429560f, 0.909167983f, - -0.417823716f, 0.908528119f, - -0.419216888f, 0.907886116f, - -0.420609074f, 0.907241978f, - -0.422000271f, 0.906595705f, - -0.423390474f, 0.905947298f, - -0.424779681f, 0.905296759f, - -0.426167889f, 0.904644091f, - -0.427555093f, 0.903989293f, - -0.428941292f, 0.903332368f, - -0.430326481f, 0.902673318f, - -0.431710658f, 0.902012144f, - -0.433093819f, 0.901348847f, - -0.434475961f, 0.900683429f, - -0.435857080f, 0.900015892f, - -0.437237174f, 0.899346237f, - -0.438616239f, 0.898674466f, - -0.439994271f, 0.898000580f, - -0.441371269f, 0.897324581f, - -0.442747228f, 0.896646470f, - -0.444122145f, 0.895966250f, - -0.445496017f, 0.895283921f, - -0.446868840f, 0.894599486f, - -0.448240612f, 0.893912945f, - -0.449611330f, 0.893224301f, - -0.450980989f, 0.892533555f, - -0.452349587f, 0.891840709f, - -0.453717121f, 0.891145765f, - -0.455083587f, 0.890448723f, - -0.456448982f, 0.889749586f, - -0.457813304f, 0.889048356f, - -0.459176548f, 0.888345033f, - -0.460538711f, 0.887639620f, - -0.461899791f, 0.886932119f, - -0.463259784f, 0.886222530f, - -0.464618686f, 0.885510856f, - -0.465976496f, 0.884797098f, - -0.467333209f, 0.884081259f, - -0.468688822f, 0.883363339f, - -0.470043332f, 0.882643340f, - -0.471396737f, 0.881921264f, - -0.472749032f, 0.881197113f, - -0.474100215f, 0.880470889f, - -0.475450282f, 0.879742593f, - -0.476799230f, 0.879012226f, - -0.478147056f, 0.878279792f, - -0.479493758f, 0.877545290f, - -0.480839331f, 0.876808724f, - -0.482183772f, 0.876070094f, - -0.483527079f, 0.875329403f, - -0.484869248f, 0.874586652f, - -0.486210276f, 0.873841843f, - -0.487550160f, 0.873094978f, - -0.488888897f, 0.872346059f, - -0.490226483f, 0.871595087f, - -0.491562916f, 0.870842063f, - -0.492898192f, 0.870086991f, - -0.494232309f, 0.869329871f, - -0.495565262f, 0.868570706f, - -0.496897049f, 0.867809497f, - -0.498227667f, 0.867046246f, - -0.499557113f, 0.866280954f, - -0.500885383f, 0.865513624f, - -0.502212474f, 0.864744258f, - -0.503538384f, 0.863972856f, - -0.504863109f, 0.863199422f, - -0.506186645f, 0.862423956f, - -0.507508991f, 0.861646461f, - -0.508830143f, 0.860866939f, - -0.510150097f, 0.860085390f, - -0.511468850f, 0.859301818f, - -0.512786401f, 0.858516224f, - -0.514102744f, 0.857728610f, - -0.515417878f, 0.856938977f, - -0.516731799f, 0.856147328f, - -0.518044504f, 0.855353665f, - -0.519355990f, 0.854557988f, - -0.520666254f, 0.853760301f, - -0.521975293f, 0.852960605f, - -0.523283103f, 0.852158902f, - -0.524589683f, 0.851355193f, - -0.525895027f, 0.850549481f, - -0.527199135f, 0.849741768f, - -0.528502002f, 0.848932055f, - -0.529803625f, 0.848120345f, - -0.531104001f, 0.847306639f, - -0.532403128f, 0.846490939f, - -0.533701002f, 0.845673247f, - -0.534997620f, 0.844853565f, - -0.536292979f, 0.844031895f, - -0.537587076f, 0.843208240f, - -0.538879909f, 0.842382600f, - -0.540171473f, 0.841554977f, - -0.541461766f, 0.840725375f, - -0.542750785f, 0.839893794f, - -0.544038527f, 0.839060237f, - -0.545324988f, 0.838224706f, - -0.546610167f, 0.837387202f, - -0.547894059f, 0.836547727f, - -0.549176662f, 0.835706284f, - -0.550457973f, 0.834862875f, - -0.551737988f, 0.834017501f, - -0.553016706f, 0.833170165f, - -0.554294121f, 0.832320868f, - -0.555570233f, 0.831469612f, - -0.556845037f, 0.830616400f, - -0.558118531f, 0.829761234f, - -0.559390712f, 0.828904115f, - -0.560661576f, 0.828045045f, - -0.561931121f, 0.827184027f, - -0.563199344f, 0.826321063f, - -0.564466242f, 0.825456154f, - -0.565731811f, 0.824589303f, - -0.566996049f, 0.823720511f, - -0.568258953f, 0.822849781f, - -0.569520519f, 0.821977115f, - -0.570780746f, 0.821102515f, - -0.572039629f, 0.820225983f, - -0.573297167f, 0.819347520f, - -0.574553355f, 0.818467130f, - -0.575808191f, 0.817584813f, - -0.577061673f, 0.816700573f, - -0.578313796f, 0.815814411f, - -0.579564559f, 0.814926329f, - -0.580813958f, 0.814036330f, - -0.582061990f, 0.813144415f, - -0.583308653f, 0.812250587f, - -0.584553943f, 0.811354847f, - -0.585797857f, 0.810457198f, - -0.587040394f, 0.809557642f, - -0.588281548f, 0.808656182f, - -0.589521319f, 0.807752818f, - -0.590759702f, 0.806847554f, - -0.591996695f, 0.805940391f, - -0.593232295f, 0.805031331f, - -0.594466499f, 0.804120377f, - -0.595699304f, 0.803207531f, - -0.596930708f, 0.802292796f, - -0.598160707f, 0.801376172f, - -0.599389298f, 0.800457662f, - -0.600616479f, 0.799537269f, - -0.601842247f, 0.798614995f, - -0.603066599f, 0.797690841f, - -0.604289531f, 0.796764810f, - -0.605511041f, 0.795836905f, - -0.606731127f, 0.794907126f, - -0.607949785f, 0.793975478f, - -0.609167012f, 0.793041960f, - -0.610382806f, 0.792106577f, - -0.611597164f, 0.791169330f, - -0.612810082f, 0.790230221f, - -0.614021559f, 0.789289253f, - -0.615231591f, 0.788346428f, - -0.616440175f, 0.787401747f, - -0.617647308f, 0.786455214f, - -0.618852988f, 0.785506830f, - -0.620057212f, 0.784556597f, - -0.621259977f, 0.783604519f, - -0.622461279f, 0.782650596f, - -0.623661118f, 0.781694832f, - -0.624859488f, 0.780737229f, - -0.626056388f, 0.779777788f, - -0.627251815f, 0.778816512f, - -0.628445767f, 0.777853404f, - -0.629638239f, 0.776888466f, - -0.630829230f, 0.775921699f, - -0.632018736f, 0.774953107f, - -0.633206755f, 0.773982691f, - -0.634393284f, 0.773010453f, - -0.635578320f, 0.772036397f, - -0.636761861f, 0.771060524f, - -0.637943904f, 0.770082837f, - -0.639124445f, 0.769103338f, - -0.640303482f, 0.768122029f, - -0.641481013f, 0.767138912f, - -0.642657034f, 0.766153990f, - -0.643831543f, 0.765167266f, - -0.645004537f, 0.764178741f, - -0.646176013f, 0.763188417f, - -0.647345969f, 0.762196298f, - -0.648514401f, 0.761202385f, - -0.649681307f, 0.760206682f, - -0.650846685f, 0.759209189f, - -0.652010531f, 0.758209910f, - -0.653172843f, 0.757208847f, - -0.654333618f, 0.756206001f, - -0.655492853f, 0.755201377f, - -0.656650546f, 0.754194975f, - -0.657806693f, 0.753186799f, - -0.658961293f, 0.752176850f, - -0.660114342f, 0.751165132f, - -0.661265838f, 0.750151646f, - -0.662415778f, 0.749136395f, - -0.663564159f, 0.748119380f, - -0.664710978f, 0.747100606f, - -0.665856234f, 0.746080074f, - -0.666999922f, 0.745057785f, - -0.668142041f, 0.744033744f, - -0.669282588f, 0.743007952f, - -0.670421560f, 0.741980412f, - -0.671558955f, 0.740951125f, - -0.672694769f, 0.739920095f, - -0.673829000f, 0.738887324f, - -0.674961646f, 0.737852815f, - -0.676092704f, 0.736816569f, - -0.677222170f, 0.735778589f, - -0.678350043f, 0.734738878f, - -0.679476320f, 0.733697438f, - -0.680600998f, 0.732654272f, - -0.681724074f, 0.731609381f, - -0.682845546f, 0.730562769f, - -0.683965412f, 0.729514438f, - -0.685083668f, 0.728464390f, - -0.686200312f, 0.727412629f, - -0.687315341f, 0.726359155f, - -0.688428753f, 0.725303972f, - -0.689540545f, 0.724247083f, - -0.690650714f, 0.723188489f, - -0.691759258f, 0.722128194f, - -0.692866175f, 0.721066199f, - -0.693971461f, 0.720002508f, - -0.695075114f, 0.718937122f, - -0.696177131f, 0.717870045f, - -0.697277511f, 0.716801279f, - -0.698376249f, 0.715730825f, - -0.699473345f, 0.714658688f, - -0.700568794f, 0.713584869f, - -0.701662595f, 0.712509371f, - -0.702754744f, 0.711432196f, - -0.703845241f, 0.710353347f, - -0.704934080f, 0.709272826f, - -0.706021261f, 0.708190637f, - -0.707106781f, 0.707106781f, - -0.708190637f, 0.706021261f, - -0.709272826f, 0.704934080f, - -0.710353347f, 0.703845241f, - -0.711432196f, 0.702754744f, - -0.712509371f, 0.701662595f, - -0.713584869f, 0.700568794f, - -0.714658688f, 0.699473345f, - -0.715730825f, 0.698376249f, - -0.716801279f, 0.697277511f, - -0.717870045f, 0.696177131f, - -0.718937122f, 0.695075114f, - -0.720002508f, 0.693971461f, - -0.721066199f, 0.692866175f, - -0.722128194f, 0.691759258f, - -0.723188489f, 0.690650714f, - -0.724247083f, 0.689540545f, - -0.725303972f, 0.688428753f, - -0.726359155f, 0.687315341f, - -0.727412629f, 0.686200312f, - -0.728464390f, 0.685083668f, - -0.729514438f, 0.683965412f, - -0.730562769f, 0.682845546f, - -0.731609381f, 0.681724074f, - -0.732654272f, 0.680600998f, - -0.733697438f, 0.679476320f, - -0.734738878f, 0.678350043f, - -0.735778589f, 0.677222170f, - -0.736816569f, 0.676092704f, - -0.737852815f, 0.674961646f, - -0.738887324f, 0.673829000f, - -0.739920095f, 0.672694769f, - -0.740951125f, 0.671558955f, - -0.741980412f, 0.670421560f, - -0.743007952f, 0.669282588f, - -0.744033744f, 0.668142041f, - -0.745057785f, 0.666999922f, - -0.746080074f, 0.665856234f, - -0.747100606f, 0.664710978f, - -0.748119380f, 0.663564159f, - -0.749136395f, 0.662415778f, - -0.750151646f, 0.661265838f, - -0.751165132f, 0.660114342f, - -0.752176850f, 0.658961293f, - -0.753186799f, 0.657806693f, - -0.754194975f, 0.656650546f, - -0.755201377f, 0.655492853f, - -0.756206001f, 0.654333618f, - -0.757208847f, 0.653172843f, - -0.758209910f, 0.652010531f, - -0.759209189f, 0.650846685f, - -0.760206682f, 0.649681307f, - -0.761202385f, 0.648514401f, - -0.762196298f, 0.647345969f, - -0.763188417f, 0.646176013f, - -0.764178741f, 0.645004537f, - -0.765167266f, 0.643831543f, - -0.766153990f, 0.642657034f, - -0.767138912f, 0.641481013f, - -0.768122029f, 0.640303482f, - -0.769103338f, 0.639124445f, - -0.770082837f, 0.637943904f, - -0.771060524f, 0.636761861f, - -0.772036397f, 0.635578320f, - -0.773010453f, 0.634393284f, - -0.773982691f, 0.633206755f, - -0.774953107f, 0.632018736f, - -0.775921699f, 0.630829230f, - -0.776888466f, 0.629638239f, - -0.777853404f, 0.628445767f, - -0.778816512f, 0.627251815f, - -0.779777788f, 0.626056388f, - -0.780737229f, 0.624859488f, - -0.781694832f, 0.623661118f, - -0.782650596f, 0.622461279f, - -0.783604519f, 0.621259977f, - -0.784556597f, 0.620057212f, - -0.785506830f, 0.618852988f, - -0.786455214f, 0.617647308f, - -0.787401747f, 0.616440175f, - -0.788346428f, 0.615231591f, - -0.789289253f, 0.614021559f, - -0.790230221f, 0.612810082f, - -0.791169330f, 0.611597164f, - -0.792106577f, 0.610382806f, - -0.793041960f, 0.609167012f, - -0.793975478f, 0.607949785f, - -0.794907126f, 0.606731127f, - -0.795836905f, 0.605511041f, - -0.796764810f, 0.604289531f, - -0.797690841f, 0.603066599f, - -0.798614995f, 0.601842247f, - -0.799537269f, 0.600616479f, - -0.800457662f, 0.599389298f, - -0.801376172f, 0.598160707f, - -0.802292796f, 0.596930708f, - -0.803207531f, 0.595699304f, - -0.804120377f, 0.594466499f, - -0.805031331f, 0.593232295f, - -0.805940391f, 0.591996695f, - -0.806847554f, 0.590759702f, - -0.807752818f, 0.589521319f, - -0.808656182f, 0.588281548f, - -0.809557642f, 0.587040394f, - -0.810457198f, 0.585797857f, - -0.811354847f, 0.584553943f, - -0.812250587f, 0.583308653f, - -0.813144415f, 0.582061990f, - -0.814036330f, 0.580813958f, - -0.814926329f, 0.579564559f, - -0.815814411f, 0.578313796f, - -0.816700573f, 0.577061673f, - -0.817584813f, 0.575808191f, - -0.818467130f, 0.574553355f, - -0.819347520f, 0.573297167f, - -0.820225983f, 0.572039629f, - -0.821102515f, 0.570780746f, - -0.821977115f, 0.569520519f, - -0.822849781f, 0.568258953f, - -0.823720511f, 0.566996049f, - -0.824589303f, 0.565731811f, - -0.825456154f, 0.564466242f, - -0.826321063f, 0.563199344f, - -0.827184027f, 0.561931121f, - -0.828045045f, 0.560661576f, - -0.828904115f, 0.559390712f, - -0.829761234f, 0.558118531f, - -0.830616400f, 0.556845037f, - -0.831469612f, 0.555570233f, - -0.832320868f, 0.554294121f, - -0.833170165f, 0.553016706f, - -0.834017501f, 0.551737988f, - -0.834862875f, 0.550457973f, - -0.835706284f, 0.549176662f, - -0.836547727f, 0.547894059f, - -0.837387202f, 0.546610167f, - -0.838224706f, 0.545324988f, - -0.839060237f, 0.544038527f, - -0.839893794f, 0.542750785f, - -0.840725375f, 0.541461766f, - -0.841554977f, 0.540171473f, - -0.842382600f, 0.538879909f, - -0.843208240f, 0.537587076f, - -0.844031895f, 0.536292979f, - -0.844853565f, 0.534997620f, - -0.845673247f, 0.533701002f, - -0.846490939f, 0.532403128f, - -0.847306639f, 0.531104001f, - -0.848120345f, 0.529803625f, - -0.848932055f, 0.528502002f, - -0.849741768f, 0.527199135f, - -0.850549481f, 0.525895027f, - -0.851355193f, 0.524589683f, - -0.852158902f, 0.523283103f, - -0.852960605f, 0.521975293f, - -0.853760301f, 0.520666254f, - -0.854557988f, 0.519355990f, - -0.855353665f, 0.518044504f, - -0.856147328f, 0.516731799f, - -0.856938977f, 0.515417878f, - -0.857728610f, 0.514102744f, - -0.858516224f, 0.512786401f, - -0.859301818f, 0.511468850f, - -0.860085390f, 0.510150097f, - -0.860866939f, 0.508830143f, - -0.861646461f, 0.507508991f, - -0.862423956f, 0.506186645f, - -0.863199422f, 0.504863109f, - -0.863972856f, 0.503538384f, - -0.864744258f, 0.502212474f, - -0.865513624f, 0.500885383f, - -0.866280954f, 0.499557113f, - -0.867046246f, 0.498227667f, - -0.867809497f, 0.496897049f, - -0.868570706f, 0.495565262f, - -0.869329871f, 0.494232309f, - -0.870086991f, 0.492898192f, - -0.870842063f, 0.491562916f, - -0.871595087f, 0.490226483f, - -0.872346059f, 0.488888897f, - -0.873094978f, 0.487550160f, - -0.873841843f, 0.486210276f, - -0.874586652f, 0.484869248f, - -0.875329403f, 0.483527079f, - -0.876070094f, 0.482183772f, - -0.876808724f, 0.480839331f, - -0.877545290f, 0.479493758f, - -0.878279792f, 0.478147056f, - -0.879012226f, 0.476799230f, - -0.879742593f, 0.475450282f, - -0.880470889f, 0.474100215f, - -0.881197113f, 0.472749032f, - -0.881921264f, 0.471396737f, - -0.882643340f, 0.470043332f, - -0.883363339f, 0.468688822f, - -0.884081259f, 0.467333209f, - -0.884797098f, 0.465976496f, - -0.885510856f, 0.464618686f, - -0.886222530f, 0.463259784f, - -0.886932119f, 0.461899791f, - -0.887639620f, 0.460538711f, - -0.888345033f, 0.459176548f, - -0.889048356f, 0.457813304f, - -0.889749586f, 0.456448982f, - -0.890448723f, 0.455083587f, - -0.891145765f, 0.453717121f, - -0.891840709f, 0.452349587f, - -0.892533555f, 0.450980989f, - -0.893224301f, 0.449611330f, - -0.893912945f, 0.448240612f, - -0.894599486f, 0.446868840f, - -0.895283921f, 0.445496017f, - -0.895966250f, 0.444122145f, - -0.896646470f, 0.442747228f, - -0.897324581f, 0.441371269f, - -0.898000580f, 0.439994271f, - -0.898674466f, 0.438616239f, - -0.899346237f, 0.437237174f, - -0.900015892f, 0.435857080f, - -0.900683429f, 0.434475961f, - -0.901348847f, 0.433093819f, - -0.902012144f, 0.431710658f, - -0.902673318f, 0.430326481f, - -0.903332368f, 0.428941292f, - -0.903989293f, 0.427555093f, - -0.904644091f, 0.426167889f, - -0.905296759f, 0.424779681f, - -0.905947298f, 0.423390474f, - -0.906595705f, 0.422000271f, - -0.907241978f, 0.420609074f, - -0.907886116f, 0.419216888f, - -0.908528119f, 0.417823716f, - -0.909167983f, 0.416429560f, - -0.909805708f, 0.415034424f, - -0.910441292f, 0.413638312f, - -0.911074734f, 0.412241227f, - -0.911706032f, 0.410843171f, - -0.912335185f, 0.409444149f, - -0.912962190f, 0.408044163f, - -0.913587048f, 0.406643217f, - -0.914209756f, 0.405241314f, - -0.914830312f, 0.403838458f, - -0.915448716f, 0.402434651f, - -0.916064966f, 0.401029897f, - -0.916679060f, 0.399624200f, - -0.917290997f, 0.398217562f, - -0.917900776f, 0.396809987f, - -0.918508394f, 0.395401479f, - -0.919113852f, 0.393992040f, - -0.919717146f, 0.392581674f, - -0.920318277f, 0.391170384f, - -0.920917242f, 0.389758174f, - -0.921514039f, 0.388345047f, - -0.922108669f, 0.386931006f, - -0.922701128f, 0.385516054f, - -0.923291417f, 0.384100195f, - -0.923879533f, 0.382683432f, - -0.924465474f, 0.381265769f, - -0.925049241f, 0.379847209f, - -0.925630831f, 0.378427755f, - -0.926210242f, 0.377007410f, - -0.926787474f, 0.375586178f, - -0.927362526f, 0.374164063f, - -0.927935395f, 0.372741067f, - -0.928506080f, 0.371317194f, - -0.929074581f, 0.369892447f, - -0.929640896f, 0.368466830f, - -0.930205023f, 0.367040346f, - -0.930766961f, 0.365612998f, - -0.931326709f, 0.364184790f, - -0.931884266f, 0.362755724f, - -0.932439629f, 0.361325806f, - -0.932992799f, 0.359895037f, - -0.933543773f, 0.358463421f, - -0.934092550f, 0.357030961f, - -0.934639130f, 0.355597662f, - -0.935183510f, 0.354163525f, - -0.935725689f, 0.352728556f, - -0.936265667f, 0.351292756f, - -0.936803442f, 0.349856130f, - -0.937339012f, 0.348418680f, - -0.937872376f, 0.346980411f, - -0.938403534f, 0.345541325f, - -0.938932484f, 0.344101426f, - -0.939459224f, 0.342660717f, - -0.939983753f, 0.341219202f, - -0.940506071f, 0.339776884f, - -0.941026175f, 0.338333767f, - -0.941544065f, 0.336889853f, - -0.942059740f, 0.335445147f, - -0.942573198f, 0.333999651f, - -0.943084437f, 0.332553370f, - -0.943593458f, 0.331106306f, - -0.944100258f, 0.329658463f, - -0.944604837f, 0.328209844f, - -0.945107193f, 0.326760452f, - -0.945607325f, 0.325310292f, - -0.946105232f, 0.323859367f, - -0.946600913f, 0.322407679f, - -0.947094366f, 0.320955232f, - -0.947585591f, 0.319502031f, - -0.948074586f, 0.318048077f, - -0.948561350f, 0.316593376f, - -0.949045882f, 0.315137929f, - -0.949528181f, 0.313681740f, - -0.950008245f, 0.312224814f, - -0.950486074f, 0.310767153f, - -0.950961666f, 0.309308760f, - -0.951435021f, 0.307849640f, - -0.951906137f, 0.306389795f, - -0.952375013f, 0.304929230f, - -0.952841648f, 0.303467947f, - -0.953306040f, 0.302005949f, - -0.953768190f, 0.300543241f, - -0.954228095f, 0.299079826f, - -0.954685755f, 0.297615707f, - -0.955141168f, 0.296150888f, - -0.955594334f, 0.294685372f, - -0.956045251f, 0.293219163f, - -0.956493919f, 0.291752263f, - -0.956940336f, 0.290284677f, - -0.957384501f, 0.288816408f, - -0.957826413f, 0.287347460f, - -0.958266071f, 0.285877835f, - -0.958703475f, 0.284407537f, - -0.959138622f, 0.282936570f, - -0.959571513f, 0.281464938f, - -0.960002146f, 0.279992643f, - -0.960430519f, 0.278519689f, - -0.960856633f, 0.277046080f, - -0.961280486f, 0.275571819f, - -0.961702077f, 0.274096910f, - -0.962121404f, 0.272621355f, - -0.962538468f, 0.271145160f, - -0.962953267f, 0.269668326f, - -0.963365800f, 0.268190857f, - -0.963776066f, 0.266712757f, - -0.964184064f, 0.265234030f, - -0.964589793f, 0.263754679f, - -0.964993253f, 0.262274707f, - -0.965394442f, 0.260794118f, - -0.965793359f, 0.259312915f, - -0.966190003f, 0.257831102f, - -0.966584374f, 0.256348682f, - -0.966976471f, 0.254865660f, - -0.967366292f, 0.253382037f, - -0.967753837f, 0.251897818f, - -0.968139105f, 0.250413007f, - -0.968522094f, 0.248927606f, - -0.968902805f, 0.247441619f, - -0.969281235f, 0.245955050f, - -0.969657385f, 0.244467903f, - -0.970031253f, 0.242980180f, - -0.970402839f, 0.241491885f, - -0.970772141f, 0.240003022f, - -0.971139158f, 0.238513595f, - -0.971503891f, 0.237023606f, - -0.971866337f, 0.235533059f, - -0.972226497f, 0.234041959f, - -0.972584369f, 0.232550307f, - -0.972939952f, 0.231058108f, - -0.973293246f, 0.229565366f, - -0.973644250f, 0.228072083f, - -0.973992962f, 0.226578264f, - -0.974339383f, 0.225083911f, - -0.974683511f, 0.223589029f, - -0.975025345f, 0.222093621f, - -0.975364885f, 0.220597690f, - -0.975702130f, 0.219101240f, - -0.976037079f, 0.217604275f, - -0.976369731f, 0.216106797f, - -0.976700086f, 0.214608811f, - -0.977028143f, 0.213110320f, - -0.977353900f, 0.211611327f, - -0.977677358f, 0.210111837f, - -0.977998515f, 0.208611852f, - -0.978317371f, 0.207111376f, - -0.978633924f, 0.205610413f, - -0.978948175f, 0.204108966f, - -0.979260123f, 0.202607039f, - -0.979569766f, 0.201104635f, - -0.979877104f, 0.199601758f, - -0.980182136f, 0.198098411f, - -0.980484862f, 0.196594598f, - -0.980785280f, 0.195090322f, - -0.981083391f, 0.193585587f, - -0.981379193f, 0.192080397f, - -0.981672686f, 0.190574755f, - -0.981963869f, 0.189068664f, - -0.982252741f, 0.187562129f, - -0.982539302f, 0.186055152f, - -0.982823551f, 0.184547737f, - -0.983105487f, 0.183039888f, - -0.983385110f, 0.181531608f, - -0.983662419f, 0.180022901f, - -0.983937413f, 0.178513771f, - -0.984210092f, 0.177004220f, - -0.984480455f, 0.175494253f, - -0.984748502f, 0.173983873f, - -0.985014231f, 0.172473084f, - -0.985277642f, 0.170961889f, - -0.985538735f, 0.169450291f, - -0.985797509f, 0.167938295f, - -0.986053963f, 0.166425904f, - -0.986308097f, 0.164913120f, - -0.986559910f, 0.163399949f, - -0.986809402f, 0.161886394f, - -0.987056571f, 0.160372457f, - -0.987301418f, 0.158858143f, - -0.987543942f, 0.157343456f, - -0.987784142f, 0.155828398f, - -0.988022017f, 0.154312973f, - -0.988257568f, 0.152797185f, - -0.988490793f, 0.151281038f, - -0.988721692f, 0.149764535f, - -0.988950265f, 0.148247679f, - -0.989176510f, 0.146730474f, - -0.989400428f, 0.145212925f, - -0.989622017f, 0.143695033f, - -0.989841278f, 0.142176804f, - -0.990058210f, 0.140658239f, - -0.990272812f, 0.139139344f, - -0.990485084f, 0.137620122f, - -0.990695025f, 0.136100575f, - -0.990902635f, 0.134580709f, - -0.991107914f, 0.133060525f, - -0.991310860f, 0.131540029f, - -0.991511473f, 0.130019223f, - -0.991709754f, 0.128498111f, - -0.991905700f, 0.126976696f, - -0.992099313f, 0.125454983f, - -0.992290591f, 0.123932975f, - -0.992479535f, 0.122410675f, - -0.992666142f, 0.120888087f, - -0.992850414f, 0.119365215f, - -0.993032350f, 0.117842062f, - -0.993211949f, 0.116318631f, - -0.993389211f, 0.114794927f, - -0.993564136f, 0.113270952f, - -0.993736722f, 0.111746711f, - -0.993906970f, 0.110222207f, - -0.994074879f, 0.108697444f, - -0.994240449f, 0.107172425f, - -0.994403680f, 0.105647154f, - -0.994564571f, 0.104121634f, - -0.994723121f, 0.102595869f, - -0.994879331f, 0.101069863f, - -0.995033199f, 0.099543619f, - -0.995184727f, 0.098017140f, - -0.995333912f, 0.096490431f, - -0.995480755f, 0.094963495f, - -0.995625256f, 0.093436336f, - -0.995767414f, 0.091908956f, - -0.995907229f, 0.090381361f, - -0.996044701f, 0.088853553f, - -0.996179829f, 0.087325535f, - -0.996312612f, 0.085797312f, - -0.996443051f, 0.084268888f, - -0.996571146f, 0.082740265f, - -0.996696895f, 0.081211447f, - -0.996820299f, 0.079682438f, - -0.996941358f, 0.078153242f, - -0.997060070f, 0.076623861f, - -0.997176437f, 0.075094301f, - -0.997290457f, 0.073564564f, - -0.997402130f, 0.072034653f, - -0.997511456f, 0.070504573f, - -0.997618435f, 0.068974328f, - -0.997723067f, 0.067443920f, - -0.997825350f, 0.065913353f, - -0.997925286f, 0.064382631f, - -0.998022874f, 0.062851758f, - -0.998118113f, 0.061320736f, - -0.998211003f, 0.059789571f, - -0.998301545f, 0.058258265f, - -0.998389737f, 0.056726821f, - -0.998475581f, 0.055195244f, - -0.998559074f, 0.053663538f, - -0.998640218f, 0.052131705f, - -0.998719012f, 0.050599749f, - -0.998795456f, 0.049067674f, - -0.998869550f, 0.047535484f, - -0.998941293f, 0.046003182f, - -0.999010686f, 0.044470772f, - -0.999077728f, 0.042938257f, - -0.999142419f, 0.041405641f, - -0.999204759f, 0.039872928f, - -0.999264747f, 0.038340120f, - -0.999322385f, 0.036807223f, - -0.999377670f, 0.035274239f, - -0.999430605f, 0.033741172f, - -0.999481187f, 0.032208025f, - -0.999529418f, 0.030674803f, - -0.999575296f, 0.029141509f, - -0.999618822f, 0.027608146f, - -0.999659997f, 0.026074718f, - -0.999698819f, 0.024541229f, - -0.999735288f, 0.023007681f, - -0.999769405f, 0.021474080f, - -0.999801170f, 0.019940429f, - -0.999830582f, 0.018406730f, - -0.999857641f, 0.016872988f, - -0.999882347f, 0.015339206f, - -0.999904701f, 0.013805389f, - -0.999924702f, 0.012271538f, - -0.999942350f, 0.010737659f, - -0.999957645f, 0.009203755f, - -0.999970586f, 0.007669829f, - -0.999981175f, 0.006135885f, - -0.999989411f, 0.004601926f, - -0.999995294f, 0.003067957f, - -0.999998823f, 0.001533980f, - -1.000000000f, 0.000000000f, - -0.999998823f, -0.001533980f, - -0.999995294f, -0.003067957f, - -0.999989411f, -0.004601926f, - -0.999981175f, -0.006135885f, - -0.999970586f, -0.007669829f, - -0.999957645f, -0.009203755f, - -0.999942350f, -0.010737659f, - -0.999924702f, -0.012271538f, - -0.999904701f, -0.013805389f, - -0.999882347f, -0.015339206f, - -0.999857641f, -0.016872988f, - -0.999830582f, -0.018406730f, - -0.999801170f, -0.019940429f, - -0.999769405f, -0.021474080f, - -0.999735288f, -0.023007681f, - -0.999698819f, -0.024541229f, - -0.999659997f, -0.026074718f, - -0.999618822f, -0.027608146f, - -0.999575296f, -0.029141509f, - -0.999529418f, -0.030674803f, - -0.999481187f, -0.032208025f, - -0.999430605f, -0.033741172f, - -0.999377670f, -0.035274239f, - -0.999322385f, -0.036807223f, - -0.999264747f, -0.038340120f, - -0.999204759f, -0.039872928f, - -0.999142419f, -0.041405641f, - -0.999077728f, -0.042938257f, - -0.999010686f, -0.044470772f, - -0.998941293f, -0.046003182f, - -0.998869550f, -0.047535484f, - -0.998795456f, -0.049067674f, - -0.998719012f, -0.050599749f, - -0.998640218f, -0.052131705f, - -0.998559074f, -0.053663538f, - -0.998475581f, -0.055195244f, - -0.998389737f, -0.056726821f, - -0.998301545f, -0.058258265f, - -0.998211003f, -0.059789571f, - -0.998118113f, -0.061320736f, - -0.998022874f, -0.062851758f, - -0.997925286f, -0.064382631f, - -0.997825350f, -0.065913353f, - -0.997723067f, -0.067443920f, - -0.997618435f, -0.068974328f, - -0.997511456f, -0.070504573f, - -0.997402130f, -0.072034653f, - -0.997290457f, -0.073564564f, - -0.997176437f, -0.075094301f, - -0.997060070f, -0.076623861f, - -0.996941358f, -0.078153242f, - -0.996820299f, -0.079682438f, - -0.996696895f, -0.081211447f, - -0.996571146f, -0.082740265f, - -0.996443051f, -0.084268888f, - -0.996312612f, -0.085797312f, - -0.996179829f, -0.087325535f, - -0.996044701f, -0.088853553f, - -0.995907229f, -0.090381361f, - -0.995767414f, -0.091908956f, - -0.995625256f, -0.093436336f, - -0.995480755f, -0.094963495f, - -0.995333912f, -0.096490431f, - -0.995184727f, -0.098017140f, - -0.995033199f, -0.099543619f, - -0.994879331f, -0.101069863f, - -0.994723121f, -0.102595869f, - -0.994564571f, -0.104121634f, - -0.994403680f, -0.105647154f, - -0.994240449f, -0.107172425f, - -0.994074879f, -0.108697444f, - -0.993906970f, -0.110222207f, - -0.993736722f, -0.111746711f, - -0.993564136f, -0.113270952f, - -0.993389211f, -0.114794927f, - -0.993211949f, -0.116318631f, - -0.993032350f, -0.117842062f, - -0.992850414f, -0.119365215f, - -0.992666142f, -0.120888087f, - -0.992479535f, -0.122410675f, - -0.992290591f, -0.123932975f, - -0.992099313f, -0.125454983f, - -0.991905700f, -0.126976696f, - -0.991709754f, -0.128498111f, - -0.991511473f, -0.130019223f, - -0.991310860f, -0.131540029f, - -0.991107914f, -0.133060525f, - -0.990902635f, -0.134580709f, - -0.990695025f, -0.136100575f, - -0.990485084f, -0.137620122f, - -0.990272812f, -0.139139344f, - -0.990058210f, -0.140658239f, - -0.989841278f, -0.142176804f, - -0.989622017f, -0.143695033f, - -0.989400428f, -0.145212925f, - -0.989176510f, -0.146730474f, - -0.988950265f, -0.148247679f, - -0.988721692f, -0.149764535f, - -0.988490793f, -0.151281038f, - -0.988257568f, -0.152797185f, - -0.988022017f, -0.154312973f, - -0.987784142f, -0.155828398f, - -0.987543942f, -0.157343456f, - -0.987301418f, -0.158858143f, - -0.987056571f, -0.160372457f, - -0.986809402f, -0.161886394f, - -0.986559910f, -0.163399949f, - -0.986308097f, -0.164913120f, - -0.986053963f, -0.166425904f, - -0.985797509f, -0.167938295f, - -0.985538735f, -0.169450291f, - -0.985277642f, -0.170961889f, - -0.985014231f, -0.172473084f, - -0.984748502f, -0.173983873f, - -0.984480455f, -0.175494253f, - -0.984210092f, -0.177004220f, - -0.983937413f, -0.178513771f, - -0.983662419f, -0.180022901f, - -0.983385110f, -0.181531608f, - -0.983105487f, -0.183039888f, - -0.982823551f, -0.184547737f, - -0.982539302f, -0.186055152f, - -0.982252741f, -0.187562129f, - -0.981963869f, -0.189068664f, - -0.981672686f, -0.190574755f, - -0.981379193f, -0.192080397f, - -0.981083391f, -0.193585587f, - -0.980785280f, -0.195090322f, - -0.980484862f, -0.196594598f, - -0.980182136f, -0.198098411f, - -0.979877104f, -0.199601758f, - -0.979569766f, -0.201104635f, - -0.979260123f, -0.202607039f, - -0.978948175f, -0.204108966f, - -0.978633924f, -0.205610413f, - -0.978317371f, -0.207111376f, - -0.977998515f, -0.208611852f, - -0.977677358f, -0.210111837f, - -0.977353900f, -0.211611327f, - -0.977028143f, -0.213110320f, - -0.976700086f, -0.214608811f, - -0.976369731f, -0.216106797f, - -0.976037079f, -0.217604275f, - -0.975702130f, -0.219101240f, - -0.975364885f, -0.220597690f, - -0.975025345f, -0.222093621f, - -0.974683511f, -0.223589029f, - -0.974339383f, -0.225083911f, - -0.973992962f, -0.226578264f, - -0.973644250f, -0.228072083f, - -0.973293246f, -0.229565366f, - -0.972939952f, -0.231058108f, - -0.972584369f, -0.232550307f, - -0.972226497f, -0.234041959f, - -0.971866337f, -0.235533059f, - -0.971503891f, -0.237023606f, - -0.971139158f, -0.238513595f, - -0.970772141f, -0.240003022f, - -0.970402839f, -0.241491885f, - -0.970031253f, -0.242980180f, - -0.969657385f, -0.244467903f, - -0.969281235f, -0.245955050f, - -0.968902805f, -0.247441619f, - -0.968522094f, -0.248927606f, - -0.968139105f, -0.250413007f, - -0.967753837f, -0.251897818f, - -0.967366292f, -0.253382037f, - -0.966976471f, -0.254865660f, - -0.966584374f, -0.256348682f, - -0.966190003f, -0.257831102f, - -0.965793359f, -0.259312915f, - -0.965394442f, -0.260794118f, - -0.964993253f, -0.262274707f, - -0.964589793f, -0.263754679f, - -0.964184064f, -0.265234030f, - -0.963776066f, -0.266712757f, - -0.963365800f, -0.268190857f, - -0.962953267f, -0.269668326f, - -0.962538468f, -0.271145160f, - -0.962121404f, -0.272621355f, - -0.961702077f, -0.274096910f, - -0.961280486f, -0.275571819f, - -0.960856633f, -0.277046080f, - -0.960430519f, -0.278519689f, - -0.960002146f, -0.279992643f, - -0.959571513f, -0.281464938f, - -0.959138622f, -0.282936570f, - -0.958703475f, -0.284407537f, - -0.958266071f, -0.285877835f, - -0.957826413f, -0.287347460f, - -0.957384501f, -0.288816408f, - -0.956940336f, -0.290284677f, - -0.956493919f, -0.291752263f, - -0.956045251f, -0.293219163f, - -0.955594334f, -0.294685372f, - -0.955141168f, -0.296150888f, - -0.954685755f, -0.297615707f, - -0.954228095f, -0.299079826f, - -0.953768190f, -0.300543241f, - -0.953306040f, -0.302005949f, - -0.952841648f, -0.303467947f, - -0.952375013f, -0.304929230f, - -0.951906137f, -0.306389795f, - -0.951435021f, -0.307849640f, - -0.950961666f, -0.309308760f, - -0.950486074f, -0.310767153f, - -0.950008245f, -0.312224814f, - -0.949528181f, -0.313681740f, - -0.949045882f, -0.315137929f, - -0.948561350f, -0.316593376f, - -0.948074586f, -0.318048077f, - -0.947585591f, -0.319502031f, - -0.947094366f, -0.320955232f, - -0.946600913f, -0.322407679f, - -0.946105232f, -0.323859367f, - -0.945607325f, -0.325310292f, - -0.945107193f, -0.326760452f, - -0.944604837f, -0.328209844f, - -0.944100258f, -0.329658463f, - -0.943593458f, -0.331106306f, - -0.943084437f, -0.332553370f, - -0.942573198f, -0.333999651f, - -0.942059740f, -0.335445147f, - -0.941544065f, -0.336889853f, - -0.941026175f, -0.338333767f, - -0.940506071f, -0.339776884f, - -0.939983753f, -0.341219202f, - -0.939459224f, -0.342660717f, - -0.938932484f, -0.344101426f, - -0.938403534f, -0.345541325f, - -0.937872376f, -0.346980411f, - -0.937339012f, -0.348418680f, - -0.936803442f, -0.349856130f, - -0.936265667f, -0.351292756f, - -0.935725689f, -0.352728556f, - -0.935183510f, -0.354163525f, - -0.934639130f, -0.355597662f, - -0.934092550f, -0.357030961f, - -0.933543773f, -0.358463421f, - -0.932992799f, -0.359895037f, - -0.932439629f, -0.361325806f, - -0.931884266f, -0.362755724f, - -0.931326709f, -0.364184790f, - -0.930766961f, -0.365612998f, - -0.930205023f, -0.367040346f, - -0.929640896f, -0.368466830f, - -0.929074581f, -0.369892447f, - -0.928506080f, -0.371317194f, - -0.927935395f, -0.372741067f, - -0.927362526f, -0.374164063f, - -0.926787474f, -0.375586178f, - -0.926210242f, -0.377007410f, - -0.925630831f, -0.378427755f, - -0.925049241f, -0.379847209f, - -0.924465474f, -0.381265769f, - -0.923879533f, -0.382683432f, - -0.923291417f, -0.384100195f, - -0.922701128f, -0.385516054f, - -0.922108669f, -0.386931006f, - -0.921514039f, -0.388345047f, - -0.920917242f, -0.389758174f, - -0.920318277f, -0.391170384f, - -0.919717146f, -0.392581674f, - -0.919113852f, -0.393992040f, - -0.918508394f, -0.395401479f, - -0.917900776f, -0.396809987f, - -0.917290997f, -0.398217562f, - -0.916679060f, -0.399624200f, - -0.916064966f, -0.401029897f, - -0.915448716f, -0.402434651f, - -0.914830312f, -0.403838458f, - -0.914209756f, -0.405241314f, - -0.913587048f, -0.406643217f, - -0.912962190f, -0.408044163f, - -0.912335185f, -0.409444149f, - -0.911706032f, -0.410843171f, - -0.911074734f, -0.412241227f, - -0.910441292f, -0.413638312f, - -0.909805708f, -0.415034424f, - -0.909167983f, -0.416429560f, - -0.908528119f, -0.417823716f, - -0.907886116f, -0.419216888f, - -0.907241978f, -0.420609074f, - -0.906595705f, -0.422000271f, - -0.905947298f, -0.423390474f, - -0.905296759f, -0.424779681f, - -0.904644091f, -0.426167889f, - -0.903989293f, -0.427555093f, - -0.903332368f, -0.428941292f, - -0.902673318f, -0.430326481f, - -0.902012144f, -0.431710658f, - -0.901348847f, -0.433093819f, - -0.900683429f, -0.434475961f, - -0.900015892f, -0.435857080f, - -0.899346237f, -0.437237174f, - -0.898674466f, -0.438616239f, - -0.898000580f, -0.439994271f, - -0.897324581f, -0.441371269f, - -0.896646470f, -0.442747228f, - -0.895966250f, -0.444122145f, - -0.895283921f, -0.445496017f, - -0.894599486f, -0.446868840f, - -0.893912945f, -0.448240612f, - -0.893224301f, -0.449611330f, - -0.892533555f, -0.450980989f, - -0.891840709f, -0.452349587f, - -0.891145765f, -0.453717121f, - -0.890448723f, -0.455083587f, - -0.889749586f, -0.456448982f, - -0.889048356f, -0.457813304f, - -0.888345033f, -0.459176548f, - -0.887639620f, -0.460538711f, - -0.886932119f, -0.461899791f, - -0.886222530f, -0.463259784f, - -0.885510856f, -0.464618686f, - -0.884797098f, -0.465976496f, - -0.884081259f, -0.467333209f, - -0.883363339f, -0.468688822f, - -0.882643340f, -0.470043332f, - -0.881921264f, -0.471396737f, - -0.881197113f, -0.472749032f, - -0.880470889f, -0.474100215f, - -0.879742593f, -0.475450282f, - -0.879012226f, -0.476799230f, - -0.878279792f, -0.478147056f, - -0.877545290f, -0.479493758f, - -0.876808724f, -0.480839331f, - -0.876070094f, -0.482183772f, - -0.875329403f, -0.483527079f, - -0.874586652f, -0.484869248f, - -0.873841843f, -0.486210276f, - -0.873094978f, -0.487550160f, - -0.872346059f, -0.488888897f, - -0.871595087f, -0.490226483f, - -0.870842063f, -0.491562916f, - -0.870086991f, -0.492898192f, - -0.869329871f, -0.494232309f, - -0.868570706f, -0.495565262f, - -0.867809497f, -0.496897049f, - -0.867046246f, -0.498227667f, - -0.866280954f, -0.499557113f, - -0.865513624f, -0.500885383f, - -0.864744258f, -0.502212474f, - -0.863972856f, -0.503538384f, - -0.863199422f, -0.504863109f, - -0.862423956f, -0.506186645f, - -0.861646461f, -0.507508991f, - -0.860866939f, -0.508830143f, - -0.860085390f, -0.510150097f, - -0.859301818f, -0.511468850f, - -0.858516224f, -0.512786401f, - -0.857728610f, -0.514102744f, - -0.856938977f, -0.515417878f, - -0.856147328f, -0.516731799f, - -0.855353665f, -0.518044504f, - -0.854557988f, -0.519355990f, - -0.853760301f, -0.520666254f, - -0.852960605f, -0.521975293f, - -0.852158902f, -0.523283103f, - -0.851355193f, -0.524589683f, - -0.850549481f, -0.525895027f, - -0.849741768f, -0.527199135f, - -0.848932055f, -0.528502002f, - -0.848120345f, -0.529803625f, - -0.847306639f, -0.531104001f, - -0.846490939f, -0.532403128f, - -0.845673247f, -0.533701002f, - -0.844853565f, -0.534997620f, - -0.844031895f, -0.536292979f, - -0.843208240f, -0.537587076f, - -0.842382600f, -0.538879909f, - -0.841554977f, -0.540171473f, - -0.840725375f, -0.541461766f, - -0.839893794f, -0.542750785f, - -0.839060237f, -0.544038527f, - -0.838224706f, -0.545324988f, - -0.837387202f, -0.546610167f, - -0.836547727f, -0.547894059f, - -0.835706284f, -0.549176662f, - -0.834862875f, -0.550457973f, - -0.834017501f, -0.551737988f, - -0.833170165f, -0.553016706f, - -0.832320868f, -0.554294121f, - -0.831469612f, -0.555570233f, - -0.830616400f, -0.556845037f, - -0.829761234f, -0.558118531f, - -0.828904115f, -0.559390712f, - -0.828045045f, -0.560661576f, - -0.827184027f, -0.561931121f, - -0.826321063f, -0.563199344f, - -0.825456154f, -0.564466242f, - -0.824589303f, -0.565731811f, - -0.823720511f, -0.566996049f, - -0.822849781f, -0.568258953f, - -0.821977115f, -0.569520519f, - -0.821102515f, -0.570780746f, - -0.820225983f, -0.572039629f, - -0.819347520f, -0.573297167f, - -0.818467130f, -0.574553355f, - -0.817584813f, -0.575808191f, - -0.816700573f, -0.577061673f, - -0.815814411f, -0.578313796f, - -0.814926329f, -0.579564559f, - -0.814036330f, -0.580813958f, - -0.813144415f, -0.582061990f, - -0.812250587f, -0.583308653f, - -0.811354847f, -0.584553943f, - -0.810457198f, -0.585797857f, - -0.809557642f, -0.587040394f, - -0.808656182f, -0.588281548f, - -0.807752818f, -0.589521319f, - -0.806847554f, -0.590759702f, - -0.805940391f, -0.591996695f, - -0.805031331f, -0.593232295f, - -0.804120377f, -0.594466499f, - -0.803207531f, -0.595699304f, - -0.802292796f, -0.596930708f, - -0.801376172f, -0.598160707f, - -0.800457662f, -0.599389298f, - -0.799537269f, -0.600616479f, - -0.798614995f, -0.601842247f, - -0.797690841f, -0.603066599f, - -0.796764810f, -0.604289531f, - -0.795836905f, -0.605511041f, - -0.794907126f, -0.606731127f, - -0.793975478f, -0.607949785f, - -0.793041960f, -0.609167012f, - -0.792106577f, -0.610382806f, - -0.791169330f, -0.611597164f, - -0.790230221f, -0.612810082f, - -0.789289253f, -0.614021559f, - -0.788346428f, -0.615231591f, - -0.787401747f, -0.616440175f, - -0.786455214f, -0.617647308f, - -0.785506830f, -0.618852988f, - -0.784556597f, -0.620057212f, - -0.783604519f, -0.621259977f, - -0.782650596f, -0.622461279f, - -0.781694832f, -0.623661118f, - -0.780737229f, -0.624859488f, - -0.779777788f, -0.626056388f, - -0.778816512f, -0.627251815f, - -0.777853404f, -0.628445767f, - -0.776888466f, -0.629638239f, - -0.775921699f, -0.630829230f, - -0.774953107f, -0.632018736f, - -0.773982691f, -0.633206755f, - -0.773010453f, -0.634393284f, - -0.772036397f, -0.635578320f, - -0.771060524f, -0.636761861f, - -0.770082837f, -0.637943904f, - -0.769103338f, -0.639124445f, - -0.768122029f, -0.640303482f, - -0.767138912f, -0.641481013f, - -0.766153990f, -0.642657034f, - -0.765167266f, -0.643831543f, - -0.764178741f, -0.645004537f, - -0.763188417f, -0.646176013f, - -0.762196298f, -0.647345969f, - -0.761202385f, -0.648514401f, - -0.760206682f, -0.649681307f, - -0.759209189f, -0.650846685f, - -0.758209910f, -0.652010531f, - -0.757208847f, -0.653172843f, - -0.756206001f, -0.654333618f, - -0.755201377f, -0.655492853f, - -0.754194975f, -0.656650546f, - -0.753186799f, -0.657806693f, - -0.752176850f, -0.658961293f, - -0.751165132f, -0.660114342f, - -0.750151646f, -0.661265838f, - -0.749136395f, -0.662415778f, - -0.748119380f, -0.663564159f, - -0.747100606f, -0.664710978f, - -0.746080074f, -0.665856234f, - -0.745057785f, -0.666999922f, - -0.744033744f, -0.668142041f, - -0.743007952f, -0.669282588f, - -0.741980412f, -0.670421560f, - -0.740951125f, -0.671558955f, - -0.739920095f, -0.672694769f, - -0.738887324f, -0.673829000f, - -0.737852815f, -0.674961646f, - -0.736816569f, -0.676092704f, - -0.735778589f, -0.677222170f, - -0.734738878f, -0.678350043f, - -0.733697438f, -0.679476320f, - -0.732654272f, -0.680600998f, - -0.731609381f, -0.681724074f, - -0.730562769f, -0.682845546f, - -0.729514438f, -0.683965412f, - -0.728464390f, -0.685083668f, - -0.727412629f, -0.686200312f, - -0.726359155f, -0.687315341f, - -0.725303972f, -0.688428753f, - -0.724247083f, -0.689540545f, - -0.723188489f, -0.690650714f, - -0.722128194f, -0.691759258f, - -0.721066199f, -0.692866175f, - -0.720002508f, -0.693971461f, - -0.718937122f, -0.695075114f, - -0.717870045f, -0.696177131f, - -0.716801279f, -0.697277511f, - -0.715730825f, -0.698376249f, - -0.714658688f, -0.699473345f, - -0.713584869f, -0.700568794f, - -0.712509371f, -0.701662595f, - -0.711432196f, -0.702754744f, - -0.710353347f, -0.703845241f, - -0.709272826f, -0.704934080f, - -0.708190637f, -0.706021261f, - -0.707106781f, -0.707106781f, - -0.706021261f, -0.708190637f, - -0.704934080f, -0.709272826f, - -0.703845241f, -0.710353347f, - -0.702754744f, -0.711432196f, - -0.701662595f, -0.712509371f, - -0.700568794f, -0.713584869f, - -0.699473345f, -0.714658688f, - -0.698376249f, -0.715730825f, - -0.697277511f, -0.716801279f, - -0.696177131f, -0.717870045f, - -0.695075114f, -0.718937122f, - -0.693971461f, -0.720002508f, - -0.692866175f, -0.721066199f, - -0.691759258f, -0.722128194f, - -0.690650714f, -0.723188489f, - -0.689540545f, -0.724247083f, - -0.688428753f, -0.725303972f, - -0.687315341f, -0.726359155f, - -0.686200312f, -0.727412629f, - -0.685083668f, -0.728464390f, - -0.683965412f, -0.729514438f, - -0.682845546f, -0.730562769f, - -0.681724074f, -0.731609381f, - -0.680600998f, -0.732654272f, - -0.679476320f, -0.733697438f, - -0.678350043f, -0.734738878f, - -0.677222170f, -0.735778589f, - -0.676092704f, -0.736816569f, - -0.674961646f, -0.737852815f, - -0.673829000f, -0.738887324f, - -0.672694769f, -0.739920095f, - -0.671558955f, -0.740951125f, - -0.670421560f, -0.741980412f, - -0.669282588f, -0.743007952f, - -0.668142041f, -0.744033744f, - -0.666999922f, -0.745057785f, - -0.665856234f, -0.746080074f, - -0.664710978f, -0.747100606f, - -0.663564159f, -0.748119380f, - -0.662415778f, -0.749136395f, - -0.661265838f, -0.750151646f, - -0.660114342f, -0.751165132f, - -0.658961293f, -0.752176850f, - -0.657806693f, -0.753186799f, - -0.656650546f, -0.754194975f, - -0.655492853f, -0.755201377f, - -0.654333618f, -0.756206001f, - -0.653172843f, -0.757208847f, - -0.652010531f, -0.758209910f, - -0.650846685f, -0.759209189f, - -0.649681307f, -0.760206682f, - -0.648514401f, -0.761202385f, - -0.647345969f, -0.762196298f, - -0.646176013f, -0.763188417f, - -0.645004537f, -0.764178741f, - -0.643831543f, -0.765167266f, - -0.642657034f, -0.766153990f, - -0.641481013f, -0.767138912f, - -0.640303482f, -0.768122029f, - -0.639124445f, -0.769103338f, - -0.637943904f, -0.770082837f, - -0.636761861f, -0.771060524f, - -0.635578320f, -0.772036397f, - -0.634393284f, -0.773010453f, - -0.633206755f, -0.773982691f, - -0.632018736f, -0.774953107f, - -0.630829230f, -0.775921699f, - -0.629638239f, -0.776888466f, - -0.628445767f, -0.777853404f, - -0.627251815f, -0.778816512f, - -0.626056388f, -0.779777788f, - -0.624859488f, -0.780737229f, - -0.623661118f, -0.781694832f, - -0.622461279f, -0.782650596f, - -0.621259977f, -0.783604519f, - -0.620057212f, -0.784556597f, - -0.618852988f, -0.785506830f, - -0.617647308f, -0.786455214f, - -0.616440175f, -0.787401747f, - -0.615231591f, -0.788346428f, - -0.614021559f, -0.789289253f, - -0.612810082f, -0.790230221f, - -0.611597164f, -0.791169330f, - -0.610382806f, -0.792106577f, - -0.609167012f, -0.793041960f, - -0.607949785f, -0.793975478f, - -0.606731127f, -0.794907126f, - -0.605511041f, -0.795836905f, - -0.604289531f, -0.796764810f, - -0.603066599f, -0.797690841f, - -0.601842247f, -0.798614995f, - -0.600616479f, -0.799537269f, - -0.599389298f, -0.800457662f, - -0.598160707f, -0.801376172f, - -0.596930708f, -0.802292796f, - -0.595699304f, -0.803207531f, - -0.594466499f, -0.804120377f, - -0.593232295f, -0.805031331f, - -0.591996695f, -0.805940391f, - -0.590759702f, -0.806847554f, - -0.589521319f, -0.807752818f, - -0.588281548f, -0.808656182f, - -0.587040394f, -0.809557642f, - -0.585797857f, -0.810457198f, - -0.584553943f, -0.811354847f, - -0.583308653f, -0.812250587f, - -0.582061990f, -0.813144415f, - -0.580813958f, -0.814036330f, - -0.579564559f, -0.814926329f, - -0.578313796f, -0.815814411f, - -0.577061673f, -0.816700573f, - -0.575808191f, -0.817584813f, - -0.574553355f, -0.818467130f, - -0.573297167f, -0.819347520f, - -0.572039629f, -0.820225983f, - -0.570780746f, -0.821102515f, - -0.569520519f, -0.821977115f, - -0.568258953f, -0.822849781f, - -0.566996049f, -0.823720511f, - -0.565731811f, -0.824589303f, - -0.564466242f, -0.825456154f, - -0.563199344f, -0.826321063f, - -0.561931121f, -0.827184027f, - -0.560661576f, -0.828045045f, - -0.559390712f, -0.828904115f, - -0.558118531f, -0.829761234f, - -0.556845037f, -0.830616400f, - -0.555570233f, -0.831469612f, - -0.554294121f, -0.832320868f, - -0.553016706f, -0.833170165f, - -0.551737988f, -0.834017501f, - -0.550457973f, -0.834862875f, - -0.549176662f, -0.835706284f, - -0.547894059f, -0.836547727f, - -0.546610167f, -0.837387202f, - -0.545324988f, -0.838224706f, - -0.544038527f, -0.839060237f, - -0.542750785f, -0.839893794f, - -0.541461766f, -0.840725375f, - -0.540171473f, -0.841554977f, - -0.538879909f, -0.842382600f, - -0.537587076f, -0.843208240f, - -0.536292979f, -0.844031895f, - -0.534997620f, -0.844853565f, - -0.533701002f, -0.845673247f, - -0.532403128f, -0.846490939f, - -0.531104001f, -0.847306639f, - -0.529803625f, -0.848120345f, - -0.528502002f, -0.848932055f, - -0.527199135f, -0.849741768f, - -0.525895027f, -0.850549481f, - -0.524589683f, -0.851355193f, - -0.523283103f, -0.852158902f, - -0.521975293f, -0.852960605f, - -0.520666254f, -0.853760301f, - -0.519355990f, -0.854557988f, - -0.518044504f, -0.855353665f, - -0.516731799f, -0.856147328f, - -0.515417878f, -0.856938977f, - -0.514102744f, -0.857728610f, - -0.512786401f, -0.858516224f, - -0.511468850f, -0.859301818f, - -0.510150097f, -0.860085390f, - -0.508830143f, -0.860866939f, - -0.507508991f, -0.861646461f, - -0.506186645f, -0.862423956f, - -0.504863109f, -0.863199422f, - -0.503538384f, -0.863972856f, - -0.502212474f, -0.864744258f, - -0.500885383f, -0.865513624f, - -0.499557113f, -0.866280954f, - -0.498227667f, -0.867046246f, - -0.496897049f, -0.867809497f, - -0.495565262f, -0.868570706f, - -0.494232309f, -0.869329871f, - -0.492898192f, -0.870086991f, - -0.491562916f, -0.870842063f, - -0.490226483f, -0.871595087f, - -0.488888897f, -0.872346059f, - -0.487550160f, -0.873094978f, - -0.486210276f, -0.873841843f, - -0.484869248f, -0.874586652f, - -0.483527079f, -0.875329403f, - -0.482183772f, -0.876070094f, - -0.480839331f, -0.876808724f, - -0.479493758f, -0.877545290f, - -0.478147056f, -0.878279792f, - -0.476799230f, -0.879012226f, - -0.475450282f, -0.879742593f, - -0.474100215f, -0.880470889f, - -0.472749032f, -0.881197113f, - -0.471396737f, -0.881921264f, - -0.470043332f, -0.882643340f, - -0.468688822f, -0.883363339f, - -0.467333209f, -0.884081259f, - -0.465976496f, -0.884797098f, - -0.464618686f, -0.885510856f, - -0.463259784f, -0.886222530f, - -0.461899791f, -0.886932119f, - -0.460538711f, -0.887639620f, - -0.459176548f, -0.888345033f, - -0.457813304f, -0.889048356f, - -0.456448982f, -0.889749586f, - -0.455083587f, -0.890448723f, - -0.453717121f, -0.891145765f, - -0.452349587f, -0.891840709f, - -0.450980989f, -0.892533555f, - -0.449611330f, -0.893224301f, - -0.448240612f, -0.893912945f, - -0.446868840f, -0.894599486f, - -0.445496017f, -0.895283921f, - -0.444122145f, -0.895966250f, - -0.442747228f, -0.896646470f, - -0.441371269f, -0.897324581f, - -0.439994271f, -0.898000580f, - -0.438616239f, -0.898674466f, - -0.437237174f, -0.899346237f, - -0.435857080f, -0.900015892f, - -0.434475961f, -0.900683429f, - -0.433093819f, -0.901348847f, - -0.431710658f, -0.902012144f, - -0.430326481f, -0.902673318f, - -0.428941292f, -0.903332368f, - -0.427555093f, -0.903989293f, - -0.426167889f, -0.904644091f, - -0.424779681f, -0.905296759f, - -0.423390474f, -0.905947298f, - -0.422000271f, -0.906595705f, - -0.420609074f, -0.907241978f, - -0.419216888f, -0.907886116f, - -0.417823716f, -0.908528119f, - -0.416429560f, -0.909167983f, - -0.415034424f, -0.909805708f, - -0.413638312f, -0.910441292f, - -0.412241227f, -0.911074734f, - -0.410843171f, -0.911706032f, - -0.409444149f, -0.912335185f, - -0.408044163f, -0.912962190f, - -0.406643217f, -0.913587048f, - -0.405241314f, -0.914209756f, - -0.403838458f, -0.914830312f, - -0.402434651f, -0.915448716f, - -0.401029897f, -0.916064966f, - -0.399624200f, -0.916679060f, - -0.398217562f, -0.917290997f, - -0.396809987f, -0.917900776f, - -0.395401479f, -0.918508394f, - -0.393992040f, -0.919113852f, - -0.392581674f, -0.919717146f, - -0.391170384f, -0.920318277f, - -0.389758174f, -0.920917242f, - -0.388345047f, -0.921514039f, - -0.386931006f, -0.922108669f, - -0.385516054f, -0.922701128f, - -0.384100195f, -0.923291417f, - -0.382683432f, -0.923879533f, - -0.381265769f, -0.924465474f, - -0.379847209f, -0.925049241f, - -0.378427755f, -0.925630831f, - -0.377007410f, -0.926210242f, - -0.375586178f, -0.926787474f, - -0.374164063f, -0.927362526f, - -0.372741067f, -0.927935395f, - -0.371317194f, -0.928506080f, - -0.369892447f, -0.929074581f, - -0.368466830f, -0.929640896f, - -0.367040346f, -0.930205023f, - -0.365612998f, -0.930766961f, - -0.364184790f, -0.931326709f, - -0.362755724f, -0.931884266f, - -0.361325806f, -0.932439629f, - -0.359895037f, -0.932992799f, - -0.358463421f, -0.933543773f, - -0.357030961f, -0.934092550f, - -0.355597662f, -0.934639130f, - -0.354163525f, -0.935183510f, - -0.352728556f, -0.935725689f, - -0.351292756f, -0.936265667f, - -0.349856130f, -0.936803442f, - -0.348418680f, -0.937339012f, - -0.346980411f, -0.937872376f, - -0.345541325f, -0.938403534f, - -0.344101426f, -0.938932484f, - -0.342660717f, -0.939459224f, - -0.341219202f, -0.939983753f, - -0.339776884f, -0.940506071f, - -0.338333767f, -0.941026175f, - -0.336889853f, -0.941544065f, - -0.335445147f, -0.942059740f, - -0.333999651f, -0.942573198f, - -0.332553370f, -0.943084437f, - -0.331106306f, -0.943593458f, - -0.329658463f, -0.944100258f, - -0.328209844f, -0.944604837f, - -0.326760452f, -0.945107193f, - -0.325310292f, -0.945607325f, - -0.323859367f, -0.946105232f, - -0.322407679f, -0.946600913f, - -0.320955232f, -0.947094366f, - -0.319502031f, -0.947585591f, - -0.318048077f, -0.948074586f, - -0.316593376f, -0.948561350f, - -0.315137929f, -0.949045882f, - -0.313681740f, -0.949528181f, - -0.312224814f, -0.950008245f, - -0.310767153f, -0.950486074f, - -0.309308760f, -0.950961666f, - -0.307849640f, -0.951435021f, - -0.306389795f, -0.951906137f, - -0.304929230f, -0.952375013f, - -0.303467947f, -0.952841648f, - -0.302005949f, -0.953306040f, - -0.300543241f, -0.953768190f, - -0.299079826f, -0.954228095f, - -0.297615707f, -0.954685755f, - -0.296150888f, -0.955141168f, - -0.294685372f, -0.955594334f, - -0.293219163f, -0.956045251f, - -0.291752263f, -0.956493919f, - -0.290284677f, -0.956940336f, - -0.288816408f, -0.957384501f, - -0.287347460f, -0.957826413f, - -0.285877835f, -0.958266071f, - -0.284407537f, -0.958703475f, - -0.282936570f, -0.959138622f, - -0.281464938f, -0.959571513f, - -0.279992643f, -0.960002146f, - -0.278519689f, -0.960430519f, - -0.277046080f, -0.960856633f, - -0.275571819f, -0.961280486f, - -0.274096910f, -0.961702077f, - -0.272621355f, -0.962121404f, - -0.271145160f, -0.962538468f, - -0.269668326f, -0.962953267f, - -0.268190857f, -0.963365800f, - -0.266712757f, -0.963776066f, - -0.265234030f, -0.964184064f, - -0.263754679f, -0.964589793f, - -0.262274707f, -0.964993253f, - -0.260794118f, -0.965394442f, - -0.259312915f, -0.965793359f, - -0.257831102f, -0.966190003f, - -0.256348682f, -0.966584374f, - -0.254865660f, -0.966976471f, - -0.253382037f, -0.967366292f, - -0.251897818f, -0.967753837f, - -0.250413007f, -0.968139105f, - -0.248927606f, -0.968522094f, - -0.247441619f, -0.968902805f, - -0.245955050f, -0.969281235f, - -0.244467903f, -0.969657385f, - -0.242980180f, -0.970031253f, - -0.241491885f, -0.970402839f, - -0.240003022f, -0.970772141f, - -0.238513595f, -0.971139158f, - -0.237023606f, -0.971503891f, - -0.235533059f, -0.971866337f, - -0.234041959f, -0.972226497f, - -0.232550307f, -0.972584369f, - -0.231058108f, -0.972939952f, - -0.229565366f, -0.973293246f, - -0.228072083f, -0.973644250f, - -0.226578264f, -0.973992962f, - -0.225083911f, -0.974339383f, - -0.223589029f, -0.974683511f, - -0.222093621f, -0.975025345f, - -0.220597690f, -0.975364885f, - -0.219101240f, -0.975702130f, - -0.217604275f, -0.976037079f, - -0.216106797f, -0.976369731f, - -0.214608811f, -0.976700086f, - -0.213110320f, -0.977028143f, - -0.211611327f, -0.977353900f, - -0.210111837f, -0.977677358f, - -0.208611852f, -0.977998515f, - -0.207111376f, -0.978317371f, - -0.205610413f, -0.978633924f, - -0.204108966f, -0.978948175f, - -0.202607039f, -0.979260123f, - -0.201104635f, -0.979569766f, - -0.199601758f, -0.979877104f, - -0.198098411f, -0.980182136f, - -0.196594598f, -0.980484862f, - -0.195090322f, -0.980785280f, - -0.193585587f, -0.981083391f, - -0.192080397f, -0.981379193f, - -0.190574755f, -0.981672686f, - -0.189068664f, -0.981963869f, - -0.187562129f, -0.982252741f, - -0.186055152f, -0.982539302f, - -0.184547737f, -0.982823551f, - -0.183039888f, -0.983105487f, - -0.181531608f, -0.983385110f, - -0.180022901f, -0.983662419f, - -0.178513771f, -0.983937413f, - -0.177004220f, -0.984210092f, - -0.175494253f, -0.984480455f, - -0.173983873f, -0.984748502f, - -0.172473084f, -0.985014231f, - -0.170961889f, -0.985277642f, - -0.169450291f, -0.985538735f, - -0.167938295f, -0.985797509f, - -0.166425904f, -0.986053963f, - -0.164913120f, -0.986308097f, - -0.163399949f, -0.986559910f, - -0.161886394f, -0.986809402f, - -0.160372457f, -0.987056571f, - -0.158858143f, -0.987301418f, - -0.157343456f, -0.987543942f, - -0.155828398f, -0.987784142f, - -0.154312973f, -0.988022017f, - -0.152797185f, -0.988257568f, - -0.151281038f, -0.988490793f, - -0.149764535f, -0.988721692f, - -0.148247679f, -0.988950265f, - -0.146730474f, -0.989176510f, - -0.145212925f, -0.989400428f, - -0.143695033f, -0.989622017f, - -0.142176804f, -0.989841278f, - -0.140658239f, -0.990058210f, - -0.139139344f, -0.990272812f, - -0.137620122f, -0.990485084f, - -0.136100575f, -0.990695025f, - -0.134580709f, -0.990902635f, - -0.133060525f, -0.991107914f, - -0.131540029f, -0.991310860f, - -0.130019223f, -0.991511473f, - -0.128498111f, -0.991709754f, - -0.126976696f, -0.991905700f, - -0.125454983f, -0.992099313f, - -0.123932975f, -0.992290591f, - -0.122410675f, -0.992479535f, - -0.120888087f, -0.992666142f, - -0.119365215f, -0.992850414f, - -0.117842062f, -0.993032350f, - -0.116318631f, -0.993211949f, - -0.114794927f, -0.993389211f, - -0.113270952f, -0.993564136f, - -0.111746711f, -0.993736722f, - -0.110222207f, -0.993906970f, - -0.108697444f, -0.994074879f, - -0.107172425f, -0.994240449f, - -0.105647154f, -0.994403680f, - -0.104121634f, -0.994564571f, - -0.102595869f, -0.994723121f, - -0.101069863f, -0.994879331f, - -0.099543619f, -0.995033199f, - -0.098017140f, -0.995184727f, - -0.096490431f, -0.995333912f, - -0.094963495f, -0.995480755f, - -0.093436336f, -0.995625256f, - -0.091908956f, -0.995767414f, - -0.090381361f, -0.995907229f, - -0.088853553f, -0.996044701f, - -0.087325535f, -0.996179829f, - -0.085797312f, -0.996312612f, - -0.084268888f, -0.996443051f, - -0.082740265f, -0.996571146f, - -0.081211447f, -0.996696895f, - -0.079682438f, -0.996820299f, - -0.078153242f, -0.996941358f, - -0.076623861f, -0.997060070f, - -0.075094301f, -0.997176437f, - -0.073564564f, -0.997290457f, - -0.072034653f, -0.997402130f, - -0.070504573f, -0.997511456f, - -0.068974328f, -0.997618435f, - -0.067443920f, -0.997723067f, - -0.065913353f, -0.997825350f, - -0.064382631f, -0.997925286f, - -0.062851758f, -0.998022874f, - -0.061320736f, -0.998118113f, - -0.059789571f, -0.998211003f, - -0.058258265f, -0.998301545f, - -0.056726821f, -0.998389737f, - -0.055195244f, -0.998475581f, - -0.053663538f, -0.998559074f, - -0.052131705f, -0.998640218f, - -0.050599749f, -0.998719012f, - -0.049067674f, -0.998795456f, - -0.047535484f, -0.998869550f, - -0.046003182f, -0.998941293f, - -0.044470772f, -0.999010686f, - -0.042938257f, -0.999077728f, - -0.041405641f, -0.999142419f, - -0.039872928f, -0.999204759f, - -0.038340120f, -0.999264747f, - -0.036807223f, -0.999322385f, - -0.035274239f, -0.999377670f, - -0.033741172f, -0.999430605f, - -0.032208025f, -0.999481187f, - -0.030674803f, -0.999529418f, - -0.029141509f, -0.999575296f, - -0.027608146f, -0.999618822f, - -0.026074718f, -0.999659997f, - -0.024541229f, -0.999698819f, - -0.023007681f, -0.999735288f, - -0.021474080f, -0.999769405f, - -0.019940429f, -0.999801170f, - -0.018406730f, -0.999830582f, - -0.016872988f, -0.999857641f, - -0.015339206f, -0.999882347f, - -0.013805389f, -0.999904701f, - -0.012271538f, -0.999924702f, - -0.010737659f, -0.999942350f, - -0.009203755f, -0.999957645f, - -0.007669829f, -0.999970586f, - -0.006135885f, -0.999981175f, - -0.004601926f, -0.999989411f, - -0.003067957f, -0.999995294f, - -0.001533980f, -0.999998823f, - -0.000000000f, -1.000000000f, - 0.001533980f, -0.999998823f, - 0.003067957f, -0.999995294f, - 0.004601926f, -0.999989411f, - 0.006135885f, -0.999981175f, - 0.007669829f, -0.999970586f, - 0.009203755f, -0.999957645f, - 0.010737659f, -0.999942350f, - 0.012271538f, -0.999924702f, - 0.013805389f, -0.999904701f, - 0.015339206f, -0.999882347f, - 0.016872988f, -0.999857641f, - 0.018406730f, -0.999830582f, - 0.019940429f, -0.999801170f, - 0.021474080f, -0.999769405f, - 0.023007681f, -0.999735288f, - 0.024541229f, -0.999698819f, - 0.026074718f, -0.999659997f, - 0.027608146f, -0.999618822f, - 0.029141509f, -0.999575296f, - 0.030674803f, -0.999529418f, - 0.032208025f, -0.999481187f, - 0.033741172f, -0.999430605f, - 0.035274239f, -0.999377670f, - 0.036807223f, -0.999322385f, - 0.038340120f, -0.999264747f, - 0.039872928f, -0.999204759f, - 0.041405641f, -0.999142419f, - 0.042938257f, -0.999077728f, - 0.044470772f, -0.999010686f, - 0.046003182f, -0.998941293f, - 0.047535484f, -0.998869550f, - 0.049067674f, -0.998795456f, - 0.050599749f, -0.998719012f, - 0.052131705f, -0.998640218f, - 0.053663538f, -0.998559074f, - 0.055195244f, -0.998475581f, - 0.056726821f, -0.998389737f, - 0.058258265f, -0.998301545f, - 0.059789571f, -0.998211003f, - 0.061320736f, -0.998118113f, - 0.062851758f, -0.998022874f, - 0.064382631f, -0.997925286f, - 0.065913353f, -0.997825350f, - 0.067443920f, -0.997723067f, - 0.068974328f, -0.997618435f, - 0.070504573f, -0.997511456f, - 0.072034653f, -0.997402130f, - 0.073564564f, -0.997290457f, - 0.075094301f, -0.997176437f, - 0.076623861f, -0.997060070f, - 0.078153242f, -0.996941358f, - 0.079682438f, -0.996820299f, - 0.081211447f, -0.996696895f, - 0.082740265f, -0.996571146f, - 0.084268888f, -0.996443051f, - 0.085797312f, -0.996312612f, - 0.087325535f, -0.996179829f, - 0.088853553f, -0.996044701f, - 0.090381361f, -0.995907229f, - 0.091908956f, -0.995767414f, - 0.093436336f, -0.995625256f, - 0.094963495f, -0.995480755f, - 0.096490431f, -0.995333912f, - 0.098017140f, -0.995184727f, - 0.099543619f, -0.995033199f, - 0.101069863f, -0.994879331f, - 0.102595869f, -0.994723121f, - 0.104121634f, -0.994564571f, - 0.105647154f, -0.994403680f, - 0.107172425f, -0.994240449f, - 0.108697444f, -0.994074879f, - 0.110222207f, -0.993906970f, - 0.111746711f, -0.993736722f, - 0.113270952f, -0.993564136f, - 0.114794927f, -0.993389211f, - 0.116318631f, -0.993211949f, - 0.117842062f, -0.993032350f, - 0.119365215f, -0.992850414f, - 0.120888087f, -0.992666142f, - 0.122410675f, -0.992479535f, - 0.123932975f, -0.992290591f, - 0.125454983f, -0.992099313f, - 0.126976696f, -0.991905700f, - 0.128498111f, -0.991709754f, - 0.130019223f, -0.991511473f, - 0.131540029f, -0.991310860f, - 0.133060525f, -0.991107914f, - 0.134580709f, -0.990902635f, - 0.136100575f, -0.990695025f, - 0.137620122f, -0.990485084f, - 0.139139344f, -0.990272812f, - 0.140658239f, -0.990058210f, - 0.142176804f, -0.989841278f, - 0.143695033f, -0.989622017f, - 0.145212925f, -0.989400428f, - 0.146730474f, -0.989176510f, - 0.148247679f, -0.988950265f, - 0.149764535f, -0.988721692f, - 0.151281038f, -0.988490793f, - 0.152797185f, -0.988257568f, - 0.154312973f, -0.988022017f, - 0.155828398f, -0.987784142f, - 0.157343456f, -0.987543942f, - 0.158858143f, -0.987301418f, - 0.160372457f, -0.987056571f, - 0.161886394f, -0.986809402f, - 0.163399949f, -0.986559910f, - 0.164913120f, -0.986308097f, - 0.166425904f, -0.986053963f, - 0.167938295f, -0.985797509f, - 0.169450291f, -0.985538735f, - 0.170961889f, -0.985277642f, - 0.172473084f, -0.985014231f, - 0.173983873f, -0.984748502f, - 0.175494253f, -0.984480455f, - 0.177004220f, -0.984210092f, - 0.178513771f, -0.983937413f, - 0.180022901f, -0.983662419f, - 0.181531608f, -0.983385110f, - 0.183039888f, -0.983105487f, - 0.184547737f, -0.982823551f, - 0.186055152f, -0.982539302f, - 0.187562129f, -0.982252741f, - 0.189068664f, -0.981963869f, - 0.190574755f, -0.981672686f, - 0.192080397f, -0.981379193f, - 0.193585587f, -0.981083391f, - 0.195090322f, -0.980785280f, - 0.196594598f, -0.980484862f, - 0.198098411f, -0.980182136f, - 0.199601758f, -0.979877104f, - 0.201104635f, -0.979569766f, - 0.202607039f, -0.979260123f, - 0.204108966f, -0.978948175f, - 0.205610413f, -0.978633924f, - 0.207111376f, -0.978317371f, - 0.208611852f, -0.977998515f, - 0.210111837f, -0.977677358f, - 0.211611327f, -0.977353900f, - 0.213110320f, -0.977028143f, - 0.214608811f, -0.976700086f, - 0.216106797f, -0.976369731f, - 0.217604275f, -0.976037079f, - 0.219101240f, -0.975702130f, - 0.220597690f, -0.975364885f, - 0.222093621f, -0.975025345f, - 0.223589029f, -0.974683511f, - 0.225083911f, -0.974339383f, - 0.226578264f, -0.973992962f, - 0.228072083f, -0.973644250f, - 0.229565366f, -0.973293246f, - 0.231058108f, -0.972939952f, - 0.232550307f, -0.972584369f, - 0.234041959f, -0.972226497f, - 0.235533059f, -0.971866337f, - 0.237023606f, -0.971503891f, - 0.238513595f, -0.971139158f, - 0.240003022f, -0.970772141f, - 0.241491885f, -0.970402839f, - 0.242980180f, -0.970031253f, - 0.244467903f, -0.969657385f, - 0.245955050f, -0.969281235f, - 0.247441619f, -0.968902805f, - 0.248927606f, -0.968522094f, - 0.250413007f, -0.968139105f, - 0.251897818f, -0.967753837f, - 0.253382037f, -0.967366292f, - 0.254865660f, -0.966976471f, - 0.256348682f, -0.966584374f, - 0.257831102f, -0.966190003f, - 0.259312915f, -0.965793359f, - 0.260794118f, -0.965394442f, - 0.262274707f, -0.964993253f, - 0.263754679f, -0.964589793f, - 0.265234030f, -0.964184064f, - 0.266712757f, -0.963776066f, - 0.268190857f, -0.963365800f, - 0.269668326f, -0.962953267f, - 0.271145160f, -0.962538468f, - 0.272621355f, -0.962121404f, - 0.274096910f, -0.961702077f, - 0.275571819f, -0.961280486f, - 0.277046080f, -0.960856633f, - 0.278519689f, -0.960430519f, - 0.279992643f, -0.960002146f, - 0.281464938f, -0.959571513f, - 0.282936570f, -0.959138622f, - 0.284407537f, -0.958703475f, - 0.285877835f, -0.958266071f, - 0.287347460f, -0.957826413f, - 0.288816408f, -0.957384501f, - 0.290284677f, -0.956940336f, - 0.291752263f, -0.956493919f, - 0.293219163f, -0.956045251f, - 0.294685372f, -0.955594334f, - 0.296150888f, -0.955141168f, - 0.297615707f, -0.954685755f, - 0.299079826f, -0.954228095f, - 0.300543241f, -0.953768190f, - 0.302005949f, -0.953306040f, - 0.303467947f, -0.952841648f, - 0.304929230f, -0.952375013f, - 0.306389795f, -0.951906137f, - 0.307849640f, -0.951435021f, - 0.309308760f, -0.950961666f, - 0.310767153f, -0.950486074f, - 0.312224814f, -0.950008245f, - 0.313681740f, -0.949528181f, - 0.315137929f, -0.949045882f, - 0.316593376f, -0.948561350f, - 0.318048077f, -0.948074586f, - 0.319502031f, -0.947585591f, - 0.320955232f, -0.947094366f, - 0.322407679f, -0.946600913f, - 0.323859367f, -0.946105232f, - 0.325310292f, -0.945607325f, - 0.326760452f, -0.945107193f, - 0.328209844f, -0.944604837f, - 0.329658463f, -0.944100258f, - 0.331106306f, -0.943593458f, - 0.332553370f, -0.943084437f, - 0.333999651f, -0.942573198f, - 0.335445147f, -0.942059740f, - 0.336889853f, -0.941544065f, - 0.338333767f, -0.941026175f, - 0.339776884f, -0.940506071f, - 0.341219202f, -0.939983753f, - 0.342660717f, -0.939459224f, - 0.344101426f, -0.938932484f, - 0.345541325f, -0.938403534f, - 0.346980411f, -0.937872376f, - 0.348418680f, -0.937339012f, - 0.349856130f, -0.936803442f, - 0.351292756f, -0.936265667f, - 0.352728556f, -0.935725689f, - 0.354163525f, -0.935183510f, - 0.355597662f, -0.934639130f, - 0.357030961f, -0.934092550f, - 0.358463421f, -0.933543773f, - 0.359895037f, -0.932992799f, - 0.361325806f, -0.932439629f, - 0.362755724f, -0.931884266f, - 0.364184790f, -0.931326709f, - 0.365612998f, -0.930766961f, - 0.367040346f, -0.930205023f, - 0.368466830f, -0.929640896f, - 0.369892447f, -0.929074581f, - 0.371317194f, -0.928506080f, - 0.372741067f, -0.927935395f, - 0.374164063f, -0.927362526f, - 0.375586178f, -0.926787474f, - 0.377007410f, -0.926210242f, - 0.378427755f, -0.925630831f, - 0.379847209f, -0.925049241f, - 0.381265769f, -0.924465474f, - 0.382683432f, -0.923879533f, - 0.384100195f, -0.923291417f, - 0.385516054f, -0.922701128f, - 0.386931006f, -0.922108669f, - 0.388345047f, -0.921514039f, - 0.389758174f, -0.920917242f, - 0.391170384f, -0.920318277f, - 0.392581674f, -0.919717146f, - 0.393992040f, -0.919113852f, - 0.395401479f, -0.918508394f, - 0.396809987f, -0.917900776f, - 0.398217562f, -0.917290997f, - 0.399624200f, -0.916679060f, - 0.401029897f, -0.916064966f, - 0.402434651f, -0.915448716f, - 0.403838458f, -0.914830312f, - 0.405241314f, -0.914209756f, - 0.406643217f, -0.913587048f, - 0.408044163f, -0.912962190f, - 0.409444149f, -0.912335185f, - 0.410843171f, -0.911706032f, - 0.412241227f, -0.911074734f, - 0.413638312f, -0.910441292f, - 0.415034424f, -0.909805708f, - 0.416429560f, -0.909167983f, - 0.417823716f, -0.908528119f, - 0.419216888f, -0.907886116f, - 0.420609074f, -0.907241978f, - 0.422000271f, -0.906595705f, - 0.423390474f, -0.905947298f, - 0.424779681f, -0.905296759f, - 0.426167889f, -0.904644091f, - 0.427555093f, -0.903989293f, - 0.428941292f, -0.903332368f, - 0.430326481f, -0.902673318f, - 0.431710658f, -0.902012144f, - 0.433093819f, -0.901348847f, - 0.434475961f, -0.900683429f, - 0.435857080f, -0.900015892f, - 0.437237174f, -0.899346237f, - 0.438616239f, -0.898674466f, - 0.439994271f, -0.898000580f, - 0.441371269f, -0.897324581f, - 0.442747228f, -0.896646470f, - 0.444122145f, -0.895966250f, - 0.445496017f, -0.895283921f, - 0.446868840f, -0.894599486f, - 0.448240612f, -0.893912945f, - 0.449611330f, -0.893224301f, - 0.450980989f, -0.892533555f, - 0.452349587f, -0.891840709f, - 0.453717121f, -0.891145765f, - 0.455083587f, -0.890448723f, - 0.456448982f, -0.889749586f, - 0.457813304f, -0.889048356f, - 0.459176548f, -0.888345033f, - 0.460538711f, -0.887639620f, - 0.461899791f, -0.886932119f, - 0.463259784f, -0.886222530f, - 0.464618686f, -0.885510856f, - 0.465976496f, -0.884797098f, - 0.467333209f, -0.884081259f, - 0.468688822f, -0.883363339f, - 0.470043332f, -0.882643340f, - 0.471396737f, -0.881921264f, - 0.472749032f, -0.881197113f, - 0.474100215f, -0.880470889f, - 0.475450282f, -0.879742593f, - 0.476799230f, -0.879012226f, - 0.478147056f, -0.878279792f, - 0.479493758f, -0.877545290f, - 0.480839331f, -0.876808724f, - 0.482183772f, -0.876070094f, - 0.483527079f, -0.875329403f, - 0.484869248f, -0.874586652f, - 0.486210276f, -0.873841843f, - 0.487550160f, -0.873094978f, - 0.488888897f, -0.872346059f, - 0.490226483f, -0.871595087f, - 0.491562916f, -0.870842063f, - 0.492898192f, -0.870086991f, - 0.494232309f, -0.869329871f, - 0.495565262f, -0.868570706f, - 0.496897049f, -0.867809497f, - 0.498227667f, -0.867046246f, - 0.499557113f, -0.866280954f, - 0.500885383f, -0.865513624f, - 0.502212474f, -0.864744258f, - 0.503538384f, -0.863972856f, - 0.504863109f, -0.863199422f, - 0.506186645f, -0.862423956f, - 0.507508991f, -0.861646461f, - 0.508830143f, -0.860866939f, - 0.510150097f, -0.860085390f, - 0.511468850f, -0.859301818f, - 0.512786401f, -0.858516224f, - 0.514102744f, -0.857728610f, - 0.515417878f, -0.856938977f, - 0.516731799f, -0.856147328f, - 0.518044504f, -0.855353665f, - 0.519355990f, -0.854557988f, - 0.520666254f, -0.853760301f, - 0.521975293f, -0.852960605f, - 0.523283103f, -0.852158902f, - 0.524589683f, -0.851355193f, - 0.525895027f, -0.850549481f, - 0.527199135f, -0.849741768f, - 0.528502002f, -0.848932055f, - 0.529803625f, -0.848120345f, - 0.531104001f, -0.847306639f, - 0.532403128f, -0.846490939f, - 0.533701002f, -0.845673247f, - 0.534997620f, -0.844853565f, - 0.536292979f, -0.844031895f, - 0.537587076f, -0.843208240f, - 0.538879909f, -0.842382600f, - 0.540171473f, -0.841554977f, - 0.541461766f, -0.840725375f, - 0.542750785f, -0.839893794f, - 0.544038527f, -0.839060237f, - 0.545324988f, -0.838224706f, - 0.546610167f, -0.837387202f, - 0.547894059f, -0.836547727f, - 0.549176662f, -0.835706284f, - 0.550457973f, -0.834862875f, - 0.551737988f, -0.834017501f, - 0.553016706f, -0.833170165f, - 0.554294121f, -0.832320868f, - 0.555570233f, -0.831469612f, - 0.556845037f, -0.830616400f, - 0.558118531f, -0.829761234f, - 0.559390712f, -0.828904115f, - 0.560661576f, -0.828045045f, - 0.561931121f, -0.827184027f, - 0.563199344f, -0.826321063f, - 0.564466242f, -0.825456154f, - 0.565731811f, -0.824589303f, - 0.566996049f, -0.823720511f, - 0.568258953f, -0.822849781f, - 0.569520519f, -0.821977115f, - 0.570780746f, -0.821102515f, - 0.572039629f, -0.820225983f, - 0.573297167f, -0.819347520f, - 0.574553355f, -0.818467130f, - 0.575808191f, -0.817584813f, - 0.577061673f, -0.816700573f, - 0.578313796f, -0.815814411f, - 0.579564559f, -0.814926329f, - 0.580813958f, -0.814036330f, - 0.582061990f, -0.813144415f, - 0.583308653f, -0.812250587f, - 0.584553943f, -0.811354847f, - 0.585797857f, -0.810457198f, - 0.587040394f, -0.809557642f, - 0.588281548f, -0.808656182f, - 0.589521319f, -0.807752818f, - 0.590759702f, -0.806847554f, - 0.591996695f, -0.805940391f, - 0.593232295f, -0.805031331f, - 0.594466499f, -0.804120377f, - 0.595699304f, -0.803207531f, - 0.596930708f, -0.802292796f, - 0.598160707f, -0.801376172f, - 0.599389298f, -0.800457662f, - 0.600616479f, -0.799537269f, - 0.601842247f, -0.798614995f, - 0.603066599f, -0.797690841f, - 0.604289531f, -0.796764810f, - 0.605511041f, -0.795836905f, - 0.606731127f, -0.794907126f, - 0.607949785f, -0.793975478f, - 0.609167012f, -0.793041960f, - 0.610382806f, -0.792106577f, - 0.611597164f, -0.791169330f, - 0.612810082f, -0.790230221f, - 0.614021559f, -0.789289253f, - 0.615231591f, -0.788346428f, - 0.616440175f, -0.787401747f, - 0.617647308f, -0.786455214f, - 0.618852988f, -0.785506830f, - 0.620057212f, -0.784556597f, - 0.621259977f, -0.783604519f, - 0.622461279f, -0.782650596f, - 0.623661118f, -0.781694832f, - 0.624859488f, -0.780737229f, - 0.626056388f, -0.779777788f, - 0.627251815f, -0.778816512f, - 0.628445767f, -0.777853404f, - 0.629638239f, -0.776888466f, - 0.630829230f, -0.775921699f, - 0.632018736f, -0.774953107f, - 0.633206755f, -0.773982691f, - 0.634393284f, -0.773010453f, - 0.635578320f, -0.772036397f, - 0.636761861f, -0.771060524f, - 0.637943904f, -0.770082837f, - 0.639124445f, -0.769103338f, - 0.640303482f, -0.768122029f, - 0.641481013f, -0.767138912f, - 0.642657034f, -0.766153990f, - 0.643831543f, -0.765167266f, - 0.645004537f, -0.764178741f, - 0.646176013f, -0.763188417f, - 0.647345969f, -0.762196298f, - 0.648514401f, -0.761202385f, - 0.649681307f, -0.760206682f, - 0.650846685f, -0.759209189f, - 0.652010531f, -0.758209910f, - 0.653172843f, -0.757208847f, - 0.654333618f, -0.756206001f, - 0.655492853f, -0.755201377f, - 0.656650546f, -0.754194975f, - 0.657806693f, -0.753186799f, - 0.658961293f, -0.752176850f, - 0.660114342f, -0.751165132f, - 0.661265838f, -0.750151646f, - 0.662415778f, -0.749136395f, - 0.663564159f, -0.748119380f, - 0.664710978f, -0.747100606f, - 0.665856234f, -0.746080074f, - 0.666999922f, -0.745057785f, - 0.668142041f, -0.744033744f, - 0.669282588f, -0.743007952f, - 0.670421560f, -0.741980412f, - 0.671558955f, -0.740951125f, - 0.672694769f, -0.739920095f, - 0.673829000f, -0.738887324f, - 0.674961646f, -0.737852815f, - 0.676092704f, -0.736816569f, - 0.677222170f, -0.735778589f, - 0.678350043f, -0.734738878f, - 0.679476320f, -0.733697438f, - 0.680600998f, -0.732654272f, - 0.681724074f, -0.731609381f, - 0.682845546f, -0.730562769f, - 0.683965412f, -0.729514438f, - 0.685083668f, -0.728464390f, - 0.686200312f, -0.727412629f, - 0.687315341f, -0.726359155f, - 0.688428753f, -0.725303972f, - 0.689540545f, -0.724247083f, - 0.690650714f, -0.723188489f, - 0.691759258f, -0.722128194f, - 0.692866175f, -0.721066199f, - 0.693971461f, -0.720002508f, - 0.695075114f, -0.718937122f, - 0.696177131f, -0.717870045f, - 0.697277511f, -0.716801279f, - 0.698376249f, -0.715730825f, - 0.699473345f, -0.714658688f, - 0.700568794f, -0.713584869f, - 0.701662595f, -0.712509371f, - 0.702754744f, -0.711432196f, - 0.703845241f, -0.710353347f, - 0.704934080f, -0.709272826f, - 0.706021261f, -0.708190637f, - 0.707106781f, -0.707106781f, - 0.708190637f, -0.706021261f, - 0.709272826f, -0.704934080f, - 0.710353347f, -0.703845241f, - 0.711432196f, -0.702754744f, - 0.712509371f, -0.701662595f, - 0.713584869f, -0.700568794f, - 0.714658688f, -0.699473345f, - 0.715730825f, -0.698376249f, - 0.716801279f, -0.697277511f, - 0.717870045f, -0.696177131f, - 0.718937122f, -0.695075114f, - 0.720002508f, -0.693971461f, - 0.721066199f, -0.692866175f, - 0.722128194f, -0.691759258f, - 0.723188489f, -0.690650714f, - 0.724247083f, -0.689540545f, - 0.725303972f, -0.688428753f, - 0.726359155f, -0.687315341f, - 0.727412629f, -0.686200312f, - 0.728464390f, -0.685083668f, - 0.729514438f, -0.683965412f, - 0.730562769f, -0.682845546f, - 0.731609381f, -0.681724074f, - 0.732654272f, -0.680600998f, - 0.733697438f, -0.679476320f, - 0.734738878f, -0.678350043f, - 0.735778589f, -0.677222170f, - 0.736816569f, -0.676092704f, - 0.737852815f, -0.674961646f, - 0.738887324f, -0.673829000f, - 0.739920095f, -0.672694769f, - 0.740951125f, -0.671558955f, - 0.741980412f, -0.670421560f, - 0.743007952f, -0.669282588f, - 0.744033744f, -0.668142041f, - 0.745057785f, -0.666999922f, - 0.746080074f, -0.665856234f, - 0.747100606f, -0.664710978f, - 0.748119380f, -0.663564159f, - 0.749136395f, -0.662415778f, - 0.750151646f, -0.661265838f, - 0.751165132f, -0.660114342f, - 0.752176850f, -0.658961293f, - 0.753186799f, -0.657806693f, - 0.754194975f, -0.656650546f, - 0.755201377f, -0.655492853f, - 0.756206001f, -0.654333618f, - 0.757208847f, -0.653172843f, - 0.758209910f, -0.652010531f, - 0.759209189f, -0.650846685f, - 0.760206682f, -0.649681307f, - 0.761202385f, -0.648514401f, - 0.762196298f, -0.647345969f, - 0.763188417f, -0.646176013f, - 0.764178741f, -0.645004537f, - 0.765167266f, -0.643831543f, - 0.766153990f, -0.642657034f, - 0.767138912f, -0.641481013f, - 0.768122029f, -0.640303482f, - 0.769103338f, -0.639124445f, - 0.770082837f, -0.637943904f, - 0.771060524f, -0.636761861f, - 0.772036397f, -0.635578320f, - 0.773010453f, -0.634393284f, - 0.773982691f, -0.633206755f, - 0.774953107f, -0.632018736f, - 0.775921699f, -0.630829230f, - 0.776888466f, -0.629638239f, - 0.777853404f, -0.628445767f, - 0.778816512f, -0.627251815f, - 0.779777788f, -0.626056388f, - 0.780737229f, -0.624859488f, - 0.781694832f, -0.623661118f, - 0.782650596f, -0.622461279f, - 0.783604519f, -0.621259977f, - 0.784556597f, -0.620057212f, - 0.785506830f, -0.618852988f, - 0.786455214f, -0.617647308f, - 0.787401747f, -0.616440175f, - 0.788346428f, -0.615231591f, - 0.789289253f, -0.614021559f, - 0.790230221f, -0.612810082f, - 0.791169330f, -0.611597164f, - 0.792106577f, -0.610382806f, - 0.793041960f, -0.609167012f, - 0.793975478f, -0.607949785f, - 0.794907126f, -0.606731127f, - 0.795836905f, -0.605511041f, - 0.796764810f, -0.604289531f, - 0.797690841f, -0.603066599f, - 0.798614995f, -0.601842247f, - 0.799537269f, -0.600616479f, - 0.800457662f, -0.599389298f, - 0.801376172f, -0.598160707f, - 0.802292796f, -0.596930708f, - 0.803207531f, -0.595699304f, - 0.804120377f, -0.594466499f, - 0.805031331f, -0.593232295f, - 0.805940391f, -0.591996695f, - 0.806847554f, -0.590759702f, - 0.807752818f, -0.589521319f, - 0.808656182f, -0.588281548f, - 0.809557642f, -0.587040394f, - 0.810457198f, -0.585797857f, - 0.811354847f, -0.584553943f, - 0.812250587f, -0.583308653f, - 0.813144415f, -0.582061990f, - 0.814036330f, -0.580813958f, - 0.814926329f, -0.579564559f, - 0.815814411f, -0.578313796f, - 0.816700573f, -0.577061673f, - 0.817584813f, -0.575808191f, - 0.818467130f, -0.574553355f, - 0.819347520f, -0.573297167f, - 0.820225983f, -0.572039629f, - 0.821102515f, -0.570780746f, - 0.821977115f, -0.569520519f, - 0.822849781f, -0.568258953f, - 0.823720511f, -0.566996049f, - 0.824589303f, -0.565731811f, - 0.825456154f, -0.564466242f, - 0.826321063f, -0.563199344f, - 0.827184027f, -0.561931121f, - 0.828045045f, -0.560661576f, - 0.828904115f, -0.559390712f, - 0.829761234f, -0.558118531f, - 0.830616400f, -0.556845037f, - 0.831469612f, -0.555570233f, - 0.832320868f, -0.554294121f, - 0.833170165f, -0.553016706f, - 0.834017501f, -0.551737988f, - 0.834862875f, -0.550457973f, - 0.835706284f, -0.549176662f, - 0.836547727f, -0.547894059f, - 0.837387202f, -0.546610167f, - 0.838224706f, -0.545324988f, - 0.839060237f, -0.544038527f, - 0.839893794f, -0.542750785f, - 0.840725375f, -0.541461766f, - 0.841554977f, -0.540171473f, - 0.842382600f, -0.538879909f, - 0.843208240f, -0.537587076f, - 0.844031895f, -0.536292979f, - 0.844853565f, -0.534997620f, - 0.845673247f, -0.533701002f, - 0.846490939f, -0.532403128f, - 0.847306639f, -0.531104001f, - 0.848120345f, -0.529803625f, - 0.848932055f, -0.528502002f, - 0.849741768f, -0.527199135f, - 0.850549481f, -0.525895027f, - 0.851355193f, -0.524589683f, - 0.852158902f, -0.523283103f, - 0.852960605f, -0.521975293f, - 0.853760301f, -0.520666254f, - 0.854557988f, -0.519355990f, - 0.855353665f, -0.518044504f, - 0.856147328f, -0.516731799f, - 0.856938977f, -0.515417878f, - 0.857728610f, -0.514102744f, - 0.858516224f, -0.512786401f, - 0.859301818f, -0.511468850f, - 0.860085390f, -0.510150097f, - 0.860866939f, -0.508830143f, - 0.861646461f, -0.507508991f, - 0.862423956f, -0.506186645f, - 0.863199422f, -0.504863109f, - 0.863972856f, -0.503538384f, - 0.864744258f, -0.502212474f, - 0.865513624f, -0.500885383f, - 0.866280954f, -0.499557113f, - 0.867046246f, -0.498227667f, - 0.867809497f, -0.496897049f, - 0.868570706f, -0.495565262f, - 0.869329871f, -0.494232309f, - 0.870086991f, -0.492898192f, - 0.870842063f, -0.491562916f, - 0.871595087f, -0.490226483f, - 0.872346059f, -0.488888897f, - 0.873094978f, -0.487550160f, - 0.873841843f, -0.486210276f, - 0.874586652f, -0.484869248f, - 0.875329403f, -0.483527079f, - 0.876070094f, -0.482183772f, - 0.876808724f, -0.480839331f, - 0.877545290f, -0.479493758f, - 0.878279792f, -0.478147056f, - 0.879012226f, -0.476799230f, - 0.879742593f, -0.475450282f, - 0.880470889f, -0.474100215f, - 0.881197113f, -0.472749032f, - 0.881921264f, -0.471396737f, - 0.882643340f, -0.470043332f, - 0.883363339f, -0.468688822f, - 0.884081259f, -0.467333209f, - 0.884797098f, -0.465976496f, - 0.885510856f, -0.464618686f, - 0.886222530f, -0.463259784f, - 0.886932119f, -0.461899791f, - 0.887639620f, -0.460538711f, - 0.888345033f, -0.459176548f, - 0.889048356f, -0.457813304f, - 0.889749586f, -0.456448982f, - 0.890448723f, -0.455083587f, - 0.891145765f, -0.453717121f, - 0.891840709f, -0.452349587f, - 0.892533555f, -0.450980989f, - 0.893224301f, -0.449611330f, - 0.893912945f, -0.448240612f, - 0.894599486f, -0.446868840f, - 0.895283921f, -0.445496017f, - 0.895966250f, -0.444122145f, - 0.896646470f, -0.442747228f, - 0.897324581f, -0.441371269f, - 0.898000580f, -0.439994271f, - 0.898674466f, -0.438616239f, - 0.899346237f, -0.437237174f, - 0.900015892f, -0.435857080f, - 0.900683429f, -0.434475961f, - 0.901348847f, -0.433093819f, - 0.902012144f, -0.431710658f, - 0.902673318f, -0.430326481f, - 0.903332368f, -0.428941292f, - 0.903989293f, -0.427555093f, - 0.904644091f, -0.426167889f, - 0.905296759f, -0.424779681f, - 0.905947298f, -0.423390474f, - 0.906595705f, -0.422000271f, - 0.907241978f, -0.420609074f, - 0.907886116f, -0.419216888f, - 0.908528119f, -0.417823716f, - 0.909167983f, -0.416429560f, - 0.909805708f, -0.415034424f, - 0.910441292f, -0.413638312f, - 0.911074734f, -0.412241227f, - 0.911706032f, -0.410843171f, - 0.912335185f, -0.409444149f, - 0.912962190f, -0.408044163f, - 0.913587048f, -0.406643217f, - 0.914209756f, -0.405241314f, - 0.914830312f, -0.403838458f, - 0.915448716f, -0.402434651f, - 0.916064966f, -0.401029897f, - 0.916679060f, -0.399624200f, - 0.917290997f, -0.398217562f, - 0.917900776f, -0.396809987f, - 0.918508394f, -0.395401479f, - 0.919113852f, -0.393992040f, - 0.919717146f, -0.392581674f, - 0.920318277f, -0.391170384f, - 0.920917242f, -0.389758174f, - 0.921514039f, -0.388345047f, - 0.922108669f, -0.386931006f, - 0.922701128f, -0.385516054f, - 0.923291417f, -0.384100195f, - 0.923879533f, -0.382683432f, - 0.924465474f, -0.381265769f, - 0.925049241f, -0.379847209f, - 0.925630831f, -0.378427755f, - 0.926210242f, -0.377007410f, - 0.926787474f, -0.375586178f, - 0.927362526f, -0.374164063f, - 0.927935395f, -0.372741067f, - 0.928506080f, -0.371317194f, - 0.929074581f, -0.369892447f, - 0.929640896f, -0.368466830f, - 0.930205023f, -0.367040346f, - 0.930766961f, -0.365612998f, - 0.931326709f, -0.364184790f, - 0.931884266f, -0.362755724f, - 0.932439629f, -0.361325806f, - 0.932992799f, -0.359895037f, - 0.933543773f, -0.358463421f, - 0.934092550f, -0.357030961f, - 0.934639130f, -0.355597662f, - 0.935183510f, -0.354163525f, - 0.935725689f, -0.352728556f, - 0.936265667f, -0.351292756f, - 0.936803442f, -0.349856130f, - 0.937339012f, -0.348418680f, - 0.937872376f, -0.346980411f, - 0.938403534f, -0.345541325f, - 0.938932484f, -0.344101426f, - 0.939459224f, -0.342660717f, - 0.939983753f, -0.341219202f, - 0.940506071f, -0.339776884f, - 0.941026175f, -0.338333767f, - 0.941544065f, -0.336889853f, - 0.942059740f, -0.335445147f, - 0.942573198f, -0.333999651f, - 0.943084437f, -0.332553370f, - 0.943593458f, -0.331106306f, - 0.944100258f, -0.329658463f, - 0.944604837f, -0.328209844f, - 0.945107193f, -0.326760452f, - 0.945607325f, -0.325310292f, - 0.946105232f, -0.323859367f, - 0.946600913f, -0.322407679f, - 0.947094366f, -0.320955232f, - 0.947585591f, -0.319502031f, - 0.948074586f, -0.318048077f, - 0.948561350f, -0.316593376f, - 0.949045882f, -0.315137929f, - 0.949528181f, -0.313681740f, - 0.950008245f, -0.312224814f, - 0.950486074f, -0.310767153f, - 0.950961666f, -0.309308760f, - 0.951435021f, -0.307849640f, - 0.951906137f, -0.306389795f, - 0.952375013f, -0.304929230f, - 0.952841648f, -0.303467947f, - 0.953306040f, -0.302005949f, - 0.953768190f, -0.300543241f, - 0.954228095f, -0.299079826f, - 0.954685755f, -0.297615707f, - 0.955141168f, -0.296150888f, - 0.955594334f, -0.294685372f, - 0.956045251f, -0.293219163f, - 0.956493919f, -0.291752263f, - 0.956940336f, -0.290284677f, - 0.957384501f, -0.288816408f, - 0.957826413f, -0.287347460f, - 0.958266071f, -0.285877835f, - 0.958703475f, -0.284407537f, - 0.959138622f, -0.282936570f, - 0.959571513f, -0.281464938f, - 0.960002146f, -0.279992643f, - 0.960430519f, -0.278519689f, - 0.960856633f, -0.277046080f, - 0.961280486f, -0.275571819f, - 0.961702077f, -0.274096910f, - 0.962121404f, -0.272621355f, - 0.962538468f, -0.271145160f, - 0.962953267f, -0.269668326f, - 0.963365800f, -0.268190857f, - 0.963776066f, -0.266712757f, - 0.964184064f, -0.265234030f, - 0.964589793f, -0.263754679f, - 0.964993253f, -0.262274707f, - 0.965394442f, -0.260794118f, - 0.965793359f, -0.259312915f, - 0.966190003f, -0.257831102f, - 0.966584374f, -0.256348682f, - 0.966976471f, -0.254865660f, - 0.967366292f, -0.253382037f, - 0.967753837f, -0.251897818f, - 0.968139105f, -0.250413007f, - 0.968522094f, -0.248927606f, - 0.968902805f, -0.247441619f, - 0.969281235f, -0.245955050f, - 0.969657385f, -0.244467903f, - 0.970031253f, -0.242980180f, - 0.970402839f, -0.241491885f, - 0.970772141f, -0.240003022f, - 0.971139158f, -0.238513595f, - 0.971503891f, -0.237023606f, - 0.971866337f, -0.235533059f, - 0.972226497f, -0.234041959f, - 0.972584369f, -0.232550307f, - 0.972939952f, -0.231058108f, - 0.973293246f, -0.229565366f, - 0.973644250f, -0.228072083f, - 0.973992962f, -0.226578264f, - 0.974339383f, -0.225083911f, - 0.974683511f, -0.223589029f, - 0.975025345f, -0.222093621f, - 0.975364885f, -0.220597690f, - 0.975702130f, -0.219101240f, - 0.976037079f, -0.217604275f, - 0.976369731f, -0.216106797f, - 0.976700086f, -0.214608811f, - 0.977028143f, -0.213110320f, - 0.977353900f, -0.211611327f, - 0.977677358f, -0.210111837f, - 0.977998515f, -0.208611852f, - 0.978317371f, -0.207111376f, - 0.978633924f, -0.205610413f, - 0.978948175f, -0.204108966f, - 0.979260123f, -0.202607039f, - 0.979569766f, -0.201104635f, - 0.979877104f, -0.199601758f, - 0.980182136f, -0.198098411f, - 0.980484862f, -0.196594598f, - 0.980785280f, -0.195090322f, - 0.981083391f, -0.193585587f, - 0.981379193f, -0.192080397f, - 0.981672686f, -0.190574755f, - 0.981963869f, -0.189068664f, - 0.982252741f, -0.187562129f, - 0.982539302f, -0.186055152f, - 0.982823551f, -0.184547737f, - 0.983105487f, -0.183039888f, - 0.983385110f, -0.181531608f, - 0.983662419f, -0.180022901f, - 0.983937413f, -0.178513771f, - 0.984210092f, -0.177004220f, - 0.984480455f, -0.175494253f, - 0.984748502f, -0.173983873f, - 0.985014231f, -0.172473084f, - 0.985277642f, -0.170961889f, - 0.985538735f, -0.169450291f, - 0.985797509f, -0.167938295f, - 0.986053963f, -0.166425904f, - 0.986308097f, -0.164913120f, - 0.986559910f, -0.163399949f, - 0.986809402f, -0.161886394f, - 0.987056571f, -0.160372457f, - 0.987301418f, -0.158858143f, - 0.987543942f, -0.157343456f, - 0.987784142f, -0.155828398f, - 0.988022017f, -0.154312973f, - 0.988257568f, -0.152797185f, - 0.988490793f, -0.151281038f, - 0.988721692f, -0.149764535f, - 0.988950265f, -0.148247679f, - 0.989176510f, -0.146730474f, - 0.989400428f, -0.145212925f, - 0.989622017f, -0.143695033f, - 0.989841278f, -0.142176804f, - 0.990058210f, -0.140658239f, - 0.990272812f, -0.139139344f, - 0.990485084f, -0.137620122f, - 0.990695025f, -0.136100575f, - 0.990902635f, -0.134580709f, - 0.991107914f, -0.133060525f, - 0.991310860f, -0.131540029f, - 0.991511473f, -0.130019223f, - 0.991709754f, -0.128498111f, - 0.991905700f, -0.126976696f, - 0.992099313f, -0.125454983f, - 0.992290591f, -0.123932975f, - 0.992479535f, -0.122410675f, - 0.992666142f, -0.120888087f, - 0.992850414f, -0.119365215f, - 0.993032350f, -0.117842062f, - 0.993211949f, -0.116318631f, - 0.993389211f, -0.114794927f, - 0.993564136f, -0.113270952f, - 0.993736722f, -0.111746711f, - 0.993906970f, -0.110222207f, - 0.994074879f, -0.108697444f, - 0.994240449f, -0.107172425f, - 0.994403680f, -0.105647154f, - 0.994564571f, -0.104121634f, - 0.994723121f, -0.102595869f, - 0.994879331f, -0.101069863f, - 0.995033199f, -0.099543619f, - 0.995184727f, -0.098017140f, - 0.995333912f, -0.096490431f, - 0.995480755f, -0.094963495f, - 0.995625256f, -0.093436336f, - 0.995767414f, -0.091908956f, - 0.995907229f, -0.090381361f, - 0.996044701f, -0.088853553f, - 0.996179829f, -0.087325535f, - 0.996312612f, -0.085797312f, - 0.996443051f, -0.084268888f, - 0.996571146f, -0.082740265f, - 0.996696895f, -0.081211447f, - 0.996820299f, -0.079682438f, - 0.996941358f, -0.078153242f, - 0.997060070f, -0.076623861f, - 0.997176437f, -0.075094301f, - 0.997290457f, -0.073564564f, - 0.997402130f, -0.072034653f, - 0.997511456f, -0.070504573f, - 0.997618435f, -0.068974328f, - 0.997723067f, -0.067443920f, - 0.997825350f, -0.065913353f, - 0.997925286f, -0.064382631f, - 0.998022874f, -0.062851758f, - 0.998118113f, -0.061320736f, - 0.998211003f, -0.059789571f, - 0.998301545f, -0.058258265f, - 0.998389737f, -0.056726821f, - 0.998475581f, -0.055195244f, - 0.998559074f, -0.053663538f, - 0.998640218f, -0.052131705f, - 0.998719012f, -0.050599749f, - 0.998795456f, -0.049067674f, - 0.998869550f, -0.047535484f, - 0.998941293f, -0.046003182f, - 0.999010686f, -0.044470772f, - 0.999077728f, -0.042938257f, - 0.999142419f, -0.041405641f, - 0.999204759f, -0.039872928f, - 0.999264747f, -0.038340120f, - 0.999322385f, -0.036807223f, - 0.999377670f, -0.035274239f, - 0.999430605f, -0.033741172f, - 0.999481187f, -0.032208025f, - 0.999529418f, -0.030674803f, - 0.999575296f, -0.029141509f, - 0.999618822f, -0.027608146f, - 0.999659997f, -0.026074718f, - 0.999698819f, -0.024541229f, - 0.999735288f, -0.023007681f, - 0.999769405f, -0.021474080f, - 0.999801170f, -0.019940429f, - 0.999830582f, -0.018406730f, - 0.999857641f, -0.016872988f, - 0.999882347f, -0.015339206f, - 0.999904701f, -0.013805389f, - 0.999924702f, -0.012271538f, - 0.999942350f, -0.010737659f, - 0.999957645f, -0.009203755f, - 0.999970586f, -0.007669829f, - 0.999981175f, -0.006135885f, - 0.999989411f, -0.004601926f, - 0.999995294f, -0.003067957f, - 0.999998823f, -0.001533980f -}; - -/* -* @brief Q31 Twiddle factors Table -*/ - - -/** -* \par -* Example code for Q31 Twiddle factors Generation:: -* \par -*
for(i = 0; i< 3N/4; i++)
-* {
-*    twiddleCoefQ31[2*i]= cos(i * 2*PI/(float)N);
-*    twiddleCoefQ31[2*i+1]= sin(i * 2*PI/(float)N);
-* } 
-* \par -* where N = 16 and PI = 3.14159265358979 -* \par -* Cos and Sin values are interleaved fashion -* \par -* Convert Floating point to Q31(Fixed point 1.31): -* round(twiddleCoefQ31(i) * pow(2, 31)) -* -*/ -const q31_t twiddleCoef_16_q31[24] = { - (q31_t)0x7FFFFFFF, (q31_t)0x00000000, - (q31_t)0x7641AF3C, (q31_t)0x30FBC54D, - (q31_t)0x5A82799A, (q31_t)0x5A82799A, - (q31_t)0x30FBC54D, (q31_t)0x7641AF3C, - (q31_t)0x00000000, (q31_t)0x7FFFFFFF, - (q31_t)0xCF043AB2, (q31_t)0x7641AF3C, - (q31_t)0xA57D8666, (q31_t)0x5A82799A, - (q31_t)0x89BE50C3, (q31_t)0x30FBC54D, - (q31_t)0x80000000, (q31_t)0x00000000, - (q31_t)0x89BE50C3, (q31_t)0xCF043AB2, - (q31_t)0xA57D8666, (q31_t)0xA57D8666, - (q31_t)0xCF043AB2, (q31_t)0x89BE50C3 -}; - -/** -* \par -* Example code for Q31 Twiddle factors Generation:: -* \par -*
for(i = 0; i< 3N/4; i++)
-* {
-*    twiddleCoefQ31[2*i]= cos(i * 2*PI/(float)N);
-*    twiddleCoefQ31[2*i+1]= sin(i * 2*PI/(float)N);
-* } 
-* \par -* where N = 32 and PI = 3.14159265358979 -* \par -* Cos and Sin values are interleaved fashion -* \par -* Convert Floating point to Q31(Fixed point 1.31): -* round(twiddleCoefQ31(i) * pow(2, 31)) -* -*/ -const q31_t twiddleCoef_32_q31[48] = { - (q31_t)0x7FFFFFFF, (q31_t)0x00000000, - (q31_t)0x7D8A5F3F, (q31_t)0x18F8B83C, - (q31_t)0x7641AF3C, (q31_t)0x30FBC54D, - (q31_t)0x6A6D98A4, (q31_t)0x471CECE6, - (q31_t)0x5A82799A, (q31_t)0x5A82799A, - (q31_t)0x471CECE6, (q31_t)0x6A6D98A4, - (q31_t)0x30FBC54D, (q31_t)0x7641AF3C, - (q31_t)0x18F8B83C, (q31_t)0x7D8A5F3F, - (q31_t)0x00000000, (q31_t)0x7FFFFFFF, - (q31_t)0xE70747C3, (q31_t)0x7D8A5F3F, - (q31_t)0xCF043AB2, (q31_t)0x7641AF3C, - (q31_t)0xB8E31319, (q31_t)0x6A6D98A4, - (q31_t)0xA57D8666, (q31_t)0x5A82799A, - (q31_t)0x9592675B, (q31_t)0x471CECE6, - (q31_t)0x89BE50C3, (q31_t)0x30FBC54D, - (q31_t)0x8275A0C0, (q31_t)0x18F8B83C, - (q31_t)0x80000000, (q31_t)0x00000000, - (q31_t)0x8275A0C0, (q31_t)0xE70747C3, - (q31_t)0x89BE50C3, (q31_t)0xCF043AB2, - (q31_t)0x9592675B, (q31_t)0xB8E31319, - (q31_t)0xA57D8666, (q31_t)0xA57D8666, - (q31_t)0xB8E31319, (q31_t)0x9592675B, - (q31_t)0xCF043AB2, (q31_t)0x89BE50C3, - (q31_t)0xE70747C3, (q31_t)0x8275A0C0 -}; - -/** -* \par -* Example code for Q31 Twiddle factors Generation:: -* \par -*
for(i = 0; i< 3N/4; i++)
-* {
-*    twiddleCoefQ31[2*i]= cos(i * 2*PI/(float)N);
-*    twiddleCoefQ31[2*i+1]= sin(i * 2*PI/(float)N);
-* } 
-* \par -* where N = 64 and PI = 3.14159265358979 -* \par -* Cos and Sin values are interleaved fashion -* \par -* Convert Floating point to Q31(Fixed point 1.31): -* round(twiddleCoefQ31(i) * pow(2, 31)) -* -*/ -const q31_t twiddleCoef_64_q31[96] = { - (q31_t)0x7FFFFFFF, (q31_t)0x00000000, (q31_t)0x7F62368F, - (q31_t)0x0C8BD35E, (q31_t)0x7D8A5F3F, (q31_t)0x18F8B83C, - (q31_t)0x7A7D055B, (q31_t)0x25280C5D, (q31_t)0x7641AF3C, - (q31_t)0x30FBC54D, (q31_t)0x70E2CBC6, (q31_t)0x3C56BA70, - (q31_t)0x6A6D98A4, (q31_t)0x471CECE6, (q31_t)0x62F201AC, - (q31_t)0x5133CC94, (q31_t)0x5A82799A, (q31_t)0x5A82799A, - (q31_t)0x5133CC94, (q31_t)0x62F201AC, (q31_t)0x471CECE6, - (q31_t)0x6A6D98A4, (q31_t)0x3C56BA70, (q31_t)0x70E2CBC6, - (q31_t)0x30FBC54D, (q31_t)0x7641AF3C, (q31_t)0x25280C5D, - (q31_t)0x7A7D055B, (q31_t)0x18F8B83C, (q31_t)0x7D8A5F3F, - (q31_t)0x0C8BD35E, (q31_t)0x7F62368F, (q31_t)0x00000000, - (q31_t)0x7FFFFFFF, (q31_t)0xF3742CA1, (q31_t)0x7F62368F, - (q31_t)0xE70747C3, (q31_t)0x7D8A5F3F, (q31_t)0xDAD7F3A2, - (q31_t)0x7A7D055B, (q31_t)0xCF043AB2, (q31_t)0x7641AF3C, - (q31_t)0xC3A9458F, (q31_t)0x70E2CBC6, (q31_t)0xB8E31319, - (q31_t)0x6A6D98A4, (q31_t)0xAECC336B, (q31_t)0x62F201AC, - (q31_t)0xA57D8666, (q31_t)0x5A82799A, (q31_t)0x9D0DFE53, - (q31_t)0x5133CC94, (q31_t)0x9592675B, (q31_t)0x471CECE6, - (q31_t)0x8F1D343A, (q31_t)0x3C56BA70, (q31_t)0x89BE50C3, - (q31_t)0x30FBC54D, (q31_t)0x8582FAA4, (q31_t)0x25280C5D, - (q31_t)0x8275A0C0, (q31_t)0x18F8B83C, (q31_t)0x809DC970, - (q31_t)0x0C8BD35E, (q31_t)0x80000000, (q31_t)0x00000000, - (q31_t)0x809DC970, (q31_t)0xF3742CA1, (q31_t)0x8275A0C0, - (q31_t)0xE70747C3, (q31_t)0x8582FAA4, (q31_t)0xDAD7F3A2, - (q31_t)0x89BE50C3, (q31_t)0xCF043AB2, (q31_t)0x8F1D343A, - (q31_t)0xC3A9458F, (q31_t)0x9592675B, (q31_t)0xB8E31319, - (q31_t)0x9D0DFE53, (q31_t)0xAECC336B, (q31_t)0xA57D8666, - (q31_t)0xA57D8666, (q31_t)0xAECC336B, (q31_t)0x9D0DFE53, - (q31_t)0xB8E31319, (q31_t)0x9592675B, (q31_t)0xC3A9458F, - (q31_t)0x8F1D343A, (q31_t)0xCF043AB2, (q31_t)0x89BE50C3, - (q31_t)0xDAD7F3A2, (q31_t)0x8582FAA4, (q31_t)0xE70747C3, - (q31_t)0x8275A0C0, (q31_t)0xF3742CA1, (q31_t)0x809DC970 -}; - -/** -* \par -* Example code for Q31 Twiddle factors Generation:: -* \par -*
for(i = 0; i< 3N/4; i++)
-* {
-*    twiddleCoefQ31[2*i]= cos(i * 2*PI/(float)N);
-*    twiddleCoefQ31[2*i+1]= sin(i * 2*PI/(float)N);
-* } 
-* \par -* where N = 128 and PI = 3.14159265358979 -* \par -* Cos and Sin values are interleaved fashion -* \par -* Convert Floating point to Q31(Fixed point 1.31): -* round(twiddleCoefQ31(i) * pow(2, 31)) -* -*/ -const q31_t twiddleCoef_128_q31[192] = { - (q31_t)0x7FFFFFFF, (q31_t)0x00000000, (q31_t)0x7FD8878D, - (q31_t)0x0647D97C, (q31_t)0x7F62368F, (q31_t)0x0C8BD35E, - (q31_t)0x7E9D55FC, (q31_t)0x12C8106E, (q31_t)0x7D8A5F3F, - (q31_t)0x18F8B83C, (q31_t)0x7C29FBEE, (q31_t)0x1F19F97B, - (q31_t)0x7A7D055B, (q31_t)0x25280C5D, (q31_t)0x78848413, - (q31_t)0x2B1F34EB, (q31_t)0x7641AF3C, (q31_t)0x30FBC54D, - (q31_t)0x73B5EBD0, (q31_t)0x36BA2013, (q31_t)0x70E2CBC6, - (q31_t)0x3C56BA70, (q31_t)0x6DCA0D14, (q31_t)0x41CE1E64, - (q31_t)0x6A6D98A4, (q31_t)0x471CECE6, (q31_t)0x66CF811F, - (q31_t)0x4C3FDFF3, (q31_t)0x62F201AC, (q31_t)0x5133CC94, - (q31_t)0x5ED77C89, (q31_t)0x55F5A4D2, (q31_t)0x5A82799A, - (q31_t)0x5A82799A, (q31_t)0x55F5A4D2, (q31_t)0x5ED77C89, - (q31_t)0x5133CC94, (q31_t)0x62F201AC, (q31_t)0x4C3FDFF3, - (q31_t)0x66CF811F, (q31_t)0x471CECE6, (q31_t)0x6A6D98A4, - (q31_t)0x41CE1E64, (q31_t)0x6DCA0D14, (q31_t)0x3C56BA70, - (q31_t)0x70E2CBC6, (q31_t)0x36BA2013, (q31_t)0x73B5EBD0, - (q31_t)0x30FBC54D, (q31_t)0x7641AF3C, (q31_t)0x2B1F34EB, - (q31_t)0x78848413, (q31_t)0x25280C5D, (q31_t)0x7A7D055B, - (q31_t)0x1F19F97B, (q31_t)0x7C29FBEE, (q31_t)0x18F8B83C, - (q31_t)0x7D8A5F3F, (q31_t)0x12C8106E, (q31_t)0x7E9D55FC, - (q31_t)0x0C8BD35E, (q31_t)0x7F62368F, (q31_t)0x0647D97C, - (q31_t)0x7FD8878D, (q31_t)0x00000000, (q31_t)0x7FFFFFFF, - (q31_t)0xF9B82683, (q31_t)0x7FD8878D, (q31_t)0xF3742CA1, - (q31_t)0x7F62368F, (q31_t)0xED37EF91, (q31_t)0x7E9D55FC, - (q31_t)0xE70747C3, (q31_t)0x7D8A5F3F, (q31_t)0xE0E60684, - (q31_t)0x7C29FBEE, (q31_t)0xDAD7F3A2, (q31_t)0x7A7D055B, - (q31_t)0xD4E0CB14, (q31_t)0x78848413, (q31_t)0xCF043AB2, - (q31_t)0x7641AF3C, (q31_t)0xC945DFEC, (q31_t)0x73B5EBD0, - (q31_t)0xC3A9458F, (q31_t)0x70E2CBC6, (q31_t)0xBE31E19B, - (q31_t)0x6DCA0D14, (q31_t)0xB8E31319, (q31_t)0x6A6D98A4, - (q31_t)0xB3C0200C, (q31_t)0x66CF811F, (q31_t)0xAECC336B, - (q31_t)0x62F201AC, (q31_t)0xAA0A5B2D, (q31_t)0x5ED77C89, - (q31_t)0xA57D8666, (q31_t)0x5A82799A, (q31_t)0xA1288376, - (q31_t)0x55F5A4D2, (q31_t)0x9D0DFE53, (q31_t)0x5133CC94, - (q31_t)0x99307EE0, (q31_t)0x4C3FDFF3, (q31_t)0x9592675B, - (q31_t)0x471CECE6, (q31_t)0x9235F2EB, (q31_t)0x41CE1E64, - (q31_t)0x8F1D343A, (q31_t)0x3C56BA70, (q31_t)0x8C4A142F, - (q31_t)0x36BA2013, (q31_t)0x89BE50C3, (q31_t)0x30FBC54D, - (q31_t)0x877B7BEC, (q31_t)0x2B1F34EB, (q31_t)0x8582FAA4, - (q31_t)0x25280C5D, (q31_t)0x83D60411, (q31_t)0x1F19F97B, - (q31_t)0x8275A0C0, (q31_t)0x18F8B83C, (q31_t)0x8162AA03, - (q31_t)0x12C8106E, (q31_t)0x809DC970, (q31_t)0x0C8BD35E, - (q31_t)0x80277872, (q31_t)0x0647D97C, (q31_t)0x80000000, - (q31_t)0x00000000, (q31_t)0x80277872, (q31_t)0xF9B82683, - (q31_t)0x809DC970, (q31_t)0xF3742CA1, (q31_t)0x8162AA03, - (q31_t)0xED37EF91, (q31_t)0x8275A0C0, (q31_t)0xE70747C3, - (q31_t)0x83D60411, (q31_t)0xE0E60684, (q31_t)0x8582FAA4, - (q31_t)0xDAD7F3A2, (q31_t)0x877B7BEC, (q31_t)0xD4E0CB14, - (q31_t)0x89BE50C3, (q31_t)0xCF043AB2, (q31_t)0x8C4A142F, - (q31_t)0xC945DFEC, (q31_t)0x8F1D343A, (q31_t)0xC3A9458F, - (q31_t)0x9235F2EB, (q31_t)0xBE31E19B, (q31_t)0x9592675B, - (q31_t)0xB8E31319, (q31_t)0x99307EE0, (q31_t)0xB3C0200C, - (q31_t)0x9D0DFE53, (q31_t)0xAECC336B, (q31_t)0xA1288376, - (q31_t)0xAA0A5B2D, (q31_t)0xA57D8666, (q31_t)0xA57D8666, - (q31_t)0xAA0A5B2D, (q31_t)0xA1288376, (q31_t)0xAECC336B, - (q31_t)0x9D0DFE53, (q31_t)0xB3C0200C, (q31_t)0x99307EE0, - (q31_t)0xB8E31319, (q31_t)0x9592675B, (q31_t)0xBE31E19B, - (q31_t)0x9235F2EB, (q31_t)0xC3A9458F, (q31_t)0x8F1D343A, - (q31_t)0xC945DFEC, (q31_t)0x8C4A142F, (q31_t)0xCF043AB2, - (q31_t)0x89BE50C3, (q31_t)0xD4E0CB14, (q31_t)0x877B7BEC, - (q31_t)0xDAD7F3A2, (q31_t)0x8582FAA4, (q31_t)0xE0E60684, - (q31_t)0x83D60411, (q31_t)0xE70747C3, (q31_t)0x8275A0C0, - (q31_t)0xED37EF91, (q31_t)0x8162AA03, (q31_t)0xF3742CA1, - (q31_t)0x809DC970, (q31_t)0xF9B82683, (q31_t)0x80277872 -}; - -/** -* \par -* Example code for Q31 Twiddle factors Generation:: -* \par -*
for(i = 0; i< 3N/4; i++)
-* {
-*    twiddleCoefQ31[2*i]= cos(i * 2*PI/(float)N);
-*    twiddleCoefQ31[2*i+1]= sin(i * 2*PI/(float)N);
-* } 
-* \par -* where N = 256 and PI = 3.14159265358979 -* \par -* Cos and Sin values are interleaved fashion -* \par -* Convert Floating point to Q31(Fixed point 1.31): -* round(twiddleCoefQ31(i) * pow(2, 31)) -* -*/ -const q31_t twiddleCoef_256_q31[384] = { - (q31_t)0x7FFFFFFF, (q31_t)0x00000000, (q31_t)0x7FF62182, - (q31_t)0x03242ABF, (q31_t)0x7FD8878D, (q31_t)0x0647D97C, - (q31_t)0x7FA736B4, (q31_t)0x096A9049, (q31_t)0x7F62368F, - (q31_t)0x0C8BD35E, (q31_t)0x7F0991C3, (q31_t)0x0FAB272B, - (q31_t)0x7E9D55FC, (q31_t)0x12C8106E, (q31_t)0x7E1D93E9, - (q31_t)0x15E21444, (q31_t)0x7D8A5F3F, (q31_t)0x18F8B83C, - (q31_t)0x7CE3CEB1, (q31_t)0x1C0B826A, (q31_t)0x7C29FBEE, - (q31_t)0x1F19F97B, (q31_t)0x7B5D039D, (q31_t)0x2223A4C5, - (q31_t)0x7A7D055B, (q31_t)0x25280C5D, (q31_t)0x798A23B1, - (q31_t)0x2826B928, (q31_t)0x78848413, (q31_t)0x2B1F34EB, - (q31_t)0x776C4EDB, (q31_t)0x2E110A62, (q31_t)0x7641AF3C, - (q31_t)0x30FBC54D, (q31_t)0x7504D345, (q31_t)0x33DEF287, - (q31_t)0x73B5EBD0, (q31_t)0x36BA2013, (q31_t)0x72552C84, - (q31_t)0x398CDD32, (q31_t)0x70E2CBC6, (q31_t)0x3C56BA70, - (q31_t)0x6F5F02B1, (q31_t)0x3F1749B7, (q31_t)0x6DCA0D14, - (q31_t)0x41CE1E64, (q31_t)0x6C242960, (q31_t)0x447ACD50, - (q31_t)0x6A6D98A4, (q31_t)0x471CECE6, (q31_t)0x68A69E81, - (q31_t)0x49B41533, (q31_t)0x66CF811F, (q31_t)0x4C3FDFF3, - (q31_t)0x64E88926, (q31_t)0x4EBFE8A4, (q31_t)0x62F201AC, - (q31_t)0x5133CC94, (q31_t)0x60EC3830, (q31_t)0x539B2AEF, - (q31_t)0x5ED77C89, (q31_t)0x55F5A4D2, (q31_t)0x5CB420DF, - (q31_t)0x5842DD54, (q31_t)0x5A82799A, (q31_t)0x5A82799A, - (q31_t)0x5842DD54, (q31_t)0x5CB420DF, (q31_t)0x55F5A4D2, - (q31_t)0x5ED77C89, (q31_t)0x539B2AEF, (q31_t)0x60EC3830, - (q31_t)0x5133CC94, (q31_t)0x62F201AC, (q31_t)0x4EBFE8A4, - (q31_t)0x64E88926, (q31_t)0x4C3FDFF3, (q31_t)0x66CF811F, - (q31_t)0x49B41533, (q31_t)0x68A69E81, (q31_t)0x471CECE6, - (q31_t)0x6A6D98A4, (q31_t)0x447ACD50, (q31_t)0x6C242960, - (q31_t)0x41CE1E64, (q31_t)0x6DCA0D14, (q31_t)0x3F1749B7, - (q31_t)0x6F5F02B1, (q31_t)0x3C56BA70, (q31_t)0x70E2CBC6, - (q31_t)0x398CDD32, (q31_t)0x72552C84, (q31_t)0x36BA2013, - (q31_t)0x73B5EBD0, (q31_t)0x33DEF287, (q31_t)0x7504D345, - (q31_t)0x30FBC54D, (q31_t)0x7641AF3C, (q31_t)0x2E110A62, - (q31_t)0x776C4EDB, (q31_t)0x2B1F34EB, (q31_t)0x78848413, - (q31_t)0x2826B928, (q31_t)0x798A23B1, (q31_t)0x25280C5D, - (q31_t)0x7A7D055B, (q31_t)0x2223A4C5, (q31_t)0x7B5D039D, - (q31_t)0x1F19F97B, (q31_t)0x7C29FBEE, (q31_t)0x1C0B826A, - (q31_t)0x7CE3CEB1, (q31_t)0x18F8B83C, (q31_t)0x7D8A5F3F, - (q31_t)0x15E21444, (q31_t)0x7E1D93E9, (q31_t)0x12C8106E, - (q31_t)0x7E9D55FC, (q31_t)0x0FAB272B, (q31_t)0x7F0991C3, - (q31_t)0x0C8BD35E, (q31_t)0x7F62368F, (q31_t)0x096A9049, - (q31_t)0x7FA736B4, (q31_t)0x0647D97C, (q31_t)0x7FD8878D, - (q31_t)0x03242ABF, (q31_t)0x7FF62182, (q31_t)0x00000000, - (q31_t)0x7FFFFFFF, (q31_t)0xFCDBD541, (q31_t)0x7FF62182, - (q31_t)0xF9B82683, (q31_t)0x7FD8878D, (q31_t)0xF6956FB6, - (q31_t)0x7FA736B4, (q31_t)0xF3742CA1, (q31_t)0x7F62368F, - (q31_t)0xF054D8D4, (q31_t)0x7F0991C3, (q31_t)0xED37EF91, - (q31_t)0x7E9D55FC, (q31_t)0xEA1DEBBB, (q31_t)0x7E1D93E9, - (q31_t)0xE70747C3, (q31_t)0x7D8A5F3F, (q31_t)0xE3F47D95, - (q31_t)0x7CE3CEB1, (q31_t)0xE0E60684, (q31_t)0x7C29FBEE, - (q31_t)0xDDDC5B3A, (q31_t)0x7B5D039D, (q31_t)0xDAD7F3A2, - (q31_t)0x7A7D055B, (q31_t)0xD7D946D7, (q31_t)0x798A23B1, - (q31_t)0xD4E0CB14, (q31_t)0x78848413, (q31_t)0xD1EEF59E, - (q31_t)0x776C4EDB, (q31_t)0xCF043AB2, (q31_t)0x7641AF3C, - (q31_t)0xCC210D78, (q31_t)0x7504D345, (q31_t)0xC945DFEC, - (q31_t)0x73B5EBD0, (q31_t)0xC67322CD, (q31_t)0x72552C84, - (q31_t)0xC3A9458F, (q31_t)0x70E2CBC6, (q31_t)0xC0E8B648, - (q31_t)0x6F5F02B1, (q31_t)0xBE31E19B, (q31_t)0x6DCA0D14, - (q31_t)0xBB8532AF, (q31_t)0x6C242960, (q31_t)0xB8E31319, - (q31_t)0x6A6D98A4, (q31_t)0xB64BEACC, (q31_t)0x68A69E81, - (q31_t)0xB3C0200C, (q31_t)0x66CF811F, (q31_t)0xB140175B, - (q31_t)0x64E88926, (q31_t)0xAECC336B, (q31_t)0x62F201AC, - (q31_t)0xAC64D510, (q31_t)0x60EC3830, (q31_t)0xAA0A5B2D, - (q31_t)0x5ED77C89, (q31_t)0xA7BD22AB, (q31_t)0x5CB420DF, - (q31_t)0xA57D8666, (q31_t)0x5A82799A, (q31_t)0xA34BDF20, - (q31_t)0x5842DD54, (q31_t)0xA1288376, (q31_t)0x55F5A4D2, - (q31_t)0x9F13C7D0, (q31_t)0x539B2AEF, (q31_t)0x9D0DFE53, - (q31_t)0x5133CC94, (q31_t)0x9B1776D9, (q31_t)0x4EBFE8A4, - (q31_t)0x99307EE0, (q31_t)0x4C3FDFF3, (q31_t)0x9759617E, - (q31_t)0x49B41533, (q31_t)0x9592675B, (q31_t)0x471CECE6, - (q31_t)0x93DBD69F, (q31_t)0x447ACD50, (q31_t)0x9235F2EB, - (q31_t)0x41CE1E64, (q31_t)0x90A0FD4E, (q31_t)0x3F1749B7, - (q31_t)0x8F1D343A, (q31_t)0x3C56BA70, (q31_t)0x8DAAD37B, - (q31_t)0x398CDD32, (q31_t)0x8C4A142F, (q31_t)0x36BA2013, - (q31_t)0x8AFB2CBA, (q31_t)0x33DEF287, (q31_t)0x89BE50C3, - (q31_t)0x30FBC54D, (q31_t)0x8893B124, (q31_t)0x2E110A62, - (q31_t)0x877B7BEC, (q31_t)0x2B1F34EB, (q31_t)0x8675DC4E, - (q31_t)0x2826B928, (q31_t)0x8582FAA4, (q31_t)0x25280C5D, - (q31_t)0x84A2FC62, (q31_t)0x2223A4C5, (q31_t)0x83D60411, - (q31_t)0x1F19F97B, (q31_t)0x831C314E, (q31_t)0x1C0B826A, - (q31_t)0x8275A0C0, (q31_t)0x18F8B83C, (q31_t)0x81E26C16, - (q31_t)0x15E21444, (q31_t)0x8162AA03, (q31_t)0x12C8106E, - (q31_t)0x80F66E3C, (q31_t)0x0FAB272B, (q31_t)0x809DC970, - (q31_t)0x0C8BD35E, (q31_t)0x8058C94C, (q31_t)0x096A9049, - (q31_t)0x80277872, (q31_t)0x0647D97C, (q31_t)0x8009DE7D, - (q31_t)0x03242ABF, (q31_t)0x80000000, (q31_t)0x00000000, - (q31_t)0x8009DE7D, (q31_t)0xFCDBD541, (q31_t)0x80277872, - (q31_t)0xF9B82683, (q31_t)0x8058C94C, (q31_t)0xF6956FB6, - (q31_t)0x809DC970, (q31_t)0xF3742CA1, (q31_t)0x80F66E3C, - (q31_t)0xF054D8D4, (q31_t)0x8162AA03, (q31_t)0xED37EF91, - (q31_t)0x81E26C16, (q31_t)0xEA1DEBBB, (q31_t)0x8275A0C0, - (q31_t)0xE70747C3, (q31_t)0x831C314E, (q31_t)0xE3F47D95, - (q31_t)0x83D60411, (q31_t)0xE0E60684, (q31_t)0x84A2FC62, - (q31_t)0xDDDC5B3A, (q31_t)0x8582FAA4, (q31_t)0xDAD7F3A2, - (q31_t)0x8675DC4E, (q31_t)0xD7D946D7, (q31_t)0x877B7BEC, - (q31_t)0xD4E0CB14, (q31_t)0x8893B124, (q31_t)0xD1EEF59E, - (q31_t)0x89BE50C3, (q31_t)0xCF043AB2, (q31_t)0x8AFB2CBA, - (q31_t)0xCC210D78, (q31_t)0x8C4A142F, (q31_t)0xC945DFEC, - (q31_t)0x8DAAD37B, (q31_t)0xC67322CD, (q31_t)0x8F1D343A, - (q31_t)0xC3A9458F, (q31_t)0x90A0FD4E, (q31_t)0xC0E8B648, - (q31_t)0x9235F2EB, (q31_t)0xBE31E19B, (q31_t)0x93DBD69F, - (q31_t)0xBB8532AF, (q31_t)0x9592675B, (q31_t)0xB8E31319, - (q31_t)0x9759617E, (q31_t)0xB64BEACC, (q31_t)0x99307EE0, - (q31_t)0xB3C0200C, (q31_t)0x9B1776D9, (q31_t)0xB140175B, - (q31_t)0x9D0DFE53, (q31_t)0xAECC336B, (q31_t)0x9F13C7D0, - (q31_t)0xAC64D510, (q31_t)0xA1288376, (q31_t)0xAA0A5B2D, - (q31_t)0xA34BDF20, (q31_t)0xA7BD22AB, (q31_t)0xA57D8666, - (q31_t)0xA57D8666, (q31_t)0xA7BD22AB, (q31_t)0xA34BDF20, - (q31_t)0xAA0A5B2D, (q31_t)0xA1288376, (q31_t)0xAC64D510, - (q31_t)0x9F13C7D0, (q31_t)0xAECC336B, (q31_t)0x9D0DFE53, - (q31_t)0xB140175B, (q31_t)0x9B1776D9, (q31_t)0xB3C0200C, - (q31_t)0x99307EE0, (q31_t)0xB64BEACC, (q31_t)0x9759617E, - (q31_t)0xB8E31319, (q31_t)0x9592675B, (q31_t)0xBB8532AF, - (q31_t)0x93DBD69F, (q31_t)0xBE31E19B, (q31_t)0x9235F2EB, - (q31_t)0xC0E8B648, (q31_t)0x90A0FD4E, (q31_t)0xC3A9458F, - (q31_t)0x8F1D343A, (q31_t)0xC67322CD, (q31_t)0x8DAAD37B, - (q31_t)0xC945DFEC, (q31_t)0x8C4A142F, (q31_t)0xCC210D78, - (q31_t)0x8AFB2CBA, (q31_t)0xCF043AB2, (q31_t)0x89BE50C3, - (q31_t)0xD1EEF59E, (q31_t)0x8893B124, (q31_t)0xD4E0CB14, - (q31_t)0x877B7BEC, (q31_t)0xD7D946D7, (q31_t)0x8675DC4E, - (q31_t)0xDAD7F3A2, (q31_t)0x8582FAA4, (q31_t)0xDDDC5B3A, - (q31_t)0x84A2FC62, (q31_t)0xE0E60684, (q31_t)0x83D60411, - (q31_t)0xE3F47D95, (q31_t)0x831C314E, (q31_t)0xE70747C3, - (q31_t)0x8275A0C0, (q31_t)0xEA1DEBBB, (q31_t)0x81E26C16, - (q31_t)0xED37EF91, (q31_t)0x8162AA03, (q31_t)0xF054D8D4, - (q31_t)0x80F66E3C, (q31_t)0xF3742CA1, (q31_t)0x809DC970, - (q31_t)0xF6956FB6, (q31_t)0x8058C94C, (q31_t)0xF9B82683, - (q31_t)0x80277872, (q31_t)0xFCDBD541, (q31_t)0x8009DE7D -}; - -/** -* \par -* Example code for Q31 Twiddle factors Generation:: -* \par -*
for(i = 0; i< 3N/4; i++)
-* {
-*    twiddleCoefQ31[2*i]= cos(i * 2*PI/(float)N);
-*    twiddleCoefQ31[2*i+1]= sin(i * 2*PI/(float)N);
-* } 
-* \par -* where N = 512 and PI = 3.14159265358979 -* \par -* Cos and Sin values are interleaved fashion -* \par -* Convert Floating point to Q31(Fixed point 1.31): -* round(twiddleCoefQ31(i) * pow(2, 31)) -* -*/ -const q31_t twiddleCoef_512_q31[768] = { - (q31_t)0x7FFFFFFF, (q31_t)0x00000000, (q31_t)0x7FFD885A, - (q31_t)0x01921D1F, (q31_t)0x7FF62182, (q31_t)0x03242ABF, - (q31_t)0x7FE9CBC0, (q31_t)0x04B6195D, (q31_t)0x7FD8878D, - (q31_t)0x0647D97C, (q31_t)0x7FC25596, (q31_t)0x07D95B9E, - (q31_t)0x7FA736B4, (q31_t)0x096A9049, (q31_t)0x7F872BF3, - (q31_t)0x0AFB6805, (q31_t)0x7F62368F, (q31_t)0x0C8BD35E, - (q31_t)0x7F3857F5, (q31_t)0x0E1BC2E3, (q31_t)0x7F0991C3, - (q31_t)0x0FAB272B, (q31_t)0x7ED5E5C6, (q31_t)0x1139F0CE, - (q31_t)0x7E9D55FC, (q31_t)0x12C8106E, (q31_t)0x7E5FE493, - (q31_t)0x145576B1, (q31_t)0x7E1D93E9, (q31_t)0x15E21444, - (q31_t)0x7DD6668E, (q31_t)0x176DD9DE, (q31_t)0x7D8A5F3F, - (q31_t)0x18F8B83C, (q31_t)0x7D3980EC, (q31_t)0x1A82A025, - (q31_t)0x7CE3CEB1, (q31_t)0x1C0B826A, (q31_t)0x7C894BDD, - (q31_t)0x1D934FE5, (q31_t)0x7C29FBEE, (q31_t)0x1F19F97B, - (q31_t)0x7BC5E28F, (q31_t)0x209F701C, (q31_t)0x7B5D039D, - (q31_t)0x2223A4C5, (q31_t)0x7AEF6323, (q31_t)0x23A6887E, - (q31_t)0x7A7D055B, (q31_t)0x25280C5D, (q31_t)0x7A05EEAD, - (q31_t)0x26A82185, (q31_t)0x798A23B1, (q31_t)0x2826B928, - (q31_t)0x7909A92C, (q31_t)0x29A3C484, (q31_t)0x78848413, - (q31_t)0x2B1F34EB, (q31_t)0x77FAB988, (q31_t)0x2C98FBBA, - (q31_t)0x776C4EDB, (q31_t)0x2E110A62, (q31_t)0x76D94988, - (q31_t)0x2F875262, (q31_t)0x7641AF3C, (q31_t)0x30FBC54D, - (q31_t)0x75A585CF, (q31_t)0x326E54C7, (q31_t)0x7504D345, - (q31_t)0x33DEF287, (q31_t)0x745F9DD1, (q31_t)0x354D9056, - (q31_t)0x73B5EBD0, (q31_t)0x36BA2013, (q31_t)0x7307C3D0, - (q31_t)0x382493B0, (q31_t)0x72552C84, (q31_t)0x398CDD32, - (q31_t)0x719E2CD2, (q31_t)0x3AF2EEB7, (q31_t)0x70E2CBC6, - (q31_t)0x3C56BA70, (q31_t)0x70231099, (q31_t)0x3DB832A5, - (q31_t)0x6F5F02B1, (q31_t)0x3F1749B7, (q31_t)0x6E96A99C, - (q31_t)0x4073F21D, (q31_t)0x6DCA0D14, (q31_t)0x41CE1E64, - (q31_t)0x6CF934FB, (q31_t)0x4325C135, (q31_t)0x6C242960, - (q31_t)0x447ACD50, (q31_t)0x6B4AF278, (q31_t)0x45CD358F, - (q31_t)0x6A6D98A4, (q31_t)0x471CECE6, (q31_t)0x698C246C, - (q31_t)0x4869E664, (q31_t)0x68A69E81, (q31_t)0x49B41533, - (q31_t)0x67BD0FBC, (q31_t)0x4AFB6C97, (q31_t)0x66CF811F, - (q31_t)0x4C3FDFF3, (q31_t)0x65DDFBD3, (q31_t)0x4D8162C4, - (q31_t)0x64E88926, (q31_t)0x4EBFE8A4, (q31_t)0x63EF328F, - (q31_t)0x4FFB654D, (q31_t)0x62F201AC, (q31_t)0x5133CC94, - (q31_t)0x61F1003E, (q31_t)0x5269126E, (q31_t)0x60EC3830, - (q31_t)0x539B2AEF, (q31_t)0x5FE3B38D, (q31_t)0x54CA0A4A, - (q31_t)0x5ED77C89, (q31_t)0x55F5A4D2, (q31_t)0x5DC79D7C, - (q31_t)0x571DEEF9, (q31_t)0x5CB420DF, (q31_t)0x5842DD54, - (q31_t)0x5B9D1153, (q31_t)0x59646497, (q31_t)0x5A82799A, - (q31_t)0x5A82799A, (q31_t)0x59646497, (q31_t)0x5B9D1153, - (q31_t)0x5842DD54, (q31_t)0x5CB420DF, (q31_t)0x571DEEF9, - (q31_t)0x5DC79D7C, (q31_t)0x55F5A4D2, (q31_t)0x5ED77C89, - (q31_t)0x54CA0A4A, (q31_t)0x5FE3B38D, (q31_t)0x539B2AEF, - (q31_t)0x60EC3830, (q31_t)0x5269126E, (q31_t)0x61F1003E, - (q31_t)0x5133CC94, (q31_t)0x62F201AC, (q31_t)0x4FFB654D, - (q31_t)0x63EF328F, (q31_t)0x4EBFE8A4, (q31_t)0x64E88926, - (q31_t)0x4D8162C4, (q31_t)0x65DDFBD3, (q31_t)0x4C3FDFF3, - (q31_t)0x66CF811F, (q31_t)0x4AFB6C97, (q31_t)0x67BD0FBC, - (q31_t)0x49B41533, (q31_t)0x68A69E81, (q31_t)0x4869E664, - (q31_t)0x698C246C, (q31_t)0x471CECE6, (q31_t)0x6A6D98A4, - (q31_t)0x45CD358F, (q31_t)0x6B4AF278, (q31_t)0x447ACD50, - (q31_t)0x6C242960, (q31_t)0x4325C135, (q31_t)0x6CF934FB, - (q31_t)0x41CE1E64, (q31_t)0x6DCA0D14, (q31_t)0x4073F21D, - (q31_t)0x6E96A99C, (q31_t)0x3F1749B7, (q31_t)0x6F5F02B1, - (q31_t)0x3DB832A5, (q31_t)0x70231099, (q31_t)0x3C56BA70, - (q31_t)0x70E2CBC6, (q31_t)0x3AF2EEB7, (q31_t)0x719E2CD2, - (q31_t)0x398CDD32, (q31_t)0x72552C84, (q31_t)0x382493B0, - (q31_t)0x7307C3D0, (q31_t)0x36BA2013, (q31_t)0x73B5EBD0, - (q31_t)0x354D9056, (q31_t)0x745F9DD1, (q31_t)0x33DEF287, - (q31_t)0x7504D345, (q31_t)0x326E54C7, (q31_t)0x75A585CF, - (q31_t)0x30FBC54D, (q31_t)0x7641AF3C, (q31_t)0x2F875262, - (q31_t)0x76D94988, (q31_t)0x2E110A62, (q31_t)0x776C4EDB, - (q31_t)0x2C98FBBA, (q31_t)0x77FAB988, (q31_t)0x2B1F34EB, - (q31_t)0x78848413, (q31_t)0x29A3C484, (q31_t)0x7909A92C, - (q31_t)0x2826B928, (q31_t)0x798A23B1, (q31_t)0x26A82185, - (q31_t)0x7A05EEAD, (q31_t)0x25280C5D, (q31_t)0x7A7D055B, - (q31_t)0x23A6887E, (q31_t)0x7AEF6323, (q31_t)0x2223A4C5, - (q31_t)0x7B5D039D, (q31_t)0x209F701C, (q31_t)0x7BC5E28F, - (q31_t)0x1F19F97B, (q31_t)0x7C29FBEE, (q31_t)0x1D934FE5, - (q31_t)0x7C894BDD, (q31_t)0x1C0B826A, (q31_t)0x7CE3CEB1, - (q31_t)0x1A82A025, (q31_t)0x7D3980EC, (q31_t)0x18F8B83C, - (q31_t)0x7D8A5F3F, (q31_t)0x176DD9DE, (q31_t)0x7DD6668E, - (q31_t)0x15E21444, (q31_t)0x7E1D93E9, (q31_t)0x145576B1, - (q31_t)0x7E5FE493, (q31_t)0x12C8106E, (q31_t)0x7E9D55FC, - (q31_t)0x1139F0CE, (q31_t)0x7ED5E5C6, (q31_t)0x0FAB272B, - (q31_t)0x7F0991C3, (q31_t)0x0E1BC2E3, (q31_t)0x7F3857F5, - (q31_t)0x0C8BD35E, (q31_t)0x7F62368F, (q31_t)0x0AFB6805, - (q31_t)0x7F872BF3, (q31_t)0x096A9049, (q31_t)0x7FA736B4, - (q31_t)0x07D95B9E, (q31_t)0x7FC25596, (q31_t)0x0647D97C, - (q31_t)0x7FD8878D, (q31_t)0x04B6195D, (q31_t)0x7FE9CBC0, - (q31_t)0x03242ABF, (q31_t)0x7FF62182, (q31_t)0x01921D1F, - (q31_t)0x7FFD885A, (q31_t)0x00000000, (q31_t)0x7FFFFFFF, - (q31_t)0xFE6DE2E0, (q31_t)0x7FFD885A, (q31_t)0xFCDBD541, - (q31_t)0x7FF62182, (q31_t)0xFB49E6A2, (q31_t)0x7FE9CBC0, - (q31_t)0xF9B82683, (q31_t)0x7FD8878D, (q31_t)0xF826A461, - (q31_t)0x7FC25596, (q31_t)0xF6956FB6, (q31_t)0x7FA736B4, - (q31_t)0xF50497FA, (q31_t)0x7F872BF3, (q31_t)0xF3742CA1, - (q31_t)0x7F62368F, (q31_t)0xF1E43D1C, (q31_t)0x7F3857F5, - (q31_t)0xF054D8D4, (q31_t)0x7F0991C3, (q31_t)0xEEC60F31, - (q31_t)0x7ED5E5C6, (q31_t)0xED37EF91, (q31_t)0x7E9D55FC, - (q31_t)0xEBAA894E, (q31_t)0x7E5FE493, (q31_t)0xEA1DEBBB, - (q31_t)0x7E1D93E9, (q31_t)0xE8922621, (q31_t)0x7DD6668E, - (q31_t)0xE70747C3, (q31_t)0x7D8A5F3F, (q31_t)0xE57D5FDA, - (q31_t)0x7D3980EC, (q31_t)0xE3F47D95, (q31_t)0x7CE3CEB1, - (q31_t)0xE26CB01A, (q31_t)0x7C894BDD, (q31_t)0xE0E60684, - (q31_t)0x7C29FBEE, (q31_t)0xDF608FE3, (q31_t)0x7BC5E28F, - (q31_t)0xDDDC5B3A, (q31_t)0x7B5D039D, (q31_t)0xDC597781, - (q31_t)0x7AEF6323, (q31_t)0xDAD7F3A2, (q31_t)0x7A7D055B, - (q31_t)0xD957DE7A, (q31_t)0x7A05EEAD, (q31_t)0xD7D946D7, - (q31_t)0x798A23B1, (q31_t)0xD65C3B7B, (q31_t)0x7909A92C, - (q31_t)0xD4E0CB14, (q31_t)0x78848413, (q31_t)0xD3670445, - (q31_t)0x77FAB988, (q31_t)0xD1EEF59E, (q31_t)0x776C4EDB, - (q31_t)0xD078AD9D, (q31_t)0x76D94988, (q31_t)0xCF043AB2, - (q31_t)0x7641AF3C, (q31_t)0xCD91AB38, (q31_t)0x75A585CF, - (q31_t)0xCC210D78, (q31_t)0x7504D345, (q31_t)0xCAB26FA9, - (q31_t)0x745F9DD1, (q31_t)0xC945DFEC, (q31_t)0x73B5EBD0, - (q31_t)0xC7DB6C50, (q31_t)0x7307C3D0, (q31_t)0xC67322CD, - (q31_t)0x72552C84, (q31_t)0xC50D1148, (q31_t)0x719E2CD2, - (q31_t)0xC3A9458F, (q31_t)0x70E2CBC6, (q31_t)0xC247CD5A, - (q31_t)0x70231099, (q31_t)0xC0E8B648, (q31_t)0x6F5F02B1, - (q31_t)0xBF8C0DE2, (q31_t)0x6E96A99C, (q31_t)0xBE31E19B, - (q31_t)0x6DCA0D14, (q31_t)0xBCDA3ECA, (q31_t)0x6CF934FB, - (q31_t)0xBB8532AF, (q31_t)0x6C242960, (q31_t)0xBA32CA70, - (q31_t)0x6B4AF278, (q31_t)0xB8E31319, (q31_t)0x6A6D98A4, - (q31_t)0xB796199B, (q31_t)0x698C246C, (q31_t)0xB64BEACC, - (q31_t)0x68A69E81, (q31_t)0xB5049368, (q31_t)0x67BD0FBC, - (q31_t)0xB3C0200C, (q31_t)0x66CF811F, (q31_t)0xB27E9D3B, - (q31_t)0x65DDFBD3, (q31_t)0xB140175B, (q31_t)0x64E88926, - (q31_t)0xB0049AB2, (q31_t)0x63EF328F, (q31_t)0xAECC336B, - (q31_t)0x62F201AC, (q31_t)0xAD96ED91, (q31_t)0x61F1003E, - (q31_t)0xAC64D510, (q31_t)0x60EC3830, (q31_t)0xAB35F5B5, - (q31_t)0x5FE3B38D, (q31_t)0xAA0A5B2D, (q31_t)0x5ED77C89, - (q31_t)0xA8E21106, (q31_t)0x5DC79D7C, (q31_t)0xA7BD22AB, - (q31_t)0x5CB420DF, (q31_t)0xA69B9B68, (q31_t)0x5B9D1153, - (q31_t)0xA57D8666, (q31_t)0x5A82799A, (q31_t)0xA462EEAC, - (q31_t)0x59646497, (q31_t)0xA34BDF20, (q31_t)0x5842DD54, - (q31_t)0xA2386283, (q31_t)0x571DEEF9, (q31_t)0xA1288376, - (q31_t)0x55F5A4D2, (q31_t)0xA01C4C72, (q31_t)0x54CA0A4A, - (q31_t)0x9F13C7D0, (q31_t)0x539B2AEF, (q31_t)0x9E0EFFC1, - (q31_t)0x5269126E, (q31_t)0x9D0DFE53, (q31_t)0x5133CC94, - (q31_t)0x9C10CD70, (q31_t)0x4FFB654D, (q31_t)0x9B1776D9, - (q31_t)0x4EBFE8A4, (q31_t)0x9A22042C, (q31_t)0x4D8162C4, - (q31_t)0x99307EE0, (q31_t)0x4C3FDFF3, (q31_t)0x9842F043, - (q31_t)0x4AFB6C97, (q31_t)0x9759617E, (q31_t)0x49B41533, - (q31_t)0x9673DB94, (q31_t)0x4869E664, (q31_t)0x9592675B, - (q31_t)0x471CECE6, (q31_t)0x94B50D87, (q31_t)0x45CD358F, - (q31_t)0x93DBD69F, (q31_t)0x447ACD50, (q31_t)0x9306CB04, - (q31_t)0x4325C135, (q31_t)0x9235F2EB, (q31_t)0x41CE1E64, - (q31_t)0x91695663, (q31_t)0x4073F21D, (q31_t)0x90A0FD4E, - (q31_t)0x3F1749B7, (q31_t)0x8FDCEF66, (q31_t)0x3DB832A5, - (q31_t)0x8F1D343A, (q31_t)0x3C56BA70, (q31_t)0x8E61D32D, - (q31_t)0x3AF2EEB7, (q31_t)0x8DAAD37B, (q31_t)0x398CDD32, - (q31_t)0x8CF83C30, (q31_t)0x382493B0, (q31_t)0x8C4A142F, - (q31_t)0x36BA2013, (q31_t)0x8BA0622F, (q31_t)0x354D9056, - (q31_t)0x8AFB2CBA, (q31_t)0x33DEF287, (q31_t)0x8A5A7A30, - (q31_t)0x326E54C7, (q31_t)0x89BE50C3, (q31_t)0x30FBC54D, - (q31_t)0x8926B677, (q31_t)0x2F875262, (q31_t)0x8893B124, - (q31_t)0x2E110A62, (q31_t)0x88054677, (q31_t)0x2C98FBBA, - (q31_t)0x877B7BEC, (q31_t)0x2B1F34EB, (q31_t)0x86F656D3, - (q31_t)0x29A3C484, (q31_t)0x8675DC4E, (q31_t)0x2826B928, - (q31_t)0x85FA1152, (q31_t)0x26A82185, (q31_t)0x8582FAA4, - (q31_t)0x25280C5D, (q31_t)0x85109CDC, (q31_t)0x23A6887E, - (q31_t)0x84A2FC62, (q31_t)0x2223A4C5, (q31_t)0x843A1D70, - (q31_t)0x209F701C, (q31_t)0x83D60411, (q31_t)0x1F19F97B, - (q31_t)0x8376B422, (q31_t)0x1D934FE5, (q31_t)0x831C314E, - (q31_t)0x1C0B826A, (q31_t)0x82C67F13, (q31_t)0x1A82A025, - (q31_t)0x8275A0C0, (q31_t)0x18F8B83C, (q31_t)0x82299971, - (q31_t)0x176DD9DE, (q31_t)0x81E26C16, (q31_t)0x15E21444, - (q31_t)0x81A01B6C, (q31_t)0x145576B1, (q31_t)0x8162AA03, - (q31_t)0x12C8106E, (q31_t)0x812A1A39, (q31_t)0x1139F0CE, - (q31_t)0x80F66E3C, (q31_t)0x0FAB272B, (q31_t)0x80C7A80A, - (q31_t)0x0E1BC2E3, (q31_t)0x809DC970, (q31_t)0x0C8BD35E, - (q31_t)0x8078D40D, (q31_t)0x0AFB6805, (q31_t)0x8058C94C, - (q31_t)0x096A9049, (q31_t)0x803DAA69, (q31_t)0x07D95B9E, - (q31_t)0x80277872, (q31_t)0x0647D97C, (q31_t)0x80163440, - (q31_t)0x04B6195D, (q31_t)0x8009DE7D, (q31_t)0x03242ABF, - (q31_t)0x800277A5, (q31_t)0x01921D1F, (q31_t)0x80000000, - (q31_t)0x00000000, (q31_t)0x800277A5, (q31_t)0xFE6DE2E0, - (q31_t)0x8009DE7D, (q31_t)0xFCDBD541, (q31_t)0x80163440, - (q31_t)0xFB49E6A2, (q31_t)0x80277872, (q31_t)0xF9B82683, - (q31_t)0x803DAA69, (q31_t)0xF826A461, (q31_t)0x8058C94C, - (q31_t)0xF6956FB6, (q31_t)0x8078D40D, (q31_t)0xF50497FA, - (q31_t)0x809DC970, (q31_t)0xF3742CA1, (q31_t)0x80C7A80A, - (q31_t)0xF1E43D1C, (q31_t)0x80F66E3C, (q31_t)0xF054D8D4, - (q31_t)0x812A1A39, (q31_t)0xEEC60F31, (q31_t)0x8162AA03, - (q31_t)0xED37EF91, (q31_t)0x81A01B6C, (q31_t)0xEBAA894E, - (q31_t)0x81E26C16, (q31_t)0xEA1DEBBB, (q31_t)0x82299971, - (q31_t)0xE8922621, (q31_t)0x8275A0C0, (q31_t)0xE70747C3, - (q31_t)0x82C67F13, (q31_t)0xE57D5FDA, (q31_t)0x831C314E, - (q31_t)0xE3F47D95, (q31_t)0x8376B422, (q31_t)0xE26CB01A, - (q31_t)0x83D60411, (q31_t)0xE0E60684, (q31_t)0x843A1D70, - (q31_t)0xDF608FE3, (q31_t)0x84A2FC62, (q31_t)0xDDDC5B3A, - (q31_t)0x85109CDC, (q31_t)0xDC597781, (q31_t)0x8582FAA4, - (q31_t)0xDAD7F3A2, (q31_t)0x85FA1152, (q31_t)0xD957DE7A, - (q31_t)0x8675DC4E, (q31_t)0xD7D946D7, (q31_t)0x86F656D3, - (q31_t)0xD65C3B7B, (q31_t)0x877B7BEC, (q31_t)0xD4E0CB14, - (q31_t)0x88054677, (q31_t)0xD3670445, (q31_t)0x8893B124, - (q31_t)0xD1EEF59E, (q31_t)0x8926B677, (q31_t)0xD078AD9D, - (q31_t)0x89BE50C3, (q31_t)0xCF043AB2, (q31_t)0x8A5A7A30, - (q31_t)0xCD91AB38, (q31_t)0x8AFB2CBA, (q31_t)0xCC210D78, - (q31_t)0x8BA0622F, (q31_t)0xCAB26FA9, (q31_t)0x8C4A142F, - (q31_t)0xC945DFEC, (q31_t)0x8CF83C30, (q31_t)0xC7DB6C50, - (q31_t)0x8DAAD37B, (q31_t)0xC67322CD, (q31_t)0x8E61D32D, - (q31_t)0xC50D1148, (q31_t)0x8F1D343A, (q31_t)0xC3A9458F, - (q31_t)0x8FDCEF66, (q31_t)0xC247CD5A, (q31_t)0x90A0FD4E, - (q31_t)0xC0E8B648, (q31_t)0x91695663, (q31_t)0xBF8C0DE2, - (q31_t)0x9235F2EB, (q31_t)0xBE31E19B, (q31_t)0x9306CB04, - (q31_t)0xBCDA3ECA, (q31_t)0x93DBD69F, (q31_t)0xBB8532AF, - (q31_t)0x94B50D87, (q31_t)0xBA32CA70, (q31_t)0x9592675B, - (q31_t)0xB8E31319, (q31_t)0x9673DB94, (q31_t)0xB796199B, - (q31_t)0x9759617E, (q31_t)0xB64BEACC, (q31_t)0x9842F043, - (q31_t)0xB5049368, (q31_t)0x99307EE0, (q31_t)0xB3C0200C, - (q31_t)0x9A22042C, (q31_t)0xB27E9D3B, (q31_t)0x9B1776D9, - (q31_t)0xB140175B, (q31_t)0x9C10CD70, (q31_t)0xB0049AB2, - (q31_t)0x9D0DFE53, (q31_t)0xAECC336B, (q31_t)0x9E0EFFC1, - (q31_t)0xAD96ED91, (q31_t)0x9F13C7D0, (q31_t)0xAC64D510, - (q31_t)0xA01C4C72, (q31_t)0xAB35F5B5, (q31_t)0xA1288376, - (q31_t)0xAA0A5B2D, (q31_t)0xA2386283, (q31_t)0xA8E21106, - (q31_t)0xA34BDF20, (q31_t)0xA7BD22AB, (q31_t)0xA462EEAC, - (q31_t)0xA69B9B68, (q31_t)0xA57D8666, (q31_t)0xA57D8666, - (q31_t)0xA69B9B68, (q31_t)0xA462EEAC, (q31_t)0xA7BD22AB, - (q31_t)0xA34BDF20, (q31_t)0xA8E21106, (q31_t)0xA2386283, - (q31_t)0xAA0A5B2D, (q31_t)0xA1288376, (q31_t)0xAB35F5B5, - (q31_t)0xA01C4C72, (q31_t)0xAC64D510, (q31_t)0x9F13C7D0, - (q31_t)0xAD96ED91, (q31_t)0x9E0EFFC1, (q31_t)0xAECC336B, - (q31_t)0x9D0DFE53, (q31_t)0xB0049AB2, (q31_t)0x9C10CD70, - (q31_t)0xB140175B, (q31_t)0x9B1776D9, (q31_t)0xB27E9D3B, - (q31_t)0x9A22042C, (q31_t)0xB3C0200C, (q31_t)0x99307EE0, - (q31_t)0xB5049368, (q31_t)0x9842F043, (q31_t)0xB64BEACC, - (q31_t)0x9759617E, (q31_t)0xB796199B, (q31_t)0x9673DB94, - (q31_t)0xB8E31319, (q31_t)0x9592675B, (q31_t)0xBA32CA70, - (q31_t)0x94B50D87, (q31_t)0xBB8532AF, (q31_t)0x93DBD69F, - (q31_t)0xBCDA3ECA, (q31_t)0x9306CB04, (q31_t)0xBE31E19B, - (q31_t)0x9235F2EB, (q31_t)0xBF8C0DE2, (q31_t)0x91695663, - (q31_t)0xC0E8B648, (q31_t)0x90A0FD4E, (q31_t)0xC247CD5A, - (q31_t)0x8FDCEF66, (q31_t)0xC3A9458F, (q31_t)0x8F1D343A, - (q31_t)0xC50D1148, (q31_t)0x8E61D32D, (q31_t)0xC67322CD, - (q31_t)0x8DAAD37B, (q31_t)0xC7DB6C50, (q31_t)0x8CF83C30, - (q31_t)0xC945DFEC, (q31_t)0x8C4A142F, (q31_t)0xCAB26FA9, - (q31_t)0x8BA0622F, (q31_t)0xCC210D78, (q31_t)0x8AFB2CBA, - (q31_t)0xCD91AB38, (q31_t)0x8A5A7A30, (q31_t)0xCF043AB2, - (q31_t)0x89BE50C3, (q31_t)0xD078AD9D, (q31_t)0x8926B677, - (q31_t)0xD1EEF59E, (q31_t)0x8893B124, (q31_t)0xD3670445, - (q31_t)0x88054677, (q31_t)0xD4E0CB14, (q31_t)0x877B7BEC, - (q31_t)0xD65C3B7B, (q31_t)0x86F656D3, (q31_t)0xD7D946D7, - (q31_t)0x8675DC4E, (q31_t)0xD957DE7A, (q31_t)0x85FA1152, - (q31_t)0xDAD7F3A2, (q31_t)0x8582FAA4, (q31_t)0xDC597781, - (q31_t)0x85109CDC, (q31_t)0xDDDC5B3A, (q31_t)0x84A2FC62, - (q31_t)0xDF608FE3, (q31_t)0x843A1D70, (q31_t)0xE0E60684, - (q31_t)0x83D60411, (q31_t)0xE26CB01A, (q31_t)0x8376B422, - (q31_t)0xE3F47D95, (q31_t)0x831C314E, (q31_t)0xE57D5FDA, - (q31_t)0x82C67F13, (q31_t)0xE70747C3, (q31_t)0x8275A0C0, - (q31_t)0xE8922621, (q31_t)0x82299971, (q31_t)0xEA1DEBBB, - (q31_t)0x81E26C16, (q31_t)0xEBAA894E, (q31_t)0x81A01B6C, - (q31_t)0xED37EF91, (q31_t)0x8162AA03, (q31_t)0xEEC60F31, - (q31_t)0x812A1A39, (q31_t)0xF054D8D4, (q31_t)0x80F66E3C, - (q31_t)0xF1E43D1C, (q31_t)0x80C7A80A, (q31_t)0xF3742CA1, - (q31_t)0x809DC970, (q31_t)0xF50497FA, (q31_t)0x8078D40D, - (q31_t)0xF6956FB6, (q31_t)0x8058C94C, (q31_t)0xF826A461, - (q31_t)0x803DAA69, (q31_t)0xF9B82683, (q31_t)0x80277872, - (q31_t)0xFB49E6A2, (q31_t)0x80163440, (q31_t)0xFCDBD541, - (q31_t)0x8009DE7D, (q31_t)0xFE6DE2E0, (q31_t)0x800277A5 -}; - -/** -* \par -* Example code for Q31 Twiddle factors Generation:: -* \par -*
for(i = 0; i< 3N/4; i++)
-* {
-*    twiddleCoefQ31[2*i]= cos(i * 2*PI/(float)N);
-*    twiddleCoefQ31[2*i+1]= sin(i * 2*PI/(float)N);
-* } 
-* \par -* where N = 1024 and PI = 3.14159265358979 -* \par -* Cos and Sin values are interleaved fashion -* \par -* Convert Floating point to Q31(Fixed point 1.31): -* round(twiddleCoefQ31(i) * pow(2, 31)) -* -*/ -const q31_t twiddleCoef_1024_q31[1536] = { - (q31_t)0x7FFFFFFF, (q31_t)0x00000000, (q31_t)0x7FFF6216, - (q31_t)0x00C90F88, (q31_t)0x7FFD885A, (q31_t)0x01921D1F, - (q31_t)0x7FFA72D1, (q31_t)0x025B26D7, (q31_t)0x7FF62182, - (q31_t)0x03242ABF, (q31_t)0x7FF09477, (q31_t)0x03ED26E6, - (q31_t)0x7FE9CBC0, (q31_t)0x04B6195D, (q31_t)0x7FE1C76B, - (q31_t)0x057F0034, (q31_t)0x7FD8878D, (q31_t)0x0647D97C, - (q31_t)0x7FCE0C3E, (q31_t)0x0710A344, (q31_t)0x7FC25596, - (q31_t)0x07D95B9E, (q31_t)0x7FB563B2, (q31_t)0x08A2009A, - (q31_t)0x7FA736B4, (q31_t)0x096A9049, (q31_t)0x7F97CEBC, - (q31_t)0x0A3308BC, (q31_t)0x7F872BF3, (q31_t)0x0AFB6805, - (q31_t)0x7F754E7F, (q31_t)0x0BC3AC35, (q31_t)0x7F62368F, - (q31_t)0x0C8BD35E, (q31_t)0x7F4DE450, (q31_t)0x0D53DB92, - (q31_t)0x7F3857F5, (q31_t)0x0E1BC2E3, (q31_t)0x7F2191B4, - (q31_t)0x0EE38765, (q31_t)0x7F0991C3, (q31_t)0x0FAB272B, - (q31_t)0x7EF0585F, (q31_t)0x1072A047, (q31_t)0x7ED5E5C6, - (q31_t)0x1139F0CE, (q31_t)0x7EBA3A39, (q31_t)0x120116D4, - (q31_t)0x7E9D55FC, (q31_t)0x12C8106E, (q31_t)0x7E7F3956, - (q31_t)0x138EDBB0, (q31_t)0x7E5FE493, (q31_t)0x145576B1, - (q31_t)0x7E3F57FE, (q31_t)0x151BDF85, (q31_t)0x7E1D93E9, - (q31_t)0x15E21444, (q31_t)0x7DFA98A7, (q31_t)0x16A81305, - (q31_t)0x7DD6668E, (q31_t)0x176DD9DE, (q31_t)0x7DB0FDF7, - (q31_t)0x183366E8, (q31_t)0x7D8A5F3F, (q31_t)0x18F8B83C, - (q31_t)0x7D628AC5, (q31_t)0x19BDCBF2, (q31_t)0x7D3980EC, - (q31_t)0x1A82A025, (q31_t)0x7D0F4218, (q31_t)0x1B4732EF, - (q31_t)0x7CE3CEB1, (q31_t)0x1C0B826A, (q31_t)0x7CB72724, - (q31_t)0x1CCF8CB3, (q31_t)0x7C894BDD, (q31_t)0x1D934FE5, - (q31_t)0x7C5A3D4F, (q31_t)0x1E56CA1E, (q31_t)0x7C29FBEE, - (q31_t)0x1F19F97B, (q31_t)0x7BF88830, (q31_t)0x1FDCDC1A, - (q31_t)0x7BC5E28F, (q31_t)0x209F701C, (q31_t)0x7B920B89, - (q31_t)0x2161B39F, (q31_t)0x7B5D039D, (q31_t)0x2223A4C5, - (q31_t)0x7B26CB4F, (q31_t)0x22E541AE, (q31_t)0x7AEF6323, - (q31_t)0x23A6887E, (q31_t)0x7AB6CBA3, (q31_t)0x24677757, - (q31_t)0x7A7D055B, (q31_t)0x25280C5D, (q31_t)0x7A4210D8, - (q31_t)0x25E845B5, (q31_t)0x7A05EEAD, (q31_t)0x26A82185, - (q31_t)0x79C89F6D, (q31_t)0x27679DF4, (q31_t)0x798A23B1, - (q31_t)0x2826B928, (q31_t)0x794A7C11, (q31_t)0x28E5714A, - (q31_t)0x7909A92C, (q31_t)0x29A3C484, (q31_t)0x78C7ABA1, - (q31_t)0x2A61B101, (q31_t)0x78848413, (q31_t)0x2B1F34EB, - (q31_t)0x78403328, (q31_t)0x2BDC4E6F, (q31_t)0x77FAB988, - (q31_t)0x2C98FBBA, (q31_t)0x77B417DF, (q31_t)0x2D553AFB, - (q31_t)0x776C4EDB, (q31_t)0x2E110A62, (q31_t)0x77235F2D, - (q31_t)0x2ECC681E, (q31_t)0x76D94988, (q31_t)0x2F875262, - (q31_t)0x768E0EA5, (q31_t)0x3041C760, (q31_t)0x7641AF3C, - (q31_t)0x30FBC54D, (q31_t)0x75F42C0A, (q31_t)0x31B54A5D, - (q31_t)0x75A585CF, (q31_t)0x326E54C7, (q31_t)0x7555BD4B, - (q31_t)0x3326E2C2, (q31_t)0x7504D345, (q31_t)0x33DEF287, - (q31_t)0x74B2C883, (q31_t)0x3496824F, (q31_t)0x745F9DD1, - (q31_t)0x354D9056, (q31_t)0x740B53FA, (q31_t)0x36041AD9, - (q31_t)0x73B5EBD0, (q31_t)0x36BA2013, (q31_t)0x735F6626, - (q31_t)0x376F9E46, (q31_t)0x7307C3D0, (q31_t)0x382493B0, - (q31_t)0x72AF05A6, (q31_t)0x38D8FE93, (q31_t)0x72552C84, - (q31_t)0x398CDD32, (q31_t)0x71FA3948, (q31_t)0x3A402DD1, - (q31_t)0x719E2CD2, (q31_t)0x3AF2EEB7, (q31_t)0x71410804, - (q31_t)0x3BA51E29, (q31_t)0x70E2CBC6, (q31_t)0x3C56BA70, - (q31_t)0x708378FE, (q31_t)0x3D07C1D5, (q31_t)0x70231099, - (q31_t)0x3DB832A5, (q31_t)0x6FC19385, (q31_t)0x3E680B2C, - (q31_t)0x6F5F02B1, (q31_t)0x3F1749B7, (q31_t)0x6EFB5F12, - (q31_t)0x3FC5EC97, (q31_t)0x6E96A99C, (q31_t)0x4073F21D, - (q31_t)0x6E30E349, (q31_t)0x4121589A, (q31_t)0x6DCA0D14, - (q31_t)0x41CE1E64, (q31_t)0x6D6227FA, (q31_t)0x427A41D0, - (q31_t)0x6CF934FB, (q31_t)0x4325C135, (q31_t)0x6C8F351C, - (q31_t)0x43D09AEC, (q31_t)0x6C242960, (q31_t)0x447ACD50, - (q31_t)0x6BB812D0, (q31_t)0x452456BC, (q31_t)0x6B4AF278, - (q31_t)0x45CD358F, (q31_t)0x6ADCC964, (q31_t)0x46756827, - (q31_t)0x6A6D98A4, (q31_t)0x471CECE6, (q31_t)0x69FD614A, - (q31_t)0x47C3C22E, (q31_t)0x698C246C, (q31_t)0x4869E664, - (q31_t)0x6919E320, (q31_t)0x490F57EE, (q31_t)0x68A69E81, - (q31_t)0x49B41533, (q31_t)0x683257AA, (q31_t)0x4A581C9D, - (q31_t)0x67BD0FBC, (q31_t)0x4AFB6C97, (q31_t)0x6746C7D7, - (q31_t)0x4B9E038F, (q31_t)0x66CF811F, (q31_t)0x4C3FDFF3, - (q31_t)0x66573CBB, (q31_t)0x4CE10034, (q31_t)0x65DDFBD3, - (q31_t)0x4D8162C4, (q31_t)0x6563BF92, (q31_t)0x4E210617, - (q31_t)0x64E88926, (q31_t)0x4EBFE8A4, (q31_t)0x646C59BF, - (q31_t)0x4F5E08E3, (q31_t)0x63EF328F, (q31_t)0x4FFB654D, - (q31_t)0x637114CC, (q31_t)0x5097FC5E, (q31_t)0x62F201AC, - (q31_t)0x5133CC94, (q31_t)0x6271FA69, (q31_t)0x51CED46E, - (q31_t)0x61F1003E, (q31_t)0x5269126E, (q31_t)0x616F146B, - (q31_t)0x53028517, (q31_t)0x60EC3830, (q31_t)0x539B2AEF, - (q31_t)0x60686CCE, (q31_t)0x5433027D, (q31_t)0x5FE3B38D, - (q31_t)0x54CA0A4A, (q31_t)0x5F5E0DB3, (q31_t)0x556040E2, - (q31_t)0x5ED77C89, (q31_t)0x55F5A4D2, (q31_t)0x5E50015D, - (q31_t)0x568A34A9, (q31_t)0x5DC79D7C, (q31_t)0x571DEEF9, - (q31_t)0x5D3E5236, (q31_t)0x57B0D256, (q31_t)0x5CB420DF, - (q31_t)0x5842DD54, (q31_t)0x5C290ACC, (q31_t)0x58D40E8C, - (q31_t)0x5B9D1153, (q31_t)0x59646497, (q31_t)0x5B1035CF, - (q31_t)0x59F3DE12, (q31_t)0x5A82799A, (q31_t)0x5A82799A, - (q31_t)0x59F3DE12, (q31_t)0x5B1035CF, (q31_t)0x59646497, - (q31_t)0x5B9D1153, (q31_t)0x58D40E8C, (q31_t)0x5C290ACC, - (q31_t)0x5842DD54, (q31_t)0x5CB420DF, (q31_t)0x57B0D256, - (q31_t)0x5D3E5236, (q31_t)0x571DEEF9, (q31_t)0x5DC79D7C, - (q31_t)0x568A34A9, (q31_t)0x5E50015D, (q31_t)0x55F5A4D2, - (q31_t)0x5ED77C89, (q31_t)0x556040E2, (q31_t)0x5F5E0DB3, - (q31_t)0x54CA0A4A, (q31_t)0x5FE3B38D, (q31_t)0x5433027D, - (q31_t)0x60686CCE, (q31_t)0x539B2AEF, (q31_t)0x60EC3830, - (q31_t)0x53028517, (q31_t)0x616F146B, (q31_t)0x5269126E, - (q31_t)0x61F1003E, (q31_t)0x51CED46E, (q31_t)0x6271FA69, - (q31_t)0x5133CC94, (q31_t)0x62F201AC, (q31_t)0x5097FC5E, - (q31_t)0x637114CC, (q31_t)0x4FFB654D, (q31_t)0x63EF328F, - (q31_t)0x4F5E08E3, (q31_t)0x646C59BF, (q31_t)0x4EBFE8A4, - (q31_t)0x64E88926, (q31_t)0x4E210617, (q31_t)0x6563BF92, - (q31_t)0x4D8162C4, (q31_t)0x65DDFBD3, (q31_t)0x4CE10034, - (q31_t)0x66573CBB, (q31_t)0x4C3FDFF3, (q31_t)0x66CF811F, - (q31_t)0x4B9E038F, (q31_t)0x6746C7D7, (q31_t)0x4AFB6C97, - (q31_t)0x67BD0FBC, (q31_t)0x4A581C9D, (q31_t)0x683257AA, - (q31_t)0x49B41533, (q31_t)0x68A69E81, (q31_t)0x490F57EE, - (q31_t)0x6919E320, (q31_t)0x4869E664, (q31_t)0x698C246C, - (q31_t)0x47C3C22E, (q31_t)0x69FD614A, (q31_t)0x471CECE6, - (q31_t)0x6A6D98A4, (q31_t)0x46756827, (q31_t)0x6ADCC964, - (q31_t)0x45CD358F, (q31_t)0x6B4AF278, (q31_t)0x452456BC, - (q31_t)0x6BB812D0, (q31_t)0x447ACD50, (q31_t)0x6C242960, - (q31_t)0x43D09AEC, (q31_t)0x6C8F351C, (q31_t)0x4325C135, - (q31_t)0x6CF934FB, (q31_t)0x427A41D0, (q31_t)0x6D6227FA, - (q31_t)0x41CE1E64, (q31_t)0x6DCA0D14, (q31_t)0x4121589A, - (q31_t)0x6E30E349, (q31_t)0x4073F21D, (q31_t)0x6E96A99C, - (q31_t)0x3FC5EC97, (q31_t)0x6EFB5F12, (q31_t)0x3F1749B7, - (q31_t)0x6F5F02B1, (q31_t)0x3E680B2C, (q31_t)0x6FC19385, - (q31_t)0x3DB832A5, (q31_t)0x70231099, (q31_t)0x3D07C1D5, - (q31_t)0x708378FE, (q31_t)0x3C56BA70, (q31_t)0x70E2CBC6, - (q31_t)0x3BA51E29, (q31_t)0x71410804, (q31_t)0x3AF2EEB7, - (q31_t)0x719E2CD2, (q31_t)0x3A402DD1, (q31_t)0x71FA3948, - (q31_t)0x398CDD32, (q31_t)0x72552C84, (q31_t)0x38D8FE93, - (q31_t)0x72AF05A6, (q31_t)0x382493B0, (q31_t)0x7307C3D0, - (q31_t)0x376F9E46, (q31_t)0x735F6626, (q31_t)0x36BA2013, - (q31_t)0x73B5EBD0, (q31_t)0x36041AD9, (q31_t)0x740B53FA, - (q31_t)0x354D9056, (q31_t)0x745F9DD1, (q31_t)0x3496824F, - (q31_t)0x74B2C883, (q31_t)0x33DEF287, (q31_t)0x7504D345, - (q31_t)0x3326E2C2, (q31_t)0x7555BD4B, (q31_t)0x326E54C7, - (q31_t)0x75A585CF, (q31_t)0x31B54A5D, (q31_t)0x75F42C0A, - (q31_t)0x30FBC54D, (q31_t)0x7641AF3C, (q31_t)0x3041C760, - (q31_t)0x768E0EA5, (q31_t)0x2F875262, (q31_t)0x76D94988, - (q31_t)0x2ECC681E, (q31_t)0x77235F2D, (q31_t)0x2E110A62, - (q31_t)0x776C4EDB, (q31_t)0x2D553AFB, (q31_t)0x77B417DF, - (q31_t)0x2C98FBBA, (q31_t)0x77FAB988, (q31_t)0x2BDC4E6F, - (q31_t)0x78403328, (q31_t)0x2B1F34EB, (q31_t)0x78848413, - (q31_t)0x2A61B101, (q31_t)0x78C7ABA1, (q31_t)0x29A3C484, - (q31_t)0x7909A92C, (q31_t)0x28E5714A, (q31_t)0x794A7C11, - (q31_t)0x2826B928, (q31_t)0x798A23B1, (q31_t)0x27679DF4, - (q31_t)0x79C89F6D, (q31_t)0x26A82185, (q31_t)0x7A05EEAD, - (q31_t)0x25E845B5, (q31_t)0x7A4210D8, (q31_t)0x25280C5D, - (q31_t)0x7A7D055B, (q31_t)0x24677757, (q31_t)0x7AB6CBA3, - (q31_t)0x23A6887E, (q31_t)0x7AEF6323, (q31_t)0x22E541AE, - (q31_t)0x7B26CB4F, (q31_t)0x2223A4C5, (q31_t)0x7B5D039D, - (q31_t)0x2161B39F, (q31_t)0x7B920B89, (q31_t)0x209F701C, - (q31_t)0x7BC5E28F, (q31_t)0x1FDCDC1A, (q31_t)0x7BF88830, - (q31_t)0x1F19F97B, (q31_t)0x7C29FBEE, (q31_t)0x1E56CA1E, - (q31_t)0x7C5A3D4F, (q31_t)0x1D934FE5, (q31_t)0x7C894BDD, - (q31_t)0x1CCF8CB3, (q31_t)0x7CB72724, (q31_t)0x1C0B826A, - (q31_t)0x7CE3CEB1, (q31_t)0x1B4732EF, (q31_t)0x7D0F4218, - (q31_t)0x1A82A025, (q31_t)0x7D3980EC, (q31_t)0x19BDCBF2, - (q31_t)0x7D628AC5, (q31_t)0x18F8B83C, (q31_t)0x7D8A5F3F, - (q31_t)0x183366E8, (q31_t)0x7DB0FDF7, (q31_t)0x176DD9DE, - (q31_t)0x7DD6668E, (q31_t)0x16A81305, (q31_t)0x7DFA98A7, - (q31_t)0x15E21444, (q31_t)0x7E1D93E9, (q31_t)0x151BDF85, - (q31_t)0x7E3F57FE, (q31_t)0x145576B1, (q31_t)0x7E5FE493, - (q31_t)0x138EDBB0, (q31_t)0x7E7F3956, (q31_t)0x12C8106E, - (q31_t)0x7E9D55FC, (q31_t)0x120116D4, (q31_t)0x7EBA3A39, - (q31_t)0x1139F0CE, (q31_t)0x7ED5E5C6, (q31_t)0x1072A047, - (q31_t)0x7EF0585F, (q31_t)0x0FAB272B, (q31_t)0x7F0991C3, - (q31_t)0x0EE38765, (q31_t)0x7F2191B4, (q31_t)0x0E1BC2E3, - (q31_t)0x7F3857F5, (q31_t)0x0D53DB92, (q31_t)0x7F4DE450, - (q31_t)0x0C8BD35E, (q31_t)0x7F62368F, (q31_t)0x0BC3AC35, - (q31_t)0x7F754E7F, (q31_t)0x0AFB6805, (q31_t)0x7F872BF3, - (q31_t)0x0A3308BC, (q31_t)0x7F97CEBC, (q31_t)0x096A9049, - (q31_t)0x7FA736B4, (q31_t)0x08A2009A, (q31_t)0x7FB563B2, - (q31_t)0x07D95B9E, (q31_t)0x7FC25596, (q31_t)0x0710A344, - (q31_t)0x7FCE0C3E, (q31_t)0x0647D97C, (q31_t)0x7FD8878D, - (q31_t)0x057F0034, (q31_t)0x7FE1C76B, (q31_t)0x04B6195D, - (q31_t)0x7FE9CBC0, (q31_t)0x03ED26E6, (q31_t)0x7FF09477, - (q31_t)0x03242ABF, (q31_t)0x7FF62182, (q31_t)0x025B26D7, - (q31_t)0x7FFA72D1, (q31_t)0x01921D1F, (q31_t)0x7FFD885A, - (q31_t)0x00C90F88, (q31_t)0x7FFF6216, (q31_t)0x00000000, - (q31_t)0x7FFFFFFF, (q31_t)0xFF36F078, (q31_t)0x7FFF6216, - (q31_t)0xFE6DE2E0, (q31_t)0x7FFD885A, (q31_t)0xFDA4D928, - (q31_t)0x7FFA72D1, (q31_t)0xFCDBD541, (q31_t)0x7FF62182, - (q31_t)0xFC12D919, (q31_t)0x7FF09477, (q31_t)0xFB49E6A2, - (q31_t)0x7FE9CBC0, (q31_t)0xFA80FFCB, (q31_t)0x7FE1C76B, - (q31_t)0xF9B82683, (q31_t)0x7FD8878D, (q31_t)0xF8EF5CBB, - (q31_t)0x7FCE0C3E, (q31_t)0xF826A461, (q31_t)0x7FC25596, - (q31_t)0xF75DFF65, (q31_t)0x7FB563B2, (q31_t)0xF6956FB6, - (q31_t)0x7FA736B4, (q31_t)0xF5CCF743, (q31_t)0x7F97CEBC, - (q31_t)0xF50497FA, (q31_t)0x7F872BF3, (q31_t)0xF43C53CA, - (q31_t)0x7F754E7F, (q31_t)0xF3742CA1, (q31_t)0x7F62368F, - (q31_t)0xF2AC246D, (q31_t)0x7F4DE450, (q31_t)0xF1E43D1C, - (q31_t)0x7F3857F5, (q31_t)0xF11C789A, (q31_t)0x7F2191B4, - (q31_t)0xF054D8D4, (q31_t)0x7F0991C3, (q31_t)0xEF8D5FB8, - (q31_t)0x7EF0585F, (q31_t)0xEEC60F31, (q31_t)0x7ED5E5C6, - (q31_t)0xEDFEE92B, (q31_t)0x7EBA3A39, (q31_t)0xED37EF91, - (q31_t)0x7E9D55FC, (q31_t)0xEC71244F, (q31_t)0x7E7F3956, - (q31_t)0xEBAA894E, (q31_t)0x7E5FE493, (q31_t)0xEAE4207A, - (q31_t)0x7E3F57FE, (q31_t)0xEA1DEBBB, (q31_t)0x7E1D93E9, - (q31_t)0xE957ECFB, (q31_t)0x7DFA98A7, (q31_t)0xE8922621, - (q31_t)0x7DD6668E, (q31_t)0xE7CC9917, (q31_t)0x7DB0FDF7, - (q31_t)0xE70747C3, (q31_t)0x7D8A5F3F, (q31_t)0xE642340D, - (q31_t)0x7D628AC5, (q31_t)0xE57D5FDA, (q31_t)0x7D3980EC, - (q31_t)0xE4B8CD10, (q31_t)0x7D0F4218, (q31_t)0xE3F47D95, - (q31_t)0x7CE3CEB1, (q31_t)0xE330734C, (q31_t)0x7CB72724, - (q31_t)0xE26CB01A, (q31_t)0x7C894BDD, (q31_t)0xE1A935E1, - (q31_t)0x7C5A3D4F, (q31_t)0xE0E60684, (q31_t)0x7C29FBEE, - (q31_t)0xE02323E5, (q31_t)0x7BF88830, (q31_t)0xDF608FE3, - (q31_t)0x7BC5E28F, (q31_t)0xDE9E4C60, (q31_t)0x7B920B89, - (q31_t)0xDDDC5B3A, (q31_t)0x7B5D039D, (q31_t)0xDD1ABE51, - (q31_t)0x7B26CB4F, (q31_t)0xDC597781, (q31_t)0x7AEF6323, - (q31_t)0xDB9888A8, (q31_t)0x7AB6CBA3, (q31_t)0xDAD7F3A2, - (q31_t)0x7A7D055B, (q31_t)0xDA17BA4A, (q31_t)0x7A4210D8, - (q31_t)0xD957DE7A, (q31_t)0x7A05EEAD, (q31_t)0xD898620C, - (q31_t)0x79C89F6D, (q31_t)0xD7D946D7, (q31_t)0x798A23B1, - (q31_t)0xD71A8EB5, (q31_t)0x794A7C11, (q31_t)0xD65C3B7B, - (q31_t)0x7909A92C, (q31_t)0xD59E4EFE, (q31_t)0x78C7ABA1, - (q31_t)0xD4E0CB14, (q31_t)0x78848413, (q31_t)0xD423B190, - (q31_t)0x78403328, (q31_t)0xD3670445, (q31_t)0x77FAB988, - (q31_t)0xD2AAC504, (q31_t)0x77B417DF, (q31_t)0xD1EEF59E, - (q31_t)0x776C4EDB, (q31_t)0xD13397E1, (q31_t)0x77235F2D, - (q31_t)0xD078AD9D, (q31_t)0x76D94988, (q31_t)0xCFBE389F, - (q31_t)0x768E0EA5, (q31_t)0xCF043AB2, (q31_t)0x7641AF3C, - (q31_t)0xCE4AB5A2, (q31_t)0x75F42C0A, (q31_t)0xCD91AB38, - (q31_t)0x75A585CF, (q31_t)0xCCD91D3D, (q31_t)0x7555BD4B, - (q31_t)0xCC210D78, (q31_t)0x7504D345, (q31_t)0xCB697DB0, - (q31_t)0x74B2C883, (q31_t)0xCAB26FA9, (q31_t)0x745F9DD1, - (q31_t)0xC9FBE527, (q31_t)0x740B53FA, (q31_t)0xC945DFEC, - (q31_t)0x73B5EBD0, (q31_t)0xC89061BA, (q31_t)0x735F6626, - (q31_t)0xC7DB6C50, (q31_t)0x7307C3D0, (q31_t)0xC727016C, - (q31_t)0x72AF05A6, (q31_t)0xC67322CD, (q31_t)0x72552C84, - (q31_t)0xC5BFD22E, (q31_t)0x71FA3948, (q31_t)0xC50D1148, - (q31_t)0x719E2CD2, (q31_t)0xC45AE1D7, (q31_t)0x71410804, - (q31_t)0xC3A9458F, (q31_t)0x70E2CBC6, (q31_t)0xC2F83E2A, - (q31_t)0x708378FE, (q31_t)0xC247CD5A, (q31_t)0x70231099, - (q31_t)0xC197F4D3, (q31_t)0x6FC19385, (q31_t)0xC0E8B648, - (q31_t)0x6F5F02B1, (q31_t)0xC03A1368, (q31_t)0x6EFB5F12, - (q31_t)0xBF8C0DE2, (q31_t)0x6E96A99C, (q31_t)0xBEDEA765, - (q31_t)0x6E30E349, (q31_t)0xBE31E19B, (q31_t)0x6DCA0D14, - (q31_t)0xBD85BE2F, (q31_t)0x6D6227FA, (q31_t)0xBCDA3ECA, - (q31_t)0x6CF934FB, (q31_t)0xBC2F6513, (q31_t)0x6C8F351C, - (q31_t)0xBB8532AF, (q31_t)0x6C242960, (q31_t)0xBADBA943, - (q31_t)0x6BB812D0, (q31_t)0xBA32CA70, (q31_t)0x6B4AF278, - (q31_t)0xB98A97D8, (q31_t)0x6ADCC964, (q31_t)0xB8E31319, - (q31_t)0x6A6D98A4, (q31_t)0xB83C3DD1, (q31_t)0x69FD614A, - (q31_t)0xB796199B, (q31_t)0x698C246C, (q31_t)0xB6F0A811, - (q31_t)0x6919E320, (q31_t)0xB64BEACC, (q31_t)0x68A69E81, - (q31_t)0xB5A7E362, (q31_t)0x683257AA, (q31_t)0xB5049368, - (q31_t)0x67BD0FBC, (q31_t)0xB461FC70, (q31_t)0x6746C7D7, - (q31_t)0xB3C0200C, (q31_t)0x66CF811F, (q31_t)0xB31EFFCB, - (q31_t)0x66573CBB, (q31_t)0xB27E9D3B, (q31_t)0x65DDFBD3, - (q31_t)0xB1DEF9E8, (q31_t)0x6563BF92, (q31_t)0xB140175B, - (q31_t)0x64E88926, (q31_t)0xB0A1F71C, (q31_t)0x646C59BF, - (q31_t)0xB0049AB2, (q31_t)0x63EF328F, (q31_t)0xAF6803A1, - (q31_t)0x637114CC, (q31_t)0xAECC336B, (q31_t)0x62F201AC, - (q31_t)0xAE312B91, (q31_t)0x6271FA69, (q31_t)0xAD96ED91, - (q31_t)0x61F1003E, (q31_t)0xACFD7AE8, (q31_t)0x616F146B, - (q31_t)0xAC64D510, (q31_t)0x60EC3830, (q31_t)0xABCCFD82, - (q31_t)0x60686CCE, (q31_t)0xAB35F5B5, (q31_t)0x5FE3B38D, - (q31_t)0xAA9FBF1D, (q31_t)0x5F5E0DB3, (q31_t)0xAA0A5B2D, - (q31_t)0x5ED77C89, (q31_t)0xA975CB56, (q31_t)0x5E50015D, - (q31_t)0xA8E21106, (q31_t)0x5DC79D7C, (q31_t)0xA84F2DA9, - (q31_t)0x5D3E5236, (q31_t)0xA7BD22AB, (q31_t)0x5CB420DF, - (q31_t)0xA72BF173, (q31_t)0x5C290ACC, (q31_t)0xA69B9B68, - (q31_t)0x5B9D1153, (q31_t)0xA60C21ED, (q31_t)0x5B1035CF, - (q31_t)0xA57D8666, (q31_t)0x5A82799A, (q31_t)0xA4EFCA31, - (q31_t)0x59F3DE12, (q31_t)0xA462EEAC, (q31_t)0x59646497, - (q31_t)0xA3D6F533, (q31_t)0x58D40E8C, (q31_t)0xA34BDF20, - (q31_t)0x5842DD54, (q31_t)0xA2C1ADC9, (q31_t)0x57B0D256, - (q31_t)0xA2386283, (q31_t)0x571DEEF9, (q31_t)0xA1AFFEA2, - (q31_t)0x568A34A9, (q31_t)0xA1288376, (q31_t)0x55F5A4D2, - (q31_t)0xA0A1F24C, (q31_t)0x556040E2, (q31_t)0xA01C4C72, - (q31_t)0x54CA0A4A, (q31_t)0x9F979331, (q31_t)0x5433027D, - (q31_t)0x9F13C7D0, (q31_t)0x539B2AEF, (q31_t)0x9E90EB94, - (q31_t)0x53028517, (q31_t)0x9E0EFFC1, (q31_t)0x5269126E, - (q31_t)0x9D8E0596, (q31_t)0x51CED46E, (q31_t)0x9D0DFE53, - (q31_t)0x5133CC94, (q31_t)0x9C8EEB33, (q31_t)0x5097FC5E, - (q31_t)0x9C10CD70, (q31_t)0x4FFB654D, (q31_t)0x9B93A640, - (q31_t)0x4F5E08E3, (q31_t)0x9B1776D9, (q31_t)0x4EBFE8A4, - (q31_t)0x9A9C406D, (q31_t)0x4E210617, (q31_t)0x9A22042C, - (q31_t)0x4D8162C4, (q31_t)0x99A8C344, (q31_t)0x4CE10034, - (q31_t)0x99307EE0, (q31_t)0x4C3FDFF3, (q31_t)0x98B93828, - (q31_t)0x4B9E038F, (q31_t)0x9842F043, (q31_t)0x4AFB6C97, - (q31_t)0x97CDA855, (q31_t)0x4A581C9D, (q31_t)0x9759617E, - (q31_t)0x49B41533, (q31_t)0x96E61CDF, (q31_t)0x490F57EE, - (q31_t)0x9673DB94, (q31_t)0x4869E664, (q31_t)0x96029EB5, - (q31_t)0x47C3C22E, (q31_t)0x9592675B, (q31_t)0x471CECE6, - (q31_t)0x9523369B, (q31_t)0x46756827, (q31_t)0x94B50D87, - (q31_t)0x45CD358F, (q31_t)0x9447ED2F, (q31_t)0x452456BC, - (q31_t)0x93DBD69F, (q31_t)0x447ACD50, (q31_t)0x9370CAE4, - (q31_t)0x43D09AEC, (q31_t)0x9306CB04, (q31_t)0x4325C135, - (q31_t)0x929DD805, (q31_t)0x427A41D0, (q31_t)0x9235F2EB, - (q31_t)0x41CE1E64, (q31_t)0x91CF1CB6, (q31_t)0x4121589A, - (q31_t)0x91695663, (q31_t)0x4073F21D, (q31_t)0x9104A0ED, - (q31_t)0x3FC5EC97, (q31_t)0x90A0FD4E, (q31_t)0x3F1749B7, - (q31_t)0x903E6C7A, (q31_t)0x3E680B2C, (q31_t)0x8FDCEF66, - (q31_t)0x3DB832A5, (q31_t)0x8F7C8701, (q31_t)0x3D07C1D5, - (q31_t)0x8F1D343A, (q31_t)0x3C56BA70, (q31_t)0x8EBEF7FB, - (q31_t)0x3BA51E29, (q31_t)0x8E61D32D, (q31_t)0x3AF2EEB7, - (q31_t)0x8E05C6B7, (q31_t)0x3A402DD1, (q31_t)0x8DAAD37B, - (q31_t)0x398CDD32, (q31_t)0x8D50FA59, (q31_t)0x38D8FE93, - (q31_t)0x8CF83C30, (q31_t)0x382493B0, (q31_t)0x8CA099D9, - (q31_t)0x376F9E46, (q31_t)0x8C4A142F, (q31_t)0x36BA2013, - (q31_t)0x8BF4AC05, (q31_t)0x36041AD9, (q31_t)0x8BA0622F, - (q31_t)0x354D9056, (q31_t)0x8B4D377C, (q31_t)0x3496824F, - (q31_t)0x8AFB2CBA, (q31_t)0x33DEF287, (q31_t)0x8AAA42B4, - (q31_t)0x3326E2C2, (q31_t)0x8A5A7A30, (q31_t)0x326E54C7, - (q31_t)0x8A0BD3F5, (q31_t)0x31B54A5D, (q31_t)0x89BE50C3, - (q31_t)0x30FBC54D, (q31_t)0x8971F15A, (q31_t)0x3041C760, - (q31_t)0x8926B677, (q31_t)0x2F875262, (q31_t)0x88DCA0D3, - (q31_t)0x2ECC681E, (q31_t)0x8893B124, (q31_t)0x2E110A62, - (q31_t)0x884BE820, (q31_t)0x2D553AFB, (q31_t)0x88054677, - (q31_t)0x2C98FBBA, (q31_t)0x87BFCCD7, (q31_t)0x2BDC4E6F, - (q31_t)0x877B7BEC, (q31_t)0x2B1F34EB, (q31_t)0x8738545E, - (q31_t)0x2A61B101, (q31_t)0x86F656D3, (q31_t)0x29A3C484, - (q31_t)0x86B583EE, (q31_t)0x28E5714A, (q31_t)0x8675DC4E, - (q31_t)0x2826B928, (q31_t)0x86376092, (q31_t)0x27679DF4, - (q31_t)0x85FA1152, (q31_t)0x26A82185, (q31_t)0x85BDEF27, - (q31_t)0x25E845B5, (q31_t)0x8582FAA4, (q31_t)0x25280C5D, - (q31_t)0x8549345C, (q31_t)0x24677757, (q31_t)0x85109CDC, - (q31_t)0x23A6887E, (q31_t)0x84D934B0, (q31_t)0x22E541AE, - (q31_t)0x84A2FC62, (q31_t)0x2223A4C5, (q31_t)0x846DF476, - (q31_t)0x2161B39F, (q31_t)0x843A1D70, (q31_t)0x209F701C, - (q31_t)0x840777CF, (q31_t)0x1FDCDC1A, (q31_t)0x83D60411, - (q31_t)0x1F19F97B, (q31_t)0x83A5C2B0, (q31_t)0x1E56CA1E, - (q31_t)0x8376B422, (q31_t)0x1D934FE5, (q31_t)0x8348D8DB, - (q31_t)0x1CCF8CB3, (q31_t)0x831C314E, (q31_t)0x1C0B826A, - (q31_t)0x82F0BDE8, (q31_t)0x1B4732EF, (q31_t)0x82C67F13, - (q31_t)0x1A82A025, (q31_t)0x829D753A, (q31_t)0x19BDCBF2, - (q31_t)0x8275A0C0, (q31_t)0x18F8B83C, (q31_t)0x824F0208, - (q31_t)0x183366E8, (q31_t)0x82299971, (q31_t)0x176DD9DE, - (q31_t)0x82056758, (q31_t)0x16A81305, (q31_t)0x81E26C16, - (q31_t)0x15E21444, (q31_t)0x81C0A801, (q31_t)0x151BDF85, - (q31_t)0x81A01B6C, (q31_t)0x145576B1, (q31_t)0x8180C6A9, - (q31_t)0x138EDBB0, (q31_t)0x8162AA03, (q31_t)0x12C8106E, - (q31_t)0x8145C5C6, (q31_t)0x120116D4, (q31_t)0x812A1A39, - (q31_t)0x1139F0CE, (q31_t)0x810FA7A0, (q31_t)0x1072A047, - (q31_t)0x80F66E3C, (q31_t)0x0FAB272B, (q31_t)0x80DE6E4C, - (q31_t)0x0EE38765, (q31_t)0x80C7A80A, (q31_t)0x0E1BC2E3, - (q31_t)0x80B21BAF, (q31_t)0x0D53DB92, (q31_t)0x809DC970, - (q31_t)0x0C8BD35E, (q31_t)0x808AB180, (q31_t)0x0BC3AC35, - (q31_t)0x8078D40D, (q31_t)0x0AFB6805, (q31_t)0x80683143, - (q31_t)0x0A3308BC, (q31_t)0x8058C94C, (q31_t)0x096A9049, - (q31_t)0x804A9C4D, (q31_t)0x08A2009A, (q31_t)0x803DAA69, - (q31_t)0x07D95B9E, (q31_t)0x8031F3C1, (q31_t)0x0710A344, - (q31_t)0x80277872, (q31_t)0x0647D97C, (q31_t)0x801E3894, - (q31_t)0x057F0034, (q31_t)0x80163440, (q31_t)0x04B6195D, - (q31_t)0x800F6B88, (q31_t)0x03ED26E6, (q31_t)0x8009DE7D, - (q31_t)0x03242ABF, (q31_t)0x80058D2E, (q31_t)0x025B26D7, - (q31_t)0x800277A5, (q31_t)0x01921D1F, (q31_t)0x80009DE9, - (q31_t)0x00C90F88, (q31_t)0x80000000, (q31_t)0x00000000, - (q31_t)0x80009DE9, (q31_t)0xFF36F078, (q31_t)0x800277A5, - (q31_t)0xFE6DE2E0, (q31_t)0x80058D2E, (q31_t)0xFDA4D928, - (q31_t)0x8009DE7D, (q31_t)0xFCDBD541, (q31_t)0x800F6B88, - (q31_t)0xFC12D919, (q31_t)0x80163440, (q31_t)0xFB49E6A2, - (q31_t)0x801E3894, (q31_t)0xFA80FFCB, (q31_t)0x80277872, - (q31_t)0xF9B82683, (q31_t)0x8031F3C1, (q31_t)0xF8EF5CBB, - (q31_t)0x803DAA69, (q31_t)0xF826A461, (q31_t)0x804A9C4D, - (q31_t)0xF75DFF65, (q31_t)0x8058C94C, (q31_t)0xF6956FB6, - (q31_t)0x80683143, (q31_t)0xF5CCF743, (q31_t)0x8078D40D, - (q31_t)0xF50497FA, (q31_t)0x808AB180, (q31_t)0xF43C53CA, - (q31_t)0x809DC970, (q31_t)0xF3742CA1, (q31_t)0x80B21BAF, - (q31_t)0xF2AC246D, (q31_t)0x80C7A80A, (q31_t)0xF1E43D1C, - (q31_t)0x80DE6E4C, (q31_t)0xF11C789A, (q31_t)0x80F66E3C, - (q31_t)0xF054D8D4, (q31_t)0x810FA7A0, (q31_t)0xEF8D5FB8, - (q31_t)0x812A1A39, (q31_t)0xEEC60F31, (q31_t)0x8145C5C6, - (q31_t)0xEDFEE92B, (q31_t)0x8162AA03, (q31_t)0xED37EF91, - (q31_t)0x8180C6A9, (q31_t)0xEC71244F, (q31_t)0x81A01B6C, - (q31_t)0xEBAA894E, (q31_t)0x81C0A801, (q31_t)0xEAE4207A, - (q31_t)0x81E26C16, (q31_t)0xEA1DEBBB, (q31_t)0x82056758, - (q31_t)0xE957ECFB, (q31_t)0x82299971, (q31_t)0xE8922621, - (q31_t)0x824F0208, (q31_t)0xE7CC9917, (q31_t)0x8275A0C0, - (q31_t)0xE70747C3, (q31_t)0x829D753A, (q31_t)0xE642340D, - (q31_t)0x82C67F13, (q31_t)0xE57D5FDA, (q31_t)0x82F0BDE8, - (q31_t)0xE4B8CD10, (q31_t)0x831C314E, (q31_t)0xE3F47D95, - (q31_t)0x8348D8DB, (q31_t)0xE330734C, (q31_t)0x8376B422, - (q31_t)0xE26CB01A, (q31_t)0x83A5C2B0, (q31_t)0xE1A935E1, - (q31_t)0x83D60411, (q31_t)0xE0E60684, (q31_t)0x840777CF, - (q31_t)0xE02323E5, (q31_t)0x843A1D70, (q31_t)0xDF608FE3, - (q31_t)0x846DF476, (q31_t)0xDE9E4C60, (q31_t)0x84A2FC62, - (q31_t)0xDDDC5B3A, (q31_t)0x84D934B0, (q31_t)0xDD1ABE51, - (q31_t)0x85109CDC, (q31_t)0xDC597781, (q31_t)0x8549345C, - (q31_t)0xDB9888A8, (q31_t)0x8582FAA4, (q31_t)0xDAD7F3A2, - (q31_t)0x85BDEF27, (q31_t)0xDA17BA4A, (q31_t)0x85FA1152, - (q31_t)0xD957DE7A, (q31_t)0x86376092, (q31_t)0xD898620C, - (q31_t)0x8675DC4E, (q31_t)0xD7D946D7, (q31_t)0x86B583EE, - (q31_t)0xD71A8EB5, (q31_t)0x86F656D3, (q31_t)0xD65C3B7B, - (q31_t)0x8738545E, (q31_t)0xD59E4EFE, (q31_t)0x877B7BEC, - (q31_t)0xD4E0CB14, (q31_t)0x87BFCCD7, (q31_t)0xD423B190, - (q31_t)0x88054677, (q31_t)0xD3670445, (q31_t)0x884BE820, - (q31_t)0xD2AAC504, (q31_t)0x8893B124, (q31_t)0xD1EEF59E, - (q31_t)0x88DCA0D3, (q31_t)0xD13397E1, (q31_t)0x8926B677, - (q31_t)0xD078AD9D, (q31_t)0x8971F15A, (q31_t)0xCFBE389F, - (q31_t)0x89BE50C3, (q31_t)0xCF043AB2, (q31_t)0x8A0BD3F5, - (q31_t)0xCE4AB5A2, (q31_t)0x8A5A7A30, (q31_t)0xCD91AB38, - (q31_t)0x8AAA42B4, (q31_t)0xCCD91D3D, (q31_t)0x8AFB2CBA, - (q31_t)0xCC210D78, (q31_t)0x8B4D377C, (q31_t)0xCB697DB0, - (q31_t)0x8BA0622F, (q31_t)0xCAB26FA9, (q31_t)0x8BF4AC05, - (q31_t)0xC9FBE527, (q31_t)0x8C4A142F, (q31_t)0xC945DFEC, - (q31_t)0x8CA099D9, (q31_t)0xC89061BA, (q31_t)0x8CF83C30, - (q31_t)0xC7DB6C50, (q31_t)0x8D50FA59, (q31_t)0xC727016C, - (q31_t)0x8DAAD37B, (q31_t)0xC67322CD, (q31_t)0x8E05C6B7, - (q31_t)0xC5BFD22E, (q31_t)0x8E61D32D, (q31_t)0xC50D1148, - (q31_t)0x8EBEF7FB, (q31_t)0xC45AE1D7, (q31_t)0x8F1D343A, - (q31_t)0xC3A9458F, (q31_t)0x8F7C8701, (q31_t)0xC2F83E2A, - (q31_t)0x8FDCEF66, (q31_t)0xC247CD5A, (q31_t)0x903E6C7A, - (q31_t)0xC197F4D3, (q31_t)0x90A0FD4E, (q31_t)0xC0E8B648, - (q31_t)0x9104A0ED, (q31_t)0xC03A1368, (q31_t)0x91695663, - (q31_t)0xBF8C0DE2, (q31_t)0x91CF1CB6, (q31_t)0xBEDEA765, - (q31_t)0x9235F2EB, (q31_t)0xBE31E19B, (q31_t)0x929DD805, - (q31_t)0xBD85BE2F, (q31_t)0x9306CB04, (q31_t)0xBCDA3ECA, - (q31_t)0x9370CAE4, (q31_t)0xBC2F6513, (q31_t)0x93DBD69F, - (q31_t)0xBB8532AF, (q31_t)0x9447ED2F, (q31_t)0xBADBA943, - (q31_t)0x94B50D87, (q31_t)0xBA32CA70, (q31_t)0x9523369B, - (q31_t)0xB98A97D8, (q31_t)0x9592675B, (q31_t)0xB8E31319, - (q31_t)0x96029EB5, (q31_t)0xB83C3DD1, (q31_t)0x9673DB94, - (q31_t)0xB796199B, (q31_t)0x96E61CDF, (q31_t)0xB6F0A811, - (q31_t)0x9759617E, (q31_t)0xB64BEACC, (q31_t)0x97CDA855, - (q31_t)0xB5A7E362, (q31_t)0x9842F043, (q31_t)0xB5049368, - (q31_t)0x98B93828, (q31_t)0xB461FC70, (q31_t)0x99307EE0, - (q31_t)0xB3C0200C, (q31_t)0x99A8C344, (q31_t)0xB31EFFCB, - (q31_t)0x9A22042C, (q31_t)0xB27E9D3B, (q31_t)0x9A9C406D, - (q31_t)0xB1DEF9E8, (q31_t)0x9B1776D9, (q31_t)0xB140175B, - (q31_t)0x9B93A640, (q31_t)0xB0A1F71C, (q31_t)0x9C10CD70, - (q31_t)0xB0049AB2, (q31_t)0x9C8EEB33, (q31_t)0xAF6803A1, - (q31_t)0x9D0DFE53, (q31_t)0xAECC336B, (q31_t)0x9D8E0596, - (q31_t)0xAE312B91, (q31_t)0x9E0EFFC1, (q31_t)0xAD96ED91, - (q31_t)0x9E90EB94, (q31_t)0xACFD7AE8, (q31_t)0x9F13C7D0, - (q31_t)0xAC64D510, (q31_t)0x9F979331, (q31_t)0xABCCFD82, - (q31_t)0xA01C4C72, (q31_t)0xAB35F5B5, (q31_t)0xA0A1F24C, - (q31_t)0xAA9FBF1D, (q31_t)0xA1288376, (q31_t)0xAA0A5B2D, - (q31_t)0xA1AFFEA2, (q31_t)0xA975CB56, (q31_t)0xA2386283, - (q31_t)0xA8E21106, (q31_t)0xA2C1ADC9, (q31_t)0xA84F2DA9, - (q31_t)0xA34BDF20, (q31_t)0xA7BD22AB, (q31_t)0xA3D6F533, - (q31_t)0xA72BF173, (q31_t)0xA462EEAC, (q31_t)0xA69B9B68, - (q31_t)0xA4EFCA31, (q31_t)0xA60C21ED, (q31_t)0xA57D8666, - (q31_t)0xA57D8666, (q31_t)0xA60C21ED, (q31_t)0xA4EFCA31, - (q31_t)0xA69B9B68, (q31_t)0xA462EEAC, (q31_t)0xA72BF173, - (q31_t)0xA3D6F533, (q31_t)0xA7BD22AB, (q31_t)0xA34BDF20, - (q31_t)0xA84F2DA9, (q31_t)0xA2C1ADC9, (q31_t)0xA8E21106, - (q31_t)0xA2386283, (q31_t)0xA975CB56, (q31_t)0xA1AFFEA2, - (q31_t)0xAA0A5B2D, (q31_t)0xA1288376, (q31_t)0xAA9FBF1D, - (q31_t)0xA0A1F24C, (q31_t)0xAB35F5B5, (q31_t)0xA01C4C72, - (q31_t)0xABCCFD82, (q31_t)0x9F979331, (q31_t)0xAC64D510, - (q31_t)0x9F13C7D0, (q31_t)0xACFD7AE8, (q31_t)0x9E90EB94, - (q31_t)0xAD96ED91, (q31_t)0x9E0EFFC1, (q31_t)0xAE312B91, - (q31_t)0x9D8E0596, (q31_t)0xAECC336B, (q31_t)0x9D0DFE53, - (q31_t)0xAF6803A1, (q31_t)0x9C8EEB33, (q31_t)0xB0049AB2, - (q31_t)0x9C10CD70, (q31_t)0xB0A1F71C, (q31_t)0x9B93A640, - (q31_t)0xB140175B, (q31_t)0x9B1776D9, (q31_t)0xB1DEF9E8, - (q31_t)0x9A9C406D, (q31_t)0xB27E9D3B, (q31_t)0x9A22042C, - (q31_t)0xB31EFFCB, (q31_t)0x99A8C344, (q31_t)0xB3C0200C, - (q31_t)0x99307EE0, (q31_t)0xB461FC70, (q31_t)0x98B93828, - (q31_t)0xB5049368, (q31_t)0x9842F043, (q31_t)0xB5A7E362, - (q31_t)0x97CDA855, (q31_t)0xB64BEACC, (q31_t)0x9759617E, - (q31_t)0xB6F0A811, (q31_t)0x96E61CDF, (q31_t)0xB796199B, - (q31_t)0x9673DB94, (q31_t)0xB83C3DD1, (q31_t)0x96029EB5, - (q31_t)0xB8E31319, (q31_t)0x9592675B, (q31_t)0xB98A97D8, - (q31_t)0x9523369B, (q31_t)0xBA32CA70, (q31_t)0x94B50D87, - (q31_t)0xBADBA943, (q31_t)0x9447ED2F, (q31_t)0xBB8532AF, - (q31_t)0x93DBD69F, (q31_t)0xBC2F6513, (q31_t)0x9370CAE4, - (q31_t)0xBCDA3ECA, (q31_t)0x9306CB04, (q31_t)0xBD85BE2F, - (q31_t)0x929DD805, (q31_t)0xBE31E19B, (q31_t)0x9235F2EB, - (q31_t)0xBEDEA765, (q31_t)0x91CF1CB6, (q31_t)0xBF8C0DE2, - (q31_t)0x91695663, (q31_t)0xC03A1368, (q31_t)0x9104A0ED, - (q31_t)0xC0E8B648, (q31_t)0x90A0FD4E, (q31_t)0xC197F4D3, - (q31_t)0x903E6C7A, (q31_t)0xC247CD5A, (q31_t)0x8FDCEF66, - (q31_t)0xC2F83E2A, (q31_t)0x8F7C8701, (q31_t)0xC3A9458F, - (q31_t)0x8F1D343A, (q31_t)0xC45AE1D7, (q31_t)0x8EBEF7FB, - (q31_t)0xC50D1148, (q31_t)0x8E61D32D, (q31_t)0xC5BFD22E, - (q31_t)0x8E05C6B7, (q31_t)0xC67322CD, (q31_t)0x8DAAD37B, - (q31_t)0xC727016C, (q31_t)0x8D50FA59, (q31_t)0xC7DB6C50, - (q31_t)0x8CF83C30, (q31_t)0xC89061BA, (q31_t)0x8CA099D9, - (q31_t)0xC945DFEC, (q31_t)0x8C4A142F, (q31_t)0xC9FBE527, - (q31_t)0x8BF4AC05, (q31_t)0xCAB26FA9, (q31_t)0x8BA0622F, - (q31_t)0xCB697DB0, (q31_t)0x8B4D377C, (q31_t)0xCC210D78, - (q31_t)0x8AFB2CBA, (q31_t)0xCCD91D3D, (q31_t)0x8AAA42B4, - (q31_t)0xCD91AB38, (q31_t)0x8A5A7A30, (q31_t)0xCE4AB5A2, - (q31_t)0x8A0BD3F5, (q31_t)0xCF043AB2, (q31_t)0x89BE50C3, - (q31_t)0xCFBE389F, (q31_t)0x8971F15A, (q31_t)0xD078AD9D, - (q31_t)0x8926B677, (q31_t)0xD13397E1, (q31_t)0x88DCA0D3, - (q31_t)0xD1EEF59E, (q31_t)0x8893B124, (q31_t)0xD2AAC504, - (q31_t)0x884BE820, (q31_t)0xD3670445, (q31_t)0x88054677, - (q31_t)0xD423B190, (q31_t)0x87BFCCD7, (q31_t)0xD4E0CB14, - (q31_t)0x877B7BEC, (q31_t)0xD59E4EFE, (q31_t)0x8738545E, - (q31_t)0xD65C3B7B, (q31_t)0x86F656D3, (q31_t)0xD71A8EB5, - (q31_t)0x86B583EE, (q31_t)0xD7D946D7, (q31_t)0x8675DC4E, - (q31_t)0xD898620C, (q31_t)0x86376092, (q31_t)0xD957DE7A, - (q31_t)0x85FA1152, (q31_t)0xDA17BA4A, (q31_t)0x85BDEF27, - (q31_t)0xDAD7F3A2, (q31_t)0x8582FAA4, (q31_t)0xDB9888A8, - (q31_t)0x8549345C, (q31_t)0xDC597781, (q31_t)0x85109CDC, - (q31_t)0xDD1ABE51, (q31_t)0x84D934B0, (q31_t)0xDDDC5B3A, - (q31_t)0x84A2FC62, (q31_t)0xDE9E4C60, (q31_t)0x846DF476, - (q31_t)0xDF608FE3, (q31_t)0x843A1D70, (q31_t)0xE02323E5, - (q31_t)0x840777CF, (q31_t)0xE0E60684, (q31_t)0x83D60411, - (q31_t)0xE1A935E1, (q31_t)0x83A5C2B0, (q31_t)0xE26CB01A, - (q31_t)0x8376B422, (q31_t)0xE330734C, (q31_t)0x8348D8DB, - (q31_t)0xE3F47D95, (q31_t)0x831C314E, (q31_t)0xE4B8CD10, - (q31_t)0x82F0BDE8, (q31_t)0xE57D5FDA, (q31_t)0x82C67F13, - (q31_t)0xE642340D, (q31_t)0x829D753A, (q31_t)0xE70747C3, - (q31_t)0x8275A0C0, (q31_t)0xE7CC9917, (q31_t)0x824F0208, - (q31_t)0xE8922621, (q31_t)0x82299971, (q31_t)0xE957ECFB, - (q31_t)0x82056758, (q31_t)0xEA1DEBBB, (q31_t)0x81E26C16, - (q31_t)0xEAE4207A, (q31_t)0x81C0A801, (q31_t)0xEBAA894E, - (q31_t)0x81A01B6C, (q31_t)0xEC71244F, (q31_t)0x8180C6A9, - (q31_t)0xED37EF91, (q31_t)0x8162AA03, (q31_t)0xEDFEE92B, - (q31_t)0x8145C5C6, (q31_t)0xEEC60F31, (q31_t)0x812A1A39, - (q31_t)0xEF8D5FB8, (q31_t)0x810FA7A0, (q31_t)0xF054D8D4, - (q31_t)0x80F66E3C, (q31_t)0xF11C789A, (q31_t)0x80DE6E4C, - (q31_t)0xF1E43D1C, (q31_t)0x80C7A80A, (q31_t)0xF2AC246D, - (q31_t)0x80B21BAF, (q31_t)0xF3742CA1, (q31_t)0x809DC970, - (q31_t)0xF43C53CA, (q31_t)0x808AB180, (q31_t)0xF50497FA, - (q31_t)0x8078D40D, (q31_t)0xF5CCF743, (q31_t)0x80683143, - (q31_t)0xF6956FB6, (q31_t)0x8058C94C, (q31_t)0xF75DFF65, - (q31_t)0x804A9C4D, (q31_t)0xF826A461, (q31_t)0x803DAA69, - (q31_t)0xF8EF5CBB, (q31_t)0x8031F3C1, (q31_t)0xF9B82683, - (q31_t)0x80277872, (q31_t)0xFA80FFCB, (q31_t)0x801E3894, - (q31_t)0xFB49E6A2, (q31_t)0x80163440, (q31_t)0xFC12D919, - (q31_t)0x800F6B88, (q31_t)0xFCDBD541, (q31_t)0x8009DE7D, - (q31_t)0xFDA4D928, (q31_t)0x80058D2E, (q31_t)0xFE6DE2E0, - (q31_t)0x800277A5, (q31_t)0xFF36F078, (q31_t)0x80009DE9 -}; - -/** -* \par -* Example code for Q31 Twiddle factors Generation:: -* \par -*
for(i = 0; i< 3N/4; i++)
-* {
-*    twiddleCoefQ31[2*i]= cos(i * 2*PI/(float)N);
-*    twiddleCoefQ31[2*i+1]= sin(i * 2*PI/(float)N);
-* } 
-* \par -* where N = 2048 and PI = 3.14159265358979 -* \par -* Cos and Sin values are interleaved fashion -* \par -* Convert Floating point to Q31(Fixed point 1.31): -* round(twiddleCoefQ31(i) * pow(2, 31)) -* -*/ -const q31_t twiddleCoef_2048_q31[3072] = { - (q31_t)0x7FFFFFFF, (q31_t)0x00000000, (q31_t)0x7FFFD885, - (q31_t)0x006487E3, (q31_t)0x7FFF6216, (q31_t)0x00C90F88, - (q31_t)0x7FFE9CB2, (q31_t)0x012D96B0, (q31_t)0x7FFD885A, - (q31_t)0x01921D1F, (q31_t)0x7FFC250F, (q31_t)0x01F6A296, - (q31_t)0x7FFA72D1, (q31_t)0x025B26D7, (q31_t)0x7FF871A1, - (q31_t)0x02BFA9A4, (q31_t)0x7FF62182, (q31_t)0x03242ABF, - (q31_t)0x7FF38273, (q31_t)0x0388A9E9, (q31_t)0x7FF09477, - (q31_t)0x03ED26E6, (q31_t)0x7FED5790, (q31_t)0x0451A176, - (q31_t)0x7FE9CBC0, (q31_t)0x04B6195D, (q31_t)0x7FE5F108, - (q31_t)0x051A8E5C, (q31_t)0x7FE1C76B, (q31_t)0x057F0034, - (q31_t)0x7FDD4EEC, (q31_t)0x05E36EA9, (q31_t)0x7FD8878D, - (q31_t)0x0647D97C, (q31_t)0x7FD37152, (q31_t)0x06AC406F, - (q31_t)0x7FCE0C3E, (q31_t)0x0710A344, (q31_t)0x7FC85853, - (q31_t)0x077501BE, (q31_t)0x7FC25596, (q31_t)0x07D95B9E, - (q31_t)0x7FBC040A, (q31_t)0x083DB0A7, (q31_t)0x7FB563B2, - (q31_t)0x08A2009A, (q31_t)0x7FAE7494, (q31_t)0x09064B3A, - (q31_t)0x7FA736B4, (q31_t)0x096A9049, (q31_t)0x7F9FAA15, - (q31_t)0x09CECF89, (q31_t)0x7F97CEBC, (q31_t)0x0A3308BC, - (q31_t)0x7F8FA4AF, (q31_t)0x0A973BA5, (q31_t)0x7F872BF3, - (q31_t)0x0AFB6805, (q31_t)0x7F7E648B, (q31_t)0x0B5F8D9F, - (q31_t)0x7F754E7F, (q31_t)0x0BC3AC35, (q31_t)0x7F6BE9D4, - (q31_t)0x0C27C389, (q31_t)0x7F62368F, (q31_t)0x0C8BD35E, - (q31_t)0x7F5834B6, (q31_t)0x0CEFDB75, (q31_t)0x7F4DE450, - (q31_t)0x0D53DB92, (q31_t)0x7F434563, (q31_t)0x0DB7D376, - (q31_t)0x7F3857F5, (q31_t)0x0E1BC2E3, (q31_t)0x7F2D1C0E, - (q31_t)0x0E7FA99D, (q31_t)0x7F2191B4, (q31_t)0x0EE38765, - (q31_t)0x7F15B8EE, (q31_t)0x0F475BFE, (q31_t)0x7F0991C3, - (q31_t)0x0FAB272B, (q31_t)0x7EFD1C3C, (q31_t)0x100EE8AD, - (q31_t)0x7EF0585F, (q31_t)0x1072A047, (q31_t)0x7EE34635, - (q31_t)0x10D64DBC, (q31_t)0x7ED5E5C6, (q31_t)0x1139F0CE, - (q31_t)0x7EC8371A, (q31_t)0x119D8940, (q31_t)0x7EBA3A39, - (q31_t)0x120116D4, (q31_t)0x7EABEF2C, (q31_t)0x1264994E, - (q31_t)0x7E9D55FC, (q31_t)0x12C8106E, (q31_t)0x7E8E6EB1, - (q31_t)0x132B7BF9, (q31_t)0x7E7F3956, (q31_t)0x138EDBB0, - (q31_t)0x7E6FB5F3, (q31_t)0x13F22F57, (q31_t)0x7E5FE493, - (q31_t)0x145576B1, (q31_t)0x7E4FC53E, (q31_t)0x14B8B17F, - (q31_t)0x7E3F57FE, (q31_t)0x151BDF85, (q31_t)0x7E2E9CDF, - (q31_t)0x157F0086, (q31_t)0x7E1D93E9, (q31_t)0x15E21444, - (q31_t)0x7E0C3D29, (q31_t)0x16451A83, (q31_t)0x7DFA98A7, - (q31_t)0x16A81305, (q31_t)0x7DE8A670, (q31_t)0x170AFD8D, - (q31_t)0x7DD6668E, (q31_t)0x176DD9DE, (q31_t)0x7DC3D90D, - (q31_t)0x17D0A7BB, (q31_t)0x7DB0FDF7, (q31_t)0x183366E8, - (q31_t)0x7D9DD55A, (q31_t)0x18961727, (q31_t)0x7D8A5F3F, - (q31_t)0x18F8B83C, (q31_t)0x7D769BB5, (q31_t)0x195B49E9, - (q31_t)0x7D628AC5, (q31_t)0x19BDCBF2, (q31_t)0x7D4E2C7E, - (q31_t)0x1A203E1B, (q31_t)0x7D3980EC, (q31_t)0x1A82A025, - (q31_t)0x7D24881A, (q31_t)0x1AE4F1D6, (q31_t)0x7D0F4218, - (q31_t)0x1B4732EF, (q31_t)0x7CF9AEF0, (q31_t)0x1BA96334, - (q31_t)0x7CE3CEB1, (q31_t)0x1C0B826A, (q31_t)0x7CCDA168, - (q31_t)0x1C6D9053, (q31_t)0x7CB72724, (q31_t)0x1CCF8CB3, - (q31_t)0x7CA05FF1, (q31_t)0x1D31774D, (q31_t)0x7C894BDD, - (q31_t)0x1D934FE5, (q31_t)0x7C71EAF8, (q31_t)0x1DF5163F, - (q31_t)0x7C5A3D4F, (q31_t)0x1E56CA1E, (q31_t)0x7C4242F2, - (q31_t)0x1EB86B46, (q31_t)0x7C29FBEE, (q31_t)0x1F19F97B, - (q31_t)0x7C116853, (q31_t)0x1F7B7480, (q31_t)0x7BF88830, - (q31_t)0x1FDCDC1A, (q31_t)0x7BDF5B94, (q31_t)0x203E300D, - (q31_t)0x7BC5E28F, (q31_t)0x209F701C, (q31_t)0x7BAC1D31, - (q31_t)0x21009C0B, (q31_t)0x7B920B89, (q31_t)0x2161B39F, - (q31_t)0x7B77ADA8, (q31_t)0x21C2B69C, (q31_t)0x7B5D039D, - (q31_t)0x2223A4C5, (q31_t)0x7B420D7A, (q31_t)0x22847DDF, - (q31_t)0x7B26CB4F, (q31_t)0x22E541AE, (q31_t)0x7B0B3D2C, - (q31_t)0x2345EFF7, (q31_t)0x7AEF6323, (q31_t)0x23A6887E, - (q31_t)0x7AD33D45, (q31_t)0x24070B07, (q31_t)0x7AB6CBA3, - (q31_t)0x24677757, (q31_t)0x7A9A0E4F, (q31_t)0x24C7CD32, - (q31_t)0x7A7D055B, (q31_t)0x25280C5D, (q31_t)0x7A5FB0D8, - (q31_t)0x2588349D, (q31_t)0x7A4210D8, (q31_t)0x25E845B5, - (q31_t)0x7A24256E, (q31_t)0x26483F6C, (q31_t)0x7A05EEAD, - (q31_t)0x26A82185, (q31_t)0x79E76CA6, (q31_t)0x2707EBC6, - (q31_t)0x79C89F6D, (q31_t)0x27679DF4, (q31_t)0x79A98715, - (q31_t)0x27C737D2, (q31_t)0x798A23B1, (q31_t)0x2826B928, - (q31_t)0x796A7554, (q31_t)0x288621B9, (q31_t)0x794A7C11, - (q31_t)0x28E5714A, (q31_t)0x792A37FE, (q31_t)0x2944A7A2, - (q31_t)0x7909A92C, (q31_t)0x29A3C484, (q31_t)0x78E8CFB1, - (q31_t)0x2A02C7B8, (q31_t)0x78C7ABA1, (q31_t)0x2A61B101, - (q31_t)0x78A63D10, (q31_t)0x2AC08025, (q31_t)0x78848413, - (q31_t)0x2B1F34EB, (q31_t)0x786280BF, (q31_t)0x2B7DCF17, - (q31_t)0x78403328, (q31_t)0x2BDC4E6F, (q31_t)0x781D9B64, - (q31_t)0x2C3AB2B9, (q31_t)0x77FAB988, (q31_t)0x2C98FBBA, - (q31_t)0x77D78DAA, (q31_t)0x2CF72939, (q31_t)0x77B417DF, - (q31_t)0x2D553AFB, (q31_t)0x7790583D, (q31_t)0x2DB330C7, - (q31_t)0x776C4EDB, (q31_t)0x2E110A62, (q31_t)0x7747FBCE, - (q31_t)0x2E6EC792, (q31_t)0x77235F2D, (q31_t)0x2ECC681E, - (q31_t)0x76FE790E, (q31_t)0x2F29EBCC, (q31_t)0x76D94988, - (q31_t)0x2F875262, (q31_t)0x76B3D0B3, (q31_t)0x2FE49BA6, - (q31_t)0x768E0EA5, (q31_t)0x3041C760, (q31_t)0x76680376, - (q31_t)0x309ED555, (q31_t)0x7641AF3C, (q31_t)0x30FBC54D, - (q31_t)0x761B1211, (q31_t)0x3158970D, (q31_t)0x75F42C0A, - (q31_t)0x31B54A5D, (q31_t)0x75CCFD42, (q31_t)0x3211DF03, - (q31_t)0x75A585CF, (q31_t)0x326E54C7, (q31_t)0x757DC5CA, - (q31_t)0x32CAAB6F, (q31_t)0x7555BD4B, (q31_t)0x3326E2C2, - (q31_t)0x752D6C6C, (q31_t)0x3382FA88, (q31_t)0x7504D345, - (q31_t)0x33DEF287, (q31_t)0x74DBF1EF, (q31_t)0x343ACA87, - (q31_t)0x74B2C883, (q31_t)0x3496824F, (q31_t)0x7489571B, - (q31_t)0x34F219A7, (q31_t)0x745F9DD1, (q31_t)0x354D9056, - (q31_t)0x74359CBD, (q31_t)0x35A8E624, (q31_t)0x740B53FA, - (q31_t)0x36041AD9, (q31_t)0x73E0C3A3, (q31_t)0x365F2E3B, - (q31_t)0x73B5EBD0, (q31_t)0x36BA2013, (q31_t)0x738ACC9E, - (q31_t)0x3714F02A, (q31_t)0x735F6626, (q31_t)0x376F9E46, - (q31_t)0x7333B883, (q31_t)0x37CA2A30, (q31_t)0x7307C3D0, - (q31_t)0x382493B0, (q31_t)0x72DB8828, (q31_t)0x387EDA8E, - (q31_t)0x72AF05A6, (q31_t)0x38D8FE93, (q31_t)0x72823C66, - (q31_t)0x3932FF87, (q31_t)0x72552C84, (q31_t)0x398CDD32, - (q31_t)0x7227D61C, (q31_t)0x39E6975D, (q31_t)0x71FA3948, - (q31_t)0x3A402DD1, (q31_t)0x71CC5626, (q31_t)0x3A99A057, - (q31_t)0x719E2CD2, (q31_t)0x3AF2EEB7, (q31_t)0x716FBD68, - (q31_t)0x3B4C18BA, (q31_t)0x71410804, (q31_t)0x3BA51E29, - (q31_t)0x71120CC5, (q31_t)0x3BFDFECD, (q31_t)0x70E2CBC6, - (q31_t)0x3C56BA70, (q31_t)0x70B34524, (q31_t)0x3CAF50DA, - (q31_t)0x708378FE, (q31_t)0x3D07C1D5, (q31_t)0x70536771, - (q31_t)0x3D600D2B, (q31_t)0x70231099, (q31_t)0x3DB832A5, - (q31_t)0x6FF27496, (q31_t)0x3E10320D, (q31_t)0x6FC19385, - (q31_t)0x3E680B2C, (q31_t)0x6F906D84, (q31_t)0x3EBFBDCC, - (q31_t)0x6F5F02B1, (q31_t)0x3F1749B7, (q31_t)0x6F2D532C, - (q31_t)0x3F6EAEB8, (q31_t)0x6EFB5F12, (q31_t)0x3FC5EC97, - (q31_t)0x6EC92682, (q31_t)0x401D0320, (q31_t)0x6E96A99C, - (q31_t)0x4073F21D, (q31_t)0x6E63E87F, (q31_t)0x40CAB957, - (q31_t)0x6E30E349, (q31_t)0x4121589A, (q31_t)0x6DFD9A1B, - (q31_t)0x4177CFB0, (q31_t)0x6DCA0D14, (q31_t)0x41CE1E64, - (q31_t)0x6D963C54, (q31_t)0x42244480, (q31_t)0x6D6227FA, - (q31_t)0x427A41D0, (q31_t)0x6D2DD027, (q31_t)0x42D0161E, - (q31_t)0x6CF934FB, (q31_t)0x4325C135, (q31_t)0x6CC45697, - (q31_t)0x437B42E1, (q31_t)0x6C8F351C, (q31_t)0x43D09AEC, - (q31_t)0x6C59D0A9, (q31_t)0x4425C923, (q31_t)0x6C242960, - (q31_t)0x447ACD50, (q31_t)0x6BEE3F62, (q31_t)0x44CFA73F, - (q31_t)0x6BB812D0, (q31_t)0x452456BC, (q31_t)0x6B81A3CD, - (q31_t)0x4578DB93, (q31_t)0x6B4AF278, (q31_t)0x45CD358F, - (q31_t)0x6B13FEF5, (q31_t)0x4621647C, (q31_t)0x6ADCC964, - (q31_t)0x46756827, (q31_t)0x6AA551E8, (q31_t)0x46C9405C, - (q31_t)0x6A6D98A4, (q31_t)0x471CECE6, (q31_t)0x6A359DB9, - (q31_t)0x47706D93, (q31_t)0x69FD614A, (q31_t)0x47C3C22E, - (q31_t)0x69C4E37A, (q31_t)0x4816EA85, (q31_t)0x698C246C, - (q31_t)0x4869E664, (q31_t)0x69532442, (q31_t)0x48BCB598, - (q31_t)0x6919E320, (q31_t)0x490F57EE, (q31_t)0x68E06129, - (q31_t)0x4961CD32, (q31_t)0x68A69E81, (q31_t)0x49B41533, - (q31_t)0x686C9B4B, (q31_t)0x4A062FBD, (q31_t)0x683257AA, - (q31_t)0x4A581C9D, (q31_t)0x67F7D3C4, (q31_t)0x4AA9DBA1, - (q31_t)0x67BD0FBC, (q31_t)0x4AFB6C97, (q31_t)0x67820BB6, - (q31_t)0x4B4CCF4D, (q31_t)0x6746C7D7, (q31_t)0x4B9E038F, - (q31_t)0x670B4443, (q31_t)0x4BEF092D, (q31_t)0x66CF811F, - (q31_t)0x4C3FDFF3, (q31_t)0x66937E90, (q31_t)0x4C9087B1, - (q31_t)0x66573CBB, (q31_t)0x4CE10034, (q31_t)0x661ABBC5, - (q31_t)0x4D31494B, (q31_t)0x65DDFBD3, (q31_t)0x4D8162C4, - (q31_t)0x65A0FD0B, (q31_t)0x4DD14C6E, (q31_t)0x6563BF92, - (q31_t)0x4E210617, (q31_t)0x6526438E, (q31_t)0x4E708F8F, - (q31_t)0x64E88926, (q31_t)0x4EBFE8A4, (q31_t)0x64AA907F, - (q31_t)0x4F0F1126, (q31_t)0x646C59BF, (q31_t)0x4F5E08E3, - (q31_t)0x642DE50D, (q31_t)0x4FACCFAB, (q31_t)0x63EF328F, - (q31_t)0x4FFB654D, (q31_t)0x63B0426D, (q31_t)0x5049C999, - (q31_t)0x637114CC, (q31_t)0x5097FC5E, (q31_t)0x6331A9D4, - (q31_t)0x50E5FD6C, (q31_t)0x62F201AC, (q31_t)0x5133CC94, - (q31_t)0x62B21C7B, (q31_t)0x518169A4, (q31_t)0x6271FA69, - (q31_t)0x51CED46E, (q31_t)0x62319B9D, (q31_t)0x521C0CC1, - (q31_t)0x61F1003E, (q31_t)0x5269126E, (q31_t)0x61B02876, - (q31_t)0x52B5E545, (q31_t)0x616F146B, (q31_t)0x53028517, - (q31_t)0x612DC446, (q31_t)0x534EF1B5, (q31_t)0x60EC3830, - (q31_t)0x539B2AEF, (q31_t)0x60AA704F, (q31_t)0x53E73097, - (q31_t)0x60686CCE, (q31_t)0x5433027D, (q31_t)0x60262DD5, - (q31_t)0x547EA073, (q31_t)0x5FE3B38D, (q31_t)0x54CA0A4A, - (q31_t)0x5FA0FE1E, (q31_t)0x55153FD4, (q31_t)0x5F5E0DB3, - (q31_t)0x556040E2, (q31_t)0x5F1AE273, (q31_t)0x55AB0D46, - (q31_t)0x5ED77C89, (q31_t)0x55F5A4D2, (q31_t)0x5E93DC1F, - (q31_t)0x56400757, (q31_t)0x5E50015D, (q31_t)0x568A34A9, - (q31_t)0x5E0BEC6E, (q31_t)0x56D42C99, (q31_t)0x5DC79D7C, - (q31_t)0x571DEEF9, (q31_t)0x5D8314B0, (q31_t)0x57677B9D, - (q31_t)0x5D3E5236, (q31_t)0x57B0D256, (q31_t)0x5CF95638, - (q31_t)0x57F9F2F7, (q31_t)0x5CB420DF, (q31_t)0x5842DD54, - (q31_t)0x5C6EB258, (q31_t)0x588B913F, (q31_t)0x5C290ACC, - (q31_t)0x58D40E8C, (q31_t)0x5BE32A67, (q31_t)0x591C550E, - (q31_t)0x5B9D1153, (q31_t)0x59646497, (q31_t)0x5B56BFBD, - (q31_t)0x59AC3CFD, (q31_t)0x5B1035CF, (q31_t)0x59F3DE12, - (q31_t)0x5AC973B4, (q31_t)0x5A3B47AA, (q31_t)0x5A82799A, - (q31_t)0x5A82799A, (q31_t)0x5A3B47AA, (q31_t)0x5AC973B4, - (q31_t)0x59F3DE12, (q31_t)0x5B1035CF, (q31_t)0x59AC3CFD, - (q31_t)0x5B56BFBD, (q31_t)0x59646497, (q31_t)0x5B9D1153, - (q31_t)0x591C550E, (q31_t)0x5BE32A67, (q31_t)0x58D40E8C, - (q31_t)0x5C290ACC, (q31_t)0x588B913F, (q31_t)0x5C6EB258, - (q31_t)0x5842DD54, (q31_t)0x5CB420DF, (q31_t)0x57F9F2F7, - (q31_t)0x5CF95638, (q31_t)0x57B0D256, (q31_t)0x5D3E5236, - (q31_t)0x57677B9D, (q31_t)0x5D8314B0, (q31_t)0x571DEEF9, - (q31_t)0x5DC79D7C, (q31_t)0x56D42C99, (q31_t)0x5E0BEC6E, - (q31_t)0x568A34A9, (q31_t)0x5E50015D, (q31_t)0x56400757, - (q31_t)0x5E93DC1F, (q31_t)0x55F5A4D2, (q31_t)0x5ED77C89, - (q31_t)0x55AB0D46, (q31_t)0x5F1AE273, (q31_t)0x556040E2, - (q31_t)0x5F5E0DB3, (q31_t)0x55153FD4, (q31_t)0x5FA0FE1E, - (q31_t)0x54CA0A4A, (q31_t)0x5FE3B38D, (q31_t)0x547EA073, - (q31_t)0x60262DD5, (q31_t)0x5433027D, (q31_t)0x60686CCE, - (q31_t)0x53E73097, (q31_t)0x60AA704F, (q31_t)0x539B2AEF, - (q31_t)0x60EC3830, (q31_t)0x534EF1B5, (q31_t)0x612DC446, - (q31_t)0x53028517, (q31_t)0x616F146B, (q31_t)0x52B5E545, - (q31_t)0x61B02876, (q31_t)0x5269126E, (q31_t)0x61F1003E, - (q31_t)0x521C0CC1, (q31_t)0x62319B9D, (q31_t)0x51CED46E, - (q31_t)0x6271FA69, (q31_t)0x518169A4, (q31_t)0x62B21C7B, - (q31_t)0x5133CC94, (q31_t)0x62F201AC, (q31_t)0x50E5FD6C, - (q31_t)0x6331A9D4, (q31_t)0x5097FC5E, (q31_t)0x637114CC, - (q31_t)0x5049C999, (q31_t)0x63B0426D, (q31_t)0x4FFB654D, - (q31_t)0x63EF328F, (q31_t)0x4FACCFAB, (q31_t)0x642DE50D, - (q31_t)0x4F5E08E3, (q31_t)0x646C59BF, (q31_t)0x4F0F1126, - (q31_t)0x64AA907F, (q31_t)0x4EBFE8A4, (q31_t)0x64E88926, - (q31_t)0x4E708F8F, (q31_t)0x6526438E, (q31_t)0x4E210617, - (q31_t)0x6563BF92, (q31_t)0x4DD14C6E, (q31_t)0x65A0FD0B, - (q31_t)0x4D8162C4, (q31_t)0x65DDFBD3, (q31_t)0x4D31494B, - (q31_t)0x661ABBC5, (q31_t)0x4CE10034, (q31_t)0x66573CBB, - (q31_t)0x4C9087B1, (q31_t)0x66937E90, (q31_t)0x4C3FDFF3, - (q31_t)0x66CF811F, (q31_t)0x4BEF092D, (q31_t)0x670B4443, - (q31_t)0x4B9E038F, (q31_t)0x6746C7D7, (q31_t)0x4B4CCF4D, - (q31_t)0x67820BB6, (q31_t)0x4AFB6C97, (q31_t)0x67BD0FBC, - (q31_t)0x4AA9DBA1, (q31_t)0x67F7D3C4, (q31_t)0x4A581C9D, - (q31_t)0x683257AA, (q31_t)0x4A062FBD, (q31_t)0x686C9B4B, - (q31_t)0x49B41533, (q31_t)0x68A69E81, (q31_t)0x4961CD32, - (q31_t)0x68E06129, (q31_t)0x490F57EE, (q31_t)0x6919E320, - (q31_t)0x48BCB598, (q31_t)0x69532442, (q31_t)0x4869E664, - (q31_t)0x698C246C, (q31_t)0x4816EA85, (q31_t)0x69C4E37A, - (q31_t)0x47C3C22E, (q31_t)0x69FD614A, (q31_t)0x47706D93, - (q31_t)0x6A359DB9, (q31_t)0x471CECE6, (q31_t)0x6A6D98A4, - (q31_t)0x46C9405C, (q31_t)0x6AA551E8, (q31_t)0x46756827, - (q31_t)0x6ADCC964, (q31_t)0x4621647C, (q31_t)0x6B13FEF5, - (q31_t)0x45CD358F, (q31_t)0x6B4AF278, (q31_t)0x4578DB93, - (q31_t)0x6B81A3CD, (q31_t)0x452456BC, (q31_t)0x6BB812D0, - (q31_t)0x44CFA73F, (q31_t)0x6BEE3F62, (q31_t)0x447ACD50, - (q31_t)0x6C242960, (q31_t)0x4425C923, (q31_t)0x6C59D0A9, - (q31_t)0x43D09AEC, (q31_t)0x6C8F351C, (q31_t)0x437B42E1, - (q31_t)0x6CC45697, (q31_t)0x4325C135, (q31_t)0x6CF934FB, - (q31_t)0x42D0161E, (q31_t)0x6D2DD027, (q31_t)0x427A41D0, - (q31_t)0x6D6227FA, (q31_t)0x42244480, (q31_t)0x6D963C54, - (q31_t)0x41CE1E64, (q31_t)0x6DCA0D14, (q31_t)0x4177CFB0, - (q31_t)0x6DFD9A1B, (q31_t)0x4121589A, (q31_t)0x6E30E349, - (q31_t)0x40CAB957, (q31_t)0x6E63E87F, (q31_t)0x4073F21D, - (q31_t)0x6E96A99C, (q31_t)0x401D0320, (q31_t)0x6EC92682, - (q31_t)0x3FC5EC97, (q31_t)0x6EFB5F12, (q31_t)0x3F6EAEB8, - (q31_t)0x6F2D532C, (q31_t)0x3F1749B7, (q31_t)0x6F5F02B1, - (q31_t)0x3EBFBDCC, (q31_t)0x6F906D84, (q31_t)0x3E680B2C, - (q31_t)0x6FC19385, (q31_t)0x3E10320D, (q31_t)0x6FF27496, - (q31_t)0x3DB832A5, (q31_t)0x70231099, (q31_t)0x3D600D2B, - (q31_t)0x70536771, (q31_t)0x3D07C1D5, (q31_t)0x708378FE, - (q31_t)0x3CAF50DA, (q31_t)0x70B34524, (q31_t)0x3C56BA70, - (q31_t)0x70E2CBC6, (q31_t)0x3BFDFECD, (q31_t)0x71120CC5, - (q31_t)0x3BA51E29, (q31_t)0x71410804, (q31_t)0x3B4C18BA, - (q31_t)0x716FBD68, (q31_t)0x3AF2EEB7, (q31_t)0x719E2CD2, - (q31_t)0x3A99A057, (q31_t)0x71CC5626, (q31_t)0x3A402DD1, - (q31_t)0x71FA3948, (q31_t)0x39E6975D, (q31_t)0x7227D61C, - (q31_t)0x398CDD32, (q31_t)0x72552C84, (q31_t)0x3932FF87, - (q31_t)0x72823C66, (q31_t)0x38D8FE93, (q31_t)0x72AF05A6, - (q31_t)0x387EDA8E, (q31_t)0x72DB8828, (q31_t)0x382493B0, - (q31_t)0x7307C3D0, (q31_t)0x37CA2A30, (q31_t)0x7333B883, - (q31_t)0x376F9E46, (q31_t)0x735F6626, (q31_t)0x3714F02A, - (q31_t)0x738ACC9E, (q31_t)0x36BA2013, (q31_t)0x73B5EBD0, - (q31_t)0x365F2E3B, (q31_t)0x73E0C3A3, (q31_t)0x36041AD9, - (q31_t)0x740B53FA, (q31_t)0x35A8E624, (q31_t)0x74359CBD, - (q31_t)0x354D9056, (q31_t)0x745F9DD1, (q31_t)0x34F219A7, - (q31_t)0x7489571B, (q31_t)0x3496824F, (q31_t)0x74B2C883, - (q31_t)0x343ACA87, (q31_t)0x74DBF1EF, (q31_t)0x33DEF287, - (q31_t)0x7504D345, (q31_t)0x3382FA88, (q31_t)0x752D6C6C, - (q31_t)0x3326E2C2, (q31_t)0x7555BD4B, (q31_t)0x32CAAB6F, - (q31_t)0x757DC5CA, (q31_t)0x326E54C7, (q31_t)0x75A585CF, - (q31_t)0x3211DF03, (q31_t)0x75CCFD42, (q31_t)0x31B54A5D, - (q31_t)0x75F42C0A, (q31_t)0x3158970D, (q31_t)0x761B1211, - (q31_t)0x30FBC54D, (q31_t)0x7641AF3C, (q31_t)0x309ED555, - (q31_t)0x76680376, (q31_t)0x3041C760, (q31_t)0x768E0EA5, - (q31_t)0x2FE49BA6, (q31_t)0x76B3D0B3, (q31_t)0x2F875262, - (q31_t)0x76D94988, (q31_t)0x2F29EBCC, (q31_t)0x76FE790E, - (q31_t)0x2ECC681E, (q31_t)0x77235F2D, (q31_t)0x2E6EC792, - (q31_t)0x7747FBCE, (q31_t)0x2E110A62, (q31_t)0x776C4EDB, - (q31_t)0x2DB330C7, (q31_t)0x7790583D, (q31_t)0x2D553AFB, - (q31_t)0x77B417DF, (q31_t)0x2CF72939, (q31_t)0x77D78DAA, - (q31_t)0x2C98FBBA, (q31_t)0x77FAB988, (q31_t)0x2C3AB2B9, - (q31_t)0x781D9B64, (q31_t)0x2BDC4E6F, (q31_t)0x78403328, - (q31_t)0x2B7DCF17, (q31_t)0x786280BF, (q31_t)0x2B1F34EB, - (q31_t)0x78848413, (q31_t)0x2AC08025, (q31_t)0x78A63D10, - (q31_t)0x2A61B101, (q31_t)0x78C7ABA1, (q31_t)0x2A02C7B8, - (q31_t)0x78E8CFB1, (q31_t)0x29A3C484, (q31_t)0x7909A92C, - (q31_t)0x2944A7A2, (q31_t)0x792A37FE, (q31_t)0x28E5714A, - (q31_t)0x794A7C11, (q31_t)0x288621B9, (q31_t)0x796A7554, - (q31_t)0x2826B928, (q31_t)0x798A23B1, (q31_t)0x27C737D2, - (q31_t)0x79A98715, (q31_t)0x27679DF4, (q31_t)0x79C89F6D, - (q31_t)0x2707EBC6, (q31_t)0x79E76CA6, (q31_t)0x26A82185, - (q31_t)0x7A05EEAD, (q31_t)0x26483F6C, (q31_t)0x7A24256E, - (q31_t)0x25E845B5, (q31_t)0x7A4210D8, (q31_t)0x2588349D, - (q31_t)0x7A5FB0D8, (q31_t)0x25280C5D, (q31_t)0x7A7D055B, - (q31_t)0x24C7CD32, (q31_t)0x7A9A0E4F, (q31_t)0x24677757, - (q31_t)0x7AB6CBA3, (q31_t)0x24070B07, (q31_t)0x7AD33D45, - (q31_t)0x23A6887E, (q31_t)0x7AEF6323, (q31_t)0x2345EFF7, - (q31_t)0x7B0B3D2C, (q31_t)0x22E541AE, (q31_t)0x7B26CB4F, - (q31_t)0x22847DDF, (q31_t)0x7B420D7A, (q31_t)0x2223A4C5, - (q31_t)0x7B5D039D, (q31_t)0x21C2B69C, (q31_t)0x7B77ADA8, - (q31_t)0x2161B39F, (q31_t)0x7B920B89, (q31_t)0x21009C0B, - (q31_t)0x7BAC1D31, (q31_t)0x209F701C, (q31_t)0x7BC5E28F, - (q31_t)0x203E300D, (q31_t)0x7BDF5B94, (q31_t)0x1FDCDC1A, - (q31_t)0x7BF88830, (q31_t)0x1F7B7480, (q31_t)0x7C116853, - (q31_t)0x1F19F97B, (q31_t)0x7C29FBEE, (q31_t)0x1EB86B46, - (q31_t)0x7C4242F2, (q31_t)0x1E56CA1E, (q31_t)0x7C5A3D4F, - (q31_t)0x1DF5163F, (q31_t)0x7C71EAF8, (q31_t)0x1D934FE5, - (q31_t)0x7C894BDD, (q31_t)0x1D31774D, (q31_t)0x7CA05FF1, - (q31_t)0x1CCF8CB3, (q31_t)0x7CB72724, (q31_t)0x1C6D9053, - (q31_t)0x7CCDA168, (q31_t)0x1C0B826A, (q31_t)0x7CE3CEB1, - (q31_t)0x1BA96334, (q31_t)0x7CF9AEF0, (q31_t)0x1B4732EF, - (q31_t)0x7D0F4218, (q31_t)0x1AE4F1D6, (q31_t)0x7D24881A, - (q31_t)0x1A82A025, (q31_t)0x7D3980EC, (q31_t)0x1A203E1B, - (q31_t)0x7D4E2C7E, (q31_t)0x19BDCBF2, (q31_t)0x7D628AC5, - (q31_t)0x195B49E9, (q31_t)0x7D769BB5, (q31_t)0x18F8B83C, - (q31_t)0x7D8A5F3F, (q31_t)0x18961727, (q31_t)0x7D9DD55A, - (q31_t)0x183366E8, (q31_t)0x7DB0FDF7, (q31_t)0x17D0A7BB, - (q31_t)0x7DC3D90D, (q31_t)0x176DD9DE, (q31_t)0x7DD6668E, - (q31_t)0x170AFD8D, (q31_t)0x7DE8A670, (q31_t)0x16A81305, - (q31_t)0x7DFA98A7, (q31_t)0x16451A83, (q31_t)0x7E0C3D29, - (q31_t)0x15E21444, (q31_t)0x7E1D93E9, (q31_t)0x157F0086, - (q31_t)0x7E2E9CDF, (q31_t)0x151BDF85, (q31_t)0x7E3F57FE, - (q31_t)0x14B8B17F, (q31_t)0x7E4FC53E, (q31_t)0x145576B1, - (q31_t)0x7E5FE493, (q31_t)0x13F22F57, (q31_t)0x7E6FB5F3, - (q31_t)0x138EDBB0, (q31_t)0x7E7F3956, (q31_t)0x132B7BF9, - (q31_t)0x7E8E6EB1, (q31_t)0x12C8106E, (q31_t)0x7E9D55FC, - (q31_t)0x1264994E, (q31_t)0x7EABEF2C, (q31_t)0x120116D4, - (q31_t)0x7EBA3A39, (q31_t)0x119D8940, (q31_t)0x7EC8371A, - (q31_t)0x1139F0CE, (q31_t)0x7ED5E5C6, (q31_t)0x10D64DBC, - (q31_t)0x7EE34635, (q31_t)0x1072A047, (q31_t)0x7EF0585F, - (q31_t)0x100EE8AD, (q31_t)0x7EFD1C3C, (q31_t)0x0FAB272B, - (q31_t)0x7F0991C3, (q31_t)0x0F475BFE, (q31_t)0x7F15B8EE, - (q31_t)0x0EE38765, (q31_t)0x7F2191B4, (q31_t)0x0E7FA99D, - (q31_t)0x7F2D1C0E, (q31_t)0x0E1BC2E3, (q31_t)0x7F3857F5, - (q31_t)0x0DB7D376, (q31_t)0x7F434563, (q31_t)0x0D53DB92, - (q31_t)0x7F4DE450, (q31_t)0x0CEFDB75, (q31_t)0x7F5834B6, - (q31_t)0x0C8BD35E, (q31_t)0x7F62368F, (q31_t)0x0C27C389, - (q31_t)0x7F6BE9D4, (q31_t)0x0BC3AC35, (q31_t)0x7F754E7F, - (q31_t)0x0B5F8D9F, (q31_t)0x7F7E648B, (q31_t)0x0AFB6805, - (q31_t)0x7F872BF3, (q31_t)0x0A973BA5, (q31_t)0x7F8FA4AF, - (q31_t)0x0A3308BC, (q31_t)0x7F97CEBC, (q31_t)0x09CECF89, - (q31_t)0x7F9FAA15, (q31_t)0x096A9049, (q31_t)0x7FA736B4, - (q31_t)0x09064B3A, (q31_t)0x7FAE7494, (q31_t)0x08A2009A, - (q31_t)0x7FB563B2, (q31_t)0x083DB0A7, (q31_t)0x7FBC040A, - (q31_t)0x07D95B9E, (q31_t)0x7FC25596, (q31_t)0x077501BE, - (q31_t)0x7FC85853, (q31_t)0x0710A344, (q31_t)0x7FCE0C3E, - (q31_t)0x06AC406F, (q31_t)0x7FD37152, (q31_t)0x0647D97C, - (q31_t)0x7FD8878D, (q31_t)0x05E36EA9, (q31_t)0x7FDD4EEC, - (q31_t)0x057F0034, (q31_t)0x7FE1C76B, (q31_t)0x051A8E5C, - (q31_t)0x7FE5F108, (q31_t)0x04B6195D, (q31_t)0x7FE9CBC0, - (q31_t)0x0451A176, (q31_t)0x7FED5790, (q31_t)0x03ED26E6, - (q31_t)0x7FF09477, (q31_t)0x0388A9E9, (q31_t)0x7FF38273, - (q31_t)0x03242ABF, (q31_t)0x7FF62182, (q31_t)0x02BFA9A4, - (q31_t)0x7FF871A1, (q31_t)0x025B26D7, (q31_t)0x7FFA72D1, - (q31_t)0x01F6A296, (q31_t)0x7FFC250F, (q31_t)0x01921D1F, - (q31_t)0x7FFD885A, (q31_t)0x012D96B0, (q31_t)0x7FFE9CB2, - (q31_t)0x00C90F88, (q31_t)0x7FFF6216, (q31_t)0x006487E3, - (q31_t)0x7FFFD885, (q31_t)0x00000000, (q31_t)0x7FFFFFFF, - (q31_t)0xFF9B781D, (q31_t)0x7FFFD885, (q31_t)0xFF36F078, - (q31_t)0x7FFF6216, (q31_t)0xFED2694F, (q31_t)0x7FFE9CB2, - (q31_t)0xFE6DE2E0, (q31_t)0x7FFD885A, (q31_t)0xFE095D69, - (q31_t)0x7FFC250F, (q31_t)0xFDA4D928, (q31_t)0x7FFA72D1, - (q31_t)0xFD40565B, (q31_t)0x7FF871A1, (q31_t)0xFCDBD541, - (q31_t)0x7FF62182, (q31_t)0xFC775616, (q31_t)0x7FF38273, - (q31_t)0xFC12D919, (q31_t)0x7FF09477, (q31_t)0xFBAE5E89, - (q31_t)0x7FED5790, (q31_t)0xFB49E6A2, (q31_t)0x7FE9CBC0, - (q31_t)0xFAE571A4, (q31_t)0x7FE5F108, (q31_t)0xFA80FFCB, - (q31_t)0x7FE1C76B, (q31_t)0xFA1C9156, (q31_t)0x7FDD4EEC, - (q31_t)0xF9B82683, (q31_t)0x7FD8878D, (q31_t)0xF953BF90, - (q31_t)0x7FD37152, (q31_t)0xF8EF5CBB, (q31_t)0x7FCE0C3E, - (q31_t)0xF88AFE41, (q31_t)0x7FC85853, (q31_t)0xF826A461, - (q31_t)0x7FC25596, (q31_t)0xF7C24F58, (q31_t)0x7FBC040A, - (q31_t)0xF75DFF65, (q31_t)0x7FB563B2, (q31_t)0xF6F9B4C5, - (q31_t)0x7FAE7494, (q31_t)0xF6956FB6, (q31_t)0x7FA736B4, - (q31_t)0xF6313076, (q31_t)0x7F9FAA15, (q31_t)0xF5CCF743, - (q31_t)0x7F97CEBC, (q31_t)0xF568C45A, (q31_t)0x7F8FA4AF, - (q31_t)0xF50497FA, (q31_t)0x7F872BF3, (q31_t)0xF4A07260, - (q31_t)0x7F7E648B, (q31_t)0xF43C53CA, (q31_t)0x7F754E7F, - (q31_t)0xF3D83C76, (q31_t)0x7F6BE9D4, (q31_t)0xF3742CA1, - (q31_t)0x7F62368F, (q31_t)0xF310248A, (q31_t)0x7F5834B6, - (q31_t)0xF2AC246D, (q31_t)0x7F4DE450, (q31_t)0xF2482C89, - (q31_t)0x7F434563, (q31_t)0xF1E43D1C, (q31_t)0x7F3857F5, - (q31_t)0xF1805662, (q31_t)0x7F2D1C0E, (q31_t)0xF11C789A, - (q31_t)0x7F2191B4, (q31_t)0xF0B8A401, (q31_t)0x7F15B8EE, - (q31_t)0xF054D8D4, (q31_t)0x7F0991C3, (q31_t)0xEFF11752, - (q31_t)0x7EFD1C3C, (q31_t)0xEF8D5FB8, (q31_t)0x7EF0585F, - (q31_t)0xEF29B243, (q31_t)0x7EE34635, (q31_t)0xEEC60F31, - (q31_t)0x7ED5E5C6, (q31_t)0xEE6276BF, (q31_t)0x7EC8371A, - (q31_t)0xEDFEE92B, (q31_t)0x7EBA3A39, (q31_t)0xED9B66B2, - (q31_t)0x7EABEF2C, (q31_t)0xED37EF91, (q31_t)0x7E9D55FC, - (q31_t)0xECD48406, (q31_t)0x7E8E6EB1, (q31_t)0xEC71244F, - (q31_t)0x7E7F3956, (q31_t)0xEC0DD0A8, (q31_t)0x7E6FB5F3, - (q31_t)0xEBAA894E, (q31_t)0x7E5FE493, (q31_t)0xEB474E80, - (q31_t)0x7E4FC53E, (q31_t)0xEAE4207A, (q31_t)0x7E3F57FE, - (q31_t)0xEA80FF79, (q31_t)0x7E2E9CDF, (q31_t)0xEA1DEBBB, - (q31_t)0x7E1D93E9, (q31_t)0xE9BAE57C, (q31_t)0x7E0C3D29, - (q31_t)0xE957ECFB, (q31_t)0x7DFA98A7, (q31_t)0xE8F50273, - (q31_t)0x7DE8A670, (q31_t)0xE8922621, (q31_t)0x7DD6668E, - (q31_t)0xE82F5844, (q31_t)0x7DC3D90D, (q31_t)0xE7CC9917, - (q31_t)0x7DB0FDF7, (q31_t)0xE769E8D8, (q31_t)0x7D9DD55A, - (q31_t)0xE70747C3, (q31_t)0x7D8A5F3F, (q31_t)0xE6A4B616, - (q31_t)0x7D769BB5, (q31_t)0xE642340D, (q31_t)0x7D628AC5, - (q31_t)0xE5DFC1E4, (q31_t)0x7D4E2C7E, (q31_t)0xE57D5FDA, - (q31_t)0x7D3980EC, (q31_t)0xE51B0E2A, (q31_t)0x7D24881A, - (q31_t)0xE4B8CD10, (q31_t)0x7D0F4218, (q31_t)0xE4569CCB, - (q31_t)0x7CF9AEF0, (q31_t)0xE3F47D95, (q31_t)0x7CE3CEB1, - (q31_t)0xE3926FAC, (q31_t)0x7CCDA168, (q31_t)0xE330734C, - (q31_t)0x7CB72724, (q31_t)0xE2CE88B2, (q31_t)0x7CA05FF1, - (q31_t)0xE26CB01A, (q31_t)0x7C894BDD, (q31_t)0xE20AE9C1, - (q31_t)0x7C71EAF8, (q31_t)0xE1A935E1, (q31_t)0x7C5A3D4F, - (q31_t)0xE14794B9, (q31_t)0x7C4242F2, (q31_t)0xE0E60684, - (q31_t)0x7C29FBEE, (q31_t)0xE0848B7F, (q31_t)0x7C116853, - (q31_t)0xE02323E5, (q31_t)0x7BF88830, (q31_t)0xDFC1CFF2, - (q31_t)0x7BDF5B94, (q31_t)0xDF608FE3, (q31_t)0x7BC5E28F, - (q31_t)0xDEFF63F4, (q31_t)0x7BAC1D31, (q31_t)0xDE9E4C60, - (q31_t)0x7B920B89, (q31_t)0xDE3D4963, (q31_t)0x7B77ADA8, - (q31_t)0xDDDC5B3A, (q31_t)0x7B5D039D, (q31_t)0xDD7B8220, - (q31_t)0x7B420D7A, (q31_t)0xDD1ABE51, (q31_t)0x7B26CB4F, - (q31_t)0xDCBA1008, (q31_t)0x7B0B3D2C, (q31_t)0xDC597781, - (q31_t)0x7AEF6323, (q31_t)0xDBF8F4F8, (q31_t)0x7AD33D45, - (q31_t)0xDB9888A8, (q31_t)0x7AB6CBA3, (q31_t)0xDB3832CD, - (q31_t)0x7A9A0E4F, (q31_t)0xDAD7F3A2, (q31_t)0x7A7D055B, - (q31_t)0xDA77CB62, (q31_t)0x7A5FB0D8, (q31_t)0xDA17BA4A, - (q31_t)0x7A4210D8, (q31_t)0xD9B7C093, (q31_t)0x7A24256E, - (q31_t)0xD957DE7A, (q31_t)0x7A05EEAD, (q31_t)0xD8F81439, - (q31_t)0x79E76CA6, (q31_t)0xD898620C, (q31_t)0x79C89F6D, - (q31_t)0xD838C82D, (q31_t)0x79A98715, (q31_t)0xD7D946D7, - (q31_t)0x798A23B1, (q31_t)0xD779DE46, (q31_t)0x796A7554, - (q31_t)0xD71A8EB5, (q31_t)0x794A7C11, (q31_t)0xD6BB585D, - (q31_t)0x792A37FE, (q31_t)0xD65C3B7B, (q31_t)0x7909A92C, - (q31_t)0xD5FD3847, (q31_t)0x78E8CFB1, (q31_t)0xD59E4EFE, - (q31_t)0x78C7ABA1, (q31_t)0xD53F7FDA, (q31_t)0x78A63D10, - (q31_t)0xD4E0CB14, (q31_t)0x78848413, (q31_t)0xD48230E8, - (q31_t)0x786280BF, (q31_t)0xD423B190, (q31_t)0x78403328, - (q31_t)0xD3C54D46, (q31_t)0x781D9B64, (q31_t)0xD3670445, - (q31_t)0x77FAB988, (q31_t)0xD308D6C6, (q31_t)0x77D78DAA, - (q31_t)0xD2AAC504, (q31_t)0x77B417DF, (q31_t)0xD24CCF38, - (q31_t)0x7790583D, (q31_t)0xD1EEF59E, (q31_t)0x776C4EDB, - (q31_t)0xD191386D, (q31_t)0x7747FBCE, (q31_t)0xD13397E1, - (q31_t)0x77235F2D, (q31_t)0xD0D61433, (q31_t)0x76FE790E, - (q31_t)0xD078AD9D, (q31_t)0x76D94988, (q31_t)0xD01B6459, - (q31_t)0x76B3D0B3, (q31_t)0xCFBE389F, (q31_t)0x768E0EA5, - (q31_t)0xCF612AAA, (q31_t)0x76680376, (q31_t)0xCF043AB2, - (q31_t)0x7641AF3C, (q31_t)0xCEA768F2, (q31_t)0x761B1211, - (q31_t)0xCE4AB5A2, (q31_t)0x75F42C0A, (q31_t)0xCDEE20FC, - (q31_t)0x75CCFD42, (q31_t)0xCD91AB38, (q31_t)0x75A585CF, - (q31_t)0xCD355490, (q31_t)0x757DC5CA, (q31_t)0xCCD91D3D, - (q31_t)0x7555BD4B, (q31_t)0xCC7D0577, (q31_t)0x752D6C6C, - (q31_t)0xCC210D78, (q31_t)0x7504D345, (q31_t)0xCBC53578, - (q31_t)0x74DBF1EF, (q31_t)0xCB697DB0, (q31_t)0x74B2C883, - (q31_t)0xCB0DE658, (q31_t)0x7489571B, (q31_t)0xCAB26FA9, - (q31_t)0x745F9DD1, (q31_t)0xCA5719DB, (q31_t)0x74359CBD, - (q31_t)0xC9FBE527, (q31_t)0x740B53FA, (q31_t)0xC9A0D1C4, - (q31_t)0x73E0C3A3, (q31_t)0xC945DFEC, (q31_t)0x73B5EBD0, - (q31_t)0xC8EB0FD6, (q31_t)0x738ACC9E, (q31_t)0xC89061BA, - (q31_t)0x735F6626, (q31_t)0xC835D5D0, (q31_t)0x7333B883, - (q31_t)0xC7DB6C50, (q31_t)0x7307C3D0, (q31_t)0xC7812571, - (q31_t)0x72DB8828, (q31_t)0xC727016C, (q31_t)0x72AF05A6, - (q31_t)0xC6CD0079, (q31_t)0x72823C66, (q31_t)0xC67322CD, - (q31_t)0x72552C84, (q31_t)0xC61968A2, (q31_t)0x7227D61C, - (q31_t)0xC5BFD22E, (q31_t)0x71FA3948, (q31_t)0xC5665FA8, - (q31_t)0x71CC5626, (q31_t)0xC50D1148, (q31_t)0x719E2CD2, - (q31_t)0xC4B3E746, (q31_t)0x716FBD68, (q31_t)0xC45AE1D7, - (q31_t)0x71410804, (q31_t)0xC4020132, (q31_t)0x71120CC5, - (q31_t)0xC3A9458F, (q31_t)0x70E2CBC6, (q31_t)0xC350AF25, - (q31_t)0x70B34524, (q31_t)0xC2F83E2A, (q31_t)0x708378FE, - (q31_t)0xC29FF2D4, (q31_t)0x70536771, (q31_t)0xC247CD5A, - (q31_t)0x70231099, (q31_t)0xC1EFCDF2, (q31_t)0x6FF27496, - (q31_t)0xC197F4D3, (q31_t)0x6FC19385, (q31_t)0xC1404233, - (q31_t)0x6F906D84, (q31_t)0xC0E8B648, (q31_t)0x6F5F02B1, - (q31_t)0xC0915147, (q31_t)0x6F2D532C, (q31_t)0xC03A1368, - (q31_t)0x6EFB5F12, (q31_t)0xBFE2FCDF, (q31_t)0x6EC92682, - (q31_t)0xBF8C0DE2, (q31_t)0x6E96A99C, (q31_t)0xBF3546A8, - (q31_t)0x6E63E87F, (q31_t)0xBEDEA765, (q31_t)0x6E30E349, - (q31_t)0xBE88304F, (q31_t)0x6DFD9A1B, (q31_t)0xBE31E19B, - (q31_t)0x6DCA0D14, (q31_t)0xBDDBBB7F, (q31_t)0x6D963C54, - (q31_t)0xBD85BE2F, (q31_t)0x6D6227FA, (q31_t)0xBD2FE9E1, - (q31_t)0x6D2DD027, (q31_t)0xBCDA3ECA, (q31_t)0x6CF934FB, - (q31_t)0xBC84BD1E, (q31_t)0x6CC45697, (q31_t)0xBC2F6513, - (q31_t)0x6C8F351C, (q31_t)0xBBDA36DC, (q31_t)0x6C59D0A9, - (q31_t)0xBB8532AF, (q31_t)0x6C242960, (q31_t)0xBB3058C0, - (q31_t)0x6BEE3F62, (q31_t)0xBADBA943, (q31_t)0x6BB812D0, - (q31_t)0xBA87246C, (q31_t)0x6B81A3CD, (q31_t)0xBA32CA70, - (q31_t)0x6B4AF278, (q31_t)0xB9DE9B83, (q31_t)0x6B13FEF5, - (q31_t)0xB98A97D8, (q31_t)0x6ADCC964, (q31_t)0xB936BFA3, - (q31_t)0x6AA551E8, (q31_t)0xB8E31319, (q31_t)0x6A6D98A4, - (q31_t)0xB88F926C, (q31_t)0x6A359DB9, (q31_t)0xB83C3DD1, - (q31_t)0x69FD614A, (q31_t)0xB7E9157A, (q31_t)0x69C4E37A, - (q31_t)0xB796199B, (q31_t)0x698C246C, (q31_t)0xB7434A67, - (q31_t)0x69532442, (q31_t)0xB6F0A811, (q31_t)0x6919E320, - (q31_t)0xB69E32CD, (q31_t)0x68E06129, (q31_t)0xB64BEACC, - (q31_t)0x68A69E81, (q31_t)0xB5F9D042, (q31_t)0x686C9B4B, - (q31_t)0xB5A7E362, (q31_t)0x683257AA, (q31_t)0xB556245E, - (q31_t)0x67F7D3C4, (q31_t)0xB5049368, (q31_t)0x67BD0FBC, - (q31_t)0xB4B330B2, (q31_t)0x67820BB6, (q31_t)0xB461FC70, - (q31_t)0x6746C7D7, (q31_t)0xB410F6D2, (q31_t)0x670B4443, - (q31_t)0xB3C0200C, (q31_t)0x66CF811F, (q31_t)0xB36F784E, - (q31_t)0x66937E90, (q31_t)0xB31EFFCB, (q31_t)0x66573CBB, - (q31_t)0xB2CEB6B5, (q31_t)0x661ABBC5, (q31_t)0xB27E9D3B, - (q31_t)0x65DDFBD3, (q31_t)0xB22EB392, (q31_t)0x65A0FD0B, - (q31_t)0xB1DEF9E8, (q31_t)0x6563BF92, (q31_t)0xB18F7070, - (q31_t)0x6526438E, (q31_t)0xB140175B, (q31_t)0x64E88926, - (q31_t)0xB0F0EEDA, (q31_t)0x64AA907F, (q31_t)0xB0A1F71C, - (q31_t)0x646C59BF, (q31_t)0xB0533055, (q31_t)0x642DE50D, - (q31_t)0xB0049AB2, (q31_t)0x63EF328F, (q31_t)0xAFB63667, - (q31_t)0x63B0426D, (q31_t)0xAF6803A1, (q31_t)0x637114CC, - (q31_t)0xAF1A0293, (q31_t)0x6331A9D4, (q31_t)0xAECC336B, - (q31_t)0x62F201AC, (q31_t)0xAE7E965B, (q31_t)0x62B21C7B, - (q31_t)0xAE312B91, (q31_t)0x6271FA69, (q31_t)0xADE3F33E, - (q31_t)0x62319B9D, (q31_t)0xAD96ED91, (q31_t)0x61F1003E, - (q31_t)0xAD4A1ABA, (q31_t)0x61B02876, (q31_t)0xACFD7AE8, - (q31_t)0x616F146B, (q31_t)0xACB10E4A, (q31_t)0x612DC446, - (q31_t)0xAC64D510, (q31_t)0x60EC3830, (q31_t)0xAC18CF68, - (q31_t)0x60AA704F, (q31_t)0xABCCFD82, (q31_t)0x60686CCE, - (q31_t)0xAB815F8C, (q31_t)0x60262DD5, (q31_t)0xAB35F5B5, - (q31_t)0x5FE3B38D, (q31_t)0xAAEAC02B, (q31_t)0x5FA0FE1E, - (q31_t)0xAA9FBF1D, (q31_t)0x5F5E0DB3, (q31_t)0xAA54F2B9, - (q31_t)0x5F1AE273, (q31_t)0xAA0A5B2D, (q31_t)0x5ED77C89, - (q31_t)0xA9BFF8A8, (q31_t)0x5E93DC1F, (q31_t)0xA975CB56, - (q31_t)0x5E50015D, (q31_t)0xA92BD366, (q31_t)0x5E0BEC6E, - (q31_t)0xA8E21106, (q31_t)0x5DC79D7C, (q31_t)0xA8988463, - (q31_t)0x5D8314B0, (q31_t)0xA84F2DA9, (q31_t)0x5D3E5236, - (q31_t)0xA8060D08, (q31_t)0x5CF95638, (q31_t)0xA7BD22AB, - (q31_t)0x5CB420DF, (q31_t)0xA7746EC0, (q31_t)0x5C6EB258, - (q31_t)0xA72BF173, (q31_t)0x5C290ACC, (q31_t)0xA6E3AAF2, - (q31_t)0x5BE32A67, (q31_t)0xA69B9B68, (q31_t)0x5B9D1153, - (q31_t)0xA653C302, (q31_t)0x5B56BFBD, (q31_t)0xA60C21ED, - (q31_t)0x5B1035CF, (q31_t)0xA5C4B855, (q31_t)0x5AC973B4, - (q31_t)0xA57D8666, (q31_t)0x5A82799A, (q31_t)0xA5368C4B, - (q31_t)0x5A3B47AA, (q31_t)0xA4EFCA31, (q31_t)0x59F3DE12, - (q31_t)0xA4A94042, (q31_t)0x59AC3CFD, (q31_t)0xA462EEAC, - (q31_t)0x59646497, (q31_t)0xA41CD598, (q31_t)0x591C550E, - (q31_t)0xA3D6F533, (q31_t)0x58D40E8C, (q31_t)0xA3914DA7, - (q31_t)0x588B913F, (q31_t)0xA34BDF20, (q31_t)0x5842DD54, - (q31_t)0xA306A9C7, (q31_t)0x57F9F2F7, (q31_t)0xA2C1ADC9, - (q31_t)0x57B0D256, (q31_t)0xA27CEB4F, (q31_t)0x57677B9D, - (q31_t)0xA2386283, (q31_t)0x571DEEF9, (q31_t)0xA1F41391, - (q31_t)0x56D42C99, (q31_t)0xA1AFFEA2, (q31_t)0x568A34A9, - (q31_t)0xA16C23E1, (q31_t)0x56400757, (q31_t)0xA1288376, - (q31_t)0x55F5A4D2, (q31_t)0xA0E51D8C, (q31_t)0x55AB0D46, - (q31_t)0xA0A1F24C, (q31_t)0x556040E2, (q31_t)0xA05F01E1, - (q31_t)0x55153FD4, (q31_t)0xA01C4C72, (q31_t)0x54CA0A4A, - (q31_t)0x9FD9D22A, (q31_t)0x547EA073, (q31_t)0x9F979331, - (q31_t)0x5433027D, (q31_t)0x9F558FB0, (q31_t)0x53E73097, - (q31_t)0x9F13C7D0, (q31_t)0x539B2AEF, (q31_t)0x9ED23BB9, - (q31_t)0x534EF1B5, (q31_t)0x9E90EB94, (q31_t)0x53028517, - (q31_t)0x9E4FD789, (q31_t)0x52B5E545, (q31_t)0x9E0EFFC1, - (q31_t)0x5269126E, (q31_t)0x9DCE6462, (q31_t)0x521C0CC1, - (q31_t)0x9D8E0596, (q31_t)0x51CED46E, (q31_t)0x9D4DE384, - (q31_t)0x518169A4, (q31_t)0x9D0DFE53, (q31_t)0x5133CC94, - (q31_t)0x9CCE562B, (q31_t)0x50E5FD6C, (q31_t)0x9C8EEB33, - (q31_t)0x5097FC5E, (q31_t)0x9C4FBD92, (q31_t)0x5049C999, - (q31_t)0x9C10CD70, (q31_t)0x4FFB654D, (q31_t)0x9BD21AF2, - (q31_t)0x4FACCFAB, (q31_t)0x9B93A640, (q31_t)0x4F5E08E3, - (q31_t)0x9B556F80, (q31_t)0x4F0F1126, (q31_t)0x9B1776D9, - (q31_t)0x4EBFE8A4, (q31_t)0x9AD9BC71, (q31_t)0x4E708F8F, - (q31_t)0x9A9C406D, (q31_t)0x4E210617, (q31_t)0x9A5F02F5, - (q31_t)0x4DD14C6E, (q31_t)0x9A22042C, (q31_t)0x4D8162C4, - (q31_t)0x99E5443A, (q31_t)0x4D31494B, (q31_t)0x99A8C344, - (q31_t)0x4CE10034, (q31_t)0x996C816F, (q31_t)0x4C9087B1, - (q31_t)0x99307EE0, (q31_t)0x4C3FDFF3, (q31_t)0x98F4BBBC, - (q31_t)0x4BEF092D, (q31_t)0x98B93828, (q31_t)0x4B9E038F, - (q31_t)0x987DF449, (q31_t)0x4B4CCF4D, (q31_t)0x9842F043, - (q31_t)0x4AFB6C97, (q31_t)0x98082C3B, (q31_t)0x4AA9DBA1, - (q31_t)0x97CDA855, (q31_t)0x4A581C9D, (q31_t)0x979364B5, - (q31_t)0x4A062FBD, (q31_t)0x9759617E, (q31_t)0x49B41533, - (q31_t)0x971F9ED6, (q31_t)0x4961CD32, (q31_t)0x96E61CDF, - (q31_t)0x490F57EE, (q31_t)0x96ACDBBD, (q31_t)0x48BCB598, - (q31_t)0x9673DB94, (q31_t)0x4869E664, (q31_t)0x963B1C85, - (q31_t)0x4816EA85, (q31_t)0x96029EB5, (q31_t)0x47C3C22E, - (q31_t)0x95CA6246, (q31_t)0x47706D93, (q31_t)0x9592675B, - (q31_t)0x471CECE6, (q31_t)0x955AAE17, (q31_t)0x46C9405C, - (q31_t)0x9523369B, (q31_t)0x46756827, (q31_t)0x94EC010B, - (q31_t)0x4621647C, (q31_t)0x94B50D87, (q31_t)0x45CD358F, - (q31_t)0x947E5C32, (q31_t)0x4578DB93, (q31_t)0x9447ED2F, - (q31_t)0x452456BC, (q31_t)0x9411C09D, (q31_t)0x44CFA73F, - (q31_t)0x93DBD69F, (q31_t)0x447ACD50, (q31_t)0x93A62F56, - (q31_t)0x4425C923, (q31_t)0x9370CAE4, (q31_t)0x43D09AEC, - (q31_t)0x933BA968, (q31_t)0x437B42E1, (q31_t)0x9306CB04, - (q31_t)0x4325C135, (q31_t)0x92D22FD8, (q31_t)0x42D0161E, - (q31_t)0x929DD805, (q31_t)0x427A41D0, (q31_t)0x9269C3AC, - (q31_t)0x42244480, (q31_t)0x9235F2EB, (q31_t)0x41CE1E64, - (q31_t)0x920265E4, (q31_t)0x4177CFB0, (q31_t)0x91CF1CB6, - (q31_t)0x4121589A, (q31_t)0x919C1780, (q31_t)0x40CAB957, - (q31_t)0x91695663, (q31_t)0x4073F21D, (q31_t)0x9136D97D, - (q31_t)0x401D0320, (q31_t)0x9104A0ED, (q31_t)0x3FC5EC97, - (q31_t)0x90D2ACD3, (q31_t)0x3F6EAEB8, (q31_t)0x90A0FD4E, - (q31_t)0x3F1749B7, (q31_t)0x906F927B, (q31_t)0x3EBFBDCC, - (q31_t)0x903E6C7A, (q31_t)0x3E680B2C, (q31_t)0x900D8B69, - (q31_t)0x3E10320D, (q31_t)0x8FDCEF66, (q31_t)0x3DB832A5, - (q31_t)0x8FAC988E, (q31_t)0x3D600D2B, (q31_t)0x8F7C8701, - (q31_t)0x3D07C1D5, (q31_t)0x8F4CBADB, (q31_t)0x3CAF50DA, - (q31_t)0x8F1D343A, (q31_t)0x3C56BA70, (q31_t)0x8EEDF33B, - (q31_t)0x3BFDFECD, (q31_t)0x8EBEF7FB, (q31_t)0x3BA51E29, - (q31_t)0x8E904298, (q31_t)0x3B4C18BA, (q31_t)0x8E61D32D, - (q31_t)0x3AF2EEB7, (q31_t)0x8E33A9D9, (q31_t)0x3A99A057, - (q31_t)0x8E05C6B7, (q31_t)0x3A402DD1, (q31_t)0x8DD829E4, - (q31_t)0x39E6975D, (q31_t)0x8DAAD37B, (q31_t)0x398CDD32, - (q31_t)0x8D7DC399, (q31_t)0x3932FF87, (q31_t)0x8D50FA59, - (q31_t)0x38D8FE93, (q31_t)0x8D2477D8, (q31_t)0x387EDA8E, - (q31_t)0x8CF83C30, (q31_t)0x382493B0, (q31_t)0x8CCC477D, - (q31_t)0x37CA2A30, (q31_t)0x8CA099D9, (q31_t)0x376F9E46, - (q31_t)0x8C753361, (q31_t)0x3714F02A, (q31_t)0x8C4A142F, - (q31_t)0x36BA2013, (q31_t)0x8C1F3C5C, (q31_t)0x365F2E3B, - (q31_t)0x8BF4AC05, (q31_t)0x36041AD9, (q31_t)0x8BCA6342, - (q31_t)0x35A8E624, (q31_t)0x8BA0622F, (q31_t)0x354D9056, - (q31_t)0x8B76A8E4, (q31_t)0x34F219A7, (q31_t)0x8B4D377C, - (q31_t)0x3496824F, (q31_t)0x8B240E10, (q31_t)0x343ACA87, - (q31_t)0x8AFB2CBA, (q31_t)0x33DEF287, (q31_t)0x8AD29393, - (q31_t)0x3382FA88, (q31_t)0x8AAA42B4, (q31_t)0x3326E2C2, - (q31_t)0x8A823A35, (q31_t)0x32CAAB6F, (q31_t)0x8A5A7A30, - (q31_t)0x326E54C7, (q31_t)0x8A3302BD, (q31_t)0x3211DF03, - (q31_t)0x8A0BD3F5, (q31_t)0x31B54A5D, (q31_t)0x89E4EDEE, - (q31_t)0x3158970D, (q31_t)0x89BE50C3, (q31_t)0x30FBC54D, - (q31_t)0x8997FC89, (q31_t)0x309ED555, (q31_t)0x8971F15A, - (q31_t)0x3041C760, (q31_t)0x894C2F4C, (q31_t)0x2FE49BA6, - (q31_t)0x8926B677, (q31_t)0x2F875262, (q31_t)0x890186F1, - (q31_t)0x2F29EBCC, (q31_t)0x88DCA0D3, (q31_t)0x2ECC681E, - (q31_t)0x88B80431, (q31_t)0x2E6EC792, (q31_t)0x8893B124, - (q31_t)0x2E110A62, (q31_t)0x886FA7C2, (q31_t)0x2DB330C7, - (q31_t)0x884BE820, (q31_t)0x2D553AFB, (q31_t)0x88287255, - (q31_t)0x2CF72939, (q31_t)0x88054677, (q31_t)0x2C98FBBA, - (q31_t)0x87E2649B, (q31_t)0x2C3AB2B9, (q31_t)0x87BFCCD7, - (q31_t)0x2BDC4E6F, (q31_t)0x879D7F40, (q31_t)0x2B7DCF17, - (q31_t)0x877B7BEC, (q31_t)0x2B1F34EB, (q31_t)0x8759C2EF, - (q31_t)0x2AC08025, (q31_t)0x8738545E, (q31_t)0x2A61B101, - (q31_t)0x8717304E, (q31_t)0x2A02C7B8, (q31_t)0x86F656D3, - (q31_t)0x29A3C484, (q31_t)0x86D5C802, (q31_t)0x2944A7A2, - (q31_t)0x86B583EE, (q31_t)0x28E5714A, (q31_t)0x86958AAB, - (q31_t)0x288621B9, (q31_t)0x8675DC4E, (q31_t)0x2826B928, - (q31_t)0x865678EA, (q31_t)0x27C737D2, (q31_t)0x86376092, - (q31_t)0x27679DF4, (q31_t)0x86189359, (q31_t)0x2707EBC6, - (q31_t)0x85FA1152, (q31_t)0x26A82185, (q31_t)0x85DBDA91, - (q31_t)0x26483F6C, (q31_t)0x85BDEF27, (q31_t)0x25E845B5, - (q31_t)0x85A04F28, (q31_t)0x2588349D, (q31_t)0x8582FAA4, - (q31_t)0x25280C5D, (q31_t)0x8565F1B0, (q31_t)0x24C7CD32, - (q31_t)0x8549345C, (q31_t)0x24677757, (q31_t)0x852CC2BA, - (q31_t)0x24070B07, (q31_t)0x85109CDC, (q31_t)0x23A6887E, - (q31_t)0x84F4C2D3, (q31_t)0x2345EFF7, (q31_t)0x84D934B0, - (q31_t)0x22E541AE, (q31_t)0x84BDF285, (q31_t)0x22847DDF, - (q31_t)0x84A2FC62, (q31_t)0x2223A4C5, (q31_t)0x84885257, - (q31_t)0x21C2B69C, (q31_t)0x846DF476, (q31_t)0x2161B39F, - (q31_t)0x8453E2CE, (q31_t)0x21009C0B, (q31_t)0x843A1D70, - (q31_t)0x209F701C, (q31_t)0x8420A46B, (q31_t)0x203E300D, - (q31_t)0x840777CF, (q31_t)0x1FDCDC1A, (q31_t)0x83EE97AC, - (q31_t)0x1F7B7480, (q31_t)0x83D60411, (q31_t)0x1F19F97B, - (q31_t)0x83BDBD0D, (q31_t)0x1EB86B46, (q31_t)0x83A5C2B0, - (q31_t)0x1E56CA1E, (q31_t)0x838E1507, (q31_t)0x1DF5163F, - (q31_t)0x8376B422, (q31_t)0x1D934FE5, (q31_t)0x835FA00E, - (q31_t)0x1D31774D, (q31_t)0x8348D8DB, (q31_t)0x1CCF8CB3, - (q31_t)0x83325E97, (q31_t)0x1C6D9053, (q31_t)0x831C314E, - (q31_t)0x1C0B826A, (q31_t)0x8306510F, (q31_t)0x1BA96334, - (q31_t)0x82F0BDE8, (q31_t)0x1B4732EF, (q31_t)0x82DB77E5, - (q31_t)0x1AE4F1D6, (q31_t)0x82C67F13, (q31_t)0x1A82A025, - (q31_t)0x82B1D381, (q31_t)0x1A203E1B, (q31_t)0x829D753A, - (q31_t)0x19BDCBF2, (q31_t)0x8289644A, (q31_t)0x195B49E9, - (q31_t)0x8275A0C0, (q31_t)0x18F8B83C, (q31_t)0x82622AA5, - (q31_t)0x18961727, (q31_t)0x824F0208, (q31_t)0x183366E8, - (q31_t)0x823C26F2, (q31_t)0x17D0A7BB, (q31_t)0x82299971, - (q31_t)0x176DD9DE, (q31_t)0x8217598F, (q31_t)0x170AFD8D, - (q31_t)0x82056758, (q31_t)0x16A81305, (q31_t)0x81F3C2D7, - (q31_t)0x16451A83, (q31_t)0x81E26C16, (q31_t)0x15E21444, - (q31_t)0x81D16320, (q31_t)0x157F0086, (q31_t)0x81C0A801, - (q31_t)0x151BDF85, (q31_t)0x81B03AC1, (q31_t)0x14B8B17F, - (q31_t)0x81A01B6C, (q31_t)0x145576B1, (q31_t)0x81904A0C, - (q31_t)0x13F22F57, (q31_t)0x8180C6A9, (q31_t)0x138EDBB0, - (q31_t)0x8171914E, (q31_t)0x132B7BF9, (q31_t)0x8162AA03, - (q31_t)0x12C8106E, (q31_t)0x815410D3, (q31_t)0x1264994E, - (q31_t)0x8145C5C6, (q31_t)0x120116D4, (q31_t)0x8137C8E6, - (q31_t)0x119D8940, (q31_t)0x812A1A39, (q31_t)0x1139F0CE, - (q31_t)0x811CB9CA, (q31_t)0x10D64DBC, (q31_t)0x810FA7A0, - (q31_t)0x1072A047, (q31_t)0x8102E3C3, (q31_t)0x100EE8AD, - (q31_t)0x80F66E3C, (q31_t)0x0FAB272B, (q31_t)0x80EA4712, - (q31_t)0x0F475BFE, (q31_t)0x80DE6E4C, (q31_t)0x0EE38765, - (q31_t)0x80D2E3F1, (q31_t)0x0E7FA99D, (q31_t)0x80C7A80A, - (q31_t)0x0E1BC2E3, (q31_t)0x80BCBA9C, (q31_t)0x0DB7D376, - (q31_t)0x80B21BAF, (q31_t)0x0D53DB92, (q31_t)0x80A7CB49, - (q31_t)0x0CEFDB75, (q31_t)0x809DC970, (q31_t)0x0C8BD35E, - (q31_t)0x8094162B, (q31_t)0x0C27C389, (q31_t)0x808AB180, - (q31_t)0x0BC3AC35, (q31_t)0x80819B74, (q31_t)0x0B5F8D9F, - (q31_t)0x8078D40D, (q31_t)0x0AFB6805, (q31_t)0x80705B50, - (q31_t)0x0A973BA5, (q31_t)0x80683143, (q31_t)0x0A3308BC, - (q31_t)0x806055EA, (q31_t)0x09CECF89, (q31_t)0x8058C94C, - (q31_t)0x096A9049, (q31_t)0x80518B6B, (q31_t)0x09064B3A, - (q31_t)0x804A9C4D, (q31_t)0x08A2009A, (q31_t)0x8043FBF6, - (q31_t)0x083DB0A7, (q31_t)0x803DAA69, (q31_t)0x07D95B9E, - (q31_t)0x8037A7AC, (q31_t)0x077501BE, (q31_t)0x8031F3C1, - (q31_t)0x0710A344, (q31_t)0x802C8EAD, (q31_t)0x06AC406F, - (q31_t)0x80277872, (q31_t)0x0647D97C, (q31_t)0x8022B113, - (q31_t)0x05E36EA9, (q31_t)0x801E3894, (q31_t)0x057F0034, - (q31_t)0x801A0EF7, (q31_t)0x051A8E5C, (q31_t)0x80163440, - (q31_t)0x04B6195D, (q31_t)0x8012A86F, (q31_t)0x0451A176, - (q31_t)0x800F6B88, (q31_t)0x03ED26E6, (q31_t)0x800C7D8C, - (q31_t)0x0388A9E9, (q31_t)0x8009DE7D, (q31_t)0x03242ABF, - (q31_t)0x80078E5E, (q31_t)0x02BFA9A4, (q31_t)0x80058D2E, - (q31_t)0x025B26D7, (q31_t)0x8003DAF0, (q31_t)0x01F6A296, - (q31_t)0x800277A5, (q31_t)0x01921D1F, (q31_t)0x8001634D, - (q31_t)0x012D96B0, (q31_t)0x80009DE9, (q31_t)0x00C90F88, - (q31_t)0x8000277A, (q31_t)0x006487E3, (q31_t)0x80000000, - (q31_t)0x00000000, (q31_t)0x8000277A, (q31_t)0xFF9B781D, - (q31_t)0x80009DE9, (q31_t)0xFF36F078, (q31_t)0x8001634D, - (q31_t)0xFED2694F, (q31_t)0x800277A5, (q31_t)0xFE6DE2E0, - (q31_t)0x8003DAF0, (q31_t)0xFE095D69, (q31_t)0x80058D2E, - (q31_t)0xFDA4D928, (q31_t)0x80078E5E, (q31_t)0xFD40565B, - (q31_t)0x8009DE7D, (q31_t)0xFCDBD541, (q31_t)0x800C7D8C, - (q31_t)0xFC775616, (q31_t)0x800F6B88, (q31_t)0xFC12D919, - (q31_t)0x8012A86F, (q31_t)0xFBAE5E89, (q31_t)0x80163440, - (q31_t)0xFB49E6A2, (q31_t)0x801A0EF7, (q31_t)0xFAE571A4, - (q31_t)0x801E3894, (q31_t)0xFA80FFCB, (q31_t)0x8022B113, - (q31_t)0xFA1C9156, (q31_t)0x80277872, (q31_t)0xF9B82683, - (q31_t)0x802C8EAD, (q31_t)0xF953BF90, (q31_t)0x8031F3C1, - (q31_t)0xF8EF5CBB, (q31_t)0x8037A7AC, (q31_t)0xF88AFE41, - (q31_t)0x803DAA69, (q31_t)0xF826A461, (q31_t)0x8043FBF6, - (q31_t)0xF7C24F58, (q31_t)0x804A9C4D, (q31_t)0xF75DFF65, - (q31_t)0x80518B6B, (q31_t)0xF6F9B4C5, (q31_t)0x8058C94C, - (q31_t)0xF6956FB6, (q31_t)0x806055EA, (q31_t)0xF6313076, - (q31_t)0x80683143, (q31_t)0xF5CCF743, (q31_t)0x80705B50, - (q31_t)0xF568C45A, (q31_t)0x8078D40D, (q31_t)0xF50497FA, - (q31_t)0x80819B74, (q31_t)0xF4A07260, (q31_t)0x808AB180, - (q31_t)0xF43C53CA, (q31_t)0x8094162B, (q31_t)0xF3D83C76, - (q31_t)0x809DC970, (q31_t)0xF3742CA1, (q31_t)0x80A7CB49, - (q31_t)0xF310248A, (q31_t)0x80B21BAF, (q31_t)0xF2AC246D, - (q31_t)0x80BCBA9C, (q31_t)0xF2482C89, (q31_t)0x80C7A80A, - (q31_t)0xF1E43D1C, (q31_t)0x80D2E3F1, (q31_t)0xF1805662, - (q31_t)0x80DE6E4C, (q31_t)0xF11C789A, (q31_t)0x80EA4712, - (q31_t)0xF0B8A401, (q31_t)0x80F66E3C, (q31_t)0xF054D8D4, - (q31_t)0x8102E3C3, (q31_t)0xEFF11752, (q31_t)0x810FA7A0, - (q31_t)0xEF8D5FB8, (q31_t)0x811CB9CA, (q31_t)0xEF29B243, - (q31_t)0x812A1A39, (q31_t)0xEEC60F31, (q31_t)0x8137C8E6, - (q31_t)0xEE6276BF, (q31_t)0x8145C5C6, (q31_t)0xEDFEE92B, - (q31_t)0x815410D3, (q31_t)0xED9B66B2, (q31_t)0x8162AA03, - (q31_t)0xED37EF91, (q31_t)0x8171914E, (q31_t)0xECD48406, - (q31_t)0x8180C6A9, (q31_t)0xEC71244F, (q31_t)0x81904A0C, - (q31_t)0xEC0DD0A8, (q31_t)0x81A01B6C, (q31_t)0xEBAA894E, - (q31_t)0x81B03AC1, (q31_t)0xEB474E80, (q31_t)0x81C0A801, - (q31_t)0xEAE4207A, (q31_t)0x81D16320, (q31_t)0xEA80FF79, - (q31_t)0x81E26C16, (q31_t)0xEA1DEBBB, (q31_t)0x81F3C2D7, - (q31_t)0xE9BAE57C, (q31_t)0x82056758, (q31_t)0xE957ECFB, - (q31_t)0x8217598F, (q31_t)0xE8F50273, (q31_t)0x82299971, - (q31_t)0xE8922621, (q31_t)0x823C26F2, (q31_t)0xE82F5844, - (q31_t)0x824F0208, (q31_t)0xE7CC9917, (q31_t)0x82622AA5, - (q31_t)0xE769E8D8, (q31_t)0x8275A0C0, (q31_t)0xE70747C3, - (q31_t)0x8289644A, (q31_t)0xE6A4B616, (q31_t)0x829D753A, - (q31_t)0xE642340D, (q31_t)0x82B1D381, (q31_t)0xE5DFC1E4, - (q31_t)0x82C67F13, (q31_t)0xE57D5FDA, (q31_t)0x82DB77E5, - (q31_t)0xE51B0E2A, (q31_t)0x82F0BDE8, (q31_t)0xE4B8CD10, - (q31_t)0x8306510F, (q31_t)0xE4569CCB, (q31_t)0x831C314E, - (q31_t)0xE3F47D95, (q31_t)0x83325E97, (q31_t)0xE3926FAC, - (q31_t)0x8348D8DB, (q31_t)0xE330734C, (q31_t)0x835FA00E, - (q31_t)0xE2CE88B2, (q31_t)0x8376B422, (q31_t)0xE26CB01A, - (q31_t)0x838E1507, (q31_t)0xE20AE9C1, (q31_t)0x83A5C2B0, - (q31_t)0xE1A935E1, (q31_t)0x83BDBD0D, (q31_t)0xE14794B9, - (q31_t)0x83D60411, (q31_t)0xE0E60684, (q31_t)0x83EE97AC, - (q31_t)0xE0848B7F, (q31_t)0x840777CF, (q31_t)0xE02323E5, - (q31_t)0x8420A46B, (q31_t)0xDFC1CFF2, (q31_t)0x843A1D70, - (q31_t)0xDF608FE3, (q31_t)0x8453E2CE, (q31_t)0xDEFF63F4, - (q31_t)0x846DF476, (q31_t)0xDE9E4C60, (q31_t)0x84885257, - (q31_t)0xDE3D4963, (q31_t)0x84A2FC62, (q31_t)0xDDDC5B3A, - (q31_t)0x84BDF285, (q31_t)0xDD7B8220, (q31_t)0x84D934B0, - (q31_t)0xDD1ABE51, (q31_t)0x84F4C2D3, (q31_t)0xDCBA1008, - (q31_t)0x85109CDC, (q31_t)0xDC597781, (q31_t)0x852CC2BA, - (q31_t)0xDBF8F4F8, (q31_t)0x8549345C, (q31_t)0xDB9888A8, - (q31_t)0x8565F1B0, (q31_t)0xDB3832CD, (q31_t)0x8582FAA4, - (q31_t)0xDAD7F3A2, (q31_t)0x85A04F28, (q31_t)0xDA77CB62, - (q31_t)0x85BDEF27, (q31_t)0xDA17BA4A, (q31_t)0x85DBDA91, - (q31_t)0xD9B7C093, (q31_t)0x85FA1152, (q31_t)0xD957DE7A, - (q31_t)0x86189359, (q31_t)0xD8F81439, (q31_t)0x86376092, - (q31_t)0xD898620C, (q31_t)0x865678EA, (q31_t)0xD838C82D, - (q31_t)0x8675DC4E, (q31_t)0xD7D946D7, (q31_t)0x86958AAB, - (q31_t)0xD779DE46, (q31_t)0x86B583EE, (q31_t)0xD71A8EB5, - (q31_t)0x86D5C802, (q31_t)0xD6BB585D, (q31_t)0x86F656D3, - (q31_t)0xD65C3B7B, (q31_t)0x8717304E, (q31_t)0xD5FD3847, - (q31_t)0x8738545E, (q31_t)0xD59E4EFE, (q31_t)0x8759C2EF, - (q31_t)0xD53F7FDA, (q31_t)0x877B7BEC, (q31_t)0xD4E0CB14, - (q31_t)0x879D7F40, (q31_t)0xD48230E8, (q31_t)0x87BFCCD7, - (q31_t)0xD423B190, (q31_t)0x87E2649B, (q31_t)0xD3C54D46, - (q31_t)0x88054677, (q31_t)0xD3670445, (q31_t)0x88287255, - (q31_t)0xD308D6C6, (q31_t)0x884BE820, (q31_t)0xD2AAC504, - (q31_t)0x886FA7C2, (q31_t)0xD24CCF38, (q31_t)0x8893B124, - (q31_t)0xD1EEF59E, (q31_t)0x88B80431, (q31_t)0xD191386D, - (q31_t)0x88DCA0D3, (q31_t)0xD13397E1, (q31_t)0x890186F1, - (q31_t)0xD0D61433, (q31_t)0x8926B677, (q31_t)0xD078AD9D, - (q31_t)0x894C2F4C, (q31_t)0xD01B6459, (q31_t)0x8971F15A, - (q31_t)0xCFBE389F, (q31_t)0x8997FC89, (q31_t)0xCF612AAA, - (q31_t)0x89BE50C3, (q31_t)0xCF043AB2, (q31_t)0x89E4EDEE, - (q31_t)0xCEA768F2, (q31_t)0x8A0BD3F5, (q31_t)0xCE4AB5A2, - (q31_t)0x8A3302BD, (q31_t)0xCDEE20FC, (q31_t)0x8A5A7A30, - (q31_t)0xCD91AB38, (q31_t)0x8A823A35, (q31_t)0xCD355490, - (q31_t)0x8AAA42B4, (q31_t)0xCCD91D3D, (q31_t)0x8AD29393, - (q31_t)0xCC7D0577, (q31_t)0x8AFB2CBA, (q31_t)0xCC210D78, - (q31_t)0x8B240E10, (q31_t)0xCBC53578, (q31_t)0x8B4D377C, - (q31_t)0xCB697DB0, (q31_t)0x8B76A8E4, (q31_t)0xCB0DE658, - (q31_t)0x8BA0622F, (q31_t)0xCAB26FA9, (q31_t)0x8BCA6342, - (q31_t)0xCA5719DB, (q31_t)0x8BF4AC05, (q31_t)0xC9FBE527, - (q31_t)0x8C1F3C5C, (q31_t)0xC9A0D1C4, (q31_t)0x8C4A142F, - (q31_t)0xC945DFEC, (q31_t)0x8C753361, (q31_t)0xC8EB0FD6, - (q31_t)0x8CA099D9, (q31_t)0xC89061BA, (q31_t)0x8CCC477D, - (q31_t)0xC835D5D0, (q31_t)0x8CF83C30, (q31_t)0xC7DB6C50, - (q31_t)0x8D2477D8, (q31_t)0xC7812571, (q31_t)0x8D50FA59, - (q31_t)0xC727016C, (q31_t)0x8D7DC399, (q31_t)0xC6CD0079, - (q31_t)0x8DAAD37B, (q31_t)0xC67322CD, (q31_t)0x8DD829E4, - (q31_t)0xC61968A2, (q31_t)0x8E05C6B7, (q31_t)0xC5BFD22E, - (q31_t)0x8E33A9D9, (q31_t)0xC5665FA8, (q31_t)0x8E61D32D, - (q31_t)0xC50D1148, (q31_t)0x8E904298, (q31_t)0xC4B3E746, - (q31_t)0x8EBEF7FB, (q31_t)0xC45AE1D7, (q31_t)0x8EEDF33B, - (q31_t)0xC4020132, (q31_t)0x8F1D343A, (q31_t)0xC3A9458F, - (q31_t)0x8F4CBADB, (q31_t)0xC350AF25, (q31_t)0x8F7C8701, - (q31_t)0xC2F83E2A, (q31_t)0x8FAC988E, (q31_t)0xC29FF2D4, - (q31_t)0x8FDCEF66, (q31_t)0xC247CD5A, (q31_t)0x900D8B69, - (q31_t)0xC1EFCDF2, (q31_t)0x903E6C7A, (q31_t)0xC197F4D3, - (q31_t)0x906F927B, (q31_t)0xC1404233, (q31_t)0x90A0FD4E, - (q31_t)0xC0E8B648, (q31_t)0x90D2ACD3, (q31_t)0xC0915147, - (q31_t)0x9104A0ED, (q31_t)0xC03A1368, (q31_t)0x9136D97D, - (q31_t)0xBFE2FCDF, (q31_t)0x91695663, (q31_t)0xBF8C0DE2, - (q31_t)0x919C1780, (q31_t)0xBF3546A8, (q31_t)0x91CF1CB6, - (q31_t)0xBEDEA765, (q31_t)0x920265E4, (q31_t)0xBE88304F, - (q31_t)0x9235F2EB, (q31_t)0xBE31E19B, (q31_t)0x9269C3AC, - (q31_t)0xBDDBBB7F, (q31_t)0x929DD805, (q31_t)0xBD85BE2F, - (q31_t)0x92D22FD8, (q31_t)0xBD2FE9E1, (q31_t)0x9306CB04, - (q31_t)0xBCDA3ECA, (q31_t)0x933BA968, (q31_t)0xBC84BD1E, - (q31_t)0x9370CAE4, (q31_t)0xBC2F6513, (q31_t)0x93A62F56, - (q31_t)0xBBDA36DC, (q31_t)0x93DBD69F, (q31_t)0xBB8532AF, - (q31_t)0x9411C09D, (q31_t)0xBB3058C0, (q31_t)0x9447ED2F, - (q31_t)0xBADBA943, (q31_t)0x947E5C32, (q31_t)0xBA87246C, - (q31_t)0x94B50D87, (q31_t)0xBA32CA70, (q31_t)0x94EC010B, - (q31_t)0xB9DE9B83, (q31_t)0x9523369B, (q31_t)0xB98A97D8, - (q31_t)0x955AAE17, (q31_t)0xB936BFA3, (q31_t)0x9592675B, - (q31_t)0xB8E31319, (q31_t)0x95CA6246, (q31_t)0xB88F926C, - (q31_t)0x96029EB5, (q31_t)0xB83C3DD1, (q31_t)0x963B1C85, - (q31_t)0xB7E9157A, (q31_t)0x9673DB94, (q31_t)0xB796199B, - (q31_t)0x96ACDBBD, (q31_t)0xB7434A67, (q31_t)0x96E61CDF, - (q31_t)0xB6F0A811, (q31_t)0x971F9ED6, (q31_t)0xB69E32CD, - (q31_t)0x9759617E, (q31_t)0xB64BEACC, (q31_t)0x979364B5, - (q31_t)0xB5F9D042, (q31_t)0x97CDA855, (q31_t)0xB5A7E362, - (q31_t)0x98082C3B, (q31_t)0xB556245E, (q31_t)0x9842F043, - (q31_t)0xB5049368, (q31_t)0x987DF449, (q31_t)0xB4B330B2, - (q31_t)0x98B93828, (q31_t)0xB461FC70, (q31_t)0x98F4BBBC, - (q31_t)0xB410F6D2, (q31_t)0x99307EE0, (q31_t)0xB3C0200C, - (q31_t)0x996C816F, (q31_t)0xB36F784E, (q31_t)0x99A8C344, - (q31_t)0xB31EFFCB, (q31_t)0x99E5443A, (q31_t)0xB2CEB6B5, - (q31_t)0x9A22042C, (q31_t)0xB27E9D3B, (q31_t)0x9A5F02F5, - (q31_t)0xB22EB392, (q31_t)0x9A9C406D, (q31_t)0xB1DEF9E8, - (q31_t)0x9AD9BC71, (q31_t)0xB18F7070, (q31_t)0x9B1776D9, - (q31_t)0xB140175B, (q31_t)0x9B556F80, (q31_t)0xB0F0EEDA, - (q31_t)0x9B93A640, (q31_t)0xB0A1F71C, (q31_t)0x9BD21AF2, - (q31_t)0xB0533055, (q31_t)0x9C10CD70, (q31_t)0xB0049AB2, - (q31_t)0x9C4FBD92, (q31_t)0xAFB63667, (q31_t)0x9C8EEB33, - (q31_t)0xAF6803A1, (q31_t)0x9CCE562B, (q31_t)0xAF1A0293, - (q31_t)0x9D0DFE53, (q31_t)0xAECC336B, (q31_t)0x9D4DE384, - (q31_t)0xAE7E965B, (q31_t)0x9D8E0596, (q31_t)0xAE312B91, - (q31_t)0x9DCE6462, (q31_t)0xADE3F33E, (q31_t)0x9E0EFFC1, - (q31_t)0xAD96ED91, (q31_t)0x9E4FD789, (q31_t)0xAD4A1ABA, - (q31_t)0x9E90EB94, (q31_t)0xACFD7AE8, (q31_t)0x9ED23BB9, - (q31_t)0xACB10E4A, (q31_t)0x9F13C7D0, (q31_t)0xAC64D510, - (q31_t)0x9F558FB0, (q31_t)0xAC18CF68, (q31_t)0x9F979331, - (q31_t)0xABCCFD82, (q31_t)0x9FD9D22A, (q31_t)0xAB815F8C, - (q31_t)0xA01C4C72, (q31_t)0xAB35F5B5, (q31_t)0xA05F01E1, - (q31_t)0xAAEAC02B, (q31_t)0xA0A1F24C, (q31_t)0xAA9FBF1D, - (q31_t)0xA0E51D8C, (q31_t)0xAA54F2B9, (q31_t)0xA1288376, - (q31_t)0xAA0A5B2D, (q31_t)0xA16C23E1, (q31_t)0xA9BFF8A8, - (q31_t)0xA1AFFEA2, (q31_t)0xA975CB56, (q31_t)0xA1F41391, - (q31_t)0xA92BD366, (q31_t)0xA2386283, (q31_t)0xA8E21106, - (q31_t)0xA27CEB4F, (q31_t)0xA8988463, (q31_t)0xA2C1ADC9, - (q31_t)0xA84F2DA9, (q31_t)0xA306A9C7, (q31_t)0xA8060D08, - (q31_t)0xA34BDF20, (q31_t)0xA7BD22AB, (q31_t)0xA3914DA7, - (q31_t)0xA7746EC0, (q31_t)0xA3D6F533, (q31_t)0xA72BF173, - (q31_t)0xA41CD598, (q31_t)0xA6E3AAF2, (q31_t)0xA462EEAC, - (q31_t)0xA69B9B68, (q31_t)0xA4A94042, (q31_t)0xA653C302, - (q31_t)0xA4EFCA31, (q31_t)0xA60C21ED, (q31_t)0xA5368C4B, - (q31_t)0xA5C4B855, (q31_t)0xA57D8666, (q31_t)0xA57D8666, - (q31_t)0xA5C4B855, (q31_t)0xA5368C4B, (q31_t)0xA60C21ED, - (q31_t)0xA4EFCA31, (q31_t)0xA653C302, (q31_t)0xA4A94042, - (q31_t)0xA69B9B68, (q31_t)0xA462EEAC, (q31_t)0xA6E3AAF2, - (q31_t)0xA41CD598, (q31_t)0xA72BF173, (q31_t)0xA3D6F533, - (q31_t)0xA7746EC0, (q31_t)0xA3914DA7, (q31_t)0xA7BD22AB, - (q31_t)0xA34BDF20, (q31_t)0xA8060D08, (q31_t)0xA306A9C7, - (q31_t)0xA84F2DA9, (q31_t)0xA2C1ADC9, (q31_t)0xA8988463, - (q31_t)0xA27CEB4F, (q31_t)0xA8E21106, (q31_t)0xA2386283, - (q31_t)0xA92BD366, (q31_t)0xA1F41391, (q31_t)0xA975CB56, - (q31_t)0xA1AFFEA2, (q31_t)0xA9BFF8A8, (q31_t)0xA16C23E1, - (q31_t)0xAA0A5B2D, (q31_t)0xA1288376, (q31_t)0xAA54F2B9, - (q31_t)0xA0E51D8C, (q31_t)0xAA9FBF1D, (q31_t)0xA0A1F24C, - (q31_t)0xAAEAC02B, (q31_t)0xA05F01E1, (q31_t)0xAB35F5B5, - (q31_t)0xA01C4C72, (q31_t)0xAB815F8C, (q31_t)0x9FD9D22A, - (q31_t)0xABCCFD82, (q31_t)0x9F979331, (q31_t)0xAC18CF68, - (q31_t)0x9F558FB0, (q31_t)0xAC64D510, (q31_t)0x9F13C7D0, - (q31_t)0xACB10E4A, (q31_t)0x9ED23BB9, (q31_t)0xACFD7AE8, - (q31_t)0x9E90EB94, (q31_t)0xAD4A1ABA, (q31_t)0x9E4FD789, - (q31_t)0xAD96ED91, (q31_t)0x9E0EFFC1, (q31_t)0xADE3F33E, - (q31_t)0x9DCE6462, (q31_t)0xAE312B91, (q31_t)0x9D8E0596, - (q31_t)0xAE7E965B, (q31_t)0x9D4DE384, (q31_t)0xAECC336B, - (q31_t)0x9D0DFE53, (q31_t)0xAF1A0293, (q31_t)0x9CCE562B, - (q31_t)0xAF6803A1, (q31_t)0x9C8EEB33, (q31_t)0xAFB63667, - (q31_t)0x9C4FBD92, (q31_t)0xB0049AB2, (q31_t)0x9C10CD70, - (q31_t)0xB0533055, (q31_t)0x9BD21AF2, (q31_t)0xB0A1F71C, - (q31_t)0x9B93A640, (q31_t)0xB0F0EEDA, (q31_t)0x9B556F80, - (q31_t)0xB140175B, (q31_t)0x9B1776D9, (q31_t)0xB18F7070, - (q31_t)0x9AD9BC71, (q31_t)0xB1DEF9E8, (q31_t)0x9A9C406D, - (q31_t)0xB22EB392, (q31_t)0x9A5F02F5, (q31_t)0xB27E9D3B, - (q31_t)0x9A22042C, (q31_t)0xB2CEB6B5, (q31_t)0x99E5443A, - (q31_t)0xB31EFFCB, (q31_t)0x99A8C344, (q31_t)0xB36F784E, - (q31_t)0x996C816F, (q31_t)0xB3C0200C, (q31_t)0x99307EE0, - (q31_t)0xB410F6D2, (q31_t)0x98F4BBBC, (q31_t)0xB461FC70, - (q31_t)0x98B93828, (q31_t)0xB4B330B2, (q31_t)0x987DF449, - (q31_t)0xB5049368, (q31_t)0x9842F043, (q31_t)0xB556245E, - (q31_t)0x98082C3B, (q31_t)0xB5A7E362, (q31_t)0x97CDA855, - (q31_t)0xB5F9D042, (q31_t)0x979364B5, (q31_t)0xB64BEACC, - (q31_t)0x9759617E, (q31_t)0xB69E32CD, (q31_t)0x971F9ED6, - (q31_t)0xB6F0A811, (q31_t)0x96E61CDF, (q31_t)0xB7434A67, - (q31_t)0x96ACDBBD, (q31_t)0xB796199B, (q31_t)0x9673DB94, - (q31_t)0xB7E9157A, (q31_t)0x963B1C85, (q31_t)0xB83C3DD1, - (q31_t)0x96029EB5, (q31_t)0xB88F926C, (q31_t)0x95CA6246, - (q31_t)0xB8E31319, (q31_t)0x9592675B, (q31_t)0xB936BFA3, - (q31_t)0x955AAE17, (q31_t)0xB98A97D8, (q31_t)0x9523369B, - (q31_t)0xB9DE9B83, (q31_t)0x94EC010B, (q31_t)0xBA32CA70, - (q31_t)0x94B50D87, (q31_t)0xBA87246C, (q31_t)0x947E5C32, - (q31_t)0xBADBA943, (q31_t)0x9447ED2F, (q31_t)0xBB3058C0, - (q31_t)0x9411C09D, (q31_t)0xBB8532AF, (q31_t)0x93DBD69F, - (q31_t)0xBBDA36DC, (q31_t)0x93A62F56, (q31_t)0xBC2F6513, - (q31_t)0x9370CAE4, (q31_t)0xBC84BD1E, (q31_t)0x933BA968, - (q31_t)0xBCDA3ECA, (q31_t)0x9306CB04, (q31_t)0xBD2FE9E1, - (q31_t)0x92D22FD8, (q31_t)0xBD85BE2F, (q31_t)0x929DD805, - (q31_t)0xBDDBBB7F, (q31_t)0x9269C3AC, (q31_t)0xBE31E19B, - (q31_t)0x9235F2EB, (q31_t)0xBE88304F, (q31_t)0x920265E4, - (q31_t)0xBEDEA765, (q31_t)0x91CF1CB6, (q31_t)0xBF3546A8, - (q31_t)0x919C1780, (q31_t)0xBF8C0DE2, (q31_t)0x91695663, - (q31_t)0xBFE2FCDF, (q31_t)0x9136D97D, (q31_t)0xC03A1368, - (q31_t)0x9104A0ED, (q31_t)0xC0915147, (q31_t)0x90D2ACD3, - (q31_t)0xC0E8B648, (q31_t)0x90A0FD4E, (q31_t)0xC1404233, - (q31_t)0x906F927B, (q31_t)0xC197F4D3, (q31_t)0x903E6C7A, - (q31_t)0xC1EFCDF2, (q31_t)0x900D8B69, (q31_t)0xC247CD5A, - (q31_t)0x8FDCEF66, (q31_t)0xC29FF2D4, (q31_t)0x8FAC988E, - (q31_t)0xC2F83E2A, (q31_t)0x8F7C8701, (q31_t)0xC350AF25, - (q31_t)0x8F4CBADB, (q31_t)0xC3A9458F, (q31_t)0x8F1D343A, - (q31_t)0xC4020132, (q31_t)0x8EEDF33B, (q31_t)0xC45AE1D7, - (q31_t)0x8EBEF7FB, (q31_t)0xC4B3E746, (q31_t)0x8E904298, - (q31_t)0xC50D1148, (q31_t)0x8E61D32D, (q31_t)0xC5665FA8, - (q31_t)0x8E33A9D9, (q31_t)0xC5BFD22E, (q31_t)0x8E05C6B7, - (q31_t)0xC61968A2, (q31_t)0x8DD829E4, (q31_t)0xC67322CD, - (q31_t)0x8DAAD37B, (q31_t)0xC6CD0079, (q31_t)0x8D7DC399, - (q31_t)0xC727016C, (q31_t)0x8D50FA59, (q31_t)0xC7812571, - (q31_t)0x8D2477D8, (q31_t)0xC7DB6C50, (q31_t)0x8CF83C30, - (q31_t)0xC835D5D0, (q31_t)0x8CCC477D, (q31_t)0xC89061BA, - (q31_t)0x8CA099D9, (q31_t)0xC8EB0FD6, (q31_t)0x8C753361, - (q31_t)0xC945DFEC, (q31_t)0x8C4A142F, (q31_t)0xC9A0D1C4, - (q31_t)0x8C1F3C5C, (q31_t)0xC9FBE527, (q31_t)0x8BF4AC05, - (q31_t)0xCA5719DB, (q31_t)0x8BCA6342, (q31_t)0xCAB26FA9, - (q31_t)0x8BA0622F, (q31_t)0xCB0DE658, (q31_t)0x8B76A8E4, - (q31_t)0xCB697DB0, (q31_t)0x8B4D377C, (q31_t)0xCBC53578, - (q31_t)0x8B240E10, (q31_t)0xCC210D78, (q31_t)0x8AFB2CBA, - (q31_t)0xCC7D0577, (q31_t)0x8AD29393, (q31_t)0xCCD91D3D, - (q31_t)0x8AAA42B4, (q31_t)0xCD355490, (q31_t)0x8A823A35, - (q31_t)0xCD91AB38, (q31_t)0x8A5A7A30, (q31_t)0xCDEE20FC, - (q31_t)0x8A3302BD, (q31_t)0xCE4AB5A2, (q31_t)0x8A0BD3F5, - (q31_t)0xCEA768F2, (q31_t)0x89E4EDEE, (q31_t)0xCF043AB2, - (q31_t)0x89BE50C3, (q31_t)0xCF612AAA, (q31_t)0x8997FC89, - (q31_t)0xCFBE389F, (q31_t)0x8971F15A, (q31_t)0xD01B6459, - (q31_t)0x894C2F4C, (q31_t)0xD078AD9D, (q31_t)0x8926B677, - (q31_t)0xD0D61433, (q31_t)0x890186F1, (q31_t)0xD13397E1, - (q31_t)0x88DCA0D3, (q31_t)0xD191386D, (q31_t)0x88B80431, - (q31_t)0xD1EEF59E, (q31_t)0x8893B124, (q31_t)0xD24CCF38, - (q31_t)0x886FA7C2, (q31_t)0xD2AAC504, (q31_t)0x884BE820, - (q31_t)0xD308D6C6, (q31_t)0x88287255, (q31_t)0xD3670445, - (q31_t)0x88054677, (q31_t)0xD3C54D46, (q31_t)0x87E2649B, - (q31_t)0xD423B190, (q31_t)0x87BFCCD7, (q31_t)0xD48230E8, - (q31_t)0x879D7F40, (q31_t)0xD4E0CB14, (q31_t)0x877B7BEC, - (q31_t)0xD53F7FDA, (q31_t)0x8759C2EF, (q31_t)0xD59E4EFE, - (q31_t)0x8738545E, (q31_t)0xD5FD3847, (q31_t)0x8717304E, - (q31_t)0xD65C3B7B, (q31_t)0x86F656D3, (q31_t)0xD6BB585D, - (q31_t)0x86D5C802, (q31_t)0xD71A8EB5, (q31_t)0x86B583EE, - (q31_t)0xD779DE46, (q31_t)0x86958AAB, (q31_t)0xD7D946D7, - (q31_t)0x8675DC4E, (q31_t)0xD838C82D, (q31_t)0x865678EA, - (q31_t)0xD898620C, (q31_t)0x86376092, (q31_t)0xD8F81439, - (q31_t)0x86189359, (q31_t)0xD957DE7A, (q31_t)0x85FA1152, - (q31_t)0xD9B7C093, (q31_t)0x85DBDA91, (q31_t)0xDA17BA4A, - (q31_t)0x85BDEF27, (q31_t)0xDA77CB62, (q31_t)0x85A04F28, - (q31_t)0xDAD7F3A2, (q31_t)0x8582FAA4, (q31_t)0xDB3832CD, - (q31_t)0x8565F1B0, (q31_t)0xDB9888A8, (q31_t)0x8549345C, - (q31_t)0xDBF8F4F8, (q31_t)0x852CC2BA, (q31_t)0xDC597781, - (q31_t)0x85109CDC, (q31_t)0xDCBA1008, (q31_t)0x84F4C2D3, - (q31_t)0xDD1ABE51, (q31_t)0x84D934B0, (q31_t)0xDD7B8220, - (q31_t)0x84BDF285, (q31_t)0xDDDC5B3A, (q31_t)0x84A2FC62, - (q31_t)0xDE3D4963, (q31_t)0x84885257, (q31_t)0xDE9E4C60, - (q31_t)0x846DF476, (q31_t)0xDEFF63F4, (q31_t)0x8453E2CE, - (q31_t)0xDF608FE3, (q31_t)0x843A1D70, (q31_t)0xDFC1CFF2, - (q31_t)0x8420A46B, (q31_t)0xE02323E5, (q31_t)0x840777CF, - (q31_t)0xE0848B7F, (q31_t)0x83EE97AC, (q31_t)0xE0E60684, - (q31_t)0x83D60411, (q31_t)0xE14794B9, (q31_t)0x83BDBD0D, - (q31_t)0xE1A935E1, (q31_t)0x83A5C2B0, (q31_t)0xE20AE9C1, - (q31_t)0x838E1507, (q31_t)0xE26CB01A, (q31_t)0x8376B422, - (q31_t)0xE2CE88B2, (q31_t)0x835FA00E, (q31_t)0xE330734C, - (q31_t)0x8348D8DB, (q31_t)0xE3926FAC, (q31_t)0x83325E97, - (q31_t)0xE3F47D95, (q31_t)0x831C314E, (q31_t)0xE4569CCB, - (q31_t)0x8306510F, (q31_t)0xE4B8CD10, (q31_t)0x82F0BDE8, - (q31_t)0xE51B0E2A, (q31_t)0x82DB77E5, (q31_t)0xE57D5FDA, - (q31_t)0x82C67F13, (q31_t)0xE5DFC1E4, (q31_t)0x82B1D381, - (q31_t)0xE642340D, (q31_t)0x829D753A, (q31_t)0xE6A4B616, - (q31_t)0x8289644A, (q31_t)0xE70747C3, (q31_t)0x8275A0C0, - (q31_t)0xE769E8D8, (q31_t)0x82622AA5, (q31_t)0xE7CC9917, - (q31_t)0x824F0208, (q31_t)0xE82F5844, (q31_t)0x823C26F2, - (q31_t)0xE8922621, (q31_t)0x82299971, (q31_t)0xE8F50273, - (q31_t)0x8217598F, (q31_t)0xE957ECFB, (q31_t)0x82056758, - (q31_t)0xE9BAE57C, (q31_t)0x81F3C2D7, (q31_t)0xEA1DEBBB, - (q31_t)0x81E26C16, (q31_t)0xEA80FF79, (q31_t)0x81D16320, - (q31_t)0xEAE4207A, (q31_t)0x81C0A801, (q31_t)0xEB474E80, - (q31_t)0x81B03AC1, (q31_t)0xEBAA894E, (q31_t)0x81A01B6C, - (q31_t)0xEC0DD0A8, (q31_t)0x81904A0C, (q31_t)0xEC71244F, - (q31_t)0x8180C6A9, (q31_t)0xECD48406, (q31_t)0x8171914E, - (q31_t)0xED37EF91, (q31_t)0x8162AA03, (q31_t)0xED9B66B2, - (q31_t)0x815410D3, (q31_t)0xEDFEE92B, (q31_t)0x8145C5C6, - (q31_t)0xEE6276BF, (q31_t)0x8137C8E6, (q31_t)0xEEC60F31, - (q31_t)0x812A1A39, (q31_t)0xEF29B243, (q31_t)0x811CB9CA, - (q31_t)0xEF8D5FB8, (q31_t)0x810FA7A0, (q31_t)0xEFF11752, - (q31_t)0x8102E3C3, (q31_t)0xF054D8D4, (q31_t)0x80F66E3C, - (q31_t)0xF0B8A401, (q31_t)0x80EA4712, (q31_t)0xF11C789A, - (q31_t)0x80DE6E4C, (q31_t)0xF1805662, (q31_t)0x80D2E3F1, - (q31_t)0xF1E43D1C, (q31_t)0x80C7A80A, (q31_t)0xF2482C89, - (q31_t)0x80BCBA9C, (q31_t)0xF2AC246D, (q31_t)0x80B21BAF, - (q31_t)0xF310248A, (q31_t)0x80A7CB49, (q31_t)0xF3742CA1, - (q31_t)0x809DC970, (q31_t)0xF3D83C76, (q31_t)0x8094162B, - (q31_t)0xF43C53CA, (q31_t)0x808AB180, (q31_t)0xF4A07260, - (q31_t)0x80819B74, (q31_t)0xF50497FA, (q31_t)0x8078D40D, - (q31_t)0xF568C45A, (q31_t)0x80705B50, (q31_t)0xF5CCF743, - (q31_t)0x80683143, (q31_t)0xF6313076, (q31_t)0x806055EA, - (q31_t)0xF6956FB6, (q31_t)0x8058C94C, (q31_t)0xF6F9B4C5, - (q31_t)0x80518B6B, (q31_t)0xF75DFF65, (q31_t)0x804A9C4D, - (q31_t)0xF7C24F58, (q31_t)0x8043FBF6, (q31_t)0xF826A461, - (q31_t)0x803DAA69, (q31_t)0xF88AFE41, (q31_t)0x8037A7AC, - (q31_t)0xF8EF5CBB, (q31_t)0x8031F3C1, (q31_t)0xF953BF90, - (q31_t)0x802C8EAD, (q31_t)0xF9B82683, (q31_t)0x80277872, - (q31_t)0xFA1C9156, (q31_t)0x8022B113, (q31_t)0xFA80FFCB, - (q31_t)0x801E3894, (q31_t)0xFAE571A4, (q31_t)0x801A0EF7, - (q31_t)0xFB49E6A2, (q31_t)0x80163440, (q31_t)0xFBAE5E89, - (q31_t)0x8012A86F, (q31_t)0xFC12D919, (q31_t)0x800F6B88, - (q31_t)0xFC775616, (q31_t)0x800C7D8C, (q31_t)0xFCDBD541, - (q31_t)0x8009DE7D, (q31_t)0xFD40565B, (q31_t)0x80078E5E, - (q31_t)0xFDA4D928, (q31_t)0x80058D2E, (q31_t)0xFE095D69, - (q31_t)0x8003DAF0, (q31_t)0xFE6DE2E0, (q31_t)0x800277A5, - (q31_t)0xFED2694F, (q31_t)0x8001634D, (q31_t)0xFF36F078, - (q31_t)0x80009DE9, (q31_t)0xFF9B781D, (q31_t)0x8000277A -}; - -/** -* \par -* Example code for Q31 Twiddle factors Generation:: -* \par -*
for(i = 0; i< 3N/4; i++)
-* {
-*    twiddleCoefQ31[2*i]= cos(i * 2*PI/(float)N);
-*    twiddleCoefQ31[2*i+1]= sin(i * 2*PI/(float)N);
-* } 
-* \par -* where N = 4096 and PI = 3.14159265358979 -* \par -* Cos and Sin values are interleaved fashion -* \par -* Convert Floating point to Q31(Fixed point 1.31): -* round(twiddleCoefQ31(i) * pow(2, 31)) -* -*/ -const q31_t twiddleCoef_4096_q31[6144] = -{ - (q31_t)0x7FFFFFFF, (q31_t)0x00000000, (q31_t)0x7FFFF621, - (q31_t)0x003243F5, (q31_t)0x7FFFD885, (q31_t)0x006487E3, - (q31_t)0x7FFFA72C, (q31_t)0x0096CBC1, (q31_t)0x7FFF6216, - (q31_t)0x00C90F88, (q31_t)0x7FFF0942, (q31_t)0x00FB532F, - (q31_t)0x7FFE9CB2, (q31_t)0x012D96B0, (q31_t)0x7FFE1C64, - (q31_t)0x015FDA03, (q31_t)0x7FFD885A, (q31_t)0x01921D1F, - (q31_t)0x7FFCE093, (q31_t)0x01C45FFE, (q31_t)0x7FFC250F, - (q31_t)0x01F6A296, (q31_t)0x7FFB55CE, (q31_t)0x0228E4E1, - (q31_t)0x7FFA72D1, (q31_t)0x025B26D7, (q31_t)0x7FF97C17, - (q31_t)0x028D6870, (q31_t)0x7FF871A1, (q31_t)0x02BFA9A4, - (q31_t)0x7FF7536F, (q31_t)0x02F1EA6B, (q31_t)0x7FF62182, - (q31_t)0x03242ABF, (q31_t)0x7FF4DBD8, (q31_t)0x03566A96, - (q31_t)0x7FF38273, (q31_t)0x0388A9E9, (q31_t)0x7FF21553, - (q31_t)0x03BAE8B1, (q31_t)0x7FF09477, (q31_t)0x03ED26E6, - (q31_t)0x7FEEFFE1, (q31_t)0x041F647F, (q31_t)0x7FED5790, - (q31_t)0x0451A176, (q31_t)0x7FEB9B85, (q31_t)0x0483DDC3, - (q31_t)0x7FE9CBC0, (q31_t)0x04B6195D, (q31_t)0x7FE7E840, - (q31_t)0x04E8543D, (q31_t)0x7FE5F108, (q31_t)0x051A8E5C, - (q31_t)0x7FE3E616, (q31_t)0x054CC7B0, (q31_t)0x7FE1C76B, - (q31_t)0x057F0034, (q31_t)0x7FDF9508, (q31_t)0x05B137DF, - (q31_t)0x7FDD4EEC, (q31_t)0x05E36EA9, (q31_t)0x7FDAF518, - (q31_t)0x0615A48A, (q31_t)0x7FD8878D, (q31_t)0x0647D97C, - (q31_t)0x7FD6064B, (q31_t)0x067A0D75, (q31_t)0x7FD37152, - (q31_t)0x06AC406F, (q31_t)0x7FD0C8A3, (q31_t)0x06DE7261, - (q31_t)0x7FCE0C3E, (q31_t)0x0710A344, (q31_t)0x7FCB3C23, - (q31_t)0x0742D310, (q31_t)0x7FC85853, (q31_t)0x077501BE, - (q31_t)0x7FC560CF, (q31_t)0x07A72F45, (q31_t)0x7FC25596, - (q31_t)0x07D95B9E, (q31_t)0x7FBF36A9, (q31_t)0x080B86C1, - (q31_t)0x7FBC040A, (q31_t)0x083DB0A7, (q31_t)0x7FB8BDB7, - (q31_t)0x086FD947, (q31_t)0x7FB563B2, (q31_t)0x08A2009A, - (q31_t)0x7FB1F5FC, (q31_t)0x08D42698, (q31_t)0x7FAE7494, - (q31_t)0x09064B3A, (q31_t)0x7FAADF7C, (q31_t)0x09386E77, - (q31_t)0x7FA736B4, (q31_t)0x096A9049, (q31_t)0x7FA37A3C, - (q31_t)0x099CB0A7, (q31_t)0x7F9FAA15, (q31_t)0x09CECF89, - (q31_t)0x7F9BC63F, (q31_t)0x0A00ECE8, (q31_t)0x7F97CEBC, - (q31_t)0x0A3308BC, (q31_t)0x7F93C38C, (q31_t)0x0A6522FE, - (q31_t)0x7F8FA4AF, (q31_t)0x0A973BA5, (q31_t)0x7F8B7226, - (q31_t)0x0AC952AA, (q31_t)0x7F872BF3, (q31_t)0x0AFB6805, - (q31_t)0x7F82D214, (q31_t)0x0B2D7BAE, (q31_t)0x7F7E648B, - (q31_t)0x0B5F8D9F, (q31_t)0x7F79E35A, (q31_t)0x0B919DCE, - (q31_t)0x7F754E7F, (q31_t)0x0BC3AC35, (q31_t)0x7F70A5FD, - (q31_t)0x0BF5B8CB, (q31_t)0x7F6BE9D4, (q31_t)0x0C27C389, - (q31_t)0x7F671A04, (q31_t)0x0C59CC67, (q31_t)0x7F62368F, - (q31_t)0x0C8BD35E, (q31_t)0x7F5D3F75, (q31_t)0x0CBDD865, - (q31_t)0x7F5834B6, (q31_t)0x0CEFDB75, (q31_t)0x7F531654, - (q31_t)0x0D21DC87, (q31_t)0x7F4DE450, (q31_t)0x0D53DB92, - (q31_t)0x7F489EAA, (q31_t)0x0D85D88F, (q31_t)0x7F434563, - (q31_t)0x0DB7D376, (q31_t)0x7F3DD87C, (q31_t)0x0DE9CC3F, - (q31_t)0x7F3857F5, (q31_t)0x0E1BC2E3, (q31_t)0x7F32C3D0, - (q31_t)0x0E4DB75B, (q31_t)0x7F2D1C0E, (q31_t)0x0E7FA99D, - (q31_t)0x7F2760AF, (q31_t)0x0EB199A3, (q31_t)0x7F2191B4, - (q31_t)0x0EE38765, (q31_t)0x7F1BAF1E, (q31_t)0x0F1572DC, - (q31_t)0x7F15B8EE, (q31_t)0x0F475BFE, (q31_t)0x7F0FAF24, - (q31_t)0x0F7942C6, (q31_t)0x7F0991C3, (q31_t)0x0FAB272B, - (q31_t)0x7F0360CB, (q31_t)0x0FDD0925, (q31_t)0x7EFD1C3C, - (q31_t)0x100EE8AD, (q31_t)0x7EF6C418, (q31_t)0x1040C5BB, - (q31_t)0x7EF0585F, (q31_t)0x1072A047, (q31_t)0x7EE9D913, - (q31_t)0x10A4784A, (q31_t)0x7EE34635, (q31_t)0x10D64DBC, - (q31_t)0x7EDC9FC6, (q31_t)0x11082096, (q31_t)0x7ED5E5C6, - (q31_t)0x1139F0CE, (q31_t)0x7ECF1837, (q31_t)0x116BBE5F, - (q31_t)0x7EC8371A, (q31_t)0x119D8940, (q31_t)0x7EC1426F, - (q31_t)0x11CF516A, (q31_t)0x7EBA3A39, (q31_t)0x120116D4, - (q31_t)0x7EB31E77, (q31_t)0x1232D978, (q31_t)0x7EABEF2C, - (q31_t)0x1264994E, (q31_t)0x7EA4AC58, (q31_t)0x1296564D, - (q31_t)0x7E9D55FC, (q31_t)0x12C8106E, (q31_t)0x7E95EC19, - (q31_t)0x12F9C7AA, (q31_t)0x7E8E6EB1, (q31_t)0x132B7BF9, - (q31_t)0x7E86DDC5, (q31_t)0x135D2D53, (q31_t)0x7E7F3956, - (q31_t)0x138EDBB0, (q31_t)0x7E778165, (q31_t)0x13C0870A, - (q31_t)0x7E6FB5F3, (q31_t)0x13F22F57, (q31_t)0x7E67D702, - (q31_t)0x1423D492, (q31_t)0x7E5FE493, (q31_t)0x145576B1, - (q31_t)0x7E57DEA6, (q31_t)0x148715AD, (q31_t)0x7E4FC53E, - (q31_t)0x14B8B17F, (q31_t)0x7E47985B, (q31_t)0x14EA4A1F, - (q31_t)0x7E3F57FE, (q31_t)0x151BDF85, (q31_t)0x7E37042A, - (q31_t)0x154D71AA, (q31_t)0x7E2E9CDF, (q31_t)0x157F0086, - (q31_t)0x7E26221E, (q31_t)0x15B08C11, (q31_t)0x7E1D93E9, - (q31_t)0x15E21444, (q31_t)0x7E14F242, (q31_t)0x16139917, - (q31_t)0x7E0C3D29, (q31_t)0x16451A83, (q31_t)0x7E03749F, - (q31_t)0x1676987F, (q31_t)0x7DFA98A7, (q31_t)0x16A81305, - (q31_t)0x7DF1A942, (q31_t)0x16D98A0C, (q31_t)0x7DE8A670, - (q31_t)0x170AFD8D, (q31_t)0x7DDF9034, (q31_t)0x173C6D80, - (q31_t)0x7DD6668E, (q31_t)0x176DD9DE, (q31_t)0x7DCD2981, - (q31_t)0x179F429F, (q31_t)0x7DC3D90D, (q31_t)0x17D0A7BB, - (q31_t)0x7DBA7534, (q31_t)0x1802092C, (q31_t)0x7DB0FDF7, - (q31_t)0x183366E8, (q31_t)0x7DA77359, (q31_t)0x1864C0E9, - (q31_t)0x7D9DD55A, (q31_t)0x18961727, (q31_t)0x7D9423FB, - (q31_t)0x18C7699B, (q31_t)0x7D8A5F3F, (q31_t)0x18F8B83C, - (q31_t)0x7D808727, (q31_t)0x192A0303, (q31_t)0x7D769BB5, - (q31_t)0x195B49E9, (q31_t)0x7D6C9CE9, (q31_t)0x198C8CE6, - (q31_t)0x7D628AC5, (q31_t)0x19BDCBF2, (q31_t)0x7D58654C, - (q31_t)0x19EF0706, (q31_t)0x7D4E2C7E, (q31_t)0x1A203E1B, - (q31_t)0x7D43E05E, (q31_t)0x1A517127, (q31_t)0x7D3980EC, - (q31_t)0x1A82A025, (q31_t)0x7D2F0E2A, (q31_t)0x1AB3CB0C, - (q31_t)0x7D24881A, (q31_t)0x1AE4F1D6, (q31_t)0x7D19EEBE, - (q31_t)0x1B161479, (q31_t)0x7D0F4218, (q31_t)0x1B4732EF, - (q31_t)0x7D048228, (q31_t)0x1B784D30, (q31_t)0x7CF9AEF0, - (q31_t)0x1BA96334, (q31_t)0x7CEEC873, (q31_t)0x1BDA74F5, - (q31_t)0x7CE3CEB1, (q31_t)0x1C0B826A, (q31_t)0x7CD8C1AD, - (q31_t)0x1C3C8B8C, (q31_t)0x7CCDA168, (q31_t)0x1C6D9053, - (q31_t)0x7CC26DE5, (q31_t)0x1C9E90B8, (q31_t)0x7CB72724, - (q31_t)0x1CCF8CB3, (q31_t)0x7CABCD27, (q31_t)0x1D00843C, - (q31_t)0x7CA05FF1, (q31_t)0x1D31774D, (q31_t)0x7C94DF82, - (q31_t)0x1D6265DD, (q31_t)0x7C894BDD, (q31_t)0x1D934FE5, - (q31_t)0x7C7DA504, (q31_t)0x1DC4355D, (q31_t)0x7C71EAF8, - (q31_t)0x1DF5163F, (q31_t)0x7C661DBB, (q31_t)0x1E25F281, - (q31_t)0x7C5A3D4F, (q31_t)0x1E56CA1E, (q31_t)0x7C4E49B6, - (q31_t)0x1E879D0C, (q31_t)0x7C4242F2, (q31_t)0x1EB86B46, - (q31_t)0x7C362904, (q31_t)0x1EE934C2, (q31_t)0x7C29FBEE, - (q31_t)0x1F19F97B, (q31_t)0x7C1DBBB2, (q31_t)0x1F4AB967, - (q31_t)0x7C116853, (q31_t)0x1F7B7480, (q31_t)0x7C0501D1, - (q31_t)0x1FAC2ABF, (q31_t)0x7BF88830, (q31_t)0x1FDCDC1A, - (q31_t)0x7BEBFB70, (q31_t)0x200D888C, (q31_t)0x7BDF5B94, - (q31_t)0x203E300D, (q31_t)0x7BD2A89E, (q31_t)0x206ED295, - (q31_t)0x7BC5E28F, (q31_t)0x209F701C, (q31_t)0x7BB9096A, - (q31_t)0x20D0089B, (q31_t)0x7BAC1D31, (q31_t)0x21009C0B, - (q31_t)0x7B9F1DE5, (q31_t)0x21312A65, (q31_t)0x7B920B89, - (q31_t)0x2161B39F, (q31_t)0x7B84E61E, (q31_t)0x219237B4, - (q31_t)0x7B77ADA8, (q31_t)0x21C2B69C, (q31_t)0x7B6A6227, - (q31_t)0x21F3304E, (q31_t)0x7B5D039D, (q31_t)0x2223A4C5, - (q31_t)0x7B4F920E, (q31_t)0x225413F8, (q31_t)0x7B420D7A, - (q31_t)0x22847DDF, (q31_t)0x7B3475E4, (q31_t)0x22B4E274, - (q31_t)0x7B26CB4F, (q31_t)0x22E541AE, (q31_t)0x7B190DBB, - (q31_t)0x23159B87, (q31_t)0x7B0B3D2C, (q31_t)0x2345EFF7, - (q31_t)0x7AFD59A3, (q31_t)0x23763EF7, (q31_t)0x7AEF6323, - (q31_t)0x23A6887E, (q31_t)0x7AE159AE, (q31_t)0x23D6CC86, - (q31_t)0x7AD33D45, (q31_t)0x24070B07, (q31_t)0x7AC50DEB, - (q31_t)0x243743FA, (q31_t)0x7AB6CBA3, (q31_t)0x24677757, - (q31_t)0x7AA8766E, (q31_t)0x2497A517, (q31_t)0x7A9A0E4F, - (q31_t)0x24C7CD32, (q31_t)0x7A8B9348, (q31_t)0x24F7EFA1, - (q31_t)0x7A7D055B, (q31_t)0x25280C5D, (q31_t)0x7A6E648A, - (q31_t)0x2558235E, (q31_t)0x7A5FB0D8, (q31_t)0x2588349D, - (q31_t)0x7A50EA46, (q31_t)0x25B84012, (q31_t)0x7A4210D8, - (q31_t)0x25E845B5, (q31_t)0x7A33248F, (q31_t)0x26184581, - (q31_t)0x7A24256E, (q31_t)0x26483F6C, (q31_t)0x7A151377, - (q31_t)0x26783370, (q31_t)0x7A05EEAD, (q31_t)0x26A82185, - (q31_t)0x79F6B711, (q31_t)0x26D809A5, (q31_t)0x79E76CA6, - (q31_t)0x2707EBC6, (q31_t)0x79D80F6F, (q31_t)0x2737C7E3, - (q31_t)0x79C89F6D, (q31_t)0x27679DF4, (q31_t)0x79B91CA4, - (q31_t)0x27976DF1, (q31_t)0x79A98715, (q31_t)0x27C737D2, - (q31_t)0x7999DEC3, (q31_t)0x27F6FB92, (q31_t)0x798A23B1, - (q31_t)0x2826B928, (q31_t)0x797A55E0, (q31_t)0x2856708C, - (q31_t)0x796A7554, (q31_t)0x288621B9, (q31_t)0x795A820E, - (q31_t)0x28B5CCA5, (q31_t)0x794A7C11, (q31_t)0x28E5714A, - (q31_t)0x793A6360, (q31_t)0x29150FA1, (q31_t)0x792A37FE, - (q31_t)0x2944A7A2, (q31_t)0x7919F9EB, (q31_t)0x29743945, - (q31_t)0x7909A92C, (q31_t)0x29A3C484, (q31_t)0x78F945C3, - (q31_t)0x29D34958, (q31_t)0x78E8CFB1, (q31_t)0x2A02C7B8, - (q31_t)0x78D846FB, (q31_t)0x2A323F9D, (q31_t)0x78C7ABA1, - (q31_t)0x2A61B101, (q31_t)0x78B6FDA8, (q31_t)0x2A911BDB, - (q31_t)0x78A63D10, (q31_t)0x2AC08025, (q31_t)0x789569DE, - (q31_t)0x2AEFDDD8, (q31_t)0x78848413, (q31_t)0x2B1F34EB, - (q31_t)0x78738BB3, (q31_t)0x2B4E8558, (q31_t)0x786280BF, - (q31_t)0x2B7DCF17, (q31_t)0x7851633B, (q31_t)0x2BAD1221, - (q31_t)0x78403328, (q31_t)0x2BDC4E6F, (q31_t)0x782EF08B, - (q31_t)0x2C0B83F9, (q31_t)0x781D9B64, (q31_t)0x2C3AB2B9, - (q31_t)0x780C33B8, (q31_t)0x2C69DAA6, (q31_t)0x77FAB988, - (q31_t)0x2C98FBBA, (q31_t)0x77E92CD8, (q31_t)0x2CC815ED, - (q31_t)0x77D78DAA, (q31_t)0x2CF72939, (q31_t)0x77C5DC01, - (q31_t)0x2D263595, (q31_t)0x77B417DF, (q31_t)0x2D553AFB, - (q31_t)0x77A24148, (q31_t)0x2D843963, (q31_t)0x7790583D, - (q31_t)0x2DB330C7, (q31_t)0x777E5CC3, (q31_t)0x2DE2211E, - (q31_t)0x776C4EDB, (q31_t)0x2E110A62, (q31_t)0x775A2E88, - (q31_t)0x2E3FEC8B, (q31_t)0x7747FBCE, (q31_t)0x2E6EC792, - (q31_t)0x7735B6AE, (q31_t)0x2E9D9B70, (q31_t)0x77235F2D, - (q31_t)0x2ECC681E, (q31_t)0x7710F54B, (q31_t)0x2EFB2D94, - (q31_t)0x76FE790E, (q31_t)0x2F29EBCC, (q31_t)0x76EBEA77, - (q31_t)0x2F58A2BD, (q31_t)0x76D94988, (q31_t)0x2F875262, - (q31_t)0x76C69646, (q31_t)0x2FB5FAB2, (q31_t)0x76B3D0B3, - (q31_t)0x2FE49BA6, (q31_t)0x76A0F8D2, (q31_t)0x30133538, - (q31_t)0x768E0EA5, (q31_t)0x3041C760, (q31_t)0x767B1230, - (q31_t)0x30705217, (q31_t)0x76680376, (q31_t)0x309ED555, - (q31_t)0x7654E279, (q31_t)0x30CD5114, (q31_t)0x7641AF3C, - (q31_t)0x30FBC54D, (q31_t)0x762E69C3, (q31_t)0x312A31F8, - (q31_t)0x761B1211, (q31_t)0x3158970D, (q31_t)0x7607A827, - (q31_t)0x3186F487, (q31_t)0x75F42C0A, (q31_t)0x31B54A5D, - (q31_t)0x75E09DBD, (q31_t)0x31E39889, (q31_t)0x75CCFD42, - (q31_t)0x3211DF03, (q31_t)0x75B94A9C, (q31_t)0x32401DC5, - (q31_t)0x75A585CF, (q31_t)0x326E54C7, (q31_t)0x7591AEDD, - (q31_t)0x329C8402, (q31_t)0x757DC5CA, (q31_t)0x32CAAB6F, - (q31_t)0x7569CA98, (q31_t)0x32F8CB07, (q31_t)0x7555BD4B, - (q31_t)0x3326E2C2, (q31_t)0x75419DE6, (q31_t)0x3354F29A, - (q31_t)0x752D6C6C, (q31_t)0x3382FA88, (q31_t)0x751928E0, - (q31_t)0x33B0FA84, (q31_t)0x7504D345, (q31_t)0x33DEF287, - (q31_t)0x74F06B9E, (q31_t)0x340CE28A, (q31_t)0x74DBF1EF, - (q31_t)0x343ACA87, (q31_t)0x74C7663A, (q31_t)0x3468AA76, - (q31_t)0x74B2C883, (q31_t)0x3496824F, (q31_t)0x749E18CD, - (q31_t)0x34C4520D, (q31_t)0x7489571B, (q31_t)0x34F219A7, - (q31_t)0x74748371, (q31_t)0x351FD917, (q31_t)0x745F9DD1, - (q31_t)0x354D9056, (q31_t)0x744AA63E, (q31_t)0x357B3F5D, - (q31_t)0x74359CBD, (q31_t)0x35A8E624, (q31_t)0x74208150, - (q31_t)0x35D684A5, (q31_t)0x740B53FA, (q31_t)0x36041AD9, - (q31_t)0x73F614C0, (q31_t)0x3631A8B7, (q31_t)0x73E0C3A3, - (q31_t)0x365F2E3B, (q31_t)0x73CB60A7, (q31_t)0x368CAB5C, - (q31_t)0x73B5EBD0, (q31_t)0x36BA2013, (q31_t)0x73A06522, - (q31_t)0x36E78C5A, (q31_t)0x738ACC9E, (q31_t)0x3714F02A, - (q31_t)0x73752249, (q31_t)0x37424B7A, (q31_t)0x735F6626, - (q31_t)0x376F9E46, (q31_t)0x73499838, (q31_t)0x379CE884, - (q31_t)0x7333B883, (q31_t)0x37CA2A30, (q31_t)0x731DC709, - (q31_t)0x37F76340, (q31_t)0x7307C3D0, (q31_t)0x382493B0, - (q31_t)0x72F1AED8, (q31_t)0x3851BB76, (q31_t)0x72DB8828, - (q31_t)0x387EDA8E, (q31_t)0x72C54FC0, (q31_t)0x38ABF0EF, - (q31_t)0x72AF05A6, (q31_t)0x38D8FE93, (q31_t)0x7298A9DC, - (q31_t)0x39060372, (q31_t)0x72823C66, (q31_t)0x3932FF87, - (q31_t)0x726BBD48, (q31_t)0x395FF2C9, (q31_t)0x72552C84, - (q31_t)0x398CDD32, (q31_t)0x723E8A1F, (q31_t)0x39B9BEBB, - (q31_t)0x7227D61C, (q31_t)0x39E6975D, (q31_t)0x7211107D, - (q31_t)0x3A136712, (q31_t)0x71FA3948, (q31_t)0x3A402DD1, - (q31_t)0x71E3507F, (q31_t)0x3A6CEB95, (q31_t)0x71CC5626, - (q31_t)0x3A99A057, (q31_t)0x71B54A40, (q31_t)0x3AC64C0F, - (q31_t)0x719E2CD2, (q31_t)0x3AF2EEB7, (q31_t)0x7186FDDE, - (q31_t)0x3B1F8847, (q31_t)0x716FBD68, (q31_t)0x3B4C18BA, - (q31_t)0x71586B73, (q31_t)0x3B78A007, (q31_t)0x71410804, - (q31_t)0x3BA51E29, (q31_t)0x7129931E, (q31_t)0x3BD19317, - (q31_t)0x71120CC5, (q31_t)0x3BFDFECD, (q31_t)0x70FA74FB, - (q31_t)0x3C2A6142, (q31_t)0x70E2CBC6, (q31_t)0x3C56BA70, - (q31_t)0x70CB1127, (q31_t)0x3C830A4F, (q31_t)0x70B34524, - (q31_t)0x3CAF50DA, (q31_t)0x709B67C0, (q31_t)0x3CDB8E09, - (q31_t)0x708378FE, (q31_t)0x3D07C1D5, (q31_t)0x706B78E3, - (q31_t)0x3D33EC39, (q31_t)0x70536771, (q31_t)0x3D600D2B, - (q31_t)0x703B44AC, (q31_t)0x3D8C24A7, (q31_t)0x70231099, - (q31_t)0x3DB832A5, (q31_t)0x700ACB3B, (q31_t)0x3DE4371F, - (q31_t)0x6FF27496, (q31_t)0x3E10320D, (q31_t)0x6FDA0CAD, - (q31_t)0x3E3C2369, (q31_t)0x6FC19385, (q31_t)0x3E680B2C, - (q31_t)0x6FA90920, (q31_t)0x3E93E94F, (q31_t)0x6F906D84, - (q31_t)0x3EBFBDCC, (q31_t)0x6F77C0B3, (q31_t)0x3EEB889C, - (q31_t)0x6F5F02B1, (q31_t)0x3F1749B7, (q31_t)0x6F463383, - (q31_t)0x3F430118, (q31_t)0x6F2D532C, (q31_t)0x3F6EAEB8, - (q31_t)0x6F1461AF, (q31_t)0x3F9A528F, (q31_t)0x6EFB5F12, - (q31_t)0x3FC5EC97, (q31_t)0x6EE24B57, (q31_t)0x3FF17CCA, - (q31_t)0x6EC92682, (q31_t)0x401D0320, (q31_t)0x6EAFF098, - (q31_t)0x40487F93, (q31_t)0x6E96A99C, (q31_t)0x4073F21D, - (q31_t)0x6E7D5193, (q31_t)0x409F5AB6, (q31_t)0x6E63E87F, - (q31_t)0x40CAB957, (q31_t)0x6E4A6E65, (q31_t)0x40F60DFB, - (q31_t)0x6E30E349, (q31_t)0x4121589A, (q31_t)0x6E17472F, - (q31_t)0x414C992E, (q31_t)0x6DFD9A1B, (q31_t)0x4177CFB0, - (q31_t)0x6DE3DC11, (q31_t)0x41A2FC1A, (q31_t)0x6DCA0D14, - (q31_t)0x41CE1E64, (q31_t)0x6DB02D29, (q31_t)0x41F93688, - (q31_t)0x6D963C54, (q31_t)0x42244480, (q31_t)0x6D7C3A98, - (q31_t)0x424F4845, (q31_t)0x6D6227FA, (q31_t)0x427A41D0, - (q31_t)0x6D48047E, (q31_t)0x42A5311A, (q31_t)0x6D2DD027, - (q31_t)0x42D0161E, (q31_t)0x6D138AFA, (q31_t)0x42FAF0D4, - (q31_t)0x6CF934FB, (q31_t)0x4325C135, (q31_t)0x6CDECE2E, - (q31_t)0x4350873C, (q31_t)0x6CC45697, (q31_t)0x437B42E1, - (q31_t)0x6CA9CE3A, (q31_t)0x43A5F41E, (q31_t)0x6C8F351C, - (q31_t)0x43D09AEC, (q31_t)0x6C748B3F, (q31_t)0x43FB3745, - (q31_t)0x6C59D0A9, (q31_t)0x4425C923, (q31_t)0x6C3F055D, - (q31_t)0x4450507E, (q31_t)0x6C242960, (q31_t)0x447ACD50, - (q31_t)0x6C093CB6, (q31_t)0x44A53F93, (q31_t)0x6BEE3F62, - (q31_t)0x44CFA73F, (q31_t)0x6BD3316A, (q31_t)0x44FA044F, - (q31_t)0x6BB812D0, (q31_t)0x452456BC, (q31_t)0x6B9CE39B, - (q31_t)0x454E9E80, (q31_t)0x6B81A3CD, (q31_t)0x4578DB93, - (q31_t)0x6B66536A, (q31_t)0x45A30DF0, (q31_t)0x6B4AF278, - (q31_t)0x45CD358F, (q31_t)0x6B2F80FA, (q31_t)0x45F7526B, - (q31_t)0x6B13FEF5, (q31_t)0x4621647C, (q31_t)0x6AF86C6C, - (q31_t)0x464B6BBD, (q31_t)0x6ADCC964, (q31_t)0x46756827, - (q31_t)0x6AC115E1, (q31_t)0x469F59B4, (q31_t)0x6AA551E8, - (q31_t)0x46C9405C, (q31_t)0x6A897D7D, (q31_t)0x46F31C1A, - (q31_t)0x6A6D98A4, (q31_t)0x471CECE6, (q31_t)0x6A51A361, - (q31_t)0x4746B2BC, (q31_t)0x6A359DB9, (q31_t)0x47706D93, - (q31_t)0x6A1987B0, (q31_t)0x479A1D66, (q31_t)0x69FD614A, - (q31_t)0x47C3C22E, (q31_t)0x69E12A8C, (q31_t)0x47ED5BE6, - (q31_t)0x69C4E37A, (q31_t)0x4816EA85, (q31_t)0x69A88C18, - (q31_t)0x48406E07, (q31_t)0x698C246C, (q31_t)0x4869E664, - (q31_t)0x696FAC78, (q31_t)0x48935397, (q31_t)0x69532442, - (q31_t)0x48BCB598, (q31_t)0x69368BCE, (q31_t)0x48E60C62, - (q31_t)0x6919E320, (q31_t)0x490F57EE, (q31_t)0x68FD2A3D, - (q31_t)0x49389836, (q31_t)0x68E06129, (q31_t)0x4961CD32, - (q31_t)0x68C387E9, (q31_t)0x498AF6DE, (q31_t)0x68A69E81, - (q31_t)0x49B41533, (q31_t)0x6889A4F5, (q31_t)0x49DD282A, - (q31_t)0x686C9B4B, (q31_t)0x4A062FBD, (q31_t)0x684F8186, - (q31_t)0x4A2F2BE5, (q31_t)0x683257AA, (q31_t)0x4A581C9D, - (q31_t)0x68151DBE, (q31_t)0x4A8101DE, (q31_t)0x67F7D3C4, - (q31_t)0x4AA9DBA1, (q31_t)0x67DA79C2, (q31_t)0x4AD2A9E1, - (q31_t)0x67BD0FBC, (q31_t)0x4AFB6C97, (q31_t)0x679F95B7, - (q31_t)0x4B2423BD, (q31_t)0x67820BB6, (q31_t)0x4B4CCF4D, - (q31_t)0x676471C0, (q31_t)0x4B756F3F, (q31_t)0x6746C7D7, - (q31_t)0x4B9E038F, (q31_t)0x67290E02, (q31_t)0x4BC68C36, - (q31_t)0x670B4443, (q31_t)0x4BEF092D, (q31_t)0x66ED6AA1, - (q31_t)0x4C177A6E, (q31_t)0x66CF811F, (q31_t)0x4C3FDFF3, - (q31_t)0x66B187C3, (q31_t)0x4C6839B6, (q31_t)0x66937E90, - (q31_t)0x4C9087B1, (q31_t)0x6675658C, (q31_t)0x4CB8C9DD, - (q31_t)0x66573CBB, (q31_t)0x4CE10034, (q31_t)0x66390422, - (q31_t)0x4D092AB0, (q31_t)0x661ABBC5, (q31_t)0x4D31494B, - (q31_t)0x65FC63A9, (q31_t)0x4D595BFE, (q31_t)0x65DDFBD3, - (q31_t)0x4D8162C4, (q31_t)0x65BF8447, (q31_t)0x4DA95D96, - (q31_t)0x65A0FD0B, (q31_t)0x4DD14C6E, (q31_t)0x65826622, - (q31_t)0x4DF92F45, (q31_t)0x6563BF92, (q31_t)0x4E210617, - (q31_t)0x6545095F, (q31_t)0x4E48D0DC, (q31_t)0x6526438E, - (q31_t)0x4E708F8F, (q31_t)0x65076E24, (q31_t)0x4E984229, - (q31_t)0x64E88926, (q31_t)0x4EBFE8A4, (q31_t)0x64C99498, - (q31_t)0x4EE782FA, (q31_t)0x64AA907F, (q31_t)0x4F0F1126, - (q31_t)0x648B7CDF, (q31_t)0x4F369320, (q31_t)0x646C59BF, - (q31_t)0x4F5E08E3, (q31_t)0x644D2722, (q31_t)0x4F857268, - (q31_t)0x642DE50D, (q31_t)0x4FACCFAB, (q31_t)0x640E9385, - (q31_t)0x4FD420A3, (q31_t)0x63EF328F, (q31_t)0x4FFB654D, - (q31_t)0x63CFC230, (q31_t)0x50229DA0, (q31_t)0x63B0426D, - (q31_t)0x5049C999, (q31_t)0x6390B34A, (q31_t)0x5070E92F, - (q31_t)0x637114CC, (q31_t)0x5097FC5E, (q31_t)0x635166F8, - (q31_t)0x50BF031F, (q31_t)0x6331A9D4, (q31_t)0x50E5FD6C, - (q31_t)0x6311DD63, (q31_t)0x510CEB40, (q31_t)0x62F201AC, - (q31_t)0x5133CC94, (q31_t)0x62D216B2, (q31_t)0x515AA162, - (q31_t)0x62B21C7B, (q31_t)0x518169A4, (q31_t)0x6292130C, - (q31_t)0x51A82555, (q31_t)0x6271FA69, (q31_t)0x51CED46E, - (q31_t)0x6251D297, (q31_t)0x51F576E9, (q31_t)0x62319B9D, - (q31_t)0x521C0CC1, (q31_t)0x6211557D, (q31_t)0x524295EF, - (q31_t)0x61F1003E, (q31_t)0x5269126E, (q31_t)0x61D09BE5, - (q31_t)0x528F8237, (q31_t)0x61B02876, (q31_t)0x52B5E545, - (q31_t)0x618FA5F6, (q31_t)0x52DC3B92, (q31_t)0x616F146B, - (q31_t)0x53028517, (q31_t)0x614E73D9, (q31_t)0x5328C1D0, - (q31_t)0x612DC446, (q31_t)0x534EF1B5, (q31_t)0x610D05B7, - (q31_t)0x537514C1, (q31_t)0x60EC3830, (q31_t)0x539B2AEF, - (q31_t)0x60CB5BB6, (q31_t)0x53C13438, (q31_t)0x60AA704F, - (q31_t)0x53E73097, (q31_t)0x60897600, (q31_t)0x540D2005, - (q31_t)0x60686CCE, (q31_t)0x5433027D, (q31_t)0x604754BE, - (q31_t)0x5458D7F9, (q31_t)0x60262DD5, (q31_t)0x547EA073, - (q31_t)0x6004F818, (q31_t)0x54A45BE5, (q31_t)0x5FE3B38D, - (q31_t)0x54CA0A4A, (q31_t)0x5FC26038, (q31_t)0x54EFAB9C, - (q31_t)0x5FA0FE1E, (q31_t)0x55153FD4, (q31_t)0x5F7F8D46, - (q31_t)0x553AC6ED, (q31_t)0x5F5E0DB3, (q31_t)0x556040E2, - (q31_t)0x5F3C7F6B, (q31_t)0x5585ADAC, (q31_t)0x5F1AE273, - (q31_t)0x55AB0D46, (q31_t)0x5EF936D1, (q31_t)0x55D05FAA, - (q31_t)0x5ED77C89, (q31_t)0x55F5A4D2, (q31_t)0x5EB5B3A1, - (q31_t)0x561ADCB8, (q31_t)0x5E93DC1F, (q31_t)0x56400757, - (q31_t)0x5E71F606, (q31_t)0x566524AA, (q31_t)0x5E50015D, - (q31_t)0x568A34A9, (q31_t)0x5E2DFE28, (q31_t)0x56AF3750, - (q31_t)0x5E0BEC6E, (q31_t)0x56D42C99, (q31_t)0x5DE9CC32, - (q31_t)0x56F9147E, (q31_t)0x5DC79D7C, (q31_t)0x571DEEF9, - (q31_t)0x5DA5604E, (q31_t)0x5742BC05, (q31_t)0x5D8314B0, - (q31_t)0x57677B9D, (q31_t)0x5D60BAA6, (q31_t)0x578C2DB9, - (q31_t)0x5D3E5236, (q31_t)0x57B0D256, (q31_t)0x5D1BDB65, - (q31_t)0x57D5696C, (q31_t)0x5CF95638, (q31_t)0x57F9F2F7, - (q31_t)0x5CD6C2B4, (q31_t)0x581E6EF1, (q31_t)0x5CB420DF, - (q31_t)0x5842DD54, (q31_t)0x5C9170BF, (q31_t)0x58673E1B, - (q31_t)0x5C6EB258, (q31_t)0x588B913F, (q31_t)0x5C4BE5B0, - (q31_t)0x58AFD6BC, (q31_t)0x5C290ACC, (q31_t)0x58D40E8C, - (q31_t)0x5C0621B2, (q31_t)0x58F838A9, (q31_t)0x5BE32A67, - (q31_t)0x591C550E, (q31_t)0x5BC024F0, (q31_t)0x594063B4, - (q31_t)0x5B9D1153, (q31_t)0x59646497, (q31_t)0x5B79EF96, - (q31_t)0x598857B1, (q31_t)0x5B56BFBD, (q31_t)0x59AC3CFD, - (q31_t)0x5B3381CE, (q31_t)0x59D01474, (q31_t)0x5B1035CF, - (q31_t)0x59F3DE12, (q31_t)0x5AECDBC4, (q31_t)0x5A1799D0, - (q31_t)0x5AC973B4, (q31_t)0x5A3B47AA, (q31_t)0x5AA5FDA4, - (q31_t)0x5A5EE79A, (q31_t)0x5A82799A, (q31_t)0x5A82799A, - (q31_t)0x5A5EE79A, (q31_t)0x5AA5FDA4, (q31_t)0x5A3B47AA, - (q31_t)0x5AC973B4, (q31_t)0x5A1799D0, (q31_t)0x5AECDBC4, - (q31_t)0x59F3DE12, (q31_t)0x5B1035CF, (q31_t)0x59D01474, - (q31_t)0x5B3381CE, (q31_t)0x59AC3CFD, (q31_t)0x5B56BFBD, - (q31_t)0x598857B1, (q31_t)0x5B79EF96, (q31_t)0x59646497, - (q31_t)0x5B9D1153, (q31_t)0x594063B4, (q31_t)0x5BC024F0, - (q31_t)0x591C550E, (q31_t)0x5BE32A67, (q31_t)0x58F838A9, - (q31_t)0x5C0621B2, (q31_t)0x58D40E8C, (q31_t)0x5C290ACC, - (q31_t)0x58AFD6BC, (q31_t)0x5C4BE5B0, (q31_t)0x588B913F, - (q31_t)0x5C6EB258, (q31_t)0x58673E1B, (q31_t)0x5C9170BF, - (q31_t)0x5842DD54, (q31_t)0x5CB420DF, (q31_t)0x581E6EF1, - (q31_t)0x5CD6C2B4, (q31_t)0x57F9F2F7, (q31_t)0x5CF95638, - (q31_t)0x57D5696C, (q31_t)0x5D1BDB65, (q31_t)0x57B0D256, - (q31_t)0x5D3E5236, (q31_t)0x578C2DB9, (q31_t)0x5D60BAA6, - (q31_t)0x57677B9D, (q31_t)0x5D8314B0, (q31_t)0x5742BC05, - (q31_t)0x5DA5604E, (q31_t)0x571DEEF9, (q31_t)0x5DC79D7C, - (q31_t)0x56F9147E, (q31_t)0x5DE9CC32, (q31_t)0x56D42C99, - (q31_t)0x5E0BEC6E, (q31_t)0x56AF3750, (q31_t)0x5E2DFE28, - (q31_t)0x568A34A9, (q31_t)0x5E50015D, (q31_t)0x566524AA, - (q31_t)0x5E71F606, (q31_t)0x56400757, (q31_t)0x5E93DC1F, - (q31_t)0x561ADCB8, (q31_t)0x5EB5B3A1, (q31_t)0x55F5A4D2, - (q31_t)0x5ED77C89, (q31_t)0x55D05FAA, (q31_t)0x5EF936D1, - (q31_t)0x55AB0D46, (q31_t)0x5F1AE273, (q31_t)0x5585ADAC, - (q31_t)0x5F3C7F6B, (q31_t)0x556040E2, (q31_t)0x5F5E0DB3, - (q31_t)0x553AC6ED, (q31_t)0x5F7F8D46, (q31_t)0x55153FD4, - (q31_t)0x5FA0FE1E, (q31_t)0x54EFAB9C, (q31_t)0x5FC26038, - (q31_t)0x54CA0A4A, (q31_t)0x5FE3B38D, (q31_t)0x54A45BE5, - (q31_t)0x6004F818, (q31_t)0x547EA073, (q31_t)0x60262DD5, - (q31_t)0x5458D7F9, (q31_t)0x604754BE, (q31_t)0x5433027D, - (q31_t)0x60686CCE, (q31_t)0x540D2005, (q31_t)0x60897600, - (q31_t)0x53E73097, (q31_t)0x60AA704F, (q31_t)0x53C13438, - (q31_t)0x60CB5BB6, (q31_t)0x539B2AEF, (q31_t)0x60EC3830, - (q31_t)0x537514C1, (q31_t)0x610D05B7, (q31_t)0x534EF1B5, - (q31_t)0x612DC446, (q31_t)0x5328C1D0, (q31_t)0x614E73D9, - (q31_t)0x53028517, (q31_t)0x616F146B, (q31_t)0x52DC3B92, - (q31_t)0x618FA5F6, (q31_t)0x52B5E545, (q31_t)0x61B02876, - (q31_t)0x528F8237, (q31_t)0x61D09BE5, (q31_t)0x5269126E, - (q31_t)0x61F1003E, (q31_t)0x524295EF, (q31_t)0x6211557D, - (q31_t)0x521C0CC1, (q31_t)0x62319B9D, (q31_t)0x51F576E9, - (q31_t)0x6251D297, (q31_t)0x51CED46E, (q31_t)0x6271FA69, - (q31_t)0x51A82555, (q31_t)0x6292130C, (q31_t)0x518169A4, - (q31_t)0x62B21C7B, (q31_t)0x515AA162, (q31_t)0x62D216B2, - (q31_t)0x5133CC94, (q31_t)0x62F201AC, (q31_t)0x510CEB40, - (q31_t)0x6311DD63, (q31_t)0x50E5FD6C, (q31_t)0x6331A9D4, - (q31_t)0x50BF031F, (q31_t)0x635166F8, (q31_t)0x5097FC5E, - (q31_t)0x637114CC, (q31_t)0x5070E92F, (q31_t)0x6390B34A, - (q31_t)0x5049C999, (q31_t)0x63B0426D, (q31_t)0x50229DA0, - (q31_t)0x63CFC230, (q31_t)0x4FFB654D, (q31_t)0x63EF328F, - (q31_t)0x4FD420A3, (q31_t)0x640E9385, (q31_t)0x4FACCFAB, - (q31_t)0x642DE50D, (q31_t)0x4F857268, (q31_t)0x644D2722, - (q31_t)0x4F5E08E3, (q31_t)0x646C59BF, (q31_t)0x4F369320, - (q31_t)0x648B7CDF, (q31_t)0x4F0F1126, (q31_t)0x64AA907F, - (q31_t)0x4EE782FA, (q31_t)0x64C99498, (q31_t)0x4EBFE8A4, - (q31_t)0x64E88926, (q31_t)0x4E984229, (q31_t)0x65076E24, - (q31_t)0x4E708F8F, (q31_t)0x6526438E, (q31_t)0x4E48D0DC, - (q31_t)0x6545095F, (q31_t)0x4E210617, (q31_t)0x6563BF92, - (q31_t)0x4DF92F45, (q31_t)0x65826622, (q31_t)0x4DD14C6E, - (q31_t)0x65A0FD0B, (q31_t)0x4DA95D96, (q31_t)0x65BF8447, - (q31_t)0x4D8162C4, (q31_t)0x65DDFBD3, (q31_t)0x4D595BFE, - (q31_t)0x65FC63A9, (q31_t)0x4D31494B, (q31_t)0x661ABBC5, - (q31_t)0x4D092AB0, (q31_t)0x66390422, (q31_t)0x4CE10034, - (q31_t)0x66573CBB, (q31_t)0x4CB8C9DD, (q31_t)0x6675658C, - (q31_t)0x4C9087B1, (q31_t)0x66937E90, (q31_t)0x4C6839B6, - (q31_t)0x66B187C3, (q31_t)0x4C3FDFF3, (q31_t)0x66CF811F, - (q31_t)0x4C177A6E, (q31_t)0x66ED6AA1, (q31_t)0x4BEF092D, - (q31_t)0x670B4443, (q31_t)0x4BC68C36, (q31_t)0x67290E02, - (q31_t)0x4B9E038F, (q31_t)0x6746C7D7, (q31_t)0x4B756F3F, - (q31_t)0x676471C0, (q31_t)0x4B4CCF4D, (q31_t)0x67820BB6, - (q31_t)0x4B2423BD, (q31_t)0x679F95B7, (q31_t)0x4AFB6C97, - (q31_t)0x67BD0FBC, (q31_t)0x4AD2A9E1, (q31_t)0x67DA79C2, - (q31_t)0x4AA9DBA1, (q31_t)0x67F7D3C4, (q31_t)0x4A8101DE, - (q31_t)0x68151DBE, (q31_t)0x4A581C9D, (q31_t)0x683257AA, - (q31_t)0x4A2F2BE5, (q31_t)0x684F8186, (q31_t)0x4A062FBD, - (q31_t)0x686C9B4B, (q31_t)0x49DD282A, (q31_t)0x6889A4F5, - (q31_t)0x49B41533, (q31_t)0x68A69E81, (q31_t)0x498AF6DE, - (q31_t)0x68C387E9, (q31_t)0x4961CD32, (q31_t)0x68E06129, - (q31_t)0x49389836, (q31_t)0x68FD2A3D, (q31_t)0x490F57EE, - (q31_t)0x6919E320, (q31_t)0x48E60C62, (q31_t)0x69368BCE, - (q31_t)0x48BCB598, (q31_t)0x69532442, (q31_t)0x48935397, - (q31_t)0x696FAC78, (q31_t)0x4869E664, (q31_t)0x698C246C, - (q31_t)0x48406E07, (q31_t)0x69A88C18, (q31_t)0x4816EA85, - (q31_t)0x69C4E37A, (q31_t)0x47ED5BE6, (q31_t)0x69E12A8C, - (q31_t)0x47C3C22E, (q31_t)0x69FD614A, (q31_t)0x479A1D66, - (q31_t)0x6A1987B0, (q31_t)0x47706D93, (q31_t)0x6A359DB9, - (q31_t)0x4746B2BC, (q31_t)0x6A51A361, (q31_t)0x471CECE6, - (q31_t)0x6A6D98A4, (q31_t)0x46F31C1A, (q31_t)0x6A897D7D, - (q31_t)0x46C9405C, (q31_t)0x6AA551E8, (q31_t)0x469F59B4, - (q31_t)0x6AC115E1, (q31_t)0x46756827, (q31_t)0x6ADCC964, - (q31_t)0x464B6BBD, (q31_t)0x6AF86C6C, (q31_t)0x4621647C, - (q31_t)0x6B13FEF5, (q31_t)0x45F7526B, (q31_t)0x6B2F80FA, - (q31_t)0x45CD358F, (q31_t)0x6B4AF278, (q31_t)0x45A30DF0, - (q31_t)0x6B66536A, (q31_t)0x4578DB93, (q31_t)0x6B81A3CD, - (q31_t)0x454E9E80, (q31_t)0x6B9CE39B, (q31_t)0x452456BC, - (q31_t)0x6BB812D0, (q31_t)0x44FA044F, (q31_t)0x6BD3316A, - (q31_t)0x44CFA73F, (q31_t)0x6BEE3F62, (q31_t)0x44A53F93, - (q31_t)0x6C093CB6, (q31_t)0x447ACD50, (q31_t)0x6C242960, - (q31_t)0x4450507E, (q31_t)0x6C3F055D, (q31_t)0x4425C923, - (q31_t)0x6C59D0A9, (q31_t)0x43FB3745, (q31_t)0x6C748B3F, - (q31_t)0x43D09AEC, (q31_t)0x6C8F351C, (q31_t)0x43A5F41E, - (q31_t)0x6CA9CE3A, (q31_t)0x437B42E1, (q31_t)0x6CC45697, - (q31_t)0x4350873C, (q31_t)0x6CDECE2E, (q31_t)0x4325C135, - (q31_t)0x6CF934FB, (q31_t)0x42FAF0D4, (q31_t)0x6D138AFA, - (q31_t)0x42D0161E, (q31_t)0x6D2DD027, (q31_t)0x42A5311A, - (q31_t)0x6D48047E, (q31_t)0x427A41D0, (q31_t)0x6D6227FA, - (q31_t)0x424F4845, (q31_t)0x6D7C3A98, (q31_t)0x42244480, - (q31_t)0x6D963C54, (q31_t)0x41F93688, (q31_t)0x6DB02D29, - (q31_t)0x41CE1E64, (q31_t)0x6DCA0D14, (q31_t)0x41A2FC1A, - (q31_t)0x6DE3DC11, (q31_t)0x4177CFB0, (q31_t)0x6DFD9A1B, - (q31_t)0x414C992E, (q31_t)0x6E17472F, (q31_t)0x4121589A, - (q31_t)0x6E30E349, (q31_t)0x40F60DFB, (q31_t)0x6E4A6E65, - (q31_t)0x40CAB957, (q31_t)0x6E63E87F, (q31_t)0x409F5AB6, - (q31_t)0x6E7D5193, (q31_t)0x4073F21D, (q31_t)0x6E96A99C, - (q31_t)0x40487F93, (q31_t)0x6EAFF098, (q31_t)0x401D0320, - (q31_t)0x6EC92682, (q31_t)0x3FF17CCA, (q31_t)0x6EE24B57, - (q31_t)0x3FC5EC97, (q31_t)0x6EFB5F12, (q31_t)0x3F9A528F, - (q31_t)0x6F1461AF, (q31_t)0x3F6EAEB8, (q31_t)0x6F2D532C, - (q31_t)0x3F430118, (q31_t)0x6F463383, (q31_t)0x3F1749B7, - (q31_t)0x6F5F02B1, (q31_t)0x3EEB889C, (q31_t)0x6F77C0B3, - (q31_t)0x3EBFBDCC, (q31_t)0x6F906D84, (q31_t)0x3E93E94F, - (q31_t)0x6FA90920, (q31_t)0x3E680B2C, (q31_t)0x6FC19385, - (q31_t)0x3E3C2369, (q31_t)0x6FDA0CAD, (q31_t)0x3E10320D, - (q31_t)0x6FF27496, (q31_t)0x3DE4371F, (q31_t)0x700ACB3B, - (q31_t)0x3DB832A5, (q31_t)0x70231099, (q31_t)0x3D8C24A7, - (q31_t)0x703B44AC, (q31_t)0x3D600D2B, (q31_t)0x70536771, - (q31_t)0x3D33EC39, (q31_t)0x706B78E3, (q31_t)0x3D07C1D5, - (q31_t)0x708378FE, (q31_t)0x3CDB8E09, (q31_t)0x709B67C0, - (q31_t)0x3CAF50DA, (q31_t)0x70B34524, (q31_t)0x3C830A4F, - (q31_t)0x70CB1127, (q31_t)0x3C56BA70, (q31_t)0x70E2CBC6, - (q31_t)0x3C2A6142, (q31_t)0x70FA74FB, (q31_t)0x3BFDFECD, - (q31_t)0x71120CC5, (q31_t)0x3BD19317, (q31_t)0x7129931E, - (q31_t)0x3BA51E29, (q31_t)0x71410804, (q31_t)0x3B78A007, - (q31_t)0x71586B73, (q31_t)0x3B4C18BA, (q31_t)0x716FBD68, - (q31_t)0x3B1F8847, (q31_t)0x7186FDDE, (q31_t)0x3AF2EEB7, - (q31_t)0x719E2CD2, (q31_t)0x3AC64C0F, (q31_t)0x71B54A40, - (q31_t)0x3A99A057, (q31_t)0x71CC5626, (q31_t)0x3A6CEB95, - (q31_t)0x71E3507F, (q31_t)0x3A402DD1, (q31_t)0x71FA3948, - (q31_t)0x3A136712, (q31_t)0x7211107D, (q31_t)0x39E6975D, - (q31_t)0x7227D61C, (q31_t)0x39B9BEBB, (q31_t)0x723E8A1F, - (q31_t)0x398CDD32, (q31_t)0x72552C84, (q31_t)0x395FF2C9, - (q31_t)0x726BBD48, (q31_t)0x3932FF87, (q31_t)0x72823C66, - (q31_t)0x39060372, (q31_t)0x7298A9DC, (q31_t)0x38D8FE93, - (q31_t)0x72AF05A6, (q31_t)0x38ABF0EF, (q31_t)0x72C54FC0, - (q31_t)0x387EDA8E, (q31_t)0x72DB8828, (q31_t)0x3851BB76, - (q31_t)0x72F1AED8, (q31_t)0x382493B0, (q31_t)0x7307C3D0, - (q31_t)0x37F76340, (q31_t)0x731DC709, (q31_t)0x37CA2A30, - (q31_t)0x7333B883, (q31_t)0x379CE884, (q31_t)0x73499838, - (q31_t)0x376F9E46, (q31_t)0x735F6626, (q31_t)0x37424B7A, - (q31_t)0x73752249, (q31_t)0x3714F02A, (q31_t)0x738ACC9E, - (q31_t)0x36E78C5A, (q31_t)0x73A06522, (q31_t)0x36BA2013, - (q31_t)0x73B5EBD0, (q31_t)0x368CAB5C, (q31_t)0x73CB60A7, - (q31_t)0x365F2E3B, (q31_t)0x73E0C3A3, (q31_t)0x3631A8B7, - (q31_t)0x73F614C0, (q31_t)0x36041AD9, (q31_t)0x740B53FA, - (q31_t)0x35D684A5, (q31_t)0x74208150, (q31_t)0x35A8E624, - (q31_t)0x74359CBD, (q31_t)0x357B3F5D, (q31_t)0x744AA63E, - (q31_t)0x354D9056, (q31_t)0x745F9DD1, (q31_t)0x351FD917, - (q31_t)0x74748371, (q31_t)0x34F219A7, (q31_t)0x7489571B, - (q31_t)0x34C4520D, (q31_t)0x749E18CD, (q31_t)0x3496824F, - (q31_t)0x74B2C883, (q31_t)0x3468AA76, (q31_t)0x74C7663A, - (q31_t)0x343ACA87, (q31_t)0x74DBF1EF, (q31_t)0x340CE28A, - (q31_t)0x74F06B9E, (q31_t)0x33DEF287, (q31_t)0x7504D345, - (q31_t)0x33B0FA84, (q31_t)0x751928E0, (q31_t)0x3382FA88, - (q31_t)0x752D6C6C, (q31_t)0x3354F29A, (q31_t)0x75419DE6, - (q31_t)0x3326E2C2, (q31_t)0x7555BD4B, (q31_t)0x32F8CB07, - (q31_t)0x7569CA98, (q31_t)0x32CAAB6F, (q31_t)0x757DC5CA, - (q31_t)0x329C8402, (q31_t)0x7591AEDD, (q31_t)0x326E54C7, - (q31_t)0x75A585CF, (q31_t)0x32401DC5, (q31_t)0x75B94A9C, - (q31_t)0x3211DF03, (q31_t)0x75CCFD42, (q31_t)0x31E39889, - (q31_t)0x75E09DBD, (q31_t)0x31B54A5D, (q31_t)0x75F42C0A, - (q31_t)0x3186F487, (q31_t)0x7607A827, (q31_t)0x3158970D, - (q31_t)0x761B1211, (q31_t)0x312A31F8, (q31_t)0x762E69C3, - (q31_t)0x30FBC54D, (q31_t)0x7641AF3C, (q31_t)0x30CD5114, - (q31_t)0x7654E279, (q31_t)0x309ED555, (q31_t)0x76680376, - (q31_t)0x30705217, (q31_t)0x767B1230, (q31_t)0x3041C760, - (q31_t)0x768E0EA5, (q31_t)0x30133538, (q31_t)0x76A0F8D2, - (q31_t)0x2FE49BA6, (q31_t)0x76B3D0B3, (q31_t)0x2FB5FAB2, - (q31_t)0x76C69646, (q31_t)0x2F875262, (q31_t)0x76D94988, - (q31_t)0x2F58A2BD, (q31_t)0x76EBEA77, (q31_t)0x2F29EBCC, - (q31_t)0x76FE790E, (q31_t)0x2EFB2D94, (q31_t)0x7710F54B, - (q31_t)0x2ECC681E, (q31_t)0x77235F2D, (q31_t)0x2E9D9B70, - (q31_t)0x7735B6AE, (q31_t)0x2E6EC792, (q31_t)0x7747FBCE, - (q31_t)0x2E3FEC8B, (q31_t)0x775A2E88, (q31_t)0x2E110A62, - (q31_t)0x776C4EDB, (q31_t)0x2DE2211E, (q31_t)0x777E5CC3, - (q31_t)0x2DB330C7, (q31_t)0x7790583D, (q31_t)0x2D843963, - (q31_t)0x77A24148, (q31_t)0x2D553AFB, (q31_t)0x77B417DF, - (q31_t)0x2D263595, (q31_t)0x77C5DC01, (q31_t)0x2CF72939, - (q31_t)0x77D78DAA, (q31_t)0x2CC815ED, (q31_t)0x77E92CD8, - (q31_t)0x2C98FBBA, (q31_t)0x77FAB988, (q31_t)0x2C69DAA6, - (q31_t)0x780C33B8, (q31_t)0x2C3AB2B9, (q31_t)0x781D9B64, - (q31_t)0x2C0B83F9, (q31_t)0x782EF08B, (q31_t)0x2BDC4E6F, - (q31_t)0x78403328, (q31_t)0x2BAD1221, (q31_t)0x7851633B, - (q31_t)0x2B7DCF17, (q31_t)0x786280BF, (q31_t)0x2B4E8558, - (q31_t)0x78738BB3, (q31_t)0x2B1F34EB, (q31_t)0x78848413, - (q31_t)0x2AEFDDD8, (q31_t)0x789569DE, (q31_t)0x2AC08025, - (q31_t)0x78A63D10, (q31_t)0x2A911BDB, (q31_t)0x78B6FDA8, - (q31_t)0x2A61B101, (q31_t)0x78C7ABA1, (q31_t)0x2A323F9D, - (q31_t)0x78D846FB, (q31_t)0x2A02C7B8, (q31_t)0x78E8CFB1, - (q31_t)0x29D34958, (q31_t)0x78F945C3, (q31_t)0x29A3C484, - (q31_t)0x7909A92C, (q31_t)0x29743945, (q31_t)0x7919F9EB, - (q31_t)0x2944A7A2, (q31_t)0x792A37FE, (q31_t)0x29150FA1, - (q31_t)0x793A6360, (q31_t)0x28E5714A, (q31_t)0x794A7C11, - (q31_t)0x28B5CCA5, (q31_t)0x795A820E, (q31_t)0x288621B9, - (q31_t)0x796A7554, (q31_t)0x2856708C, (q31_t)0x797A55E0, - (q31_t)0x2826B928, (q31_t)0x798A23B1, (q31_t)0x27F6FB92, - (q31_t)0x7999DEC3, (q31_t)0x27C737D2, (q31_t)0x79A98715, - (q31_t)0x27976DF1, (q31_t)0x79B91CA4, (q31_t)0x27679DF4, - (q31_t)0x79C89F6D, (q31_t)0x2737C7E3, (q31_t)0x79D80F6F, - (q31_t)0x2707EBC6, (q31_t)0x79E76CA6, (q31_t)0x26D809A5, - (q31_t)0x79F6B711, (q31_t)0x26A82185, (q31_t)0x7A05EEAD, - (q31_t)0x26783370, (q31_t)0x7A151377, (q31_t)0x26483F6C, - (q31_t)0x7A24256E, (q31_t)0x26184581, (q31_t)0x7A33248F, - (q31_t)0x25E845B5, (q31_t)0x7A4210D8, (q31_t)0x25B84012, - (q31_t)0x7A50EA46, (q31_t)0x2588349D, (q31_t)0x7A5FB0D8, - (q31_t)0x2558235E, (q31_t)0x7A6E648A, (q31_t)0x25280C5D, - (q31_t)0x7A7D055B, (q31_t)0x24F7EFA1, (q31_t)0x7A8B9348, - (q31_t)0x24C7CD32, (q31_t)0x7A9A0E4F, (q31_t)0x2497A517, - (q31_t)0x7AA8766E, (q31_t)0x24677757, (q31_t)0x7AB6CBA3, - (q31_t)0x243743FA, (q31_t)0x7AC50DEB, (q31_t)0x24070B07, - (q31_t)0x7AD33D45, (q31_t)0x23D6CC86, (q31_t)0x7AE159AE, - (q31_t)0x23A6887E, (q31_t)0x7AEF6323, (q31_t)0x23763EF7, - (q31_t)0x7AFD59A3, (q31_t)0x2345EFF7, (q31_t)0x7B0B3D2C, - (q31_t)0x23159B87, (q31_t)0x7B190DBB, (q31_t)0x22E541AE, - (q31_t)0x7B26CB4F, (q31_t)0x22B4E274, (q31_t)0x7B3475E4, - (q31_t)0x22847DDF, (q31_t)0x7B420D7A, (q31_t)0x225413F8, - (q31_t)0x7B4F920E, (q31_t)0x2223A4C5, (q31_t)0x7B5D039D, - (q31_t)0x21F3304E, (q31_t)0x7B6A6227, (q31_t)0x21C2B69C, - (q31_t)0x7B77ADA8, (q31_t)0x219237B4, (q31_t)0x7B84E61E, - (q31_t)0x2161B39F, (q31_t)0x7B920B89, (q31_t)0x21312A65, - (q31_t)0x7B9F1DE5, (q31_t)0x21009C0B, (q31_t)0x7BAC1D31, - (q31_t)0x20D0089B, (q31_t)0x7BB9096A, (q31_t)0x209F701C, - (q31_t)0x7BC5E28F, (q31_t)0x206ED295, (q31_t)0x7BD2A89E, - (q31_t)0x203E300D, (q31_t)0x7BDF5B94, (q31_t)0x200D888C, - (q31_t)0x7BEBFB70, (q31_t)0x1FDCDC1A, (q31_t)0x7BF88830, - (q31_t)0x1FAC2ABF, (q31_t)0x7C0501D1, (q31_t)0x1F7B7480, - (q31_t)0x7C116853, (q31_t)0x1F4AB967, (q31_t)0x7C1DBBB2, - (q31_t)0x1F19F97B, (q31_t)0x7C29FBEE, (q31_t)0x1EE934C2, - (q31_t)0x7C362904, (q31_t)0x1EB86B46, (q31_t)0x7C4242F2, - (q31_t)0x1E879D0C, (q31_t)0x7C4E49B6, (q31_t)0x1E56CA1E, - (q31_t)0x7C5A3D4F, (q31_t)0x1E25F281, (q31_t)0x7C661DBB, - (q31_t)0x1DF5163F, (q31_t)0x7C71EAF8, (q31_t)0x1DC4355D, - (q31_t)0x7C7DA504, (q31_t)0x1D934FE5, (q31_t)0x7C894BDD, - (q31_t)0x1D6265DD, (q31_t)0x7C94DF82, (q31_t)0x1D31774D, - (q31_t)0x7CA05FF1, (q31_t)0x1D00843C, (q31_t)0x7CABCD27, - (q31_t)0x1CCF8CB3, (q31_t)0x7CB72724, (q31_t)0x1C9E90B8, - (q31_t)0x7CC26DE5, (q31_t)0x1C6D9053, (q31_t)0x7CCDA168, - (q31_t)0x1C3C8B8C, (q31_t)0x7CD8C1AD, (q31_t)0x1C0B826A, - (q31_t)0x7CE3CEB1, (q31_t)0x1BDA74F5, (q31_t)0x7CEEC873, - (q31_t)0x1BA96334, (q31_t)0x7CF9AEF0, (q31_t)0x1B784D30, - (q31_t)0x7D048228, (q31_t)0x1B4732EF, (q31_t)0x7D0F4218, - (q31_t)0x1B161479, (q31_t)0x7D19EEBE, (q31_t)0x1AE4F1D6, - (q31_t)0x7D24881A, (q31_t)0x1AB3CB0C, (q31_t)0x7D2F0E2A, - (q31_t)0x1A82A025, (q31_t)0x7D3980EC, (q31_t)0x1A517127, - (q31_t)0x7D43E05E, (q31_t)0x1A203E1B, (q31_t)0x7D4E2C7E, - (q31_t)0x19EF0706, (q31_t)0x7D58654C, (q31_t)0x19BDCBF2, - (q31_t)0x7D628AC5, (q31_t)0x198C8CE6, (q31_t)0x7D6C9CE9, - (q31_t)0x195B49E9, (q31_t)0x7D769BB5, (q31_t)0x192A0303, - (q31_t)0x7D808727, (q31_t)0x18F8B83C, (q31_t)0x7D8A5F3F, - (q31_t)0x18C7699B, (q31_t)0x7D9423FB, (q31_t)0x18961727, - (q31_t)0x7D9DD55A, (q31_t)0x1864C0E9, (q31_t)0x7DA77359, - (q31_t)0x183366E8, (q31_t)0x7DB0FDF7, (q31_t)0x1802092C, - (q31_t)0x7DBA7534, (q31_t)0x17D0A7BB, (q31_t)0x7DC3D90D, - (q31_t)0x179F429F, (q31_t)0x7DCD2981, (q31_t)0x176DD9DE, - (q31_t)0x7DD6668E, (q31_t)0x173C6D80, (q31_t)0x7DDF9034, - (q31_t)0x170AFD8D, (q31_t)0x7DE8A670, (q31_t)0x16D98A0C, - (q31_t)0x7DF1A942, (q31_t)0x16A81305, (q31_t)0x7DFA98A7, - (q31_t)0x1676987F, (q31_t)0x7E03749F, (q31_t)0x16451A83, - (q31_t)0x7E0C3D29, (q31_t)0x16139917, (q31_t)0x7E14F242, - (q31_t)0x15E21444, (q31_t)0x7E1D93E9, (q31_t)0x15B08C11, - (q31_t)0x7E26221E, (q31_t)0x157F0086, (q31_t)0x7E2E9CDF, - (q31_t)0x154D71AA, (q31_t)0x7E37042A, (q31_t)0x151BDF85, - (q31_t)0x7E3F57FE, (q31_t)0x14EA4A1F, (q31_t)0x7E47985B, - (q31_t)0x14B8B17F, (q31_t)0x7E4FC53E, (q31_t)0x148715AD, - (q31_t)0x7E57DEA6, (q31_t)0x145576B1, (q31_t)0x7E5FE493, - (q31_t)0x1423D492, (q31_t)0x7E67D702, (q31_t)0x13F22F57, - (q31_t)0x7E6FB5F3, (q31_t)0x13C0870A, (q31_t)0x7E778165, - (q31_t)0x138EDBB0, (q31_t)0x7E7F3956, (q31_t)0x135D2D53, - (q31_t)0x7E86DDC5, (q31_t)0x132B7BF9, (q31_t)0x7E8E6EB1, - (q31_t)0x12F9C7AA, (q31_t)0x7E95EC19, (q31_t)0x12C8106E, - (q31_t)0x7E9D55FC, (q31_t)0x1296564D, (q31_t)0x7EA4AC58, - (q31_t)0x1264994E, (q31_t)0x7EABEF2C, (q31_t)0x1232D978, - (q31_t)0x7EB31E77, (q31_t)0x120116D4, (q31_t)0x7EBA3A39, - (q31_t)0x11CF516A, (q31_t)0x7EC1426F, (q31_t)0x119D8940, - (q31_t)0x7EC8371A, (q31_t)0x116BBE5F, (q31_t)0x7ECF1837, - (q31_t)0x1139F0CE, (q31_t)0x7ED5E5C6, (q31_t)0x11082096, - (q31_t)0x7EDC9FC6, (q31_t)0x10D64DBC, (q31_t)0x7EE34635, - (q31_t)0x10A4784A, (q31_t)0x7EE9D913, (q31_t)0x1072A047, - (q31_t)0x7EF0585F, (q31_t)0x1040C5BB, (q31_t)0x7EF6C418, - (q31_t)0x100EE8AD, (q31_t)0x7EFD1C3C, (q31_t)0x0FDD0925, - (q31_t)0x7F0360CB, (q31_t)0x0FAB272B, (q31_t)0x7F0991C3, - (q31_t)0x0F7942C6, (q31_t)0x7F0FAF24, (q31_t)0x0F475BFE, - (q31_t)0x7F15B8EE, (q31_t)0x0F1572DC, (q31_t)0x7F1BAF1E, - (q31_t)0x0EE38765, (q31_t)0x7F2191B4, (q31_t)0x0EB199A3, - (q31_t)0x7F2760AF, (q31_t)0x0E7FA99D, (q31_t)0x7F2D1C0E, - (q31_t)0x0E4DB75B, (q31_t)0x7F32C3D0, (q31_t)0x0E1BC2E3, - (q31_t)0x7F3857F5, (q31_t)0x0DE9CC3F, (q31_t)0x7F3DD87C, - (q31_t)0x0DB7D376, (q31_t)0x7F434563, (q31_t)0x0D85D88F, - (q31_t)0x7F489EAA, (q31_t)0x0D53DB92, (q31_t)0x7F4DE450, - (q31_t)0x0D21DC87, (q31_t)0x7F531654, (q31_t)0x0CEFDB75, - (q31_t)0x7F5834B6, (q31_t)0x0CBDD865, (q31_t)0x7F5D3F75, - (q31_t)0x0C8BD35E, (q31_t)0x7F62368F, (q31_t)0x0C59CC67, - (q31_t)0x7F671A04, (q31_t)0x0C27C389, (q31_t)0x7F6BE9D4, - (q31_t)0x0BF5B8CB, (q31_t)0x7F70A5FD, (q31_t)0x0BC3AC35, - (q31_t)0x7F754E7F, (q31_t)0x0B919DCE, (q31_t)0x7F79E35A, - (q31_t)0x0B5F8D9F, (q31_t)0x7F7E648B, (q31_t)0x0B2D7BAE, - (q31_t)0x7F82D214, (q31_t)0x0AFB6805, (q31_t)0x7F872BF3, - (q31_t)0x0AC952AA, (q31_t)0x7F8B7226, (q31_t)0x0A973BA5, - (q31_t)0x7F8FA4AF, (q31_t)0x0A6522FE, (q31_t)0x7F93C38C, - (q31_t)0x0A3308BC, (q31_t)0x7F97CEBC, (q31_t)0x0A00ECE8, - (q31_t)0x7F9BC63F, (q31_t)0x09CECF89, (q31_t)0x7F9FAA15, - (q31_t)0x099CB0A7, (q31_t)0x7FA37A3C, (q31_t)0x096A9049, - (q31_t)0x7FA736B4, (q31_t)0x09386E77, (q31_t)0x7FAADF7C, - (q31_t)0x09064B3A, (q31_t)0x7FAE7494, (q31_t)0x08D42698, - (q31_t)0x7FB1F5FC, (q31_t)0x08A2009A, (q31_t)0x7FB563B2, - (q31_t)0x086FD947, (q31_t)0x7FB8BDB7, (q31_t)0x083DB0A7, - (q31_t)0x7FBC040A, (q31_t)0x080B86C1, (q31_t)0x7FBF36A9, - (q31_t)0x07D95B9E, (q31_t)0x7FC25596, (q31_t)0x07A72F45, - (q31_t)0x7FC560CF, (q31_t)0x077501BE, (q31_t)0x7FC85853, - (q31_t)0x0742D310, (q31_t)0x7FCB3C23, (q31_t)0x0710A344, - (q31_t)0x7FCE0C3E, (q31_t)0x06DE7261, (q31_t)0x7FD0C8A3, - (q31_t)0x06AC406F, (q31_t)0x7FD37152, (q31_t)0x067A0D75, - (q31_t)0x7FD6064B, (q31_t)0x0647D97C, (q31_t)0x7FD8878D, - (q31_t)0x0615A48A, (q31_t)0x7FDAF518, (q31_t)0x05E36EA9, - (q31_t)0x7FDD4EEC, (q31_t)0x05B137DF, (q31_t)0x7FDF9508, - (q31_t)0x057F0034, (q31_t)0x7FE1C76B, (q31_t)0x054CC7B0, - (q31_t)0x7FE3E616, (q31_t)0x051A8E5C, (q31_t)0x7FE5F108, - (q31_t)0x04E8543D, (q31_t)0x7FE7E840, (q31_t)0x04B6195D, - (q31_t)0x7FE9CBC0, (q31_t)0x0483DDC3, (q31_t)0x7FEB9B85, - (q31_t)0x0451A176, (q31_t)0x7FED5790, (q31_t)0x041F647F, - (q31_t)0x7FEEFFE1, (q31_t)0x03ED26E6, (q31_t)0x7FF09477, - (q31_t)0x03BAE8B1, (q31_t)0x7FF21553, (q31_t)0x0388A9E9, - (q31_t)0x7FF38273, (q31_t)0x03566A96, (q31_t)0x7FF4DBD8, - (q31_t)0x03242ABF, (q31_t)0x7FF62182, (q31_t)0x02F1EA6B, - (q31_t)0x7FF7536F, (q31_t)0x02BFA9A4, (q31_t)0x7FF871A1, - (q31_t)0x028D6870, (q31_t)0x7FF97C17, (q31_t)0x025B26D7, - (q31_t)0x7FFA72D1, (q31_t)0x0228E4E1, (q31_t)0x7FFB55CE, - (q31_t)0x01F6A296, (q31_t)0x7FFC250F, (q31_t)0x01C45FFE, - (q31_t)0x7FFCE093, (q31_t)0x01921D1F, (q31_t)0x7FFD885A, - (q31_t)0x015FDA03, (q31_t)0x7FFE1C64, (q31_t)0x012D96B0, - (q31_t)0x7FFE9CB2, (q31_t)0x00FB532F, (q31_t)0x7FFF0942, - (q31_t)0x00C90F88, (q31_t)0x7FFF6216, (q31_t)0x0096CBC1, - (q31_t)0x7FFFA72C, (q31_t)0x006487E3, (q31_t)0x7FFFD885, - (q31_t)0x003243F5, (q31_t)0x7FFFF621, (q31_t)0x00000000, - (q31_t)0x7FFFFFFF, (q31_t)0xFFCDBC0A, (q31_t)0x7FFFF621, - (q31_t)0xFF9B781D, (q31_t)0x7FFFD885, (q31_t)0xFF69343E, - (q31_t)0x7FFFA72C, (q31_t)0xFF36F078, (q31_t)0x7FFF6216, - (q31_t)0xFF04ACD0, (q31_t)0x7FFF0942, (q31_t)0xFED2694F, - (q31_t)0x7FFE9CB2, (q31_t)0xFEA025FC, (q31_t)0x7FFE1C64, - (q31_t)0xFE6DE2E0, (q31_t)0x7FFD885A, (q31_t)0xFE3BA001, - (q31_t)0x7FFCE093, (q31_t)0xFE095D69, (q31_t)0x7FFC250F, - (q31_t)0xFDD71B1E, (q31_t)0x7FFB55CE, (q31_t)0xFDA4D928, - (q31_t)0x7FFA72D1, (q31_t)0xFD72978F, (q31_t)0x7FF97C17, - (q31_t)0xFD40565B, (q31_t)0x7FF871A1, (q31_t)0xFD0E1594, - (q31_t)0x7FF7536F, (q31_t)0xFCDBD541, (q31_t)0x7FF62182, - (q31_t)0xFCA99569, (q31_t)0x7FF4DBD8, (q31_t)0xFC775616, - (q31_t)0x7FF38273, (q31_t)0xFC45174E, (q31_t)0x7FF21553, - (q31_t)0xFC12D919, (q31_t)0x7FF09477, (q31_t)0xFBE09B80, - (q31_t)0x7FEEFFE1, (q31_t)0xFBAE5E89, (q31_t)0x7FED5790, - (q31_t)0xFB7C223C, (q31_t)0x7FEB9B85, (q31_t)0xFB49E6A2, - (q31_t)0x7FE9CBC0, (q31_t)0xFB17ABC2, (q31_t)0x7FE7E840, - (q31_t)0xFAE571A4, (q31_t)0x7FE5F108, (q31_t)0xFAB3384F, - (q31_t)0x7FE3E616, (q31_t)0xFA80FFCB, (q31_t)0x7FE1C76B, - (q31_t)0xFA4EC820, (q31_t)0x7FDF9508, (q31_t)0xFA1C9156, - (q31_t)0x7FDD4EEC, (q31_t)0xF9EA5B75, (q31_t)0x7FDAF518, - (q31_t)0xF9B82683, (q31_t)0x7FD8878D, (q31_t)0xF985F28A, - (q31_t)0x7FD6064B, (q31_t)0xF953BF90, (q31_t)0x7FD37152, - (q31_t)0xF9218D9E, (q31_t)0x7FD0C8A3, (q31_t)0xF8EF5CBB, - (q31_t)0x7FCE0C3E, (q31_t)0xF8BD2CEF, (q31_t)0x7FCB3C23, - (q31_t)0xF88AFE41, (q31_t)0x7FC85853, (q31_t)0xF858D0BA, - (q31_t)0x7FC560CF, (q31_t)0xF826A461, (q31_t)0x7FC25596, - (q31_t)0xF7F4793E, (q31_t)0x7FBF36A9, (q31_t)0xF7C24F58, - (q31_t)0x7FBC040A, (q31_t)0xF79026B8, (q31_t)0x7FB8BDB7, - (q31_t)0xF75DFF65, (q31_t)0x7FB563B2, (q31_t)0xF72BD967, - (q31_t)0x7FB1F5FC, (q31_t)0xF6F9B4C5, (q31_t)0x7FAE7494, - (q31_t)0xF6C79188, (q31_t)0x7FAADF7C, (q31_t)0xF6956FB6, - (q31_t)0x7FA736B4, (q31_t)0xF6634F58, (q31_t)0x7FA37A3C, - (q31_t)0xF6313076, (q31_t)0x7F9FAA15, (q31_t)0xF5FF1317, - (q31_t)0x7F9BC63F, (q31_t)0xF5CCF743, (q31_t)0x7F97CEBC, - (q31_t)0xF59ADD01, (q31_t)0x7F93C38C, (q31_t)0xF568C45A, - (q31_t)0x7F8FA4AF, (q31_t)0xF536AD55, (q31_t)0x7F8B7226, - (q31_t)0xF50497FA, (q31_t)0x7F872BF3, (q31_t)0xF4D28451, - (q31_t)0x7F82D214, (q31_t)0xF4A07260, (q31_t)0x7F7E648B, - (q31_t)0xF46E6231, (q31_t)0x7F79E35A, (q31_t)0xF43C53CA, - (q31_t)0x7F754E7F, (q31_t)0xF40A4734, (q31_t)0x7F70A5FD, - (q31_t)0xF3D83C76, (q31_t)0x7F6BE9D4, (q31_t)0xF3A63398, - (q31_t)0x7F671A04, (q31_t)0xF3742CA1, (q31_t)0x7F62368F, - (q31_t)0xF342279A, (q31_t)0x7F5D3F75, (q31_t)0xF310248A, - (q31_t)0x7F5834B6, (q31_t)0xF2DE2378, (q31_t)0x7F531654, - (q31_t)0xF2AC246D, (q31_t)0x7F4DE450, (q31_t)0xF27A2770, - (q31_t)0x7F489EAA, (q31_t)0xF2482C89, (q31_t)0x7F434563, - (q31_t)0xF21633C0, (q31_t)0x7F3DD87C, (q31_t)0xF1E43D1C, - (q31_t)0x7F3857F5, (q31_t)0xF1B248A5, (q31_t)0x7F32C3D0, - (q31_t)0xF1805662, (q31_t)0x7F2D1C0E, (q31_t)0xF14E665C, - (q31_t)0x7F2760AF, (q31_t)0xF11C789A, (q31_t)0x7F2191B4, - (q31_t)0xF0EA8D23, (q31_t)0x7F1BAF1E, (q31_t)0xF0B8A401, - (q31_t)0x7F15B8EE, (q31_t)0xF086BD39, (q31_t)0x7F0FAF24, - (q31_t)0xF054D8D4, (q31_t)0x7F0991C3, (q31_t)0xF022F6DA, - (q31_t)0x7F0360CB, (q31_t)0xEFF11752, (q31_t)0x7EFD1C3C, - (q31_t)0xEFBF3A44, (q31_t)0x7EF6C418, (q31_t)0xEF8D5FB8, - (q31_t)0x7EF0585F, (q31_t)0xEF5B87B5, (q31_t)0x7EE9D913, - (q31_t)0xEF29B243, (q31_t)0x7EE34635, (q31_t)0xEEF7DF6A, - (q31_t)0x7EDC9FC6, (q31_t)0xEEC60F31, (q31_t)0x7ED5E5C6, - (q31_t)0xEE9441A0, (q31_t)0x7ECF1837, (q31_t)0xEE6276BF, - (q31_t)0x7EC8371A, (q31_t)0xEE30AE95, (q31_t)0x7EC1426F, - (q31_t)0xEDFEE92B, (q31_t)0x7EBA3A39, (q31_t)0xEDCD2687, - (q31_t)0x7EB31E77, (q31_t)0xED9B66B2, (q31_t)0x7EABEF2C, - (q31_t)0xED69A9B2, (q31_t)0x7EA4AC58, (q31_t)0xED37EF91, - (q31_t)0x7E9D55FC, (q31_t)0xED063855, (q31_t)0x7E95EC19, - (q31_t)0xECD48406, (q31_t)0x7E8E6EB1, (q31_t)0xECA2D2AC, - (q31_t)0x7E86DDC5, (q31_t)0xEC71244F, (q31_t)0x7E7F3956, - (q31_t)0xEC3F78F5, (q31_t)0x7E778165, (q31_t)0xEC0DD0A8, - (q31_t)0x7E6FB5F3, (q31_t)0xEBDC2B6D, (q31_t)0x7E67D702, - (q31_t)0xEBAA894E, (q31_t)0x7E5FE493, (q31_t)0xEB78EA52, - (q31_t)0x7E57DEA6, (q31_t)0xEB474E80, (q31_t)0x7E4FC53E, - (q31_t)0xEB15B5E0, (q31_t)0x7E47985B, (q31_t)0xEAE4207A, - (q31_t)0x7E3F57FE, (q31_t)0xEAB28E55, (q31_t)0x7E37042A, - (q31_t)0xEA80FF79, (q31_t)0x7E2E9CDF, (q31_t)0xEA4F73EE, - (q31_t)0x7E26221E, (q31_t)0xEA1DEBBB, (q31_t)0x7E1D93E9, - (q31_t)0xE9EC66E8, (q31_t)0x7E14F242, (q31_t)0xE9BAE57C, - (q31_t)0x7E0C3D29, (q31_t)0xE9896780, (q31_t)0x7E03749F, - (q31_t)0xE957ECFB, (q31_t)0x7DFA98A7, (q31_t)0xE92675F4, - (q31_t)0x7DF1A942, (q31_t)0xE8F50273, (q31_t)0x7DE8A670, - (q31_t)0xE8C3927F, (q31_t)0x7DDF9034, (q31_t)0xE8922621, - (q31_t)0x7DD6668E, (q31_t)0xE860BD60, (q31_t)0x7DCD2981, - (q31_t)0xE82F5844, (q31_t)0x7DC3D90D, (q31_t)0xE7FDF6D3, - (q31_t)0x7DBA7534, (q31_t)0xE7CC9917, (q31_t)0x7DB0FDF7, - (q31_t)0xE79B3F16, (q31_t)0x7DA77359, (q31_t)0xE769E8D8, - (q31_t)0x7D9DD55A, (q31_t)0xE7389664, (q31_t)0x7D9423FB, - (q31_t)0xE70747C3, (q31_t)0x7D8A5F3F, (q31_t)0xE6D5FCFC, - (q31_t)0x7D808727, (q31_t)0xE6A4B616, (q31_t)0x7D769BB5, - (q31_t)0xE6737319, (q31_t)0x7D6C9CE9, (q31_t)0xE642340D, - (q31_t)0x7D628AC5, (q31_t)0xE610F8F9, (q31_t)0x7D58654C, - (q31_t)0xE5DFC1E4, (q31_t)0x7D4E2C7E, (q31_t)0xE5AE8ED8, - (q31_t)0x7D43E05E, (q31_t)0xE57D5FDA, (q31_t)0x7D3980EC, - (q31_t)0xE54C34F3, (q31_t)0x7D2F0E2A, (q31_t)0xE51B0E2A, - (q31_t)0x7D24881A, (q31_t)0xE4E9EB86, (q31_t)0x7D19EEBE, - (q31_t)0xE4B8CD10, (q31_t)0x7D0F4218, (q31_t)0xE487B2CF, - (q31_t)0x7D048228, (q31_t)0xE4569CCB, (q31_t)0x7CF9AEF0, - (q31_t)0xE4258B0A, (q31_t)0x7CEEC873, (q31_t)0xE3F47D95, - (q31_t)0x7CE3CEB1, (q31_t)0xE3C37473, (q31_t)0x7CD8C1AD, - (q31_t)0xE3926FAC, (q31_t)0x7CCDA168, (q31_t)0xE3616F47, - (q31_t)0x7CC26DE5, (q31_t)0xE330734C, (q31_t)0x7CB72724, - (q31_t)0xE2FF7BC3, (q31_t)0x7CABCD27, (q31_t)0xE2CE88B2, - (q31_t)0x7CA05FF1, (q31_t)0xE29D9A22, (q31_t)0x7C94DF82, - (q31_t)0xE26CB01A, (q31_t)0x7C894BDD, (q31_t)0xE23BCAA2, - (q31_t)0x7C7DA504, (q31_t)0xE20AE9C1, (q31_t)0x7C71EAF8, - (q31_t)0xE1DA0D7E, (q31_t)0x7C661DBB, (q31_t)0xE1A935E1, - (q31_t)0x7C5A3D4F, (q31_t)0xE17862F3, (q31_t)0x7C4E49B6, - (q31_t)0xE14794B9, (q31_t)0x7C4242F2, (q31_t)0xE116CB3D, - (q31_t)0x7C362904, (q31_t)0xE0E60684, (q31_t)0x7C29FBEE, - (q31_t)0xE0B54698, (q31_t)0x7C1DBBB2, (q31_t)0xE0848B7F, - (q31_t)0x7C116853, (q31_t)0xE053D541, (q31_t)0x7C0501D1, - (q31_t)0xE02323E5, (q31_t)0x7BF88830, (q31_t)0xDFF27773, - (q31_t)0x7BEBFB70, (q31_t)0xDFC1CFF2, (q31_t)0x7BDF5B94, - (q31_t)0xDF912D6A, (q31_t)0x7BD2A89E, (q31_t)0xDF608FE3, - (q31_t)0x7BC5E28F, (q31_t)0xDF2FF764, (q31_t)0x7BB9096A, - (q31_t)0xDEFF63F4, (q31_t)0x7BAC1D31, (q31_t)0xDECED59B, - (q31_t)0x7B9F1DE5, (q31_t)0xDE9E4C60, (q31_t)0x7B920B89, - (q31_t)0xDE6DC84B, (q31_t)0x7B84E61E, (q31_t)0xDE3D4963, - (q31_t)0x7B77ADA8, (q31_t)0xDE0CCFB1, (q31_t)0x7B6A6227, - (q31_t)0xDDDC5B3A, (q31_t)0x7B5D039D, (q31_t)0xDDABEC07, - (q31_t)0x7B4F920E, (q31_t)0xDD7B8220, (q31_t)0x7B420D7A, - (q31_t)0xDD4B1D8B, (q31_t)0x7B3475E4, (q31_t)0xDD1ABE51, - (q31_t)0x7B26CB4F, (q31_t)0xDCEA6478, (q31_t)0x7B190DBB, - (q31_t)0xDCBA1008, (q31_t)0x7B0B3D2C, (q31_t)0xDC89C108, - (q31_t)0x7AFD59A3, (q31_t)0xDC597781, (q31_t)0x7AEF6323, - (q31_t)0xDC293379, (q31_t)0x7AE159AE, (q31_t)0xDBF8F4F8, - (q31_t)0x7AD33D45, (q31_t)0xDBC8BC05, (q31_t)0x7AC50DEB, - (q31_t)0xDB9888A8, (q31_t)0x7AB6CBA3, (q31_t)0xDB685AE8, - (q31_t)0x7AA8766E, (q31_t)0xDB3832CD, (q31_t)0x7A9A0E4F, - (q31_t)0xDB08105E, (q31_t)0x7A8B9348, (q31_t)0xDAD7F3A2, - (q31_t)0x7A7D055B, (q31_t)0xDAA7DCA1, (q31_t)0x7A6E648A, - (q31_t)0xDA77CB62, (q31_t)0x7A5FB0D8, (q31_t)0xDA47BFED, - (q31_t)0x7A50EA46, (q31_t)0xDA17BA4A, (q31_t)0x7A4210D8, - (q31_t)0xD9E7BA7E, (q31_t)0x7A33248F, (q31_t)0xD9B7C093, - (q31_t)0x7A24256E, (q31_t)0xD987CC8F, (q31_t)0x7A151377, - (q31_t)0xD957DE7A, (q31_t)0x7A05EEAD, (q31_t)0xD927F65B, - (q31_t)0x79F6B711, (q31_t)0xD8F81439, (q31_t)0x79E76CA6, - (q31_t)0xD8C8381C, (q31_t)0x79D80F6F, (q31_t)0xD898620C, - (q31_t)0x79C89F6D, (q31_t)0xD868920F, (q31_t)0x79B91CA4, - (q31_t)0xD838C82D, (q31_t)0x79A98715, (q31_t)0xD809046D, - (q31_t)0x7999DEC3, (q31_t)0xD7D946D7, (q31_t)0x798A23B1, - (q31_t)0xD7A98F73, (q31_t)0x797A55E0, (q31_t)0xD779DE46, - (q31_t)0x796A7554, (q31_t)0xD74A335A, (q31_t)0x795A820E, - (q31_t)0xD71A8EB5, (q31_t)0x794A7C11, (q31_t)0xD6EAF05E, - (q31_t)0x793A6360, (q31_t)0xD6BB585D, (q31_t)0x792A37FE, - (q31_t)0xD68BC6BA, (q31_t)0x7919F9EB, (q31_t)0xD65C3B7B, - (q31_t)0x7909A92C, (q31_t)0xD62CB6A7, (q31_t)0x78F945C3, - (q31_t)0xD5FD3847, (q31_t)0x78E8CFB1, (q31_t)0xD5CDC062, - (q31_t)0x78D846FB, (q31_t)0xD59E4EFE, (q31_t)0x78C7ABA1, - (q31_t)0xD56EE424, (q31_t)0x78B6FDA8, (q31_t)0xD53F7FDA, - (q31_t)0x78A63D10, (q31_t)0xD5102227, (q31_t)0x789569DE, - (q31_t)0xD4E0CB14, (q31_t)0x78848413, (q31_t)0xD4B17AA7, - (q31_t)0x78738BB3, (q31_t)0xD48230E8, (q31_t)0x786280BF, - (q31_t)0xD452EDDE, (q31_t)0x7851633B, (q31_t)0xD423B190, - (q31_t)0x78403328, (q31_t)0xD3F47C06, (q31_t)0x782EF08B, - (q31_t)0xD3C54D46, (q31_t)0x781D9B64, (q31_t)0xD3962559, - (q31_t)0x780C33B8, (q31_t)0xD3670445, (q31_t)0x77FAB988, - (q31_t)0xD337EA12, (q31_t)0x77E92CD8, (q31_t)0xD308D6C6, - (q31_t)0x77D78DAA, (q31_t)0xD2D9CA6A, (q31_t)0x77C5DC01, - (q31_t)0xD2AAC504, (q31_t)0x77B417DF, (q31_t)0xD27BC69C, - (q31_t)0x77A24148, (q31_t)0xD24CCF38, (q31_t)0x7790583D, - (q31_t)0xD21DDEE1, (q31_t)0x777E5CC3, (q31_t)0xD1EEF59E, - (q31_t)0x776C4EDB, (q31_t)0xD1C01374, (q31_t)0x775A2E88, - (q31_t)0xD191386D, (q31_t)0x7747FBCE, (q31_t)0xD162648F, - (q31_t)0x7735B6AE, (q31_t)0xD13397E1, (q31_t)0x77235F2D, - (q31_t)0xD104D26B, (q31_t)0x7710F54B, (q31_t)0xD0D61433, - (q31_t)0x76FE790E, (q31_t)0xD0A75D42, (q31_t)0x76EBEA77, - (q31_t)0xD078AD9D, (q31_t)0x76D94988, (q31_t)0xD04A054D, - (q31_t)0x76C69646, (q31_t)0xD01B6459, (q31_t)0x76B3D0B3, - (q31_t)0xCFECCAC7, (q31_t)0x76A0F8D2, (q31_t)0xCFBE389F, - (q31_t)0x768E0EA5, (q31_t)0xCF8FADE8, (q31_t)0x767B1230, - (q31_t)0xCF612AAA, (q31_t)0x76680376, (q31_t)0xCF32AEEB, - (q31_t)0x7654E279, (q31_t)0xCF043AB2, (q31_t)0x7641AF3C, - (q31_t)0xCED5CE08, (q31_t)0x762E69C3, (q31_t)0xCEA768F2, - (q31_t)0x761B1211, (q31_t)0xCE790B78, (q31_t)0x7607A827, - (q31_t)0xCE4AB5A2, (q31_t)0x75F42C0A, (q31_t)0xCE1C6776, - (q31_t)0x75E09DBD, (q31_t)0xCDEE20FC, (q31_t)0x75CCFD42, - (q31_t)0xCDBFE23A, (q31_t)0x75B94A9C, (q31_t)0xCD91AB38, - (q31_t)0x75A585CF, (q31_t)0xCD637BFD, (q31_t)0x7591AEDD, - (q31_t)0xCD355490, (q31_t)0x757DC5CA, (q31_t)0xCD0734F8, - (q31_t)0x7569CA98, (q31_t)0xCCD91D3D, (q31_t)0x7555BD4B, - (q31_t)0xCCAB0D65, (q31_t)0x75419DE6, (q31_t)0xCC7D0577, - (q31_t)0x752D6C6C, (q31_t)0xCC4F057B, (q31_t)0x751928E0, - (q31_t)0xCC210D78, (q31_t)0x7504D345, (q31_t)0xCBF31D75, - (q31_t)0x74F06B9E, (q31_t)0xCBC53578, (q31_t)0x74DBF1EF, - (q31_t)0xCB975589, (q31_t)0x74C7663A, (q31_t)0xCB697DB0, - (q31_t)0x74B2C883, (q31_t)0xCB3BADF2, (q31_t)0x749E18CD, - (q31_t)0xCB0DE658, (q31_t)0x7489571B, (q31_t)0xCAE026E8, - (q31_t)0x74748371, (q31_t)0xCAB26FA9, (q31_t)0x745F9DD1, - (q31_t)0xCA84C0A2, (q31_t)0x744AA63E, (q31_t)0xCA5719DB, - (q31_t)0x74359CBD, (q31_t)0xCA297B5A, (q31_t)0x74208150, - (q31_t)0xC9FBE527, (q31_t)0x740B53FA, (q31_t)0xC9CE5748, - (q31_t)0x73F614C0, (q31_t)0xC9A0D1C4, (q31_t)0x73E0C3A3, - (q31_t)0xC97354A3, (q31_t)0x73CB60A7, (q31_t)0xC945DFEC, - (q31_t)0x73B5EBD0, (q31_t)0xC91873A5, (q31_t)0x73A06522, - (q31_t)0xC8EB0FD6, (q31_t)0x738ACC9E, (q31_t)0xC8BDB485, - (q31_t)0x73752249, (q31_t)0xC89061BA, (q31_t)0x735F6626, - (q31_t)0xC863177B, (q31_t)0x73499838, (q31_t)0xC835D5D0, - (q31_t)0x7333B883, (q31_t)0xC8089CBF, (q31_t)0x731DC709, - (q31_t)0xC7DB6C50, (q31_t)0x7307C3D0, (q31_t)0xC7AE4489, - (q31_t)0x72F1AED8, (q31_t)0xC7812571, (q31_t)0x72DB8828, - (q31_t)0xC7540F10, (q31_t)0x72C54FC0, (q31_t)0xC727016C, - (q31_t)0x72AF05A6, (q31_t)0xC6F9FC8D, (q31_t)0x7298A9DC, - (q31_t)0xC6CD0079, (q31_t)0x72823C66, (q31_t)0xC6A00D36, - (q31_t)0x726BBD48, (q31_t)0xC67322CD, (q31_t)0x72552C84, - (q31_t)0xC6464144, (q31_t)0x723E8A1F, (q31_t)0xC61968A2, - (q31_t)0x7227D61C, (q31_t)0xC5EC98ED, (q31_t)0x7211107D, - (q31_t)0xC5BFD22E, (q31_t)0x71FA3948, (q31_t)0xC593146A, - (q31_t)0x71E3507F, (q31_t)0xC5665FA8, (q31_t)0x71CC5626, - (q31_t)0xC539B3F0, (q31_t)0x71B54A40, (q31_t)0xC50D1148, - (q31_t)0x719E2CD2, (q31_t)0xC4E077B8, (q31_t)0x7186FDDE, - (q31_t)0xC4B3E746, (q31_t)0x716FBD68, (q31_t)0xC4875FF8, - (q31_t)0x71586B73, (q31_t)0xC45AE1D7, (q31_t)0x71410804, - (q31_t)0xC42E6CE8, (q31_t)0x7129931E, (q31_t)0xC4020132, - (q31_t)0x71120CC5, (q31_t)0xC3D59EBD, (q31_t)0x70FA74FB, - (q31_t)0xC3A9458F, (q31_t)0x70E2CBC6, (q31_t)0xC37CF5B0, - (q31_t)0x70CB1127, (q31_t)0xC350AF25, (q31_t)0x70B34524, - (q31_t)0xC32471F6, (q31_t)0x709B67C0, (q31_t)0xC2F83E2A, - (q31_t)0x708378FE, (q31_t)0xC2CC13C7, (q31_t)0x706B78E3, - (q31_t)0xC29FF2D4, (q31_t)0x70536771, (q31_t)0xC273DB58, - (q31_t)0x703B44AC, (q31_t)0xC247CD5A, (q31_t)0x70231099, - (q31_t)0xC21BC8E0, (q31_t)0x700ACB3B, (q31_t)0xC1EFCDF2, - (q31_t)0x6FF27496, (q31_t)0xC1C3DC96, (q31_t)0x6FDA0CAD, - (q31_t)0xC197F4D3, (q31_t)0x6FC19385, (q31_t)0xC16C16B0, - (q31_t)0x6FA90920, (q31_t)0xC1404233, (q31_t)0x6F906D84, - (q31_t)0xC1147763, (q31_t)0x6F77C0B3, (q31_t)0xC0E8B648, - (q31_t)0x6F5F02B1, (q31_t)0xC0BCFEE7, (q31_t)0x6F463383, - (q31_t)0xC0915147, (q31_t)0x6F2D532C, (q31_t)0xC065AD70, - (q31_t)0x6F1461AF, (q31_t)0xC03A1368, (q31_t)0x6EFB5F12, - (q31_t)0xC00E8335, (q31_t)0x6EE24B57, (q31_t)0xBFE2FCDF, - (q31_t)0x6EC92682, (q31_t)0xBFB7806C, (q31_t)0x6EAFF098, - (q31_t)0xBF8C0DE2, (q31_t)0x6E96A99C, (q31_t)0xBF60A54A, - (q31_t)0x6E7D5193, (q31_t)0xBF3546A8, (q31_t)0x6E63E87F, - (q31_t)0xBF09F204, (q31_t)0x6E4A6E65, (q31_t)0xBEDEA765, - (q31_t)0x6E30E349, (q31_t)0xBEB366D1, (q31_t)0x6E17472F, - (q31_t)0xBE88304F, (q31_t)0x6DFD9A1B, (q31_t)0xBE5D03E5, - (q31_t)0x6DE3DC11, (q31_t)0xBE31E19B, (q31_t)0x6DCA0D14, - (q31_t)0xBE06C977, (q31_t)0x6DB02D29, (q31_t)0xBDDBBB7F, - (q31_t)0x6D963C54, (q31_t)0xBDB0B7BA, (q31_t)0x6D7C3A98, - (q31_t)0xBD85BE2F, (q31_t)0x6D6227FA, (q31_t)0xBD5ACEE5, - (q31_t)0x6D48047E, (q31_t)0xBD2FE9E1, (q31_t)0x6D2DD027, - (q31_t)0xBD050F2C, (q31_t)0x6D138AFA, (q31_t)0xBCDA3ECA, - (q31_t)0x6CF934FB, (q31_t)0xBCAF78C3, (q31_t)0x6CDECE2E, - (q31_t)0xBC84BD1E, (q31_t)0x6CC45697, (q31_t)0xBC5A0BE1, - (q31_t)0x6CA9CE3A, (q31_t)0xBC2F6513, (q31_t)0x6C8F351C, - (q31_t)0xBC04C8BA, (q31_t)0x6C748B3F, (q31_t)0xBBDA36DC, - (q31_t)0x6C59D0A9, (q31_t)0xBBAFAF81, (q31_t)0x6C3F055D, - (q31_t)0xBB8532AF, (q31_t)0x6C242960, (q31_t)0xBB5AC06C, - (q31_t)0x6C093CB6, (q31_t)0xBB3058C0, (q31_t)0x6BEE3F62, - (q31_t)0xBB05FBB0, (q31_t)0x6BD3316A, (q31_t)0xBADBA943, - (q31_t)0x6BB812D0, (q31_t)0xBAB1617F, (q31_t)0x6B9CE39B, - (q31_t)0xBA87246C, (q31_t)0x6B81A3CD, (q31_t)0xBA5CF210, - (q31_t)0x6B66536A, (q31_t)0xBA32CA70, (q31_t)0x6B4AF278, - (q31_t)0xBA08AD94, (q31_t)0x6B2F80FA, (q31_t)0xB9DE9B83, - (q31_t)0x6B13FEF5, (q31_t)0xB9B49442, (q31_t)0x6AF86C6C, - (q31_t)0xB98A97D8, (q31_t)0x6ADCC964, (q31_t)0xB960A64B, - (q31_t)0x6AC115E1, (q31_t)0xB936BFA3, (q31_t)0x6AA551E8, - (q31_t)0xB90CE3E6, (q31_t)0x6A897D7D, (q31_t)0xB8E31319, - (q31_t)0x6A6D98A4, (q31_t)0xB8B94D44, (q31_t)0x6A51A361, - (q31_t)0xB88F926C, (q31_t)0x6A359DB9, (q31_t)0xB865E299, - (q31_t)0x6A1987B0, (q31_t)0xB83C3DD1, (q31_t)0x69FD614A, - (q31_t)0xB812A419, (q31_t)0x69E12A8C, (q31_t)0xB7E9157A, - (q31_t)0x69C4E37A, (q31_t)0xB7BF91F8, (q31_t)0x69A88C18, - (q31_t)0xB796199B, (q31_t)0x698C246C, (q31_t)0xB76CAC68, - (q31_t)0x696FAC78, (q31_t)0xB7434A67, (q31_t)0x69532442, - (q31_t)0xB719F39D, (q31_t)0x69368BCE, (q31_t)0xB6F0A811, - (q31_t)0x6919E320, (q31_t)0xB6C767CA, (q31_t)0x68FD2A3D, - (q31_t)0xB69E32CD, (q31_t)0x68E06129, (q31_t)0xB6750921, - (q31_t)0x68C387E9, (q31_t)0xB64BEACC, (q31_t)0x68A69E81, - (q31_t)0xB622D7D5, (q31_t)0x6889A4F5, (q31_t)0xB5F9D042, - (q31_t)0x686C9B4B, (q31_t)0xB5D0D41A, (q31_t)0x684F8186, - (q31_t)0xB5A7E362, (q31_t)0x683257AA, (q31_t)0xB57EFE21, - (q31_t)0x68151DBE, (q31_t)0xB556245E, (q31_t)0x67F7D3C4, - (q31_t)0xB52D561E, (q31_t)0x67DA79C2, (q31_t)0xB5049368, - (q31_t)0x67BD0FBC, (q31_t)0xB4DBDC42, (q31_t)0x679F95B7, - (q31_t)0xB4B330B2, (q31_t)0x67820BB6, (q31_t)0xB48A90C0, - (q31_t)0x676471C0, (q31_t)0xB461FC70, (q31_t)0x6746C7D7, - (q31_t)0xB43973C9, (q31_t)0x67290E02, (q31_t)0xB410F6D2, - (q31_t)0x670B4443, (q31_t)0xB3E88591, (q31_t)0x66ED6AA1, - (q31_t)0xB3C0200C, (q31_t)0x66CF811F, (q31_t)0xB397C649, - (q31_t)0x66B187C3, (q31_t)0xB36F784E, (q31_t)0x66937E90, - (q31_t)0xB3473622, (q31_t)0x6675658C, (q31_t)0xB31EFFCB, - (q31_t)0x66573CBB, (q31_t)0xB2F6D54F, (q31_t)0x66390422, - (q31_t)0xB2CEB6B5, (q31_t)0x661ABBC5, (q31_t)0xB2A6A401, - (q31_t)0x65FC63A9, (q31_t)0xB27E9D3B, (q31_t)0x65DDFBD3, - (q31_t)0xB256A26A, (q31_t)0x65BF8447, (q31_t)0xB22EB392, - (q31_t)0x65A0FD0B, (q31_t)0xB206D0BA, (q31_t)0x65826622, - (q31_t)0xB1DEF9E8, (q31_t)0x6563BF92, (q31_t)0xB1B72F23, - (q31_t)0x6545095F, (q31_t)0xB18F7070, (q31_t)0x6526438E, - (q31_t)0xB167BDD6, (q31_t)0x65076E24, (q31_t)0xB140175B, - (q31_t)0x64E88926, (q31_t)0xB1187D05, (q31_t)0x64C99498, - (q31_t)0xB0F0EEDA, (q31_t)0x64AA907F, (q31_t)0xB0C96CDF, - (q31_t)0x648B7CDF, (q31_t)0xB0A1F71C, (q31_t)0x646C59BF, - (q31_t)0xB07A8D97, (q31_t)0x644D2722, (q31_t)0xB0533055, - (q31_t)0x642DE50D, (q31_t)0xB02BDF5C, (q31_t)0x640E9385, - (q31_t)0xB0049AB2, (q31_t)0x63EF328F, (q31_t)0xAFDD625F, - (q31_t)0x63CFC230, (q31_t)0xAFB63667, (q31_t)0x63B0426D, - (q31_t)0xAF8F16D0, (q31_t)0x6390B34A, (q31_t)0xAF6803A1, - (q31_t)0x637114CC, (q31_t)0xAF40FCE0, (q31_t)0x635166F8, - (q31_t)0xAF1A0293, (q31_t)0x6331A9D4, (q31_t)0xAEF314BF, - (q31_t)0x6311DD63, (q31_t)0xAECC336B, (q31_t)0x62F201AC, - (q31_t)0xAEA55E9D, (q31_t)0x62D216B2, (q31_t)0xAE7E965B, - (q31_t)0x62B21C7B, (q31_t)0xAE57DAAA, (q31_t)0x6292130C, - (q31_t)0xAE312B91, (q31_t)0x6271FA69, (q31_t)0xAE0A8916, - (q31_t)0x6251D297, (q31_t)0xADE3F33E, (q31_t)0x62319B9D, - (q31_t)0xADBD6A10, (q31_t)0x6211557D, (q31_t)0xAD96ED91, - (q31_t)0x61F1003E, (q31_t)0xAD707DC8, (q31_t)0x61D09BE5, - (q31_t)0xAD4A1ABA, (q31_t)0x61B02876, (q31_t)0xAD23C46D, - (q31_t)0x618FA5F6, (q31_t)0xACFD7AE8, (q31_t)0x616F146B, - (q31_t)0xACD73E30, (q31_t)0x614E73D9, (q31_t)0xACB10E4A, - (q31_t)0x612DC446, (q31_t)0xAC8AEB3E, (q31_t)0x610D05B7, - (q31_t)0xAC64D510, (q31_t)0x60EC3830, (q31_t)0xAC3ECBC7, - (q31_t)0x60CB5BB6, (q31_t)0xAC18CF68, (q31_t)0x60AA704F, - (q31_t)0xABF2DFFA, (q31_t)0x60897600, (q31_t)0xABCCFD82, - (q31_t)0x60686CCE, (q31_t)0xABA72806, (q31_t)0x604754BE, - (q31_t)0xAB815F8C, (q31_t)0x60262DD5, (q31_t)0xAB5BA41A, - (q31_t)0x6004F818, (q31_t)0xAB35F5B5, (q31_t)0x5FE3B38D, - (q31_t)0xAB105464, (q31_t)0x5FC26038, (q31_t)0xAAEAC02B, - (q31_t)0x5FA0FE1E, (q31_t)0xAAC53912, (q31_t)0x5F7F8D46, - (q31_t)0xAA9FBF1D, (q31_t)0x5F5E0DB3, (q31_t)0xAA7A5253, - (q31_t)0x5F3C7F6B, (q31_t)0xAA54F2B9, (q31_t)0x5F1AE273, - (q31_t)0xAA2FA055, (q31_t)0x5EF936D1, (q31_t)0xAA0A5B2D, - (q31_t)0x5ED77C89, (q31_t)0xA9E52347, (q31_t)0x5EB5B3A1, - (q31_t)0xA9BFF8A8, (q31_t)0x5E93DC1F, (q31_t)0xA99ADB56, - (q31_t)0x5E71F606, (q31_t)0xA975CB56, (q31_t)0x5E50015D, - (q31_t)0xA950C8AF, (q31_t)0x5E2DFE28, (q31_t)0xA92BD366, - (q31_t)0x5E0BEC6E, (q31_t)0xA906EB81, (q31_t)0x5DE9CC32, - (q31_t)0xA8E21106, (q31_t)0x5DC79D7C, (q31_t)0xA8BD43FA, - (q31_t)0x5DA5604E, (q31_t)0xA8988463, (q31_t)0x5D8314B0, - (q31_t)0xA873D246, (q31_t)0x5D60BAA6, (q31_t)0xA84F2DA9, - (q31_t)0x5D3E5236, (q31_t)0xA82A9693, (q31_t)0x5D1BDB65, - (q31_t)0xA8060D08, (q31_t)0x5CF95638, (q31_t)0xA7E1910E, - (q31_t)0x5CD6C2B4, (q31_t)0xA7BD22AB, (q31_t)0x5CB420DF, - (q31_t)0xA798C1E4, (q31_t)0x5C9170BF, (q31_t)0xA7746EC0, - (q31_t)0x5C6EB258, (q31_t)0xA7502943, (q31_t)0x5C4BE5B0, - (q31_t)0xA72BF173, (q31_t)0x5C290ACC, (q31_t)0xA707C756, - (q31_t)0x5C0621B2, (q31_t)0xA6E3AAF2, (q31_t)0x5BE32A67, - (q31_t)0xA6BF9C4B, (q31_t)0x5BC024F0, (q31_t)0xA69B9B68, - (q31_t)0x5B9D1153, (q31_t)0xA677A84E, (q31_t)0x5B79EF96, - (q31_t)0xA653C302, (q31_t)0x5B56BFBD, (q31_t)0xA62FEB8B, - (q31_t)0x5B3381CE, (q31_t)0xA60C21ED, (q31_t)0x5B1035CF, - (q31_t)0xA5E8662F, (q31_t)0x5AECDBC4, (q31_t)0xA5C4B855, - (q31_t)0x5AC973B4, (q31_t)0xA5A11865, (q31_t)0x5AA5FDA4, - (q31_t)0xA57D8666, (q31_t)0x5A82799A, (q31_t)0xA55A025B, - (q31_t)0x5A5EE79A, (q31_t)0xA5368C4B, (q31_t)0x5A3B47AA, - (q31_t)0xA513243B, (q31_t)0x5A1799D0, (q31_t)0xA4EFCA31, - (q31_t)0x59F3DE12, (q31_t)0xA4CC7E31, (q31_t)0x59D01474, - (q31_t)0xA4A94042, (q31_t)0x59AC3CFD, (q31_t)0xA4861069, - (q31_t)0x598857B1, (q31_t)0xA462EEAC, (q31_t)0x59646497, - (q31_t)0xA43FDB0F, (q31_t)0x594063B4, (q31_t)0xA41CD598, - (q31_t)0x591C550E, (q31_t)0xA3F9DE4D, (q31_t)0x58F838A9, - (q31_t)0xA3D6F533, (q31_t)0x58D40E8C, (q31_t)0xA3B41A4F, - (q31_t)0x58AFD6BC, (q31_t)0xA3914DA7, (q31_t)0x588B913F, - (q31_t)0xA36E8F40, (q31_t)0x58673E1B, (q31_t)0xA34BDF20, - (q31_t)0x5842DD54, (q31_t)0xA3293D4B, (q31_t)0x581E6EF1, - (q31_t)0xA306A9C7, (q31_t)0x57F9F2F7, (q31_t)0xA2E4249A, - (q31_t)0x57D5696C, (q31_t)0xA2C1ADC9, (q31_t)0x57B0D256, - (q31_t)0xA29F4559, (q31_t)0x578C2DB9, (q31_t)0xA27CEB4F, - (q31_t)0x57677B9D, (q31_t)0xA25A9FB1, (q31_t)0x5742BC05, - (q31_t)0xA2386283, (q31_t)0x571DEEF9, (q31_t)0xA21633CD, - (q31_t)0x56F9147E, (q31_t)0xA1F41391, (q31_t)0x56D42C99, - (q31_t)0xA1D201D7, (q31_t)0x56AF3750, (q31_t)0xA1AFFEA2, - (q31_t)0x568A34A9, (q31_t)0xA18E09F9, (q31_t)0x566524AA, - (q31_t)0xA16C23E1, (q31_t)0x56400757, (q31_t)0xA14A4C5E, - (q31_t)0x561ADCB8, (q31_t)0xA1288376, (q31_t)0x55F5A4D2, - (q31_t)0xA106C92E, (q31_t)0x55D05FAA, (q31_t)0xA0E51D8C, - (q31_t)0x55AB0D46, (q31_t)0xA0C38094, (q31_t)0x5585ADAC, - (q31_t)0xA0A1F24C, (q31_t)0x556040E2, (q31_t)0xA08072BA, - (q31_t)0x553AC6ED, (q31_t)0xA05F01E1, (q31_t)0x55153FD4, - (q31_t)0xA03D9FC7, (q31_t)0x54EFAB9C, (q31_t)0xA01C4C72, - (q31_t)0x54CA0A4A, (q31_t)0x9FFB07E7, (q31_t)0x54A45BE5, - (q31_t)0x9FD9D22A, (q31_t)0x547EA073, (q31_t)0x9FB8AB41, - (q31_t)0x5458D7F9, (q31_t)0x9F979331, (q31_t)0x5433027D, - (q31_t)0x9F7689FF, (q31_t)0x540D2005, (q31_t)0x9F558FB0, - (q31_t)0x53E73097, (q31_t)0x9F34A449, (q31_t)0x53C13438, - (q31_t)0x9F13C7D0, (q31_t)0x539B2AEF, (q31_t)0x9EF2FA48, - (q31_t)0x537514C1, (q31_t)0x9ED23BB9, (q31_t)0x534EF1B5, - (q31_t)0x9EB18C26, (q31_t)0x5328C1D0, (q31_t)0x9E90EB94, - (q31_t)0x53028517, (q31_t)0x9E705A09, (q31_t)0x52DC3B92, - (q31_t)0x9E4FD789, (q31_t)0x52B5E545, (q31_t)0x9E2F641A, - (q31_t)0x528F8237, (q31_t)0x9E0EFFC1, (q31_t)0x5269126E, - (q31_t)0x9DEEAA82, (q31_t)0x524295EF, (q31_t)0x9DCE6462, - (q31_t)0x521C0CC1, (q31_t)0x9DAE2D68, (q31_t)0x51F576E9, - (q31_t)0x9D8E0596, (q31_t)0x51CED46E, (q31_t)0x9D6DECF4, - (q31_t)0x51A82555, (q31_t)0x9D4DE384, (q31_t)0x518169A4, - (q31_t)0x9D2DE94D, (q31_t)0x515AA162, (q31_t)0x9D0DFE53, - (q31_t)0x5133CC94, (q31_t)0x9CEE229C, (q31_t)0x510CEB40, - (q31_t)0x9CCE562B, (q31_t)0x50E5FD6C, (q31_t)0x9CAE9907, - (q31_t)0x50BF031F, (q31_t)0x9C8EEB33, (q31_t)0x5097FC5E, - (q31_t)0x9C6F4CB5, (q31_t)0x5070E92F, (q31_t)0x9C4FBD92, - (q31_t)0x5049C999, (q31_t)0x9C303DCF, (q31_t)0x50229DA0, - (q31_t)0x9C10CD70, (q31_t)0x4FFB654D, (q31_t)0x9BF16C7A, - (q31_t)0x4FD420A3, (q31_t)0x9BD21AF2, (q31_t)0x4FACCFAB, - (q31_t)0x9BB2D8DD, (q31_t)0x4F857268, (q31_t)0x9B93A640, - (q31_t)0x4F5E08E3, (q31_t)0x9B748320, (q31_t)0x4F369320, - (q31_t)0x9B556F80, (q31_t)0x4F0F1126, (q31_t)0x9B366B67, - (q31_t)0x4EE782FA, (q31_t)0x9B1776D9, (q31_t)0x4EBFE8A4, - (q31_t)0x9AF891DB, (q31_t)0x4E984229, (q31_t)0x9AD9BC71, - (q31_t)0x4E708F8F, (q31_t)0x9ABAF6A0, (q31_t)0x4E48D0DC, - (q31_t)0x9A9C406D, (q31_t)0x4E210617, (q31_t)0x9A7D99DD, - (q31_t)0x4DF92F45, (q31_t)0x9A5F02F5, (q31_t)0x4DD14C6E, - (q31_t)0x9A407BB8, (q31_t)0x4DA95D96, (q31_t)0x9A22042C, - (q31_t)0x4D8162C4, (q31_t)0x9A039C56, (q31_t)0x4D595BFE, - (q31_t)0x99E5443A, (q31_t)0x4D31494B, (q31_t)0x99C6FBDE, - (q31_t)0x4D092AB0, (q31_t)0x99A8C344, (q31_t)0x4CE10034, - (q31_t)0x998A9A73, (q31_t)0x4CB8C9DD, (q31_t)0x996C816F, - (q31_t)0x4C9087B1, (q31_t)0x994E783C, (q31_t)0x4C6839B6, - (q31_t)0x99307EE0, (q31_t)0x4C3FDFF3, (q31_t)0x9912955E, - (q31_t)0x4C177A6E, (q31_t)0x98F4BBBC, (q31_t)0x4BEF092D, - (q31_t)0x98D6F1FE, (q31_t)0x4BC68C36, (q31_t)0x98B93828, - (q31_t)0x4B9E038F, (q31_t)0x989B8E3F, (q31_t)0x4B756F3F, - (q31_t)0x987DF449, (q31_t)0x4B4CCF4D, (q31_t)0x98606A48, - (q31_t)0x4B2423BD, (q31_t)0x9842F043, (q31_t)0x4AFB6C97, - (q31_t)0x9825863D, (q31_t)0x4AD2A9E1, (q31_t)0x98082C3B, - (q31_t)0x4AA9DBA1, (q31_t)0x97EAE241, (q31_t)0x4A8101DE, - (q31_t)0x97CDA855, (q31_t)0x4A581C9D, (q31_t)0x97B07E7A, - (q31_t)0x4A2F2BE5, (q31_t)0x979364B5, (q31_t)0x4A062FBD, - (q31_t)0x97765B0A, (q31_t)0x49DD282A, (q31_t)0x9759617E, - (q31_t)0x49B41533, (q31_t)0x973C7816, (q31_t)0x498AF6DE, - (q31_t)0x971F9ED6, (q31_t)0x4961CD32, (q31_t)0x9702D5C2, - (q31_t)0x49389836, (q31_t)0x96E61CDF, (q31_t)0x490F57EE, - (q31_t)0x96C97431, (q31_t)0x48E60C62, (q31_t)0x96ACDBBD, - (q31_t)0x48BCB598, (q31_t)0x96905387, (q31_t)0x48935397, - (q31_t)0x9673DB94, (q31_t)0x4869E664, (q31_t)0x965773E7, - (q31_t)0x48406E07, (q31_t)0x963B1C85, (q31_t)0x4816EA85, - (q31_t)0x961ED573, (q31_t)0x47ED5BE6, (q31_t)0x96029EB5, - (q31_t)0x47C3C22E, (q31_t)0x95E6784F, (q31_t)0x479A1D66, - (q31_t)0x95CA6246, (q31_t)0x47706D93, (q31_t)0x95AE5C9E, - (q31_t)0x4746B2BC, (q31_t)0x9592675B, (q31_t)0x471CECE6, - (q31_t)0x95768282, (q31_t)0x46F31C1A, (q31_t)0x955AAE17, - (q31_t)0x46C9405C, (q31_t)0x953EEA1E, (q31_t)0x469F59B4, - (q31_t)0x9523369B, (q31_t)0x46756827, (q31_t)0x95079393, - (q31_t)0x464B6BBD, (q31_t)0x94EC010B, (q31_t)0x4621647C, - (q31_t)0x94D07F05, (q31_t)0x45F7526B, (q31_t)0x94B50D87, - (q31_t)0x45CD358F, (q31_t)0x9499AC95, (q31_t)0x45A30DF0, - (q31_t)0x947E5C32, (q31_t)0x4578DB93, (q31_t)0x94631C64, - (q31_t)0x454E9E80, (q31_t)0x9447ED2F, (q31_t)0x452456BC, - (q31_t)0x942CCE95, (q31_t)0x44FA044F, (q31_t)0x9411C09D, - (q31_t)0x44CFA73F, (q31_t)0x93F6C34A, (q31_t)0x44A53F93, - (q31_t)0x93DBD69F, (q31_t)0x447ACD50, (q31_t)0x93C0FAA2, - (q31_t)0x4450507E, (q31_t)0x93A62F56, (q31_t)0x4425C923, - (q31_t)0x938B74C0, (q31_t)0x43FB3745, (q31_t)0x9370CAE4, - (q31_t)0x43D09AEC, (q31_t)0x935631C5, (q31_t)0x43A5F41E, - (q31_t)0x933BA968, (q31_t)0x437B42E1, (q31_t)0x932131D1, - (q31_t)0x4350873C, (q31_t)0x9306CB04, (q31_t)0x4325C135, - (q31_t)0x92EC7505, (q31_t)0x42FAF0D4, (q31_t)0x92D22FD8, - (q31_t)0x42D0161E, (q31_t)0x92B7FB82, (q31_t)0x42A5311A, - (q31_t)0x929DD805, (q31_t)0x427A41D0, (q31_t)0x9283C567, - (q31_t)0x424F4845, (q31_t)0x9269C3AC, (q31_t)0x42244480, - (q31_t)0x924FD2D6, (q31_t)0x41F93688, (q31_t)0x9235F2EB, - (q31_t)0x41CE1E64, (q31_t)0x921C23EE, (q31_t)0x41A2FC1A, - (q31_t)0x920265E4, (q31_t)0x4177CFB0, (q31_t)0x91E8B8D0, - (q31_t)0x414C992E, (q31_t)0x91CF1CB6, (q31_t)0x4121589A, - (q31_t)0x91B5919A, (q31_t)0x40F60DFB, (q31_t)0x919C1780, - (q31_t)0x40CAB957, (q31_t)0x9182AE6C, (q31_t)0x409F5AB6, - (q31_t)0x91695663, (q31_t)0x4073F21D, (q31_t)0x91500F67, - (q31_t)0x40487F93, (q31_t)0x9136D97D, (q31_t)0x401D0320, - (q31_t)0x911DB4A8, (q31_t)0x3FF17CCA, (q31_t)0x9104A0ED, - (q31_t)0x3FC5EC97, (q31_t)0x90EB9E50, (q31_t)0x3F9A528F, - (q31_t)0x90D2ACD3, (q31_t)0x3F6EAEB8, (q31_t)0x90B9CC7C, - (q31_t)0x3F430118, (q31_t)0x90A0FD4E, (q31_t)0x3F1749B7, - (q31_t)0x90883F4C, (q31_t)0x3EEB889C, (q31_t)0x906F927B, - (q31_t)0x3EBFBDCC, (q31_t)0x9056F6DF, (q31_t)0x3E93E94F, - (q31_t)0x903E6C7A, (q31_t)0x3E680B2C, (q31_t)0x9025F352, - (q31_t)0x3E3C2369, (q31_t)0x900D8B69, (q31_t)0x3E10320D, - (q31_t)0x8FF534C4, (q31_t)0x3DE4371F, (q31_t)0x8FDCEF66, - (q31_t)0x3DB832A5, (q31_t)0x8FC4BB53, (q31_t)0x3D8C24A7, - (q31_t)0x8FAC988E, (q31_t)0x3D600D2B, (q31_t)0x8F94871D, - (q31_t)0x3D33EC39, (q31_t)0x8F7C8701, (q31_t)0x3D07C1D5, - (q31_t)0x8F64983F, (q31_t)0x3CDB8E09, (q31_t)0x8F4CBADB, - (q31_t)0x3CAF50DA, (q31_t)0x8F34EED8, (q31_t)0x3C830A4F, - (q31_t)0x8F1D343A, (q31_t)0x3C56BA70, (q31_t)0x8F058B04, - (q31_t)0x3C2A6142, (q31_t)0x8EEDF33B, (q31_t)0x3BFDFECD, - (q31_t)0x8ED66CE1, (q31_t)0x3BD19317, (q31_t)0x8EBEF7FB, - (q31_t)0x3BA51E29, (q31_t)0x8EA7948C, (q31_t)0x3B78A007, - (q31_t)0x8E904298, (q31_t)0x3B4C18BA, (q31_t)0x8E790222, - (q31_t)0x3B1F8847, (q31_t)0x8E61D32D, (q31_t)0x3AF2EEB7, - (q31_t)0x8E4AB5BF, (q31_t)0x3AC64C0F, (q31_t)0x8E33A9D9, - (q31_t)0x3A99A057, (q31_t)0x8E1CAF80, (q31_t)0x3A6CEB95, - (q31_t)0x8E05C6B7, (q31_t)0x3A402DD1, (q31_t)0x8DEEEF82, - (q31_t)0x3A136712, (q31_t)0x8DD829E4, (q31_t)0x39E6975D, - (q31_t)0x8DC175E0, (q31_t)0x39B9BEBB, (q31_t)0x8DAAD37B, - (q31_t)0x398CDD32, (q31_t)0x8D9442B7, (q31_t)0x395FF2C9, - (q31_t)0x8D7DC399, (q31_t)0x3932FF87, (q31_t)0x8D675623, - (q31_t)0x39060372, (q31_t)0x8D50FA59, (q31_t)0x38D8FE93, - (q31_t)0x8D3AB03F, (q31_t)0x38ABF0EF, (q31_t)0x8D2477D8, - (q31_t)0x387EDA8E, (q31_t)0x8D0E5127, (q31_t)0x3851BB76, - (q31_t)0x8CF83C30, (q31_t)0x382493B0, (q31_t)0x8CE238F6, - (q31_t)0x37F76340, (q31_t)0x8CCC477D, (q31_t)0x37CA2A30, - (q31_t)0x8CB667C7, (q31_t)0x379CE884, (q31_t)0x8CA099D9, - (q31_t)0x376F9E46, (q31_t)0x8C8ADDB6, (q31_t)0x37424B7A, - (q31_t)0x8C753361, (q31_t)0x3714F02A, (q31_t)0x8C5F9ADD, - (q31_t)0x36E78C5A, (q31_t)0x8C4A142F, (q31_t)0x36BA2013, - (q31_t)0x8C349F58, (q31_t)0x368CAB5C, (q31_t)0x8C1F3C5C, - (q31_t)0x365F2E3B, (q31_t)0x8C09EB40, (q31_t)0x3631A8B7, - (q31_t)0x8BF4AC05, (q31_t)0x36041AD9, (q31_t)0x8BDF7EAF, - (q31_t)0x35D684A5, (q31_t)0x8BCA6342, (q31_t)0x35A8E624, - (q31_t)0x8BB559C1, (q31_t)0x357B3F5D, (q31_t)0x8BA0622F, - (q31_t)0x354D9056, (q31_t)0x8B8B7C8F, (q31_t)0x351FD917, - (q31_t)0x8B76A8E4, (q31_t)0x34F219A7, (q31_t)0x8B61E732, - (q31_t)0x34C4520D, (q31_t)0x8B4D377C, (q31_t)0x3496824F, - (q31_t)0x8B3899C5, (q31_t)0x3468AA76, (q31_t)0x8B240E10, - (q31_t)0x343ACA87, (q31_t)0x8B0F9461, (q31_t)0x340CE28A, - (q31_t)0x8AFB2CBA, (q31_t)0x33DEF287, (q31_t)0x8AE6D71F, - (q31_t)0x33B0FA84, (q31_t)0x8AD29393, (q31_t)0x3382FA88, - (q31_t)0x8ABE6219, (q31_t)0x3354F29A, (q31_t)0x8AAA42B4, - (q31_t)0x3326E2C2, (q31_t)0x8A963567, (q31_t)0x32F8CB07, - (q31_t)0x8A823A35, (q31_t)0x32CAAB6F, (q31_t)0x8A6E5122, - (q31_t)0x329C8402, (q31_t)0x8A5A7A30, (q31_t)0x326E54C7, - (q31_t)0x8A46B563, (q31_t)0x32401DC5, (q31_t)0x8A3302BD, - (q31_t)0x3211DF03, (q31_t)0x8A1F6242, (q31_t)0x31E39889, - (q31_t)0x8A0BD3F5, (q31_t)0x31B54A5D, (q31_t)0x89F857D8, - (q31_t)0x3186F487, (q31_t)0x89E4EDEE, (q31_t)0x3158970D, - (q31_t)0x89D1963C, (q31_t)0x312A31F8, (q31_t)0x89BE50C3, - (q31_t)0x30FBC54D, (q31_t)0x89AB1D86, (q31_t)0x30CD5114, - (q31_t)0x8997FC89, (q31_t)0x309ED555, (q31_t)0x8984EDCF, - (q31_t)0x30705217, (q31_t)0x8971F15A, (q31_t)0x3041C760, - (q31_t)0x895F072D, (q31_t)0x30133538, (q31_t)0x894C2F4C, - (q31_t)0x2FE49BA6, (q31_t)0x893969B9, (q31_t)0x2FB5FAB2, - (q31_t)0x8926B677, (q31_t)0x2F875262, (q31_t)0x89141589, - (q31_t)0x2F58A2BD, (q31_t)0x890186F1, (q31_t)0x2F29EBCC, - (q31_t)0x88EF0AB4, (q31_t)0x2EFB2D94, (q31_t)0x88DCA0D3, - (q31_t)0x2ECC681E, (q31_t)0x88CA4951, (q31_t)0x2E9D9B70, - (q31_t)0x88B80431, (q31_t)0x2E6EC792, (q31_t)0x88A5D177, - (q31_t)0x2E3FEC8B, (q31_t)0x8893B124, (q31_t)0x2E110A62, - (q31_t)0x8881A33C, (q31_t)0x2DE2211E, (q31_t)0x886FA7C2, - (q31_t)0x2DB330C7, (q31_t)0x885DBEB7, (q31_t)0x2D843963, - (q31_t)0x884BE820, (q31_t)0x2D553AFB, (q31_t)0x883A23FE, - (q31_t)0x2D263595, (q31_t)0x88287255, (q31_t)0x2CF72939, - (q31_t)0x8816D327, (q31_t)0x2CC815ED, (q31_t)0x88054677, - (q31_t)0x2C98FBBA, (q31_t)0x87F3CC47, (q31_t)0x2C69DAA6, - (q31_t)0x87E2649B, (q31_t)0x2C3AB2B9, (q31_t)0x87D10F75, - (q31_t)0x2C0B83F9, (q31_t)0x87BFCCD7, (q31_t)0x2BDC4E6F, - (q31_t)0x87AE9CC5, (q31_t)0x2BAD1221, (q31_t)0x879D7F40, - (q31_t)0x2B7DCF17, (q31_t)0x878C744C, (q31_t)0x2B4E8558, - (q31_t)0x877B7BEC, (q31_t)0x2B1F34EB, (q31_t)0x876A9621, - (q31_t)0x2AEFDDD8, (q31_t)0x8759C2EF, (q31_t)0x2AC08025, - (q31_t)0x87490257, (q31_t)0x2A911BDB, (q31_t)0x8738545E, - (q31_t)0x2A61B101, (q31_t)0x8727B904, (q31_t)0x2A323F9D, - (q31_t)0x8717304E, (q31_t)0x2A02C7B8, (q31_t)0x8706BA3C, - (q31_t)0x29D34958, (q31_t)0x86F656D3, (q31_t)0x29A3C484, - (q31_t)0x86E60614, (q31_t)0x29743945, (q31_t)0x86D5C802, - (q31_t)0x2944A7A2, (q31_t)0x86C59C9F, (q31_t)0x29150FA1, - (q31_t)0x86B583EE, (q31_t)0x28E5714A, (q31_t)0x86A57DF1, - (q31_t)0x28B5CCA5, (q31_t)0x86958AAB, (q31_t)0x288621B9, - (q31_t)0x8685AA1F, (q31_t)0x2856708C, (q31_t)0x8675DC4E, - (q31_t)0x2826B928, (q31_t)0x8666213C, (q31_t)0x27F6FB92, - (q31_t)0x865678EA, (q31_t)0x27C737D2, (q31_t)0x8646E35B, - (q31_t)0x27976DF1, (q31_t)0x86376092, (q31_t)0x27679DF4, - (q31_t)0x8627F090, (q31_t)0x2737C7E3, (q31_t)0x86189359, - (q31_t)0x2707EBC6, (q31_t)0x860948EE, (q31_t)0x26D809A5, - (q31_t)0x85FA1152, (q31_t)0x26A82185, (q31_t)0x85EAEC88, - (q31_t)0x26783370, (q31_t)0x85DBDA91, (q31_t)0x26483F6C, - (q31_t)0x85CCDB70, (q31_t)0x26184581, (q31_t)0x85BDEF27, - (q31_t)0x25E845B5, (q31_t)0x85AF15B9, (q31_t)0x25B84012, - (q31_t)0x85A04F28, (q31_t)0x2588349D, (q31_t)0x85919B75, - (q31_t)0x2558235E, (q31_t)0x8582FAA4, (q31_t)0x25280C5D, - (q31_t)0x85746CB7, (q31_t)0x24F7EFA1, (q31_t)0x8565F1B0, - (q31_t)0x24C7CD32, (q31_t)0x85578991, (q31_t)0x2497A517, - (q31_t)0x8549345C, (q31_t)0x24677757, (q31_t)0x853AF214, - (q31_t)0x243743FA, (q31_t)0x852CC2BA, (q31_t)0x24070B07, - (q31_t)0x851EA652, (q31_t)0x23D6CC86, (q31_t)0x85109CDC, - (q31_t)0x23A6887E, (q31_t)0x8502A65C, (q31_t)0x23763EF7, - (q31_t)0x84F4C2D3, (q31_t)0x2345EFF7, (q31_t)0x84E6F244, - (q31_t)0x23159B87, (q31_t)0x84D934B0, (q31_t)0x22E541AE, - (q31_t)0x84CB8A1B, (q31_t)0x22B4E274, (q31_t)0x84BDF285, - (q31_t)0x22847DDF, (q31_t)0x84B06DF1, (q31_t)0x225413F8, - (q31_t)0x84A2FC62, (q31_t)0x2223A4C5, (q31_t)0x84959DD9, - (q31_t)0x21F3304E, (q31_t)0x84885257, (q31_t)0x21C2B69C, - (q31_t)0x847B19E1, (q31_t)0x219237B4, (q31_t)0x846DF476, - (q31_t)0x2161B39F, (q31_t)0x8460E21A, (q31_t)0x21312A65, - (q31_t)0x8453E2CE, (q31_t)0x21009C0B, (q31_t)0x8446F695, - (q31_t)0x20D0089B, (q31_t)0x843A1D70, (q31_t)0x209F701C, - (q31_t)0x842D5761, (q31_t)0x206ED295, (q31_t)0x8420A46B, - (q31_t)0x203E300D, (q31_t)0x8414048F, (q31_t)0x200D888C, - (q31_t)0x840777CF, (q31_t)0x1FDCDC1A, (q31_t)0x83FAFE2E, - (q31_t)0x1FAC2ABF, (q31_t)0x83EE97AC, (q31_t)0x1F7B7480, - (q31_t)0x83E2444D, (q31_t)0x1F4AB967, (q31_t)0x83D60411, - (q31_t)0x1F19F97B, (q31_t)0x83C9D6FB, (q31_t)0x1EE934C2, - (q31_t)0x83BDBD0D, (q31_t)0x1EB86B46, (q31_t)0x83B1B649, - (q31_t)0x1E879D0C, (q31_t)0x83A5C2B0, (q31_t)0x1E56CA1E, - (q31_t)0x8399E244, (q31_t)0x1E25F281, (q31_t)0x838E1507, - (q31_t)0x1DF5163F, (q31_t)0x83825AFB, (q31_t)0x1DC4355D, - (q31_t)0x8376B422, (q31_t)0x1D934FE5, (q31_t)0x836B207D, - (q31_t)0x1D6265DD, (q31_t)0x835FA00E, (q31_t)0x1D31774D, - (q31_t)0x835432D8, (q31_t)0x1D00843C, (q31_t)0x8348D8DB, - (q31_t)0x1CCF8CB3, (q31_t)0x833D921A, (q31_t)0x1C9E90B8, - (q31_t)0x83325E97, (q31_t)0x1C6D9053, (q31_t)0x83273E52, - (q31_t)0x1C3C8B8C, (q31_t)0x831C314E, (q31_t)0x1C0B826A, - (q31_t)0x8311378C, (q31_t)0x1BDA74F5, (q31_t)0x8306510F, - (q31_t)0x1BA96334, (q31_t)0x82FB7DD8, (q31_t)0x1B784D30, - (q31_t)0x82F0BDE8, (q31_t)0x1B4732EF, (q31_t)0x82E61141, - (q31_t)0x1B161479, (q31_t)0x82DB77E5, (q31_t)0x1AE4F1D6, - (q31_t)0x82D0F1D5, (q31_t)0x1AB3CB0C, (q31_t)0x82C67F13, - (q31_t)0x1A82A025, (q31_t)0x82BC1FA1, (q31_t)0x1A517127, - (q31_t)0x82B1D381, (q31_t)0x1A203E1B, (q31_t)0x82A79AB3, - (q31_t)0x19EF0706, (q31_t)0x829D753A, (q31_t)0x19BDCBF2, - (q31_t)0x82936316, (q31_t)0x198C8CE6, (q31_t)0x8289644A, - (q31_t)0x195B49E9, (q31_t)0x827F78D8, (q31_t)0x192A0303, - (q31_t)0x8275A0C0, (q31_t)0x18F8B83C, (q31_t)0x826BDC04, - (q31_t)0x18C7699B, (q31_t)0x82622AA5, (q31_t)0x18961727, - (q31_t)0x82588CA6, (q31_t)0x1864C0E9, (q31_t)0x824F0208, - (q31_t)0x183366E8, (q31_t)0x82458ACB, (q31_t)0x1802092C, - (q31_t)0x823C26F2, (q31_t)0x17D0A7BB, (q31_t)0x8232D67E, - (q31_t)0x179F429F, (q31_t)0x82299971, (q31_t)0x176DD9DE, - (q31_t)0x82206FCB, (q31_t)0x173C6D80, (q31_t)0x8217598F, - (q31_t)0x170AFD8D, (q31_t)0x820E56BE, (q31_t)0x16D98A0C, - (q31_t)0x82056758, (q31_t)0x16A81305, (q31_t)0x81FC8B60, - (q31_t)0x1676987F, (q31_t)0x81F3C2D7, (q31_t)0x16451A83, - (q31_t)0x81EB0DBD, (q31_t)0x16139917, (q31_t)0x81E26C16, - (q31_t)0x15E21444, (q31_t)0x81D9DDE1, (q31_t)0x15B08C11, - (q31_t)0x81D16320, (q31_t)0x157F0086, (q31_t)0x81C8FBD5, - (q31_t)0x154D71AA, (q31_t)0x81C0A801, (q31_t)0x151BDF85, - (q31_t)0x81B867A4, (q31_t)0x14EA4A1F, (q31_t)0x81B03AC1, - (q31_t)0x14B8B17F, (q31_t)0x81A82159, (q31_t)0x148715AD, - (q31_t)0x81A01B6C, (q31_t)0x145576B1, (q31_t)0x819828FD, - (q31_t)0x1423D492, (q31_t)0x81904A0C, (q31_t)0x13F22F57, - (q31_t)0x81887E9A, (q31_t)0x13C0870A, (q31_t)0x8180C6A9, - (q31_t)0x138EDBB0, (q31_t)0x8179223A, (q31_t)0x135D2D53, - (q31_t)0x8171914E, (q31_t)0x132B7BF9, (q31_t)0x816A13E6, - (q31_t)0x12F9C7AA, (q31_t)0x8162AA03, (q31_t)0x12C8106E, - (q31_t)0x815B53A8, (q31_t)0x1296564D, (q31_t)0x815410D3, - (q31_t)0x1264994E, (q31_t)0x814CE188, (q31_t)0x1232D978, - (q31_t)0x8145C5C6, (q31_t)0x120116D4, (q31_t)0x813EBD90, - (q31_t)0x11CF516A, (q31_t)0x8137C8E6, (q31_t)0x119D8940, - (q31_t)0x8130E7C8, (q31_t)0x116BBE5F, (q31_t)0x812A1A39, - (q31_t)0x1139F0CE, (q31_t)0x81236039, (q31_t)0x11082096, - (q31_t)0x811CB9CA, (q31_t)0x10D64DBC, (q31_t)0x811626EC, - (q31_t)0x10A4784A, (q31_t)0x810FA7A0, (q31_t)0x1072A047, - (q31_t)0x81093BE8, (q31_t)0x1040C5BB, (q31_t)0x8102E3C3, - (q31_t)0x100EE8AD, (q31_t)0x80FC9F35, (q31_t)0x0FDD0925, - (q31_t)0x80F66E3C, (q31_t)0x0FAB272B, (q31_t)0x80F050DB, - (q31_t)0x0F7942C6, (q31_t)0x80EA4712, (q31_t)0x0F475BFE, - (q31_t)0x80E450E2, (q31_t)0x0F1572DC, (q31_t)0x80DE6E4C, - (q31_t)0x0EE38765, (q31_t)0x80D89F51, (q31_t)0x0EB199A3, - (q31_t)0x80D2E3F1, (q31_t)0x0E7FA99D, (q31_t)0x80CD3C2F, - (q31_t)0x0E4DB75B, (q31_t)0x80C7A80A, (q31_t)0x0E1BC2E3, - (q31_t)0x80C22783, (q31_t)0x0DE9CC3F, (q31_t)0x80BCBA9C, - (q31_t)0x0DB7D376, (q31_t)0x80B76155, (q31_t)0x0D85D88F, - (q31_t)0x80B21BAF, (q31_t)0x0D53DB92, (q31_t)0x80ACE9AB, - (q31_t)0x0D21DC87, (q31_t)0x80A7CB49, (q31_t)0x0CEFDB75, - (q31_t)0x80A2C08B, (q31_t)0x0CBDD865, (q31_t)0x809DC970, - (q31_t)0x0C8BD35E, (q31_t)0x8098E5FB, (q31_t)0x0C59CC67, - (q31_t)0x8094162B, (q31_t)0x0C27C389, (q31_t)0x808F5A02, - (q31_t)0x0BF5B8CB, (q31_t)0x808AB180, (q31_t)0x0BC3AC35, - (q31_t)0x80861CA5, (q31_t)0x0B919DCE, (q31_t)0x80819B74, - (q31_t)0x0B5F8D9F, (q31_t)0x807D2DEB, (q31_t)0x0B2D7BAE, - (q31_t)0x8078D40D, (q31_t)0x0AFB6805, (q31_t)0x80748DD9, - (q31_t)0x0AC952AA, (q31_t)0x80705B50, (q31_t)0x0A973BA5, - (q31_t)0x806C3C73, (q31_t)0x0A6522FE, (q31_t)0x80683143, - (q31_t)0x0A3308BC, (q31_t)0x806439C0, (q31_t)0x0A00ECE8, - (q31_t)0x806055EA, (q31_t)0x09CECF89, (q31_t)0x805C85C3, - (q31_t)0x099CB0A7, (q31_t)0x8058C94C, (q31_t)0x096A9049, - (q31_t)0x80552083, (q31_t)0x09386E77, (q31_t)0x80518B6B, - (q31_t)0x09064B3A, (q31_t)0x804E0A03, (q31_t)0x08D42698, - (q31_t)0x804A9C4D, (q31_t)0x08A2009A, (q31_t)0x80474248, - (q31_t)0x086FD947, (q31_t)0x8043FBF6, (q31_t)0x083DB0A7, - (q31_t)0x8040C956, (q31_t)0x080B86C1, (q31_t)0x803DAA69, - (q31_t)0x07D95B9E, (q31_t)0x803A9F31, (q31_t)0x07A72F45, - (q31_t)0x8037A7AC, (q31_t)0x077501BE, (q31_t)0x8034C3DC, - (q31_t)0x0742D310, (q31_t)0x8031F3C1, (q31_t)0x0710A344, - (q31_t)0x802F375C, (q31_t)0x06DE7261, (q31_t)0x802C8EAD, - (q31_t)0x06AC406F, (q31_t)0x8029F9B4, (q31_t)0x067A0D75, - (q31_t)0x80277872, (q31_t)0x0647D97C, (q31_t)0x80250AE7, - (q31_t)0x0615A48A, (q31_t)0x8022B113, (q31_t)0x05E36EA9, - (q31_t)0x80206AF8, (q31_t)0x05B137DF, (q31_t)0x801E3894, - (q31_t)0x057F0034, (q31_t)0x801C19E9, (q31_t)0x054CC7B0, - (q31_t)0x801A0EF7, (q31_t)0x051A8E5C, (q31_t)0x801817BF, - (q31_t)0x04E8543D, (q31_t)0x80163440, (q31_t)0x04B6195D, - (q31_t)0x8014647A, (q31_t)0x0483DDC3, (q31_t)0x8012A86F, - (q31_t)0x0451A176, (q31_t)0x8011001E, (q31_t)0x041F647F, - (q31_t)0x800F6B88, (q31_t)0x03ED26E6, (q31_t)0x800DEAAC, - (q31_t)0x03BAE8B1, (q31_t)0x800C7D8C, (q31_t)0x0388A9E9, - (q31_t)0x800B2427, (q31_t)0x03566A96, (q31_t)0x8009DE7D, - (q31_t)0x03242ABF, (q31_t)0x8008AC90, (q31_t)0x02F1EA6B, - (q31_t)0x80078E5E, (q31_t)0x02BFA9A4, (q31_t)0x800683E8, - (q31_t)0x028D6870, (q31_t)0x80058D2E, (q31_t)0x025B26D7, - (q31_t)0x8004AA31, (q31_t)0x0228E4E1, (q31_t)0x8003DAF0, - (q31_t)0x01F6A296, (q31_t)0x80031F6C, (q31_t)0x01C45FFE, - (q31_t)0x800277A5, (q31_t)0x01921D1F, (q31_t)0x8001E39B, - (q31_t)0x015FDA03, (q31_t)0x8001634D, (q31_t)0x012D96B0, - (q31_t)0x8000F6BD, (q31_t)0x00FB532F, (q31_t)0x80009DE9, - (q31_t)0x00C90F88, (q31_t)0x800058D3, (q31_t)0x0096CBC1, - (q31_t)0x8000277A, (q31_t)0x006487E3, (q31_t)0x800009DE, - (q31_t)0x003243F5, (q31_t)0x80000000, (q31_t)0x00000000, - (q31_t)0x800009DE, (q31_t)0xFFCDBC0A, (q31_t)0x8000277A, - (q31_t)0xFF9B781D, (q31_t)0x800058D3, (q31_t)0xFF69343E, - (q31_t)0x80009DE9, (q31_t)0xFF36F078, (q31_t)0x8000F6BD, - (q31_t)0xFF04ACD0, (q31_t)0x8001634D, (q31_t)0xFED2694F, - (q31_t)0x8001E39B, (q31_t)0xFEA025FC, (q31_t)0x800277A5, - (q31_t)0xFE6DE2E0, (q31_t)0x80031F6C, (q31_t)0xFE3BA001, - (q31_t)0x8003DAF0, (q31_t)0xFE095D69, (q31_t)0x8004AA31, - (q31_t)0xFDD71B1E, (q31_t)0x80058D2E, (q31_t)0xFDA4D928, - (q31_t)0x800683E8, (q31_t)0xFD72978F, (q31_t)0x80078E5E, - (q31_t)0xFD40565B, (q31_t)0x8008AC90, (q31_t)0xFD0E1594, - (q31_t)0x8009DE7D, (q31_t)0xFCDBD541, (q31_t)0x800B2427, - (q31_t)0xFCA99569, (q31_t)0x800C7D8C, (q31_t)0xFC775616, - (q31_t)0x800DEAAC, (q31_t)0xFC45174E, (q31_t)0x800F6B88, - (q31_t)0xFC12D919, (q31_t)0x8011001E, (q31_t)0xFBE09B80, - (q31_t)0x8012A86F, (q31_t)0xFBAE5E89, (q31_t)0x8014647A, - (q31_t)0xFB7C223C, (q31_t)0x80163440, (q31_t)0xFB49E6A2, - (q31_t)0x801817BF, (q31_t)0xFB17ABC2, (q31_t)0x801A0EF7, - (q31_t)0xFAE571A4, (q31_t)0x801C19E9, (q31_t)0xFAB3384F, - (q31_t)0x801E3894, (q31_t)0xFA80FFCB, (q31_t)0x80206AF8, - (q31_t)0xFA4EC820, (q31_t)0x8022B113, (q31_t)0xFA1C9156, - (q31_t)0x80250AE7, (q31_t)0xF9EA5B75, (q31_t)0x80277872, - (q31_t)0xF9B82683, (q31_t)0x8029F9B4, (q31_t)0xF985F28A, - (q31_t)0x802C8EAD, (q31_t)0xF953BF90, (q31_t)0x802F375C, - (q31_t)0xF9218D9E, (q31_t)0x8031F3C1, (q31_t)0xF8EF5CBB, - (q31_t)0x8034C3DC, (q31_t)0xF8BD2CEF, (q31_t)0x8037A7AC, - (q31_t)0xF88AFE41, (q31_t)0x803A9F31, (q31_t)0xF858D0BA, - (q31_t)0x803DAA69, (q31_t)0xF826A461, (q31_t)0x8040C956, - (q31_t)0xF7F4793E, (q31_t)0x8043FBF6, (q31_t)0xF7C24F58, - (q31_t)0x80474248, (q31_t)0xF79026B8, (q31_t)0x804A9C4D, - (q31_t)0xF75DFF65, (q31_t)0x804E0A03, (q31_t)0xF72BD967, - (q31_t)0x80518B6B, (q31_t)0xF6F9B4C5, (q31_t)0x80552083, - (q31_t)0xF6C79188, (q31_t)0x8058C94C, (q31_t)0xF6956FB6, - (q31_t)0x805C85C3, (q31_t)0xF6634F58, (q31_t)0x806055EA, - (q31_t)0xF6313076, (q31_t)0x806439C0, (q31_t)0xF5FF1317, - (q31_t)0x80683143, (q31_t)0xF5CCF743, (q31_t)0x806C3C73, - (q31_t)0xF59ADD01, (q31_t)0x80705B50, (q31_t)0xF568C45A, - (q31_t)0x80748DD9, (q31_t)0xF536AD55, (q31_t)0x8078D40D, - (q31_t)0xF50497FA, (q31_t)0x807D2DEB, (q31_t)0xF4D28451, - (q31_t)0x80819B74, (q31_t)0xF4A07260, (q31_t)0x80861CA5, - (q31_t)0xF46E6231, (q31_t)0x808AB180, (q31_t)0xF43C53CA, - (q31_t)0x808F5A02, (q31_t)0xF40A4734, (q31_t)0x8094162B, - (q31_t)0xF3D83C76, (q31_t)0x8098E5FB, (q31_t)0xF3A63398, - (q31_t)0x809DC970, (q31_t)0xF3742CA1, (q31_t)0x80A2C08B, - (q31_t)0xF342279A, (q31_t)0x80A7CB49, (q31_t)0xF310248A, - (q31_t)0x80ACE9AB, (q31_t)0xF2DE2378, (q31_t)0x80B21BAF, - (q31_t)0xF2AC246D, (q31_t)0x80B76155, (q31_t)0xF27A2770, - (q31_t)0x80BCBA9C, (q31_t)0xF2482C89, (q31_t)0x80C22783, - (q31_t)0xF21633C0, (q31_t)0x80C7A80A, (q31_t)0xF1E43D1C, - (q31_t)0x80CD3C2F, (q31_t)0xF1B248A5, (q31_t)0x80D2E3F1, - (q31_t)0xF1805662, (q31_t)0x80D89F51, (q31_t)0xF14E665C, - (q31_t)0x80DE6E4C, (q31_t)0xF11C789A, (q31_t)0x80E450E2, - (q31_t)0xF0EA8D23, (q31_t)0x80EA4712, (q31_t)0xF0B8A401, - (q31_t)0x80F050DB, (q31_t)0xF086BD39, (q31_t)0x80F66E3C, - (q31_t)0xF054D8D4, (q31_t)0x80FC9F35, (q31_t)0xF022F6DA, - (q31_t)0x8102E3C3, (q31_t)0xEFF11752, (q31_t)0x81093BE8, - (q31_t)0xEFBF3A44, (q31_t)0x810FA7A0, (q31_t)0xEF8D5FB8, - (q31_t)0x811626EC, (q31_t)0xEF5B87B5, (q31_t)0x811CB9CA, - (q31_t)0xEF29B243, (q31_t)0x81236039, (q31_t)0xEEF7DF6A, - (q31_t)0x812A1A39, (q31_t)0xEEC60F31, (q31_t)0x8130E7C8, - (q31_t)0xEE9441A0, (q31_t)0x8137C8E6, (q31_t)0xEE6276BF, - (q31_t)0x813EBD90, (q31_t)0xEE30AE95, (q31_t)0x8145C5C6, - (q31_t)0xEDFEE92B, (q31_t)0x814CE188, (q31_t)0xEDCD2687, - (q31_t)0x815410D3, (q31_t)0xED9B66B2, (q31_t)0x815B53A8, - (q31_t)0xED69A9B2, (q31_t)0x8162AA03, (q31_t)0xED37EF91, - (q31_t)0x816A13E6, (q31_t)0xED063855, (q31_t)0x8171914E, - (q31_t)0xECD48406, (q31_t)0x8179223A, (q31_t)0xECA2D2AC, - (q31_t)0x8180C6A9, (q31_t)0xEC71244F, (q31_t)0x81887E9A, - (q31_t)0xEC3F78F5, (q31_t)0x81904A0C, (q31_t)0xEC0DD0A8, - (q31_t)0x819828FD, (q31_t)0xEBDC2B6D, (q31_t)0x81A01B6C, - (q31_t)0xEBAA894E, (q31_t)0x81A82159, (q31_t)0xEB78EA52, - (q31_t)0x81B03AC1, (q31_t)0xEB474E80, (q31_t)0x81B867A4, - (q31_t)0xEB15B5E0, (q31_t)0x81C0A801, (q31_t)0xEAE4207A, - (q31_t)0x81C8FBD5, (q31_t)0xEAB28E55, (q31_t)0x81D16320, - (q31_t)0xEA80FF79, (q31_t)0x81D9DDE1, (q31_t)0xEA4F73EE, - (q31_t)0x81E26C16, (q31_t)0xEA1DEBBB, (q31_t)0x81EB0DBD, - (q31_t)0xE9EC66E8, (q31_t)0x81F3C2D7, (q31_t)0xE9BAE57C, - (q31_t)0x81FC8B60, (q31_t)0xE9896780, (q31_t)0x82056758, - (q31_t)0xE957ECFB, (q31_t)0x820E56BE, (q31_t)0xE92675F4, - (q31_t)0x8217598F, (q31_t)0xE8F50273, (q31_t)0x82206FCB, - (q31_t)0xE8C3927F, (q31_t)0x82299971, (q31_t)0xE8922621, - (q31_t)0x8232D67E, (q31_t)0xE860BD60, (q31_t)0x823C26F2, - (q31_t)0xE82F5844, (q31_t)0x82458ACB, (q31_t)0xE7FDF6D3, - (q31_t)0x824F0208, (q31_t)0xE7CC9917, (q31_t)0x82588CA6, - (q31_t)0xE79B3F16, (q31_t)0x82622AA5, (q31_t)0xE769E8D8, - (q31_t)0x826BDC04, (q31_t)0xE7389664, (q31_t)0x8275A0C0, - (q31_t)0xE70747C3, (q31_t)0x827F78D8, (q31_t)0xE6D5FCFC, - (q31_t)0x8289644A, (q31_t)0xE6A4B616, (q31_t)0x82936316, - (q31_t)0xE6737319, (q31_t)0x829D753A, (q31_t)0xE642340D, - (q31_t)0x82A79AB3, (q31_t)0xE610F8F9, (q31_t)0x82B1D381, - (q31_t)0xE5DFC1E4, (q31_t)0x82BC1FA1, (q31_t)0xE5AE8ED8, - (q31_t)0x82C67F13, (q31_t)0xE57D5FDA, (q31_t)0x82D0F1D5, - (q31_t)0xE54C34F3, (q31_t)0x82DB77E5, (q31_t)0xE51B0E2A, - (q31_t)0x82E61141, (q31_t)0xE4E9EB86, (q31_t)0x82F0BDE8, - (q31_t)0xE4B8CD10, (q31_t)0x82FB7DD8, (q31_t)0xE487B2CF, - (q31_t)0x8306510F, (q31_t)0xE4569CCB, (q31_t)0x8311378C, - (q31_t)0xE4258B0A, (q31_t)0x831C314E, (q31_t)0xE3F47D95, - (q31_t)0x83273E52, (q31_t)0xE3C37473, (q31_t)0x83325E97, - (q31_t)0xE3926FAC, (q31_t)0x833D921A, (q31_t)0xE3616F47, - (q31_t)0x8348D8DB, (q31_t)0xE330734C, (q31_t)0x835432D8, - (q31_t)0xE2FF7BC3, (q31_t)0x835FA00E, (q31_t)0xE2CE88B2, - (q31_t)0x836B207D, (q31_t)0xE29D9A22, (q31_t)0x8376B422, - (q31_t)0xE26CB01A, (q31_t)0x83825AFB, (q31_t)0xE23BCAA2, - (q31_t)0x838E1507, (q31_t)0xE20AE9C1, (q31_t)0x8399E244, - (q31_t)0xE1DA0D7E, (q31_t)0x83A5C2B0, (q31_t)0xE1A935E1, - (q31_t)0x83B1B649, (q31_t)0xE17862F3, (q31_t)0x83BDBD0D, - (q31_t)0xE14794B9, (q31_t)0x83C9D6FB, (q31_t)0xE116CB3D, - (q31_t)0x83D60411, (q31_t)0xE0E60684, (q31_t)0x83E2444D, - (q31_t)0xE0B54698, (q31_t)0x83EE97AC, (q31_t)0xE0848B7F, - (q31_t)0x83FAFE2E, (q31_t)0xE053D541, (q31_t)0x840777CF, - (q31_t)0xE02323E5, (q31_t)0x8414048F, (q31_t)0xDFF27773, - (q31_t)0x8420A46B, (q31_t)0xDFC1CFF2, (q31_t)0x842D5761, - (q31_t)0xDF912D6A, (q31_t)0x843A1D70, (q31_t)0xDF608FE3, - (q31_t)0x8446F695, (q31_t)0xDF2FF764, (q31_t)0x8453E2CE, - (q31_t)0xDEFF63F4, (q31_t)0x8460E21A, (q31_t)0xDECED59B, - (q31_t)0x846DF476, (q31_t)0xDE9E4C60, (q31_t)0x847B19E1, - (q31_t)0xDE6DC84B, (q31_t)0x84885257, (q31_t)0xDE3D4963, - (q31_t)0x84959DD9, (q31_t)0xDE0CCFB1, (q31_t)0x84A2FC62, - (q31_t)0xDDDC5B3A, (q31_t)0x84B06DF1, (q31_t)0xDDABEC07, - (q31_t)0x84BDF285, (q31_t)0xDD7B8220, (q31_t)0x84CB8A1B, - (q31_t)0xDD4B1D8B, (q31_t)0x84D934B0, (q31_t)0xDD1ABE51, - (q31_t)0x84E6F244, (q31_t)0xDCEA6478, (q31_t)0x84F4C2D3, - (q31_t)0xDCBA1008, (q31_t)0x8502A65C, (q31_t)0xDC89C108, - (q31_t)0x85109CDC, (q31_t)0xDC597781, (q31_t)0x851EA652, - (q31_t)0xDC293379, (q31_t)0x852CC2BA, (q31_t)0xDBF8F4F8, - (q31_t)0x853AF214, (q31_t)0xDBC8BC05, (q31_t)0x8549345C, - (q31_t)0xDB9888A8, (q31_t)0x85578991, (q31_t)0xDB685AE8, - (q31_t)0x8565F1B0, (q31_t)0xDB3832CD, (q31_t)0x85746CB7, - (q31_t)0xDB08105E, (q31_t)0x8582FAA4, (q31_t)0xDAD7F3A2, - (q31_t)0x85919B75, (q31_t)0xDAA7DCA1, (q31_t)0x85A04F28, - (q31_t)0xDA77CB62, (q31_t)0x85AF15B9, (q31_t)0xDA47BFED, - (q31_t)0x85BDEF27, (q31_t)0xDA17BA4A, (q31_t)0x85CCDB70, - (q31_t)0xD9E7BA7E, (q31_t)0x85DBDA91, (q31_t)0xD9B7C093, - (q31_t)0x85EAEC88, (q31_t)0xD987CC8F, (q31_t)0x85FA1152, - (q31_t)0xD957DE7A, (q31_t)0x860948EE, (q31_t)0xD927F65B, - (q31_t)0x86189359, (q31_t)0xD8F81439, (q31_t)0x8627F090, - (q31_t)0xD8C8381C, (q31_t)0x86376092, (q31_t)0xD898620C, - (q31_t)0x8646E35B, (q31_t)0xD868920F, (q31_t)0x865678EA, - (q31_t)0xD838C82D, (q31_t)0x8666213C, (q31_t)0xD809046D, - (q31_t)0x8675DC4E, (q31_t)0xD7D946D7, (q31_t)0x8685AA1F, - (q31_t)0xD7A98F73, (q31_t)0x86958AAB, (q31_t)0xD779DE46, - (q31_t)0x86A57DF1, (q31_t)0xD74A335A, (q31_t)0x86B583EE, - (q31_t)0xD71A8EB5, (q31_t)0x86C59C9F, (q31_t)0xD6EAF05E, - (q31_t)0x86D5C802, (q31_t)0xD6BB585D, (q31_t)0x86E60614, - (q31_t)0xD68BC6BA, (q31_t)0x86F656D3, (q31_t)0xD65C3B7B, - (q31_t)0x8706BA3C, (q31_t)0xD62CB6A7, (q31_t)0x8717304E, - (q31_t)0xD5FD3847, (q31_t)0x8727B904, (q31_t)0xD5CDC062, - (q31_t)0x8738545E, (q31_t)0xD59E4EFE, (q31_t)0x87490257, - (q31_t)0xD56EE424, (q31_t)0x8759C2EF, (q31_t)0xD53F7FDA, - (q31_t)0x876A9621, (q31_t)0xD5102227, (q31_t)0x877B7BEC, - (q31_t)0xD4E0CB14, (q31_t)0x878C744C, (q31_t)0xD4B17AA7, - (q31_t)0x879D7F40, (q31_t)0xD48230E8, (q31_t)0x87AE9CC5, - (q31_t)0xD452EDDE, (q31_t)0x87BFCCD7, (q31_t)0xD423B190, - (q31_t)0x87D10F75, (q31_t)0xD3F47C06, (q31_t)0x87E2649B, - (q31_t)0xD3C54D46, (q31_t)0x87F3CC47, (q31_t)0xD3962559, - (q31_t)0x88054677, (q31_t)0xD3670445, (q31_t)0x8816D327, - (q31_t)0xD337EA12, (q31_t)0x88287255, (q31_t)0xD308D6C6, - (q31_t)0x883A23FE, (q31_t)0xD2D9CA6A, (q31_t)0x884BE820, - (q31_t)0xD2AAC504, (q31_t)0x885DBEB7, (q31_t)0xD27BC69C, - (q31_t)0x886FA7C2, (q31_t)0xD24CCF38, (q31_t)0x8881A33C, - (q31_t)0xD21DDEE1, (q31_t)0x8893B124, (q31_t)0xD1EEF59E, - (q31_t)0x88A5D177, (q31_t)0xD1C01374, (q31_t)0x88B80431, - (q31_t)0xD191386D, (q31_t)0x88CA4951, (q31_t)0xD162648F, - (q31_t)0x88DCA0D3, (q31_t)0xD13397E1, (q31_t)0x88EF0AB4, - (q31_t)0xD104D26B, (q31_t)0x890186F1, (q31_t)0xD0D61433, - (q31_t)0x89141589, (q31_t)0xD0A75D42, (q31_t)0x8926B677, - (q31_t)0xD078AD9D, (q31_t)0x893969B9, (q31_t)0xD04A054D, - (q31_t)0x894C2F4C, (q31_t)0xD01B6459, (q31_t)0x895F072D, - (q31_t)0xCFECCAC7, (q31_t)0x8971F15A, (q31_t)0xCFBE389F, - (q31_t)0x8984EDCF, (q31_t)0xCF8FADE8, (q31_t)0x8997FC89, - (q31_t)0xCF612AAA, (q31_t)0x89AB1D86, (q31_t)0xCF32AEEB, - (q31_t)0x89BE50C3, (q31_t)0xCF043AB2, (q31_t)0x89D1963C, - (q31_t)0xCED5CE08, (q31_t)0x89E4EDEE, (q31_t)0xCEA768F2, - (q31_t)0x89F857D8, (q31_t)0xCE790B78, (q31_t)0x8A0BD3F5, - (q31_t)0xCE4AB5A2, (q31_t)0x8A1F6242, (q31_t)0xCE1C6776, - (q31_t)0x8A3302BD, (q31_t)0xCDEE20FC, (q31_t)0x8A46B563, - (q31_t)0xCDBFE23A, (q31_t)0x8A5A7A30, (q31_t)0xCD91AB38, - (q31_t)0x8A6E5122, (q31_t)0xCD637BFD, (q31_t)0x8A823A35, - (q31_t)0xCD355490, (q31_t)0x8A963567, (q31_t)0xCD0734F8, - (q31_t)0x8AAA42B4, (q31_t)0xCCD91D3D, (q31_t)0x8ABE6219, - (q31_t)0xCCAB0D65, (q31_t)0x8AD29393, (q31_t)0xCC7D0577, - (q31_t)0x8AE6D71F, (q31_t)0xCC4F057B, (q31_t)0x8AFB2CBA, - (q31_t)0xCC210D78, (q31_t)0x8B0F9461, (q31_t)0xCBF31D75, - (q31_t)0x8B240E10, (q31_t)0xCBC53578, (q31_t)0x8B3899C5, - (q31_t)0xCB975589, (q31_t)0x8B4D377C, (q31_t)0xCB697DB0, - (q31_t)0x8B61E732, (q31_t)0xCB3BADF2, (q31_t)0x8B76A8E4, - (q31_t)0xCB0DE658, (q31_t)0x8B8B7C8F, (q31_t)0xCAE026E8, - (q31_t)0x8BA0622F, (q31_t)0xCAB26FA9, (q31_t)0x8BB559C1, - (q31_t)0xCA84C0A2, (q31_t)0x8BCA6342, (q31_t)0xCA5719DB, - (q31_t)0x8BDF7EAF, (q31_t)0xCA297B5A, (q31_t)0x8BF4AC05, - (q31_t)0xC9FBE527, (q31_t)0x8C09EB40, (q31_t)0xC9CE5748, - (q31_t)0x8C1F3C5C, (q31_t)0xC9A0D1C4, (q31_t)0x8C349F58, - (q31_t)0xC97354A3, (q31_t)0x8C4A142F, (q31_t)0xC945DFEC, - (q31_t)0x8C5F9ADD, (q31_t)0xC91873A5, (q31_t)0x8C753361, - (q31_t)0xC8EB0FD6, (q31_t)0x8C8ADDB6, (q31_t)0xC8BDB485, - (q31_t)0x8CA099D9, (q31_t)0xC89061BA, (q31_t)0x8CB667C7, - (q31_t)0xC863177B, (q31_t)0x8CCC477D, (q31_t)0xC835D5D0, - (q31_t)0x8CE238F6, (q31_t)0xC8089CBF, (q31_t)0x8CF83C30, - (q31_t)0xC7DB6C50, (q31_t)0x8D0E5127, (q31_t)0xC7AE4489, - (q31_t)0x8D2477D8, (q31_t)0xC7812571, (q31_t)0x8D3AB03F, - (q31_t)0xC7540F10, (q31_t)0x8D50FA59, (q31_t)0xC727016C, - (q31_t)0x8D675623, (q31_t)0xC6F9FC8D, (q31_t)0x8D7DC399, - (q31_t)0xC6CD0079, (q31_t)0x8D9442B7, (q31_t)0xC6A00D36, - (q31_t)0x8DAAD37B, (q31_t)0xC67322CD, (q31_t)0x8DC175E0, - (q31_t)0xC6464144, (q31_t)0x8DD829E4, (q31_t)0xC61968A2, - (q31_t)0x8DEEEF82, (q31_t)0xC5EC98ED, (q31_t)0x8E05C6B7, - (q31_t)0xC5BFD22E, (q31_t)0x8E1CAF80, (q31_t)0xC593146A, - (q31_t)0x8E33A9D9, (q31_t)0xC5665FA8, (q31_t)0x8E4AB5BF, - (q31_t)0xC539B3F0, (q31_t)0x8E61D32D, (q31_t)0xC50D1148, - (q31_t)0x8E790222, (q31_t)0xC4E077B8, (q31_t)0x8E904298, - (q31_t)0xC4B3E746, (q31_t)0x8EA7948C, (q31_t)0xC4875FF8, - (q31_t)0x8EBEF7FB, (q31_t)0xC45AE1D7, (q31_t)0x8ED66CE1, - (q31_t)0xC42E6CE8, (q31_t)0x8EEDF33B, (q31_t)0xC4020132, - (q31_t)0x8F058B04, (q31_t)0xC3D59EBD, (q31_t)0x8F1D343A, - (q31_t)0xC3A9458F, (q31_t)0x8F34EED8, (q31_t)0xC37CF5B0, - (q31_t)0x8F4CBADB, (q31_t)0xC350AF25, (q31_t)0x8F64983F, - (q31_t)0xC32471F6, (q31_t)0x8F7C8701, (q31_t)0xC2F83E2A, - (q31_t)0x8F94871D, (q31_t)0xC2CC13C7, (q31_t)0x8FAC988E, - (q31_t)0xC29FF2D4, (q31_t)0x8FC4BB53, (q31_t)0xC273DB58, - (q31_t)0x8FDCEF66, (q31_t)0xC247CD5A, (q31_t)0x8FF534C4, - (q31_t)0xC21BC8E0, (q31_t)0x900D8B69, (q31_t)0xC1EFCDF2, - (q31_t)0x9025F352, (q31_t)0xC1C3DC96, (q31_t)0x903E6C7A, - (q31_t)0xC197F4D3, (q31_t)0x9056F6DF, (q31_t)0xC16C16B0, - (q31_t)0x906F927B, (q31_t)0xC1404233, (q31_t)0x90883F4C, - (q31_t)0xC1147763, (q31_t)0x90A0FD4E, (q31_t)0xC0E8B648, - (q31_t)0x90B9CC7C, (q31_t)0xC0BCFEE7, (q31_t)0x90D2ACD3, - (q31_t)0xC0915147, (q31_t)0x90EB9E50, (q31_t)0xC065AD70, - (q31_t)0x9104A0ED, (q31_t)0xC03A1368, (q31_t)0x911DB4A8, - (q31_t)0xC00E8335, (q31_t)0x9136D97D, (q31_t)0xBFE2FCDF, - (q31_t)0x91500F67, (q31_t)0xBFB7806C, (q31_t)0x91695663, - (q31_t)0xBF8C0DE2, (q31_t)0x9182AE6C, (q31_t)0xBF60A54A, - (q31_t)0x919C1780, (q31_t)0xBF3546A8, (q31_t)0x91B5919A, - (q31_t)0xBF09F204, (q31_t)0x91CF1CB6, (q31_t)0xBEDEA765, - (q31_t)0x91E8B8D0, (q31_t)0xBEB366D1, (q31_t)0x920265E4, - (q31_t)0xBE88304F, (q31_t)0x921C23EE, (q31_t)0xBE5D03E5, - (q31_t)0x9235F2EB, (q31_t)0xBE31E19B, (q31_t)0x924FD2D6, - (q31_t)0xBE06C977, (q31_t)0x9269C3AC, (q31_t)0xBDDBBB7F, - (q31_t)0x9283C567, (q31_t)0xBDB0B7BA, (q31_t)0x929DD805, - (q31_t)0xBD85BE2F, (q31_t)0x92B7FB82, (q31_t)0xBD5ACEE5, - (q31_t)0x92D22FD8, (q31_t)0xBD2FE9E1, (q31_t)0x92EC7505, - (q31_t)0xBD050F2C, (q31_t)0x9306CB04, (q31_t)0xBCDA3ECA, - (q31_t)0x932131D1, (q31_t)0xBCAF78C3, (q31_t)0x933BA968, - (q31_t)0xBC84BD1E, (q31_t)0x935631C5, (q31_t)0xBC5A0BE1, - (q31_t)0x9370CAE4, (q31_t)0xBC2F6513, (q31_t)0x938B74C0, - (q31_t)0xBC04C8BA, (q31_t)0x93A62F56, (q31_t)0xBBDA36DC, - (q31_t)0x93C0FAA2, (q31_t)0xBBAFAF81, (q31_t)0x93DBD69F, - (q31_t)0xBB8532AF, (q31_t)0x93F6C34A, (q31_t)0xBB5AC06C, - (q31_t)0x9411C09D, (q31_t)0xBB3058C0, (q31_t)0x942CCE95, - (q31_t)0xBB05FBB0, (q31_t)0x9447ED2F, (q31_t)0xBADBA943, - (q31_t)0x94631C64, (q31_t)0xBAB1617F, (q31_t)0x947E5C32, - (q31_t)0xBA87246C, (q31_t)0x9499AC95, (q31_t)0xBA5CF210, - (q31_t)0x94B50D87, (q31_t)0xBA32CA70, (q31_t)0x94D07F05, - (q31_t)0xBA08AD94, (q31_t)0x94EC010B, (q31_t)0xB9DE9B83, - (q31_t)0x95079393, (q31_t)0xB9B49442, (q31_t)0x9523369B, - (q31_t)0xB98A97D8, (q31_t)0x953EEA1E, (q31_t)0xB960A64B, - (q31_t)0x955AAE17, (q31_t)0xB936BFA3, (q31_t)0x95768282, - (q31_t)0xB90CE3E6, (q31_t)0x9592675B, (q31_t)0xB8E31319, - (q31_t)0x95AE5C9E, (q31_t)0xB8B94D44, (q31_t)0x95CA6246, - (q31_t)0xB88F926C, (q31_t)0x95E6784F, (q31_t)0xB865E299, - (q31_t)0x96029EB5, (q31_t)0xB83C3DD1, (q31_t)0x961ED573, - (q31_t)0xB812A419, (q31_t)0x963B1C85, (q31_t)0xB7E9157A, - (q31_t)0x965773E7, (q31_t)0xB7BF91F8, (q31_t)0x9673DB94, - (q31_t)0xB796199B, (q31_t)0x96905387, (q31_t)0xB76CAC68, - (q31_t)0x96ACDBBD, (q31_t)0xB7434A67, (q31_t)0x96C97431, - (q31_t)0xB719F39D, (q31_t)0x96E61CDF, (q31_t)0xB6F0A811, - (q31_t)0x9702D5C2, (q31_t)0xB6C767CA, (q31_t)0x971F9ED6, - (q31_t)0xB69E32CD, (q31_t)0x973C7816, (q31_t)0xB6750921, - (q31_t)0x9759617E, (q31_t)0xB64BEACC, (q31_t)0x97765B0A, - (q31_t)0xB622D7D5, (q31_t)0x979364B5, (q31_t)0xB5F9D042, - (q31_t)0x97B07E7A, (q31_t)0xB5D0D41A, (q31_t)0x97CDA855, - (q31_t)0xB5A7E362, (q31_t)0x97EAE241, (q31_t)0xB57EFE21, - (q31_t)0x98082C3B, (q31_t)0xB556245E, (q31_t)0x9825863D, - (q31_t)0xB52D561E, (q31_t)0x9842F043, (q31_t)0xB5049368, - (q31_t)0x98606A48, (q31_t)0xB4DBDC42, (q31_t)0x987DF449, - (q31_t)0xB4B330B2, (q31_t)0x989B8E3F, (q31_t)0xB48A90C0, - (q31_t)0x98B93828, (q31_t)0xB461FC70, (q31_t)0x98D6F1FE, - (q31_t)0xB43973C9, (q31_t)0x98F4BBBC, (q31_t)0xB410F6D2, - (q31_t)0x9912955E, (q31_t)0xB3E88591, (q31_t)0x99307EE0, - (q31_t)0xB3C0200C, (q31_t)0x994E783C, (q31_t)0xB397C649, - (q31_t)0x996C816F, (q31_t)0xB36F784E, (q31_t)0x998A9A73, - (q31_t)0xB3473622, (q31_t)0x99A8C344, (q31_t)0xB31EFFCB, - (q31_t)0x99C6FBDE, (q31_t)0xB2F6D54F, (q31_t)0x99E5443A, - (q31_t)0xB2CEB6B5, (q31_t)0x9A039C56, (q31_t)0xB2A6A401, - (q31_t)0x9A22042C, (q31_t)0xB27E9D3B, (q31_t)0x9A407BB8, - (q31_t)0xB256A26A, (q31_t)0x9A5F02F5, (q31_t)0xB22EB392, - (q31_t)0x9A7D99DD, (q31_t)0xB206D0BA, (q31_t)0x9A9C406D, - (q31_t)0xB1DEF9E8, (q31_t)0x9ABAF6A0, (q31_t)0xB1B72F23, - (q31_t)0x9AD9BC71, (q31_t)0xB18F7070, (q31_t)0x9AF891DB, - (q31_t)0xB167BDD6, (q31_t)0x9B1776D9, (q31_t)0xB140175B, - (q31_t)0x9B366B67, (q31_t)0xB1187D05, (q31_t)0x9B556F80, - (q31_t)0xB0F0EEDA, (q31_t)0x9B748320, (q31_t)0xB0C96CDF, - (q31_t)0x9B93A640, (q31_t)0xB0A1F71C, (q31_t)0x9BB2D8DD, - (q31_t)0xB07A8D97, (q31_t)0x9BD21AF2, (q31_t)0xB0533055, - (q31_t)0x9BF16C7A, (q31_t)0xB02BDF5C, (q31_t)0x9C10CD70, - (q31_t)0xB0049AB2, (q31_t)0x9C303DCF, (q31_t)0xAFDD625F, - (q31_t)0x9C4FBD92, (q31_t)0xAFB63667, (q31_t)0x9C6F4CB5, - (q31_t)0xAF8F16D0, (q31_t)0x9C8EEB33, (q31_t)0xAF6803A1, - (q31_t)0x9CAE9907, (q31_t)0xAF40FCE0, (q31_t)0x9CCE562B, - (q31_t)0xAF1A0293, (q31_t)0x9CEE229C, (q31_t)0xAEF314BF, - (q31_t)0x9D0DFE53, (q31_t)0xAECC336B, (q31_t)0x9D2DE94D, - (q31_t)0xAEA55E9D, (q31_t)0x9D4DE384, (q31_t)0xAE7E965B, - (q31_t)0x9D6DECF4, (q31_t)0xAE57DAAA, (q31_t)0x9D8E0596, - (q31_t)0xAE312B91, (q31_t)0x9DAE2D68, (q31_t)0xAE0A8916, - (q31_t)0x9DCE6462, (q31_t)0xADE3F33E, (q31_t)0x9DEEAA82, - (q31_t)0xADBD6A10, (q31_t)0x9E0EFFC1, (q31_t)0xAD96ED91, - (q31_t)0x9E2F641A, (q31_t)0xAD707DC8, (q31_t)0x9E4FD789, - (q31_t)0xAD4A1ABA, (q31_t)0x9E705A09, (q31_t)0xAD23C46D, - (q31_t)0x9E90EB94, (q31_t)0xACFD7AE8, (q31_t)0x9EB18C26, - (q31_t)0xACD73E30, (q31_t)0x9ED23BB9, (q31_t)0xACB10E4A, - (q31_t)0x9EF2FA48, (q31_t)0xAC8AEB3E, (q31_t)0x9F13C7D0, - (q31_t)0xAC64D510, (q31_t)0x9F34A449, (q31_t)0xAC3ECBC7, - (q31_t)0x9F558FB0, (q31_t)0xAC18CF68, (q31_t)0x9F7689FF, - (q31_t)0xABF2DFFA, (q31_t)0x9F979331, (q31_t)0xABCCFD82, - (q31_t)0x9FB8AB41, (q31_t)0xABA72806, (q31_t)0x9FD9D22A, - (q31_t)0xAB815F8C, (q31_t)0x9FFB07E7, (q31_t)0xAB5BA41A, - (q31_t)0xA01C4C72, (q31_t)0xAB35F5B5, (q31_t)0xA03D9FC7, - (q31_t)0xAB105464, (q31_t)0xA05F01E1, (q31_t)0xAAEAC02B, - (q31_t)0xA08072BA, (q31_t)0xAAC53912, (q31_t)0xA0A1F24C, - (q31_t)0xAA9FBF1D, (q31_t)0xA0C38094, (q31_t)0xAA7A5253, - (q31_t)0xA0E51D8C, (q31_t)0xAA54F2B9, (q31_t)0xA106C92E, - (q31_t)0xAA2FA055, (q31_t)0xA1288376, (q31_t)0xAA0A5B2D, - (q31_t)0xA14A4C5E, (q31_t)0xA9E52347, (q31_t)0xA16C23E1, - (q31_t)0xA9BFF8A8, (q31_t)0xA18E09F9, (q31_t)0xA99ADB56, - (q31_t)0xA1AFFEA2, (q31_t)0xA975CB56, (q31_t)0xA1D201D7, - (q31_t)0xA950C8AF, (q31_t)0xA1F41391, (q31_t)0xA92BD366, - (q31_t)0xA21633CD, (q31_t)0xA906EB81, (q31_t)0xA2386283, - (q31_t)0xA8E21106, (q31_t)0xA25A9FB1, (q31_t)0xA8BD43FA, - (q31_t)0xA27CEB4F, (q31_t)0xA8988463, (q31_t)0xA29F4559, - (q31_t)0xA873D246, (q31_t)0xA2C1ADC9, (q31_t)0xA84F2DA9, - (q31_t)0xA2E4249A, (q31_t)0xA82A9693, (q31_t)0xA306A9C7, - (q31_t)0xA8060D08, (q31_t)0xA3293D4B, (q31_t)0xA7E1910E, - (q31_t)0xA34BDF20, (q31_t)0xA7BD22AB, (q31_t)0xA36E8F40, - (q31_t)0xA798C1E4, (q31_t)0xA3914DA7, (q31_t)0xA7746EC0, - (q31_t)0xA3B41A4F, (q31_t)0xA7502943, (q31_t)0xA3D6F533, - (q31_t)0xA72BF173, (q31_t)0xA3F9DE4D, (q31_t)0xA707C756, - (q31_t)0xA41CD598, (q31_t)0xA6E3AAF2, (q31_t)0xA43FDB0F, - (q31_t)0xA6BF9C4B, (q31_t)0xA462EEAC, (q31_t)0xA69B9B68, - (q31_t)0xA4861069, (q31_t)0xA677A84E, (q31_t)0xA4A94042, - (q31_t)0xA653C302, (q31_t)0xA4CC7E31, (q31_t)0xA62FEB8B, - (q31_t)0xA4EFCA31, (q31_t)0xA60C21ED, (q31_t)0xA513243B, - (q31_t)0xA5E8662F, (q31_t)0xA5368C4B, (q31_t)0xA5C4B855, - (q31_t)0xA55A025B, (q31_t)0xA5A11865, (q31_t)0xA57D8666, - (q31_t)0xA57D8666, (q31_t)0xA5A11865, (q31_t)0xA55A025B, - (q31_t)0xA5C4B855, (q31_t)0xA5368C4B, (q31_t)0xA5E8662F, - (q31_t)0xA513243B, (q31_t)0xA60C21ED, (q31_t)0xA4EFCA31, - (q31_t)0xA62FEB8B, (q31_t)0xA4CC7E31, (q31_t)0xA653C302, - (q31_t)0xA4A94042, (q31_t)0xA677A84E, (q31_t)0xA4861069, - (q31_t)0xA69B9B68, (q31_t)0xA462EEAC, (q31_t)0xA6BF9C4B, - (q31_t)0xA43FDB0F, (q31_t)0xA6E3AAF2, (q31_t)0xA41CD598, - (q31_t)0xA707C756, (q31_t)0xA3F9DE4D, (q31_t)0xA72BF173, - (q31_t)0xA3D6F533, (q31_t)0xA7502943, (q31_t)0xA3B41A4F, - (q31_t)0xA7746EC0, (q31_t)0xA3914DA7, (q31_t)0xA798C1E4, - (q31_t)0xA36E8F40, (q31_t)0xA7BD22AB, (q31_t)0xA34BDF20, - (q31_t)0xA7E1910E, (q31_t)0xA3293D4B, (q31_t)0xA8060D08, - (q31_t)0xA306A9C7, (q31_t)0xA82A9693, (q31_t)0xA2E4249A, - (q31_t)0xA84F2DA9, (q31_t)0xA2C1ADC9, (q31_t)0xA873D246, - (q31_t)0xA29F4559, (q31_t)0xA8988463, (q31_t)0xA27CEB4F, - (q31_t)0xA8BD43FA, (q31_t)0xA25A9FB1, (q31_t)0xA8E21106, - (q31_t)0xA2386283, (q31_t)0xA906EB81, (q31_t)0xA21633CD, - (q31_t)0xA92BD366, (q31_t)0xA1F41391, (q31_t)0xA950C8AF, - (q31_t)0xA1D201D7, (q31_t)0xA975CB56, (q31_t)0xA1AFFEA2, - (q31_t)0xA99ADB56, (q31_t)0xA18E09F9, (q31_t)0xA9BFF8A8, - (q31_t)0xA16C23E1, (q31_t)0xA9E52347, (q31_t)0xA14A4C5E, - (q31_t)0xAA0A5B2D, (q31_t)0xA1288376, (q31_t)0xAA2FA055, - (q31_t)0xA106C92E, (q31_t)0xAA54F2B9, (q31_t)0xA0E51D8C, - (q31_t)0xAA7A5253, (q31_t)0xA0C38094, (q31_t)0xAA9FBF1D, - (q31_t)0xA0A1F24C, (q31_t)0xAAC53912, (q31_t)0xA08072BA, - (q31_t)0xAAEAC02B, (q31_t)0xA05F01E1, (q31_t)0xAB105464, - (q31_t)0xA03D9FC7, (q31_t)0xAB35F5B5, (q31_t)0xA01C4C72, - (q31_t)0xAB5BA41A, (q31_t)0x9FFB07E7, (q31_t)0xAB815F8C, - (q31_t)0x9FD9D22A, (q31_t)0xABA72806, (q31_t)0x9FB8AB41, - (q31_t)0xABCCFD82, (q31_t)0x9F979331, (q31_t)0xABF2DFFA, - (q31_t)0x9F7689FF, (q31_t)0xAC18CF68, (q31_t)0x9F558FB0, - (q31_t)0xAC3ECBC7, (q31_t)0x9F34A449, (q31_t)0xAC64D510, - (q31_t)0x9F13C7D0, (q31_t)0xAC8AEB3E, (q31_t)0x9EF2FA48, - (q31_t)0xACB10E4A, (q31_t)0x9ED23BB9, (q31_t)0xACD73E30, - (q31_t)0x9EB18C26, (q31_t)0xACFD7AE8, (q31_t)0x9E90EB94, - (q31_t)0xAD23C46D, (q31_t)0x9E705A09, (q31_t)0xAD4A1ABA, - (q31_t)0x9E4FD789, (q31_t)0xAD707DC8, (q31_t)0x9E2F641A, - (q31_t)0xAD96ED91, (q31_t)0x9E0EFFC1, (q31_t)0xADBD6A10, - (q31_t)0x9DEEAA82, (q31_t)0xADE3F33E, (q31_t)0x9DCE6462, - (q31_t)0xAE0A8916, (q31_t)0x9DAE2D68, (q31_t)0xAE312B91, - (q31_t)0x9D8E0596, (q31_t)0xAE57DAAA, (q31_t)0x9D6DECF4, - (q31_t)0xAE7E965B, (q31_t)0x9D4DE384, (q31_t)0xAEA55E9D, - (q31_t)0x9D2DE94D, (q31_t)0xAECC336B, (q31_t)0x9D0DFE53, - (q31_t)0xAEF314BF, (q31_t)0x9CEE229C, (q31_t)0xAF1A0293, - (q31_t)0x9CCE562B, (q31_t)0xAF40FCE0, (q31_t)0x9CAE9907, - (q31_t)0xAF6803A1, (q31_t)0x9C8EEB33, (q31_t)0xAF8F16D0, - (q31_t)0x9C6F4CB5, (q31_t)0xAFB63667, (q31_t)0x9C4FBD92, - (q31_t)0xAFDD625F, (q31_t)0x9C303DCF, (q31_t)0xB0049AB2, - (q31_t)0x9C10CD70, (q31_t)0xB02BDF5C, (q31_t)0x9BF16C7A, - (q31_t)0xB0533055, (q31_t)0x9BD21AF2, (q31_t)0xB07A8D97, - (q31_t)0x9BB2D8DD, (q31_t)0xB0A1F71C, (q31_t)0x9B93A640, - (q31_t)0xB0C96CDF, (q31_t)0x9B748320, (q31_t)0xB0F0EEDA, - (q31_t)0x9B556F80, (q31_t)0xB1187D05, (q31_t)0x9B366B67, - (q31_t)0xB140175B, (q31_t)0x9B1776D9, (q31_t)0xB167BDD6, - (q31_t)0x9AF891DB, (q31_t)0xB18F7070, (q31_t)0x9AD9BC71, - (q31_t)0xB1B72F23, (q31_t)0x9ABAF6A0, (q31_t)0xB1DEF9E8, - (q31_t)0x9A9C406D, (q31_t)0xB206D0BA, (q31_t)0x9A7D99DD, - (q31_t)0xB22EB392, (q31_t)0x9A5F02F5, (q31_t)0xB256A26A, - (q31_t)0x9A407BB8, (q31_t)0xB27E9D3B, (q31_t)0x9A22042C, - (q31_t)0xB2A6A401, (q31_t)0x9A039C56, (q31_t)0xB2CEB6B5, - (q31_t)0x99E5443A, (q31_t)0xB2F6D54F, (q31_t)0x99C6FBDE, - (q31_t)0xB31EFFCB, (q31_t)0x99A8C344, (q31_t)0xB3473622, - (q31_t)0x998A9A73, (q31_t)0xB36F784E, (q31_t)0x996C816F, - (q31_t)0xB397C649, (q31_t)0x994E783C, (q31_t)0xB3C0200C, - (q31_t)0x99307EE0, (q31_t)0xB3E88591, (q31_t)0x9912955E, - (q31_t)0xB410F6D2, (q31_t)0x98F4BBBC, (q31_t)0xB43973C9, - (q31_t)0x98D6F1FE, (q31_t)0xB461FC70, (q31_t)0x98B93828, - (q31_t)0xB48A90C0, (q31_t)0x989B8E3F, (q31_t)0xB4B330B2, - (q31_t)0x987DF449, (q31_t)0xB4DBDC42, (q31_t)0x98606A48, - (q31_t)0xB5049368, (q31_t)0x9842F043, (q31_t)0xB52D561E, - (q31_t)0x9825863D, (q31_t)0xB556245E, (q31_t)0x98082C3B, - (q31_t)0xB57EFE21, (q31_t)0x97EAE241, (q31_t)0xB5A7E362, - (q31_t)0x97CDA855, (q31_t)0xB5D0D41A, (q31_t)0x97B07E7A, - (q31_t)0xB5F9D042, (q31_t)0x979364B5, (q31_t)0xB622D7D5, - (q31_t)0x97765B0A, (q31_t)0xB64BEACC, (q31_t)0x9759617E, - (q31_t)0xB6750921, (q31_t)0x973C7816, (q31_t)0xB69E32CD, - (q31_t)0x971F9ED6, (q31_t)0xB6C767CA, (q31_t)0x9702D5C2, - (q31_t)0xB6F0A811, (q31_t)0x96E61CDF, (q31_t)0xB719F39D, - (q31_t)0x96C97431, (q31_t)0xB7434A67, (q31_t)0x96ACDBBD, - (q31_t)0xB76CAC68, (q31_t)0x96905387, (q31_t)0xB796199B, - (q31_t)0x9673DB94, (q31_t)0xB7BF91F8, (q31_t)0x965773E7, - (q31_t)0xB7E9157A, (q31_t)0x963B1C85, (q31_t)0xB812A419, - (q31_t)0x961ED573, (q31_t)0xB83C3DD1, (q31_t)0x96029EB5, - (q31_t)0xB865E299, (q31_t)0x95E6784F, (q31_t)0xB88F926C, - (q31_t)0x95CA6246, (q31_t)0xB8B94D44, (q31_t)0x95AE5C9E, - (q31_t)0xB8E31319, (q31_t)0x9592675B, (q31_t)0xB90CE3E6, - (q31_t)0x95768282, (q31_t)0xB936BFA3, (q31_t)0x955AAE17, - (q31_t)0xB960A64B, (q31_t)0x953EEA1E, (q31_t)0xB98A97D8, - (q31_t)0x9523369B, (q31_t)0xB9B49442, (q31_t)0x95079393, - (q31_t)0xB9DE9B83, (q31_t)0x94EC010B, (q31_t)0xBA08AD94, - (q31_t)0x94D07F05, (q31_t)0xBA32CA70, (q31_t)0x94B50D87, - (q31_t)0xBA5CF210, (q31_t)0x9499AC95, (q31_t)0xBA87246C, - (q31_t)0x947E5C32, (q31_t)0xBAB1617F, (q31_t)0x94631C64, - (q31_t)0xBADBA943, (q31_t)0x9447ED2F, (q31_t)0xBB05FBB0, - (q31_t)0x942CCE95, (q31_t)0xBB3058C0, (q31_t)0x9411C09D, - (q31_t)0xBB5AC06C, (q31_t)0x93F6C34A, (q31_t)0xBB8532AF, - (q31_t)0x93DBD69F, (q31_t)0xBBAFAF81, (q31_t)0x93C0FAA2, - (q31_t)0xBBDA36DC, (q31_t)0x93A62F56, (q31_t)0xBC04C8BA, - (q31_t)0x938B74C0, (q31_t)0xBC2F6513, (q31_t)0x9370CAE4, - (q31_t)0xBC5A0BE1, (q31_t)0x935631C5, (q31_t)0xBC84BD1E, - (q31_t)0x933BA968, (q31_t)0xBCAF78C3, (q31_t)0x932131D1, - (q31_t)0xBCDA3ECA, (q31_t)0x9306CB04, (q31_t)0xBD050F2C, - (q31_t)0x92EC7505, (q31_t)0xBD2FE9E1, (q31_t)0x92D22FD8, - (q31_t)0xBD5ACEE5, (q31_t)0x92B7FB82, (q31_t)0xBD85BE2F, - (q31_t)0x929DD805, (q31_t)0xBDB0B7BA, (q31_t)0x9283C567, - (q31_t)0xBDDBBB7F, (q31_t)0x9269C3AC, (q31_t)0xBE06C977, - (q31_t)0x924FD2D6, (q31_t)0xBE31E19B, (q31_t)0x9235F2EB, - (q31_t)0xBE5D03E5, (q31_t)0x921C23EE, (q31_t)0xBE88304F, - (q31_t)0x920265E4, (q31_t)0xBEB366D1, (q31_t)0x91E8B8D0, - (q31_t)0xBEDEA765, (q31_t)0x91CF1CB6, (q31_t)0xBF09F204, - (q31_t)0x91B5919A, (q31_t)0xBF3546A8, (q31_t)0x919C1780, - (q31_t)0xBF60A54A, (q31_t)0x9182AE6C, (q31_t)0xBF8C0DE2, - (q31_t)0x91695663, (q31_t)0xBFB7806C, (q31_t)0x91500F67, - (q31_t)0xBFE2FCDF, (q31_t)0x9136D97D, (q31_t)0xC00E8335, - (q31_t)0x911DB4A8, (q31_t)0xC03A1368, (q31_t)0x9104A0ED, - (q31_t)0xC065AD70, (q31_t)0x90EB9E50, (q31_t)0xC0915147, - (q31_t)0x90D2ACD3, (q31_t)0xC0BCFEE7, (q31_t)0x90B9CC7C, - (q31_t)0xC0E8B648, (q31_t)0x90A0FD4E, (q31_t)0xC1147763, - (q31_t)0x90883F4C, (q31_t)0xC1404233, (q31_t)0x906F927B, - (q31_t)0xC16C16B0, (q31_t)0x9056F6DF, (q31_t)0xC197F4D3, - (q31_t)0x903E6C7A, (q31_t)0xC1C3DC96, (q31_t)0x9025F352, - (q31_t)0xC1EFCDF2, (q31_t)0x900D8B69, (q31_t)0xC21BC8E0, - (q31_t)0x8FF534C4, (q31_t)0xC247CD5A, (q31_t)0x8FDCEF66, - (q31_t)0xC273DB58, (q31_t)0x8FC4BB53, (q31_t)0xC29FF2D4, - (q31_t)0x8FAC988E, (q31_t)0xC2CC13C7, (q31_t)0x8F94871D, - (q31_t)0xC2F83E2A, (q31_t)0x8F7C8701, (q31_t)0xC32471F6, - (q31_t)0x8F64983F, (q31_t)0xC350AF25, (q31_t)0x8F4CBADB, - (q31_t)0xC37CF5B0, (q31_t)0x8F34EED8, (q31_t)0xC3A9458F, - (q31_t)0x8F1D343A, (q31_t)0xC3D59EBD, (q31_t)0x8F058B04, - (q31_t)0xC4020132, (q31_t)0x8EEDF33B, (q31_t)0xC42E6CE8, - (q31_t)0x8ED66CE1, (q31_t)0xC45AE1D7, (q31_t)0x8EBEF7FB, - (q31_t)0xC4875FF8, (q31_t)0x8EA7948C, (q31_t)0xC4B3E746, - (q31_t)0x8E904298, (q31_t)0xC4E077B8, (q31_t)0x8E790222, - (q31_t)0xC50D1148, (q31_t)0x8E61D32D, (q31_t)0xC539B3F0, - (q31_t)0x8E4AB5BF, (q31_t)0xC5665FA8, (q31_t)0x8E33A9D9, - (q31_t)0xC593146A, (q31_t)0x8E1CAF80, (q31_t)0xC5BFD22E, - (q31_t)0x8E05C6B7, (q31_t)0xC5EC98ED, (q31_t)0x8DEEEF82, - (q31_t)0xC61968A2, (q31_t)0x8DD829E4, (q31_t)0xC6464144, - (q31_t)0x8DC175E0, (q31_t)0xC67322CD, (q31_t)0x8DAAD37B, - (q31_t)0xC6A00D36, (q31_t)0x8D9442B7, (q31_t)0xC6CD0079, - (q31_t)0x8D7DC399, (q31_t)0xC6F9FC8D, (q31_t)0x8D675623, - (q31_t)0xC727016C, (q31_t)0x8D50FA59, (q31_t)0xC7540F10, - (q31_t)0x8D3AB03F, (q31_t)0xC7812571, (q31_t)0x8D2477D8, - (q31_t)0xC7AE4489, (q31_t)0x8D0E5127, (q31_t)0xC7DB6C50, - (q31_t)0x8CF83C30, (q31_t)0xC8089CBF, (q31_t)0x8CE238F6, - (q31_t)0xC835D5D0, (q31_t)0x8CCC477D, (q31_t)0xC863177B, - (q31_t)0x8CB667C7, (q31_t)0xC89061BA, (q31_t)0x8CA099D9, - (q31_t)0xC8BDB485, (q31_t)0x8C8ADDB6, (q31_t)0xC8EB0FD6, - (q31_t)0x8C753361, (q31_t)0xC91873A5, (q31_t)0x8C5F9ADD, - (q31_t)0xC945DFEC, (q31_t)0x8C4A142F, (q31_t)0xC97354A3, - (q31_t)0x8C349F58, (q31_t)0xC9A0D1C4, (q31_t)0x8C1F3C5C, - (q31_t)0xC9CE5748, (q31_t)0x8C09EB40, (q31_t)0xC9FBE527, - (q31_t)0x8BF4AC05, (q31_t)0xCA297B5A, (q31_t)0x8BDF7EAF, - (q31_t)0xCA5719DB, (q31_t)0x8BCA6342, (q31_t)0xCA84C0A2, - (q31_t)0x8BB559C1, (q31_t)0xCAB26FA9, (q31_t)0x8BA0622F, - (q31_t)0xCAE026E8, (q31_t)0x8B8B7C8F, (q31_t)0xCB0DE658, - (q31_t)0x8B76A8E4, (q31_t)0xCB3BADF2, (q31_t)0x8B61E732, - (q31_t)0xCB697DB0, (q31_t)0x8B4D377C, (q31_t)0xCB975589, - (q31_t)0x8B3899C5, (q31_t)0xCBC53578, (q31_t)0x8B240E10, - (q31_t)0xCBF31D75, (q31_t)0x8B0F9461, (q31_t)0xCC210D78, - (q31_t)0x8AFB2CBA, (q31_t)0xCC4F057B, (q31_t)0x8AE6D71F, - (q31_t)0xCC7D0577, (q31_t)0x8AD29393, (q31_t)0xCCAB0D65, - (q31_t)0x8ABE6219, (q31_t)0xCCD91D3D, (q31_t)0x8AAA42B4, - (q31_t)0xCD0734F8, (q31_t)0x8A963567, (q31_t)0xCD355490, - (q31_t)0x8A823A35, (q31_t)0xCD637BFD, (q31_t)0x8A6E5122, - (q31_t)0xCD91AB38, (q31_t)0x8A5A7A30, (q31_t)0xCDBFE23A, - (q31_t)0x8A46B563, (q31_t)0xCDEE20FC, (q31_t)0x8A3302BD, - (q31_t)0xCE1C6776, (q31_t)0x8A1F6242, (q31_t)0xCE4AB5A2, - (q31_t)0x8A0BD3F5, (q31_t)0xCE790B78, (q31_t)0x89F857D8, - (q31_t)0xCEA768F2, (q31_t)0x89E4EDEE, (q31_t)0xCED5CE08, - (q31_t)0x89D1963C, (q31_t)0xCF043AB2, (q31_t)0x89BE50C3, - (q31_t)0xCF32AEEB, (q31_t)0x89AB1D86, (q31_t)0xCF612AAA, - (q31_t)0x8997FC89, (q31_t)0xCF8FADE8, (q31_t)0x8984EDCF, - (q31_t)0xCFBE389F, (q31_t)0x8971F15A, (q31_t)0xCFECCAC7, - (q31_t)0x895F072D, (q31_t)0xD01B6459, (q31_t)0x894C2F4C, - (q31_t)0xD04A054D, (q31_t)0x893969B9, (q31_t)0xD078AD9D, - (q31_t)0x8926B677, (q31_t)0xD0A75D42, (q31_t)0x89141589, - (q31_t)0xD0D61433, (q31_t)0x890186F1, (q31_t)0xD104D26B, - (q31_t)0x88EF0AB4, (q31_t)0xD13397E1, (q31_t)0x88DCA0D3, - (q31_t)0xD162648F, (q31_t)0x88CA4951, (q31_t)0xD191386D, - (q31_t)0x88B80431, (q31_t)0xD1C01374, (q31_t)0x88A5D177, - (q31_t)0xD1EEF59E, (q31_t)0x8893B124, (q31_t)0xD21DDEE1, - (q31_t)0x8881A33C, (q31_t)0xD24CCF38, (q31_t)0x886FA7C2, - (q31_t)0xD27BC69C, (q31_t)0x885DBEB7, (q31_t)0xD2AAC504, - (q31_t)0x884BE820, (q31_t)0xD2D9CA6A, (q31_t)0x883A23FE, - (q31_t)0xD308D6C6, (q31_t)0x88287255, (q31_t)0xD337EA12, - (q31_t)0x8816D327, (q31_t)0xD3670445, (q31_t)0x88054677, - (q31_t)0xD3962559, (q31_t)0x87F3CC47, (q31_t)0xD3C54D46, - (q31_t)0x87E2649B, (q31_t)0xD3F47C06, (q31_t)0x87D10F75, - (q31_t)0xD423B190, (q31_t)0x87BFCCD7, (q31_t)0xD452EDDE, - (q31_t)0x87AE9CC5, (q31_t)0xD48230E8, (q31_t)0x879D7F40, - (q31_t)0xD4B17AA7, (q31_t)0x878C744C, (q31_t)0xD4E0CB14, - (q31_t)0x877B7BEC, (q31_t)0xD5102227, (q31_t)0x876A9621, - (q31_t)0xD53F7FDA, (q31_t)0x8759C2EF, (q31_t)0xD56EE424, - (q31_t)0x87490257, (q31_t)0xD59E4EFE, (q31_t)0x8738545E, - (q31_t)0xD5CDC062, (q31_t)0x8727B904, (q31_t)0xD5FD3847, - (q31_t)0x8717304E, (q31_t)0xD62CB6A7, (q31_t)0x8706BA3C, - (q31_t)0xD65C3B7B, (q31_t)0x86F656D3, (q31_t)0xD68BC6BA, - (q31_t)0x86E60614, (q31_t)0xD6BB585D, (q31_t)0x86D5C802, - (q31_t)0xD6EAF05E, (q31_t)0x86C59C9F, (q31_t)0xD71A8EB5, - (q31_t)0x86B583EE, (q31_t)0xD74A335A, (q31_t)0x86A57DF1, - (q31_t)0xD779DE46, (q31_t)0x86958AAB, (q31_t)0xD7A98F73, - (q31_t)0x8685AA1F, (q31_t)0xD7D946D7, (q31_t)0x8675DC4E, - (q31_t)0xD809046D, (q31_t)0x8666213C, (q31_t)0xD838C82D, - (q31_t)0x865678EA, (q31_t)0xD868920F, (q31_t)0x8646E35B, - (q31_t)0xD898620C, (q31_t)0x86376092, (q31_t)0xD8C8381C, - (q31_t)0x8627F090, (q31_t)0xD8F81439, (q31_t)0x86189359, - (q31_t)0xD927F65B, (q31_t)0x860948EE, (q31_t)0xD957DE7A, - (q31_t)0x85FA1152, (q31_t)0xD987CC8F, (q31_t)0x85EAEC88, - (q31_t)0xD9B7C093, (q31_t)0x85DBDA91, (q31_t)0xD9E7BA7E, - (q31_t)0x85CCDB70, (q31_t)0xDA17BA4A, (q31_t)0x85BDEF27, - (q31_t)0xDA47BFED, (q31_t)0x85AF15B9, (q31_t)0xDA77CB62, - (q31_t)0x85A04F28, (q31_t)0xDAA7DCA1, (q31_t)0x85919B75, - (q31_t)0xDAD7F3A2, (q31_t)0x8582FAA4, (q31_t)0xDB08105E, - (q31_t)0x85746CB7, (q31_t)0xDB3832CD, (q31_t)0x8565F1B0, - (q31_t)0xDB685AE8, (q31_t)0x85578991, (q31_t)0xDB9888A8, - (q31_t)0x8549345C, (q31_t)0xDBC8BC05, (q31_t)0x853AF214, - (q31_t)0xDBF8F4F8, (q31_t)0x852CC2BA, (q31_t)0xDC293379, - (q31_t)0x851EA652, (q31_t)0xDC597781, (q31_t)0x85109CDC, - (q31_t)0xDC89C108, (q31_t)0x8502A65C, (q31_t)0xDCBA1008, - (q31_t)0x84F4C2D3, (q31_t)0xDCEA6478, (q31_t)0x84E6F244, - (q31_t)0xDD1ABE51, (q31_t)0x84D934B0, (q31_t)0xDD4B1D8B, - (q31_t)0x84CB8A1B, (q31_t)0xDD7B8220, (q31_t)0x84BDF285, - (q31_t)0xDDABEC07, (q31_t)0x84B06DF1, (q31_t)0xDDDC5B3A, - (q31_t)0x84A2FC62, (q31_t)0xDE0CCFB1, (q31_t)0x84959DD9, - (q31_t)0xDE3D4963, (q31_t)0x84885257, (q31_t)0xDE6DC84B, - (q31_t)0x847B19E1, (q31_t)0xDE9E4C60, (q31_t)0x846DF476, - (q31_t)0xDECED59B, (q31_t)0x8460E21A, (q31_t)0xDEFF63F4, - (q31_t)0x8453E2CE, (q31_t)0xDF2FF764, (q31_t)0x8446F695, - (q31_t)0xDF608FE3, (q31_t)0x843A1D70, (q31_t)0xDF912D6A, - (q31_t)0x842D5761, (q31_t)0xDFC1CFF2, (q31_t)0x8420A46B, - (q31_t)0xDFF27773, (q31_t)0x8414048F, (q31_t)0xE02323E5, - (q31_t)0x840777CF, (q31_t)0xE053D541, (q31_t)0x83FAFE2E, - (q31_t)0xE0848B7F, (q31_t)0x83EE97AC, (q31_t)0xE0B54698, - (q31_t)0x83E2444D, (q31_t)0xE0E60684, (q31_t)0x83D60411, - (q31_t)0xE116CB3D, (q31_t)0x83C9D6FB, (q31_t)0xE14794B9, - (q31_t)0x83BDBD0D, (q31_t)0xE17862F3, (q31_t)0x83B1B649, - (q31_t)0xE1A935E1, (q31_t)0x83A5C2B0, (q31_t)0xE1DA0D7E, - (q31_t)0x8399E244, (q31_t)0xE20AE9C1, (q31_t)0x838E1507, - (q31_t)0xE23BCAA2, (q31_t)0x83825AFB, (q31_t)0xE26CB01A, - (q31_t)0x8376B422, (q31_t)0xE29D9A22, (q31_t)0x836B207D, - (q31_t)0xE2CE88B2, (q31_t)0x835FA00E, (q31_t)0xE2FF7BC3, - (q31_t)0x835432D8, (q31_t)0xE330734C, (q31_t)0x8348D8DB, - (q31_t)0xE3616F47, (q31_t)0x833D921A, (q31_t)0xE3926FAC, - (q31_t)0x83325E97, (q31_t)0xE3C37473, (q31_t)0x83273E52, - (q31_t)0xE3F47D95, (q31_t)0x831C314E, (q31_t)0xE4258B0A, - (q31_t)0x8311378C, (q31_t)0xE4569CCB, (q31_t)0x8306510F, - (q31_t)0xE487B2CF, (q31_t)0x82FB7DD8, (q31_t)0xE4B8CD10, - (q31_t)0x82F0BDE8, (q31_t)0xE4E9EB86, (q31_t)0x82E61141, - (q31_t)0xE51B0E2A, (q31_t)0x82DB77E5, (q31_t)0xE54C34F3, - (q31_t)0x82D0F1D5, (q31_t)0xE57D5FDA, (q31_t)0x82C67F13, - (q31_t)0xE5AE8ED8, (q31_t)0x82BC1FA1, (q31_t)0xE5DFC1E4, - (q31_t)0x82B1D381, (q31_t)0xE610F8F9, (q31_t)0x82A79AB3, - (q31_t)0xE642340D, (q31_t)0x829D753A, (q31_t)0xE6737319, - (q31_t)0x82936316, (q31_t)0xE6A4B616, (q31_t)0x8289644A, - (q31_t)0xE6D5FCFC, (q31_t)0x827F78D8, (q31_t)0xE70747C3, - (q31_t)0x8275A0C0, (q31_t)0xE7389664, (q31_t)0x826BDC04, - (q31_t)0xE769E8D8, (q31_t)0x82622AA5, (q31_t)0xE79B3F16, - (q31_t)0x82588CA6, (q31_t)0xE7CC9917, (q31_t)0x824F0208, - (q31_t)0xE7FDF6D3, (q31_t)0x82458ACB, (q31_t)0xE82F5844, - (q31_t)0x823C26F2, (q31_t)0xE860BD60, (q31_t)0x8232D67E, - (q31_t)0xE8922621, (q31_t)0x82299971, (q31_t)0xE8C3927F, - (q31_t)0x82206FCB, (q31_t)0xE8F50273, (q31_t)0x8217598F, - (q31_t)0xE92675F4, (q31_t)0x820E56BE, (q31_t)0xE957ECFB, - (q31_t)0x82056758, (q31_t)0xE9896780, (q31_t)0x81FC8B60, - (q31_t)0xE9BAE57C, (q31_t)0x81F3C2D7, (q31_t)0xE9EC66E8, - (q31_t)0x81EB0DBD, (q31_t)0xEA1DEBBB, (q31_t)0x81E26C16, - (q31_t)0xEA4F73EE, (q31_t)0x81D9DDE1, (q31_t)0xEA80FF79, - (q31_t)0x81D16320, (q31_t)0xEAB28E55, (q31_t)0x81C8FBD5, - (q31_t)0xEAE4207A, (q31_t)0x81C0A801, (q31_t)0xEB15B5E0, - (q31_t)0x81B867A4, (q31_t)0xEB474E80, (q31_t)0x81B03AC1, - (q31_t)0xEB78EA52, (q31_t)0x81A82159, (q31_t)0xEBAA894E, - (q31_t)0x81A01B6C, (q31_t)0xEBDC2B6D, (q31_t)0x819828FD, - (q31_t)0xEC0DD0A8, (q31_t)0x81904A0C, (q31_t)0xEC3F78F5, - (q31_t)0x81887E9A, (q31_t)0xEC71244F, (q31_t)0x8180C6A9, - (q31_t)0xECA2D2AC, (q31_t)0x8179223A, (q31_t)0xECD48406, - (q31_t)0x8171914E, (q31_t)0xED063855, (q31_t)0x816A13E6, - (q31_t)0xED37EF91, (q31_t)0x8162AA03, (q31_t)0xED69A9B2, - (q31_t)0x815B53A8, (q31_t)0xED9B66B2, (q31_t)0x815410D3, - (q31_t)0xEDCD2687, (q31_t)0x814CE188, (q31_t)0xEDFEE92B, - (q31_t)0x8145C5C6, (q31_t)0xEE30AE95, (q31_t)0x813EBD90, - (q31_t)0xEE6276BF, (q31_t)0x8137C8E6, (q31_t)0xEE9441A0, - (q31_t)0x8130E7C8, (q31_t)0xEEC60F31, (q31_t)0x812A1A39, - (q31_t)0xEEF7DF6A, (q31_t)0x81236039, (q31_t)0xEF29B243, - (q31_t)0x811CB9CA, (q31_t)0xEF5B87B5, (q31_t)0x811626EC, - (q31_t)0xEF8D5FB8, (q31_t)0x810FA7A0, (q31_t)0xEFBF3A44, - (q31_t)0x81093BE8, (q31_t)0xEFF11752, (q31_t)0x8102E3C3, - (q31_t)0xF022F6DA, (q31_t)0x80FC9F35, (q31_t)0xF054D8D4, - (q31_t)0x80F66E3C, (q31_t)0xF086BD39, (q31_t)0x80F050DB, - (q31_t)0xF0B8A401, (q31_t)0x80EA4712, (q31_t)0xF0EA8D23, - (q31_t)0x80E450E2, (q31_t)0xF11C789A, (q31_t)0x80DE6E4C, - (q31_t)0xF14E665C, (q31_t)0x80D89F51, (q31_t)0xF1805662, - (q31_t)0x80D2E3F1, (q31_t)0xF1B248A5, (q31_t)0x80CD3C2F, - (q31_t)0xF1E43D1C, (q31_t)0x80C7A80A, (q31_t)0xF21633C0, - (q31_t)0x80C22783, (q31_t)0xF2482C89, (q31_t)0x80BCBA9C, - (q31_t)0xF27A2770, (q31_t)0x80B76155, (q31_t)0xF2AC246D, - (q31_t)0x80B21BAF, (q31_t)0xF2DE2378, (q31_t)0x80ACE9AB, - (q31_t)0xF310248A, (q31_t)0x80A7CB49, (q31_t)0xF342279A, - (q31_t)0x80A2C08B, (q31_t)0xF3742CA1, (q31_t)0x809DC970, - (q31_t)0xF3A63398, (q31_t)0x8098E5FB, (q31_t)0xF3D83C76, - (q31_t)0x8094162B, (q31_t)0xF40A4734, (q31_t)0x808F5A02, - (q31_t)0xF43C53CA, (q31_t)0x808AB180, (q31_t)0xF46E6231, - (q31_t)0x80861CA5, (q31_t)0xF4A07260, (q31_t)0x80819B74, - (q31_t)0xF4D28451, (q31_t)0x807D2DEB, (q31_t)0xF50497FA, - (q31_t)0x8078D40D, (q31_t)0xF536AD55, (q31_t)0x80748DD9, - (q31_t)0xF568C45A, (q31_t)0x80705B50, (q31_t)0xF59ADD01, - (q31_t)0x806C3C73, (q31_t)0xF5CCF743, (q31_t)0x80683143, - (q31_t)0xF5FF1317, (q31_t)0x806439C0, (q31_t)0xF6313076, - (q31_t)0x806055EA, (q31_t)0xF6634F58, (q31_t)0x805C85C3, - (q31_t)0xF6956FB6, (q31_t)0x8058C94C, (q31_t)0xF6C79188, - (q31_t)0x80552083, (q31_t)0xF6F9B4C5, (q31_t)0x80518B6B, - (q31_t)0xF72BD967, (q31_t)0x804E0A03, (q31_t)0xF75DFF65, - (q31_t)0x804A9C4D, (q31_t)0xF79026B8, (q31_t)0x80474248, - (q31_t)0xF7C24F58, (q31_t)0x8043FBF6, (q31_t)0xF7F4793E, - (q31_t)0x8040C956, (q31_t)0xF826A461, (q31_t)0x803DAA69, - (q31_t)0xF858D0BA, (q31_t)0x803A9F31, (q31_t)0xF88AFE41, - (q31_t)0x8037A7AC, (q31_t)0xF8BD2CEF, (q31_t)0x8034C3DC, - (q31_t)0xF8EF5CBB, (q31_t)0x8031F3C1, (q31_t)0xF9218D9E, - (q31_t)0x802F375C, (q31_t)0xF953BF90, (q31_t)0x802C8EAD, - (q31_t)0xF985F28A, (q31_t)0x8029F9B4, (q31_t)0xF9B82683, - (q31_t)0x80277872, (q31_t)0xF9EA5B75, (q31_t)0x80250AE7, - (q31_t)0xFA1C9156, (q31_t)0x8022B113, (q31_t)0xFA4EC820, - (q31_t)0x80206AF8, (q31_t)0xFA80FFCB, (q31_t)0x801E3894, - (q31_t)0xFAB3384F, (q31_t)0x801C19E9, (q31_t)0xFAE571A4, - (q31_t)0x801A0EF7, (q31_t)0xFB17ABC2, (q31_t)0x801817BF, - (q31_t)0xFB49E6A2, (q31_t)0x80163440, (q31_t)0xFB7C223C, - (q31_t)0x8014647A, (q31_t)0xFBAE5E89, (q31_t)0x8012A86F, - (q31_t)0xFBE09B80, (q31_t)0x8011001E, (q31_t)0xFC12D919, - (q31_t)0x800F6B88, (q31_t)0xFC45174E, (q31_t)0x800DEAAC, - (q31_t)0xFC775616, (q31_t)0x800C7D8C, (q31_t)0xFCA99569, - (q31_t)0x800B2427, (q31_t)0xFCDBD541, (q31_t)0x8009DE7D, - (q31_t)0xFD0E1594, (q31_t)0x8008AC90, (q31_t)0xFD40565B, - (q31_t)0x80078E5E, (q31_t)0xFD72978F, (q31_t)0x800683E8, - (q31_t)0xFDA4D928, (q31_t)0x80058D2E, (q31_t)0xFDD71B1E, - (q31_t)0x8004AA31, (q31_t)0xFE095D69, (q31_t)0x8003DAF0, - (q31_t)0xFE3BA001, (q31_t)0x80031F6C, (q31_t)0xFE6DE2E0, - (q31_t)0x800277A5, (q31_t)0xFEA025FC, (q31_t)0x8001E39B, - (q31_t)0xFED2694F, (q31_t)0x8001634D, (q31_t)0xFF04ACD0, - (q31_t)0x8000F6BD, (q31_t)0xFF36F078, (q31_t)0x80009DE9, - (q31_t)0xFF69343E, (q31_t)0x800058D3, (q31_t)0xFF9B781D, - (q31_t)0x8000277A, (q31_t)0xFFCDBC0A, (q31_t)0x800009DE -}; - - - -/* -* @brief q15 Twiddle factors Table -*/ - - -/** -* \par -* Example code for q15 Twiddle factors Generation:: -* \par -*
for(i = 0; i< 3N/4; i++)
-* {
-*    twiddleCoefq15[2*i]= cos(i * 2*PI/(float)N);
-*    twiddleCoefq15[2*i+1]= sin(i * 2*PI/(float)N);
-* } 
-* \par -* where N = 16 and PI = 3.14159265358979 -* \par -* Cos and Sin values are interleaved fashion -* \par -* Convert Floating point to q15(Fixed point 1.15): -* round(twiddleCoefq15(i) * pow(2, 15)) -* -*/ -const q15_t twiddleCoef_16_q15[24] = { - (q15_t)0x7FFF, (q15_t)0x0000, - (q15_t)0x7641, (q15_t)0x30FB, - (q15_t)0x5A82, (q15_t)0x5A82, - (q15_t)0x30FB, (q15_t)0x7641, - (q15_t)0x0000, (q15_t)0x7FFF, - (q15_t)0xCF04, (q15_t)0x7641, - (q15_t)0xA57D, (q15_t)0x5A82, - (q15_t)0x89BE, (q15_t)0x30FB, - (q15_t)0x8000, (q15_t)0x0000, - (q15_t)0x89BE, (q15_t)0xCF04, - (q15_t)0xA57D, (q15_t)0xA57D, - (q15_t)0xCF04, (q15_t)0x89BE -}; - -/** -* \par -* Example code for q15 Twiddle factors Generation:: -* \par -*
for(i = 0; i< 3N/4; i++)
-* {
-*    twiddleCoefq15[2*i]= cos(i * 2*PI/(float)N);
-*    twiddleCoefq15[2*i+1]= sin(i * 2*PI/(float)N);
-* } 
-* \par -* where N = 32 and PI = 3.14159265358979 -* \par -* Cos and Sin values are interleaved fashion -* \par -* Convert Floating point to q15(Fixed point 1.15): -* round(twiddleCoefq15(i) * pow(2, 15)) -* -*/ -const q15_t twiddleCoef_32_q15[48] = { - (q15_t)0x7FFF, (q15_t)0x0000, - (q15_t)0x7D8A, (q15_t)0x18F8, - (q15_t)0x7641, (q15_t)0x30FB, - (q15_t)0x6A6D, (q15_t)0x471C, - (q15_t)0x5A82, (q15_t)0x5A82, - (q15_t)0x471C, (q15_t)0x6A6D, - (q15_t)0x30FB, (q15_t)0x7641, - (q15_t)0x18F8, (q15_t)0x7D8A, - (q15_t)0x0000, (q15_t)0x7FFF, - (q15_t)0xE707, (q15_t)0x7D8A, - (q15_t)0xCF04, (q15_t)0x7641, - (q15_t)0xB8E3, (q15_t)0x6A6D, - (q15_t)0xA57D, (q15_t)0x5A82, - (q15_t)0x9592, (q15_t)0x471C, - (q15_t)0x89BE, (q15_t)0x30FB, - (q15_t)0x8275, (q15_t)0x18F8, - (q15_t)0x8000, (q15_t)0x0000, - (q15_t)0x8275, (q15_t)0xE707, - (q15_t)0x89BE, (q15_t)0xCF04, - (q15_t)0x9592, (q15_t)0xB8E3, - (q15_t)0xA57D, (q15_t)0xA57D, - (q15_t)0xB8E3, (q15_t)0x9592, - (q15_t)0xCF04, (q15_t)0x89BE, - (q15_t)0xE707, (q15_t)0x8275 -}; - -/** -* \par -* Example code for q15 Twiddle factors Generation:: -* \par -*
for(i = 0; i< 3N/4; i++)
-* {
-*    twiddleCoefq15[2*i]= cos(i * 2*PI/(float)N);
-*    twiddleCoefq15[2*i+1]= sin(i * 2*PI/(float)N);
-* } 
-* \par -* where N = 64 and PI = 3.14159265358979 -* \par -* Cos and Sin values are interleaved fashion -* \par -* Convert Floating point to q15(Fixed point 1.15): -* round(twiddleCoefq15(i) * pow(2, 15)) -* -*/ -const q15_t twiddleCoef_64_q15[96] = { - (q15_t)0x7FFF, (q15_t)0x0000, (q15_t)0x7F62, (q15_t)0x0C8B, - (q15_t)0x7D8A, (q15_t)0x18F8, (q15_t)0x7A7D, (q15_t)0x2528, - (q15_t)0x7641, (q15_t)0x30FB, (q15_t)0x70E2, (q15_t)0x3C56, - (q15_t)0x6A6D, (q15_t)0x471C, (q15_t)0x62F2, (q15_t)0x5133, - (q15_t)0x5A82, (q15_t)0x5A82, (q15_t)0x5133, (q15_t)0x62F2, - (q15_t)0x471C, (q15_t)0x6A6D, (q15_t)0x3C56, (q15_t)0x70E2, - (q15_t)0x30FB, (q15_t)0x7641, (q15_t)0x2528, (q15_t)0x7A7D, - (q15_t)0x18F8, (q15_t)0x7D8A, (q15_t)0x0C8B, (q15_t)0x7F62, - (q15_t)0x0000, (q15_t)0x7FFF, (q15_t)0xF374, (q15_t)0x7F62, - (q15_t)0xE707, (q15_t)0x7D8A, (q15_t)0xDAD7, (q15_t)0x7A7D, - (q15_t)0xCF04, (q15_t)0x7641, (q15_t)0xC3A9, (q15_t)0x70E2, - (q15_t)0xB8E3, (q15_t)0x6A6D, (q15_t)0xAECC, (q15_t)0x62F2, - (q15_t)0xA57D, (q15_t)0x5A82, (q15_t)0x9D0D, (q15_t)0x5133, - (q15_t)0x9592, (q15_t)0x471C, (q15_t)0x8F1D, (q15_t)0x3C56, - (q15_t)0x89BE, (q15_t)0x30FB, (q15_t)0x8582, (q15_t)0x2528, - (q15_t)0x8275, (q15_t)0x18F8, (q15_t)0x809D, (q15_t)0x0C8B, - (q15_t)0x8000, (q15_t)0x0000, (q15_t)0x809D, (q15_t)0xF374, - (q15_t)0x8275, (q15_t)0xE707, (q15_t)0x8582, (q15_t)0xDAD7, - (q15_t)0x89BE, (q15_t)0xCF04, (q15_t)0x8F1D, (q15_t)0xC3A9, - (q15_t)0x9592, (q15_t)0xB8E3, (q15_t)0x9D0D, (q15_t)0xAECC, - (q15_t)0xA57D, (q15_t)0xA57D, (q15_t)0xAECC, (q15_t)0x9D0D, - (q15_t)0xB8E3, (q15_t)0x9592, (q15_t)0xC3A9, (q15_t)0x8F1D, - (q15_t)0xCF04, (q15_t)0x89BE, (q15_t)0xDAD7, (q15_t)0x8582, - (q15_t)0xE707, (q15_t)0x8275, (q15_t)0xF374, (q15_t)0x809D -}; - -/** -* \par -* Example code for q15 Twiddle factors Generation:: -* \par -*
for(i = 0; i< 3N/4; i++)
-* {
-*    twiddleCoefq15[2*i]= cos(i * 2*PI/(float)N);
-*    twiddleCoefq15[2*i+1]= sin(i * 2*PI/(float)N);
-* } 
-* \par -* where N = 128 and PI = 3.14159265358979 -* \par -* Cos and Sin values are interleaved fashion -* \par -* Convert Floating point to q15(Fixed point 1.15): -* round(twiddleCoefq15(i) * pow(2, 15)) -* -*/ -const q15_t twiddleCoef_128_q15[192] = { - (q15_t)0x7FFF, (q15_t)0x0000, (q15_t)0x7FD8, (q15_t)0x0647, - (q15_t)0x7F62, (q15_t)0x0C8B, (q15_t)0x7E9D, (q15_t)0x12C8, - (q15_t)0x7D8A, (q15_t)0x18F8, (q15_t)0x7C29, (q15_t)0x1F19, - (q15_t)0x7A7D, (q15_t)0x2528, (q15_t)0x7884, (q15_t)0x2B1F, - (q15_t)0x7641, (q15_t)0x30FB, (q15_t)0x73B5, (q15_t)0x36BA, - (q15_t)0x70E2, (q15_t)0x3C56, (q15_t)0x6DCA, (q15_t)0x41CE, - (q15_t)0x6A6D, (q15_t)0x471C, (q15_t)0x66CF, (q15_t)0x4C3F, - (q15_t)0x62F2, (q15_t)0x5133, (q15_t)0x5ED7, (q15_t)0x55F5, - (q15_t)0x5A82, (q15_t)0x5A82, (q15_t)0x55F5, (q15_t)0x5ED7, - (q15_t)0x5133, (q15_t)0x62F2, (q15_t)0x4C3F, (q15_t)0x66CF, - (q15_t)0x471C, (q15_t)0x6A6D, (q15_t)0x41CE, (q15_t)0x6DCA, - (q15_t)0x3C56, (q15_t)0x70E2, (q15_t)0x36BA, (q15_t)0x73B5, - (q15_t)0x30FB, (q15_t)0x7641, (q15_t)0x2B1F, (q15_t)0x7884, - (q15_t)0x2528, (q15_t)0x7A7D, (q15_t)0x1F19, (q15_t)0x7C29, - (q15_t)0x18F8, (q15_t)0x7D8A, (q15_t)0x12C8, (q15_t)0x7E9D, - (q15_t)0x0C8B, (q15_t)0x7F62, (q15_t)0x0647, (q15_t)0x7FD8, - (q15_t)0x0000, (q15_t)0x7FFF, (q15_t)0xF9B8, (q15_t)0x7FD8, - (q15_t)0xF374, (q15_t)0x7F62, (q15_t)0xED37, (q15_t)0x7E9D, - (q15_t)0xE707, (q15_t)0x7D8A, (q15_t)0xE0E6, (q15_t)0x7C29, - (q15_t)0xDAD7, (q15_t)0x7A7D, (q15_t)0xD4E0, (q15_t)0x7884, - (q15_t)0xCF04, (q15_t)0x7641, (q15_t)0xC945, (q15_t)0x73B5, - (q15_t)0xC3A9, (q15_t)0x70E2, (q15_t)0xBE31, (q15_t)0x6DCA, - (q15_t)0xB8E3, (q15_t)0x6A6D, (q15_t)0xB3C0, (q15_t)0x66CF, - (q15_t)0xAECC, (q15_t)0x62F2, (q15_t)0xAA0A, (q15_t)0x5ED7, - (q15_t)0xA57D, (q15_t)0x5A82, (q15_t)0xA128, (q15_t)0x55F5, - (q15_t)0x9D0D, (q15_t)0x5133, (q15_t)0x9930, (q15_t)0x4C3F, - (q15_t)0x9592, (q15_t)0x471C, (q15_t)0x9235, (q15_t)0x41CE, - (q15_t)0x8F1D, (q15_t)0x3C56, (q15_t)0x8C4A, (q15_t)0x36BA, - (q15_t)0x89BE, (q15_t)0x30FB, (q15_t)0x877B, (q15_t)0x2B1F, - (q15_t)0x8582, (q15_t)0x2528, (q15_t)0x83D6, (q15_t)0x1F19, - (q15_t)0x8275, (q15_t)0x18F8, (q15_t)0x8162, (q15_t)0x12C8, - (q15_t)0x809D, (q15_t)0x0C8B, (q15_t)0x8027, (q15_t)0x0647, - (q15_t)0x8000, (q15_t)0x0000, (q15_t)0x8027, (q15_t)0xF9B8, - (q15_t)0x809D, (q15_t)0xF374, (q15_t)0x8162, (q15_t)0xED37, - (q15_t)0x8275, (q15_t)0xE707, (q15_t)0x83D6, (q15_t)0xE0E6, - (q15_t)0x8582, (q15_t)0xDAD7, (q15_t)0x877B, (q15_t)0xD4E0, - (q15_t)0x89BE, (q15_t)0xCF04, (q15_t)0x8C4A, (q15_t)0xC945, - (q15_t)0x8F1D, (q15_t)0xC3A9, (q15_t)0x9235, (q15_t)0xBE31, - (q15_t)0x9592, (q15_t)0xB8E3, (q15_t)0x9930, (q15_t)0xB3C0, - (q15_t)0x9D0D, (q15_t)0xAECC, (q15_t)0xA128, (q15_t)0xAA0A, - (q15_t)0xA57D, (q15_t)0xA57D, (q15_t)0xAA0A, (q15_t)0xA128, - (q15_t)0xAECC, (q15_t)0x9D0D, (q15_t)0xB3C0, (q15_t)0x9930, - (q15_t)0xB8E3, (q15_t)0x9592, (q15_t)0xBE31, (q15_t)0x9235, - (q15_t)0xC3A9, (q15_t)0x8F1D, (q15_t)0xC945, (q15_t)0x8C4A, - (q15_t)0xCF04, (q15_t)0x89BE, (q15_t)0xD4E0, (q15_t)0x877B, - (q15_t)0xDAD7, (q15_t)0x8582, (q15_t)0xE0E6, (q15_t)0x83D6, - (q15_t)0xE707, (q15_t)0x8275, (q15_t)0xED37, (q15_t)0x8162, - (q15_t)0xF374, (q15_t)0x809D, (q15_t)0xF9B8, (q15_t)0x8027 -}; - -/** -* \par -* Example code for q15 Twiddle factors Generation:: -* \par -*
for(i = 0; i< 3N/4; i++)
-* {
-*    twiddleCoefq15[2*i]= cos(i * 2*PI/(float)N);
-*    twiddleCoefq15[2*i+1]= sin(i * 2*PI/(float)N);
-* } 
-* \par -* where N = 256 and PI = 3.14159265358979 -* \par -* Cos and Sin values are interleaved fashion -* \par -* Convert Floating point to q15(Fixed point 1.15): -* round(twiddleCoefq15(i) * pow(2, 15)) -* -*/ -const q15_t twiddleCoef_256_q15[384] = { - (q15_t)0x7FFF, (q15_t)0x0000, (q15_t)0x7FF6, (q15_t)0x0324, - (q15_t)0x7FD8, (q15_t)0x0647, (q15_t)0x7FA7, (q15_t)0x096A, - (q15_t)0x7F62, (q15_t)0x0C8B, (q15_t)0x7F09, (q15_t)0x0FAB, - (q15_t)0x7E9D, (q15_t)0x12C8, (q15_t)0x7E1D, (q15_t)0x15E2, - (q15_t)0x7D8A, (q15_t)0x18F8, (q15_t)0x7CE3, (q15_t)0x1C0B, - (q15_t)0x7C29, (q15_t)0x1F19, (q15_t)0x7B5D, (q15_t)0x2223, - (q15_t)0x7A7D, (q15_t)0x2528, (q15_t)0x798A, (q15_t)0x2826, - (q15_t)0x7884, (q15_t)0x2B1F, (q15_t)0x776C, (q15_t)0x2E11, - (q15_t)0x7641, (q15_t)0x30FB, (q15_t)0x7504, (q15_t)0x33DE, - (q15_t)0x73B5, (q15_t)0x36BA, (q15_t)0x7255, (q15_t)0x398C, - (q15_t)0x70E2, (q15_t)0x3C56, (q15_t)0x6F5F, (q15_t)0x3F17, - (q15_t)0x6DCA, (q15_t)0x41CE, (q15_t)0x6C24, (q15_t)0x447A, - (q15_t)0x6A6D, (q15_t)0x471C, (q15_t)0x68A6, (q15_t)0x49B4, - (q15_t)0x66CF, (q15_t)0x4C3F, (q15_t)0x64E8, (q15_t)0x4EBF, - (q15_t)0x62F2, (q15_t)0x5133, (q15_t)0x60EC, (q15_t)0x539B, - (q15_t)0x5ED7, (q15_t)0x55F5, (q15_t)0x5CB4, (q15_t)0x5842, - (q15_t)0x5A82, (q15_t)0x5A82, (q15_t)0x5842, (q15_t)0x5CB4, - (q15_t)0x55F5, (q15_t)0x5ED7, (q15_t)0x539B, (q15_t)0x60EC, - (q15_t)0x5133, (q15_t)0x62F2, (q15_t)0x4EBF, (q15_t)0x64E8, - (q15_t)0x4C3F, (q15_t)0x66CF, (q15_t)0x49B4, (q15_t)0x68A6, - (q15_t)0x471C, (q15_t)0x6A6D, (q15_t)0x447A, (q15_t)0x6C24, - (q15_t)0x41CE, (q15_t)0x6DCA, (q15_t)0x3F17, (q15_t)0x6F5F, - (q15_t)0x3C56, (q15_t)0x70E2, (q15_t)0x398C, (q15_t)0x7255, - (q15_t)0x36BA, (q15_t)0x73B5, (q15_t)0x33DE, (q15_t)0x7504, - (q15_t)0x30FB, (q15_t)0x7641, (q15_t)0x2E11, (q15_t)0x776C, - (q15_t)0x2B1F, (q15_t)0x7884, (q15_t)0x2826, (q15_t)0x798A, - (q15_t)0x2528, (q15_t)0x7A7D, (q15_t)0x2223, (q15_t)0x7B5D, - (q15_t)0x1F19, (q15_t)0x7C29, (q15_t)0x1C0B, (q15_t)0x7CE3, - (q15_t)0x18F8, (q15_t)0x7D8A, (q15_t)0x15E2, (q15_t)0x7E1D, - (q15_t)0x12C8, (q15_t)0x7E9D, (q15_t)0x0FAB, (q15_t)0x7F09, - (q15_t)0x0C8B, (q15_t)0x7F62, (q15_t)0x096A, (q15_t)0x7FA7, - (q15_t)0x0647, (q15_t)0x7FD8, (q15_t)0x0324, (q15_t)0x7FF6, - (q15_t)0x0000, (q15_t)0x7FFF, (q15_t)0xFCDB, (q15_t)0x7FF6, - (q15_t)0xF9B8, (q15_t)0x7FD8, (q15_t)0xF695, (q15_t)0x7FA7, - (q15_t)0xF374, (q15_t)0x7F62, (q15_t)0xF054, (q15_t)0x7F09, - (q15_t)0xED37, (q15_t)0x7E9D, (q15_t)0xEA1D, (q15_t)0x7E1D, - (q15_t)0xE707, (q15_t)0x7D8A, (q15_t)0xE3F4, (q15_t)0x7CE3, - (q15_t)0xE0E6, (q15_t)0x7C29, (q15_t)0xDDDC, (q15_t)0x7B5D, - (q15_t)0xDAD7, (q15_t)0x7A7D, (q15_t)0xD7D9, (q15_t)0x798A, - (q15_t)0xD4E0, (q15_t)0x7884, (q15_t)0xD1EE, (q15_t)0x776C, - (q15_t)0xCF04, (q15_t)0x7641, (q15_t)0xCC21, (q15_t)0x7504, - (q15_t)0xC945, (q15_t)0x73B5, (q15_t)0xC673, (q15_t)0x7255, - (q15_t)0xC3A9, (q15_t)0x70E2, (q15_t)0xC0E8, (q15_t)0x6F5F, - (q15_t)0xBE31, (q15_t)0x6DCA, (q15_t)0xBB85, (q15_t)0x6C24, - (q15_t)0xB8E3, (q15_t)0x6A6D, (q15_t)0xB64B, (q15_t)0x68A6, - (q15_t)0xB3C0, (q15_t)0x66CF, (q15_t)0xB140, (q15_t)0x64E8, - (q15_t)0xAECC, (q15_t)0x62F2, (q15_t)0xAC64, (q15_t)0x60EC, - (q15_t)0xAA0A, (q15_t)0x5ED7, (q15_t)0xA7BD, (q15_t)0x5CB4, - (q15_t)0xA57D, (q15_t)0x5A82, (q15_t)0xA34B, (q15_t)0x5842, - (q15_t)0xA128, (q15_t)0x55F5, (q15_t)0x9F13, (q15_t)0x539B, - (q15_t)0x9D0D, (q15_t)0x5133, (q15_t)0x9B17, (q15_t)0x4EBF, - (q15_t)0x9930, (q15_t)0x4C3F, (q15_t)0x9759, (q15_t)0x49B4, - (q15_t)0x9592, (q15_t)0x471C, (q15_t)0x93DB, (q15_t)0x447A, - (q15_t)0x9235, (q15_t)0x41CE, (q15_t)0x90A0, (q15_t)0x3F17, - (q15_t)0x8F1D, (q15_t)0x3C56, (q15_t)0x8DAA, (q15_t)0x398C, - (q15_t)0x8C4A, (q15_t)0x36BA, (q15_t)0x8AFB, (q15_t)0x33DE, - (q15_t)0x89BE, (q15_t)0x30FB, (q15_t)0x8893, (q15_t)0x2E11, - (q15_t)0x877B, (q15_t)0x2B1F, (q15_t)0x8675, (q15_t)0x2826, - (q15_t)0x8582, (q15_t)0x2528, (q15_t)0x84A2, (q15_t)0x2223, - (q15_t)0x83D6, (q15_t)0x1F19, (q15_t)0x831C, (q15_t)0x1C0B, - (q15_t)0x8275, (q15_t)0x18F8, (q15_t)0x81E2, (q15_t)0x15E2, - (q15_t)0x8162, (q15_t)0x12C8, (q15_t)0x80F6, (q15_t)0x0FAB, - (q15_t)0x809D, (q15_t)0x0C8B, (q15_t)0x8058, (q15_t)0x096A, - (q15_t)0x8027, (q15_t)0x0647, (q15_t)0x8009, (q15_t)0x0324, - (q15_t)0x8000, (q15_t)0x0000, (q15_t)0x8009, (q15_t)0xFCDB, - (q15_t)0x8027, (q15_t)0xF9B8, (q15_t)0x8058, (q15_t)0xF695, - (q15_t)0x809D, (q15_t)0xF374, (q15_t)0x80F6, (q15_t)0xF054, - (q15_t)0x8162, (q15_t)0xED37, (q15_t)0x81E2, (q15_t)0xEA1D, - (q15_t)0x8275, (q15_t)0xE707, (q15_t)0x831C, (q15_t)0xE3F4, - (q15_t)0x83D6, (q15_t)0xE0E6, (q15_t)0x84A2, (q15_t)0xDDDC, - (q15_t)0x8582, (q15_t)0xDAD7, (q15_t)0x8675, (q15_t)0xD7D9, - (q15_t)0x877B, (q15_t)0xD4E0, (q15_t)0x8893, (q15_t)0xD1EE, - (q15_t)0x89BE, (q15_t)0xCF04, (q15_t)0x8AFB, (q15_t)0xCC21, - (q15_t)0x8C4A, (q15_t)0xC945, (q15_t)0x8DAA, (q15_t)0xC673, - (q15_t)0x8F1D, (q15_t)0xC3A9, (q15_t)0x90A0, (q15_t)0xC0E8, - (q15_t)0x9235, (q15_t)0xBE31, (q15_t)0x93DB, (q15_t)0xBB85, - (q15_t)0x9592, (q15_t)0xB8E3, (q15_t)0x9759, (q15_t)0xB64B, - (q15_t)0x9930, (q15_t)0xB3C0, (q15_t)0x9B17, (q15_t)0xB140, - (q15_t)0x9D0D, (q15_t)0xAECC, (q15_t)0x9F13, (q15_t)0xAC64, - (q15_t)0xA128, (q15_t)0xAA0A, (q15_t)0xA34B, (q15_t)0xA7BD, - (q15_t)0xA57D, (q15_t)0xA57D, (q15_t)0xA7BD, (q15_t)0xA34B, - (q15_t)0xAA0A, (q15_t)0xA128, (q15_t)0xAC64, (q15_t)0x9F13, - (q15_t)0xAECC, (q15_t)0x9D0D, (q15_t)0xB140, (q15_t)0x9B17, - (q15_t)0xB3C0, (q15_t)0x9930, (q15_t)0xB64B, (q15_t)0x9759, - (q15_t)0xB8E3, (q15_t)0x9592, (q15_t)0xBB85, (q15_t)0x93DB, - (q15_t)0xBE31, (q15_t)0x9235, (q15_t)0xC0E8, (q15_t)0x90A0, - (q15_t)0xC3A9, (q15_t)0x8F1D, (q15_t)0xC673, (q15_t)0x8DAA, - (q15_t)0xC945, (q15_t)0x8C4A, (q15_t)0xCC21, (q15_t)0x8AFB, - (q15_t)0xCF04, (q15_t)0x89BE, (q15_t)0xD1EE, (q15_t)0x8893, - (q15_t)0xD4E0, (q15_t)0x877B, (q15_t)0xD7D9, (q15_t)0x8675, - (q15_t)0xDAD7, (q15_t)0x8582, (q15_t)0xDDDC, (q15_t)0x84A2, - (q15_t)0xE0E6, (q15_t)0x83D6, (q15_t)0xE3F4, (q15_t)0x831C, - (q15_t)0xE707, (q15_t)0x8275, (q15_t)0xEA1D, (q15_t)0x81E2, - (q15_t)0xED37, (q15_t)0x8162, (q15_t)0xF054, (q15_t)0x80F6, - (q15_t)0xF374, (q15_t)0x809D, (q15_t)0xF695, (q15_t)0x8058, - (q15_t)0xF9B8, (q15_t)0x8027, (q15_t)0xFCDB, (q15_t)0x8009 -}; - -/** -* \par -* Example code for q15 Twiddle factors Generation:: -* \par -*
for(i = 0; i< 3N/4; i++)
-* {
-*    twiddleCoefq15[2*i]= cos(i * 2*PI/(float)N);
-*    twiddleCoefq15[2*i+1]= sin(i * 2*PI/(float)N);
-* } 
-* \par -* where N = 512 and PI = 3.14159265358979 -* \par -* Cos and Sin values are interleaved fashion -* \par -* Convert Floating point to q15(Fixed point 1.15): -* round(twiddleCoefq15(i) * pow(2, 15)) -* -*/ -const q15_t twiddleCoef_512_q15[768] = { - (q15_t)0x7FFF, (q15_t)0x0000, (q15_t)0x7FFD, (q15_t)0x0192, - (q15_t)0x7FF6, (q15_t)0x0324, (q15_t)0x7FE9, (q15_t)0x04B6, - (q15_t)0x7FD8, (q15_t)0x0647, (q15_t)0x7FC2, (q15_t)0x07D9, - (q15_t)0x7FA7, (q15_t)0x096A, (q15_t)0x7F87, (q15_t)0x0AFB, - (q15_t)0x7F62, (q15_t)0x0C8B, (q15_t)0x7F38, (q15_t)0x0E1B, - (q15_t)0x7F09, (q15_t)0x0FAB, (q15_t)0x7ED5, (q15_t)0x1139, - (q15_t)0x7E9D, (q15_t)0x12C8, (q15_t)0x7E5F, (q15_t)0x1455, - (q15_t)0x7E1D, (q15_t)0x15E2, (q15_t)0x7DD6, (q15_t)0x176D, - (q15_t)0x7D8A, (q15_t)0x18F8, (q15_t)0x7D39, (q15_t)0x1A82, - (q15_t)0x7CE3, (q15_t)0x1C0B, (q15_t)0x7C89, (q15_t)0x1D93, - (q15_t)0x7C29, (q15_t)0x1F19, (q15_t)0x7BC5, (q15_t)0x209F, - (q15_t)0x7B5D, (q15_t)0x2223, (q15_t)0x7AEF, (q15_t)0x23A6, - (q15_t)0x7A7D, (q15_t)0x2528, (q15_t)0x7A05, (q15_t)0x26A8, - (q15_t)0x798A, (q15_t)0x2826, (q15_t)0x7909, (q15_t)0x29A3, - (q15_t)0x7884, (q15_t)0x2B1F, (q15_t)0x77FA, (q15_t)0x2C98, - (q15_t)0x776C, (q15_t)0x2E11, (q15_t)0x76D9, (q15_t)0x2F87, - (q15_t)0x7641, (q15_t)0x30FB, (q15_t)0x75A5, (q15_t)0x326E, - (q15_t)0x7504, (q15_t)0x33DE, (q15_t)0x745F, (q15_t)0x354D, - (q15_t)0x73B5, (q15_t)0x36BA, (q15_t)0x7307, (q15_t)0x3824, - (q15_t)0x7255, (q15_t)0x398C, (q15_t)0x719E, (q15_t)0x3AF2, - (q15_t)0x70E2, (q15_t)0x3C56, (q15_t)0x7023, (q15_t)0x3DB8, - (q15_t)0x6F5F, (q15_t)0x3F17, (q15_t)0x6E96, (q15_t)0x4073, - (q15_t)0x6DCA, (q15_t)0x41CE, (q15_t)0x6CF9, (q15_t)0x4325, - (q15_t)0x6C24, (q15_t)0x447A, (q15_t)0x6B4A, (q15_t)0x45CD, - (q15_t)0x6A6D, (q15_t)0x471C, (q15_t)0x698C, (q15_t)0x4869, - (q15_t)0x68A6, (q15_t)0x49B4, (q15_t)0x67BD, (q15_t)0x4AFB, - (q15_t)0x66CF, (q15_t)0x4C3F, (q15_t)0x65DD, (q15_t)0x4D81, - (q15_t)0x64E8, (q15_t)0x4EBF, (q15_t)0x63EF, (q15_t)0x4FFB, - (q15_t)0x62F2, (q15_t)0x5133, (q15_t)0x61F1, (q15_t)0x5269, - (q15_t)0x60EC, (q15_t)0x539B, (q15_t)0x5FE3, (q15_t)0x54CA, - (q15_t)0x5ED7, (q15_t)0x55F5, (q15_t)0x5DC7, (q15_t)0x571D, - (q15_t)0x5CB4, (q15_t)0x5842, (q15_t)0x5B9D, (q15_t)0x5964, - (q15_t)0x5A82, (q15_t)0x5A82, (q15_t)0x5964, (q15_t)0x5B9D, - (q15_t)0x5842, (q15_t)0x5CB4, (q15_t)0x571D, (q15_t)0x5DC7, - (q15_t)0x55F5, (q15_t)0x5ED7, (q15_t)0x54CA, (q15_t)0x5FE3, - (q15_t)0x539B, (q15_t)0x60EC, (q15_t)0x5269, (q15_t)0x61F1, - (q15_t)0x5133, (q15_t)0x62F2, (q15_t)0x4FFB, (q15_t)0x63EF, - (q15_t)0x4EBF, (q15_t)0x64E8, (q15_t)0x4D81, (q15_t)0x65DD, - (q15_t)0x4C3F, (q15_t)0x66CF, (q15_t)0x4AFB, (q15_t)0x67BD, - (q15_t)0x49B4, (q15_t)0x68A6, (q15_t)0x4869, (q15_t)0x698C, - (q15_t)0x471C, (q15_t)0x6A6D, (q15_t)0x45CD, (q15_t)0x6B4A, - (q15_t)0x447A, (q15_t)0x6C24, (q15_t)0x4325, (q15_t)0x6CF9, - (q15_t)0x41CE, (q15_t)0x6DCA, (q15_t)0x4073, (q15_t)0x6E96, - (q15_t)0x3F17, (q15_t)0x6F5F, (q15_t)0x3DB8, (q15_t)0x7023, - (q15_t)0x3C56, (q15_t)0x70E2, (q15_t)0x3AF2, (q15_t)0x719E, - (q15_t)0x398C, (q15_t)0x7255, (q15_t)0x3824, (q15_t)0x7307, - (q15_t)0x36BA, (q15_t)0x73B5, (q15_t)0x354D, (q15_t)0x745F, - (q15_t)0x33DE, (q15_t)0x7504, (q15_t)0x326E, (q15_t)0x75A5, - (q15_t)0x30FB, (q15_t)0x7641, (q15_t)0x2F87, (q15_t)0x76D9, - (q15_t)0x2E11, (q15_t)0x776C, (q15_t)0x2C98, (q15_t)0x77FA, - (q15_t)0x2B1F, (q15_t)0x7884, (q15_t)0x29A3, (q15_t)0x7909, - (q15_t)0x2826, (q15_t)0x798A, (q15_t)0x26A8, (q15_t)0x7A05, - (q15_t)0x2528, (q15_t)0x7A7D, (q15_t)0x23A6, (q15_t)0x7AEF, - (q15_t)0x2223, (q15_t)0x7B5D, (q15_t)0x209F, (q15_t)0x7BC5, - (q15_t)0x1F19, (q15_t)0x7C29, (q15_t)0x1D93, (q15_t)0x7C89, - (q15_t)0x1C0B, (q15_t)0x7CE3, (q15_t)0x1A82, (q15_t)0x7D39, - (q15_t)0x18F8, (q15_t)0x7D8A, (q15_t)0x176D, (q15_t)0x7DD6, - (q15_t)0x15E2, (q15_t)0x7E1D, (q15_t)0x1455, (q15_t)0x7E5F, - (q15_t)0x12C8, (q15_t)0x7E9D, (q15_t)0x1139, (q15_t)0x7ED5, - (q15_t)0x0FAB, (q15_t)0x7F09, (q15_t)0x0E1B, (q15_t)0x7F38, - (q15_t)0x0C8B, (q15_t)0x7F62, (q15_t)0x0AFB, (q15_t)0x7F87, - (q15_t)0x096A, (q15_t)0x7FA7, (q15_t)0x07D9, (q15_t)0x7FC2, - (q15_t)0x0647, (q15_t)0x7FD8, (q15_t)0x04B6, (q15_t)0x7FE9, - (q15_t)0x0324, (q15_t)0x7FF6, (q15_t)0x0192, (q15_t)0x7FFD, - (q15_t)0x0000, (q15_t)0x7FFF, (q15_t)0xFE6D, (q15_t)0x7FFD, - (q15_t)0xFCDB, (q15_t)0x7FF6, (q15_t)0xFB49, (q15_t)0x7FE9, - (q15_t)0xF9B8, (q15_t)0x7FD8, (q15_t)0xF826, (q15_t)0x7FC2, - (q15_t)0xF695, (q15_t)0x7FA7, (q15_t)0xF504, (q15_t)0x7F87, - (q15_t)0xF374, (q15_t)0x7F62, (q15_t)0xF1E4, (q15_t)0x7F38, - (q15_t)0xF054, (q15_t)0x7F09, (q15_t)0xEEC6, (q15_t)0x7ED5, - (q15_t)0xED37, (q15_t)0x7E9D, (q15_t)0xEBAA, (q15_t)0x7E5F, - (q15_t)0xEA1D, (q15_t)0x7E1D, (q15_t)0xE892, (q15_t)0x7DD6, - (q15_t)0xE707, (q15_t)0x7D8A, (q15_t)0xE57D, (q15_t)0x7D39, - (q15_t)0xE3F4, (q15_t)0x7CE3, (q15_t)0xE26C, (q15_t)0x7C89, - (q15_t)0xE0E6, (q15_t)0x7C29, (q15_t)0xDF60, (q15_t)0x7BC5, - (q15_t)0xDDDC, (q15_t)0x7B5D, (q15_t)0xDC59, (q15_t)0x7AEF, - (q15_t)0xDAD7, (q15_t)0x7A7D, (q15_t)0xD957, (q15_t)0x7A05, - (q15_t)0xD7D9, (q15_t)0x798A, (q15_t)0xD65C, (q15_t)0x7909, - (q15_t)0xD4E0, (q15_t)0x7884, (q15_t)0xD367, (q15_t)0x77FA, - (q15_t)0xD1EE, (q15_t)0x776C, (q15_t)0xD078, (q15_t)0x76D9, - (q15_t)0xCF04, (q15_t)0x7641, (q15_t)0xCD91, (q15_t)0x75A5, - (q15_t)0xCC21, (q15_t)0x7504, (q15_t)0xCAB2, (q15_t)0x745F, - (q15_t)0xC945, (q15_t)0x73B5, (q15_t)0xC7DB, (q15_t)0x7307, - (q15_t)0xC673, (q15_t)0x7255, (q15_t)0xC50D, (q15_t)0x719E, - (q15_t)0xC3A9, (q15_t)0x70E2, (q15_t)0xC247, (q15_t)0x7023, - (q15_t)0xC0E8, (q15_t)0x6F5F, (q15_t)0xBF8C, (q15_t)0x6E96, - (q15_t)0xBE31, (q15_t)0x6DCA, (q15_t)0xBCDA, (q15_t)0x6CF9, - (q15_t)0xBB85, (q15_t)0x6C24, (q15_t)0xBA32, (q15_t)0x6B4A, - (q15_t)0xB8E3, (q15_t)0x6A6D, (q15_t)0xB796, (q15_t)0x698C, - (q15_t)0xB64B, (q15_t)0x68A6, (q15_t)0xB504, (q15_t)0x67BD, - (q15_t)0xB3C0, (q15_t)0x66CF, (q15_t)0xB27E, (q15_t)0x65DD, - (q15_t)0xB140, (q15_t)0x64E8, (q15_t)0xB004, (q15_t)0x63EF, - (q15_t)0xAECC, (q15_t)0x62F2, (q15_t)0xAD96, (q15_t)0x61F1, - (q15_t)0xAC64, (q15_t)0x60EC, (q15_t)0xAB35, (q15_t)0x5FE3, - (q15_t)0xAA0A, (q15_t)0x5ED7, (q15_t)0xA8E2, (q15_t)0x5DC7, - (q15_t)0xA7BD, (q15_t)0x5CB4, (q15_t)0xA69B, (q15_t)0x5B9D, - (q15_t)0xA57D, (q15_t)0x5A82, (q15_t)0xA462, (q15_t)0x5964, - (q15_t)0xA34B, (q15_t)0x5842, (q15_t)0xA238, (q15_t)0x571D, - (q15_t)0xA128, (q15_t)0x55F5, (q15_t)0xA01C, (q15_t)0x54CA, - (q15_t)0x9F13, (q15_t)0x539B, (q15_t)0x9E0E, (q15_t)0x5269, - (q15_t)0x9D0D, (q15_t)0x5133, (q15_t)0x9C10, (q15_t)0x4FFB, - (q15_t)0x9B17, (q15_t)0x4EBF, (q15_t)0x9A22, (q15_t)0x4D81, - (q15_t)0x9930, (q15_t)0x4C3F, (q15_t)0x9842, (q15_t)0x4AFB, - (q15_t)0x9759, (q15_t)0x49B4, (q15_t)0x9673, (q15_t)0x4869, - (q15_t)0x9592, (q15_t)0x471C, (q15_t)0x94B5, (q15_t)0x45CD, - (q15_t)0x93DB, (q15_t)0x447A, (q15_t)0x9306, (q15_t)0x4325, - (q15_t)0x9235, (q15_t)0x41CE, (q15_t)0x9169, (q15_t)0x4073, - (q15_t)0x90A0, (q15_t)0x3F17, (q15_t)0x8FDC, (q15_t)0x3DB8, - (q15_t)0x8F1D, (q15_t)0x3C56, (q15_t)0x8E61, (q15_t)0x3AF2, - (q15_t)0x8DAA, (q15_t)0x398C, (q15_t)0x8CF8, (q15_t)0x3824, - (q15_t)0x8C4A, (q15_t)0x36BA, (q15_t)0x8BA0, (q15_t)0x354D, - (q15_t)0x8AFB, (q15_t)0x33DE, (q15_t)0x8A5A, (q15_t)0x326E, - (q15_t)0x89BE, (q15_t)0x30FB, (q15_t)0x8926, (q15_t)0x2F87, - (q15_t)0x8893, (q15_t)0x2E11, (q15_t)0x8805, (q15_t)0x2C98, - (q15_t)0x877B, (q15_t)0x2B1F, (q15_t)0x86F6, (q15_t)0x29A3, - (q15_t)0x8675, (q15_t)0x2826, (q15_t)0x85FA, (q15_t)0x26A8, - (q15_t)0x8582, (q15_t)0x2528, (q15_t)0x8510, (q15_t)0x23A6, - (q15_t)0x84A2, (q15_t)0x2223, (q15_t)0x843A, (q15_t)0x209F, - (q15_t)0x83D6, (q15_t)0x1F19, (q15_t)0x8376, (q15_t)0x1D93, - (q15_t)0x831C, (q15_t)0x1C0B, (q15_t)0x82C6, (q15_t)0x1A82, - (q15_t)0x8275, (q15_t)0x18F8, (q15_t)0x8229, (q15_t)0x176D, - (q15_t)0x81E2, (q15_t)0x15E2, (q15_t)0x81A0, (q15_t)0x1455, - (q15_t)0x8162, (q15_t)0x12C8, (q15_t)0x812A, (q15_t)0x1139, - (q15_t)0x80F6, (q15_t)0x0FAB, (q15_t)0x80C7, (q15_t)0x0E1B, - (q15_t)0x809D, (q15_t)0x0C8B, (q15_t)0x8078, (q15_t)0x0AFB, - (q15_t)0x8058, (q15_t)0x096A, (q15_t)0x803D, (q15_t)0x07D9, - (q15_t)0x8027, (q15_t)0x0647, (q15_t)0x8016, (q15_t)0x04B6, - (q15_t)0x8009, (q15_t)0x0324, (q15_t)0x8002, (q15_t)0x0192, - (q15_t)0x8000, (q15_t)0x0000, (q15_t)0x8002, (q15_t)0xFE6D, - (q15_t)0x8009, (q15_t)0xFCDB, (q15_t)0x8016, (q15_t)0xFB49, - (q15_t)0x8027, (q15_t)0xF9B8, (q15_t)0x803D, (q15_t)0xF826, - (q15_t)0x8058, (q15_t)0xF695, (q15_t)0x8078, (q15_t)0xF504, - (q15_t)0x809D, (q15_t)0xF374, (q15_t)0x80C7, (q15_t)0xF1E4, - (q15_t)0x80F6, (q15_t)0xF054, (q15_t)0x812A, (q15_t)0xEEC6, - (q15_t)0x8162, (q15_t)0xED37, (q15_t)0x81A0, (q15_t)0xEBAA, - (q15_t)0x81E2, (q15_t)0xEA1D, (q15_t)0x8229, (q15_t)0xE892, - (q15_t)0x8275, (q15_t)0xE707, (q15_t)0x82C6, (q15_t)0xE57D, - (q15_t)0x831C, (q15_t)0xE3F4, (q15_t)0x8376, (q15_t)0xE26C, - (q15_t)0x83D6, (q15_t)0xE0E6, (q15_t)0x843A, (q15_t)0xDF60, - (q15_t)0x84A2, (q15_t)0xDDDC, (q15_t)0x8510, (q15_t)0xDC59, - (q15_t)0x8582, (q15_t)0xDAD7, (q15_t)0x85FA, (q15_t)0xD957, - (q15_t)0x8675, (q15_t)0xD7D9, (q15_t)0x86F6, (q15_t)0xD65C, - (q15_t)0x877B, (q15_t)0xD4E0, (q15_t)0x8805, (q15_t)0xD367, - (q15_t)0x8893, (q15_t)0xD1EE, (q15_t)0x8926, (q15_t)0xD078, - (q15_t)0x89BE, (q15_t)0xCF04, (q15_t)0x8A5A, (q15_t)0xCD91, - (q15_t)0x8AFB, (q15_t)0xCC21, (q15_t)0x8BA0, (q15_t)0xCAB2, - (q15_t)0x8C4A, (q15_t)0xC945, (q15_t)0x8CF8, (q15_t)0xC7DB, - (q15_t)0x8DAA, (q15_t)0xC673, (q15_t)0x8E61, (q15_t)0xC50D, - (q15_t)0x8F1D, (q15_t)0xC3A9, (q15_t)0x8FDC, (q15_t)0xC247, - (q15_t)0x90A0, (q15_t)0xC0E8, (q15_t)0x9169, (q15_t)0xBF8C, - (q15_t)0x9235, (q15_t)0xBE31, (q15_t)0x9306, (q15_t)0xBCDA, - (q15_t)0x93DB, (q15_t)0xBB85, (q15_t)0x94B5, (q15_t)0xBA32, - (q15_t)0x9592, (q15_t)0xB8E3, (q15_t)0x9673, (q15_t)0xB796, - (q15_t)0x9759, (q15_t)0xB64B, (q15_t)0x9842, (q15_t)0xB504, - (q15_t)0x9930, (q15_t)0xB3C0, (q15_t)0x9A22, (q15_t)0xB27E, - (q15_t)0x9B17, (q15_t)0xB140, (q15_t)0x9C10, (q15_t)0xB004, - (q15_t)0x9D0D, (q15_t)0xAECC, (q15_t)0x9E0E, (q15_t)0xAD96, - (q15_t)0x9F13, (q15_t)0xAC64, (q15_t)0xA01C, (q15_t)0xAB35, - (q15_t)0xA128, (q15_t)0xAA0A, (q15_t)0xA238, (q15_t)0xA8E2, - (q15_t)0xA34B, (q15_t)0xA7BD, (q15_t)0xA462, (q15_t)0xA69B, - (q15_t)0xA57D, (q15_t)0xA57D, (q15_t)0xA69B, (q15_t)0xA462, - (q15_t)0xA7BD, (q15_t)0xA34B, (q15_t)0xA8E2, (q15_t)0xA238, - (q15_t)0xAA0A, (q15_t)0xA128, (q15_t)0xAB35, (q15_t)0xA01C, - (q15_t)0xAC64, (q15_t)0x9F13, (q15_t)0xAD96, (q15_t)0x9E0E, - (q15_t)0xAECC, (q15_t)0x9D0D, (q15_t)0xB004, (q15_t)0x9C10, - (q15_t)0xB140, (q15_t)0x9B17, (q15_t)0xB27E, (q15_t)0x9A22, - (q15_t)0xB3C0, (q15_t)0x9930, (q15_t)0xB504, (q15_t)0x9842, - (q15_t)0xB64B, (q15_t)0x9759, (q15_t)0xB796, (q15_t)0x9673, - (q15_t)0xB8E3, (q15_t)0x9592, (q15_t)0xBA32, (q15_t)0x94B5, - (q15_t)0xBB85, (q15_t)0x93DB, (q15_t)0xBCDA, (q15_t)0x9306, - (q15_t)0xBE31, (q15_t)0x9235, (q15_t)0xBF8C, (q15_t)0x9169, - (q15_t)0xC0E8, (q15_t)0x90A0, (q15_t)0xC247, (q15_t)0x8FDC, - (q15_t)0xC3A9, (q15_t)0x8F1D, (q15_t)0xC50D, (q15_t)0x8E61, - (q15_t)0xC673, (q15_t)0x8DAA, (q15_t)0xC7DB, (q15_t)0x8CF8, - (q15_t)0xC945, (q15_t)0x8C4A, (q15_t)0xCAB2, (q15_t)0x8BA0, - (q15_t)0xCC21, (q15_t)0x8AFB, (q15_t)0xCD91, (q15_t)0x8A5A, - (q15_t)0xCF04, (q15_t)0x89BE, (q15_t)0xD078, (q15_t)0x8926, - (q15_t)0xD1EE, (q15_t)0x8893, (q15_t)0xD367, (q15_t)0x8805, - (q15_t)0xD4E0, (q15_t)0x877B, (q15_t)0xD65C, (q15_t)0x86F6, - (q15_t)0xD7D9, (q15_t)0x8675, (q15_t)0xD957, (q15_t)0x85FA, - (q15_t)0xDAD7, (q15_t)0x8582, (q15_t)0xDC59, (q15_t)0x8510, - (q15_t)0xDDDC, (q15_t)0x84A2, (q15_t)0xDF60, (q15_t)0x843A, - (q15_t)0xE0E6, (q15_t)0x83D6, (q15_t)0xE26C, (q15_t)0x8376, - (q15_t)0xE3F4, (q15_t)0x831C, (q15_t)0xE57D, (q15_t)0x82C6, - (q15_t)0xE707, (q15_t)0x8275, (q15_t)0xE892, (q15_t)0x8229, - (q15_t)0xEA1D, (q15_t)0x81E2, (q15_t)0xEBAA, (q15_t)0x81A0, - (q15_t)0xED37, (q15_t)0x8162, (q15_t)0xEEC6, (q15_t)0x812A, - (q15_t)0xF054, (q15_t)0x80F6, (q15_t)0xF1E4, (q15_t)0x80C7, - (q15_t)0xF374, (q15_t)0x809D, (q15_t)0xF504, (q15_t)0x8078, - (q15_t)0xF695, (q15_t)0x8058, (q15_t)0xF826, (q15_t)0x803D, - (q15_t)0xF9B8, (q15_t)0x8027, (q15_t)0xFB49, (q15_t)0x8016, - (q15_t)0xFCDB, (q15_t)0x8009, (q15_t)0xFE6D, (q15_t)0x8002 -}; - -/** -* \par -* Example code for q15 Twiddle factors Generation:: -* \par -*
for(i = 0; i< 3N/4; i++)
-* {
-*    twiddleCoefq15[2*i]= cos(i * 2*PI/(float)N);
-*    twiddleCoefq15[2*i+1]= sin(i * 2*PI/(float)N);
-* } 
-* \par -* where N = 1024 and PI = 3.14159265358979 -* \par -* Cos and Sin values are interleaved fashion -* \par -* Convert Floating point to q15(Fixed point 1.15): -* round(twiddleCoefq15(i) * pow(2, 15)) -* -*/ -const q15_t twiddleCoef_1024_q15[1536] = { - (q15_t)0x7FFF, (q15_t)0x0000, (q15_t)0x7FFF, (q15_t)0x00C9, - (q15_t)0x7FFD, (q15_t)0x0192, (q15_t)0x7FFA, (q15_t)0x025B, - (q15_t)0x7FF6, (q15_t)0x0324, (q15_t)0x7FF0, (q15_t)0x03ED, - (q15_t)0x7FE9, (q15_t)0x04B6, (q15_t)0x7FE1, (q15_t)0x057F, - (q15_t)0x7FD8, (q15_t)0x0647, (q15_t)0x7FCE, (q15_t)0x0710, - (q15_t)0x7FC2, (q15_t)0x07D9, (q15_t)0x7FB5, (q15_t)0x08A2, - (q15_t)0x7FA7, (q15_t)0x096A, (q15_t)0x7F97, (q15_t)0x0A33, - (q15_t)0x7F87, (q15_t)0x0AFB, (q15_t)0x7F75, (q15_t)0x0BC3, - (q15_t)0x7F62, (q15_t)0x0C8B, (q15_t)0x7F4D, (q15_t)0x0D53, - (q15_t)0x7F38, (q15_t)0x0E1B, (q15_t)0x7F21, (q15_t)0x0EE3, - (q15_t)0x7F09, (q15_t)0x0FAB, (q15_t)0x7EF0, (q15_t)0x1072, - (q15_t)0x7ED5, (q15_t)0x1139, (q15_t)0x7EBA, (q15_t)0x1201, - (q15_t)0x7E9D, (q15_t)0x12C8, (q15_t)0x7E7F, (q15_t)0x138E, - (q15_t)0x7E5F, (q15_t)0x1455, (q15_t)0x7E3F, (q15_t)0x151B, - (q15_t)0x7E1D, (q15_t)0x15E2, (q15_t)0x7DFA, (q15_t)0x16A8, - (q15_t)0x7DD6, (q15_t)0x176D, (q15_t)0x7DB0, (q15_t)0x1833, - (q15_t)0x7D8A, (q15_t)0x18F8, (q15_t)0x7D62, (q15_t)0x19BD, - (q15_t)0x7D39, (q15_t)0x1A82, (q15_t)0x7D0F, (q15_t)0x1B47, - (q15_t)0x7CE3, (q15_t)0x1C0B, (q15_t)0x7CB7, (q15_t)0x1CCF, - (q15_t)0x7C89, (q15_t)0x1D93, (q15_t)0x7C5A, (q15_t)0x1E56, - (q15_t)0x7C29, (q15_t)0x1F19, (q15_t)0x7BF8, (q15_t)0x1FDC, - (q15_t)0x7BC5, (q15_t)0x209F, (q15_t)0x7B92, (q15_t)0x2161, - (q15_t)0x7B5D, (q15_t)0x2223, (q15_t)0x7B26, (q15_t)0x22E5, - (q15_t)0x7AEF, (q15_t)0x23A6, (q15_t)0x7AB6, (q15_t)0x2467, - (q15_t)0x7A7D, (q15_t)0x2528, (q15_t)0x7A42, (q15_t)0x25E8, - (q15_t)0x7A05, (q15_t)0x26A8, (q15_t)0x79C8, (q15_t)0x2767, - (q15_t)0x798A, (q15_t)0x2826, (q15_t)0x794A, (q15_t)0x28E5, - (q15_t)0x7909, (q15_t)0x29A3, (q15_t)0x78C7, (q15_t)0x2A61, - (q15_t)0x7884, (q15_t)0x2B1F, (q15_t)0x7840, (q15_t)0x2BDC, - (q15_t)0x77FA, (q15_t)0x2C98, (q15_t)0x77B4, (q15_t)0x2D55, - (q15_t)0x776C, (q15_t)0x2E11, (q15_t)0x7723, (q15_t)0x2ECC, - (q15_t)0x76D9, (q15_t)0x2F87, (q15_t)0x768E, (q15_t)0x3041, - (q15_t)0x7641, (q15_t)0x30FB, (q15_t)0x75F4, (q15_t)0x31B5, - (q15_t)0x75A5, (q15_t)0x326E, (q15_t)0x7555, (q15_t)0x3326, - (q15_t)0x7504, (q15_t)0x33DE, (q15_t)0x74B2, (q15_t)0x3496, - (q15_t)0x745F, (q15_t)0x354D, (q15_t)0x740B, (q15_t)0x3604, - (q15_t)0x73B5, (q15_t)0x36BA, (q15_t)0x735F, (q15_t)0x376F, - (q15_t)0x7307, (q15_t)0x3824, (q15_t)0x72AF, (q15_t)0x38D8, - (q15_t)0x7255, (q15_t)0x398C, (q15_t)0x71FA, (q15_t)0x3A40, - (q15_t)0x719E, (q15_t)0x3AF2, (q15_t)0x7141, (q15_t)0x3BA5, - (q15_t)0x70E2, (q15_t)0x3C56, (q15_t)0x7083, (q15_t)0x3D07, - (q15_t)0x7023, (q15_t)0x3DB8, (q15_t)0x6FC1, (q15_t)0x3E68, - (q15_t)0x6F5F, (q15_t)0x3F17, (q15_t)0x6EFB, (q15_t)0x3FC5, - (q15_t)0x6E96, (q15_t)0x4073, (q15_t)0x6E30, (q15_t)0x4121, - (q15_t)0x6DCA, (q15_t)0x41CE, (q15_t)0x6D62, (q15_t)0x427A, - (q15_t)0x6CF9, (q15_t)0x4325, (q15_t)0x6C8F, (q15_t)0x43D0, - (q15_t)0x6C24, (q15_t)0x447A, (q15_t)0x6BB8, (q15_t)0x4524, - (q15_t)0x6B4A, (q15_t)0x45CD, (q15_t)0x6ADC, (q15_t)0x4675, - (q15_t)0x6A6D, (q15_t)0x471C, (q15_t)0x69FD, (q15_t)0x47C3, - (q15_t)0x698C, (q15_t)0x4869, (q15_t)0x6919, (q15_t)0x490F, - (q15_t)0x68A6, (q15_t)0x49B4, (q15_t)0x6832, (q15_t)0x4A58, - (q15_t)0x67BD, (q15_t)0x4AFB, (q15_t)0x6746, (q15_t)0x4B9E, - (q15_t)0x66CF, (q15_t)0x4C3F, (q15_t)0x6657, (q15_t)0x4CE1, - (q15_t)0x65DD, (q15_t)0x4D81, (q15_t)0x6563, (q15_t)0x4E21, - (q15_t)0x64E8, (q15_t)0x4EBF, (q15_t)0x646C, (q15_t)0x4F5E, - (q15_t)0x63EF, (q15_t)0x4FFB, (q15_t)0x6371, (q15_t)0x5097, - (q15_t)0x62F2, (q15_t)0x5133, (q15_t)0x6271, (q15_t)0x51CE, - (q15_t)0x61F1, (q15_t)0x5269, (q15_t)0x616F, (q15_t)0x5302, - (q15_t)0x60EC, (q15_t)0x539B, (q15_t)0x6068, (q15_t)0x5433, - (q15_t)0x5FE3, (q15_t)0x54CA, (q15_t)0x5F5E, (q15_t)0x5560, - (q15_t)0x5ED7, (q15_t)0x55F5, (q15_t)0x5E50, (q15_t)0x568A, - (q15_t)0x5DC7, (q15_t)0x571D, (q15_t)0x5D3E, (q15_t)0x57B0, - (q15_t)0x5CB4, (q15_t)0x5842, (q15_t)0x5C29, (q15_t)0x58D4, - (q15_t)0x5B9D, (q15_t)0x5964, (q15_t)0x5B10, (q15_t)0x59F3, - (q15_t)0x5A82, (q15_t)0x5A82, (q15_t)0x59F3, (q15_t)0x5B10, - (q15_t)0x5964, (q15_t)0x5B9D, (q15_t)0x58D4, (q15_t)0x5C29, - (q15_t)0x5842, (q15_t)0x5CB4, (q15_t)0x57B0, (q15_t)0x5D3E, - (q15_t)0x571D, (q15_t)0x5DC7, (q15_t)0x568A, (q15_t)0x5E50, - (q15_t)0x55F5, (q15_t)0x5ED7, (q15_t)0x5560, (q15_t)0x5F5E, - (q15_t)0x54CA, (q15_t)0x5FE3, (q15_t)0x5433, (q15_t)0x6068, - (q15_t)0x539B, (q15_t)0x60EC, (q15_t)0x5302, (q15_t)0x616F, - (q15_t)0x5269, (q15_t)0x61F1, (q15_t)0x51CE, (q15_t)0x6271, - (q15_t)0x5133, (q15_t)0x62F2, (q15_t)0x5097, (q15_t)0x6371, - (q15_t)0x4FFB, (q15_t)0x63EF, (q15_t)0x4F5E, (q15_t)0x646C, - (q15_t)0x4EBF, (q15_t)0x64E8, (q15_t)0x4E21, (q15_t)0x6563, - (q15_t)0x4D81, (q15_t)0x65DD, (q15_t)0x4CE1, (q15_t)0x6657, - (q15_t)0x4C3F, (q15_t)0x66CF, (q15_t)0x4B9E, (q15_t)0x6746, - (q15_t)0x4AFB, (q15_t)0x67BD, (q15_t)0x4A58, (q15_t)0x6832, - (q15_t)0x49B4, (q15_t)0x68A6, (q15_t)0x490F, (q15_t)0x6919, - (q15_t)0x4869, (q15_t)0x698C, (q15_t)0x47C3, (q15_t)0x69FD, - (q15_t)0x471C, (q15_t)0x6A6D, (q15_t)0x4675, (q15_t)0x6ADC, - (q15_t)0x45CD, (q15_t)0x6B4A, (q15_t)0x4524, (q15_t)0x6BB8, - (q15_t)0x447A, (q15_t)0x6C24, (q15_t)0x43D0, (q15_t)0x6C8F, - (q15_t)0x4325, (q15_t)0x6CF9, (q15_t)0x427A, (q15_t)0x6D62, - (q15_t)0x41CE, (q15_t)0x6DCA, (q15_t)0x4121, (q15_t)0x6E30, - (q15_t)0x4073, (q15_t)0x6E96, (q15_t)0x3FC5, (q15_t)0x6EFB, - (q15_t)0x3F17, (q15_t)0x6F5F, (q15_t)0x3E68, (q15_t)0x6FC1, - (q15_t)0x3DB8, (q15_t)0x7023, (q15_t)0x3D07, (q15_t)0x7083, - (q15_t)0x3C56, (q15_t)0x70E2, (q15_t)0x3BA5, (q15_t)0x7141, - (q15_t)0x3AF2, (q15_t)0x719E, (q15_t)0x3A40, (q15_t)0x71FA, - (q15_t)0x398C, (q15_t)0x7255, (q15_t)0x38D8, (q15_t)0x72AF, - (q15_t)0x3824, (q15_t)0x7307, (q15_t)0x376F, (q15_t)0x735F, - (q15_t)0x36BA, (q15_t)0x73B5, (q15_t)0x3604, (q15_t)0x740B, - (q15_t)0x354D, (q15_t)0x745F, (q15_t)0x3496, (q15_t)0x74B2, - (q15_t)0x33DE, (q15_t)0x7504, (q15_t)0x3326, (q15_t)0x7555, - (q15_t)0x326E, (q15_t)0x75A5, (q15_t)0x31B5, (q15_t)0x75F4, - (q15_t)0x30FB, (q15_t)0x7641, (q15_t)0x3041, (q15_t)0x768E, - (q15_t)0x2F87, (q15_t)0x76D9, (q15_t)0x2ECC, (q15_t)0x7723, - (q15_t)0x2E11, (q15_t)0x776C, (q15_t)0x2D55, (q15_t)0x77B4, - (q15_t)0x2C98, (q15_t)0x77FA, (q15_t)0x2BDC, (q15_t)0x7840, - (q15_t)0x2B1F, (q15_t)0x7884, (q15_t)0x2A61, (q15_t)0x78C7, - (q15_t)0x29A3, (q15_t)0x7909, (q15_t)0x28E5, (q15_t)0x794A, - (q15_t)0x2826, (q15_t)0x798A, (q15_t)0x2767, (q15_t)0x79C8, - (q15_t)0x26A8, (q15_t)0x7A05, (q15_t)0x25E8, (q15_t)0x7A42, - (q15_t)0x2528, (q15_t)0x7A7D, (q15_t)0x2467, (q15_t)0x7AB6, - (q15_t)0x23A6, (q15_t)0x7AEF, (q15_t)0x22E5, (q15_t)0x7B26, - (q15_t)0x2223, (q15_t)0x7B5D, (q15_t)0x2161, (q15_t)0x7B92, - (q15_t)0x209F, (q15_t)0x7BC5, (q15_t)0x1FDC, (q15_t)0x7BF8, - (q15_t)0x1F19, (q15_t)0x7C29, (q15_t)0x1E56, (q15_t)0x7C5A, - (q15_t)0x1D93, (q15_t)0x7C89, (q15_t)0x1CCF, (q15_t)0x7CB7, - (q15_t)0x1C0B, (q15_t)0x7CE3, (q15_t)0x1B47, (q15_t)0x7D0F, - (q15_t)0x1A82, (q15_t)0x7D39, (q15_t)0x19BD, (q15_t)0x7D62, - (q15_t)0x18F8, (q15_t)0x7D8A, (q15_t)0x1833, (q15_t)0x7DB0, - (q15_t)0x176D, (q15_t)0x7DD6, (q15_t)0x16A8, (q15_t)0x7DFA, - (q15_t)0x15E2, (q15_t)0x7E1D, (q15_t)0x151B, (q15_t)0x7E3F, - (q15_t)0x1455, (q15_t)0x7E5F, (q15_t)0x138E, (q15_t)0x7E7F, - (q15_t)0x12C8, (q15_t)0x7E9D, (q15_t)0x1201, (q15_t)0x7EBA, - (q15_t)0x1139, (q15_t)0x7ED5, (q15_t)0x1072, (q15_t)0x7EF0, - (q15_t)0x0FAB, (q15_t)0x7F09, (q15_t)0x0EE3, (q15_t)0x7F21, - (q15_t)0x0E1B, (q15_t)0x7F38, (q15_t)0x0D53, (q15_t)0x7F4D, - (q15_t)0x0C8B, (q15_t)0x7F62, (q15_t)0x0BC3, (q15_t)0x7F75, - (q15_t)0x0AFB, (q15_t)0x7F87, (q15_t)0x0A33, (q15_t)0x7F97, - (q15_t)0x096A, (q15_t)0x7FA7, (q15_t)0x08A2, (q15_t)0x7FB5, - (q15_t)0x07D9, (q15_t)0x7FC2, (q15_t)0x0710, (q15_t)0x7FCE, - (q15_t)0x0647, (q15_t)0x7FD8, (q15_t)0x057F, (q15_t)0x7FE1, - (q15_t)0x04B6, (q15_t)0x7FE9, (q15_t)0x03ED, (q15_t)0x7FF0, - (q15_t)0x0324, (q15_t)0x7FF6, (q15_t)0x025B, (q15_t)0x7FFA, - (q15_t)0x0192, (q15_t)0x7FFD, (q15_t)0x00C9, (q15_t)0x7FFF, - (q15_t)0x0000, (q15_t)0x7FFF, (q15_t)0xFF36, (q15_t)0x7FFF, - (q15_t)0xFE6D, (q15_t)0x7FFD, (q15_t)0xFDA4, (q15_t)0x7FFA, - (q15_t)0xFCDB, (q15_t)0x7FF6, (q15_t)0xFC12, (q15_t)0x7FF0, - (q15_t)0xFB49, (q15_t)0x7FE9, (q15_t)0xFA80, (q15_t)0x7FE1, - (q15_t)0xF9B8, (q15_t)0x7FD8, (q15_t)0xF8EF, (q15_t)0x7FCE, - (q15_t)0xF826, (q15_t)0x7FC2, (q15_t)0xF75D, (q15_t)0x7FB5, - (q15_t)0xF695, (q15_t)0x7FA7, (q15_t)0xF5CC, (q15_t)0x7F97, - (q15_t)0xF504, (q15_t)0x7F87, (q15_t)0xF43C, (q15_t)0x7F75, - (q15_t)0xF374, (q15_t)0x7F62, (q15_t)0xF2AC, (q15_t)0x7F4D, - (q15_t)0xF1E4, (q15_t)0x7F38, (q15_t)0xF11C, (q15_t)0x7F21, - (q15_t)0xF054, (q15_t)0x7F09, (q15_t)0xEF8D, (q15_t)0x7EF0, - (q15_t)0xEEC6, (q15_t)0x7ED5, (q15_t)0xEDFE, (q15_t)0x7EBA, - (q15_t)0xED37, (q15_t)0x7E9D, (q15_t)0xEC71, (q15_t)0x7E7F, - (q15_t)0xEBAA, (q15_t)0x7E5F, (q15_t)0xEAE4, (q15_t)0x7E3F, - (q15_t)0xEA1D, (q15_t)0x7E1D, (q15_t)0xE957, (q15_t)0x7DFA, - (q15_t)0xE892, (q15_t)0x7DD6, (q15_t)0xE7CC, (q15_t)0x7DB0, - (q15_t)0xE707, (q15_t)0x7D8A, (q15_t)0xE642, (q15_t)0x7D62, - (q15_t)0xE57D, (q15_t)0x7D39, (q15_t)0xE4B8, (q15_t)0x7D0F, - (q15_t)0xE3F4, (q15_t)0x7CE3, (q15_t)0xE330, (q15_t)0x7CB7, - (q15_t)0xE26C, (q15_t)0x7C89, (q15_t)0xE1A9, (q15_t)0x7C5A, - (q15_t)0xE0E6, (q15_t)0x7C29, (q15_t)0xE023, (q15_t)0x7BF8, - (q15_t)0xDF60, (q15_t)0x7BC5, (q15_t)0xDE9E, (q15_t)0x7B92, - (q15_t)0xDDDC, (q15_t)0x7B5D, (q15_t)0xDD1A, (q15_t)0x7B26, - (q15_t)0xDC59, (q15_t)0x7AEF, (q15_t)0xDB98, (q15_t)0x7AB6, - (q15_t)0xDAD7, (q15_t)0x7A7D, (q15_t)0xDA17, (q15_t)0x7A42, - (q15_t)0xD957, (q15_t)0x7A05, (q15_t)0xD898, (q15_t)0x79C8, - (q15_t)0xD7D9, (q15_t)0x798A, (q15_t)0xD71A, (q15_t)0x794A, - (q15_t)0xD65C, (q15_t)0x7909, (q15_t)0xD59E, (q15_t)0x78C7, - (q15_t)0xD4E0, (q15_t)0x7884, (q15_t)0xD423, (q15_t)0x7840, - (q15_t)0xD367, (q15_t)0x77FA, (q15_t)0xD2AA, (q15_t)0x77B4, - (q15_t)0xD1EE, (q15_t)0x776C, (q15_t)0xD133, (q15_t)0x7723, - (q15_t)0xD078, (q15_t)0x76D9, (q15_t)0xCFBE, (q15_t)0x768E, - (q15_t)0xCF04, (q15_t)0x7641, (q15_t)0xCE4A, (q15_t)0x75F4, - (q15_t)0xCD91, (q15_t)0x75A5, (q15_t)0xCCD9, (q15_t)0x7555, - (q15_t)0xCC21, (q15_t)0x7504, (q15_t)0xCB69, (q15_t)0x74B2, - (q15_t)0xCAB2, (q15_t)0x745F, (q15_t)0xC9FB, (q15_t)0x740B, - (q15_t)0xC945, (q15_t)0x73B5, (q15_t)0xC890, (q15_t)0x735F, - (q15_t)0xC7DB, (q15_t)0x7307, (q15_t)0xC727, (q15_t)0x72AF, - (q15_t)0xC673, (q15_t)0x7255, (q15_t)0xC5BF, (q15_t)0x71FA, - (q15_t)0xC50D, (q15_t)0x719E, (q15_t)0xC45A, (q15_t)0x7141, - (q15_t)0xC3A9, (q15_t)0x70E2, (q15_t)0xC2F8, (q15_t)0x7083, - (q15_t)0xC247, (q15_t)0x7023, (q15_t)0xC197, (q15_t)0x6FC1, - (q15_t)0xC0E8, (q15_t)0x6F5F, (q15_t)0xC03A, (q15_t)0x6EFB, - (q15_t)0xBF8C, (q15_t)0x6E96, (q15_t)0xBEDE, (q15_t)0x6E30, - (q15_t)0xBE31, (q15_t)0x6DCA, (q15_t)0xBD85, (q15_t)0x6D62, - (q15_t)0xBCDA, (q15_t)0x6CF9, (q15_t)0xBC2F, (q15_t)0x6C8F, - (q15_t)0xBB85, (q15_t)0x6C24, (q15_t)0xBADB, (q15_t)0x6BB8, - (q15_t)0xBA32, (q15_t)0x6B4A, (q15_t)0xB98A, (q15_t)0x6ADC, - (q15_t)0xB8E3, (q15_t)0x6A6D, (q15_t)0xB83C, (q15_t)0x69FD, - (q15_t)0xB796, (q15_t)0x698C, (q15_t)0xB6F0, (q15_t)0x6919, - (q15_t)0xB64B, (q15_t)0x68A6, (q15_t)0xB5A7, (q15_t)0x6832, - (q15_t)0xB504, (q15_t)0x67BD, (q15_t)0xB461, (q15_t)0x6746, - (q15_t)0xB3C0, (q15_t)0x66CF, (q15_t)0xB31E, (q15_t)0x6657, - (q15_t)0xB27E, (q15_t)0x65DD, (q15_t)0xB1DE, (q15_t)0x6563, - (q15_t)0xB140, (q15_t)0x64E8, (q15_t)0xB0A1, (q15_t)0x646C, - (q15_t)0xB004, (q15_t)0x63EF, (q15_t)0xAF68, (q15_t)0x6371, - (q15_t)0xAECC, (q15_t)0x62F2, (q15_t)0xAE31, (q15_t)0x6271, - (q15_t)0xAD96, (q15_t)0x61F1, (q15_t)0xACFD, (q15_t)0x616F, - (q15_t)0xAC64, (q15_t)0x60EC, (q15_t)0xABCC, (q15_t)0x6068, - (q15_t)0xAB35, (q15_t)0x5FE3, (q15_t)0xAA9F, (q15_t)0x5F5E, - (q15_t)0xAA0A, (q15_t)0x5ED7, (q15_t)0xA975, (q15_t)0x5E50, - (q15_t)0xA8E2, (q15_t)0x5DC7, (q15_t)0xA84F, (q15_t)0x5D3E, - (q15_t)0xA7BD, (q15_t)0x5CB4, (q15_t)0xA72B, (q15_t)0x5C29, - (q15_t)0xA69B, (q15_t)0x5B9D, (q15_t)0xA60C, (q15_t)0x5B10, - (q15_t)0xA57D, (q15_t)0x5A82, (q15_t)0xA4EF, (q15_t)0x59F3, - (q15_t)0xA462, (q15_t)0x5964, (q15_t)0xA3D6, (q15_t)0x58D4, - (q15_t)0xA34B, (q15_t)0x5842, (q15_t)0xA2C1, (q15_t)0x57B0, - (q15_t)0xA238, (q15_t)0x571D, (q15_t)0xA1AF, (q15_t)0x568A, - (q15_t)0xA128, (q15_t)0x55F5, (q15_t)0xA0A1, (q15_t)0x5560, - (q15_t)0xA01C, (q15_t)0x54CA, (q15_t)0x9F97, (q15_t)0x5433, - (q15_t)0x9F13, (q15_t)0x539B, (q15_t)0x9E90, (q15_t)0x5302, - (q15_t)0x9E0E, (q15_t)0x5269, (q15_t)0x9D8E, (q15_t)0x51CE, - (q15_t)0x9D0D, (q15_t)0x5133, (q15_t)0x9C8E, (q15_t)0x5097, - (q15_t)0x9C10, (q15_t)0x4FFB, (q15_t)0x9B93, (q15_t)0x4F5E, - (q15_t)0x9B17, (q15_t)0x4EBF, (q15_t)0x9A9C, (q15_t)0x4E21, - (q15_t)0x9A22, (q15_t)0x4D81, (q15_t)0x99A8, (q15_t)0x4CE1, - (q15_t)0x9930, (q15_t)0x4C3F, (q15_t)0x98B9, (q15_t)0x4B9E, - (q15_t)0x9842, (q15_t)0x4AFB, (q15_t)0x97CD, (q15_t)0x4A58, - (q15_t)0x9759, (q15_t)0x49B4, (q15_t)0x96E6, (q15_t)0x490F, - (q15_t)0x9673, (q15_t)0x4869, (q15_t)0x9602, (q15_t)0x47C3, - (q15_t)0x9592, (q15_t)0x471C, (q15_t)0x9523, (q15_t)0x4675, - (q15_t)0x94B5, (q15_t)0x45CD, (q15_t)0x9447, (q15_t)0x4524, - (q15_t)0x93DB, (q15_t)0x447A, (q15_t)0x9370, (q15_t)0x43D0, - (q15_t)0x9306, (q15_t)0x4325, (q15_t)0x929D, (q15_t)0x427A, - (q15_t)0x9235, (q15_t)0x41CE, (q15_t)0x91CF, (q15_t)0x4121, - (q15_t)0x9169, (q15_t)0x4073, (q15_t)0x9104, (q15_t)0x3FC5, - (q15_t)0x90A0, (q15_t)0x3F17, (q15_t)0x903E, (q15_t)0x3E68, - (q15_t)0x8FDC, (q15_t)0x3DB8, (q15_t)0x8F7C, (q15_t)0x3D07, - (q15_t)0x8F1D, (q15_t)0x3C56, (q15_t)0x8EBE, (q15_t)0x3BA5, - (q15_t)0x8E61, (q15_t)0x3AF2, (q15_t)0x8E05, (q15_t)0x3A40, - (q15_t)0x8DAA, (q15_t)0x398C, (q15_t)0x8D50, (q15_t)0x38D8, - (q15_t)0x8CF8, (q15_t)0x3824, (q15_t)0x8CA0, (q15_t)0x376F, - (q15_t)0x8C4A, (q15_t)0x36BA, (q15_t)0x8BF4, (q15_t)0x3604, - (q15_t)0x8BA0, (q15_t)0x354D, (q15_t)0x8B4D, (q15_t)0x3496, - (q15_t)0x8AFB, (q15_t)0x33DE, (q15_t)0x8AAA, (q15_t)0x3326, - (q15_t)0x8A5A, (q15_t)0x326E, (q15_t)0x8A0B, (q15_t)0x31B5, - (q15_t)0x89BE, (q15_t)0x30FB, (q15_t)0x8971, (q15_t)0x3041, - (q15_t)0x8926, (q15_t)0x2F87, (q15_t)0x88DC, (q15_t)0x2ECC, - (q15_t)0x8893, (q15_t)0x2E11, (q15_t)0x884B, (q15_t)0x2D55, - (q15_t)0x8805, (q15_t)0x2C98, (q15_t)0x87BF, (q15_t)0x2BDC, - (q15_t)0x877B, (q15_t)0x2B1F, (q15_t)0x8738, (q15_t)0x2A61, - (q15_t)0x86F6, (q15_t)0x29A3, (q15_t)0x86B5, (q15_t)0x28E5, - (q15_t)0x8675, (q15_t)0x2826, (q15_t)0x8637, (q15_t)0x2767, - (q15_t)0x85FA, (q15_t)0x26A8, (q15_t)0x85BD, (q15_t)0x25E8, - (q15_t)0x8582, (q15_t)0x2528, (q15_t)0x8549, (q15_t)0x2467, - (q15_t)0x8510, (q15_t)0x23A6, (q15_t)0x84D9, (q15_t)0x22E5, - (q15_t)0x84A2, (q15_t)0x2223, (q15_t)0x846D, (q15_t)0x2161, - (q15_t)0x843A, (q15_t)0x209F, (q15_t)0x8407, (q15_t)0x1FDC, - (q15_t)0x83D6, (q15_t)0x1F19, (q15_t)0x83A5, (q15_t)0x1E56, - (q15_t)0x8376, (q15_t)0x1D93, (q15_t)0x8348, (q15_t)0x1CCF, - (q15_t)0x831C, (q15_t)0x1C0B, (q15_t)0x82F0, (q15_t)0x1B47, - (q15_t)0x82C6, (q15_t)0x1A82, (q15_t)0x829D, (q15_t)0x19BD, - (q15_t)0x8275, (q15_t)0x18F8, (q15_t)0x824F, (q15_t)0x1833, - (q15_t)0x8229, (q15_t)0x176D, (q15_t)0x8205, (q15_t)0x16A8, - (q15_t)0x81E2, (q15_t)0x15E2, (q15_t)0x81C0, (q15_t)0x151B, - (q15_t)0x81A0, (q15_t)0x1455, (q15_t)0x8180, (q15_t)0x138E, - (q15_t)0x8162, (q15_t)0x12C8, (q15_t)0x8145, (q15_t)0x1201, - (q15_t)0x812A, (q15_t)0x1139, (q15_t)0x810F, (q15_t)0x1072, - (q15_t)0x80F6, (q15_t)0x0FAB, (q15_t)0x80DE, (q15_t)0x0EE3, - (q15_t)0x80C7, (q15_t)0x0E1B, (q15_t)0x80B2, (q15_t)0x0D53, - (q15_t)0x809D, (q15_t)0x0C8B, (q15_t)0x808A, (q15_t)0x0BC3, - (q15_t)0x8078, (q15_t)0x0AFB, (q15_t)0x8068, (q15_t)0x0A33, - (q15_t)0x8058, (q15_t)0x096A, (q15_t)0x804A, (q15_t)0x08A2, - (q15_t)0x803D, (q15_t)0x07D9, (q15_t)0x8031, (q15_t)0x0710, - (q15_t)0x8027, (q15_t)0x0647, (q15_t)0x801E, (q15_t)0x057F, - (q15_t)0x8016, (q15_t)0x04B6, (q15_t)0x800F, (q15_t)0x03ED, - (q15_t)0x8009, (q15_t)0x0324, (q15_t)0x8005, (q15_t)0x025B, - (q15_t)0x8002, (q15_t)0x0192, (q15_t)0x8000, (q15_t)0x00C9, - (q15_t)0x8000, (q15_t)0x0000, (q15_t)0x8000, (q15_t)0xFF36, - (q15_t)0x8002, (q15_t)0xFE6D, (q15_t)0x8005, (q15_t)0xFDA4, - (q15_t)0x8009, (q15_t)0xFCDB, (q15_t)0x800F, (q15_t)0xFC12, - (q15_t)0x8016, (q15_t)0xFB49, (q15_t)0x801E, (q15_t)0xFA80, - (q15_t)0x8027, (q15_t)0xF9B8, (q15_t)0x8031, (q15_t)0xF8EF, - (q15_t)0x803D, (q15_t)0xF826, (q15_t)0x804A, (q15_t)0xF75D, - (q15_t)0x8058, (q15_t)0xF695, (q15_t)0x8068, (q15_t)0xF5CC, - (q15_t)0x8078, (q15_t)0xF504, (q15_t)0x808A, (q15_t)0xF43C, - (q15_t)0x809D, (q15_t)0xF374, (q15_t)0x80B2, (q15_t)0xF2AC, - (q15_t)0x80C7, (q15_t)0xF1E4, (q15_t)0x80DE, (q15_t)0xF11C, - (q15_t)0x80F6, (q15_t)0xF054, (q15_t)0x810F, (q15_t)0xEF8D, - (q15_t)0x812A, (q15_t)0xEEC6, (q15_t)0x8145, (q15_t)0xEDFE, - (q15_t)0x8162, (q15_t)0xED37, (q15_t)0x8180, (q15_t)0xEC71, - (q15_t)0x81A0, (q15_t)0xEBAA, (q15_t)0x81C0, (q15_t)0xEAE4, - (q15_t)0x81E2, (q15_t)0xEA1D, (q15_t)0x8205, (q15_t)0xE957, - (q15_t)0x8229, (q15_t)0xE892, (q15_t)0x824F, (q15_t)0xE7CC, - (q15_t)0x8275, (q15_t)0xE707, (q15_t)0x829D, (q15_t)0xE642, - (q15_t)0x82C6, (q15_t)0xE57D, (q15_t)0x82F0, (q15_t)0xE4B8, - (q15_t)0x831C, (q15_t)0xE3F4, (q15_t)0x8348, (q15_t)0xE330, - (q15_t)0x8376, (q15_t)0xE26C, (q15_t)0x83A5, (q15_t)0xE1A9, - (q15_t)0x83D6, (q15_t)0xE0E6, (q15_t)0x8407, (q15_t)0xE023, - (q15_t)0x843A, (q15_t)0xDF60, (q15_t)0x846D, (q15_t)0xDE9E, - (q15_t)0x84A2, (q15_t)0xDDDC, (q15_t)0x84D9, (q15_t)0xDD1A, - (q15_t)0x8510, (q15_t)0xDC59, (q15_t)0x8549, (q15_t)0xDB98, - (q15_t)0x8582, (q15_t)0xDAD7, (q15_t)0x85BD, (q15_t)0xDA17, - (q15_t)0x85FA, (q15_t)0xD957, (q15_t)0x8637, (q15_t)0xD898, - (q15_t)0x8675, (q15_t)0xD7D9, (q15_t)0x86B5, (q15_t)0xD71A, - (q15_t)0x86F6, (q15_t)0xD65C, (q15_t)0x8738, (q15_t)0xD59E, - (q15_t)0x877B, (q15_t)0xD4E0, (q15_t)0x87BF, (q15_t)0xD423, - (q15_t)0x8805, (q15_t)0xD367, (q15_t)0x884B, (q15_t)0xD2AA, - (q15_t)0x8893, (q15_t)0xD1EE, (q15_t)0x88DC, (q15_t)0xD133, - (q15_t)0x8926, (q15_t)0xD078, (q15_t)0x8971, (q15_t)0xCFBE, - (q15_t)0x89BE, (q15_t)0xCF04, (q15_t)0x8A0B, (q15_t)0xCE4A, - (q15_t)0x8A5A, (q15_t)0xCD91, (q15_t)0x8AAA, (q15_t)0xCCD9, - (q15_t)0x8AFB, (q15_t)0xCC21, (q15_t)0x8B4D, (q15_t)0xCB69, - (q15_t)0x8BA0, (q15_t)0xCAB2, (q15_t)0x8BF4, (q15_t)0xC9FB, - (q15_t)0x8C4A, (q15_t)0xC945, (q15_t)0x8CA0, (q15_t)0xC890, - (q15_t)0x8CF8, (q15_t)0xC7DB, (q15_t)0x8D50, (q15_t)0xC727, - (q15_t)0x8DAA, (q15_t)0xC673, (q15_t)0x8E05, (q15_t)0xC5BF, - (q15_t)0x8E61, (q15_t)0xC50D, (q15_t)0x8EBE, (q15_t)0xC45A, - (q15_t)0x8F1D, (q15_t)0xC3A9, (q15_t)0x8F7C, (q15_t)0xC2F8, - (q15_t)0x8FDC, (q15_t)0xC247, (q15_t)0x903E, (q15_t)0xC197, - (q15_t)0x90A0, (q15_t)0xC0E8, (q15_t)0x9104, (q15_t)0xC03A, - (q15_t)0x9169, (q15_t)0xBF8C, (q15_t)0x91CF, (q15_t)0xBEDE, - (q15_t)0x9235, (q15_t)0xBE31, (q15_t)0x929D, (q15_t)0xBD85, - (q15_t)0x9306, (q15_t)0xBCDA, (q15_t)0x9370, (q15_t)0xBC2F, - (q15_t)0x93DB, (q15_t)0xBB85, (q15_t)0x9447, (q15_t)0xBADB, - (q15_t)0x94B5, (q15_t)0xBA32, (q15_t)0x9523, (q15_t)0xB98A, - (q15_t)0x9592, (q15_t)0xB8E3, (q15_t)0x9602, (q15_t)0xB83C, - (q15_t)0x9673, (q15_t)0xB796, (q15_t)0x96E6, (q15_t)0xB6F0, - (q15_t)0x9759, (q15_t)0xB64B, (q15_t)0x97CD, (q15_t)0xB5A7, - (q15_t)0x9842, (q15_t)0xB504, (q15_t)0x98B9, (q15_t)0xB461, - (q15_t)0x9930, (q15_t)0xB3C0, (q15_t)0x99A8, (q15_t)0xB31E, - (q15_t)0x9A22, (q15_t)0xB27E, (q15_t)0x9A9C, (q15_t)0xB1DE, - (q15_t)0x9B17, (q15_t)0xB140, (q15_t)0x9B93, (q15_t)0xB0A1, - (q15_t)0x9C10, (q15_t)0xB004, (q15_t)0x9C8E, (q15_t)0xAF68, - (q15_t)0x9D0D, (q15_t)0xAECC, (q15_t)0x9D8E, (q15_t)0xAE31, - (q15_t)0x9E0E, (q15_t)0xAD96, (q15_t)0x9E90, (q15_t)0xACFD, - (q15_t)0x9F13, (q15_t)0xAC64, (q15_t)0x9F97, (q15_t)0xABCC, - (q15_t)0xA01C, (q15_t)0xAB35, (q15_t)0xA0A1, (q15_t)0xAA9F, - (q15_t)0xA128, (q15_t)0xAA0A, (q15_t)0xA1AF, (q15_t)0xA975, - (q15_t)0xA238, (q15_t)0xA8E2, (q15_t)0xA2C1, (q15_t)0xA84F, - (q15_t)0xA34B, (q15_t)0xA7BD, (q15_t)0xA3D6, (q15_t)0xA72B, - (q15_t)0xA462, (q15_t)0xA69B, (q15_t)0xA4EF, (q15_t)0xA60C, - (q15_t)0xA57D, (q15_t)0xA57D, (q15_t)0xA60C, (q15_t)0xA4EF, - (q15_t)0xA69B, (q15_t)0xA462, (q15_t)0xA72B, (q15_t)0xA3D6, - (q15_t)0xA7BD, (q15_t)0xA34B, (q15_t)0xA84F, (q15_t)0xA2C1, - (q15_t)0xA8E2, (q15_t)0xA238, (q15_t)0xA975, (q15_t)0xA1AF, - (q15_t)0xAA0A, (q15_t)0xA128, (q15_t)0xAA9F, (q15_t)0xA0A1, - (q15_t)0xAB35, (q15_t)0xA01C, (q15_t)0xABCC, (q15_t)0x9F97, - (q15_t)0xAC64, (q15_t)0x9F13, (q15_t)0xACFD, (q15_t)0x9E90, - (q15_t)0xAD96, (q15_t)0x9E0E, (q15_t)0xAE31, (q15_t)0x9D8E, - (q15_t)0xAECC, (q15_t)0x9D0D, (q15_t)0xAF68, (q15_t)0x9C8E, - (q15_t)0xB004, (q15_t)0x9C10, (q15_t)0xB0A1, (q15_t)0x9B93, - (q15_t)0xB140, (q15_t)0x9B17, (q15_t)0xB1DE, (q15_t)0x9A9C, - (q15_t)0xB27E, (q15_t)0x9A22, (q15_t)0xB31E, (q15_t)0x99A8, - (q15_t)0xB3C0, (q15_t)0x9930, (q15_t)0xB461, (q15_t)0x98B9, - (q15_t)0xB504, (q15_t)0x9842, (q15_t)0xB5A7, (q15_t)0x97CD, - (q15_t)0xB64B, (q15_t)0x9759, (q15_t)0xB6F0, (q15_t)0x96E6, - (q15_t)0xB796, (q15_t)0x9673, (q15_t)0xB83C, (q15_t)0x9602, - (q15_t)0xB8E3, (q15_t)0x9592, (q15_t)0xB98A, (q15_t)0x9523, - (q15_t)0xBA32, (q15_t)0x94B5, (q15_t)0xBADB, (q15_t)0x9447, - (q15_t)0xBB85, (q15_t)0x93DB, (q15_t)0xBC2F, (q15_t)0x9370, - (q15_t)0xBCDA, (q15_t)0x9306, (q15_t)0xBD85, (q15_t)0x929D, - (q15_t)0xBE31, (q15_t)0x9235, (q15_t)0xBEDE, (q15_t)0x91CF, - (q15_t)0xBF8C, (q15_t)0x9169, (q15_t)0xC03A, (q15_t)0x9104, - (q15_t)0xC0E8, (q15_t)0x90A0, (q15_t)0xC197, (q15_t)0x903E, - (q15_t)0xC247, (q15_t)0x8FDC, (q15_t)0xC2F8, (q15_t)0x8F7C, - (q15_t)0xC3A9, (q15_t)0x8F1D, (q15_t)0xC45A, (q15_t)0x8EBE, - (q15_t)0xC50D, (q15_t)0x8E61, (q15_t)0xC5BF, (q15_t)0x8E05, - (q15_t)0xC673, (q15_t)0x8DAA, (q15_t)0xC727, (q15_t)0x8D50, - (q15_t)0xC7DB, (q15_t)0x8CF8, (q15_t)0xC890, (q15_t)0x8CA0, - (q15_t)0xC945, (q15_t)0x8C4A, (q15_t)0xC9FB, (q15_t)0x8BF4, - (q15_t)0xCAB2, (q15_t)0x8BA0, (q15_t)0xCB69, (q15_t)0x8B4D, - (q15_t)0xCC21, (q15_t)0x8AFB, (q15_t)0xCCD9, (q15_t)0x8AAA, - (q15_t)0xCD91, (q15_t)0x8A5A, (q15_t)0xCE4A, (q15_t)0x8A0B, - (q15_t)0xCF04, (q15_t)0x89BE, (q15_t)0xCFBE, (q15_t)0x8971, - (q15_t)0xD078, (q15_t)0x8926, (q15_t)0xD133, (q15_t)0x88DC, - (q15_t)0xD1EE, (q15_t)0x8893, (q15_t)0xD2AA, (q15_t)0x884B, - (q15_t)0xD367, (q15_t)0x8805, (q15_t)0xD423, (q15_t)0x87BF, - (q15_t)0xD4E0, (q15_t)0x877B, (q15_t)0xD59E, (q15_t)0x8738, - (q15_t)0xD65C, (q15_t)0x86F6, (q15_t)0xD71A, (q15_t)0x86B5, - (q15_t)0xD7D9, (q15_t)0x8675, (q15_t)0xD898, (q15_t)0x8637, - (q15_t)0xD957, (q15_t)0x85FA, (q15_t)0xDA17, (q15_t)0x85BD, - (q15_t)0xDAD7, (q15_t)0x8582, (q15_t)0xDB98, (q15_t)0x8549, - (q15_t)0xDC59, (q15_t)0x8510, (q15_t)0xDD1A, (q15_t)0x84D9, - (q15_t)0xDDDC, (q15_t)0x84A2, (q15_t)0xDE9E, (q15_t)0x846D, - (q15_t)0xDF60, (q15_t)0x843A, (q15_t)0xE023, (q15_t)0x8407, - (q15_t)0xE0E6, (q15_t)0x83D6, (q15_t)0xE1A9, (q15_t)0x83A5, - (q15_t)0xE26C, (q15_t)0x8376, (q15_t)0xE330, (q15_t)0x8348, - (q15_t)0xE3F4, (q15_t)0x831C, (q15_t)0xE4B8, (q15_t)0x82F0, - (q15_t)0xE57D, (q15_t)0x82C6, (q15_t)0xE642, (q15_t)0x829D, - (q15_t)0xE707, (q15_t)0x8275, (q15_t)0xE7CC, (q15_t)0x824F, - (q15_t)0xE892, (q15_t)0x8229, (q15_t)0xE957, (q15_t)0x8205, - (q15_t)0xEA1D, (q15_t)0x81E2, (q15_t)0xEAE4, (q15_t)0x81C0, - (q15_t)0xEBAA, (q15_t)0x81A0, (q15_t)0xEC71, (q15_t)0x8180, - (q15_t)0xED37, (q15_t)0x8162, (q15_t)0xEDFE, (q15_t)0x8145, - (q15_t)0xEEC6, (q15_t)0x812A, (q15_t)0xEF8D, (q15_t)0x810F, - (q15_t)0xF054, (q15_t)0x80F6, (q15_t)0xF11C, (q15_t)0x80DE, - (q15_t)0xF1E4, (q15_t)0x80C7, (q15_t)0xF2AC, (q15_t)0x80B2, - (q15_t)0xF374, (q15_t)0x809D, (q15_t)0xF43C, (q15_t)0x808A, - (q15_t)0xF504, (q15_t)0x8078, (q15_t)0xF5CC, (q15_t)0x8068, - (q15_t)0xF695, (q15_t)0x8058, (q15_t)0xF75D, (q15_t)0x804A, - (q15_t)0xF826, (q15_t)0x803D, (q15_t)0xF8EF, (q15_t)0x8031, - (q15_t)0xF9B8, (q15_t)0x8027, (q15_t)0xFA80, (q15_t)0x801E, - (q15_t)0xFB49, (q15_t)0x8016, (q15_t)0xFC12, (q15_t)0x800F, - (q15_t)0xFCDB, (q15_t)0x8009, (q15_t)0xFDA4, (q15_t)0x8005, - (q15_t)0xFE6D, (q15_t)0x8002, (q15_t)0xFF36, (q15_t)0x8000 -}; - -/** -* \par -* Example code for q15 Twiddle factors Generation:: -* \par -*
for(i = 0; i< 3N/4; i++)
-* {
-*    twiddleCoefq15[2*i]= cos(i * 2*PI/(float)N);
-*    twiddleCoefq15[2*i+1]= sin(i * 2*PI/(float)N);
-* } 
-* \par -* where N = 2048 and PI = 3.14159265358979 -* \par -* Cos and Sin values are interleaved fashion -* \par -* Convert Floating point to q15(Fixed point 1.15): -* round(twiddleCoefq15(i) * pow(2, 15)) -* -*/ -const q15_t twiddleCoef_2048_q15[3072] = { - (q15_t)0x7FFF, (q15_t)0x0000, (q15_t)0x7FFF, (q15_t)0x0064, - (q15_t)0x7FFF, (q15_t)0x00C9, (q15_t)0x7FFE, (q15_t)0x012D, - (q15_t)0x7FFD, (q15_t)0x0192, (q15_t)0x7FFC, (q15_t)0x01F6, - (q15_t)0x7FFA, (q15_t)0x025B, (q15_t)0x7FF8, (q15_t)0x02BF, - (q15_t)0x7FF6, (q15_t)0x0324, (q15_t)0x7FF3, (q15_t)0x0388, - (q15_t)0x7FF0, (q15_t)0x03ED, (q15_t)0x7FED, (q15_t)0x0451, - (q15_t)0x7FE9, (q15_t)0x04B6, (q15_t)0x7FE5, (q15_t)0x051A, - (q15_t)0x7FE1, (q15_t)0x057F, (q15_t)0x7FDD, (q15_t)0x05E3, - (q15_t)0x7FD8, (q15_t)0x0647, (q15_t)0x7FD3, (q15_t)0x06AC, - (q15_t)0x7FCE, (q15_t)0x0710, (q15_t)0x7FC8, (q15_t)0x0775, - (q15_t)0x7FC2, (q15_t)0x07D9, (q15_t)0x7FBC, (q15_t)0x083D, - (q15_t)0x7FB5, (q15_t)0x08A2, (q15_t)0x7FAE, (q15_t)0x0906, - (q15_t)0x7FA7, (q15_t)0x096A, (q15_t)0x7F9F, (q15_t)0x09CE, - (q15_t)0x7F97, (q15_t)0x0A33, (q15_t)0x7F8F, (q15_t)0x0A97, - (q15_t)0x7F87, (q15_t)0x0AFB, (q15_t)0x7F7E, (q15_t)0x0B5F, - (q15_t)0x7F75, (q15_t)0x0BC3, (q15_t)0x7F6B, (q15_t)0x0C27, - (q15_t)0x7F62, (q15_t)0x0C8B, (q15_t)0x7F58, (q15_t)0x0CEF, - (q15_t)0x7F4D, (q15_t)0x0D53, (q15_t)0x7F43, (q15_t)0x0DB7, - (q15_t)0x7F38, (q15_t)0x0E1B, (q15_t)0x7F2D, (q15_t)0x0E7F, - (q15_t)0x7F21, (q15_t)0x0EE3, (q15_t)0x7F15, (q15_t)0x0F47, - (q15_t)0x7F09, (q15_t)0x0FAB, (q15_t)0x7EFD, (q15_t)0x100E, - (q15_t)0x7EF0, (q15_t)0x1072, (q15_t)0x7EE3, (q15_t)0x10D6, - (q15_t)0x7ED5, (q15_t)0x1139, (q15_t)0x7EC8, (q15_t)0x119D, - (q15_t)0x7EBA, (q15_t)0x1201, (q15_t)0x7EAB, (q15_t)0x1264, - (q15_t)0x7E9D, (q15_t)0x12C8, (q15_t)0x7E8E, (q15_t)0x132B, - (q15_t)0x7E7F, (q15_t)0x138E, (q15_t)0x7E6F, (q15_t)0x13F2, - (q15_t)0x7E5F, (q15_t)0x1455, (q15_t)0x7E4F, (q15_t)0x14B8, - (q15_t)0x7E3F, (q15_t)0x151B, (q15_t)0x7E2E, (q15_t)0x157F, - (q15_t)0x7E1D, (q15_t)0x15E2, (q15_t)0x7E0C, (q15_t)0x1645, - (q15_t)0x7DFA, (q15_t)0x16A8, (q15_t)0x7DE8, (q15_t)0x170A, - (q15_t)0x7DD6, (q15_t)0x176D, (q15_t)0x7DC3, (q15_t)0x17D0, - (q15_t)0x7DB0, (q15_t)0x1833, (q15_t)0x7D9D, (q15_t)0x1896, - (q15_t)0x7D8A, (q15_t)0x18F8, (q15_t)0x7D76, (q15_t)0x195B, - (q15_t)0x7D62, (q15_t)0x19BD, (q15_t)0x7D4E, (q15_t)0x1A20, - (q15_t)0x7D39, (q15_t)0x1A82, (q15_t)0x7D24, (q15_t)0x1AE4, - (q15_t)0x7D0F, (q15_t)0x1B47, (q15_t)0x7CF9, (q15_t)0x1BA9, - (q15_t)0x7CE3, (q15_t)0x1C0B, (q15_t)0x7CCD, (q15_t)0x1C6D, - (q15_t)0x7CB7, (q15_t)0x1CCF, (q15_t)0x7CA0, (q15_t)0x1D31, - (q15_t)0x7C89, (q15_t)0x1D93, (q15_t)0x7C71, (q15_t)0x1DF5, - (q15_t)0x7C5A, (q15_t)0x1E56, (q15_t)0x7C42, (q15_t)0x1EB8, - (q15_t)0x7C29, (q15_t)0x1F19, (q15_t)0x7C11, (q15_t)0x1F7B, - (q15_t)0x7BF8, (q15_t)0x1FDC, (q15_t)0x7BDF, (q15_t)0x203E, - (q15_t)0x7BC5, (q15_t)0x209F, (q15_t)0x7BAC, (q15_t)0x2100, - (q15_t)0x7B92, (q15_t)0x2161, (q15_t)0x7B77, (q15_t)0x21C2, - (q15_t)0x7B5D, (q15_t)0x2223, (q15_t)0x7B42, (q15_t)0x2284, - (q15_t)0x7B26, (q15_t)0x22E5, (q15_t)0x7B0B, (q15_t)0x2345, - (q15_t)0x7AEF, (q15_t)0x23A6, (q15_t)0x7AD3, (q15_t)0x2407, - (q15_t)0x7AB6, (q15_t)0x2467, (q15_t)0x7A9A, (q15_t)0x24C7, - (q15_t)0x7A7D, (q15_t)0x2528, (q15_t)0x7A5F, (q15_t)0x2588, - (q15_t)0x7A42, (q15_t)0x25E8, (q15_t)0x7A24, (q15_t)0x2648, - (q15_t)0x7A05, (q15_t)0x26A8, (q15_t)0x79E7, (q15_t)0x2707, - (q15_t)0x79C8, (q15_t)0x2767, (q15_t)0x79A9, (q15_t)0x27C7, - (q15_t)0x798A, (q15_t)0x2826, (q15_t)0x796A, (q15_t)0x2886, - (q15_t)0x794A, (q15_t)0x28E5, (q15_t)0x792A, (q15_t)0x2944, - (q15_t)0x7909, (q15_t)0x29A3, (q15_t)0x78E8, (q15_t)0x2A02, - (q15_t)0x78C7, (q15_t)0x2A61, (q15_t)0x78A6, (q15_t)0x2AC0, - (q15_t)0x7884, (q15_t)0x2B1F, (q15_t)0x7862, (q15_t)0x2B7D, - (q15_t)0x7840, (q15_t)0x2BDC, (q15_t)0x781D, (q15_t)0x2C3A, - (q15_t)0x77FA, (q15_t)0x2C98, (q15_t)0x77D7, (q15_t)0x2CF7, - (q15_t)0x77B4, (q15_t)0x2D55, (q15_t)0x7790, (q15_t)0x2DB3, - (q15_t)0x776C, (q15_t)0x2E11, (q15_t)0x7747, (q15_t)0x2E6E, - (q15_t)0x7723, (q15_t)0x2ECC, (q15_t)0x76FE, (q15_t)0x2F29, - (q15_t)0x76D9, (q15_t)0x2F87, (q15_t)0x76B3, (q15_t)0x2FE4, - (q15_t)0x768E, (q15_t)0x3041, (q15_t)0x7668, (q15_t)0x309E, - (q15_t)0x7641, (q15_t)0x30FB, (q15_t)0x761B, (q15_t)0x3158, - (q15_t)0x75F4, (q15_t)0x31B5, (q15_t)0x75CC, (q15_t)0x3211, - (q15_t)0x75A5, (q15_t)0x326E, (q15_t)0x757D, (q15_t)0x32CA, - (q15_t)0x7555, (q15_t)0x3326, (q15_t)0x752D, (q15_t)0x3382, - (q15_t)0x7504, (q15_t)0x33DE, (q15_t)0x74DB, (q15_t)0x343A, - (q15_t)0x74B2, (q15_t)0x3496, (q15_t)0x7489, (q15_t)0x34F2, - (q15_t)0x745F, (q15_t)0x354D, (q15_t)0x7435, (q15_t)0x35A8, - (q15_t)0x740B, (q15_t)0x3604, (q15_t)0x73E0, (q15_t)0x365F, - (q15_t)0x73B5, (q15_t)0x36BA, (q15_t)0x738A, (q15_t)0x3714, - (q15_t)0x735F, (q15_t)0x376F, (q15_t)0x7333, (q15_t)0x37CA, - (q15_t)0x7307, (q15_t)0x3824, (q15_t)0x72DB, (q15_t)0x387E, - (q15_t)0x72AF, (q15_t)0x38D8, (q15_t)0x7282, (q15_t)0x3932, - (q15_t)0x7255, (q15_t)0x398C, (q15_t)0x7227, (q15_t)0x39E6, - (q15_t)0x71FA, (q15_t)0x3A40, (q15_t)0x71CC, (q15_t)0x3A99, - (q15_t)0x719E, (q15_t)0x3AF2, (q15_t)0x716F, (q15_t)0x3B4C, - (q15_t)0x7141, (q15_t)0x3BA5, (q15_t)0x7112, (q15_t)0x3BFD, - (q15_t)0x70E2, (q15_t)0x3C56, (q15_t)0x70B3, (q15_t)0x3CAF, - (q15_t)0x7083, (q15_t)0x3D07, (q15_t)0x7053, (q15_t)0x3D60, - (q15_t)0x7023, (q15_t)0x3DB8, (q15_t)0x6FF2, (q15_t)0x3E10, - (q15_t)0x6FC1, (q15_t)0x3E68, (q15_t)0x6F90, (q15_t)0x3EBF, - (q15_t)0x6F5F, (q15_t)0x3F17, (q15_t)0x6F2D, (q15_t)0x3F6E, - (q15_t)0x6EFB, (q15_t)0x3FC5, (q15_t)0x6EC9, (q15_t)0x401D, - (q15_t)0x6E96, (q15_t)0x4073, (q15_t)0x6E63, (q15_t)0x40CA, - (q15_t)0x6E30, (q15_t)0x4121, (q15_t)0x6DFD, (q15_t)0x4177, - (q15_t)0x6DCA, (q15_t)0x41CE, (q15_t)0x6D96, (q15_t)0x4224, - (q15_t)0x6D62, (q15_t)0x427A, (q15_t)0x6D2D, (q15_t)0x42D0, - (q15_t)0x6CF9, (q15_t)0x4325, (q15_t)0x6CC4, (q15_t)0x437B, - (q15_t)0x6C8F, (q15_t)0x43D0, (q15_t)0x6C59, (q15_t)0x4425, - (q15_t)0x6C24, (q15_t)0x447A, (q15_t)0x6BEE, (q15_t)0x44CF, - (q15_t)0x6BB8, (q15_t)0x4524, (q15_t)0x6B81, (q15_t)0x4578, - (q15_t)0x6B4A, (q15_t)0x45CD, (q15_t)0x6B13, (q15_t)0x4621, - (q15_t)0x6ADC, (q15_t)0x4675, (q15_t)0x6AA5, (q15_t)0x46C9, - (q15_t)0x6A6D, (q15_t)0x471C, (q15_t)0x6A35, (q15_t)0x4770, - (q15_t)0x69FD, (q15_t)0x47C3, (q15_t)0x69C4, (q15_t)0x4816, - (q15_t)0x698C, (q15_t)0x4869, (q15_t)0x6953, (q15_t)0x48BC, - (q15_t)0x6919, (q15_t)0x490F, (q15_t)0x68E0, (q15_t)0x4961, - (q15_t)0x68A6, (q15_t)0x49B4, (q15_t)0x686C, (q15_t)0x4A06, - (q15_t)0x6832, (q15_t)0x4A58, (q15_t)0x67F7, (q15_t)0x4AA9, - (q15_t)0x67BD, (q15_t)0x4AFB, (q15_t)0x6782, (q15_t)0x4B4C, - (q15_t)0x6746, (q15_t)0x4B9E, (q15_t)0x670B, (q15_t)0x4BEF, - (q15_t)0x66CF, (q15_t)0x4C3F, (q15_t)0x6693, (q15_t)0x4C90, - (q15_t)0x6657, (q15_t)0x4CE1, (q15_t)0x661A, (q15_t)0x4D31, - (q15_t)0x65DD, (q15_t)0x4D81, (q15_t)0x65A0, (q15_t)0x4DD1, - (q15_t)0x6563, (q15_t)0x4E21, (q15_t)0x6526, (q15_t)0x4E70, - (q15_t)0x64E8, (q15_t)0x4EBF, (q15_t)0x64AA, (q15_t)0x4F0F, - (q15_t)0x646C, (q15_t)0x4F5E, (q15_t)0x642D, (q15_t)0x4FAC, - (q15_t)0x63EF, (q15_t)0x4FFB, (q15_t)0x63B0, (q15_t)0x5049, - (q15_t)0x6371, (q15_t)0x5097, (q15_t)0x6331, (q15_t)0x50E5, - (q15_t)0x62F2, (q15_t)0x5133, (q15_t)0x62B2, (q15_t)0x5181, - (q15_t)0x6271, (q15_t)0x51CE, (q15_t)0x6231, (q15_t)0x521C, - (q15_t)0x61F1, (q15_t)0x5269, (q15_t)0x61B0, (q15_t)0x52B5, - (q15_t)0x616F, (q15_t)0x5302, (q15_t)0x612D, (q15_t)0x534E, - (q15_t)0x60EC, (q15_t)0x539B, (q15_t)0x60AA, (q15_t)0x53E7, - (q15_t)0x6068, (q15_t)0x5433, (q15_t)0x6026, (q15_t)0x547E, - (q15_t)0x5FE3, (q15_t)0x54CA, (q15_t)0x5FA0, (q15_t)0x5515, - (q15_t)0x5F5E, (q15_t)0x5560, (q15_t)0x5F1A, (q15_t)0x55AB, - (q15_t)0x5ED7, (q15_t)0x55F5, (q15_t)0x5E93, (q15_t)0x5640, - (q15_t)0x5E50, (q15_t)0x568A, (q15_t)0x5E0B, (q15_t)0x56D4, - (q15_t)0x5DC7, (q15_t)0x571D, (q15_t)0x5D83, (q15_t)0x5767, - (q15_t)0x5D3E, (q15_t)0x57B0, (q15_t)0x5CF9, (q15_t)0x57F9, - (q15_t)0x5CB4, (q15_t)0x5842, (q15_t)0x5C6E, (q15_t)0x588B, - (q15_t)0x5C29, (q15_t)0x58D4, (q15_t)0x5BE3, (q15_t)0x591C, - (q15_t)0x5B9D, (q15_t)0x5964, (q15_t)0x5B56, (q15_t)0x59AC, - (q15_t)0x5B10, (q15_t)0x59F3, (q15_t)0x5AC9, (q15_t)0x5A3B, - (q15_t)0x5A82, (q15_t)0x5A82, (q15_t)0x5A3B, (q15_t)0x5AC9, - (q15_t)0x59F3, (q15_t)0x5B10, (q15_t)0x59AC, (q15_t)0x5B56, - (q15_t)0x5964, (q15_t)0x5B9D, (q15_t)0x591C, (q15_t)0x5BE3, - (q15_t)0x58D4, (q15_t)0x5C29, (q15_t)0x588B, (q15_t)0x5C6E, - (q15_t)0x5842, (q15_t)0x5CB4, (q15_t)0x57F9, (q15_t)0x5CF9, - (q15_t)0x57B0, (q15_t)0x5D3E, (q15_t)0x5767, (q15_t)0x5D83, - (q15_t)0x571D, (q15_t)0x5DC7, (q15_t)0x56D4, (q15_t)0x5E0B, - (q15_t)0x568A, (q15_t)0x5E50, (q15_t)0x5640, (q15_t)0x5E93, - (q15_t)0x55F5, (q15_t)0x5ED7, (q15_t)0x55AB, (q15_t)0x5F1A, - (q15_t)0x5560, (q15_t)0x5F5E, (q15_t)0x5515, (q15_t)0x5FA0, - (q15_t)0x54CA, (q15_t)0x5FE3, (q15_t)0x547E, (q15_t)0x6026, - (q15_t)0x5433, (q15_t)0x6068, (q15_t)0x53E7, (q15_t)0x60AA, - (q15_t)0x539B, (q15_t)0x60EC, (q15_t)0x534E, (q15_t)0x612D, - (q15_t)0x5302, (q15_t)0x616F, (q15_t)0x52B5, (q15_t)0x61B0, - (q15_t)0x5269, (q15_t)0x61F1, (q15_t)0x521C, (q15_t)0x6231, - (q15_t)0x51CE, (q15_t)0x6271, (q15_t)0x5181, (q15_t)0x62B2, - (q15_t)0x5133, (q15_t)0x62F2, (q15_t)0x50E5, (q15_t)0x6331, - (q15_t)0x5097, (q15_t)0x6371, (q15_t)0x5049, (q15_t)0x63B0, - (q15_t)0x4FFB, (q15_t)0x63EF, (q15_t)0x4FAC, (q15_t)0x642D, - (q15_t)0x4F5E, (q15_t)0x646C, (q15_t)0x4F0F, (q15_t)0x64AA, - (q15_t)0x4EBF, (q15_t)0x64E8, (q15_t)0x4E70, (q15_t)0x6526, - (q15_t)0x4E21, (q15_t)0x6563, (q15_t)0x4DD1, (q15_t)0x65A0, - (q15_t)0x4D81, (q15_t)0x65DD, (q15_t)0x4D31, (q15_t)0x661A, - (q15_t)0x4CE1, (q15_t)0x6657, (q15_t)0x4C90, (q15_t)0x6693, - (q15_t)0x4C3F, (q15_t)0x66CF, (q15_t)0x4BEF, (q15_t)0x670B, - (q15_t)0x4B9E, (q15_t)0x6746, (q15_t)0x4B4C, (q15_t)0x6782, - (q15_t)0x4AFB, (q15_t)0x67BD, (q15_t)0x4AA9, (q15_t)0x67F7, - (q15_t)0x4A58, (q15_t)0x6832, (q15_t)0x4A06, (q15_t)0x686C, - (q15_t)0x49B4, (q15_t)0x68A6, (q15_t)0x4961, (q15_t)0x68E0, - (q15_t)0x490F, (q15_t)0x6919, (q15_t)0x48BC, (q15_t)0x6953, - (q15_t)0x4869, (q15_t)0x698C, (q15_t)0x4816, (q15_t)0x69C4, - (q15_t)0x47C3, (q15_t)0x69FD, (q15_t)0x4770, (q15_t)0x6A35, - (q15_t)0x471C, (q15_t)0x6A6D, (q15_t)0x46C9, (q15_t)0x6AA5, - (q15_t)0x4675, (q15_t)0x6ADC, (q15_t)0x4621, (q15_t)0x6B13, - (q15_t)0x45CD, (q15_t)0x6B4A, (q15_t)0x4578, (q15_t)0x6B81, - (q15_t)0x4524, (q15_t)0x6BB8, (q15_t)0x44CF, (q15_t)0x6BEE, - (q15_t)0x447A, (q15_t)0x6C24, (q15_t)0x4425, (q15_t)0x6C59, - (q15_t)0x43D0, (q15_t)0x6C8F, (q15_t)0x437B, (q15_t)0x6CC4, - (q15_t)0x4325, (q15_t)0x6CF9, (q15_t)0x42D0, (q15_t)0x6D2D, - (q15_t)0x427A, (q15_t)0x6D62, (q15_t)0x4224, (q15_t)0x6D96, - (q15_t)0x41CE, (q15_t)0x6DCA, (q15_t)0x4177, (q15_t)0x6DFD, - (q15_t)0x4121, (q15_t)0x6E30, (q15_t)0x40CA, (q15_t)0x6E63, - (q15_t)0x4073, (q15_t)0x6E96, (q15_t)0x401D, (q15_t)0x6EC9, - (q15_t)0x3FC5, (q15_t)0x6EFB, (q15_t)0x3F6E, (q15_t)0x6F2D, - (q15_t)0x3F17, (q15_t)0x6F5F, (q15_t)0x3EBF, (q15_t)0x6F90, - (q15_t)0x3E68, (q15_t)0x6FC1, (q15_t)0x3E10, (q15_t)0x6FF2, - (q15_t)0x3DB8, (q15_t)0x7023, (q15_t)0x3D60, (q15_t)0x7053, - (q15_t)0x3D07, (q15_t)0x7083, (q15_t)0x3CAF, (q15_t)0x70B3, - (q15_t)0x3C56, (q15_t)0x70E2, (q15_t)0x3BFD, (q15_t)0x7112, - (q15_t)0x3BA5, (q15_t)0x7141, (q15_t)0x3B4C, (q15_t)0x716F, - (q15_t)0x3AF2, (q15_t)0x719E, (q15_t)0x3A99, (q15_t)0x71CC, - (q15_t)0x3A40, (q15_t)0x71FA, (q15_t)0x39E6, (q15_t)0x7227, - (q15_t)0x398C, (q15_t)0x7255, (q15_t)0x3932, (q15_t)0x7282, - (q15_t)0x38D8, (q15_t)0x72AF, (q15_t)0x387E, (q15_t)0x72DB, - (q15_t)0x3824, (q15_t)0x7307, (q15_t)0x37CA, (q15_t)0x7333, - (q15_t)0x376F, (q15_t)0x735F, (q15_t)0x3714, (q15_t)0x738A, - (q15_t)0x36BA, (q15_t)0x73B5, (q15_t)0x365F, (q15_t)0x73E0, - (q15_t)0x3604, (q15_t)0x740B, (q15_t)0x35A8, (q15_t)0x7435, - (q15_t)0x354D, (q15_t)0x745F, (q15_t)0x34F2, (q15_t)0x7489, - (q15_t)0x3496, (q15_t)0x74B2, (q15_t)0x343A, (q15_t)0x74DB, - (q15_t)0x33DE, (q15_t)0x7504, (q15_t)0x3382, (q15_t)0x752D, - (q15_t)0x3326, (q15_t)0x7555, (q15_t)0x32CA, (q15_t)0x757D, - (q15_t)0x326E, (q15_t)0x75A5, (q15_t)0x3211, (q15_t)0x75CC, - (q15_t)0x31B5, (q15_t)0x75F4, (q15_t)0x3158, (q15_t)0x761B, - (q15_t)0x30FB, (q15_t)0x7641, (q15_t)0x309E, (q15_t)0x7668, - (q15_t)0x3041, (q15_t)0x768E, (q15_t)0x2FE4, (q15_t)0x76B3, - (q15_t)0x2F87, (q15_t)0x76D9, (q15_t)0x2F29, (q15_t)0x76FE, - (q15_t)0x2ECC, (q15_t)0x7723, (q15_t)0x2E6E, (q15_t)0x7747, - (q15_t)0x2E11, (q15_t)0x776C, (q15_t)0x2DB3, (q15_t)0x7790, - (q15_t)0x2D55, (q15_t)0x77B4, (q15_t)0x2CF7, (q15_t)0x77D7, - (q15_t)0x2C98, (q15_t)0x77FA, (q15_t)0x2C3A, (q15_t)0x781D, - (q15_t)0x2BDC, (q15_t)0x7840, (q15_t)0x2B7D, (q15_t)0x7862, - (q15_t)0x2B1F, (q15_t)0x7884, (q15_t)0x2AC0, (q15_t)0x78A6, - (q15_t)0x2A61, (q15_t)0x78C7, (q15_t)0x2A02, (q15_t)0x78E8, - (q15_t)0x29A3, (q15_t)0x7909, (q15_t)0x2944, (q15_t)0x792A, - (q15_t)0x28E5, (q15_t)0x794A, (q15_t)0x2886, (q15_t)0x796A, - (q15_t)0x2826, (q15_t)0x798A, (q15_t)0x27C7, (q15_t)0x79A9, - (q15_t)0x2767, (q15_t)0x79C8, (q15_t)0x2707, (q15_t)0x79E7, - (q15_t)0x26A8, (q15_t)0x7A05, (q15_t)0x2648, (q15_t)0x7A24, - (q15_t)0x25E8, (q15_t)0x7A42, (q15_t)0x2588, (q15_t)0x7A5F, - (q15_t)0x2528, (q15_t)0x7A7D, (q15_t)0x24C7, (q15_t)0x7A9A, - (q15_t)0x2467, (q15_t)0x7AB6, (q15_t)0x2407, (q15_t)0x7AD3, - (q15_t)0x23A6, (q15_t)0x7AEF, (q15_t)0x2345, (q15_t)0x7B0B, - (q15_t)0x22E5, (q15_t)0x7B26, (q15_t)0x2284, (q15_t)0x7B42, - (q15_t)0x2223, (q15_t)0x7B5D, (q15_t)0x21C2, (q15_t)0x7B77, - (q15_t)0x2161, (q15_t)0x7B92, (q15_t)0x2100, (q15_t)0x7BAC, - (q15_t)0x209F, (q15_t)0x7BC5, (q15_t)0x203E, (q15_t)0x7BDF, - (q15_t)0x1FDC, (q15_t)0x7BF8, (q15_t)0x1F7B, (q15_t)0x7C11, - (q15_t)0x1F19, (q15_t)0x7C29, (q15_t)0x1EB8, (q15_t)0x7C42, - (q15_t)0x1E56, (q15_t)0x7C5A, (q15_t)0x1DF5, (q15_t)0x7C71, - (q15_t)0x1D93, (q15_t)0x7C89, (q15_t)0x1D31, (q15_t)0x7CA0, - (q15_t)0x1CCF, (q15_t)0x7CB7, (q15_t)0x1C6D, (q15_t)0x7CCD, - (q15_t)0x1C0B, (q15_t)0x7CE3, (q15_t)0x1BA9, (q15_t)0x7CF9, - (q15_t)0x1B47, (q15_t)0x7D0F, (q15_t)0x1AE4, (q15_t)0x7D24, - (q15_t)0x1A82, (q15_t)0x7D39, (q15_t)0x1A20, (q15_t)0x7D4E, - (q15_t)0x19BD, (q15_t)0x7D62, (q15_t)0x195B, (q15_t)0x7D76, - (q15_t)0x18F8, (q15_t)0x7D8A, (q15_t)0x1896, (q15_t)0x7D9D, - (q15_t)0x1833, (q15_t)0x7DB0, (q15_t)0x17D0, (q15_t)0x7DC3, - (q15_t)0x176D, (q15_t)0x7DD6, (q15_t)0x170A, (q15_t)0x7DE8, - (q15_t)0x16A8, (q15_t)0x7DFA, (q15_t)0x1645, (q15_t)0x7E0C, - (q15_t)0x15E2, (q15_t)0x7E1D, (q15_t)0x157F, (q15_t)0x7E2E, - (q15_t)0x151B, (q15_t)0x7E3F, (q15_t)0x14B8, (q15_t)0x7E4F, - (q15_t)0x1455, (q15_t)0x7E5F, (q15_t)0x13F2, (q15_t)0x7E6F, - (q15_t)0x138E, (q15_t)0x7E7F, (q15_t)0x132B, (q15_t)0x7E8E, - (q15_t)0x12C8, (q15_t)0x7E9D, (q15_t)0x1264, (q15_t)0x7EAB, - (q15_t)0x1201, (q15_t)0x7EBA, (q15_t)0x119D, (q15_t)0x7EC8, - (q15_t)0x1139, (q15_t)0x7ED5, (q15_t)0x10D6, (q15_t)0x7EE3, - (q15_t)0x1072, (q15_t)0x7EF0, (q15_t)0x100E, (q15_t)0x7EFD, - (q15_t)0x0FAB, (q15_t)0x7F09, (q15_t)0x0F47, (q15_t)0x7F15, - (q15_t)0x0EE3, (q15_t)0x7F21, (q15_t)0x0E7F, (q15_t)0x7F2D, - (q15_t)0x0E1B, (q15_t)0x7F38, (q15_t)0x0DB7, (q15_t)0x7F43, - (q15_t)0x0D53, (q15_t)0x7F4D, (q15_t)0x0CEF, (q15_t)0x7F58, - (q15_t)0x0C8B, (q15_t)0x7F62, (q15_t)0x0C27, (q15_t)0x7F6B, - (q15_t)0x0BC3, (q15_t)0x7F75, (q15_t)0x0B5F, (q15_t)0x7F7E, - (q15_t)0x0AFB, (q15_t)0x7F87, (q15_t)0x0A97, (q15_t)0x7F8F, - (q15_t)0x0A33, (q15_t)0x7F97, (q15_t)0x09CE, (q15_t)0x7F9F, - (q15_t)0x096A, (q15_t)0x7FA7, (q15_t)0x0906, (q15_t)0x7FAE, - (q15_t)0x08A2, (q15_t)0x7FB5, (q15_t)0x083D, (q15_t)0x7FBC, - (q15_t)0x07D9, (q15_t)0x7FC2, (q15_t)0x0775, (q15_t)0x7FC8, - (q15_t)0x0710, (q15_t)0x7FCE, (q15_t)0x06AC, (q15_t)0x7FD3, - (q15_t)0x0647, (q15_t)0x7FD8, (q15_t)0x05E3, (q15_t)0x7FDD, - (q15_t)0x057F, (q15_t)0x7FE1, (q15_t)0x051A, (q15_t)0x7FE5, - (q15_t)0x04B6, (q15_t)0x7FE9, (q15_t)0x0451, (q15_t)0x7FED, - (q15_t)0x03ED, (q15_t)0x7FF0, (q15_t)0x0388, (q15_t)0x7FF3, - (q15_t)0x0324, (q15_t)0x7FF6, (q15_t)0x02BF, (q15_t)0x7FF8, - (q15_t)0x025B, (q15_t)0x7FFA, (q15_t)0x01F6, (q15_t)0x7FFC, - (q15_t)0x0192, (q15_t)0x7FFD, (q15_t)0x012D, (q15_t)0x7FFE, - (q15_t)0x00C9, (q15_t)0x7FFF, (q15_t)0x0064, (q15_t)0x7FFF, - (q15_t)0x0000, (q15_t)0x7FFF, (q15_t)0xFF9B, (q15_t)0x7FFF, - (q15_t)0xFF36, (q15_t)0x7FFF, (q15_t)0xFED2, (q15_t)0x7FFE, - (q15_t)0xFE6D, (q15_t)0x7FFD, (q15_t)0xFE09, (q15_t)0x7FFC, - (q15_t)0xFDA4, (q15_t)0x7FFA, (q15_t)0xFD40, (q15_t)0x7FF8, - (q15_t)0xFCDB, (q15_t)0x7FF6, (q15_t)0xFC77, (q15_t)0x7FF3, - (q15_t)0xFC12, (q15_t)0x7FF0, (q15_t)0xFBAE, (q15_t)0x7FED, - (q15_t)0xFB49, (q15_t)0x7FE9, (q15_t)0xFAE5, (q15_t)0x7FE5, - (q15_t)0xFA80, (q15_t)0x7FE1, (q15_t)0xFA1C, (q15_t)0x7FDD, - (q15_t)0xF9B8, (q15_t)0x7FD8, (q15_t)0xF953, (q15_t)0x7FD3, - (q15_t)0xF8EF, (q15_t)0x7FCE, (q15_t)0xF88A, (q15_t)0x7FC8, - (q15_t)0xF826, (q15_t)0x7FC2, (q15_t)0xF7C2, (q15_t)0x7FBC, - (q15_t)0xF75D, (q15_t)0x7FB5, (q15_t)0xF6F9, (q15_t)0x7FAE, - (q15_t)0xF695, (q15_t)0x7FA7, (q15_t)0xF631, (q15_t)0x7F9F, - (q15_t)0xF5CC, (q15_t)0x7F97, (q15_t)0xF568, (q15_t)0x7F8F, - (q15_t)0xF504, (q15_t)0x7F87, (q15_t)0xF4A0, (q15_t)0x7F7E, - (q15_t)0xF43C, (q15_t)0x7F75, (q15_t)0xF3D8, (q15_t)0x7F6B, - (q15_t)0xF374, (q15_t)0x7F62, (q15_t)0xF310, (q15_t)0x7F58, - (q15_t)0xF2AC, (q15_t)0x7F4D, (q15_t)0xF248, (q15_t)0x7F43, - (q15_t)0xF1E4, (q15_t)0x7F38, (q15_t)0xF180, (q15_t)0x7F2D, - (q15_t)0xF11C, (q15_t)0x7F21, (q15_t)0xF0B8, (q15_t)0x7F15, - (q15_t)0xF054, (q15_t)0x7F09, (q15_t)0xEFF1, (q15_t)0x7EFD, - (q15_t)0xEF8D, (q15_t)0x7EF0, (q15_t)0xEF29, (q15_t)0x7EE3, - (q15_t)0xEEC6, (q15_t)0x7ED5, (q15_t)0xEE62, (q15_t)0x7EC8, - (q15_t)0xEDFE, (q15_t)0x7EBA, (q15_t)0xED9B, (q15_t)0x7EAB, - (q15_t)0xED37, (q15_t)0x7E9D, (q15_t)0xECD4, (q15_t)0x7E8E, - (q15_t)0xEC71, (q15_t)0x7E7F, (q15_t)0xEC0D, (q15_t)0x7E6F, - (q15_t)0xEBAA, (q15_t)0x7E5F, (q15_t)0xEB47, (q15_t)0x7E4F, - (q15_t)0xEAE4, (q15_t)0x7E3F, (q15_t)0xEA80, (q15_t)0x7E2E, - (q15_t)0xEA1D, (q15_t)0x7E1D, (q15_t)0xE9BA, (q15_t)0x7E0C, - (q15_t)0xE957, (q15_t)0x7DFA, (q15_t)0xE8F5, (q15_t)0x7DE8, - (q15_t)0xE892, (q15_t)0x7DD6, (q15_t)0xE82F, (q15_t)0x7DC3, - (q15_t)0xE7CC, (q15_t)0x7DB0, (q15_t)0xE769, (q15_t)0x7D9D, - (q15_t)0xE707, (q15_t)0x7D8A, (q15_t)0xE6A4, (q15_t)0x7D76, - (q15_t)0xE642, (q15_t)0x7D62, (q15_t)0xE5DF, (q15_t)0x7D4E, - (q15_t)0xE57D, (q15_t)0x7D39, (q15_t)0xE51B, (q15_t)0x7D24, - (q15_t)0xE4B8, (q15_t)0x7D0F, (q15_t)0xE456, (q15_t)0x7CF9, - (q15_t)0xE3F4, (q15_t)0x7CE3, (q15_t)0xE392, (q15_t)0x7CCD, - (q15_t)0xE330, (q15_t)0x7CB7, (q15_t)0xE2CE, (q15_t)0x7CA0, - (q15_t)0xE26C, (q15_t)0x7C89, (q15_t)0xE20A, (q15_t)0x7C71, - (q15_t)0xE1A9, (q15_t)0x7C5A, (q15_t)0xE147, (q15_t)0x7C42, - (q15_t)0xE0E6, (q15_t)0x7C29, (q15_t)0xE084, (q15_t)0x7C11, - (q15_t)0xE023, (q15_t)0x7BF8, (q15_t)0xDFC1, (q15_t)0x7BDF, - (q15_t)0xDF60, (q15_t)0x7BC5, (q15_t)0xDEFF, (q15_t)0x7BAC, - (q15_t)0xDE9E, (q15_t)0x7B92, (q15_t)0xDE3D, (q15_t)0x7B77, - (q15_t)0xDDDC, (q15_t)0x7B5D, (q15_t)0xDD7B, (q15_t)0x7B42, - (q15_t)0xDD1A, (q15_t)0x7B26, (q15_t)0xDCBA, (q15_t)0x7B0B, - (q15_t)0xDC59, (q15_t)0x7AEF, (q15_t)0xDBF8, (q15_t)0x7AD3, - (q15_t)0xDB98, (q15_t)0x7AB6, (q15_t)0xDB38, (q15_t)0x7A9A, - (q15_t)0xDAD7, (q15_t)0x7A7D, (q15_t)0xDA77, (q15_t)0x7A5F, - (q15_t)0xDA17, (q15_t)0x7A42, (q15_t)0xD9B7, (q15_t)0x7A24, - (q15_t)0xD957, (q15_t)0x7A05, (q15_t)0xD8F8, (q15_t)0x79E7, - (q15_t)0xD898, (q15_t)0x79C8, (q15_t)0xD838, (q15_t)0x79A9, - (q15_t)0xD7D9, (q15_t)0x798A, (q15_t)0xD779, (q15_t)0x796A, - (q15_t)0xD71A, (q15_t)0x794A, (q15_t)0xD6BB, (q15_t)0x792A, - (q15_t)0xD65C, (q15_t)0x7909, (q15_t)0xD5FD, (q15_t)0x78E8, - (q15_t)0xD59E, (q15_t)0x78C7, (q15_t)0xD53F, (q15_t)0x78A6, - (q15_t)0xD4E0, (q15_t)0x7884, (q15_t)0xD482, (q15_t)0x7862, - (q15_t)0xD423, (q15_t)0x7840, (q15_t)0xD3C5, (q15_t)0x781D, - (q15_t)0xD367, (q15_t)0x77FA, (q15_t)0xD308, (q15_t)0x77D7, - (q15_t)0xD2AA, (q15_t)0x77B4, (q15_t)0xD24C, (q15_t)0x7790, - (q15_t)0xD1EE, (q15_t)0x776C, (q15_t)0xD191, (q15_t)0x7747, - (q15_t)0xD133, (q15_t)0x7723, (q15_t)0xD0D6, (q15_t)0x76FE, - (q15_t)0xD078, (q15_t)0x76D9, (q15_t)0xD01B, (q15_t)0x76B3, - (q15_t)0xCFBE, (q15_t)0x768E, (q15_t)0xCF61, (q15_t)0x7668, - (q15_t)0xCF04, (q15_t)0x7641, (q15_t)0xCEA7, (q15_t)0x761B, - (q15_t)0xCE4A, (q15_t)0x75F4, (q15_t)0xCDEE, (q15_t)0x75CC, - (q15_t)0xCD91, (q15_t)0x75A5, (q15_t)0xCD35, (q15_t)0x757D, - (q15_t)0xCCD9, (q15_t)0x7555, (q15_t)0xCC7D, (q15_t)0x752D, - (q15_t)0xCC21, (q15_t)0x7504, (q15_t)0xCBC5, (q15_t)0x74DB, - (q15_t)0xCB69, (q15_t)0x74B2, (q15_t)0xCB0D, (q15_t)0x7489, - (q15_t)0xCAB2, (q15_t)0x745F, (q15_t)0xCA57, (q15_t)0x7435, - (q15_t)0xC9FB, (q15_t)0x740B, (q15_t)0xC9A0, (q15_t)0x73E0, - (q15_t)0xC945, (q15_t)0x73B5, (q15_t)0xC8EB, (q15_t)0x738A, - (q15_t)0xC890, (q15_t)0x735F, (q15_t)0xC835, (q15_t)0x7333, - (q15_t)0xC7DB, (q15_t)0x7307, (q15_t)0xC781, (q15_t)0x72DB, - (q15_t)0xC727, (q15_t)0x72AF, (q15_t)0xC6CD, (q15_t)0x7282, - (q15_t)0xC673, (q15_t)0x7255, (q15_t)0xC619, (q15_t)0x7227, - (q15_t)0xC5BF, (q15_t)0x71FA, (q15_t)0xC566, (q15_t)0x71CC, - (q15_t)0xC50D, (q15_t)0x719E, (q15_t)0xC4B3, (q15_t)0x716F, - (q15_t)0xC45A, (q15_t)0x7141, (q15_t)0xC402, (q15_t)0x7112, - (q15_t)0xC3A9, (q15_t)0x70E2, (q15_t)0xC350, (q15_t)0x70B3, - (q15_t)0xC2F8, (q15_t)0x7083, (q15_t)0xC29F, (q15_t)0x7053, - (q15_t)0xC247, (q15_t)0x7023, (q15_t)0xC1EF, (q15_t)0x6FF2, - (q15_t)0xC197, (q15_t)0x6FC1, (q15_t)0xC140, (q15_t)0x6F90, - (q15_t)0xC0E8, (q15_t)0x6F5F, (q15_t)0xC091, (q15_t)0x6F2D, - (q15_t)0xC03A, (q15_t)0x6EFB, (q15_t)0xBFE2, (q15_t)0x6EC9, - (q15_t)0xBF8C, (q15_t)0x6E96, (q15_t)0xBF35, (q15_t)0x6E63, - (q15_t)0xBEDE, (q15_t)0x6E30, (q15_t)0xBE88, (q15_t)0x6DFD, - (q15_t)0xBE31, (q15_t)0x6DCA, (q15_t)0xBDDB, (q15_t)0x6D96, - (q15_t)0xBD85, (q15_t)0x6D62, (q15_t)0xBD2F, (q15_t)0x6D2D, - (q15_t)0xBCDA, (q15_t)0x6CF9, (q15_t)0xBC84, (q15_t)0x6CC4, - (q15_t)0xBC2F, (q15_t)0x6C8F, (q15_t)0xBBDA, (q15_t)0x6C59, - (q15_t)0xBB85, (q15_t)0x6C24, (q15_t)0xBB30, (q15_t)0x6BEE, - (q15_t)0xBADB, (q15_t)0x6BB8, (q15_t)0xBA87, (q15_t)0x6B81, - (q15_t)0xBA32, (q15_t)0x6B4A, (q15_t)0xB9DE, (q15_t)0x6B13, - (q15_t)0xB98A, (q15_t)0x6ADC, (q15_t)0xB936, (q15_t)0x6AA5, - (q15_t)0xB8E3, (q15_t)0x6A6D, (q15_t)0xB88F, (q15_t)0x6A35, - (q15_t)0xB83C, (q15_t)0x69FD, (q15_t)0xB7E9, (q15_t)0x69C4, - (q15_t)0xB796, (q15_t)0x698C, (q15_t)0xB743, (q15_t)0x6953, - (q15_t)0xB6F0, (q15_t)0x6919, (q15_t)0xB69E, (q15_t)0x68E0, - (q15_t)0xB64B, (q15_t)0x68A6, (q15_t)0xB5F9, (q15_t)0x686C, - (q15_t)0xB5A7, (q15_t)0x6832, (q15_t)0xB556, (q15_t)0x67F7, - (q15_t)0xB504, (q15_t)0x67BD, (q15_t)0xB4B3, (q15_t)0x6782, - (q15_t)0xB461, (q15_t)0x6746, (q15_t)0xB410, (q15_t)0x670B, - (q15_t)0xB3C0, (q15_t)0x66CF, (q15_t)0xB36F, (q15_t)0x6693, - (q15_t)0xB31E, (q15_t)0x6657, (q15_t)0xB2CE, (q15_t)0x661A, - (q15_t)0xB27E, (q15_t)0x65DD, (q15_t)0xB22E, (q15_t)0x65A0, - (q15_t)0xB1DE, (q15_t)0x6563, (q15_t)0xB18F, (q15_t)0x6526, - (q15_t)0xB140, (q15_t)0x64E8, (q15_t)0xB0F0, (q15_t)0x64AA, - (q15_t)0xB0A1, (q15_t)0x646C, (q15_t)0xB053, (q15_t)0x642D, - (q15_t)0xB004, (q15_t)0x63EF, (q15_t)0xAFB6, (q15_t)0x63B0, - (q15_t)0xAF68, (q15_t)0x6371, (q15_t)0xAF1A, (q15_t)0x6331, - (q15_t)0xAECC, (q15_t)0x62F2, (q15_t)0xAE7E, (q15_t)0x62B2, - (q15_t)0xAE31, (q15_t)0x6271, (q15_t)0xADE3, (q15_t)0x6231, - (q15_t)0xAD96, (q15_t)0x61F1, (q15_t)0xAD4A, (q15_t)0x61B0, - (q15_t)0xACFD, (q15_t)0x616F, (q15_t)0xACB1, (q15_t)0x612D, - (q15_t)0xAC64, (q15_t)0x60EC, (q15_t)0xAC18, (q15_t)0x60AA, - (q15_t)0xABCC, (q15_t)0x6068, (q15_t)0xAB81, (q15_t)0x6026, - (q15_t)0xAB35, (q15_t)0x5FE3, (q15_t)0xAAEA, (q15_t)0x5FA0, - (q15_t)0xAA9F, (q15_t)0x5F5E, (q15_t)0xAA54, (q15_t)0x5F1A, - (q15_t)0xAA0A, (q15_t)0x5ED7, (q15_t)0xA9BF, (q15_t)0x5E93, - (q15_t)0xA975, (q15_t)0x5E50, (q15_t)0xA92B, (q15_t)0x5E0B, - (q15_t)0xA8E2, (q15_t)0x5DC7, (q15_t)0xA898, (q15_t)0x5D83, - (q15_t)0xA84F, (q15_t)0x5D3E, (q15_t)0xA806, (q15_t)0x5CF9, - (q15_t)0xA7BD, (q15_t)0x5CB4, (q15_t)0xA774, (q15_t)0x5C6E, - (q15_t)0xA72B, (q15_t)0x5C29, (q15_t)0xA6E3, (q15_t)0x5BE3, - (q15_t)0xA69B, (q15_t)0x5B9D, (q15_t)0xA653, (q15_t)0x5B56, - (q15_t)0xA60C, (q15_t)0x5B10, (q15_t)0xA5C4, (q15_t)0x5AC9, - (q15_t)0xA57D, (q15_t)0x5A82, (q15_t)0xA536, (q15_t)0x5A3B, - (q15_t)0xA4EF, (q15_t)0x59F3, (q15_t)0xA4A9, (q15_t)0x59AC, - (q15_t)0xA462, (q15_t)0x5964, (q15_t)0xA41C, (q15_t)0x591C, - (q15_t)0xA3D6, (q15_t)0x58D4, (q15_t)0xA391, (q15_t)0x588B, - (q15_t)0xA34B, (q15_t)0x5842, (q15_t)0xA306, (q15_t)0x57F9, - (q15_t)0xA2C1, (q15_t)0x57B0, (q15_t)0xA27C, (q15_t)0x5767, - (q15_t)0xA238, (q15_t)0x571D, (q15_t)0xA1F4, (q15_t)0x56D4, - (q15_t)0xA1AF, (q15_t)0x568A, (q15_t)0xA16C, (q15_t)0x5640, - (q15_t)0xA128, (q15_t)0x55F5, (q15_t)0xA0E5, (q15_t)0x55AB, - (q15_t)0xA0A1, (q15_t)0x5560, (q15_t)0xA05F, (q15_t)0x5515, - (q15_t)0xA01C, (q15_t)0x54CA, (q15_t)0x9FD9, (q15_t)0x547E, - (q15_t)0x9F97, (q15_t)0x5433, (q15_t)0x9F55, (q15_t)0x53E7, - (q15_t)0x9F13, (q15_t)0x539B, (q15_t)0x9ED2, (q15_t)0x534E, - (q15_t)0x9E90, (q15_t)0x5302, (q15_t)0x9E4F, (q15_t)0x52B5, - (q15_t)0x9E0E, (q15_t)0x5269, (q15_t)0x9DCE, (q15_t)0x521C, - (q15_t)0x9D8E, (q15_t)0x51CE, (q15_t)0x9D4D, (q15_t)0x5181, - (q15_t)0x9D0D, (q15_t)0x5133, (q15_t)0x9CCE, (q15_t)0x50E5, - (q15_t)0x9C8E, (q15_t)0x5097, (q15_t)0x9C4F, (q15_t)0x5049, - (q15_t)0x9C10, (q15_t)0x4FFB, (q15_t)0x9BD2, (q15_t)0x4FAC, - (q15_t)0x9B93, (q15_t)0x4F5E, (q15_t)0x9B55, (q15_t)0x4F0F, - (q15_t)0x9B17, (q15_t)0x4EBF, (q15_t)0x9AD9, (q15_t)0x4E70, - (q15_t)0x9A9C, (q15_t)0x4E21, (q15_t)0x9A5F, (q15_t)0x4DD1, - (q15_t)0x9A22, (q15_t)0x4D81, (q15_t)0x99E5, (q15_t)0x4D31, - (q15_t)0x99A8, (q15_t)0x4CE1, (q15_t)0x996C, (q15_t)0x4C90, - (q15_t)0x9930, (q15_t)0x4C3F, (q15_t)0x98F4, (q15_t)0x4BEF, - (q15_t)0x98B9, (q15_t)0x4B9E, (q15_t)0x987D, (q15_t)0x4B4C, - (q15_t)0x9842, (q15_t)0x4AFB, (q15_t)0x9808, (q15_t)0x4AA9, - (q15_t)0x97CD, (q15_t)0x4A58, (q15_t)0x9793, (q15_t)0x4A06, - (q15_t)0x9759, (q15_t)0x49B4, (q15_t)0x971F, (q15_t)0x4961, - (q15_t)0x96E6, (q15_t)0x490F, (q15_t)0x96AC, (q15_t)0x48BC, - (q15_t)0x9673, (q15_t)0x4869, (q15_t)0x963B, (q15_t)0x4816, - (q15_t)0x9602, (q15_t)0x47C3, (q15_t)0x95CA, (q15_t)0x4770, - (q15_t)0x9592, (q15_t)0x471C, (q15_t)0x955A, (q15_t)0x46C9, - (q15_t)0x9523, (q15_t)0x4675, (q15_t)0x94EC, (q15_t)0x4621, - (q15_t)0x94B5, (q15_t)0x45CD, (q15_t)0x947E, (q15_t)0x4578, - (q15_t)0x9447, (q15_t)0x4524, (q15_t)0x9411, (q15_t)0x44CF, - (q15_t)0x93DB, (q15_t)0x447A, (q15_t)0x93A6, (q15_t)0x4425, - (q15_t)0x9370, (q15_t)0x43D0, (q15_t)0x933B, (q15_t)0x437B, - (q15_t)0x9306, (q15_t)0x4325, (q15_t)0x92D2, (q15_t)0x42D0, - (q15_t)0x929D, (q15_t)0x427A, (q15_t)0x9269, (q15_t)0x4224, - (q15_t)0x9235, (q15_t)0x41CE, (q15_t)0x9202, (q15_t)0x4177, - (q15_t)0x91CF, (q15_t)0x4121, (q15_t)0x919C, (q15_t)0x40CA, - (q15_t)0x9169, (q15_t)0x4073, (q15_t)0x9136, (q15_t)0x401D, - (q15_t)0x9104, (q15_t)0x3FC5, (q15_t)0x90D2, (q15_t)0x3F6E, - (q15_t)0x90A0, (q15_t)0x3F17, (q15_t)0x906F, (q15_t)0x3EBF, - (q15_t)0x903E, (q15_t)0x3E68, (q15_t)0x900D, (q15_t)0x3E10, - (q15_t)0x8FDC, (q15_t)0x3DB8, (q15_t)0x8FAC, (q15_t)0x3D60, - (q15_t)0x8F7C, (q15_t)0x3D07, (q15_t)0x8F4C, (q15_t)0x3CAF, - (q15_t)0x8F1D, (q15_t)0x3C56, (q15_t)0x8EED, (q15_t)0x3BFD, - (q15_t)0x8EBE, (q15_t)0x3BA5, (q15_t)0x8E90, (q15_t)0x3B4C, - (q15_t)0x8E61, (q15_t)0x3AF2, (q15_t)0x8E33, (q15_t)0x3A99, - (q15_t)0x8E05, (q15_t)0x3A40, (q15_t)0x8DD8, (q15_t)0x39E6, - (q15_t)0x8DAA, (q15_t)0x398C, (q15_t)0x8D7D, (q15_t)0x3932, - (q15_t)0x8D50, (q15_t)0x38D8, (q15_t)0x8D24, (q15_t)0x387E, - (q15_t)0x8CF8, (q15_t)0x3824, (q15_t)0x8CCC, (q15_t)0x37CA, - (q15_t)0x8CA0, (q15_t)0x376F, (q15_t)0x8C75, (q15_t)0x3714, - (q15_t)0x8C4A, (q15_t)0x36BA, (q15_t)0x8C1F, (q15_t)0x365F, - (q15_t)0x8BF4, (q15_t)0x3604, (q15_t)0x8BCA, (q15_t)0x35A8, - (q15_t)0x8BA0, (q15_t)0x354D, (q15_t)0x8B76, (q15_t)0x34F2, - (q15_t)0x8B4D, (q15_t)0x3496, (q15_t)0x8B24, (q15_t)0x343A, - (q15_t)0x8AFB, (q15_t)0x33DE, (q15_t)0x8AD2, (q15_t)0x3382, - (q15_t)0x8AAA, (q15_t)0x3326, (q15_t)0x8A82, (q15_t)0x32CA, - (q15_t)0x8A5A, (q15_t)0x326E, (q15_t)0x8A33, (q15_t)0x3211, - (q15_t)0x8A0B, (q15_t)0x31B5, (q15_t)0x89E4, (q15_t)0x3158, - (q15_t)0x89BE, (q15_t)0x30FB, (q15_t)0x8997, (q15_t)0x309E, - (q15_t)0x8971, (q15_t)0x3041, (q15_t)0x894C, (q15_t)0x2FE4, - (q15_t)0x8926, (q15_t)0x2F87, (q15_t)0x8901, (q15_t)0x2F29, - (q15_t)0x88DC, (q15_t)0x2ECC, (q15_t)0x88B8, (q15_t)0x2E6E, - (q15_t)0x8893, (q15_t)0x2E11, (q15_t)0x886F, (q15_t)0x2DB3, - (q15_t)0x884B, (q15_t)0x2D55, (q15_t)0x8828, (q15_t)0x2CF7, - (q15_t)0x8805, (q15_t)0x2C98, (q15_t)0x87E2, (q15_t)0x2C3A, - (q15_t)0x87BF, (q15_t)0x2BDC, (q15_t)0x879D, (q15_t)0x2B7D, - (q15_t)0x877B, (q15_t)0x2B1F, (q15_t)0x8759, (q15_t)0x2AC0, - (q15_t)0x8738, (q15_t)0x2A61, (q15_t)0x8717, (q15_t)0x2A02, - (q15_t)0x86F6, (q15_t)0x29A3, (q15_t)0x86D5, (q15_t)0x2944, - (q15_t)0x86B5, (q15_t)0x28E5, (q15_t)0x8695, (q15_t)0x2886, - (q15_t)0x8675, (q15_t)0x2826, (q15_t)0x8656, (q15_t)0x27C7, - (q15_t)0x8637, (q15_t)0x2767, (q15_t)0x8618, (q15_t)0x2707, - (q15_t)0x85FA, (q15_t)0x26A8, (q15_t)0x85DB, (q15_t)0x2648, - (q15_t)0x85BD, (q15_t)0x25E8, (q15_t)0x85A0, (q15_t)0x2588, - (q15_t)0x8582, (q15_t)0x2528, (q15_t)0x8565, (q15_t)0x24C7, - (q15_t)0x8549, (q15_t)0x2467, (q15_t)0x852C, (q15_t)0x2407, - (q15_t)0x8510, (q15_t)0x23A6, (q15_t)0x84F4, (q15_t)0x2345, - (q15_t)0x84D9, (q15_t)0x22E5, (q15_t)0x84BD, (q15_t)0x2284, - (q15_t)0x84A2, (q15_t)0x2223, (q15_t)0x8488, (q15_t)0x21C2, - (q15_t)0x846D, (q15_t)0x2161, (q15_t)0x8453, (q15_t)0x2100, - (q15_t)0x843A, (q15_t)0x209F, (q15_t)0x8420, (q15_t)0x203E, - (q15_t)0x8407, (q15_t)0x1FDC, (q15_t)0x83EE, (q15_t)0x1F7B, - (q15_t)0x83D6, (q15_t)0x1F19, (q15_t)0x83BD, (q15_t)0x1EB8, - (q15_t)0x83A5, (q15_t)0x1E56, (q15_t)0x838E, (q15_t)0x1DF5, - (q15_t)0x8376, (q15_t)0x1D93, (q15_t)0x835F, (q15_t)0x1D31, - (q15_t)0x8348, (q15_t)0x1CCF, (q15_t)0x8332, (q15_t)0x1C6D, - (q15_t)0x831C, (q15_t)0x1C0B, (q15_t)0x8306, (q15_t)0x1BA9, - (q15_t)0x82F0, (q15_t)0x1B47, (q15_t)0x82DB, (q15_t)0x1AE4, - (q15_t)0x82C6, (q15_t)0x1A82, (q15_t)0x82B1, (q15_t)0x1A20, - (q15_t)0x829D, (q15_t)0x19BD, (q15_t)0x8289, (q15_t)0x195B, - (q15_t)0x8275, (q15_t)0x18F8, (q15_t)0x8262, (q15_t)0x1896, - (q15_t)0x824F, (q15_t)0x1833, (q15_t)0x823C, (q15_t)0x17D0, - (q15_t)0x8229, (q15_t)0x176D, (q15_t)0x8217, (q15_t)0x170A, - (q15_t)0x8205, (q15_t)0x16A8, (q15_t)0x81F3, (q15_t)0x1645, - (q15_t)0x81E2, (q15_t)0x15E2, (q15_t)0x81D1, (q15_t)0x157F, - (q15_t)0x81C0, (q15_t)0x151B, (q15_t)0x81B0, (q15_t)0x14B8, - (q15_t)0x81A0, (q15_t)0x1455, (q15_t)0x8190, (q15_t)0x13F2, - (q15_t)0x8180, (q15_t)0x138E, (q15_t)0x8171, (q15_t)0x132B, - (q15_t)0x8162, (q15_t)0x12C8, (q15_t)0x8154, (q15_t)0x1264, - (q15_t)0x8145, (q15_t)0x1201, (q15_t)0x8137, (q15_t)0x119D, - (q15_t)0x812A, (q15_t)0x1139, (q15_t)0x811C, (q15_t)0x10D6, - (q15_t)0x810F, (q15_t)0x1072, (q15_t)0x8102, (q15_t)0x100E, - (q15_t)0x80F6, (q15_t)0x0FAB, (q15_t)0x80EA, (q15_t)0x0F47, - (q15_t)0x80DE, (q15_t)0x0EE3, (q15_t)0x80D2, (q15_t)0x0E7F, - (q15_t)0x80C7, (q15_t)0x0E1B, (q15_t)0x80BC, (q15_t)0x0DB7, - (q15_t)0x80B2, (q15_t)0x0D53, (q15_t)0x80A7, (q15_t)0x0CEF, - (q15_t)0x809D, (q15_t)0x0C8B, (q15_t)0x8094, (q15_t)0x0C27, - (q15_t)0x808A, (q15_t)0x0BC3, (q15_t)0x8081, (q15_t)0x0B5F, - (q15_t)0x8078, (q15_t)0x0AFB, (q15_t)0x8070, (q15_t)0x0A97, - (q15_t)0x8068, (q15_t)0x0A33, (q15_t)0x8060, (q15_t)0x09CE, - (q15_t)0x8058, (q15_t)0x096A, (q15_t)0x8051, (q15_t)0x0906, - (q15_t)0x804A, (q15_t)0x08A2, (q15_t)0x8043, (q15_t)0x083D, - (q15_t)0x803D, (q15_t)0x07D9, (q15_t)0x8037, (q15_t)0x0775, - (q15_t)0x8031, (q15_t)0x0710, (q15_t)0x802C, (q15_t)0x06AC, - (q15_t)0x8027, (q15_t)0x0647, (q15_t)0x8022, (q15_t)0x05E3, - (q15_t)0x801E, (q15_t)0x057F, (q15_t)0x801A, (q15_t)0x051A, - (q15_t)0x8016, (q15_t)0x04B6, (q15_t)0x8012, (q15_t)0x0451, - (q15_t)0x800F, (q15_t)0x03ED, (q15_t)0x800C, (q15_t)0x0388, - (q15_t)0x8009, (q15_t)0x0324, (q15_t)0x8007, (q15_t)0x02BF, - (q15_t)0x8005, (q15_t)0x025B, (q15_t)0x8003, (q15_t)0x01F6, - (q15_t)0x8002, (q15_t)0x0192, (q15_t)0x8001, (q15_t)0x012D, - (q15_t)0x8000, (q15_t)0x00C9, (q15_t)0x8000, (q15_t)0x0064, - (q15_t)0x8000, (q15_t)0x0000, (q15_t)0x8000, (q15_t)0xFF9B, - (q15_t)0x8000, (q15_t)0xFF36, (q15_t)0x8001, (q15_t)0xFED2, - (q15_t)0x8002, (q15_t)0xFE6D, (q15_t)0x8003, (q15_t)0xFE09, - (q15_t)0x8005, (q15_t)0xFDA4, (q15_t)0x8007, (q15_t)0xFD40, - (q15_t)0x8009, (q15_t)0xFCDB, (q15_t)0x800C, (q15_t)0xFC77, - (q15_t)0x800F, (q15_t)0xFC12, (q15_t)0x8012, (q15_t)0xFBAE, - (q15_t)0x8016, (q15_t)0xFB49, (q15_t)0x801A, (q15_t)0xFAE5, - (q15_t)0x801E, (q15_t)0xFA80, (q15_t)0x8022, (q15_t)0xFA1C, - (q15_t)0x8027, (q15_t)0xF9B8, (q15_t)0x802C, (q15_t)0xF953, - (q15_t)0x8031, (q15_t)0xF8EF, (q15_t)0x8037, (q15_t)0xF88A, - (q15_t)0x803D, (q15_t)0xF826, (q15_t)0x8043, (q15_t)0xF7C2, - (q15_t)0x804A, (q15_t)0xF75D, (q15_t)0x8051, (q15_t)0xF6F9, - (q15_t)0x8058, (q15_t)0xF695, (q15_t)0x8060, (q15_t)0xF631, - (q15_t)0x8068, (q15_t)0xF5CC, (q15_t)0x8070, (q15_t)0xF568, - (q15_t)0x8078, (q15_t)0xF504, (q15_t)0x8081, (q15_t)0xF4A0, - (q15_t)0x808A, (q15_t)0xF43C, (q15_t)0x8094, (q15_t)0xF3D8, - (q15_t)0x809D, (q15_t)0xF374, (q15_t)0x80A7, (q15_t)0xF310, - (q15_t)0x80B2, (q15_t)0xF2AC, (q15_t)0x80BC, (q15_t)0xF248, - (q15_t)0x80C7, (q15_t)0xF1E4, (q15_t)0x80D2, (q15_t)0xF180, - (q15_t)0x80DE, (q15_t)0xF11C, (q15_t)0x80EA, (q15_t)0xF0B8, - (q15_t)0x80F6, (q15_t)0xF054, (q15_t)0x8102, (q15_t)0xEFF1, - (q15_t)0x810F, (q15_t)0xEF8D, (q15_t)0x811C, (q15_t)0xEF29, - (q15_t)0x812A, (q15_t)0xEEC6, (q15_t)0x8137, (q15_t)0xEE62, - (q15_t)0x8145, (q15_t)0xEDFE, (q15_t)0x8154, (q15_t)0xED9B, - (q15_t)0x8162, (q15_t)0xED37, (q15_t)0x8171, (q15_t)0xECD4, - (q15_t)0x8180, (q15_t)0xEC71, (q15_t)0x8190, (q15_t)0xEC0D, - (q15_t)0x81A0, (q15_t)0xEBAA, (q15_t)0x81B0, (q15_t)0xEB47, - (q15_t)0x81C0, (q15_t)0xEAE4, (q15_t)0x81D1, (q15_t)0xEA80, - (q15_t)0x81E2, (q15_t)0xEA1D, (q15_t)0x81F3, (q15_t)0xE9BA, - (q15_t)0x8205, (q15_t)0xE957, (q15_t)0x8217, (q15_t)0xE8F5, - (q15_t)0x8229, (q15_t)0xE892, (q15_t)0x823C, (q15_t)0xE82F, - (q15_t)0x824F, (q15_t)0xE7CC, (q15_t)0x8262, (q15_t)0xE769, - (q15_t)0x8275, (q15_t)0xE707, (q15_t)0x8289, (q15_t)0xE6A4, - (q15_t)0x829D, (q15_t)0xE642, (q15_t)0x82B1, (q15_t)0xE5DF, - (q15_t)0x82C6, (q15_t)0xE57D, (q15_t)0x82DB, (q15_t)0xE51B, - (q15_t)0x82F0, (q15_t)0xE4B8, (q15_t)0x8306, (q15_t)0xE456, - (q15_t)0x831C, (q15_t)0xE3F4, (q15_t)0x8332, (q15_t)0xE392, - (q15_t)0x8348, (q15_t)0xE330, (q15_t)0x835F, (q15_t)0xE2CE, - (q15_t)0x8376, (q15_t)0xE26C, (q15_t)0x838E, (q15_t)0xE20A, - (q15_t)0x83A5, (q15_t)0xE1A9, (q15_t)0x83BD, (q15_t)0xE147, - (q15_t)0x83D6, (q15_t)0xE0E6, (q15_t)0x83EE, (q15_t)0xE084, - (q15_t)0x8407, (q15_t)0xE023, (q15_t)0x8420, (q15_t)0xDFC1, - (q15_t)0x843A, (q15_t)0xDF60, (q15_t)0x8453, (q15_t)0xDEFF, - (q15_t)0x846D, (q15_t)0xDE9E, (q15_t)0x8488, (q15_t)0xDE3D, - (q15_t)0x84A2, (q15_t)0xDDDC, (q15_t)0x84BD, (q15_t)0xDD7B, - (q15_t)0x84D9, (q15_t)0xDD1A, (q15_t)0x84F4, (q15_t)0xDCBA, - (q15_t)0x8510, (q15_t)0xDC59, (q15_t)0x852C, (q15_t)0xDBF8, - (q15_t)0x8549, (q15_t)0xDB98, (q15_t)0x8565, (q15_t)0xDB38, - (q15_t)0x8582, (q15_t)0xDAD7, (q15_t)0x85A0, (q15_t)0xDA77, - (q15_t)0x85BD, (q15_t)0xDA17, (q15_t)0x85DB, (q15_t)0xD9B7, - (q15_t)0x85FA, (q15_t)0xD957, (q15_t)0x8618, (q15_t)0xD8F8, - (q15_t)0x8637, (q15_t)0xD898, (q15_t)0x8656, (q15_t)0xD838, - (q15_t)0x8675, (q15_t)0xD7D9, (q15_t)0x8695, (q15_t)0xD779, - (q15_t)0x86B5, (q15_t)0xD71A, (q15_t)0x86D5, (q15_t)0xD6BB, - (q15_t)0x86F6, (q15_t)0xD65C, (q15_t)0x8717, (q15_t)0xD5FD, - (q15_t)0x8738, (q15_t)0xD59E, (q15_t)0x8759, (q15_t)0xD53F, - (q15_t)0x877B, (q15_t)0xD4E0, (q15_t)0x879D, (q15_t)0xD482, - (q15_t)0x87BF, (q15_t)0xD423, (q15_t)0x87E2, (q15_t)0xD3C5, - (q15_t)0x8805, (q15_t)0xD367, (q15_t)0x8828, (q15_t)0xD308, - (q15_t)0x884B, (q15_t)0xD2AA, (q15_t)0x886F, (q15_t)0xD24C, - (q15_t)0x8893, (q15_t)0xD1EE, (q15_t)0x88B8, (q15_t)0xD191, - (q15_t)0x88DC, (q15_t)0xD133, (q15_t)0x8901, (q15_t)0xD0D6, - (q15_t)0x8926, (q15_t)0xD078, (q15_t)0x894C, (q15_t)0xD01B, - (q15_t)0x8971, (q15_t)0xCFBE, (q15_t)0x8997, (q15_t)0xCF61, - (q15_t)0x89BE, (q15_t)0xCF04, (q15_t)0x89E4, (q15_t)0xCEA7, - (q15_t)0x8A0B, (q15_t)0xCE4A, (q15_t)0x8A33, (q15_t)0xCDEE, - (q15_t)0x8A5A, (q15_t)0xCD91, (q15_t)0x8A82, (q15_t)0xCD35, - (q15_t)0x8AAA, (q15_t)0xCCD9, (q15_t)0x8AD2, (q15_t)0xCC7D, - (q15_t)0x8AFB, (q15_t)0xCC21, (q15_t)0x8B24, (q15_t)0xCBC5, - (q15_t)0x8B4D, (q15_t)0xCB69, (q15_t)0x8B76, (q15_t)0xCB0D, - (q15_t)0x8BA0, (q15_t)0xCAB2, (q15_t)0x8BCA, (q15_t)0xCA57, - (q15_t)0x8BF4, (q15_t)0xC9FB, (q15_t)0x8C1F, (q15_t)0xC9A0, - (q15_t)0x8C4A, (q15_t)0xC945, (q15_t)0x8C75, (q15_t)0xC8EB, - (q15_t)0x8CA0, (q15_t)0xC890, (q15_t)0x8CCC, (q15_t)0xC835, - (q15_t)0x8CF8, (q15_t)0xC7DB, (q15_t)0x8D24, (q15_t)0xC781, - (q15_t)0x8D50, (q15_t)0xC727, (q15_t)0x8D7D, (q15_t)0xC6CD, - (q15_t)0x8DAA, (q15_t)0xC673, (q15_t)0x8DD8, (q15_t)0xC619, - (q15_t)0x8E05, (q15_t)0xC5BF, (q15_t)0x8E33, (q15_t)0xC566, - (q15_t)0x8E61, (q15_t)0xC50D, (q15_t)0x8E90, (q15_t)0xC4B3, - (q15_t)0x8EBE, (q15_t)0xC45A, (q15_t)0x8EED, (q15_t)0xC402, - (q15_t)0x8F1D, (q15_t)0xC3A9, (q15_t)0x8F4C, (q15_t)0xC350, - (q15_t)0x8F7C, (q15_t)0xC2F8, (q15_t)0x8FAC, (q15_t)0xC29F, - (q15_t)0x8FDC, (q15_t)0xC247, (q15_t)0x900D, (q15_t)0xC1EF, - (q15_t)0x903E, (q15_t)0xC197, (q15_t)0x906F, (q15_t)0xC140, - (q15_t)0x90A0, (q15_t)0xC0E8, (q15_t)0x90D2, (q15_t)0xC091, - (q15_t)0x9104, (q15_t)0xC03A, (q15_t)0x9136, (q15_t)0xBFE2, - (q15_t)0x9169, (q15_t)0xBF8C, (q15_t)0x919C, (q15_t)0xBF35, - (q15_t)0x91CF, (q15_t)0xBEDE, (q15_t)0x9202, (q15_t)0xBE88, - (q15_t)0x9235, (q15_t)0xBE31, (q15_t)0x9269, (q15_t)0xBDDB, - (q15_t)0x929D, (q15_t)0xBD85, (q15_t)0x92D2, (q15_t)0xBD2F, - (q15_t)0x9306, (q15_t)0xBCDA, (q15_t)0x933B, (q15_t)0xBC84, - (q15_t)0x9370, (q15_t)0xBC2F, (q15_t)0x93A6, (q15_t)0xBBDA, - (q15_t)0x93DB, (q15_t)0xBB85, (q15_t)0x9411, (q15_t)0xBB30, - (q15_t)0x9447, (q15_t)0xBADB, (q15_t)0x947E, (q15_t)0xBA87, - (q15_t)0x94B5, (q15_t)0xBA32, (q15_t)0x94EC, (q15_t)0xB9DE, - (q15_t)0x9523, (q15_t)0xB98A, (q15_t)0x955A, (q15_t)0xB936, - (q15_t)0x9592, (q15_t)0xB8E3, (q15_t)0x95CA, (q15_t)0xB88F, - (q15_t)0x9602, (q15_t)0xB83C, (q15_t)0x963B, (q15_t)0xB7E9, - (q15_t)0x9673, (q15_t)0xB796, (q15_t)0x96AC, (q15_t)0xB743, - (q15_t)0x96E6, (q15_t)0xB6F0, (q15_t)0x971F, (q15_t)0xB69E, - (q15_t)0x9759, (q15_t)0xB64B, (q15_t)0x9793, (q15_t)0xB5F9, - (q15_t)0x97CD, (q15_t)0xB5A7, (q15_t)0x9808, (q15_t)0xB556, - (q15_t)0x9842, (q15_t)0xB504, (q15_t)0x987D, (q15_t)0xB4B3, - (q15_t)0x98B9, (q15_t)0xB461, (q15_t)0x98F4, (q15_t)0xB410, - (q15_t)0x9930, (q15_t)0xB3C0, (q15_t)0x996C, (q15_t)0xB36F, - (q15_t)0x99A8, (q15_t)0xB31E, (q15_t)0x99E5, (q15_t)0xB2CE, - (q15_t)0x9A22, (q15_t)0xB27E, (q15_t)0x9A5F, (q15_t)0xB22E, - (q15_t)0x9A9C, (q15_t)0xB1DE, (q15_t)0x9AD9, (q15_t)0xB18F, - (q15_t)0x9B17, (q15_t)0xB140, (q15_t)0x9B55, (q15_t)0xB0F0, - (q15_t)0x9B93, (q15_t)0xB0A1, (q15_t)0x9BD2, (q15_t)0xB053, - (q15_t)0x9C10, (q15_t)0xB004, (q15_t)0x9C4F, (q15_t)0xAFB6, - (q15_t)0x9C8E, (q15_t)0xAF68, (q15_t)0x9CCE, (q15_t)0xAF1A, - (q15_t)0x9D0D, (q15_t)0xAECC, (q15_t)0x9D4D, (q15_t)0xAE7E, - (q15_t)0x9D8E, (q15_t)0xAE31, (q15_t)0x9DCE, (q15_t)0xADE3, - (q15_t)0x9E0E, (q15_t)0xAD96, (q15_t)0x9E4F, (q15_t)0xAD4A, - (q15_t)0x9E90, (q15_t)0xACFD, (q15_t)0x9ED2, (q15_t)0xACB1, - (q15_t)0x9F13, (q15_t)0xAC64, (q15_t)0x9F55, (q15_t)0xAC18, - (q15_t)0x9F97, (q15_t)0xABCC, (q15_t)0x9FD9, (q15_t)0xAB81, - (q15_t)0xA01C, (q15_t)0xAB35, (q15_t)0xA05F, (q15_t)0xAAEA, - (q15_t)0xA0A1, (q15_t)0xAA9F, (q15_t)0xA0E5, (q15_t)0xAA54, - (q15_t)0xA128, (q15_t)0xAA0A, (q15_t)0xA16C, (q15_t)0xA9BF, - (q15_t)0xA1AF, (q15_t)0xA975, (q15_t)0xA1F4, (q15_t)0xA92B, - (q15_t)0xA238, (q15_t)0xA8E2, (q15_t)0xA27C, (q15_t)0xA898, - (q15_t)0xA2C1, (q15_t)0xA84F, (q15_t)0xA306, (q15_t)0xA806, - (q15_t)0xA34B, (q15_t)0xA7BD, (q15_t)0xA391, (q15_t)0xA774, - (q15_t)0xA3D6, (q15_t)0xA72B, (q15_t)0xA41C, (q15_t)0xA6E3, - (q15_t)0xA462, (q15_t)0xA69B, (q15_t)0xA4A9, (q15_t)0xA653, - (q15_t)0xA4EF, (q15_t)0xA60C, (q15_t)0xA536, (q15_t)0xA5C4, - (q15_t)0xA57D, (q15_t)0xA57D, (q15_t)0xA5C4, (q15_t)0xA536, - (q15_t)0xA60C, (q15_t)0xA4EF, (q15_t)0xA653, (q15_t)0xA4A9, - (q15_t)0xA69B, (q15_t)0xA462, (q15_t)0xA6E3, (q15_t)0xA41C, - (q15_t)0xA72B, (q15_t)0xA3D6, (q15_t)0xA774, (q15_t)0xA391, - (q15_t)0xA7BD, (q15_t)0xA34B, (q15_t)0xA806, (q15_t)0xA306, - (q15_t)0xA84F, (q15_t)0xA2C1, (q15_t)0xA898, (q15_t)0xA27C, - (q15_t)0xA8E2, (q15_t)0xA238, (q15_t)0xA92B, (q15_t)0xA1F4, - (q15_t)0xA975, (q15_t)0xA1AF, (q15_t)0xA9BF, (q15_t)0xA16C, - (q15_t)0xAA0A, (q15_t)0xA128, (q15_t)0xAA54, (q15_t)0xA0E5, - (q15_t)0xAA9F, (q15_t)0xA0A1, (q15_t)0xAAEA, (q15_t)0xA05F, - (q15_t)0xAB35, (q15_t)0xA01C, (q15_t)0xAB81, (q15_t)0x9FD9, - (q15_t)0xABCC, (q15_t)0x9F97, (q15_t)0xAC18, (q15_t)0x9F55, - (q15_t)0xAC64, (q15_t)0x9F13, (q15_t)0xACB1, (q15_t)0x9ED2, - (q15_t)0xACFD, (q15_t)0x9E90, (q15_t)0xAD4A, (q15_t)0x9E4F, - (q15_t)0xAD96, (q15_t)0x9E0E, (q15_t)0xADE3, (q15_t)0x9DCE, - (q15_t)0xAE31, (q15_t)0x9D8E, (q15_t)0xAE7E, (q15_t)0x9D4D, - (q15_t)0xAECC, (q15_t)0x9D0D, (q15_t)0xAF1A, (q15_t)0x9CCE, - (q15_t)0xAF68, (q15_t)0x9C8E, (q15_t)0xAFB6, (q15_t)0x9C4F, - (q15_t)0xB004, (q15_t)0x9C10, (q15_t)0xB053, (q15_t)0x9BD2, - (q15_t)0xB0A1, (q15_t)0x9B93, (q15_t)0xB0F0, (q15_t)0x9B55, - (q15_t)0xB140, (q15_t)0x9B17, (q15_t)0xB18F, (q15_t)0x9AD9, - (q15_t)0xB1DE, (q15_t)0x9A9C, (q15_t)0xB22E, (q15_t)0x9A5F, - (q15_t)0xB27E, (q15_t)0x9A22, (q15_t)0xB2CE, (q15_t)0x99E5, - (q15_t)0xB31E, (q15_t)0x99A8, (q15_t)0xB36F, (q15_t)0x996C, - (q15_t)0xB3C0, (q15_t)0x9930, (q15_t)0xB410, (q15_t)0x98F4, - (q15_t)0xB461, (q15_t)0x98B9, (q15_t)0xB4B3, (q15_t)0x987D, - (q15_t)0xB504, (q15_t)0x9842, (q15_t)0xB556, (q15_t)0x9808, - (q15_t)0xB5A7, (q15_t)0x97CD, (q15_t)0xB5F9, (q15_t)0x9793, - (q15_t)0xB64B, (q15_t)0x9759, (q15_t)0xB69E, (q15_t)0x971F, - (q15_t)0xB6F0, (q15_t)0x96E6, (q15_t)0xB743, (q15_t)0x96AC, - (q15_t)0xB796, (q15_t)0x9673, (q15_t)0xB7E9, (q15_t)0x963B, - (q15_t)0xB83C, (q15_t)0x9602, (q15_t)0xB88F, (q15_t)0x95CA, - (q15_t)0xB8E3, (q15_t)0x9592, (q15_t)0xB936, (q15_t)0x955A, - (q15_t)0xB98A, (q15_t)0x9523, (q15_t)0xB9DE, (q15_t)0x94EC, - (q15_t)0xBA32, (q15_t)0x94B5, (q15_t)0xBA87, (q15_t)0x947E, - (q15_t)0xBADB, (q15_t)0x9447, (q15_t)0xBB30, (q15_t)0x9411, - (q15_t)0xBB85, (q15_t)0x93DB, (q15_t)0xBBDA, (q15_t)0x93A6, - (q15_t)0xBC2F, (q15_t)0x9370, (q15_t)0xBC84, (q15_t)0x933B, - (q15_t)0xBCDA, (q15_t)0x9306, (q15_t)0xBD2F, (q15_t)0x92D2, - (q15_t)0xBD85, (q15_t)0x929D, (q15_t)0xBDDB, (q15_t)0x9269, - (q15_t)0xBE31, (q15_t)0x9235, (q15_t)0xBE88, (q15_t)0x9202, - (q15_t)0xBEDE, (q15_t)0x91CF, (q15_t)0xBF35, (q15_t)0x919C, - (q15_t)0xBF8C, (q15_t)0x9169, (q15_t)0xBFE2, (q15_t)0x9136, - (q15_t)0xC03A, (q15_t)0x9104, (q15_t)0xC091, (q15_t)0x90D2, - (q15_t)0xC0E8, (q15_t)0x90A0, (q15_t)0xC140, (q15_t)0x906F, - (q15_t)0xC197, (q15_t)0x903E, (q15_t)0xC1EF, (q15_t)0x900D, - (q15_t)0xC247, (q15_t)0x8FDC, (q15_t)0xC29F, (q15_t)0x8FAC, - (q15_t)0xC2F8, (q15_t)0x8F7C, (q15_t)0xC350, (q15_t)0x8F4C, - (q15_t)0xC3A9, (q15_t)0x8F1D, (q15_t)0xC402, (q15_t)0x8EED, - (q15_t)0xC45A, (q15_t)0x8EBE, (q15_t)0xC4B3, (q15_t)0x8E90, - (q15_t)0xC50D, (q15_t)0x8E61, (q15_t)0xC566, (q15_t)0x8E33, - (q15_t)0xC5BF, (q15_t)0x8E05, (q15_t)0xC619, (q15_t)0x8DD8, - (q15_t)0xC673, (q15_t)0x8DAA, (q15_t)0xC6CD, (q15_t)0x8D7D, - (q15_t)0xC727, (q15_t)0x8D50, (q15_t)0xC781, (q15_t)0x8D24, - (q15_t)0xC7DB, (q15_t)0x8CF8, (q15_t)0xC835, (q15_t)0x8CCC, - (q15_t)0xC890, (q15_t)0x8CA0, (q15_t)0xC8EB, (q15_t)0x8C75, - (q15_t)0xC945, (q15_t)0x8C4A, (q15_t)0xC9A0, (q15_t)0x8C1F, - (q15_t)0xC9FB, (q15_t)0x8BF4, (q15_t)0xCA57, (q15_t)0x8BCA, - (q15_t)0xCAB2, (q15_t)0x8BA0, (q15_t)0xCB0D, (q15_t)0x8B76, - (q15_t)0xCB69, (q15_t)0x8B4D, (q15_t)0xCBC5, (q15_t)0x8B24, - (q15_t)0xCC21, (q15_t)0x8AFB, (q15_t)0xCC7D, (q15_t)0x8AD2, - (q15_t)0xCCD9, (q15_t)0x8AAA, (q15_t)0xCD35, (q15_t)0x8A82, - (q15_t)0xCD91, (q15_t)0x8A5A, (q15_t)0xCDEE, (q15_t)0x8A33, - (q15_t)0xCE4A, (q15_t)0x8A0B, (q15_t)0xCEA7, (q15_t)0x89E4, - (q15_t)0xCF04, (q15_t)0x89BE, (q15_t)0xCF61, (q15_t)0x8997, - (q15_t)0xCFBE, (q15_t)0x8971, (q15_t)0xD01B, (q15_t)0x894C, - (q15_t)0xD078, (q15_t)0x8926, (q15_t)0xD0D6, (q15_t)0x8901, - (q15_t)0xD133, (q15_t)0x88DC, (q15_t)0xD191, (q15_t)0x88B8, - (q15_t)0xD1EE, (q15_t)0x8893, (q15_t)0xD24C, (q15_t)0x886F, - (q15_t)0xD2AA, (q15_t)0x884B, (q15_t)0xD308, (q15_t)0x8828, - (q15_t)0xD367, (q15_t)0x8805, (q15_t)0xD3C5, (q15_t)0x87E2, - (q15_t)0xD423, (q15_t)0x87BF, (q15_t)0xD482, (q15_t)0x879D, - (q15_t)0xD4E0, (q15_t)0x877B, (q15_t)0xD53F, (q15_t)0x8759, - (q15_t)0xD59E, (q15_t)0x8738, (q15_t)0xD5FD, (q15_t)0x8717, - (q15_t)0xD65C, (q15_t)0x86F6, (q15_t)0xD6BB, (q15_t)0x86D5, - (q15_t)0xD71A, (q15_t)0x86B5, (q15_t)0xD779, (q15_t)0x8695, - (q15_t)0xD7D9, (q15_t)0x8675, (q15_t)0xD838, (q15_t)0x8656, - (q15_t)0xD898, (q15_t)0x8637, (q15_t)0xD8F8, (q15_t)0x8618, - (q15_t)0xD957, (q15_t)0x85FA, (q15_t)0xD9B7, (q15_t)0x85DB, - (q15_t)0xDA17, (q15_t)0x85BD, (q15_t)0xDA77, (q15_t)0x85A0, - (q15_t)0xDAD7, (q15_t)0x8582, (q15_t)0xDB38, (q15_t)0x8565, - (q15_t)0xDB98, (q15_t)0x8549, (q15_t)0xDBF8, (q15_t)0x852C, - (q15_t)0xDC59, (q15_t)0x8510, (q15_t)0xDCBA, (q15_t)0x84F4, - (q15_t)0xDD1A, (q15_t)0x84D9, (q15_t)0xDD7B, (q15_t)0x84BD, - (q15_t)0xDDDC, (q15_t)0x84A2, (q15_t)0xDE3D, (q15_t)0x8488, - (q15_t)0xDE9E, (q15_t)0x846D, (q15_t)0xDEFF, (q15_t)0x8453, - (q15_t)0xDF60, (q15_t)0x843A, (q15_t)0xDFC1, (q15_t)0x8420, - (q15_t)0xE023, (q15_t)0x8407, (q15_t)0xE084, (q15_t)0x83EE, - (q15_t)0xE0E6, (q15_t)0x83D6, (q15_t)0xE147, (q15_t)0x83BD, - (q15_t)0xE1A9, (q15_t)0x83A5, (q15_t)0xE20A, (q15_t)0x838E, - (q15_t)0xE26C, (q15_t)0x8376, (q15_t)0xE2CE, (q15_t)0x835F, - (q15_t)0xE330, (q15_t)0x8348, (q15_t)0xE392, (q15_t)0x8332, - (q15_t)0xE3F4, (q15_t)0x831C, (q15_t)0xE456, (q15_t)0x8306, - (q15_t)0xE4B8, (q15_t)0x82F0, (q15_t)0xE51B, (q15_t)0x82DB, - (q15_t)0xE57D, (q15_t)0x82C6, (q15_t)0xE5DF, (q15_t)0x82B1, - (q15_t)0xE642, (q15_t)0x829D, (q15_t)0xE6A4, (q15_t)0x8289, - (q15_t)0xE707, (q15_t)0x8275, (q15_t)0xE769, (q15_t)0x8262, - (q15_t)0xE7CC, (q15_t)0x824F, (q15_t)0xE82F, (q15_t)0x823C, - (q15_t)0xE892, (q15_t)0x8229, (q15_t)0xE8F5, (q15_t)0x8217, - (q15_t)0xE957, (q15_t)0x8205, (q15_t)0xE9BA, (q15_t)0x81F3, - (q15_t)0xEA1D, (q15_t)0x81E2, (q15_t)0xEA80, (q15_t)0x81D1, - (q15_t)0xEAE4, (q15_t)0x81C0, (q15_t)0xEB47, (q15_t)0x81B0, - (q15_t)0xEBAA, (q15_t)0x81A0, (q15_t)0xEC0D, (q15_t)0x8190, - (q15_t)0xEC71, (q15_t)0x8180, (q15_t)0xECD4, (q15_t)0x8171, - (q15_t)0xED37, (q15_t)0x8162, (q15_t)0xED9B, (q15_t)0x8154, - (q15_t)0xEDFE, (q15_t)0x8145, (q15_t)0xEE62, (q15_t)0x8137, - (q15_t)0xEEC6, (q15_t)0x812A, (q15_t)0xEF29, (q15_t)0x811C, - (q15_t)0xEF8D, (q15_t)0x810F, (q15_t)0xEFF1, (q15_t)0x8102, - (q15_t)0xF054, (q15_t)0x80F6, (q15_t)0xF0B8, (q15_t)0x80EA, - (q15_t)0xF11C, (q15_t)0x80DE, (q15_t)0xF180, (q15_t)0x80D2, - (q15_t)0xF1E4, (q15_t)0x80C7, (q15_t)0xF248, (q15_t)0x80BC, - (q15_t)0xF2AC, (q15_t)0x80B2, (q15_t)0xF310, (q15_t)0x80A7, - (q15_t)0xF374, (q15_t)0x809D, (q15_t)0xF3D8, (q15_t)0x8094, - (q15_t)0xF43C, (q15_t)0x808A, (q15_t)0xF4A0, (q15_t)0x8081, - (q15_t)0xF504, (q15_t)0x8078, (q15_t)0xF568, (q15_t)0x8070, - (q15_t)0xF5CC, (q15_t)0x8068, (q15_t)0xF631, (q15_t)0x8060, - (q15_t)0xF695, (q15_t)0x8058, (q15_t)0xF6F9, (q15_t)0x8051, - (q15_t)0xF75D, (q15_t)0x804A, (q15_t)0xF7C2, (q15_t)0x8043, - (q15_t)0xF826, (q15_t)0x803D, (q15_t)0xF88A, (q15_t)0x8037, - (q15_t)0xF8EF, (q15_t)0x8031, (q15_t)0xF953, (q15_t)0x802C, - (q15_t)0xF9B8, (q15_t)0x8027, (q15_t)0xFA1C, (q15_t)0x8022, - (q15_t)0xFA80, (q15_t)0x801E, (q15_t)0xFAE5, (q15_t)0x801A, - (q15_t)0xFB49, (q15_t)0x8016, (q15_t)0xFBAE, (q15_t)0x8012, - (q15_t)0xFC12, (q15_t)0x800F, (q15_t)0xFC77, (q15_t)0x800C, - (q15_t)0xFCDB, (q15_t)0x8009, (q15_t)0xFD40, (q15_t)0x8007, - (q15_t)0xFDA4, (q15_t)0x8005, (q15_t)0xFE09, (q15_t)0x8003, - (q15_t)0xFE6D, (q15_t)0x8002, (q15_t)0xFED2, (q15_t)0x8001, - (q15_t)0xFF36, (q15_t)0x8000, (q15_t)0xFF9B, (q15_t)0x8000 -}; - -/** -* \par -* Example code for q15 Twiddle factors Generation:: -* \par -*
for(i = 0; i< 3N/4; i++)
-* {
-*    twiddleCoefq15[2*i]= cos(i * 2*PI/(float)N);
-*    twiddleCoefq15[2*i+1]= sin(i * 2*PI/(float)N);
-* } 
-* \par -* where N = 4096 and PI = 3.14159265358979 -* \par -* Cos and Sin values are interleaved fashion -* \par -* Convert Floating point to q15(Fixed point 1.15): -* round(twiddleCoefq15(i) * pow(2, 15)) -* -*/ -const q15_t twiddleCoef_4096_q15[6144] = -{ - (q15_t)0x7FFF, (q15_t)0x0000, (q15_t)0x7FFF, (q15_t)0x0032, - (q15_t)0x7FFF, (q15_t)0x0064, (q15_t)0x7FFF, (q15_t)0x0096, - (q15_t)0x7FFF, (q15_t)0x00C9, (q15_t)0x7FFF, (q15_t)0x00FB, - (q15_t)0x7FFE, (q15_t)0x012D, (q15_t)0x7FFE, (q15_t)0x015F, - (q15_t)0x7FFD, (q15_t)0x0192, (q15_t)0x7FFC, (q15_t)0x01C4, - (q15_t)0x7FFC, (q15_t)0x01F6, (q15_t)0x7FFB, (q15_t)0x0228, - (q15_t)0x7FFA, (q15_t)0x025B, (q15_t)0x7FF9, (q15_t)0x028D, - (q15_t)0x7FF8, (q15_t)0x02BF, (q15_t)0x7FF7, (q15_t)0x02F1, - (q15_t)0x7FF6, (q15_t)0x0324, (q15_t)0x7FF4, (q15_t)0x0356, - (q15_t)0x7FF3, (q15_t)0x0388, (q15_t)0x7FF2, (q15_t)0x03BA, - (q15_t)0x7FF0, (q15_t)0x03ED, (q15_t)0x7FEE, (q15_t)0x041F, - (q15_t)0x7FED, (q15_t)0x0451, (q15_t)0x7FEB, (q15_t)0x0483, - (q15_t)0x7FE9, (q15_t)0x04B6, (q15_t)0x7FE7, (q15_t)0x04E8, - (q15_t)0x7FE5, (q15_t)0x051A, (q15_t)0x7FE3, (q15_t)0x054C, - (q15_t)0x7FE1, (q15_t)0x057F, (q15_t)0x7FDF, (q15_t)0x05B1, - (q15_t)0x7FDD, (q15_t)0x05E3, (q15_t)0x7FDA, (q15_t)0x0615, - (q15_t)0x7FD8, (q15_t)0x0647, (q15_t)0x7FD6, (q15_t)0x067A, - (q15_t)0x7FD3, (q15_t)0x06AC, (q15_t)0x7FD0, (q15_t)0x06DE, - (q15_t)0x7FCE, (q15_t)0x0710, (q15_t)0x7FCB, (q15_t)0x0742, - (q15_t)0x7FC8, (q15_t)0x0775, (q15_t)0x7FC5, (q15_t)0x07A7, - (q15_t)0x7FC2, (q15_t)0x07D9, (q15_t)0x7FBF, (q15_t)0x080B, - (q15_t)0x7FBC, (q15_t)0x083D, (q15_t)0x7FB8, (q15_t)0x086F, - (q15_t)0x7FB5, (q15_t)0x08A2, (q15_t)0x7FB1, (q15_t)0x08D4, - (q15_t)0x7FAE, (q15_t)0x0906, (q15_t)0x7FAA, (q15_t)0x0938, - (q15_t)0x7FA7, (q15_t)0x096A, (q15_t)0x7FA3, (q15_t)0x099C, - (q15_t)0x7F9F, (q15_t)0x09CE, (q15_t)0x7F9B, (q15_t)0x0A00, - (q15_t)0x7F97, (q15_t)0x0A33, (q15_t)0x7F93, (q15_t)0x0A65, - (q15_t)0x7F8F, (q15_t)0x0A97, (q15_t)0x7F8B, (q15_t)0x0AC9, - (q15_t)0x7F87, (q15_t)0x0AFB, (q15_t)0x7F82, (q15_t)0x0B2D, - (q15_t)0x7F7E, (q15_t)0x0B5F, (q15_t)0x7F79, (q15_t)0x0B91, - (q15_t)0x7F75, (q15_t)0x0BC3, (q15_t)0x7F70, (q15_t)0x0BF5, - (q15_t)0x7F6B, (q15_t)0x0C27, (q15_t)0x7F67, (q15_t)0x0C59, - (q15_t)0x7F62, (q15_t)0x0C8B, (q15_t)0x7F5D, (q15_t)0x0CBD, - (q15_t)0x7F58, (q15_t)0x0CEF, (q15_t)0x7F53, (q15_t)0x0D21, - (q15_t)0x7F4D, (q15_t)0x0D53, (q15_t)0x7F48, (q15_t)0x0D85, - (q15_t)0x7F43, (q15_t)0x0DB7, (q15_t)0x7F3D, (q15_t)0x0DE9, - (q15_t)0x7F38, (q15_t)0x0E1B, (q15_t)0x7F32, (q15_t)0x0E4D, - (q15_t)0x7F2D, (q15_t)0x0E7F, (q15_t)0x7F27, (q15_t)0x0EB1, - (q15_t)0x7F21, (q15_t)0x0EE3, (q15_t)0x7F1B, (q15_t)0x0F15, - (q15_t)0x7F15, (q15_t)0x0F47, (q15_t)0x7F0F, (q15_t)0x0F79, - (q15_t)0x7F09, (q15_t)0x0FAB, (q15_t)0x7F03, (q15_t)0x0FDD, - (q15_t)0x7EFD, (q15_t)0x100E, (q15_t)0x7EF6, (q15_t)0x1040, - (q15_t)0x7EF0, (q15_t)0x1072, (q15_t)0x7EE9, (q15_t)0x10A4, - (q15_t)0x7EE3, (q15_t)0x10D6, (q15_t)0x7EDC, (q15_t)0x1108, - (q15_t)0x7ED5, (q15_t)0x1139, (q15_t)0x7ECF, (q15_t)0x116B, - (q15_t)0x7EC8, (q15_t)0x119D, (q15_t)0x7EC1, (q15_t)0x11CF, - (q15_t)0x7EBA, (q15_t)0x1201, (q15_t)0x7EB3, (q15_t)0x1232, - (q15_t)0x7EAB, (q15_t)0x1264, (q15_t)0x7EA4, (q15_t)0x1296, - (q15_t)0x7E9D, (q15_t)0x12C8, (q15_t)0x7E95, (q15_t)0x12F9, - (q15_t)0x7E8E, (q15_t)0x132B, (q15_t)0x7E86, (q15_t)0x135D, - (q15_t)0x7E7F, (q15_t)0x138E, (q15_t)0x7E77, (q15_t)0x13C0, - (q15_t)0x7E6F, (q15_t)0x13F2, (q15_t)0x7E67, (q15_t)0x1423, - (q15_t)0x7E5F, (q15_t)0x1455, (q15_t)0x7E57, (q15_t)0x1487, - (q15_t)0x7E4F, (q15_t)0x14B8, (q15_t)0x7E47, (q15_t)0x14EA, - (q15_t)0x7E3F, (q15_t)0x151B, (q15_t)0x7E37, (q15_t)0x154D, - (q15_t)0x7E2E, (q15_t)0x157F, (q15_t)0x7E26, (q15_t)0x15B0, - (q15_t)0x7E1D, (q15_t)0x15E2, (q15_t)0x7E14, (q15_t)0x1613, - (q15_t)0x7E0C, (q15_t)0x1645, (q15_t)0x7E03, (q15_t)0x1676, - (q15_t)0x7DFA, (q15_t)0x16A8, (q15_t)0x7DF1, (q15_t)0x16D9, - (q15_t)0x7DE8, (q15_t)0x170A, (q15_t)0x7DDF, (q15_t)0x173C, - (q15_t)0x7DD6, (q15_t)0x176D, (q15_t)0x7DCD, (q15_t)0x179F, - (q15_t)0x7DC3, (q15_t)0x17D0, (q15_t)0x7DBA, (q15_t)0x1802, - (q15_t)0x7DB0, (q15_t)0x1833, (q15_t)0x7DA7, (q15_t)0x1864, - (q15_t)0x7D9D, (q15_t)0x1896, (q15_t)0x7D94, (q15_t)0x18C7, - (q15_t)0x7D8A, (q15_t)0x18F8, (q15_t)0x7D80, (q15_t)0x192A, - (q15_t)0x7D76, (q15_t)0x195B, (q15_t)0x7D6C, (q15_t)0x198C, - (q15_t)0x7D62, (q15_t)0x19BD, (q15_t)0x7D58, (q15_t)0x19EF, - (q15_t)0x7D4E, (q15_t)0x1A20, (q15_t)0x7D43, (q15_t)0x1A51, - (q15_t)0x7D39, (q15_t)0x1A82, (q15_t)0x7D2F, (q15_t)0x1AB3, - (q15_t)0x7D24, (q15_t)0x1AE4, (q15_t)0x7D19, (q15_t)0x1B16, - (q15_t)0x7D0F, (q15_t)0x1B47, (q15_t)0x7D04, (q15_t)0x1B78, - (q15_t)0x7CF9, (q15_t)0x1BA9, (q15_t)0x7CEE, (q15_t)0x1BDA, - (q15_t)0x7CE3, (q15_t)0x1C0B, (q15_t)0x7CD8, (q15_t)0x1C3C, - (q15_t)0x7CCD, (q15_t)0x1C6D, (q15_t)0x7CC2, (q15_t)0x1C9E, - (q15_t)0x7CB7, (q15_t)0x1CCF, (q15_t)0x7CAB, (q15_t)0x1D00, - (q15_t)0x7CA0, (q15_t)0x1D31, (q15_t)0x7C94, (q15_t)0x1D62, - (q15_t)0x7C89, (q15_t)0x1D93, (q15_t)0x7C7D, (q15_t)0x1DC4, - (q15_t)0x7C71, (q15_t)0x1DF5, (q15_t)0x7C66, (q15_t)0x1E25, - (q15_t)0x7C5A, (q15_t)0x1E56, (q15_t)0x7C4E, (q15_t)0x1E87, - (q15_t)0x7C42, (q15_t)0x1EB8, (q15_t)0x7C36, (q15_t)0x1EE9, - (q15_t)0x7C29, (q15_t)0x1F19, (q15_t)0x7C1D, (q15_t)0x1F4A, - (q15_t)0x7C11, (q15_t)0x1F7B, (q15_t)0x7C05, (q15_t)0x1FAC, - (q15_t)0x7BF8, (q15_t)0x1FDC, (q15_t)0x7BEB, (q15_t)0x200D, - (q15_t)0x7BDF, (q15_t)0x203E, (q15_t)0x7BD2, (q15_t)0x206E, - (q15_t)0x7BC5, (q15_t)0x209F, (q15_t)0x7BB9, (q15_t)0x20D0, - (q15_t)0x7BAC, (q15_t)0x2100, (q15_t)0x7B9F, (q15_t)0x2131, - (q15_t)0x7B92, (q15_t)0x2161, (q15_t)0x7B84, (q15_t)0x2192, - (q15_t)0x7B77, (q15_t)0x21C2, (q15_t)0x7B6A, (q15_t)0x21F3, - (q15_t)0x7B5D, (q15_t)0x2223, (q15_t)0x7B4F, (q15_t)0x2254, - (q15_t)0x7B42, (q15_t)0x2284, (q15_t)0x7B34, (q15_t)0x22B4, - (q15_t)0x7B26, (q15_t)0x22E5, (q15_t)0x7B19, (q15_t)0x2315, - (q15_t)0x7B0B, (q15_t)0x2345, (q15_t)0x7AFD, (q15_t)0x2376, - (q15_t)0x7AEF, (q15_t)0x23A6, (q15_t)0x7AE1, (q15_t)0x23D6, - (q15_t)0x7AD3, (q15_t)0x2407, (q15_t)0x7AC5, (q15_t)0x2437, - (q15_t)0x7AB6, (q15_t)0x2467, (q15_t)0x7AA8, (q15_t)0x2497, - (q15_t)0x7A9A, (q15_t)0x24C7, (q15_t)0x7A8B, (q15_t)0x24F7, - (q15_t)0x7A7D, (q15_t)0x2528, (q15_t)0x7A6E, (q15_t)0x2558, - (q15_t)0x7A5F, (q15_t)0x2588, (q15_t)0x7A50, (q15_t)0x25B8, - (q15_t)0x7A42, (q15_t)0x25E8, (q15_t)0x7A33, (q15_t)0x2618, - (q15_t)0x7A24, (q15_t)0x2648, (q15_t)0x7A15, (q15_t)0x2678, - (q15_t)0x7A05, (q15_t)0x26A8, (q15_t)0x79F6, (q15_t)0x26D8, - (q15_t)0x79E7, (q15_t)0x2707, (q15_t)0x79D8, (q15_t)0x2737, - (q15_t)0x79C8, (q15_t)0x2767, (q15_t)0x79B9, (q15_t)0x2797, - (q15_t)0x79A9, (q15_t)0x27C7, (q15_t)0x7999, (q15_t)0x27F6, - (q15_t)0x798A, (q15_t)0x2826, (q15_t)0x797A, (q15_t)0x2856, - (q15_t)0x796A, (q15_t)0x2886, (q15_t)0x795A, (q15_t)0x28B5, - (q15_t)0x794A, (q15_t)0x28E5, (q15_t)0x793A, (q15_t)0x2915, - (q15_t)0x792A, (q15_t)0x2944, (q15_t)0x7919, (q15_t)0x2974, - (q15_t)0x7909, (q15_t)0x29A3, (q15_t)0x78F9, (q15_t)0x29D3, - (q15_t)0x78E8, (q15_t)0x2A02, (q15_t)0x78D8, (q15_t)0x2A32, - (q15_t)0x78C7, (q15_t)0x2A61, (q15_t)0x78B6, (q15_t)0x2A91, - (q15_t)0x78A6, (q15_t)0x2AC0, (q15_t)0x7895, (q15_t)0x2AEF, - (q15_t)0x7884, (q15_t)0x2B1F, (q15_t)0x7873, (q15_t)0x2B4E, - (q15_t)0x7862, (q15_t)0x2B7D, (q15_t)0x7851, (q15_t)0x2BAD, - (q15_t)0x7840, (q15_t)0x2BDC, (q15_t)0x782E, (q15_t)0x2C0B, - (q15_t)0x781D, (q15_t)0x2C3A, (q15_t)0x780C, (q15_t)0x2C69, - (q15_t)0x77FA, (q15_t)0x2C98, (q15_t)0x77E9, (q15_t)0x2CC8, - (q15_t)0x77D7, (q15_t)0x2CF7, (q15_t)0x77C5, (q15_t)0x2D26, - (q15_t)0x77B4, (q15_t)0x2D55, (q15_t)0x77A2, (q15_t)0x2D84, - (q15_t)0x7790, (q15_t)0x2DB3, (q15_t)0x777E, (q15_t)0x2DE2, - (q15_t)0x776C, (q15_t)0x2E11, (q15_t)0x775A, (q15_t)0x2E3F, - (q15_t)0x7747, (q15_t)0x2E6E, (q15_t)0x7735, (q15_t)0x2E9D, - (q15_t)0x7723, (q15_t)0x2ECC, (q15_t)0x7710, (q15_t)0x2EFB, - (q15_t)0x76FE, (q15_t)0x2F29, (q15_t)0x76EB, (q15_t)0x2F58, - (q15_t)0x76D9, (q15_t)0x2F87, (q15_t)0x76C6, (q15_t)0x2FB5, - (q15_t)0x76B3, (q15_t)0x2FE4, (q15_t)0x76A0, (q15_t)0x3013, - (q15_t)0x768E, (q15_t)0x3041, (q15_t)0x767B, (q15_t)0x3070, - (q15_t)0x7668, (q15_t)0x309E, (q15_t)0x7654, (q15_t)0x30CD, - (q15_t)0x7641, (q15_t)0x30FB, (q15_t)0x762E, (q15_t)0x312A, - (q15_t)0x761B, (q15_t)0x3158, (q15_t)0x7607, (q15_t)0x3186, - (q15_t)0x75F4, (q15_t)0x31B5, (q15_t)0x75E0, (q15_t)0x31E3, - (q15_t)0x75CC, (q15_t)0x3211, (q15_t)0x75B9, (q15_t)0x3240, - (q15_t)0x75A5, (q15_t)0x326E, (q15_t)0x7591, (q15_t)0x329C, - (q15_t)0x757D, (q15_t)0x32CA, (q15_t)0x7569, (q15_t)0x32F8, - (q15_t)0x7555, (q15_t)0x3326, (q15_t)0x7541, (q15_t)0x3354, - (q15_t)0x752D, (q15_t)0x3382, (q15_t)0x7519, (q15_t)0x33B0, - (q15_t)0x7504, (q15_t)0x33DE, (q15_t)0x74F0, (q15_t)0x340C, - (q15_t)0x74DB, (q15_t)0x343A, (q15_t)0x74C7, (q15_t)0x3468, - (q15_t)0x74B2, (q15_t)0x3496, (q15_t)0x749E, (q15_t)0x34C4, - (q15_t)0x7489, (q15_t)0x34F2, (q15_t)0x7474, (q15_t)0x351F, - (q15_t)0x745F, (q15_t)0x354D, (q15_t)0x744A, (q15_t)0x357B, - (q15_t)0x7435, (q15_t)0x35A8, (q15_t)0x7420, (q15_t)0x35D6, - (q15_t)0x740B, (q15_t)0x3604, (q15_t)0x73F6, (q15_t)0x3631, - (q15_t)0x73E0, (q15_t)0x365F, (q15_t)0x73CB, (q15_t)0x368C, - (q15_t)0x73B5, (q15_t)0x36BA, (q15_t)0x73A0, (q15_t)0x36E7, - (q15_t)0x738A, (q15_t)0x3714, (q15_t)0x7375, (q15_t)0x3742, - (q15_t)0x735F, (q15_t)0x376F, (q15_t)0x7349, (q15_t)0x379C, - (q15_t)0x7333, (q15_t)0x37CA, (q15_t)0x731D, (q15_t)0x37F7, - (q15_t)0x7307, (q15_t)0x3824, (q15_t)0x72F1, (q15_t)0x3851, - (q15_t)0x72DB, (q15_t)0x387E, (q15_t)0x72C5, (q15_t)0x38AB, - (q15_t)0x72AF, (q15_t)0x38D8, (q15_t)0x7298, (q15_t)0x3906, - (q15_t)0x7282, (q15_t)0x3932, (q15_t)0x726B, (q15_t)0x395F, - (q15_t)0x7255, (q15_t)0x398C, (q15_t)0x723E, (q15_t)0x39B9, - (q15_t)0x7227, (q15_t)0x39E6, (q15_t)0x7211, (q15_t)0x3A13, - (q15_t)0x71FA, (q15_t)0x3A40, (q15_t)0x71E3, (q15_t)0x3A6C, - (q15_t)0x71CC, (q15_t)0x3A99, (q15_t)0x71B5, (q15_t)0x3AC6, - (q15_t)0x719E, (q15_t)0x3AF2, (q15_t)0x7186, (q15_t)0x3B1F, - (q15_t)0x716F, (q15_t)0x3B4C, (q15_t)0x7158, (q15_t)0x3B78, - (q15_t)0x7141, (q15_t)0x3BA5, (q15_t)0x7129, (q15_t)0x3BD1, - (q15_t)0x7112, (q15_t)0x3BFD, (q15_t)0x70FA, (q15_t)0x3C2A, - (q15_t)0x70E2, (q15_t)0x3C56, (q15_t)0x70CB, (q15_t)0x3C83, - (q15_t)0x70B3, (q15_t)0x3CAF, (q15_t)0x709B, (q15_t)0x3CDB, - (q15_t)0x7083, (q15_t)0x3D07, (q15_t)0x706B, (q15_t)0x3D33, - (q15_t)0x7053, (q15_t)0x3D60, (q15_t)0x703B, (q15_t)0x3D8C, - (q15_t)0x7023, (q15_t)0x3DB8, (q15_t)0x700A, (q15_t)0x3DE4, - (q15_t)0x6FF2, (q15_t)0x3E10, (q15_t)0x6FDA, (q15_t)0x3E3C, - (q15_t)0x6FC1, (q15_t)0x3E68, (q15_t)0x6FA9, (q15_t)0x3E93, - (q15_t)0x6F90, (q15_t)0x3EBF, (q15_t)0x6F77, (q15_t)0x3EEB, - (q15_t)0x6F5F, (q15_t)0x3F17, (q15_t)0x6F46, (q15_t)0x3F43, - (q15_t)0x6F2D, (q15_t)0x3F6E, (q15_t)0x6F14, (q15_t)0x3F9A, - (q15_t)0x6EFB, (q15_t)0x3FC5, (q15_t)0x6EE2, (q15_t)0x3FF1, - (q15_t)0x6EC9, (q15_t)0x401D, (q15_t)0x6EAF, (q15_t)0x4048, - (q15_t)0x6E96, (q15_t)0x4073, (q15_t)0x6E7D, (q15_t)0x409F, - (q15_t)0x6E63, (q15_t)0x40CA, (q15_t)0x6E4A, (q15_t)0x40F6, - (q15_t)0x6E30, (q15_t)0x4121, (q15_t)0x6E17, (q15_t)0x414C, - (q15_t)0x6DFD, (q15_t)0x4177, (q15_t)0x6DE3, (q15_t)0x41A2, - (q15_t)0x6DCA, (q15_t)0x41CE, (q15_t)0x6DB0, (q15_t)0x41F9, - (q15_t)0x6D96, (q15_t)0x4224, (q15_t)0x6D7C, (q15_t)0x424F, - (q15_t)0x6D62, (q15_t)0x427A, (q15_t)0x6D48, (q15_t)0x42A5, - (q15_t)0x6D2D, (q15_t)0x42D0, (q15_t)0x6D13, (q15_t)0x42FA, - (q15_t)0x6CF9, (q15_t)0x4325, (q15_t)0x6CDE, (q15_t)0x4350, - (q15_t)0x6CC4, (q15_t)0x437B, (q15_t)0x6CA9, (q15_t)0x43A5, - (q15_t)0x6C8F, (q15_t)0x43D0, (q15_t)0x6C74, (q15_t)0x43FB, - (q15_t)0x6C59, (q15_t)0x4425, (q15_t)0x6C3F, (q15_t)0x4450, - (q15_t)0x6C24, (q15_t)0x447A, (q15_t)0x6C09, (q15_t)0x44A5, - (q15_t)0x6BEE, (q15_t)0x44CF, (q15_t)0x6BD3, (q15_t)0x44FA, - (q15_t)0x6BB8, (q15_t)0x4524, (q15_t)0x6B9C, (q15_t)0x454E, - (q15_t)0x6B81, (q15_t)0x4578, (q15_t)0x6B66, (q15_t)0x45A3, - (q15_t)0x6B4A, (q15_t)0x45CD, (q15_t)0x6B2F, (q15_t)0x45F7, - (q15_t)0x6B13, (q15_t)0x4621, (q15_t)0x6AF8, (q15_t)0x464B, - (q15_t)0x6ADC, (q15_t)0x4675, (q15_t)0x6AC1, (q15_t)0x469F, - (q15_t)0x6AA5, (q15_t)0x46C9, (q15_t)0x6A89, (q15_t)0x46F3, - (q15_t)0x6A6D, (q15_t)0x471C, (q15_t)0x6A51, (q15_t)0x4746, - (q15_t)0x6A35, (q15_t)0x4770, (q15_t)0x6A19, (q15_t)0x479A, - (q15_t)0x69FD, (q15_t)0x47C3, (q15_t)0x69E1, (q15_t)0x47ED, - (q15_t)0x69C4, (q15_t)0x4816, (q15_t)0x69A8, (q15_t)0x4840, - (q15_t)0x698C, (q15_t)0x4869, (q15_t)0x696F, (q15_t)0x4893, - (q15_t)0x6953, (q15_t)0x48BC, (q15_t)0x6936, (q15_t)0x48E6, - (q15_t)0x6919, (q15_t)0x490F, (q15_t)0x68FD, (q15_t)0x4938, - (q15_t)0x68E0, (q15_t)0x4961, (q15_t)0x68C3, (q15_t)0x498A, - (q15_t)0x68A6, (q15_t)0x49B4, (q15_t)0x6889, (q15_t)0x49DD, - (q15_t)0x686C, (q15_t)0x4A06, (q15_t)0x684F, (q15_t)0x4A2F, - (q15_t)0x6832, (q15_t)0x4A58, (q15_t)0x6815, (q15_t)0x4A81, - (q15_t)0x67F7, (q15_t)0x4AA9, (q15_t)0x67DA, (q15_t)0x4AD2, - (q15_t)0x67BD, (q15_t)0x4AFB, (q15_t)0x679F, (q15_t)0x4B24, - (q15_t)0x6782, (q15_t)0x4B4C, (q15_t)0x6764, (q15_t)0x4B75, - (q15_t)0x6746, (q15_t)0x4B9E, (q15_t)0x6729, (q15_t)0x4BC6, - (q15_t)0x670B, (q15_t)0x4BEF, (q15_t)0x66ED, (q15_t)0x4C17, - (q15_t)0x66CF, (q15_t)0x4C3F, (q15_t)0x66B1, (q15_t)0x4C68, - (q15_t)0x6693, (q15_t)0x4C90, (q15_t)0x6675, (q15_t)0x4CB8, - (q15_t)0x6657, (q15_t)0x4CE1, (q15_t)0x6639, (q15_t)0x4D09, - (q15_t)0x661A, (q15_t)0x4D31, (q15_t)0x65FC, (q15_t)0x4D59, - (q15_t)0x65DD, (q15_t)0x4D81, (q15_t)0x65BF, (q15_t)0x4DA9, - (q15_t)0x65A0, (q15_t)0x4DD1, (q15_t)0x6582, (q15_t)0x4DF9, - (q15_t)0x6563, (q15_t)0x4E21, (q15_t)0x6545, (q15_t)0x4E48, - (q15_t)0x6526, (q15_t)0x4E70, (q15_t)0x6507, (q15_t)0x4E98, - (q15_t)0x64E8, (q15_t)0x4EBF, (q15_t)0x64C9, (q15_t)0x4EE7, - (q15_t)0x64AA, (q15_t)0x4F0F, (q15_t)0x648B, (q15_t)0x4F36, - (q15_t)0x646C, (q15_t)0x4F5E, (q15_t)0x644D, (q15_t)0x4F85, - (q15_t)0x642D, (q15_t)0x4FAC, (q15_t)0x640E, (q15_t)0x4FD4, - (q15_t)0x63EF, (q15_t)0x4FFB, (q15_t)0x63CF, (q15_t)0x5022, - (q15_t)0x63B0, (q15_t)0x5049, (q15_t)0x6390, (q15_t)0x5070, - (q15_t)0x6371, (q15_t)0x5097, (q15_t)0x6351, (q15_t)0x50BF, - (q15_t)0x6331, (q15_t)0x50E5, (q15_t)0x6311, (q15_t)0x510C, - (q15_t)0x62F2, (q15_t)0x5133, (q15_t)0x62D2, (q15_t)0x515A, - (q15_t)0x62B2, (q15_t)0x5181, (q15_t)0x6292, (q15_t)0x51A8, - (q15_t)0x6271, (q15_t)0x51CE, (q15_t)0x6251, (q15_t)0x51F5, - (q15_t)0x6231, (q15_t)0x521C, (q15_t)0x6211, (q15_t)0x5242, - (q15_t)0x61F1, (q15_t)0x5269, (q15_t)0x61D0, (q15_t)0x528F, - (q15_t)0x61B0, (q15_t)0x52B5, (q15_t)0x618F, (q15_t)0x52DC, - (q15_t)0x616F, (q15_t)0x5302, (q15_t)0x614E, (q15_t)0x5328, - (q15_t)0x612D, (q15_t)0x534E, (q15_t)0x610D, (q15_t)0x5375, - (q15_t)0x60EC, (q15_t)0x539B, (q15_t)0x60CB, (q15_t)0x53C1, - (q15_t)0x60AA, (q15_t)0x53E7, (q15_t)0x6089, (q15_t)0x540D, - (q15_t)0x6068, (q15_t)0x5433, (q15_t)0x6047, (q15_t)0x5458, - (q15_t)0x6026, (q15_t)0x547E, (q15_t)0x6004, (q15_t)0x54A4, - (q15_t)0x5FE3, (q15_t)0x54CA, (q15_t)0x5FC2, (q15_t)0x54EF, - (q15_t)0x5FA0, (q15_t)0x5515, (q15_t)0x5F7F, (q15_t)0x553A, - (q15_t)0x5F5E, (q15_t)0x5560, (q15_t)0x5F3C, (q15_t)0x5585, - (q15_t)0x5F1A, (q15_t)0x55AB, (q15_t)0x5EF9, (q15_t)0x55D0, - (q15_t)0x5ED7, (q15_t)0x55F5, (q15_t)0x5EB5, (q15_t)0x561A, - (q15_t)0x5E93, (q15_t)0x5640, (q15_t)0x5E71, (q15_t)0x5665, - (q15_t)0x5E50, (q15_t)0x568A, (q15_t)0x5E2D, (q15_t)0x56AF, - (q15_t)0x5E0B, (q15_t)0x56D4, (q15_t)0x5DE9, (q15_t)0x56F9, - (q15_t)0x5DC7, (q15_t)0x571D, (q15_t)0x5DA5, (q15_t)0x5742, - (q15_t)0x5D83, (q15_t)0x5767, (q15_t)0x5D60, (q15_t)0x578C, - (q15_t)0x5D3E, (q15_t)0x57B0, (q15_t)0x5D1B, (q15_t)0x57D5, - (q15_t)0x5CF9, (q15_t)0x57F9, (q15_t)0x5CD6, (q15_t)0x581E, - (q15_t)0x5CB4, (q15_t)0x5842, (q15_t)0x5C91, (q15_t)0x5867, - (q15_t)0x5C6E, (q15_t)0x588B, (q15_t)0x5C4B, (q15_t)0x58AF, - (q15_t)0x5C29, (q15_t)0x58D4, (q15_t)0x5C06, (q15_t)0x58F8, - (q15_t)0x5BE3, (q15_t)0x591C, (q15_t)0x5BC0, (q15_t)0x5940, - (q15_t)0x5B9D, (q15_t)0x5964, (q15_t)0x5B79, (q15_t)0x5988, - (q15_t)0x5B56, (q15_t)0x59AC, (q15_t)0x5B33, (q15_t)0x59D0, - (q15_t)0x5B10, (q15_t)0x59F3, (q15_t)0x5AEC, (q15_t)0x5A17, - (q15_t)0x5AC9, (q15_t)0x5A3B, (q15_t)0x5AA5, (q15_t)0x5A5E, - (q15_t)0x5A82, (q15_t)0x5A82, (q15_t)0x5A5E, (q15_t)0x5AA5, - (q15_t)0x5A3B, (q15_t)0x5AC9, (q15_t)0x5A17, (q15_t)0x5AEC, - (q15_t)0x59F3, (q15_t)0x5B10, (q15_t)0x59D0, (q15_t)0x5B33, - (q15_t)0x59AC, (q15_t)0x5B56, (q15_t)0x5988, (q15_t)0x5B79, - (q15_t)0x5964, (q15_t)0x5B9D, (q15_t)0x5940, (q15_t)0x5BC0, - (q15_t)0x591C, (q15_t)0x5BE3, (q15_t)0x58F8, (q15_t)0x5C06, - (q15_t)0x58D4, (q15_t)0x5C29, (q15_t)0x58AF, (q15_t)0x5C4B, - (q15_t)0x588B, (q15_t)0x5C6E, (q15_t)0x5867, (q15_t)0x5C91, - (q15_t)0x5842, (q15_t)0x5CB4, (q15_t)0x581E, (q15_t)0x5CD6, - (q15_t)0x57F9, (q15_t)0x5CF9, (q15_t)0x57D5, (q15_t)0x5D1B, - (q15_t)0x57B0, (q15_t)0x5D3E, (q15_t)0x578C, (q15_t)0x5D60, - (q15_t)0x5767, (q15_t)0x5D83, (q15_t)0x5742, (q15_t)0x5DA5, - (q15_t)0x571D, (q15_t)0x5DC7, (q15_t)0x56F9, (q15_t)0x5DE9, - (q15_t)0x56D4, (q15_t)0x5E0B, (q15_t)0x56AF, (q15_t)0x5E2D, - (q15_t)0x568A, (q15_t)0x5E50, (q15_t)0x5665, (q15_t)0x5E71, - (q15_t)0x5640, (q15_t)0x5E93, (q15_t)0x561A, (q15_t)0x5EB5, - (q15_t)0x55F5, (q15_t)0x5ED7, (q15_t)0x55D0, (q15_t)0x5EF9, - (q15_t)0x55AB, (q15_t)0x5F1A, (q15_t)0x5585, (q15_t)0x5F3C, - (q15_t)0x5560, (q15_t)0x5F5E, (q15_t)0x553A, (q15_t)0x5F7F, - (q15_t)0x5515, (q15_t)0x5FA0, (q15_t)0x54EF, (q15_t)0x5FC2, - (q15_t)0x54CA, (q15_t)0x5FE3, (q15_t)0x54A4, (q15_t)0x6004, - (q15_t)0x547E, (q15_t)0x6026, (q15_t)0x5458, (q15_t)0x6047, - (q15_t)0x5433, (q15_t)0x6068, (q15_t)0x540D, (q15_t)0x6089, - (q15_t)0x53E7, (q15_t)0x60AA, (q15_t)0x53C1, (q15_t)0x60CB, - (q15_t)0x539B, (q15_t)0x60EC, (q15_t)0x5375, (q15_t)0x610D, - (q15_t)0x534E, (q15_t)0x612D, (q15_t)0x5328, (q15_t)0x614E, - (q15_t)0x5302, (q15_t)0x616F, (q15_t)0x52DC, (q15_t)0x618F, - (q15_t)0x52B5, (q15_t)0x61B0, (q15_t)0x528F, (q15_t)0x61D0, - (q15_t)0x5269, (q15_t)0x61F1, (q15_t)0x5242, (q15_t)0x6211, - (q15_t)0x521C, (q15_t)0x6231, (q15_t)0x51F5, (q15_t)0x6251, - (q15_t)0x51CE, (q15_t)0x6271, (q15_t)0x51A8, (q15_t)0x6292, - (q15_t)0x5181, (q15_t)0x62B2, (q15_t)0x515A, (q15_t)0x62D2, - (q15_t)0x5133, (q15_t)0x62F2, (q15_t)0x510C, (q15_t)0x6311, - (q15_t)0x50E5, (q15_t)0x6331, (q15_t)0x50BF, (q15_t)0x6351, - (q15_t)0x5097, (q15_t)0x6371, (q15_t)0x5070, (q15_t)0x6390, - (q15_t)0x5049, (q15_t)0x63B0, (q15_t)0x5022, (q15_t)0x63CF, - (q15_t)0x4FFB, (q15_t)0x63EF, (q15_t)0x4FD4, (q15_t)0x640E, - (q15_t)0x4FAC, (q15_t)0x642D, (q15_t)0x4F85, (q15_t)0x644D, - (q15_t)0x4F5E, (q15_t)0x646C, (q15_t)0x4F36, (q15_t)0x648B, - (q15_t)0x4F0F, (q15_t)0x64AA, (q15_t)0x4EE7, (q15_t)0x64C9, - (q15_t)0x4EBF, (q15_t)0x64E8, (q15_t)0x4E98, (q15_t)0x6507, - (q15_t)0x4E70, (q15_t)0x6526, (q15_t)0x4E48, (q15_t)0x6545, - (q15_t)0x4E21, (q15_t)0x6563, (q15_t)0x4DF9, (q15_t)0x6582, - (q15_t)0x4DD1, (q15_t)0x65A0, (q15_t)0x4DA9, (q15_t)0x65BF, - (q15_t)0x4D81, (q15_t)0x65DD, (q15_t)0x4D59, (q15_t)0x65FC, - (q15_t)0x4D31, (q15_t)0x661A, (q15_t)0x4D09, (q15_t)0x6639, - (q15_t)0x4CE1, (q15_t)0x6657, (q15_t)0x4CB8, (q15_t)0x6675, - (q15_t)0x4C90, (q15_t)0x6693, (q15_t)0x4C68, (q15_t)0x66B1, - (q15_t)0x4C3F, (q15_t)0x66CF, (q15_t)0x4C17, (q15_t)0x66ED, - (q15_t)0x4BEF, (q15_t)0x670B, (q15_t)0x4BC6, (q15_t)0x6729, - (q15_t)0x4B9E, (q15_t)0x6746, (q15_t)0x4B75, (q15_t)0x6764, - (q15_t)0x4B4C, (q15_t)0x6782, (q15_t)0x4B24, (q15_t)0x679F, - (q15_t)0x4AFB, (q15_t)0x67BD, (q15_t)0x4AD2, (q15_t)0x67DA, - (q15_t)0x4AA9, (q15_t)0x67F7, (q15_t)0x4A81, (q15_t)0x6815, - (q15_t)0x4A58, (q15_t)0x6832, (q15_t)0x4A2F, (q15_t)0x684F, - (q15_t)0x4A06, (q15_t)0x686C, (q15_t)0x49DD, (q15_t)0x6889, - (q15_t)0x49B4, (q15_t)0x68A6, (q15_t)0x498A, (q15_t)0x68C3, - (q15_t)0x4961, (q15_t)0x68E0, (q15_t)0x4938, (q15_t)0x68FD, - (q15_t)0x490F, (q15_t)0x6919, (q15_t)0x48E6, (q15_t)0x6936, - (q15_t)0x48BC, (q15_t)0x6953, (q15_t)0x4893, (q15_t)0x696F, - (q15_t)0x4869, (q15_t)0x698C, (q15_t)0x4840, (q15_t)0x69A8, - (q15_t)0x4816, (q15_t)0x69C4, (q15_t)0x47ED, (q15_t)0x69E1, - (q15_t)0x47C3, (q15_t)0x69FD, (q15_t)0x479A, (q15_t)0x6A19, - (q15_t)0x4770, (q15_t)0x6A35, (q15_t)0x4746, (q15_t)0x6A51, - (q15_t)0x471C, (q15_t)0x6A6D, (q15_t)0x46F3, (q15_t)0x6A89, - (q15_t)0x46C9, (q15_t)0x6AA5, (q15_t)0x469F, (q15_t)0x6AC1, - (q15_t)0x4675, (q15_t)0x6ADC, (q15_t)0x464B, (q15_t)0x6AF8, - (q15_t)0x4621, (q15_t)0x6B13, (q15_t)0x45F7, (q15_t)0x6B2F, - (q15_t)0x45CD, (q15_t)0x6B4A, (q15_t)0x45A3, (q15_t)0x6B66, - (q15_t)0x4578, (q15_t)0x6B81, (q15_t)0x454E, (q15_t)0x6B9C, - (q15_t)0x4524, (q15_t)0x6BB8, (q15_t)0x44FA, (q15_t)0x6BD3, - (q15_t)0x44CF, (q15_t)0x6BEE, (q15_t)0x44A5, (q15_t)0x6C09, - (q15_t)0x447A, (q15_t)0x6C24, (q15_t)0x4450, (q15_t)0x6C3F, - (q15_t)0x4425, (q15_t)0x6C59, (q15_t)0x43FB, (q15_t)0x6C74, - (q15_t)0x43D0, (q15_t)0x6C8F, (q15_t)0x43A5, (q15_t)0x6CA9, - (q15_t)0x437B, (q15_t)0x6CC4, (q15_t)0x4350, (q15_t)0x6CDE, - (q15_t)0x4325, (q15_t)0x6CF9, (q15_t)0x42FA, (q15_t)0x6D13, - (q15_t)0x42D0, (q15_t)0x6D2D, (q15_t)0x42A5, (q15_t)0x6D48, - (q15_t)0x427A, (q15_t)0x6D62, (q15_t)0x424F, (q15_t)0x6D7C, - (q15_t)0x4224, (q15_t)0x6D96, (q15_t)0x41F9, (q15_t)0x6DB0, - (q15_t)0x41CE, (q15_t)0x6DCA, (q15_t)0x41A2, (q15_t)0x6DE3, - (q15_t)0x4177, (q15_t)0x6DFD, (q15_t)0x414C, (q15_t)0x6E17, - (q15_t)0x4121, (q15_t)0x6E30, (q15_t)0x40F6, (q15_t)0x6E4A, - (q15_t)0x40CA, (q15_t)0x6E63, (q15_t)0x409F, (q15_t)0x6E7D, - (q15_t)0x4073, (q15_t)0x6E96, (q15_t)0x4048, (q15_t)0x6EAF, - (q15_t)0x401D, (q15_t)0x6EC9, (q15_t)0x3FF1, (q15_t)0x6EE2, - (q15_t)0x3FC5, (q15_t)0x6EFB, (q15_t)0x3F9A, (q15_t)0x6F14, - (q15_t)0x3F6E, (q15_t)0x6F2D, (q15_t)0x3F43, (q15_t)0x6F46, - (q15_t)0x3F17, (q15_t)0x6F5F, (q15_t)0x3EEB, (q15_t)0x6F77, - (q15_t)0x3EBF, (q15_t)0x6F90, (q15_t)0x3E93, (q15_t)0x6FA9, - (q15_t)0x3E68, (q15_t)0x6FC1, (q15_t)0x3E3C, (q15_t)0x6FDA, - (q15_t)0x3E10, (q15_t)0x6FF2, (q15_t)0x3DE4, (q15_t)0x700A, - (q15_t)0x3DB8, (q15_t)0x7023, (q15_t)0x3D8C, (q15_t)0x703B, - (q15_t)0x3D60, (q15_t)0x7053, (q15_t)0x3D33, (q15_t)0x706B, - (q15_t)0x3D07, (q15_t)0x7083, (q15_t)0x3CDB, (q15_t)0x709B, - (q15_t)0x3CAF, (q15_t)0x70B3, (q15_t)0x3C83, (q15_t)0x70CB, - (q15_t)0x3C56, (q15_t)0x70E2, (q15_t)0x3C2A, (q15_t)0x70FA, - (q15_t)0x3BFD, (q15_t)0x7112, (q15_t)0x3BD1, (q15_t)0x7129, - (q15_t)0x3BA5, (q15_t)0x7141, (q15_t)0x3B78, (q15_t)0x7158, - (q15_t)0x3B4C, (q15_t)0x716F, (q15_t)0x3B1F, (q15_t)0x7186, - (q15_t)0x3AF2, (q15_t)0x719E, (q15_t)0x3AC6, (q15_t)0x71B5, - (q15_t)0x3A99, (q15_t)0x71CC, (q15_t)0x3A6C, (q15_t)0x71E3, - (q15_t)0x3A40, (q15_t)0x71FA, (q15_t)0x3A13, (q15_t)0x7211, - (q15_t)0x39E6, (q15_t)0x7227, (q15_t)0x39B9, (q15_t)0x723E, - (q15_t)0x398C, (q15_t)0x7255, (q15_t)0x395F, (q15_t)0x726B, - (q15_t)0x3932, (q15_t)0x7282, (q15_t)0x3906, (q15_t)0x7298, - (q15_t)0x38D8, (q15_t)0x72AF, (q15_t)0x38AB, (q15_t)0x72C5, - (q15_t)0x387E, (q15_t)0x72DB, (q15_t)0x3851, (q15_t)0x72F1, - (q15_t)0x3824, (q15_t)0x7307, (q15_t)0x37F7, (q15_t)0x731D, - (q15_t)0x37CA, (q15_t)0x7333, (q15_t)0x379C, (q15_t)0x7349, - (q15_t)0x376F, (q15_t)0x735F, (q15_t)0x3742, (q15_t)0x7375, - (q15_t)0x3714, (q15_t)0x738A, (q15_t)0x36E7, (q15_t)0x73A0, - (q15_t)0x36BA, (q15_t)0x73B5, (q15_t)0x368C, (q15_t)0x73CB, - (q15_t)0x365F, (q15_t)0x73E0, (q15_t)0x3631, (q15_t)0x73F6, - (q15_t)0x3604, (q15_t)0x740B, (q15_t)0x35D6, (q15_t)0x7420, - (q15_t)0x35A8, (q15_t)0x7435, (q15_t)0x357B, (q15_t)0x744A, - (q15_t)0x354D, (q15_t)0x745F, (q15_t)0x351F, (q15_t)0x7474, - (q15_t)0x34F2, (q15_t)0x7489, (q15_t)0x34C4, (q15_t)0x749E, - (q15_t)0x3496, (q15_t)0x74B2, (q15_t)0x3468, (q15_t)0x74C7, - (q15_t)0x343A, (q15_t)0x74DB, (q15_t)0x340C, (q15_t)0x74F0, - (q15_t)0x33DE, (q15_t)0x7504, (q15_t)0x33B0, (q15_t)0x7519, - (q15_t)0x3382, (q15_t)0x752D, (q15_t)0x3354, (q15_t)0x7541, - (q15_t)0x3326, (q15_t)0x7555, (q15_t)0x32F8, (q15_t)0x7569, - (q15_t)0x32CA, (q15_t)0x757D, (q15_t)0x329C, (q15_t)0x7591, - (q15_t)0x326E, (q15_t)0x75A5, (q15_t)0x3240, (q15_t)0x75B9, - (q15_t)0x3211, (q15_t)0x75CC, (q15_t)0x31E3, (q15_t)0x75E0, - (q15_t)0x31B5, (q15_t)0x75F4, (q15_t)0x3186, (q15_t)0x7607, - (q15_t)0x3158, (q15_t)0x761B, (q15_t)0x312A, (q15_t)0x762E, - (q15_t)0x30FB, (q15_t)0x7641, (q15_t)0x30CD, (q15_t)0x7654, - (q15_t)0x309E, (q15_t)0x7668, (q15_t)0x3070, (q15_t)0x767B, - (q15_t)0x3041, (q15_t)0x768E, (q15_t)0x3013, (q15_t)0x76A0, - (q15_t)0x2FE4, (q15_t)0x76B3, (q15_t)0x2FB5, (q15_t)0x76C6, - (q15_t)0x2F87, (q15_t)0x76D9, (q15_t)0x2F58, (q15_t)0x76EB, - (q15_t)0x2F29, (q15_t)0x76FE, (q15_t)0x2EFB, (q15_t)0x7710, - (q15_t)0x2ECC, (q15_t)0x7723, (q15_t)0x2E9D, (q15_t)0x7735, - (q15_t)0x2E6E, (q15_t)0x7747, (q15_t)0x2E3F, (q15_t)0x775A, - (q15_t)0x2E11, (q15_t)0x776C, (q15_t)0x2DE2, (q15_t)0x777E, - (q15_t)0x2DB3, (q15_t)0x7790, (q15_t)0x2D84, (q15_t)0x77A2, - (q15_t)0x2D55, (q15_t)0x77B4, (q15_t)0x2D26, (q15_t)0x77C5, - (q15_t)0x2CF7, (q15_t)0x77D7, (q15_t)0x2CC8, (q15_t)0x77E9, - (q15_t)0x2C98, (q15_t)0x77FA, (q15_t)0x2C69, (q15_t)0x780C, - (q15_t)0x2C3A, (q15_t)0x781D, (q15_t)0x2C0B, (q15_t)0x782E, - (q15_t)0x2BDC, (q15_t)0x7840, (q15_t)0x2BAD, (q15_t)0x7851, - (q15_t)0x2B7D, (q15_t)0x7862, (q15_t)0x2B4E, (q15_t)0x7873, - (q15_t)0x2B1F, (q15_t)0x7884, (q15_t)0x2AEF, (q15_t)0x7895, - (q15_t)0x2AC0, (q15_t)0x78A6, (q15_t)0x2A91, (q15_t)0x78B6, - (q15_t)0x2A61, (q15_t)0x78C7, (q15_t)0x2A32, (q15_t)0x78D8, - (q15_t)0x2A02, (q15_t)0x78E8, (q15_t)0x29D3, (q15_t)0x78F9, - (q15_t)0x29A3, (q15_t)0x7909, (q15_t)0x2974, (q15_t)0x7919, - (q15_t)0x2944, (q15_t)0x792A, (q15_t)0x2915, (q15_t)0x793A, - (q15_t)0x28E5, (q15_t)0x794A, (q15_t)0x28B5, (q15_t)0x795A, - (q15_t)0x2886, (q15_t)0x796A, (q15_t)0x2856, (q15_t)0x797A, - (q15_t)0x2826, (q15_t)0x798A, (q15_t)0x27F6, (q15_t)0x7999, - (q15_t)0x27C7, (q15_t)0x79A9, (q15_t)0x2797, (q15_t)0x79B9, - (q15_t)0x2767, (q15_t)0x79C8, (q15_t)0x2737, (q15_t)0x79D8, - (q15_t)0x2707, (q15_t)0x79E7, (q15_t)0x26D8, (q15_t)0x79F6, - (q15_t)0x26A8, (q15_t)0x7A05, (q15_t)0x2678, (q15_t)0x7A15, - (q15_t)0x2648, (q15_t)0x7A24, (q15_t)0x2618, (q15_t)0x7A33, - (q15_t)0x25E8, (q15_t)0x7A42, (q15_t)0x25B8, (q15_t)0x7A50, - (q15_t)0x2588, (q15_t)0x7A5F, (q15_t)0x2558, (q15_t)0x7A6E, - (q15_t)0x2528, (q15_t)0x7A7D, (q15_t)0x24F7, (q15_t)0x7A8B, - (q15_t)0x24C7, (q15_t)0x7A9A, (q15_t)0x2497, (q15_t)0x7AA8, - (q15_t)0x2467, (q15_t)0x7AB6, (q15_t)0x2437, (q15_t)0x7AC5, - (q15_t)0x2407, (q15_t)0x7AD3, (q15_t)0x23D6, (q15_t)0x7AE1, - (q15_t)0x23A6, (q15_t)0x7AEF, (q15_t)0x2376, (q15_t)0x7AFD, - (q15_t)0x2345, (q15_t)0x7B0B, (q15_t)0x2315, (q15_t)0x7B19, - (q15_t)0x22E5, (q15_t)0x7B26, (q15_t)0x22B4, (q15_t)0x7B34, - (q15_t)0x2284, (q15_t)0x7B42, (q15_t)0x2254, (q15_t)0x7B4F, - (q15_t)0x2223, (q15_t)0x7B5D, (q15_t)0x21F3, (q15_t)0x7B6A, - (q15_t)0x21C2, (q15_t)0x7B77, (q15_t)0x2192, (q15_t)0x7B84, - (q15_t)0x2161, (q15_t)0x7B92, (q15_t)0x2131, (q15_t)0x7B9F, - (q15_t)0x2100, (q15_t)0x7BAC, (q15_t)0x20D0, (q15_t)0x7BB9, - (q15_t)0x209F, (q15_t)0x7BC5, (q15_t)0x206E, (q15_t)0x7BD2, - (q15_t)0x203E, (q15_t)0x7BDF, (q15_t)0x200D, (q15_t)0x7BEB, - (q15_t)0x1FDC, (q15_t)0x7BF8, (q15_t)0x1FAC, (q15_t)0x7C05, - (q15_t)0x1F7B, (q15_t)0x7C11, (q15_t)0x1F4A, (q15_t)0x7C1D, - (q15_t)0x1F19, (q15_t)0x7C29, (q15_t)0x1EE9, (q15_t)0x7C36, - (q15_t)0x1EB8, (q15_t)0x7C42, (q15_t)0x1E87, (q15_t)0x7C4E, - (q15_t)0x1E56, (q15_t)0x7C5A, (q15_t)0x1E25, (q15_t)0x7C66, - (q15_t)0x1DF5, (q15_t)0x7C71, (q15_t)0x1DC4, (q15_t)0x7C7D, - (q15_t)0x1D93, (q15_t)0x7C89, (q15_t)0x1D62, (q15_t)0x7C94, - (q15_t)0x1D31, (q15_t)0x7CA0, (q15_t)0x1D00, (q15_t)0x7CAB, - (q15_t)0x1CCF, (q15_t)0x7CB7, (q15_t)0x1C9E, (q15_t)0x7CC2, - (q15_t)0x1C6D, (q15_t)0x7CCD, (q15_t)0x1C3C, (q15_t)0x7CD8, - (q15_t)0x1C0B, (q15_t)0x7CE3, (q15_t)0x1BDA, (q15_t)0x7CEE, - (q15_t)0x1BA9, (q15_t)0x7CF9, (q15_t)0x1B78, (q15_t)0x7D04, - (q15_t)0x1B47, (q15_t)0x7D0F, (q15_t)0x1B16, (q15_t)0x7D19, - (q15_t)0x1AE4, (q15_t)0x7D24, (q15_t)0x1AB3, (q15_t)0x7D2F, - (q15_t)0x1A82, (q15_t)0x7D39, (q15_t)0x1A51, (q15_t)0x7D43, - (q15_t)0x1A20, (q15_t)0x7D4E, (q15_t)0x19EF, (q15_t)0x7D58, - (q15_t)0x19BD, (q15_t)0x7D62, (q15_t)0x198C, (q15_t)0x7D6C, - (q15_t)0x195B, (q15_t)0x7D76, (q15_t)0x192A, (q15_t)0x7D80, - (q15_t)0x18F8, (q15_t)0x7D8A, (q15_t)0x18C7, (q15_t)0x7D94, - (q15_t)0x1896, (q15_t)0x7D9D, (q15_t)0x1864, (q15_t)0x7DA7, - (q15_t)0x1833, (q15_t)0x7DB0, (q15_t)0x1802, (q15_t)0x7DBA, - (q15_t)0x17D0, (q15_t)0x7DC3, (q15_t)0x179F, (q15_t)0x7DCD, - (q15_t)0x176D, (q15_t)0x7DD6, (q15_t)0x173C, (q15_t)0x7DDF, - (q15_t)0x170A, (q15_t)0x7DE8, (q15_t)0x16D9, (q15_t)0x7DF1, - (q15_t)0x16A8, (q15_t)0x7DFA, (q15_t)0x1676, (q15_t)0x7E03, - (q15_t)0x1645, (q15_t)0x7E0C, (q15_t)0x1613, (q15_t)0x7E14, - (q15_t)0x15E2, (q15_t)0x7E1D, (q15_t)0x15B0, (q15_t)0x7E26, - (q15_t)0x157F, (q15_t)0x7E2E, (q15_t)0x154D, (q15_t)0x7E37, - (q15_t)0x151B, (q15_t)0x7E3F, (q15_t)0x14EA, (q15_t)0x7E47, - (q15_t)0x14B8, (q15_t)0x7E4F, (q15_t)0x1487, (q15_t)0x7E57, - (q15_t)0x1455, (q15_t)0x7E5F, (q15_t)0x1423, (q15_t)0x7E67, - (q15_t)0x13F2, (q15_t)0x7E6F, (q15_t)0x13C0, (q15_t)0x7E77, - (q15_t)0x138E, (q15_t)0x7E7F, (q15_t)0x135D, (q15_t)0x7E86, - (q15_t)0x132B, (q15_t)0x7E8E, (q15_t)0x12F9, (q15_t)0x7E95, - (q15_t)0x12C8, (q15_t)0x7E9D, (q15_t)0x1296, (q15_t)0x7EA4, - (q15_t)0x1264, (q15_t)0x7EAB, (q15_t)0x1232, (q15_t)0x7EB3, - (q15_t)0x1201, (q15_t)0x7EBA, (q15_t)0x11CF, (q15_t)0x7EC1, - (q15_t)0x119D, (q15_t)0x7EC8, (q15_t)0x116B, (q15_t)0x7ECF, - (q15_t)0x1139, (q15_t)0x7ED5, (q15_t)0x1108, (q15_t)0x7EDC, - (q15_t)0x10D6, (q15_t)0x7EE3, (q15_t)0x10A4, (q15_t)0x7EE9, - (q15_t)0x1072, (q15_t)0x7EF0, (q15_t)0x1040, (q15_t)0x7EF6, - (q15_t)0x100E, (q15_t)0x7EFD, (q15_t)0x0FDD, (q15_t)0x7F03, - (q15_t)0x0FAB, (q15_t)0x7F09, (q15_t)0x0F79, (q15_t)0x7F0F, - (q15_t)0x0F47, (q15_t)0x7F15, (q15_t)0x0F15, (q15_t)0x7F1B, - (q15_t)0x0EE3, (q15_t)0x7F21, (q15_t)0x0EB1, (q15_t)0x7F27, - (q15_t)0x0E7F, (q15_t)0x7F2D, (q15_t)0x0E4D, (q15_t)0x7F32, - (q15_t)0x0E1B, (q15_t)0x7F38, (q15_t)0x0DE9, (q15_t)0x7F3D, - (q15_t)0x0DB7, (q15_t)0x7F43, (q15_t)0x0D85, (q15_t)0x7F48, - (q15_t)0x0D53, (q15_t)0x7F4D, (q15_t)0x0D21, (q15_t)0x7F53, - (q15_t)0x0CEF, (q15_t)0x7F58, (q15_t)0x0CBD, (q15_t)0x7F5D, - (q15_t)0x0C8B, (q15_t)0x7F62, (q15_t)0x0C59, (q15_t)0x7F67, - (q15_t)0x0C27, (q15_t)0x7F6B, (q15_t)0x0BF5, (q15_t)0x7F70, - (q15_t)0x0BC3, (q15_t)0x7F75, (q15_t)0x0B91, (q15_t)0x7F79, - (q15_t)0x0B5F, (q15_t)0x7F7E, (q15_t)0x0B2D, (q15_t)0x7F82, - (q15_t)0x0AFB, (q15_t)0x7F87, (q15_t)0x0AC9, (q15_t)0x7F8B, - (q15_t)0x0A97, (q15_t)0x7F8F, (q15_t)0x0A65, (q15_t)0x7F93, - (q15_t)0x0A33, (q15_t)0x7F97, (q15_t)0x0A00, (q15_t)0x7F9B, - (q15_t)0x09CE, (q15_t)0x7F9F, (q15_t)0x099C, (q15_t)0x7FA3, - (q15_t)0x096A, (q15_t)0x7FA7, (q15_t)0x0938, (q15_t)0x7FAA, - (q15_t)0x0906, (q15_t)0x7FAE, (q15_t)0x08D4, (q15_t)0x7FB1, - (q15_t)0x08A2, (q15_t)0x7FB5, (q15_t)0x086F, (q15_t)0x7FB8, - (q15_t)0x083D, (q15_t)0x7FBC, (q15_t)0x080B, (q15_t)0x7FBF, - (q15_t)0x07D9, (q15_t)0x7FC2, (q15_t)0x07A7, (q15_t)0x7FC5, - (q15_t)0x0775, (q15_t)0x7FC8, (q15_t)0x0742, (q15_t)0x7FCB, - (q15_t)0x0710, (q15_t)0x7FCE, (q15_t)0x06DE, (q15_t)0x7FD0, - (q15_t)0x06AC, (q15_t)0x7FD3, (q15_t)0x067A, (q15_t)0x7FD6, - (q15_t)0x0647, (q15_t)0x7FD8, (q15_t)0x0615, (q15_t)0x7FDA, - (q15_t)0x05E3, (q15_t)0x7FDD, (q15_t)0x05B1, (q15_t)0x7FDF, - (q15_t)0x057F, (q15_t)0x7FE1, (q15_t)0x054C, (q15_t)0x7FE3, - (q15_t)0x051A, (q15_t)0x7FE5, (q15_t)0x04E8, (q15_t)0x7FE7, - (q15_t)0x04B6, (q15_t)0x7FE9, (q15_t)0x0483, (q15_t)0x7FEB, - (q15_t)0x0451, (q15_t)0x7FED, (q15_t)0x041F, (q15_t)0x7FEE, - (q15_t)0x03ED, (q15_t)0x7FF0, (q15_t)0x03BA, (q15_t)0x7FF2, - (q15_t)0x0388, (q15_t)0x7FF3, (q15_t)0x0356, (q15_t)0x7FF4, - (q15_t)0x0324, (q15_t)0x7FF6, (q15_t)0x02F1, (q15_t)0x7FF7, - (q15_t)0x02BF, (q15_t)0x7FF8, (q15_t)0x028D, (q15_t)0x7FF9, - (q15_t)0x025B, (q15_t)0x7FFA, (q15_t)0x0228, (q15_t)0x7FFB, - (q15_t)0x01F6, (q15_t)0x7FFC, (q15_t)0x01C4, (q15_t)0x7FFC, - (q15_t)0x0192, (q15_t)0x7FFD, (q15_t)0x015F, (q15_t)0x7FFE, - (q15_t)0x012D, (q15_t)0x7FFE, (q15_t)0x00FB, (q15_t)0x7FFF, - (q15_t)0x00C9, (q15_t)0x7FFF, (q15_t)0x0096, (q15_t)0x7FFF, - (q15_t)0x0064, (q15_t)0x7FFF, (q15_t)0x0032, (q15_t)0x7FFF, - (q15_t)0x0000, (q15_t)0x7FFF, (q15_t)0xFFCD, (q15_t)0x7FFF, - (q15_t)0xFF9B, (q15_t)0x7FFF, (q15_t)0xFF69, (q15_t)0x7FFF, - (q15_t)0xFF36, (q15_t)0x7FFF, (q15_t)0xFF04, (q15_t)0x7FFF, - (q15_t)0xFED2, (q15_t)0x7FFE, (q15_t)0xFEA0, (q15_t)0x7FFE, - (q15_t)0xFE6D, (q15_t)0x7FFD, (q15_t)0xFE3B, (q15_t)0x7FFC, - (q15_t)0xFE09, (q15_t)0x7FFC, (q15_t)0xFDD7, (q15_t)0x7FFB, - (q15_t)0xFDA4, (q15_t)0x7FFA, (q15_t)0xFD72, (q15_t)0x7FF9, - (q15_t)0xFD40, (q15_t)0x7FF8, (q15_t)0xFD0E, (q15_t)0x7FF7, - (q15_t)0xFCDB, (q15_t)0x7FF6, (q15_t)0xFCA9, (q15_t)0x7FF4, - (q15_t)0xFC77, (q15_t)0x7FF3, (q15_t)0xFC45, (q15_t)0x7FF2, - (q15_t)0xFC12, (q15_t)0x7FF0, (q15_t)0xFBE0, (q15_t)0x7FEE, - (q15_t)0xFBAE, (q15_t)0x7FED, (q15_t)0xFB7C, (q15_t)0x7FEB, - (q15_t)0xFB49, (q15_t)0x7FE9, (q15_t)0xFB17, (q15_t)0x7FE7, - (q15_t)0xFAE5, (q15_t)0x7FE5, (q15_t)0xFAB3, (q15_t)0x7FE3, - (q15_t)0xFA80, (q15_t)0x7FE1, (q15_t)0xFA4E, (q15_t)0x7FDF, - (q15_t)0xFA1C, (q15_t)0x7FDD, (q15_t)0xF9EA, (q15_t)0x7FDA, - (q15_t)0xF9B8, (q15_t)0x7FD8, (q15_t)0xF985, (q15_t)0x7FD6, - (q15_t)0xF953, (q15_t)0x7FD3, (q15_t)0xF921, (q15_t)0x7FD0, - (q15_t)0xF8EF, (q15_t)0x7FCE, (q15_t)0xF8BD, (q15_t)0x7FCB, - (q15_t)0xF88A, (q15_t)0x7FC8, (q15_t)0xF858, (q15_t)0x7FC5, - (q15_t)0xF826, (q15_t)0x7FC2, (q15_t)0xF7F4, (q15_t)0x7FBF, - (q15_t)0xF7C2, (q15_t)0x7FBC, (q15_t)0xF790, (q15_t)0x7FB8, - (q15_t)0xF75D, (q15_t)0x7FB5, (q15_t)0xF72B, (q15_t)0x7FB1, - (q15_t)0xF6F9, (q15_t)0x7FAE, (q15_t)0xF6C7, (q15_t)0x7FAA, - (q15_t)0xF695, (q15_t)0x7FA7, (q15_t)0xF663, (q15_t)0x7FA3, - (q15_t)0xF631, (q15_t)0x7F9F, (q15_t)0xF5FF, (q15_t)0x7F9B, - (q15_t)0xF5CC, (q15_t)0x7F97, (q15_t)0xF59A, (q15_t)0x7F93, - (q15_t)0xF568, (q15_t)0x7F8F, (q15_t)0xF536, (q15_t)0x7F8B, - (q15_t)0xF504, (q15_t)0x7F87, (q15_t)0xF4D2, (q15_t)0x7F82, - (q15_t)0xF4A0, (q15_t)0x7F7E, (q15_t)0xF46E, (q15_t)0x7F79, - (q15_t)0xF43C, (q15_t)0x7F75, (q15_t)0xF40A, (q15_t)0x7F70, - (q15_t)0xF3D8, (q15_t)0x7F6B, (q15_t)0xF3A6, (q15_t)0x7F67, - (q15_t)0xF374, (q15_t)0x7F62, (q15_t)0xF342, (q15_t)0x7F5D, - (q15_t)0xF310, (q15_t)0x7F58, (q15_t)0xF2DE, (q15_t)0x7F53, - (q15_t)0xF2AC, (q15_t)0x7F4D, (q15_t)0xF27A, (q15_t)0x7F48, - (q15_t)0xF248, (q15_t)0x7F43, (q15_t)0xF216, (q15_t)0x7F3D, - (q15_t)0xF1E4, (q15_t)0x7F38, (q15_t)0xF1B2, (q15_t)0x7F32, - (q15_t)0xF180, (q15_t)0x7F2D, (q15_t)0xF14E, (q15_t)0x7F27, - (q15_t)0xF11C, (q15_t)0x7F21, (q15_t)0xF0EA, (q15_t)0x7F1B, - (q15_t)0xF0B8, (q15_t)0x7F15, (q15_t)0xF086, (q15_t)0x7F0F, - (q15_t)0xF054, (q15_t)0x7F09, (q15_t)0xF022, (q15_t)0x7F03, - (q15_t)0xEFF1, (q15_t)0x7EFD, (q15_t)0xEFBF, (q15_t)0x7EF6, - (q15_t)0xEF8D, (q15_t)0x7EF0, (q15_t)0xEF5B, (q15_t)0x7EE9, - (q15_t)0xEF29, (q15_t)0x7EE3, (q15_t)0xEEF7, (q15_t)0x7EDC, - (q15_t)0xEEC6, (q15_t)0x7ED5, (q15_t)0xEE94, (q15_t)0x7ECF, - (q15_t)0xEE62, (q15_t)0x7EC8, (q15_t)0xEE30, (q15_t)0x7EC1, - (q15_t)0xEDFE, (q15_t)0x7EBA, (q15_t)0xEDCD, (q15_t)0x7EB3, - (q15_t)0xED9B, (q15_t)0x7EAB, (q15_t)0xED69, (q15_t)0x7EA4, - (q15_t)0xED37, (q15_t)0x7E9D, (q15_t)0xED06, (q15_t)0x7E95, - (q15_t)0xECD4, (q15_t)0x7E8E, (q15_t)0xECA2, (q15_t)0x7E86, - (q15_t)0xEC71, (q15_t)0x7E7F, (q15_t)0xEC3F, (q15_t)0x7E77, - (q15_t)0xEC0D, (q15_t)0x7E6F, (q15_t)0xEBDC, (q15_t)0x7E67, - (q15_t)0xEBAA, (q15_t)0x7E5F, (q15_t)0xEB78, (q15_t)0x7E57, - (q15_t)0xEB47, (q15_t)0x7E4F, (q15_t)0xEB15, (q15_t)0x7E47, - (q15_t)0xEAE4, (q15_t)0x7E3F, (q15_t)0xEAB2, (q15_t)0x7E37, - (q15_t)0xEA80, (q15_t)0x7E2E, (q15_t)0xEA4F, (q15_t)0x7E26, - (q15_t)0xEA1D, (q15_t)0x7E1D, (q15_t)0xE9EC, (q15_t)0x7E14, - (q15_t)0xE9BA, (q15_t)0x7E0C, (q15_t)0xE989, (q15_t)0x7E03, - (q15_t)0xE957, (q15_t)0x7DFA, (q15_t)0xE926, (q15_t)0x7DF1, - (q15_t)0xE8F5, (q15_t)0x7DE8, (q15_t)0xE8C3, (q15_t)0x7DDF, - (q15_t)0xE892, (q15_t)0x7DD6, (q15_t)0xE860, (q15_t)0x7DCD, - (q15_t)0xE82F, (q15_t)0x7DC3, (q15_t)0xE7FD, (q15_t)0x7DBA, - (q15_t)0xE7CC, (q15_t)0x7DB0, (q15_t)0xE79B, (q15_t)0x7DA7, - (q15_t)0xE769, (q15_t)0x7D9D, (q15_t)0xE738, (q15_t)0x7D94, - (q15_t)0xE707, (q15_t)0x7D8A, (q15_t)0xE6D5, (q15_t)0x7D80, - (q15_t)0xE6A4, (q15_t)0x7D76, (q15_t)0xE673, (q15_t)0x7D6C, - (q15_t)0xE642, (q15_t)0x7D62, (q15_t)0xE610, (q15_t)0x7D58, - (q15_t)0xE5DF, (q15_t)0x7D4E, (q15_t)0xE5AE, (q15_t)0x7D43, - (q15_t)0xE57D, (q15_t)0x7D39, (q15_t)0xE54C, (q15_t)0x7D2F, - (q15_t)0xE51B, (q15_t)0x7D24, (q15_t)0xE4E9, (q15_t)0x7D19, - (q15_t)0xE4B8, (q15_t)0x7D0F, (q15_t)0xE487, (q15_t)0x7D04, - (q15_t)0xE456, (q15_t)0x7CF9, (q15_t)0xE425, (q15_t)0x7CEE, - (q15_t)0xE3F4, (q15_t)0x7CE3, (q15_t)0xE3C3, (q15_t)0x7CD8, - (q15_t)0xE392, (q15_t)0x7CCD, (q15_t)0xE361, (q15_t)0x7CC2, - (q15_t)0xE330, (q15_t)0x7CB7, (q15_t)0xE2FF, (q15_t)0x7CAB, - (q15_t)0xE2CE, (q15_t)0x7CA0, (q15_t)0xE29D, (q15_t)0x7C94, - (q15_t)0xE26C, (q15_t)0x7C89, (q15_t)0xE23B, (q15_t)0x7C7D, - (q15_t)0xE20A, (q15_t)0x7C71, (q15_t)0xE1DA, (q15_t)0x7C66, - (q15_t)0xE1A9, (q15_t)0x7C5A, (q15_t)0xE178, (q15_t)0x7C4E, - (q15_t)0xE147, (q15_t)0x7C42, (q15_t)0xE116, (q15_t)0x7C36, - (q15_t)0xE0E6, (q15_t)0x7C29, (q15_t)0xE0B5, (q15_t)0x7C1D, - (q15_t)0xE084, (q15_t)0x7C11, (q15_t)0xE053, (q15_t)0x7C05, - (q15_t)0xE023, (q15_t)0x7BF8, (q15_t)0xDFF2, (q15_t)0x7BEB, - (q15_t)0xDFC1, (q15_t)0x7BDF, (q15_t)0xDF91, (q15_t)0x7BD2, - (q15_t)0xDF60, (q15_t)0x7BC5, (q15_t)0xDF2F, (q15_t)0x7BB9, - (q15_t)0xDEFF, (q15_t)0x7BAC, (q15_t)0xDECE, (q15_t)0x7B9F, - (q15_t)0xDE9E, (q15_t)0x7B92, (q15_t)0xDE6D, (q15_t)0x7B84, - (q15_t)0xDE3D, (q15_t)0x7B77, (q15_t)0xDE0C, (q15_t)0x7B6A, - (q15_t)0xDDDC, (q15_t)0x7B5D, (q15_t)0xDDAB, (q15_t)0x7B4F, - (q15_t)0xDD7B, (q15_t)0x7B42, (q15_t)0xDD4B, (q15_t)0x7B34, - (q15_t)0xDD1A, (q15_t)0x7B26, (q15_t)0xDCEA, (q15_t)0x7B19, - (q15_t)0xDCBA, (q15_t)0x7B0B, (q15_t)0xDC89, (q15_t)0x7AFD, - (q15_t)0xDC59, (q15_t)0x7AEF, (q15_t)0xDC29, (q15_t)0x7AE1, - (q15_t)0xDBF8, (q15_t)0x7AD3, (q15_t)0xDBC8, (q15_t)0x7AC5, - (q15_t)0xDB98, (q15_t)0x7AB6, (q15_t)0xDB68, (q15_t)0x7AA8, - (q15_t)0xDB38, (q15_t)0x7A9A, (q15_t)0xDB08, (q15_t)0x7A8B, - (q15_t)0xDAD7, (q15_t)0x7A7D, (q15_t)0xDAA7, (q15_t)0x7A6E, - (q15_t)0xDA77, (q15_t)0x7A5F, (q15_t)0xDA47, (q15_t)0x7A50, - (q15_t)0xDA17, (q15_t)0x7A42, (q15_t)0xD9E7, (q15_t)0x7A33, - (q15_t)0xD9B7, (q15_t)0x7A24, (q15_t)0xD987, (q15_t)0x7A15, - (q15_t)0xD957, (q15_t)0x7A05, (q15_t)0xD927, (q15_t)0x79F6, - (q15_t)0xD8F8, (q15_t)0x79E7, (q15_t)0xD8C8, (q15_t)0x79D8, - (q15_t)0xD898, (q15_t)0x79C8, (q15_t)0xD868, (q15_t)0x79B9, - (q15_t)0xD838, (q15_t)0x79A9, (q15_t)0xD809, (q15_t)0x7999, - (q15_t)0xD7D9, (q15_t)0x798A, (q15_t)0xD7A9, (q15_t)0x797A, - (q15_t)0xD779, (q15_t)0x796A, (q15_t)0xD74A, (q15_t)0x795A, - (q15_t)0xD71A, (q15_t)0x794A, (q15_t)0xD6EA, (q15_t)0x793A, - (q15_t)0xD6BB, (q15_t)0x792A, (q15_t)0xD68B, (q15_t)0x7919, - (q15_t)0xD65C, (q15_t)0x7909, (q15_t)0xD62C, (q15_t)0x78F9, - (q15_t)0xD5FD, (q15_t)0x78E8, (q15_t)0xD5CD, (q15_t)0x78D8, - (q15_t)0xD59E, (q15_t)0x78C7, (q15_t)0xD56E, (q15_t)0x78B6, - (q15_t)0xD53F, (q15_t)0x78A6, (q15_t)0xD510, (q15_t)0x7895, - (q15_t)0xD4E0, (q15_t)0x7884, (q15_t)0xD4B1, (q15_t)0x7873, - (q15_t)0xD482, (q15_t)0x7862, (q15_t)0xD452, (q15_t)0x7851, - (q15_t)0xD423, (q15_t)0x7840, (q15_t)0xD3F4, (q15_t)0x782E, - (q15_t)0xD3C5, (q15_t)0x781D, (q15_t)0xD396, (q15_t)0x780C, - (q15_t)0xD367, (q15_t)0x77FA, (q15_t)0xD337, (q15_t)0x77E9, - (q15_t)0xD308, (q15_t)0x77D7, (q15_t)0xD2D9, (q15_t)0x77C5, - (q15_t)0xD2AA, (q15_t)0x77B4, (q15_t)0xD27B, (q15_t)0x77A2, - (q15_t)0xD24C, (q15_t)0x7790, (q15_t)0xD21D, (q15_t)0x777E, - (q15_t)0xD1EE, (q15_t)0x776C, (q15_t)0xD1C0, (q15_t)0x775A, - (q15_t)0xD191, (q15_t)0x7747, (q15_t)0xD162, (q15_t)0x7735, - (q15_t)0xD133, (q15_t)0x7723, (q15_t)0xD104, (q15_t)0x7710, - (q15_t)0xD0D6, (q15_t)0x76FE, (q15_t)0xD0A7, (q15_t)0x76EB, - (q15_t)0xD078, (q15_t)0x76D9, (q15_t)0xD04A, (q15_t)0x76C6, - (q15_t)0xD01B, (q15_t)0x76B3, (q15_t)0xCFEC, (q15_t)0x76A0, - (q15_t)0xCFBE, (q15_t)0x768E, (q15_t)0xCF8F, (q15_t)0x767B, - (q15_t)0xCF61, (q15_t)0x7668, (q15_t)0xCF32, (q15_t)0x7654, - (q15_t)0xCF04, (q15_t)0x7641, (q15_t)0xCED5, (q15_t)0x762E, - (q15_t)0xCEA7, (q15_t)0x761B, (q15_t)0xCE79, (q15_t)0x7607, - (q15_t)0xCE4A, (q15_t)0x75F4, (q15_t)0xCE1C, (q15_t)0x75E0, - (q15_t)0xCDEE, (q15_t)0x75CC, (q15_t)0xCDBF, (q15_t)0x75B9, - (q15_t)0xCD91, (q15_t)0x75A5, (q15_t)0xCD63, (q15_t)0x7591, - (q15_t)0xCD35, (q15_t)0x757D, (q15_t)0xCD07, (q15_t)0x7569, - (q15_t)0xCCD9, (q15_t)0x7555, (q15_t)0xCCAB, (q15_t)0x7541, - (q15_t)0xCC7D, (q15_t)0x752D, (q15_t)0xCC4F, (q15_t)0x7519, - (q15_t)0xCC21, (q15_t)0x7504, (q15_t)0xCBF3, (q15_t)0x74F0, - (q15_t)0xCBC5, (q15_t)0x74DB, (q15_t)0xCB97, (q15_t)0x74C7, - (q15_t)0xCB69, (q15_t)0x74B2, (q15_t)0xCB3B, (q15_t)0x749E, - (q15_t)0xCB0D, (q15_t)0x7489, (q15_t)0xCAE0, (q15_t)0x7474, - (q15_t)0xCAB2, (q15_t)0x745F, (q15_t)0xCA84, (q15_t)0x744A, - (q15_t)0xCA57, (q15_t)0x7435, (q15_t)0xCA29, (q15_t)0x7420, - (q15_t)0xC9FB, (q15_t)0x740B, (q15_t)0xC9CE, (q15_t)0x73F6, - (q15_t)0xC9A0, (q15_t)0x73E0, (q15_t)0xC973, (q15_t)0x73CB, - (q15_t)0xC945, (q15_t)0x73B5, (q15_t)0xC918, (q15_t)0x73A0, - (q15_t)0xC8EB, (q15_t)0x738A, (q15_t)0xC8BD, (q15_t)0x7375, - (q15_t)0xC890, (q15_t)0x735F, (q15_t)0xC863, (q15_t)0x7349, - (q15_t)0xC835, (q15_t)0x7333, (q15_t)0xC808, (q15_t)0x731D, - (q15_t)0xC7DB, (q15_t)0x7307, (q15_t)0xC7AE, (q15_t)0x72F1, - (q15_t)0xC781, (q15_t)0x72DB, (q15_t)0xC754, (q15_t)0x72C5, - (q15_t)0xC727, (q15_t)0x72AF, (q15_t)0xC6F9, (q15_t)0x7298, - (q15_t)0xC6CD, (q15_t)0x7282, (q15_t)0xC6A0, (q15_t)0x726B, - (q15_t)0xC673, (q15_t)0x7255, (q15_t)0xC646, (q15_t)0x723E, - (q15_t)0xC619, (q15_t)0x7227, (q15_t)0xC5EC, (q15_t)0x7211, - (q15_t)0xC5BF, (q15_t)0x71FA, (q15_t)0xC593, (q15_t)0x71E3, - (q15_t)0xC566, (q15_t)0x71CC, (q15_t)0xC539, (q15_t)0x71B5, - (q15_t)0xC50D, (q15_t)0x719E, (q15_t)0xC4E0, (q15_t)0x7186, - (q15_t)0xC4B3, (q15_t)0x716F, (q15_t)0xC487, (q15_t)0x7158, - (q15_t)0xC45A, (q15_t)0x7141, (q15_t)0xC42E, (q15_t)0x7129, - (q15_t)0xC402, (q15_t)0x7112, (q15_t)0xC3D5, (q15_t)0x70FA, - (q15_t)0xC3A9, (q15_t)0x70E2, (q15_t)0xC37C, (q15_t)0x70CB, - (q15_t)0xC350, (q15_t)0x70B3, (q15_t)0xC324, (q15_t)0x709B, - (q15_t)0xC2F8, (q15_t)0x7083, (q15_t)0xC2CC, (q15_t)0x706B, - (q15_t)0xC29F, (q15_t)0x7053, (q15_t)0xC273, (q15_t)0x703B, - (q15_t)0xC247, (q15_t)0x7023, (q15_t)0xC21B, (q15_t)0x700A, - (q15_t)0xC1EF, (q15_t)0x6FF2, (q15_t)0xC1C3, (q15_t)0x6FDA, - (q15_t)0xC197, (q15_t)0x6FC1, (q15_t)0xC16C, (q15_t)0x6FA9, - (q15_t)0xC140, (q15_t)0x6F90, (q15_t)0xC114, (q15_t)0x6F77, - (q15_t)0xC0E8, (q15_t)0x6F5F, (q15_t)0xC0BC, (q15_t)0x6F46, - (q15_t)0xC091, (q15_t)0x6F2D, (q15_t)0xC065, (q15_t)0x6F14, - (q15_t)0xC03A, (q15_t)0x6EFB, (q15_t)0xC00E, (q15_t)0x6EE2, - (q15_t)0xBFE2, (q15_t)0x6EC9, (q15_t)0xBFB7, (q15_t)0x6EAF, - (q15_t)0xBF8C, (q15_t)0x6E96, (q15_t)0xBF60, (q15_t)0x6E7D, - (q15_t)0xBF35, (q15_t)0x6E63, (q15_t)0xBF09, (q15_t)0x6E4A, - (q15_t)0xBEDE, (q15_t)0x6E30, (q15_t)0xBEB3, (q15_t)0x6E17, - (q15_t)0xBE88, (q15_t)0x6DFD, (q15_t)0xBE5D, (q15_t)0x6DE3, - (q15_t)0xBE31, (q15_t)0x6DCA, (q15_t)0xBE06, (q15_t)0x6DB0, - (q15_t)0xBDDB, (q15_t)0x6D96, (q15_t)0xBDB0, (q15_t)0x6D7C, - (q15_t)0xBD85, (q15_t)0x6D62, (q15_t)0xBD5A, (q15_t)0x6D48, - (q15_t)0xBD2F, (q15_t)0x6D2D, (q15_t)0xBD05, (q15_t)0x6D13, - (q15_t)0xBCDA, (q15_t)0x6CF9, (q15_t)0xBCAF, (q15_t)0x6CDE, - (q15_t)0xBC84, (q15_t)0x6CC4, (q15_t)0xBC5A, (q15_t)0x6CA9, - (q15_t)0xBC2F, (q15_t)0x6C8F, (q15_t)0xBC04, (q15_t)0x6C74, - (q15_t)0xBBDA, (q15_t)0x6C59, (q15_t)0xBBAF, (q15_t)0x6C3F, - (q15_t)0xBB85, (q15_t)0x6C24, (q15_t)0xBB5A, (q15_t)0x6C09, - (q15_t)0xBB30, (q15_t)0x6BEE, (q15_t)0xBB05, (q15_t)0x6BD3, - (q15_t)0xBADB, (q15_t)0x6BB8, (q15_t)0xBAB1, (q15_t)0x6B9C, - (q15_t)0xBA87, (q15_t)0x6B81, (q15_t)0xBA5C, (q15_t)0x6B66, - (q15_t)0xBA32, (q15_t)0x6B4A, (q15_t)0xBA08, (q15_t)0x6B2F, - (q15_t)0xB9DE, (q15_t)0x6B13, (q15_t)0xB9B4, (q15_t)0x6AF8, - (q15_t)0xB98A, (q15_t)0x6ADC, (q15_t)0xB960, (q15_t)0x6AC1, - (q15_t)0xB936, (q15_t)0x6AA5, (q15_t)0xB90C, (q15_t)0x6A89, - (q15_t)0xB8E3, (q15_t)0x6A6D, (q15_t)0xB8B9, (q15_t)0x6A51, - (q15_t)0xB88F, (q15_t)0x6A35, (q15_t)0xB865, (q15_t)0x6A19, - (q15_t)0xB83C, (q15_t)0x69FD, (q15_t)0xB812, (q15_t)0x69E1, - (q15_t)0xB7E9, (q15_t)0x69C4, (q15_t)0xB7BF, (q15_t)0x69A8, - (q15_t)0xB796, (q15_t)0x698C, (q15_t)0xB76C, (q15_t)0x696F, - (q15_t)0xB743, (q15_t)0x6953, (q15_t)0xB719, (q15_t)0x6936, - (q15_t)0xB6F0, (q15_t)0x6919, (q15_t)0xB6C7, (q15_t)0x68FD, - (q15_t)0xB69E, (q15_t)0x68E0, (q15_t)0xB675, (q15_t)0x68C3, - (q15_t)0xB64B, (q15_t)0x68A6, (q15_t)0xB622, (q15_t)0x6889, - (q15_t)0xB5F9, (q15_t)0x686C, (q15_t)0xB5D0, (q15_t)0x684F, - (q15_t)0xB5A7, (q15_t)0x6832, (q15_t)0xB57E, (q15_t)0x6815, - (q15_t)0xB556, (q15_t)0x67F7, (q15_t)0xB52D, (q15_t)0x67DA, - (q15_t)0xB504, (q15_t)0x67BD, (q15_t)0xB4DB, (q15_t)0x679F, - (q15_t)0xB4B3, (q15_t)0x6782, (q15_t)0xB48A, (q15_t)0x6764, - (q15_t)0xB461, (q15_t)0x6746, (q15_t)0xB439, (q15_t)0x6729, - (q15_t)0xB410, (q15_t)0x670B, (q15_t)0xB3E8, (q15_t)0x66ED, - (q15_t)0xB3C0, (q15_t)0x66CF, (q15_t)0xB397, (q15_t)0x66B1, - (q15_t)0xB36F, (q15_t)0x6693, (q15_t)0xB347, (q15_t)0x6675, - (q15_t)0xB31E, (q15_t)0x6657, (q15_t)0xB2F6, (q15_t)0x6639, - (q15_t)0xB2CE, (q15_t)0x661A, (q15_t)0xB2A6, (q15_t)0x65FC, - (q15_t)0xB27E, (q15_t)0x65DD, (q15_t)0xB256, (q15_t)0x65BF, - (q15_t)0xB22E, (q15_t)0x65A0, (q15_t)0xB206, (q15_t)0x6582, - (q15_t)0xB1DE, (q15_t)0x6563, (q15_t)0xB1B7, (q15_t)0x6545, - (q15_t)0xB18F, (q15_t)0x6526, (q15_t)0xB167, (q15_t)0x6507, - (q15_t)0xB140, (q15_t)0x64E8, (q15_t)0xB118, (q15_t)0x64C9, - (q15_t)0xB0F0, (q15_t)0x64AA, (q15_t)0xB0C9, (q15_t)0x648B, - (q15_t)0xB0A1, (q15_t)0x646C, (q15_t)0xB07A, (q15_t)0x644D, - (q15_t)0xB053, (q15_t)0x642D, (q15_t)0xB02B, (q15_t)0x640E, - (q15_t)0xB004, (q15_t)0x63EF, (q15_t)0xAFDD, (q15_t)0x63CF, - (q15_t)0xAFB6, (q15_t)0x63B0, (q15_t)0xAF8F, (q15_t)0x6390, - (q15_t)0xAF68, (q15_t)0x6371, (q15_t)0xAF40, (q15_t)0x6351, - (q15_t)0xAF1A, (q15_t)0x6331, (q15_t)0xAEF3, (q15_t)0x6311, - (q15_t)0xAECC, (q15_t)0x62F2, (q15_t)0xAEA5, (q15_t)0x62D2, - (q15_t)0xAE7E, (q15_t)0x62B2, (q15_t)0xAE57, (q15_t)0x6292, - (q15_t)0xAE31, (q15_t)0x6271, (q15_t)0xAE0A, (q15_t)0x6251, - (q15_t)0xADE3, (q15_t)0x6231, (q15_t)0xADBD, (q15_t)0x6211, - (q15_t)0xAD96, (q15_t)0x61F1, (q15_t)0xAD70, (q15_t)0x61D0, - (q15_t)0xAD4A, (q15_t)0x61B0, (q15_t)0xAD23, (q15_t)0x618F, - (q15_t)0xACFD, (q15_t)0x616F, (q15_t)0xACD7, (q15_t)0x614E, - (q15_t)0xACB1, (q15_t)0x612D, (q15_t)0xAC8A, (q15_t)0x610D, - (q15_t)0xAC64, (q15_t)0x60EC, (q15_t)0xAC3E, (q15_t)0x60CB, - (q15_t)0xAC18, (q15_t)0x60AA, (q15_t)0xABF2, (q15_t)0x6089, - (q15_t)0xABCC, (q15_t)0x6068, (q15_t)0xABA7, (q15_t)0x6047, - (q15_t)0xAB81, (q15_t)0x6026, (q15_t)0xAB5B, (q15_t)0x6004, - (q15_t)0xAB35, (q15_t)0x5FE3, (q15_t)0xAB10, (q15_t)0x5FC2, - (q15_t)0xAAEA, (q15_t)0x5FA0, (q15_t)0xAAC5, (q15_t)0x5F7F, - (q15_t)0xAA9F, (q15_t)0x5F5E, (q15_t)0xAA7A, (q15_t)0x5F3C, - (q15_t)0xAA54, (q15_t)0x5F1A, (q15_t)0xAA2F, (q15_t)0x5EF9, - (q15_t)0xAA0A, (q15_t)0x5ED7, (q15_t)0xA9E5, (q15_t)0x5EB5, - (q15_t)0xA9BF, (q15_t)0x5E93, (q15_t)0xA99A, (q15_t)0x5E71, - (q15_t)0xA975, (q15_t)0x5E50, (q15_t)0xA950, (q15_t)0x5E2D, - (q15_t)0xA92B, (q15_t)0x5E0B, (q15_t)0xA906, (q15_t)0x5DE9, - (q15_t)0xA8E2, (q15_t)0x5DC7, (q15_t)0xA8BD, (q15_t)0x5DA5, - (q15_t)0xA898, (q15_t)0x5D83, (q15_t)0xA873, (q15_t)0x5D60, - (q15_t)0xA84F, (q15_t)0x5D3E, (q15_t)0xA82A, (q15_t)0x5D1B, - (q15_t)0xA806, (q15_t)0x5CF9, (q15_t)0xA7E1, (q15_t)0x5CD6, - (q15_t)0xA7BD, (q15_t)0x5CB4, (q15_t)0xA798, (q15_t)0x5C91, - (q15_t)0xA774, (q15_t)0x5C6E, (q15_t)0xA750, (q15_t)0x5C4B, - (q15_t)0xA72B, (q15_t)0x5C29, (q15_t)0xA707, (q15_t)0x5C06, - (q15_t)0xA6E3, (q15_t)0x5BE3, (q15_t)0xA6BF, (q15_t)0x5BC0, - (q15_t)0xA69B, (q15_t)0x5B9D, (q15_t)0xA677, (q15_t)0x5B79, - (q15_t)0xA653, (q15_t)0x5B56, (q15_t)0xA62F, (q15_t)0x5B33, - (q15_t)0xA60C, (q15_t)0x5B10, (q15_t)0xA5E8, (q15_t)0x5AEC, - (q15_t)0xA5C4, (q15_t)0x5AC9, (q15_t)0xA5A1, (q15_t)0x5AA5, - (q15_t)0xA57D, (q15_t)0x5A82, (q15_t)0xA55A, (q15_t)0x5A5E, - (q15_t)0xA536, (q15_t)0x5A3B, (q15_t)0xA513, (q15_t)0x5A17, - (q15_t)0xA4EF, (q15_t)0x59F3, (q15_t)0xA4CC, (q15_t)0x59D0, - (q15_t)0xA4A9, (q15_t)0x59AC, (q15_t)0xA486, (q15_t)0x5988, - (q15_t)0xA462, (q15_t)0x5964, (q15_t)0xA43F, (q15_t)0x5940, - (q15_t)0xA41C, (q15_t)0x591C, (q15_t)0xA3F9, (q15_t)0x58F8, - (q15_t)0xA3D6, (q15_t)0x58D4, (q15_t)0xA3B4, (q15_t)0x58AF, - (q15_t)0xA391, (q15_t)0x588B, (q15_t)0xA36E, (q15_t)0x5867, - (q15_t)0xA34B, (q15_t)0x5842, (q15_t)0xA329, (q15_t)0x581E, - (q15_t)0xA306, (q15_t)0x57F9, (q15_t)0xA2E4, (q15_t)0x57D5, - (q15_t)0xA2C1, (q15_t)0x57B0, (q15_t)0xA29F, (q15_t)0x578C, - (q15_t)0xA27C, (q15_t)0x5767, (q15_t)0xA25A, (q15_t)0x5742, - (q15_t)0xA238, (q15_t)0x571D, (q15_t)0xA216, (q15_t)0x56F9, - (q15_t)0xA1F4, (q15_t)0x56D4, (q15_t)0xA1D2, (q15_t)0x56AF, - (q15_t)0xA1AF, (q15_t)0x568A, (q15_t)0xA18E, (q15_t)0x5665, - (q15_t)0xA16C, (q15_t)0x5640, (q15_t)0xA14A, (q15_t)0x561A, - (q15_t)0xA128, (q15_t)0x55F5, (q15_t)0xA106, (q15_t)0x55D0, - (q15_t)0xA0E5, (q15_t)0x55AB, (q15_t)0xA0C3, (q15_t)0x5585, - (q15_t)0xA0A1, (q15_t)0x5560, (q15_t)0xA080, (q15_t)0x553A, - (q15_t)0xA05F, (q15_t)0x5515, (q15_t)0xA03D, (q15_t)0x54EF, - (q15_t)0xA01C, (q15_t)0x54CA, (q15_t)0x9FFB, (q15_t)0x54A4, - (q15_t)0x9FD9, (q15_t)0x547E, (q15_t)0x9FB8, (q15_t)0x5458, - (q15_t)0x9F97, (q15_t)0x5433, (q15_t)0x9F76, (q15_t)0x540D, - (q15_t)0x9F55, (q15_t)0x53E7, (q15_t)0x9F34, (q15_t)0x53C1, - (q15_t)0x9F13, (q15_t)0x539B, (q15_t)0x9EF2, (q15_t)0x5375, - (q15_t)0x9ED2, (q15_t)0x534E, (q15_t)0x9EB1, (q15_t)0x5328, - (q15_t)0x9E90, (q15_t)0x5302, (q15_t)0x9E70, (q15_t)0x52DC, - (q15_t)0x9E4F, (q15_t)0x52B5, (q15_t)0x9E2F, (q15_t)0x528F, - (q15_t)0x9E0E, (q15_t)0x5269, (q15_t)0x9DEE, (q15_t)0x5242, - (q15_t)0x9DCE, (q15_t)0x521C, (q15_t)0x9DAE, (q15_t)0x51F5, - (q15_t)0x9D8E, (q15_t)0x51CE, (q15_t)0x9D6D, (q15_t)0x51A8, - (q15_t)0x9D4D, (q15_t)0x5181, (q15_t)0x9D2D, (q15_t)0x515A, - (q15_t)0x9D0D, (q15_t)0x5133, (q15_t)0x9CEE, (q15_t)0x510C, - (q15_t)0x9CCE, (q15_t)0x50E5, (q15_t)0x9CAE, (q15_t)0x50BF, - (q15_t)0x9C8E, (q15_t)0x5097, (q15_t)0x9C6F, (q15_t)0x5070, - (q15_t)0x9C4F, (q15_t)0x5049, (q15_t)0x9C30, (q15_t)0x5022, - (q15_t)0x9C10, (q15_t)0x4FFB, (q15_t)0x9BF1, (q15_t)0x4FD4, - (q15_t)0x9BD2, (q15_t)0x4FAC, (q15_t)0x9BB2, (q15_t)0x4F85, - (q15_t)0x9B93, (q15_t)0x4F5E, (q15_t)0x9B74, (q15_t)0x4F36, - (q15_t)0x9B55, (q15_t)0x4F0F, (q15_t)0x9B36, (q15_t)0x4EE7, - (q15_t)0x9B17, (q15_t)0x4EBF, (q15_t)0x9AF8, (q15_t)0x4E98, - (q15_t)0x9AD9, (q15_t)0x4E70, (q15_t)0x9ABA, (q15_t)0x4E48, - (q15_t)0x9A9C, (q15_t)0x4E21, (q15_t)0x9A7D, (q15_t)0x4DF9, - (q15_t)0x9A5F, (q15_t)0x4DD1, (q15_t)0x9A40, (q15_t)0x4DA9, - (q15_t)0x9A22, (q15_t)0x4D81, (q15_t)0x9A03, (q15_t)0x4D59, - (q15_t)0x99E5, (q15_t)0x4D31, (q15_t)0x99C6, (q15_t)0x4D09, - (q15_t)0x99A8, (q15_t)0x4CE1, (q15_t)0x998A, (q15_t)0x4CB8, - (q15_t)0x996C, (q15_t)0x4C90, (q15_t)0x994E, (q15_t)0x4C68, - (q15_t)0x9930, (q15_t)0x4C3F, (q15_t)0x9912, (q15_t)0x4C17, - (q15_t)0x98F4, (q15_t)0x4BEF, (q15_t)0x98D6, (q15_t)0x4BC6, - (q15_t)0x98B9, (q15_t)0x4B9E, (q15_t)0x989B, (q15_t)0x4B75, - (q15_t)0x987D, (q15_t)0x4B4C, (q15_t)0x9860, (q15_t)0x4B24, - (q15_t)0x9842, (q15_t)0x4AFB, (q15_t)0x9825, (q15_t)0x4AD2, - (q15_t)0x9808, (q15_t)0x4AA9, (q15_t)0x97EA, (q15_t)0x4A81, - (q15_t)0x97CD, (q15_t)0x4A58, (q15_t)0x97B0, (q15_t)0x4A2F, - (q15_t)0x9793, (q15_t)0x4A06, (q15_t)0x9776, (q15_t)0x49DD, - (q15_t)0x9759, (q15_t)0x49B4, (q15_t)0x973C, (q15_t)0x498A, - (q15_t)0x971F, (q15_t)0x4961, (q15_t)0x9702, (q15_t)0x4938, - (q15_t)0x96E6, (q15_t)0x490F, (q15_t)0x96C9, (q15_t)0x48E6, - (q15_t)0x96AC, (q15_t)0x48BC, (q15_t)0x9690, (q15_t)0x4893, - (q15_t)0x9673, (q15_t)0x4869, (q15_t)0x9657, (q15_t)0x4840, - (q15_t)0x963B, (q15_t)0x4816, (q15_t)0x961E, (q15_t)0x47ED, - (q15_t)0x9602, (q15_t)0x47C3, (q15_t)0x95E6, (q15_t)0x479A, - (q15_t)0x95CA, (q15_t)0x4770, (q15_t)0x95AE, (q15_t)0x4746, - (q15_t)0x9592, (q15_t)0x471C, (q15_t)0x9576, (q15_t)0x46F3, - (q15_t)0x955A, (q15_t)0x46C9, (q15_t)0x953E, (q15_t)0x469F, - (q15_t)0x9523, (q15_t)0x4675, (q15_t)0x9507, (q15_t)0x464B, - (q15_t)0x94EC, (q15_t)0x4621, (q15_t)0x94D0, (q15_t)0x45F7, - (q15_t)0x94B5, (q15_t)0x45CD, (q15_t)0x9499, (q15_t)0x45A3, - (q15_t)0x947E, (q15_t)0x4578, (q15_t)0x9463, (q15_t)0x454E, - (q15_t)0x9447, (q15_t)0x4524, (q15_t)0x942C, (q15_t)0x44FA, - (q15_t)0x9411, (q15_t)0x44CF, (q15_t)0x93F6, (q15_t)0x44A5, - (q15_t)0x93DB, (q15_t)0x447A, (q15_t)0x93C0, (q15_t)0x4450, - (q15_t)0x93A6, (q15_t)0x4425, (q15_t)0x938B, (q15_t)0x43FB, - (q15_t)0x9370, (q15_t)0x43D0, (q15_t)0x9356, (q15_t)0x43A5, - (q15_t)0x933B, (q15_t)0x437B, (q15_t)0x9321, (q15_t)0x4350, - (q15_t)0x9306, (q15_t)0x4325, (q15_t)0x92EC, (q15_t)0x42FA, - (q15_t)0x92D2, (q15_t)0x42D0, (q15_t)0x92B7, (q15_t)0x42A5, - (q15_t)0x929D, (q15_t)0x427A, (q15_t)0x9283, (q15_t)0x424F, - (q15_t)0x9269, (q15_t)0x4224, (q15_t)0x924F, (q15_t)0x41F9, - (q15_t)0x9235, (q15_t)0x41CE, (q15_t)0x921C, (q15_t)0x41A2, - (q15_t)0x9202, (q15_t)0x4177, (q15_t)0x91E8, (q15_t)0x414C, - (q15_t)0x91CF, (q15_t)0x4121, (q15_t)0x91B5, (q15_t)0x40F6, - (q15_t)0x919C, (q15_t)0x40CA, (q15_t)0x9182, (q15_t)0x409F, - (q15_t)0x9169, (q15_t)0x4073, (q15_t)0x9150, (q15_t)0x4048, - (q15_t)0x9136, (q15_t)0x401D, (q15_t)0x911D, (q15_t)0x3FF1, - (q15_t)0x9104, (q15_t)0x3FC5, (q15_t)0x90EB, (q15_t)0x3F9A, - (q15_t)0x90D2, (q15_t)0x3F6E, (q15_t)0x90B9, (q15_t)0x3F43, - (q15_t)0x90A0, (q15_t)0x3F17, (q15_t)0x9088, (q15_t)0x3EEB, - (q15_t)0x906F, (q15_t)0x3EBF, (q15_t)0x9056, (q15_t)0x3E93, - (q15_t)0x903E, (q15_t)0x3E68, (q15_t)0x9025, (q15_t)0x3E3C, - (q15_t)0x900D, (q15_t)0x3E10, (q15_t)0x8FF5, (q15_t)0x3DE4, - (q15_t)0x8FDC, (q15_t)0x3DB8, (q15_t)0x8FC4, (q15_t)0x3D8C, - (q15_t)0x8FAC, (q15_t)0x3D60, (q15_t)0x8F94, (q15_t)0x3D33, - (q15_t)0x8F7C, (q15_t)0x3D07, (q15_t)0x8F64, (q15_t)0x3CDB, - (q15_t)0x8F4C, (q15_t)0x3CAF, (q15_t)0x8F34, (q15_t)0x3C83, - (q15_t)0x8F1D, (q15_t)0x3C56, (q15_t)0x8F05, (q15_t)0x3C2A, - (q15_t)0x8EED, (q15_t)0x3BFD, (q15_t)0x8ED6, (q15_t)0x3BD1, - (q15_t)0x8EBE, (q15_t)0x3BA5, (q15_t)0x8EA7, (q15_t)0x3B78, - (q15_t)0x8E90, (q15_t)0x3B4C, (q15_t)0x8E79, (q15_t)0x3B1F, - (q15_t)0x8E61, (q15_t)0x3AF2, (q15_t)0x8E4A, (q15_t)0x3AC6, - (q15_t)0x8E33, (q15_t)0x3A99, (q15_t)0x8E1C, (q15_t)0x3A6C, - (q15_t)0x8E05, (q15_t)0x3A40, (q15_t)0x8DEE, (q15_t)0x3A13, - (q15_t)0x8DD8, (q15_t)0x39E6, (q15_t)0x8DC1, (q15_t)0x39B9, - (q15_t)0x8DAA, (q15_t)0x398C, (q15_t)0x8D94, (q15_t)0x395F, - (q15_t)0x8D7D, (q15_t)0x3932, (q15_t)0x8D67, (q15_t)0x3906, - (q15_t)0x8D50, (q15_t)0x38D8, (q15_t)0x8D3A, (q15_t)0x38AB, - (q15_t)0x8D24, (q15_t)0x387E, (q15_t)0x8D0E, (q15_t)0x3851, - (q15_t)0x8CF8, (q15_t)0x3824, (q15_t)0x8CE2, (q15_t)0x37F7, - (q15_t)0x8CCC, (q15_t)0x37CA, (q15_t)0x8CB6, (q15_t)0x379C, - (q15_t)0x8CA0, (q15_t)0x376F, (q15_t)0x8C8A, (q15_t)0x3742, - (q15_t)0x8C75, (q15_t)0x3714, (q15_t)0x8C5F, (q15_t)0x36E7, - (q15_t)0x8C4A, (q15_t)0x36BA, (q15_t)0x8C34, (q15_t)0x368C, - (q15_t)0x8C1F, (q15_t)0x365F, (q15_t)0x8C09, (q15_t)0x3631, - (q15_t)0x8BF4, (q15_t)0x3604, (q15_t)0x8BDF, (q15_t)0x35D6, - (q15_t)0x8BCA, (q15_t)0x35A8, (q15_t)0x8BB5, (q15_t)0x357B, - (q15_t)0x8BA0, (q15_t)0x354D, (q15_t)0x8B8B, (q15_t)0x351F, - (q15_t)0x8B76, (q15_t)0x34F2, (q15_t)0x8B61, (q15_t)0x34C4, - (q15_t)0x8B4D, (q15_t)0x3496, (q15_t)0x8B38, (q15_t)0x3468, - (q15_t)0x8B24, (q15_t)0x343A, (q15_t)0x8B0F, (q15_t)0x340C, - (q15_t)0x8AFB, (q15_t)0x33DE, (q15_t)0x8AE6, (q15_t)0x33B0, - (q15_t)0x8AD2, (q15_t)0x3382, (q15_t)0x8ABE, (q15_t)0x3354, - (q15_t)0x8AAA, (q15_t)0x3326, (q15_t)0x8A96, (q15_t)0x32F8, - (q15_t)0x8A82, (q15_t)0x32CA, (q15_t)0x8A6E, (q15_t)0x329C, - (q15_t)0x8A5A, (q15_t)0x326E, (q15_t)0x8A46, (q15_t)0x3240, - (q15_t)0x8A33, (q15_t)0x3211, (q15_t)0x8A1F, (q15_t)0x31E3, - (q15_t)0x8A0B, (q15_t)0x31B5, (q15_t)0x89F8, (q15_t)0x3186, - (q15_t)0x89E4, (q15_t)0x3158, (q15_t)0x89D1, (q15_t)0x312A, - (q15_t)0x89BE, (q15_t)0x30FB, (q15_t)0x89AB, (q15_t)0x30CD, - (q15_t)0x8997, (q15_t)0x309E, (q15_t)0x8984, (q15_t)0x3070, - (q15_t)0x8971, (q15_t)0x3041, (q15_t)0x895F, (q15_t)0x3013, - (q15_t)0x894C, (q15_t)0x2FE4, (q15_t)0x8939, (q15_t)0x2FB5, - (q15_t)0x8926, (q15_t)0x2F87, (q15_t)0x8914, (q15_t)0x2F58, - (q15_t)0x8901, (q15_t)0x2F29, (q15_t)0x88EF, (q15_t)0x2EFB, - (q15_t)0x88DC, (q15_t)0x2ECC, (q15_t)0x88CA, (q15_t)0x2E9D, - (q15_t)0x88B8, (q15_t)0x2E6E, (q15_t)0x88A5, (q15_t)0x2E3F, - (q15_t)0x8893, (q15_t)0x2E11, (q15_t)0x8881, (q15_t)0x2DE2, - (q15_t)0x886F, (q15_t)0x2DB3, (q15_t)0x885D, (q15_t)0x2D84, - (q15_t)0x884B, (q15_t)0x2D55, (q15_t)0x883A, (q15_t)0x2D26, - (q15_t)0x8828, (q15_t)0x2CF7, (q15_t)0x8816, (q15_t)0x2CC8, - (q15_t)0x8805, (q15_t)0x2C98, (q15_t)0x87F3, (q15_t)0x2C69, - (q15_t)0x87E2, (q15_t)0x2C3A, (q15_t)0x87D1, (q15_t)0x2C0B, - (q15_t)0x87BF, (q15_t)0x2BDC, (q15_t)0x87AE, (q15_t)0x2BAD, - (q15_t)0x879D, (q15_t)0x2B7D, (q15_t)0x878C, (q15_t)0x2B4E, - (q15_t)0x877B, (q15_t)0x2B1F, (q15_t)0x876A, (q15_t)0x2AEF, - (q15_t)0x8759, (q15_t)0x2AC0, (q15_t)0x8749, (q15_t)0x2A91, - (q15_t)0x8738, (q15_t)0x2A61, (q15_t)0x8727, (q15_t)0x2A32, - (q15_t)0x8717, (q15_t)0x2A02, (q15_t)0x8706, (q15_t)0x29D3, - (q15_t)0x86F6, (q15_t)0x29A3, (q15_t)0x86E6, (q15_t)0x2974, - (q15_t)0x86D5, (q15_t)0x2944, (q15_t)0x86C5, (q15_t)0x2915, - (q15_t)0x86B5, (q15_t)0x28E5, (q15_t)0x86A5, (q15_t)0x28B5, - (q15_t)0x8695, (q15_t)0x2886, (q15_t)0x8685, (q15_t)0x2856, - (q15_t)0x8675, (q15_t)0x2826, (q15_t)0x8666, (q15_t)0x27F6, - (q15_t)0x8656, (q15_t)0x27C7, (q15_t)0x8646, (q15_t)0x2797, - (q15_t)0x8637, (q15_t)0x2767, (q15_t)0x8627, (q15_t)0x2737, - (q15_t)0x8618, (q15_t)0x2707, (q15_t)0x8609, (q15_t)0x26D8, - (q15_t)0x85FA, (q15_t)0x26A8, (q15_t)0x85EA, (q15_t)0x2678, - (q15_t)0x85DB, (q15_t)0x2648, (q15_t)0x85CC, (q15_t)0x2618, - (q15_t)0x85BD, (q15_t)0x25E8, (q15_t)0x85AF, (q15_t)0x25B8, - (q15_t)0x85A0, (q15_t)0x2588, (q15_t)0x8591, (q15_t)0x2558, - (q15_t)0x8582, (q15_t)0x2528, (q15_t)0x8574, (q15_t)0x24F7, - (q15_t)0x8565, (q15_t)0x24C7, (q15_t)0x8557, (q15_t)0x2497, - (q15_t)0x8549, (q15_t)0x2467, (q15_t)0x853A, (q15_t)0x2437, - (q15_t)0x852C, (q15_t)0x2407, (q15_t)0x851E, (q15_t)0x23D6, - (q15_t)0x8510, (q15_t)0x23A6, (q15_t)0x8502, (q15_t)0x2376, - (q15_t)0x84F4, (q15_t)0x2345, (q15_t)0x84E6, (q15_t)0x2315, - (q15_t)0x84D9, (q15_t)0x22E5, (q15_t)0x84CB, (q15_t)0x22B4, - (q15_t)0x84BD, (q15_t)0x2284, (q15_t)0x84B0, (q15_t)0x2254, - (q15_t)0x84A2, (q15_t)0x2223, (q15_t)0x8495, (q15_t)0x21F3, - (q15_t)0x8488, (q15_t)0x21C2, (q15_t)0x847B, (q15_t)0x2192, - (q15_t)0x846D, (q15_t)0x2161, (q15_t)0x8460, (q15_t)0x2131, - (q15_t)0x8453, (q15_t)0x2100, (q15_t)0x8446, (q15_t)0x20D0, - (q15_t)0x843A, (q15_t)0x209F, (q15_t)0x842D, (q15_t)0x206E, - (q15_t)0x8420, (q15_t)0x203E, (q15_t)0x8414, (q15_t)0x200D, - (q15_t)0x8407, (q15_t)0x1FDC, (q15_t)0x83FA, (q15_t)0x1FAC, - (q15_t)0x83EE, (q15_t)0x1F7B, (q15_t)0x83E2, (q15_t)0x1F4A, - (q15_t)0x83D6, (q15_t)0x1F19, (q15_t)0x83C9, (q15_t)0x1EE9, - (q15_t)0x83BD, (q15_t)0x1EB8, (q15_t)0x83B1, (q15_t)0x1E87, - (q15_t)0x83A5, (q15_t)0x1E56, (q15_t)0x8399, (q15_t)0x1E25, - (q15_t)0x838E, (q15_t)0x1DF5, (q15_t)0x8382, (q15_t)0x1DC4, - (q15_t)0x8376, (q15_t)0x1D93, (q15_t)0x836B, (q15_t)0x1D62, - (q15_t)0x835F, (q15_t)0x1D31, (q15_t)0x8354, (q15_t)0x1D00, - (q15_t)0x8348, (q15_t)0x1CCF, (q15_t)0x833D, (q15_t)0x1C9E, - (q15_t)0x8332, (q15_t)0x1C6D, (q15_t)0x8327, (q15_t)0x1C3C, - (q15_t)0x831C, (q15_t)0x1C0B, (q15_t)0x8311, (q15_t)0x1BDA, - (q15_t)0x8306, (q15_t)0x1BA9, (q15_t)0x82FB, (q15_t)0x1B78, - (q15_t)0x82F0, (q15_t)0x1B47, (q15_t)0x82E6, (q15_t)0x1B16, - (q15_t)0x82DB, (q15_t)0x1AE4, (q15_t)0x82D0, (q15_t)0x1AB3, - (q15_t)0x82C6, (q15_t)0x1A82, (q15_t)0x82BC, (q15_t)0x1A51, - (q15_t)0x82B1, (q15_t)0x1A20, (q15_t)0x82A7, (q15_t)0x19EF, - (q15_t)0x829D, (q15_t)0x19BD, (q15_t)0x8293, (q15_t)0x198C, - (q15_t)0x8289, (q15_t)0x195B, (q15_t)0x827F, (q15_t)0x192A, - (q15_t)0x8275, (q15_t)0x18F8, (q15_t)0x826B, (q15_t)0x18C7, - (q15_t)0x8262, (q15_t)0x1896, (q15_t)0x8258, (q15_t)0x1864, - (q15_t)0x824F, (q15_t)0x1833, (q15_t)0x8245, (q15_t)0x1802, - (q15_t)0x823C, (q15_t)0x17D0, (q15_t)0x8232, (q15_t)0x179F, - (q15_t)0x8229, (q15_t)0x176D, (q15_t)0x8220, (q15_t)0x173C, - (q15_t)0x8217, (q15_t)0x170A, (q15_t)0x820E, (q15_t)0x16D9, - (q15_t)0x8205, (q15_t)0x16A8, (q15_t)0x81FC, (q15_t)0x1676, - (q15_t)0x81F3, (q15_t)0x1645, (q15_t)0x81EB, (q15_t)0x1613, - (q15_t)0x81E2, (q15_t)0x15E2, (q15_t)0x81D9, (q15_t)0x15B0, - (q15_t)0x81D1, (q15_t)0x157F, (q15_t)0x81C8, (q15_t)0x154D, - (q15_t)0x81C0, (q15_t)0x151B, (q15_t)0x81B8, (q15_t)0x14EA, - (q15_t)0x81B0, (q15_t)0x14B8, (q15_t)0x81A8, (q15_t)0x1487, - (q15_t)0x81A0, (q15_t)0x1455, (q15_t)0x8198, (q15_t)0x1423, - (q15_t)0x8190, (q15_t)0x13F2, (q15_t)0x8188, (q15_t)0x13C0, - (q15_t)0x8180, (q15_t)0x138E, (q15_t)0x8179, (q15_t)0x135D, - (q15_t)0x8171, (q15_t)0x132B, (q15_t)0x816A, (q15_t)0x12F9, - (q15_t)0x8162, (q15_t)0x12C8, (q15_t)0x815B, (q15_t)0x1296, - (q15_t)0x8154, (q15_t)0x1264, (q15_t)0x814C, (q15_t)0x1232, - (q15_t)0x8145, (q15_t)0x1201, (q15_t)0x813E, (q15_t)0x11CF, - (q15_t)0x8137, (q15_t)0x119D, (q15_t)0x8130, (q15_t)0x116B, - (q15_t)0x812A, (q15_t)0x1139, (q15_t)0x8123, (q15_t)0x1108, - (q15_t)0x811C, (q15_t)0x10D6, (q15_t)0x8116, (q15_t)0x10A4, - (q15_t)0x810F, (q15_t)0x1072, (q15_t)0x8109, (q15_t)0x1040, - (q15_t)0x8102, (q15_t)0x100E, (q15_t)0x80FC, (q15_t)0x0FDD, - (q15_t)0x80F6, (q15_t)0x0FAB, (q15_t)0x80F0, (q15_t)0x0F79, - (q15_t)0x80EA, (q15_t)0x0F47, (q15_t)0x80E4, (q15_t)0x0F15, - (q15_t)0x80DE, (q15_t)0x0EE3, (q15_t)0x80D8, (q15_t)0x0EB1, - (q15_t)0x80D2, (q15_t)0x0E7F, (q15_t)0x80CD, (q15_t)0x0E4D, - (q15_t)0x80C7, (q15_t)0x0E1B, (q15_t)0x80C2, (q15_t)0x0DE9, - (q15_t)0x80BC, (q15_t)0x0DB7, (q15_t)0x80B7, (q15_t)0x0D85, - (q15_t)0x80B2, (q15_t)0x0D53, (q15_t)0x80AC, (q15_t)0x0D21, - (q15_t)0x80A7, (q15_t)0x0CEF, (q15_t)0x80A2, (q15_t)0x0CBD, - (q15_t)0x809D, (q15_t)0x0C8B, (q15_t)0x8098, (q15_t)0x0C59, - (q15_t)0x8094, (q15_t)0x0C27, (q15_t)0x808F, (q15_t)0x0BF5, - (q15_t)0x808A, (q15_t)0x0BC3, (q15_t)0x8086, (q15_t)0x0B91, - (q15_t)0x8081, (q15_t)0x0B5F, (q15_t)0x807D, (q15_t)0x0B2D, - (q15_t)0x8078, (q15_t)0x0AFB, (q15_t)0x8074, (q15_t)0x0AC9, - (q15_t)0x8070, (q15_t)0x0A97, (q15_t)0x806C, (q15_t)0x0A65, - (q15_t)0x8068, (q15_t)0x0A33, (q15_t)0x8064, (q15_t)0x0A00, - (q15_t)0x8060, (q15_t)0x09CE, (q15_t)0x805C, (q15_t)0x099C, - (q15_t)0x8058, (q15_t)0x096A, (q15_t)0x8055, (q15_t)0x0938, - (q15_t)0x8051, (q15_t)0x0906, (q15_t)0x804E, (q15_t)0x08D4, - (q15_t)0x804A, (q15_t)0x08A2, (q15_t)0x8047, (q15_t)0x086F, - (q15_t)0x8043, (q15_t)0x083D, (q15_t)0x8040, (q15_t)0x080B, - (q15_t)0x803D, (q15_t)0x07D9, (q15_t)0x803A, (q15_t)0x07A7, - (q15_t)0x8037, (q15_t)0x0775, (q15_t)0x8034, (q15_t)0x0742, - (q15_t)0x8031, (q15_t)0x0710, (q15_t)0x802F, (q15_t)0x06DE, - (q15_t)0x802C, (q15_t)0x06AC, (q15_t)0x8029, (q15_t)0x067A, - (q15_t)0x8027, (q15_t)0x0647, (q15_t)0x8025, (q15_t)0x0615, - (q15_t)0x8022, (q15_t)0x05E3, (q15_t)0x8020, (q15_t)0x05B1, - (q15_t)0x801E, (q15_t)0x057F, (q15_t)0x801C, (q15_t)0x054C, - (q15_t)0x801A, (q15_t)0x051A, (q15_t)0x8018, (q15_t)0x04E8, - (q15_t)0x8016, (q15_t)0x04B6, (q15_t)0x8014, (q15_t)0x0483, - (q15_t)0x8012, (q15_t)0x0451, (q15_t)0x8011, (q15_t)0x041F, - (q15_t)0x800F, (q15_t)0x03ED, (q15_t)0x800D, (q15_t)0x03BA, - (q15_t)0x800C, (q15_t)0x0388, (q15_t)0x800B, (q15_t)0x0356, - (q15_t)0x8009, (q15_t)0x0324, (q15_t)0x8008, (q15_t)0x02F1, - (q15_t)0x8007, (q15_t)0x02BF, (q15_t)0x8006, (q15_t)0x028D, - (q15_t)0x8005, (q15_t)0x025B, (q15_t)0x8004, (q15_t)0x0228, - (q15_t)0x8003, (q15_t)0x01F6, (q15_t)0x8003, (q15_t)0x01C4, - (q15_t)0x8002, (q15_t)0x0192, (q15_t)0x8001, (q15_t)0x015F, - (q15_t)0x8001, (q15_t)0x012D, (q15_t)0x8000, (q15_t)0x00FB, - (q15_t)0x8000, (q15_t)0x00C9, (q15_t)0x8000, (q15_t)0x0096, - (q15_t)0x8000, (q15_t)0x0064, (q15_t)0x8000, (q15_t)0x0032, - (q15_t)0x8000, (q15_t)0x0000, (q15_t)0x8000, (q15_t)0xFFCD, - (q15_t)0x8000, (q15_t)0xFF9B, (q15_t)0x8000, (q15_t)0xFF69, - (q15_t)0x8000, (q15_t)0xFF36, (q15_t)0x8000, (q15_t)0xFF04, - (q15_t)0x8001, (q15_t)0xFED2, (q15_t)0x8001, (q15_t)0xFEA0, - (q15_t)0x8002, (q15_t)0xFE6D, (q15_t)0x8003, (q15_t)0xFE3B, - (q15_t)0x8003, (q15_t)0xFE09, (q15_t)0x8004, (q15_t)0xFDD7, - (q15_t)0x8005, (q15_t)0xFDA4, (q15_t)0x8006, (q15_t)0xFD72, - (q15_t)0x8007, (q15_t)0xFD40, (q15_t)0x8008, (q15_t)0xFD0E, - (q15_t)0x8009, (q15_t)0xFCDB, (q15_t)0x800B, (q15_t)0xFCA9, - (q15_t)0x800C, (q15_t)0xFC77, (q15_t)0x800D, (q15_t)0xFC45, - (q15_t)0x800F, (q15_t)0xFC12, (q15_t)0x8011, (q15_t)0xFBE0, - (q15_t)0x8012, (q15_t)0xFBAE, (q15_t)0x8014, (q15_t)0xFB7C, - (q15_t)0x8016, (q15_t)0xFB49, (q15_t)0x8018, (q15_t)0xFB17, - (q15_t)0x801A, (q15_t)0xFAE5, (q15_t)0x801C, (q15_t)0xFAB3, - (q15_t)0x801E, (q15_t)0xFA80, (q15_t)0x8020, (q15_t)0xFA4E, - (q15_t)0x8022, (q15_t)0xFA1C, (q15_t)0x8025, (q15_t)0xF9EA, - (q15_t)0x8027, (q15_t)0xF9B8, (q15_t)0x8029, (q15_t)0xF985, - (q15_t)0x802C, (q15_t)0xF953, (q15_t)0x802F, (q15_t)0xF921, - (q15_t)0x8031, (q15_t)0xF8EF, (q15_t)0x8034, (q15_t)0xF8BD, - (q15_t)0x8037, (q15_t)0xF88A, (q15_t)0x803A, (q15_t)0xF858, - (q15_t)0x803D, (q15_t)0xF826, (q15_t)0x8040, (q15_t)0xF7F4, - (q15_t)0x8043, (q15_t)0xF7C2, (q15_t)0x8047, (q15_t)0xF790, - (q15_t)0x804A, (q15_t)0xF75D, (q15_t)0x804E, (q15_t)0xF72B, - (q15_t)0x8051, (q15_t)0xF6F9, (q15_t)0x8055, (q15_t)0xF6C7, - (q15_t)0x8058, (q15_t)0xF695, (q15_t)0x805C, (q15_t)0xF663, - (q15_t)0x8060, (q15_t)0xF631, (q15_t)0x8064, (q15_t)0xF5FF, - (q15_t)0x8068, (q15_t)0xF5CC, (q15_t)0x806C, (q15_t)0xF59A, - (q15_t)0x8070, (q15_t)0xF568, (q15_t)0x8074, (q15_t)0xF536, - (q15_t)0x8078, (q15_t)0xF504, (q15_t)0x807D, (q15_t)0xF4D2, - (q15_t)0x8081, (q15_t)0xF4A0, (q15_t)0x8086, (q15_t)0xF46E, - (q15_t)0x808A, (q15_t)0xF43C, (q15_t)0x808F, (q15_t)0xF40A, - (q15_t)0x8094, (q15_t)0xF3D8, (q15_t)0x8098, (q15_t)0xF3A6, - (q15_t)0x809D, (q15_t)0xF374, (q15_t)0x80A2, (q15_t)0xF342, - (q15_t)0x80A7, (q15_t)0xF310, (q15_t)0x80AC, (q15_t)0xF2DE, - (q15_t)0x80B2, (q15_t)0xF2AC, (q15_t)0x80B7, (q15_t)0xF27A, - (q15_t)0x80BC, (q15_t)0xF248, (q15_t)0x80C2, (q15_t)0xF216, - (q15_t)0x80C7, (q15_t)0xF1E4, (q15_t)0x80CD, (q15_t)0xF1B2, - (q15_t)0x80D2, (q15_t)0xF180, (q15_t)0x80D8, (q15_t)0xF14E, - (q15_t)0x80DE, (q15_t)0xF11C, (q15_t)0x80E4, (q15_t)0xF0EA, - (q15_t)0x80EA, (q15_t)0xF0B8, (q15_t)0x80F0, (q15_t)0xF086, - (q15_t)0x80F6, (q15_t)0xF054, (q15_t)0x80FC, (q15_t)0xF022, - (q15_t)0x8102, (q15_t)0xEFF1, (q15_t)0x8109, (q15_t)0xEFBF, - (q15_t)0x810F, (q15_t)0xEF8D, (q15_t)0x8116, (q15_t)0xEF5B, - (q15_t)0x811C, (q15_t)0xEF29, (q15_t)0x8123, (q15_t)0xEEF7, - (q15_t)0x812A, (q15_t)0xEEC6, (q15_t)0x8130, (q15_t)0xEE94, - (q15_t)0x8137, (q15_t)0xEE62, (q15_t)0x813E, (q15_t)0xEE30, - (q15_t)0x8145, (q15_t)0xEDFE, (q15_t)0x814C, (q15_t)0xEDCD, - (q15_t)0x8154, (q15_t)0xED9B, (q15_t)0x815B, (q15_t)0xED69, - (q15_t)0x8162, (q15_t)0xED37, (q15_t)0x816A, (q15_t)0xED06, - (q15_t)0x8171, (q15_t)0xECD4, (q15_t)0x8179, (q15_t)0xECA2, - (q15_t)0x8180, (q15_t)0xEC71, (q15_t)0x8188, (q15_t)0xEC3F, - (q15_t)0x8190, (q15_t)0xEC0D, (q15_t)0x8198, (q15_t)0xEBDC, - (q15_t)0x81A0, (q15_t)0xEBAA, (q15_t)0x81A8, (q15_t)0xEB78, - (q15_t)0x81B0, (q15_t)0xEB47, (q15_t)0x81B8, (q15_t)0xEB15, - (q15_t)0x81C0, (q15_t)0xEAE4, (q15_t)0x81C8, (q15_t)0xEAB2, - (q15_t)0x81D1, (q15_t)0xEA80, (q15_t)0x81D9, (q15_t)0xEA4F, - (q15_t)0x81E2, (q15_t)0xEA1D, (q15_t)0x81EB, (q15_t)0xE9EC, - (q15_t)0x81F3, (q15_t)0xE9BA, (q15_t)0x81FC, (q15_t)0xE989, - (q15_t)0x8205, (q15_t)0xE957, (q15_t)0x820E, (q15_t)0xE926, - (q15_t)0x8217, (q15_t)0xE8F5, (q15_t)0x8220, (q15_t)0xE8C3, - (q15_t)0x8229, (q15_t)0xE892, (q15_t)0x8232, (q15_t)0xE860, - (q15_t)0x823C, (q15_t)0xE82F, (q15_t)0x8245, (q15_t)0xE7FD, - (q15_t)0x824F, (q15_t)0xE7CC, (q15_t)0x8258, (q15_t)0xE79B, - (q15_t)0x8262, (q15_t)0xE769, (q15_t)0x826B, (q15_t)0xE738, - (q15_t)0x8275, (q15_t)0xE707, (q15_t)0x827F, (q15_t)0xE6D5, - (q15_t)0x8289, (q15_t)0xE6A4, (q15_t)0x8293, (q15_t)0xE673, - (q15_t)0x829D, (q15_t)0xE642, (q15_t)0x82A7, (q15_t)0xE610, - (q15_t)0x82B1, (q15_t)0xE5DF, (q15_t)0x82BC, (q15_t)0xE5AE, - (q15_t)0x82C6, (q15_t)0xE57D, (q15_t)0x82D0, (q15_t)0xE54C, - (q15_t)0x82DB, (q15_t)0xE51B, (q15_t)0x82E6, (q15_t)0xE4E9, - (q15_t)0x82F0, (q15_t)0xE4B8, (q15_t)0x82FB, (q15_t)0xE487, - (q15_t)0x8306, (q15_t)0xE456, (q15_t)0x8311, (q15_t)0xE425, - (q15_t)0x831C, (q15_t)0xE3F4, (q15_t)0x8327, (q15_t)0xE3C3, - (q15_t)0x8332, (q15_t)0xE392, (q15_t)0x833D, (q15_t)0xE361, - (q15_t)0x8348, (q15_t)0xE330, (q15_t)0x8354, (q15_t)0xE2FF, - (q15_t)0x835F, (q15_t)0xE2CE, (q15_t)0x836B, (q15_t)0xE29D, - (q15_t)0x8376, (q15_t)0xE26C, (q15_t)0x8382, (q15_t)0xE23B, - (q15_t)0x838E, (q15_t)0xE20A, (q15_t)0x8399, (q15_t)0xE1DA, - (q15_t)0x83A5, (q15_t)0xE1A9, (q15_t)0x83B1, (q15_t)0xE178, - (q15_t)0x83BD, (q15_t)0xE147, (q15_t)0x83C9, (q15_t)0xE116, - (q15_t)0x83D6, (q15_t)0xE0E6, (q15_t)0x83E2, (q15_t)0xE0B5, - (q15_t)0x83EE, (q15_t)0xE084, (q15_t)0x83FA, (q15_t)0xE053, - (q15_t)0x8407, (q15_t)0xE023, (q15_t)0x8414, (q15_t)0xDFF2, - (q15_t)0x8420, (q15_t)0xDFC1, (q15_t)0x842D, (q15_t)0xDF91, - (q15_t)0x843A, (q15_t)0xDF60, (q15_t)0x8446, (q15_t)0xDF2F, - (q15_t)0x8453, (q15_t)0xDEFF, (q15_t)0x8460, (q15_t)0xDECE, - (q15_t)0x846D, (q15_t)0xDE9E, (q15_t)0x847B, (q15_t)0xDE6D, - (q15_t)0x8488, (q15_t)0xDE3D, (q15_t)0x8495, (q15_t)0xDE0C, - (q15_t)0x84A2, (q15_t)0xDDDC, (q15_t)0x84B0, (q15_t)0xDDAB, - (q15_t)0x84BD, (q15_t)0xDD7B, (q15_t)0x84CB, (q15_t)0xDD4B, - (q15_t)0x84D9, (q15_t)0xDD1A, (q15_t)0x84E6, (q15_t)0xDCEA, - (q15_t)0x84F4, (q15_t)0xDCBA, (q15_t)0x8502, (q15_t)0xDC89, - (q15_t)0x8510, (q15_t)0xDC59, (q15_t)0x851E, (q15_t)0xDC29, - (q15_t)0x852C, (q15_t)0xDBF8, (q15_t)0x853A, (q15_t)0xDBC8, - (q15_t)0x8549, (q15_t)0xDB98, (q15_t)0x8557, (q15_t)0xDB68, - (q15_t)0x8565, (q15_t)0xDB38, (q15_t)0x8574, (q15_t)0xDB08, - (q15_t)0x8582, (q15_t)0xDAD7, (q15_t)0x8591, (q15_t)0xDAA7, - (q15_t)0x85A0, (q15_t)0xDA77, (q15_t)0x85AF, (q15_t)0xDA47, - (q15_t)0x85BD, (q15_t)0xDA17, (q15_t)0x85CC, (q15_t)0xD9E7, - (q15_t)0x85DB, (q15_t)0xD9B7, (q15_t)0x85EA, (q15_t)0xD987, - (q15_t)0x85FA, (q15_t)0xD957, (q15_t)0x8609, (q15_t)0xD927, - (q15_t)0x8618, (q15_t)0xD8F8, (q15_t)0x8627, (q15_t)0xD8C8, - (q15_t)0x8637, (q15_t)0xD898, (q15_t)0x8646, (q15_t)0xD868, - (q15_t)0x8656, (q15_t)0xD838, (q15_t)0x8666, (q15_t)0xD809, - (q15_t)0x8675, (q15_t)0xD7D9, (q15_t)0x8685, (q15_t)0xD7A9, - (q15_t)0x8695, (q15_t)0xD779, (q15_t)0x86A5, (q15_t)0xD74A, - (q15_t)0x86B5, (q15_t)0xD71A, (q15_t)0x86C5, (q15_t)0xD6EA, - (q15_t)0x86D5, (q15_t)0xD6BB, (q15_t)0x86E6, (q15_t)0xD68B, - (q15_t)0x86F6, (q15_t)0xD65C, (q15_t)0x8706, (q15_t)0xD62C, - (q15_t)0x8717, (q15_t)0xD5FD, (q15_t)0x8727, (q15_t)0xD5CD, - (q15_t)0x8738, (q15_t)0xD59E, (q15_t)0x8749, (q15_t)0xD56E, - (q15_t)0x8759, (q15_t)0xD53F, (q15_t)0x876A, (q15_t)0xD510, - (q15_t)0x877B, (q15_t)0xD4E0, (q15_t)0x878C, (q15_t)0xD4B1, - (q15_t)0x879D, (q15_t)0xD482, (q15_t)0x87AE, (q15_t)0xD452, - (q15_t)0x87BF, (q15_t)0xD423, (q15_t)0x87D1, (q15_t)0xD3F4, - (q15_t)0x87E2, (q15_t)0xD3C5, (q15_t)0x87F3, (q15_t)0xD396, - (q15_t)0x8805, (q15_t)0xD367, (q15_t)0x8816, (q15_t)0xD337, - (q15_t)0x8828, (q15_t)0xD308, (q15_t)0x883A, (q15_t)0xD2D9, - (q15_t)0x884B, (q15_t)0xD2AA, (q15_t)0x885D, (q15_t)0xD27B, - (q15_t)0x886F, (q15_t)0xD24C, (q15_t)0x8881, (q15_t)0xD21D, - (q15_t)0x8893, (q15_t)0xD1EE, (q15_t)0x88A5, (q15_t)0xD1C0, - (q15_t)0x88B8, (q15_t)0xD191, (q15_t)0x88CA, (q15_t)0xD162, - (q15_t)0x88DC, (q15_t)0xD133, (q15_t)0x88EF, (q15_t)0xD104, - (q15_t)0x8901, (q15_t)0xD0D6, (q15_t)0x8914, (q15_t)0xD0A7, - (q15_t)0x8926, (q15_t)0xD078, (q15_t)0x8939, (q15_t)0xD04A, - (q15_t)0x894C, (q15_t)0xD01B, (q15_t)0x895F, (q15_t)0xCFEC, - (q15_t)0x8971, (q15_t)0xCFBE, (q15_t)0x8984, (q15_t)0xCF8F, - (q15_t)0x8997, (q15_t)0xCF61, (q15_t)0x89AB, (q15_t)0xCF32, - (q15_t)0x89BE, (q15_t)0xCF04, (q15_t)0x89D1, (q15_t)0xCED5, - (q15_t)0x89E4, (q15_t)0xCEA7, (q15_t)0x89F8, (q15_t)0xCE79, - (q15_t)0x8A0B, (q15_t)0xCE4A, (q15_t)0x8A1F, (q15_t)0xCE1C, - (q15_t)0x8A33, (q15_t)0xCDEE, (q15_t)0x8A46, (q15_t)0xCDBF, - (q15_t)0x8A5A, (q15_t)0xCD91, (q15_t)0x8A6E, (q15_t)0xCD63, - (q15_t)0x8A82, (q15_t)0xCD35, (q15_t)0x8A96, (q15_t)0xCD07, - (q15_t)0x8AAA, (q15_t)0xCCD9, (q15_t)0x8ABE, (q15_t)0xCCAB, - (q15_t)0x8AD2, (q15_t)0xCC7D, (q15_t)0x8AE6, (q15_t)0xCC4F, - (q15_t)0x8AFB, (q15_t)0xCC21, (q15_t)0x8B0F, (q15_t)0xCBF3, - (q15_t)0x8B24, (q15_t)0xCBC5, (q15_t)0x8B38, (q15_t)0xCB97, - (q15_t)0x8B4D, (q15_t)0xCB69, (q15_t)0x8B61, (q15_t)0xCB3B, - (q15_t)0x8B76, (q15_t)0xCB0D, (q15_t)0x8B8B, (q15_t)0xCAE0, - (q15_t)0x8BA0, (q15_t)0xCAB2, (q15_t)0x8BB5, (q15_t)0xCA84, - (q15_t)0x8BCA, (q15_t)0xCA57, (q15_t)0x8BDF, (q15_t)0xCA29, - (q15_t)0x8BF4, (q15_t)0xC9FB, (q15_t)0x8C09, (q15_t)0xC9CE, - (q15_t)0x8C1F, (q15_t)0xC9A0, (q15_t)0x8C34, (q15_t)0xC973, - (q15_t)0x8C4A, (q15_t)0xC945, (q15_t)0x8C5F, (q15_t)0xC918, - (q15_t)0x8C75, (q15_t)0xC8EB, (q15_t)0x8C8A, (q15_t)0xC8BD, - (q15_t)0x8CA0, (q15_t)0xC890, (q15_t)0x8CB6, (q15_t)0xC863, - (q15_t)0x8CCC, (q15_t)0xC835, (q15_t)0x8CE2, (q15_t)0xC808, - (q15_t)0x8CF8, (q15_t)0xC7DB, (q15_t)0x8D0E, (q15_t)0xC7AE, - (q15_t)0x8D24, (q15_t)0xC781, (q15_t)0x8D3A, (q15_t)0xC754, - (q15_t)0x8D50, (q15_t)0xC727, (q15_t)0x8D67, (q15_t)0xC6F9, - (q15_t)0x8D7D, (q15_t)0xC6CD, (q15_t)0x8D94, (q15_t)0xC6A0, - (q15_t)0x8DAA, (q15_t)0xC673, (q15_t)0x8DC1, (q15_t)0xC646, - (q15_t)0x8DD8, (q15_t)0xC619, (q15_t)0x8DEE, (q15_t)0xC5EC, - (q15_t)0x8E05, (q15_t)0xC5BF, (q15_t)0x8E1C, (q15_t)0xC593, - (q15_t)0x8E33, (q15_t)0xC566, (q15_t)0x8E4A, (q15_t)0xC539, - (q15_t)0x8E61, (q15_t)0xC50D, (q15_t)0x8E79, (q15_t)0xC4E0, - (q15_t)0x8E90, (q15_t)0xC4B3, (q15_t)0x8EA7, (q15_t)0xC487, - (q15_t)0x8EBE, (q15_t)0xC45A, (q15_t)0x8ED6, (q15_t)0xC42E, - (q15_t)0x8EED, (q15_t)0xC402, (q15_t)0x8F05, (q15_t)0xC3D5, - (q15_t)0x8F1D, (q15_t)0xC3A9, (q15_t)0x8F34, (q15_t)0xC37C, - (q15_t)0x8F4C, (q15_t)0xC350, (q15_t)0x8F64, (q15_t)0xC324, - (q15_t)0x8F7C, (q15_t)0xC2F8, (q15_t)0x8F94, (q15_t)0xC2CC, - (q15_t)0x8FAC, (q15_t)0xC29F, (q15_t)0x8FC4, (q15_t)0xC273, - (q15_t)0x8FDC, (q15_t)0xC247, (q15_t)0x8FF5, (q15_t)0xC21B, - (q15_t)0x900D, (q15_t)0xC1EF, (q15_t)0x9025, (q15_t)0xC1C3, - (q15_t)0x903E, (q15_t)0xC197, (q15_t)0x9056, (q15_t)0xC16C, - (q15_t)0x906F, (q15_t)0xC140, (q15_t)0x9088, (q15_t)0xC114, - (q15_t)0x90A0, (q15_t)0xC0E8, (q15_t)0x90B9, (q15_t)0xC0BC, - (q15_t)0x90D2, (q15_t)0xC091, (q15_t)0x90EB, (q15_t)0xC065, - (q15_t)0x9104, (q15_t)0xC03A, (q15_t)0x911D, (q15_t)0xC00E, - (q15_t)0x9136, (q15_t)0xBFE2, (q15_t)0x9150, (q15_t)0xBFB7, - (q15_t)0x9169, (q15_t)0xBF8C, (q15_t)0x9182, (q15_t)0xBF60, - (q15_t)0x919C, (q15_t)0xBF35, (q15_t)0x91B5, (q15_t)0xBF09, - (q15_t)0x91CF, (q15_t)0xBEDE, (q15_t)0x91E8, (q15_t)0xBEB3, - (q15_t)0x9202, (q15_t)0xBE88, (q15_t)0x921C, (q15_t)0xBE5D, - (q15_t)0x9235, (q15_t)0xBE31, (q15_t)0x924F, (q15_t)0xBE06, - (q15_t)0x9269, (q15_t)0xBDDB, (q15_t)0x9283, (q15_t)0xBDB0, - (q15_t)0x929D, (q15_t)0xBD85, (q15_t)0x92B7, (q15_t)0xBD5A, - (q15_t)0x92D2, (q15_t)0xBD2F, (q15_t)0x92EC, (q15_t)0xBD05, - (q15_t)0x9306, (q15_t)0xBCDA, (q15_t)0x9321, (q15_t)0xBCAF, - (q15_t)0x933B, (q15_t)0xBC84, (q15_t)0x9356, (q15_t)0xBC5A, - (q15_t)0x9370, (q15_t)0xBC2F, (q15_t)0x938B, (q15_t)0xBC04, - (q15_t)0x93A6, (q15_t)0xBBDA, (q15_t)0x93C0, (q15_t)0xBBAF, - (q15_t)0x93DB, (q15_t)0xBB85, (q15_t)0x93F6, (q15_t)0xBB5A, - (q15_t)0x9411, (q15_t)0xBB30, (q15_t)0x942C, (q15_t)0xBB05, - (q15_t)0x9447, (q15_t)0xBADB, (q15_t)0x9463, (q15_t)0xBAB1, - (q15_t)0x947E, (q15_t)0xBA87, (q15_t)0x9499, (q15_t)0xBA5C, - (q15_t)0x94B5, (q15_t)0xBA32, (q15_t)0x94D0, (q15_t)0xBA08, - (q15_t)0x94EC, (q15_t)0xB9DE, (q15_t)0x9507, (q15_t)0xB9B4, - (q15_t)0x9523, (q15_t)0xB98A, (q15_t)0x953E, (q15_t)0xB960, - (q15_t)0x955A, (q15_t)0xB936, (q15_t)0x9576, (q15_t)0xB90C, - (q15_t)0x9592, (q15_t)0xB8E3, (q15_t)0x95AE, (q15_t)0xB8B9, - (q15_t)0x95CA, (q15_t)0xB88F, (q15_t)0x95E6, (q15_t)0xB865, - (q15_t)0x9602, (q15_t)0xB83C, (q15_t)0x961E, (q15_t)0xB812, - (q15_t)0x963B, (q15_t)0xB7E9, (q15_t)0x9657, (q15_t)0xB7BF, - (q15_t)0x9673, (q15_t)0xB796, (q15_t)0x9690, (q15_t)0xB76C, - (q15_t)0x96AC, (q15_t)0xB743, (q15_t)0x96C9, (q15_t)0xB719, - (q15_t)0x96E6, (q15_t)0xB6F0, (q15_t)0x9702, (q15_t)0xB6C7, - (q15_t)0x971F, (q15_t)0xB69E, (q15_t)0x973C, (q15_t)0xB675, - (q15_t)0x9759, (q15_t)0xB64B, (q15_t)0x9776, (q15_t)0xB622, - (q15_t)0x9793, (q15_t)0xB5F9, (q15_t)0x97B0, (q15_t)0xB5D0, - (q15_t)0x97CD, (q15_t)0xB5A7, (q15_t)0x97EA, (q15_t)0xB57E, - (q15_t)0x9808, (q15_t)0xB556, (q15_t)0x9825, (q15_t)0xB52D, - (q15_t)0x9842, (q15_t)0xB504, (q15_t)0x9860, (q15_t)0xB4DB, - (q15_t)0x987D, (q15_t)0xB4B3, (q15_t)0x989B, (q15_t)0xB48A, - (q15_t)0x98B9, (q15_t)0xB461, (q15_t)0x98D6, (q15_t)0xB439, - (q15_t)0x98F4, (q15_t)0xB410, (q15_t)0x9912, (q15_t)0xB3E8, - (q15_t)0x9930, (q15_t)0xB3C0, (q15_t)0x994E, (q15_t)0xB397, - (q15_t)0x996C, (q15_t)0xB36F, (q15_t)0x998A, (q15_t)0xB347, - (q15_t)0x99A8, (q15_t)0xB31E, (q15_t)0x99C6, (q15_t)0xB2F6, - (q15_t)0x99E5, (q15_t)0xB2CE, (q15_t)0x9A03, (q15_t)0xB2A6, - (q15_t)0x9A22, (q15_t)0xB27E, (q15_t)0x9A40, (q15_t)0xB256, - (q15_t)0x9A5F, (q15_t)0xB22E, (q15_t)0x9A7D, (q15_t)0xB206, - (q15_t)0x9A9C, (q15_t)0xB1DE, (q15_t)0x9ABA, (q15_t)0xB1B7, - (q15_t)0x9AD9, (q15_t)0xB18F, (q15_t)0x9AF8, (q15_t)0xB167, - (q15_t)0x9B17, (q15_t)0xB140, (q15_t)0x9B36, (q15_t)0xB118, - (q15_t)0x9B55, (q15_t)0xB0F0, (q15_t)0x9B74, (q15_t)0xB0C9, - (q15_t)0x9B93, (q15_t)0xB0A1, (q15_t)0x9BB2, (q15_t)0xB07A, - (q15_t)0x9BD2, (q15_t)0xB053, (q15_t)0x9BF1, (q15_t)0xB02B, - (q15_t)0x9C10, (q15_t)0xB004, (q15_t)0x9C30, (q15_t)0xAFDD, - (q15_t)0x9C4F, (q15_t)0xAFB6, (q15_t)0x9C6F, (q15_t)0xAF8F, - (q15_t)0x9C8E, (q15_t)0xAF68, (q15_t)0x9CAE, (q15_t)0xAF40, - (q15_t)0x9CCE, (q15_t)0xAF1A, (q15_t)0x9CEE, (q15_t)0xAEF3, - (q15_t)0x9D0D, (q15_t)0xAECC, (q15_t)0x9D2D, (q15_t)0xAEA5, - (q15_t)0x9D4D, (q15_t)0xAE7E, (q15_t)0x9D6D, (q15_t)0xAE57, - (q15_t)0x9D8E, (q15_t)0xAE31, (q15_t)0x9DAE, (q15_t)0xAE0A, - (q15_t)0x9DCE, (q15_t)0xADE3, (q15_t)0x9DEE, (q15_t)0xADBD, - (q15_t)0x9E0E, (q15_t)0xAD96, (q15_t)0x9E2F, (q15_t)0xAD70, - (q15_t)0x9E4F, (q15_t)0xAD4A, (q15_t)0x9E70, (q15_t)0xAD23, - (q15_t)0x9E90, (q15_t)0xACFD, (q15_t)0x9EB1, (q15_t)0xACD7, - (q15_t)0x9ED2, (q15_t)0xACB1, (q15_t)0x9EF2, (q15_t)0xAC8A, - (q15_t)0x9F13, (q15_t)0xAC64, (q15_t)0x9F34, (q15_t)0xAC3E, - (q15_t)0x9F55, (q15_t)0xAC18, (q15_t)0x9F76, (q15_t)0xABF2, - (q15_t)0x9F97, (q15_t)0xABCC, (q15_t)0x9FB8, (q15_t)0xABA7, - (q15_t)0x9FD9, (q15_t)0xAB81, (q15_t)0x9FFB, (q15_t)0xAB5B, - (q15_t)0xA01C, (q15_t)0xAB35, (q15_t)0xA03D, (q15_t)0xAB10, - (q15_t)0xA05F, (q15_t)0xAAEA, (q15_t)0xA080, (q15_t)0xAAC5, - (q15_t)0xA0A1, (q15_t)0xAA9F, (q15_t)0xA0C3, (q15_t)0xAA7A, - (q15_t)0xA0E5, (q15_t)0xAA54, (q15_t)0xA106, (q15_t)0xAA2F, - (q15_t)0xA128, (q15_t)0xAA0A, (q15_t)0xA14A, (q15_t)0xA9E5, - (q15_t)0xA16C, (q15_t)0xA9BF, (q15_t)0xA18E, (q15_t)0xA99A, - (q15_t)0xA1AF, (q15_t)0xA975, (q15_t)0xA1D2, (q15_t)0xA950, - (q15_t)0xA1F4, (q15_t)0xA92B, (q15_t)0xA216, (q15_t)0xA906, - (q15_t)0xA238, (q15_t)0xA8E2, (q15_t)0xA25A, (q15_t)0xA8BD, - (q15_t)0xA27C, (q15_t)0xA898, (q15_t)0xA29F, (q15_t)0xA873, - (q15_t)0xA2C1, (q15_t)0xA84F, (q15_t)0xA2E4, (q15_t)0xA82A, - (q15_t)0xA306, (q15_t)0xA806, (q15_t)0xA329, (q15_t)0xA7E1, - (q15_t)0xA34B, (q15_t)0xA7BD, (q15_t)0xA36E, (q15_t)0xA798, - (q15_t)0xA391, (q15_t)0xA774, (q15_t)0xA3B4, (q15_t)0xA750, - (q15_t)0xA3D6, (q15_t)0xA72B, (q15_t)0xA3F9, (q15_t)0xA707, - (q15_t)0xA41C, (q15_t)0xA6E3, (q15_t)0xA43F, (q15_t)0xA6BF, - (q15_t)0xA462, (q15_t)0xA69B, (q15_t)0xA486, (q15_t)0xA677, - (q15_t)0xA4A9, (q15_t)0xA653, (q15_t)0xA4CC, (q15_t)0xA62F, - (q15_t)0xA4EF, (q15_t)0xA60C, (q15_t)0xA513, (q15_t)0xA5E8, - (q15_t)0xA536, (q15_t)0xA5C4, (q15_t)0xA55A, (q15_t)0xA5A1, - (q15_t)0xA57D, (q15_t)0xA57D, (q15_t)0xA5A1, (q15_t)0xA55A, - (q15_t)0xA5C4, (q15_t)0xA536, (q15_t)0xA5E8, (q15_t)0xA513, - (q15_t)0xA60C, (q15_t)0xA4EF, (q15_t)0xA62F, (q15_t)0xA4CC, - (q15_t)0xA653, (q15_t)0xA4A9, (q15_t)0xA677, (q15_t)0xA486, - (q15_t)0xA69B, (q15_t)0xA462, (q15_t)0xA6BF, (q15_t)0xA43F, - (q15_t)0xA6E3, (q15_t)0xA41C, (q15_t)0xA707, (q15_t)0xA3F9, - (q15_t)0xA72B, (q15_t)0xA3D6, (q15_t)0xA750, (q15_t)0xA3B4, - (q15_t)0xA774, (q15_t)0xA391, (q15_t)0xA798, (q15_t)0xA36E, - (q15_t)0xA7BD, (q15_t)0xA34B, (q15_t)0xA7E1, (q15_t)0xA329, - (q15_t)0xA806, (q15_t)0xA306, (q15_t)0xA82A, (q15_t)0xA2E4, - (q15_t)0xA84F, (q15_t)0xA2C1, (q15_t)0xA873, (q15_t)0xA29F, - (q15_t)0xA898, (q15_t)0xA27C, (q15_t)0xA8BD, (q15_t)0xA25A, - (q15_t)0xA8E2, (q15_t)0xA238, (q15_t)0xA906, (q15_t)0xA216, - (q15_t)0xA92B, (q15_t)0xA1F4, (q15_t)0xA950, (q15_t)0xA1D2, - (q15_t)0xA975, (q15_t)0xA1AF, (q15_t)0xA99A, (q15_t)0xA18E, - (q15_t)0xA9BF, (q15_t)0xA16C, (q15_t)0xA9E5, (q15_t)0xA14A, - (q15_t)0xAA0A, (q15_t)0xA128, (q15_t)0xAA2F, (q15_t)0xA106, - (q15_t)0xAA54, (q15_t)0xA0E5, (q15_t)0xAA7A, (q15_t)0xA0C3, - (q15_t)0xAA9F, (q15_t)0xA0A1, (q15_t)0xAAC5, (q15_t)0xA080, - (q15_t)0xAAEA, (q15_t)0xA05F, (q15_t)0xAB10, (q15_t)0xA03D, - (q15_t)0xAB35, (q15_t)0xA01C, (q15_t)0xAB5B, (q15_t)0x9FFB, - (q15_t)0xAB81, (q15_t)0x9FD9, (q15_t)0xABA7, (q15_t)0x9FB8, - (q15_t)0xABCC, (q15_t)0x9F97, (q15_t)0xABF2, (q15_t)0x9F76, - (q15_t)0xAC18, (q15_t)0x9F55, (q15_t)0xAC3E, (q15_t)0x9F34, - (q15_t)0xAC64, (q15_t)0x9F13, (q15_t)0xAC8A, (q15_t)0x9EF2, - (q15_t)0xACB1, (q15_t)0x9ED2, (q15_t)0xACD7, (q15_t)0x9EB1, - (q15_t)0xACFD, (q15_t)0x9E90, (q15_t)0xAD23, (q15_t)0x9E70, - (q15_t)0xAD4A, (q15_t)0x9E4F, (q15_t)0xAD70, (q15_t)0x9E2F, - (q15_t)0xAD96, (q15_t)0x9E0E, (q15_t)0xADBD, (q15_t)0x9DEE, - (q15_t)0xADE3, (q15_t)0x9DCE, (q15_t)0xAE0A, (q15_t)0x9DAE, - (q15_t)0xAE31, (q15_t)0x9D8E, (q15_t)0xAE57, (q15_t)0x9D6D, - (q15_t)0xAE7E, (q15_t)0x9D4D, (q15_t)0xAEA5, (q15_t)0x9D2D, - (q15_t)0xAECC, (q15_t)0x9D0D, (q15_t)0xAEF3, (q15_t)0x9CEE, - (q15_t)0xAF1A, (q15_t)0x9CCE, (q15_t)0xAF40, (q15_t)0x9CAE, - (q15_t)0xAF68, (q15_t)0x9C8E, (q15_t)0xAF8F, (q15_t)0x9C6F, - (q15_t)0xAFB6, (q15_t)0x9C4F, (q15_t)0xAFDD, (q15_t)0x9C30, - (q15_t)0xB004, (q15_t)0x9C10, (q15_t)0xB02B, (q15_t)0x9BF1, - (q15_t)0xB053, (q15_t)0x9BD2, (q15_t)0xB07A, (q15_t)0x9BB2, - (q15_t)0xB0A1, (q15_t)0x9B93, (q15_t)0xB0C9, (q15_t)0x9B74, - (q15_t)0xB0F0, (q15_t)0x9B55, (q15_t)0xB118, (q15_t)0x9B36, - (q15_t)0xB140, (q15_t)0x9B17, (q15_t)0xB167, (q15_t)0x9AF8, - (q15_t)0xB18F, (q15_t)0x9AD9, (q15_t)0xB1B7, (q15_t)0x9ABA, - (q15_t)0xB1DE, (q15_t)0x9A9C, (q15_t)0xB206, (q15_t)0x9A7D, - (q15_t)0xB22E, (q15_t)0x9A5F, (q15_t)0xB256, (q15_t)0x9A40, - (q15_t)0xB27E, (q15_t)0x9A22, (q15_t)0xB2A6, (q15_t)0x9A03, - (q15_t)0xB2CE, (q15_t)0x99E5, (q15_t)0xB2F6, (q15_t)0x99C6, - (q15_t)0xB31E, (q15_t)0x99A8, (q15_t)0xB347, (q15_t)0x998A, - (q15_t)0xB36F, (q15_t)0x996C, (q15_t)0xB397, (q15_t)0x994E, - (q15_t)0xB3C0, (q15_t)0x9930, (q15_t)0xB3E8, (q15_t)0x9912, - (q15_t)0xB410, (q15_t)0x98F4, (q15_t)0xB439, (q15_t)0x98D6, - (q15_t)0xB461, (q15_t)0x98B9, (q15_t)0xB48A, (q15_t)0x989B, - (q15_t)0xB4B3, (q15_t)0x987D, (q15_t)0xB4DB, (q15_t)0x9860, - (q15_t)0xB504, (q15_t)0x9842, (q15_t)0xB52D, (q15_t)0x9825, - (q15_t)0xB556, (q15_t)0x9808, (q15_t)0xB57E, (q15_t)0x97EA, - (q15_t)0xB5A7, (q15_t)0x97CD, (q15_t)0xB5D0, (q15_t)0x97B0, - (q15_t)0xB5F9, (q15_t)0x9793, (q15_t)0xB622, (q15_t)0x9776, - (q15_t)0xB64B, (q15_t)0x9759, (q15_t)0xB675, (q15_t)0x973C, - (q15_t)0xB69E, (q15_t)0x971F, (q15_t)0xB6C7, (q15_t)0x9702, - (q15_t)0xB6F0, (q15_t)0x96E6, (q15_t)0xB719, (q15_t)0x96C9, - (q15_t)0xB743, (q15_t)0x96AC, (q15_t)0xB76C, (q15_t)0x9690, - (q15_t)0xB796, (q15_t)0x9673, (q15_t)0xB7BF, (q15_t)0x9657, - (q15_t)0xB7E9, (q15_t)0x963B, (q15_t)0xB812, (q15_t)0x961E, - (q15_t)0xB83C, (q15_t)0x9602, (q15_t)0xB865, (q15_t)0x95E6, - (q15_t)0xB88F, (q15_t)0x95CA, (q15_t)0xB8B9, (q15_t)0x95AE, - (q15_t)0xB8E3, (q15_t)0x9592, (q15_t)0xB90C, (q15_t)0x9576, - (q15_t)0xB936, (q15_t)0x955A, (q15_t)0xB960, (q15_t)0x953E, - (q15_t)0xB98A, (q15_t)0x9523, (q15_t)0xB9B4, (q15_t)0x9507, - (q15_t)0xB9DE, (q15_t)0x94EC, (q15_t)0xBA08, (q15_t)0x94D0, - (q15_t)0xBA32, (q15_t)0x94B5, (q15_t)0xBA5C, (q15_t)0x9499, - (q15_t)0xBA87, (q15_t)0x947E, (q15_t)0xBAB1, (q15_t)0x9463, - (q15_t)0xBADB, (q15_t)0x9447, (q15_t)0xBB05, (q15_t)0x942C, - (q15_t)0xBB30, (q15_t)0x9411, (q15_t)0xBB5A, (q15_t)0x93F6, - (q15_t)0xBB85, (q15_t)0x93DB, (q15_t)0xBBAF, (q15_t)0x93C0, - (q15_t)0xBBDA, (q15_t)0x93A6, (q15_t)0xBC04, (q15_t)0x938B, - (q15_t)0xBC2F, (q15_t)0x9370, (q15_t)0xBC5A, (q15_t)0x9356, - (q15_t)0xBC84, (q15_t)0x933B, (q15_t)0xBCAF, (q15_t)0x9321, - (q15_t)0xBCDA, (q15_t)0x9306, (q15_t)0xBD05, (q15_t)0x92EC, - (q15_t)0xBD2F, (q15_t)0x92D2, (q15_t)0xBD5A, (q15_t)0x92B7, - (q15_t)0xBD85, (q15_t)0x929D, (q15_t)0xBDB0, (q15_t)0x9283, - (q15_t)0xBDDB, (q15_t)0x9269, (q15_t)0xBE06, (q15_t)0x924F, - (q15_t)0xBE31, (q15_t)0x9235, (q15_t)0xBE5D, (q15_t)0x921C, - (q15_t)0xBE88, (q15_t)0x9202, (q15_t)0xBEB3, (q15_t)0x91E8, - (q15_t)0xBEDE, (q15_t)0x91CF, (q15_t)0xBF09, (q15_t)0x91B5, - (q15_t)0xBF35, (q15_t)0x919C, (q15_t)0xBF60, (q15_t)0x9182, - (q15_t)0xBF8C, (q15_t)0x9169, (q15_t)0xBFB7, (q15_t)0x9150, - (q15_t)0xBFE2, (q15_t)0x9136, (q15_t)0xC00E, (q15_t)0x911D, - (q15_t)0xC03A, (q15_t)0x9104, (q15_t)0xC065, (q15_t)0x90EB, - (q15_t)0xC091, (q15_t)0x90D2, (q15_t)0xC0BC, (q15_t)0x90B9, - (q15_t)0xC0E8, (q15_t)0x90A0, (q15_t)0xC114, (q15_t)0x9088, - (q15_t)0xC140, (q15_t)0x906F, (q15_t)0xC16C, (q15_t)0x9056, - (q15_t)0xC197, (q15_t)0x903E, (q15_t)0xC1C3, (q15_t)0x9025, - (q15_t)0xC1EF, (q15_t)0x900D, (q15_t)0xC21B, (q15_t)0x8FF5, - (q15_t)0xC247, (q15_t)0x8FDC, (q15_t)0xC273, (q15_t)0x8FC4, - (q15_t)0xC29F, (q15_t)0x8FAC, (q15_t)0xC2CC, (q15_t)0x8F94, - (q15_t)0xC2F8, (q15_t)0x8F7C, (q15_t)0xC324, (q15_t)0x8F64, - (q15_t)0xC350, (q15_t)0x8F4C, (q15_t)0xC37C, (q15_t)0x8F34, - (q15_t)0xC3A9, (q15_t)0x8F1D, (q15_t)0xC3D5, (q15_t)0x8F05, - (q15_t)0xC402, (q15_t)0x8EED, (q15_t)0xC42E, (q15_t)0x8ED6, - (q15_t)0xC45A, (q15_t)0x8EBE, (q15_t)0xC487, (q15_t)0x8EA7, - (q15_t)0xC4B3, (q15_t)0x8E90, (q15_t)0xC4E0, (q15_t)0x8E79, - (q15_t)0xC50D, (q15_t)0x8E61, (q15_t)0xC539, (q15_t)0x8E4A, - (q15_t)0xC566, (q15_t)0x8E33, (q15_t)0xC593, (q15_t)0x8E1C, - (q15_t)0xC5BF, (q15_t)0x8E05, (q15_t)0xC5EC, (q15_t)0x8DEE, - (q15_t)0xC619, (q15_t)0x8DD8, (q15_t)0xC646, (q15_t)0x8DC1, - (q15_t)0xC673, (q15_t)0x8DAA, (q15_t)0xC6A0, (q15_t)0x8D94, - (q15_t)0xC6CD, (q15_t)0x8D7D, (q15_t)0xC6F9, (q15_t)0x8D67, - (q15_t)0xC727, (q15_t)0x8D50, (q15_t)0xC754, (q15_t)0x8D3A, - (q15_t)0xC781, (q15_t)0x8D24, (q15_t)0xC7AE, (q15_t)0x8D0E, - (q15_t)0xC7DB, (q15_t)0x8CF8, (q15_t)0xC808, (q15_t)0x8CE2, - (q15_t)0xC835, (q15_t)0x8CCC, (q15_t)0xC863, (q15_t)0x8CB6, - (q15_t)0xC890, (q15_t)0x8CA0, (q15_t)0xC8BD, (q15_t)0x8C8A, - (q15_t)0xC8EB, (q15_t)0x8C75, (q15_t)0xC918, (q15_t)0x8C5F, - (q15_t)0xC945, (q15_t)0x8C4A, (q15_t)0xC973, (q15_t)0x8C34, - (q15_t)0xC9A0, (q15_t)0x8C1F, (q15_t)0xC9CE, (q15_t)0x8C09, - (q15_t)0xC9FB, (q15_t)0x8BF4, (q15_t)0xCA29, (q15_t)0x8BDF, - (q15_t)0xCA57, (q15_t)0x8BCA, (q15_t)0xCA84, (q15_t)0x8BB5, - (q15_t)0xCAB2, (q15_t)0x8BA0, (q15_t)0xCAE0, (q15_t)0x8B8B, - (q15_t)0xCB0D, (q15_t)0x8B76, (q15_t)0xCB3B, (q15_t)0x8B61, - (q15_t)0xCB69, (q15_t)0x8B4D, (q15_t)0xCB97, (q15_t)0x8B38, - (q15_t)0xCBC5, (q15_t)0x8B24, (q15_t)0xCBF3, (q15_t)0x8B0F, - (q15_t)0xCC21, (q15_t)0x8AFB, (q15_t)0xCC4F, (q15_t)0x8AE6, - (q15_t)0xCC7D, (q15_t)0x8AD2, (q15_t)0xCCAB, (q15_t)0x8ABE, - (q15_t)0xCCD9, (q15_t)0x8AAA, (q15_t)0xCD07, (q15_t)0x8A96, - (q15_t)0xCD35, (q15_t)0x8A82, (q15_t)0xCD63, (q15_t)0x8A6E, - (q15_t)0xCD91, (q15_t)0x8A5A, (q15_t)0xCDBF, (q15_t)0x8A46, - (q15_t)0xCDEE, (q15_t)0x8A33, (q15_t)0xCE1C, (q15_t)0x8A1F, - (q15_t)0xCE4A, (q15_t)0x8A0B, (q15_t)0xCE79, (q15_t)0x89F8, - (q15_t)0xCEA7, (q15_t)0x89E4, (q15_t)0xCED5, (q15_t)0x89D1, - (q15_t)0xCF04, (q15_t)0x89BE, (q15_t)0xCF32, (q15_t)0x89AB, - (q15_t)0xCF61, (q15_t)0x8997, (q15_t)0xCF8F, (q15_t)0x8984, - (q15_t)0xCFBE, (q15_t)0x8971, (q15_t)0xCFEC, (q15_t)0x895F, - (q15_t)0xD01B, (q15_t)0x894C, (q15_t)0xD04A, (q15_t)0x8939, - (q15_t)0xD078, (q15_t)0x8926, (q15_t)0xD0A7, (q15_t)0x8914, - (q15_t)0xD0D6, (q15_t)0x8901, (q15_t)0xD104, (q15_t)0x88EF, - (q15_t)0xD133, (q15_t)0x88DC, (q15_t)0xD162, (q15_t)0x88CA, - (q15_t)0xD191, (q15_t)0x88B8, (q15_t)0xD1C0, (q15_t)0x88A5, - (q15_t)0xD1EE, (q15_t)0x8893, (q15_t)0xD21D, (q15_t)0x8881, - (q15_t)0xD24C, (q15_t)0x886F, (q15_t)0xD27B, (q15_t)0x885D, - (q15_t)0xD2AA, (q15_t)0x884B, (q15_t)0xD2D9, (q15_t)0x883A, - (q15_t)0xD308, (q15_t)0x8828, (q15_t)0xD337, (q15_t)0x8816, - (q15_t)0xD367, (q15_t)0x8805, (q15_t)0xD396, (q15_t)0x87F3, - (q15_t)0xD3C5, (q15_t)0x87E2, (q15_t)0xD3F4, (q15_t)0x87D1, - (q15_t)0xD423, (q15_t)0x87BF, (q15_t)0xD452, (q15_t)0x87AE, - (q15_t)0xD482, (q15_t)0x879D, (q15_t)0xD4B1, (q15_t)0x878C, - (q15_t)0xD4E0, (q15_t)0x877B, (q15_t)0xD510, (q15_t)0x876A, - (q15_t)0xD53F, (q15_t)0x8759, (q15_t)0xD56E, (q15_t)0x8749, - (q15_t)0xD59E, (q15_t)0x8738, (q15_t)0xD5CD, (q15_t)0x8727, - (q15_t)0xD5FD, (q15_t)0x8717, (q15_t)0xD62C, (q15_t)0x8706, - (q15_t)0xD65C, (q15_t)0x86F6, (q15_t)0xD68B, (q15_t)0x86E6, - (q15_t)0xD6BB, (q15_t)0x86D5, (q15_t)0xD6EA, (q15_t)0x86C5, - (q15_t)0xD71A, (q15_t)0x86B5, (q15_t)0xD74A, (q15_t)0x86A5, - (q15_t)0xD779, (q15_t)0x8695, (q15_t)0xD7A9, (q15_t)0x8685, - (q15_t)0xD7D9, (q15_t)0x8675, (q15_t)0xD809, (q15_t)0x8666, - (q15_t)0xD838, (q15_t)0x8656, (q15_t)0xD868, (q15_t)0x8646, - (q15_t)0xD898, (q15_t)0x8637, (q15_t)0xD8C8, (q15_t)0x8627, - (q15_t)0xD8F8, (q15_t)0x8618, (q15_t)0xD927, (q15_t)0x8609, - (q15_t)0xD957, (q15_t)0x85FA, (q15_t)0xD987, (q15_t)0x85EA, - (q15_t)0xD9B7, (q15_t)0x85DB, (q15_t)0xD9E7, (q15_t)0x85CC, - (q15_t)0xDA17, (q15_t)0x85BD, (q15_t)0xDA47, (q15_t)0x85AF, - (q15_t)0xDA77, (q15_t)0x85A0, (q15_t)0xDAA7, (q15_t)0x8591, - (q15_t)0xDAD7, (q15_t)0x8582, (q15_t)0xDB08, (q15_t)0x8574, - (q15_t)0xDB38, (q15_t)0x8565, (q15_t)0xDB68, (q15_t)0x8557, - (q15_t)0xDB98, (q15_t)0x8549, (q15_t)0xDBC8, (q15_t)0x853A, - (q15_t)0xDBF8, (q15_t)0x852C, (q15_t)0xDC29, (q15_t)0x851E, - (q15_t)0xDC59, (q15_t)0x8510, (q15_t)0xDC89, (q15_t)0x8502, - (q15_t)0xDCBA, (q15_t)0x84F4, (q15_t)0xDCEA, (q15_t)0x84E6, - (q15_t)0xDD1A, (q15_t)0x84D9, (q15_t)0xDD4B, (q15_t)0x84CB, - (q15_t)0xDD7B, (q15_t)0x84BD, (q15_t)0xDDAB, (q15_t)0x84B0, - (q15_t)0xDDDC, (q15_t)0x84A2, (q15_t)0xDE0C, (q15_t)0x8495, - (q15_t)0xDE3D, (q15_t)0x8488, (q15_t)0xDE6D, (q15_t)0x847B, - (q15_t)0xDE9E, (q15_t)0x846D, (q15_t)0xDECE, (q15_t)0x8460, - (q15_t)0xDEFF, (q15_t)0x8453, (q15_t)0xDF2F, (q15_t)0x8446, - (q15_t)0xDF60, (q15_t)0x843A, (q15_t)0xDF91, (q15_t)0x842D, - (q15_t)0xDFC1, (q15_t)0x8420, (q15_t)0xDFF2, (q15_t)0x8414, - (q15_t)0xE023, (q15_t)0x8407, (q15_t)0xE053, (q15_t)0x83FA, - (q15_t)0xE084, (q15_t)0x83EE, (q15_t)0xE0B5, (q15_t)0x83E2, - (q15_t)0xE0E6, (q15_t)0x83D6, (q15_t)0xE116, (q15_t)0x83C9, - (q15_t)0xE147, (q15_t)0x83BD, (q15_t)0xE178, (q15_t)0x83B1, - (q15_t)0xE1A9, (q15_t)0x83A5, (q15_t)0xE1DA, (q15_t)0x8399, - (q15_t)0xE20A, (q15_t)0x838E, (q15_t)0xE23B, (q15_t)0x8382, - (q15_t)0xE26C, (q15_t)0x8376, (q15_t)0xE29D, (q15_t)0x836B, - (q15_t)0xE2CE, (q15_t)0x835F, (q15_t)0xE2FF, (q15_t)0x8354, - (q15_t)0xE330, (q15_t)0x8348, (q15_t)0xE361, (q15_t)0x833D, - (q15_t)0xE392, (q15_t)0x8332, (q15_t)0xE3C3, (q15_t)0x8327, - (q15_t)0xE3F4, (q15_t)0x831C, (q15_t)0xE425, (q15_t)0x8311, - (q15_t)0xE456, (q15_t)0x8306, (q15_t)0xE487, (q15_t)0x82FB, - (q15_t)0xE4B8, (q15_t)0x82F0, (q15_t)0xE4E9, (q15_t)0x82E6, - (q15_t)0xE51B, (q15_t)0x82DB, (q15_t)0xE54C, (q15_t)0x82D0, - (q15_t)0xE57D, (q15_t)0x82C6, (q15_t)0xE5AE, (q15_t)0x82BC, - (q15_t)0xE5DF, (q15_t)0x82B1, (q15_t)0xE610, (q15_t)0x82A7, - (q15_t)0xE642, (q15_t)0x829D, (q15_t)0xE673, (q15_t)0x8293, - (q15_t)0xE6A4, (q15_t)0x8289, (q15_t)0xE6D5, (q15_t)0x827F, - (q15_t)0xE707, (q15_t)0x8275, (q15_t)0xE738, (q15_t)0x826B, - (q15_t)0xE769, (q15_t)0x8262, (q15_t)0xE79B, (q15_t)0x8258, - (q15_t)0xE7CC, (q15_t)0x824F, (q15_t)0xE7FD, (q15_t)0x8245, - (q15_t)0xE82F, (q15_t)0x823C, (q15_t)0xE860, (q15_t)0x8232, - (q15_t)0xE892, (q15_t)0x8229, (q15_t)0xE8C3, (q15_t)0x8220, - (q15_t)0xE8F5, (q15_t)0x8217, (q15_t)0xE926, (q15_t)0x820E, - (q15_t)0xE957, (q15_t)0x8205, (q15_t)0xE989, (q15_t)0x81FC, - (q15_t)0xE9BA, (q15_t)0x81F3, (q15_t)0xE9EC, (q15_t)0x81EB, - (q15_t)0xEA1D, (q15_t)0x81E2, (q15_t)0xEA4F, (q15_t)0x81D9, - (q15_t)0xEA80, (q15_t)0x81D1, (q15_t)0xEAB2, (q15_t)0x81C8, - (q15_t)0xEAE4, (q15_t)0x81C0, (q15_t)0xEB15, (q15_t)0x81B8, - (q15_t)0xEB47, (q15_t)0x81B0, (q15_t)0xEB78, (q15_t)0x81A8, - (q15_t)0xEBAA, (q15_t)0x81A0, (q15_t)0xEBDC, (q15_t)0x8198, - (q15_t)0xEC0D, (q15_t)0x8190, (q15_t)0xEC3F, (q15_t)0x8188, - (q15_t)0xEC71, (q15_t)0x8180, (q15_t)0xECA2, (q15_t)0x8179, - (q15_t)0xECD4, (q15_t)0x8171, (q15_t)0xED06, (q15_t)0x816A, - (q15_t)0xED37, (q15_t)0x8162, (q15_t)0xED69, (q15_t)0x815B, - (q15_t)0xED9B, (q15_t)0x8154, (q15_t)0xEDCD, (q15_t)0x814C, - (q15_t)0xEDFE, (q15_t)0x8145, (q15_t)0xEE30, (q15_t)0x813E, - (q15_t)0xEE62, (q15_t)0x8137, (q15_t)0xEE94, (q15_t)0x8130, - (q15_t)0xEEC6, (q15_t)0x812A, (q15_t)0xEEF7, (q15_t)0x8123, - (q15_t)0xEF29, (q15_t)0x811C, (q15_t)0xEF5B, (q15_t)0x8116, - (q15_t)0xEF8D, (q15_t)0x810F, (q15_t)0xEFBF, (q15_t)0x8109, - (q15_t)0xEFF1, (q15_t)0x8102, (q15_t)0xF022, (q15_t)0x80FC, - (q15_t)0xF054, (q15_t)0x80F6, (q15_t)0xF086, (q15_t)0x80F0, - (q15_t)0xF0B8, (q15_t)0x80EA, (q15_t)0xF0EA, (q15_t)0x80E4, - (q15_t)0xF11C, (q15_t)0x80DE, (q15_t)0xF14E, (q15_t)0x80D8, - (q15_t)0xF180, (q15_t)0x80D2, (q15_t)0xF1B2, (q15_t)0x80CD, - (q15_t)0xF1E4, (q15_t)0x80C7, (q15_t)0xF216, (q15_t)0x80C2, - (q15_t)0xF248, (q15_t)0x80BC, (q15_t)0xF27A, (q15_t)0x80B7, - (q15_t)0xF2AC, (q15_t)0x80B2, (q15_t)0xF2DE, (q15_t)0x80AC, - (q15_t)0xF310, (q15_t)0x80A7, (q15_t)0xF342, (q15_t)0x80A2, - (q15_t)0xF374, (q15_t)0x809D, (q15_t)0xF3A6, (q15_t)0x8098, - (q15_t)0xF3D8, (q15_t)0x8094, (q15_t)0xF40A, (q15_t)0x808F, - (q15_t)0xF43C, (q15_t)0x808A, (q15_t)0xF46E, (q15_t)0x8086, - (q15_t)0xF4A0, (q15_t)0x8081, (q15_t)0xF4D2, (q15_t)0x807D, - (q15_t)0xF504, (q15_t)0x8078, (q15_t)0xF536, (q15_t)0x8074, - (q15_t)0xF568, (q15_t)0x8070, (q15_t)0xF59A, (q15_t)0x806C, - (q15_t)0xF5CC, (q15_t)0x8068, (q15_t)0xF5FF, (q15_t)0x8064, - (q15_t)0xF631, (q15_t)0x8060, (q15_t)0xF663, (q15_t)0x805C, - (q15_t)0xF695, (q15_t)0x8058, (q15_t)0xF6C7, (q15_t)0x8055, - (q15_t)0xF6F9, (q15_t)0x8051, (q15_t)0xF72B, (q15_t)0x804E, - (q15_t)0xF75D, (q15_t)0x804A, (q15_t)0xF790, (q15_t)0x8047, - (q15_t)0xF7C2, (q15_t)0x8043, (q15_t)0xF7F4, (q15_t)0x8040, - (q15_t)0xF826, (q15_t)0x803D, (q15_t)0xF858, (q15_t)0x803A, - (q15_t)0xF88A, (q15_t)0x8037, (q15_t)0xF8BD, (q15_t)0x8034, - (q15_t)0xF8EF, (q15_t)0x8031, (q15_t)0xF921, (q15_t)0x802F, - (q15_t)0xF953, (q15_t)0x802C, (q15_t)0xF985, (q15_t)0x8029, - (q15_t)0xF9B8, (q15_t)0x8027, (q15_t)0xF9EA, (q15_t)0x8025, - (q15_t)0xFA1C, (q15_t)0x8022, (q15_t)0xFA4E, (q15_t)0x8020, - (q15_t)0xFA80, (q15_t)0x801E, (q15_t)0xFAB3, (q15_t)0x801C, - (q15_t)0xFAE5, (q15_t)0x801A, (q15_t)0xFB17, (q15_t)0x8018, - (q15_t)0xFB49, (q15_t)0x8016, (q15_t)0xFB7C, (q15_t)0x8014, - (q15_t)0xFBAE, (q15_t)0x8012, (q15_t)0xFBE0, (q15_t)0x8011, - (q15_t)0xFC12, (q15_t)0x800F, (q15_t)0xFC45, (q15_t)0x800D, - (q15_t)0xFC77, (q15_t)0x800C, (q15_t)0xFCA9, (q15_t)0x800B, - (q15_t)0xFCDB, (q15_t)0x8009, (q15_t)0xFD0E, (q15_t)0x8008, - (q15_t)0xFD40, (q15_t)0x8007, (q15_t)0xFD72, (q15_t)0x8006, - (q15_t)0xFDA4, (q15_t)0x8005, (q15_t)0xFDD7, (q15_t)0x8004, - (q15_t)0xFE09, (q15_t)0x8003, (q15_t)0xFE3B, (q15_t)0x8003, - (q15_t)0xFE6D, (q15_t)0x8002, (q15_t)0xFEA0, (q15_t)0x8001, - (q15_t)0xFED2, (q15_t)0x8001, (q15_t)0xFF04, (q15_t)0x8000, - (q15_t)0xFF36, (q15_t)0x8000, (q15_t)0xFF69, (q15_t)0x8000, - (q15_t)0xFF9B, (q15_t)0x8000, (q15_t)0xFFCD, (q15_t)0x8000 -}; - - -/** -* @} end of CFFT_CIFFT group -*/ - -/* -* @brief Q15 table for reciprocal -*/ -const q15_t ALIGN4 armRecipTableQ15[64] = { - 0x7F03, 0x7D13, 0x7B31, 0x795E, 0x7798, 0x75E0, - 0x7434, 0x7294, 0x70FF, 0x6F76, 0x6DF6, 0x6C82, - 0x6B16, 0x69B5, 0x685C, 0x670C, 0x65C4, 0x6484, - 0x634C, 0x621C, 0x60F3, 0x5FD0, 0x5EB5, 0x5DA0, - 0x5C91, 0x5B88, 0x5A85, 0x5988, 0x5890, 0x579E, - 0x56B0, 0x55C8, 0x54E4, 0x5405, 0x532B, 0x5255, - 0x5183, 0x50B6, 0x4FEC, 0x4F26, 0x4E64, 0x4DA6, - 0x4CEC, 0x4C34, 0x4B81, 0x4AD0, 0x4A23, 0x4978, - 0x48D1, 0x482D, 0x478C, 0x46ED, 0x4651, 0x45B8, - 0x4521, 0x448D, 0x43FC, 0x436C, 0x42DF, 0x4255, - 0x41CC, 0x4146, 0x40C2, 0x4040 -}; - -/* -* @brief Q31 table for reciprocal -*/ -const q31_t armRecipTableQ31[64] = { - 0x7F03F03F, 0x7D137420, 0x7B31E739, 0x795E9F94, 0x7798FD29, 0x75E06928, - 0x7434554D, 0x72943B4B, 0x70FF9C40, 0x6F760031, 0x6DF6F593, 0x6C8210E3, - 0x6B16EC3A, 0x69B526F6, 0x685C655F, 0x670C505D, 0x65C4952D, 0x6484E519, - 0x634CF53E, 0x621C7E4F, 0x60F33C61, 0x5FD0EEB3, 0x5EB55785, 0x5DA03BEB, - 0x5C9163A1, 0x5B8898E6, 0x5A85A85A, 0x598860DF, 0x58909373, 0x579E1318, - 0x56B0B4B8, 0x55C84F0B, 0x54E4BA80, 0x5405D124, 0x532B6E8F, 0x52556FD0, - 0x5183B35A, 0x50B618F3, 0x4FEC81A2, 0x4F26CFA2, 0x4E64E64E, 0x4DA6AA1D, - 0x4CEC008B, 0x4C34D010, 0x4B810016, 0x4AD078EF, 0x4A2323C4, 0x4978EA96, - 0x48D1B827, 0x482D77FE, 0x478C1657, 0x46ED801D, 0x4651A2E5, 0x45B86CE2, - 0x4521CCE1, 0x448DB244, 0x43FC0CFA, 0x436CCD78, 0x42DFE4B4, 0x42554426, - 0x41CCDDB6, 0x4146A3C6, 0x40C28923, 0x40408102 -}; - -const uint16_t armBitRevIndexTable16[ARMBITREVINDEXTABLE_16_TABLE_LENGTH] = -{ - /* 8x2, size 20 */ - 8,64, 24,72, 16,64, 40,80, 32,64, 56,88, 48,72, 88,104, 72,96, 104,112 -}; - -const uint16_t armBitRevIndexTable32[ARMBITREVINDEXTABLE_32_TABLE_LENGTH] = -{ - /* 8x4, size 48 */ - 8,64, 16,128, 24,192, 32,64, 40,72, 48,136, 56,200, 64,128, 72,80, 88,208, - 80,144, 96,192, 104,208, 112,152, 120,216, 136,192, 144,160, 168,208, - 152,224, 176,208, 184,232, 216,240, 200,224, 232,240 -}; - -const uint16_t armBitRevIndexTable64[ARMBITREVINDEXTABLE_64_TABLE_LENGTH] = -{ - /* radix 8, size 56 */ - 8,64, 16,128, 24,192, 32,256, 40,320, 48,384, 56,448, 80,136, 88,200, - 96,264, 104,328, 112,392, 120,456, 152,208, 160,272, 168,336, 176,400, - 184,464, 224,280, 232,344, 240,408, 248,472, 296,352, 304,416, 312,480, - 368,424, 376,488, 440,496 -}; - -const uint16_t armBitRevIndexTable128[ARMBITREVINDEXTABLE_128_TABLE_LENGTH] = -{ - /* 8x2, size 208 */ - 8,512, 16,64, 24,576, 32,128, 40,640, 48,192, 56,704, 64,256, 72,768, - 80,320, 88,832, 96,384, 104,896, 112,448, 120,960, 128,512, 136,520, - 144,768, 152,584, 160,520, 168,648, 176,200, 184,712, 192,264, 200,776, - 208,328, 216,840, 224,392, 232,904, 240,456, 248,968, 264,528, 272,320, - 280,592, 288,768, 296,656, 304,328, 312,720, 328,784, 344,848, 352,400, - 360,912, 368,464, 376,976, 384,576, 392,536, 400,832, 408,600, 416,584, - 424,664, 432,840, 440,728, 448,592, 456,792, 464,848, 472,856, 480,600, - 488,920, 496,856, 504,984, 520,544, 528,576, 536,608, 552,672, 560,608, - 568,736, 576,768, 584,800, 592,832, 600,864, 608,800, 616,928, 624,864, - 632,992, 648,672, 656,896, 664,928, 688,904, 696,744, 704,896, 712,808, - 720,912, 728,872, 736,928, 744,936, 752,920, 760,1000, 776,800, 784,832, - 792,864, 808,904, 816,864, 824,920, 840,864, 856,880, 872,944, 888,1008, - 904,928, 912,960, 920,992, 944,968, 952,1000, 968,992, 984,1008 -}; - -const uint16_t armBitRevIndexTable256[ARMBITREVINDEXTABLE_256_TABLE_LENGTH] = -{ - /* 8x4, size 440 */ - 8,512, 16,1024, 24,1536, 32,64, 40,576, 48,1088, 56,1600, 64,128, 72,640, - 80,1152, 88,1664, 96,192, 104,704, 112,1216, 120,1728, 128,256, 136,768, - 144,1280, 152,1792, 160,320, 168,832, 176,1344, 184,1856, 192,384, - 200,896, 208,1408, 216,1920, 224,448, 232,960, 240,1472, 248,1984, - 256,512, 264,520, 272,1032, 280,1544, 288,640, 296,584, 304,1096, 312,1608, - 320,768, 328,648, 336,1160, 344,1672, 352,896, 360,712, 368,1224, 376,1736, - 384,520, 392,776, 400,1288, 408,1800, 416,648, 424,840, 432,1352, 440,1864, - 448,776, 456,904, 464,1416, 472,1928, 480,904, 488,968, 496,1480, 504,1992, - 520,528, 512,1024, 528,1040, 536,1552, 544,1152, 552,592, 560,1104, - 568,1616, 576,1280, 584,656, 592,1168, 600,1680, 608,1408, 616,720, - 624,1232, 632,1744, 640,1032, 648,784, 656,1296, 664,1808, 672,1160, - 680,848, 688,1360, 696,1872, 704,1288, 712,912, 720,1424, 728,1936, - 736,1416, 744,976, 752,1488, 760,2000, 768,1536, 776,1552, 784,1048, - 792,1560, 800,1664, 808,1680, 816,1112, 824,1624, 832,1792, 840,1808, - 848,1176, 856,1688, 864,1920, 872,1936, 880,1240, 888,1752, 896,1544, - 904,1560, 912,1304, 920,1816, 928,1672, 936,1688, 944,1368, 952,1880, - 960,1800, 968,1816, 976,1432, 984,1944, 992,1928, 1000,1944, 1008,1496, - 1016,2008, 1032,1152, 1040,1056, 1048,1568, 1064,1408, 1072,1120, - 1080,1632, 1088,1536, 1096,1160, 1104,1184, 1112,1696, 1120,1552, - 1128,1416, 1136,1248, 1144,1760, 1160,1664, 1168,1312, 1176,1824, - 1184,1544, 1192,1920, 1200,1376, 1208,1888, 1216,1568, 1224,1672, - 1232,1440, 1240,1952, 1248,1560, 1256,1928, 1264,1504, 1272,2016, - 1288,1312, 1296,1408, 1304,1576, 1320,1424, 1328,1416, 1336,1640, - 1344,1792, 1352,1824, 1360,1920, 1368,1704, 1376,1800, 1384,1432, - 1392,1928, 1400,1768, 1416,1680, 1432,1832, 1440,1576, 1448,1936, - 1456,1832, 1464,1896, 1472,1808, 1480,1688, 1488,1936, 1496,1960, - 1504,1816, 1512,1944, 1520,1944, 1528,2024, 1560,1584, 1592,1648, - 1600,1792, 1608,1920, 1616,1800, 1624,1712, 1632,1808, 1640,1936, - 1648,1816, 1656,1776, 1672,1696, 1688,1840, 1704,1952, 1712,1928, - 1720,1904, 1728,1824, 1736,1952, 1744,1832, 1752,1968, 1760,1840, - 1768,1960, 1776,1944, 1784,2032, 1864,1872, 1848,1944, 1872,1888, - 1880,1904, 1888,1984, 1896,2000, 1912,2032, 1904,2016, 1976,2032, - 1960,1968, 2008,2032, 1992,2016, 2024,2032 -}; - -const uint16_t armBitRevIndexTable512[ARMBITREVINDEXTABLE_512_TABLE_LENGTH] = -{ - /* radix 8, size 448 */ - 8,512, 16,1024, 24,1536, 32,2048, 40,2560, 48,3072, 56,3584, 72,576, - 80,1088, 88,1600, 96,2112, 104,2624, 112,3136, 120,3648, 136,640, 144,1152, - 152,1664, 160,2176, 168,2688, 176,3200, 184,3712, 200,704, 208,1216, - 216,1728, 224,2240, 232,2752, 240,3264, 248,3776, 264,768, 272,1280, - 280,1792, 288,2304, 296,2816, 304,3328, 312,3840, 328,832, 336,1344, - 344,1856, 352,2368, 360,2880, 368,3392, 376,3904, 392,896, 400,1408, - 408,1920, 416,2432, 424,2944, 432,3456, 440,3968, 456,960, 464,1472, - 472,1984, 480,2496, 488,3008, 496,3520, 504,4032, 528,1032, 536,1544, - 544,2056, 552,2568, 560,3080, 568,3592, 592,1096, 600,1608, 608,2120, - 616,2632, 624,3144, 632,3656, 656,1160, 664,1672, 672,2184, 680,2696, - 688,3208, 696,3720, 720,1224, 728,1736, 736,2248, 744,2760, 752,3272, - 760,3784, 784,1288, 792,1800, 800,2312, 808,2824, 816,3336, 824,3848, - 848,1352, 856,1864, 864,2376, 872,2888, 880,3400, 888,3912, 912,1416, - 920,1928, 928,2440, 936,2952, 944,3464, 952,3976, 976,1480, 984,1992, - 992,2504, 1000,3016, 1008,3528, 1016,4040, 1048,1552, 1056,2064, 1064,2576, - 1072,3088, 1080,3600, 1112,1616, 1120,2128, 1128,2640, 1136,3152, - 1144,3664, 1176,1680, 1184,2192, 1192,2704, 1200,3216, 1208,3728, - 1240,1744, 1248,2256, 1256,2768, 1264,3280, 1272,3792, 1304,1808, - 1312,2320, 1320,2832, 1328,3344, 1336,3856, 1368,1872, 1376,2384, - 1384,2896, 1392,3408, 1400,3920, 1432,1936, 1440,2448, 1448,2960, - 1456,3472, 1464,3984, 1496,2000, 1504,2512, 1512,3024, 1520,3536, - 1528,4048, 1568,2072, 1576,2584, 1584,3096, 1592,3608, 1632,2136, - 1640,2648, 1648,3160, 1656,3672, 1696,2200, 1704,2712, 1712,3224, - 1720,3736, 1760,2264, 1768,2776, 1776,3288, 1784,3800, 1824,2328, - 1832,2840, 1840,3352, 1848,3864, 1888,2392, 1896,2904, 1904,3416, - 1912,3928, 1952,2456, 1960,2968, 1968,3480, 1976,3992, 2016,2520, - 2024,3032, 2032,3544, 2040,4056, 2088,2592, 2096,3104, 2104,3616, - 2152,2656, 2160,3168, 2168,3680, 2216,2720, 2224,3232, 2232,3744, - 2280,2784, 2288,3296, 2296,3808, 2344,2848, 2352,3360, 2360,3872, - 2408,2912, 2416,3424, 2424,3936, 2472,2976, 2480,3488, 2488,4000, - 2536,3040, 2544,3552, 2552,4064, 2608,3112, 2616,3624, 2672,3176, - 2680,3688, 2736,3240, 2744,3752, 2800,3304, 2808,3816, 2864,3368, - 2872,3880, 2928,3432, 2936,3944, 2992,3496, 3000,4008, 3056,3560, - 3064,4072, 3128,3632, 3192,3696, 3256,3760, 3320,3824, 3384,3888, - 3448,3952, 3512,4016, 3576,4080 -}; - -const uint16_t armBitRevIndexTable1024[ARMBITREVINDEXTABLE_1024_TABLE_LENGTH] = -{ - /* 8x2, size 1800 */ - 8,4096, 16,512, 24,4608, 32,1024, 40,5120, 48,1536, 56,5632, 64,2048, - 72,6144, 80,2560, 88,6656, 96,3072, 104,7168, 112,3584, 120,7680, 128,2048, - 136,4160, 144,576, 152,4672, 160,1088, 168,5184, 176,1600, 184,5696, - 192,2112, 200,6208, 208,2624, 216,6720, 224,3136, 232,7232, 240,3648, - 248,7744, 256,2048, 264,4224, 272,640, 280,4736, 288,1152, 296,5248, - 304,1664, 312,5760, 320,2176, 328,6272, 336,2688, 344,6784, 352,3200, - 360,7296, 368,3712, 376,7808, 384,2112, 392,4288, 400,704, 408,4800, - 416,1216, 424,5312, 432,1728, 440,5824, 448,2240, 456,6336, 464,2752, - 472,6848, 480,3264, 488,7360, 496,3776, 504,7872, 512,2048, 520,4352, - 528,768, 536,4864, 544,1280, 552,5376, 560,1792, 568,5888, 576,2304, - 584,6400, 592,2816, 600,6912, 608,3328, 616,7424, 624,3840, 632,7936, - 640,2176, 648,4416, 656,832, 664,4928, 672,1344, 680,5440, 688,1856, - 696,5952, 704,2368, 712,6464, 720,2880, 728,6976, 736,3392, 744,7488, - 752,3904, 760,8000, 768,2112, 776,4480, 784,896, 792,4992, 800,1408, - 808,5504, 816,1920, 824,6016, 832,2432, 840,6528, 848,2944, 856,7040, - 864,3456, 872,7552, 880,3968, 888,8064, 896,2240, 904,4544, 912,960, - 920,5056, 928,1472, 936,5568, 944,1984, 952,6080, 960,2496, 968,6592, - 976,3008, 984,7104, 992,3520, 1000,7616, 1008,4032, 1016,8128, 1024,4096, - 1032,4104, 1040,4352, 1048,4616, 1056,4104, 1064,5128, 1072,1544, - 1080,5640, 1088,2056, 1096,6152, 1104,2568, 1112,6664, 1120,3080, - 1128,7176, 1136,3592, 1144,7688, 1152,6144, 1160,4168, 1168,6400, - 1176,4680, 1184,6152, 1192,5192, 1200,1608, 1208,5704, 1216,2120, - 1224,6216, 1232,2632, 1240,6728, 1248,3144, 1256,7240, 1264,3656, - 1272,7752, 1280,4160, 1288,4232, 1296,4416, 1304,4744, 1312,4168, - 1320,5256, 1328,1672, 1336,5768, 1344,2184, 1352,6280, 1360,2696, - 1368,6792, 1376,3208, 1384,7304, 1392,3720, 1400,7816, 1408,6208, - 1416,4296, 1424,6464, 1432,4808, 1440,6216, 1448,5320, 1456,1736, - 1464,5832, 1472,2248, 1480,6344, 1488,2760, 1496,6856, 1504,3272, - 1512,7368, 1520,3784, 1528,7880, 1536,4224, 1544,4360, 1552,4480, - 1560,4872, 1568,4232, 1576,5384, 1584,1800, 1592,5896, 1600,2312, - 1608,6408, 1616,2824, 1624,6920, 1632,3336, 1640,7432, 1648,3848, - 1656,7944, 1664,6272, 1672,4424, 1680,6528, 1688,4936, 1696,6280, - 1704,5448, 1712,1864, 1720,5960, 1728,2376, 1736,6472, 1744,2888, - 1752,6984, 1760,3400, 1768,7496, 1776,3912, 1784,8008, 1792,4288, - 1800,4488, 1808,4544, 1816,5000, 1824,4296, 1832,5512, 1840,1928, - 1848,6024, 1856,2440, 1864,6536, 1872,2952, 1880,7048, 1888,3464, - 1896,7560, 1904,3976, 1912,8072, 1920,6336, 1928,4552, 1936,6592, - 1944,5064, 1952,6344, 1960,5576, 1968,1992, 1976,6088, 1984,2504, - 1992,6600, 2000,3016, 2008,7112, 2016,3528, 2024,7624, 2032,4040, - 2040,8136, 2056,4112, 2064,2112, 2072,4624, 2080,4352, 2088,5136, - 2096,4480, 2104,5648, 2120,6160, 2128,2576, 2136,6672, 2144,3088, - 2152,7184, 2160,3600, 2168,7696, 2176,2560, 2184,4176, 2192,2816, - 2200,4688, 2208,2568, 2216,5200, 2224,2824, 2232,5712, 2240,2576, - 2248,6224, 2256,2640, 2264,6736, 2272,3152, 2280,7248, 2288,3664, - 2296,7760, 2312,4240, 2320,2432, 2328,4752, 2336,6400, 2344,5264, - 2352,6528, 2360,5776, 2368,2816, 2376,6288, 2384,2704, 2392,6800, - 2400,3216, 2408,7312, 2416,3728, 2424,7824, 2432,2624, 2440,4304, - 2448,2880, 2456,4816, 2464,2632, 2472,5328, 2480,2888, 2488,5840, - 2496,2640, 2504,6352, 2512,2768, 2520,6864, 2528,3280, 2536,7376, - 2544,3792, 2552,7888, 2568,4368, 2584,4880, 2592,4416, 2600,5392, - 2608,4544, 2616,5904, 2632,6416, 2640,2832, 2648,6928, 2656,3344, - 2664,7440, 2672,3856, 2680,7952, 2696,4432, 2704,2944, 2712,4944, - 2720,4432, 2728,5456, 2736,2952, 2744,5968, 2752,2944, 2760,6480, - 2768,2896, 2776,6992, 2784,3408, 2792,7504, 2800,3920, 2808,8016, - 2824,4496, 2840,5008, 2848,6464, 2856,5520, 2864,6592, 2872,6032, - 2888,6544, 2896,2960, 2904,7056, 2912,3472, 2920,7568, 2928,3984, - 2936,8080, 2952,4560, 2960,3008, 2968,5072, 2976,6480, 2984,5584, - 2992,3016, 3000,6096, 3016,6608, 3032,7120, 3040,3536, 3048,7632, - 3056,4048, 3064,8144, 3072,4608, 3080,4120, 3088,4864, 3096,4632, - 3104,4616, 3112,5144, 3120,4872, 3128,5656, 3136,4624, 3144,6168, - 3152,4880, 3160,6680, 3168,4632, 3176,7192, 3184,3608, 3192,7704, - 3200,6656, 3208,4184, 3216,6912, 3224,4696, 3232,6664, 3240,5208, - 3248,6920, 3256,5720, 3264,6672, 3272,6232, 3280,6928, 3288,6744, - 3296,6680, 3304,7256, 3312,3672, 3320,7768, 3328,4672, 3336,4248, - 3344,4928, 3352,4760, 3360,4680, 3368,5272, 3376,4936, 3384,5784, - 3392,4688, 3400,6296, 3408,4944, 3416,6808, 3424,4696, 3432,7320, - 3440,3736, 3448,7832, 3456,6720, 3464,4312, 3472,6976, 3480,4824, - 3488,6728, 3496,5336, 3504,6984, 3512,5848, 3520,6736, 3528,6360, - 3536,6992, 3544,6872, 3552,6744, 3560,7384, 3568,3800, 3576,7896, - 3584,4736, 3592,4376, 3600,4992, 3608,4888, 3616,4744, 3624,5400, - 3632,5000, 3640,5912, 3648,4752, 3656,6424, 3664,5008, 3672,6936, - 3680,4760, 3688,7448, 3696,3864, 3704,7960, 3712,6784, 3720,4440, - 3728,7040, 3736,4952, 3744,6792, 3752,5464, 3760,7048, 3768,5976, - 3776,6800, 3784,6488, 3792,7056, 3800,7000, 3808,6808, 3816,7512, - 3824,3928, 3832,8024, 3840,4800, 3848,4504, 3856,5056, 3864,5016, - 3872,4808, 3880,5528, 3888,5064, 3896,6040, 3904,4816, 3912,6552, - 3920,5072, 3928,7064, 3936,4824, 3944,7576, 3952,3992, 3960,8088, - 3968,6848, 3976,4568, 3984,7104, 3992,5080, 4000,6856, 4008,5592, - 4016,7112, 4024,6104, 4032,6864, 4040,6616, 4048,7120, 4056,7128, - 4064,6872, 4072,7640, 4080,7128, 4088,8152, 4104,4128, 4112,4160, - 4120,4640, 4136,5152, 4144,4232, 4152,5664, 4160,4352, 4168,6176, - 4176,4416, 4184,6688, 4192,4616, 4200,7200, 4208,4744, 4216,7712, - 4224,4608, 4232,4616, 4240,4672, 4248,4704, 4256,4640, 4264,5216, - 4272,4704, 4280,5728, 4288,4864, 4296,6240, 4304,4928, 4312,6752, - 4320,4632, 4328,7264, 4336,4760, 4344,7776, 4360,4640, 4368,4416, - 4376,4768, 4384,6152, 4392,5280, 4400,6280, 4408,5792, 4424,6304, - 4440,6816, 4448,6664, 4456,7328, 4464,6792, 4472,7840, 4480,4624, - 4488,4632, 4496,4688, 4504,4832, 4512,6168, 4520,5344, 4528,6296, - 4536,5856, 4544,4880, 4552,6368, 4560,4944, 4568,6880, 4576,6680, - 4584,7392, 4592,6808, 4600,7904, 4608,6144, 4616,6152, 4624,6208, - 4632,4896, 4640,6176, 4648,5408, 4656,6240, 4664,5920, 4672,6400, - 4680,6432, 4688,6464, 4696,6944, 4704,6432, 4712,7456, 4720,4808, - 4728,7968, 4736,6656, 4744,6664, 4752,6720, 4760,4960, 4768,6688, - 4776,5472, 4784,6752, 4792,5984, 4800,6912, 4808,6496, 4816,6976, - 4824,7008, 4832,6944, 4840,7520, 4848,7008, 4856,8032, 4864,6160, - 4872,6168, 4880,6224, 4888,5024, 4896,6216, 4904,5536, 4912,6344, - 4920,6048, 4928,6416, 4936,6560, 4944,6480, 4952,7072, 4960,6728, - 4968,7584, 4976,6856, 4984,8096, 4992,6672, 5000,6680, 5008,6736, - 5016,5088, 5024,6232, 5032,5600, 5040,6360, 5048,6112, 5056,6928, - 5064,6624, 5072,6992, 5080,7136, 5088,6744, 5096,7648, 5104,6872, - 5112,8160, 5128,5152, 5136,5376, 5144,5408, 5168,5384, 5176,5672, - 5184,5376, 5192,6184, 5200,5392, 5208,6696, 5216,5408, 5224,7208, - 5232,5400, 5240,7720, 5248,7168, 5256,7200, 5264,7424, 5272,7456, - 5280,7176, 5288,7208, 5296,7432, 5304,5736, 5312,7184, 5320,6248, - 5328,7440, 5336,6760, 5344,7192, 5352,7272, 5360,7448, 5368,7784, - 5384,5408, 5392,5440, 5400,5472, 5408,6184, 5416,7208, 5424,5448, - 5432,5800, 5448,6312, 5464,6824, 5472,6696, 5480,7336, 5488,6824, - 5496,7848, 5504,7232, 5512,7264, 5520,7488, 5528,7520, 5536,7240, - 5544,7272, 5552,7496, 5560,5864, 5568,7248, 5576,6376, 5584,7504, - 5592,6888, 5600,7256, 5608,7400, 5616,7512, 5624,7912, 5632,7168, - 5640,7176, 5648,7232, 5656,7240, 5664,7200, 5672,7208, 5680,7264, - 5688,5928, 5696,7424, 5704,6440, 5712,7488, 5720,6952, 5728,7456, - 5736,7464, 5744,7520, 5752,7976, 5760,7296, 5768,7328, 5776,7552, - 5784,7584, 5792,7304, 5800,7336, 5808,7560, 5816,5992, 5824,7312, - 5832,6504, 5840,7568, 5848,7016, 5856,7320, 5864,7528, 5872,7576, - 5880,8040, 5888,7184, 5896,7192, 5904,7248, 5912,7256, 5920,6248, - 5928,7272, 5936,6376, 5944,6056, 5952,7440, 5960,6568, 5968,7504, - 5976,7080, 5984,6760, 5992,7592, 6000,6888, 6008,8104, 6016,7360, - 6024,7392, 6032,7616, 6040,7648, 6048,7368, 6056,7400, 6064,7624, - 6072,6120, 6080,7376, 6088,6632, 6096,7632, 6104,7144, 6112,7384, - 6120,7656, 6128,7640, 6136,8168, 6168,6240, 6192,6216, 6200,7264, - 6232,6704, 6248,7216, 6256,6680, 6264,7728, 6272,6656, 6280,6664, - 6288,6912, 6296,6496, 6304,6688, 6312,6696, 6320,6944, 6328,7520, - 6336,6672, 6344,6680, 6352,6928, 6360,6768, 6368,6704, 6376,7280, - 6384,6744, 6392,7792, 6408,6432, 6424,6752, 6440,7432, 6448,6536, - 6456,7560, 6472,6944, 6488,6832, 6496,6920, 6504,7344, 6512,7048, - 6520,7856, 6528,6720, 6536,6728, 6544,6976, 6552,7008, 6560,6752, - 6568,7448, 6576,7008, 6584,7576, 6592,6736, 6600,6744, 6608,6992, - 6616,6896, 6624,6936, 6632,7408, 6640,7064, 6648,7920, 6712,7280, - 6744,6960, 6760,7472, 6768,6936, 6776,7984, 6800,6848, 6808,6856, - 6832,6880, 6840,6888, 6848,7040, 6856,7048, 6864,7104, 6872,7024, - 6880,7072, 6888,7536, 6896,7136, 6904,8048, 6952,7496, 6968,7624, - 6984,7008, 7000,7088, 7016,7600, 7024,7112, 7032,8112, 7056,7104, - 7064,7112, 7080,7512, 7088,7136, 7096,7640, 7128,7152, 7144,7664, - 7160,8176, 7176,7200, 7192,7216, 7224,7272, 7240,7264, 7256,7280, - 7288,7736, 7296,7680, 7304,7712, 7312,7936, 7320,7968, 7328,7688, - 7336,7720, 7344,7944, 7352,7976, 7360,7696, 7368,7728, 7376,7952, - 7384,7984, 7392,7704, 7400,7736, 7408,7960, 7416,7800, 7432,7456, - 7448,7472, 7480,7592, 7496,7520, 7512,7536, 7528,7976, 7544,7864, - 7552,7744, 7560,7776, 7568,8000, 7576,8032, 7584,7752, 7592,7784, - 7600,8008, 7608,8040, 7616,7760, 7624,7792, 7632,8016, 7640,8048, - 7648,7768, 7656,7800, 7664,8024, 7672,7928, 7688,7712, 7704,7728, - 7752,7776, 7768,7792, 7800,7992, 7816,7840, 7824,8064, 7832,8096, - 7856,8072, 7864,8104, 7872,8064, 7880,8072, 7888,8080, 7896,8112, - 7904,8096, 7912,8104, 7920,8088, 7928,8056, 7944,7968, 7960,7984, - 8008,8032, 8024,8048, 8056,8120, 8072,8096, 8080,8128, 8088,8160, - 8112,8136, 8120,8168, 8136,8160, 8152,8176 -}; - -const uint16_t armBitRevIndexTable2048[ARMBITREVINDEXTABLE_2048_TABLE_LENGTH] = -{ - /* 8x2, size 3808 */ - 8,4096, 16,8192, 24,12288, 32,512, 40,4608, 48,8704, 56,12800, 64,1024, - 72,5120, 80,9216, 88,13312, 96,1536, 104,5632, 112,9728, 120,13824, - 128,2048, 136,6144, 144,10240, 152,14336, 160,2560, 168,6656, 176,10752, - 184,14848, 192,3072, 200,7168, 208,11264, 216,15360, 224,3584, 232,7680, - 240,11776, 248,15872, 256,1024, 264,4160, 272,8256, 280,12352, 288,576, - 296,4672, 304,8768, 312,12864, 320,1088, 328,5184, 336,9280, 344,13376, - 352,1600, 360,5696, 368,9792, 376,13888, 384,2112, 392,6208, 400,10304, - 408,14400, 416,2624, 424,6720, 432,10816, 440,14912, 448,3136, 456,7232, - 464,11328, 472,15424, 480,3648, 488,7744, 496,11840, 504,15936, 512,2048, - 520,4224, 528,8320, 536,12416, 544,640, 552,4736, 560,8832, 568,12928, - 576,1152, 584,5248, 592,9344, 600,13440, 608,1664, 616,5760, 624,9856, - 632,13952, 640,2176, 648,6272, 656,10368, 664,14464, 672,2688, 680,6784, - 688,10880, 696,14976, 704,3200, 712,7296, 720,11392, 728,15488, 736,3712, - 744,7808, 752,11904, 760,16000, 768,3072, 776,4288, 784,8384, 792,12480, - 800,3200, 808,4800, 816,8896, 824,12992, 832,1216, 840,5312, 848,9408, - 856,13504, 864,1728, 872,5824, 880,9920, 888,14016, 896,2240, 904,6336, - 912,10432, 920,14528, 928,2752, 936,6848, 944,10944, 952,15040, 960,3264, - 968,7360, 976,11456, 984,15552, 992,3776, 1000,7872, 1008,11968, 1016,16064, - 1032,4352, 1040,8448, 1048,12544, 1056,3072, 1064,4864, 1072,8960, - 1080,13056, 1088,1280, 1096,5376, 1104,9472, 1112,13568, 1120,1792, - 1128,5888, 1136,9984, 1144,14080, 1152,2304, 1160,6400, 1168,10496, - 1176,14592, 1184,2816, 1192,6912, 1200,11008, 1208,15104, 1216,3328, - 1224,7424, 1232,11520, 1240,15616, 1248,3840, 1256,7936, 1264,12032, - 1272,16128, 1288,4416, 1296,8512, 1304,12608, 1312,3328, 1320,4928, - 1328,9024, 1336,13120, 1352,5440, 1360,9536, 1368,13632, 1376,1856, - 1384,5952, 1392,10048, 1400,14144, 1408,2368, 1416,6464, 1424,10560, - 1432,14656, 1440,2880, 1448,6976, 1456,11072, 1464,15168, 1472,3392, - 1480,7488, 1488,11584, 1496,15680, 1504,3904, 1512,8000, 1520,12096, - 1528,16192, 1536,2112, 1544,4480, 1552,8576, 1560,12672, 1568,2240, - 1576,4992, 1584,9088, 1592,13184, 1600,2368, 1608,5504, 1616,9600, - 1624,13696, 1632,1920, 1640,6016, 1648,10112, 1656,14208, 1664,2432, - 1672,6528, 1680,10624, 1688,14720, 1696,2944, 1704,7040, 1712,11136, - 1720,15232, 1728,3456, 1736,7552, 1744,11648, 1752,15744, 1760,3968, - 1768,8064, 1776,12160, 1784,16256, 1792,3136, 1800,4544, 1808,8640, - 1816,12736, 1824,3264, 1832,5056, 1840,9152, 1848,13248, 1856,3392, - 1864,5568, 1872,9664, 1880,13760, 1888,1984, 1896,6080, 1904,10176, - 1912,14272, 1920,2496, 1928,6592, 1936,10688, 1944,14784, 1952,3008, - 1960,7104, 1968,11200, 1976,15296, 1984,3520, 1992,7616, 2000,11712, - 2008,15808, 2016,4032, 2024,8128, 2032,12224, 2040,16320, 2048,4096, - 2056,4104, 2064,8200, 2072,12296, 2080,4224, 2088,4616, 2096,8712, - 2104,12808, 2112,4352, 2120,5128, 2128,9224, 2136,13320, 2144,4480, - 2152,5640, 2160,9736, 2168,13832, 2176,4104, 2184,6152, 2192,10248, - 2200,14344, 2208,2568, 2216,6664, 2224,10760, 2232,14856, 2240,3080, - 2248,7176, 2256,11272, 2264,15368, 2272,3592, 2280,7688, 2288,11784, - 2296,15880, 2304,5120, 2312,4168, 2320,8264, 2328,12360, 2336,5248, - 2344,4680, 2352,8776, 2360,12872, 2368,5376, 2376,5192, 2384,9288, - 2392,13384, 2400,5504, 2408,5704, 2416,9800, 2424,13896, 2432,5128, - 2440,6216, 2448,10312, 2456,14408, 2464,2632, 2472,6728, 2480,10824, - 2488,14920, 2496,3144, 2504,7240, 2512,11336, 2520,15432, 2528,3656, - 2536,7752, 2544,11848, 2552,15944, 2560,6144, 2568,4232, 2576,8328, - 2584,12424, 2592,6272, 2600,4744, 2608,8840, 2616,12936, 2624,6400, - 2632,5256, 2640,9352, 2648,13448, 2656,6528, 2664,5768, 2672,9864, - 2680,13960, 2688,6152, 2696,6280, 2704,10376, 2712,14472, 2720,6280, - 2728,6792, 2736,10888, 2744,14984, 2752,3208, 2760,7304, 2768,11400, - 2776,15496, 2784,3720, 2792,7816, 2800,11912, 2808,16008, 2816,7168, - 2824,4296, 2832,8392, 2840,12488, 2848,7296, 2856,4808, 2864,8904, - 2872,13000, 2880,7424, 2888,5320, 2896,9416, 2904,13512, 2912,7552, - 2920,5832, 2928,9928, 2936,14024, 2944,7176, 2952,6344, 2960,10440, - 2968,14536, 2976,7304, 2984,6856, 2992,10952, 3000,15048, 3008,3272, - 3016,7368, 3024,11464, 3032,15560, 3040,3784, 3048,7880, 3056,11976, - 3064,16072, 3072,4160, 3080,4360, 3088,8456, 3096,12552, 3104,4288, - 3112,4872, 3120,8968, 3128,13064, 3136,4416, 3144,5384, 3152,9480, - 3160,13576, 3168,4544, 3176,5896, 3184,9992, 3192,14088, 3200,4168, - 3208,6408, 3216,10504, 3224,14600, 3232,4296, 3240,6920, 3248,11016, - 3256,15112, 3264,3336, 3272,7432, 3280,11528, 3288,15624, 3296,3848, - 3304,7944, 3312,12040, 3320,16136, 3328,5184, 3336,4424, 3344,8520, - 3352,12616, 3360,5312, 3368,4936, 3376,9032, 3384,13128, 3392,5440, - 3400,5448, 3408,9544, 3416,13640, 3424,5568, 3432,5960, 3440,10056, - 3448,14152, 3456,5192, 3464,6472, 3472,10568, 3480,14664, 3488,5320, - 3496,6984, 3504,11080, 3512,15176, 3520,5448, 3528,7496, 3536,11592, - 3544,15688, 3552,3912, 3560,8008, 3568,12104, 3576,16200, 3584,6208, - 3592,4488, 3600,8584, 3608,12680, 3616,6336, 3624,5000, 3632,9096, - 3640,13192, 3648,6464, 3656,5512, 3664,9608, 3672,13704, 3680,6592, - 3688,6024, 3696,10120, 3704,14216, 3712,6216, 3720,6536, 3728,10632, - 3736,14728, 3744,6344, 3752,7048, 3760,11144, 3768,15240, 3776,6472, - 3784,7560, 3792,11656, 3800,15752, 3808,3976, 3816,8072, 3824,12168, - 3832,16264, 3840,7232, 3848,4552, 3856,8648, 3864,12744, 3872,7360, - 3880,5064, 3888,9160, 3896,13256, 3904,7488, 3912,5576, 3920,9672, - 3928,13768, 3936,7616, 3944,6088, 3952,10184, 3960,14280, 3968,7240, - 3976,6600, 3984,10696, 3992,14792, 4000,7368, 4008,7112, 4016,11208, - 4024,15304, 4032,7496, 4040,7624, 4048,11720, 4056,15816, 4064,7624, - 4072,8136, 4080,12232, 4088,16328, 4096,8192, 4104,4112, 4112,8208, - 4120,12304, 4128,8320, 4136,4624, 4144,8720, 4152,12816, 4160,8448, - 4168,5136, 4176,9232, 4184,13328, 4192,8576, 4200,5648, 4208,9744, - 4216,13840, 4224,8200, 4232,6160, 4240,10256, 4248,14352, 4256,8328, - 4264,6672, 4272,10768, 4280,14864, 4288,8456, 4296,7184, 4304,11280, - 4312,15376, 4320,8584, 4328,7696, 4336,11792, 4344,15888, 4352,9216, - 4360,9232, 4368,8272, 4376,12368, 4384,9344, 4392,4688, 4400,8784, - 4408,12880, 4416,9472, 4424,5200, 4432,9296, 4440,13392, 4448,9600, - 4456,5712, 4464,9808, 4472,13904, 4480,9224, 4488,6224, 4496,10320, - 4504,14416, 4512,9352, 4520,6736, 4528,10832, 4536,14928, 4544,9480, - 4552,7248, 4560,11344, 4568,15440, 4576,9608, 4584,7760, 4592,11856, - 4600,15952, 4608,10240, 4616,10256, 4624,8336, 4632,12432, 4640,10368, - 4648,4752, 4656,8848, 4664,12944, 4672,10496, 4680,5264, 4688,9360, - 4696,13456, 4704,10624, 4712,5776, 4720,9872, 4728,13968, 4736,10248, - 4744,6288, 4752,10384, 4760,14480, 4768,10376, 4776,6800, 4784,10896, - 4792,14992, 4800,10504, 4808,7312, 4816,11408, 4824,15504, 4832,10632, - 4840,7824, 4848,11920, 4856,16016, 4864,11264, 4872,11280, 4880,8400, - 4888,12496, 4896,11392, 4904,11408, 4912,8912, 4920,13008, 4928,11520, - 4936,5328, 4944,9424, 4952,13520, 4960,11648, 4968,5840, 4976,9936, - 4984,14032, 4992,11272, 5000,6352, 5008,10448, 5016,14544, 5024,11400, - 5032,6864, 5040,10960, 5048,15056, 5056,11528, 5064,7376, 5072,11472, - 5080,15568, 5088,11656, 5096,7888, 5104,11984, 5112,16080, 5120,8256, - 5128,8272, 5136,8464, 5144,12560, 5152,8384, 5160,8400, 5168,8976, - 5176,13072, 5184,8512, 5192,5392, 5200,9488, 5208,13584, 5216,8640, - 5224,5904, 5232,10000, 5240,14096, 5248,8264, 5256,6416, 5264,10512, - 5272,14608, 5280,8392, 5288,6928, 5296,11024, 5304,15120, 5312,8520, - 5320,7440, 5328,11536, 5336,15632, 5344,8648, 5352,7952, 5360,12048, - 5368,16144, 5376,9280, 5384,9296, 5392,8528, 5400,12624, 5408,9408, - 5416,9424, 5424,9040, 5432,13136, 5440,9536, 5448,5456, 5456,9552, - 5464,13648, 5472,9664, 5480,5968, 5488,10064, 5496,14160, 5504,9288, - 5512,6480, 5520,10576, 5528,14672, 5536,9416, 5544,6992, 5552,11088, - 5560,15184, 5568,9544, 5576,7504, 5584,11600, 5592,15696, 5600,9672, - 5608,8016, 5616,12112, 5624,16208, 5632,10304, 5640,10320, 5648,8592, - 5656,12688, 5664,10432, 5672,10448, 5680,9104, 5688,13200, 5696,10560, - 5704,10576, 5712,9616, 5720,13712, 5728,10688, 5736,6032, 5744,10128, - 5752,14224, 5760,10312, 5768,6544, 5776,10640, 5784,14736, 5792,10440, - 5800,7056, 5808,11152, 5816,15248, 5824,10568, 5832,7568, 5840,11664, - 5848,15760, 5856,10696, 5864,8080, 5872,12176, 5880,16272, 5888,11328, - 5896,11344, 5904,8656, 5912,12752, 5920,11456, 5928,11472, 5936,9168, - 5944,13264, 5952,11584, 5960,11600, 5968,9680, 5976,13776, 5984,11712, - 5992,6096, 6000,10192, 6008,14288, 6016,11336, 6024,6608, 6032,10704, - 6040,14800, 6048,11464, 6056,7120, 6064,11216, 6072,15312, 6080,11592, - 6088,7632, 6096,11728, 6104,15824, 6112,11720, 6120,8144, 6128,12240, - 6136,16336, 6144,12288, 6152,12304, 6160,8216, 6168,12312, 6176,12416, - 6184,12432, 6192,8728, 6200,12824, 6208,12544, 6216,12560, 6224,9240, - 6232,13336, 6240,12672, 6248,12688, 6256,9752, 6264,13848, 6272,12296, - 6280,12312, 6288,10264, 6296,14360, 6304,12424, 6312,6680, 6320,10776, - 6328,14872, 6336,12552, 6344,7192, 6352,11288, 6360,15384, 6368,12680, - 6376,7704, 6384,11800, 6392,15896, 6400,13312, 6408,13328, 6416,8280, - 6424,12376, 6432,13440, 6440,13456, 6448,8792, 6456,12888, 6464,13568, - 6472,13584, 6480,9304, 6488,13400, 6496,13696, 6504,13712, 6512,9816, - 6520,13912, 6528,13320, 6536,13336, 6544,10328, 6552,14424, 6560,13448, - 6568,6744, 6576,10840, 6584,14936, 6592,13576, 6600,7256, 6608,11352, - 6616,15448, 6624,13704, 6632,7768, 6640,11864, 6648,15960, 6656,14336, - 6664,14352, 6672,8344, 6680,12440, 6688,14464, 6696,14480, 6704,8856, - 6712,12952, 6720,14592, 6728,14608, 6736,9368, 6744,13464, 6752,14720, - 6760,14736, 6768,9880, 6776,13976, 6784,14344, 6792,14360, 6800,10392, - 6808,14488, 6816,14472, 6824,14488, 6832,10904, 6840,15000, 6848,14600, - 6856,7320, 6864,11416, 6872,15512, 6880,14728, 6888,7832, 6896,11928, - 6904,16024, 6912,15360, 6920,15376, 6928,8408, 6936,12504, 6944,15488, - 6952,15504, 6960,8920, 6968,13016, 6976,15616, 6984,15632, 6992,9432, - 7000,13528, 7008,15744, 7016,15760, 7024,9944, 7032,14040, 7040,15368, - 7048,15384, 7056,10456, 7064,14552, 7072,15496, 7080,15512, 7088,10968, - 7096,15064, 7104,15624, 7112,7384, 7120,11480, 7128,15576, 7136,15752, - 7144,7896, 7152,11992, 7160,16088, 7168,12352, 7176,12368, 7184,8472, - 7192,12568, 7200,12480, 7208,12496, 7216,8984, 7224,13080, 7232,12608, - 7240,12624, 7248,9496, 7256,13592, 7264,12736, 7272,12752, 7280,10008, - 7288,14104, 7296,12360, 7304,12376, 7312,10520, 7320,14616, 7328,12488, - 7336,12504, 7344,11032, 7352,15128, 7360,12616, 7368,7448, 7376,11544, - 7384,15640, 7392,12744, 7400,7960, 7408,12056, 7416,16152, 7424,13376, - 7432,13392, 7440,8536, 7448,12632, 7456,13504, 7464,13520, 7472,9048, - 7480,13144, 7488,13632, 7496,13648, 7504,9560, 7512,13656, 7520,13760, - 7528,13776, 7536,10072, 7544,14168, 7552,13384, 7560,13400, 7568,10584, - 7576,14680, 7584,13512, 7592,13528, 7600,11096, 7608,15192, 7616,13640, - 7624,13656, 7632,11608, 7640,15704, 7648,13768, 7656,8024, 7664,12120, - 7672,16216, 7680,14400, 7688,14416, 7696,8600, 7704,12696, 7712,14528, - 7720,14544, 7728,9112, 7736,13208, 7744,14656, 7752,14672, 7760,9624, - 7768,13720, 7776,14784, 7784,14800, 7792,10136, 7800,14232, 7808,14408, - 7816,14424, 7824,10648, 7832,14744, 7840,14536, 7848,14552, 7856,11160, - 7864,15256, 7872,14664, 7880,14680, 7888,11672, 7896,15768, 7904,14792, - 7912,8088, 7920,12184, 7928,16280, 7936,15424, 7944,15440, 7952,8664, - 7960,12760, 7968,15552, 7976,15568, 7984,9176, 7992,13272, 8000,15680, - 8008,15696, 8016,9688, 8024,13784, 8032,15808, 8040,15824, 8048,10200, - 8056,14296, 8064,15432, 8072,15448, 8080,10712, 8088,14808, 8096,15560, - 8104,15576, 8112,11224, 8120,15320, 8128,15688, 8136,15704, 8144,11736, - 8152,15832, 8160,15816, 8168,15832, 8176,12248, 8184,16344, 8200,8320, - 8208,8224, 8216,12320, 8232,10368, 8240,8736, 8248,12832, 8256,8448, - 8264,8384, 8272,9248, 8280,13344, 8288,9232, 8296,10432, 8304,9760, - 8312,13856, 8328,12416, 8336,10272, 8344,14368, 8352,12296, 8360,14464, - 8368,10784, 8376,14880, 8384,8456, 8392,12480, 8400,11296, 8408,15392, - 8416,12552, 8424,14528, 8432,11808, 8440,15904, 8448,9216, 8456,8576, - 8464,9232, 8472,12384, 8480,9248, 8488,10624, 8496,8800, 8504,12896, - 8512,9472, 8520,8640, 8528,9312, 8536,13408, 8544,9296, 8552,10688, - 8560,9824, 8568,13920, 8576,9224, 8584,12672, 8592,10336, 8600,14432, - 8608,13320, 8616,14720, 8624,10848, 8632,14944, 8640,9480, 8648,12736, - 8656,11360, 8664,15456, 8672,13576, 8680,14784, 8688,11872, 8696,15968, - 8704,12288, 8712,12416, 8720,12296, 8728,12448, 8736,12304, 8744,10376, - 8752,8864, 8760,12960, 8768,12352, 8776,12480, 8784,9376, 8792,13472, - 8800,12368, 8808,10440, 8816,9888, 8824,13984, 8832,12320, 8840,12424, - 8848,10400, 8856,14496, 8864,12312, 8872,14472, 8880,10912, 8888,15008, - 8896,12384, 8904,12488, 8912,11424, 8920,15520, 8928,12568, 8936,14536, - 8944,11936, 8952,16032, 8960,12544, 8968,12672, 8976,12552, 8984,12512, - 8992,12560, 9000,10632, 9008,12568, 9016,13024, 9024,12608, 9032,12736, - 9040,9440, 9048,13536, 9056,12624, 9064,10696, 9072,9952, 9080,14048, - 9088,9240, 9096,12680, 9104,10464, 9112,14560, 9120,13336, 9128,14728, - 9136,10976, 9144,15072, 9152,9496, 9160,12744, 9168,11488, 9176,15584, - 9184,13592, 9192,14792, 9200,12000, 9208,16096, 9224,9344, 9232,9248, - 9240,12576, 9256,11392, 9264,12560, 9272,13088, 9280,9472, 9288,9408, - 9296,9504, 9304,13600, 9312,9488, 9320,11456, 9328,10016, 9336,14112, - 9352,13440, 9360,10528, 9368,14624, 9376,12360, 9384,15488, 9392,11040, - 9400,15136, 9408,9480, 9416,13504, 9424,11552, 9432,15648, 9440,12616, - 9448,15552, 9456,12064, 9464,16160, 9480,9600, 9488,9504, 9496,12640, - 9512,11648, 9520,12624, 9528,13152, 9544,9664, 9552,9568, 9560,13664, - 9576,11712, 9584,10080, 9592,14176, 9608,13696, 9616,10592, 9624,14688, - 9632,13384, 9640,15744, 9648,11104, 9656,15200, 9672,13760, 9680,11616, - 9688,15712, 9696,13640, 9704,15808, 9712,12128, 9720,16224, 9728,13312, - 9736,13440, 9744,13320, 9752,12704, 9760,13328, 9768,11400, 9776,13336, - 9784,13216, 9792,13376, 9800,13504, 9808,13384, 9816,13728, 9824,13392, - 9832,11464, 9840,10144, 9848,14240, 9856,13344, 9864,13448, 9872,10656, - 9880,14752, 9888,12376, 9896,15496, 9904,11168, 9912,15264, 9920,13408, - 9928,13512, 9936,11680, 9944,15776, 9952,12632, 9960,15560, 9968,12192, - 9976,16288, 9984,13568, 9992,13696, 10000,13576, 10008,12768, 10016,13584, - 10024,11656, 10032,13592, 10040,13280, 10048,13632, 10056,13760, - 10064,13640, 10072,13792, 10080,13648, 10088,11720, 10096,10208, - 10104,14304, 10112,13600, 10120,13704, 10128,10720, 10136,14816, - 10144,13400, 10152,15752, 10160,11232, 10168,15328, 10176,13664, - 10184,13768, 10192,11744, 10200,15840, 10208,13656, 10216,15816, - 10224,12256, 10232,16352, 10248,10272, 10256,10368, 10264,12328, - 10280,10384, 10288,10376, 10296,12840, 10304,11264, 10312,11296, - 10320,11392, 10328,13352, 10336,11272, 10344,10448, 10352,11400, - 10360,13864, 10376,12432, 10392,14376, 10400,12328, 10408,14480, - 10416,10792, 10424,14888, 10432,11280, 10440,12496, 10448,11304, - 10456,15400, 10464,11288, 10472,14544, 10480,11816, 10488,15912, - 10496,11264, 10504,11272, 10512,11280, 10520,12392, 10528,11296, - 10536,10640, 10544,12496, 10552,12904, 10560,11328, 10568,11360, - 10576,11456, 10584,13416, 10592,11336, 10600,10704, 10608,11464, - 10616,13928, 10624,11392, 10632,12688, 10640,11304, 10648,14440, - 10656,13352, 10664,14736, 10672,10856, 10680,14952, 10688,11344, - 10696,12752, 10704,11368, 10712,15464, 10720,11352, 10728,14800, - 10736,11880, 10744,15976, 10752,14336, 10760,14368, 10768,14464, - 10776,12456, 10784,14344, 10792,14376, 10800,14472, 10808,12968, - 10816,15360, 10824,15392, 10832,15488, 10840,13480, 10848,15368, - 10856,15400, 10864,15496, 10872,13992, 10880,14352, 10888,12440, - 10896,14480, 10904,14504, 10912,14360, 10920,14488, 10928,14488, - 10936,15016, 10944,15376, 10952,12504, 10960,11432, 10968,15528, - 10976,15384, 10984,14552, 10992,11944, 11000,16040, 11008,14400, - 11016,14432, 11024,14528, 11032,12520, 11040,14408, 11048,14440, - 11056,14536, 11064,13032, 11072,15424, 11080,15456, 11088,15552, - 11096,13544, 11104,15432, 11112,15464, 11120,15560, 11128,14056, - 11136,14416, 11144,12696, 11152,14544, 11160,14568, 11168,14424, - 11176,14744, 11184,14552, 11192,15080, 11200,15440, 11208,12760, - 11216,11496, 11224,15592, 11232,15448, 11240,14808, 11248,12008, - 11256,16104, 11272,11296, 11280,11392, 11288,12584, 11304,11408, - 11312,12688, 11320,13096, 11328,11520, 11336,11552, 11344,11648, - 11352,13608, 11360,11528, 11368,11472, 11376,11656, 11384,14120, - 11400,13456, 11416,14632, 11424,12392, 11432,15504, 11440,14440, - 11448,15144, 11456,11536, 11464,13520, 11472,11560, 11480,15656, - 11488,11544, 11496,15568, 11504,12072, 11512,16168, 11528,11552, - 11536,11648, 11544,12648, 11560,11664, 11568,12752, 11576,13160, - 11592,11616, 11600,11712, 11608,13672, 11624,11728, 11632,11720, - 11640,14184, 11656,13712, 11672,14696, 11680,13416, 11688,15760, - 11696,15464, 11704,15208, 11720,13776, 11736,15720, 11744,13672, - 11752,15824, 11760,12136, 11768,16232, 11776,14592, 11784,14624, - 11792,14720, 11800,12712, 11808,14600, 11816,14632, 11824,14728, - 11832,13224, 11840,15616, 11848,15648, 11856,15744, 11864,13736, - 11872,15624, 11880,15656, 11888,15752, 11896,14248, 11904,14608, - 11912,13464, 11920,14736, 11928,14760, 11936,14616, 11944,15512, - 11952,14744, 11960,15272, 11968,15632, 11976,13528, 11984,15760, - 11992,15784, 12000,15640, 12008,15576, 12016,12200, 12024,16296, - 12032,14656, 12040,14688, 12048,14784, 12056,12776, 12064,14664, - 12072,14696, 12080,14792, 12088,13288, 12096,15680, 12104,15712, - 12112,15808, 12120,13800, 12128,15688, 12136,15720, 12144,15816, - 12152,14312, 12160,14672, 12168,13720, 12176,14800, 12184,14824, - 12192,14680, 12200,15768, 12208,14808, 12216,15336, 12224,15696, - 12232,13784, 12240,15824, 12248,15848, 12256,15704, 12264,15832, - 12272,15832, 12280,16360, 12312,12336, 12344,12848, 12352,12544, - 12360,12552, 12368,12560, 12376,13360, 12384,12576, 12392,12584, - 12400,13336, 12408,13872, 12424,12448, 12440,14384, 12456,14496, - 12464,14472, 12472,14896, 12480,12672, 12488,12512, 12496,12688, - 12504,15408, 12512,12680, 12520,14560, 12528,14728, 12536,15920, - 12544,13312, 12552,13320, 12560,13328, 12568,13336, 12576,13344, - 12584,13352, 12592,13360, 12600,12912, 12608,13568, 12616,13576, - 12624,13584, 12632,13424, 12640,13600, 12648,13608, 12656,13400, - 12664,13936, 12672,13440, 12680,12704, 12688,13456, 12696,14448, - 12704,13448, 12712,14752, 12720,15496, 12728,14960, 12736,13696, - 12744,12768, 12752,13712, 12760,15472, 12768,13704, 12776,14816, - 12784,15752, 12792,15984, 12800,14336, 12808,14464, 12816,14344, - 12824,14472, 12832,14352, 12840,14480, 12848,14360, 12856,12976, - 12864,14400, 12872,14528, 12880,14408, 12888,13488, 12896,14416, - 12904,14544, 12912,14424, 12920,14000, 12928,14368, 12936,14496, - 12944,14376, 12952,14512, 12960,14384, 12968,14504, 12976,14488, - 12984,15024, 12992,14432, 13000,14560, 13008,14440, 13016,15536, - 13024,14448, 13032,14568, 13040,14744, 13048,16048, 13056,14592, - 13064,14720, 13072,14600, 13080,14728, 13088,14608, 13096,14736, - 13104,14616, 13112,14744, 13120,14656, 13128,14784, 13136,14664, - 13144,13552, 13152,14672, 13160,14800, 13168,14680, 13176,14064, - 13184,14624, 13192,14752, 13200,14632, 13208,14576, 13216,13464, - 13224,14760, 13232,15512, 13240,15088, 13248,14688, 13256,14816, - 13264,14696, 13272,15600, 13280,13720, 13288,14824, 13296,15768, - 13304,16112, 13336,13360, 13368,14616, 13376,13568, 13384,13576, - 13392,13584, 13400,13616, 13408,13600, 13416,13608, 13424,13592, - 13432,14128, 13448,13472, 13464,14640, 13480,15520, 13488,14536, - 13496,15152, 13504,13696, 13512,13536, 13520,13712, 13528,15664, - 13536,13704, 13544,15584, 13552,14792, 13560,16176, 13592,13616, - 13624,14680, 13656,13680, 13688,14192, 13704,13728, 13720,14704, - 13736,15776, 13744,15560, 13752,15216, 13768,13792, 13784,15728, - 13800,15840, 13808,15816, 13816,16240, 13824,15360, 13832,15488, - 13840,15368, 13848,15496, 13856,15376, 13864,15504, 13872,15384, - 13880,15512, 13888,15424, 13896,15552, 13904,15432, 13912,15560, - 13920,15440, 13928,15568, 13936,15448, 13944,14256, 13952,15392, - 13960,15520, 13968,15400, 13976,14768, 13984,15408, 13992,15528, - 14000,14552, 14008,15280, 14016,15456, 14024,15584, 14032,15464, - 14040,15792, 14048,15472, 14056,15592, 14064,14808, 14072,16304, - 14080,15616, 14088,15744, 14096,15624, 14104,15752, 14112,15632, - 14120,15760, 14128,15640, 14136,15768, 14144,15680, 14152,15808, - 14160,15688, 14168,15816, 14176,15696, 14184,15824, 14192,15704, - 14200,14320, 14208,15648, 14216,15776, 14224,15656, 14232,14832, - 14240,15664, 14248,15784, 14256,15576, 14264,15344, 14272,15712, - 14280,15840, 14288,15720, 14296,15856, 14304,15728, 14312,15848, - 14320,15832, 14328,16368, 14392,14488, 14400,14592, 14408,14600, - 14416,14608, 14424,14616, 14432,14624, 14440,14632, 14448,14640, - 14456,15512, 14504,14512, 14520,14904, 14528,14720, 14536,14728, - 14544,14736, 14552,15416, 14560,14752, 14568,14576, 14584,15928, - 14576,14760, 14592,15360, 14600,15368, 14608,15376, 14616,15384, - 14624,15392, 14632,15400, 14640,15408, 14648,15416, 14656,15616, - 14664,15624, 14672,15632, 14680,15640, 14688,15648, 14696,15656, - 14704,15664, 14712,15576, 14720,15488, 14728,15496, 14736,15504, - 14744,15512, 14752,15520, 14760,14768, 14776,14968, 14768,15528, - 14784,15744, 14792,15752, 14800,15760, 14808,15480, 14816,15776, - 14824,14832, 14840,15992, 14832,15784, 14856,14864, 14864,14880, - 14872,14896, 14880,14976, 14888,14992, 14896,15008, 14904,15024, - 14912,15104, 14920,15120, 14928,15136, 14936,15152, 14944,15232, - 14952,15248, 14960,15264, 14968,15280, 14984,15008, 15000,15024, - 15016,15024, 15040,15112, 15048,15128, 15056,15144, 15064,15544, - 15072,15240, 15080,15256, 15088,15272, 15096,16056, 15104,15872, - 15112,15888, 15120,15904, 15128,15920, 15136,16000, 15144,16016, - 15152,16032, 15160,16048, 15168,16128, 15176,16144, 15184,16160, - 15192,16176, 15200,16256, 15208,16272, 15216,16288, 15224,16304, - 15232,15880, 15240,15896, 15248,15912, 15256,15928, 15264,16008, - 15272,16024, 15280,16040, 15288,16056, 15296,16136, 15304,16152, - 15312,16168, 15320,15608, 15328,16264, 15336,16280, 15344,16296, - 15352,16120, 15416,15512, 15424,15616, 15432,15624, 15440,15632, - 15448,15640, 15456,15648, 15464,15656, 15472,15664, 15480,15768, - 15528,15536, 15544,16048, 15552,15744, 15560,15752, 15568,15760, - 15576,15672, 15584,15776, 15592,15600, 15600,15784, 15608,16184, - 15672,15768, 15736,15832, 15784,15792, 15800,16304, 15848,15856, - 15880,16000, 15864,16248, 15888,16000, 15896,16008, 15904,16000, - 15912,16016, 15920,16008, 15928,16024, 15936,16128, 15944,16160, - 15952,16256, 15960,16288, 15968,16136, 15976,16168, 15984,16264, - 15992,16296, 16008,16032, 16024,16040, 16064,16144, 16040,16048, - 16072,16176, 16080,16272, 16088,16304, 16096,16152, 16104,16184, - 16112,16280, 16136,16256, 16120,16312, 16144,16256, 16152,16264, - 16160,16256, 16168,16272, 16176,16264, 16184,16280, 16200,16208, - 16208,16224, 16216,16240, 16224,16320, 16232,16336, 16240,16352, - 16248,16368, 16264,16288, 16280,16296, 16296,16304, 16344,16368, - 16328,16352, 16360,16368 -}; - -const uint16_t armBitRevIndexTable4096[ARMBITREVINDEXTABLE_4096_TABLE_LENGTH] = -{ - /* radix 8, size 4032 */ - 8,4096, 16,8192, 24,12288, 32,16384, 40,20480, 48,24576, 56,28672, 64,512, - 72,4608, 80,8704, 88,12800, 96,16896, 104,20992, 112,25088, 120,29184, - 128,1024, 136,5120, 144,9216, 152,13312, 160,17408, 168,21504, 176,25600, - 184,29696, 192,1536, 200,5632, 208,9728, 216,13824, 224,17920, 232,22016, - 240,26112, 248,30208, 256,2048, 264,6144, 272,10240, 280,14336, 288,18432, - 296,22528, 304,26624, 312,30720, 320,2560, 328,6656, 336,10752, 344,14848, - 352,18944, 360,23040, 368,27136, 376,31232, 384,3072, 392,7168, 400,11264, - 408,15360, 416,19456, 424,23552, 432,27648, 440,31744, 448,3584, 456,7680, - 464,11776, 472,15872, 480,19968, 488,24064, 496,28160, 504,32256, 520,4160, - 528,8256, 536,12352, 544,16448, 552,20544, 560,24640, 568,28736, 584,4672, - 592,8768, 600,12864, 608,16960, 616,21056, 624,25152, 632,29248, 640,1088, - 648,5184, 656,9280, 664,13376, 672,17472, 680,21568, 688,25664, 696,29760, - 704,1600, 712,5696, 720,9792, 728,13888, 736,17984, 744,22080, 752,26176, - 760,30272, 768,2112, 776,6208, 784,10304, 792,14400, 800,18496, 808,22592, - 816,26688, 824,30784, 832,2624, 840,6720, 848,10816, 856,14912, 864,19008, - 872,23104, 880,27200, 888,31296, 896,3136, 904,7232, 912,11328, 920,15424, - 928,19520, 936,23616, 944,27712, 952,31808, 960,3648, 968,7744, 976,11840, - 984,15936, 992,20032, 1000,24128, 1008,28224, 1016,32320, 1032,4224, - 1040,8320, 1048,12416, 1056,16512, 1064,20608, 1072,24704, 1080,28800, - 1096,4736, 1104,8832, 1112,12928, 1120,17024, 1128,21120, 1136,25216, - 1144,29312, 1160,5248, 1168,9344, 1176,13440, 1184,17536, 1192,21632, - 1200,25728, 1208,29824, 1216,1664, 1224,5760, 1232,9856, 1240,13952, - 1248,18048, 1256,22144, 1264,26240, 1272,30336, 1280,2176, 1288,6272, - 1296,10368, 1304,14464, 1312,18560, 1320,22656, 1328,26752, 1336,30848, - 1344,2688, 1352,6784, 1360,10880, 1368,14976, 1376,19072, 1384,23168, - 1392,27264, 1400,31360, 1408,3200, 1416,7296, 1424,11392, 1432,15488, - 1440,19584, 1448,23680, 1456,27776, 1464,31872, 1472,3712, 1480,7808, - 1488,11904, 1496,16000, 1504,20096, 1512,24192, 1520,28288, 1528,32384, - 1544,4288, 1552,8384, 1560,12480, 1568,16576, 1576,20672, 1584,24768, - 1592,28864, 1608,4800, 1616,8896, 1624,12992, 1632,17088, 1640,21184, - 1648,25280, 1656,29376, 1672,5312, 1680,9408, 1688,13504, 1696,17600, - 1704,21696, 1712,25792, 1720,29888, 1736,5824, 1744,9920, 1752,14016, - 1760,18112, 1768,22208, 1776,26304, 1784,30400, 1792,2240, 1800,6336, - 1808,10432, 1816,14528, 1824,18624, 1832,22720, 1840,26816, 1848,30912, - 1856,2752, 1864,6848, 1872,10944, 1880,15040, 1888,19136, 1896,23232, - 1904,27328, 1912,31424, 1920,3264, 1928,7360, 1936,11456, 1944,15552, - 1952,19648, 1960,23744, 1968,27840, 1976,31936, 1984,3776, 1992,7872, - 2000,11968, 2008,16064, 2016,20160, 2024,24256, 2032,28352, 2040,32448, - 2056,4352, 2064,8448, 2072,12544, 2080,16640, 2088,20736, 2096,24832, - 2104,28928, 2120,4864, 2128,8960, 2136,13056, 2144,17152, 2152,21248, - 2160,25344, 2168,29440, 2184,5376, 2192,9472, 2200,13568, 2208,17664, - 2216,21760, 2224,25856, 2232,29952, 2248,5888, 2256,9984, 2264,14080, - 2272,18176, 2280,22272, 2288,26368, 2296,30464, 2312,6400, 2320,10496, - 2328,14592, 2336,18688, 2344,22784, 2352,26880, 2360,30976, 2368,2816, - 2376,6912, 2384,11008, 2392,15104, 2400,19200, 2408,23296, 2416,27392, - 2424,31488, 2432,3328, 2440,7424, 2448,11520, 2456,15616, 2464,19712, - 2472,23808, 2480,27904, 2488,32000, 2496,3840, 2504,7936, 2512,12032, - 2520,16128, 2528,20224, 2536,24320, 2544,28416, 2552,32512, 2568,4416, - 2576,8512, 2584,12608, 2592,16704, 2600,20800, 2608,24896, 2616,28992, - 2632,4928, 2640,9024, 2648,13120, 2656,17216, 2664,21312, 2672,25408, - 2680,29504, 2696,5440, 2704,9536, 2712,13632, 2720,17728, 2728,21824, - 2736,25920, 2744,30016, 2760,5952, 2768,10048, 2776,14144, 2784,18240, - 2792,22336, 2800,26432, 2808,30528, 2824,6464, 2832,10560, 2840,14656, - 2848,18752, 2856,22848, 2864,26944, 2872,31040, 2888,6976, 2896,11072, - 2904,15168, 2912,19264, 2920,23360, 2928,27456, 2936,31552, 2944,3392, - 2952,7488, 2960,11584, 2968,15680, 2976,19776, 2984,23872, 2992,27968, - 3000,32064, 3008,3904, 3016,8000, 3024,12096, 3032,16192, 3040,20288, - 3048,24384, 3056,28480, 3064,32576, 3080,4480, 3088,8576, 3096,12672, - 3104,16768, 3112,20864, 3120,24960, 3128,29056, 3144,4992, 3152,9088, - 3160,13184, 3168,17280, 3176,21376, 3184,25472, 3192,29568, 3208,5504, - 3216,9600, 3224,13696, 3232,17792, 3240,21888, 3248,25984, 3256,30080, - 3272,6016, 3280,10112, 3288,14208, 3296,18304, 3304,22400, 3312,26496, - 3320,30592, 3336,6528, 3344,10624, 3352,14720, 3360,18816, 3368,22912, - 3376,27008, 3384,31104, 3400,7040, 3408,11136, 3416,15232, 3424,19328, - 3432,23424, 3440,27520, 3448,31616, 3464,7552, 3472,11648, 3480,15744, - 3488,19840, 3496,23936, 3504,28032, 3512,32128, 3520,3968, 3528,8064, - 3536,12160, 3544,16256, 3552,20352, 3560,24448, 3568,28544, 3576,32640, - 3592,4544, 3600,8640, 3608,12736, 3616,16832, 3624,20928, 3632,25024, - 3640,29120, 3656,5056, 3664,9152, 3672,13248, 3680,17344, 3688,21440, - 3696,25536, 3704,29632, 3720,5568, 3728,9664, 3736,13760, 3744,17856, - 3752,21952, 3760,26048, 3768,30144, 3784,6080, 3792,10176, 3800,14272, - 3808,18368, 3816,22464, 3824,26560, 3832,30656, 3848,6592, 3856,10688, - 3864,14784, 3872,18880, 3880,22976, 3888,27072, 3896,31168, 3912,7104, - 3920,11200, 3928,15296, 3936,19392, 3944,23488, 3952,27584, 3960,31680, - 3976,7616, 3984,11712, 3992,15808, 4000,19904, 4008,24000, 4016,28096, - 4024,32192, 4040,8128, 4048,12224, 4056,16320, 4064,20416, 4072,24512, - 4080,28608, 4088,32704, 4112,8200, 4120,12296, 4128,16392, 4136,20488, - 4144,24584, 4152,28680, 4168,4616, 4176,8712, 4184,12808, 4192,16904, - 4200,21000, 4208,25096, 4216,29192, 4232,5128, 4240,9224, 4248,13320, - 4256,17416, 4264,21512, 4272,25608, 4280,29704, 4296,5640, 4304,9736, - 4312,13832, 4320,17928, 4328,22024, 4336,26120, 4344,30216, 4360,6152, - 4368,10248, 4376,14344, 4384,18440, 4392,22536, 4400,26632, 4408,30728, - 4424,6664, 4432,10760, 4440,14856, 4448,18952, 4456,23048, 4464,27144, - 4472,31240, 4488,7176, 4496,11272, 4504,15368, 4512,19464, 4520,23560, - 4528,27656, 4536,31752, 4552,7688, 4560,11784, 4568,15880, 4576,19976, - 4584,24072, 4592,28168, 4600,32264, 4624,8264, 4632,12360, 4640,16456, - 4648,20552, 4656,24648, 4664,28744, 4688,8776, 4696,12872, 4704,16968, - 4712,21064, 4720,25160, 4728,29256, 4744,5192, 4752,9288, 4760,13384, - 4768,17480, 4776,21576, 4784,25672, 4792,29768, 4808,5704, 4816,9800, - 4824,13896, 4832,17992, 4840,22088, 4848,26184, 4856,30280, 4872,6216, - 4880,10312, 4888,14408, 4896,18504, 4904,22600, 4912,26696, 4920,30792, - 4936,6728, 4944,10824, 4952,14920, 4960,19016, 4968,23112, 4976,27208, - 4984,31304, 5000,7240, 5008,11336, 5016,15432, 5024,19528, 5032,23624, - 5040,27720, 5048,31816, 5064,7752, 5072,11848, 5080,15944, 5088,20040, - 5096,24136, 5104,28232, 5112,32328, 5136,8328, 5144,12424, 5152,16520, - 5160,20616, 5168,24712, 5176,28808, 5200,8840, 5208,12936, 5216,17032, - 5224,21128, 5232,25224, 5240,29320, 5264,9352, 5272,13448, 5280,17544, - 5288,21640, 5296,25736, 5304,29832, 5320,5768, 5328,9864, 5336,13960, - 5344,18056, 5352,22152, 5360,26248, 5368,30344, 5384,6280, 5392,10376, - 5400,14472, 5408,18568, 5416,22664, 5424,26760, 5432,30856, 5448,6792, - 5456,10888, 5464,14984, 5472,19080, 5480,23176, 5488,27272, 5496,31368, - 5512,7304, 5520,11400, 5528,15496, 5536,19592, 5544,23688, 5552,27784, - 5560,31880, 5576,7816, 5584,11912, 5592,16008, 5600,20104, 5608,24200, - 5616,28296, 5624,32392, 5648,8392, 5656,12488, 5664,16584, 5672,20680, - 5680,24776, 5688,28872, 5712,8904, 5720,13000, 5728,17096, 5736,21192, - 5744,25288, 5752,29384, 5776,9416, 5784,13512, 5792,17608, 5800,21704, - 5808,25800, 5816,29896, 5840,9928, 5848,14024, 5856,18120, 5864,22216, - 5872,26312, 5880,30408, 5896,6344, 5904,10440, 5912,14536, 5920,18632, - 5928,22728, 5936,26824, 5944,30920, 5960,6856, 5968,10952, 5976,15048, - 5984,19144, 5992,23240, 6000,27336, 6008,31432, 6024,7368, 6032,11464, - 6040,15560, 6048,19656, 6056,23752, 6064,27848, 6072,31944, 6088,7880, - 6096,11976, 6104,16072, 6112,20168, 6120,24264, 6128,28360, 6136,32456, - 6160,8456, 6168,12552, 6176,16648, 6184,20744, 6192,24840, 6200,28936, - 6224,8968, 6232,13064, 6240,17160, 6248,21256, 6256,25352, 6264,29448, - 6288,9480, 6296,13576, 6304,17672, 6312,21768, 6320,25864, 6328,29960, - 6352,9992, 6360,14088, 6368,18184, 6376,22280, 6384,26376, 6392,30472, - 6416,10504, 6424,14600, 6432,18696, 6440,22792, 6448,26888, 6456,30984, - 6472,6920, 6480,11016, 6488,15112, 6496,19208, 6504,23304, 6512,27400, - 6520,31496, 6536,7432, 6544,11528, 6552,15624, 6560,19720, 6568,23816, - 6576,27912, 6584,32008, 6600,7944, 6608,12040, 6616,16136, 6624,20232, - 6632,24328, 6640,28424, 6648,32520, 6672,8520, 6680,12616, 6688,16712, - 6696,20808, 6704,24904, 6712,29000, 6736,9032, 6744,13128, 6752,17224, - 6760,21320, 6768,25416, 6776,29512, 6800,9544, 6808,13640, 6816,17736, - 6824,21832, 6832,25928, 6840,30024, 6864,10056, 6872,14152, 6880,18248, - 6888,22344, 6896,26440, 6904,30536, 6928,10568, 6936,14664, 6944,18760, - 6952,22856, 6960,26952, 6968,31048, 6992,11080, 7000,15176, 7008,19272, - 7016,23368, 7024,27464, 7032,31560, 7048,7496, 7056,11592, 7064,15688, - 7072,19784, 7080,23880, 7088,27976, 7096,32072, 7112,8008, 7120,12104, - 7128,16200, 7136,20296, 7144,24392, 7152,28488, 7160,32584, 7184,8584, - 7192,12680, 7200,16776, 7208,20872, 7216,24968, 7224,29064, 7248,9096, - 7256,13192, 7264,17288, 7272,21384, 7280,25480, 7288,29576, 7312,9608, - 7320,13704, 7328,17800, 7336,21896, 7344,25992, 7352,30088, 7376,10120, - 7384,14216, 7392,18312, 7400,22408, 7408,26504, 7416,30600, 7440,10632, - 7448,14728, 7456,18824, 7464,22920, 7472,27016, 7480,31112, 7504,11144, - 7512,15240, 7520,19336, 7528,23432, 7536,27528, 7544,31624, 7568,11656, - 7576,15752, 7584,19848, 7592,23944, 7600,28040, 7608,32136, 7624,8072, - 7632,12168, 7640,16264, 7648,20360, 7656,24456, 7664,28552, 7672,32648, - 7696,8648, 7704,12744, 7712,16840, 7720,20936, 7728,25032, 7736,29128, - 7760,9160, 7768,13256, 7776,17352, 7784,21448, 7792,25544, 7800,29640, - 7824,9672, 7832,13768, 7840,17864, 7848,21960, 7856,26056, 7864,30152, - 7888,10184, 7896,14280, 7904,18376, 7912,22472, 7920,26568, 7928,30664, - 7952,10696, 7960,14792, 7968,18888, 7976,22984, 7984,27080, 7992,31176, - 8016,11208, 8024,15304, 8032,19400, 8040,23496, 8048,27592, 8056,31688, - 8080,11720, 8088,15816, 8096,19912, 8104,24008, 8112,28104, 8120,32200, - 8144,12232, 8152,16328, 8160,20424, 8168,24520, 8176,28616, 8184,32712, - 8216,12304, 8224,16400, 8232,20496, 8240,24592, 8248,28688, 8272,8720, - 8280,12816, 8288,16912, 8296,21008, 8304,25104, 8312,29200, 8336,9232, - 8344,13328, 8352,17424, 8360,21520, 8368,25616, 8376,29712, 8400,9744, - 8408,13840, 8416,17936, 8424,22032, 8432,26128, 8440,30224, 8464,10256, - 8472,14352, 8480,18448, 8488,22544, 8496,26640, 8504,30736, 8528,10768, - 8536,14864, 8544,18960, 8552,23056, 8560,27152, 8568,31248, 8592,11280, - 8600,15376, 8608,19472, 8616,23568, 8624,27664, 8632,31760, 8656,11792, - 8664,15888, 8672,19984, 8680,24080, 8688,28176, 8696,32272, 8728,12368, - 8736,16464, 8744,20560, 8752,24656, 8760,28752, 8792,12880, 8800,16976, - 8808,21072, 8816,25168, 8824,29264, 8848,9296, 8856,13392, 8864,17488, - 8872,21584, 8880,25680, 8888,29776, 8912,9808, 8920,13904, 8928,18000, - 8936,22096, 8944,26192, 8952,30288, 8976,10320, 8984,14416, 8992,18512, - 9000,22608, 9008,26704, 9016,30800, 9040,10832, 9048,14928, 9056,19024, - 9064,23120, 9072,27216, 9080,31312, 9104,11344, 9112,15440, 9120,19536, - 9128,23632, 9136,27728, 9144,31824, 9168,11856, 9176,15952, 9184,20048, - 9192,24144, 9200,28240, 9208,32336, 9240,12432, 9248,16528, 9256,20624, - 9264,24720, 9272,28816, 9304,12944, 9312,17040, 9320,21136, 9328,25232, - 9336,29328, 9368,13456, 9376,17552, 9384,21648, 9392,25744, 9400,29840, - 9424,9872, 9432,13968, 9440,18064, 9448,22160, 9456,26256, 9464,30352, - 9488,10384, 9496,14480, 9504,18576, 9512,22672, 9520,26768, 9528,30864, - 9552,10896, 9560,14992, 9568,19088, 9576,23184, 9584,27280, 9592,31376, - 9616,11408, 9624,15504, 9632,19600, 9640,23696, 9648,27792, 9656,31888, - 9680,11920, 9688,16016, 9696,20112, 9704,24208, 9712,28304, 9720,32400, - 9752,12496, 9760,16592, 9768,20688, 9776,24784, 9784,28880, 9816,13008, - 9824,17104, 9832,21200, 9840,25296, 9848,29392, 9880,13520, 9888,17616, - 9896,21712, 9904,25808, 9912,29904, 9944,14032, 9952,18128, 9960,22224, - 9968,26320, 9976,30416, 10000,10448, 10008,14544, 10016,18640, 10024,22736, - 10032,26832, 10040,30928, 10064,10960, 10072,15056, 10080,19152, - 10088,23248, 10096,27344, 10104,31440, 10128,11472, 10136,15568, - 10144,19664, 10152,23760, 10160,27856, 10168,31952, 10192,11984, - 10200,16080, 10208,20176, 10216,24272, 10224,28368, 10232,32464, - 10264,12560, 10272,16656, 10280,20752, 10288,24848, 10296,28944, - 10328,13072, 10336,17168, 10344,21264, 10352,25360, 10360,29456, - 10392,13584, 10400,17680, 10408,21776, 10416,25872, 10424,29968, - 10456,14096, 10464,18192, 10472,22288, 10480,26384, 10488,30480, - 10520,14608, 10528,18704, 10536,22800, 10544,26896, 10552,30992, - 10576,11024, 10584,15120, 10592,19216, 10600,23312, 10608,27408, - 10616,31504, 10640,11536, 10648,15632, 10656,19728, 10664,23824, - 10672,27920, 10680,32016, 10704,12048, 10712,16144, 10720,20240, - 10728,24336, 10736,28432, 10744,32528, 10776,12624, 10784,16720, - 10792,20816, 10800,24912, 10808,29008, 10840,13136, 10848,17232, - 10856,21328, 10864,25424, 10872,29520, 10904,13648, 10912,17744, - 10920,21840, 10928,25936, 10936,30032, 10968,14160, 10976,18256, - 10984,22352, 10992,26448, 11000,30544, 11032,14672, 11040,18768, - 11048,22864, 11056,26960, 11064,31056, 11096,15184, 11104,19280, - 11112,23376, 11120,27472, 11128,31568, 11152,11600, 11160,15696, - 11168,19792, 11176,23888, 11184,27984, 11192,32080, 11216,12112, - 11224,16208, 11232,20304, 11240,24400, 11248,28496, 11256,32592, - 11288,12688, 11296,16784, 11304,20880, 11312,24976, 11320,29072, - 11352,13200, 11360,17296, 11368,21392, 11376,25488, 11384,29584, - 11416,13712, 11424,17808, 11432,21904, 11440,26000, 11448,30096, - 11480,14224, 11488,18320, 11496,22416, 11504,26512, 11512,30608, - 11544,14736, 11552,18832, 11560,22928, 11568,27024, 11576,31120, - 11608,15248, 11616,19344, 11624,23440, 11632,27536, 11640,31632, - 11672,15760, 11680,19856, 11688,23952, 11696,28048, 11704,32144, - 11728,12176, 11736,16272, 11744,20368, 11752,24464, 11760,28560, - 11768,32656, 11800,12752, 11808,16848, 11816,20944, 11824,25040, - 11832,29136, 11864,13264, 11872,17360, 11880,21456, 11888,25552, - 11896,29648, 11928,13776, 11936,17872, 11944,21968, 11952,26064, - 11960,30160, 11992,14288, 12000,18384, 12008,22480, 12016,26576, - 12024,30672, 12056,14800, 12064,18896, 12072,22992, 12080,27088, - 12088,31184, 12120,15312, 12128,19408, 12136,23504, 12144,27600, - 12152,31696, 12184,15824, 12192,19920, 12200,24016, 12208,28112, - 12216,32208, 12248,16336, 12256,20432, 12264,24528, 12272,28624, - 12280,32720, 12320,16408, 12328,20504, 12336,24600, 12344,28696, - 12376,12824, 12384,16920, 12392,21016, 12400,25112, 12408,29208, - 12440,13336, 12448,17432, 12456,21528, 12464,25624, 12472,29720, - 12504,13848, 12512,17944, 12520,22040, 12528,26136, 12536,30232, - 12568,14360, 12576,18456, 12584,22552, 12592,26648, 12600,30744, - 12632,14872, 12640,18968, 12648,23064, 12656,27160, 12664,31256, - 12696,15384, 12704,19480, 12712,23576, 12720,27672, 12728,31768, - 12760,15896, 12768,19992, 12776,24088, 12784,28184, 12792,32280, - 12832,16472, 12840,20568, 12848,24664, 12856,28760, 12896,16984, - 12904,21080, 12912,25176, 12920,29272, 12952,13400, 12960,17496, - 12968,21592, 12976,25688, 12984,29784, 13016,13912, 13024,18008, - 13032,22104, 13040,26200, 13048,30296, 13080,14424, 13088,18520, - 13096,22616, 13104,26712, 13112,30808, 13144,14936, 13152,19032, - 13160,23128, 13168,27224, 13176,31320, 13208,15448, 13216,19544, - 13224,23640, 13232,27736, 13240,31832, 13272,15960, 13280,20056, - 13288,24152, 13296,28248, 13304,32344, 13344,16536, 13352,20632, - 13360,24728, 13368,28824, 13408,17048, 13416,21144, 13424,25240, - 13432,29336, 13472,17560, 13480,21656, 13488,25752, 13496,29848, - 13528,13976, 13536,18072, 13544,22168, 13552,26264, 13560,30360, - 13592,14488, 13600,18584, 13608,22680, 13616,26776, 13624,30872, - 13656,15000, 13664,19096, 13672,23192, 13680,27288, 13688,31384, - 13720,15512, 13728,19608, 13736,23704, 13744,27800, 13752,31896, - 13784,16024, 13792,20120, 13800,24216, 13808,28312, 13816,32408, - 13856,16600, 13864,20696, 13872,24792, 13880,28888, 13920,17112, - 13928,21208, 13936,25304, 13944,29400, 13984,17624, 13992,21720, - 14000,25816, 14008,29912, 14048,18136, 14056,22232, 14064,26328, - 14072,30424, 14104,14552, 14112,18648, 14120,22744, 14128,26840, - 14136,30936, 14168,15064, 14176,19160, 14184,23256, 14192,27352, - 14200,31448, 14232,15576, 14240,19672, 14248,23768, 14256,27864, - 14264,31960, 14296,16088, 14304,20184, 14312,24280, 14320,28376, - 14328,32472, 14368,16664, 14376,20760, 14384,24856, 14392,28952, - 14432,17176, 14440,21272, 14448,25368, 14456,29464, 14496,17688, - 14504,21784, 14512,25880, 14520,29976, 14560,18200, 14568,22296, - 14576,26392, 14584,30488, 14624,18712, 14632,22808, 14640,26904, - 14648,31000, 14680,15128, 14688,19224, 14696,23320, 14704,27416, - 14712,31512, 14744,15640, 14752,19736, 14760,23832, 14768,27928, - 14776,32024, 14808,16152, 14816,20248, 14824,24344, 14832,28440, - 14840,32536, 14880,16728, 14888,20824, 14896,24920, 14904,29016, - 14944,17240, 14952,21336, 14960,25432, 14968,29528, 15008,17752, - 15016,21848, 15024,25944, 15032,30040, 15072,18264, 15080,22360, - 15088,26456, 15096,30552, 15136,18776, 15144,22872, 15152,26968, - 15160,31064, 15200,19288, 15208,23384, 15216,27480, 15224,31576, - 15256,15704, 15264,19800, 15272,23896, 15280,27992, 15288,32088, - 15320,16216, 15328,20312, 15336,24408, 15344,28504, 15352,32600, - 15392,16792, 15400,20888, 15408,24984, 15416,29080, 15456,17304, - 15464,21400, 15472,25496, 15480,29592, 15520,17816, 15528,21912, - 15536,26008, 15544,30104, 15584,18328, 15592,22424, 15600,26520, - 15608,30616, 15648,18840, 15656,22936, 15664,27032, 15672,31128, - 15712,19352, 15720,23448, 15728,27544, 15736,31640, 15776,19864, - 15784,23960, 15792,28056, 15800,32152, 15832,16280, 15840,20376, - 15848,24472, 15856,28568, 15864,32664, 15904,16856, 15912,20952, - 15920,25048, 15928,29144, 15968,17368, 15976,21464, 15984,25560, - 15992,29656, 16032,17880, 16040,21976, 16048,26072, 16056,30168, - 16096,18392, 16104,22488, 16112,26584, 16120,30680, 16160,18904, - 16168,23000, 16176,27096, 16184,31192, 16224,19416, 16232,23512, - 16240,27608, 16248,31704, 16288,19928, 16296,24024, 16304,28120, - 16312,32216, 16352,20440, 16360,24536, 16368,28632, 16376,32728, - 16424,20512, 16432,24608, 16440,28704, 16480,16928, 16488,21024, - 16496,25120, 16504,29216, 16544,17440, 16552,21536, 16560,25632, - 16568,29728, 16608,17952, 16616,22048, 16624,26144, 16632,30240, - 16672,18464, 16680,22560, 16688,26656, 16696,30752, 16736,18976, - 16744,23072, 16752,27168, 16760,31264, 16800,19488, 16808,23584, - 16816,27680, 16824,31776, 16864,20000, 16872,24096, 16880,28192, - 16888,32288, 16936,20576, 16944,24672, 16952,28768, 17000,21088, - 17008,25184, 17016,29280, 17056,17504, 17064,21600, 17072,25696, - 17080,29792, 17120,18016, 17128,22112, 17136,26208, 17144,30304, - 17184,18528, 17192,22624, 17200,26720, 17208,30816, 17248,19040, - 17256,23136, 17264,27232, 17272,31328, 17312,19552, 17320,23648, - 17328,27744, 17336,31840, 17376,20064, 17384,24160, 17392,28256, - 17400,32352, 17448,20640, 17456,24736, 17464,28832, 17512,21152, - 17520,25248, 17528,29344, 17576,21664, 17584,25760, 17592,29856, - 17632,18080, 17640,22176, 17648,26272, 17656,30368, 17696,18592, - 17704,22688, 17712,26784, 17720,30880, 17760,19104, 17768,23200, - 17776,27296, 17784,31392, 17824,19616, 17832,23712, 17840,27808, - 17848,31904, 17888,20128, 17896,24224, 17904,28320, 17912,32416, - 17960,20704, 17968,24800, 17976,28896, 18024,21216, 18032,25312, - 18040,29408, 18088,21728, 18096,25824, 18104,29920, 18152,22240, - 18160,26336, 18168,30432, 18208,18656, 18216,22752, 18224,26848, - 18232,30944, 18272,19168, 18280,23264, 18288,27360, 18296,31456, - 18336,19680, 18344,23776, 18352,27872, 18360,31968, 18400,20192, - 18408,24288, 18416,28384, 18424,32480, 18472,20768, 18480,24864, - 18488,28960, 18536,21280, 18544,25376, 18552,29472, 18600,21792, - 18608,25888, 18616,29984, 18664,22304, 18672,26400, 18680,30496, - 18728,22816, 18736,26912, 18744,31008, 18784,19232, 18792,23328, - 18800,27424, 18808,31520, 18848,19744, 18856,23840, 18864,27936, - 18872,32032, 18912,20256, 18920,24352, 18928,28448, 18936,32544, - 18984,20832, 18992,24928, 19000,29024, 19048,21344, 19056,25440, - 19064,29536, 19112,21856, 19120,25952, 19128,30048, 19176,22368, - 19184,26464, 19192,30560, 19240,22880, 19248,26976, 19256,31072, - 19304,23392, 19312,27488, 19320,31584, 19360,19808, 19368,23904, - 19376,28000, 19384,32096, 19424,20320, 19432,24416, 19440,28512, - 19448,32608, 19496,20896, 19504,24992, 19512,29088, 19560,21408, - 19568,25504, 19576,29600, 19624,21920, 19632,26016, 19640,30112, - 19688,22432, 19696,26528, 19704,30624, 19752,22944, 19760,27040, - 19768,31136, 19816,23456, 19824,27552, 19832,31648, 19880,23968, - 19888,28064, 19896,32160, 19936,20384, 19944,24480, 19952,28576, - 19960,32672, 20008,20960, 20016,25056, 20024,29152, 20072,21472, - 20080,25568, 20088,29664, 20136,21984, 20144,26080, 20152,30176, - 20200,22496, 20208,26592, 20216,30688, 20264,23008, 20272,27104, - 20280,31200, 20328,23520, 20336,27616, 20344,31712, 20392,24032, - 20400,28128, 20408,32224, 20456,24544, 20464,28640, 20472,32736, - 20528,24616, 20536,28712, 20584,21032, 20592,25128, 20600,29224, - 20648,21544, 20656,25640, 20664,29736, 20712,22056, 20720,26152, - 20728,30248, 20776,22568, 20784,26664, 20792,30760, 20840,23080, - 20848,27176, 20856,31272, 20904,23592, 20912,27688, 20920,31784, - 20968,24104, 20976,28200, 20984,32296, 21040,24680, 21048,28776, - 21104,25192, 21112,29288, 21160,21608, 21168,25704, 21176,29800, - 21224,22120, 21232,26216, 21240,30312, 21288,22632, 21296,26728, - 21304,30824, 21352,23144, 21360,27240, 21368,31336, 21416,23656, - 21424,27752, 21432,31848, 21480,24168, 21488,28264, 21496,32360, - 21552,24744, 21560,28840, 21616,25256, 21624,29352, 21680,25768, - 21688,29864, 21736,22184, 21744,26280, 21752,30376, 21800,22696, - 21808,26792, 21816,30888, 21864,23208, 21872,27304, 21880,31400, - 21928,23720, 21936,27816, 21944,31912, 21992,24232, 22000,28328, - 22008,32424, 22064,24808, 22072,28904, 22128,25320, 22136,29416, - 22192,25832, 22200,29928, 22256,26344, 22264,30440, 22312,22760, - 22320,26856, 22328,30952, 22376,23272, 22384,27368, 22392,31464, - 22440,23784, 22448,27880, 22456,31976, 22504,24296, 22512,28392, - 22520,32488, 22576,24872, 22584,28968, 22640,25384, 22648,29480, - 22704,25896, 22712,29992, 22768,26408, 22776,30504, 22832,26920, - 22840,31016, 22888,23336, 22896,27432, 22904,31528, 22952,23848, - 22960,27944, 22968,32040, 23016,24360, 23024,28456, 23032,32552, - 23088,24936, 23096,29032, 23152,25448, 23160,29544, 23216,25960, - 23224,30056, 23280,26472, 23288,30568, 23344,26984, 23352,31080, - 23408,27496, 23416,31592, 23464,23912, 23472,28008, 23480,32104, - 23528,24424, 23536,28520, 23544,32616, 23600,25000, 23608,29096, - 23664,25512, 23672,29608, 23728,26024, 23736,30120, 23792,26536, - 23800,30632, 23856,27048, 23864,31144, 23920,27560, 23928,31656, - 23984,28072, 23992,32168, 24040,24488, 24048,28584, 24056,32680, - 24112,25064, 24120,29160, 24176,25576, 24184,29672, 24240,26088, - 24248,30184, 24304,26600, 24312,30696, 24368,27112, 24376,31208, - 24432,27624, 24440,31720, 24496,28136, 24504,32232, 24560,28648, - 24568,32744, 24632,28720, 24688,25136, 24696,29232, 24752,25648, - 24760,29744, 24816,26160, 24824,30256, 24880,26672, 24888,30768, - 24944,27184, 24952,31280, 25008,27696, 25016,31792, 25072,28208, - 25080,32304, 25144,28784, 25208,29296, 25264,25712, 25272,29808, - 25328,26224, 25336,30320, 25392,26736, 25400,30832, 25456,27248, - 25464,31344, 25520,27760, 25528,31856, 25584,28272, 25592,32368, - 25656,28848, 25720,29360, 25784,29872, 25840,26288, 25848,30384, - 25904,26800, 25912,30896, 25968,27312, 25976,31408, 26032,27824, - 26040,31920, 26096,28336, 26104,32432, 26168,28912, 26232,29424, - 26296,29936, 26360,30448, 26416,26864, 26424,30960, 26480,27376, - 26488,31472, 26544,27888, 26552,31984, 26608,28400, 26616,32496, - 26680,28976, 26744,29488, 26808,30000, 26872,30512, 26936,31024, - 26992,27440, 27000,31536, 27056,27952, 27064,32048, 27120,28464, - 27128,32560, 27192,29040, 27256,29552, 27320,30064, 27384,30576, - 27448,31088, 27512,31600, 27568,28016, 27576,32112, 27632,28528, - 27640,32624, 27704,29104, 27768,29616, 27832,30128, 27896,30640, - 27960,31152, 28024,31664, 28088,32176, 28144,28592, 28152,32688, - 28216,29168, 28280,29680, 28344,30192, 28408,30704, 28472,31216, - 28536,31728, 28600,32240, 28664,32752, 28792,29240, 28856,29752, - 28920,30264, 28984,30776, 29048,31288, 29112,31800, 29176,32312, - 29368,29816, 29432,30328, 29496,30840, 29560,31352, 29624,31864, - 29688,32376, 29944,30392, 30008,30904, 30072,31416, 30136,31928, - 30200,32440, 30520,30968, 30584,31480, 30648,31992, 30712,32504, - 31096,31544, 31160,32056, 31224,32568, 31672,32120, 31736,32632, - 32248,32696 -}; - - -const uint16_t armBitRevIndexTable_fixed_16[ARMBITREVINDEXTABLE_FIXED_16_TABLE_LENGTH] = -{ - /* radix 4, size 12 */ - 8,64, 16,32, 24,96, 40,80, 56,112, 88,104 -}; - -const uint16_t armBitRevIndexTable_fixed_32[ARMBITREVINDEXTABLE_FIXED_32_TABLE_LENGTH] = -{ - /* 4x2, size 24 */ - 8,128, 16,64, 24,192, 40,160, 48,96, 56,224, 72,144, - 88,208, 104,176, 120,240, 152,200, 184,232 -}; - -const uint16_t armBitRevIndexTable_fixed_64[ARMBITREVINDEXTABLE_FIXED_64_TABLE_LENGTH] = -{ - /* radix 4, size 56 */ - 8,256, 16,128, 24,384, 32,64, 40,320, 48,192, 56,448, 72,288, 80,160, 88,416, 104,352, - 112,224, 120,480, 136,272, 152,400, 168,336, 176,208, 184,464, 200,304, 216,432, - 232,368, 248,496, 280,392, 296,328, 312,456, 344,424, 376,488, 440,472 -}; - -const uint16_t armBitRevIndexTable_fixed_128[ARMBITREVINDEXTABLE_FIXED_128_TABLE_LENGTH] = -{ - /* 4x2, size 112 */ - 8,512, 16,256, 24,768, 32,128, 40,640, 48,384, 56,896, 72,576, 80,320, 88,832, 96,192, - 104,704, 112,448, 120,960, 136,544, 144,288, 152,800, 168,672, 176,416, 184,928, 200,608, - 208,352, 216,864, 232,736, 240,480, 248,992, 264,528, 280,784, 296,656, 304,400, 312,912, - 328,592, 344,848, 360,720, 368,464, 376,976, 392,560, 408,816, 424,688, 440,944, 456,624, - 472,880, 488,752, 504,1008, 536,776, 552,648, 568,904, 600,840, 616,712, 632,968, - 664,808, 696,936, 728,872, 760,1000, 824,920, 888,984 -}; - -const uint16_t armBitRevIndexTable_fixed_256[ARMBITREVINDEXTABLE_FIXED_256_TABLE_LENGTH] = -{ - /* radix 4, size 240 */ - 8,1024, 16,512, 24,1536, 32,256, 40,1280, 48,768, 56,1792, 64,128, 72,1152, 80,640, - 88,1664, 96,384, 104,1408, 112,896, 120,1920, 136,1088, 144,576, 152,1600, 160,320, - 168,1344, 176,832, 184,1856, 200,1216, 208,704, 216,1728, 224,448, 232,1472, 240,960, - 248,1984, 264,1056, 272,544, 280,1568, 296,1312, 304,800, 312,1824, 328,1184, 336,672, - 344,1696, 352,416, 360,1440, 368,928, 376,1952, 392,1120, 400,608, 408,1632, 424,1376, - 432,864, 440,1888, 456,1248, 464,736, 472,1760, 488,1504, 496,992, 504,2016, 520,1040, - 536,1552, 552,1296, 560,784, 568,1808, 584,1168, 592,656, 600,1680, 616,1424, 624,912, - 632,1936, 648,1104, 664,1616, 680,1360, 688,848, 696,1872, 712,1232, 728,1744, 744,1488, - 752,976, 760,2000, 776,1072, 792,1584, 808,1328, 824,1840, 840,1200, 856,1712, 872,1456, - 880,944, 888,1968, 904,1136, 920,1648, 936,1392, 952,1904, 968,1264, 984,1776, 1000,1520, - 1016,2032, 1048,1544, 1064,1288, 1080,1800, 1096,1160, 1112,1672, 1128,1416, 1144,1928, - 1176,1608, 1192,1352, 1208,1864, 1240,1736, 1256,1480, 1272,1992, 1304,1576, 1336,1832, - 1368,1704, 1384,1448, 1400,1960, 1432,1640, 1464,1896, 1496,1768, 1528,2024, 1592,1816, - 1624,1688, 1656,1944, 1720,1880, 1784,2008, 1912,1976 -}; - -const uint16_t armBitRevIndexTable_fixed_512[ARMBITREVINDEXTABLE_FIXED_512_TABLE_LENGTH] = -{ - /* 4x2, size 480 */ - 8,2048, 16,1024, 24,3072, 32,512, 40,2560, 48,1536, 56,3584, 64,256, 72,2304, 80,1280, - 88,3328, 96,768, 104,2816, 112,1792, 120,3840, 136,2176, 144,1152, 152,3200, 160,640, - 168,2688, 176,1664, 184,3712, 192,384, 200,2432, 208,1408, 216,3456, 224,896, 232,2944, - 240,1920, 248,3968, 264,2112, 272,1088, 280,3136, 288,576, 296,2624, 304,1600, 312,3648, - 328,2368, 336,1344, 344,3392, 352,832, 360,2880, 368,1856, 376,3904, 392,2240, 400,1216, - 408,3264, 416,704, 424,2752, 432,1728, 440,3776, 456,2496, 464,1472, 472,3520, 480,960, - 488,3008, 496,1984, 504,4032, 520,2080, 528,1056, 536,3104, 552,2592, 560,1568, 568,3616, - 584,2336, 592,1312, 600,3360, 608,800, 616,2848, 624,1824, 632,3872, 648,2208, 656,1184, - 664,3232, 680,2720, 688,1696, 696,3744, 712,2464, 720,1440, 728,3488, 736,928, 744,2976, - 752,1952, 760,4000, 776,2144, 784,1120, 792,3168, 808,2656, 816,1632, 824,3680, 840,2400, - 848,1376, 856,3424, 872,2912, 880,1888, 888,3936, 904,2272, 912,1248, 920,3296, 936,2784, - 944,1760, 952,3808, 968,2528, 976,1504, 984,3552, 1000,3040, 1008,2016, 1016,4064, - 1032,2064, 1048,3088, 1064,2576, 1072,1552, 1080,3600, 1096,2320, 1104,1296, 1112,3344, - 1128,2832, 1136,1808, 1144,3856, 1160,2192, 1176,3216, 1192,2704, 1200,1680, 1208,3728, - 1224,2448, 1232,1424, 1240,3472, 1256,2960, 1264,1936, 1272,3984, 1288,2128, 1304,3152, - 1320,2640, 1328,1616, 1336,3664, 1352,2384, 1368,3408, 1384,2896, 1392,1872, 1400,3920, - 1416,2256, 1432,3280, 1448,2768, 1456,1744, 1464,3792, 1480,2512, 1496,3536, 1512,3024, - 1520,2000, 1528,4048, 1544,2096, 1560,3120, 1576,2608, 1592,3632, 1608,2352, 1624,3376, - 1640,2864, 1648,1840, 1656,3888, 1672,2224, 1688,3248, 1704,2736, 1720,3760, 1736,2480, - 1752,3504, 1768,2992, 1776,1968, 1784,4016, 1800,2160, 1816,3184, 1832,2672, 1848,3696, - 1864,2416, 1880,3440, 1896,2928, 1912,3952, 1928,2288, 1944,3312, 1960,2800, 1976,3824, - 1992,2544, 2008,3568, 2024,3056, 2040,4080, 2072,3080, 2088,2568, 2104,3592, 2120,2312, - 2136,3336, 2152,2824, 2168,3848, 2200,3208, 2216,2696, 2232,3720, 2248,2440, 2264,3464, - 2280,2952, 2296,3976, 2328,3144, 2344,2632, 2360,3656, 2392,3400, 2408,2888, 2424,3912, - 2456,3272, 2472,2760, 2488,3784, 2520,3528, 2536,3016, 2552,4040, 2584,3112, 2616,3624, - 2648,3368, 2664,2856, 2680,3880, 2712,3240, 2744,3752, 2776,3496, 2792,2984, 2808,4008, - 2840,3176, 2872,3688, 2904,3432, 2936,3944, 2968,3304, 3000,3816, 3032,3560, 3064,4072, - 3128,3608, 3160,3352, 3192,3864, 3256,3736, 3288,3480, 3320,3992, 3384,3672, 3448,3928, - 3512,3800, 3576,4056, 3704,3896, 3832,4024 -}; - -const uint16_t armBitRevIndexTable_fixed_1024[ARMBITREVINDEXTABLE_FIXED_1024_TABLE_LENGTH] = -{ - /* radix 4, size 992 */ - 8,4096, 16,2048, 24,6144, 32,1024, 40,5120, 48,3072, 56,7168, 64,512, 72,4608, - 80,2560, 88,6656, 96,1536, 104,5632, 112,3584, 120,7680, 128,256, 136,4352, - 144,2304, 152,6400, 160,1280, 168,5376, 176,3328, 184,7424, 192,768, 200,4864, - 208,2816, 216,6912, 224,1792, 232,5888, 240,3840, 248,7936, 264,4224, 272,2176, - 280,6272, 288,1152, 296,5248, 304,3200, 312,7296, 320,640, 328,4736, 336,2688, - 344,6784, 352,1664, 360,5760, 368,3712, 376,7808, 392,4480, 400,2432, 408,6528, - 416,1408, 424,5504, 432,3456, 440,7552, 448,896, 456,4992, 464,2944, 472,7040, - 480,1920, 488,6016, 496,3968, 504,8064, 520,4160, 528,2112, 536,6208, 544,1088, - 552,5184, 560,3136, 568,7232, 584,4672, 592,2624, 600,6720, 608,1600, 616,5696, - 624,3648, 632,7744, 648,4416, 656,2368, 664,6464, 672,1344, 680,5440, 688,3392, - 696,7488, 704,832, 712,4928, 720,2880, 728,6976, 736,1856, 744,5952, 752,3904, - 760,8000, 776,4288, 784,2240, 792,6336, 800,1216, 808,5312, 816,3264, 824,7360, - 840,4800, 848,2752, 856,6848, 864,1728, 872,5824, 880,3776, 888,7872, 904,4544, - 912,2496, 920,6592, 928,1472, 936,5568, 944,3520, 952,7616, 968,5056, 976,3008, - 984,7104, 992,1984, 1000,6080, 1008,4032, 1016,8128, 1032,4128, 1040,2080, - 1048,6176, 1064,5152, 1072,3104, 1080,7200, 1096,4640, 1104,2592, 1112,6688, - 1120,1568, 1128,5664, 1136,3616, 1144,7712, 1160,4384, 1168,2336, 1176,6432, - 1184,1312, 1192,5408, 1200,3360, 1208,7456, 1224,4896, 1232,2848, 1240,6944, - 1248,1824, 1256,5920, 1264,3872, 1272,7968, 1288,4256, 1296,2208, 1304,6304, - 1320,5280, 1328,3232, 1336,7328, 1352,4768, 1360,2720, 1368,6816, 1376,1696, - 1384,5792, 1392,3744, 1400,7840, 1416,4512, 1424,2464, 1432,6560, 1448,5536, - 1456,3488, 1464,7584, 1480,5024, 1488,2976, 1496,7072, 1504,1952, 1512,6048, - 1520,4000, 1528,8096, 1544,4192, 1552,2144, 1560,6240, 1576,5216, 1584,3168, - 1592,7264, 1608,4704, 1616,2656, 1624,6752, 1640,5728, 1648,3680, 1656,7776, - 1672,4448, 1680,2400, 1688,6496, 1704,5472, 1712,3424, 1720,7520, 1736,4960, - 1744,2912, 1752,7008, 1760,1888, 1768,5984, 1776,3936, 1784,8032, 1800,4320, - 1808,2272, 1816,6368, 1832,5344, 1840,3296, 1848,7392, 1864,4832, 1872,2784, - 1880,6880, 1896,5856, 1904,3808, 1912,7904, 1928,4576, 1936,2528, 1944,6624, - 1960,5600, 1968,3552, 1976,7648, 1992,5088, 2000,3040, 2008,7136, 2024,6112, - 2032,4064, 2040,8160, 2056,4112, 2072,6160, 2088,5136, 2096,3088, 2104,7184, - 2120,4624, 2128,2576, 2136,6672, 2152,5648, 2160,3600, 2168,7696, 2184,4368, - 2192,2320, 2200,6416, 2216,5392, 2224,3344, 2232,7440, 2248,4880, 2256,2832, - 2264,6928, 2280,5904, 2288,3856, 2296,7952, 2312,4240, 2328,6288, 2344,5264, - 2352,3216, 2360,7312, 2376,4752, 2384,2704, 2392,6800, 2408,5776, 2416,3728, - 2424,7824, 2440,4496, 2456,6544, 2472,5520, 2480,3472, 2488,7568, 2504,5008, - 2512,2960, 2520,7056, 2536,6032, 2544,3984, 2552,8080, 2568,4176, 2584,6224, - 2600,5200, 2608,3152, 2616,7248, 2632,4688, 2648,6736, 2664,5712, 2672,3664, - 2680,7760, 2696,4432, 2712,6480, 2728,5456, 2736,3408, 2744,7504, 2760,4944, - 2768,2896, 2776,6992, 2792,5968, 2800,3920, 2808,8016, 2824,4304, 2840,6352, - 2856,5328, 2864,3280, 2872,7376, 2888,4816, 2904,6864, 2920,5840, 2928,3792, - 2936,7888, 2952,4560, 2968,6608, 2984,5584, 2992,3536, 3000,7632, 3016,5072, - 3032,7120, 3048,6096, 3056,4048, 3064,8144, 3080,4144, 3096,6192, 3112,5168, - 3128,7216, 3144,4656, 3160,6704, 3176,5680, 3184,3632, 3192,7728, 3208,4400, - 3224,6448, 3240,5424, 3248,3376, 3256,7472, 3272,4912, 3288,6960, 3304,5936, - 3312,3888, 3320,7984, 3336,4272, 3352,6320, 3368,5296, 3384,7344, 3400,4784, - 3416,6832, 3432,5808, 3440,3760, 3448,7856, 3464,4528, 3480,6576, 3496,5552, - 3512,7600, 3528,5040, 3544,7088, 3560,6064, 3568,4016, 3576,8112, 3592,4208, - 3608,6256, 3624,5232, 3640,7280, 3656,4720, 3672,6768, 3688,5744, 3704,7792, - 3720,4464, 3736,6512, 3752,5488, 3768,7536, 3784,4976, 3800,7024, 3816,6000, - 3824,3952, 3832,8048, 3848,4336, 3864,6384, 3880,5360, 3896,7408, 3912,4848, - 3928,6896, 3944,5872, 3960,7920, 3976,4592, 3992,6640, 4008,5616, 4024,7664, - 4040,5104, 4056,7152, 4072,6128, 4088,8176, 4120,6152, 4136,5128, 4152,7176, - 4168,4616, 4184,6664, 4200,5640, 4216,7688, 4232,4360, 4248,6408, 4264,5384, - 4280,7432, 4296,4872, 4312,6920, 4328,5896, 4344,7944, 4376,6280, 4392,5256, - 4408,7304, 4424,4744, 4440,6792, 4456,5768, 4472,7816, 4504,6536, 4520,5512, - 4536,7560, 4552,5000, 4568,7048, 4584,6024, 4600,8072, 4632,6216, 4648,5192, - 4664,7240, 4696,6728, 4712,5704, 4728,7752, 4760,6472, 4776,5448, 4792,7496, - 4808,4936, 4824,6984, 4840,5960, 4856,8008, 4888,6344, 4904,5320, 4920,7368, - 4952,6856, 4968,5832, 4984,7880, 5016,6600, 5032,5576, 5048,7624, 5080,7112, - 5096,6088, 5112,8136, 5144,6184, 5176,7208, 5208,6696, 5224,5672, 5240,7720, - 5272,6440, 5288,5416, 5304,7464, 5336,6952, 5352,5928, 5368,7976, 5400,6312, - 5432,7336, 5464,6824, 5480,5800, 5496,7848, 5528,6568, 5560,7592, 5592,7080, - 5608,6056, 5624,8104, 5656,6248, 5688,7272, 5720,6760, 5752,7784, 5784,6504, - 5816,7528, 5848,7016, 5864,5992, 5880,8040, 5912,6376, 5944,7400, 5976,6888, - 6008,7912, 6040,6632, 6072,7656, 6104,7144, 6136,8168, 6200,7192, 6232,6680, - 6264,7704, 6296,6424, 6328,7448, 6360,6936, 6392,7960, 6456,7320, 6488,6808, - 6520,7832, 6584,7576, 6616,7064, 6648,8088, 6712,7256, 6776,7768, 6840,7512, - 6872,7000, 6904,8024, 6968,7384, 7032,7896, 7096,7640, 7160,8152, 7288,7736, - 7352,7480, 7416,7992, 7544,7864, 7672,8120, 7928,8056 -}; - -const uint16_t armBitRevIndexTable_fixed_2048[ARMBITREVINDEXTABLE_FIXED_2048_TABLE_LENGTH] = -{ - /* 4x2, size 1984 */ - 8,8192, 16,4096, 24,12288, 32,2048, 40,10240, 48,6144, 56,14336, 64,1024, - 72,9216, 80,5120, 88,13312, 96,3072, 104,11264, 112,7168, 120,15360, 128,512, - 136,8704, 144,4608, 152,12800, 160,2560, 168,10752, 176,6656, 184,14848, - 192,1536, 200,9728, 208,5632, 216,13824, 224,3584, 232,11776, 240,7680, - 248,15872, 264,8448, 272,4352, 280,12544, 288,2304, 296,10496, 304,6400, - 312,14592, 320,1280, 328,9472, 336,5376, 344,13568, 352,3328, 360,11520, - 368,7424, 376,15616, 384,768, 392,8960, 400,4864, 408,13056, 416,2816, - 424,11008, 432,6912, 440,15104, 448,1792, 456,9984, 464,5888, 472,14080, - 480,3840, 488,12032, 496,7936, 504,16128, 520,8320, 528,4224, 536,12416, - 544,2176, 552,10368, 560,6272, 568,14464, 576,1152, 584,9344, 592,5248, - 600,13440, 608,3200, 616,11392, 624,7296, 632,15488, 648,8832, 656,4736, - 664,12928, 672,2688, 680,10880, 688,6784, 696,14976, 704,1664, 712,9856, - 720,5760, 728,13952, 736,3712, 744,11904, 752,7808, 760,16000, 776,8576, - 784,4480, 792,12672, 800,2432, 808,10624, 816,6528, 824,14720, 832,1408, - 840,9600, 848,5504, 856,13696, 864,3456, 872,11648, 880,7552, 888,15744, - 904,9088, 912,4992, 920,13184, 928,2944, 936,11136, 944,7040, 952,15232, - 960,1920, 968,10112, 976,6016, 984,14208, 992,3968, 1000,12160, 1008,8064, - 1016,16256, 1032,8256, 1040,4160, 1048,12352, 1056,2112, 1064,10304, 1072,6208, - 1080,14400, 1096,9280, 1104,5184, 1112,13376, 1120,3136, 1128,11328, 1136,7232, - 1144,15424, 1160,8768, 1168,4672, 1176,12864, 1184,2624, 1192,10816, 1200,6720, - 1208,14912, 1216,1600, 1224,9792, 1232,5696, 1240,13888, 1248,3648, 1256,11840, - 1264,7744, 1272,15936, 1288,8512, 1296,4416, 1304,12608, 1312,2368, 1320,10560, - 1328,6464, 1336,14656, 1352,9536, 1360,5440, 1368,13632, 1376,3392, 1384,11584, - 1392,7488, 1400,15680, 1416,9024, 1424,4928, 1432,13120, 1440,2880, 1448,11072, - 1456,6976, 1464,15168, 1472,1856, 1480,10048, 1488,5952, 1496,14144, 1504,3904, - 1512,12096, 1520,8000, 1528,16192, 1544,8384, 1552,4288, 1560,12480, 1568,2240, - 1576,10432, 1584,6336, 1592,14528, 1608,9408, 1616,5312, 1624,13504, 1632,3264, - 1640,11456, 1648,7360, 1656,15552, 1672,8896, 1680,4800, 1688,12992, 1696,2752, - 1704,10944, 1712,6848, 1720,15040, 1736,9920, 1744,5824, 1752,14016, 1760,3776, - 1768,11968, 1776,7872, 1784,16064, 1800,8640, 1808,4544, 1816,12736, 1824,2496, - 1832,10688, 1840,6592, 1848,14784, 1864,9664, 1872,5568, 1880,13760, 1888,3520, - 1896,11712, 1904,7616, 1912,15808, 1928,9152, 1936,5056, 1944,13248, 1952,3008, - 1960,11200, 1968,7104, 1976,15296, 1992,10176, 2000,6080, 2008,14272, 2016,4032, - 2024,12224, 2032,8128, 2040,16320, 2056,8224, 2064,4128, 2072,12320, 2088,10272, - 2096,6176, 2104,14368, 2120,9248, 2128,5152, 2136,13344, 2144,3104, 2152,11296, - 2160,7200, 2168,15392, 2184,8736, 2192,4640, 2200,12832, 2208,2592, 2216,10784, - 2224,6688, 2232,14880, 2248,9760, 2256,5664, 2264,13856, 2272,3616, 2280,11808, - 2288,7712, 2296,15904, 2312,8480, 2320,4384, 2328,12576, 2344,10528, 2352,6432, - 2360,14624, 2376,9504, 2384,5408, 2392,13600, 2400,3360, 2408,11552, 2416,7456, - 2424,15648, 2440,8992, 2448,4896, 2456,13088, 2464,2848, 2472,11040, 2480,6944, - 2488,15136, 2504,10016, 2512,5920, 2520,14112, 2528,3872, 2536,12064, 2544,7968, - 2552,16160, 2568,8352, 2576,4256, 2584,12448, 2600,10400, 2608,6304, 2616,14496, - 2632,9376, 2640,5280, 2648,13472, 2656,3232, 2664,11424, 2672,7328, 2680,15520, - 2696,8864, 2704,4768, 2712,12960, 2728,10912, 2736,6816, 2744,15008, 2760,9888, - 2768,5792, 2776,13984, 2784,3744, 2792,11936, 2800,7840, 2808,16032, 2824,8608, - 2832,4512, 2840,12704, 2856,10656, 2864,6560, 2872,14752, 2888,9632, 2896,5536, - 2904,13728, 2912,3488, 2920,11680, 2928,7584, 2936,15776, 2952,9120, 2960,5024, - 2968,13216, 2984,11168, 2992,7072, 3000,15264, 3016,10144, 3024,6048, - 3032,14240, 3040,4000, 3048,12192, 3056,8096, 3064,16288, 3080,8288, 3088,4192, - 3096,12384, 3112,10336, 3120,6240, 3128,14432, 3144,9312, 3152,5216, 3160,13408, - 3176,11360, 3184,7264, 3192,15456, 3208,8800, 3216,4704, 3224,12896, 3240,10848, - 3248,6752, 3256,14944, 3272,9824, 3280,5728, 3288,13920, 3296,3680, 3304,11872, - 3312,7776, 3320,15968, 3336,8544, 3344,4448, 3352,12640, 3368,10592, 3376,6496, - 3384,14688, 3400,9568, 3408,5472, 3416,13664, 3432,11616, 3440,7520, 3448,15712, - 3464,9056, 3472,4960, 3480,13152, 3496,11104, 3504,7008, 3512,15200, 3528,10080, - 3536,5984, 3544,14176, 3552,3936, 3560,12128, 3568,8032, 3576,16224, 3592,8416, - 3600,4320, 3608,12512, 3624,10464, 3632,6368, 3640,14560, 3656,9440, 3664,5344, - 3672,13536, 3688,11488, 3696,7392, 3704,15584, 3720,8928, 3728,4832, 3736,13024, - 3752,10976, 3760,6880, 3768,15072, 3784,9952, 3792,5856, 3800,14048, 3816,12000, - 3824,7904, 3832,16096, 3848,8672, 3856,4576, 3864,12768, 3880,10720, 3888,6624, - 3896,14816, 3912,9696, 3920,5600, 3928,13792, 3944,11744, 3952,7648, 3960,15840, - 3976,9184, 3984,5088, 3992,13280, 4008,11232, 4016,7136, 4024,15328, 4040,10208, - 4048,6112, 4056,14304, 4072,12256, 4080,8160, 4088,16352, 4104,8208, 4120,12304, - 4136,10256, 4144,6160, 4152,14352, 4168,9232, 4176,5136, 4184,13328, 4200,11280, - 4208,7184, 4216,15376, 4232,8720, 4240,4624, 4248,12816, 4264,10768, 4272,6672, - 4280,14864, 4296,9744, 4304,5648, 4312,13840, 4328,11792, 4336,7696, 4344,15888, - 4360,8464, 4376,12560, 4392,10512, 4400,6416, 4408,14608, 4424,9488, 4432,5392, - 4440,13584, 4456,11536, 4464,7440, 4472,15632, 4488,8976, 4496,4880, 4504,13072, - 4520,11024, 4528,6928, 4536,15120, 4552,10000, 4560,5904, 4568,14096, - 4584,12048, 4592,7952, 4600,16144, 4616,8336, 4632,12432, 4648,10384, 4656,6288, - 4664,14480, 4680,9360, 4688,5264, 4696,13456, 4712,11408, 4720,7312, 4728,15504, - 4744,8848, 4760,12944, 4776,10896, 4784,6800, 4792,14992, 4808,9872, 4816,5776, - 4824,13968, 4840,11920, 4848,7824, 4856,16016, 4872,8592, 4888,12688, - 4904,10640, 4912,6544, 4920,14736, 4936,9616, 4944,5520, 4952,13712, 4968,11664, - 4976,7568, 4984,15760, 5000,9104, 5016,13200, 5032,11152, 5040,7056, 5048,15248, - 5064,10128, 5072,6032, 5080,14224, 5096,12176, 5104,8080, 5112,16272, 5128,8272, - 5144,12368, 5160,10320, 5168,6224, 5176,14416, 5192,9296, 5208,13392, - 5224,11344, 5232,7248, 5240,15440, 5256,8784, 5272,12880, 5288,10832, 5296,6736, - 5304,14928, 5320,9808, 5328,5712, 5336,13904, 5352,11856, 5360,7760, 5368,15952, - 5384,8528, 5400,12624, 5416,10576, 5424,6480, 5432,14672, 5448,9552, 5464,13648, - 5480,11600, 5488,7504, 5496,15696, 5512,9040, 5528,13136, 5544,11088, 5552,6992, - 5560,15184, 5576,10064, 5584,5968, 5592,14160, 5608,12112, 5616,8016, - 5624,16208, 5640,8400, 5656,12496, 5672,10448, 5680,6352, 5688,14544, 5704,9424, - 5720,13520, 5736,11472, 5744,7376, 5752,15568, 5768,8912, 5784,13008, - 5800,10960, 5808,6864, 5816,15056, 5832,9936, 5848,14032, 5864,11984, 5872,7888, - 5880,16080, 5896,8656, 5912,12752, 5928,10704, 5936,6608, 5944,14800, 5960,9680, - 5976,13776, 5992,11728, 6000,7632, 6008,15824, 6024,9168, 6040,13264, - 6056,11216, 6064,7120, 6072,15312, 6088,10192, 6104,14288, 6120,12240, - 6128,8144, 6136,16336, 6152,8240, 6168,12336, 6184,10288, 6200,14384, 6216,9264, - 6232,13360, 6248,11312, 6256,7216, 6264,15408, 6280,8752, 6296,12848, - 6312,10800, 6320,6704, 6328,14896, 6344,9776, 6360,13872, 6376,11824, 6384,7728, - 6392,15920, 6408,8496, 6424,12592, 6440,10544, 6456,14640, 6472,9520, - 6488,13616, 6504,11568, 6512,7472, 6520,15664, 6536,9008, 6552,13104, - 6568,11056, 6576,6960, 6584,15152, 6600,10032, 6616,14128, 6632,12080, - 6640,7984, 6648,16176, 6664,8368, 6680,12464, 6696,10416, 6712,14512, 6728,9392, - 6744,13488, 6760,11440, 6768,7344, 6776,15536, 6792,8880, 6808,12976, - 6824,10928, 6840,15024, 6856,9904, 6872,14000, 6888,11952, 6896,7856, - 6904,16048, 6920,8624, 6936,12720, 6952,10672, 6968,14768, 6984,9648, - 7000,13744, 7016,11696, 7024,7600, 7032,15792, 7048,9136, 7064,13232, - 7080,11184, 7096,15280, 7112,10160, 7128,14256, 7144,12208, 7152,8112, - 7160,16304, 7176,8304, 7192,12400, 7208,10352, 7224,14448, 7240,9328, - 7256,13424, 7272,11376, 7288,15472, 7304,8816, 7320,12912, 7336,10864, - 7352,14960, 7368,9840, 7384,13936, 7400,11888, 7408,7792, 7416,15984, 7432,8560, - 7448,12656, 7464,10608, 7480,14704, 7496,9584, 7512,13680, 7528,11632, - 7544,15728, 7560,9072, 7576,13168, 7592,11120, 7608,15216, 7624,10096, - 7640,14192, 7656,12144, 7664,8048, 7672,16240, 7688,8432, 7704,12528, - 7720,10480, 7736,14576, 7752,9456, 7768,13552, 7784,11504, 7800,15600, - 7816,8944, 7832,13040, 7848,10992, 7864,15088, 7880,9968, 7896,14064, - 7912,12016, 7928,16112, 7944,8688, 7960,12784, 7976,10736, 7992,14832, - 8008,9712, 8024,13808, 8040,11760, 8056,15856, 8072,9200, 8088,13296, - 8104,11248, 8120,15344, 8136,10224, 8152,14320, 8168,12272, 8184,16368, - 8216,12296, 8232,10248, 8248,14344, 8264,9224, 8280,13320, 8296,11272, - 8312,15368, 8328,8712, 8344,12808, 8360,10760, 8376,14856, 8392,9736, - 8408,13832, 8424,11784, 8440,15880, 8472,12552, 8488,10504, 8504,14600, - 8520,9480, 8536,13576, 8552,11528, 8568,15624, 8584,8968, 8600,13064, - 8616,11016, 8632,15112, 8648,9992, 8664,14088, 8680,12040, 8696,16136, - 8728,12424, 8744,10376, 8760,14472, 8776,9352, 8792,13448, 8808,11400, - 8824,15496, 8856,12936, 8872,10888, 8888,14984, 8904,9864, 8920,13960, - 8936,11912, 8952,16008, 8984,12680, 9000,10632, 9016,14728, 9032,9608, - 9048,13704, 9064,11656, 9080,15752, 9112,13192, 9128,11144, 9144,15240, - 9160,10120, 9176,14216, 9192,12168, 9208,16264, 9240,12360, 9256,10312, - 9272,14408, 9304,13384, 9320,11336, 9336,15432, 9368,12872, 9384,10824, - 9400,14920, 9416,9800, 9432,13896, 9448,11848, 9464,15944, 9496,12616, - 9512,10568, 9528,14664, 9560,13640, 9576,11592, 9592,15688, 9624,13128, - 9640,11080, 9656,15176, 9672,10056, 9688,14152, 9704,12104, 9720,16200, - 9752,12488, 9768,10440, 9784,14536, 9816,13512, 9832,11464, 9848,15560, - 9880,13000, 9896,10952, 9912,15048, 9944,14024, 9960,11976, 9976,16072, - 10008,12744, 10024,10696, 10040,14792, 10072,13768, 10088,11720, 10104,15816, - 10136,13256, 10152,11208, 10168,15304, 10200,14280, 10216,12232, 10232,16328, - 10264,12328, 10296,14376, 10328,13352, 10344,11304, 10360,15400, 10392,12840, - 10408,10792, 10424,14888, 10456,13864, 10472,11816, 10488,15912, 10520,12584, - 10552,14632, 10584,13608, 10600,11560, 10616,15656, 10648,13096, 10664,11048, - 10680,15144, 10712,14120, 10728,12072, 10744,16168, 10776,12456, 10808,14504, - 10840,13480, 10856,11432, 10872,15528, 10904,12968, 10936,15016, 10968,13992, - 10984,11944, 11000,16040, 11032,12712, 11064,14760, 11096,13736, 11112,11688, - 11128,15784, 11160,13224, 11192,15272, 11224,14248, 11240,12200, 11256,16296, - 11288,12392, 11320,14440, 11352,13416, 11384,15464, 11416,12904, 11448,14952, - 11480,13928, 11496,11880, 11512,15976, 11544,12648, 11576,14696, 11608,13672, - 11640,15720, 11672,13160, 11704,15208, 11736,14184, 11752,12136, 11768,16232, - 11800,12520, 11832,14568, 11864,13544, 11896,15592, 11928,13032, 11960,15080, - 11992,14056, 12024,16104, 12056,12776, 12088,14824, 12120,13800, 12152,15848, - 12184,13288, 12216,15336, 12248,14312, 12280,16360, 12344,14360, 12376,13336, - 12408,15384, 12440,12824, 12472,14872, 12504,13848, 12536,15896, 12600,14616, - 12632,13592, 12664,15640, 12696,13080, 12728,15128, 12760,14104, 12792,16152, - 12856,14488, 12888,13464, 12920,15512, 12984,15000, 13016,13976, 13048,16024, - 13112,14744, 13144,13720, 13176,15768, 13240,15256, 13272,14232, 13304,16280, - 13368,14424, 13432,15448, 13496,14936, 13528,13912, 13560,15960, 13624,14680, - 13688,15704, 13752,15192, 13784,14168, 13816,16216, 13880,14552, 13944,15576, - 14008,15064, 14072,16088, 14136,14808, 14200,15832, 14264,15320, 14328,16344, - 14456,15416, 14520,14904, 14584,15928, 14712,15672, 14776,15160, 14840,16184, - 14968,15544, 15096,16056, 15224,15800, 15352,16312, 15608,15992, 15864,16248 -}; - -const uint16_t armBitRevIndexTable_fixed_4096[ARMBITREVINDEXTABLE_FIXED_4096_TABLE_LENGTH] = -{ - /* radix 4, size 4032 */ - 8,16384, 16,8192, 24,24576, 32,4096, 40,20480, 48,12288, 56,28672, 64,2048, - 72,18432, 80,10240, 88,26624, 96,6144, 104,22528, 112,14336, 120,30720, - 128,1024, 136,17408, 144,9216, 152,25600, 160,5120, 168,21504, 176,13312, - 184,29696, 192,3072, 200,19456, 208,11264, 216,27648, 224,7168, 232,23552, - 240,15360, 248,31744, 256,512, 264,16896, 272,8704, 280,25088, 288,4608, - 296,20992, 304,12800, 312,29184, 320,2560, 328,18944, 336,10752, 344,27136, - 352,6656, 360,23040, 368,14848, 376,31232, 384,1536, 392,17920, 400,9728, - 408,26112, 416,5632, 424,22016, 432,13824, 440,30208, 448,3584, 456,19968, - 464,11776, 472,28160, 480,7680, 488,24064, 496,15872, 504,32256, 520,16640, - 528,8448, 536,24832, 544,4352, 552,20736, 560,12544, 568,28928, 576,2304, - 584,18688, 592,10496, 600,26880, 608,6400, 616,22784, 624,14592, 632,30976, - 640,1280, 648,17664, 656,9472, 664,25856, 672,5376, 680,21760, 688,13568, - 696,29952, 704,3328, 712,19712, 720,11520, 728,27904, 736,7424, 744,23808, - 752,15616, 760,32000, 776,17152, 784,8960, 792,25344, 800,4864, 808,21248, - 816,13056, 824,29440, 832,2816, 840,19200, 848,11008, 856,27392, 864,6912, - 872,23296, 880,15104, 888,31488, 896,1792, 904,18176, 912,9984, 920,26368, - 928,5888, 936,22272, 944,14080, 952,30464, 960,3840, 968,20224, 976,12032, - 984,28416, 992,7936, 1000,24320, 1008,16128, 1016,32512, 1032,16512, 1040,8320, - 1048,24704, 1056,4224, 1064,20608, 1072,12416, 1080,28800, 1088,2176, - 1096,18560, 1104,10368, 1112,26752, 1120,6272, 1128,22656, 1136,14464, - 1144,30848, 1160,17536, 1168,9344, 1176,25728, 1184,5248, 1192,21632, - 1200,13440, 1208,29824, 1216,3200, 1224,19584, 1232,11392, 1240,27776, - 1248,7296, 1256,23680, 1264,15488, 1272,31872, 1288,17024, 1296,8832, - 1304,25216, 1312,4736, 1320,21120, 1328,12928, 1336,29312, 1344,2688, - 1352,19072, 1360,10880, 1368,27264, 1376,6784, 1384,23168, 1392,14976, - 1400,31360, 1408,1664, 1416,18048, 1424,9856, 1432,26240, 1440,5760, 1448,22144, - 1456,13952, 1464,30336, 1472,3712, 1480,20096, 1488,11904, 1496,28288, - 1504,7808, 1512,24192, 1520,16000, 1528,32384, 1544,16768, 1552,8576, - 1560,24960, 1568,4480, 1576,20864, 1584,12672, 1592,29056, 1600,2432, - 1608,18816, 1616,10624, 1624,27008, 1632,6528, 1640,22912, 1648,14720, - 1656,31104, 1672,17792, 1680,9600, 1688,25984, 1696,5504, 1704,21888, - 1712,13696, 1720,30080, 1728,3456, 1736,19840, 1744,11648, 1752,28032, - 1760,7552, 1768,23936, 1776,15744, 1784,32128, 1800,17280, 1808,9088, - 1816,25472, 1824,4992, 1832,21376, 1840,13184, 1848,29568, 1856,2944, - 1864,19328, 1872,11136, 1880,27520, 1888,7040, 1896,23424, 1904,15232, - 1912,31616, 1928,18304, 1936,10112, 1944,26496, 1952,6016, 1960,22400, - 1968,14208, 1976,30592, 1984,3968, 1992,20352, 2000,12160, 2008,28544, - 2016,8064, 2024,24448, 2032,16256, 2040,32640, 2056,16448, 2064,8256, - 2072,24640, 2080,4160, 2088,20544, 2096,12352, 2104,28736, 2120,18496, - 2128,10304, 2136,26688, 2144,6208, 2152,22592, 2160,14400, 2168,30784, - 2184,17472, 2192,9280, 2200,25664, 2208,5184, 2216,21568, 2224,13376, - 2232,29760, 2240,3136, 2248,19520, 2256,11328, 2264,27712, 2272,7232, - 2280,23616, 2288,15424, 2296,31808, 2312,16960, 2320,8768, 2328,25152, - 2336,4672, 2344,21056, 2352,12864, 2360,29248, 2368,2624, 2376,19008, - 2384,10816, 2392,27200, 2400,6720, 2408,23104, 2416,14912, 2424,31296, - 2440,17984, 2448,9792, 2456,26176, 2464,5696, 2472,22080, 2480,13888, - 2488,30272, 2496,3648, 2504,20032, 2512,11840, 2520,28224, 2528,7744, - 2536,24128, 2544,15936, 2552,32320, 2568,16704, 2576,8512, 2584,24896, - 2592,4416, 2600,20800, 2608,12608, 2616,28992, 2632,18752, 2640,10560, - 2648,26944, 2656,6464, 2664,22848, 2672,14656, 2680,31040, 2696,17728, - 2704,9536, 2712,25920, 2720,5440, 2728,21824, 2736,13632, 2744,30016, 2752,3392, - 2760,19776, 2768,11584, 2776,27968, 2784,7488, 2792,23872, 2800,15680, - 2808,32064, 2824,17216, 2832,9024, 2840,25408, 2848,4928, 2856,21312, - 2864,13120, 2872,29504, 2888,19264, 2896,11072, 2904,27456, 2912,6976, - 2920,23360, 2928,15168, 2936,31552, 2952,18240, 2960,10048, 2968,26432, - 2976,5952, 2984,22336, 2992,14144, 3000,30528, 3008,3904, 3016,20288, - 3024,12096, 3032,28480, 3040,8000, 3048,24384, 3056,16192, 3064,32576, - 3080,16576, 3088,8384, 3096,24768, 3104,4288, 3112,20672, 3120,12480, - 3128,28864, 3144,18624, 3152,10432, 3160,26816, 3168,6336, 3176,22720, - 3184,14528, 3192,30912, 3208,17600, 3216,9408, 3224,25792, 3232,5312, - 3240,21696, 3248,13504, 3256,29888, 3272,19648, 3280,11456, 3288,27840, - 3296,7360, 3304,23744, 3312,15552, 3320,31936, 3336,17088, 3344,8896, - 3352,25280, 3360,4800, 3368,21184, 3376,12992, 3384,29376, 3400,19136, - 3408,10944, 3416,27328, 3424,6848, 3432,23232, 3440,15040, 3448,31424, - 3464,18112, 3472,9920, 3480,26304, 3488,5824, 3496,22208, 3504,14016, - 3512,30400, 3520,3776, 3528,20160, 3536,11968, 3544,28352, 3552,7872, - 3560,24256, 3568,16064, 3576,32448, 3592,16832, 3600,8640, 3608,25024, - 3616,4544, 3624,20928, 3632,12736, 3640,29120, 3656,18880, 3664,10688, - 3672,27072, 3680,6592, 3688,22976, 3696,14784, 3704,31168, 3720,17856, - 3728,9664, 3736,26048, 3744,5568, 3752,21952, 3760,13760, 3768,30144, - 3784,19904, 3792,11712, 3800,28096, 3808,7616, 3816,24000, 3824,15808, - 3832,32192, 3848,17344, 3856,9152, 3864,25536, 3872,5056, 3880,21440, - 3888,13248, 3896,29632, 3912,19392, 3920,11200, 3928,27584, 3936,7104, - 3944,23488, 3952,15296, 3960,31680, 3976,18368, 3984,10176, 3992,26560, - 4000,6080, 4008,22464, 4016,14272, 4024,30656, 4040,20416, 4048,12224, - 4056,28608, 4064,8128, 4072,24512, 4080,16320, 4088,32704, 4104,16416, - 4112,8224, 4120,24608, 4136,20512, 4144,12320, 4152,28704, 4168,18464, - 4176,10272, 4184,26656, 4192,6176, 4200,22560, 4208,14368, 4216,30752, - 4232,17440, 4240,9248, 4248,25632, 4256,5152, 4264,21536, 4272,13344, - 4280,29728, 4296,19488, 4304,11296, 4312,27680, 4320,7200, 4328,23584, - 4336,15392, 4344,31776, 4360,16928, 4368,8736, 4376,25120, 4384,4640, - 4392,21024, 4400,12832, 4408,29216, 4424,18976, 4432,10784, 4440,27168, - 4448,6688, 4456,23072, 4464,14880, 4472,31264, 4488,17952, 4496,9760, - 4504,26144, 4512,5664, 4520,22048, 4528,13856, 4536,30240, 4552,20000, - 4560,11808, 4568,28192, 4576,7712, 4584,24096, 4592,15904, 4600,32288, - 4616,16672, 4624,8480, 4632,24864, 4648,20768, 4656,12576, 4664,28960, - 4680,18720, 4688,10528, 4696,26912, 4704,6432, 4712,22816, 4720,14624, - 4728,31008, 4744,17696, 4752,9504, 4760,25888, 4768,5408, 4776,21792, - 4784,13600, 4792,29984, 4808,19744, 4816,11552, 4824,27936, 4832,7456, - 4840,23840, 4848,15648, 4856,32032, 4872,17184, 4880,8992, 4888,25376, - 4904,21280, 4912,13088, 4920,29472, 4936,19232, 4944,11040, 4952,27424, - 4960,6944, 4968,23328, 4976,15136, 4984,31520, 5000,18208, 5008,10016, - 5016,26400, 5024,5920, 5032,22304, 5040,14112, 5048,30496, 5064,20256, - 5072,12064, 5080,28448, 5088,7968, 5096,24352, 5104,16160, 5112,32544, - 5128,16544, 5136,8352, 5144,24736, 5160,20640, 5168,12448, 5176,28832, - 5192,18592, 5200,10400, 5208,26784, 5216,6304, 5224,22688, 5232,14496, - 5240,30880, 5256,17568, 5264,9376, 5272,25760, 5288,21664, 5296,13472, - 5304,29856, 5320,19616, 5328,11424, 5336,27808, 5344,7328, 5352,23712, - 5360,15520, 5368,31904, 5384,17056, 5392,8864, 5400,25248, 5416,21152, - 5424,12960, 5432,29344, 5448,19104, 5456,10912, 5464,27296, 5472,6816, - 5480,23200, 5488,15008, 5496,31392, 5512,18080, 5520,9888, 5528,26272, - 5536,5792, 5544,22176, 5552,13984, 5560,30368, 5576,20128, 5584,11936, - 5592,28320, 5600,7840, 5608,24224, 5616,16032, 5624,32416, 5640,16800, - 5648,8608, 5656,24992, 5672,20896, 5680,12704, 5688,29088, 5704,18848, - 5712,10656, 5720,27040, 5728,6560, 5736,22944, 5744,14752, 5752,31136, - 5768,17824, 5776,9632, 5784,26016, 5800,21920, 5808,13728, 5816,30112, - 5832,19872, 5840,11680, 5848,28064, 5856,7584, 5864,23968, 5872,15776, - 5880,32160, 5896,17312, 5904,9120, 5912,25504, 5928,21408, 5936,13216, - 5944,29600, 5960,19360, 5968,11168, 5976,27552, 5984,7072, 5992,23456, - 6000,15264, 6008,31648, 6024,18336, 6032,10144, 6040,26528, 6056,22432, - 6064,14240, 6072,30624, 6088,20384, 6096,12192, 6104,28576, 6112,8096, - 6120,24480, 6128,16288, 6136,32672, 6152,16480, 6160,8288, 6168,24672, - 6184,20576, 6192,12384, 6200,28768, 6216,18528, 6224,10336, 6232,26720, - 6248,22624, 6256,14432, 6264,30816, 6280,17504, 6288,9312, 6296,25696, - 6312,21600, 6320,13408, 6328,29792, 6344,19552, 6352,11360, 6360,27744, - 6368,7264, 6376,23648, 6384,15456, 6392,31840, 6408,16992, 6416,8800, - 6424,25184, 6440,21088, 6448,12896, 6456,29280, 6472,19040, 6480,10848, - 6488,27232, 6496,6752, 6504,23136, 6512,14944, 6520,31328, 6536,18016, - 6544,9824, 6552,26208, 6568,22112, 6576,13920, 6584,30304, 6600,20064, - 6608,11872, 6616,28256, 6624,7776, 6632,24160, 6640,15968, 6648,32352, - 6664,16736, 6672,8544, 6680,24928, 6696,20832, 6704,12640, 6712,29024, - 6728,18784, 6736,10592, 6744,26976, 6760,22880, 6768,14688, 6776,31072, - 6792,17760, 6800,9568, 6808,25952, 6824,21856, 6832,13664, 6840,30048, - 6856,19808, 6864,11616, 6872,28000, 6880,7520, 6888,23904, 6896,15712, - 6904,32096, 6920,17248, 6928,9056, 6936,25440, 6952,21344, 6960,13152, - 6968,29536, 6984,19296, 6992,11104, 7000,27488, 7016,23392, 7024,15200, - 7032,31584, 7048,18272, 7056,10080, 7064,26464, 7080,22368, 7088,14176, - 7096,30560, 7112,20320, 7120,12128, 7128,28512, 7136,8032, 7144,24416, - 7152,16224, 7160,32608, 7176,16608, 7184,8416, 7192,24800, 7208,20704, - 7216,12512, 7224,28896, 7240,18656, 7248,10464, 7256,26848, 7272,22752, - 7280,14560, 7288,30944, 7304,17632, 7312,9440, 7320,25824, 7336,21728, - 7344,13536, 7352,29920, 7368,19680, 7376,11488, 7384,27872, 7400,23776, - 7408,15584, 7416,31968, 7432,17120, 7440,8928, 7448,25312, 7464,21216, - 7472,13024, 7480,29408, 7496,19168, 7504,10976, 7512,27360, 7528,23264, - 7536,15072, 7544,31456, 7560,18144, 7568,9952, 7576,26336, 7592,22240, - 7600,14048, 7608,30432, 7624,20192, 7632,12000, 7640,28384, 7648,7904, - 7656,24288, 7664,16096, 7672,32480, 7688,16864, 7696,8672, 7704,25056, - 7720,20960, 7728,12768, 7736,29152, 7752,18912, 7760,10720, 7768,27104, - 7784,23008, 7792,14816, 7800,31200, 7816,17888, 7824,9696, 7832,26080, - 7848,21984, 7856,13792, 7864,30176, 7880,19936, 7888,11744, 7896,28128, - 7912,24032, 7920,15840, 7928,32224, 7944,17376, 7952,9184, 7960,25568, - 7976,21472, 7984,13280, 7992,29664, 8008,19424, 8016,11232, 8024,27616, - 8040,23520, 8048,15328, 8056,31712, 8072,18400, 8080,10208, 8088,26592, - 8104,22496, 8112,14304, 8120,30688, 8136,20448, 8144,12256, 8152,28640, - 8168,24544, 8176,16352, 8184,32736, 8200,16400, 8216,24592, 8232,20496, - 8240,12304, 8248,28688, 8264,18448, 8272,10256, 8280,26640, 8296,22544, - 8304,14352, 8312,30736, 8328,17424, 8336,9232, 8344,25616, 8360,21520, - 8368,13328, 8376,29712, 8392,19472, 8400,11280, 8408,27664, 8424,23568, - 8432,15376, 8440,31760, 8456,16912, 8464,8720, 8472,25104, 8488,21008, - 8496,12816, 8504,29200, 8520,18960, 8528,10768, 8536,27152, 8552,23056, - 8560,14864, 8568,31248, 8584,17936, 8592,9744, 8600,26128, 8616,22032, - 8624,13840, 8632,30224, 8648,19984, 8656,11792, 8664,28176, 8680,24080, - 8688,15888, 8696,32272, 8712,16656, 8728,24848, 8744,20752, 8752,12560, - 8760,28944, 8776,18704, 8784,10512, 8792,26896, 8808,22800, 8816,14608, - 8824,30992, 8840,17680, 8848,9488, 8856,25872, 8872,21776, 8880,13584, - 8888,29968, 8904,19728, 8912,11536, 8920,27920, 8936,23824, 8944,15632, - 8952,32016, 8968,17168, 8984,25360, 9000,21264, 9008,13072, 9016,29456, - 9032,19216, 9040,11024, 9048,27408, 9064,23312, 9072,15120, 9080,31504, - 9096,18192, 9104,10000, 9112,26384, 9128,22288, 9136,14096, 9144,30480, - 9160,20240, 9168,12048, 9176,28432, 9192,24336, 9200,16144, 9208,32528, - 9224,16528, 9240,24720, 9256,20624, 9264,12432, 9272,28816, 9288,18576, - 9296,10384, 9304,26768, 9320,22672, 9328,14480, 9336,30864, 9352,17552, - 9368,25744, 9384,21648, 9392,13456, 9400,29840, 9416,19600, 9424,11408, - 9432,27792, 9448,23696, 9456,15504, 9464,31888, 9480,17040, 9496,25232, - 9512,21136, 9520,12944, 9528,29328, 9544,19088, 9552,10896, 9560,27280, - 9576,23184, 9584,14992, 9592,31376, 9608,18064, 9616,9872, 9624,26256, - 9640,22160, 9648,13968, 9656,30352, 9672,20112, 9680,11920, 9688,28304, - 9704,24208, 9712,16016, 9720,32400, 9736,16784, 9752,24976, 9768,20880, - 9776,12688, 9784,29072, 9800,18832, 9808,10640, 9816,27024, 9832,22928, - 9840,14736, 9848,31120, 9864,17808, 9880,26000, 9896,21904, 9904,13712, - 9912,30096, 9928,19856, 9936,11664, 9944,28048, 9960,23952, 9968,15760, - 9976,32144, 9992,17296, 10008,25488, 10024,21392, 10032,13200, 10040,29584, - 10056,19344, 10064,11152, 10072,27536, 10088,23440, 10096,15248, 10104,31632, - 10120,18320, 10136,26512, 10152,22416, 10160,14224, 10168,30608, 10184,20368, - 10192,12176, 10200,28560, 10216,24464, 10224,16272, 10232,32656, 10248,16464, - 10264,24656, 10280,20560, 10288,12368, 10296,28752, 10312,18512, 10328,26704, - 10344,22608, 10352,14416, 10360,30800, 10376,17488, 10392,25680, 10408,21584, - 10416,13392, 10424,29776, 10440,19536, 10448,11344, 10456,27728, 10472,23632, - 10480,15440, 10488,31824, 10504,16976, 10520,25168, 10536,21072, 10544,12880, - 10552,29264, 10568,19024, 10576,10832, 10584,27216, 10600,23120, 10608,14928, - 10616,31312, 10632,18000, 10648,26192, 10664,22096, 10672,13904, 10680,30288, - 10696,20048, 10704,11856, 10712,28240, 10728,24144, 10736,15952, 10744,32336, - 10760,16720, 10776,24912, 10792,20816, 10800,12624, 10808,29008, 10824,18768, - 10840,26960, 10856,22864, 10864,14672, 10872,31056, 10888,17744, 10904,25936, - 10920,21840, 10928,13648, 10936,30032, 10952,19792, 10960,11600, 10968,27984, - 10984,23888, 10992,15696, 11000,32080, 11016,17232, 11032,25424, 11048,21328, - 11056,13136, 11064,29520, 11080,19280, 11096,27472, 11112,23376, 11120,15184, - 11128,31568, 11144,18256, 11160,26448, 11176,22352, 11184,14160, 11192,30544, - 11208,20304, 11216,12112, 11224,28496, 11240,24400, 11248,16208, 11256,32592, - 11272,16592, 11288,24784, 11304,20688, 11312,12496, 11320,28880, 11336,18640, - 11352,26832, 11368,22736, 11376,14544, 11384,30928, 11400,17616, 11416,25808, - 11432,21712, 11440,13520, 11448,29904, 11464,19664, 11480,27856, 11496,23760, - 11504,15568, 11512,31952, 11528,17104, 11544,25296, 11560,21200, 11568,13008, - 11576,29392, 11592,19152, 11608,27344, 11624,23248, 11632,15056, 11640,31440, - 11656,18128, 11672,26320, 11688,22224, 11696,14032, 11704,30416, 11720,20176, - 11728,11984, 11736,28368, 11752,24272, 11760,16080, 11768,32464, 11784,16848, - 11800,25040, 11816,20944, 11824,12752, 11832,29136, 11848,18896, 11864,27088, - 11880,22992, 11888,14800, 11896,31184, 11912,17872, 11928,26064, 11944,21968, - 11952,13776, 11960,30160, 11976,19920, 11992,28112, 12008,24016, 12016,15824, - 12024,32208, 12040,17360, 12056,25552, 12072,21456, 12080,13264, 12088,29648, - 12104,19408, 12120,27600, 12136,23504, 12144,15312, 12152,31696, 12168,18384, - 12184,26576, 12200,22480, 12208,14288, 12216,30672, 12232,20432, 12248,28624, - 12264,24528, 12272,16336, 12280,32720, 12296,16432, 12312,24624, 12328,20528, - 12344,28720, 12360,18480, 12376,26672, 12392,22576, 12400,14384, 12408,30768, - 12424,17456, 12440,25648, 12456,21552, 12464,13360, 12472,29744, 12488,19504, - 12504,27696, 12520,23600, 12528,15408, 12536,31792, 12552,16944, 12568,25136, - 12584,21040, 12592,12848, 12600,29232, 12616,18992, 12632,27184, 12648,23088, - 12656,14896, 12664,31280, 12680,17968, 12696,26160, 12712,22064, 12720,13872, - 12728,30256, 12744,20016, 12760,28208, 12776,24112, 12784,15920, 12792,32304, - 12808,16688, 12824,24880, 12840,20784, 12856,28976, 12872,18736, 12888,26928, - 12904,22832, 12912,14640, 12920,31024, 12936,17712, 12952,25904, 12968,21808, - 12976,13616, 12984,30000, 13000,19760, 13016,27952, 13032,23856, 13040,15664, - 13048,32048, 13064,17200, 13080,25392, 13096,21296, 13112,29488, 13128,19248, - 13144,27440, 13160,23344, 13168,15152, 13176,31536, 13192,18224, 13208,26416, - 13224,22320, 13232,14128, 13240,30512, 13256,20272, 13272,28464, 13288,24368, - 13296,16176, 13304,32560, 13320,16560, 13336,24752, 13352,20656, 13368,28848, - 13384,18608, 13400,26800, 13416,22704, 13424,14512, 13432,30896, 13448,17584, - 13464,25776, 13480,21680, 13496,29872, 13512,19632, 13528,27824, 13544,23728, - 13552,15536, 13560,31920, 13576,17072, 13592,25264, 13608,21168, 13624,29360, - 13640,19120, 13656,27312, 13672,23216, 13680,15024, 13688,31408, 13704,18096, - 13720,26288, 13736,22192, 13744,14000, 13752,30384, 13768,20144, 13784,28336, - 13800,24240, 13808,16048, 13816,32432, 13832,16816, 13848,25008, 13864,20912, - 13880,29104, 13896,18864, 13912,27056, 13928,22960, 13936,14768, 13944,31152, - 13960,17840, 13976,26032, 13992,21936, 14008,30128, 14024,19888, 14040,28080, - 14056,23984, 14064,15792, 14072,32176, 14088,17328, 14104,25520, 14120,21424, - 14136,29616, 14152,19376, 14168,27568, 14184,23472, 14192,15280, 14200,31664, - 14216,18352, 14232,26544, 14248,22448, 14264,30640, 14280,20400, 14296,28592, - 14312,24496, 14320,16304, 14328,32688, 14344,16496, 14360,24688, 14376,20592, - 14392,28784, 14408,18544, 14424,26736, 14440,22640, 14456,30832, 14472,17520, - 14488,25712, 14504,21616, 14520,29808, 14536,19568, 14552,27760, 14568,23664, - 14576,15472, 14584,31856, 14600,17008, 14616,25200, 14632,21104, 14648,29296, - 14664,19056, 14680,27248, 14696,23152, 14704,14960, 14712,31344, 14728,18032, - 14744,26224, 14760,22128, 14776,30320, 14792,20080, 14808,28272, 14824,24176, - 14832,15984, 14840,32368, 14856,16752, 14872,24944, 14888,20848, 14904,29040, - 14920,18800, 14936,26992, 14952,22896, 14968,31088, 14984,17776, 15000,25968, - 15016,21872, 15032,30064, 15048,19824, 15064,28016, 15080,23920, 15088,15728, - 15096,32112, 15112,17264, 15128,25456, 15144,21360, 15160,29552, 15176,19312, - 15192,27504, 15208,23408, 15224,31600, 15240,18288, 15256,26480, 15272,22384, - 15288,30576, 15304,20336, 15320,28528, 15336,24432, 15344,16240, 15352,32624, - 15368,16624, 15384,24816, 15400,20720, 15416,28912, 15432,18672, 15448,26864, - 15464,22768, 15480,30960, 15496,17648, 15512,25840, 15528,21744, 15544,29936, - 15560,19696, 15576,27888, 15592,23792, 15608,31984, 15624,17136, 15640,25328, - 15656,21232, 15672,29424, 15688,19184, 15704,27376, 15720,23280, 15736,31472, - 15752,18160, 15768,26352, 15784,22256, 15800,30448, 15816,20208, 15832,28400, - 15848,24304, 15856,16112, 15864,32496, 15880,16880, 15896,25072, 15912,20976, - 15928,29168, 15944,18928, 15960,27120, 15976,23024, 15992,31216, 16008,17904, - 16024,26096, 16040,22000, 16056,30192, 16072,19952, 16088,28144, 16104,24048, - 16120,32240, 16136,17392, 16152,25584, 16168,21488, 16184,29680, 16200,19440, - 16216,27632, 16232,23536, 16248,31728, 16264,18416, 16280,26608, 16296,22512, - 16312,30704, 16328,20464, 16344,28656, 16360,24560, 16376,32752, 16408,24584, - 16424,20488, 16440,28680, 16456,18440, 16472,26632, 16488,22536, 16504,30728, - 16520,17416, 16536,25608, 16552,21512, 16568,29704, 16584,19464, 16600,27656, - 16616,23560, 16632,31752, 16648,16904, 16664,25096, 16680,21000, 16696,29192, - 16712,18952, 16728,27144, 16744,23048, 16760,31240, 16776,17928, 16792,26120, - 16808,22024, 16824,30216, 16840,19976, 16856,28168, 16872,24072, 16888,32264, - 16920,24840, 16936,20744, 16952,28936, 16968,18696, 16984,26888, 17000,22792, - 17016,30984, 17032,17672, 17048,25864, 17064,21768, 17080,29960, 17096,19720, - 17112,27912, 17128,23816, 17144,32008, 17176,25352, 17192,21256, 17208,29448, - 17224,19208, 17240,27400, 17256,23304, 17272,31496, 17288,18184, 17304,26376, - 17320,22280, 17336,30472, 17352,20232, 17368,28424, 17384,24328, 17400,32520, - 17432,24712, 17448,20616, 17464,28808, 17480,18568, 17496,26760, 17512,22664, - 17528,30856, 17560,25736, 17576,21640, 17592,29832, 17608,19592, 17624,27784, - 17640,23688, 17656,31880, 17688,25224, 17704,21128, 17720,29320, 17736,19080, - 17752,27272, 17768,23176, 17784,31368, 17800,18056, 17816,26248, 17832,22152, - 17848,30344, 17864,20104, 17880,28296, 17896,24200, 17912,32392, 17944,24968, - 17960,20872, 17976,29064, 17992,18824, 18008,27016, 18024,22920, 18040,31112, - 18072,25992, 18088,21896, 18104,30088, 18120,19848, 18136,28040, 18152,23944, - 18168,32136, 18200,25480, 18216,21384, 18232,29576, 18248,19336, 18264,27528, - 18280,23432, 18296,31624, 18328,26504, 18344,22408, 18360,30600, 18376,20360, - 18392,28552, 18408,24456, 18424,32648, 18456,24648, 18472,20552, 18488,28744, - 18520,26696, 18536,22600, 18552,30792, 18584,25672, 18600,21576, 18616,29768, - 18632,19528, 18648,27720, 18664,23624, 18680,31816, 18712,25160, 18728,21064, - 18744,29256, 18760,19016, 18776,27208, 18792,23112, 18808,31304, 18840,26184, - 18856,22088, 18872,30280, 18888,20040, 18904,28232, 18920,24136, 18936,32328, - 18968,24904, 18984,20808, 19000,29000, 19032,26952, 19048,22856, 19064,31048, - 19096,25928, 19112,21832, 19128,30024, 19144,19784, 19160,27976, 19176,23880, - 19192,32072, 19224,25416, 19240,21320, 19256,29512, 19288,27464, 19304,23368, - 19320,31560, 19352,26440, 19368,22344, 19384,30536, 19400,20296, 19416,28488, - 19432,24392, 19448,32584, 19480,24776, 19496,20680, 19512,28872, 19544,26824, - 19560,22728, 19576,30920, 19608,25800, 19624,21704, 19640,29896, 19672,27848, - 19688,23752, 19704,31944, 19736,25288, 19752,21192, 19768,29384, 19800,27336, - 19816,23240, 19832,31432, 19864,26312, 19880,22216, 19896,30408, 19912,20168, - 19928,28360, 19944,24264, 19960,32456, 19992,25032, 20008,20936, 20024,29128, - 20056,27080, 20072,22984, 20088,31176, 20120,26056, 20136,21960, 20152,30152, - 20184,28104, 20200,24008, 20216,32200, 20248,25544, 20264,21448, 20280,29640, - 20312,27592, 20328,23496, 20344,31688, 20376,26568, 20392,22472, 20408,30664, - 20440,28616, 20456,24520, 20472,32712, 20504,24616, 20536,28712, 20568,26664, - 20584,22568, 20600,30760, 20632,25640, 20648,21544, 20664,29736, 20696,27688, - 20712,23592, 20728,31784, 20760,25128, 20776,21032, 20792,29224, 20824,27176, - 20840,23080, 20856,31272, 20888,26152, 20904,22056, 20920,30248, 20952,28200, - 20968,24104, 20984,32296, 21016,24872, 21048,28968, 21080,26920, 21096,22824, - 21112,31016, 21144,25896, 21160,21800, 21176,29992, 21208,27944, 21224,23848, - 21240,32040, 21272,25384, 21304,29480, 21336,27432, 21352,23336, 21368,31528, - 21400,26408, 21416,22312, 21432,30504, 21464,28456, 21480,24360, 21496,32552, - 21528,24744, 21560,28840, 21592,26792, 21608,22696, 21624,30888, 21656,25768, - 21688,29864, 21720,27816, 21736,23720, 21752,31912, 21784,25256, 21816,29352, - 21848,27304, 21864,23208, 21880,31400, 21912,26280, 21928,22184, 21944,30376, - 21976,28328, 21992,24232, 22008,32424, 22040,25000, 22072,29096, 22104,27048, - 22120,22952, 22136,31144, 22168,26024, 22200,30120, 22232,28072, 22248,23976, - 22264,32168, 22296,25512, 22328,29608, 22360,27560, 22376,23464, 22392,31656, - 22424,26536, 22456,30632, 22488,28584, 22504,24488, 22520,32680, 22552,24680, - 22584,28776, 22616,26728, 22648,30824, 22680,25704, 22712,29800, 22744,27752, - 22760,23656, 22776,31848, 22808,25192, 22840,29288, 22872,27240, 22888,23144, - 22904,31336, 22936,26216, 22968,30312, 23000,28264, 23016,24168, 23032,32360, - 23064,24936, 23096,29032, 23128,26984, 23160,31080, 23192,25960, 23224,30056, - 23256,28008, 23272,23912, 23288,32104, 23320,25448, 23352,29544, 23384,27496, - 23416,31592, 23448,26472, 23480,30568, 23512,28520, 23528,24424, 23544,32616, - 23576,24808, 23608,28904, 23640,26856, 23672,30952, 23704,25832, 23736,29928, - 23768,27880, 23800,31976, 23832,25320, 23864,29416, 23896,27368, 23928,31464, - 23960,26344, 23992,30440, 24024,28392, 24040,24296, 24056,32488, 24088,25064, - 24120,29160, 24152,27112, 24184,31208, 24216,26088, 24248,30184, 24280,28136, - 24312,32232, 24344,25576, 24376,29672, 24408,27624, 24440,31720, 24472,26600, - 24504,30696, 24536,28648, 24568,32744, 24632,28696, 24664,26648, 24696,30744, - 24728,25624, 24760,29720, 24792,27672, 24824,31768, 24856,25112, 24888,29208, - 24920,27160, 24952,31256, 24984,26136, 25016,30232, 25048,28184, 25080,32280, - 25144,28952, 25176,26904, 25208,31000, 25240,25880, 25272,29976, 25304,27928, - 25336,32024, 25400,29464, 25432,27416, 25464,31512, 25496,26392, 25528,30488, - 25560,28440, 25592,32536, 25656,28824, 25688,26776, 25720,30872, 25784,29848, - 25816,27800, 25848,31896, 25912,29336, 25944,27288, 25976,31384, 26008,26264, - 26040,30360, 26072,28312, 26104,32408, 26168,29080, 26200,27032, 26232,31128, - 26296,30104, 26328,28056, 26360,32152, 26424,29592, 26456,27544, 26488,31640, - 26552,30616, 26584,28568, 26616,32664, 26680,28760, 26744,30808, 26808,29784, - 26840,27736, 26872,31832, 26936,29272, 26968,27224, 27000,31320, 27064,30296, - 27096,28248, 27128,32344, 27192,29016, 27256,31064, 27320,30040, 27352,27992, - 27384,32088, 27448,29528, 27512,31576, 27576,30552, 27608,28504, 27640,32600, - 27704,28888, 27768,30936, 27832,29912, 27896,31960, 27960,29400, 28024,31448, - 28088,30424, 28120,28376, 28152,32472, 28216,29144, 28280,31192, 28344,30168, - 28408,32216, 28472,29656, 28536,31704, 28600,30680, 28664,32728, 28792,30776, - 28856,29752, 28920,31800, 28984,29240, 29048,31288, 29112,30264, 29176,32312, - 29304,31032, 29368,30008, 29432,32056, 29560,31544, 29624,30520, 29688,32568, - 29816,30904, 29944,31928, 30072,31416, 30136,30392, 30200,32440, 30328,31160, - 30456,32184, 30584,31672, 30712,32696, 30968,31864, 31096,31352, 31224,32376, - 31480,32120, 31736,32632, 32248,32504 -}; - -/** -* \par -* Example code for Floating-point RFFT Twiddle factors Generation: -* \par -*
TW = exp(2*pi*i*[0:L/2-1]/L - pi/2*i).' 
-* \par -* Real and Imag values are in interleaved fashion -*/ -const float32_t twiddleCoef_rfft_32[32] = { - 0.000000000f, 1.000000000f, - 0.195090322f, 0.980785280f, - 0.382683432f, 0.923879533f, - 0.555570233f, 0.831469612f, - 0.707106781f, 0.707106781f, - 0.831469612f, 0.555570233f, - 0.923879533f, 0.382683432f, - 0.980785280f, 0.195090322f, - 1.000000000f, 0.000000000f, - 0.980785280f, -0.195090322f, - 0.923879533f, -0.382683432f, - 0.831469612f, -0.555570233f, - 0.707106781f, -0.707106781f, - 0.555570233f, -0.831469612f, - 0.382683432f, -0.923879533f, - 0.195090322f, -0.980785280f -}; - -const float32_t twiddleCoef_rfft_64[64] = { - 0.000000000000000f, 1.000000000000000f, - 0.098017140329561f, 0.995184726672197f, - 0.195090322016128f, 0.980785280403230f, - 0.290284677254462f, 0.956940335732209f, - 0.382683432365090f, 0.923879532511287f, - 0.471396736825998f, 0.881921264348355f, - 0.555570233019602f, 0.831469612302545f, - 0.634393284163645f, 0.773010453362737f, - 0.707106781186547f, 0.707106781186548f, - 0.773010453362737f, 0.634393284163645f, - 0.831469612302545f, 0.555570233019602f, - 0.881921264348355f, 0.471396736825998f, - 0.923879532511287f, 0.382683432365090f, - 0.956940335732209f, 0.290284677254462f, - 0.980785280403230f, 0.195090322016128f, - 0.995184726672197f, 0.098017140329561f, - 1.000000000000000f, 0.000000000000000f, - 0.995184726672197f, -0.098017140329561f, - 0.980785280403230f, -0.195090322016128f, - 0.956940335732209f, -0.290284677254462f, - 0.923879532511287f, -0.382683432365090f, - 0.881921264348355f, -0.471396736825998f, - 0.831469612302545f, -0.555570233019602f, - 0.773010453362737f, -0.634393284163645f, - 0.707106781186548f, -0.707106781186547f, - 0.634393284163645f, -0.773010453362737f, - 0.555570233019602f, -0.831469612302545f, - 0.471396736825998f, -0.881921264348355f, - 0.382683432365090f, -0.923879532511287f, - 0.290284677254462f, -0.956940335732209f, - 0.195090322016129f, -0.980785280403230f, - 0.098017140329561f, -0.995184726672197f -}; - -const float32_t twiddleCoef_rfft_128[128] = { - 0.000000000f, 1.000000000f, - 0.049067674f, 0.998795456f, - 0.098017140f, 0.995184727f, - 0.146730474f, 0.989176510f, - 0.195090322f, 0.980785280f, - 0.242980180f, 0.970031253f, - 0.290284677f, 0.956940336f, - 0.336889853f, 0.941544065f, - 0.382683432f, 0.923879533f, - 0.427555093f, 0.903989293f, - 0.471396737f, 0.881921264f, - 0.514102744f, 0.857728610f, - 0.555570233f, 0.831469612f, - 0.595699304f, 0.803207531f, - 0.634393284f, 0.773010453f, - 0.671558955f, 0.740951125f, - 0.707106781f, 0.707106781f, - 0.740951125f, 0.671558955f, - 0.773010453f, 0.634393284f, - 0.803207531f, 0.595699304f, - 0.831469612f, 0.555570233f, - 0.857728610f, 0.514102744f, - 0.881921264f, 0.471396737f, - 0.903989293f, 0.427555093f, - 0.923879533f, 0.382683432f, - 0.941544065f, 0.336889853f, - 0.956940336f, 0.290284677f, - 0.970031253f, 0.242980180f, - 0.980785280f, 0.195090322f, - 0.989176510f, 0.146730474f, - 0.995184727f, 0.098017140f, - 0.998795456f, 0.049067674f, - 1.000000000f, 0.000000000f, - 0.998795456f, -0.049067674f, - 0.995184727f, -0.098017140f, - 0.989176510f, -0.146730474f, - 0.980785280f, -0.195090322f, - 0.970031253f, -0.242980180f, - 0.956940336f, -0.290284677f, - 0.941544065f, -0.336889853f, - 0.923879533f, -0.382683432f, - 0.903989293f, -0.427555093f, - 0.881921264f, -0.471396737f, - 0.857728610f, -0.514102744f, - 0.831469612f, -0.555570233f, - 0.803207531f, -0.595699304f, - 0.773010453f, -0.634393284f, - 0.740951125f, -0.671558955f, - 0.707106781f, -0.707106781f, - 0.671558955f, -0.740951125f, - 0.634393284f, -0.773010453f, - 0.595699304f, -0.803207531f, - 0.555570233f, -0.831469612f, - 0.514102744f, -0.857728610f, - 0.471396737f, -0.881921264f, - 0.427555093f, -0.903989293f, - 0.382683432f, -0.923879533f, - 0.336889853f, -0.941544065f, - 0.290284677f, -0.956940336f, - 0.242980180f, -0.970031253f, - 0.195090322f, -0.980785280f, - 0.146730474f, -0.989176510f, - 0.098017140f, -0.995184727f, - 0.049067674f, -0.998795456f -}; - -const float32_t twiddleCoef_rfft_256[256] = { - 0.000000000f, 1.000000000f, - 0.024541229f, 0.999698819f, - 0.049067674f, 0.998795456f, - 0.073564564f, 0.997290457f, - 0.098017140f, 0.995184727f, - 0.122410675f, 0.992479535f, - 0.146730474f, 0.989176510f, - 0.170961889f, 0.985277642f, - 0.195090322f, 0.980785280f, - 0.219101240f, 0.975702130f, - 0.242980180f, 0.970031253f, - 0.266712757f, 0.963776066f, - 0.290284677f, 0.956940336f, - 0.313681740f, 0.949528181f, - 0.336889853f, 0.941544065f, - 0.359895037f, 0.932992799f, - 0.382683432f, 0.923879533f, - 0.405241314f, 0.914209756f, - 0.427555093f, 0.903989293f, - 0.449611330f, 0.893224301f, - 0.471396737f, 0.881921264f, - 0.492898192f, 0.870086991f, - 0.514102744f, 0.857728610f, - 0.534997620f, 0.844853565f, - 0.555570233f, 0.831469612f, - 0.575808191f, 0.817584813f, - 0.595699304f, 0.803207531f, - 0.615231591f, 0.788346428f, - 0.634393284f, 0.773010453f, - 0.653172843f, 0.757208847f, - 0.671558955f, 0.740951125f, - 0.689540545f, 0.724247083f, - 0.707106781f, 0.707106781f, - 0.724247083f, 0.689540545f, - 0.740951125f, 0.671558955f, - 0.757208847f, 0.653172843f, - 0.773010453f, 0.634393284f, - 0.788346428f, 0.615231591f, - 0.803207531f, 0.595699304f, - 0.817584813f, 0.575808191f, - 0.831469612f, 0.555570233f, - 0.844853565f, 0.534997620f, - 0.857728610f, 0.514102744f, - 0.870086991f, 0.492898192f, - 0.881921264f, 0.471396737f, - 0.893224301f, 0.449611330f, - 0.903989293f, 0.427555093f, - 0.914209756f, 0.405241314f, - 0.923879533f, 0.382683432f, - 0.932992799f, 0.359895037f, - 0.941544065f, 0.336889853f, - 0.949528181f, 0.313681740f, - 0.956940336f, 0.290284677f, - 0.963776066f, 0.266712757f, - 0.970031253f, 0.242980180f, - 0.975702130f, 0.219101240f, - 0.980785280f, 0.195090322f, - 0.985277642f, 0.170961889f, - 0.989176510f, 0.146730474f, - 0.992479535f, 0.122410675f, - 0.995184727f, 0.098017140f, - 0.997290457f, 0.073564564f, - 0.998795456f, 0.049067674f, - 0.999698819f, 0.024541229f, - 1.000000000f, 0.000000000f, - 0.999698819f, -0.024541229f, - 0.998795456f, -0.049067674f, - 0.997290457f, -0.073564564f, - 0.995184727f, -0.098017140f, - 0.992479535f, -0.122410675f, - 0.989176510f, -0.146730474f, - 0.985277642f, -0.170961889f, - 0.980785280f, -0.195090322f, - 0.975702130f, -0.219101240f, - 0.970031253f, -0.242980180f, - 0.963776066f, -0.266712757f, - 0.956940336f, -0.290284677f, - 0.949528181f, -0.313681740f, - 0.941544065f, -0.336889853f, - 0.932992799f, -0.359895037f, - 0.923879533f, -0.382683432f, - 0.914209756f, -0.405241314f, - 0.903989293f, -0.427555093f, - 0.893224301f, -0.449611330f, - 0.881921264f, -0.471396737f, - 0.870086991f, -0.492898192f, - 0.857728610f, -0.514102744f, - 0.844853565f, -0.534997620f, - 0.831469612f, -0.555570233f, - 0.817584813f, -0.575808191f, - 0.803207531f, -0.595699304f, - 0.788346428f, -0.615231591f, - 0.773010453f, -0.634393284f, - 0.757208847f, -0.653172843f, - 0.740951125f, -0.671558955f, - 0.724247083f, -0.689540545f, - 0.707106781f, -0.707106781f, - 0.689540545f, -0.724247083f, - 0.671558955f, -0.740951125f, - 0.653172843f, -0.757208847f, - 0.634393284f, -0.773010453f, - 0.615231591f, -0.788346428f, - 0.595699304f, -0.803207531f, - 0.575808191f, -0.817584813f, - 0.555570233f, -0.831469612f, - 0.534997620f, -0.844853565f, - 0.514102744f, -0.857728610f, - 0.492898192f, -0.870086991f, - 0.471396737f, -0.881921264f, - 0.449611330f, -0.893224301f, - 0.427555093f, -0.903989293f, - 0.405241314f, -0.914209756f, - 0.382683432f, -0.923879533f, - 0.359895037f, -0.932992799f, - 0.336889853f, -0.941544065f, - 0.313681740f, -0.949528181f, - 0.290284677f, -0.956940336f, - 0.266712757f, -0.963776066f, - 0.242980180f, -0.970031253f, - 0.219101240f, -0.975702130f, - 0.195090322f, -0.980785280f, - 0.170961889f, -0.985277642f, - 0.146730474f, -0.989176510f, - 0.122410675f, -0.992479535f, - 0.098017140f, -0.995184727f, - 0.073564564f, -0.997290457f, - 0.049067674f, -0.998795456f, - 0.024541229f, -0.999698819f -}; - -const float32_t twiddleCoef_rfft_512[512] = { - 0.000000000f, 1.000000000f, - 0.012271538f, 0.999924702f, - 0.024541229f, 0.999698819f, - 0.036807223f, 0.999322385f, - 0.049067674f, 0.998795456f, - 0.061320736f, 0.998118113f, - 0.073564564f, 0.997290457f, - 0.085797312f, 0.996312612f, - 0.098017140f, 0.995184727f, - 0.110222207f, 0.993906970f, - 0.122410675f, 0.992479535f, - 0.134580709f, 0.990902635f, - 0.146730474f, 0.989176510f, - 0.158858143f, 0.987301418f, - 0.170961889f, 0.985277642f, - 0.183039888f, 0.983105487f, - 0.195090322f, 0.980785280f, - 0.207111376f, 0.978317371f, - 0.219101240f, 0.975702130f, - 0.231058108f, 0.972939952f, - 0.242980180f, 0.970031253f, - 0.254865660f, 0.966976471f, - 0.266712757f, 0.963776066f, - 0.278519689f, 0.960430519f, - 0.290284677f, 0.956940336f, - 0.302005949f, 0.953306040f, - 0.313681740f, 0.949528181f, - 0.325310292f, 0.945607325f, - 0.336889853f, 0.941544065f, - 0.348418680f, 0.937339012f, - 0.359895037f, 0.932992799f, - 0.371317194f, 0.928506080f, - 0.382683432f, 0.923879533f, - 0.393992040f, 0.919113852f, - 0.405241314f, 0.914209756f, - 0.416429560f, 0.909167983f, - 0.427555093f, 0.903989293f, - 0.438616239f, 0.898674466f, - 0.449611330f, 0.893224301f, - 0.460538711f, 0.887639620f, - 0.471396737f, 0.881921264f, - 0.482183772f, 0.876070094f, - 0.492898192f, 0.870086991f, - 0.503538384f, 0.863972856f, - 0.514102744f, 0.857728610f, - 0.524589683f, 0.851355193f, - 0.534997620f, 0.844853565f, - 0.545324988f, 0.838224706f, - 0.555570233f, 0.831469612f, - 0.565731811f, 0.824589303f, - 0.575808191f, 0.817584813f, - 0.585797857f, 0.810457198f, - 0.595699304f, 0.803207531f, - 0.605511041f, 0.795836905f, - 0.615231591f, 0.788346428f, - 0.624859488f, 0.780737229f, - 0.634393284f, 0.773010453f, - 0.643831543f, 0.765167266f, - 0.653172843f, 0.757208847f, - 0.662415778f, 0.749136395f, - 0.671558955f, 0.740951125f, - 0.680600998f, 0.732654272f, - 0.689540545f, 0.724247083f, - 0.698376249f, 0.715730825f, - 0.707106781f, 0.707106781f, - 0.715730825f, 0.698376249f, - 0.724247083f, 0.689540545f, - 0.732654272f, 0.680600998f, - 0.740951125f, 0.671558955f, - 0.749136395f, 0.662415778f, - 0.757208847f, 0.653172843f, - 0.765167266f, 0.643831543f, - 0.773010453f, 0.634393284f, - 0.780737229f, 0.624859488f, - 0.788346428f, 0.615231591f, - 0.795836905f, 0.605511041f, - 0.803207531f, 0.595699304f, - 0.810457198f, 0.585797857f, - 0.817584813f, 0.575808191f, - 0.824589303f, 0.565731811f, - 0.831469612f, 0.555570233f, - 0.838224706f, 0.545324988f, - 0.844853565f, 0.534997620f, - 0.851355193f, 0.524589683f, - 0.857728610f, 0.514102744f, - 0.863972856f, 0.503538384f, - 0.870086991f, 0.492898192f, - 0.876070094f, 0.482183772f, - 0.881921264f, 0.471396737f, - 0.887639620f, 0.460538711f, - 0.893224301f, 0.449611330f, - 0.898674466f, 0.438616239f, - 0.903989293f, 0.427555093f, - 0.909167983f, 0.416429560f, - 0.914209756f, 0.405241314f, - 0.919113852f, 0.393992040f, - 0.923879533f, 0.382683432f, - 0.928506080f, 0.371317194f, - 0.932992799f, 0.359895037f, - 0.937339012f, 0.348418680f, - 0.941544065f, 0.336889853f, - 0.945607325f, 0.325310292f, - 0.949528181f, 0.313681740f, - 0.953306040f, 0.302005949f, - 0.956940336f, 0.290284677f, - 0.960430519f, 0.278519689f, - 0.963776066f, 0.266712757f, - 0.966976471f, 0.254865660f, - 0.970031253f, 0.242980180f, - 0.972939952f, 0.231058108f, - 0.975702130f, 0.219101240f, - 0.978317371f, 0.207111376f, - 0.980785280f, 0.195090322f, - 0.983105487f, 0.183039888f, - 0.985277642f, 0.170961889f, - 0.987301418f, 0.158858143f, - 0.989176510f, 0.146730474f, - 0.990902635f, 0.134580709f, - 0.992479535f, 0.122410675f, - 0.993906970f, 0.110222207f, - 0.995184727f, 0.098017140f, - 0.996312612f, 0.085797312f, - 0.997290457f, 0.073564564f, - 0.998118113f, 0.061320736f, - 0.998795456f, 0.049067674f, - 0.999322385f, 0.036807223f, - 0.999698819f, 0.024541229f, - 0.999924702f, 0.012271538f, - 1.000000000f, 0.000000000f, - 0.999924702f, -0.012271538f, - 0.999698819f, -0.024541229f, - 0.999322385f, -0.036807223f, - 0.998795456f, -0.049067674f, - 0.998118113f, -0.061320736f, - 0.997290457f, -0.073564564f, - 0.996312612f, -0.085797312f, - 0.995184727f, -0.098017140f, - 0.993906970f, -0.110222207f, - 0.992479535f, -0.122410675f, - 0.990902635f, -0.134580709f, - 0.989176510f, -0.146730474f, - 0.987301418f, -0.158858143f, - 0.985277642f, -0.170961889f, - 0.983105487f, -0.183039888f, - 0.980785280f, -0.195090322f, - 0.978317371f, -0.207111376f, - 0.975702130f, -0.219101240f, - 0.972939952f, -0.231058108f, - 0.970031253f, -0.242980180f, - 0.966976471f, -0.254865660f, - 0.963776066f, -0.266712757f, - 0.960430519f, -0.278519689f, - 0.956940336f, -0.290284677f, - 0.953306040f, -0.302005949f, - 0.949528181f, -0.313681740f, - 0.945607325f, -0.325310292f, - 0.941544065f, -0.336889853f, - 0.937339012f, -0.348418680f, - 0.932992799f, -0.359895037f, - 0.928506080f, -0.371317194f, - 0.923879533f, -0.382683432f, - 0.919113852f, -0.393992040f, - 0.914209756f, -0.405241314f, - 0.909167983f, -0.416429560f, - 0.903989293f, -0.427555093f, - 0.898674466f, -0.438616239f, - 0.893224301f, -0.449611330f, - 0.887639620f, -0.460538711f, - 0.881921264f, -0.471396737f, - 0.876070094f, -0.482183772f, - 0.870086991f, -0.492898192f, - 0.863972856f, -0.503538384f, - 0.857728610f, -0.514102744f, - 0.851355193f, -0.524589683f, - 0.844853565f, -0.534997620f, - 0.838224706f, -0.545324988f, - 0.831469612f, -0.555570233f, - 0.824589303f, -0.565731811f, - 0.817584813f, -0.575808191f, - 0.810457198f, -0.585797857f, - 0.803207531f, -0.595699304f, - 0.795836905f, -0.605511041f, - 0.788346428f, -0.615231591f, - 0.780737229f, -0.624859488f, - 0.773010453f, -0.634393284f, - 0.765167266f, -0.643831543f, - 0.757208847f, -0.653172843f, - 0.749136395f, -0.662415778f, - 0.740951125f, -0.671558955f, - 0.732654272f, -0.680600998f, - 0.724247083f, -0.689540545f, - 0.715730825f, -0.698376249f, - 0.707106781f, -0.707106781f, - 0.698376249f, -0.715730825f, - 0.689540545f, -0.724247083f, - 0.680600998f, -0.732654272f, - 0.671558955f, -0.740951125f, - 0.662415778f, -0.749136395f, - 0.653172843f, -0.757208847f, - 0.643831543f, -0.765167266f, - 0.634393284f, -0.773010453f, - 0.624859488f, -0.780737229f, - 0.615231591f, -0.788346428f, - 0.605511041f, -0.795836905f, - 0.595699304f, -0.803207531f, - 0.585797857f, -0.810457198f, - 0.575808191f, -0.817584813f, - 0.565731811f, -0.824589303f, - 0.555570233f, -0.831469612f, - 0.545324988f, -0.838224706f, - 0.534997620f, -0.844853565f, - 0.524589683f, -0.851355193f, - 0.514102744f, -0.857728610f, - 0.503538384f, -0.863972856f, - 0.492898192f, -0.870086991f, - 0.482183772f, -0.876070094f, - 0.471396737f, -0.881921264f, - 0.460538711f, -0.887639620f, - 0.449611330f, -0.893224301f, - 0.438616239f, -0.898674466f, - 0.427555093f, -0.903989293f, - 0.416429560f, -0.909167983f, - 0.405241314f, -0.914209756f, - 0.393992040f, -0.919113852f, - 0.382683432f, -0.923879533f, - 0.371317194f, -0.928506080f, - 0.359895037f, -0.932992799f, - 0.348418680f, -0.937339012f, - 0.336889853f, -0.941544065f, - 0.325310292f, -0.945607325f, - 0.313681740f, -0.949528181f, - 0.302005949f, -0.953306040f, - 0.290284677f, -0.956940336f, - 0.278519689f, -0.960430519f, - 0.266712757f, -0.963776066f, - 0.254865660f, -0.966976471f, - 0.242980180f, -0.970031253f, - 0.231058108f, -0.972939952f, - 0.219101240f, -0.975702130f, - 0.207111376f, -0.978317371f, - 0.195090322f, -0.980785280f, - 0.183039888f, -0.983105487f, - 0.170961889f, -0.985277642f, - 0.158858143f, -0.987301418f, - 0.146730474f, -0.989176510f, - 0.134580709f, -0.990902635f, - 0.122410675f, -0.992479535f, - 0.110222207f, -0.993906970f, - 0.098017140f, -0.995184727f, - 0.085797312f, -0.996312612f, - 0.073564564f, -0.997290457f, - 0.061320736f, -0.998118113f, - 0.049067674f, -0.998795456f, - 0.036807223f, -0.999322385f, - 0.024541229f, -0.999698819f, - 0.012271538f, -0.999924702f -}; - -const float32_t twiddleCoef_rfft_1024[1024] = { - 0.000000000f, 1.000000000f, - 0.006135885f, 0.999981175f, - 0.012271538f, 0.999924702f, - 0.018406730f, 0.999830582f, - 0.024541229f, 0.999698819f, - 0.030674803f, 0.999529418f, - 0.036807223f, 0.999322385f, - 0.042938257f, 0.999077728f, - 0.049067674f, 0.998795456f, - 0.055195244f, 0.998475581f, - 0.061320736f, 0.998118113f, - 0.067443920f, 0.997723067f, - 0.073564564f, 0.997290457f, - 0.079682438f, 0.996820299f, - 0.085797312f, 0.996312612f, - 0.091908956f, 0.995767414f, - 0.098017140f, 0.995184727f, - 0.104121634f, 0.994564571f, - 0.110222207f, 0.993906970f, - 0.116318631f, 0.993211949f, - 0.122410675f, 0.992479535f, - 0.128498111f, 0.991709754f, - 0.134580709f, 0.990902635f, - 0.140658239f, 0.990058210f, - 0.146730474f, 0.989176510f, - 0.152797185f, 0.988257568f, - 0.158858143f, 0.987301418f, - 0.164913120f, 0.986308097f, - 0.170961889f, 0.985277642f, - 0.177004220f, 0.984210092f, - 0.183039888f, 0.983105487f, - 0.189068664f, 0.981963869f, - 0.195090322f, 0.980785280f, - 0.201104635f, 0.979569766f, - 0.207111376f, 0.978317371f, - 0.213110320f, 0.977028143f, - 0.219101240f, 0.975702130f, - 0.225083911f, 0.974339383f, - 0.231058108f, 0.972939952f, - 0.237023606f, 0.971503891f, - 0.242980180f, 0.970031253f, - 0.248927606f, 0.968522094f, - 0.254865660f, 0.966976471f, - 0.260794118f, 0.965394442f, - 0.266712757f, 0.963776066f, - 0.272621355f, 0.962121404f, - 0.278519689f, 0.960430519f, - 0.284407537f, 0.958703475f, - 0.290284677f, 0.956940336f, - 0.296150888f, 0.955141168f, - 0.302005949f, 0.953306040f, - 0.307849640f, 0.951435021f, - 0.313681740f, 0.949528181f, - 0.319502031f, 0.947585591f, - 0.325310292f, 0.945607325f, - 0.331106306f, 0.943593458f, - 0.336889853f, 0.941544065f, - 0.342660717f, 0.939459224f, - 0.348418680f, 0.937339012f, - 0.354163525f, 0.935183510f, - 0.359895037f, 0.932992799f, - 0.365612998f, 0.930766961f, - 0.371317194f, 0.928506080f, - 0.377007410f, 0.926210242f, - 0.382683432f, 0.923879533f, - 0.388345047f, 0.921514039f, - 0.393992040f, 0.919113852f, - 0.399624200f, 0.916679060f, - 0.405241314f, 0.914209756f, - 0.410843171f, 0.911706032f, - 0.416429560f, 0.909167983f, - 0.422000271f, 0.906595705f, - 0.427555093f, 0.903989293f, - 0.433093819f, 0.901348847f, - 0.438616239f, 0.898674466f, - 0.444122145f, 0.895966250f, - 0.449611330f, 0.893224301f, - 0.455083587f, 0.890448723f, - 0.460538711f, 0.887639620f, - 0.465976496f, 0.884797098f, - 0.471396737f, 0.881921264f, - 0.476799230f, 0.879012226f, - 0.482183772f, 0.876070094f, - 0.487550160f, 0.873094978f, - 0.492898192f, 0.870086991f, - 0.498227667f, 0.867046246f, - 0.503538384f, 0.863972856f, - 0.508830143f, 0.860866939f, - 0.514102744f, 0.857728610f, - 0.519355990f, 0.854557988f, - 0.524589683f, 0.851355193f, - 0.529803625f, 0.848120345f, - 0.534997620f, 0.844853565f, - 0.540171473f, 0.841554977f, - 0.545324988f, 0.838224706f, - 0.550457973f, 0.834862875f, - 0.555570233f, 0.831469612f, - 0.560661576f, 0.828045045f, - 0.565731811f, 0.824589303f, - 0.570780746f, 0.821102515f, - 0.575808191f, 0.817584813f, - 0.580813958f, 0.814036330f, - 0.585797857f, 0.810457198f, - 0.590759702f, 0.806847554f, - 0.595699304f, 0.803207531f, - 0.600616479f, 0.799537269f, - 0.605511041f, 0.795836905f, - 0.610382806f, 0.792106577f, - 0.615231591f, 0.788346428f, - 0.620057212f, 0.784556597f, - 0.624859488f, 0.780737229f, - 0.629638239f, 0.776888466f, - 0.634393284f, 0.773010453f, - 0.639124445f, 0.769103338f, - 0.643831543f, 0.765167266f, - 0.648514401f, 0.761202385f, - 0.653172843f, 0.757208847f, - 0.657806693f, 0.753186799f, - 0.662415778f, 0.749136395f, - 0.666999922f, 0.745057785f, - 0.671558955f, 0.740951125f, - 0.676092704f, 0.736816569f, - 0.680600998f, 0.732654272f, - 0.685083668f, 0.728464390f, - 0.689540545f, 0.724247083f, - 0.693971461f, 0.720002508f, - 0.698376249f, 0.715730825f, - 0.702754744f, 0.711432196f, - 0.707106781f, 0.707106781f, - 0.711432196f, 0.702754744f, - 0.715730825f, 0.698376249f, - 0.720002508f, 0.693971461f, - 0.724247083f, 0.689540545f, - 0.728464390f, 0.685083668f, - 0.732654272f, 0.680600998f, - 0.736816569f, 0.676092704f, - 0.740951125f, 0.671558955f, - 0.745057785f, 0.666999922f, - 0.749136395f, 0.662415778f, - 0.753186799f, 0.657806693f, - 0.757208847f, 0.653172843f, - 0.761202385f, 0.648514401f, - 0.765167266f, 0.643831543f, - 0.769103338f, 0.639124445f, - 0.773010453f, 0.634393284f, - 0.776888466f, 0.629638239f, - 0.780737229f, 0.624859488f, - 0.784556597f, 0.620057212f, - 0.788346428f, 0.615231591f, - 0.792106577f, 0.610382806f, - 0.795836905f, 0.605511041f, - 0.799537269f, 0.600616479f, - 0.803207531f, 0.595699304f, - 0.806847554f, 0.590759702f, - 0.810457198f, 0.585797857f, - 0.814036330f, 0.580813958f, - 0.817584813f, 0.575808191f, - 0.821102515f, 0.570780746f, - 0.824589303f, 0.565731811f, - 0.828045045f, 0.560661576f, - 0.831469612f, 0.555570233f, - 0.834862875f, 0.550457973f, - 0.838224706f, 0.545324988f, - 0.841554977f, 0.540171473f, - 0.844853565f, 0.534997620f, - 0.848120345f, 0.529803625f, - 0.851355193f, 0.524589683f, - 0.854557988f, 0.519355990f, - 0.857728610f, 0.514102744f, - 0.860866939f, 0.508830143f, - 0.863972856f, 0.503538384f, - 0.867046246f, 0.498227667f, - 0.870086991f, 0.492898192f, - 0.873094978f, 0.487550160f, - 0.876070094f, 0.482183772f, - 0.879012226f, 0.476799230f, - 0.881921264f, 0.471396737f, - 0.884797098f, 0.465976496f, - 0.887639620f, 0.460538711f, - 0.890448723f, 0.455083587f, - 0.893224301f, 0.449611330f, - 0.895966250f, 0.444122145f, - 0.898674466f, 0.438616239f, - 0.901348847f, 0.433093819f, - 0.903989293f, 0.427555093f, - 0.906595705f, 0.422000271f, - 0.909167983f, 0.416429560f, - 0.911706032f, 0.410843171f, - 0.914209756f, 0.405241314f, - 0.916679060f, 0.399624200f, - 0.919113852f, 0.393992040f, - 0.921514039f, 0.388345047f, - 0.923879533f, 0.382683432f, - 0.926210242f, 0.377007410f, - 0.928506080f, 0.371317194f, - 0.930766961f, 0.365612998f, - 0.932992799f, 0.359895037f, - 0.935183510f, 0.354163525f, - 0.937339012f, 0.348418680f, - 0.939459224f, 0.342660717f, - 0.941544065f, 0.336889853f, - 0.943593458f, 0.331106306f, - 0.945607325f, 0.325310292f, - 0.947585591f, 0.319502031f, - 0.949528181f, 0.313681740f, - 0.951435021f, 0.307849640f, - 0.953306040f, 0.302005949f, - 0.955141168f, 0.296150888f, - 0.956940336f, 0.290284677f, - 0.958703475f, 0.284407537f, - 0.960430519f, 0.278519689f, - 0.962121404f, 0.272621355f, - 0.963776066f, 0.266712757f, - 0.965394442f, 0.260794118f, - 0.966976471f, 0.254865660f, - 0.968522094f, 0.248927606f, - 0.970031253f, 0.242980180f, - 0.971503891f, 0.237023606f, - 0.972939952f, 0.231058108f, - 0.974339383f, 0.225083911f, - 0.975702130f, 0.219101240f, - 0.977028143f, 0.213110320f, - 0.978317371f, 0.207111376f, - 0.979569766f, 0.201104635f, - 0.980785280f, 0.195090322f, - 0.981963869f, 0.189068664f, - 0.983105487f, 0.183039888f, - 0.984210092f, 0.177004220f, - 0.985277642f, 0.170961889f, - 0.986308097f, 0.164913120f, - 0.987301418f, 0.158858143f, - 0.988257568f, 0.152797185f, - 0.989176510f, 0.146730474f, - 0.990058210f, 0.140658239f, - 0.990902635f, 0.134580709f, - 0.991709754f, 0.128498111f, - 0.992479535f, 0.122410675f, - 0.993211949f, 0.116318631f, - 0.993906970f, 0.110222207f, - 0.994564571f, 0.104121634f, - 0.995184727f, 0.098017140f, - 0.995767414f, 0.091908956f, - 0.996312612f, 0.085797312f, - 0.996820299f, 0.079682438f, - 0.997290457f, 0.073564564f, - 0.997723067f, 0.067443920f, - 0.998118113f, 0.061320736f, - 0.998475581f, 0.055195244f, - 0.998795456f, 0.049067674f, - 0.999077728f, 0.042938257f, - 0.999322385f, 0.036807223f, - 0.999529418f, 0.030674803f, - 0.999698819f, 0.024541229f, - 0.999830582f, 0.018406730f, - 0.999924702f, 0.012271538f, - 0.999981175f, 0.006135885f, - 1.000000000f, 0.000000000f, - 0.999981175f, -0.006135885f, - 0.999924702f, -0.012271538f, - 0.999830582f, -0.018406730f, - 0.999698819f, -0.024541229f, - 0.999529418f, -0.030674803f, - 0.999322385f, -0.036807223f, - 0.999077728f, -0.042938257f, - 0.998795456f, -0.049067674f, - 0.998475581f, -0.055195244f, - 0.998118113f, -0.061320736f, - 0.997723067f, -0.067443920f, - 0.997290457f, -0.073564564f, - 0.996820299f, -0.079682438f, - 0.996312612f, -0.085797312f, - 0.995767414f, -0.091908956f, - 0.995184727f, -0.098017140f, - 0.994564571f, -0.104121634f, - 0.993906970f, -0.110222207f, - 0.993211949f, -0.116318631f, - 0.992479535f, -0.122410675f, - 0.991709754f, -0.128498111f, - 0.990902635f, -0.134580709f, - 0.990058210f, -0.140658239f, - 0.989176510f, -0.146730474f, - 0.988257568f, -0.152797185f, - 0.987301418f, -0.158858143f, - 0.986308097f, -0.164913120f, - 0.985277642f, -0.170961889f, - 0.984210092f, -0.177004220f, - 0.983105487f, -0.183039888f, - 0.981963869f, -0.189068664f, - 0.980785280f, -0.195090322f, - 0.979569766f, -0.201104635f, - 0.978317371f, -0.207111376f, - 0.977028143f, -0.213110320f, - 0.975702130f, -0.219101240f, - 0.974339383f, -0.225083911f, - 0.972939952f, -0.231058108f, - 0.971503891f, -0.237023606f, - 0.970031253f, -0.242980180f, - 0.968522094f, -0.248927606f, - 0.966976471f, -0.254865660f, - 0.965394442f, -0.260794118f, - 0.963776066f, -0.266712757f, - 0.962121404f, -0.272621355f, - 0.960430519f, -0.278519689f, - 0.958703475f, -0.284407537f, - 0.956940336f, -0.290284677f, - 0.955141168f, -0.296150888f, - 0.953306040f, -0.302005949f, - 0.951435021f, -0.307849640f, - 0.949528181f, -0.313681740f, - 0.947585591f, -0.319502031f, - 0.945607325f, -0.325310292f, - 0.943593458f, -0.331106306f, - 0.941544065f, -0.336889853f, - 0.939459224f, -0.342660717f, - 0.937339012f, -0.348418680f, - 0.935183510f, -0.354163525f, - 0.932992799f, -0.359895037f, - 0.930766961f, -0.365612998f, - 0.928506080f, -0.371317194f, - 0.926210242f, -0.377007410f, - 0.923879533f, -0.382683432f, - 0.921514039f, -0.388345047f, - 0.919113852f, -0.393992040f, - 0.916679060f, -0.399624200f, - 0.914209756f, -0.405241314f, - 0.911706032f, -0.410843171f, - 0.909167983f, -0.416429560f, - 0.906595705f, -0.422000271f, - 0.903989293f, -0.427555093f, - 0.901348847f, -0.433093819f, - 0.898674466f, -0.438616239f, - 0.895966250f, -0.444122145f, - 0.893224301f, -0.449611330f, - 0.890448723f, -0.455083587f, - 0.887639620f, -0.460538711f, - 0.884797098f, -0.465976496f, - 0.881921264f, -0.471396737f, - 0.879012226f, -0.476799230f, - 0.876070094f, -0.482183772f, - 0.873094978f, -0.487550160f, - 0.870086991f, -0.492898192f, - 0.867046246f, -0.498227667f, - 0.863972856f, -0.503538384f, - 0.860866939f, -0.508830143f, - 0.857728610f, -0.514102744f, - 0.854557988f, -0.519355990f, - 0.851355193f, -0.524589683f, - 0.848120345f, -0.529803625f, - 0.844853565f, -0.534997620f, - 0.841554977f, -0.540171473f, - 0.838224706f, -0.545324988f, - 0.834862875f, -0.550457973f, - 0.831469612f, -0.555570233f, - 0.828045045f, -0.560661576f, - 0.824589303f, -0.565731811f, - 0.821102515f, -0.570780746f, - 0.817584813f, -0.575808191f, - 0.814036330f, -0.580813958f, - 0.810457198f, -0.585797857f, - 0.806847554f, -0.590759702f, - 0.803207531f, -0.595699304f, - 0.799537269f, -0.600616479f, - 0.795836905f, -0.605511041f, - 0.792106577f, -0.610382806f, - 0.788346428f, -0.615231591f, - 0.784556597f, -0.620057212f, - 0.780737229f, -0.624859488f, - 0.776888466f, -0.629638239f, - 0.773010453f, -0.634393284f, - 0.769103338f, -0.639124445f, - 0.765167266f, -0.643831543f, - 0.761202385f, -0.648514401f, - 0.757208847f, -0.653172843f, - 0.753186799f, -0.657806693f, - 0.749136395f, -0.662415778f, - 0.745057785f, -0.666999922f, - 0.740951125f, -0.671558955f, - 0.736816569f, -0.676092704f, - 0.732654272f, -0.680600998f, - 0.728464390f, -0.685083668f, - 0.724247083f, -0.689540545f, - 0.720002508f, -0.693971461f, - 0.715730825f, -0.698376249f, - 0.711432196f, -0.702754744f, - 0.707106781f, -0.707106781f, - 0.702754744f, -0.711432196f, - 0.698376249f, -0.715730825f, - 0.693971461f, -0.720002508f, - 0.689540545f, -0.724247083f, - 0.685083668f, -0.728464390f, - 0.680600998f, -0.732654272f, - 0.676092704f, -0.736816569f, - 0.671558955f, -0.740951125f, - 0.666999922f, -0.745057785f, - 0.662415778f, -0.749136395f, - 0.657806693f, -0.753186799f, - 0.653172843f, -0.757208847f, - 0.648514401f, -0.761202385f, - 0.643831543f, -0.765167266f, - 0.639124445f, -0.769103338f, - 0.634393284f, -0.773010453f, - 0.629638239f, -0.776888466f, - 0.624859488f, -0.780737229f, - 0.620057212f, -0.784556597f, - 0.615231591f, -0.788346428f, - 0.610382806f, -0.792106577f, - 0.605511041f, -0.795836905f, - 0.600616479f, -0.799537269f, - 0.595699304f, -0.803207531f, - 0.590759702f, -0.806847554f, - 0.585797857f, -0.810457198f, - 0.580813958f, -0.814036330f, - 0.575808191f, -0.817584813f, - 0.570780746f, -0.821102515f, - 0.565731811f, -0.824589303f, - 0.560661576f, -0.828045045f, - 0.555570233f, -0.831469612f, - 0.550457973f, -0.834862875f, - 0.545324988f, -0.838224706f, - 0.540171473f, -0.841554977f, - 0.534997620f, -0.844853565f, - 0.529803625f, -0.848120345f, - 0.524589683f, -0.851355193f, - 0.519355990f, -0.854557988f, - 0.514102744f, -0.857728610f, - 0.508830143f, -0.860866939f, - 0.503538384f, -0.863972856f, - 0.498227667f, -0.867046246f, - 0.492898192f, -0.870086991f, - 0.487550160f, -0.873094978f, - 0.482183772f, -0.876070094f, - 0.476799230f, -0.879012226f, - 0.471396737f, -0.881921264f, - 0.465976496f, -0.884797098f, - 0.460538711f, -0.887639620f, - 0.455083587f, -0.890448723f, - 0.449611330f, -0.893224301f, - 0.444122145f, -0.895966250f, - 0.438616239f, -0.898674466f, - 0.433093819f, -0.901348847f, - 0.427555093f, -0.903989293f, - 0.422000271f, -0.906595705f, - 0.416429560f, -0.909167983f, - 0.410843171f, -0.911706032f, - 0.405241314f, -0.914209756f, - 0.399624200f, -0.916679060f, - 0.393992040f, -0.919113852f, - 0.388345047f, -0.921514039f, - 0.382683432f, -0.923879533f, - 0.377007410f, -0.926210242f, - 0.371317194f, -0.928506080f, - 0.365612998f, -0.930766961f, - 0.359895037f, -0.932992799f, - 0.354163525f, -0.935183510f, - 0.348418680f, -0.937339012f, - 0.342660717f, -0.939459224f, - 0.336889853f, -0.941544065f, - 0.331106306f, -0.943593458f, - 0.325310292f, -0.945607325f, - 0.319502031f, -0.947585591f, - 0.313681740f, -0.949528181f, - 0.307849640f, -0.951435021f, - 0.302005949f, -0.953306040f, - 0.296150888f, -0.955141168f, - 0.290284677f, -0.956940336f, - 0.284407537f, -0.958703475f, - 0.278519689f, -0.960430519f, - 0.272621355f, -0.962121404f, - 0.266712757f, -0.963776066f, - 0.260794118f, -0.965394442f, - 0.254865660f, -0.966976471f, - 0.248927606f, -0.968522094f, - 0.242980180f, -0.970031253f, - 0.237023606f, -0.971503891f, - 0.231058108f, -0.972939952f, - 0.225083911f, -0.974339383f, - 0.219101240f, -0.975702130f, - 0.213110320f, -0.977028143f, - 0.207111376f, -0.978317371f, - 0.201104635f, -0.979569766f, - 0.195090322f, -0.980785280f, - 0.189068664f, -0.981963869f, - 0.183039888f, -0.983105487f, - 0.177004220f, -0.984210092f, - 0.170961889f, -0.985277642f, - 0.164913120f, -0.986308097f, - 0.158858143f, -0.987301418f, - 0.152797185f, -0.988257568f, - 0.146730474f, -0.989176510f, - 0.140658239f, -0.990058210f, - 0.134580709f, -0.990902635f, - 0.128498111f, -0.991709754f, - 0.122410675f, -0.992479535f, - 0.116318631f, -0.993211949f, - 0.110222207f, -0.993906970f, - 0.104121634f, -0.994564571f, - 0.098017140f, -0.995184727f, - 0.091908956f, -0.995767414f, - 0.085797312f, -0.996312612f, - 0.079682438f, -0.996820299f, - 0.073564564f, -0.997290457f, - 0.067443920f, -0.997723067f, - 0.061320736f, -0.998118113f, - 0.055195244f, -0.998475581f, - 0.049067674f, -0.998795456f, - 0.042938257f, -0.999077728f, - 0.036807223f, -0.999322385f, - 0.030674803f, -0.999529418f, - 0.024541229f, -0.999698819f, - 0.018406730f, -0.999830582f, - 0.012271538f, -0.999924702f, - 0.006135885f, -0.999981175f -}; - -const float32_t twiddleCoef_rfft_2048[2048] = { - 0.000000000f, 1.000000000f, - 0.003067957f, 0.999995294f, - 0.006135885f, 0.999981175f, - 0.009203755f, 0.999957645f, - 0.012271538f, 0.999924702f, - 0.015339206f, 0.999882347f, - 0.018406730f, 0.999830582f, - 0.021474080f, 0.999769405f, - 0.024541229f, 0.999698819f, - 0.027608146f, 0.999618822f, - 0.030674803f, 0.999529418f, - 0.033741172f, 0.999430605f, - 0.036807223f, 0.999322385f, - 0.039872928f, 0.999204759f, - 0.042938257f, 0.999077728f, - 0.046003182f, 0.998941293f, - 0.049067674f, 0.998795456f, - 0.052131705f, 0.998640218f, - 0.055195244f, 0.998475581f, - 0.058258265f, 0.998301545f, - 0.061320736f, 0.998118113f, - 0.064382631f, 0.997925286f, - 0.067443920f, 0.997723067f, - 0.070504573f, 0.997511456f, - 0.073564564f, 0.997290457f, - 0.076623861f, 0.997060070f, - 0.079682438f, 0.996820299f, - 0.082740265f, 0.996571146f, - 0.085797312f, 0.996312612f, - 0.088853553f, 0.996044701f, - 0.091908956f, 0.995767414f, - 0.094963495f, 0.995480755f, - 0.098017140f, 0.995184727f, - 0.101069863f, 0.994879331f, - 0.104121634f, 0.994564571f, - 0.107172425f, 0.994240449f, - 0.110222207f, 0.993906970f, - 0.113270952f, 0.993564136f, - 0.116318631f, 0.993211949f, - 0.119365215f, 0.992850414f, - 0.122410675f, 0.992479535f, - 0.125454983f, 0.992099313f, - 0.128498111f, 0.991709754f, - 0.131540029f, 0.991310860f, - 0.134580709f, 0.990902635f, - 0.137620122f, 0.990485084f, - 0.140658239f, 0.990058210f, - 0.143695033f, 0.989622017f, - 0.146730474f, 0.989176510f, - 0.149764535f, 0.988721692f, - 0.152797185f, 0.988257568f, - 0.155828398f, 0.987784142f, - 0.158858143f, 0.987301418f, - 0.161886394f, 0.986809402f, - 0.164913120f, 0.986308097f, - 0.167938295f, 0.985797509f, - 0.170961889f, 0.985277642f, - 0.173983873f, 0.984748502f, - 0.177004220f, 0.984210092f, - 0.180022901f, 0.983662419f, - 0.183039888f, 0.983105487f, - 0.186055152f, 0.982539302f, - 0.189068664f, 0.981963869f, - 0.192080397f, 0.981379193f, - 0.195090322f, 0.980785280f, - 0.198098411f, 0.980182136f, - 0.201104635f, 0.979569766f, - 0.204108966f, 0.978948175f, - 0.207111376f, 0.978317371f, - 0.210111837f, 0.977677358f, - 0.213110320f, 0.977028143f, - 0.216106797f, 0.976369731f, - 0.219101240f, 0.975702130f, - 0.222093621f, 0.975025345f, - 0.225083911f, 0.974339383f, - 0.228072083f, 0.973644250f, - 0.231058108f, 0.972939952f, - 0.234041959f, 0.972226497f, - 0.237023606f, 0.971503891f, - 0.240003022f, 0.970772141f, - 0.242980180f, 0.970031253f, - 0.245955050f, 0.969281235f, - 0.248927606f, 0.968522094f, - 0.251897818f, 0.967753837f, - 0.254865660f, 0.966976471f, - 0.257831102f, 0.966190003f, - 0.260794118f, 0.965394442f, - 0.263754679f, 0.964589793f, - 0.266712757f, 0.963776066f, - 0.269668326f, 0.962953267f, - 0.272621355f, 0.962121404f, - 0.275571819f, 0.961280486f, - 0.278519689f, 0.960430519f, - 0.281464938f, 0.959571513f, - 0.284407537f, 0.958703475f, - 0.287347460f, 0.957826413f, - 0.290284677f, 0.956940336f, - 0.293219163f, 0.956045251f, - 0.296150888f, 0.955141168f, - 0.299079826f, 0.954228095f, - 0.302005949f, 0.953306040f, - 0.304929230f, 0.952375013f, - 0.307849640f, 0.951435021f, - 0.310767153f, 0.950486074f, - 0.313681740f, 0.949528181f, - 0.316593376f, 0.948561350f, - 0.319502031f, 0.947585591f, - 0.322407679f, 0.946600913f, - 0.325310292f, 0.945607325f, - 0.328209844f, 0.944604837f, - 0.331106306f, 0.943593458f, - 0.333999651f, 0.942573198f, - 0.336889853f, 0.941544065f, - 0.339776884f, 0.940506071f, - 0.342660717f, 0.939459224f, - 0.345541325f, 0.938403534f, - 0.348418680f, 0.937339012f, - 0.351292756f, 0.936265667f, - 0.354163525f, 0.935183510f, - 0.357030961f, 0.934092550f, - 0.359895037f, 0.932992799f, - 0.362755724f, 0.931884266f, - 0.365612998f, 0.930766961f, - 0.368466830f, 0.929640896f, - 0.371317194f, 0.928506080f, - 0.374164063f, 0.927362526f, - 0.377007410f, 0.926210242f, - 0.379847209f, 0.925049241f, - 0.382683432f, 0.923879533f, - 0.385516054f, 0.922701128f, - 0.388345047f, 0.921514039f, - 0.391170384f, 0.920318277f, - 0.393992040f, 0.919113852f, - 0.396809987f, 0.917900776f, - 0.399624200f, 0.916679060f, - 0.402434651f, 0.915448716f, - 0.405241314f, 0.914209756f, - 0.408044163f, 0.912962190f, - 0.410843171f, 0.911706032f, - 0.413638312f, 0.910441292f, - 0.416429560f, 0.909167983f, - 0.419216888f, 0.907886116f, - 0.422000271f, 0.906595705f, - 0.424779681f, 0.905296759f, - 0.427555093f, 0.903989293f, - 0.430326481f, 0.902673318f, - 0.433093819f, 0.901348847f, - 0.435857080f, 0.900015892f, - 0.438616239f, 0.898674466f, - 0.441371269f, 0.897324581f, - 0.444122145f, 0.895966250f, - 0.446868840f, 0.894599486f, - 0.449611330f, 0.893224301f, - 0.452349587f, 0.891840709f, - 0.455083587f, 0.890448723f, - 0.457813304f, 0.889048356f, - 0.460538711f, 0.887639620f, - 0.463259784f, 0.886222530f, - 0.465976496f, 0.884797098f, - 0.468688822f, 0.883363339f, - 0.471396737f, 0.881921264f, - 0.474100215f, 0.880470889f, - 0.476799230f, 0.879012226f, - 0.479493758f, 0.877545290f, - 0.482183772f, 0.876070094f, - 0.484869248f, 0.874586652f, - 0.487550160f, 0.873094978f, - 0.490226483f, 0.871595087f, - 0.492898192f, 0.870086991f, - 0.495565262f, 0.868570706f, - 0.498227667f, 0.867046246f, - 0.500885383f, 0.865513624f, - 0.503538384f, 0.863972856f, - 0.506186645f, 0.862423956f, - 0.508830143f, 0.860866939f, - 0.511468850f, 0.859301818f, - 0.514102744f, 0.857728610f, - 0.516731799f, 0.856147328f, - 0.519355990f, 0.854557988f, - 0.521975293f, 0.852960605f, - 0.524589683f, 0.851355193f, - 0.527199135f, 0.849741768f, - 0.529803625f, 0.848120345f, - 0.532403128f, 0.846490939f, - 0.534997620f, 0.844853565f, - 0.537587076f, 0.843208240f, - 0.540171473f, 0.841554977f, - 0.542750785f, 0.839893794f, - 0.545324988f, 0.838224706f, - 0.547894059f, 0.836547727f, - 0.550457973f, 0.834862875f, - 0.553016706f, 0.833170165f, - 0.555570233f, 0.831469612f, - 0.558118531f, 0.829761234f, - 0.560661576f, 0.828045045f, - 0.563199344f, 0.826321063f, - 0.565731811f, 0.824589303f, - 0.568258953f, 0.822849781f, - 0.570780746f, 0.821102515f, - 0.573297167f, 0.819347520f, - 0.575808191f, 0.817584813f, - 0.578313796f, 0.815814411f, - 0.580813958f, 0.814036330f, - 0.583308653f, 0.812250587f, - 0.585797857f, 0.810457198f, - 0.588281548f, 0.808656182f, - 0.590759702f, 0.806847554f, - 0.593232295f, 0.805031331f, - 0.595699304f, 0.803207531f, - 0.598160707f, 0.801376172f, - 0.600616479f, 0.799537269f, - 0.603066599f, 0.797690841f, - 0.605511041f, 0.795836905f, - 0.607949785f, 0.793975478f, - 0.610382806f, 0.792106577f, - 0.612810082f, 0.790230221f, - 0.615231591f, 0.788346428f, - 0.617647308f, 0.786455214f, - 0.620057212f, 0.784556597f, - 0.622461279f, 0.782650596f, - 0.624859488f, 0.780737229f, - 0.627251815f, 0.778816512f, - 0.629638239f, 0.776888466f, - 0.632018736f, 0.774953107f, - 0.634393284f, 0.773010453f, - 0.636761861f, 0.771060524f, - 0.639124445f, 0.769103338f, - 0.641481013f, 0.767138912f, - 0.643831543f, 0.765167266f, - 0.646176013f, 0.763188417f, - 0.648514401f, 0.761202385f, - 0.650846685f, 0.759209189f, - 0.653172843f, 0.757208847f, - 0.655492853f, 0.755201377f, - 0.657806693f, 0.753186799f, - 0.660114342f, 0.751165132f, - 0.662415778f, 0.749136395f, - 0.664710978f, 0.747100606f, - 0.666999922f, 0.745057785f, - 0.669282588f, 0.743007952f, - 0.671558955f, 0.740951125f, - 0.673829000f, 0.738887324f, - 0.676092704f, 0.736816569f, - 0.678350043f, 0.734738878f, - 0.680600998f, 0.732654272f, - 0.682845546f, 0.730562769f, - 0.685083668f, 0.728464390f, - 0.687315341f, 0.726359155f, - 0.689540545f, 0.724247083f, - 0.691759258f, 0.722128194f, - 0.693971461f, 0.720002508f, - 0.696177131f, 0.717870045f, - 0.698376249f, 0.715730825f, - 0.700568794f, 0.713584869f, - 0.702754744f, 0.711432196f, - 0.704934080f, 0.709272826f, - 0.707106781f, 0.707106781f, - 0.709272826f, 0.704934080f, - 0.711432196f, 0.702754744f, - 0.713584869f, 0.700568794f, - 0.715730825f, 0.698376249f, - 0.717870045f, 0.696177131f, - 0.720002508f, 0.693971461f, - 0.722128194f, 0.691759258f, - 0.724247083f, 0.689540545f, - 0.726359155f, 0.687315341f, - 0.728464390f, 0.685083668f, - 0.730562769f, 0.682845546f, - 0.732654272f, 0.680600998f, - 0.734738878f, 0.678350043f, - 0.736816569f, 0.676092704f, - 0.738887324f, 0.673829000f, - 0.740951125f, 0.671558955f, - 0.743007952f, 0.669282588f, - 0.745057785f, 0.666999922f, - 0.747100606f, 0.664710978f, - 0.749136395f, 0.662415778f, - 0.751165132f, 0.660114342f, - 0.753186799f, 0.657806693f, - 0.755201377f, 0.655492853f, - 0.757208847f, 0.653172843f, - 0.759209189f, 0.650846685f, - 0.761202385f, 0.648514401f, - 0.763188417f, 0.646176013f, - 0.765167266f, 0.643831543f, - 0.767138912f, 0.641481013f, - 0.769103338f, 0.639124445f, - 0.771060524f, 0.636761861f, - 0.773010453f, 0.634393284f, - 0.774953107f, 0.632018736f, - 0.776888466f, 0.629638239f, - 0.778816512f, 0.627251815f, - 0.780737229f, 0.624859488f, - 0.782650596f, 0.622461279f, - 0.784556597f, 0.620057212f, - 0.786455214f, 0.617647308f, - 0.788346428f, 0.615231591f, - 0.790230221f, 0.612810082f, - 0.792106577f, 0.610382806f, - 0.793975478f, 0.607949785f, - 0.795836905f, 0.605511041f, - 0.797690841f, 0.603066599f, - 0.799537269f, 0.600616479f, - 0.801376172f, 0.598160707f, - 0.803207531f, 0.595699304f, - 0.805031331f, 0.593232295f, - 0.806847554f, 0.590759702f, - 0.808656182f, 0.588281548f, - 0.810457198f, 0.585797857f, - 0.812250587f, 0.583308653f, - 0.814036330f, 0.580813958f, - 0.815814411f, 0.578313796f, - 0.817584813f, 0.575808191f, - 0.819347520f, 0.573297167f, - 0.821102515f, 0.570780746f, - 0.822849781f, 0.568258953f, - 0.824589303f, 0.565731811f, - 0.826321063f, 0.563199344f, - 0.828045045f, 0.560661576f, - 0.829761234f, 0.558118531f, - 0.831469612f, 0.555570233f, - 0.833170165f, 0.553016706f, - 0.834862875f, 0.550457973f, - 0.836547727f, 0.547894059f, - 0.838224706f, 0.545324988f, - 0.839893794f, 0.542750785f, - 0.841554977f, 0.540171473f, - 0.843208240f, 0.537587076f, - 0.844853565f, 0.534997620f, - 0.846490939f, 0.532403128f, - 0.848120345f, 0.529803625f, - 0.849741768f, 0.527199135f, - 0.851355193f, 0.524589683f, - 0.852960605f, 0.521975293f, - 0.854557988f, 0.519355990f, - 0.856147328f, 0.516731799f, - 0.857728610f, 0.514102744f, - 0.859301818f, 0.511468850f, - 0.860866939f, 0.508830143f, - 0.862423956f, 0.506186645f, - 0.863972856f, 0.503538384f, - 0.865513624f, 0.500885383f, - 0.867046246f, 0.498227667f, - 0.868570706f, 0.495565262f, - 0.870086991f, 0.492898192f, - 0.871595087f, 0.490226483f, - 0.873094978f, 0.487550160f, - 0.874586652f, 0.484869248f, - 0.876070094f, 0.482183772f, - 0.877545290f, 0.479493758f, - 0.879012226f, 0.476799230f, - 0.880470889f, 0.474100215f, - 0.881921264f, 0.471396737f, - 0.883363339f, 0.468688822f, - 0.884797098f, 0.465976496f, - 0.886222530f, 0.463259784f, - 0.887639620f, 0.460538711f, - 0.889048356f, 0.457813304f, - 0.890448723f, 0.455083587f, - 0.891840709f, 0.452349587f, - 0.893224301f, 0.449611330f, - 0.894599486f, 0.446868840f, - 0.895966250f, 0.444122145f, - 0.897324581f, 0.441371269f, - 0.898674466f, 0.438616239f, - 0.900015892f, 0.435857080f, - 0.901348847f, 0.433093819f, - 0.902673318f, 0.430326481f, - 0.903989293f, 0.427555093f, - 0.905296759f, 0.424779681f, - 0.906595705f, 0.422000271f, - 0.907886116f, 0.419216888f, - 0.909167983f, 0.416429560f, - 0.910441292f, 0.413638312f, - 0.911706032f, 0.410843171f, - 0.912962190f, 0.408044163f, - 0.914209756f, 0.405241314f, - 0.915448716f, 0.402434651f, - 0.916679060f, 0.399624200f, - 0.917900776f, 0.396809987f, - 0.919113852f, 0.393992040f, - 0.920318277f, 0.391170384f, - 0.921514039f, 0.388345047f, - 0.922701128f, 0.385516054f, - 0.923879533f, 0.382683432f, - 0.925049241f, 0.379847209f, - 0.926210242f, 0.377007410f, - 0.927362526f, 0.374164063f, - 0.928506080f, 0.371317194f, - 0.929640896f, 0.368466830f, - 0.930766961f, 0.365612998f, - 0.931884266f, 0.362755724f, - 0.932992799f, 0.359895037f, - 0.934092550f, 0.357030961f, - 0.935183510f, 0.354163525f, - 0.936265667f, 0.351292756f, - 0.937339012f, 0.348418680f, - 0.938403534f, 0.345541325f, - 0.939459224f, 0.342660717f, - 0.940506071f, 0.339776884f, - 0.941544065f, 0.336889853f, - 0.942573198f, 0.333999651f, - 0.943593458f, 0.331106306f, - 0.944604837f, 0.328209844f, - 0.945607325f, 0.325310292f, - 0.946600913f, 0.322407679f, - 0.947585591f, 0.319502031f, - 0.948561350f, 0.316593376f, - 0.949528181f, 0.313681740f, - 0.950486074f, 0.310767153f, - 0.951435021f, 0.307849640f, - 0.952375013f, 0.304929230f, - 0.953306040f, 0.302005949f, - 0.954228095f, 0.299079826f, - 0.955141168f, 0.296150888f, - 0.956045251f, 0.293219163f, - 0.956940336f, 0.290284677f, - 0.957826413f, 0.287347460f, - 0.958703475f, 0.284407537f, - 0.959571513f, 0.281464938f, - 0.960430519f, 0.278519689f, - 0.961280486f, 0.275571819f, - 0.962121404f, 0.272621355f, - 0.962953267f, 0.269668326f, - 0.963776066f, 0.266712757f, - 0.964589793f, 0.263754679f, - 0.965394442f, 0.260794118f, - 0.966190003f, 0.257831102f, - 0.966976471f, 0.254865660f, - 0.967753837f, 0.251897818f, - 0.968522094f, 0.248927606f, - 0.969281235f, 0.245955050f, - 0.970031253f, 0.242980180f, - 0.970772141f, 0.240003022f, - 0.971503891f, 0.237023606f, - 0.972226497f, 0.234041959f, - 0.972939952f, 0.231058108f, - 0.973644250f, 0.228072083f, - 0.974339383f, 0.225083911f, - 0.975025345f, 0.222093621f, - 0.975702130f, 0.219101240f, - 0.976369731f, 0.216106797f, - 0.977028143f, 0.213110320f, - 0.977677358f, 0.210111837f, - 0.978317371f, 0.207111376f, - 0.978948175f, 0.204108966f, - 0.979569766f, 0.201104635f, - 0.980182136f, 0.198098411f, - 0.980785280f, 0.195090322f, - 0.981379193f, 0.192080397f, - 0.981963869f, 0.189068664f, - 0.982539302f, 0.186055152f, - 0.983105487f, 0.183039888f, - 0.983662419f, 0.180022901f, - 0.984210092f, 0.177004220f, - 0.984748502f, 0.173983873f, - 0.985277642f, 0.170961889f, - 0.985797509f, 0.167938295f, - 0.986308097f, 0.164913120f, - 0.986809402f, 0.161886394f, - 0.987301418f, 0.158858143f, - 0.987784142f, 0.155828398f, - 0.988257568f, 0.152797185f, - 0.988721692f, 0.149764535f, - 0.989176510f, 0.146730474f, - 0.989622017f, 0.143695033f, - 0.990058210f, 0.140658239f, - 0.990485084f, 0.137620122f, - 0.990902635f, 0.134580709f, - 0.991310860f, 0.131540029f, - 0.991709754f, 0.128498111f, - 0.992099313f, 0.125454983f, - 0.992479535f, 0.122410675f, - 0.992850414f, 0.119365215f, - 0.993211949f, 0.116318631f, - 0.993564136f, 0.113270952f, - 0.993906970f, 0.110222207f, - 0.994240449f, 0.107172425f, - 0.994564571f, 0.104121634f, - 0.994879331f, 0.101069863f, - 0.995184727f, 0.098017140f, - 0.995480755f, 0.094963495f, - 0.995767414f, 0.091908956f, - 0.996044701f, 0.088853553f, - 0.996312612f, 0.085797312f, - 0.996571146f, 0.082740265f, - 0.996820299f, 0.079682438f, - 0.997060070f, 0.076623861f, - 0.997290457f, 0.073564564f, - 0.997511456f, 0.070504573f, - 0.997723067f, 0.067443920f, - 0.997925286f, 0.064382631f, - 0.998118113f, 0.061320736f, - 0.998301545f, 0.058258265f, - 0.998475581f, 0.055195244f, - 0.998640218f, 0.052131705f, - 0.998795456f, 0.049067674f, - 0.998941293f, 0.046003182f, - 0.999077728f, 0.042938257f, - 0.999204759f, 0.039872928f, - 0.999322385f, 0.036807223f, - 0.999430605f, 0.033741172f, - 0.999529418f, 0.030674803f, - 0.999618822f, 0.027608146f, - 0.999698819f, 0.024541229f, - 0.999769405f, 0.021474080f, - 0.999830582f, 0.018406730f, - 0.999882347f, 0.015339206f, - 0.999924702f, 0.012271538f, - 0.999957645f, 0.009203755f, - 0.999981175f, 0.006135885f, - 0.999995294f, 0.003067957f, - 1.000000000f, 0.000000000f, - 0.999995294f, -0.003067957f, - 0.999981175f, -0.006135885f, - 0.999957645f, -0.009203755f, - 0.999924702f, -0.012271538f, - 0.999882347f, -0.015339206f, - 0.999830582f, -0.018406730f, - 0.999769405f, -0.021474080f, - 0.999698819f, -0.024541229f, - 0.999618822f, -0.027608146f, - 0.999529418f, -0.030674803f, - 0.999430605f, -0.033741172f, - 0.999322385f, -0.036807223f, - 0.999204759f, -0.039872928f, - 0.999077728f, -0.042938257f, - 0.998941293f, -0.046003182f, - 0.998795456f, -0.049067674f, - 0.998640218f, -0.052131705f, - 0.998475581f, -0.055195244f, - 0.998301545f, -0.058258265f, - 0.998118113f, -0.061320736f, - 0.997925286f, -0.064382631f, - 0.997723067f, -0.067443920f, - 0.997511456f, -0.070504573f, - 0.997290457f, -0.073564564f, - 0.997060070f, -0.076623861f, - 0.996820299f, -0.079682438f, - 0.996571146f, -0.082740265f, - 0.996312612f, -0.085797312f, - 0.996044701f, -0.088853553f, - 0.995767414f, -0.091908956f, - 0.995480755f, -0.094963495f, - 0.995184727f, -0.098017140f, - 0.994879331f, -0.101069863f, - 0.994564571f, -0.104121634f, - 0.994240449f, -0.107172425f, - 0.993906970f, -0.110222207f, - 0.993564136f, -0.113270952f, - 0.993211949f, -0.116318631f, - 0.992850414f, -0.119365215f, - 0.992479535f, -0.122410675f, - 0.992099313f, -0.125454983f, - 0.991709754f, -0.128498111f, - 0.991310860f, -0.131540029f, - 0.990902635f, -0.134580709f, - 0.990485084f, -0.137620122f, - 0.990058210f, -0.140658239f, - 0.989622017f, -0.143695033f, - 0.989176510f, -0.146730474f, - 0.988721692f, -0.149764535f, - 0.988257568f, -0.152797185f, - 0.987784142f, -0.155828398f, - 0.987301418f, -0.158858143f, - 0.986809402f, -0.161886394f, - 0.986308097f, -0.164913120f, - 0.985797509f, -0.167938295f, - 0.985277642f, -0.170961889f, - 0.984748502f, -0.173983873f, - 0.984210092f, -0.177004220f, - 0.983662419f, -0.180022901f, - 0.983105487f, -0.183039888f, - 0.982539302f, -0.186055152f, - 0.981963869f, -0.189068664f, - 0.981379193f, -0.192080397f, - 0.980785280f, -0.195090322f, - 0.980182136f, -0.198098411f, - 0.979569766f, -0.201104635f, - 0.978948175f, -0.204108966f, - 0.978317371f, -0.207111376f, - 0.977677358f, -0.210111837f, - 0.977028143f, -0.213110320f, - 0.976369731f, -0.216106797f, - 0.975702130f, -0.219101240f, - 0.975025345f, -0.222093621f, - 0.974339383f, -0.225083911f, - 0.973644250f, -0.228072083f, - 0.972939952f, -0.231058108f, - 0.972226497f, -0.234041959f, - 0.971503891f, -0.237023606f, - 0.970772141f, -0.240003022f, - 0.970031253f, -0.242980180f, - 0.969281235f, -0.245955050f, - 0.968522094f, -0.248927606f, - 0.967753837f, -0.251897818f, - 0.966976471f, -0.254865660f, - 0.966190003f, -0.257831102f, - 0.965394442f, -0.260794118f, - 0.964589793f, -0.263754679f, - 0.963776066f, -0.266712757f, - 0.962953267f, -0.269668326f, - 0.962121404f, -0.272621355f, - 0.961280486f, -0.275571819f, - 0.960430519f, -0.278519689f, - 0.959571513f, -0.281464938f, - 0.958703475f, -0.284407537f, - 0.957826413f, -0.287347460f, - 0.956940336f, -0.290284677f, - 0.956045251f, -0.293219163f, - 0.955141168f, -0.296150888f, - 0.954228095f, -0.299079826f, - 0.953306040f, -0.302005949f, - 0.952375013f, -0.304929230f, - 0.951435021f, -0.307849640f, - 0.950486074f, -0.310767153f, - 0.949528181f, -0.313681740f, - 0.948561350f, -0.316593376f, - 0.947585591f, -0.319502031f, - 0.946600913f, -0.322407679f, - 0.945607325f, -0.325310292f, - 0.944604837f, -0.328209844f, - 0.943593458f, -0.331106306f, - 0.942573198f, -0.333999651f, - 0.941544065f, -0.336889853f, - 0.940506071f, -0.339776884f, - 0.939459224f, -0.342660717f, - 0.938403534f, -0.345541325f, - 0.937339012f, -0.348418680f, - 0.936265667f, -0.351292756f, - 0.935183510f, -0.354163525f, - 0.934092550f, -0.357030961f, - 0.932992799f, -0.359895037f, - 0.931884266f, -0.362755724f, - 0.930766961f, -0.365612998f, - 0.929640896f, -0.368466830f, - 0.928506080f, -0.371317194f, - 0.927362526f, -0.374164063f, - 0.926210242f, -0.377007410f, - 0.925049241f, -0.379847209f, - 0.923879533f, -0.382683432f, - 0.922701128f, -0.385516054f, - 0.921514039f, -0.388345047f, - 0.920318277f, -0.391170384f, - 0.919113852f, -0.393992040f, - 0.917900776f, -0.396809987f, - 0.916679060f, -0.399624200f, - 0.915448716f, -0.402434651f, - 0.914209756f, -0.405241314f, - 0.912962190f, -0.408044163f, - 0.911706032f, -0.410843171f, - 0.910441292f, -0.413638312f, - 0.909167983f, -0.416429560f, - 0.907886116f, -0.419216888f, - 0.906595705f, -0.422000271f, - 0.905296759f, -0.424779681f, - 0.903989293f, -0.427555093f, - 0.902673318f, -0.430326481f, - 0.901348847f, -0.433093819f, - 0.900015892f, -0.435857080f, - 0.898674466f, -0.438616239f, - 0.897324581f, -0.441371269f, - 0.895966250f, -0.444122145f, - 0.894599486f, -0.446868840f, - 0.893224301f, -0.449611330f, - 0.891840709f, -0.452349587f, - 0.890448723f, -0.455083587f, - 0.889048356f, -0.457813304f, - 0.887639620f, -0.460538711f, - 0.886222530f, -0.463259784f, - 0.884797098f, -0.465976496f, - 0.883363339f, -0.468688822f, - 0.881921264f, -0.471396737f, - 0.880470889f, -0.474100215f, - 0.879012226f, -0.476799230f, - 0.877545290f, -0.479493758f, - 0.876070094f, -0.482183772f, - 0.874586652f, -0.484869248f, - 0.873094978f, -0.487550160f, - 0.871595087f, -0.490226483f, - 0.870086991f, -0.492898192f, - 0.868570706f, -0.495565262f, - 0.867046246f, -0.498227667f, - 0.865513624f, -0.500885383f, - 0.863972856f, -0.503538384f, - 0.862423956f, -0.506186645f, - 0.860866939f, -0.508830143f, - 0.859301818f, -0.511468850f, - 0.857728610f, -0.514102744f, - 0.856147328f, -0.516731799f, - 0.854557988f, -0.519355990f, - 0.852960605f, -0.521975293f, - 0.851355193f, -0.524589683f, - 0.849741768f, -0.527199135f, - 0.848120345f, -0.529803625f, - 0.846490939f, -0.532403128f, - 0.844853565f, -0.534997620f, - 0.843208240f, -0.537587076f, - 0.841554977f, -0.540171473f, - 0.839893794f, -0.542750785f, - 0.838224706f, -0.545324988f, - 0.836547727f, -0.547894059f, - 0.834862875f, -0.550457973f, - 0.833170165f, -0.553016706f, - 0.831469612f, -0.555570233f, - 0.829761234f, -0.558118531f, - 0.828045045f, -0.560661576f, - 0.826321063f, -0.563199344f, - 0.824589303f, -0.565731811f, - 0.822849781f, -0.568258953f, - 0.821102515f, -0.570780746f, - 0.819347520f, -0.573297167f, - 0.817584813f, -0.575808191f, - 0.815814411f, -0.578313796f, - 0.814036330f, -0.580813958f, - 0.812250587f, -0.583308653f, - 0.810457198f, -0.585797857f, - 0.808656182f, -0.588281548f, - 0.806847554f, -0.590759702f, - 0.805031331f, -0.593232295f, - 0.803207531f, -0.595699304f, - 0.801376172f, -0.598160707f, - 0.799537269f, -0.600616479f, - 0.797690841f, -0.603066599f, - 0.795836905f, -0.605511041f, - 0.793975478f, -0.607949785f, - 0.792106577f, -0.610382806f, - 0.790230221f, -0.612810082f, - 0.788346428f, -0.615231591f, - 0.786455214f, -0.617647308f, - 0.784556597f, -0.620057212f, - 0.782650596f, -0.622461279f, - 0.780737229f, -0.624859488f, - 0.778816512f, -0.627251815f, - 0.776888466f, -0.629638239f, - 0.774953107f, -0.632018736f, - 0.773010453f, -0.634393284f, - 0.771060524f, -0.636761861f, - 0.769103338f, -0.639124445f, - 0.767138912f, -0.641481013f, - 0.765167266f, -0.643831543f, - 0.763188417f, -0.646176013f, - 0.761202385f, -0.648514401f, - 0.759209189f, -0.650846685f, - 0.757208847f, -0.653172843f, - 0.755201377f, -0.655492853f, - 0.753186799f, -0.657806693f, - 0.751165132f, -0.660114342f, - 0.749136395f, -0.662415778f, - 0.747100606f, -0.664710978f, - 0.745057785f, -0.666999922f, - 0.743007952f, -0.669282588f, - 0.740951125f, -0.671558955f, - 0.738887324f, -0.673829000f, - 0.736816569f, -0.676092704f, - 0.734738878f, -0.678350043f, - 0.732654272f, -0.680600998f, - 0.730562769f, -0.682845546f, - 0.728464390f, -0.685083668f, - 0.726359155f, -0.687315341f, - 0.724247083f, -0.689540545f, - 0.722128194f, -0.691759258f, - 0.720002508f, -0.693971461f, - 0.717870045f, -0.696177131f, - 0.715730825f, -0.698376249f, - 0.713584869f, -0.700568794f, - 0.711432196f, -0.702754744f, - 0.709272826f, -0.704934080f, - 0.707106781f, -0.707106781f, - 0.704934080f, -0.709272826f, - 0.702754744f, -0.711432196f, - 0.700568794f, -0.713584869f, - 0.698376249f, -0.715730825f, - 0.696177131f, -0.717870045f, - 0.693971461f, -0.720002508f, - 0.691759258f, -0.722128194f, - 0.689540545f, -0.724247083f, - 0.687315341f, -0.726359155f, - 0.685083668f, -0.728464390f, - 0.682845546f, -0.730562769f, - 0.680600998f, -0.732654272f, - 0.678350043f, -0.734738878f, - 0.676092704f, -0.736816569f, - 0.673829000f, -0.738887324f, - 0.671558955f, -0.740951125f, - 0.669282588f, -0.743007952f, - 0.666999922f, -0.745057785f, - 0.664710978f, -0.747100606f, - 0.662415778f, -0.749136395f, - 0.660114342f, -0.751165132f, - 0.657806693f, -0.753186799f, - 0.655492853f, -0.755201377f, - 0.653172843f, -0.757208847f, - 0.650846685f, -0.759209189f, - 0.648514401f, -0.761202385f, - 0.646176013f, -0.763188417f, - 0.643831543f, -0.765167266f, - 0.641481013f, -0.767138912f, - 0.639124445f, -0.769103338f, - 0.636761861f, -0.771060524f, - 0.634393284f, -0.773010453f, - 0.632018736f, -0.774953107f, - 0.629638239f, -0.776888466f, - 0.627251815f, -0.778816512f, - 0.624859488f, -0.780737229f, - 0.622461279f, -0.782650596f, - 0.620057212f, -0.784556597f, - 0.617647308f, -0.786455214f, - 0.615231591f, -0.788346428f, - 0.612810082f, -0.790230221f, - 0.610382806f, -0.792106577f, - 0.607949785f, -0.793975478f, - 0.605511041f, -0.795836905f, - 0.603066599f, -0.797690841f, - 0.600616479f, -0.799537269f, - 0.598160707f, -0.801376172f, - 0.595699304f, -0.803207531f, - 0.593232295f, -0.805031331f, - 0.590759702f, -0.806847554f, - 0.588281548f, -0.808656182f, - 0.585797857f, -0.810457198f, - 0.583308653f, -0.812250587f, - 0.580813958f, -0.814036330f, - 0.578313796f, -0.815814411f, - 0.575808191f, -0.817584813f, - 0.573297167f, -0.819347520f, - 0.570780746f, -0.821102515f, - 0.568258953f, -0.822849781f, - 0.565731811f, -0.824589303f, - 0.563199344f, -0.826321063f, - 0.560661576f, -0.828045045f, - 0.558118531f, -0.829761234f, - 0.555570233f, -0.831469612f, - 0.553016706f, -0.833170165f, - 0.550457973f, -0.834862875f, - 0.547894059f, -0.836547727f, - 0.545324988f, -0.838224706f, - 0.542750785f, -0.839893794f, - 0.540171473f, -0.841554977f, - 0.537587076f, -0.843208240f, - 0.534997620f, -0.844853565f, - 0.532403128f, -0.846490939f, - 0.529803625f, -0.848120345f, - 0.527199135f, -0.849741768f, - 0.524589683f, -0.851355193f, - 0.521975293f, -0.852960605f, - 0.519355990f, -0.854557988f, - 0.516731799f, -0.856147328f, - 0.514102744f, -0.857728610f, - 0.511468850f, -0.859301818f, - 0.508830143f, -0.860866939f, - 0.506186645f, -0.862423956f, - 0.503538384f, -0.863972856f, - 0.500885383f, -0.865513624f, - 0.498227667f, -0.867046246f, - 0.495565262f, -0.868570706f, - 0.492898192f, -0.870086991f, - 0.490226483f, -0.871595087f, - 0.487550160f, -0.873094978f, - 0.484869248f, -0.874586652f, - 0.482183772f, -0.876070094f, - 0.479493758f, -0.877545290f, - 0.476799230f, -0.879012226f, - 0.474100215f, -0.880470889f, - 0.471396737f, -0.881921264f, - 0.468688822f, -0.883363339f, - 0.465976496f, -0.884797098f, - 0.463259784f, -0.886222530f, - 0.460538711f, -0.887639620f, - 0.457813304f, -0.889048356f, - 0.455083587f, -0.890448723f, - 0.452349587f, -0.891840709f, - 0.449611330f, -0.893224301f, - 0.446868840f, -0.894599486f, - 0.444122145f, -0.895966250f, - 0.441371269f, -0.897324581f, - 0.438616239f, -0.898674466f, - 0.435857080f, -0.900015892f, - 0.433093819f, -0.901348847f, - 0.430326481f, -0.902673318f, - 0.427555093f, -0.903989293f, - 0.424779681f, -0.905296759f, - 0.422000271f, -0.906595705f, - 0.419216888f, -0.907886116f, - 0.416429560f, -0.909167983f, - 0.413638312f, -0.910441292f, - 0.410843171f, -0.911706032f, - 0.408044163f, -0.912962190f, - 0.405241314f, -0.914209756f, - 0.402434651f, -0.915448716f, - 0.399624200f, -0.916679060f, - 0.396809987f, -0.917900776f, - 0.393992040f, -0.919113852f, - 0.391170384f, -0.920318277f, - 0.388345047f, -0.921514039f, - 0.385516054f, -0.922701128f, - 0.382683432f, -0.923879533f, - 0.379847209f, -0.925049241f, - 0.377007410f, -0.926210242f, - 0.374164063f, -0.927362526f, - 0.371317194f, -0.928506080f, - 0.368466830f, -0.929640896f, - 0.365612998f, -0.930766961f, - 0.362755724f, -0.931884266f, - 0.359895037f, -0.932992799f, - 0.357030961f, -0.934092550f, - 0.354163525f, -0.935183510f, - 0.351292756f, -0.936265667f, - 0.348418680f, -0.937339012f, - 0.345541325f, -0.938403534f, - 0.342660717f, -0.939459224f, - 0.339776884f, -0.940506071f, - 0.336889853f, -0.941544065f, - 0.333999651f, -0.942573198f, - 0.331106306f, -0.943593458f, - 0.328209844f, -0.944604837f, - 0.325310292f, -0.945607325f, - 0.322407679f, -0.946600913f, - 0.319502031f, -0.947585591f, - 0.316593376f, -0.948561350f, - 0.313681740f, -0.949528181f, - 0.310767153f, -0.950486074f, - 0.307849640f, -0.951435021f, - 0.304929230f, -0.952375013f, - 0.302005949f, -0.953306040f, - 0.299079826f, -0.954228095f, - 0.296150888f, -0.955141168f, - 0.293219163f, -0.956045251f, - 0.290284677f, -0.956940336f, - 0.287347460f, -0.957826413f, - 0.284407537f, -0.958703475f, - 0.281464938f, -0.959571513f, - 0.278519689f, -0.960430519f, - 0.275571819f, -0.961280486f, - 0.272621355f, -0.962121404f, - 0.269668326f, -0.962953267f, - 0.266712757f, -0.963776066f, - 0.263754679f, -0.964589793f, - 0.260794118f, -0.965394442f, - 0.257831102f, -0.966190003f, - 0.254865660f, -0.966976471f, - 0.251897818f, -0.967753837f, - 0.248927606f, -0.968522094f, - 0.245955050f, -0.969281235f, - 0.242980180f, -0.970031253f, - 0.240003022f, -0.970772141f, - 0.237023606f, -0.971503891f, - 0.234041959f, -0.972226497f, - 0.231058108f, -0.972939952f, - 0.228072083f, -0.973644250f, - 0.225083911f, -0.974339383f, - 0.222093621f, -0.975025345f, - 0.219101240f, -0.975702130f, - 0.216106797f, -0.976369731f, - 0.213110320f, -0.977028143f, - 0.210111837f, -0.977677358f, - 0.207111376f, -0.978317371f, - 0.204108966f, -0.978948175f, - 0.201104635f, -0.979569766f, - 0.198098411f, -0.980182136f, - 0.195090322f, -0.980785280f, - 0.192080397f, -0.981379193f, - 0.189068664f, -0.981963869f, - 0.186055152f, -0.982539302f, - 0.183039888f, -0.983105487f, - 0.180022901f, -0.983662419f, - 0.177004220f, -0.984210092f, - 0.173983873f, -0.984748502f, - 0.170961889f, -0.985277642f, - 0.167938295f, -0.985797509f, - 0.164913120f, -0.986308097f, - 0.161886394f, -0.986809402f, - 0.158858143f, -0.987301418f, - 0.155828398f, -0.987784142f, - 0.152797185f, -0.988257568f, - 0.149764535f, -0.988721692f, - 0.146730474f, -0.989176510f, - 0.143695033f, -0.989622017f, - 0.140658239f, -0.990058210f, - 0.137620122f, -0.990485084f, - 0.134580709f, -0.990902635f, - 0.131540029f, -0.991310860f, - 0.128498111f, -0.991709754f, - 0.125454983f, -0.992099313f, - 0.122410675f, -0.992479535f, - 0.119365215f, -0.992850414f, - 0.116318631f, -0.993211949f, - 0.113270952f, -0.993564136f, - 0.110222207f, -0.993906970f, - 0.107172425f, -0.994240449f, - 0.104121634f, -0.994564571f, - 0.101069863f, -0.994879331f, - 0.098017140f, -0.995184727f, - 0.094963495f, -0.995480755f, - 0.091908956f, -0.995767414f, - 0.088853553f, -0.996044701f, - 0.085797312f, -0.996312612f, - 0.082740265f, -0.996571146f, - 0.079682438f, -0.996820299f, - 0.076623861f, -0.997060070f, - 0.073564564f, -0.997290457f, - 0.070504573f, -0.997511456f, - 0.067443920f, -0.997723067f, - 0.064382631f, -0.997925286f, - 0.061320736f, -0.998118113f, - 0.058258265f, -0.998301545f, - 0.055195244f, -0.998475581f, - 0.052131705f, -0.998640218f, - 0.049067674f, -0.998795456f, - 0.046003182f, -0.998941293f, - 0.042938257f, -0.999077728f, - 0.039872928f, -0.999204759f, - 0.036807223f, -0.999322385f, - 0.033741172f, -0.999430605f, - 0.030674803f, -0.999529418f, - 0.027608146f, -0.999618822f, - 0.024541229f, -0.999698819f, - 0.021474080f, -0.999769405f, - 0.018406730f, -0.999830582f, - 0.015339206f, -0.999882347f, - 0.012271538f, -0.999924702f, - 0.009203755f, -0.999957645f, - 0.006135885f, -0.999981175f, - 0.003067957f, -0.999995294f -}; - -const float32_t twiddleCoef_rfft_4096[4096] = { - 0.000000000f, 1.000000000f, - 0.001533980f, 0.999998823f, - 0.003067957f, 0.999995294f, - 0.004601926f, 0.999989411f, - 0.006135885f, 0.999981175f, - 0.007669829f, 0.999970586f, - 0.009203755f, 0.999957645f, - 0.010737659f, 0.999942350f, - 0.012271538f, 0.999924702f, - 0.013805389f, 0.999904701f, - 0.015339206f, 0.999882347f, - 0.016872988f, 0.999857641f, - 0.018406730f, 0.999830582f, - 0.019940429f, 0.999801170f, - 0.021474080f, 0.999769405f, - 0.023007681f, 0.999735288f, - 0.024541229f, 0.999698819f, - 0.026074718f, 0.999659997f, - 0.027608146f, 0.999618822f, - 0.029141509f, 0.999575296f, - 0.030674803f, 0.999529418f, - 0.032208025f, 0.999481187f, - 0.033741172f, 0.999430605f, - 0.035274239f, 0.999377670f, - 0.036807223f, 0.999322385f, - 0.038340120f, 0.999264747f, - 0.039872928f, 0.999204759f, - 0.041405641f, 0.999142419f, - 0.042938257f, 0.999077728f, - 0.044470772f, 0.999010686f, - 0.046003182f, 0.998941293f, - 0.047535484f, 0.998869550f, - 0.049067674f, 0.998795456f, - 0.050599749f, 0.998719012f, - 0.052131705f, 0.998640218f, - 0.053663538f, 0.998559074f, - 0.055195244f, 0.998475581f, - 0.056726821f, 0.998389737f, - 0.058258265f, 0.998301545f, - 0.059789571f, 0.998211003f, - 0.061320736f, 0.998118113f, - 0.062851758f, 0.998022874f, - 0.064382631f, 0.997925286f, - 0.065913353f, 0.997825350f, - 0.067443920f, 0.997723067f, - 0.068974328f, 0.997618435f, - 0.070504573f, 0.997511456f, - 0.072034653f, 0.997402130f, - 0.073564564f, 0.997290457f, - 0.075094301f, 0.997176437f, - 0.076623861f, 0.997060070f, - 0.078153242f, 0.996941358f, - 0.079682438f, 0.996820299f, - 0.081211447f, 0.996696895f, - 0.082740265f, 0.996571146f, - 0.084268888f, 0.996443051f, - 0.085797312f, 0.996312612f, - 0.087325535f, 0.996179829f, - 0.088853553f, 0.996044701f, - 0.090381361f, 0.995907229f, - 0.091908956f, 0.995767414f, - 0.093436336f, 0.995625256f, - 0.094963495f, 0.995480755f, - 0.096490431f, 0.995333912f, - 0.098017140f, 0.995184727f, - 0.099543619f, 0.995033199f, - 0.101069863f, 0.994879331f, - 0.102595869f, 0.994723121f, - 0.104121634f, 0.994564571f, - 0.105647154f, 0.994403680f, - 0.107172425f, 0.994240449f, - 0.108697444f, 0.994074879f, - 0.110222207f, 0.993906970f, - 0.111746711f, 0.993736722f, - 0.113270952f, 0.993564136f, - 0.114794927f, 0.993389211f, - 0.116318631f, 0.993211949f, - 0.117842062f, 0.993032350f, - 0.119365215f, 0.992850414f, - 0.120888087f, 0.992666142f, - 0.122410675f, 0.992479535f, - 0.123932975f, 0.992290591f, - 0.125454983f, 0.992099313f, - 0.126976696f, 0.991905700f, - 0.128498111f, 0.991709754f, - 0.130019223f, 0.991511473f, - 0.131540029f, 0.991310860f, - 0.133060525f, 0.991107914f, - 0.134580709f, 0.990902635f, - 0.136100575f, 0.990695025f, - 0.137620122f, 0.990485084f, - 0.139139344f, 0.990272812f, - 0.140658239f, 0.990058210f, - 0.142176804f, 0.989841278f, - 0.143695033f, 0.989622017f, - 0.145212925f, 0.989400428f, - 0.146730474f, 0.989176510f, - 0.148247679f, 0.988950265f, - 0.149764535f, 0.988721692f, - 0.151281038f, 0.988490793f, - 0.152797185f, 0.988257568f, - 0.154312973f, 0.988022017f, - 0.155828398f, 0.987784142f, - 0.157343456f, 0.987543942f, - 0.158858143f, 0.987301418f, - 0.160372457f, 0.987056571f, - 0.161886394f, 0.986809402f, - 0.163399949f, 0.986559910f, - 0.164913120f, 0.986308097f, - 0.166425904f, 0.986053963f, - 0.167938295f, 0.985797509f, - 0.169450291f, 0.985538735f, - 0.170961889f, 0.985277642f, - 0.172473084f, 0.985014231f, - 0.173983873f, 0.984748502f, - 0.175494253f, 0.984480455f, - 0.177004220f, 0.984210092f, - 0.178513771f, 0.983937413f, - 0.180022901f, 0.983662419f, - 0.181531608f, 0.983385110f, - 0.183039888f, 0.983105487f, - 0.184547737f, 0.982823551f, - 0.186055152f, 0.982539302f, - 0.187562129f, 0.982252741f, - 0.189068664f, 0.981963869f, - 0.190574755f, 0.981672686f, - 0.192080397f, 0.981379193f, - 0.193585587f, 0.981083391f, - 0.195090322f, 0.980785280f, - 0.196594598f, 0.980484862f, - 0.198098411f, 0.980182136f, - 0.199601758f, 0.979877104f, - 0.201104635f, 0.979569766f, - 0.202607039f, 0.979260123f, - 0.204108966f, 0.978948175f, - 0.205610413f, 0.978633924f, - 0.207111376f, 0.978317371f, - 0.208611852f, 0.977998515f, - 0.210111837f, 0.977677358f, - 0.211611327f, 0.977353900f, - 0.213110320f, 0.977028143f, - 0.214608811f, 0.976700086f, - 0.216106797f, 0.976369731f, - 0.217604275f, 0.976037079f, - 0.219101240f, 0.975702130f, - 0.220597690f, 0.975364885f, - 0.222093621f, 0.975025345f, - 0.223589029f, 0.974683511f, - 0.225083911f, 0.974339383f, - 0.226578264f, 0.973992962f, - 0.228072083f, 0.973644250f, - 0.229565366f, 0.973293246f, - 0.231058108f, 0.972939952f, - 0.232550307f, 0.972584369f, - 0.234041959f, 0.972226497f, - 0.235533059f, 0.971866337f, - 0.237023606f, 0.971503891f, - 0.238513595f, 0.971139158f, - 0.240003022f, 0.970772141f, - 0.241491885f, 0.970402839f, - 0.242980180f, 0.970031253f, - 0.244467903f, 0.969657385f, - 0.245955050f, 0.969281235f, - 0.247441619f, 0.968902805f, - 0.248927606f, 0.968522094f, - 0.250413007f, 0.968139105f, - 0.251897818f, 0.967753837f, - 0.253382037f, 0.967366292f, - 0.254865660f, 0.966976471f, - 0.256348682f, 0.966584374f, - 0.257831102f, 0.966190003f, - 0.259312915f, 0.965793359f, - 0.260794118f, 0.965394442f, - 0.262274707f, 0.964993253f, - 0.263754679f, 0.964589793f, - 0.265234030f, 0.964184064f, - 0.266712757f, 0.963776066f, - 0.268190857f, 0.963365800f, - 0.269668326f, 0.962953267f, - 0.271145160f, 0.962538468f, - 0.272621355f, 0.962121404f, - 0.274096910f, 0.961702077f, - 0.275571819f, 0.961280486f, - 0.277046080f, 0.960856633f, - 0.278519689f, 0.960430519f, - 0.279992643f, 0.960002146f, - 0.281464938f, 0.959571513f, - 0.282936570f, 0.959138622f, - 0.284407537f, 0.958703475f, - 0.285877835f, 0.958266071f, - 0.287347460f, 0.957826413f, - 0.288816408f, 0.957384501f, - 0.290284677f, 0.956940336f, - 0.291752263f, 0.956493919f, - 0.293219163f, 0.956045251f, - 0.294685372f, 0.955594334f, - 0.296150888f, 0.955141168f, - 0.297615707f, 0.954685755f, - 0.299079826f, 0.954228095f, - 0.300543241f, 0.953768190f, - 0.302005949f, 0.953306040f, - 0.303467947f, 0.952841648f, - 0.304929230f, 0.952375013f, - 0.306389795f, 0.951906137f, - 0.307849640f, 0.951435021f, - 0.309308760f, 0.950961666f, - 0.310767153f, 0.950486074f, - 0.312224814f, 0.950008245f, - 0.313681740f, 0.949528181f, - 0.315137929f, 0.949045882f, - 0.316593376f, 0.948561350f, - 0.318048077f, 0.948074586f, - 0.319502031f, 0.947585591f, - 0.320955232f, 0.947094366f, - 0.322407679f, 0.946600913f, - 0.323859367f, 0.946105232f, - 0.325310292f, 0.945607325f, - 0.326760452f, 0.945107193f, - 0.328209844f, 0.944604837f, - 0.329658463f, 0.944100258f, - 0.331106306f, 0.943593458f, - 0.332553370f, 0.943084437f, - 0.333999651f, 0.942573198f, - 0.335445147f, 0.942059740f, - 0.336889853f, 0.941544065f, - 0.338333767f, 0.941026175f, - 0.339776884f, 0.940506071f, - 0.341219202f, 0.939983753f, - 0.342660717f, 0.939459224f, - 0.344101426f, 0.938932484f, - 0.345541325f, 0.938403534f, - 0.346980411f, 0.937872376f, - 0.348418680f, 0.937339012f, - 0.349856130f, 0.936803442f, - 0.351292756f, 0.936265667f, - 0.352728556f, 0.935725689f, - 0.354163525f, 0.935183510f, - 0.355597662f, 0.934639130f, - 0.357030961f, 0.934092550f, - 0.358463421f, 0.933543773f, - 0.359895037f, 0.932992799f, - 0.361325806f, 0.932439629f, - 0.362755724f, 0.931884266f, - 0.364184790f, 0.931326709f, - 0.365612998f, 0.930766961f, - 0.367040346f, 0.930205023f, - 0.368466830f, 0.929640896f, - 0.369892447f, 0.929074581f, - 0.371317194f, 0.928506080f, - 0.372741067f, 0.927935395f, - 0.374164063f, 0.927362526f, - 0.375586178f, 0.926787474f, - 0.377007410f, 0.926210242f, - 0.378427755f, 0.925630831f, - 0.379847209f, 0.925049241f, - 0.381265769f, 0.924465474f, - 0.382683432f, 0.923879533f, - 0.384100195f, 0.923291417f, - 0.385516054f, 0.922701128f, - 0.386931006f, 0.922108669f, - 0.388345047f, 0.921514039f, - 0.389758174f, 0.920917242f, - 0.391170384f, 0.920318277f, - 0.392581674f, 0.919717146f, - 0.393992040f, 0.919113852f, - 0.395401479f, 0.918508394f, - 0.396809987f, 0.917900776f, - 0.398217562f, 0.917290997f, - 0.399624200f, 0.916679060f, - 0.401029897f, 0.916064966f, - 0.402434651f, 0.915448716f, - 0.403838458f, 0.914830312f, - 0.405241314f, 0.914209756f, - 0.406643217f, 0.913587048f, - 0.408044163f, 0.912962190f, - 0.409444149f, 0.912335185f, - 0.410843171f, 0.911706032f, - 0.412241227f, 0.911074734f, - 0.413638312f, 0.910441292f, - 0.415034424f, 0.909805708f, - 0.416429560f, 0.909167983f, - 0.417823716f, 0.908528119f, - 0.419216888f, 0.907886116f, - 0.420609074f, 0.907241978f, - 0.422000271f, 0.906595705f, - 0.423390474f, 0.905947298f, - 0.424779681f, 0.905296759f, - 0.426167889f, 0.904644091f, - 0.427555093f, 0.903989293f, - 0.428941292f, 0.903332368f, - 0.430326481f, 0.902673318f, - 0.431710658f, 0.902012144f, - 0.433093819f, 0.901348847f, - 0.434475961f, 0.900683429f, - 0.435857080f, 0.900015892f, - 0.437237174f, 0.899346237f, - 0.438616239f, 0.898674466f, - 0.439994271f, 0.898000580f, - 0.441371269f, 0.897324581f, - 0.442747228f, 0.896646470f, - 0.444122145f, 0.895966250f, - 0.445496017f, 0.895283921f, - 0.446868840f, 0.894599486f, - 0.448240612f, 0.893912945f, - 0.449611330f, 0.893224301f, - 0.450980989f, 0.892533555f, - 0.452349587f, 0.891840709f, - 0.453717121f, 0.891145765f, - 0.455083587f, 0.890448723f, - 0.456448982f, 0.889749586f, - 0.457813304f, 0.889048356f, - 0.459176548f, 0.888345033f, - 0.460538711f, 0.887639620f, - 0.461899791f, 0.886932119f, - 0.463259784f, 0.886222530f, - 0.464618686f, 0.885510856f, - 0.465976496f, 0.884797098f, - 0.467333209f, 0.884081259f, - 0.468688822f, 0.883363339f, - 0.470043332f, 0.882643340f, - 0.471396737f, 0.881921264f, - 0.472749032f, 0.881197113f, - 0.474100215f, 0.880470889f, - 0.475450282f, 0.879742593f, - 0.476799230f, 0.879012226f, - 0.478147056f, 0.878279792f, - 0.479493758f, 0.877545290f, - 0.480839331f, 0.876808724f, - 0.482183772f, 0.876070094f, - 0.483527079f, 0.875329403f, - 0.484869248f, 0.874586652f, - 0.486210276f, 0.873841843f, - 0.487550160f, 0.873094978f, - 0.488888897f, 0.872346059f, - 0.490226483f, 0.871595087f, - 0.491562916f, 0.870842063f, - 0.492898192f, 0.870086991f, - 0.494232309f, 0.869329871f, - 0.495565262f, 0.868570706f, - 0.496897049f, 0.867809497f, - 0.498227667f, 0.867046246f, - 0.499557113f, 0.866280954f, - 0.500885383f, 0.865513624f, - 0.502212474f, 0.864744258f, - 0.503538384f, 0.863972856f, - 0.504863109f, 0.863199422f, - 0.506186645f, 0.862423956f, - 0.507508991f, 0.861646461f, - 0.508830143f, 0.860866939f, - 0.510150097f, 0.860085390f, - 0.511468850f, 0.859301818f, - 0.512786401f, 0.858516224f, - 0.514102744f, 0.857728610f, - 0.515417878f, 0.856938977f, - 0.516731799f, 0.856147328f, - 0.518044504f, 0.855353665f, - 0.519355990f, 0.854557988f, - 0.520666254f, 0.853760301f, - 0.521975293f, 0.852960605f, - 0.523283103f, 0.852158902f, - 0.524589683f, 0.851355193f, - 0.525895027f, 0.850549481f, - 0.527199135f, 0.849741768f, - 0.528502002f, 0.848932055f, - 0.529803625f, 0.848120345f, - 0.531104001f, 0.847306639f, - 0.532403128f, 0.846490939f, - 0.533701002f, 0.845673247f, - 0.534997620f, 0.844853565f, - 0.536292979f, 0.844031895f, - 0.537587076f, 0.843208240f, - 0.538879909f, 0.842382600f, - 0.540171473f, 0.841554977f, - 0.541461766f, 0.840725375f, - 0.542750785f, 0.839893794f, - 0.544038527f, 0.839060237f, - 0.545324988f, 0.838224706f, - 0.546610167f, 0.837387202f, - 0.547894059f, 0.836547727f, - 0.549176662f, 0.835706284f, - 0.550457973f, 0.834862875f, - 0.551737988f, 0.834017501f, - 0.553016706f, 0.833170165f, - 0.554294121f, 0.832320868f, - 0.555570233f, 0.831469612f, - 0.556845037f, 0.830616400f, - 0.558118531f, 0.829761234f, - 0.559390712f, 0.828904115f, - 0.560661576f, 0.828045045f, - 0.561931121f, 0.827184027f, - 0.563199344f, 0.826321063f, - 0.564466242f, 0.825456154f, - 0.565731811f, 0.824589303f, - 0.566996049f, 0.823720511f, - 0.568258953f, 0.822849781f, - 0.569520519f, 0.821977115f, - 0.570780746f, 0.821102515f, - 0.572039629f, 0.820225983f, - 0.573297167f, 0.819347520f, - 0.574553355f, 0.818467130f, - 0.575808191f, 0.817584813f, - 0.577061673f, 0.816700573f, - 0.578313796f, 0.815814411f, - 0.579564559f, 0.814926329f, - 0.580813958f, 0.814036330f, - 0.582061990f, 0.813144415f, - 0.583308653f, 0.812250587f, - 0.584553943f, 0.811354847f, - 0.585797857f, 0.810457198f, - 0.587040394f, 0.809557642f, - 0.588281548f, 0.808656182f, - 0.589521319f, 0.807752818f, - 0.590759702f, 0.806847554f, - 0.591996695f, 0.805940391f, - 0.593232295f, 0.805031331f, - 0.594466499f, 0.804120377f, - 0.595699304f, 0.803207531f, - 0.596930708f, 0.802292796f, - 0.598160707f, 0.801376172f, - 0.599389298f, 0.800457662f, - 0.600616479f, 0.799537269f, - 0.601842247f, 0.798614995f, - 0.603066599f, 0.797690841f, - 0.604289531f, 0.796764810f, - 0.605511041f, 0.795836905f, - 0.606731127f, 0.794907126f, - 0.607949785f, 0.793975478f, - 0.609167012f, 0.793041960f, - 0.610382806f, 0.792106577f, - 0.611597164f, 0.791169330f, - 0.612810082f, 0.790230221f, - 0.614021559f, 0.789289253f, - 0.615231591f, 0.788346428f, - 0.616440175f, 0.787401747f, - 0.617647308f, 0.786455214f, - 0.618852988f, 0.785506830f, - 0.620057212f, 0.784556597f, - 0.621259977f, 0.783604519f, - 0.622461279f, 0.782650596f, - 0.623661118f, 0.781694832f, - 0.624859488f, 0.780737229f, - 0.626056388f, 0.779777788f, - 0.627251815f, 0.778816512f, - 0.628445767f, 0.777853404f, - 0.629638239f, 0.776888466f, - 0.630829230f, 0.775921699f, - 0.632018736f, 0.774953107f, - 0.633206755f, 0.773982691f, - 0.634393284f, 0.773010453f, - 0.635578320f, 0.772036397f, - 0.636761861f, 0.771060524f, - 0.637943904f, 0.770082837f, - 0.639124445f, 0.769103338f, - 0.640303482f, 0.768122029f, - 0.641481013f, 0.767138912f, - 0.642657034f, 0.766153990f, - 0.643831543f, 0.765167266f, - 0.645004537f, 0.764178741f, - 0.646176013f, 0.763188417f, - 0.647345969f, 0.762196298f, - 0.648514401f, 0.761202385f, - 0.649681307f, 0.760206682f, - 0.650846685f, 0.759209189f, - 0.652010531f, 0.758209910f, - 0.653172843f, 0.757208847f, - 0.654333618f, 0.756206001f, - 0.655492853f, 0.755201377f, - 0.656650546f, 0.754194975f, - 0.657806693f, 0.753186799f, - 0.658961293f, 0.752176850f, - 0.660114342f, 0.751165132f, - 0.661265838f, 0.750151646f, - 0.662415778f, 0.749136395f, - 0.663564159f, 0.748119380f, - 0.664710978f, 0.747100606f, - 0.665856234f, 0.746080074f, - 0.666999922f, 0.745057785f, - 0.668142041f, 0.744033744f, - 0.669282588f, 0.743007952f, - 0.670421560f, 0.741980412f, - 0.671558955f, 0.740951125f, - 0.672694769f, 0.739920095f, - 0.673829000f, 0.738887324f, - 0.674961646f, 0.737852815f, - 0.676092704f, 0.736816569f, - 0.677222170f, 0.735778589f, - 0.678350043f, 0.734738878f, - 0.679476320f, 0.733697438f, - 0.680600998f, 0.732654272f, - 0.681724074f, 0.731609381f, - 0.682845546f, 0.730562769f, - 0.683965412f, 0.729514438f, - 0.685083668f, 0.728464390f, - 0.686200312f, 0.727412629f, - 0.687315341f, 0.726359155f, - 0.688428753f, 0.725303972f, - 0.689540545f, 0.724247083f, - 0.690650714f, 0.723188489f, - 0.691759258f, 0.722128194f, - 0.692866175f, 0.721066199f, - 0.693971461f, 0.720002508f, - 0.695075114f, 0.718937122f, - 0.696177131f, 0.717870045f, - 0.697277511f, 0.716801279f, - 0.698376249f, 0.715730825f, - 0.699473345f, 0.714658688f, - 0.700568794f, 0.713584869f, - 0.701662595f, 0.712509371f, - 0.702754744f, 0.711432196f, - 0.703845241f, 0.710353347f, - 0.704934080f, 0.709272826f, - 0.706021261f, 0.708190637f, - 0.707106781f, 0.707106781f, - 0.708190637f, 0.706021261f, - 0.709272826f, 0.704934080f, - 0.710353347f, 0.703845241f, - 0.711432196f, 0.702754744f, - 0.712509371f, 0.701662595f, - 0.713584869f, 0.700568794f, - 0.714658688f, 0.699473345f, - 0.715730825f, 0.698376249f, - 0.716801279f, 0.697277511f, - 0.717870045f, 0.696177131f, - 0.718937122f, 0.695075114f, - 0.720002508f, 0.693971461f, - 0.721066199f, 0.692866175f, - 0.722128194f, 0.691759258f, - 0.723188489f, 0.690650714f, - 0.724247083f, 0.689540545f, - 0.725303972f, 0.688428753f, - 0.726359155f, 0.687315341f, - 0.727412629f, 0.686200312f, - 0.728464390f, 0.685083668f, - 0.729514438f, 0.683965412f, - 0.730562769f, 0.682845546f, - 0.731609381f, 0.681724074f, - 0.732654272f, 0.680600998f, - 0.733697438f, 0.679476320f, - 0.734738878f, 0.678350043f, - 0.735778589f, 0.677222170f, - 0.736816569f, 0.676092704f, - 0.737852815f, 0.674961646f, - 0.738887324f, 0.673829000f, - 0.739920095f, 0.672694769f, - 0.740951125f, 0.671558955f, - 0.741980412f, 0.670421560f, - 0.743007952f, 0.669282588f, - 0.744033744f, 0.668142041f, - 0.745057785f, 0.666999922f, - 0.746080074f, 0.665856234f, - 0.747100606f, 0.664710978f, - 0.748119380f, 0.663564159f, - 0.749136395f, 0.662415778f, - 0.750151646f, 0.661265838f, - 0.751165132f, 0.660114342f, - 0.752176850f, 0.658961293f, - 0.753186799f, 0.657806693f, - 0.754194975f, 0.656650546f, - 0.755201377f, 0.655492853f, - 0.756206001f, 0.654333618f, - 0.757208847f, 0.653172843f, - 0.758209910f, 0.652010531f, - 0.759209189f, 0.650846685f, - 0.760206682f, 0.649681307f, - 0.761202385f, 0.648514401f, - 0.762196298f, 0.647345969f, - 0.763188417f, 0.646176013f, - 0.764178741f, 0.645004537f, - 0.765167266f, 0.643831543f, - 0.766153990f, 0.642657034f, - 0.767138912f, 0.641481013f, - 0.768122029f, 0.640303482f, - 0.769103338f, 0.639124445f, - 0.770082837f, 0.637943904f, - 0.771060524f, 0.636761861f, - 0.772036397f, 0.635578320f, - 0.773010453f, 0.634393284f, - 0.773982691f, 0.633206755f, - 0.774953107f, 0.632018736f, - 0.775921699f, 0.630829230f, - 0.776888466f, 0.629638239f, - 0.777853404f, 0.628445767f, - 0.778816512f, 0.627251815f, - 0.779777788f, 0.626056388f, - 0.780737229f, 0.624859488f, - 0.781694832f, 0.623661118f, - 0.782650596f, 0.622461279f, - 0.783604519f, 0.621259977f, - 0.784556597f, 0.620057212f, - 0.785506830f, 0.618852988f, - 0.786455214f, 0.617647308f, - 0.787401747f, 0.616440175f, - 0.788346428f, 0.615231591f, - 0.789289253f, 0.614021559f, - 0.790230221f, 0.612810082f, - 0.791169330f, 0.611597164f, - 0.792106577f, 0.610382806f, - 0.793041960f, 0.609167012f, - 0.793975478f, 0.607949785f, - 0.794907126f, 0.606731127f, - 0.795836905f, 0.605511041f, - 0.796764810f, 0.604289531f, - 0.797690841f, 0.603066599f, - 0.798614995f, 0.601842247f, - 0.799537269f, 0.600616479f, - 0.800457662f, 0.599389298f, - 0.801376172f, 0.598160707f, - 0.802292796f, 0.596930708f, - 0.803207531f, 0.595699304f, - 0.804120377f, 0.594466499f, - 0.805031331f, 0.593232295f, - 0.805940391f, 0.591996695f, - 0.806847554f, 0.590759702f, - 0.807752818f, 0.589521319f, - 0.808656182f, 0.588281548f, - 0.809557642f, 0.587040394f, - 0.810457198f, 0.585797857f, - 0.811354847f, 0.584553943f, - 0.812250587f, 0.583308653f, - 0.813144415f, 0.582061990f, - 0.814036330f, 0.580813958f, - 0.814926329f, 0.579564559f, - 0.815814411f, 0.578313796f, - 0.816700573f, 0.577061673f, - 0.817584813f, 0.575808191f, - 0.818467130f, 0.574553355f, - 0.819347520f, 0.573297167f, - 0.820225983f, 0.572039629f, - 0.821102515f, 0.570780746f, - 0.821977115f, 0.569520519f, - 0.822849781f, 0.568258953f, - 0.823720511f, 0.566996049f, - 0.824589303f, 0.565731811f, - 0.825456154f, 0.564466242f, - 0.826321063f, 0.563199344f, - 0.827184027f, 0.561931121f, - 0.828045045f, 0.560661576f, - 0.828904115f, 0.559390712f, - 0.829761234f, 0.558118531f, - 0.830616400f, 0.556845037f, - 0.831469612f, 0.555570233f, - 0.832320868f, 0.554294121f, - 0.833170165f, 0.553016706f, - 0.834017501f, 0.551737988f, - 0.834862875f, 0.550457973f, - 0.835706284f, 0.549176662f, - 0.836547727f, 0.547894059f, - 0.837387202f, 0.546610167f, - 0.838224706f, 0.545324988f, - 0.839060237f, 0.544038527f, - 0.839893794f, 0.542750785f, - 0.840725375f, 0.541461766f, - 0.841554977f, 0.540171473f, - 0.842382600f, 0.538879909f, - 0.843208240f, 0.537587076f, - 0.844031895f, 0.536292979f, - 0.844853565f, 0.534997620f, - 0.845673247f, 0.533701002f, - 0.846490939f, 0.532403128f, - 0.847306639f, 0.531104001f, - 0.848120345f, 0.529803625f, - 0.848932055f, 0.528502002f, - 0.849741768f, 0.527199135f, - 0.850549481f, 0.525895027f, - 0.851355193f, 0.524589683f, - 0.852158902f, 0.523283103f, - 0.852960605f, 0.521975293f, - 0.853760301f, 0.520666254f, - 0.854557988f, 0.519355990f, - 0.855353665f, 0.518044504f, - 0.856147328f, 0.516731799f, - 0.856938977f, 0.515417878f, - 0.857728610f, 0.514102744f, - 0.858516224f, 0.512786401f, - 0.859301818f, 0.511468850f, - 0.860085390f, 0.510150097f, - 0.860866939f, 0.508830143f, - 0.861646461f, 0.507508991f, - 0.862423956f, 0.506186645f, - 0.863199422f, 0.504863109f, - 0.863972856f, 0.503538384f, - 0.864744258f, 0.502212474f, - 0.865513624f, 0.500885383f, - 0.866280954f, 0.499557113f, - 0.867046246f, 0.498227667f, - 0.867809497f, 0.496897049f, - 0.868570706f, 0.495565262f, - 0.869329871f, 0.494232309f, - 0.870086991f, 0.492898192f, - 0.870842063f, 0.491562916f, - 0.871595087f, 0.490226483f, - 0.872346059f, 0.488888897f, - 0.873094978f, 0.487550160f, - 0.873841843f, 0.486210276f, - 0.874586652f, 0.484869248f, - 0.875329403f, 0.483527079f, - 0.876070094f, 0.482183772f, - 0.876808724f, 0.480839331f, - 0.877545290f, 0.479493758f, - 0.878279792f, 0.478147056f, - 0.879012226f, 0.476799230f, - 0.879742593f, 0.475450282f, - 0.880470889f, 0.474100215f, - 0.881197113f, 0.472749032f, - 0.881921264f, 0.471396737f, - 0.882643340f, 0.470043332f, - 0.883363339f, 0.468688822f, - 0.884081259f, 0.467333209f, - 0.884797098f, 0.465976496f, - 0.885510856f, 0.464618686f, - 0.886222530f, 0.463259784f, - 0.886932119f, 0.461899791f, - 0.887639620f, 0.460538711f, - 0.888345033f, 0.459176548f, - 0.889048356f, 0.457813304f, - 0.889749586f, 0.456448982f, - 0.890448723f, 0.455083587f, - 0.891145765f, 0.453717121f, - 0.891840709f, 0.452349587f, - 0.892533555f, 0.450980989f, - 0.893224301f, 0.449611330f, - 0.893912945f, 0.448240612f, - 0.894599486f, 0.446868840f, - 0.895283921f, 0.445496017f, - 0.895966250f, 0.444122145f, - 0.896646470f, 0.442747228f, - 0.897324581f, 0.441371269f, - 0.898000580f, 0.439994271f, - 0.898674466f, 0.438616239f, - 0.899346237f, 0.437237174f, - 0.900015892f, 0.435857080f, - 0.900683429f, 0.434475961f, - 0.901348847f, 0.433093819f, - 0.902012144f, 0.431710658f, - 0.902673318f, 0.430326481f, - 0.903332368f, 0.428941292f, - 0.903989293f, 0.427555093f, - 0.904644091f, 0.426167889f, - 0.905296759f, 0.424779681f, - 0.905947298f, 0.423390474f, - 0.906595705f, 0.422000271f, - 0.907241978f, 0.420609074f, - 0.907886116f, 0.419216888f, - 0.908528119f, 0.417823716f, - 0.909167983f, 0.416429560f, - 0.909805708f, 0.415034424f, - 0.910441292f, 0.413638312f, - 0.911074734f, 0.412241227f, - 0.911706032f, 0.410843171f, - 0.912335185f, 0.409444149f, - 0.912962190f, 0.408044163f, - 0.913587048f, 0.406643217f, - 0.914209756f, 0.405241314f, - 0.914830312f, 0.403838458f, - 0.915448716f, 0.402434651f, - 0.916064966f, 0.401029897f, - 0.916679060f, 0.399624200f, - 0.917290997f, 0.398217562f, - 0.917900776f, 0.396809987f, - 0.918508394f, 0.395401479f, - 0.919113852f, 0.393992040f, - 0.919717146f, 0.392581674f, - 0.920318277f, 0.391170384f, - 0.920917242f, 0.389758174f, - 0.921514039f, 0.388345047f, - 0.922108669f, 0.386931006f, - 0.922701128f, 0.385516054f, - 0.923291417f, 0.384100195f, - 0.923879533f, 0.382683432f, - 0.924465474f, 0.381265769f, - 0.925049241f, 0.379847209f, - 0.925630831f, 0.378427755f, - 0.926210242f, 0.377007410f, - 0.926787474f, 0.375586178f, - 0.927362526f, 0.374164063f, - 0.927935395f, 0.372741067f, - 0.928506080f, 0.371317194f, - 0.929074581f, 0.369892447f, - 0.929640896f, 0.368466830f, - 0.930205023f, 0.367040346f, - 0.930766961f, 0.365612998f, - 0.931326709f, 0.364184790f, - 0.931884266f, 0.362755724f, - 0.932439629f, 0.361325806f, - 0.932992799f, 0.359895037f, - 0.933543773f, 0.358463421f, - 0.934092550f, 0.357030961f, - 0.934639130f, 0.355597662f, - 0.935183510f, 0.354163525f, - 0.935725689f, 0.352728556f, - 0.936265667f, 0.351292756f, - 0.936803442f, 0.349856130f, - 0.937339012f, 0.348418680f, - 0.937872376f, 0.346980411f, - 0.938403534f, 0.345541325f, - 0.938932484f, 0.344101426f, - 0.939459224f, 0.342660717f, - 0.939983753f, 0.341219202f, - 0.940506071f, 0.339776884f, - 0.941026175f, 0.338333767f, - 0.941544065f, 0.336889853f, - 0.942059740f, 0.335445147f, - 0.942573198f, 0.333999651f, - 0.943084437f, 0.332553370f, - 0.943593458f, 0.331106306f, - 0.944100258f, 0.329658463f, - 0.944604837f, 0.328209844f, - 0.945107193f, 0.326760452f, - 0.945607325f, 0.325310292f, - 0.946105232f, 0.323859367f, - 0.946600913f, 0.322407679f, - 0.947094366f, 0.320955232f, - 0.947585591f, 0.319502031f, - 0.948074586f, 0.318048077f, - 0.948561350f, 0.316593376f, - 0.949045882f, 0.315137929f, - 0.949528181f, 0.313681740f, - 0.950008245f, 0.312224814f, - 0.950486074f, 0.310767153f, - 0.950961666f, 0.309308760f, - 0.951435021f, 0.307849640f, - 0.951906137f, 0.306389795f, - 0.952375013f, 0.304929230f, - 0.952841648f, 0.303467947f, - 0.953306040f, 0.302005949f, - 0.953768190f, 0.300543241f, - 0.954228095f, 0.299079826f, - 0.954685755f, 0.297615707f, - 0.955141168f, 0.296150888f, - 0.955594334f, 0.294685372f, - 0.956045251f, 0.293219163f, - 0.956493919f, 0.291752263f, - 0.956940336f, 0.290284677f, - 0.957384501f, 0.288816408f, - 0.957826413f, 0.287347460f, - 0.958266071f, 0.285877835f, - 0.958703475f, 0.284407537f, - 0.959138622f, 0.282936570f, - 0.959571513f, 0.281464938f, - 0.960002146f, 0.279992643f, - 0.960430519f, 0.278519689f, - 0.960856633f, 0.277046080f, - 0.961280486f, 0.275571819f, - 0.961702077f, 0.274096910f, - 0.962121404f, 0.272621355f, - 0.962538468f, 0.271145160f, - 0.962953267f, 0.269668326f, - 0.963365800f, 0.268190857f, - 0.963776066f, 0.266712757f, - 0.964184064f, 0.265234030f, - 0.964589793f, 0.263754679f, - 0.964993253f, 0.262274707f, - 0.965394442f, 0.260794118f, - 0.965793359f, 0.259312915f, - 0.966190003f, 0.257831102f, - 0.966584374f, 0.256348682f, - 0.966976471f, 0.254865660f, - 0.967366292f, 0.253382037f, - 0.967753837f, 0.251897818f, - 0.968139105f, 0.250413007f, - 0.968522094f, 0.248927606f, - 0.968902805f, 0.247441619f, - 0.969281235f, 0.245955050f, - 0.969657385f, 0.244467903f, - 0.970031253f, 0.242980180f, - 0.970402839f, 0.241491885f, - 0.970772141f, 0.240003022f, - 0.971139158f, 0.238513595f, - 0.971503891f, 0.237023606f, - 0.971866337f, 0.235533059f, - 0.972226497f, 0.234041959f, - 0.972584369f, 0.232550307f, - 0.972939952f, 0.231058108f, - 0.973293246f, 0.229565366f, - 0.973644250f, 0.228072083f, - 0.973992962f, 0.226578264f, - 0.974339383f, 0.225083911f, - 0.974683511f, 0.223589029f, - 0.975025345f, 0.222093621f, - 0.975364885f, 0.220597690f, - 0.975702130f, 0.219101240f, - 0.976037079f, 0.217604275f, - 0.976369731f, 0.216106797f, - 0.976700086f, 0.214608811f, - 0.977028143f, 0.213110320f, - 0.977353900f, 0.211611327f, - 0.977677358f, 0.210111837f, - 0.977998515f, 0.208611852f, - 0.978317371f, 0.207111376f, - 0.978633924f, 0.205610413f, - 0.978948175f, 0.204108966f, - 0.979260123f, 0.202607039f, - 0.979569766f, 0.201104635f, - 0.979877104f, 0.199601758f, - 0.980182136f, 0.198098411f, - 0.980484862f, 0.196594598f, - 0.980785280f, 0.195090322f, - 0.981083391f, 0.193585587f, - 0.981379193f, 0.192080397f, - 0.981672686f, 0.190574755f, - 0.981963869f, 0.189068664f, - 0.982252741f, 0.187562129f, - 0.982539302f, 0.186055152f, - 0.982823551f, 0.184547737f, - 0.983105487f, 0.183039888f, - 0.983385110f, 0.181531608f, - 0.983662419f, 0.180022901f, - 0.983937413f, 0.178513771f, - 0.984210092f, 0.177004220f, - 0.984480455f, 0.175494253f, - 0.984748502f, 0.173983873f, - 0.985014231f, 0.172473084f, - 0.985277642f, 0.170961889f, - 0.985538735f, 0.169450291f, - 0.985797509f, 0.167938295f, - 0.986053963f, 0.166425904f, - 0.986308097f, 0.164913120f, - 0.986559910f, 0.163399949f, - 0.986809402f, 0.161886394f, - 0.987056571f, 0.160372457f, - 0.987301418f, 0.158858143f, - 0.987543942f, 0.157343456f, - 0.987784142f, 0.155828398f, - 0.988022017f, 0.154312973f, - 0.988257568f, 0.152797185f, - 0.988490793f, 0.151281038f, - 0.988721692f, 0.149764535f, - 0.988950265f, 0.148247679f, - 0.989176510f, 0.146730474f, - 0.989400428f, 0.145212925f, - 0.989622017f, 0.143695033f, - 0.989841278f, 0.142176804f, - 0.990058210f, 0.140658239f, - 0.990272812f, 0.139139344f, - 0.990485084f, 0.137620122f, - 0.990695025f, 0.136100575f, - 0.990902635f, 0.134580709f, - 0.991107914f, 0.133060525f, - 0.991310860f, 0.131540029f, - 0.991511473f, 0.130019223f, - 0.991709754f, 0.128498111f, - 0.991905700f, 0.126976696f, - 0.992099313f, 0.125454983f, - 0.992290591f, 0.123932975f, - 0.992479535f, 0.122410675f, - 0.992666142f, 0.120888087f, - 0.992850414f, 0.119365215f, - 0.993032350f, 0.117842062f, - 0.993211949f, 0.116318631f, - 0.993389211f, 0.114794927f, - 0.993564136f, 0.113270952f, - 0.993736722f, 0.111746711f, - 0.993906970f, 0.110222207f, - 0.994074879f, 0.108697444f, - 0.994240449f, 0.107172425f, - 0.994403680f, 0.105647154f, - 0.994564571f, 0.104121634f, - 0.994723121f, 0.102595869f, - 0.994879331f, 0.101069863f, - 0.995033199f, 0.099543619f, - 0.995184727f, 0.098017140f, - 0.995333912f, 0.096490431f, - 0.995480755f, 0.094963495f, - 0.995625256f, 0.093436336f, - 0.995767414f, 0.091908956f, - 0.995907229f, 0.090381361f, - 0.996044701f, 0.088853553f, - 0.996179829f, 0.087325535f, - 0.996312612f, 0.085797312f, - 0.996443051f, 0.084268888f, - 0.996571146f, 0.082740265f, - 0.996696895f, 0.081211447f, - 0.996820299f, 0.079682438f, - 0.996941358f, 0.078153242f, - 0.997060070f, 0.076623861f, - 0.997176437f, 0.075094301f, - 0.997290457f, 0.073564564f, - 0.997402130f, 0.072034653f, - 0.997511456f, 0.070504573f, - 0.997618435f, 0.068974328f, - 0.997723067f, 0.067443920f, - 0.997825350f, 0.065913353f, - 0.997925286f, 0.064382631f, - 0.998022874f, 0.062851758f, - 0.998118113f, 0.061320736f, - 0.998211003f, 0.059789571f, - 0.998301545f, 0.058258265f, - 0.998389737f, 0.056726821f, - 0.998475581f, 0.055195244f, - 0.998559074f, 0.053663538f, - 0.998640218f, 0.052131705f, - 0.998719012f, 0.050599749f, - 0.998795456f, 0.049067674f, - 0.998869550f, 0.047535484f, - 0.998941293f, 0.046003182f, - 0.999010686f, 0.044470772f, - 0.999077728f, 0.042938257f, - 0.999142419f, 0.041405641f, - 0.999204759f, 0.039872928f, - 0.999264747f, 0.038340120f, - 0.999322385f, 0.036807223f, - 0.999377670f, 0.035274239f, - 0.999430605f, 0.033741172f, - 0.999481187f, 0.032208025f, - 0.999529418f, 0.030674803f, - 0.999575296f, 0.029141509f, - 0.999618822f, 0.027608146f, - 0.999659997f, 0.026074718f, - 0.999698819f, 0.024541229f, - 0.999735288f, 0.023007681f, - 0.999769405f, 0.021474080f, - 0.999801170f, 0.019940429f, - 0.999830582f, 0.018406730f, - 0.999857641f, 0.016872988f, - 0.999882347f, 0.015339206f, - 0.999904701f, 0.013805389f, - 0.999924702f, 0.012271538f, - 0.999942350f, 0.010737659f, - 0.999957645f, 0.009203755f, - 0.999970586f, 0.007669829f, - 0.999981175f, 0.006135885f, - 0.999989411f, 0.004601926f, - 0.999995294f, 0.003067957f, - 0.999998823f, 0.001533980f, - 1.000000000f, 0.000000000f, - 0.999998823f, -0.001533980f, - 0.999995294f, -0.003067957f, - 0.999989411f, -0.004601926f, - 0.999981175f, -0.006135885f, - 0.999970586f, -0.007669829f, - 0.999957645f, -0.009203755f, - 0.999942350f, -0.010737659f, - 0.999924702f, -0.012271538f, - 0.999904701f, -0.013805389f, - 0.999882347f, -0.015339206f, - 0.999857641f, -0.016872988f, - 0.999830582f, -0.018406730f, - 0.999801170f, -0.019940429f, - 0.999769405f, -0.021474080f, - 0.999735288f, -0.023007681f, - 0.999698819f, -0.024541229f, - 0.999659997f, -0.026074718f, - 0.999618822f, -0.027608146f, - 0.999575296f, -0.029141509f, - 0.999529418f, -0.030674803f, - 0.999481187f, -0.032208025f, - 0.999430605f, -0.033741172f, - 0.999377670f, -0.035274239f, - 0.999322385f, -0.036807223f, - 0.999264747f, -0.038340120f, - 0.999204759f, -0.039872928f, - 0.999142419f, -0.041405641f, - 0.999077728f, -0.042938257f, - 0.999010686f, -0.044470772f, - 0.998941293f, -0.046003182f, - 0.998869550f, -0.047535484f, - 0.998795456f, -0.049067674f, - 0.998719012f, -0.050599749f, - 0.998640218f, -0.052131705f, - 0.998559074f, -0.053663538f, - 0.998475581f, -0.055195244f, - 0.998389737f, -0.056726821f, - 0.998301545f, -0.058258265f, - 0.998211003f, -0.059789571f, - 0.998118113f, -0.061320736f, - 0.998022874f, -0.062851758f, - 0.997925286f, -0.064382631f, - 0.997825350f, -0.065913353f, - 0.997723067f, -0.067443920f, - 0.997618435f, -0.068974328f, - 0.997511456f, -0.070504573f, - 0.997402130f, -0.072034653f, - 0.997290457f, -0.073564564f, - 0.997176437f, -0.075094301f, - 0.997060070f, -0.076623861f, - 0.996941358f, -0.078153242f, - 0.996820299f, -0.079682438f, - 0.996696895f, -0.081211447f, - 0.996571146f, -0.082740265f, - 0.996443051f, -0.084268888f, - 0.996312612f, -0.085797312f, - 0.996179829f, -0.087325535f, - 0.996044701f, -0.088853553f, - 0.995907229f, -0.090381361f, - 0.995767414f, -0.091908956f, - 0.995625256f, -0.093436336f, - 0.995480755f, -0.094963495f, - 0.995333912f, -0.096490431f, - 0.995184727f, -0.098017140f, - 0.995033199f, -0.099543619f, - 0.994879331f, -0.101069863f, - 0.994723121f, -0.102595869f, - 0.994564571f, -0.104121634f, - 0.994403680f, -0.105647154f, - 0.994240449f, -0.107172425f, - 0.994074879f, -0.108697444f, - 0.993906970f, -0.110222207f, - 0.993736722f, -0.111746711f, - 0.993564136f, -0.113270952f, - 0.993389211f, -0.114794927f, - 0.993211949f, -0.116318631f, - 0.993032350f, -0.117842062f, - 0.992850414f, -0.119365215f, - 0.992666142f, -0.120888087f, - 0.992479535f, -0.122410675f, - 0.992290591f, -0.123932975f, - 0.992099313f, -0.125454983f, - 0.991905700f, -0.126976696f, - 0.991709754f, -0.128498111f, - 0.991511473f, -0.130019223f, - 0.991310860f, -0.131540029f, - 0.991107914f, -0.133060525f, - 0.990902635f, -0.134580709f, - 0.990695025f, -0.136100575f, - 0.990485084f, -0.137620122f, - 0.990272812f, -0.139139344f, - 0.990058210f, -0.140658239f, - 0.989841278f, -0.142176804f, - 0.989622017f, -0.143695033f, - 0.989400428f, -0.145212925f, - 0.989176510f, -0.146730474f, - 0.988950265f, -0.148247679f, - 0.988721692f, -0.149764535f, - 0.988490793f, -0.151281038f, - 0.988257568f, -0.152797185f, - 0.988022017f, -0.154312973f, - 0.987784142f, -0.155828398f, - 0.987543942f, -0.157343456f, - 0.987301418f, -0.158858143f, - 0.987056571f, -0.160372457f, - 0.986809402f, -0.161886394f, - 0.986559910f, -0.163399949f, - 0.986308097f, -0.164913120f, - 0.986053963f, -0.166425904f, - 0.985797509f, -0.167938295f, - 0.985538735f, -0.169450291f, - 0.985277642f, -0.170961889f, - 0.985014231f, -0.172473084f, - 0.984748502f, -0.173983873f, - 0.984480455f, -0.175494253f, - 0.984210092f, -0.177004220f, - 0.983937413f, -0.178513771f, - 0.983662419f, -0.180022901f, - 0.983385110f, -0.181531608f, - 0.983105487f, -0.183039888f, - 0.982823551f, -0.184547737f, - 0.982539302f, -0.186055152f, - 0.982252741f, -0.187562129f, - 0.981963869f, -0.189068664f, - 0.981672686f, -0.190574755f, - 0.981379193f, -0.192080397f, - 0.981083391f, -0.193585587f, - 0.980785280f, -0.195090322f, - 0.980484862f, -0.196594598f, - 0.980182136f, -0.198098411f, - 0.979877104f, -0.199601758f, - 0.979569766f, -0.201104635f, - 0.979260123f, -0.202607039f, - 0.978948175f, -0.204108966f, - 0.978633924f, -0.205610413f, - 0.978317371f, -0.207111376f, - 0.977998515f, -0.208611852f, - 0.977677358f, -0.210111837f, - 0.977353900f, -0.211611327f, - 0.977028143f, -0.213110320f, - 0.976700086f, -0.214608811f, - 0.976369731f, -0.216106797f, - 0.976037079f, -0.217604275f, - 0.975702130f, -0.219101240f, - 0.975364885f, -0.220597690f, - 0.975025345f, -0.222093621f, - 0.974683511f, -0.223589029f, - 0.974339383f, -0.225083911f, - 0.973992962f, -0.226578264f, - 0.973644250f, -0.228072083f, - 0.973293246f, -0.229565366f, - 0.972939952f, -0.231058108f, - 0.972584369f, -0.232550307f, - 0.972226497f, -0.234041959f, - 0.971866337f, -0.235533059f, - 0.971503891f, -0.237023606f, - 0.971139158f, -0.238513595f, - 0.970772141f, -0.240003022f, - 0.970402839f, -0.241491885f, - 0.970031253f, -0.242980180f, - 0.969657385f, -0.244467903f, - 0.969281235f, -0.245955050f, - 0.968902805f, -0.247441619f, - 0.968522094f, -0.248927606f, - 0.968139105f, -0.250413007f, - 0.967753837f, -0.251897818f, - 0.967366292f, -0.253382037f, - 0.966976471f, -0.254865660f, - 0.966584374f, -0.256348682f, - 0.966190003f, -0.257831102f, - 0.965793359f, -0.259312915f, - 0.965394442f, -0.260794118f, - 0.964993253f, -0.262274707f, - 0.964589793f, -0.263754679f, - 0.964184064f, -0.265234030f, - 0.963776066f, -0.266712757f, - 0.963365800f, -0.268190857f, - 0.962953267f, -0.269668326f, - 0.962538468f, -0.271145160f, - 0.962121404f, -0.272621355f, - 0.961702077f, -0.274096910f, - 0.961280486f, -0.275571819f, - 0.960856633f, -0.277046080f, - 0.960430519f, -0.278519689f, - 0.960002146f, -0.279992643f, - 0.959571513f, -0.281464938f, - 0.959138622f, -0.282936570f, - 0.958703475f, -0.284407537f, - 0.958266071f, -0.285877835f, - 0.957826413f, -0.287347460f, - 0.957384501f, -0.288816408f, - 0.956940336f, -0.290284677f, - 0.956493919f, -0.291752263f, - 0.956045251f, -0.293219163f, - 0.955594334f, -0.294685372f, - 0.955141168f, -0.296150888f, - 0.954685755f, -0.297615707f, - 0.954228095f, -0.299079826f, - 0.953768190f, -0.300543241f, - 0.953306040f, -0.302005949f, - 0.952841648f, -0.303467947f, - 0.952375013f, -0.304929230f, - 0.951906137f, -0.306389795f, - 0.951435021f, -0.307849640f, - 0.950961666f, -0.309308760f, - 0.950486074f, -0.310767153f, - 0.950008245f, -0.312224814f, - 0.949528181f, -0.313681740f, - 0.949045882f, -0.315137929f, - 0.948561350f, -0.316593376f, - 0.948074586f, -0.318048077f, - 0.947585591f, -0.319502031f, - 0.947094366f, -0.320955232f, - 0.946600913f, -0.322407679f, - 0.946105232f, -0.323859367f, - 0.945607325f, -0.325310292f, - 0.945107193f, -0.326760452f, - 0.944604837f, -0.328209844f, - 0.944100258f, -0.329658463f, - 0.943593458f, -0.331106306f, - 0.943084437f, -0.332553370f, - 0.942573198f, -0.333999651f, - 0.942059740f, -0.335445147f, - 0.941544065f, -0.336889853f, - 0.941026175f, -0.338333767f, - 0.940506071f, -0.339776884f, - 0.939983753f, -0.341219202f, - 0.939459224f, -0.342660717f, - 0.938932484f, -0.344101426f, - 0.938403534f, -0.345541325f, - 0.937872376f, -0.346980411f, - 0.937339012f, -0.348418680f, - 0.936803442f, -0.349856130f, - 0.936265667f, -0.351292756f, - 0.935725689f, -0.352728556f, - 0.935183510f, -0.354163525f, - 0.934639130f, -0.355597662f, - 0.934092550f, -0.357030961f, - 0.933543773f, -0.358463421f, - 0.932992799f, -0.359895037f, - 0.932439629f, -0.361325806f, - 0.931884266f, -0.362755724f, - 0.931326709f, -0.364184790f, - 0.930766961f, -0.365612998f, - 0.930205023f, -0.367040346f, - 0.929640896f, -0.368466830f, - 0.929074581f, -0.369892447f, - 0.928506080f, -0.371317194f, - 0.927935395f, -0.372741067f, - 0.927362526f, -0.374164063f, - 0.926787474f, -0.375586178f, - 0.926210242f, -0.377007410f, - 0.925630831f, -0.378427755f, - 0.925049241f, -0.379847209f, - 0.924465474f, -0.381265769f, - 0.923879533f, -0.382683432f, - 0.923291417f, -0.384100195f, - 0.922701128f, -0.385516054f, - 0.922108669f, -0.386931006f, - 0.921514039f, -0.388345047f, - 0.920917242f, -0.389758174f, - 0.920318277f, -0.391170384f, - 0.919717146f, -0.392581674f, - 0.919113852f, -0.393992040f, - 0.918508394f, -0.395401479f, - 0.917900776f, -0.396809987f, - 0.917290997f, -0.398217562f, - 0.916679060f, -0.399624200f, - 0.916064966f, -0.401029897f, - 0.915448716f, -0.402434651f, - 0.914830312f, -0.403838458f, - 0.914209756f, -0.405241314f, - 0.913587048f, -0.406643217f, - 0.912962190f, -0.408044163f, - 0.912335185f, -0.409444149f, - 0.911706032f, -0.410843171f, - 0.911074734f, -0.412241227f, - 0.910441292f, -0.413638312f, - 0.909805708f, -0.415034424f, - 0.909167983f, -0.416429560f, - 0.908528119f, -0.417823716f, - 0.907886116f, -0.419216888f, - 0.907241978f, -0.420609074f, - 0.906595705f, -0.422000271f, - 0.905947298f, -0.423390474f, - 0.905296759f, -0.424779681f, - 0.904644091f, -0.426167889f, - 0.903989293f, -0.427555093f, - 0.903332368f, -0.428941292f, - 0.902673318f, -0.430326481f, - 0.902012144f, -0.431710658f, - 0.901348847f, -0.433093819f, - 0.900683429f, -0.434475961f, - 0.900015892f, -0.435857080f, - 0.899346237f, -0.437237174f, - 0.898674466f, -0.438616239f, - 0.898000580f, -0.439994271f, - 0.897324581f, -0.441371269f, - 0.896646470f, -0.442747228f, - 0.895966250f, -0.444122145f, - 0.895283921f, -0.445496017f, - 0.894599486f, -0.446868840f, - 0.893912945f, -0.448240612f, - 0.893224301f, -0.449611330f, - 0.892533555f, -0.450980989f, - 0.891840709f, -0.452349587f, - 0.891145765f, -0.453717121f, - 0.890448723f, -0.455083587f, - 0.889749586f, -0.456448982f, - 0.889048356f, -0.457813304f, - 0.888345033f, -0.459176548f, - 0.887639620f, -0.460538711f, - 0.886932119f, -0.461899791f, - 0.886222530f, -0.463259784f, - 0.885510856f, -0.464618686f, - 0.884797098f, -0.465976496f, - 0.884081259f, -0.467333209f, - 0.883363339f, -0.468688822f, - 0.882643340f, -0.470043332f, - 0.881921264f, -0.471396737f, - 0.881197113f, -0.472749032f, - 0.880470889f, -0.474100215f, - 0.879742593f, -0.475450282f, - 0.879012226f, -0.476799230f, - 0.878279792f, -0.478147056f, - 0.877545290f, -0.479493758f, - 0.876808724f, -0.480839331f, - 0.876070094f, -0.482183772f, - 0.875329403f, -0.483527079f, - 0.874586652f, -0.484869248f, - 0.873841843f, -0.486210276f, - 0.873094978f, -0.487550160f, - 0.872346059f, -0.488888897f, - 0.871595087f, -0.490226483f, - 0.870842063f, -0.491562916f, - 0.870086991f, -0.492898192f, - 0.869329871f, -0.494232309f, - 0.868570706f, -0.495565262f, - 0.867809497f, -0.496897049f, - 0.867046246f, -0.498227667f, - 0.866280954f, -0.499557113f, - 0.865513624f, -0.500885383f, - 0.864744258f, -0.502212474f, - 0.863972856f, -0.503538384f, - 0.863199422f, -0.504863109f, - 0.862423956f, -0.506186645f, - 0.861646461f, -0.507508991f, - 0.860866939f, -0.508830143f, - 0.860085390f, -0.510150097f, - 0.859301818f, -0.511468850f, - 0.858516224f, -0.512786401f, - 0.857728610f, -0.514102744f, - 0.856938977f, -0.515417878f, - 0.856147328f, -0.516731799f, - 0.855353665f, -0.518044504f, - 0.854557988f, -0.519355990f, - 0.853760301f, -0.520666254f, - 0.852960605f, -0.521975293f, - 0.852158902f, -0.523283103f, - 0.851355193f, -0.524589683f, - 0.850549481f, -0.525895027f, - 0.849741768f, -0.527199135f, - 0.848932055f, -0.528502002f, - 0.848120345f, -0.529803625f, - 0.847306639f, -0.531104001f, - 0.846490939f, -0.532403128f, - 0.845673247f, -0.533701002f, - 0.844853565f, -0.534997620f, - 0.844031895f, -0.536292979f, - 0.843208240f, -0.537587076f, - 0.842382600f, -0.538879909f, - 0.841554977f, -0.540171473f, - 0.840725375f, -0.541461766f, - 0.839893794f, -0.542750785f, - 0.839060237f, -0.544038527f, - 0.838224706f, -0.545324988f, - 0.837387202f, -0.546610167f, - 0.836547727f, -0.547894059f, - 0.835706284f, -0.549176662f, - 0.834862875f, -0.550457973f, - 0.834017501f, -0.551737988f, - 0.833170165f, -0.553016706f, - 0.832320868f, -0.554294121f, - 0.831469612f, -0.555570233f, - 0.830616400f, -0.556845037f, - 0.829761234f, -0.558118531f, - 0.828904115f, -0.559390712f, - 0.828045045f, -0.560661576f, - 0.827184027f, -0.561931121f, - 0.826321063f, -0.563199344f, - 0.825456154f, -0.564466242f, - 0.824589303f, -0.565731811f, - 0.823720511f, -0.566996049f, - 0.822849781f, -0.568258953f, - 0.821977115f, -0.569520519f, - 0.821102515f, -0.570780746f, - 0.820225983f, -0.572039629f, - 0.819347520f, -0.573297167f, - 0.818467130f, -0.574553355f, - 0.817584813f, -0.575808191f, - 0.816700573f, -0.577061673f, - 0.815814411f, -0.578313796f, - 0.814926329f, -0.579564559f, - 0.814036330f, -0.580813958f, - 0.813144415f, -0.582061990f, - 0.812250587f, -0.583308653f, - 0.811354847f, -0.584553943f, - 0.810457198f, -0.585797857f, - 0.809557642f, -0.587040394f, - 0.808656182f, -0.588281548f, - 0.807752818f, -0.589521319f, - 0.806847554f, -0.590759702f, - 0.805940391f, -0.591996695f, - 0.805031331f, -0.593232295f, - 0.804120377f, -0.594466499f, - 0.803207531f, -0.595699304f, - 0.802292796f, -0.596930708f, - 0.801376172f, -0.598160707f, - 0.800457662f, -0.599389298f, - 0.799537269f, -0.600616479f, - 0.798614995f, -0.601842247f, - 0.797690841f, -0.603066599f, - 0.796764810f, -0.604289531f, - 0.795836905f, -0.605511041f, - 0.794907126f, -0.606731127f, - 0.793975478f, -0.607949785f, - 0.793041960f, -0.609167012f, - 0.792106577f, -0.610382806f, - 0.791169330f, -0.611597164f, - 0.790230221f, -0.612810082f, - 0.789289253f, -0.614021559f, - 0.788346428f, -0.615231591f, - 0.787401747f, -0.616440175f, - 0.786455214f, -0.617647308f, - 0.785506830f, -0.618852988f, - 0.784556597f, -0.620057212f, - 0.783604519f, -0.621259977f, - 0.782650596f, -0.622461279f, - 0.781694832f, -0.623661118f, - 0.780737229f, -0.624859488f, - 0.779777788f, -0.626056388f, - 0.778816512f, -0.627251815f, - 0.777853404f, -0.628445767f, - 0.776888466f, -0.629638239f, - 0.775921699f, -0.630829230f, - 0.774953107f, -0.632018736f, - 0.773982691f, -0.633206755f, - 0.773010453f, -0.634393284f, - 0.772036397f, -0.635578320f, - 0.771060524f, -0.636761861f, - 0.770082837f, -0.637943904f, - 0.769103338f, -0.639124445f, - 0.768122029f, -0.640303482f, - 0.767138912f, -0.641481013f, - 0.766153990f, -0.642657034f, - 0.765167266f, -0.643831543f, - 0.764178741f, -0.645004537f, - 0.763188417f, -0.646176013f, - 0.762196298f, -0.647345969f, - 0.761202385f, -0.648514401f, - 0.760206682f, -0.649681307f, - 0.759209189f, -0.650846685f, - 0.758209910f, -0.652010531f, - 0.757208847f, -0.653172843f, - 0.756206001f, -0.654333618f, - 0.755201377f, -0.655492853f, - 0.754194975f, -0.656650546f, - 0.753186799f, -0.657806693f, - 0.752176850f, -0.658961293f, - 0.751165132f, -0.660114342f, - 0.750151646f, -0.661265838f, - 0.749136395f, -0.662415778f, - 0.748119380f, -0.663564159f, - 0.747100606f, -0.664710978f, - 0.746080074f, -0.665856234f, - 0.745057785f, -0.666999922f, - 0.744033744f, -0.668142041f, - 0.743007952f, -0.669282588f, - 0.741980412f, -0.670421560f, - 0.740951125f, -0.671558955f, - 0.739920095f, -0.672694769f, - 0.738887324f, -0.673829000f, - 0.737852815f, -0.674961646f, - 0.736816569f, -0.676092704f, - 0.735778589f, -0.677222170f, - 0.734738878f, -0.678350043f, - 0.733697438f, -0.679476320f, - 0.732654272f, -0.680600998f, - 0.731609381f, -0.681724074f, - 0.730562769f, -0.682845546f, - 0.729514438f, -0.683965412f, - 0.728464390f, -0.685083668f, - 0.727412629f, -0.686200312f, - 0.726359155f, -0.687315341f, - 0.725303972f, -0.688428753f, - 0.724247083f, -0.689540545f, - 0.723188489f, -0.690650714f, - 0.722128194f, -0.691759258f, - 0.721066199f, -0.692866175f, - 0.720002508f, -0.693971461f, - 0.718937122f, -0.695075114f, - 0.717870045f, -0.696177131f, - 0.716801279f, -0.697277511f, - 0.715730825f, -0.698376249f, - 0.714658688f, -0.699473345f, - 0.713584869f, -0.700568794f, - 0.712509371f, -0.701662595f, - 0.711432196f, -0.702754744f, - 0.710353347f, -0.703845241f, - 0.709272826f, -0.704934080f, - 0.708190637f, -0.706021261f, - 0.707106781f, -0.707106781f, - 0.706021261f, -0.708190637f, - 0.704934080f, -0.709272826f, - 0.703845241f, -0.710353347f, - 0.702754744f, -0.711432196f, - 0.701662595f, -0.712509371f, - 0.700568794f, -0.713584869f, - 0.699473345f, -0.714658688f, - 0.698376249f, -0.715730825f, - 0.697277511f, -0.716801279f, - 0.696177131f, -0.717870045f, - 0.695075114f, -0.718937122f, - 0.693971461f, -0.720002508f, - 0.692866175f, -0.721066199f, - 0.691759258f, -0.722128194f, - 0.690650714f, -0.723188489f, - 0.689540545f, -0.724247083f, - 0.688428753f, -0.725303972f, - 0.687315341f, -0.726359155f, - 0.686200312f, -0.727412629f, - 0.685083668f, -0.728464390f, - 0.683965412f, -0.729514438f, - 0.682845546f, -0.730562769f, - 0.681724074f, -0.731609381f, - 0.680600998f, -0.732654272f, - 0.679476320f, -0.733697438f, - 0.678350043f, -0.734738878f, - 0.677222170f, -0.735778589f, - 0.676092704f, -0.736816569f, - 0.674961646f, -0.737852815f, - 0.673829000f, -0.738887324f, - 0.672694769f, -0.739920095f, - 0.671558955f, -0.740951125f, - 0.670421560f, -0.741980412f, - 0.669282588f, -0.743007952f, - 0.668142041f, -0.744033744f, - 0.666999922f, -0.745057785f, - 0.665856234f, -0.746080074f, - 0.664710978f, -0.747100606f, - 0.663564159f, -0.748119380f, - 0.662415778f, -0.749136395f, - 0.661265838f, -0.750151646f, - 0.660114342f, -0.751165132f, - 0.658961293f, -0.752176850f, - 0.657806693f, -0.753186799f, - 0.656650546f, -0.754194975f, - 0.655492853f, -0.755201377f, - 0.654333618f, -0.756206001f, - 0.653172843f, -0.757208847f, - 0.652010531f, -0.758209910f, - 0.650846685f, -0.759209189f, - 0.649681307f, -0.760206682f, - 0.648514401f, -0.761202385f, - 0.647345969f, -0.762196298f, - 0.646176013f, -0.763188417f, - 0.645004537f, -0.764178741f, - 0.643831543f, -0.765167266f, - 0.642657034f, -0.766153990f, - 0.641481013f, -0.767138912f, - 0.640303482f, -0.768122029f, - 0.639124445f, -0.769103338f, - 0.637943904f, -0.770082837f, - 0.636761861f, -0.771060524f, - 0.635578320f, -0.772036397f, - 0.634393284f, -0.773010453f, - 0.633206755f, -0.773982691f, - 0.632018736f, -0.774953107f, - 0.630829230f, -0.775921699f, - 0.629638239f, -0.776888466f, - 0.628445767f, -0.777853404f, - 0.627251815f, -0.778816512f, - 0.626056388f, -0.779777788f, - 0.624859488f, -0.780737229f, - 0.623661118f, -0.781694832f, - 0.622461279f, -0.782650596f, - 0.621259977f, -0.783604519f, - 0.620057212f, -0.784556597f, - 0.618852988f, -0.785506830f, - 0.617647308f, -0.786455214f, - 0.616440175f, -0.787401747f, - 0.615231591f, -0.788346428f, - 0.614021559f, -0.789289253f, - 0.612810082f, -0.790230221f, - 0.611597164f, -0.791169330f, - 0.610382806f, -0.792106577f, - 0.609167012f, -0.793041960f, - 0.607949785f, -0.793975478f, - 0.606731127f, -0.794907126f, - 0.605511041f, -0.795836905f, - 0.604289531f, -0.796764810f, - 0.603066599f, -0.797690841f, - 0.601842247f, -0.798614995f, - 0.600616479f, -0.799537269f, - 0.599389298f, -0.800457662f, - 0.598160707f, -0.801376172f, - 0.596930708f, -0.802292796f, - 0.595699304f, -0.803207531f, - 0.594466499f, -0.804120377f, - 0.593232295f, -0.805031331f, - 0.591996695f, -0.805940391f, - 0.590759702f, -0.806847554f, - 0.589521319f, -0.807752818f, - 0.588281548f, -0.808656182f, - 0.587040394f, -0.809557642f, - 0.585797857f, -0.810457198f, - 0.584553943f, -0.811354847f, - 0.583308653f, -0.812250587f, - 0.582061990f, -0.813144415f, - 0.580813958f, -0.814036330f, - 0.579564559f, -0.814926329f, - 0.578313796f, -0.815814411f, - 0.577061673f, -0.816700573f, - 0.575808191f, -0.817584813f, - 0.574553355f, -0.818467130f, - 0.573297167f, -0.819347520f, - 0.572039629f, -0.820225983f, - 0.570780746f, -0.821102515f, - 0.569520519f, -0.821977115f, - 0.568258953f, -0.822849781f, - 0.566996049f, -0.823720511f, - 0.565731811f, -0.824589303f, - 0.564466242f, -0.825456154f, - 0.563199344f, -0.826321063f, - 0.561931121f, -0.827184027f, - 0.560661576f, -0.828045045f, - 0.559390712f, -0.828904115f, - 0.558118531f, -0.829761234f, - 0.556845037f, -0.830616400f, - 0.555570233f, -0.831469612f, - 0.554294121f, -0.832320868f, - 0.553016706f, -0.833170165f, - 0.551737988f, -0.834017501f, - 0.550457973f, -0.834862875f, - 0.549176662f, -0.835706284f, - 0.547894059f, -0.836547727f, - 0.546610167f, -0.837387202f, - 0.545324988f, -0.838224706f, - 0.544038527f, -0.839060237f, - 0.542750785f, -0.839893794f, - 0.541461766f, -0.840725375f, - 0.540171473f, -0.841554977f, - 0.538879909f, -0.842382600f, - 0.537587076f, -0.843208240f, - 0.536292979f, -0.844031895f, - 0.534997620f, -0.844853565f, - 0.533701002f, -0.845673247f, - 0.532403128f, -0.846490939f, - 0.531104001f, -0.847306639f, - 0.529803625f, -0.848120345f, - 0.528502002f, -0.848932055f, - 0.527199135f, -0.849741768f, - 0.525895027f, -0.850549481f, - 0.524589683f, -0.851355193f, - 0.523283103f, -0.852158902f, - 0.521975293f, -0.852960605f, - 0.520666254f, -0.853760301f, - 0.519355990f, -0.854557988f, - 0.518044504f, -0.855353665f, - 0.516731799f, -0.856147328f, - 0.515417878f, -0.856938977f, - 0.514102744f, -0.857728610f, - 0.512786401f, -0.858516224f, - 0.511468850f, -0.859301818f, - 0.510150097f, -0.860085390f, - 0.508830143f, -0.860866939f, - 0.507508991f, -0.861646461f, - 0.506186645f, -0.862423956f, - 0.504863109f, -0.863199422f, - 0.503538384f, -0.863972856f, - 0.502212474f, -0.864744258f, - 0.500885383f, -0.865513624f, - 0.499557113f, -0.866280954f, - 0.498227667f, -0.867046246f, - 0.496897049f, -0.867809497f, - 0.495565262f, -0.868570706f, - 0.494232309f, -0.869329871f, - 0.492898192f, -0.870086991f, - 0.491562916f, -0.870842063f, - 0.490226483f, -0.871595087f, - 0.488888897f, -0.872346059f, - 0.487550160f, -0.873094978f, - 0.486210276f, -0.873841843f, - 0.484869248f, -0.874586652f, - 0.483527079f, -0.875329403f, - 0.482183772f, -0.876070094f, - 0.480839331f, -0.876808724f, - 0.479493758f, -0.877545290f, - 0.478147056f, -0.878279792f, - 0.476799230f, -0.879012226f, - 0.475450282f, -0.879742593f, - 0.474100215f, -0.880470889f, - 0.472749032f, -0.881197113f, - 0.471396737f, -0.881921264f, - 0.470043332f, -0.882643340f, - 0.468688822f, -0.883363339f, - 0.467333209f, -0.884081259f, - 0.465976496f, -0.884797098f, - 0.464618686f, -0.885510856f, - 0.463259784f, -0.886222530f, - 0.461899791f, -0.886932119f, - 0.460538711f, -0.887639620f, - 0.459176548f, -0.888345033f, - 0.457813304f, -0.889048356f, - 0.456448982f, -0.889749586f, - 0.455083587f, -0.890448723f, - 0.453717121f, -0.891145765f, - 0.452349587f, -0.891840709f, - 0.450980989f, -0.892533555f, - 0.449611330f, -0.893224301f, - 0.448240612f, -0.893912945f, - 0.446868840f, -0.894599486f, - 0.445496017f, -0.895283921f, - 0.444122145f, -0.895966250f, - 0.442747228f, -0.896646470f, - 0.441371269f, -0.897324581f, - 0.439994271f, -0.898000580f, - 0.438616239f, -0.898674466f, - 0.437237174f, -0.899346237f, - 0.435857080f, -0.900015892f, - 0.434475961f, -0.900683429f, - 0.433093819f, -0.901348847f, - 0.431710658f, -0.902012144f, - 0.430326481f, -0.902673318f, - 0.428941292f, -0.903332368f, - 0.427555093f, -0.903989293f, - 0.426167889f, -0.904644091f, - 0.424779681f, -0.905296759f, - 0.423390474f, -0.905947298f, - 0.422000271f, -0.906595705f, - 0.420609074f, -0.907241978f, - 0.419216888f, -0.907886116f, - 0.417823716f, -0.908528119f, - 0.416429560f, -0.909167983f, - 0.415034424f, -0.909805708f, - 0.413638312f, -0.910441292f, - 0.412241227f, -0.911074734f, - 0.410843171f, -0.911706032f, - 0.409444149f, -0.912335185f, - 0.408044163f, -0.912962190f, - 0.406643217f, -0.913587048f, - 0.405241314f, -0.914209756f, - 0.403838458f, -0.914830312f, - 0.402434651f, -0.915448716f, - 0.401029897f, -0.916064966f, - 0.399624200f, -0.916679060f, - 0.398217562f, -0.917290997f, - 0.396809987f, -0.917900776f, - 0.395401479f, -0.918508394f, - 0.393992040f, -0.919113852f, - 0.392581674f, -0.919717146f, - 0.391170384f, -0.920318277f, - 0.389758174f, -0.920917242f, - 0.388345047f, -0.921514039f, - 0.386931006f, -0.922108669f, - 0.385516054f, -0.922701128f, - 0.384100195f, -0.923291417f, - 0.382683432f, -0.923879533f, - 0.381265769f, -0.924465474f, - 0.379847209f, -0.925049241f, - 0.378427755f, -0.925630831f, - 0.377007410f, -0.926210242f, - 0.375586178f, -0.926787474f, - 0.374164063f, -0.927362526f, - 0.372741067f, -0.927935395f, - 0.371317194f, -0.928506080f, - 0.369892447f, -0.929074581f, - 0.368466830f, -0.929640896f, - 0.367040346f, -0.930205023f, - 0.365612998f, -0.930766961f, - 0.364184790f, -0.931326709f, - 0.362755724f, -0.931884266f, - 0.361325806f, -0.932439629f, - 0.359895037f, -0.932992799f, - 0.358463421f, -0.933543773f, - 0.357030961f, -0.934092550f, - 0.355597662f, -0.934639130f, - 0.354163525f, -0.935183510f, - 0.352728556f, -0.935725689f, - 0.351292756f, -0.936265667f, - 0.349856130f, -0.936803442f, - 0.348418680f, -0.937339012f, - 0.346980411f, -0.937872376f, - 0.345541325f, -0.938403534f, - 0.344101426f, -0.938932484f, - 0.342660717f, -0.939459224f, - 0.341219202f, -0.939983753f, - 0.339776884f, -0.940506071f, - 0.338333767f, -0.941026175f, - 0.336889853f, -0.941544065f, - 0.335445147f, -0.942059740f, - 0.333999651f, -0.942573198f, - 0.332553370f, -0.943084437f, - 0.331106306f, -0.943593458f, - 0.329658463f, -0.944100258f, - 0.328209844f, -0.944604837f, - 0.326760452f, -0.945107193f, - 0.325310292f, -0.945607325f, - 0.323859367f, -0.946105232f, - 0.322407679f, -0.946600913f, - 0.320955232f, -0.947094366f, - 0.319502031f, -0.947585591f, - 0.318048077f, -0.948074586f, - 0.316593376f, -0.948561350f, - 0.315137929f, -0.949045882f, - 0.313681740f, -0.949528181f, - 0.312224814f, -0.950008245f, - 0.310767153f, -0.950486074f, - 0.309308760f, -0.950961666f, - 0.307849640f, -0.951435021f, - 0.306389795f, -0.951906137f, - 0.304929230f, -0.952375013f, - 0.303467947f, -0.952841648f, - 0.302005949f, -0.953306040f, - 0.300543241f, -0.953768190f, - 0.299079826f, -0.954228095f, - 0.297615707f, -0.954685755f, - 0.296150888f, -0.955141168f, - 0.294685372f, -0.955594334f, - 0.293219163f, -0.956045251f, - 0.291752263f, -0.956493919f, - 0.290284677f, -0.956940336f, - 0.288816408f, -0.957384501f, - 0.287347460f, -0.957826413f, - 0.285877835f, -0.958266071f, - 0.284407537f, -0.958703475f, - 0.282936570f, -0.959138622f, - 0.281464938f, -0.959571513f, - 0.279992643f, -0.960002146f, - 0.278519689f, -0.960430519f, - 0.277046080f, -0.960856633f, - 0.275571819f, -0.961280486f, - 0.274096910f, -0.961702077f, - 0.272621355f, -0.962121404f, - 0.271145160f, -0.962538468f, - 0.269668326f, -0.962953267f, - 0.268190857f, -0.963365800f, - 0.266712757f, -0.963776066f, - 0.265234030f, -0.964184064f, - 0.263754679f, -0.964589793f, - 0.262274707f, -0.964993253f, - 0.260794118f, -0.965394442f, - 0.259312915f, -0.965793359f, - 0.257831102f, -0.966190003f, - 0.256348682f, -0.966584374f, - 0.254865660f, -0.966976471f, - 0.253382037f, -0.967366292f, - 0.251897818f, -0.967753837f, - 0.250413007f, -0.968139105f, - 0.248927606f, -0.968522094f, - 0.247441619f, -0.968902805f, - 0.245955050f, -0.969281235f, - 0.244467903f, -0.969657385f, - 0.242980180f, -0.970031253f, - 0.241491885f, -0.970402839f, - 0.240003022f, -0.970772141f, - 0.238513595f, -0.971139158f, - 0.237023606f, -0.971503891f, - 0.235533059f, -0.971866337f, - 0.234041959f, -0.972226497f, - 0.232550307f, -0.972584369f, - 0.231058108f, -0.972939952f, - 0.229565366f, -0.973293246f, - 0.228072083f, -0.973644250f, - 0.226578264f, -0.973992962f, - 0.225083911f, -0.974339383f, - 0.223589029f, -0.974683511f, - 0.222093621f, -0.975025345f, - 0.220597690f, -0.975364885f, - 0.219101240f, -0.975702130f, - 0.217604275f, -0.976037079f, - 0.216106797f, -0.976369731f, - 0.214608811f, -0.976700086f, - 0.213110320f, -0.977028143f, - 0.211611327f, -0.977353900f, - 0.210111837f, -0.977677358f, - 0.208611852f, -0.977998515f, - 0.207111376f, -0.978317371f, - 0.205610413f, -0.978633924f, - 0.204108966f, -0.978948175f, - 0.202607039f, -0.979260123f, - 0.201104635f, -0.979569766f, - 0.199601758f, -0.979877104f, - 0.198098411f, -0.980182136f, - 0.196594598f, -0.980484862f, - 0.195090322f, -0.980785280f, - 0.193585587f, -0.981083391f, - 0.192080397f, -0.981379193f, - 0.190574755f, -0.981672686f, - 0.189068664f, -0.981963869f, - 0.187562129f, -0.982252741f, - 0.186055152f, -0.982539302f, - 0.184547737f, -0.982823551f, - 0.183039888f, -0.983105487f, - 0.181531608f, -0.983385110f, - 0.180022901f, -0.983662419f, - 0.178513771f, -0.983937413f, - 0.177004220f, -0.984210092f, - 0.175494253f, -0.984480455f, - 0.173983873f, -0.984748502f, - 0.172473084f, -0.985014231f, - 0.170961889f, -0.985277642f, - 0.169450291f, -0.985538735f, - 0.167938295f, -0.985797509f, - 0.166425904f, -0.986053963f, - 0.164913120f, -0.986308097f, - 0.163399949f, -0.986559910f, - 0.161886394f, -0.986809402f, - 0.160372457f, -0.987056571f, - 0.158858143f, -0.987301418f, - 0.157343456f, -0.987543942f, - 0.155828398f, -0.987784142f, - 0.154312973f, -0.988022017f, - 0.152797185f, -0.988257568f, - 0.151281038f, -0.988490793f, - 0.149764535f, -0.988721692f, - 0.148247679f, -0.988950265f, - 0.146730474f, -0.989176510f, - 0.145212925f, -0.989400428f, - 0.143695033f, -0.989622017f, - 0.142176804f, -0.989841278f, - 0.140658239f, -0.990058210f, - 0.139139344f, -0.990272812f, - 0.137620122f, -0.990485084f, - 0.136100575f, -0.990695025f, - 0.134580709f, -0.990902635f, - 0.133060525f, -0.991107914f, - 0.131540029f, -0.991310860f, - 0.130019223f, -0.991511473f, - 0.128498111f, -0.991709754f, - 0.126976696f, -0.991905700f, - 0.125454983f, -0.992099313f, - 0.123932975f, -0.992290591f, - 0.122410675f, -0.992479535f, - 0.120888087f, -0.992666142f, - 0.119365215f, -0.992850414f, - 0.117842062f, -0.993032350f, - 0.116318631f, -0.993211949f, - 0.114794927f, -0.993389211f, - 0.113270952f, -0.993564136f, - 0.111746711f, -0.993736722f, - 0.110222207f, -0.993906970f, - 0.108697444f, -0.994074879f, - 0.107172425f, -0.994240449f, - 0.105647154f, -0.994403680f, - 0.104121634f, -0.994564571f, - 0.102595869f, -0.994723121f, - 0.101069863f, -0.994879331f, - 0.099543619f, -0.995033199f, - 0.098017140f, -0.995184727f, - 0.096490431f, -0.995333912f, - 0.094963495f, -0.995480755f, - 0.093436336f, -0.995625256f, - 0.091908956f, -0.995767414f, - 0.090381361f, -0.995907229f, - 0.088853553f, -0.996044701f, - 0.087325535f, -0.996179829f, - 0.085797312f, -0.996312612f, - 0.084268888f, -0.996443051f, - 0.082740265f, -0.996571146f, - 0.081211447f, -0.996696895f, - 0.079682438f, -0.996820299f, - 0.078153242f, -0.996941358f, - 0.076623861f, -0.997060070f, - 0.075094301f, -0.997176437f, - 0.073564564f, -0.997290457f, - 0.072034653f, -0.997402130f, - 0.070504573f, -0.997511456f, - 0.068974328f, -0.997618435f, - 0.067443920f, -0.997723067f, - 0.065913353f, -0.997825350f, - 0.064382631f, -0.997925286f, - 0.062851758f, -0.998022874f, - 0.061320736f, -0.998118113f, - 0.059789571f, -0.998211003f, - 0.058258265f, -0.998301545f, - 0.056726821f, -0.998389737f, - 0.055195244f, -0.998475581f, - 0.053663538f, -0.998559074f, - 0.052131705f, -0.998640218f, - 0.050599749f, -0.998719012f, - 0.049067674f, -0.998795456f, - 0.047535484f, -0.998869550f, - 0.046003182f, -0.998941293f, - 0.044470772f, -0.999010686f, - 0.042938257f, -0.999077728f, - 0.041405641f, -0.999142419f, - 0.039872928f, -0.999204759f, - 0.038340120f, -0.999264747f, - 0.036807223f, -0.999322385f, - 0.035274239f, -0.999377670f, - 0.033741172f, -0.999430605f, - 0.032208025f, -0.999481187f, - 0.030674803f, -0.999529418f, - 0.029141509f, -0.999575296f, - 0.027608146f, -0.999618822f, - 0.026074718f, -0.999659997f, - 0.024541229f, -0.999698819f, - 0.023007681f, -0.999735288f, - 0.021474080f, -0.999769405f, - 0.019940429f, -0.999801170f, - 0.018406730f, -0.999830582f, - 0.016872988f, -0.999857641f, - 0.015339206f, -0.999882347f, - 0.013805389f, -0.999904701f, - 0.012271538f, -0.999924702f, - 0.010737659f, -0.999942350f, - 0.009203755f, -0.999957645f, - 0.007669829f, -0.999970586f, - 0.006135885f, -0.999981175f, - 0.004601926f, -0.999989411f, - 0.003067957f, -0.999995294f, - 0.001533980f, -0.999998823f -}; - - -/** - * \par - * Example code for the generation of the floating-point sine table: - *
- * tableSize = 512;
- * for(n = 0; n < (tableSize + 1); n++)
- * {
- *	sinTable[n]=sin(2*pi*n/tableSize);
- * }
- * \par - * where pi value is 3.14159265358979 - */ - -const float32_t sinTable_f32[FAST_MATH_TABLE_SIZE + 1] = { - 0.00000000f, 0.01227154f, 0.02454123f, 0.03680722f, 0.04906767f, 0.06132074f, - 0.07356456f, 0.08579731f, 0.09801714f, 0.11022221f, 0.12241068f, 0.13458071f, - 0.14673047f, 0.15885814f, 0.17096189f, 0.18303989f, 0.19509032f, 0.20711138f, - 0.21910124f, 0.23105811f, 0.24298018f, 0.25486566f, 0.26671276f, 0.27851969f, - 0.29028468f, 0.30200595f, 0.31368174f, 0.32531029f, 0.33688985f, 0.34841868f, - 0.35989504f, 0.37131719f, 0.38268343f, 0.39399204f, 0.40524131f, 0.41642956f, - 0.42755509f, 0.43861624f, 0.44961133f, 0.46053871f, 0.47139674f, 0.48218377f, - 0.49289819f, 0.50353838f, 0.51410274f, 0.52458968f, 0.53499762f, 0.54532499f, - 0.55557023f, 0.56573181f, 0.57580819f, 0.58579786f, 0.59569930f, 0.60551104f, - 0.61523159f, 0.62485949f, 0.63439328f, 0.64383154f, 0.65317284f, 0.66241578f, - 0.67155895f, 0.68060100f, 0.68954054f, 0.69837625f, 0.70710678f, 0.71573083f, - 0.72424708f, 0.73265427f, 0.74095113f, 0.74913639f, 0.75720885f, 0.76516727f, - 0.77301045f, 0.78073723f, 0.78834643f, 0.79583690f, 0.80320753f, 0.81045720f, - 0.81758481f, 0.82458930f, 0.83146961f, 0.83822471f, 0.84485357f, 0.85135519f, - 0.85772861f, 0.86397286f, 0.87008699f, 0.87607009f, 0.88192126f, 0.88763962f, - 0.89322430f, 0.89867447f, 0.90398929f, 0.90916798f, 0.91420976f, 0.91911385f, - 0.92387953f, 0.92850608f, 0.93299280f, 0.93733901f, 0.94154407f, 0.94560733f, - 0.94952818f, 0.95330604f, 0.95694034f, 0.96043052f, 0.96377607f, 0.96697647f, - 0.97003125f, 0.97293995f, 0.97570213f, 0.97831737f, 0.98078528f, 0.98310549f, - 0.98527764f, 0.98730142f, 0.98917651f, 0.99090264f, 0.99247953f, 0.99390697f, - 0.99518473f, 0.99631261f, 0.99729046f, 0.99811811f, 0.99879546f, 0.99932238f, - 0.99969882f, 0.99992470f, 1.00000000f, 0.99992470f, 0.99969882f, 0.99932238f, - 0.99879546f, 0.99811811f, 0.99729046f, 0.99631261f, 0.99518473f, 0.99390697f, - 0.99247953f, 0.99090264f, 0.98917651f, 0.98730142f, 0.98527764f, 0.98310549f, - 0.98078528f, 0.97831737f, 0.97570213f, 0.97293995f, 0.97003125f, 0.96697647f, - 0.96377607f, 0.96043052f, 0.95694034f, 0.95330604f, 0.94952818f, 0.94560733f, - 0.94154407f, 0.93733901f, 0.93299280f, 0.92850608f, 0.92387953f, 0.91911385f, - 0.91420976f, 0.90916798f, 0.90398929f, 0.89867447f, 0.89322430f, 0.88763962f, - 0.88192126f, 0.87607009f, 0.87008699f, 0.86397286f, 0.85772861f, 0.85135519f, - 0.84485357f, 0.83822471f, 0.83146961f, 0.82458930f, 0.81758481f, 0.81045720f, - 0.80320753f, 0.79583690f, 0.78834643f, 0.78073723f, 0.77301045f, 0.76516727f, - 0.75720885f, 0.74913639f, 0.74095113f, 0.73265427f, 0.72424708f, 0.71573083f, - 0.70710678f, 0.69837625f, 0.68954054f, 0.68060100f, 0.67155895f, 0.66241578f, - 0.65317284f, 0.64383154f, 0.63439328f, 0.62485949f, 0.61523159f, 0.60551104f, - 0.59569930f, 0.58579786f, 0.57580819f, 0.56573181f, 0.55557023f, 0.54532499f, - 0.53499762f, 0.52458968f, 0.51410274f, 0.50353838f, 0.49289819f, 0.48218377f, - 0.47139674f, 0.46053871f, 0.44961133f, 0.43861624f, 0.42755509f, 0.41642956f, - 0.40524131f, 0.39399204f, 0.38268343f, 0.37131719f, 0.35989504f, 0.34841868f, - 0.33688985f, 0.32531029f, 0.31368174f, 0.30200595f, 0.29028468f, 0.27851969f, - 0.26671276f, 0.25486566f, 0.24298018f, 0.23105811f, 0.21910124f, 0.20711138f, - 0.19509032f, 0.18303989f, 0.17096189f, 0.15885814f, 0.14673047f, 0.13458071f, - 0.12241068f, 0.11022221f, 0.09801714f, 0.08579731f, 0.07356456f, 0.06132074f, - 0.04906767f, 0.03680722f, 0.02454123f, 0.01227154f, 0.00000000f, -0.01227154f, - -0.02454123f, -0.03680722f, -0.04906767f, -0.06132074f, -0.07356456f, - -0.08579731f, -0.09801714f, -0.11022221f, -0.12241068f, -0.13458071f, - -0.14673047f, -0.15885814f, -0.17096189f, -0.18303989f, -0.19509032f, - -0.20711138f, -0.21910124f, -0.23105811f, -0.24298018f, -0.25486566f, - -0.26671276f, -0.27851969f, -0.29028468f, -0.30200595f, -0.31368174f, - -0.32531029f, -0.33688985f, -0.34841868f, -0.35989504f, -0.37131719f, - -0.38268343f, -0.39399204f, -0.40524131f, -0.41642956f, -0.42755509f, - -0.43861624f, -0.44961133f, -0.46053871f, -0.47139674f, -0.48218377f, - -0.49289819f, -0.50353838f, -0.51410274f, -0.52458968f, -0.53499762f, - -0.54532499f, -0.55557023f, -0.56573181f, -0.57580819f, -0.58579786f, - -0.59569930f, -0.60551104f, -0.61523159f, -0.62485949f, -0.63439328f, - -0.64383154f, -0.65317284f, -0.66241578f, -0.67155895f, -0.68060100f, - -0.68954054f, -0.69837625f, -0.70710678f, -0.71573083f, -0.72424708f, - -0.73265427f, -0.74095113f, -0.74913639f, -0.75720885f, -0.76516727f, - -0.77301045f, -0.78073723f, -0.78834643f, -0.79583690f, -0.80320753f, - -0.81045720f, -0.81758481f, -0.82458930f, -0.83146961f, -0.83822471f, - -0.84485357f, -0.85135519f, -0.85772861f, -0.86397286f, -0.87008699f, - -0.87607009f, -0.88192126f, -0.88763962f, -0.89322430f, -0.89867447f, - -0.90398929f, -0.90916798f, -0.91420976f, -0.91911385f, -0.92387953f, - -0.92850608f, -0.93299280f, -0.93733901f, -0.94154407f, -0.94560733f, - -0.94952818f, -0.95330604f, -0.95694034f, -0.96043052f, -0.96377607f, - -0.96697647f, -0.97003125f, -0.97293995f, -0.97570213f, -0.97831737f, - -0.98078528f, -0.98310549f, -0.98527764f, -0.98730142f, -0.98917651f, - -0.99090264f, -0.99247953f, -0.99390697f, -0.99518473f, -0.99631261f, - -0.99729046f, -0.99811811f, -0.99879546f, -0.99932238f, -0.99969882f, - -0.99992470f, -1.00000000f, -0.99992470f, -0.99969882f, -0.99932238f, - -0.99879546f, -0.99811811f, -0.99729046f, -0.99631261f, -0.99518473f, - -0.99390697f, -0.99247953f, -0.99090264f, -0.98917651f, -0.98730142f, - -0.98527764f, -0.98310549f, -0.98078528f, -0.97831737f, -0.97570213f, - -0.97293995f, -0.97003125f, -0.96697647f, -0.96377607f, -0.96043052f, - -0.95694034f, -0.95330604f, -0.94952818f, -0.94560733f, -0.94154407f, - -0.93733901f, -0.93299280f, -0.92850608f, -0.92387953f, -0.91911385f, - -0.91420976f, -0.90916798f, -0.90398929f, -0.89867447f, -0.89322430f, - -0.88763962f, -0.88192126f, -0.87607009f, -0.87008699f, -0.86397286f, - -0.85772861f, -0.85135519f, -0.84485357f, -0.83822471f, -0.83146961f, - -0.82458930f, -0.81758481f, -0.81045720f, -0.80320753f, -0.79583690f, - -0.78834643f, -0.78073723f, -0.77301045f, -0.76516727f, -0.75720885f, - -0.74913639f, -0.74095113f, -0.73265427f, -0.72424708f, -0.71573083f, - -0.70710678f, -0.69837625f, -0.68954054f, -0.68060100f, -0.67155895f, - -0.66241578f, -0.65317284f, -0.64383154f, -0.63439328f, -0.62485949f, - -0.61523159f, -0.60551104f, -0.59569930f, -0.58579786f, -0.57580819f, - -0.56573181f, -0.55557023f, -0.54532499f, -0.53499762f, -0.52458968f, - -0.51410274f, -0.50353838f, -0.49289819f, -0.48218377f, -0.47139674f, - -0.46053871f, -0.44961133f, -0.43861624f, -0.42755509f, -0.41642956f, - -0.40524131f, -0.39399204f, -0.38268343f, -0.37131719f, -0.35989504f, - -0.34841868f, -0.33688985f, -0.32531029f, -0.31368174f, -0.30200595f, - -0.29028468f, -0.27851969f, -0.26671276f, -0.25486566f, -0.24298018f, - -0.23105811f, -0.21910124f, -0.20711138f, -0.19509032f, -0.18303989f, - -0.17096189f, -0.15885814f, -0.14673047f, -0.13458071f, -0.12241068f, - -0.11022221f, -0.09801714f, -0.08579731f, -0.07356456f, -0.06132074f, - -0.04906767f, -0.03680722f, -0.02454123f, -0.01227154f, -0.00000000f -}; - -/** - * \par - * Table values are in Q31 (1.31 fixed-point format) and generation is done in - * three steps. First, generate sin values in floating point: - *
- * tableSize = 512;
- * for(n = 0; n < (tableSize + 1); n++)
- * {
- *	sinTable[n]= sin(2*pi*n/tableSize);
- * } 
- * where pi value is 3.14159265358979 - * \par - * Second, convert floating-point to Q31 (Fixed point): - * (sinTable[i] * pow(2, 31)) - * \par - * Finally, round to the nearest integer value: - * sinTable[i] += (sinTable[i] > 0 ? 0.5 :-0.5); - */ -const q31_t sinTable_q31[FAST_MATH_TABLE_SIZE + 1] = { - 0L, 26352928L, 52701887L, 79042909L, 105372028L, 131685278L, 157978697L, - 184248325L, 210490206L, 236700388L, 262874923L, 289009871L, 315101295L, - 341145265L, 367137861L, 393075166L, 418953276L, 444768294L, 470516330L, - 496193509L, 521795963L, 547319836L, 572761285L, 598116479L, 623381598L, - 648552838L, 673626408L, 698598533L, 723465451L, 748223418L, 772868706L, - 797397602L, 821806413L, 846091463L, 870249095L, 894275671L, 918167572L, - 941921200L, 965532978L, 988999351L, 1012316784L, 1035481766L, 1058490808L, - 1081340445L, 1104027237L, 1126547765L, 1148898640L, 1171076495L, 1193077991L, - 1214899813L, 1236538675L, 1257991320L, 1279254516L, 1300325060L, 1321199781L, - 1341875533L, 1362349204L, 1382617710L, 1402678000L, 1422527051L, 1442161874L, - 1461579514L, 1480777044L, 1499751576L, 1518500250L, 1537020244L, 1555308768L, - 1573363068L, 1591180426L, 1608758157L, 1626093616L, 1643184191L, 1660027308L, - 1676620432L, 1692961062L, 1709046739L, 1724875040L, 1740443581L, 1755750017L, - 1770792044L, 1785567396L, 1800073849L, 1814309216L, 1828271356L, 1841958164L, - 1855367581L, 1868497586L, 1881346202L, 1893911494L, 1906191570L, 1918184581L, - 1929888720L, 1941302225L, 1952423377L, 1963250501L, 1973781967L, 1984016189L, - 1993951625L, 2003586779L, 2012920201L, 2021950484L, 2030676269L, 2039096241L, - 2047209133L, 2055013723L, 2062508835L, 2069693342L, 2076566160L, 2083126254L, - 2089372638L, 2095304370L, 2100920556L, 2106220352L, 2111202959L, 2115867626L, - 2120213651L, 2124240380L, 2127947206L, 2131333572L, 2134398966L, 2137142927L, - 2139565043L, 2141664948L, 2143442326L, 2144896910L, 2146028480L, 2146836866L, - 2147321946L, 2147483647L, 2147321946L, 2146836866L, 2146028480L, 2144896910L, - 2143442326L, 2141664948L, 2139565043L, 2137142927L, 2134398966L, 2131333572L, - 2127947206L, 2124240380L, 2120213651L, 2115867626L, 2111202959L, 2106220352L, - 2100920556L, 2095304370L, 2089372638L, 2083126254L, 2076566160L, 2069693342L, - 2062508835L, 2055013723L, 2047209133L, 2039096241L, 2030676269L, 2021950484L, - 2012920201L, 2003586779L, 1993951625L, 1984016189L, 1973781967L, 1963250501L, - 1952423377L, 1941302225L, 1929888720L, 1918184581L, 1906191570L, 1893911494L, - 1881346202L, 1868497586L, 1855367581L, 1841958164L, 1828271356L, 1814309216L, - 1800073849L, 1785567396L, 1770792044L, 1755750017L, 1740443581L, 1724875040L, - 1709046739L, 1692961062L, 1676620432L, 1660027308L, 1643184191L, 1626093616L, - 1608758157L, 1591180426L, 1573363068L, 1555308768L, 1537020244L, 1518500250L, - 1499751576L, 1480777044L, 1461579514L, 1442161874L, 1422527051L, 1402678000L, - 1382617710L, 1362349204L, 1341875533L, 1321199781L, 1300325060L, 1279254516L, - 1257991320L, 1236538675L, 1214899813L, 1193077991L, 1171076495L, 1148898640L, - 1126547765L, 1104027237L, 1081340445L, 1058490808L, 1035481766L, 1012316784L, - 988999351L, 965532978L, 941921200L, 918167572L, 894275671L, 870249095L, - 846091463L, 821806413L, 797397602L, 772868706L, 748223418L, 723465451L, - 698598533L, 673626408L, 648552838L, 623381598L, 598116479L, 572761285L, - 547319836L, 521795963L, 496193509L, 470516330L, 444768294L, 418953276L, - 393075166L, 367137861L, 341145265L, 315101295L, 289009871L, 262874923L, - 236700388L, 210490206L, 184248325L, 157978697L, 131685278L, 105372028L, - 79042909L, 52701887L, 26352928L, 0L, -26352928L, -52701887L, -79042909L, - -105372028L, -131685278L, -157978697L, -184248325L, -210490206L, -236700388L, - -262874923L, -289009871L, -315101295L, -341145265L, -367137861L, -393075166L, - -418953276L, -444768294L, -470516330L, -496193509L, -521795963L, -547319836L, - -572761285L, -598116479L, -623381598L, -648552838L, -673626408L, -698598533L, - -723465451L, -748223418L, -772868706L, -797397602L, -821806413L, -846091463L, - -870249095L, -894275671L, -918167572L, -941921200L, -965532978L, -988999351L, - -1012316784L, -1035481766L, -1058490808L, -1081340445L, -1104027237L, - -1126547765L, -1148898640L, -1171076495L, -1193077991L, -1214899813L, - -1236538675L, -1257991320L, -1279254516L, -1300325060L, -1321199781L, - -1341875533L, -1362349204L, -1382617710L, -1402678000L, -1422527051L, - -1442161874L, -1461579514L, -1480777044L, -1499751576L, -1518500250L, - -1537020244L, -1555308768L, -1573363068L, -1591180426L, -1608758157L, - -1626093616L, -1643184191L, -1660027308L, -1676620432L, -1692961062L, - -1709046739L, -1724875040L, -1740443581L, -1755750017L, -1770792044L, - -1785567396L, -1800073849L, -1814309216L, -1828271356L, -1841958164L, - -1855367581L, -1868497586L, -1881346202L, -1893911494L, -1906191570L, - -1918184581L, -1929888720L, -1941302225L, -1952423377L, -1963250501L, - -1973781967L, -1984016189L, -1993951625L, -2003586779L, -2012920201L, - -2021950484L, -2030676269L, -2039096241L, -2047209133L, -2055013723L, - -2062508835L, -2069693342L, -2076566160L, -2083126254L, -2089372638L, - -2095304370L, -2100920556L, -2106220352L, -2111202959L, -2115867626L, - -2120213651L, -2124240380L, -2127947206L, -2131333572L, -2134398966L, - -2137142927L, -2139565043L, -2141664948L, -2143442326L, -2144896910L, - -2146028480L, -2146836866L, -2147321946L, (q31_t)0x80000000, -2147321946L, - -2146836866L, -2146028480L, -2144896910L, -2143442326L, -2141664948L, - -2139565043L, -2137142927L, -2134398966L, -2131333572L, -2127947206L, - -2124240380L, -2120213651L, -2115867626L, -2111202959L, -2106220352L, - -2100920556L, -2095304370L, -2089372638L, -2083126254L, -2076566160L, - -2069693342L, -2062508835L, -2055013723L, -2047209133L, -2039096241L, - -2030676269L, -2021950484L, -2012920201L, -2003586779L, -1993951625L, - -1984016189L, -1973781967L, -1963250501L, -1952423377L, -1941302225L, - -1929888720L, -1918184581L, -1906191570L, -1893911494L, -1881346202L, - -1868497586L, -1855367581L, -1841958164L, -1828271356L, -1814309216L, - -1800073849L, -1785567396L, -1770792044L, -1755750017L, -1740443581L, - -1724875040L, -1709046739L, -1692961062L, -1676620432L, -1660027308L, - -1643184191L, -1626093616L, -1608758157L, -1591180426L, -1573363068L, - -1555308768L, -1537020244L, -1518500250L, -1499751576L, -1480777044L, - -1461579514L, -1442161874L, -1422527051L, -1402678000L, -1382617710L, - -1362349204L, -1341875533L, -1321199781L, -1300325060L, -1279254516L, - -1257991320L, -1236538675L, -1214899813L, -1193077991L, -1171076495L, - -1148898640L, -1126547765L, -1104027237L, -1081340445L, -1058490808L, - -1035481766L, -1012316784L, -988999351L, -965532978L, -941921200L, - -918167572L, -894275671L, -870249095L, -846091463L, -821806413L, -797397602L, - -772868706L, -748223418L, -723465451L, -698598533L, -673626408L, -648552838L, - -623381598L, -598116479L, -572761285L, -547319836L, -521795963L, -496193509L, - -470516330L, -444768294L, -418953276L, -393075166L, -367137861L, -341145265L, - -315101295L, -289009871L, -262874923L, -236700388L, -210490206L, -184248325L, - -157978697L, -131685278L, -105372028L, -79042909L, -52701887L, -26352928L, 0 -}; - -/** - * \par - * Table values are in Q15 (1.15 fixed-point format) and generation is done in - * three steps. First, generate sin values in floating point: - *
- * tableSize = 512;
- * for(n = 0; n < (tableSize + 1); n++)
- * {
- *	sinTable[n]= sin(2*pi*n/tableSize);
- * } 
- * where pi value is 3.14159265358979 - * \par - * Second, convert floating-point to Q15 (Fixed point): - * (sinTable[i] * pow(2, 15)) - * \par - * Finally, round to the nearest integer value: - * sinTable[i] += (sinTable[i] > 0 ? 0.5 :-0.5); - */ -const q15_t sinTable_q15[FAST_MATH_TABLE_SIZE + 1] = { - 0, 402, 804, 1206, 1608, 2009, 2411, 2811, 3212, 3612, 4011, 4410, 4808, - 5205, 5602, 5998, 6393, 6787, 7180, 7571, 7962, 8351, 8740, 9127, 9512, - 9896, 10279, 10660, 11039, 11417, 11793, 12167, 12540, 12910, 13279, - 13646, 14010, 14373, 14733, 15091, 15447, 15800, 16151, 16500, 16846, - 17190, 17531, 17869, 18205, 18538, 18868, 19195, 19520, 19841, 20160, - 20475, 20788, 21097, 21403, 21706, 22006, 22302, 22595, 22884, 23170, - 23453, 23732, 24008, 24279, 24548, 24812, 25073, 25330, 25583, 25833, - 26078, 26320, 26557, 26791, 27020, 27246, 27467, 27684, 27897, 28106, - 28311, 28511, 28707, 28899, 29086, 29269, 29448, 29622, 29792, 29957, - 30118, 30274, 30425, 30572, 30715, 30853, 30986, 31114, 31238, 31357, - 31471, 31581, 31686, 31786, 31881, 31972, 32058, 32138, 32214, 32286, - 32352, 32413, 32470, 32522, 32568, 32610, 32647, 32679, 32706, 32729, - 32746, 32758, 32766, 32767, 32766, 32758, 32746, 32729, 32706, 32679, - 32647, 32610, 32568, 32522, 32470, 32413, 32352, 32286, 32214, 32138, - 32058, 31972, 31881, 31786, 31686, 31581, 31471, 31357, 31238, 31114, - 30986, 30853, 30715, 30572, 30425, 30274, 30118, 29957, 29792, 29622, - 29448, 29269, 29086, 28899, 28707, 28511, 28311, 28106, 27897, 27684, - 27467, 27246, 27020, 26791, 26557, 26320, 26078, 25833, 25583, 25330, - 25073, 24812, 24548, 24279, 24008, 23732, 23453, 23170, 22884, 22595, - 22302, 22006, 21706, 21403, 21097, 20788, 20475, 20160, 19841, 19520, - 19195, 18868, 18538, 18205, 17869, 17531, 17190, 16846, 16500, 16151, - 15800, 15447, 15091, 14733, 14373, 14010, 13646, 13279, 12910, 12540, - 12167, 11793, 11417, 11039, 10660, 10279, 9896, 9512, 9127, 8740, 8351, - 7962, 7571, 7180, 6787, 6393, 5998, 5602, 5205, 4808, 4410, 4011, 3612, - 3212, 2811, 2411, 2009, 1608, 1206, 804, 402, 0, -402, -804, -1206, - -1608, -2009, -2411, -2811, -3212, -3612, -4011, -4410, -4808, -5205, - -5602, -5998, -6393, -6787, -7180, -7571, -7962, -8351, -8740, -9127, - -9512, -9896, -10279, -10660, -11039, -11417, -11793, -12167, -12540, - -12910, -13279, -13646, -14010, -14373, -14733, -15091, -15447, -15800, - -16151, -16500, -16846, -17190, -17531, -17869, -18205, -18538, -18868, - -19195, -19520, -19841, -20160, -20475, -20788, -21097, -21403, -21706, - -22006, -22302, -22595, -22884, -23170, -23453, -23732, -24008, -24279, - -24548, -24812, -25073, -25330, -25583, -25833, -26078, -26320, -26557, - -26791, -27020, -27246, -27467, -27684, -27897, -28106, -28311, -28511, - -28707, -28899, -29086, -29269, -29448, -29622, -29792, -29957, -30118, - -30274, -30425, -30572, -30715, -30853, -30986, -31114, -31238, -31357, - -31471, -31581, -31686, -31786, -31881, -31972, -32058, -32138, -32214, - -32286, -32352, -32413, -32470, -32522, -32568, -32610, -32647, -32679, - -32706, -32729, -32746, -32758, -32766, -32768, -32766, -32758, -32746, - -32729, -32706, -32679, -32647, -32610, -32568, -32522, -32470, -32413, - -32352, -32286, -32214, -32138, -32058, -31972, -31881, -31786, -31686, - -31581, -31471, -31357, -31238, -31114, -30986, -30853, -30715, -30572, - -30425, -30274, -30118, -29957, -29792, -29622, -29448, -29269, -29086, - -28899, -28707, -28511, -28311, -28106, -27897, -27684, -27467, -27246, - -27020, -26791, -26557, -26320, -26078, -25833, -25583, -25330, -25073, - -24812, -24548, -24279, -24008, -23732, -23453, -23170, -22884, -22595, - -22302, -22006, -21706, -21403, -21097, -20788, -20475, -20160, -19841, - -19520, -19195, -18868, -18538, -18205, -17869, -17531, -17190, -16846, - -16500, -16151, -15800, -15447, -15091, -14733, -14373, -14010, -13646, - -13279, -12910, -12540, -12167, -11793, -11417, -11039, -10660, -10279, - -9896, -9512, -9127, -8740, -8351, -7962, -7571, -7180, -6787, -6393, - -5998, -5602, -5205, -4808, -4410, -4011, -3612, -3212, -2811, -2411, - -2009, -1608, -1206, -804, -402, 0 -}; diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/CommonTables/arm_const_structs.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/CommonTables/arm_const_structs.c deleted file mode 100644 index 4f41262..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/CommonTables/arm_const_structs.c +++ /dev/null @@ -1,379 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_const_structs.c - * Description: Constant structs that are initialized for user convenience. - * For example, some can be given as arguments to the arm_cfft_f32() or arm_rfft_f32() functions. - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_const_structs.h" - -/* Floating-point structs */ -const arm_cfft_instance_f32 arm_cfft_sR_f32_len16 = { - 16, twiddleCoef_16, armBitRevIndexTable16, ARMBITREVINDEXTABLE_16_TABLE_LENGTH -}; - -const arm_cfft_instance_f32 arm_cfft_sR_f32_len32 = { - 32, twiddleCoef_32, armBitRevIndexTable32, ARMBITREVINDEXTABLE_32_TABLE_LENGTH -}; - -const arm_cfft_instance_f32 arm_cfft_sR_f32_len64 = { - 64, twiddleCoef_64, armBitRevIndexTable64, ARMBITREVINDEXTABLE_64_TABLE_LENGTH -}; - -const arm_cfft_instance_f32 arm_cfft_sR_f32_len128 = { - 128, twiddleCoef_128, armBitRevIndexTable128, ARMBITREVINDEXTABLE_128_TABLE_LENGTH -}; - -const arm_cfft_instance_f32 arm_cfft_sR_f32_len256 = { - 256, twiddleCoef_256, armBitRevIndexTable256, ARMBITREVINDEXTABLE_256_TABLE_LENGTH -}; - -const arm_cfft_instance_f32 arm_cfft_sR_f32_len512 = { - 512, twiddleCoef_512, armBitRevIndexTable512, ARMBITREVINDEXTABLE_512_TABLE_LENGTH -}; - -const arm_cfft_instance_f32 arm_cfft_sR_f32_len1024 = { - 1024, twiddleCoef_1024, armBitRevIndexTable1024, ARMBITREVINDEXTABLE_1024_TABLE_LENGTH -}; - -const arm_cfft_instance_f32 arm_cfft_sR_f32_len2048 = { - 2048, twiddleCoef_2048, armBitRevIndexTable2048, ARMBITREVINDEXTABLE_2048_TABLE_LENGTH -}; - -const arm_cfft_instance_f32 arm_cfft_sR_f32_len4096 = { - 4096, twiddleCoef_4096, armBitRevIndexTable4096, ARMBITREVINDEXTABLE_4096_TABLE_LENGTH -}; - -/* Fixed-point structs */ -const arm_cfft_instance_q31 arm_cfft_sR_q31_len16 = { - 16, twiddleCoef_16_q31, armBitRevIndexTable_fixed_16, ARMBITREVINDEXTABLE_FIXED_16_TABLE_LENGTH -}; - -const arm_cfft_instance_q31 arm_cfft_sR_q31_len32 = { - 32, twiddleCoef_32_q31, armBitRevIndexTable_fixed_32, ARMBITREVINDEXTABLE_FIXED_32_TABLE_LENGTH -}; - -const arm_cfft_instance_q31 arm_cfft_sR_q31_len64 = { - 64, twiddleCoef_64_q31, armBitRevIndexTable_fixed_64, ARMBITREVINDEXTABLE_FIXED_64_TABLE_LENGTH -}; - -const arm_cfft_instance_q31 arm_cfft_sR_q31_len128 = { - 128, twiddleCoef_128_q31, armBitRevIndexTable_fixed_128, ARMBITREVINDEXTABLE_FIXED_128_TABLE_LENGTH -}; - -const arm_cfft_instance_q31 arm_cfft_sR_q31_len256 = { - 256, twiddleCoef_256_q31, armBitRevIndexTable_fixed_256, ARMBITREVINDEXTABLE_FIXED_256_TABLE_LENGTH -}; - -const arm_cfft_instance_q31 arm_cfft_sR_q31_len512 = { - 512, twiddleCoef_512_q31, armBitRevIndexTable_fixed_512, ARMBITREVINDEXTABLE_FIXED_512_TABLE_LENGTH -}; - -const arm_cfft_instance_q31 arm_cfft_sR_q31_len1024 = { - 1024, twiddleCoef_1024_q31, armBitRevIndexTable_fixed_1024, ARMBITREVINDEXTABLE_FIXED_1024_TABLE_LENGTH -}; - -const arm_cfft_instance_q31 arm_cfft_sR_q31_len2048 = { - 2048, twiddleCoef_2048_q31, armBitRevIndexTable_fixed_2048, ARMBITREVINDEXTABLE_FIXED_2048_TABLE_LENGTH -}; - -const arm_cfft_instance_q31 arm_cfft_sR_q31_len4096 = { - 4096, twiddleCoef_4096_q31, armBitRevIndexTable_fixed_4096, ARMBITREVINDEXTABLE_FIXED_4096_TABLE_LENGTH -}; - -const arm_cfft_instance_q15 arm_cfft_sR_q15_len16 = { - 16, twiddleCoef_16_q15, armBitRevIndexTable_fixed_16, ARMBITREVINDEXTABLE_FIXED_16_TABLE_LENGTH -}; - -const arm_cfft_instance_q15 arm_cfft_sR_q15_len32 = { - 32, twiddleCoef_32_q15, armBitRevIndexTable_fixed_32, ARMBITREVINDEXTABLE_FIXED_32_TABLE_LENGTH -}; - -const arm_cfft_instance_q15 arm_cfft_sR_q15_len64 = { - 64, twiddleCoef_64_q15, armBitRevIndexTable_fixed_64, ARMBITREVINDEXTABLE_FIXED_64_TABLE_LENGTH -}; - -const arm_cfft_instance_q15 arm_cfft_sR_q15_len128 = { - 128, twiddleCoef_128_q15, armBitRevIndexTable_fixed_128, ARMBITREVINDEXTABLE_FIXED_128_TABLE_LENGTH -}; - -const arm_cfft_instance_q15 arm_cfft_sR_q15_len256 = { - 256, twiddleCoef_256_q15, armBitRevIndexTable_fixed_256, ARMBITREVINDEXTABLE_FIXED_256_TABLE_LENGTH -}; - -const arm_cfft_instance_q15 arm_cfft_sR_q15_len512 = { - 512, twiddleCoef_512_q15, armBitRevIndexTable_fixed_512, ARMBITREVINDEXTABLE_FIXED_512_TABLE_LENGTH -}; - -const arm_cfft_instance_q15 arm_cfft_sR_q15_len1024 = { - 1024, twiddleCoef_1024_q15, armBitRevIndexTable_fixed_1024, ARMBITREVINDEXTABLE_FIXED_1024_TABLE_LENGTH -}; - -const arm_cfft_instance_q15 arm_cfft_sR_q15_len2048 = { - 2048, twiddleCoef_2048_q15, armBitRevIndexTable_fixed_2048, ARMBITREVINDEXTABLE_FIXED_2048_TABLE_LENGTH -}; - -const arm_cfft_instance_q15 arm_cfft_sR_q15_len4096 = { - 4096, twiddleCoef_4096_q15, armBitRevIndexTable_fixed_4096, ARMBITREVINDEXTABLE_FIXED_4096_TABLE_LENGTH -}; - -/* Structure for real-value inputs */ -/* Floating-point structs */ -const arm_rfft_fast_instance_f32 arm_rfft_fast_sR_f32_len32 = { - { 16, twiddleCoef_32, armBitRevIndexTable32, ARMBITREVINDEXTABLE_16_TABLE_LENGTH }, - 32U, - (float32_t *)twiddleCoef_rfft_32 -}; - -const arm_rfft_fast_instance_f32 arm_rfft_fast_sR_f32_len64 = { - { 32, twiddleCoef_32, armBitRevIndexTable32, ARMBITREVINDEXTABLE_32_TABLE_LENGTH }, - 64U, - (float32_t *)twiddleCoef_rfft_64 -}; - -const arm_rfft_fast_instance_f32 arm_rfft_fast_sR_f32_len128 = { - { 64, twiddleCoef_64, armBitRevIndexTable64, ARMBITREVINDEXTABLE_64_TABLE_LENGTH }, - 128U, - (float32_t *)twiddleCoef_rfft_128 -}; - -const arm_rfft_fast_instance_f32 arm_rfft_fast_sR_f32_len256 = { - { 128, twiddleCoef_128, armBitRevIndexTable128, ARMBITREVINDEXTABLE_128_TABLE_LENGTH }, - 256U, - (float32_t *)twiddleCoef_rfft_256 -}; - -const arm_rfft_fast_instance_f32 arm_rfft_fast_sR_f32_len512 = { - { 256, twiddleCoef_256, armBitRevIndexTable256, ARMBITREVINDEXTABLE_256_TABLE_LENGTH }, - 512U, - (float32_t *)twiddleCoef_rfft_512 -}; - -const arm_rfft_fast_instance_f32 arm_rfft_fast_sR_f32_len1024 = { - { 512, twiddleCoef_512, armBitRevIndexTable512, ARMBITREVINDEXTABLE_512_TABLE_LENGTH }, - 1024U, - (float32_t *)twiddleCoef_rfft_1024 -}; - -const arm_rfft_fast_instance_f32 arm_rfft_fast_sR_f32_len2048 = { - { 1024, twiddleCoef_1024, armBitRevIndexTable1024, ARMBITREVINDEXTABLE_1024_TABLE_LENGTH }, - 2048U, - (float32_t *)twiddleCoef_rfft_2048 -}; - -const arm_rfft_fast_instance_f32 arm_rfft_fast_sR_f32_len4096 = { - { 2048, twiddleCoef_2048, armBitRevIndexTable2048, ARMBITREVINDEXTABLE_2048_TABLE_LENGTH }, - 4096U, - (float32_t *)twiddleCoef_rfft_4096 -}; - -/* Fixed-point structs */ -/* q31_t */ -extern const q31_t realCoefAQ31[8192]; -extern const q31_t realCoefBQ31[8192]; - -const arm_rfft_instance_q31 arm_rfft_sR_q31_len32 = { - 32U, - 0, - 1, - 256U, - (q31_t*)realCoefAQ31, - (q31_t*)realCoefBQ31, - &arm_cfft_sR_q31_len16 -}; - -const arm_rfft_instance_q31 arm_rfft_sR_q31_len64 = { - 64U, - 0, - 1, - 128U, - (q31_t*)realCoefAQ31, - (q31_t*)realCoefBQ31, - &arm_cfft_sR_q31_len32 -}; - -const arm_rfft_instance_q31 arm_rfft_sR_q31_len128 = { - 128U, - 0, - 1, - 64U, - (q31_t*)realCoefAQ31, - (q31_t*)realCoefBQ31, - &arm_cfft_sR_q31_len64 -}; - -const arm_rfft_instance_q31 arm_rfft_sR_q31_len256 = { - 256U, - 0, - 1, - 32U, - (q31_t*)realCoefAQ31, - (q31_t*)realCoefBQ31, - &arm_cfft_sR_q31_len128 -}; - -const arm_rfft_instance_q31 arm_rfft_sR_q31_len512 = { - 512U, - 0, - 1, - 16U, - (q31_t*)realCoefAQ31, - (q31_t*)realCoefBQ31, - &arm_cfft_sR_q31_len256 -}; - -const arm_rfft_instance_q31 arm_rfft_sR_q31_len1024 = { - 1024U, - 0, - 1, - 8U, - (q31_t*)realCoefAQ31, - (q31_t*)realCoefBQ31, - &arm_cfft_sR_q31_len512 -}; - -const arm_rfft_instance_q31 arm_rfft_sR_q31_len2048 = { - 2048U, - 0, - 1, - 4U, - (q31_t*)realCoefAQ31, - (q31_t*)realCoefBQ31, - &arm_cfft_sR_q31_len1024 -}; - -const arm_rfft_instance_q31 arm_rfft_sR_q31_len4096 = { - 4096U, - 0, - 1, - 2U, - (q31_t*)realCoefAQ31, - (q31_t*)realCoefBQ31, - &arm_cfft_sR_q31_len2048 -}; - -const arm_rfft_instance_q31 arm_rfft_sR_q31_len8192 = { - 8192U, - 0, - 1, - 1U, - (q31_t*)realCoefAQ31, - (q31_t*)realCoefBQ31, - &arm_cfft_sR_q31_len4096 -}; - -/* q15_t */ -extern const q15_t realCoefAQ15[8192]; -extern const q15_t realCoefBQ15[8192]; - -const arm_rfft_instance_q15 arm_rfft_sR_q15_len32 = { - 32U, - 0, - 1, - 256U, - (q15_t*)realCoefAQ15, - (q15_t*)realCoefBQ15, - &arm_cfft_sR_q15_len16 -}; - -const arm_rfft_instance_q15 arm_rfft_sR_q15_len64 = { - 64U, - 0, - 1, - 128U, - (q15_t*)realCoefAQ15, - (q15_t*)realCoefBQ15, - &arm_cfft_sR_q15_len32 -}; - -const arm_rfft_instance_q15 arm_rfft_sR_q15_len128 = { - 128U, - 0, - 1, - 64U, - (q15_t*)realCoefAQ15, - (q15_t*)realCoefBQ15, - &arm_cfft_sR_q15_len64 -}; - -const arm_rfft_instance_q15 arm_rfft_sR_q15_len256 = { - 256U, - 0, - 1, - 32U, - (q15_t*)realCoefAQ15, - (q15_t*)realCoefBQ15, - &arm_cfft_sR_q15_len128 -}; - -const arm_rfft_instance_q15 arm_rfft_sR_q15_len512 = { - 512U, - 0, - 1, - 16U, - (q15_t*)realCoefAQ15, - (q15_t*)realCoefBQ15, - &arm_cfft_sR_q15_len256 -}; - -const arm_rfft_instance_q15 arm_rfft_sR_q15_len1024 = { - 1024U, - 0, - 1, - 8U, - (q15_t*)realCoefAQ15, - (q15_t*)realCoefBQ15, - &arm_cfft_sR_q15_len512 -}; - -const arm_rfft_instance_q15 arm_rfft_sR_q15_len2048 = { - 2048U, - 0, - 1, - 4U, - (q15_t*)realCoefAQ15, - (q15_t*)realCoefBQ15, - &arm_cfft_sR_q15_len1024 -}; - -const arm_rfft_instance_q15 arm_rfft_sR_q15_len4096 = { - 4096U, - 0, - 1, - 2U, - (q15_t*)realCoefAQ15, - (q15_t*)realCoefBQ15, - &arm_cfft_sR_q15_len2048 -}; - -const arm_rfft_instance_q15 arm_rfft_sR_q15_len8192 = { - 8192U, - 0, - 1, - 1U, - (q15_t*)realCoefAQ15, - (q15_t*)realCoefBQ15, - &arm_cfft_sR_q15_len4096 -}; diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_conj_f32.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_conj_f32.c deleted file mode 100644 index cfb6f1f..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_conj_f32.c +++ /dev/null @@ -1,171 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_cmplx_conj_f32.c - * Description: Floating-point complex conjugate - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupCmplxMath - */ - -/** - * @defgroup cmplx_conj Complex Conjugate - * - * Conjugates the elements of a complex data vector. - * - * The pSrc points to the source data and - * pDst points to the where the result should be written. - * numSamples specifies the number of complex samples - * and the data in each array is stored in an interleaved fashion - * (real, imag, real, imag, ...). - * Each array has a total of 2*numSamples values. - * The underlying algorithm is used: - * - *
- * for(n=0; n
- *
- * There are separate functions for floating-point, Q15, and Q31 data types.
- */
-
-/**
- * @addtogroup cmplx_conj
- * @{
- */
-
-/**
- * @brief  Floating-point complex conjugate.
- * @param  *pSrc points to the input vector
- * @param  *pDst points to the output vector
- * @param  numSamples number of complex samples in each vector
- * @return none.
- */
-
-void arm_cmplx_conj_f32(
-  float32_t * pSrc,
-  float32_t * pDst,
-  uint32_t numSamples)
-{
-  uint32_t blkCnt;                               /* loop counter */
-
-#if defined (ARM_MATH_DSP)
-
-  /* Run the below code for Cortex-M4 and Cortex-M3 */
-  float32_t inR1, inR2, inR3, inR4;
-  float32_t inI1, inI2, inI3, inI4;
-
-  /*loop Unrolling */
-  blkCnt = numSamples >> 2U;
-
-  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.
-   ** a second loop below computes the remaining 1 to 3 samples. */
-  while (blkCnt > 0U)
-  {
-    /* C[0]+jC[1] = A[0]+ j (-1) A[1] */
-    /* Calculate Complex Conjugate and then store the results in the destination buffer. */
-    /* read real input samples */
-    inR1 = pSrc[0];
-    /* store real samples to destination */
-    pDst[0] = inR1;
-    inR2 = pSrc[2];
-    pDst[2] = inR2;
-    inR3 = pSrc[4];
-    pDst[4] = inR3;
-    inR4 = pSrc[6];
-    pDst[6] = inR4;
-
-    /* read imaginary input samples */
-    inI1 = pSrc[1];
-    inI2 = pSrc[3];
-
-    /* conjugate input */
-    inI1 = -inI1;
-
-    /* read imaginary input samples */
-    inI3 = pSrc[5];
-
-    /* conjugate input */
-    inI2 = -inI2;
-
-    /* read imaginary input samples */
-    inI4 = pSrc[7];
-
-    /* conjugate input */
-    inI3 = -inI3;
-
-    /* store imaginary samples to destination */
-    pDst[1] = inI1;
-    pDst[3] = inI2;
-
-    /* conjugate input */
-    inI4 = -inI4;
-
-    /* store imaginary samples to destination */
-    pDst[5] = inI3;
-
-    /* increment source pointer by 8 to process next sampels */
-    pSrc += 8U;
-
-    /* store imaginary sample to destination */
-    pDst[7] = inI4;
-
-    /* increment destination pointer by 8 to store next samples */
-    pDst += 8U;
-
-    /* Decrement the loop counter */
-    blkCnt--;
-  }
-
-  /* If the numSamples is not a multiple of 4, compute any remaining output samples here.
-   ** No loop unrolling is used. */
-  blkCnt = numSamples % 0x4U;
-
-#else
-
-  /* Run the below code for Cortex-M0 */
-  blkCnt = numSamples;
-
-#endif /* #if defined (ARM_MATH_DSP) */
-
-  while (blkCnt > 0U)
-  {
-    /* realOut + j (imagOut) = realIn + j (-1) imagIn */
-    /* Calculate Complex Conjugate and then store the results in the destination buffer. */
-    *pDst++ = *pSrc++;
-    *pDst++ = -*pSrc++;
-
-    /* Decrement the loop counter */
-    blkCnt--;
-  }
-}
-
-/**
- * @} end of cmplx_conj group
- */
diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_conj_q15.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_conj_q15.c
deleted file mode 100644
index 7950229..0000000
--- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_conj_q15.c
+++ /dev/null
@@ -1,149 +0,0 @@
-/* ----------------------------------------------------------------------
- * Project:      CMSIS DSP Library
- * Title:        arm_cmplx_conj_q15.c
- * Description:  Q15 complex conjugate
- *
- * $Date:        27. January 2017
- * $Revision:    V.1.5.1
- *
- * Target Processor: Cortex-M cores
- * -------------------------------------------------------------------- */
-/*
- * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved.
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the License); you may
- * not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "arm_math.h"
-
-/**
- * @ingroup groupCmplxMath
- */
-
-/**
- * @addtogroup cmplx_conj
- * @{
- */
-
-/**
- * @brief  Q15 complex conjugate.
- * @param  *pSrc points to the input vector
- * @param  *pDst points to the output vector
- * @param  numSamples number of complex samples in each vector
- * @return none.
- *
- * Scaling and Overflow Behavior:
- * \par
- * The function uses saturating arithmetic.
- * The Q15 value -1 (0x8000) will be saturated to the maximum allowable positive value 0x7FFF.
- */
-
-void arm_cmplx_conj_q15(
-  q15_t * pSrc,
-  q15_t * pDst,
-  uint32_t numSamples)
-{
-
-#if defined (ARM_MATH_DSP)
-
-  /* Run the below code for Cortex-M4 and Cortex-M3 */
-  uint32_t blkCnt;                               /* loop counter */
-  q31_t in1, in2, in3, in4;
-  q31_t zero = 0;
-
-  /*loop Unrolling */
-  blkCnt = numSamples >> 2U;
-
-  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.
-   ** a second loop below computes the remaining 1 to 3 samples. */
-  while (blkCnt > 0U)
-  {
-    /* C[0]+jC[1] = A[0]+ j (-1) A[1] */
-    /* Calculate Complex Conjugate and then store the results in the destination buffer. */
-    in1 = *__SIMD32(pSrc)++;
-    in2 = *__SIMD32(pSrc)++;
-    in3 = *__SIMD32(pSrc)++;
-    in4 = *__SIMD32(pSrc)++;
-
-#ifndef ARM_MATH_BIG_ENDIAN
-
-    in1 = __QASX(zero, in1);
-    in2 = __QASX(zero, in2);
-    in3 = __QASX(zero, in3);
-    in4 = __QASX(zero, in4);
-
-#else
-
-    in1 = __QSAX(zero, in1);
-    in2 = __QSAX(zero, in2);
-    in3 = __QSAX(zero, in3);
-    in4 = __QSAX(zero, in4);
-
-#endif /* #ifndef ARM_MATH_BIG_ENDIAN */
-
-    in1 = ((uint32_t) in1 >> 16) | ((uint32_t) in1 << 16);
-    in2 = ((uint32_t) in2 >> 16) | ((uint32_t) in2 << 16);
-    in3 = ((uint32_t) in3 >> 16) | ((uint32_t) in3 << 16);
-    in4 = ((uint32_t) in4 >> 16) | ((uint32_t) in4 << 16);
-
-    *__SIMD32(pDst)++ = in1;
-    *__SIMD32(pDst)++ = in2;
-    *__SIMD32(pDst)++ = in3;
-    *__SIMD32(pDst)++ = in4;
-
-    /* Decrement the loop counter */
-    blkCnt--;
-  }
-
-  /* If the numSamples is not a multiple of 4, compute any remaining output samples here.
-   ** No loop unrolling is used. */
-  blkCnt = numSamples % 0x4U;
-
-  while (blkCnt > 0U)
-  {
-    /* C[0]+jC[1] = A[0]+ j (-1) A[1] */
-    /* Calculate Complex Conjugate and then store the results in the destination buffer. */
-    *pDst++ = *pSrc++;
-    *pDst++ = __SSAT(-*pSrc++, 16);
-
-    /* Decrement the loop counter */
-    blkCnt--;
-  }
-
-#else
-
-  q15_t in;
-
-  /* Run the below code for Cortex-M0 */
-
-  while (numSamples > 0U)
-  {
-    /* realOut + j (imagOut) = realIn+ j (-1) imagIn */
-    /* Calculate Complex Conjugate and then store the results in the destination buffer. */
-    *pDst++ = *pSrc++;
-    in = *pSrc++;
-    *pDst++ = (in == (q15_t) 0x8000) ? 0x7fff : -in;
-
-    /* Decrement the loop counter */
-    numSamples--;
-  }
-
-#endif /* #if defined (ARM_MATH_DSP) */
-
-}
-
-/**
- * @} end of cmplx_conj group
- */
diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_conj_q31.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_conj_q31.c
deleted file mode 100644
index 709ce0e..0000000
--- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_conj_q31.c
+++ /dev/null
@@ -1,169 +0,0 @@
-/* ----------------------------------------------------------------------
- * Project:      CMSIS DSP Library
- * Title:        arm_cmplx_conj_q31.c
- * Description:  Q31 complex conjugate
- *
- * $Date:        27. January 2017
- * $Revision:    V.1.5.1
- *
- * Target Processor: Cortex-M cores
- * -------------------------------------------------------------------- */
-/*
- * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved.
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the License); you may
- * not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "arm_math.h"
-
-/**
- * @ingroup groupCmplxMath
- */
-
-/**
- * @addtogroup cmplx_conj
- * @{
- */
-
-/**
- * @brief  Q31 complex conjugate.
- * @param  *pSrc points to the input vector
- * @param  *pDst points to the output vector
- * @param  numSamples number of complex samples in each vector
- * @return none.
- *
- * Scaling and Overflow Behavior:
- * \par
- * The function uses saturating arithmetic.
- * The Q31 value -1 (0x80000000) will be saturated to the maximum allowable positive value 0x7FFFFFFF.
- */
-
-void arm_cmplx_conj_q31(
-  q31_t * pSrc,
-  q31_t * pDst,
-  uint32_t numSamples)
-{
-  uint32_t blkCnt;                               /* loop counter */
-  q31_t in;                                      /* Input value */
-
-#if defined (ARM_MATH_DSP)
-
-  /* Run the below code for Cortex-M4 and Cortex-M3 */
-  q31_t inR1, inR2, inR3, inR4;                  /* Temporary real variables */
-  q31_t inI1, inI2, inI3, inI4;                  /* Temporary imaginary variables */
-
-  /*loop Unrolling */
-  blkCnt = numSamples >> 2U;
-
-  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.
-   ** a second loop below computes the remaining 1 to 3 samples. */
-  while (blkCnt > 0U)
-  {
-    /* C[0]+jC[1] = A[0]+ j (-1) A[1] */
-    /* Calculate Complex Conjugate and then store the results in the destination buffer. */
-    /* Saturated to 0x7fffffff if the input is -1(0x80000000) */
-    /* read real input sample */
-    inR1 = pSrc[0];
-    /* store real input sample */
-    pDst[0] = inR1;
-
-    /* read imaginary input sample */
-    inI1 = pSrc[1];
-
-    /* read real input sample */
-    inR2 = pSrc[2];
-    /* store real input sample */
-    pDst[2] = inR2;
-
-    /* read imaginary input sample */
-    inI2 = pSrc[3];
-
-    /* negate imaginary input sample */
-    inI1 = __QSUB(0, inI1);
-
-    /* read real input sample */
-    inR3 = pSrc[4];
-    /* store real input sample */
-    pDst[4] = inR3;
-
-    /* read imaginary input sample */
-    inI3 = pSrc[5];
-
-    /* negate imaginary input sample */
-    inI2 = __QSUB(0, inI2);
-
-    /* read real input sample */
-    inR4 = pSrc[6];
-    /* store real input sample */
-    pDst[6] = inR4;
-
-    /* negate imaginary input sample */
-    inI3 = __QSUB(0, inI3);
-
-    /* store imaginary input sample */
-    inI4 = pSrc[7];
-
-    /* store imaginary input samples */
-    pDst[1] = inI1;
-
-    /* negate imaginary input sample */
-    inI4 = __QSUB(0, inI4);
-
-    /* store imaginary input samples */
-    pDst[3] = inI2;
-
-    /* increment source pointer by 8 to proecess next samples */
-    pSrc += 8U;
-
-    /* store imaginary input samples */
-    pDst[5] = inI3;
-    pDst[7] = inI4;
-
-    /* increment destination pointer by 8 to process next samples */
-    pDst += 8U;
-
-    /* Decrement the loop counter */
-    blkCnt--;
-  }
-
-  /* If the numSamples is not a multiple of 4, compute any remaining output samples here.
-   ** No loop unrolling is used. */
-  blkCnt = numSamples % 0x4U;
-
-#else
-
-  /* Run the below code for Cortex-M0 */
-  blkCnt = numSamples;
-
-
-#endif /* #if defined (ARM_MATH_DSP) */
-
-  while (blkCnt > 0U)
-  {
-    /* C[0]+jC[1] = A[0]+ j (-1) A[1] */
-    /* Calculate Complex Conjugate and then store the results in the destination buffer. */
-    /* Saturated to 0x7fffffff if the input is -1(0x80000000) */
-    *pDst++ = *pSrc++;
-    in = *pSrc++;
-    *pDst++ = (in == INT32_MIN) ? INT32_MAX : -in;
-
-    /* Decrement the loop counter */
-    blkCnt--;
-  }
-}
-
-/**
- * @} end of cmplx_conj group
- */
diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_dot_prod_f32.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_dot_prod_f32.c
deleted file mode 100644
index bfc352b..0000000
--- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_dot_prod_f32.c
+++ /dev/null
@@ -1,191 +0,0 @@
-/* ----------------------------------------------------------------------
- * Project:      CMSIS DSP Library
- * Title:        arm_cmplx_dot_prod_f32.c
- * Description:  Floating-point complex dot product
- *
- * $Date:        27. January 2017
- * $Revision:    V.1.5.1
- *
- * Target Processor: Cortex-M cores
- * -------------------------------------------------------------------- */
-/*
- * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved.
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the License); you may
- * not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "arm_math.h"
-
-/**
- * @ingroup groupCmplxMath
- */
-
-/**
- * @defgroup cmplx_dot_prod Complex Dot Product
- *
- * Computes the dot product of two complex vectors.
- * The vectors are multiplied element-by-element and then summed.
- *
- * The pSrcA points to the first complex input vector and
- * pSrcB points to the second complex input vector.
- * numSamples specifies the number of complex samples
- * and the data in each array is stored in an interleaved fashion
- * (real, imag, real, imag, ...).
- * Each array has a total of 2*numSamples values.
- *
- * The underlying algorithm is used:
- * 
- * realResult=0;
- * imagResult=0;
- * for(n=0; n
- *
- * There are separate functions for floating-point, Q15, and Q31 data types.
- */
-
-/**
- * @addtogroup cmplx_dot_prod
- * @{
- */
-
-/**
- * @brief  Floating-point complex dot product
- * @param  *pSrcA points to the first input vector
- * @param  *pSrcB points to the second input vector
- * @param  numSamples number of complex samples in each vector
- * @param  *realResult real part of the result returned here
- * @param  *imagResult imaginary part of the result returned here
- * @return none.
- */
-
-void arm_cmplx_dot_prod_f32(
-  float32_t * pSrcA,
-  float32_t * pSrcB,
-  uint32_t numSamples,
-  float32_t * realResult,
-  float32_t * imagResult)
-{
-  float32_t real_sum = 0.0f, imag_sum = 0.0f;    /* Temporary result storage */
-  float32_t a0,b0,c0,d0;
-
-#if defined (ARM_MATH_DSP)
-
-  /* Run the below code for Cortex-M4 and Cortex-M3 */
-  uint32_t blkCnt;                               /* loop counter */
-
-  /*loop Unrolling */
-  blkCnt = numSamples >> 2U;
-
-  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.
-   ** a second loop below computes the remaining 1 to 3 samples. */
-  while (blkCnt > 0U)
-  {
-      a0 = *pSrcA++;
-      b0 = *pSrcA++;
-      c0 = *pSrcB++;
-      d0 = *pSrcB++;
-
-      real_sum += a0 * c0;
-      imag_sum += a0 * d0;
-      real_sum -= b0 * d0;
-      imag_sum += b0 * c0;
-
-      a0 = *pSrcA++;
-      b0 = *pSrcA++;
-      c0 = *pSrcB++;
-      d0 = *pSrcB++;
-
-      real_sum += a0 * c0;
-      imag_sum += a0 * d0;
-      real_sum -= b0 * d0;
-      imag_sum += b0 * c0;
-
-      a0 = *pSrcA++;
-      b0 = *pSrcA++;
-      c0 = *pSrcB++;
-      d0 = *pSrcB++;
-
-      real_sum += a0 * c0;
-      imag_sum += a0 * d0;
-      real_sum -= b0 * d0;
-      imag_sum += b0 * c0;
-
-      a0 = *pSrcA++;
-      b0 = *pSrcA++;
-      c0 = *pSrcB++;
-      d0 = *pSrcB++;
-
-      real_sum += a0 * c0;
-      imag_sum += a0 * d0;
-      real_sum -= b0 * d0;
-      imag_sum += b0 * c0;
-
-      /* Decrement the loop counter */
-      blkCnt--;
-  }
-
-  /* If the numSamples is not a multiple of 4, compute any remaining output samples here.
-   ** No loop unrolling is used. */
-  blkCnt = numSamples & 0x3U;
-
-  while (blkCnt > 0U)
-  {
-      a0 = *pSrcA++;
-      b0 = *pSrcA++;
-      c0 = *pSrcB++;
-      d0 = *pSrcB++;
-
-      real_sum += a0 * c0;
-      imag_sum += a0 * d0;
-      real_sum -= b0 * d0;
-      imag_sum += b0 * c0;
-
-      /* Decrement the loop counter */
-      blkCnt--;
-  }
-
-#else
-
-  /* Run the below code for Cortex-M0 */
-
-  while (numSamples > 0U)
-  {
-      a0 = *pSrcA++;
-      b0 = *pSrcA++;
-      c0 = *pSrcB++;
-      d0 = *pSrcB++;
-
-      real_sum += a0 * c0;
-      imag_sum += a0 * d0;
-      real_sum -= b0 * d0;
-      imag_sum += b0 * c0;
-
-      /* Decrement the loop counter */
-      numSamples--;
-  }
-
-#endif /* #if defined (ARM_MATH_DSP) */
-
-  /* Store the real and imaginary results in the destination buffers */
-  *realResult = real_sum;
-  *imagResult = imag_sum;
-}
-
-/**
- * @} end of cmplx_dot_prod group
- */
diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_dot_prod_q15.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_dot_prod_q15.c
deleted file mode 100644
index 9e23a01..0000000
--- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_dot_prod_q15.c
+++ /dev/null
@@ -1,177 +0,0 @@
-/* ----------------------------------------------------------------------
- * Project:      CMSIS DSP Library
- * Title:        arm_cmplx_dot_prod_q15.c
- * Description:  Processing function for the Q15 Complex Dot product
- *
- * $Date:        27. January 2017
- * $Revision:    V.1.5.1
- *
- * Target Processor: Cortex-M cores
- * -------------------------------------------------------------------- */
-/*
- * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved.
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the License); you may
- * not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "arm_math.h"
-
-/**
- * @ingroup groupCmplxMath
- */
-
-/**
- * @addtogroup cmplx_dot_prod
- * @{
- */
-
-/**
- * @brief  Q15 complex dot product
- * @param  *pSrcA points to the first input vector
- * @param  *pSrcB points to the second input vector
- * @param  numSamples number of complex samples in each vector
- * @param  *realResult real part of the result returned here
- * @param  *imagResult imaginary part of the result returned here
- * @return none.
- *
- * Scaling and Overflow Behavior:
- * \par
- * The function is implemented using an internal 64-bit accumulator.
- * The intermediate 1.15 by 1.15 multiplications are performed with full precision and yield a 2.30 result.
- * These are accumulated in a 64-bit accumulator with 34.30 precision.
- * As a final step, the accumulators are converted to 8.24 format.
- * The return results realResult and imagResult are in 8.24 format.
- */
-
-void arm_cmplx_dot_prod_q15(
-  q15_t * pSrcA,
-  q15_t * pSrcB,
-  uint32_t numSamples,
-  q31_t * realResult,
-  q31_t * imagResult)
-{
-  q63_t real_sum = 0, imag_sum = 0;              /* Temporary result storage */
-  q15_t a0,b0,c0,d0;
-
-#if defined (ARM_MATH_DSP)
-
-  /* Run the below code for Cortex-M4 and Cortex-M3 */
-  uint32_t blkCnt;                               /* loop counter */
-
-
-  /*loop Unrolling */
-  blkCnt = numSamples >> 2U;
-
-  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.
-   ** a second loop below computes the remaining 1 to 3 samples. */
-  while (blkCnt > 0U)
-  {
-      a0 = *pSrcA++;
-      b0 = *pSrcA++;
-      c0 = *pSrcB++;
-      d0 = *pSrcB++;
-
-      real_sum += (q31_t)a0 * c0;
-      imag_sum += (q31_t)a0 * d0;
-      real_sum -= (q31_t)b0 * d0;
-      imag_sum += (q31_t)b0 * c0;
-
-      a0 = *pSrcA++;
-      b0 = *pSrcA++;
-      c0 = *pSrcB++;
-      d0 = *pSrcB++;
-
-      real_sum += (q31_t)a0 * c0;
-      imag_sum += (q31_t)a0 * d0;
-      real_sum -= (q31_t)b0 * d0;
-      imag_sum += (q31_t)b0 * c0;
-
-      a0 = *pSrcA++;
-      b0 = *pSrcA++;
-      c0 = *pSrcB++;
-      d0 = *pSrcB++;
-
-      real_sum += (q31_t)a0 * c0;
-      imag_sum += (q31_t)a0 * d0;
-      real_sum -= (q31_t)b0 * d0;
-      imag_sum += (q31_t)b0 * c0;
-
-      a0 = *pSrcA++;
-      b0 = *pSrcA++;
-      c0 = *pSrcB++;
-      d0 = *pSrcB++;
-
-      real_sum += (q31_t)a0 * c0;
-      imag_sum += (q31_t)a0 * d0;
-      real_sum -= (q31_t)b0 * d0;
-      imag_sum += (q31_t)b0 * c0;
-
-      /* Decrement the loop counter */
-      blkCnt--;
-  }
-
-  /* If the numSamples is not a multiple of 4, compute any remaining output samples here.
-   ** No loop unrolling is used. */
-  blkCnt = numSamples % 0x4U;
-
-  while (blkCnt > 0U)
-  {
-      a0 = *pSrcA++;
-      b0 = *pSrcA++;
-      c0 = *pSrcB++;
-      d0 = *pSrcB++;
-
-      real_sum += (q31_t)a0 * c0;
-      imag_sum += (q31_t)a0 * d0;
-      real_sum -= (q31_t)b0 * d0;
-      imag_sum += (q31_t)b0 * c0;
-
-      /* Decrement the loop counter */
-      blkCnt--;
-  }
-
-#else
-
-  /* Run the below code for Cortex-M0 */
-
-  while (numSamples > 0U)
-  {
-      a0 = *pSrcA++;
-      b0 = *pSrcA++;
-      c0 = *pSrcB++;
-      d0 = *pSrcB++;
-
-      real_sum += a0 * c0;
-      imag_sum += a0 * d0;
-      real_sum -= b0 * d0;
-      imag_sum += b0 * c0;
-
-
-      /* Decrement the loop counter */
-      numSamples--;
-  }
-
-#endif /* #if defined (ARM_MATH_DSP) */
-
-  /* Store the real and imaginary results in 8.24 format  */
-  /* Convert real data in 34.30 to 8.24 by 6 right shifts */
-  *realResult = (q31_t) (real_sum >> 6);
-  /* Convert imaginary data in 34.30 to 8.24 by 6 right shifts */
-  *imagResult = (q31_t) (imag_sum >> 6);
-}
-
-/**
- * @} end of cmplx_dot_prod group
- */
diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_dot_prod_q31.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_dot_prod_q31.c
deleted file mode 100644
index 6eb5b6e..0000000
--- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_dot_prod_q31.c
+++ /dev/null
@@ -1,175 +0,0 @@
-/* ----------------------------------------------------------------------
- * Project:      CMSIS DSP Library
- * Title:        arm_cmplx_dot_prod_q31.c
- * Description:  Q31 complex dot product
- *
- * $Date:        27. January 2017
- * $Revision:    V.1.5.1
- *
- * Target Processor: Cortex-M cores
- * -------------------------------------------------------------------- */
-/*
- * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved.
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the License); you may
- * not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "arm_math.h"
-
-/**
- * @ingroup groupCmplxMath
- */
-
-/**
- * @addtogroup cmplx_dot_prod
- * @{
- */
-
-/**
- * @brief  Q31 complex dot product
- * @param  *pSrcA points to the first input vector
- * @param  *pSrcB points to the second input vector
- * @param  numSamples number of complex samples in each vector
- * @param  *realResult real part of the result returned here
- * @param  *imagResult imaginary part of the result returned here
- * @return none.
- *
- * Scaling and Overflow Behavior:
- * \par
- * The function is implemented using an internal 64-bit accumulator.
- * The intermediate 1.31 by 1.31 multiplications are performed with 64-bit precision and then shifted to 16.48 format.
- * The internal real and imaginary accumulators are in 16.48 format and provide 15 guard bits.
- * Additions are nonsaturating and no overflow will occur as long as numSamples is less than 32768.
- * The return results realResult and imagResult are in 16.48 format.
- * Input down scaling is not required.
- */
-
-void arm_cmplx_dot_prod_q31(
-  q31_t * pSrcA,
-  q31_t * pSrcB,
-  uint32_t numSamples,
-  q63_t * realResult,
-  q63_t * imagResult)
-{
-  q63_t real_sum = 0, imag_sum = 0;              /* Temporary result storage */
-  q31_t a0,b0,c0,d0;
-
-#if defined (ARM_MATH_DSP)
-
-  /* Run the below code for Cortex-M4 and Cortex-M3 */
-  uint32_t blkCnt;                               /* loop counter */
-
-
-  /*loop Unrolling */
-  blkCnt = numSamples >> 2U;
-
-  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.
-   ** a second loop below computes the remaining 1 to 3 samples. */
-  while (blkCnt > 0U)
-  {
-      a0 = *pSrcA++;
-      b0 = *pSrcA++;
-      c0 = *pSrcB++;
-      d0 = *pSrcB++;
-
-      real_sum += ((q63_t)a0 * c0) >> 14;
-      imag_sum += ((q63_t)a0 * d0) >> 14;
-      real_sum -= ((q63_t)b0 * d0) >> 14;
-      imag_sum += ((q63_t)b0 * c0) >> 14;
-
-      a0 = *pSrcA++;
-      b0 = *pSrcA++;
-      c0 = *pSrcB++;
-      d0 = *pSrcB++;
-
-      real_sum += ((q63_t)a0 * c0) >> 14;
-      imag_sum += ((q63_t)a0 * d0) >> 14;
-      real_sum -= ((q63_t)b0 * d0) >> 14;
-      imag_sum += ((q63_t)b0 * c0) >> 14;
-
-      a0 = *pSrcA++;
-      b0 = *pSrcA++;
-      c0 = *pSrcB++;
-      d0 = *pSrcB++;
-
-      real_sum += ((q63_t)a0 * c0) >> 14;
-      imag_sum += ((q63_t)a0 * d0) >> 14;
-      real_sum -= ((q63_t)b0 * d0) >> 14;
-      imag_sum += ((q63_t)b0 * c0) >> 14;
-
-      a0 = *pSrcA++;
-      b0 = *pSrcA++;
-      c0 = *pSrcB++;
-      d0 = *pSrcB++;
-
-      real_sum += ((q63_t)a0 * c0) >> 14;
-      imag_sum += ((q63_t)a0 * d0) >> 14;
-      real_sum -= ((q63_t)b0 * d0) >> 14;
-      imag_sum += ((q63_t)b0 * c0) >> 14;
-
-      /* Decrement the loop counter */
-      blkCnt--;
-  }
-
-  /* If the numSamples  is not a multiple of 4, compute any remaining output samples here.
-   ** No loop unrolling is used. */
-  blkCnt = numSamples % 0x4U;
-
-  while (blkCnt > 0U)
-  {
-      a0 = *pSrcA++;
-      b0 = *pSrcA++;
-      c0 = *pSrcB++;
-      d0 = *pSrcB++;
-
-      real_sum += ((q63_t)a0 * c0) >> 14;
-      imag_sum += ((q63_t)a0 * d0) >> 14;
-      real_sum -= ((q63_t)b0 * d0) >> 14;
-      imag_sum += ((q63_t)b0 * c0) >> 14;
-
-      /* Decrement the loop counter */
-      blkCnt--;
-  }
-
-#else
-
-  /* Run the below code for Cortex-M0 */
-
-  while (numSamples > 0U)
-  {
-      a0 = *pSrcA++;
-      b0 = *pSrcA++;
-      c0 = *pSrcB++;
-      d0 = *pSrcB++;
-
-      real_sum += ((q63_t)a0 * c0) >> 14;
-      imag_sum += ((q63_t)a0 * d0) >> 14;
-      real_sum -= ((q63_t)b0 * d0) >> 14;
-      imag_sum += ((q63_t)b0 * c0) >> 14;
-
-      /* Decrement the loop counter */
-      numSamples--;
-  }
-
-#endif /* #if defined (ARM_MATH_DSP) */
-
-  /* Store the real and imaginary results in 16.48 format  */
-  *realResult = real_sum;
-  *imagResult = imag_sum;
-}
-
-/**
- * @} end of cmplx_dot_prod group
- */
diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mag_f32.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mag_f32.c
deleted file mode 100644
index 95aaf1e..0000000
--- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mag_f32.c
+++ /dev/null
@@ -1,153 +0,0 @@
-/* ----------------------------------------------------------------------
- * Project:      CMSIS DSP Library
- * Title:        arm_cmplx_mag_f32.c
- * Description:  Floating-point complex magnitude
- *
- * $Date:        27. January 2017
- * $Revision:    V.1.5.1
- *
- * Target Processor: Cortex-M cores
- * -------------------------------------------------------------------- */
-/*
- * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved.
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the License); you may
- * not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "arm_math.h"
-
-/**
- * @ingroup groupCmplxMath
- */
-
-/**
- * @defgroup cmplx_mag Complex Magnitude
- *
- * Computes the magnitude of the elements of a complex data vector.
- *
- * The pSrc points to the source data and
- * pDst points to the where the result should be written.
- * numSamples specifies the number of complex samples
- * in the input array and the data is stored in an interleaved fashion
- * (real, imag, real, imag, ...).
- * The input array has a total of 2*numSamples values;
- * the output array has a total of numSamples values.
- * The underlying algorithm is used:
- *
- * 
- * for(n=0; n
- *
- * There are separate functions for floating-point, Q15, and Q31 data types.
- */
-
-/**
- * @addtogroup cmplx_mag
- * @{
- */
-/**
- * @brief Floating-point complex magnitude.
- * @param[in]       *pSrc points to complex input buffer
- * @param[out]      *pDst points to real output buffer
- * @param[in]       numSamples number of complex samples in the input vector
- * @return none.
- *
- */
-
-
-void arm_cmplx_mag_f32(
-  float32_t * pSrc,
-  float32_t * pDst,
-  uint32_t numSamples)
-{
-  float32_t realIn, imagIn;                      /* Temporary variables to hold input values */
-
-#if defined (ARM_MATH_DSP)
-
-  /* Run the below code for Cortex-M4 and Cortex-M3 */
-  uint32_t blkCnt;                               /* loop counter */
-
-  /*loop Unrolling */
-  blkCnt = numSamples >> 2U;
-
-  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.
-   ** a second loop below computes the remaining 1 to 3 samples. */
-  while (blkCnt > 0U)
-  {
-
-    /* C[0] = sqrt(A[0] * A[0] + A[1] * A[1]) */
-    realIn = *pSrc++;
-    imagIn = *pSrc++;
-    /* store the result in the destination buffer. */
-    arm_sqrt_f32((realIn * realIn) + (imagIn * imagIn), pDst++);
-
-    realIn = *pSrc++;
-    imagIn = *pSrc++;
-    arm_sqrt_f32((realIn * realIn) + (imagIn * imagIn), pDst++);
-
-    realIn = *pSrc++;
-    imagIn = *pSrc++;
-    arm_sqrt_f32((realIn * realIn) + (imagIn * imagIn), pDst++);
-
-    realIn = *pSrc++;
-    imagIn = *pSrc++;
-    arm_sqrt_f32((realIn * realIn) + (imagIn * imagIn), pDst++);
-
-
-    /* Decrement the loop counter */
-    blkCnt--;
-  }
-
-  /* If the numSamples is not a multiple of 4, compute any remaining output samples here.
-   ** No loop unrolling is used. */
-  blkCnt = numSamples % 0x4U;
-
-  while (blkCnt > 0U)
-  {
-    /* C[0] = sqrt(A[0] * A[0] + A[1] * A[1]) */
-    realIn = *pSrc++;
-    imagIn = *pSrc++;
-    /* store the result in the destination buffer. */
-    arm_sqrt_f32((realIn * realIn) + (imagIn * imagIn), pDst++);
-
-    /* Decrement the loop counter */
-    blkCnt--;
-  }
-
-#else
-
-  /* Run the below code for Cortex-M0 */
-
-  while (numSamples > 0U)
-  {
-    /* out = sqrt((real * real) + (imag * imag)) */
-    realIn = *pSrc++;
-    imagIn = *pSrc++;
-    /* store the result in the destination buffer. */
-    arm_sqrt_f32((realIn * realIn) + (imagIn * imagIn), pDst++);
-
-    /* Decrement the loop counter */
-    numSamples--;
-  }
-
-#endif /* #if defined (ARM_MATH_DSP) */
-
-}
-
-/**
- * @} end of cmplx_mag group
- */
diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mag_q15.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mag_q15.c
deleted file mode 100644
index 03d9b2a..0000000
--- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mag_q15.c
+++ /dev/null
@@ -1,141 +0,0 @@
-/* ----------------------------------------------------------------------
- * Project:      CMSIS DSP Library
- * Title:        arm_cmplx_mag_q15.c
- * Description:  Q15 complex magnitude
- *
- * $Date:        27. January 2017
- * $Revision:    V.1.5.1
- *
- * Target Processor: Cortex-M cores
- * -------------------------------------------------------------------- */
-/*
- * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved.
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the License); you may
- * not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "arm_math.h"
-
-/**
- * @ingroup groupCmplxMath
- */
-
-/**
- * @addtogroup cmplx_mag
- * @{
- */
-
-
-/**
- * @brief  Q15 complex magnitude
- * @param  *pSrc points to the complex input vector
- * @param  *pDst points to the real output vector
- * @param  numSamples number of complex samples in the input vector
- * @return none.
- *
- * Scaling and Overflow Behavior:
- * \par
- * The function implements 1.15 by 1.15 multiplications and finally output is converted into 2.14 format.
- */
-
-void arm_cmplx_mag_q15(
-  q15_t * pSrc,
-  q15_t * pDst,
-  uint32_t numSamples)
-{
-  q31_t acc0, acc1;                              /* Accumulators */
-
-#if defined (ARM_MATH_DSP)
-
-  /* Run the below code for Cortex-M4 and Cortex-M3 */
-  uint32_t blkCnt;                               /* loop counter */
-  q31_t in1, in2, in3, in4;
-  q31_t acc2, acc3;
-
-
-  /*loop Unrolling */
-  blkCnt = numSamples >> 2U;
-
-  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.
-   ** a second loop below computes the remaining 1 to 3 samples. */
-  while (blkCnt > 0U)
-  {
-
-    /* C[0] = sqrt(A[0] * A[0] + A[1] * A[1]) */
-    in1 = *__SIMD32(pSrc)++;
-    in2 = *__SIMD32(pSrc)++;
-    in3 = *__SIMD32(pSrc)++;
-    in4 = *__SIMD32(pSrc)++;
-
-    acc0 = __SMUAD(in1, in1);
-    acc1 = __SMUAD(in2, in2);
-    acc2 = __SMUAD(in3, in3);
-    acc3 = __SMUAD(in4, in4);
-
-    /* store the result in 2.14 format in the destination buffer. */
-    arm_sqrt_q15((q15_t) ((acc0) >> 17), pDst++);
-    arm_sqrt_q15((q15_t) ((acc1) >> 17), pDst++);
-    arm_sqrt_q15((q15_t) ((acc2) >> 17), pDst++);
-    arm_sqrt_q15((q15_t) ((acc3) >> 17), pDst++);
-
-    /* Decrement the loop counter */
-    blkCnt--;
-  }
-
-  /* If the numSamples is not a multiple of 4, compute any remaining output samples here.
-   ** No loop unrolling is used. */
-  blkCnt = numSamples % 0x4U;
-
-  while (blkCnt > 0U)
-  {
-    /* C[0] = sqrt(A[0] * A[0] + A[1] * A[1]) */
-    in1 = *__SIMD32(pSrc)++;
-    acc0 = __SMUAD(in1, in1);
-
-    /* store the result in 2.14 format in the destination buffer. */
-    arm_sqrt_q15((q15_t) (acc0 >> 17), pDst++);
-
-    /* Decrement the loop counter */
-    blkCnt--;
-  }
-
-#else
-
-  /* Run the below code for Cortex-M0 */
-  q15_t real, imag;                              /* Temporary variables to hold input values */
-
-  while (numSamples > 0U)
-  {
-    /* out = sqrt(real * real + imag * imag) */
-    real = *pSrc++;
-    imag = *pSrc++;
-
-    acc0 = (real * real);
-    acc1 = (imag * imag);
-
-    /* store the result in 2.14 format in the destination buffer. */
-    arm_sqrt_q15((q15_t) (((q63_t) acc0 + acc1) >> 17), pDst++);
-
-    /* Decrement the loop counter */
-    numSamples--;
-  }
-
-#endif /* #if defined (ARM_MATH_DSP) */
-
-}
-
-/**
- * @} end of cmplx_mag group
- */
diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mag_q31.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mag_q31.c
deleted file mode 100644
index 830ecb9..0000000
--- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mag_q31.c
+++ /dev/null
@@ -1,173 +0,0 @@
-/* ----------------------------------------------------------------------
- * Project:      CMSIS DSP Library
- * Title:        arm_cmplx_mag_q31.c
- * Description:  Q31 complex magnitude
- *
- * $Date:        27. January 2017
- * $Revision:    V.1.5.1
- *
- * Target Processor: Cortex-M cores
- * -------------------------------------------------------------------- */
-/*
- * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved.
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the License); you may
- * not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "arm_math.h"
-
-/**
- * @ingroup groupCmplxMath
- */
-
-/**
- * @addtogroup cmplx_mag
- * @{
- */
-
-/**
- * @brief  Q31 complex magnitude
- * @param  *pSrc points to the complex input vector
- * @param  *pDst points to the real output vector
- * @param  numSamples number of complex samples in the input vector
- * @return none.
- *
- * Scaling and Overflow Behavior:
- * \par
- * The function implements 1.31 by 1.31 multiplications and finally output is converted into 2.30 format.
- * Input down scaling is not required.
- */
-
-void arm_cmplx_mag_q31(
-  q31_t * pSrc,
-  q31_t * pDst,
-  uint32_t numSamples)
-{
-  q31_t real, imag;                              /* Temporary variables to hold input values */
-  q31_t acc0, acc1;                              /* Accumulators */
-  uint32_t blkCnt;                               /* loop counter */
-
-#if defined (ARM_MATH_DSP)
-
-  /* Run the below code for Cortex-M4 and Cortex-M3 */
-  q31_t real1, real2, imag1, imag2;              /* Temporary variables to hold input values */
-  q31_t out1, out2, out3, out4;                  /* Accumulators */
-  q63_t mul1, mul2, mul3, mul4;                  /* Temporary variables */
-
-
-  /*loop Unrolling */
-  blkCnt = numSamples >> 2U;
-
-  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.
-   ** a second loop below computes the remaining 1 to 3 samples. */
-  while (blkCnt > 0U)
-  {
-    /* read complex input from source buffer */
-    real1 = pSrc[0];
-    imag1 = pSrc[1];
-    real2 = pSrc[2];
-    imag2 = pSrc[3];
-
-    /* calculate power of input values */
-    mul1 = (q63_t) real1 *real1;
-    mul2 = (q63_t) imag1 *imag1;
-    mul3 = (q63_t) real2 *real2;
-    mul4 = (q63_t) imag2 *imag2;
-
-    /* get the result to 3.29 format */
-    out1 = (q31_t) (mul1 >> 33);
-    out2 = (q31_t) (mul2 >> 33);
-    out3 = (q31_t) (mul3 >> 33);
-    out4 = (q31_t) (mul4 >> 33);
-
-    /* add real and imaginary accumulators */
-    out1 = out1 + out2;
-    out3 = out3 + out4;
-
-    /* read complex input from source buffer */
-    real1 = pSrc[4];
-    imag1 = pSrc[5];
-    real2 = pSrc[6];
-    imag2 = pSrc[7];
-
-    /* calculate square root */
-    arm_sqrt_q31(out1, &pDst[0]);
-
-    /* calculate power of input values */
-    mul1 = (q63_t) real1 *real1;
-
-    /* calculate square root */
-    arm_sqrt_q31(out3, &pDst[1]);
-
-    /* calculate power of input values */
-    mul2 = (q63_t) imag1 *imag1;
-    mul3 = (q63_t) real2 *real2;
-    mul4 = (q63_t) imag2 *imag2;
-
-    /* get the result to 3.29 format */
-    out1 = (q31_t) (mul1 >> 33);
-    out2 = (q31_t) (mul2 >> 33);
-    out3 = (q31_t) (mul3 >> 33);
-    out4 = (q31_t) (mul4 >> 33);
-
-    /* add real and imaginary accumulators */
-    out1 = out1 + out2;
-    out3 = out3 + out4;
-
-    /* calculate square root */
-    arm_sqrt_q31(out1, &pDst[2]);
-
-    /* increment destination by 8 to process next samples */
-    pSrc += 8U;
-
-    /* calculate square root */
-    arm_sqrt_q31(out3, &pDst[3]);
-
-    /* increment destination by 4 to process next samples */
-    pDst += 4U;
-
-    /* Decrement the loop counter */
-    blkCnt--;
-  }
-
-  /* If the numSamples is not a multiple of 4, compute any remaining output samples here.
-   ** No loop unrolling is used. */
-  blkCnt = numSamples % 0x4U;
-
-#else
-
-  /* Run the below code for Cortex-M0 */
-  blkCnt = numSamples;
-
-#endif /* #if defined (ARM_MATH_DSP) */
-
-  while (blkCnt > 0U)
-  {
-    /* C[0] = sqrt(A[0] * A[0] + A[1] * A[1]) */
-    real = *pSrc++;
-    imag = *pSrc++;
-    acc0 = (q31_t) (((q63_t) real * real) >> 33);
-    acc1 = (q31_t) (((q63_t) imag * imag) >> 33);
-    /* store the result in 2.30 format in the destination buffer. */
-    arm_sqrt_q31(acc0 + acc1, pDst++);
-
-    /* Decrement the loop counter */
-    blkCnt--;
-  }
-}
-
-/**
- * @} end of cmplx_mag group
- */
diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mag_squared_f32.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mag_squared_f32.c
deleted file mode 100644
index 59127a2..0000000
--- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mag_squared_f32.c
+++ /dev/null
@@ -1,204 +0,0 @@
-/* ----------------------------------------------------------------------
- * Project:      CMSIS DSP Library
- * Title:        arm_cmplx_mag_squared_f32.c
- * Description:  Floating-point complex magnitude squared
- *
- * $Date:        27. January 2017
- * $Revision:    V.1.5.1
- *
- * Target Processor: Cortex-M cores
- * -------------------------------------------------------------------- */
-/*
- * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved.
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the License); you may
- * not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "arm_math.h"
-
-/**
- * @ingroup groupCmplxMath
- */
-
-/**
- * @defgroup cmplx_mag_squared Complex Magnitude Squared
- *
- * Computes the magnitude squared of the elements of a complex data vector.
- *
- * The pSrc points to the source data and
- * pDst points to the where the result should be written.
- * numSamples specifies the number of complex samples
- * in the input array and the data is stored in an interleaved fashion
- * (real, imag, real, imag, ...).
- * The input array has a total of 2*numSamples values;
- * the output array has a total of numSamples values.
- *
- * The underlying algorithm is used:
- *
- * 
- * for(n=0; n
- *
- * There are separate functions for floating-point, Q15, and Q31 data types.
- */
-
-/**
- * @addtogroup cmplx_mag_squared
- * @{
- */
-
-
-/**
- * @brief  Floating-point complex magnitude squared
- * @param[in]  *pSrc points to the complex input vector
- * @param[out]  *pDst points to the real output vector
- * @param[in]  numSamples number of complex samples in the input vector
- * @return none.
- */
-
-void arm_cmplx_mag_squared_f32(
-  float32_t * pSrc,
-  float32_t * pDst,
-  uint32_t numSamples)
-{
-  float32_t real, imag;                          /* Temporary variables to store real and imaginary values */
-  uint32_t blkCnt;                               /* loop counter */
-
-#if defined (ARM_MATH_DSP)
-  float32_t real1, real2, real3, real4;          /* Temporary variables to hold real values */
-  float32_t imag1, imag2, imag3, imag4;          /* Temporary variables to hold imaginary values */
-  float32_t mul1, mul2, mul3, mul4;              /* Temporary variables */
-  float32_t mul5, mul6, mul7, mul8;              /* Temporary variables */
-  float32_t out1, out2, out3, out4;              /* Temporary variables to hold output values */
-
-  /*loop Unrolling */
-  blkCnt = numSamples >> 2U;
-
-  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.
-   ** a second loop below computes the remaining 1 to 3 samples. */
-  while (blkCnt > 0U)
-  {
-    /* C[0] = (A[0] * A[0] + A[1] * A[1]) */
-    /* read real input sample from source buffer */
-    real1 = pSrc[0];
-    /* read imaginary input sample from source buffer */
-    imag1 = pSrc[1];
-
-    /* calculate power of real value */
-    mul1 = real1 * real1;
-
-    /* read real input sample from source buffer */
-    real2 = pSrc[2];
-
-    /* calculate power of imaginary value */
-    mul2 = imag1 * imag1;
-
-    /* read imaginary input sample from source buffer */
-    imag2 = pSrc[3];
-
-    /* calculate power of real value */
-    mul3 = real2 * real2;
-
-    /* read real input sample from source buffer */
-    real3 = pSrc[4];
-
-    /* calculate power of imaginary value */
-    mul4 = imag2 * imag2;
-
-    /* read imaginary input sample from source buffer */
-    imag3 = pSrc[5];
-
-    /* calculate power of real value */
-    mul5 = real3 * real3;
-    /* calculate power of imaginary value */
-    mul6 = imag3 * imag3;
-
-    /* read real input sample from source buffer */
-    real4 = pSrc[6];
-
-    /* accumulate real and imaginary powers */
-    out1 = mul1 + mul2;
-
-    /* read imaginary input sample from source buffer */
-    imag4 = pSrc[7];
-
-    /* accumulate real and imaginary powers */
-    out2 = mul3 + mul4;
-
-    /* calculate power of real value */
-    mul7 = real4 * real4;
-    /* calculate power of imaginary value */
-    mul8 = imag4 * imag4;
-
-    /* store output to destination */
-    pDst[0] = out1;
-
-    /* accumulate real and imaginary powers */
-    out3 = mul5 + mul6;
-
-    /* store output to destination */
-    pDst[1] = out2;
-
-    /* accumulate real and imaginary powers */
-    out4 = mul7 + mul8;
-
-    /* store output to destination */
-    pDst[2] = out3;
-
-    /* increment destination pointer by 8 to process next samples */
-    pSrc += 8U;
-
-    /* store output to destination */
-    pDst[3] = out4;
-
-    /* increment destination pointer by 4 to process next samples */
-    pDst += 4U;
-
-    /* Decrement the loop counter */
-    blkCnt--;
-  }
-
-  /* If the numSamples is not a multiple of 4, compute any remaining output samples here.
-   ** No loop unrolling is used. */
-  blkCnt = numSamples % 0x4U;
-
-#else
-
-  /* Run the below code for Cortex-M0 */
-
-  blkCnt = numSamples;
-
-#endif /* #if defined (ARM_MATH_DSP) */
-
-  while (blkCnt > 0U)
-  {
-    /* C[0] = (A[0] * A[0] + A[1] * A[1]) */
-    real = *pSrc++;
-    imag = *pSrc++;
-
-    /* out = (real * real) + (imag * imag) */
-    /* store the result in the destination buffer. */
-    *pDst++ = (real * real) + (imag * imag);
-
-    /* Decrement the loop counter */
-    blkCnt--;
-  }
-}
-
-/**
- * @} end of cmplx_mag_squared group
- */
diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mag_squared_q15.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mag_squared_q15.c
deleted file mode 100644
index 3f740c3..0000000
--- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mag_squared_q15.c
+++ /dev/null
@@ -1,136 +0,0 @@
-/* ----------------------------------------------------------------------
- * Project:      CMSIS DSP Library
- * Title:        arm_cmplx_mag_squared_q15.c
- * Description:  Q15 complex magnitude squared
- *
- * $Date:        27. January 2017
- * $Revision:    V.1.5.1
- *
- * Target Processor: Cortex-M cores
- * -------------------------------------------------------------------- */
-/*
- * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved.
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the License); you may
- * not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "arm_math.h"
-
-/**
- * @ingroup groupCmplxMath
- */
-
-/**
- * @addtogroup cmplx_mag_squared
- * @{
- */
-
-/**
- * @brief  Q15 complex magnitude squared
- * @param  *pSrc points to the complex input vector
- * @param  *pDst points to the real output vector
- * @param  numSamples number of complex samples in the input vector
- * @return none.
- *
- * Scaling and Overflow Behavior:
- * \par
- * The function implements 1.15 by 1.15 multiplications and finally output is converted into 3.13 format.
- */
-
-void arm_cmplx_mag_squared_q15(
-  q15_t * pSrc,
-  q15_t * pDst,
-  uint32_t numSamples)
-{
-  q31_t acc0, acc1;                              /* Accumulators */
-
-#if defined (ARM_MATH_DSP)
-
-  /* Run the below code for Cortex-M4 and Cortex-M3 */
-  uint32_t blkCnt;                               /* loop counter */
-  q31_t in1, in2, in3, in4;
-  q31_t acc2, acc3;
-
-  /*loop Unrolling */
-  blkCnt = numSamples >> 2U;
-
-  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.
-   ** a second loop below computes the remaining 1 to 3 samples. */
-  while (blkCnt > 0U)
-  {
-    /* C[0] = (A[0] * A[0] + A[1] * A[1]) */
-    in1 = *__SIMD32(pSrc)++;
-    in2 = *__SIMD32(pSrc)++;
-    in3 = *__SIMD32(pSrc)++;
-    in4 = *__SIMD32(pSrc)++;
-
-    acc0 = __SMUAD(in1, in1);
-    acc1 = __SMUAD(in2, in2);
-    acc2 = __SMUAD(in3, in3);
-    acc3 = __SMUAD(in4, in4);
-
-    /* store the result in 3.13 format in the destination buffer. */
-    *pDst++ = (q15_t) (acc0 >> 17);
-    *pDst++ = (q15_t) (acc1 >> 17);
-    *pDst++ = (q15_t) (acc2 >> 17);
-    *pDst++ = (q15_t) (acc3 >> 17);
-
-    /* Decrement the loop counter */
-    blkCnt--;
-  }
-
-  /* If the numSamples is not a multiple of 4, compute any remaining output samples here.
-   ** No loop unrolling is used. */
-  blkCnt = numSamples % 0x4U;
-
-  while (blkCnt > 0U)
-  {
-    /* C[0] = (A[0] * A[0] + A[1] * A[1]) */
-    in1 = *__SIMD32(pSrc)++;
-    acc0 = __SMUAD(in1, in1);
-
-    /* store the result in 3.13 format in the destination buffer. */
-    *pDst++ = (q15_t) (acc0 >> 17);
-
-    /* Decrement the loop counter */
-    blkCnt--;
-  }
-
-#else
-
-  /* Run the below code for Cortex-M0 */
-  q15_t real, imag;                              /* Temporary variables to store real and imaginary values */
-
-  while (numSamples > 0U)
-  {
-    /* out = ((real * real) + (imag * imag)) */
-    real = *pSrc++;
-    imag = *pSrc++;
-    acc0 = (real * real);
-    acc1 = (imag * imag);
-    /* store the result in 3.13 format in the destination buffer. */
-    *pDst++ = (q15_t) (((q63_t) acc0 + acc1) >> 17);
-
-    /* Decrement the loop counter */
-    numSamples--;
-  }
-
-#endif /* #if defined (ARM_MATH_DSP) */
-
-}
-
-/**
- * @} end of cmplx_mag_squared group
- */
diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mag_squared_q31.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mag_squared_q31.c
deleted file mode 100644
index c2b2c50..0000000
--- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mag_squared_q31.c
+++ /dev/null
@@ -1,149 +0,0 @@
-/* ----------------------------------------------------------------------
- * Project:      CMSIS DSP Library
- * Title:        arm_cmplx_mag_squared_q31.c
- * Description:  Q31 complex magnitude squared
- *
- * $Date:        27. January 2017
- * $Revision:    V.1.5.1
- *
- * Target Processor: Cortex-M cores
- * -------------------------------------------------------------------- */
-/*
- * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved.
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the License); you may
- * not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "arm_math.h"
-
-/**
- * @ingroup groupCmplxMath
- */
-
-/**
- * @addtogroup cmplx_mag_squared
- * @{
- */
-
-
-/**
- * @brief  Q31 complex magnitude squared
- * @param  *pSrc points to the complex input vector
- * @param  *pDst points to the real output vector
- * @param  numSamples number of complex samples in the input vector
- * @return none.
- *
- * Scaling and Overflow Behavior:
- * \par
- * The function implements 1.31 by 1.31 multiplications and finally output is converted into 3.29 format.
- * Input down scaling is not required.
- */
-
-void arm_cmplx_mag_squared_q31(
-  q31_t * pSrc,
-  q31_t * pDst,
-  uint32_t numSamples)
-{
-  q31_t real, imag;                              /* Temporary variables to store real and imaginary values */
-  q31_t acc0, acc1;                              /* Accumulators */
-
-#if defined (ARM_MATH_DSP)
-
-  /* Run the below code for Cortex-M4 and Cortex-M3 */
-  uint32_t blkCnt;                               /* loop counter */
-
-  /* loop Unrolling */
-  blkCnt = numSamples >> 2U;
-
-  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.
-   ** a second loop below computes the remaining 1 to 3 samples. */
-  while (blkCnt > 0U)
-  {
-    /* C[0] = (A[0] * A[0] + A[1] * A[1]) */
-    real = *pSrc++;
-    imag = *pSrc++;
-    acc0 = (q31_t) (((q63_t) real * real) >> 33);
-    acc1 = (q31_t) (((q63_t) imag * imag) >> 33);
-    /* store the result in 3.29 format in the destination buffer. */
-    *pDst++ = acc0 + acc1;
-
-    real = *pSrc++;
-    imag = *pSrc++;
-    acc0 = (q31_t) (((q63_t) real * real) >> 33);
-    acc1 = (q31_t) (((q63_t) imag * imag) >> 33);
-    /* store the result in 3.29 format in the destination buffer. */
-    *pDst++ = acc0 + acc1;
-
-    real = *pSrc++;
-    imag = *pSrc++;
-    acc0 = (q31_t) (((q63_t) real * real) >> 33);
-    acc1 = (q31_t) (((q63_t) imag * imag) >> 33);
-    /* store the result in 3.29 format in the destination buffer. */
-    *pDst++ = acc0 + acc1;
-
-    real = *pSrc++;
-    imag = *pSrc++;
-    acc0 = (q31_t) (((q63_t) real * real) >> 33);
-    acc1 = (q31_t) (((q63_t) imag * imag) >> 33);
-    /* store the result in 3.29 format in the destination buffer. */
-    *pDst++ = acc0 + acc1;
-
-    /* Decrement the loop counter */
-    blkCnt--;
-  }
-
-  /* If the numSamples is not a multiple of 4, compute any remaining output samples here.
-   ** No loop unrolling is used. */
-  blkCnt = numSamples % 0x4U;
-
-  while (blkCnt > 0U)
-  {
-    /* C[0] = (A[0] * A[0] + A[1] * A[1]) */
-    real = *pSrc++;
-    imag = *pSrc++;
-    acc0 = (q31_t) (((q63_t) real * real) >> 33);
-    acc1 = (q31_t) (((q63_t) imag * imag) >> 33);
-    /* store the result in 3.29 format in the destination buffer. */
-    *pDst++ = acc0 + acc1;
-
-    /* Decrement the loop counter */
-    blkCnt--;
-  }
-
-#else
-
-  /* Run the below code for Cortex-M0 */
-
-  while (numSamples > 0U)
-  {
-    /* out = ((real * real) + (imag * imag)) */
-    real = *pSrc++;
-    imag = *pSrc++;
-    acc0 = (q31_t) (((q63_t) real * real) >> 33);
-    acc1 = (q31_t) (((q63_t) imag * imag) >> 33);
-    /* store the result in 3.29 format in the destination buffer. */
-    *pDst++ = acc0 + acc1;
-
-    /* Decrement the loop counter */
-    numSamples--;
-  }
-
-#endif /* #if defined (ARM_MATH_DSP) */
-
-}
-
-/**
- * @} end of cmplx_mag_squared group
- */
diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mult_cmplx_f32.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mult_cmplx_f32.c
deleted file mode 100644
index 3717591..0000000
--- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mult_cmplx_f32.c
+++ /dev/null
@@ -1,196 +0,0 @@
-/* ----------------------------------------------------------------------
- * Project:      CMSIS DSP Library
- * Title:        arm_cmplx_mult_cmplx_f32.c
- * Description:  Floating-point complex-by-complex multiplication
- *
- * $Date:        27. January 2017
- * $Revision:    V.1.5.1
- *
- * Target Processor: Cortex-M cores
- * -------------------------------------------------------------------- */
-/*
- * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved.
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the License); you may
- * not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "arm_math.h"
-
-/**
- * @ingroup groupCmplxMath
- */
-
-/**
- * @defgroup CmplxByCmplxMult Complex-by-Complex Multiplication
- *
- * Multiplies a complex vector by another complex vector and generates a complex result.
- * The data in the complex arrays is stored in an interleaved fashion
- * (real, imag, real, imag, ...).
- * The parameter numSamples represents the number of complex
- * samples processed.  The complex arrays have a total of 2*numSamples
- * real values.
- *
- * The underlying algorithm is used:
- *
- * 
- * for(n=0; n
- *
- * There are separate functions for floating-point, Q15, and Q31 data types.
- */
-
-/**
- * @addtogroup CmplxByCmplxMult
- * @{
- */
-
-
-/**
- * @brief  Floating-point complex-by-complex multiplication
- * @param[in]  *pSrcA points to the first input vector
- * @param[in]  *pSrcB points to the second input vector
- * @param[out]  *pDst  points to the output vector
- * @param[in]  numSamples number of complex samples in each vector
- * @return none.
- */
-
-void arm_cmplx_mult_cmplx_f32(
-  float32_t * pSrcA,
-  float32_t * pSrcB,
-  float32_t * pDst,
-  uint32_t numSamples)
-{
-  float32_t a1, b1, c1, d1;                      /* Temporary variables to store real and imaginary values */
-  uint32_t blkCnt;                               /* loop counters */
-
-#if defined (ARM_MATH_DSP)
-
-  /* Run the below code for Cortex-M4 and Cortex-M3 */
-  float32_t a2, b2, c2, d2;                      /* Temporary variables to store real and imaginary values */
-  float32_t acc1, acc2, acc3, acc4;
-
-
-  /* loop Unrolling */
-  blkCnt = numSamples >> 2U;
-
-  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.
-   ** a second loop below computes the remaining 1 to 3 samples. */
-  while (blkCnt > 0U)
-  {
-    /* C[2 * i] = A[2 * i] * B[2 * i] - A[2 * i + 1] * B[2 * i + 1].  */
-    /* C[2 * i + 1] = A[2 * i] * B[2 * i + 1] + A[2 * i + 1] * B[2 * i].  */
-    a1 = *pSrcA;                /* A[2 * i] */
-    c1 = *pSrcB;                /* B[2 * i] */
-
-    b1 = *(pSrcA + 1);          /* A[2 * i + 1] */
-    acc1 = a1 * c1;             /* acc1 = A[2 * i] * B[2 * i] */
-
-    a2 = *(pSrcA + 2);          /* A[2 * i + 2] */
-    acc2 = (b1 * c1);           /* acc2 = A[2 * i + 1] * B[2 * i] */
-
-    d1 = *(pSrcB + 1);          /* B[2 * i + 1] */
-    c2 = *(pSrcB + 2);          /* B[2 * i + 2] */
-    acc1 -= b1 * d1;            /* acc1 =      A[2 * i] * B[2 * i] - A[2 * i + 1] * B[2 * i + 1] */
-
-    d2 = *(pSrcB + 3);          /* B[2 * i + 3] */
-    acc3 = a2 * c2;             /* acc3 =       A[2 * i + 2] * B[2 * i + 2] */
-
-    b2 = *(pSrcA + 3);          /* A[2 * i + 3] */
-    acc2 += (a1 * d1);          /* acc2 =      A[2 * i + 1] * B[2 * i] + A[2 * i] * B[2 * i + 1] */
-
-    a1 = *(pSrcA + 4);          /* A[2 * i + 4] */
-    acc4 = (a2 * d2);           /* acc4 =   A[2 * i + 2] * B[2 * i + 3] */
-
-    c1 = *(pSrcB + 4);          /* B[2 * i + 4] */
-    acc3 -= (b2 * d2);          /* acc3 =       A[2 * i + 2] * B[2 * i + 2] - A[2 * i + 3] * B[2 * i + 3] */
-    *pDst = acc1;               /* C[2 * i] = A[2 * i] * B[2 * i] - A[2 * i + 1] * B[2 * i + 1] */
-
-    b1 = *(pSrcA + 5);          /* A[2 * i + 5] */
-    acc4 += b2 * c2;            /* acc4 =   A[2 * i + 2] * B[2 * i + 3] + A[2 * i + 3] * B[2 * i + 2] */
-
-    *(pDst + 1) = acc2;         /* C[2 * i + 1] = A[2 * i + 1] * B[2 * i] + A[2 * i] * B[2 * i + 1]  */
-    acc1 = (a1 * c1);
-
-    d1 = *(pSrcB + 5);
-    acc2 = (b1 * c1);
-
-    *(pDst + 2) = acc3;
-    *(pDst + 3) = acc4;
-
-    a2 = *(pSrcA + 6);
-    acc1 -= (b1 * d1);
-
-    c2 = *(pSrcB + 6);
-    acc2 += (a1 * d1);
-
-    b2 = *(pSrcA + 7);
-    acc3 = (a2 * c2);
-
-    d2 = *(pSrcB + 7);
-    acc4 = (b2 * c2);
-
-    *(pDst + 4) = acc1;
-    pSrcA += 8U;
-
-    acc3 -= (b2 * d2);
-    acc4 += (a2 * d2);
-
-    *(pDst + 5) = acc2;
-    pSrcB += 8U;
-
-    *(pDst + 6) = acc3;
-    *(pDst + 7) = acc4;
-
-    pDst += 8U;
-
-    /* Decrement the numSamples loop counter */
-    blkCnt--;
-  }
-
-  /* If the numSamples is not a multiple of 4, compute any remaining output samples here.
-   ** No loop unrolling is used. */
-  blkCnt = numSamples % 0x4U;
-
-#else
-
-  /* Run the below code for Cortex-M0 */
-  blkCnt = numSamples;
-
-#endif /* #if defined (ARM_MATH_DSP) */
-
-  while (blkCnt > 0U)
-  {
-    /* C[2 * i] = A[2 * i] * B[2 * i] - A[2 * i + 1] * B[2 * i + 1].  */
-    /* C[2 * i + 1] = A[2 * i] * B[2 * i + 1] + A[2 * i + 1] * B[2 * i].  */
-    a1 = *pSrcA++;
-    b1 = *pSrcA++;
-    c1 = *pSrcB++;
-    d1 = *pSrcB++;
-
-    /* store the result in the destination buffer. */
-    *pDst++ = (a1 * c1) - (b1 * d1);
-    *pDst++ = (a1 * d1) + (b1 * c1);
-
-    /* Decrement the numSamples loop counter */
-    blkCnt--;
-  }
-}
-
-/**
- * @} end of CmplxByCmplxMult group
- */
diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mult_cmplx_q15.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mult_cmplx_q15.c
deleted file mode 100644
index 2869837..0000000
--- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mult_cmplx_q15.c
+++ /dev/null
@@ -1,181 +0,0 @@
-/* ----------------------------------------------------------------------
- * Project:      CMSIS DSP Library
- * Title:        arm_cmplx_mult_cmplx_q15.c
- * Description:  Q15 complex-by-complex multiplication
- *
- * $Date:        27. January 2017
- * $Revision:    V.1.5.1
- *
- * Target Processor: Cortex-M cores
- * -------------------------------------------------------------------- */
-/*
- * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved.
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the License); you may
- * not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "arm_math.h"
-
-/**
- * @ingroup groupCmplxMath
- */
-
-/**
- * @addtogroup CmplxByCmplxMult
- * @{
- */
-
-/**
- * @brief  Q15 complex-by-complex multiplication
- * @param[in]  *pSrcA points to the first input vector
- * @param[in]  *pSrcB points to the second input vector
- * @param[out]  *pDst  points to the output vector
- * @param[in]  numSamples number of complex samples in each vector
- * @return none.
- *
- * Scaling and Overflow Behavior:
- * \par
- * The function implements 1.15 by 1.15 multiplications and finally output is converted into 3.13 format.
- */
-
-void arm_cmplx_mult_cmplx_q15(
-  q15_t * pSrcA,
-  q15_t * pSrcB,
-  q15_t * pDst,
-  uint32_t numSamples)
-{
-  q15_t a, b, c, d;                              /* Temporary variables to store real and imaginary values */
-
-#if defined (ARM_MATH_DSP)
-
-  /* Run the below code for Cortex-M4 and Cortex-M3 */
-  uint32_t blkCnt;                               /* loop counters */
-
-  /* loop Unrolling */
-  blkCnt = numSamples >> 2U;
-
-  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.
-   ** a second loop below computes the remaining 1 to 3 samples. */
-  while (blkCnt > 0U)
-  {
-    /* C[2 * i] = A[2 * i] * B[2 * i] - A[2 * i + 1] * B[2 * i + 1].  */
-    /* C[2 * i + 1] = A[2 * i] * B[2 * i + 1] + A[2 * i + 1] * B[2 * i].  */
-    a = *pSrcA++;
-    b = *pSrcA++;
-    c = *pSrcB++;
-    d = *pSrcB++;
-
-    /* store the result in 3.13 format in the destination buffer. */
-    *pDst++ =
-      (q15_t) (q31_t) (((q31_t) a * c) >> 17) - (((q31_t) b * d) >> 17);
-    /* store the result in 3.13 format in the destination buffer. */
-    *pDst++ =
-      (q15_t) (q31_t) (((q31_t) a * d) >> 17) + (((q31_t) b * c) >> 17);
-
-    a = *pSrcA++;
-    b = *pSrcA++;
-    c = *pSrcB++;
-    d = *pSrcB++;
-
-    /* store the result in 3.13 format in the destination buffer. */
-    *pDst++ =
-      (q15_t) (q31_t) (((q31_t) a * c) >> 17) - (((q31_t) b * d) >> 17);
-    /* store the result in 3.13 format in the destination buffer. */
-    *pDst++ =
-      (q15_t) (q31_t) (((q31_t) a * d) >> 17) + (((q31_t) b * c) >> 17);
-
-    a = *pSrcA++;
-    b = *pSrcA++;
-    c = *pSrcB++;
-    d = *pSrcB++;
-
-    /* store the result in 3.13 format in the destination buffer. */
-    *pDst++ =
-      (q15_t) (q31_t) (((q31_t) a * c) >> 17) - (((q31_t) b * d) >> 17);
-    /* store the result in 3.13 format in the destination buffer. */
-    *pDst++ =
-      (q15_t) (q31_t) (((q31_t) a * d) >> 17) + (((q31_t) b * c) >> 17);
-
-    a = *pSrcA++;
-    b = *pSrcA++;
-    c = *pSrcB++;
-    d = *pSrcB++;
-
-    /* store the result in 3.13 format in the destination buffer. */
-    *pDst++ =
-      (q15_t) (q31_t) (((q31_t) a * c) >> 17) - (((q31_t) b * d) >> 17);
-    /* store the result in 3.13 format in the destination buffer. */
-    *pDst++ =
-      (q15_t) (q31_t) (((q31_t) a * d) >> 17) + (((q31_t) b * c) >> 17);
-
-    /* Decrement the blockSize loop counter */
-    blkCnt--;
-  }
-
-  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.
-   ** No loop unrolling is used. */
-  blkCnt = numSamples % 0x4U;
-
-  while (blkCnt > 0U)
-  {
-    /* C[2 * i] = A[2 * i] * B[2 * i] - A[2 * i + 1] * B[2 * i + 1].  */
-    /* C[2 * i + 1] = A[2 * i] * B[2 * i + 1] + A[2 * i + 1] * B[2 * i].  */
-    a = *pSrcA++;
-    b = *pSrcA++;
-    c = *pSrcB++;
-    d = *pSrcB++;
-
-    /* store the result in 3.13 format in the destination buffer. */
-    *pDst++ =
-      (q15_t) (q31_t) (((q31_t) a * c) >> 17) - (((q31_t) b * d) >> 17);
-    /* store the result in 3.13 format in the destination buffer. */
-    *pDst++ =
-      (q15_t) (q31_t) (((q31_t) a * d) >> 17) + (((q31_t) b * c) >> 17);
-
-    /* Decrement the blockSize loop counter */
-    blkCnt--;
-  }
-
-#else
-
-  /* Run the below code for Cortex-M0 */
-
-  while (numSamples > 0U)
-  {
-    /* C[2 * i] = A[2 * i] * B[2 * i] - A[2 * i + 1] * B[2 * i + 1].  */
-    /* C[2 * i + 1] = A[2 * i] * B[2 * i + 1] + A[2 * i + 1] * B[2 * i].  */
-    a = *pSrcA++;
-    b = *pSrcA++;
-    c = *pSrcB++;
-    d = *pSrcB++;
-
-    /* store the result in 3.13 format in the destination buffer. */
-    *pDst++ =
-      (q15_t) (q31_t) (((q31_t) a * c) >> 17) - (((q31_t) b * d) >> 17);
-    /* store the result in 3.13 format in the destination buffer. */
-    *pDst++ =
-      (q15_t) (q31_t) (((q31_t) a * d) >> 17) + (((q31_t) b * c) >> 17);
-
-    /* Decrement the blockSize loop counter */
-    numSamples--;
-  }
-
-#endif /* #if defined (ARM_MATH_DSP) */
-
-}
-
-/**
- * @} end of CmplxByCmplxMult group
- */
diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mult_cmplx_q31.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mult_cmplx_q31.c
deleted file mode 100644
index b01c4f6..0000000
--- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mult_cmplx_q31.c
+++ /dev/null
@@ -1,314 +0,0 @@
-/* ----------------------------------------------------------------------
- * Project:      CMSIS DSP Library
- * Title:        arm_cmplx_mult_cmplx_q31.c
- * Description:  Q31 complex-by-complex multiplication
- *
- * $Date:        27. January 2017
- * $Revision:    V.1.5.1
- *
- * Target Processor: Cortex-M cores
- * -------------------------------------------------------------------- */
-/*
- * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved.
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the License); you may
- * not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "arm_math.h"
-
-/**
- * @ingroup groupCmplxMath
- */
-
-/**
- * @addtogroup CmplxByCmplxMult
- * @{
- */
-
-
-/**
- * @brief  Q31 complex-by-complex multiplication
- * @param[in]  *pSrcA points to the first input vector
- * @param[in]  *pSrcB points to the second input vector
- * @param[out]  *pDst  points to the output vector
- * @param[in]  numSamples number of complex samples in each vector
- * @return none.
- *
- * Scaling and Overflow Behavior:
- * \par
- * The function implements 1.31 by 1.31 multiplications and finally output is converted into 3.29 format.
- * Input down scaling is not required.
- */
-
-void arm_cmplx_mult_cmplx_q31(
-  q31_t * pSrcA,
-  q31_t * pSrcB,
-  q31_t * pDst,
-  uint32_t numSamples)
-{
-  q31_t a, b, c, d;                              /* Temporary variables to store real and imaginary values */
-  uint32_t blkCnt;                               /* loop counters */
-  q31_t mul1, mul2, mul3, mul4;
-  q31_t out1, out2;
-
-#if defined (ARM_MATH_DSP)
-
-  /* Run the below code for Cortex-M4 and Cortex-M3 */
-
-  /* loop Unrolling */
-  blkCnt = numSamples >> 2U;
-
-  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.
-   ** a second loop below computes the remaining 1 to 3 samples. */
-  while (blkCnt > 0U)
-  {
-    /* C[2 * i] = A[2 * i] * B[2 * i] - A[2 * i + 1] * B[2 * i + 1].  */
-    /* C[2 * i + 1] = A[2 * i] * B[2 * i + 1] + A[2 * i + 1] * B[2 * i].  */
-    a = *pSrcA++;
-    b = *pSrcA++;
-    c = *pSrcB++;
-    d = *pSrcB++;
-
-    mul1 = (q31_t) (((q63_t) a * c) >> 32);
-    mul2 = (q31_t) (((q63_t) b * d) >> 32);
-    mul3 = (q31_t) (((q63_t) a * d) >> 32);
-    mul4 = (q31_t) (((q63_t) b * c) >> 32);
-
-    mul1 = (mul1 >> 1);
-    mul2 = (mul2 >> 1);
-    mul3 = (mul3 >> 1);
-    mul4 = (mul4 >> 1);
-
-    out1 = mul1 - mul2;
-    out2 = mul3 + mul4;
-
-    /* store the real result in 3.29 format in the destination buffer. */
-    *pDst++ = out1;
-    /* store the imag result in 3.29 format in the destination buffer. */
-    *pDst++ = out2;
-
-    a = *pSrcA++;
-    b = *pSrcA++;
-    c = *pSrcB++;
-    d = *pSrcB++;
-
-    mul1 = (q31_t) (((q63_t) a * c) >> 32);
-    mul2 = (q31_t) (((q63_t) b * d) >> 32);
-    mul3 = (q31_t) (((q63_t) a * d) >> 32);
-    mul4 = (q31_t) (((q63_t) b * c) >> 32);
-
-    mul1 = (mul1 >> 1);
-    mul2 = (mul2 >> 1);
-    mul3 = (mul3 >> 1);
-    mul4 = (mul4 >> 1);
-
-    out1 = mul1 - mul2;
-    out2 = mul3 + mul4;
-
-    /* store the real result in 3.29 format in the destination buffer. */
-    *pDst++ = out1;
-    /* store the imag result in 3.29 format in the destination buffer. */
-    *pDst++ = out2;
-
-    a = *pSrcA++;
-    b = *pSrcA++;
-    c = *pSrcB++;
-    d = *pSrcB++;
-
-    mul1 = (q31_t) (((q63_t) a * c) >> 32);
-    mul2 = (q31_t) (((q63_t) b * d) >> 32);
-    mul3 = (q31_t) (((q63_t) a * d) >> 32);
-    mul4 = (q31_t) (((q63_t) b * c) >> 32);
-
-    mul1 = (mul1 >> 1);
-    mul2 = (mul2 >> 1);
-    mul3 = (mul3 >> 1);
-    mul4 = (mul4 >> 1);
-
-    out1 = mul1 - mul2;
-    out2 = mul3 + mul4;
-
-    /* store the real result in 3.29 format in the destination buffer. */
-    *pDst++ = out1;
-    /* store the imag result in 3.29 format in the destination buffer. */
-    *pDst++ = out2;
-
-    a = *pSrcA++;
-    b = *pSrcA++;
-    c = *pSrcB++;
-    d = *pSrcB++;
-
-    mul1 = (q31_t) (((q63_t) a * c) >> 32);
-    mul2 = (q31_t) (((q63_t) b * d) >> 32);
-    mul3 = (q31_t) (((q63_t) a * d) >> 32);
-    mul4 = (q31_t) (((q63_t) b * c) >> 32);
-
-    mul1 = (mul1 >> 1);
-    mul2 = (mul2 >> 1);
-    mul3 = (mul3 >> 1);
-    mul4 = (mul4 >> 1);
-
-    out1 = mul1 - mul2;
-    out2 = mul3 + mul4;
-
-    /* store the real result in 3.29 format in the destination buffer. */
-    *pDst++ = out1;
-    /* store the imag result in 3.29 format in the destination buffer. */
-    *pDst++ = out2;
-
-    /* Decrement the blockSize loop counter */
-    blkCnt--;
-  }
-
-  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.
-   ** No loop unrolling is used. */
-  blkCnt = numSamples % 0x4U;
-
-  while (blkCnt > 0U)
-  {
-    /* C[2 * i] = A[2 * i] * B[2 * i] - A[2 * i + 1] * B[2 * i + 1].  */
-    /* C[2 * i + 1] = A[2 * i] * B[2 * i + 1] + A[2 * i + 1] * B[2 * i].  */
-    a = *pSrcA++;
-    b = *pSrcA++;
-    c = *pSrcB++;
-    d = *pSrcB++;
-
-    mul1 = (q31_t) (((q63_t) a * c) >> 32);
-    mul2 = (q31_t) (((q63_t) b * d) >> 32);
-    mul3 = (q31_t) (((q63_t) a * d) >> 32);
-    mul4 = (q31_t) (((q63_t) b * c) >> 32);
-
-    mul1 = (mul1 >> 1);
-    mul2 = (mul2 >> 1);
-    mul3 = (mul3 >> 1);
-    mul4 = (mul4 >> 1);
-
-    out1 = mul1 - mul2;
-    out2 = mul3 + mul4;
-
-    /* store the real result in 3.29 format in the destination buffer. */
-    *pDst++ = out1;
-    /* store the imag result in 3.29 format in the destination buffer. */
-    *pDst++ = out2;
-
-    /* Decrement the blockSize loop counter */
-    blkCnt--;
-  }
-
-#else
-
-  /* Run the below code for Cortex-M0 */
-
-  /* loop Unrolling */
-  blkCnt = numSamples >> 1U;
-
-  /* First part of the processing with loop unrolling.  Compute 2 outputs at a time.
-   ** a second loop below computes the remaining 1 sample. */
-  while (blkCnt > 0U)
-  {
-    /* C[2 * i] = A[2 * i] * B[2 * i] - A[2 * i + 1] * B[2 * i + 1].  */
-    /* C[2 * i + 1] = A[2 * i] * B[2 * i + 1] + A[2 * i + 1] * B[2 * i].  */
-    a = *pSrcA++;
-    b = *pSrcA++;
-    c = *pSrcB++;
-    d = *pSrcB++;
-
-    mul1 = (q31_t) (((q63_t) a * c) >> 32);
-    mul2 = (q31_t) (((q63_t) b * d) >> 32);
-    mul3 = (q31_t) (((q63_t) a * d) >> 32);
-    mul4 = (q31_t) (((q63_t) b * c) >> 32);
-
-    mul1 = (mul1 >> 1);
-    mul2 = (mul2 >> 1);
-    mul3 = (mul3 >> 1);
-    mul4 = (mul4 >> 1);
-
-    out1 = mul1 - mul2;
-    out2 = mul3 + mul4;
-
-    /* store the real result in 3.29 format in the destination buffer. */
-    *pDst++ = out1;
-    /* store the imag result in 3.29 format in the destination buffer. */
-    *pDst++ = out2;
-
-    a = *pSrcA++;
-    b = *pSrcA++;
-    c = *pSrcB++;
-    d = *pSrcB++;
-
-    mul1 = (q31_t) (((q63_t) a * c) >> 32);
-    mul2 = (q31_t) (((q63_t) b * d) >> 32);
-    mul3 = (q31_t) (((q63_t) a * d) >> 32);
-    mul4 = (q31_t) (((q63_t) b * c) >> 32);
-
-    mul1 = (mul1 >> 1);
-    mul2 = (mul2 >> 1);
-    mul3 = (mul3 >> 1);
-    mul4 = (mul4 >> 1);
-
-    out1 = mul1 - mul2;
-    out2 = mul3 + mul4;
-
-    /* store the real result in 3.29 format in the destination buffer. */
-    *pDst++ = out1;
-    /* store the imag result in 3.29 format in the destination buffer. */
-    *pDst++ = out2;
-
-    /* Decrement the blockSize loop counter */
-    blkCnt--;
-  }
-
-  /* If the blockSize is not a multiple of 2, compute any remaining output samples here.
-   ** No loop unrolling is used. */
-  blkCnt = numSamples % 0x2U;
-
-  while (blkCnt > 0U)
-  {
-    /* C[2 * i] = A[2 * i] * B[2 * i] - A[2 * i + 1] * B[2 * i + 1].  */
-    /* C[2 * i + 1] = A[2 * i] * B[2 * i + 1] + A[2 * i + 1] * B[2 * i].  */
-    a = *pSrcA++;
-    b = *pSrcA++;
-    c = *pSrcB++;
-    d = *pSrcB++;
-
-    mul1 = (q31_t) (((q63_t) a * c) >> 32);
-    mul2 = (q31_t) (((q63_t) b * d) >> 32);
-    mul3 = (q31_t) (((q63_t) a * d) >> 32);
-    mul4 = (q31_t) (((q63_t) b * c) >> 32);
-
-    mul1 = (mul1 >> 1);
-    mul2 = (mul2 >> 1);
-    mul3 = (mul3 >> 1);
-    mul4 = (mul4 >> 1);
-
-    out1 = mul1 - mul2;
-    out2 = mul3 + mul4;
-
-    /* store the real result in 3.29 format in the destination buffer. */
-    *pDst++ = out1;
-    /* store the imag result in 3.29 format in the destination buffer. */
-    *pDst++ = out2;
-
-    /* Decrement the blockSize loop counter */
-    blkCnt--;
-  }
-
-#endif /* #if defined (ARM_MATH_DSP) */
-
-}
-
-/**
- * @} end of CmplxByCmplxMult group
- */
diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mult_real_f32.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mult_real_f32.c
deleted file mode 100644
index 8c7ca31..0000000
--- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mult_real_f32.c
+++ /dev/null
@@ -1,213 +0,0 @@
-/* ----------------------------------------------------------------------
- * Project:      CMSIS DSP Library
- * Title:        arm_cmplx_mult_real_f32.c
- * Description:  Floating-point complex by real multiplication
- *
- * $Date:        27. January 2017
- * $Revision:    V.1.5.1
- *
- * Target Processor: Cortex-M cores
- * -------------------------------------------------------------------- */
-/*
- * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved.
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the License); you may
- * not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "arm_math.h"
-
-/**
- * @ingroup groupCmplxMath
- */
-
-/**
- * @defgroup CmplxByRealMult Complex-by-Real Multiplication
- *
- * Multiplies a complex vector by a real vector and generates a complex result.
- * The data in the complex arrays is stored in an interleaved fashion
- * (real, imag, real, imag, ...).
- * The parameter numSamples represents the number of complex
- * samples processed.  The complex arrays have a total of 2*numSamples
- * real values while the real array has a total of numSamples
- * real values.
- *
- * The underlying algorithm is used:
- *
- * 
- * for(n=0; n
- *
- * There are separate functions for floating-point, Q15, and Q31 data types.
- */
-
-/**
- * @addtogroup CmplxByRealMult
- * @{
- */
-
-
-/**
- * @brief  Floating-point complex-by-real multiplication
- * @param[in]  *pSrcCmplx points to the complex input vector
- * @param[in]  *pSrcReal points to the real input vector
- * @param[out]  *pCmplxDst points to the complex output vector
- * @param[in]  numSamples number of samples in each vector
- * @return none.
- */
-
-void arm_cmplx_mult_real_f32(
-  float32_t * pSrcCmplx,
-  float32_t * pSrcReal,
-  float32_t * pCmplxDst,
-  uint32_t numSamples)
-{
-  float32_t in;                                  /* Temporary variable to store input value */
-  uint32_t blkCnt;                               /* loop counters */
-
-#if defined (ARM_MATH_DSP)
-
-  /* Run the below code for Cortex-M4 and Cortex-M3 */
-  float32_t inA1, inA2, inA3, inA4;              /* Temporary variables to hold input data */
-  float32_t inA5, inA6, inA7, inA8;              /* Temporary variables to hold input data */
-  float32_t inB1, inB2, inB3, inB4;              /* Temporary variables to hold input data */
-  float32_t out1, out2, out3, out4;              /* Temporary variables to hold output data */
-  float32_t out5, out6, out7, out8;              /* Temporary variables to hold output data */
-
-  /* loop Unrolling */
-  blkCnt = numSamples >> 2U;
-
-  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.
-   ** a second loop below computes the remaining 1 to 3 samples. */
-  while (blkCnt > 0U)
-  {
-    /* C[2 * i] = A[2 * i] * B[i].            */
-    /* C[2 * i + 1] = A[2 * i + 1] * B[i].        */
-    /* read input from complex input buffer */
-    inA1 = pSrcCmplx[0];
-    inA2 = pSrcCmplx[1];
-    /* read input from real input buffer */
-    inB1 = pSrcReal[0];
-
-    /* read input from complex input buffer */
-    inA3 = pSrcCmplx[2];
-
-    /* multiply complex buffer real input with real buffer input */
-    out1 = inA1 * inB1;
-
-    /* read input from complex input buffer */
-    inA4 = pSrcCmplx[3];
-
-    /* multiply complex buffer imaginary input with real buffer input */
-    out2 = inA2 * inB1;
-
-    /* read input from real input buffer */
-    inB2 = pSrcReal[1];
-    /* read input from complex input buffer */
-    inA5 = pSrcCmplx[4];
-
-    /* multiply complex buffer real input with real buffer input */
-    out3 = inA3 * inB2;
-
-    /* read input from complex input buffer */
-    inA6 = pSrcCmplx[5];
-    /* read input from real input buffer */
-    inB3 = pSrcReal[2];
-
-    /* multiply complex buffer imaginary input with real buffer input */
-    out4 = inA4 * inB2;
-
-    /* read input from complex input buffer */
-    inA7 = pSrcCmplx[6];
-
-    /* multiply complex buffer real input with real buffer input */
-    out5 = inA5 * inB3;
-
-    /* read input from complex input buffer */
-    inA8 = pSrcCmplx[7];
-
-    /* multiply complex buffer imaginary input with real buffer input */
-    out6 = inA6 * inB3;
-
-    /* read input from real input buffer */
-    inB4 = pSrcReal[3];
-
-    /* store result to destination bufer */
-    pCmplxDst[0] = out1;
-
-    /* multiply complex buffer real input with real buffer input */
-    out7 = inA7 * inB4;
-
-    /* store result to destination bufer */
-    pCmplxDst[1] = out2;
-
-    /* multiply complex buffer imaginary input with real buffer input */
-    out8 = inA8 * inB4;
-
-    /* store result to destination bufer */
-    pCmplxDst[2] = out3;
-    pCmplxDst[3] = out4;
-    pCmplxDst[4] = out5;
-
-    /* incremnet complex input buffer by 8 to process next samples */
-    pSrcCmplx += 8U;
-
-    /* store result to destination bufer */
-    pCmplxDst[5] = out6;
-
-    /* increment real input buffer by 4 to process next samples */
-    pSrcReal += 4U;
-
-    /* store result to destination bufer */
-    pCmplxDst[6] = out7;
-    pCmplxDst[7] = out8;
-
-    /* increment destination buffer by 8 to process next sampels */
-    pCmplxDst += 8U;
-
-    /* Decrement the numSamples loop counter */
-    blkCnt--;
-  }
-
-  /* If the numSamples is not a multiple of 4, compute any remaining output samples here.
-   ** No loop unrolling is used. */
-  blkCnt = numSamples % 0x4U;
-
-#else
-
-  /* Run the below code for Cortex-M0 */
-  blkCnt = numSamples;
-
-#endif /* #if defined (ARM_MATH_DSP) */
-
-  while (blkCnt > 0U)
-  {
-    /* C[2 * i] = A[2 * i] * B[i].            */
-    /* C[2 * i + 1] = A[2 * i + 1] * B[i].        */
-    in = *pSrcReal++;
-    /* store the result in the destination buffer. */
-    *pCmplxDst++ = (*pSrcCmplx++) * (in);
-    *pCmplxDst++ = (*pSrcCmplx++) * (in);
-
-    /* Decrement the numSamples loop counter */
-    blkCnt--;
-  }
-}
-
-/**
- * @} end of CmplxByRealMult group
- */
diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mult_real_q15.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mult_real_q15.c
deleted file mode 100644
index 340d852..0000000
--- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mult_real_q15.c
+++ /dev/null
@@ -1,191 +0,0 @@
-/* ----------------------------------------------------------------------
- * Project:      CMSIS DSP Library
- * Title:        arm_cmplx_mult_real_q15.c
- * Description:  Q15 complex by real multiplication
- *
- * $Date:        27. January 2017
- * $Revision:    V.1.5.1
- *
- * Target Processor: Cortex-M cores
- * -------------------------------------------------------------------- */
-/*
- * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved.
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the License); you may
- * not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "arm_math.h"
-
-/**
- * @ingroup groupCmplxMath
- */
-
-/**
- * @addtogroup CmplxByRealMult
- * @{
- */
-
-
-/**
- * @brief  Q15 complex-by-real multiplication
- * @param[in]  *pSrcCmplx points to the complex input vector
- * @param[in]  *pSrcReal points to the real input vector
- * @param[out]  *pCmplxDst points to the complex output vector
- * @param[in]  numSamples number of samples in each vector
- * @return none.
- *
- * Scaling and Overflow Behavior:
- * \par
- * The function uses saturating arithmetic.
- * Results outside of the allowable Q15 range [0x8000 0x7FFF] will be saturated.
- */
-
-void arm_cmplx_mult_real_q15(
-  q15_t * pSrcCmplx,
-  q15_t * pSrcReal,
-  q15_t * pCmplxDst,
-  uint32_t numSamples)
-{
-  q15_t in;                                      /* Temporary variable to store input value */
-
-#if defined (ARM_MATH_DSP)
-
-  /* Run the below code for Cortex-M4 and Cortex-M3 */
-  uint32_t blkCnt;                               /* loop counters */
-  q31_t inA1, inA2;                              /* Temporary variables to hold input data */
-  q31_t inB1;                                    /* Temporary variables to hold input data */
-  q15_t out1, out2, out3, out4;                  /* Temporary variables to hold output data */
-  q31_t mul1, mul2, mul3, mul4;                  /* Temporary variables to hold intermediate data */
-
-  /* loop Unrolling */
-  blkCnt = numSamples >> 2U;
-
-  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.
-   ** a second loop below computes the remaining 1 to 3 samples. */
-  while (blkCnt > 0U)
-  {
-    /* C[2 * i] = A[2 * i] * B[i].            */
-    /* C[2 * i + 1] = A[2 * i + 1] * B[i].        */
-    /* read complex number both real and imaginary from complex input buffer */
-    inA1 = *__SIMD32(pSrcCmplx)++;
-    /* read two real values at a time from real input buffer */
-    inB1 = *__SIMD32(pSrcReal)++;
-    /* read complex number both real and imaginary from complex input buffer */
-    inA2 = *__SIMD32(pSrcCmplx)++;
-
-    /* multiply complex number with real numbers */
-#ifndef ARM_MATH_BIG_ENDIAN
-
-    mul1 = (q31_t) ((q15_t) (inA1) * (q15_t) (inB1));
-    mul2 = (q31_t) ((q15_t) (inA1 >> 16) * (q15_t) (inB1));
-    mul3 = (q31_t) ((q15_t) (inA2) * (q15_t) (inB1 >> 16));
-    mul4 = (q31_t) ((q15_t) (inA2 >> 16) * (q15_t) (inB1 >> 16));
-
-#else
-
-    mul2 = (q31_t) ((q15_t) (inA1 >> 16) * (q15_t) (inB1 >> 16));
-    mul1 = (q31_t) ((q15_t) inA1 * (q15_t) (inB1 >> 16));
-    mul4 = (q31_t) ((q15_t) (inA2 >> 16) * (q15_t) inB1);
-    mul3 = (q31_t) ((q15_t) inA2 * (q15_t) inB1);
-
-#endif /* #ifndef ARM_MATH_BIG_ENDIAN */
-
-    /* saturate the result */
-    out1 = (q15_t) __SSAT(mul1 >> 15U, 16);
-    out2 = (q15_t) __SSAT(mul2 >> 15U, 16);
-    out3 = (q15_t) __SSAT(mul3 >> 15U, 16);
-    out4 = (q15_t) __SSAT(mul4 >> 15U, 16);
-
-    /* pack real and imaginary outputs and store them to destination */
-    *__SIMD32(pCmplxDst)++ = __PKHBT(out1, out2, 16);
-    *__SIMD32(pCmplxDst)++ = __PKHBT(out3, out4, 16);
-
-    inA1 = *__SIMD32(pSrcCmplx)++;
-    inB1 = *__SIMD32(pSrcReal)++;
-    inA2 = *__SIMD32(pSrcCmplx)++;
-
-#ifndef ARM_MATH_BIG_ENDIAN
-
-    mul1 = (q31_t) ((q15_t) (inA1) * (q15_t) (inB1));
-    mul2 = (q31_t) ((q15_t) (inA1 >> 16) * (q15_t) (inB1));
-    mul3 = (q31_t) ((q15_t) (inA2) * (q15_t) (inB1 >> 16));
-    mul4 = (q31_t) ((q15_t) (inA2 >> 16) * (q15_t) (inB1 >> 16));
-
-#else
-
-    mul2 = (q31_t) ((q15_t) (inA1 >> 16) * (q15_t) (inB1 >> 16));
-    mul1 = (q31_t) ((q15_t) inA1 * (q15_t) (inB1 >> 16));
-    mul4 = (q31_t) ((q15_t) (inA2 >> 16) * (q15_t) inB1);
-    mul3 = (q31_t) ((q15_t) inA2 * (q15_t) inB1);
-
-#endif /* #ifndef ARM_MATH_BIG_ENDIAN */
-
-    out1 = (q15_t) __SSAT(mul1 >> 15U, 16);
-    out2 = (q15_t) __SSAT(mul2 >> 15U, 16);
-    out3 = (q15_t) __SSAT(mul3 >> 15U, 16);
-    out4 = (q15_t) __SSAT(mul4 >> 15U, 16);
-
-    *__SIMD32(pCmplxDst)++ = __PKHBT(out1, out2, 16);
-    *__SIMD32(pCmplxDst)++ = __PKHBT(out3, out4, 16);
-
-    /* Decrement the numSamples loop counter */
-    blkCnt--;
-  }
-
-  /* If the numSamples is not a multiple of 4, compute any remaining output samples here.
-   ** No loop unrolling is used. */
-  blkCnt = numSamples % 0x4U;
-
-  while (blkCnt > 0U)
-  {
-    /* C[2 * i] = A[2 * i] * B[i].            */
-    /* C[2 * i + 1] = A[2 * i + 1] * B[i].        */
-    in = *pSrcReal++;
-    /* store the result in the destination buffer. */
-    *pCmplxDst++ =
-      (q15_t) __SSAT((((q31_t) (*pSrcCmplx++) * (in)) >> 15), 16);
-    *pCmplxDst++ =
-      (q15_t) __SSAT((((q31_t) (*pSrcCmplx++) * (in)) >> 15), 16);
-
-    /* Decrement the numSamples loop counter */
-    blkCnt--;
-  }
-
-#else
-
-  /* Run the below code for Cortex-M0 */
-
-  while (numSamples > 0U)
-  {
-    /* realOut = realA * realB.            */
-    /* imagOut = imagA * realB.                */
-    in = *pSrcReal++;
-    /* store the result in the destination buffer. */
-    *pCmplxDst++ =
-      (q15_t) __SSAT((((q31_t) (*pSrcCmplx++) * (in)) >> 15), 16);
-    *pCmplxDst++ =
-      (q15_t) __SSAT((((q31_t) (*pSrcCmplx++) * (in)) >> 15), 16);
-
-    /* Decrement the numSamples loop counter */
-    numSamples--;
-  }
-
-#endif /* #if defined (ARM_MATH_DSP) */
-
-}
-
-/**
- * @} end of CmplxByRealMult group
- */
diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mult_real_q31.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mult_real_q31.c
deleted file mode 100644
index 19fc55b..0000000
--- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mult_real_q31.c
+++ /dev/null
@@ -1,211 +0,0 @@
-/* ----------------------------------------------------------------------
- * Project:      CMSIS DSP Library
- * Title:        arm_cmplx_mult_real_q31.c
- * Description:  Q31 complex by real multiplication
- *
- * $Date:        27. January 2017
- * $Revision:    V.1.5.1
- *
- * Target Processor: Cortex-M cores
- * -------------------------------------------------------------------- */
-/*
- * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved.
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the License); you may
- * not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "arm_math.h"
-
-/**
- * @ingroup groupCmplxMath
- */
-
-/**
- * @addtogroup CmplxByRealMult
- * @{
- */
-
-
-/**
- * @brief  Q31 complex-by-real multiplication
- * @param[in]  *pSrcCmplx points to the complex input vector
- * @param[in]  *pSrcReal points to the real input vector
- * @param[out]  *pCmplxDst points to the complex output vector
- * @param[in]  numSamples number of samples in each vector
- * @return none.
- *
- * Scaling and Overflow Behavior:
- * \par
- * The function uses saturating arithmetic.
- * Results outside of the allowable Q31 range[0x80000000 0x7FFFFFFF] will be saturated.
- */
-
-void arm_cmplx_mult_real_q31(
-  q31_t * pSrcCmplx,
-  q31_t * pSrcReal,
-  q31_t * pCmplxDst,
-  uint32_t numSamples)
-{
-  q31_t inA1;                                    /* Temporary variable to store input value */
-
-#if defined (ARM_MATH_DSP)
-
-  /* Run the below code for Cortex-M4 and Cortex-M3 */
-  uint32_t blkCnt;                               /* loop counters */
-  q31_t inA2, inA3, inA4;                        /* Temporary variables to hold input data */
-  q31_t inB1, inB2;                              /* Temporary variabels to hold input data */
-  q31_t out1, out2, out3, out4;                  /* Temporary variables to hold output data */
-
-  /* loop Unrolling */
-  blkCnt = numSamples >> 2U;
-
-  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.
-   ** a second loop below computes the remaining 1 to 3 samples. */
-  while (blkCnt > 0U)
-  {
-    /* C[2 * i] = A[2 * i] * B[i].            */
-    /* C[2 * i + 1] = A[2 * i + 1] * B[i].        */
-    /* read real input from complex input buffer */
-    inA1 = *pSrcCmplx++;
-    inA2 = *pSrcCmplx++;
-    /* read input from real input bufer */
-    inB1 = *pSrcReal++;
-    inB2 = *pSrcReal++;
-    /* read imaginary input from complex input buffer */
-    inA3 = *pSrcCmplx++;
-    inA4 = *pSrcCmplx++;
-
-    /* multiply complex input with real input */
-    out1 = ((q63_t) inA1 * inB1) >> 32;
-    out2 = ((q63_t) inA2 * inB1) >> 32;
-    out3 = ((q63_t) inA3 * inB2) >> 32;
-    out4 = ((q63_t) inA4 * inB2) >> 32;
-
-    /* sature the result */
-    out1 = __SSAT(out1, 31);
-    out2 = __SSAT(out2, 31);
-    out3 = __SSAT(out3, 31);
-    out4 = __SSAT(out4, 31);
-
-    /* get result in 1.31 format */
-    out1 = out1 << 1;
-    out2 = out2 << 1;
-    out3 = out3 << 1;
-    out4 = out4 << 1;
-
-    /* store the result to destination buffer */
-    *pCmplxDst++ = out1;
-    *pCmplxDst++ = out2;
-    *pCmplxDst++ = out3;
-    *pCmplxDst++ = out4;
-
-    /* read real input from complex input buffer */
-    inA1 = *pSrcCmplx++;
-    inA2 = *pSrcCmplx++;
-    /* read input from real input bufer */
-    inB1 = *pSrcReal++;
-    inB2 = *pSrcReal++;
-    /* read imaginary input from complex input buffer */
-    inA3 = *pSrcCmplx++;
-    inA4 = *pSrcCmplx++;
-
-    /* multiply complex input with real input */
-    out1 = ((q63_t) inA1 * inB1) >> 32;
-    out2 = ((q63_t) inA2 * inB1) >> 32;
-    out3 = ((q63_t) inA3 * inB2) >> 32;
-    out4 = ((q63_t) inA4 * inB2) >> 32;
-
-    /* sature the result */
-    out1 = __SSAT(out1, 31);
-    out2 = __SSAT(out2, 31);
-    out3 = __SSAT(out3, 31);
-    out4 = __SSAT(out4, 31);
-
-    /* get result in 1.31 format */
-    out1 = out1 << 1;
-    out2 = out2 << 1;
-    out3 = out3 << 1;
-    out4 = out4 << 1;
-
-    /* store the result to destination buffer */
-    *pCmplxDst++ = out1;
-    *pCmplxDst++ = out2;
-    *pCmplxDst++ = out3;
-    *pCmplxDst++ = out4;
-
-    /* Decrement the numSamples loop counter */
-    blkCnt--;
-  }
-
-  /* If the numSamples is not a multiple of 4, compute any remaining output samples here.
-   ** No loop unrolling is used. */
-  blkCnt = numSamples % 0x4U;
-
-  while (blkCnt > 0U)
-  {
-    /* C[2 * i] = A[2 * i] * B[i].            */
-    /* C[2 * i + 1] = A[2 * i + 1] * B[i].        */
-    /* read real input from complex input buffer */
-    inA1 = *pSrcCmplx++;
-    inA2 = *pSrcCmplx++;
-    /* read input from real input bufer */
-    inB1 = *pSrcReal++;
-
-    /* multiply complex input with real input */
-    out1 = ((q63_t) inA1 * inB1) >> 32;
-    out2 = ((q63_t) inA2 * inB1) >> 32;
-
-    /* sature the result */
-    out1 = __SSAT(out1, 31);
-    out2 = __SSAT(out2, 31);
-
-    /* get result in 1.31 format */
-    out1 = out1 << 1;
-    out2 = out2 << 1;
-
-    /* store the result to destination buffer */
-    *pCmplxDst++ = out1;
-    *pCmplxDst++ = out2;
-
-    /* Decrement the numSamples loop counter */
-    blkCnt--;
-  }
-
-#else
-
-  /* Run the below code for Cortex-M0 */
-
-  while (numSamples > 0U)
-  {
-    /* realOut = realA * realB.            */
-    /* imagReal = imagA * realB.               */
-    inA1 = *pSrcReal++;
-    /* store the result in the destination buffer. */
-    *pCmplxDst++ =
-      (q31_t) clip_q63_to_q31(((q63_t) * pSrcCmplx++ * inA1) >> 31);
-    *pCmplxDst++ =
-      (q31_t) clip_q63_to_q31(((q63_t) * pSrcCmplx++ * inA1) >> 31);
-
-    /* Decrement the numSamples loop counter */
-    numSamples--;
-  }
-
-#endif /* #if defined (ARM_MATH_DSP) */
-
-}
-
-/**
- * @} end of CmplxByRealMult group
- */
diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ControllerFunctions/arm_pid_init_f32.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ControllerFunctions/arm_pid_init_f32.c
deleted file mode 100644
index f75d61f..0000000
--- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ControllerFunctions/arm_pid_init_f32.c
+++ /dev/null
@@ -1,74 +0,0 @@
-/* ----------------------------------------------------------------------
- * Project:      CMSIS DSP Library
- * Title:        arm_pid_init_f32.c
- * Description:  Floating-point PID Control initialization function
- *
- * $Date:        27. January 2017
- * $Revision:    V.1.5.1
- *
- * Target Processor: Cortex-M cores
- * -------------------------------------------------------------------- */
-/*
- * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved.
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the License); you may
- * not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "arm_math.h"
-
- /**
- * @addtogroup PID
- * @{
- */
-
-/**
- * @brief  Initialization function for the floating-point PID Control.
- * @param[in,out] *S points to an instance of the PID structure.
- * @param[in]     resetStateFlag  flag to reset the state. 0 = no change in state & 1 = reset the state.
- * @return none.
- * \par Description:
- * \par
- * The resetStateFlag specifies whether to set state to zero or not. \n
- * The function computes the structure fields: A0, A1 A2
- * using the proportional gain( \c Kp), integral gain( \c Ki) and derivative gain( \c Kd)
- * also sets the state variables to all zeros.
- */
-
-void arm_pid_init_f32(
-  arm_pid_instance_f32 * S,
-  int32_t resetStateFlag)
-{
-
-  /* Derived coefficient A0 */
-  S->A0 = S->Kp + S->Ki + S->Kd;
-
-  /* Derived coefficient A1 */
-  S->A1 = (-S->Kp) - ((float32_t) 2.0 * S->Kd);
-
-  /* Derived coefficient A2 */
-  S->A2 = S->Kd;
-
-  /* Check whether state needs reset or not */
-  if (resetStateFlag)
-  {
-    /* Clear the state buffer.  The size will be always 3 samples */
-    memset(S->state, 0, 3U * sizeof(float32_t));
-  }
-
-}
-
-/**
- * @} end of PID group
- */
diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ControllerFunctions/arm_pid_init_q15.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ControllerFunctions/arm_pid_init_q15.c
deleted file mode 100644
index 61049cf..0000000
--- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ControllerFunctions/arm_pid_init_q15.c
+++ /dev/null
@@ -1,110 +0,0 @@
-/* ----------------------------------------------------------------------
- * Project:      CMSIS DSP Library
- * Title:        arm_pid_init_q15.c
- * Description:  Q15 PID Control initialization function
- *
- * $Date:        27. January 2017
- * $Revision:    V.1.5.1
- *
- * Target Processor: Cortex-M cores
- * -------------------------------------------------------------------- */
-/*
- * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved.
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the License); you may
- * not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "arm_math.h"
-
- /**
- * @addtogroup PID
- * @{
- */
-
-/**
- * @details
- * @param[in,out] *S points to an instance of the Q15 PID structure.
- * @param[in]     resetStateFlag  flag to reset the state. 0 = no change in state 1 = reset the state.
- * @return none.
- * \par Description:
- * \par
- * The resetStateFlag specifies whether to set state to zero or not. \n
- * The function computes the structure fields: A0, A1 A2
- * using the proportional gain( \c Kp), integral gain( \c Ki) and derivative gain( \c Kd)
- * also sets the state variables to all zeros.
- */
-
-void arm_pid_init_q15(
-  arm_pid_instance_q15 * S,
-  int32_t resetStateFlag)
-{
-
-#if defined (ARM_MATH_DSP)
-
-  /* Run the below code for Cortex-M4 and Cortex-M3 */
-
-  /* Derived coefficient A0 */
-  S->A0 = __QADD16(__QADD16(S->Kp, S->Ki), S->Kd);
-
-  /* Derived coefficients and pack into A1 */
-
-#ifndef  ARM_MATH_BIG_ENDIAN
-
-  S->A1 = __PKHBT(-__QADD16(__QADD16(S->Kd, S->Kd), S->Kp), S->Kd, 16);
-
-#else
-
-  S->A1 = __PKHBT(S->Kd, -__QADD16(__QADD16(S->Kd, S->Kd), S->Kp), 16);
-
-#endif /*      #ifndef  ARM_MATH_BIG_ENDIAN    */
-
-  /* Check whether state needs reset or not */
-  if (resetStateFlag)
-  {
-    /* Clear the state buffer.  The size will be always 3 samples */
-    memset(S->state, 0, 3U * sizeof(q15_t));
-  }
-
-#else
-
-  /* Run the below code for Cortex-M0 */
-
-  q31_t temp;                                    /*to store the sum */
-
-  /* Derived coefficient A0 */
-  temp = S->Kp + S->Ki + S->Kd;
-  S->A0 = (q15_t) __SSAT(temp, 16);
-
-  /* Derived coefficients and pack into A1 */
-  temp = -(S->Kd + S->Kd + S->Kp);
-  S->A1 = (q15_t) __SSAT(temp, 16);
-  S->A2 = S->Kd;
-
-
-
-  /* Check whether state needs reset or not */
-  if (resetStateFlag)
-  {
-    /* Clear the state buffer.  The size will be always 3 samples */
-    memset(S->state, 0, 3U * sizeof(q15_t));
-  }
-
-#endif /* #if defined (ARM_MATH_DSP) */
-
-}
-
-/**
- * @} end of PID group
- */
diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ControllerFunctions/arm_pid_init_q31.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ControllerFunctions/arm_pid_init_q31.c
deleted file mode 100644
index 17b3b09..0000000
--- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ControllerFunctions/arm_pid_init_q31.c
+++ /dev/null
@@ -1,95 +0,0 @@
-/* ----------------------------------------------------------------------
- * Project:      CMSIS DSP Library
- * Title:        arm_pid_init_q31.c
- * Description:  Q31 PID Control initialization function
- *
- * $Date:        27. January 2017
- * $Revision:    V.1.5.1
- *
- * Target Processor: Cortex-M cores
- * -------------------------------------------------------------------- */
-/*
- * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved.
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the License); you may
- * not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "arm_math.h"
-
- /**
- * @addtogroup PID
- * @{
- */
-
-/**
- * @brief  Initialization function for the Q31 PID Control.
- * @param[in,out] *S points to an instance of the Q31 PID structure.
- * @param[in]     resetStateFlag  flag to reset the state. 0 = no change in state 1 = reset the state.
- * @return none.
- * \par Description:
- * \par
- * The resetStateFlag specifies whether to set state to zero or not. \n
- * The function computes the structure fields: A0, A1 A2
- * using the proportional gain( \c Kp), integral gain( \c Ki) and derivative gain( \c Kd)
- * also sets the state variables to all zeros.
- */
-
-void arm_pid_init_q31(
-  arm_pid_instance_q31 * S,
-  int32_t resetStateFlag)
-{
-
-#if defined (ARM_MATH_DSP)
-
-  /* Run the below code for Cortex-M4 and Cortex-M3 */
-
-  /* Derived coefficient A0 */
-  S->A0 = __QADD(__QADD(S->Kp, S->Ki), S->Kd);
-
-  /* Derived coefficient A1 */
-  S->A1 = -__QADD(__QADD(S->Kd, S->Kd), S->Kp);
-
-
-#else
-
-  /* Run the below code for Cortex-M0 */
-
-  q31_t temp;
-
-  /* Derived coefficient A0 */
-  temp = clip_q63_to_q31((q63_t) S->Kp + S->Ki);
-  S->A0 = clip_q63_to_q31((q63_t) temp + S->Kd);
-
-  /* Derived coefficient A1 */
-  temp = clip_q63_to_q31((q63_t) S->Kd + S->Kd);
-  S->A1 = -clip_q63_to_q31((q63_t) temp + S->Kp);
-
-#endif /* #if defined (ARM_MATH_DSP) */
-
-  /* Derived coefficient A2 */
-  S->A2 = S->Kd;
-
-  /* Check whether state needs reset or not */
-  if (resetStateFlag)
-  {
-    /* Clear the state buffer.  The size will be always 3 samples */
-    memset(S->state, 0, 3U * sizeof(q31_t));
-  }
-
-}
-
-/**
- * @} end of PID group
- */
diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ControllerFunctions/arm_pid_reset_f32.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ControllerFunctions/arm_pid_reset_f32.c
deleted file mode 100644
index 318ec89..0000000
--- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ControllerFunctions/arm_pid_reset_f32.c
+++ /dev/null
@@ -1,53 +0,0 @@
-/* ----------------------------------------------------------------------
- * Project:      CMSIS DSP Library
- * Title:        arm_pid_reset_f32.c
- * Description:  Floating-point PID Control reset function
- *
- * $Date:        27. January 2017
- * $Revision:    V.1.5.1
- *
- * Target Processor: Cortex-M cores
- * -------------------------------------------------------------------- */
-/*
- * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved.
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the License); you may
- * not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "arm_math.h"
-
- /**
- * @addtogroup PID
- * @{
- */
-
-/**
-* @brief  Reset function for the floating-point PID Control.
-* @param[in] *S	Instance pointer of PID control data structure.
-* @return none.
-* \par Description:
-* The function resets the state buffer to zeros.
-*/
-void arm_pid_reset_f32(
-  arm_pid_instance_f32 * S)
-{
-
-  /* Clear the state buffer.  The size will be always 3 samples */
-  memset(S->state, 0, 3U * sizeof(float32_t));
-}
-
-/**
- * @} end of PID group
- */
diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ControllerFunctions/arm_pid_reset_q15.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ControllerFunctions/arm_pid_reset_q15.c
deleted file mode 100644
index 93c0e7c..0000000
--- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ControllerFunctions/arm_pid_reset_q15.c
+++ /dev/null
@@ -1,52 +0,0 @@
-/* ----------------------------------------------------------------------
- * Project:      CMSIS DSP Library
- * Title:        arm_pid_reset_q15.c
- * Description:  Q15 PID Control reset function
- *
- * $Date:        27. January 2017
- * $Revision:    V.1.5.1
- *
- * Target Processor: Cortex-M cores
- * -------------------------------------------------------------------- */
-/*
- * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved.
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the License); you may
- * not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "arm_math.h"
-
- /**
- * @addtogroup PID
- * @{
- */
-
-/**
-* @brief  Reset function for the Q15 PID Control.
-* @param[in] *S		Instance pointer of PID control data structure.
-* @return none.
-* \par Description:
-* The function resets the state buffer to zeros.
-*/
-void arm_pid_reset_q15(
-  arm_pid_instance_q15 * S)
-{
-  /* Reset state to zero, The size will be always 3 samples */
-  memset(S->state, 0, 3U * sizeof(q15_t));
-}
-
-/**
- * @} end of PID group
- */
diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ControllerFunctions/arm_pid_reset_q31.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ControllerFunctions/arm_pid_reset_q31.c
deleted file mode 100644
index 4c5b14e..0000000
--- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ControllerFunctions/arm_pid_reset_q31.c
+++ /dev/null
@@ -1,53 +0,0 @@
-/* ----------------------------------------------------------------------
- * Project:      CMSIS DSP Library
- * Title:        arm_pid_reset_q31.c
- * Description:  Q31 PID Control reset function
- *
- * $Date:        27. January 2017
- * $Revision:    V.1.5.1
- *
- * Target Processor: Cortex-M cores
- * -------------------------------------------------------------------- */
-/*
- * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved.
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the License); you may
- * not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "arm_math.h"
-
- /**
- * @addtogroup PID
- * @{
- */
-
-/**
-* @brief  Reset function for the Q31 PID Control.
-* @param[in] *S	Instance pointer of PID control data structure.
-* @return none.
-* \par Description:
-* The function resets the state buffer to zeros.
-*/
-void arm_pid_reset_q31(
-  arm_pid_instance_q31 * S)
-{
-
-  /* Clear the state buffer.  The size will be always 3 samples */
-  memset(S->state, 0, 3U * sizeof(q31_t));
-}
-
-/**
- * @} end of PID group
- */
diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ControllerFunctions/arm_sin_cos_f32.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ControllerFunctions/arm_sin_cos_f32.c
deleted file mode 100644
index 7ec1b53..0000000
--- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ControllerFunctions/arm_sin_cos_f32.c
+++ /dev/null
@@ -1,144 +0,0 @@
-/* ----------------------------------------------------------------------
- * Project:      CMSIS DSP Library
- * Title:        arm_sin_cos_f32.c
- * Description:  Sine and Cosine calculation for floating-point values
- *
- * $Date:        27. January 2017
- * $Revision:    V.1.5.1
- *
- * Target Processor: Cortex-M cores
- * -------------------------------------------------------------------- */
-/*
- * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved.
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the License); you may
- * not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "arm_math.h"
-#include "arm_common_tables.h"
-
-/**
- * @ingroup groupController
- */
-
-/**
- * @defgroup SinCos Sine Cosine
- *
- * Computes the trigonometric sine and cosine values using a combination of table lookup
- * and linear interpolation.
- * There are separate functions for Q31 and floating-point data types.
- * The input to the floating-point version is in degrees while the
- * fixed-point Q31 have a scaled input with the range
- * [-1 0.9999] mapping to [-180 +180] degrees.
- *
- * The floating point function also allows values that are out of the usual range. When this happens, the function will
- * take extra time to adjust the input value to the range of [-180 180].
- *
- * The result is accurate to 5 digits after the decimal point.
- *
- * The implementation is based on table lookup using 360 values together with linear interpolation.
- * The steps used are:
- *  -# Calculation of the nearest integer table index.
- *  -# Compute the fractional portion (fract) of the input.
- *  -# Fetch the value corresponding to \c index from sine table to \c y0 and also value from \c index+1 to \c y1.
- *  -# Sine value is computed as  *psinVal = y0 + (fract * (y1 - y0)).
- *  -# Fetch the value corresponding to \c index from cosine table to \c y0 and also value from \c index+1 to \c y1.
- *  -# Cosine value is computed as  *pcosVal = y0 + (fract * (y1 - y0)).
- */
-
- /**
- * @addtogroup SinCos
- * @{
- */
-
-/**
- * @brief  Floating-point sin_cos function.
- * @param[in]  theta    input value in degrees
- * @param[out] *pSinVal points to the processed sine output.
- * @param[out] *pCosVal points to the processed cos output.
- * @return none.
- */
-
-void arm_sin_cos_f32(
-                      float32_t theta,
-                      float32_t * pSinVal,
-                      float32_t * pCosVal)
-{
-    float32_t fract, in;                             /* Temporary variables for input, output */
-    uint16_t indexS, indexC;                         /* Index variable */
-    float32_t f1, f2, d1, d2;                        /* Two nearest output values */
-    float32_t findex, Dn, Df, temp;
-
-    /* input x is in degrees */
-    /* Scale the input, divide input by 360, for cosine add 0.25 (pi/2) to read sine table */
-    in = theta * 0.00277777777778f;
-
-    if (in < 0.0f)
-    {
-        in = -in;
-    }
-
-    in = in - (int32_t)in;
-
-    /* Calculation of index of the table */
-    findex = (float32_t) FAST_MATH_TABLE_SIZE * in;
-    indexS = ((uint16_t)findex) & 0x1ff;
-    indexC = (indexS + (FAST_MATH_TABLE_SIZE / 4)) & 0x1ff;
-
-    /* fractional value calculation */
-    fract = findex - (float32_t) indexS;
-
-    /* Read two nearest values of input value from the cos & sin tables */
-    f1 = sinTable_f32[indexC+0];
-    f2 = sinTable_f32[indexC+1];
-    d1 = -sinTable_f32[indexS+0];
-    d2 = -sinTable_f32[indexS+1];
-
-    temp = (1.0f - fract) * f1 + fract * f2;
-
-    Dn = 0.0122718463030f; // delta between the two points (fixed), in this case 2*pi/FAST_MATH_TABLE_SIZE
-    Df = f2 - f1;          // delta between the values of the functions
-
-    temp = Dn *(d1 + d2) - 2 * Df;
-    temp = fract * temp + (3 * Df - (d2 + 2 * d1) * Dn);
-    temp = fract * temp + d1 * Dn;
-
-    /* Calculation of cosine value */
-    *pCosVal = fract * temp + f1;
-
-    /* Read two nearest values of input value from the cos & sin tables */
-    f1 = sinTable_f32[indexS+0];
-    f2 = sinTable_f32[indexS+1];
-    d1 = sinTable_f32[indexC+0];
-    d2 = sinTable_f32[indexC+1];
-
-    temp = (1.0f - fract) * f1 + fract * f2;
-
-    Df = f2 - f1; // delta between the values of the functions
-    temp = Dn*(d1 + d2) - 2*Df;
-    temp = fract*temp + (3*Df - (d2 + 2*d1)*Dn);
-    temp = fract*temp + d1*Dn;
-
-    /* Calculation of sine value */
-    *pSinVal = fract*temp + f1;
-
-    if (theta < 0.0f)
-    {
-        *pSinVal = -*pSinVal;
-    }
-}
-/**
- * @} end of SinCos group
- */
diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ControllerFunctions/arm_sin_cos_q31.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ControllerFunctions/arm_sin_cos_q31.c
deleted file mode 100644
index d661830..0000000
--- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/ControllerFunctions/arm_sin_cos_q31.c
+++ /dev/null
@@ -1,110 +0,0 @@
-/* ----------------------------------------------------------------------
- * Project:      CMSIS DSP Library
- * Title:        arm_sin_cos_q31.c
- * Description:  Cosine & Sine calculation for Q31 values
- *
- * $Date:        27. January 2017
- * $Revision:    V.1.5.1
- *
- * Target Processor: Cortex-M cores
- * -------------------------------------------------------------------- */
-/*
- * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved.
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the License); you may
- * not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "arm_math.h"
-#include "arm_common_tables.h"
-
-/**
- * @ingroup groupController
- */
-
- /**
- * @addtogroup SinCos
- * @{
- */
-
-/**
- * @brief  Q31 sin_cos function.
- * @param[in]  theta    scaled input value in degrees
- * @param[out] *pSinVal points to the processed sine output.
- * @param[out] *pCosVal points to the processed cosine output.
- * @return none.
- *
- * The Q31 input value is in the range [-1 0.999999] and is mapped to a degree value in the range [-180 179].
- *
- */
-
-void arm_sin_cos_q31(
-  q31_t theta,
-  q31_t * pSinVal,
-  q31_t * pCosVal)
-{
-  q31_t fract;                                 /* Temporary variables for input, output */
-  uint16_t indexS, indexC;                     /* Index variable */
-  q31_t f1, f2, d1, d2;                        /* Two nearest output values */
-  q31_t Dn, Df;
-  q63_t temp;
-
-  /* Calculate the nearest index */
-  indexS = (uint32_t)theta >> CONTROLLER_Q31_SHIFT;
-  indexC = (indexS + 128) & 0x1ff;
-
-  /* Calculation of fractional value */
-  fract = (theta - (indexS << CONTROLLER_Q31_SHIFT)) << 8;
-
-  /* Read two nearest values of input value from the cos & sin tables */
-  f1 = sinTable_q31[indexC+0];
-  f2 = sinTable_q31[indexC+1];
-  d1 = -sinTable_q31[indexS+0];
-  d2 = -sinTable_q31[indexS+1];
-
-  Dn = 0x1921FB5; // delta between the two points (fixed), in this case 2*pi/FAST_MATH_TABLE_SIZE
-  Df = f2 - f1; // delta between the values of the functions
-  temp = Dn*((q63_t)d1 + d2);
-  temp = temp - ((q63_t)Df << 32);
-  temp = (q63_t)fract*(temp >> 31);
-  temp = temp + ((3*(q63_t)Df << 31) - (d2 + ((q63_t)d1 << 1))*Dn);
-  temp = (q63_t)fract*(temp >> 31);
-  temp = temp + (q63_t)d1*Dn;
-  temp = (q63_t)fract*(temp >> 31);
-
-  /* Calculation of cosine value */
-  *pCosVal = clip_q63_to_q31((temp >> 31) + (q63_t)f1);
-
-  /* Read two nearest values of input value from the cos & sin tables */
-  f1 = sinTable_q31[indexS+0];
-  f2 = sinTable_q31[indexS+1];
-  d1 = sinTable_q31[indexC+0];
-  d2 = sinTable_q31[indexC+1];
-
-  Df = f2 - f1; // delta between the values of the functions
-  temp = Dn*((q63_t)d1 + d2);
-  temp = temp - ((q63_t)Df << 32);
-  temp = (q63_t)fract*(temp >> 31);
-  temp = temp + ((3*(q63_t)Df << 31) - (d2 + ((q63_t)d1 << 1))*Dn);
-  temp = (q63_t)fract*(temp >> 31);
-  temp = temp + (q63_t)d1*Dn;
-  temp = (q63_t)fract*(temp >> 31);
-
-  /* Calculation of sine value */
-  *pSinVal = clip_q63_to_q31((temp >> 31) + (q63_t)f1);
-}
-
-/**
- * @} end of SinCos group
- */
diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FastMathFunctions/arm_cos_f32.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FastMathFunctions/arm_cos_f32.c
deleted file mode 100644
index e604b3c..0000000
--- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FastMathFunctions/arm_cos_f32.c
+++ /dev/null
@@ -1,115 +0,0 @@
-/* ----------------------------------------------------------------------
- * Project:      CMSIS DSP Library
- * Title:        arm_cos_f32.c
- * Description:  Fast cosine calculation for floating-point values
- *
- * $Date:        27. January 2017
- * $Revision:    V.1.5.1
- *
- * Target Processor: Cortex-M cores
- * -------------------------------------------------------------------- */
-/*
- * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved.
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the License); you may
- * not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "arm_math.h"
-#include "arm_common_tables.h"
-/**
- * @ingroup groupFastMath
- */
-
-/**
- * @defgroup cos Cosine
- *
- * Computes the trigonometric cosine function using a combination of table lookup
- * and linear interpolation.  There are separate functions for
- * Q15, Q31, and floating-point data types.
- * The input to the floating-point version is in radians and in the range [0 2*pi) while the
- * fixed-point Q15 and Q31 have a scaled input with the range
- * [0 +0.9999] mapping to [0 2*pi).  The fixed-point range is chosen so that a
- * value of 2*pi wraps around to 0.
- *
- * The implementation is based on table lookup using 256 values together with linear interpolation.
- * The steps used are:
- *  -# Calculation of the nearest integer table index
- *  -# Compute the fractional portion (fract) of the table index.
- *  -# The final result equals (1.0f-fract)*a + fract*b;
- *
- * where
- * 
- *    b=Table[index+0];
- *    c=Table[index+1];
- * 
- */ - - /** - * @addtogroup cos - * @{ - */ - -/** - * @brief Fast approximation to the trigonometric cosine function for floating-point data. - * @param[in] x input value in radians. - * @return cos(x). - */ - -float32_t arm_cos_f32( - float32_t x) -{ - float32_t cosVal, fract, in; /* Temporary variables for input, output */ - uint16_t index; /* Index variable */ - float32_t a, b; /* Two nearest output values */ - int32_t n; - float32_t findex; - - /* input x is in radians */ - /* Scale the input to [0 1] range from [0 2*PI] , divide input by 2*pi, add 0.25 (pi/2) to read sine table */ - in = x * 0.159154943092f + 0.25f; - - /* Calculation of floor value of input */ - n = (int32_t) in; - - /* Make negative values towards -infinity */ - if (in < 0.0f) - { - n--; - } - - /* Map input value to [0 1] */ - in = in - (float32_t) n; - - /* Calculation of index of the table */ - findex = (float32_t) FAST_MATH_TABLE_SIZE * in; - index = ((uint16_t)findex) & 0x1ff; - - /* fractional value calculation */ - fract = findex - (float32_t) index; - - /* Read two nearest values of input value from the cos table */ - a = sinTable_f32[index]; - b = sinTable_f32[index+1]; - - /* Linear interpolation process */ - cosVal = (1.0f-fract)*a + fract*b; - - /* Return the output value */ - return (cosVal); -} - -/** - * @} end of cos group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FastMathFunctions/arm_cos_q15.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FastMathFunctions/arm_cos_q15.c deleted file mode 100644 index 7fa2e18..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FastMathFunctions/arm_cos_q15.c +++ /dev/null @@ -1,84 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_cos_q15.c - * Description: Fast cosine calculation for Q15 values - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" -#include "arm_common_tables.h" - -/** - * @ingroup groupFastMath - */ - - /** - * @addtogroup cos - * @{ - */ - -/** - * @brief Fast approximation to the trigonometric cosine function for Q15 data. - * @param[in] x Scaled input value in radians. - * @return cos(x). - * - * The Q15 input value is in the range [0 +0.9999] and is mapped to a radian - * value in the range [0 2*pi). - */ - -q15_t arm_cos_q15( - q15_t x) -{ - q15_t cosVal; /* Temporary variables for input, output */ - int32_t index; /* Index variables */ - q15_t a, b; /* Four nearest output values */ - q15_t fract; /* Temporary values for fractional values */ - - /* add 0.25 (pi/2) to read sine table */ - x = (uint16_t)x + 0x2000; - if (x < 0) - { /* convert negative numbers to corresponding positive ones */ - x = (uint16_t)x + 0x8000; - } - - /* Calculate the nearest index */ - index = (uint32_t)x >> FAST_MATH_Q15_SHIFT; - - /* Calculation of fractional value */ - fract = (x - (index << FAST_MATH_Q15_SHIFT)) << 9; - - /* Read two nearest values of input value from the sin table */ - a = sinTable_q15[index]; - b = sinTable_q15[index+1]; - - /* Linear interpolation process */ - cosVal = (q31_t)(0x8000-fract)*a >> 16; - cosVal = (q15_t)((((q31_t)cosVal << 16) + ((q31_t)fract*b)) >> 16); - - return cosVal << 1; -} - -/** - * @} end of cos group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FastMathFunctions/arm_cos_q31.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FastMathFunctions/arm_cos_q31.c deleted file mode 100644 index fde5368..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FastMathFunctions/arm_cos_q31.c +++ /dev/null @@ -1,84 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_cos_q31.c - * Description: Fast cosine calculation for Q31 values - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" -#include "arm_common_tables.h" - -/** - * @ingroup groupFastMath - */ - - /** - * @addtogroup cos - * @{ - */ - -/** - * @brief Fast approximation to the trigonometric cosine function for Q31 data. - * @param[in] x Scaled input value in radians. - * @return cos(x). - * - * The Q31 input value is in the range [0 +0.9999] and is mapped to a radian - * value in the range [0 2*pi). - */ - -q31_t arm_cos_q31( - q31_t x) -{ - q31_t cosVal; /* Temporary variables for input, output */ - int32_t index; /* Index variables */ - q31_t a, b; /* Four nearest output values */ - q31_t fract; /* Temporary values for fractional values */ - - /* add 0.25 (pi/2) to read sine table */ - x = (uint32_t)x + 0x20000000; - if (x < 0) - { /* convert negative numbers to corresponding positive ones */ - x = (uint32_t)x + 0x80000000; - } - - /* Calculate the nearest index */ - index = (uint32_t)x >> FAST_MATH_Q31_SHIFT; - - /* Calculation of fractional value */ - fract = (x - (index << FAST_MATH_Q31_SHIFT)) << 9; - - /* Read two nearest values of input value from the sin table */ - a = sinTable_q31[index]; - b = sinTable_q31[index+1]; - - /* Linear interpolation process */ - cosVal = (q63_t)(0x80000000-fract)*a >> 32; - cosVal = (q31_t)((((q63_t)cosVal << 32) + ((q63_t)fract*b)) >> 32); - - return cosVal << 1; -} - -/** - * @} end of cos group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FastMathFunctions/arm_sin_f32.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FastMathFunctions/arm_sin_f32.c deleted file mode 100644 index ce8b9b9..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FastMathFunctions/arm_sin_f32.c +++ /dev/null @@ -1,123 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_sin_f32.c - * Description: Fast sine calculation for floating-point values - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" -#include "arm_common_tables.h" -#include - -/** - * @ingroup groupFastMath - */ - -/** - * @defgroup sin Sine - * - * Computes the trigonometric sine function using a combination of table lookup - * and linear interpolation. There are separate functions for - * Q15, Q31, and floating-point data types. - * The input to the floating-point version is in radians and in the range [0 2*pi) while the - * fixed-point Q15 and Q31 have a scaled input with the range - * [0 +0.9999] mapping to [0 2*pi). The fixed-point range is chosen so that a - * value of 2*pi wraps around to 0. - * - * The implementation is based on table lookup using 256 values together with linear interpolation. - * The steps used are: - * -# Calculation of the nearest integer table index - * -# Compute the fractional portion (fract) of the table index. - * -# The final result equals (1.0f-fract)*a + fract*b; - * - * where - *
- *    b=Table[index+0];
- *    c=Table[index+1];
- * 
- */ - -/** - * @addtogroup sin - * @{ - */ - -/** - * @brief Fast approximation to the trigonometric sine function for floating-point data. - * @param[in] x input value in radians. - * @return sin(x). - */ - -float32_t arm_sin_f32( - float32_t x) -{ - float32_t sinVal, fract, in; /* Temporary variables for input, output */ - uint16_t index; /* Index variable */ - float32_t a, b; /* Two nearest output values */ - int32_t n; - float32_t findex; - - /* Special case for small negative inputs */ - if ((x < 0.0f) && (x >= -1.9e-7f)) { - return x; - } - - /* input x is in radians */ - /* Scale the input to [0 1] range from [0 2*PI] , divide input by 2*pi */ - in = x * 0.159154943092f; - - /* Calculation of floor value of input */ - n = (int32_t) in; - - /* Make negative values towards -infinity */ - if (x < 0.0f) - { - n--; - } - - /* Map input value to [0 1] */ - in = in - (float32_t) n; - - /* Calculation of index of the table */ - findex = (float32_t) FAST_MATH_TABLE_SIZE * in; - - index = ((uint16_t)findex) & 0x1ff; - - /* fractional value calculation */ - fract = findex - (float32_t) index; - - /* Read two nearest values of input value from the sin table */ - a = sinTable_f32[index]; - b = sinTable_f32[index+1]; - - /* Linear interpolation process */ - sinVal = (1.0f-fract)*a + fract*b; - - /* Return the output value */ - return (sinVal); -} - -/** - * @} end of sin group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FastMathFunctions/arm_sin_q15.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FastMathFunctions/arm_sin_q15.c deleted file mode 100644 index 7c8f627..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FastMathFunctions/arm_sin_q15.c +++ /dev/null @@ -1,76 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_sin_q15.c - * Description: Fast sine calculation for Q15 values - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" -#include "arm_common_tables.h" - -/** - * @ingroup groupFastMath - */ - - /** - * @addtogroup sin - * @{ - */ - -/** - * @brief Fast approximation to the trigonometric sine function for Q15 data. - * @param[in] x Scaled input value in radians. - * @return sin(x). - * - * The Q15 input value is in the range [0 +0.9999] and is mapped to a radian value in the range [0 2*pi). - */ - -q15_t arm_sin_q15( - q15_t x) -{ - q15_t sinVal; /* Temporary variables for input, output */ - int32_t index; /* Index variables */ - q15_t a, b; /* Four nearest output values */ - q15_t fract; /* Temporary values for fractional values */ - - /* Calculate the nearest index */ - index = (uint32_t)x >> FAST_MATH_Q15_SHIFT; - - /* Calculation of fractional value */ - fract = (x - (index << FAST_MATH_Q15_SHIFT)) << 9; - - /* Read two nearest values of input value from the sin table */ - a = sinTable_q15[index]; - b = sinTable_q15[index+1]; - - /* Linear interpolation process */ - sinVal = (q31_t)(0x8000-fract)*a >> 16; - sinVal = (q15_t)((((q31_t)sinVal << 16) + ((q31_t)fract*b)) >> 16); - - return sinVal << 1; -} - -/** - * @} end of sin group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FastMathFunctions/arm_sin_q31.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FastMathFunctions/arm_sin_q31.c deleted file mode 100644 index 8d3c7ac..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FastMathFunctions/arm_sin_q31.c +++ /dev/null @@ -1,75 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_sin_q31.c - * Description: Fast sine calculation for Q31 values - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" -#include "arm_common_tables.h" - -/** - * @ingroup groupFastMath - */ - - /** - * @addtogroup sin - * @{ - */ - -/** - * @brief Fast approximation to the trigonometric sine function for Q31 data. - * @param[in] x Scaled input value in radians. - * @return sin(x). - * - * The Q31 input value is in the range [0 +0.9999] and is mapped to a radian value in the range [0 2*pi). */ - -q31_t arm_sin_q31( - q31_t x) -{ - q31_t sinVal; /* Temporary variables for input, output */ - int32_t index; /* Index variables */ - q31_t a, b; /* Four nearest output values */ - q31_t fract; /* Temporary values for fractional values */ - - /* Calculate the nearest index */ - index = (uint32_t)x >> FAST_MATH_Q31_SHIFT; - - /* Calculation of fractional value */ - fract = (x - (index << FAST_MATH_Q31_SHIFT)) << 9; - - /* Read two nearest values of input value from the sin table */ - a = sinTable_q31[index]; - b = sinTable_q31[index+1]; - - /* Linear interpolation process */ - sinVal = (q63_t)(0x80000000-fract)*a >> 32; - sinVal = (q31_t)((((q63_t)sinVal << 32) + ((q63_t)fract*b)) >> 32); - - return sinVal << 1; -} - -/** - * @} end of sin group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FastMathFunctions/arm_sqrt_q15.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FastMathFunctions/arm_sqrt_q15.c deleted file mode 100644 index 8487ed3..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FastMathFunctions/arm_sqrt_q15.c +++ /dev/null @@ -1,144 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_sqrt_q15.c - * Description: Q15 square root function - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" -#include "arm_common_tables.h" - - -/** - * @ingroup groupFastMath - */ - -/** - * @addtogroup SQRT - * @{ - */ - - /** - * @brief Q15 square root function. - * @param[in] in input value. The range of the input value is [0 +1) or 0x0000 to 0x7FFF. - * @param[out] *pOut square root of input value. - * @return The function returns ARM_MATH_SUCCESS if the input value is positive - * and ARM_MATH_ARGUMENT_ERROR if the input is negative. For - * negative inputs, the function returns *pOut = 0. - */ - -arm_status arm_sqrt_q15( - q15_t in, - q15_t * pOut) -{ - q15_t number, temp1, var1, signBits1, half; - q31_t bits_val1; - float32_t temp_float1; - union - { - q31_t fracval; - float32_t floatval; - } tempconv; - - number = in; - - /* If the input is a positive number then compute the signBits. */ - if (number > 0) - { - signBits1 = __CLZ(number) - 17; - - /* Shift by the number of signBits1 */ - if ((signBits1 % 2) == 0) - { - number = number << signBits1; - } - else - { - number = number << (signBits1 - 1); - } - - /* Calculate half value of the number */ - half = number >> 1; - /* Store the number for later use */ - temp1 = number; - - /* Convert to float */ - temp_float1 = number * 3.051757812500000e-005f; - /*Store as integer */ - tempconv.floatval = temp_float1; - bits_val1 = tempconv.fracval; - /* Subtract the shifted value from the magic number to give intial guess */ - bits_val1 = 0x5f3759df - (bits_val1 >> 1); /* gives initial guess */ - /* Store as float */ - tempconv.fracval = bits_val1; - temp_float1 = tempconv.floatval; - /* Convert to integer format */ - var1 = (q31_t) (temp_float1 * 16384); - - /* 1st iteration */ - var1 = ((q15_t) ((q31_t) var1 * (0x3000 - - ((q15_t) - ((((q15_t) - (((q31_t) var1 * var1) >> 15)) * - (q31_t) half) >> 15))) >> 15)) << 2; - /* 2nd iteration */ - var1 = ((q15_t) ((q31_t) var1 * (0x3000 - - ((q15_t) - ((((q15_t) - (((q31_t) var1 * var1) >> 15)) * - (q31_t) half) >> 15))) >> 15)) << 2; - /* 3rd iteration */ - var1 = ((q15_t) ((q31_t) var1 * (0x3000 - - ((q15_t) - ((((q15_t) - (((q31_t) var1 * var1) >> 15)) * - (q31_t) half) >> 15))) >> 15)) << 2; - - /* Multiply the inverse square root with the original value */ - var1 = ((q15_t) (((q31_t) temp1 * var1) >> 15)) << 1; - - /* Shift the output down accordingly */ - if ((signBits1 % 2) == 0) - { - var1 = var1 >> (signBits1 / 2); - } - else - { - var1 = var1 >> ((signBits1 - 1) / 2); - } - *pOut = var1; - - return (ARM_MATH_SUCCESS); - } - /* If the number is a negative number then store zero as its square root value */ - else - { - *pOut = 0; - return (ARM_MATH_ARGUMENT_ERROR); - } -} - -/** - * @} end of SQRT group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FastMathFunctions/arm_sqrt_q31.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FastMathFunctions/arm_sqrt_q31.c deleted file mode 100644 index 0deea04..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FastMathFunctions/arm_sqrt_q31.c +++ /dev/null @@ -1,142 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_sqrt_q31.c - * Description: Q31 square root function - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" -#include "arm_common_tables.h" - -/** - * @ingroup groupFastMath - */ - -/** - * @addtogroup SQRT - * @{ - */ - -/** - * @brief Q31 square root function. - * @param[in] in input value. The range of the input value is [0 +1) or 0x00000000 to 0x7FFFFFFF. - * @param[out] *pOut square root of input value. - * @return The function returns ARM_MATH_SUCCESS if the input value is positive - * and ARM_MATH_ARGUMENT_ERROR if the input is negative. For - * negative inputs, the function returns *pOut = 0. - */ - -arm_status arm_sqrt_q31( - q31_t in, - q31_t * pOut) -{ - q31_t number, temp1, bits_val1, var1, signBits1, half; - float32_t temp_float1; - union - { - q31_t fracval; - float32_t floatval; - } tempconv; - - number = in; - - /* If the input is a positive number then compute the signBits. */ - if (number > 0) - { - signBits1 = __CLZ(number) - 1; - - /* Shift by the number of signBits1 */ - if ((signBits1 % 2) == 0) - { - number = number << signBits1; - } - else - { - number = number << (signBits1 - 1); - } - - /* Calculate half value of the number */ - half = number >> 1; - /* Store the number for later use */ - temp1 = number; - - /*Convert to float */ - temp_float1 = number * 4.6566128731e-010f; - /*Store as integer */ - tempconv.floatval = temp_float1; - bits_val1 = tempconv.fracval; - /* Subtract the shifted value from the magic number to give intial guess */ - bits_val1 = 0x5f3759df - (bits_val1 >> 1); /* gives initial guess */ - /* Store as float */ - tempconv.fracval = bits_val1; - temp_float1 = tempconv.floatval; - /* Convert to integer format */ - var1 = (q31_t) (temp_float1 * 1073741824); - - /* 1st iteration */ - var1 = ((q31_t) ((q63_t) var1 * (0x30000000 - - ((q31_t) - ((((q31_t) - (((q63_t) var1 * var1) >> 31)) * - (q63_t) half) >> 31))) >> 31)) << 2; - /* 2nd iteration */ - var1 = ((q31_t) ((q63_t) var1 * (0x30000000 - - ((q31_t) - ((((q31_t) - (((q63_t) var1 * var1) >> 31)) * - (q63_t) half) >> 31))) >> 31)) << 2; - /* 3rd iteration */ - var1 = ((q31_t) ((q63_t) var1 * (0x30000000 - - ((q31_t) - ((((q31_t) - (((q63_t) var1 * var1) >> 31)) * - (q63_t) half) >> 31))) >> 31)) << 2; - - /* Multiply the inverse square root with the original value */ - var1 = ((q31_t) (((q63_t) temp1 * var1) >> 31)) << 1; - - /* Shift the output down accordingly */ - if ((signBits1 % 2) == 0) - { - var1 = var1 >> (signBits1 / 2); - } - else - { - var1 = var1 >> ((signBits1 - 1) / 2); - } - *pOut = var1; - - return (ARM_MATH_SUCCESS); - } - /* If the number is a negative number then store zero as its square root value */ - else - { - *pOut = 0; - return (ARM_MATH_ARGUMENT_ERROR); - } -} - -/** - * @} end of SQRT group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_32x64_init_q31.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_32x64_init_q31.c deleted file mode 100644 index 8f92496..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_32x64_init_q31.c +++ /dev/null @@ -1,98 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_biquad_cascade_df1_32x64_init_q31.c - * Description: High precision Q31 Biquad cascade filter initialization function - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupFilters - */ - -/** - * @addtogroup BiquadCascadeDF1_32x64 - * @{ - */ - -/** - * @details - * - * @param[in,out] *S points to an instance of the high precision Q31 Biquad cascade filter structure. - * @param[in] numStages number of 2nd order stages in the filter. - * @param[in] *pCoeffs points to the filter coefficients. - * @param[in] *pState points to the state buffer. - * @param[in] postShift Shift to be applied after the accumulator. Varies according to the coefficients format. - * @return none - * - * Coefficient and State Ordering: - * - * \par - * The coefficients are stored in the array pCoeffs in the following order: - *
- *     {b10, b11, b12, a11, a12, b20, b21, b22, a21, a22, ...}
- * 
- * where b1x and a1x are the coefficients for the first stage, - * b2x and a2x are the coefficients for the second stage, - * and so on. The pCoeffs array contains a total of 5*numStages values. - * - * \par - * The pState points to state variables array and size of each state variable is 1.63 format. - * Each Biquad stage has 4 state variables x[n-1], x[n-2], y[n-1], and y[n-2]. - * The state variables are arranged in the state array as: - *
- *     {x[n-1], x[n-2], y[n-1], y[n-2]}
- * 
- * The 4 state variables for stage 1 are first, then the 4 state variables for stage 2, and so on. - * The state array has a total length of 4*numStages values. - * The state variables are updated after each block of data is processed; the coefficients are untouched. - */ - -void arm_biquad_cas_df1_32x64_init_q31( - arm_biquad_cas_df1_32x64_ins_q31 * S, - uint8_t numStages, - q31_t * pCoeffs, - q63_t * pState, - uint8_t postShift) -{ - /* Assign filter stages */ - S->numStages = numStages; - - /* Assign postShift to be applied to the output */ - S->postShift = postShift; - - /* Assign coefficient pointer */ - S->pCoeffs = pCoeffs; - - /* Clear state buffer and size is always 4 * numStages */ - memset(pState, 0, (4U * (uint32_t) numStages) * sizeof(q63_t)); - - /* Assign state pointer */ - S->pState = pState; -} - -/** - * @} end of BiquadCascadeDF1_32x64 group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_32x64_q31.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_32x64_q31.c deleted file mode 100644 index c77cc8e..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_32x64_q31.c +++ /dev/null @@ -1,549 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_biquad_cascade_df1_32x64_q31.c - * Description: High precision Q31 Biquad cascade filter processing function - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupFilters - */ - -/** - * @defgroup BiquadCascadeDF1_32x64 High Precision Q31 Biquad Cascade Filter - * - * This function implements a high precision Biquad cascade filter which operates on - * Q31 data values. The filter coefficients are in 1.31 format and the state variables - * are in 1.63 format. The double precision state variables reduce quantization noise - * in the filter and provide a cleaner output. - * These filters are particularly useful when implementing filters in which the - * singularities are close to the unit circle. This is common for low pass or high - * pass filters with very low cutoff frequencies. - * - * The function operates on blocks of input and output data - * and each call to the function processes blockSize samples through - * the filter. pSrc and pDst points to input and output arrays - * containing blockSize Q31 values. - * - * \par Algorithm - * Each Biquad stage implements a second order filter using the difference equation: - *
- *     y[n] = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2]
- * 
- * A Direct Form I algorithm is used with 5 coefficients and 4 state variables per stage. - * \image html Biquad.gif "Single Biquad filter stage" - * Coefficients b0, b1, and b2 multiply the input signal x[n] and are referred to as the feedforward coefficients. - * Coefficients a1 and a2 multiply the output signal y[n] and are referred to as the feedback coefficients. - * Pay careful attention to the sign of the feedback coefficients. - * Some design tools use the difference equation - *
- *     y[n] = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] - a1 * y[n-1] - a2 * y[n-2]
- * 
- * In this case the feedback coefficients a1 and a2 must be negated when used with the CMSIS DSP Library. - * - * \par - * Higher order filters are realized as a cascade of second order sections. - * numStages refers to the number of second order stages used. - * For example, an 8th order filter would be realized with numStages=4 second order stages. - * \image html BiquadCascade.gif "8th order filter using a cascade of Biquad stages" - * A 9th order filter would be realized with numStages=5 second order stages with the coefficients for one of the stages configured as a first order filter (b2=0 and a2=0). - * - * \par - * The pState points to state variables array . - * Each Biquad stage has 4 state variables x[n-1], x[n-2], y[n-1], and y[n-2] and each state variable in 1.63 format to improve precision. - * The state variables are arranged in the array as: - *
- *     {x[n-1], x[n-2], y[n-1], y[n-2]}
- * 
- * - * \par - * The 4 state variables for stage 1 are first, then the 4 state variables for stage 2, and so on. - * The state array has a total length of 4*numStages values of data in 1.63 format. - * The state variables are updated after each block of data is processed; the coefficients are untouched. - * - * \par Instance Structure - * The coefficients and state variables for a filter are stored together in an instance data structure. - * A separate instance structure must be defined for each filter. - * Coefficient arrays may be shared among several instances while state variable arrays cannot be shared. - * - * \par Init Function - * There is also an associated initialization function which performs the following operations: - * - Sets the values of the internal structure fields. - * - Zeros out the values in the state buffer. - * To do this manually without calling the init function, assign the follow subfields of the instance structure: - * numStages, pCoeffs, postShift, pState. Also set all of the values in pState to zero. - * - * \par - * Use of the initialization function is optional. - * However, if the initialization function is used, then the instance structure cannot be placed into a const data section. - * To place an instance structure into a const data section, the instance structure must be manually initialized. - * Set the values in the state buffer to zeros before static initialization. - * For example, to statically initialize the filter instance structure use - *
- *     arm_biquad_cas_df1_32x64_ins_q31 S1 = {numStages, pState, pCoeffs, postShift};
- * 
- * where numStages is the number of Biquad stages in the filter; pState is the address of the state buffer; - * pCoeffs is the address of the coefficient buffer; postShift shift to be applied which is described in detail below. - * \par Fixed-Point Behavior - * Care must be taken while using Biquad Cascade 32x64 filter function. - * Following issues must be considered: - * - Scaling of coefficients - * - Filter gain - * - Overflow and saturation - * - * \par - * Filter coefficients are represented as fractional values and - * restricted to lie in the range [-1 +1). - * The processing function has an additional scaling parameter postShift - * which allows the filter coefficients to exceed the range [+1 -1). - * At the output of the filter's accumulator is a shift register which shifts the result by postShift bits. - * \image html BiquadPostshift.gif "Fixed-point Biquad with shift by postShift bits after accumulator" - * This essentially scales the filter coefficients by 2^postShift. - * For example, to realize the coefficients - *
- *    {1.5, -0.8, 1.2, 1.6, -0.9}
- * 
- * set the Coefficient array to: - *
- *    {0.75, -0.4, 0.6, 0.8, -0.45}
- * 
- * and set postShift=1 - * - * \par - * The second thing to keep in mind is the gain through the filter. - * The frequency response of a Biquad filter is a function of its coefficients. - * It is possible for the gain through the filter to exceed 1.0 meaning that the filter increases the amplitude of certain frequencies. - * This means that an input signal with amplitude < 1.0 may result in an output > 1.0 and these are saturated or overflowed based on the implementation of the filter. - * To avoid this behavior the filter needs to be scaled down such that its peak gain < 1.0 or the input signal must be scaled down so that the combination of input and filter are never overflowed. - * - * \par - * The third item to consider is the overflow and saturation behavior of the fixed-point Q31 version. - * This is described in the function specific documentation below. - */ - -/** - * @addtogroup BiquadCascadeDF1_32x64 - * @{ - */ - -/** - * @details - - * @param[in] *S points to an instance of the high precision Q31 Biquad cascade filter. - * @param[in] *pSrc points to the block of input data. - * @param[out] *pDst points to the block of output data. - * @param[in] blockSize number of samples to process. - * @return none. - * - * \par - * The function is implemented using an internal 64-bit accumulator. - * The accumulator has a 2.62 format and maintains full precision of the intermediate multiplication results but provides only a single guard bit. - * Thus, if the accumulator result overflows it wraps around rather than clip. - * In order to avoid overflows completely the input signal must be scaled down by 2 bits and lie in the range [-0.25 +0.25). - * After all 5 multiply-accumulates are performed, the 2.62 accumulator is shifted by postShift bits and the result truncated to - * 1.31 format by discarding the low 32 bits. - * - * \par - * Two related functions are provided in the CMSIS DSP library. - * arm_biquad_cascade_df1_q31() implements a Biquad cascade with 32-bit coefficients and state variables with a Q63 accumulator. - * arm_biquad_cascade_df1_fast_q31() implements a Biquad cascade with 32-bit coefficients and state variables with a Q31 accumulator. - */ - -void arm_biquad_cas_df1_32x64_q31( - const arm_biquad_cas_df1_32x64_ins_q31 * S, - q31_t * pSrc, - q31_t * pDst, - uint32_t blockSize) -{ - q31_t *pIn = pSrc; /* input pointer initialization */ - q31_t *pOut = pDst; /* output pointer initialization */ - q63_t *pState = S->pState; /* state pointer initialization */ - q31_t *pCoeffs = S->pCoeffs; /* coeff pointer initialization */ - q63_t acc; /* accumulator */ - q31_t Xn1, Xn2; /* Input Filter state variables */ - q63_t Yn1, Yn2; /* Output Filter state variables */ - q31_t b0, b1, b2, a1, a2; /* Filter coefficients */ - q31_t Xn; /* temporary input */ - int32_t shift = (int32_t) S->postShift + 1; /* Shift to be applied to the output */ - uint32_t sample, stage = S->numStages; /* loop counters */ - q31_t acc_l, acc_h; /* temporary output */ - uint32_t uShift = ((uint32_t) S->postShift + 1U); - uint32_t lShift = 32U - uShift; /* Shift to be applied to the output */ - - -#if defined (ARM_MATH_DSP) - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - do - { - /* Reading the coefficients */ - b0 = *pCoeffs++; - b1 = *pCoeffs++; - b2 = *pCoeffs++; - a1 = *pCoeffs++; - a2 = *pCoeffs++; - - /* Reading the state values */ - Xn1 = (q31_t) (pState[0]); - Xn2 = (q31_t) (pState[1]); - Yn1 = pState[2]; - Yn2 = pState[3]; - - /* Apply loop unrolling and compute 4 output values simultaneously. */ - /* The variable acc hold output value that is being computed and - * stored in the destination buffer - * acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] - */ - - sample = blockSize >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (sample > 0U) - { - /* Read the input */ - Xn = *pIn++; - - /* acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */ - - /* acc = b0 * x[n] */ - acc = (q63_t) Xn *b0; - - /* acc += b1 * x[n-1] */ - acc += (q63_t) Xn1 *b1; - - /* acc += b[2] * x[n-2] */ - acc += (q63_t) Xn2 *b2; - - /* acc += a1 * y[n-1] */ - acc += mult32x64(Yn1, a1); - - /* acc += a2 * y[n-2] */ - acc += mult32x64(Yn2, a2); - - /* The result is converted to 1.63 , Yn2 variable is reused */ - Yn2 = acc << shift; - - /* Calc lower part of acc */ - acc_l = acc & 0xffffffff; - - /* Calc upper part of acc */ - acc_h = (acc >> 32) & 0xffffffff; - - /* Apply shift for lower part of acc and upper part of acc */ - acc_h = (uint32_t) acc_l >> lShift | acc_h << uShift; - - /* Store the output in the destination buffer in 1.31 format. */ - *pOut = acc_h; - - /* Read the second input into Xn2, to reuse the value */ - Xn2 = *pIn++; - - /* acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */ - - /* acc += b1 * x[n-1] */ - acc = (q63_t) Xn *b1; - - /* acc = b0 * x[n] */ - acc += (q63_t) Xn2 *b0; - - /* acc += b[2] * x[n-2] */ - acc += (q63_t) Xn1 *b2; - - /* acc += a1 * y[n-1] */ - acc += mult32x64(Yn2, a1); - - /* acc += a2 * y[n-2] */ - acc += mult32x64(Yn1, a2); - - /* The result is converted to 1.63, Yn1 variable is reused */ - Yn1 = acc << shift; - - /* Calc lower part of acc */ - acc_l = acc & 0xffffffff; - - /* Calc upper part of acc */ - acc_h = (acc >> 32) & 0xffffffff; - - /* Apply shift for lower part of acc and upper part of acc */ - acc_h = (uint32_t) acc_l >> lShift | acc_h << uShift; - - /* Read the third input into Xn1, to reuse the value */ - Xn1 = *pIn++; - - /* The result is converted to 1.31 */ - /* Store the output in the destination buffer. */ - *(pOut + 1U) = acc_h; - - /* acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */ - - /* acc = b0 * x[n] */ - acc = (q63_t) Xn1 *b0; - - /* acc += b1 * x[n-1] */ - acc += (q63_t) Xn2 *b1; - - /* acc += b[2] * x[n-2] */ - acc += (q63_t) Xn *b2; - - /* acc += a1 * y[n-1] */ - acc += mult32x64(Yn1, a1); - - /* acc += a2 * y[n-2] */ - acc += mult32x64(Yn2, a2); - - /* The result is converted to 1.63, Yn2 variable is reused */ - Yn2 = acc << shift; - - /* Calc lower part of acc */ - acc_l = acc & 0xffffffff; - - /* Calc upper part of acc */ - acc_h = (acc >> 32) & 0xffffffff; - - /* Apply shift for lower part of acc and upper part of acc */ - acc_h = (uint32_t) acc_l >> lShift | acc_h << uShift; - - /* Store the output in the destination buffer in 1.31 format. */ - *(pOut + 2U) = acc_h; - - /* Read the fourth input into Xn, to reuse the value */ - Xn = *pIn++; - - /* acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */ - /* acc = b0 * x[n] */ - acc = (q63_t) Xn *b0; - - /* acc += b1 * x[n-1] */ - acc += (q63_t) Xn1 *b1; - - /* acc += b[2] * x[n-2] */ - acc += (q63_t) Xn2 *b2; - - /* acc += a1 * y[n-1] */ - acc += mult32x64(Yn2, a1); - - /* acc += a2 * y[n-2] */ - acc += mult32x64(Yn1, a2); - - /* The result is converted to 1.63, Yn1 variable is reused */ - Yn1 = acc << shift; - - /* Calc lower part of acc */ - acc_l = acc & 0xffffffff; - - /* Calc upper part of acc */ - acc_h = (acc >> 32) & 0xffffffff; - - /* Apply shift for lower part of acc and upper part of acc */ - acc_h = (uint32_t) acc_l >> lShift | acc_h << uShift; - - /* Store the output in the destination buffer in 1.31 format. */ - *(pOut + 3U) = acc_h; - - /* Every time after the output is computed state should be updated. */ - /* The states should be updated as: */ - /* Xn2 = Xn1 */ - /* Xn1 = Xn */ - /* Yn2 = Yn1 */ - /* Yn1 = acc */ - Xn2 = Xn1; - Xn1 = Xn; - - /* update output pointer */ - pOut += 4U; - - /* decrement the loop counter */ - sample--; - } - - /* If the blockSize is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - sample = (blockSize & 0x3U); - - while (sample > 0U) - { - /* Read the input */ - Xn = *pIn++; - - /* acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */ - - /* acc = b0 * x[n] */ - acc = (q63_t) Xn *b0; - /* acc += b1 * x[n-1] */ - acc += (q63_t) Xn1 *b1; - /* acc += b[2] * x[n-2] */ - acc += (q63_t) Xn2 *b2; - /* acc += a1 * y[n-1] */ - acc += mult32x64(Yn1, a1); - /* acc += a2 * y[n-2] */ - acc += mult32x64(Yn2, a2); - - /* Every time after the output is computed state should be updated. */ - /* The states should be updated as: */ - /* Xn2 = Xn1 */ - /* Xn1 = Xn */ - /* Yn2 = Yn1 */ - /* Yn1 = acc */ - Xn2 = Xn1; - Xn1 = Xn; - Yn2 = Yn1; - /* The result is converted to 1.63, Yn1 variable is reused */ - Yn1 = acc << shift; - - /* Calc lower part of acc */ - acc_l = acc & 0xffffffff; - - /* Calc upper part of acc */ - acc_h = (acc >> 32) & 0xffffffff; - - /* Apply shift for lower part of acc and upper part of acc */ - acc_h = (uint32_t) acc_l >> lShift | acc_h << uShift; - - /* Store the output in the destination buffer in 1.31 format. */ - *pOut++ = acc_h; - /* Yn1 = acc << shift; */ - - /* Store the output in the destination buffer in 1.31 format. */ -/* *pOut++ = (q31_t) (acc >> (32 - shift)); */ - - /* decrement the loop counter */ - sample--; - } - - /* The first stage output is given as input to the second stage. */ - pIn = pDst; - - /* Reset to destination buffer working pointer */ - pOut = pDst; - - /* Store the updated state variables back into the pState array */ - /* Store the updated state variables back into the pState array */ - *pState++ = (q63_t) Xn1; - *pState++ = (q63_t) Xn2; - *pState++ = Yn1; - *pState++ = Yn2; - - } while (--stage); - -#else - - /* Run the below code for Cortex-M0 */ - - do - { - /* Reading the coefficients */ - b0 = *pCoeffs++; - b1 = *pCoeffs++; - b2 = *pCoeffs++; - a1 = *pCoeffs++; - a2 = *pCoeffs++; - - /* Reading the state values */ - Xn1 = pState[0]; - Xn2 = pState[1]; - Yn1 = pState[2]; - Yn2 = pState[3]; - - /* The variable acc hold output value that is being computed and - * stored in the destination buffer - * acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] - */ - - sample = blockSize; - - while (sample > 0U) - { - /* Read the input */ - Xn = *pIn++; - - /* acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */ - /* acc = b0 * x[n] */ - acc = (q63_t) Xn *b0; - /* acc += b1 * x[n-1] */ - acc += (q63_t) Xn1 *b1; - /* acc += b[2] * x[n-2] */ - acc += (q63_t) Xn2 *b2; - /* acc += a1 * y[n-1] */ - acc += mult32x64(Yn1, a1); - /* acc += a2 * y[n-2] */ - acc += mult32x64(Yn2, a2); - - /* Every time after the output is computed state should be updated. */ - /* The states should be updated as: */ - /* Xn2 = Xn1 */ - /* Xn1 = Xn */ - /* Yn2 = Yn1 */ - /* Yn1 = acc */ - Xn2 = Xn1; - Xn1 = Xn; - Yn2 = Yn1; - - /* The result is converted to 1.63, Yn1 variable is reused */ - Yn1 = acc << shift; - - /* Calc lower part of acc */ - acc_l = acc & 0xffffffff; - - /* Calc upper part of acc */ - acc_h = (acc >> 32) & 0xffffffff; - - /* Apply shift for lower part of acc and upper part of acc */ - acc_h = (uint32_t) acc_l >> lShift | acc_h << uShift; - - /* Store the output in the destination buffer in 1.31 format. */ - *pOut++ = acc_h; - - /* Yn1 = acc << shift; */ - - /* Store the output in the destination buffer in 1.31 format. */ - /* *pOut++ = (q31_t) (acc >> (32 - shift)); */ - - /* decrement the loop counter */ - sample--; - } - - /* The first stage output is given as input to the second stage. */ - pIn = pDst; - - /* Reset to destination buffer working pointer */ - pOut = pDst; - - /* Store the updated state variables back into the pState array */ - *pState++ = (q63_t) Xn1; - *pState++ = (q63_t) Xn2; - *pState++ = Yn1; - *pState++ = Yn2; - - } while (--stage); - -#endif /* #if defined (ARM_MATH_DSP) */ -} - - /** - * @} end of BiquadCascadeDF1_32x64 group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_f32.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_f32.c deleted file mode 100644 index 0ffb29e..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_f32.c +++ /dev/null @@ -1,412 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_biquad_cascade_df1_f32.c - * Description: Processing function for the floating-point Biquad cascade DirectFormI(DF1) filter - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupFilters - */ - -/** - * @defgroup BiquadCascadeDF1 Biquad Cascade IIR Filters Using Direct Form I Structure - * - * This set of functions implements arbitrary order recursive (IIR) filters. - * The filters are implemented as a cascade of second order Biquad sections. - * The functions support Q15, Q31 and floating-point data types. - * Fast version of Q15 and Q31 also supported on CortexM4 and Cortex-M3. - * - * The functions operate on blocks of input and output data and each call to the function - * processes blockSize samples through the filter. - * pSrc points to the array of input data and - * pDst points to the array of output data. - * Both arrays contain blockSize values. - * - * \par Algorithm - * Each Biquad stage implements a second order filter using the difference equation: - *
- *     y[n] = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2]
- * 
- * A Direct Form I algorithm is used with 5 coefficients and 4 state variables per stage. - * \image html Biquad.gif "Single Biquad filter stage" - * Coefficients b0, b1 and b2 multiply the input signal x[n] and are referred to as the feedforward coefficients. - * Coefficients a1 and a2 multiply the output signal y[n] and are referred to as the feedback coefficients. - * Pay careful attention to the sign of the feedback coefficients. - * Some design tools use the difference equation - *
- *     y[n] = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] - a1 * y[n-1] - a2 * y[n-2]
- * 
- * In this case the feedback coefficients a1 and a2 must be negated when used with the CMSIS DSP Library. - * - * \par - * Higher order filters are realized as a cascade of second order sections. - * numStages refers to the number of second order stages used. - * For example, an 8th order filter would be realized with numStages=4 second order stages. - * \image html BiquadCascade.gif "8th order filter using a cascade of Biquad stages" - * A 9th order filter would be realized with numStages=5 second order stages with the coefficients for one of the stages configured as a first order filter (b2=0 and a2=0). - * - * \par - * The pState points to state variables array. - * Each Biquad stage has 4 state variables x[n-1], x[n-2], y[n-1], and y[n-2]. - * The state variables are arranged in the pState array as: - *
- *     {x[n-1], x[n-2], y[n-1], y[n-2]}
- * 
- * - * \par - * The 4 state variables for stage 1 are first, then the 4 state variables for stage 2, and so on. - * The state array has a total length of 4*numStages values. - * The state variables are updated after each block of data is processed, the coefficients are untouched. - * - * \par Instance Structure - * The coefficients and state variables for a filter are stored together in an instance data structure. - * A separate instance structure must be defined for each filter. - * Coefficient arrays may be shared among several instances while state variable arrays cannot be shared. - * There are separate instance structure declarations for each of the 3 supported data types. - * - * \par Init Functions - * There is also an associated initialization function for each data type. - * The initialization function performs following operations: - * - Sets the values of the internal structure fields. - * - Zeros out the values in the state buffer. - * To do this manually without calling the init function, assign the follow subfields of the instance structure: - * numStages, pCoeffs, pState. Also set all of the values in pState to zero. - * - * \par - * Use of the initialization function is optional. - * However, if the initialization function is used, then the instance structure cannot be placed into a const data section. - * To place an instance structure into a const data section, the instance structure must be manually initialized. - * Set the values in the state buffer to zeros before static initialization. - * The code below statically initializes each of the 3 different data type filter instance structures - *
- *     arm_biquad_casd_df1_inst_f32 S1 = {numStages, pState, pCoeffs};
- *     arm_biquad_casd_df1_inst_q15 S2 = {numStages, pState, pCoeffs, postShift};
- *     arm_biquad_casd_df1_inst_q31 S3 = {numStages, pState, pCoeffs, postShift};
- * 
- * where numStages is the number of Biquad stages in the filter; pState is the address of the state buffer; - * pCoeffs is the address of the coefficient buffer; postShift shift to be applied. - * - * \par Fixed-Point Behavior - * Care must be taken when using the Q15 and Q31 versions of the Biquad Cascade filter functions. - * Following issues must be considered: - * - Scaling of coefficients - * - Filter gain - * - Overflow and saturation - * - * \par - * Scaling of coefficients: - * Filter coefficients are represented as fractional values and - * coefficients are restricted to lie in the range [-1 +1). - * The fixed-point functions have an additional scaling parameter postShift - * which allow the filter coefficients to exceed the range [+1 -1). - * At the output of the filter's accumulator is a shift register which shifts the result by postShift bits. - * \image html BiquadPostshift.gif "Fixed-point Biquad with shift by postShift bits after accumulator" - * This essentially scales the filter coefficients by 2^postShift. - * For example, to realize the coefficients - *
- *    {1.5, -0.8, 1.2, 1.6, -0.9}
- * 
- * set the pCoeffs array to: - *
- *    {0.75, -0.4, 0.6, 0.8, -0.45}
- * 
- * and set postShift=1 - * - * \par - * Filter gain: - * The frequency response of a Biquad filter is a function of its coefficients. - * It is possible for the gain through the filter to exceed 1.0 meaning that the filter increases the amplitude of certain frequencies. - * This means that an input signal with amplitude < 1.0 may result in an output > 1.0 and these are saturated or overflowed based on the implementation of the filter. - * To avoid this behavior the filter needs to be scaled down such that its peak gain < 1.0 or the input signal must be scaled down so that the combination of input and filter are never overflowed. - * - * \par - * Overflow and saturation: - * For Q15 and Q31 versions, it is described separately as part of the function specific documentation below. - */ - -/** - * @addtogroup BiquadCascadeDF1 - * @{ - */ - -/** - * @param[in] *S points to an instance of the floating-point Biquad cascade structure. - * @param[in] *pSrc points to the block of input data. - * @param[out] *pDst points to the block of output data. - * @param[in] blockSize number of samples to process per call. - * @return none. - * - */ - -void arm_biquad_cascade_df1_f32( - const arm_biquad_casd_df1_inst_f32 * S, - float32_t * pSrc, - float32_t * pDst, - uint32_t blockSize) -{ - float32_t *pIn = pSrc; /* source pointer */ - float32_t *pOut = pDst; /* destination pointer */ - float32_t *pState = S->pState; /* pState pointer */ - float32_t *pCoeffs = S->pCoeffs; /* coefficient pointer */ - float32_t acc; /* Simulates the accumulator */ - float32_t b0, b1, b2, a1, a2; /* Filter coefficients */ - float32_t Xn1, Xn2, Yn1, Yn2; /* Filter pState variables */ - float32_t Xn; /* temporary input */ - uint32_t sample, stage = S->numStages; /* loop counters */ - - -#if defined (ARM_MATH_DSP) - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - do - { - /* Reading the coefficients */ - b0 = *pCoeffs++; - b1 = *pCoeffs++; - b2 = *pCoeffs++; - a1 = *pCoeffs++; - a2 = *pCoeffs++; - - /* Reading the pState values */ - Xn1 = pState[0]; - Xn2 = pState[1]; - Yn1 = pState[2]; - Yn2 = pState[3]; - - /* Apply loop unrolling and compute 4 output values simultaneously. */ - /* The variable acc hold output values that are being computed: - * - * acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] - * acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] - * acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] - * acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] - */ - - sample = blockSize >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (sample > 0U) - { - /* Read the first input */ - Xn = *pIn++; - - /* acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */ - Yn2 = (b0 * Xn) + (b1 * Xn1) + (b2 * Xn2) + (a1 * Yn1) + (a2 * Yn2); - - /* Store the result in the accumulator in the destination buffer. */ - *pOut++ = Yn2; - - /* Every time after the output is computed state should be updated. */ - /* The states should be updated as: */ - /* Xn2 = Xn1 */ - /* Xn1 = Xn */ - /* Yn2 = Yn1 */ - /* Yn1 = acc */ - - /* Read the second input */ - Xn2 = *pIn++; - - /* acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */ - Yn1 = (b0 * Xn2) + (b1 * Xn) + (b2 * Xn1) + (a1 * Yn2) + (a2 * Yn1); - - /* Store the result in the accumulator in the destination buffer. */ - *pOut++ = Yn1; - - /* Every time after the output is computed state should be updated. */ - /* The states should be updated as: */ - /* Xn2 = Xn1 */ - /* Xn1 = Xn */ - /* Yn2 = Yn1 */ - /* Yn1 = acc */ - - /* Read the third input */ - Xn1 = *pIn++; - - /* acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */ - Yn2 = (b0 * Xn1) + (b1 * Xn2) + (b2 * Xn) + (a1 * Yn1) + (a2 * Yn2); - - /* Store the result in the accumulator in the destination buffer. */ - *pOut++ = Yn2; - - /* Every time after the output is computed state should be updated. */ - /* The states should be updated as: */ - /* Xn2 = Xn1 */ - /* Xn1 = Xn */ - /* Yn2 = Yn1 */ - /* Yn1 = acc */ - - /* Read the forth input */ - Xn = *pIn++; - - /* acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */ - Yn1 = (b0 * Xn) + (b1 * Xn1) + (b2 * Xn2) + (a1 * Yn2) + (a2 * Yn1); - - /* Store the result in the accumulator in the destination buffer. */ - *pOut++ = Yn1; - - /* Every time after the output is computed state should be updated. */ - /* The states should be updated as: */ - /* Xn2 = Xn1 */ - /* Xn1 = Xn */ - /* Yn2 = Yn1 */ - /* Yn1 = acc */ - Xn2 = Xn1; - Xn1 = Xn; - - /* decrement the loop counter */ - sample--; - - } - - /* If the blockSize is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - sample = blockSize & 0x3U; - - while (sample > 0U) - { - /* Read the input */ - Xn = *pIn++; - - /* acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */ - acc = (b0 * Xn) + (b1 * Xn1) + (b2 * Xn2) + (a1 * Yn1) + (a2 * Yn2); - - /* Store the result in the accumulator in the destination buffer. */ - *pOut++ = acc; - - /* Every time after the output is computed state should be updated. */ - /* The states should be updated as: */ - /* Xn2 = Xn1 */ - /* Xn1 = Xn */ - /* Yn2 = Yn1 */ - /* Yn1 = acc */ - Xn2 = Xn1; - Xn1 = Xn; - Yn2 = Yn1; - Yn1 = acc; - - /* decrement the loop counter */ - sample--; - - } - - /* Store the updated state variables back into the pState array */ - *pState++ = Xn1; - *pState++ = Xn2; - *pState++ = Yn1; - *pState++ = Yn2; - - /* The first stage goes from the input buffer to the output buffer. */ - /* Subsequent numStages occur in-place in the output buffer */ - pIn = pDst; - - /* Reset the output pointer */ - pOut = pDst; - - /* decrement the loop counter */ - stage--; - - } while (stage > 0U); - -#else - - /* Run the below code for Cortex-M0 */ - - do - { - /* Reading the coefficients */ - b0 = *pCoeffs++; - b1 = *pCoeffs++; - b2 = *pCoeffs++; - a1 = *pCoeffs++; - a2 = *pCoeffs++; - - /* Reading the pState values */ - Xn1 = pState[0]; - Xn2 = pState[1]; - Yn1 = pState[2]; - Yn2 = pState[3]; - - /* The variables acc holds the output value that is computed: - * acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] - */ - - sample = blockSize; - - while (sample > 0U) - { - /* Read the input */ - Xn = *pIn++; - - /* acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */ - acc = (b0 * Xn) + (b1 * Xn1) + (b2 * Xn2) + (a1 * Yn1) + (a2 * Yn2); - - /* Store the result in the accumulator in the destination buffer. */ - *pOut++ = acc; - - /* Every time after the output is computed state should be updated. */ - /* The states should be updated as: */ - /* Xn2 = Xn1 */ - /* Xn1 = Xn */ - /* Yn2 = Yn1 */ - /* Yn1 = acc */ - Xn2 = Xn1; - Xn1 = Xn; - Yn2 = Yn1; - Yn1 = acc; - - /* decrement the loop counter */ - sample--; - } - - /* Store the updated state variables back into the pState array */ - *pState++ = Xn1; - *pState++ = Xn2; - *pState++ = Yn1; - *pState++ = Yn2; - - /* The first stage goes from the input buffer to the output buffer. */ - /* Subsequent numStages occur in-place in the output buffer */ - pIn = pDst; - - /* Reset the output pointer */ - pOut = pDst; - - /* decrement the loop counter */ - stage--; - - } while (stage > 0U); - -#endif /* #if defined (ARM_MATH_DSP) */ - -} - - - /** - * @} end of BiquadCascadeDF1 group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_fast_q15.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_fast_q15.c deleted file mode 100644 index ab517d8..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_fast_q15.c +++ /dev/null @@ -1,273 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_biquad_cascade_df1_fast_q15.c - * Description: Fast processing function for the Q15 Biquad cascade filter - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupFilters - */ - -/** - * @addtogroup BiquadCascadeDF1 - * @{ - */ - -/** - * @details - * @param[in] *S points to an instance of the Q15 Biquad cascade structure. - * @param[in] *pSrc points to the block of input data. - * @param[out] *pDst points to the block of output data. - * @param[in] blockSize number of samples to process per call. - * @return none. - * - * Scaling and Overflow Behavior: - * \par - * This fast version uses a 32-bit accumulator with 2.30 format. - * The accumulator maintains full precision of the intermediate multiplication results but provides only a single guard bit. - * Thus, if the accumulator result overflows it wraps around and distorts the result. - * In order to avoid overflows completely the input signal must be scaled down by two bits and lie in the range [-0.25 +0.25). - * The 2.30 accumulator is then shifted by postShift bits and the result truncated to 1.15 format by discarding the low 16 bits. - * - * \par - * Refer to the function arm_biquad_cascade_df1_q15() for a slower implementation of this function which uses 64-bit accumulation to avoid wrap around distortion. Both the slow and the fast versions use the same instance structure. - * Use the function arm_biquad_cascade_df1_init_q15() to initialize the filter structure. - * - */ - -void arm_biquad_cascade_df1_fast_q15( - const arm_biquad_casd_df1_inst_q15 * S, - q15_t * pSrc, - q15_t * pDst, - uint32_t blockSize) -{ - q15_t *pIn = pSrc; /* Source pointer */ - q15_t *pOut = pDst; /* Destination pointer */ - q31_t in; /* Temporary variable to hold input value */ - q31_t out; /* Temporary variable to hold output value */ - q31_t b0; /* Temporary variable to hold bo value */ - q31_t b1, a1; /* Filter coefficients */ - q31_t state_in, state_out; /* Filter state variables */ - q31_t acc; /* Accumulator */ - int32_t shift = (int32_t) (15 - S->postShift); /* Post shift */ - q15_t *pState = S->pState; /* State pointer */ - q15_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ - uint32_t sample, stage = S->numStages; /* Stage loop counter */ - - - - do - { - - /* Read the b0 and 0 coefficients using SIMD */ - b0 = *__SIMD32(pCoeffs)++; - - /* Read the b1 and b2 coefficients using SIMD */ - b1 = *__SIMD32(pCoeffs)++; - - /* Read the a1 and a2 coefficients using SIMD */ - a1 = *__SIMD32(pCoeffs)++; - - /* Read the input state values from the state buffer: x[n-1], x[n-2] */ - state_in = *__SIMD32(pState)++; - - /* Read the output state values from the state buffer: y[n-1], y[n-2] */ - state_out = *__SIMD32(pState)--; - - /* Apply loop unrolling and compute 2 output values simultaneously. */ - /* The variable acc hold output values that are being computed: - * - * acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] - * acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] - */ - sample = blockSize >> 1U; - - /* First part of the processing with loop unrolling. Compute 2 outputs at a time. - ** a second loop below computes the remaining 1 sample. */ - while (sample > 0U) - { - - /* Read the input */ - in = *__SIMD32(pIn)++; - - /* out = b0 * x[n] + 0 * 0 */ - out = __SMUAD(b0, in); - /* acc = b1 * x[n-1] + acc += b2 * x[n-2] + out */ - acc = __SMLAD(b1, state_in, out); - /* acc += a1 * y[n-1] + acc += a2 * y[n-2] */ - acc = __SMLAD(a1, state_out, acc); - - /* The result is converted from 3.29 to 1.31 and then saturation is applied */ - out = __SSAT((acc >> shift), 16); - - /* Every time after the output is computed state should be updated. */ - /* The states should be updated as: */ - /* Xn2 = Xn1 */ - /* Xn1 = Xn */ - /* Yn2 = Yn1 */ - /* Yn1 = acc */ - /* x[n-N], x[n-N-1] are packed together to make state_in of type q31 */ - /* y[n-N], y[n-N-1] are packed together to make state_out of type q31 */ - -#ifndef ARM_MATH_BIG_ENDIAN - - state_in = __PKHBT(in, state_in, 16); - state_out = __PKHBT(out, state_out, 16); - -#else - - state_in = __PKHBT(state_in >> 16, (in >> 16), 16); - state_out = __PKHBT(state_out >> 16, (out), 16); - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - /* out = b0 * x[n] + 0 * 0 */ - out = __SMUADX(b0, in); - /* acc0 = b1 * x[n-1] , acc0 += b2 * x[n-2] + out */ - acc = __SMLAD(b1, state_in, out); - /* acc += a1 * y[n-1] + acc += a2 * y[n-2] */ - acc = __SMLAD(a1, state_out, acc); - - /* The result is converted from 3.29 to 1.31 and then saturation is applied */ - out = __SSAT((acc >> shift), 16); - - - /* Store the output in the destination buffer. */ - -#ifndef ARM_MATH_BIG_ENDIAN - - *__SIMD32(pOut)++ = __PKHBT(state_out, out, 16); - -#else - - *__SIMD32(pOut)++ = __PKHBT(out, state_out >> 16, 16); - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - /* Every time after the output is computed state should be updated. */ - /* The states should be updated as: */ - /* Xn2 = Xn1 */ - /* Xn1 = Xn */ - /* Yn2 = Yn1 */ - /* Yn1 = acc */ - /* x[n-N], x[n-N-1] are packed together to make state_in of type q31 */ - /* y[n-N], y[n-N-1] are packed together to make state_out of type q31 */ - -#ifndef ARM_MATH_BIG_ENDIAN - - state_in = __PKHBT(in >> 16, state_in, 16); - state_out = __PKHBT(out, state_out, 16); - -#else - - state_in = __PKHBT(state_in >> 16, in, 16); - state_out = __PKHBT(state_out >> 16, out, 16); - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - - /* Decrement the loop counter */ - sample--; - - } - - /* If the blockSize is not a multiple of 2, compute any remaining output samples here. - ** No loop unrolling is used. */ - - if ((blockSize & 0x1U) != 0U) - { - /* Read the input */ - in = *pIn++; - - /* out = b0 * x[n] + 0 * 0 */ - -#ifndef ARM_MATH_BIG_ENDIAN - - out = __SMUAD(b0, in); - -#else - - out = __SMUADX(b0, in); - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - /* acc = b1 * x[n-1], acc += b2 * x[n-2] + out */ - acc = __SMLAD(b1, state_in, out); - /* acc += a1 * y[n-1] + acc += a2 * y[n-2] */ - acc = __SMLAD(a1, state_out, acc); - - /* The result is converted from 3.29 to 1.31 and then saturation is applied */ - out = __SSAT((acc >> shift), 16); - - /* Store the output in the destination buffer. */ - *pOut++ = (q15_t) out; - - /* Every time after the output is computed state should be updated. */ - /* The states should be updated as: */ - /* Xn2 = Xn1 */ - /* Xn1 = Xn */ - /* Yn2 = Yn1 */ - /* Yn1 = acc */ - /* x[n-N], x[n-N-1] are packed together to make state_in of type q31 */ - /* y[n-N], y[n-N-1] are packed together to make state_out of type q31 */ - -#ifndef ARM_MATH_BIG_ENDIAN - - state_in = __PKHBT(in, state_in, 16); - state_out = __PKHBT(out, state_out, 16); - -#else - - state_in = __PKHBT(state_in >> 16, in, 16); - state_out = __PKHBT(state_out >> 16, out, 16); - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - } - - /* The first stage goes from the input buffer to the output buffer. */ - /* Subsequent (numStages - 1) occur in-place in the output buffer */ - pIn = pDst; - - /* Reset the output pointer */ - pOut = pDst; - - /* Store the updated state variables back into the state array */ - *__SIMD32(pState)++ = state_in; - *__SIMD32(pState)++ = state_out; - - - /* Decrement the loop counter */ - stage--; - - } while (stage > 0U); -} - - -/** - * @} end of BiquadCascadeDF1 group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_fast_q31.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_fast_q31.c deleted file mode 100644 index 00dbae1..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_fast_q31.c +++ /dev/null @@ -1,292 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_biquad_cascade_df1_fast_q31.c - * Description: Processing function for the Q31 Fast Biquad cascade DirectFormI(DF1) filter - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupFilters - */ - -/** - * @addtogroup BiquadCascadeDF1 - * @{ - */ - -/** - * @details - * - * @param[in] *S points to an instance of the Q31 Biquad cascade structure. - * @param[in] *pSrc points to the block of input data. - * @param[out] *pDst points to the block of output data. - * @param[in] blockSize number of samples to process per call. - * @return none. - * - * Scaling and Overflow Behavior: - * \par - * This function is optimized for speed at the expense of fixed-point precision and overflow protection. - * The result of each 1.31 x 1.31 multiplication is truncated to 2.30 format. - * These intermediate results are added to a 2.30 accumulator. - * Finally, the accumulator is saturated and converted to a 1.31 result. - * The fast version has the same overflow behavior as the standard version and provides less precision since it discards the low 32 bits of each multiplication result. - * In order to avoid overflows completely the input signal must be scaled down by two bits and lie in the range [-0.25 +0.25). Use the intialization function - * arm_biquad_cascade_df1_init_q31() to initialize filter structure. - * - * \par - * Refer to the function arm_biquad_cascade_df1_q31() for a slower implementation of this function which uses 64-bit accumulation to provide higher precision. Both the slow and the fast versions use the same instance structure. - * Use the function arm_biquad_cascade_df1_init_q31() to initialize the filter structure. - */ - -void arm_biquad_cascade_df1_fast_q31( - const arm_biquad_casd_df1_inst_q31 * S, - q31_t * pSrc, - q31_t * pDst, - uint32_t blockSize) -{ - q31_t acc = 0; /* accumulator */ - q31_t Xn1, Xn2, Yn1, Yn2; /* Filter state variables */ - q31_t b0, b1, b2, a1, a2; /* Filter coefficients */ - q31_t *pIn = pSrc; /* input pointer initialization */ - q31_t *pOut = pDst; /* output pointer initialization */ - q31_t *pState = S->pState; /* pState pointer initialization */ - q31_t *pCoeffs = S->pCoeffs; /* coeff pointer initialization */ - q31_t Xn; /* temporary input */ - int32_t shift = (int32_t) S->postShift + 1; /* Shift to be applied to the output */ - uint32_t sample, stage = S->numStages; /* loop counters */ - - - do - { - /* Reading the coefficients */ - b0 = *pCoeffs++; - b1 = *pCoeffs++; - b2 = *pCoeffs++; - a1 = *pCoeffs++; - a2 = *pCoeffs++; - - /* Reading the state values */ - Xn1 = pState[0]; - Xn2 = pState[1]; - Yn1 = pState[2]; - Yn2 = pState[3]; - - /* Apply loop unrolling and compute 4 output values simultaneously. */ - /* The variables acc ... acc3 hold output values that are being computed: - * - * acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] - */ - - sample = blockSize >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (sample > 0U) - { - /* Read the input */ - Xn = *pIn; - - /* acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */ - /* acc = b0 * x[n] */ - /*acc = (q31_t) (((q63_t) b1 * Xn1) >> 32);*/ - mult_32x32_keep32_R(acc, b1, Xn1); - /* acc += b1 * x[n-1] */ - /*acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) b0 * (Xn))) >> 32);*/ - multAcc_32x32_keep32_R(acc, b0, Xn); - /* acc += b[2] * x[n-2] */ - /*acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) b2 * (Xn2))) >> 32);*/ - multAcc_32x32_keep32_R(acc, b2, Xn2); - /* acc += a1 * y[n-1] */ - /*acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) a1 * (Yn1))) >> 32);*/ - multAcc_32x32_keep32_R(acc, a1, Yn1); - /* acc += a2 * y[n-2] */ - /*acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) a2 * (Yn2))) >> 32);*/ - multAcc_32x32_keep32_R(acc, a2, Yn2); - - /* The result is converted to 1.31 , Yn2 variable is reused */ - Yn2 = acc << shift; - - /* Read the second input */ - Xn2 = *(pIn + 1U); - - /* Store the output in the destination buffer. */ - *pOut = Yn2; - - /* acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */ - /* acc = b0 * x[n] */ - /*acc = (q31_t) (((q63_t) b0 * (Xn2)) >> 32);*/ - mult_32x32_keep32_R(acc, b0, Xn2); - /* acc += b1 * x[n-1] */ - /*acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) b1 * (Xn))) >> 32);*/ - multAcc_32x32_keep32_R(acc, b1, Xn); - /* acc += b[2] * x[n-2] */ - /*acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) b2 * (Xn1))) >> 32);*/ - multAcc_32x32_keep32_R(acc, b2, Xn1); - /* acc += a1 * y[n-1] */ - /*acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) a1 * (Yn2))) >> 32);*/ - multAcc_32x32_keep32_R(acc, a1, Yn2); - /* acc += a2 * y[n-2] */ - /*acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) a2 * (Yn1))) >> 32);*/ - multAcc_32x32_keep32_R(acc, a2, Yn1); - - /* The result is converted to 1.31, Yn1 variable is reused */ - Yn1 = acc << shift; - - /* Read the third input */ - Xn1 = *(pIn + 2U); - - /* Store the output in the destination buffer. */ - *(pOut + 1U) = Yn1; - - /* acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */ - /* acc = b0 * x[n] */ - /*acc = (q31_t) (((q63_t) b0 * (Xn1)) >> 32);*/ - mult_32x32_keep32_R(acc, b0, Xn1); - /* acc += b1 * x[n-1] */ - /*acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) b1 * (Xn2))) >> 32);*/ - multAcc_32x32_keep32_R(acc, b1, Xn2); - /* acc += b[2] * x[n-2] */ - /*acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) b2 * (Xn))) >> 32);*/ - multAcc_32x32_keep32_R(acc, b2, Xn); - /* acc += a1 * y[n-1] */ - /*acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) a1 * (Yn1))) >> 32);*/ - multAcc_32x32_keep32_R(acc, a1, Yn1); - /* acc += a2 * y[n-2] */ - /*acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) a2 * (Yn2))) >> 32);*/ - multAcc_32x32_keep32_R(acc, a2, Yn2); - - /* The result is converted to 1.31, Yn2 variable is reused */ - Yn2 = acc << shift; - - /* Read the forth input */ - Xn = *(pIn + 3U); - - /* Store the output in the destination buffer. */ - *(pOut + 2U) = Yn2; - pIn += 4U; - - /* acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */ - /* acc = b0 * x[n] */ - /*acc = (q31_t) (((q63_t) b0 * (Xn)) >> 32);*/ - mult_32x32_keep32_R(acc, b0, Xn); - /* acc += b1 * x[n-1] */ - /*acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) b1 * (Xn1))) >> 32);*/ - multAcc_32x32_keep32_R(acc, b1, Xn1); - /* acc += b[2] * x[n-2] */ - /*acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) b2 * (Xn2))) >> 32);*/ - multAcc_32x32_keep32_R(acc, b2, Xn2); - /* acc += a1 * y[n-1] */ - /*acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) a1 * (Yn2))) >> 32);*/ - multAcc_32x32_keep32_R(acc, a1, Yn2); - /* acc += a2 * y[n-2] */ - /*acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) a2 * (Yn1))) >> 32);*/ - multAcc_32x32_keep32_R(acc, a2, Yn1); - - /* Every time after the output is computed state should be updated. */ - /* The states should be updated as: */ - /* Xn2 = Xn1 */ - Xn2 = Xn1; - - /* The result is converted to 1.31, Yn1 variable is reused */ - Yn1 = acc << shift; - - /* Xn1 = Xn */ - Xn1 = Xn; - - /* Store the output in the destination buffer. */ - *(pOut + 3U) = Yn1; - pOut += 4U; - - /* decrement the loop counter */ - sample--; - } - - /* If the blockSize is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - sample = (blockSize & 0x3U); - - while (sample > 0U) - { - /* Read the input */ - Xn = *pIn++; - - /* acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */ - /* acc = b0 * x[n] */ - /*acc = (q31_t) (((q63_t) b0 * (Xn)) >> 32);*/ - mult_32x32_keep32_R(acc, b0, Xn); - /* acc += b1 * x[n-1] */ - /*acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) b1 * (Xn1))) >> 32);*/ - multAcc_32x32_keep32_R(acc, b1, Xn1); - /* acc += b[2] * x[n-2] */ - /*acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) b2 * (Xn2))) >> 32);*/ - multAcc_32x32_keep32_R(acc, b2, Xn2); - /* acc += a1 * y[n-1] */ - /*acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) a1 * (Yn1))) >> 32);*/ - multAcc_32x32_keep32_R(acc, a1, Yn1); - /* acc += a2 * y[n-2] */ - /*acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) a2 * (Yn2))) >> 32);*/ - multAcc_32x32_keep32_R(acc, a2, Yn2); - - /* The result is converted to 1.31 */ - acc = acc << shift; - - /* Every time after the output is computed state should be updated. */ - /* The states should be updated as: */ - /* Xn2 = Xn1 */ - /* Xn1 = Xn */ - /* Yn2 = Yn1 */ - /* Yn1 = acc */ - Xn2 = Xn1; - Xn1 = Xn; - Yn2 = Yn1; - Yn1 = acc; - - /* Store the output in the destination buffer. */ - *pOut++ = acc; - - /* decrement the loop counter */ - sample--; - } - - /* The first stage goes from the input buffer to the output buffer. */ - /* Subsequent stages occur in-place in the output buffer */ - pIn = pDst; - - /* Reset to destination pointer */ - pOut = pDst; - - /* Store the updated state variables back into the pState array */ - *pState++ = Xn1; - *pState++ = Xn2; - *pState++ = Yn1; - *pState++ = Yn2; - - } while (--stage); -} - -/** - * @} end of BiquadCascadeDF1 group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_init_f32.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_init_f32.c deleted file mode 100644 index 35ceed4..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_init_f32.c +++ /dev/null @@ -1,97 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_biquad_cascade_df1_init_f32.c - * Description: Floating-point Biquad cascade DirectFormI(DF1) filter initialization function - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupFilters - */ - -/** - * @addtogroup BiquadCascadeDF1 - * @{ - */ - -/** - * @details - * @brief Initialization function for the floating-point Biquad cascade filter. - * @param[in,out] *S points to an instance of the floating-point Biquad cascade structure. - * @param[in] numStages number of 2nd order stages in the filter. - * @param[in] *pCoeffs points to the filter coefficients array. - * @param[in] *pState points to the state array. - * @return none - * - * - * Coefficient and State Ordering: - * - * \par - * The coefficients are stored in the array pCoeffs in the following order: - *
- *     {b10, b11, b12, a11, a12, b20, b21, b22, a21, a22, ...}
- * 
- * - * \par - * where b1x and a1x are the coefficients for the first stage, - * b2x and a2x are the coefficients for the second stage, - * and so on. The pCoeffs array contains a total of 5*numStages values. - * - * \par - * The pState is a pointer to state array. - * Each Biquad stage has 4 state variables x[n-1], x[n-2], y[n-1], and y[n-2]. - * The state variables are arranged in the pState array as: - *
- *     {x[n-1], x[n-2], y[n-1], y[n-2]}
- * 
- * The 4 state variables for stage 1 are first, then the 4 state variables for stage 2, and so on. - * The state array has a total length of 4*numStages values. - * The state variables are updated after each block of data is processed; the coefficients are untouched. - * - */ - -void arm_biquad_cascade_df1_init_f32( - arm_biquad_casd_df1_inst_f32 * S, - uint8_t numStages, - float32_t * pCoeffs, - float32_t * pState) -{ - /* Assign filter stages */ - S->numStages = numStages; - - /* Assign coefficient pointer */ - S->pCoeffs = pCoeffs; - - /* Clear state buffer and size is always 4 * numStages */ - memset(pState, 0, (4U * (uint32_t) numStages) * sizeof(float32_t)); - - /* Assign state pointer */ - S->pState = pState; -} - -/** - * @} end of BiquadCascadeDF1 group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_init_q15.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_init_q15.c deleted file mode 100644 index 2b3243d..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_init_q15.c +++ /dev/null @@ -1,99 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_biquad_cascade_df1_init_q15.c - * Description: Q15 Biquad cascade DirectFormI(DF1) filter initialization function - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupFilters - */ - -/** - * @addtogroup BiquadCascadeDF1 - * @{ - */ - -/** - * @details - * - * @param[in,out] *S points to an instance of the Q15 Biquad cascade structure. - * @param[in] numStages number of 2nd order stages in the filter. - * @param[in] *pCoeffs points to the filter coefficients. - * @param[in] *pState points to the state buffer. - * @param[in] postShift Shift to be applied to the accumulator result. Varies according to the coefficients format - * @return none - * - * Coefficient and State Ordering: - * - * \par - * The coefficients are stored in the array pCoeffs in the following order: - *
- *     {b10, 0, b11, b12, a11, a12, b20, 0, b21, b22, a21, a22, ...}
- * 
- * where b1x and a1x are the coefficients for the first stage, - * b2x and a2x are the coefficients for the second stage, - * and so on. The pCoeffs array contains a total of 6*numStages values. - * The zero coefficient between b1 and b2 facilities use of 16-bit SIMD instructions on the Cortex-M4. - * - * \par - * The state variables are stored in the array pState. - * Each Biquad stage has 4 state variables x[n-1], x[n-2], y[n-1], and y[n-2]. - * The state variables are arranged in the pState array as: - *
- *     {x[n-1], x[n-2], y[n-1], y[n-2]}
- * 
- * The 4 state variables for stage 1 are first, then the 4 state variables for stage 2, and so on. - * The state array has a total length of 4*numStages values. - * The state variables are updated after each block of data is processed; the coefficients are untouched. - */ - -void arm_biquad_cascade_df1_init_q15( - arm_biquad_casd_df1_inst_q15 * S, - uint8_t numStages, - q15_t * pCoeffs, - q15_t * pState, - int8_t postShift) -{ - /* Assign filter stages */ - S->numStages = numStages; - - /* Assign postShift to be applied to the output */ - S->postShift = postShift; - - /* Assign coefficient pointer */ - S->pCoeffs = pCoeffs; - - /* Clear state buffer and size is always 4 * numStages */ - memset(pState, 0, (4U * (uint32_t) numStages) * sizeof(q15_t)); - - /* Assign state pointer */ - S->pState = pState; -} - -/** - * @} end of BiquadCascadeDF1 group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_init_q31.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_init_q31.c deleted file mode 100644 index 5c60e4a..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_init_q31.c +++ /dev/null @@ -1,98 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_biquad_cascade_df1_init_q31.c - * Description: Q31 Biquad cascade DirectFormI(DF1) filter initialization function - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupFilters - */ - -/** - * @addtogroup BiquadCascadeDF1 - * @{ - */ - -/** - * @details - * - * @param[in,out] *S points to an instance of the Q31 Biquad cascade structure. - * @param[in] numStages number of 2nd order stages in the filter. - * @param[in] *pCoeffs points to the filter coefficients buffer. - * @param[in] *pState points to the state buffer. - * @param[in] postShift Shift to be applied after the accumulator. Varies according to the coefficients format - * @return none - * - * Coefficient and State Ordering: - * - * \par - * The coefficients are stored in the array pCoeffs in the following order: - *
- *     {b10, b11, b12, a11, a12, b20, b21, b22, a21, a22, ...}
- * 
- * where b1x and a1x are the coefficients for the first stage, - * b2x and a2x are the coefficients for the second stage, - * and so on. The pCoeffs array contains a total of 5*numStages values. - * - * \par - * The pState points to state variables array. - * Each Biquad stage has 4 state variables x[n-1], x[n-2], y[n-1], and y[n-2]. - * The state variables are arranged in the pState array as: - *
- *     {x[n-1], x[n-2], y[n-1], y[n-2]}
- * 
- * The 4 state variables for stage 1 are first, then the 4 state variables for stage 2, and so on. - * The state array has a total length of 4*numStages values. - * The state variables are updated after each block of data is processed; the coefficients are untouched. - */ - -void arm_biquad_cascade_df1_init_q31( - arm_biquad_casd_df1_inst_q31 * S, - uint8_t numStages, - q31_t * pCoeffs, - q31_t * pState, - int8_t postShift) -{ - /* Assign filter stages */ - S->numStages = numStages; - - /* Assign postShift to be applied to the output */ - S->postShift = postShift; - - /* Assign coefficient pointer */ - S->pCoeffs = pCoeffs; - - /* Clear state buffer and size is always 4 * numStages */ - memset(pState, 0, (4U * (uint32_t) numStages) * sizeof(q31_t)); - - /* Assign state pointer */ - S->pState = pState; -} - -/** - * @} end of BiquadCascadeDF1 group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_q15.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_q15.c deleted file mode 100644 index 382b744..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_q15.c +++ /dev/null @@ -1,398 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_biquad_cascade_df1_q15.c - * Description: Processing function for the Q15 Biquad cascade DirectFormI(DF1) filter - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupFilters - */ - -/** - * @addtogroup BiquadCascadeDF1 - * @{ - */ - -/** - * @brief Processing function for the Q15 Biquad cascade filter. - * @param[in] *S points to an instance of the Q15 Biquad cascade structure. - * @param[in] *pSrc points to the block of input data. - * @param[out] *pDst points to the location where the output result is written. - * @param[in] blockSize number of samples to process per call. - * @return none. - * - * - * Scaling and Overflow Behavior: - * \par - * The function is implemented using a 64-bit internal accumulator. - * Both coefficients and state variables are represented in 1.15 format and multiplications yield a 2.30 result. - * The 2.30 intermediate results are accumulated in a 64-bit accumulator in 34.30 format. - * There is no risk of internal overflow with this approach and the full precision of intermediate multiplications is preserved. - * The accumulator is then shifted by postShift bits to truncate the result to 1.15 format by discarding the low 16 bits. - * Finally, the result is saturated to 1.15 format. - * - * \par - * Refer to the function arm_biquad_cascade_df1_fast_q15() for a faster but less precise implementation of this filter for Cortex-M3 and Cortex-M4. - */ - -void arm_biquad_cascade_df1_q15( - const arm_biquad_casd_df1_inst_q15 * S, - q15_t * pSrc, - q15_t * pDst, - uint32_t blockSize) -{ - - -#if defined (ARM_MATH_DSP) - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - q15_t *pIn = pSrc; /* Source pointer */ - q15_t *pOut = pDst; /* Destination pointer */ - q31_t in; /* Temporary variable to hold input value */ - q31_t out; /* Temporary variable to hold output value */ - q31_t b0; /* Temporary variable to hold bo value */ - q31_t b1, a1; /* Filter coefficients */ - q31_t state_in, state_out; /* Filter state variables */ - q31_t acc_l, acc_h; - q63_t acc; /* Accumulator */ - int32_t lShift = (15 - (int32_t) S->postShift); /* Post shift */ - q15_t *pState = S->pState; /* State pointer */ - q15_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ - uint32_t sample, stage = (uint32_t) S->numStages; /* Stage loop counter */ - int32_t uShift = (32 - lShift); - - do - { - /* Read the b0 and 0 coefficients using SIMD */ - b0 = *__SIMD32(pCoeffs)++; - - /* Read the b1 and b2 coefficients using SIMD */ - b1 = *__SIMD32(pCoeffs)++; - - /* Read the a1 and a2 coefficients using SIMD */ - a1 = *__SIMD32(pCoeffs)++; - - /* Read the input state values from the state buffer: x[n-1], x[n-2] */ - state_in = *__SIMD32(pState)++; - - /* Read the output state values from the state buffer: y[n-1], y[n-2] */ - state_out = *__SIMD32(pState)--; - - /* Apply loop unrolling and compute 2 output values simultaneously. */ - /* The variable acc hold output values that are being computed: - * - * acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] - * acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] - */ - sample = blockSize >> 1U; - - /* First part of the processing with loop unrolling. Compute 2 outputs at a time. - ** a second loop below computes the remaining 1 sample. */ - while (sample > 0U) - { - - /* Read the input */ - in = *__SIMD32(pIn)++; - - /* out = b0 * x[n] + 0 * 0 */ - out = __SMUAD(b0, in); - - /* acc += b1 * x[n-1] + b2 * x[n-2] + out */ - acc = __SMLALD(b1, state_in, out); - /* acc += a1 * y[n-1] + a2 * y[n-2] */ - acc = __SMLALD(a1, state_out, acc); - - /* The result is converted from 3.29 to 1.31 if postShift = 1, and then saturation is applied */ - /* Calc lower part of acc */ - acc_l = acc & 0xffffffff; - - /* Calc upper part of acc */ - acc_h = (acc >> 32) & 0xffffffff; - - /* Apply shift for lower part of acc and upper part of acc */ - out = (uint32_t) acc_l >> lShift | acc_h << uShift; - - out = __SSAT(out, 16); - - /* Every time after the output is computed state should be updated. */ - /* The states should be updated as: */ - /* Xn2 = Xn1 */ - /* Xn1 = Xn */ - /* Yn2 = Yn1 */ - /* Yn1 = acc */ - /* x[n-N], x[n-N-1] are packed together to make state_in of type q31 */ - /* y[n-N], y[n-N-1] are packed together to make state_out of type q31 */ - -#ifndef ARM_MATH_BIG_ENDIAN - - state_in = __PKHBT(in, state_in, 16); - state_out = __PKHBT(out, state_out, 16); - -#else - - state_in = __PKHBT(state_in >> 16, (in >> 16), 16); - state_out = __PKHBT(state_out >> 16, (out), 16); - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - /* out = b0 * x[n] + 0 * 0 */ - out = __SMUADX(b0, in); - /* acc += b1 * x[n-1] + b2 * x[n-2] + out */ - acc = __SMLALD(b1, state_in, out); - /* acc += a1 * y[n-1] + a2 * y[n-2] */ - acc = __SMLALD(a1, state_out, acc); - - /* The result is converted from 3.29 to 1.31 if postShift = 1, and then saturation is applied */ - /* Calc lower part of acc */ - acc_l = acc & 0xffffffff; - - /* Calc upper part of acc */ - acc_h = (acc >> 32) & 0xffffffff; - - /* Apply shift for lower part of acc and upper part of acc */ - out = (uint32_t) acc_l >> lShift | acc_h << uShift; - - out = __SSAT(out, 16); - - /* Store the output in the destination buffer. */ - -#ifndef ARM_MATH_BIG_ENDIAN - - *__SIMD32(pOut)++ = __PKHBT(state_out, out, 16); - -#else - - *__SIMD32(pOut)++ = __PKHBT(out, state_out >> 16, 16); - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - /* Every time after the output is computed state should be updated. */ - /* The states should be updated as: */ - /* Xn2 = Xn1 */ - /* Xn1 = Xn */ - /* Yn2 = Yn1 */ - /* Yn1 = acc */ - /* x[n-N], x[n-N-1] are packed together to make state_in of type q31 */ - /* y[n-N], y[n-N-1] are packed together to make state_out of type q31 */ -#ifndef ARM_MATH_BIG_ENDIAN - - state_in = __PKHBT(in >> 16, state_in, 16); - state_out = __PKHBT(out, state_out, 16); - -#else - - state_in = __PKHBT(state_in >> 16, in, 16); - state_out = __PKHBT(state_out >> 16, out, 16); - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - - /* Decrement the loop counter */ - sample--; - - } - - /* If the blockSize is not a multiple of 2, compute any remaining output samples here. - ** No loop unrolling is used. */ - - if ((blockSize & 0x1U) != 0U) - { - /* Read the input */ - in = *pIn++; - - /* out = b0 * x[n] + 0 * 0 */ - -#ifndef ARM_MATH_BIG_ENDIAN - - out = __SMUAD(b0, in); - -#else - - out = __SMUADX(b0, in); - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - /* acc = b1 * x[n-1] + b2 * x[n-2] + out */ - acc = __SMLALD(b1, state_in, out); - /* acc += a1 * y[n-1] + a2 * y[n-2] */ - acc = __SMLALD(a1, state_out, acc); - - /* The result is converted from 3.29 to 1.31 if postShift = 1, and then saturation is applied */ - /* Calc lower part of acc */ - acc_l = acc & 0xffffffff; - - /* Calc upper part of acc */ - acc_h = (acc >> 32) & 0xffffffff; - - /* Apply shift for lower part of acc and upper part of acc */ - out = (uint32_t) acc_l >> lShift | acc_h << uShift; - - out = __SSAT(out, 16); - - /* Store the output in the destination buffer. */ - *pOut++ = (q15_t) out; - - /* Every time after the output is computed state should be updated. */ - /* The states should be updated as: */ - /* Xn2 = Xn1 */ - /* Xn1 = Xn */ - /* Yn2 = Yn1 */ - /* Yn1 = acc */ - /* x[n-N], x[n-N-1] are packed together to make state_in of type q31 */ - /* y[n-N], y[n-N-1] are packed together to make state_out of type q31 */ - -#ifndef ARM_MATH_BIG_ENDIAN - - state_in = __PKHBT(in, state_in, 16); - state_out = __PKHBT(out, state_out, 16); - -#else - - state_in = __PKHBT(state_in >> 16, in, 16); - state_out = __PKHBT(state_out >> 16, out, 16); - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - } - - /* The first stage goes from the input wire to the output wire. */ - /* Subsequent numStages occur in-place in the output wire */ - pIn = pDst; - - /* Reset the output pointer */ - pOut = pDst; - - /* Store the updated state variables back into the state array */ - *__SIMD32(pState)++ = state_in; - *__SIMD32(pState)++ = state_out; - - - /* Decrement the loop counter */ - stage--; - - } while (stage > 0U); - -#else - - /* Run the below code for Cortex-M0 */ - - q15_t *pIn = pSrc; /* Source pointer */ - q15_t *pOut = pDst; /* Destination pointer */ - q15_t b0, b1, b2, a1, a2; /* Filter coefficients */ - q15_t Xn1, Xn2, Yn1, Yn2; /* Filter state variables */ - q15_t Xn; /* temporary input */ - q63_t acc; /* Accumulator */ - int32_t shift = (15 - (int32_t) S->postShift); /* Post shift */ - q15_t *pState = S->pState; /* State pointer */ - q15_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ - uint32_t sample, stage = (uint32_t) S->numStages; /* Stage loop counter */ - - do - { - /* Reading the coefficients */ - b0 = *pCoeffs++; - pCoeffs++; // skip the 0 coefficient - b1 = *pCoeffs++; - b2 = *pCoeffs++; - a1 = *pCoeffs++; - a2 = *pCoeffs++; - - /* Reading the state values */ - Xn1 = pState[0]; - Xn2 = pState[1]; - Yn1 = pState[2]; - Yn2 = pState[3]; - - /* The variables acc holds the output value that is computed: - * acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] - */ - - sample = blockSize; - - while (sample > 0U) - { - /* Read the input */ - Xn = *pIn++; - - /* acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */ - /* acc = b0 * x[n] */ - acc = (q31_t) b0 *Xn; - - /* acc += b1 * x[n-1] */ - acc += (q31_t) b1 *Xn1; - /* acc += b[2] * x[n-2] */ - acc += (q31_t) b2 *Xn2; - /* acc += a1 * y[n-1] */ - acc += (q31_t) a1 *Yn1; - /* acc += a2 * y[n-2] */ - acc += (q31_t) a2 *Yn2; - - /* The result is converted to 1.31 */ - acc = __SSAT((acc >> shift), 16); - - /* Every time after the output is computed state should be updated. */ - /* The states should be updated as: */ - /* Xn2 = Xn1 */ - /* Xn1 = Xn */ - /* Yn2 = Yn1 */ - /* Yn1 = acc */ - Xn2 = Xn1; - Xn1 = Xn; - Yn2 = Yn1; - Yn1 = (q15_t) acc; - - /* Store the output in the destination buffer. */ - *pOut++ = (q15_t) acc; - - /* decrement the loop counter */ - sample--; - } - - /* The first stage goes from the input buffer to the output buffer. */ - /* Subsequent stages occur in-place in the output buffer */ - pIn = pDst; - - /* Reset to destination pointer */ - pOut = pDst; - - /* Store the updated state variables back into the pState array */ - *pState++ = Xn1; - *pState++ = Xn2; - *pState++ = Yn1; - *pState++ = Yn2; - - } while (--stage); - -#endif /* #if defined (ARM_MATH_DSP) */ - -} - - -/** - * @} end of BiquadCascadeDF1 group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_q31.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_q31.c deleted file mode 100644 index 4ca3f85..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_q31.c +++ /dev/null @@ -1,392 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_biquad_cascade_df1_q31.c - * Description: Processing function for the Q31 Biquad cascade filter - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupFilters - */ - -/** - * @addtogroup BiquadCascadeDF1 - * @{ - */ - -/** - * @brief Processing function for the Q31 Biquad cascade filter. - * @param[in] *S points to an instance of the Q31 Biquad cascade structure. - * @param[in] *pSrc points to the block of input data. - * @param[out] *pDst points to the block of output data. - * @param[in] blockSize number of samples to process per call. - * @return none. - * - * Scaling and Overflow Behavior: - * \par - * The function is implemented using an internal 64-bit accumulator. - * The accumulator has a 2.62 format and maintains full precision of the intermediate multiplication results but provides only a single guard bit. - * Thus, if the accumulator result overflows it wraps around rather than clip. - * In order to avoid overflows completely the input signal must be scaled down by 2 bits and lie in the range [-0.25 +0.25). - * After all 5 multiply-accumulates are performed, the 2.62 accumulator is shifted by postShift bits and the result truncated to - * 1.31 format by discarding the low 32 bits. - * - * \par - * Refer to the function arm_biquad_cascade_df1_fast_q31() for a faster but less precise implementation of this filter for Cortex-M3 and Cortex-M4. - */ - -void arm_biquad_cascade_df1_q31( - const arm_biquad_casd_df1_inst_q31 * S, - q31_t * pSrc, - q31_t * pDst, - uint32_t blockSize) -{ - q63_t acc; /* accumulator */ - uint32_t uShift = ((uint32_t) S->postShift + 1U); - uint32_t lShift = 32U - uShift; /* Shift to be applied to the output */ - q31_t *pIn = pSrc; /* input pointer initialization */ - q31_t *pOut = pDst; /* output pointer initialization */ - q31_t *pState = S->pState; /* pState pointer initialization */ - q31_t *pCoeffs = S->pCoeffs; /* coeff pointer initialization */ - q31_t Xn1, Xn2, Yn1, Yn2; /* Filter state variables */ - q31_t b0, b1, b2, a1, a2; /* Filter coefficients */ - q31_t Xn; /* temporary input */ - uint32_t sample, stage = S->numStages; /* loop counters */ - - -#if defined (ARM_MATH_DSP) - - q31_t acc_l, acc_h; /* temporary output variables */ - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - do - { - /* Reading the coefficients */ - b0 = *pCoeffs++; - b1 = *pCoeffs++; - b2 = *pCoeffs++; - a1 = *pCoeffs++; - a2 = *pCoeffs++; - - /* Reading the state values */ - Xn1 = pState[0]; - Xn2 = pState[1]; - Yn1 = pState[2]; - Yn2 = pState[3]; - - /* Apply loop unrolling and compute 4 output values simultaneously. */ - /* The variable acc hold output values that are being computed: - * - * acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] - */ - - sample = blockSize >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (sample > 0U) - { - /* Read the input */ - Xn = *pIn++; - - /* acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */ - - /* acc = b0 * x[n] */ - acc = (q63_t) b0 *Xn; - /* acc += b1 * x[n-1] */ - acc += (q63_t) b1 *Xn1; - /* acc += b[2] * x[n-2] */ - acc += (q63_t) b2 *Xn2; - /* acc += a1 * y[n-1] */ - acc += (q63_t) a1 *Yn1; - /* acc += a2 * y[n-2] */ - acc += (q63_t) a2 *Yn2; - - /* The result is converted to 1.31 , Yn2 variable is reused */ - - /* Calc lower part of acc */ - acc_l = acc & 0xffffffff; - - /* Calc upper part of acc */ - acc_h = (acc >> 32) & 0xffffffff; - - /* Apply shift for lower part of acc and upper part of acc */ - Yn2 = (uint32_t) acc_l >> lShift | acc_h << uShift; - - /* Store the output in the destination buffer. */ - *pOut++ = Yn2; - - /* Read the second input */ - Xn2 = *pIn++; - - /* acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */ - - /* acc = b0 * x[n] */ - acc = (q63_t) b0 *Xn2; - /* acc += b1 * x[n-1] */ - acc += (q63_t) b1 *Xn; - /* acc += b[2] * x[n-2] */ - acc += (q63_t) b2 *Xn1; - /* acc += a1 * y[n-1] */ - acc += (q63_t) a1 *Yn2; - /* acc += a2 * y[n-2] */ - acc += (q63_t) a2 *Yn1; - - - /* The result is converted to 1.31, Yn1 variable is reused */ - - /* Calc lower part of acc */ - acc_l = acc & 0xffffffff; - - /* Calc upper part of acc */ - acc_h = (acc >> 32) & 0xffffffff; - - - /* Apply shift for lower part of acc and upper part of acc */ - Yn1 = (uint32_t) acc_l >> lShift | acc_h << uShift; - - /* Store the output in the destination buffer. */ - *pOut++ = Yn1; - - /* Read the third input */ - Xn1 = *pIn++; - - /* acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */ - - /* acc = b0 * x[n] */ - acc = (q63_t) b0 *Xn1; - /* acc += b1 * x[n-1] */ - acc += (q63_t) b1 *Xn2; - /* acc += b[2] * x[n-2] */ - acc += (q63_t) b2 *Xn; - /* acc += a1 * y[n-1] */ - acc += (q63_t) a1 *Yn1; - /* acc += a2 * y[n-2] */ - acc += (q63_t) a2 *Yn2; - - /* The result is converted to 1.31, Yn2 variable is reused */ - /* Calc lower part of acc */ - acc_l = acc & 0xffffffff; - - /* Calc upper part of acc */ - acc_h = (acc >> 32) & 0xffffffff; - - - /* Apply shift for lower part of acc and upper part of acc */ - Yn2 = (uint32_t) acc_l >> lShift | acc_h << uShift; - - /* Store the output in the destination buffer. */ - *pOut++ = Yn2; - - /* Read the forth input */ - Xn = *pIn++; - - /* acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */ - - /* acc = b0 * x[n] */ - acc = (q63_t) b0 *Xn; - /* acc += b1 * x[n-1] */ - acc += (q63_t) b1 *Xn1; - /* acc += b[2] * x[n-2] */ - acc += (q63_t) b2 *Xn2; - /* acc += a1 * y[n-1] */ - acc += (q63_t) a1 *Yn2; - /* acc += a2 * y[n-2] */ - acc += (q63_t) a2 *Yn1; - - /* The result is converted to 1.31, Yn1 variable is reused */ - /* Calc lower part of acc */ - acc_l = acc & 0xffffffff; - - /* Calc upper part of acc */ - acc_h = (acc >> 32) & 0xffffffff; - - /* Apply shift for lower part of acc and upper part of acc */ - Yn1 = (uint32_t) acc_l >> lShift | acc_h << uShift; - - /* Every time after the output is computed state should be updated. */ - /* The states should be updated as: */ - /* Xn2 = Xn1 */ - /* Xn1 = Xn */ - /* Yn2 = Yn1 */ - /* Yn1 = acc */ - Xn2 = Xn1; - Xn1 = Xn; - - /* Store the output in the destination buffer. */ - *pOut++ = Yn1; - - /* decrement the loop counter */ - sample--; - } - - /* If the blockSize is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - sample = (blockSize & 0x3U); - - while (sample > 0U) - { - /* Read the input */ - Xn = *pIn++; - - /* acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */ - - /* acc = b0 * x[n] */ - acc = (q63_t) b0 *Xn; - /* acc += b1 * x[n-1] */ - acc += (q63_t) b1 *Xn1; - /* acc += b[2] * x[n-2] */ - acc += (q63_t) b2 *Xn2; - /* acc += a1 * y[n-1] */ - acc += (q63_t) a1 *Yn1; - /* acc += a2 * y[n-2] */ - acc += (q63_t) a2 *Yn2; - - /* The result is converted to 1.31 */ - acc = acc >> lShift; - - /* Every time after the output is computed state should be updated. */ - /* The states should be updated as: */ - /* Xn2 = Xn1 */ - /* Xn1 = Xn */ - /* Yn2 = Yn1 */ - /* Yn1 = acc */ - Xn2 = Xn1; - Xn1 = Xn; - Yn2 = Yn1; - Yn1 = (q31_t) acc; - - /* Store the output in the destination buffer. */ - *pOut++ = (q31_t) acc; - - /* decrement the loop counter */ - sample--; - } - - /* The first stage goes from the input buffer to the output buffer. */ - /* Subsequent stages occur in-place in the output buffer */ - pIn = pDst; - - /* Reset to destination pointer */ - pOut = pDst; - - /* Store the updated state variables back into the pState array */ - *pState++ = Xn1; - *pState++ = Xn2; - *pState++ = Yn1; - *pState++ = Yn2; - - } while (--stage); - -#else - - /* Run the below code for Cortex-M0 */ - - do - { - /* Reading the coefficients */ - b0 = *pCoeffs++; - b1 = *pCoeffs++; - b2 = *pCoeffs++; - a1 = *pCoeffs++; - a2 = *pCoeffs++; - - /* Reading the state values */ - Xn1 = pState[0]; - Xn2 = pState[1]; - Yn1 = pState[2]; - Yn2 = pState[3]; - - /* The variables acc holds the output value that is computed: - * acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] - */ - - sample = blockSize; - - while (sample > 0U) - { - /* Read the input */ - Xn = *pIn++; - - /* acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */ - /* acc = b0 * x[n] */ - acc = (q63_t) b0 *Xn; - - /* acc += b1 * x[n-1] */ - acc += (q63_t) b1 *Xn1; - /* acc += b[2] * x[n-2] */ - acc += (q63_t) b2 *Xn2; - /* acc += a1 * y[n-1] */ - acc += (q63_t) a1 *Yn1; - /* acc += a2 * y[n-2] */ - acc += (q63_t) a2 *Yn2; - - /* The result is converted to 1.31 */ - acc = acc >> lShift; - - /* Every time after the output is computed state should be updated. */ - /* The states should be updated as: */ - /* Xn2 = Xn1 */ - /* Xn1 = Xn */ - /* Yn2 = Yn1 */ - /* Yn1 = acc */ - Xn2 = Xn1; - Xn1 = Xn; - Yn2 = Yn1; - Yn1 = (q31_t) acc; - - /* Store the output in the destination buffer. */ - *pOut++ = (q31_t) acc; - - /* decrement the loop counter */ - sample--; - } - - /* The first stage goes from the input buffer to the output buffer. */ - /* Subsequent stages occur in-place in the output buffer */ - pIn = pDst; - - /* Reset to destination pointer */ - pOut = pDst; - - /* Store the updated state variables back into the pState array */ - *pState++ = Xn1; - *pState++ = Xn2; - *pState++ = Yn1; - *pState++ = Yn2; - - } while (--stage); - -#endif /* #if defined (ARM_MATH_DSP) */ -} - - - - -/** - * @} end of BiquadCascadeDF1 group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df2T_f32.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df2T_f32.c deleted file mode 100644 index c5a81d4..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df2T_f32.c +++ /dev/null @@ -1,590 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_biquad_cascade_df2T_f32.c - * Description: Processing function for floating-point transposed direct form II Biquad cascade filter - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** -* @ingroup groupFilters -*/ - -/** -* @defgroup BiquadCascadeDF2T Biquad Cascade IIR Filters Using a Direct Form II Transposed Structure -* -* This set of functions implements arbitrary order recursive (IIR) filters using a transposed direct form II structure. -* The filters are implemented as a cascade of second order Biquad sections. -* These functions provide a slight memory savings as compared to the direct form I Biquad filter functions. -* Only floating-point data is supported. -* -* This function operate on blocks of input and output data and each call to the function -* processes blockSize samples through the filter. -* pSrc points to the array of input data and -* pDst points to the array of output data. -* Both arrays contain blockSize values. -* -* \par Algorithm -* Each Biquad stage implements a second order filter using the difference equation: -*
-*    y[n] = b0 * x[n] + d1
-*    d1 = b1 * x[n] + a1 * y[n] + d2
-*    d2 = b2 * x[n] + a2 * y[n]
-* 
-* where d1 and d2 represent the two state values. -* -* \par -* A Biquad filter using a transposed Direct Form II structure is shown below. -* \image html BiquadDF2Transposed.gif "Single transposed Direct Form II Biquad" -* Coefficients b0, b1, and b2 multiply the input signal x[n] and are referred to as the feedforward coefficients. -* Coefficients a1 and a2 multiply the output signal y[n] and are referred to as the feedback coefficients. -* Pay careful attention to the sign of the feedback coefficients. -* Some design tools flip the sign of the feedback coefficients: -*
-*    y[n] = b0 * x[n] + d1;
-*    d1 = b1 * x[n] - a1 * y[n] + d2;
-*    d2 = b2 * x[n] - a2 * y[n];
-* 
-* In this case the feedback coefficients a1 and a2 must be negated when used with the CMSIS DSP Library. -* -* \par -* Higher order filters are realized as a cascade of second order sections. -* numStages refers to the number of second order stages used. -* For example, an 8th order filter would be realized with numStages=4 second order stages. -* A 9th order filter would be realized with numStages=5 second order stages with the -* coefficients for one of the stages configured as a first order filter (b2=0 and a2=0). -* -* \par -* pState points to the state variable array. -* Each Biquad stage has 2 state variables d1 and d2. -* The state variables are arranged in the pState array as: -*
-*     {d11, d12, d21, d22, ...}
-* 
-* where d1x refers to the state variables for the first Biquad and -* d2x refers to the state variables for the second Biquad. -* The state array has a total length of 2*numStages values. -* The state variables are updated after each block of data is processed; the coefficients are untouched. -* -* \par -* The CMSIS library contains Biquad filters in both Direct Form I and transposed Direct Form II. -* The advantage of the Direct Form I structure is that it is numerically more robust for fixed-point data types. -* That is why the Direct Form I structure supports Q15 and Q31 data types. -* The transposed Direct Form II structure, on the other hand, requires a wide dynamic range for the state variables d1 and d2. -* Because of this, the CMSIS library only has a floating-point version of the Direct Form II Biquad. -* The advantage of the Direct Form II Biquad is that it requires half the number of state variables, 2 rather than 4, per Biquad stage. -* -* \par Instance Structure -* The coefficients and state variables for a filter are stored together in an instance data structure. -* A separate instance structure must be defined for each filter. -* Coefficient arrays may be shared among several instances while state variable arrays cannot be shared. -* -* \par Init Functions -* There is also an associated initialization function. -* The initialization function performs following operations: -* - Sets the values of the internal structure fields. -* - Zeros out the values in the state buffer. -* To do this manually without calling the init function, assign the follow subfields of the instance structure: -* numStages, pCoeffs, pState. Also set all of the values in pState to zero. -* -* \par -* Use of the initialization function is optional. -* However, if the initialization function is used, then the instance structure cannot be placed into a const data section. -* To place an instance structure into a const data section, the instance structure must be manually initialized. -* Set the values in the state buffer to zeros before static initialization. -* For example, to statically initialize the instance structure use -*
-*     arm_biquad_cascade_df2T_instance_f32 S1 = {numStages, pState, pCoeffs};
-* 
-* where numStages is the number of Biquad stages in the filter; pState is the address of the state buffer. -* pCoeffs is the address of the coefficient buffer; -* -*/ - -/** -* @addtogroup BiquadCascadeDF2T -* @{ -*/ - -/** -* @brief Processing function for the floating-point transposed direct form II Biquad cascade filter. -* @param[in] *S points to an instance of the filter data structure. -* @param[in] *pSrc points to the block of input data. -* @param[out] *pDst points to the block of output data -* @param[in] blockSize number of samples to process. -* @return none. -*/ - - -LOW_OPTIMIZATION_ENTER -void arm_biquad_cascade_df2T_f32( -const arm_biquad_cascade_df2T_instance_f32 * S, -float32_t * pSrc, -float32_t * pDst, -uint32_t blockSize) -{ - - float32_t *pIn = pSrc; /* source pointer */ - float32_t *pOut = pDst; /* destination pointer */ - float32_t *pState = S->pState; /* State pointer */ - float32_t *pCoeffs = S->pCoeffs; /* coefficient pointer */ - float32_t acc1; /* accumulator */ - float32_t b0, b1, b2, a1, a2; /* Filter coefficients */ - float32_t Xn1; /* temporary input */ - float32_t d1, d2; /* state variables */ - uint32_t sample, stage = S->numStages; /* loop counters */ - -#if defined(ARM_MATH_CM7) - - float32_t Xn2, Xn3, Xn4, Xn5, Xn6, Xn7, Xn8; /* Input State variables */ - float32_t Xn9, Xn10, Xn11, Xn12, Xn13, Xn14, Xn15, Xn16; - float32_t acc2, acc3, acc4, acc5, acc6, acc7; /* Simulates the accumulator */ - float32_t acc8, acc9, acc10, acc11, acc12, acc13, acc14, acc15, acc16; - - do - { - /* Reading the coefficients */ - b0 = pCoeffs[0]; - b1 = pCoeffs[1]; - b2 = pCoeffs[2]; - a1 = pCoeffs[3]; - /* Apply loop unrolling and compute 16 output values simultaneously. */ - sample = blockSize >> 4U; - a2 = pCoeffs[4]; - - /*Reading the state values */ - d1 = pState[0]; - d2 = pState[1]; - - pCoeffs += 5U; - - - /* First part of the processing with loop unrolling. Compute 16 outputs at a time. - ** a second loop below computes the remaining 1 to 15 samples. */ - while (sample > 0U) { - - /* y[n] = b0 * x[n] + d1 */ - /* d1 = b1 * x[n] + a1 * y[n] + d2 */ - /* d2 = b2 * x[n] + a2 * y[n] */ - - /* Read the first 2 inputs. 2 cycles */ - Xn1 = pIn[0 ]; - Xn2 = pIn[1 ]; - - /* Sample 1. 5 cycles */ - Xn3 = pIn[2 ]; - acc1 = b0 * Xn1 + d1; - - Xn4 = pIn[3 ]; - d1 = b1 * Xn1 + d2; - - Xn5 = pIn[4 ]; - d2 = b2 * Xn1; - - Xn6 = pIn[5 ]; - d1 += a1 * acc1; - - Xn7 = pIn[6 ]; - d2 += a2 * acc1; - - /* Sample 2. 5 cycles */ - Xn8 = pIn[7 ]; - acc2 = b0 * Xn2 + d1; - - Xn9 = pIn[8 ]; - d1 = b1 * Xn2 + d2; - - Xn10 = pIn[9 ]; - d2 = b2 * Xn2; - - Xn11 = pIn[10]; - d1 += a1 * acc2; - - Xn12 = pIn[11]; - d2 += a2 * acc2; - - /* Sample 3. 5 cycles */ - Xn13 = pIn[12]; - acc3 = b0 * Xn3 + d1; - - Xn14 = pIn[13]; - d1 = b1 * Xn3 + d2; - - Xn15 = pIn[14]; - d2 = b2 * Xn3; - - Xn16 = pIn[15]; - d1 += a1 * acc3; - - pIn += 16; - d2 += a2 * acc3; - - /* Sample 4. 5 cycles */ - acc4 = b0 * Xn4 + d1; - d1 = b1 * Xn4 + d2; - d2 = b2 * Xn4; - d1 += a1 * acc4; - d2 += a2 * acc4; - - /* Sample 5. 5 cycles */ - acc5 = b0 * Xn5 + d1; - d1 = b1 * Xn5 + d2; - d2 = b2 * Xn5; - d1 += a1 * acc5; - d2 += a2 * acc5; - - /* Sample 6. 5 cycles */ - acc6 = b0 * Xn6 + d1; - d1 = b1 * Xn6 + d2; - d2 = b2 * Xn6; - d1 += a1 * acc6; - d2 += a2 * acc6; - - /* Sample 7. 5 cycles */ - acc7 = b0 * Xn7 + d1; - d1 = b1 * Xn7 + d2; - d2 = b2 * Xn7; - d1 += a1 * acc7; - d2 += a2 * acc7; - - /* Sample 8. 5 cycles */ - acc8 = b0 * Xn8 + d1; - d1 = b1 * Xn8 + d2; - d2 = b2 * Xn8; - d1 += a1 * acc8; - d2 += a2 * acc8; - - /* Sample 9. 5 cycles */ - acc9 = b0 * Xn9 + d1; - d1 = b1 * Xn9 + d2; - d2 = b2 * Xn9; - d1 += a1 * acc9; - d2 += a2 * acc9; - - /* Sample 10. 5 cycles */ - acc10 = b0 * Xn10 + d1; - d1 = b1 * Xn10 + d2; - d2 = b2 * Xn10; - d1 += a1 * acc10; - d2 += a2 * acc10; - - /* Sample 11. 5 cycles */ - acc11 = b0 * Xn11 + d1; - d1 = b1 * Xn11 + d2; - d2 = b2 * Xn11; - d1 += a1 * acc11; - d2 += a2 * acc11; - - /* Sample 12. 5 cycles */ - acc12 = b0 * Xn12 + d1; - d1 = b1 * Xn12 + d2; - d2 = b2 * Xn12; - d1 += a1 * acc12; - d2 += a2 * acc12; - - /* Sample 13. 5 cycles */ - acc13 = b0 * Xn13 + d1; - d1 = b1 * Xn13 + d2; - d2 = b2 * Xn13; - - pOut[0 ] = acc1 ; - d1 += a1 * acc13; - - pOut[1 ] = acc2 ; - d2 += a2 * acc13; - - /* Sample 14. 5 cycles */ - pOut[2 ] = acc3 ; - acc14 = b0 * Xn14 + d1; - - pOut[3 ] = acc4 ; - d1 = b1 * Xn14 + d2; - - pOut[4 ] = acc5 ; - d2 = b2 * Xn14; - - pOut[5 ] = acc6 ; - d1 += a1 * acc14; - - pOut[6 ] = acc7 ; - d2 += a2 * acc14; - - /* Sample 15. 5 cycles */ - pOut[7 ] = acc8 ; - pOut[8 ] = acc9 ; - acc15 = b0 * Xn15 + d1; - - pOut[9 ] = acc10; - d1 = b1 * Xn15 + d2; - - pOut[10] = acc11; - d2 = b2 * Xn15; - - pOut[11] = acc12; - d1 += a1 * acc15; - - pOut[12] = acc13; - d2 += a2 * acc15; - - /* Sample 16. 5 cycles */ - pOut[13] = acc14; - acc16 = b0 * Xn16 + d1; - - pOut[14] = acc15; - d1 = b1 * Xn16 + d2; - - pOut[15] = acc16; - d2 = b2 * Xn16; - - sample--; - d1 += a1 * acc16; - - pOut += 16; - d2 += a2 * acc16; - } - - sample = blockSize & 0xFu; - while (sample > 0U) { - Xn1 = *pIn; - acc1 = b0 * Xn1 + d1; - - pIn++; - d1 = b1 * Xn1 + d2; - - *pOut = acc1; - d2 = b2 * Xn1; - - pOut++; - d1 += a1 * acc1; - - sample--; - d2 += a2 * acc1; - } - - /* Store the updated state variables back into the state array */ - pState[0] = d1; - /* The current stage input is given as the output to the next stage */ - pIn = pDst; - - pState[1] = d2; - /* decrement the loop counter */ - stage--; - - pState += 2U; - - /*Reset the output working pointer */ - pOut = pDst; - - } while (stage > 0U); - -#elif defined(ARM_MATH_CM0_FAMILY) - - /* Run the below code for Cortex-M0 */ - - do - { - /* Reading the coefficients */ - b0 = *pCoeffs++; - b1 = *pCoeffs++; - b2 = *pCoeffs++; - a1 = *pCoeffs++; - a2 = *pCoeffs++; - - /*Reading the state values */ - d1 = pState[0]; - d2 = pState[1]; - - - sample = blockSize; - - while (sample > 0U) - { - /* Read the input */ - Xn1 = *pIn++; - - /* y[n] = b0 * x[n] + d1 */ - acc1 = (b0 * Xn1) + d1; - - /* Store the result in the accumulator in the destination buffer. */ - *pOut++ = acc1; - - /* Every time after the output is computed state should be updated. */ - /* d1 = b1 * x[n] + a1 * y[n] + d2 */ - d1 = ((b1 * Xn1) + (a1 * acc1)) + d2; - - /* d2 = b2 * x[n] + a2 * y[n] */ - d2 = (b2 * Xn1) + (a2 * acc1); - - /* decrement the loop counter */ - sample--; - } - - /* Store the updated state variables back into the state array */ - *pState++ = d1; - *pState++ = d2; - - /* The current stage input is given as the output to the next stage */ - pIn = pDst; - - /*Reset the output working pointer */ - pOut = pDst; - - /* decrement the loop counter */ - stage--; - - } while (stage > 0U); - -#else - - float32_t Xn2, Xn3, Xn4; /* Input State variables */ - float32_t acc2, acc3, acc4; /* accumulator */ - - - float32_t p0, p1, p2, p3, p4, A1; - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - do - { - /* Reading the coefficients */ - b0 = *pCoeffs++; - b1 = *pCoeffs++; - b2 = *pCoeffs++; - a1 = *pCoeffs++; - a2 = *pCoeffs++; - - - /*Reading the state values */ - d1 = pState[0]; - d2 = pState[1]; - - /* Apply loop unrolling and compute 4 output values simultaneously. */ - sample = blockSize >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (sample > 0U) { - - /* y[n] = b0 * x[n] + d1 */ - /* d1 = b1 * x[n] + a1 * y[n] + d2 */ - /* d2 = b2 * x[n] + a2 * y[n] */ - - /* Read the four inputs */ - Xn1 = pIn[0]; - Xn2 = pIn[1]; - Xn3 = pIn[2]; - Xn4 = pIn[3]; - pIn += 4; - - p0 = b0 * Xn1; - p1 = b1 * Xn1; - acc1 = p0 + d1; - p0 = b0 * Xn2; - p3 = a1 * acc1; - p2 = b2 * Xn1; - A1 = p1 + p3; - p4 = a2 * acc1; - d1 = A1 + d2; - d2 = p2 + p4; - - p1 = b1 * Xn2; - acc2 = p0 + d1; - p0 = b0 * Xn3; - p3 = a1 * acc2; - p2 = b2 * Xn2; - A1 = p1 + p3; - p4 = a2 * acc2; - d1 = A1 + d2; - d2 = p2 + p4; - - p1 = b1 * Xn3; - acc3 = p0 + d1; - p0 = b0 * Xn4; - p3 = a1 * acc3; - p2 = b2 * Xn3; - A1 = p1 + p3; - p4 = a2 * acc3; - d1 = A1 + d2; - d2 = p2 + p4; - - acc4 = p0 + d1; - p1 = b1 * Xn4; - p3 = a1 * acc4; - p2 = b2 * Xn4; - A1 = p1 + p3; - p4 = a2 * acc4; - d1 = A1 + d2; - d2 = p2 + p4; - - pOut[0] = acc1; - pOut[1] = acc2; - pOut[2] = acc3; - pOut[3] = acc4; - pOut += 4; - - sample--; - } - - sample = blockSize & 0x3U; - while (sample > 0U) { - Xn1 = *pIn++; - - p0 = b0 * Xn1; - p1 = b1 * Xn1; - acc1 = p0 + d1; - p3 = a1 * acc1; - p2 = b2 * Xn1; - A1 = p1 + p3; - p4 = a2 * acc1; - d1 = A1 + d2; - d2 = p2 + p4; - - *pOut++ = acc1; - - sample--; - } - - /* Store the updated state variables back into the state array */ - *pState++ = d1; - *pState++ = d2; - - /* The current stage input is given as the output to the next stage */ - pIn = pDst; - - /*Reset the output working pointer */ - pOut = pDst; - - /* decrement the loop counter */ - stage--; - - } while (stage > 0U); - -#endif - -} -LOW_OPTIMIZATION_EXIT - -/** - * @} end of BiquadCascadeDF2T group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df2T_f64.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df2T_f64.c deleted file mode 100644 index aad9fbb..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df2T_f64.c +++ /dev/null @@ -1,590 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_biquad_cascade_df2T_f64.c - * Description: Processing function for floating-point transposed direct form II Biquad cascade filter - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** -* @ingroup groupFilters -*/ - -/** -* @defgroup BiquadCascadeDF2T Biquad Cascade IIR Filters Using a Direct Form II Transposed Structure -* -* This set of functions implements arbitrary order recursive (IIR) filters using a transposed direct form II structure. -* The filters are implemented as a cascade of second order Biquad sections. -* These functions provide a slight memory savings as compared to the direct form I Biquad filter functions. -* Only floating-point data is supported. -* -* This function operate on blocks of input and output data and each call to the function -* processes blockSize samples through the filter. -* pSrc points to the array of input data and -* pDst points to the array of output data. -* Both arrays contain blockSize values. -* -* \par Algorithm -* Each Biquad stage implements a second order filter using the difference equation: -*
-*    y[n] = b0 * x[n] + d1
-*    d1 = b1 * x[n] + a1 * y[n] + d2
-*    d2 = b2 * x[n] + a2 * y[n]
-* 
-* where d1 and d2 represent the two state values. -* -* \par -* A Biquad filter using a transposed Direct Form II structure is shown below. -* \image html BiquadDF2Transposed.gif "Single transposed Direct Form II Biquad" -* Coefficients b0, b1, and b2 multiply the input signal x[n] and are referred to as the feedforward coefficients. -* Coefficients a1 and a2 multiply the output signal y[n] and are referred to as the feedback coefficients. -* Pay careful attention to the sign of the feedback coefficients. -* Some design tools flip the sign of the feedback coefficients: -*
-*    y[n] = b0 * x[n] + d1;
-*    d1 = b1 * x[n] - a1 * y[n] + d2;
-*    d2 = b2 * x[n] - a2 * y[n];
-* 
-* In this case the feedback coefficients a1 and a2 must be negated when used with the CMSIS DSP Library. -* -* \par -* Higher order filters are realized as a cascade of second order sections. -* numStages refers to the number of second order stages used. -* For example, an 8th order filter would be realized with numStages=4 second order stages. -* A 9th order filter would be realized with numStages=5 second order stages with the -* coefficients for one of the stages configured as a first order filter (b2=0 and a2=0). -* -* \par -* pState points to the state variable array. -* Each Biquad stage has 2 state variables d1 and d2. -* The state variables are arranged in the pState array as: -*
-*     {d11, d12, d21, d22, ...}
-* 
-* where d1x refers to the state variables for the first Biquad and -* d2x refers to the state variables for the second Biquad. -* The state array has a total length of 2*numStages values. -* The state variables are updated after each block of data is processed; the coefficients are untouched. -* -* \par -* The CMSIS library contains Biquad filters in both Direct Form I and transposed Direct Form II. -* The advantage of the Direct Form I structure is that it is numerically more robust for fixed-point data types. -* That is why the Direct Form I structure supports Q15 and Q31 data types. -* The transposed Direct Form II structure, on the other hand, requires a wide dynamic range for the state variables d1 and d2. -* Because of this, the CMSIS library only has a floating-point version of the Direct Form II Biquad. -* The advantage of the Direct Form II Biquad is that it requires half the number of state variables, 2 rather than 4, per Biquad stage. -* -* \par Instance Structure -* The coefficients and state variables for a filter are stored together in an instance data structure. -* A separate instance structure must be defined for each filter. -* Coefficient arrays may be shared among several instances while state variable arrays cannot be shared. -* -* \par Init Functions -* There is also an associated initialization function. -* The initialization function performs following operations: -* - Sets the values of the internal structure fields. -* - Zeros out the values in the state buffer. -* To do this manually without calling the init function, assign the follow subfields of the instance structure: -* numStages, pCoeffs, pState. Also set all of the values in pState to zero. -* -* \par -* Use of the initialization function is optional. -* However, if the initialization function is used, then the instance structure cannot be placed into a const data section. -* To place an instance structure into a const data section, the instance structure must be manually initialized. -* Set the values in the state buffer to zeros before static initialization. -* For example, to statically initialize the instance structure use -*
-*     arm_biquad_cascade_df2T_instance_f64 S1 = {numStages, pState, pCoeffs};
-* 
-* where numStages is the number of Biquad stages in the filter; pState is the address of the state buffer. -* pCoeffs is the address of the coefficient buffer; -* -*/ - -/** -* @addtogroup BiquadCascadeDF2T -* @{ -*/ - -/** -* @brief Processing function for the floating-point transposed direct form II Biquad cascade filter. -* @param[in] *S points to an instance of the filter data structure. -* @param[in] *pSrc points to the block of input data. -* @param[out] *pDst points to the block of output data -* @param[in] blockSize number of samples to process. -* @return none. -*/ - - -LOW_OPTIMIZATION_ENTER -void arm_biquad_cascade_df2T_f64( -const arm_biquad_cascade_df2T_instance_f64 * S, -float64_t * pSrc, -float64_t * pDst, -uint32_t blockSize) -{ - - float64_t *pIn = pSrc; /* source pointer */ - float64_t *pOut = pDst; /* destination pointer */ - float64_t *pState = S->pState; /* State pointer */ - float64_t *pCoeffs = S->pCoeffs; /* coefficient pointer */ - float64_t acc1; /* accumulator */ - float64_t b0, b1, b2, a1, a2; /* Filter coefficients */ - float64_t Xn1; /* temporary input */ - float64_t d1, d2; /* state variables */ - uint32_t sample, stage = S->numStages; /* loop counters */ - -#if defined(ARM_MATH_CM7) - - float64_t Xn2, Xn3, Xn4, Xn5, Xn6, Xn7, Xn8; /* Input State variables */ - float64_t Xn9, Xn10, Xn11, Xn12, Xn13, Xn14, Xn15, Xn16; - float64_t acc2, acc3, acc4, acc5, acc6, acc7; /* Simulates the accumulator */ - float64_t acc8, acc9, acc10, acc11, acc12, acc13, acc14, acc15, acc16; - - do - { - /* Reading the coefficients */ - b0 = pCoeffs[0]; - b1 = pCoeffs[1]; - b2 = pCoeffs[2]; - a1 = pCoeffs[3]; - /* Apply loop unrolling and compute 16 output values simultaneously. */ - sample = blockSize >> 4U; - a2 = pCoeffs[4]; - - /*Reading the state values */ - d1 = pState[0]; - d2 = pState[1]; - - pCoeffs += 5U; - - - /* First part of the processing with loop unrolling. Compute 16 outputs at a time. - ** a second loop below computes the remaining 1 to 15 samples. */ - while (sample > 0U) { - - /* y[n] = b0 * x[n] + d1 */ - /* d1 = b1 * x[n] + a1 * y[n] + d2 */ - /* d2 = b2 * x[n] + a2 * y[n] */ - - /* Read the first 2 inputs. 2 cycles */ - Xn1 = pIn[0 ]; - Xn2 = pIn[1 ]; - - /* Sample 1. 5 cycles */ - Xn3 = pIn[2 ]; - acc1 = b0 * Xn1 + d1; - - Xn4 = pIn[3 ]; - d1 = b1 * Xn1 + d2; - - Xn5 = pIn[4 ]; - d2 = b2 * Xn1; - - Xn6 = pIn[5 ]; - d1 += a1 * acc1; - - Xn7 = pIn[6 ]; - d2 += a2 * acc1; - - /* Sample 2. 5 cycles */ - Xn8 = pIn[7 ]; - acc2 = b0 * Xn2 + d1; - - Xn9 = pIn[8 ]; - d1 = b1 * Xn2 + d2; - - Xn10 = pIn[9 ]; - d2 = b2 * Xn2; - - Xn11 = pIn[10]; - d1 += a1 * acc2; - - Xn12 = pIn[11]; - d2 += a2 * acc2; - - /* Sample 3. 5 cycles */ - Xn13 = pIn[12]; - acc3 = b0 * Xn3 + d1; - - Xn14 = pIn[13]; - d1 = b1 * Xn3 + d2; - - Xn15 = pIn[14]; - d2 = b2 * Xn3; - - Xn16 = pIn[15]; - d1 += a1 * acc3; - - pIn += 16; - d2 += a2 * acc3; - - /* Sample 4. 5 cycles */ - acc4 = b0 * Xn4 + d1; - d1 = b1 * Xn4 + d2; - d2 = b2 * Xn4; - d1 += a1 * acc4; - d2 += a2 * acc4; - - /* Sample 5. 5 cycles */ - acc5 = b0 * Xn5 + d1; - d1 = b1 * Xn5 + d2; - d2 = b2 * Xn5; - d1 += a1 * acc5; - d2 += a2 * acc5; - - /* Sample 6. 5 cycles */ - acc6 = b0 * Xn6 + d1; - d1 = b1 * Xn6 + d2; - d2 = b2 * Xn6; - d1 += a1 * acc6; - d2 += a2 * acc6; - - /* Sample 7. 5 cycles */ - acc7 = b0 * Xn7 + d1; - d1 = b1 * Xn7 + d2; - d2 = b2 * Xn7; - d1 += a1 * acc7; - d2 += a2 * acc7; - - /* Sample 8. 5 cycles */ - acc8 = b0 * Xn8 + d1; - d1 = b1 * Xn8 + d2; - d2 = b2 * Xn8; - d1 += a1 * acc8; - d2 += a2 * acc8; - - /* Sample 9. 5 cycles */ - acc9 = b0 * Xn9 + d1; - d1 = b1 * Xn9 + d2; - d2 = b2 * Xn9; - d1 += a1 * acc9; - d2 += a2 * acc9; - - /* Sample 10. 5 cycles */ - acc10 = b0 * Xn10 + d1; - d1 = b1 * Xn10 + d2; - d2 = b2 * Xn10; - d1 += a1 * acc10; - d2 += a2 * acc10; - - /* Sample 11. 5 cycles */ - acc11 = b0 * Xn11 + d1; - d1 = b1 * Xn11 + d2; - d2 = b2 * Xn11; - d1 += a1 * acc11; - d2 += a2 * acc11; - - /* Sample 12. 5 cycles */ - acc12 = b0 * Xn12 + d1; - d1 = b1 * Xn12 + d2; - d2 = b2 * Xn12; - d1 += a1 * acc12; - d2 += a2 * acc12; - - /* Sample 13. 5 cycles */ - acc13 = b0 * Xn13 + d1; - d1 = b1 * Xn13 + d2; - d2 = b2 * Xn13; - - pOut[0 ] = acc1 ; - d1 += a1 * acc13; - - pOut[1 ] = acc2 ; - d2 += a2 * acc13; - - /* Sample 14. 5 cycles */ - pOut[2 ] = acc3 ; - acc14 = b0 * Xn14 + d1; - - pOut[3 ] = acc4 ; - d1 = b1 * Xn14 + d2; - - pOut[4 ] = acc5 ; - d2 = b2 * Xn14; - - pOut[5 ] = acc6 ; - d1 += a1 * acc14; - - pOut[6 ] = acc7 ; - d2 += a2 * acc14; - - /* Sample 15. 5 cycles */ - pOut[7 ] = acc8 ; - pOut[8 ] = acc9 ; - acc15 = b0 * Xn15 + d1; - - pOut[9 ] = acc10; - d1 = b1 * Xn15 + d2; - - pOut[10] = acc11; - d2 = b2 * Xn15; - - pOut[11] = acc12; - d1 += a1 * acc15; - - pOut[12] = acc13; - d2 += a2 * acc15; - - /* Sample 16. 5 cycles */ - pOut[13] = acc14; - acc16 = b0 * Xn16 + d1; - - pOut[14] = acc15; - d1 = b1 * Xn16 + d2; - - pOut[15] = acc16; - d2 = b2 * Xn16; - - sample--; - d1 += a1 * acc16; - - pOut += 16; - d2 += a2 * acc16; - } - - sample = blockSize & 0xFu; - while (sample > 0U) { - Xn1 = *pIn; - acc1 = b0 * Xn1 + d1; - - pIn++; - d1 = b1 * Xn1 + d2; - - *pOut = acc1; - d2 = b2 * Xn1; - - pOut++; - d1 += a1 * acc1; - - sample--; - d2 += a2 * acc1; - } - - /* Store the updated state variables back into the state array */ - pState[0] = d1; - /* The current stage input is given as the output to the next stage */ - pIn = pDst; - - pState[1] = d2; - /* decrement the loop counter */ - stage--; - - pState += 2U; - - /*Reset the output working pointer */ - pOut = pDst; - - } while (stage > 0U); - -#elif defined(ARM_MATH_CM0_FAMILY) - - /* Run the below code for Cortex-M0 */ - - do - { - /* Reading the coefficients */ - b0 = *pCoeffs++; - b1 = *pCoeffs++; - b2 = *pCoeffs++; - a1 = *pCoeffs++; - a2 = *pCoeffs++; - - /*Reading the state values */ - d1 = pState[0]; - d2 = pState[1]; - - - sample = blockSize; - - while (sample > 0U) - { - /* Read the input */ - Xn1 = *pIn++; - - /* y[n] = b0 * x[n] + d1 */ - acc1 = (b0 * Xn1) + d1; - - /* Store the result in the accumulator in the destination buffer. */ - *pOut++ = acc1; - - /* Every time after the output is computed state should be updated. */ - /* d1 = b1 * x[n] + a1 * y[n] + d2 */ - d1 = ((b1 * Xn1) + (a1 * acc1)) + d2; - - /* d2 = b2 * x[n] + a2 * y[n] */ - d2 = (b2 * Xn1) + (a2 * acc1); - - /* decrement the loop counter */ - sample--; - } - - /* Store the updated state variables back into the state array */ - *pState++ = d1; - *pState++ = d2; - - /* The current stage input is given as the output to the next stage */ - pIn = pDst; - - /*Reset the output working pointer */ - pOut = pDst; - - /* decrement the loop counter */ - stage--; - - } while (stage > 0U); - -#else - - float64_t Xn2, Xn3, Xn4; /* Input State variables */ - float64_t acc2, acc3, acc4; /* accumulator */ - - - float64_t p0, p1, p2, p3, p4, A1; - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - do - { - /* Reading the coefficients */ - b0 = *pCoeffs++; - b1 = *pCoeffs++; - b2 = *pCoeffs++; - a1 = *pCoeffs++; - a2 = *pCoeffs++; - - - /*Reading the state values */ - d1 = pState[0]; - d2 = pState[1]; - - /* Apply loop unrolling and compute 4 output values simultaneously. */ - sample = blockSize >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (sample > 0U) { - - /* y[n] = b0 * x[n] + d1 */ - /* d1 = b1 * x[n] + a1 * y[n] + d2 */ - /* d2 = b2 * x[n] + a2 * y[n] */ - - /* Read the four inputs */ - Xn1 = pIn[0]; - Xn2 = pIn[1]; - Xn3 = pIn[2]; - Xn4 = pIn[3]; - pIn += 4; - - p0 = b0 * Xn1; - p1 = b1 * Xn1; - acc1 = p0 + d1; - p0 = b0 * Xn2; - p3 = a1 * acc1; - p2 = b2 * Xn1; - A1 = p1 + p3; - p4 = a2 * acc1; - d1 = A1 + d2; - d2 = p2 + p4; - - p1 = b1 * Xn2; - acc2 = p0 + d1; - p0 = b0 * Xn3; - p3 = a1 * acc2; - p2 = b2 * Xn2; - A1 = p1 + p3; - p4 = a2 * acc2; - d1 = A1 + d2; - d2 = p2 + p4; - - p1 = b1 * Xn3; - acc3 = p0 + d1; - p0 = b0 * Xn4; - p3 = a1 * acc3; - p2 = b2 * Xn3; - A1 = p1 + p3; - p4 = a2 * acc3; - d1 = A1 + d2; - d2 = p2 + p4; - - acc4 = p0 + d1; - p1 = b1 * Xn4; - p3 = a1 * acc4; - p2 = b2 * Xn4; - A1 = p1 + p3; - p4 = a2 * acc4; - d1 = A1 + d2; - d2 = p2 + p4; - - pOut[0] = acc1; - pOut[1] = acc2; - pOut[2] = acc3; - pOut[3] = acc4; - pOut += 4; - - sample--; - } - - sample = blockSize & 0x3U; - while (sample > 0U) { - Xn1 = *pIn++; - - p0 = b0 * Xn1; - p1 = b1 * Xn1; - acc1 = p0 + d1; - p3 = a1 * acc1; - p2 = b2 * Xn1; - A1 = p1 + p3; - p4 = a2 * acc1; - d1 = A1 + d2; - d2 = p2 + p4; - - *pOut++ = acc1; - - sample--; - } - - /* Store the updated state variables back into the state array */ - *pState++ = d1; - *pState++ = d2; - - /* The current stage input is given as the output to the next stage */ - pIn = pDst; - - /*Reset the output working pointer */ - pOut = pDst; - - /* decrement the loop counter */ - stage--; - - } while (stage > 0U); - -#endif - -} -LOW_OPTIMIZATION_EXIT - -/** - * @} end of BiquadCascadeDF2T group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df2T_init_f32.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df2T_init_f32.c deleted file mode 100644 index 1801799..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df2T_init_f32.c +++ /dev/null @@ -1,89 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_biquad_cascade_df2T_init_f32.c - * Description: Initialization function for floating-point transposed direct form II Biquad cascade filter - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupFilters - */ - -/** - * @addtogroup BiquadCascadeDF2T - * @{ - */ - -/** - * @brief Initialization function for the floating-point transposed direct form II Biquad cascade filter. - * @param[in,out] *S points to an instance of the filter data structure. - * @param[in] numStages number of 2nd order stages in the filter. - * @param[in] *pCoeffs points to the filter coefficients. - * @param[in] *pState points to the state buffer. - * @return none - * - * Coefficient and State Ordering: - * \par - * The coefficients are stored in the array pCoeffs in the following order: - *
- *     {b10, b11, b12, a11, a12, b20, b21, b22, a21, a22, ...}
- * 
- * - * \par - * where b1x and a1x are the coefficients for the first stage, - * b2x and a2x are the coefficients for the second stage, - * and so on. The pCoeffs array contains a total of 5*numStages values. - * - * \par - * The pState is a pointer to state array. - * Each Biquad stage has 2 state variables d1, and d2. - * The 2 state variables for stage 1 are first, then the 2 state variables for stage 2, and so on. - * The state array has a total length of 2*numStages values. - * The state variables are updated after each block of data is processed; the coefficients are untouched. - */ - -void arm_biquad_cascade_df2T_init_f32( - arm_biquad_cascade_df2T_instance_f32 * S, - uint8_t numStages, - float32_t * pCoeffs, - float32_t * pState) -{ - /* Assign filter stages */ - S->numStages = numStages; - - /* Assign coefficient pointer */ - S->pCoeffs = pCoeffs; - - /* Clear state buffer and size is always 2 * numStages */ - memset(pState, 0, (2U * (uint32_t) numStages) * sizeof(float32_t)); - - /* Assign state pointer */ - S->pState = pState; -} - -/** - * @} end of BiquadCascadeDF2T group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df2T_init_f64.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df2T_init_f64.c deleted file mode 100644 index 3d0a508..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df2T_init_f64.c +++ /dev/null @@ -1,89 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_biquad_cascade_df2T_init_f64.c - * Description: Initialization function for floating-point transposed direct form II Biquad cascade filter - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupFilters - */ - -/** - * @addtogroup BiquadCascadeDF2T - * @{ - */ - -/** - * @brief Initialization function for the floating-point transposed direct form II Biquad cascade filter. - * @param[in,out] *S points to an instance of the filter data structure. - * @param[in] numStages number of 2nd order stages in the filter. - * @param[in] *pCoeffs points to the filter coefficients. - * @param[in] *pState points to the state buffer. - * @return none - * - * Coefficient and State Ordering: - * \par - * The coefficients are stored in the array pCoeffs in the following order: - *
- *     {b10, b11, b12, a11, a12, b20, b21, b22, a21, a22, ...}
- * 
- * - * \par - * where b1x and a1x are the coefficients for the first stage, - * b2x and a2x are the coefficients for the second stage, - * and so on. The pCoeffs array contains a total of 5*numStages values. - * - * \par - * The pState is a pointer to state array. - * Each Biquad stage has 2 state variables d1, and d2. - * The 2 state variables for stage 1 are first, then the 2 state variables for stage 2, and so on. - * The state array has a total length of 2*numStages values. - * The state variables are updated after each block of data is processed; the coefficients are untouched. - */ - -void arm_biquad_cascade_df2T_init_f64( - arm_biquad_cascade_df2T_instance_f64 * S, - uint8_t numStages, - float64_t * pCoeffs, - float64_t * pState) -{ - /* Assign filter stages */ - S->numStages = numStages; - - /* Assign coefficient pointer */ - S->pCoeffs = pCoeffs; - - /* Clear state buffer and size is always 2 * numStages */ - memset(pState, 0, (2U * (uint32_t) numStages) * sizeof(float64_t)); - - /* Assign state pointer */ - S->pState = pState; -} - -/** - * @} end of BiquadCascadeDF2T group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_stereo_df2T_f32.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_stereo_df2T_f32.c deleted file mode 100644 index b7e9359..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_stereo_df2T_f32.c +++ /dev/null @@ -1,670 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_biquad_cascade_stereo_df2T_f32.c - * Description: Processing function for floating-point transposed direct form II Biquad cascade filter. 2 channels - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** -* @ingroup groupFilters -*/ - -/** -* @defgroup BiquadCascadeDF2T Biquad Cascade IIR Filters Using a Direct Form II Transposed Structure -* -* This set of functions implements arbitrary order recursive (IIR) filters using a transposed direct form II structure. -* The filters are implemented as a cascade of second order Biquad sections. -* These functions provide a slight memory savings as compared to the direct form I Biquad filter functions. -* Only floating-point data is supported. -* -* This function operate on blocks of input and output data and each call to the function -* processes blockSize samples through the filter. -* pSrc points to the array of input data and -* pDst points to the array of output data. -* Both arrays contain blockSize values. -* -* \par Algorithm -* Each Biquad stage implements a second order filter using the difference equation: -*
-*    y[n] = b0 * x[n] + d1
-*    d1 = b1 * x[n] + a1 * y[n] + d2
-*    d2 = b2 * x[n] + a2 * y[n]
-* 
-* where d1 and d2 represent the two state values. -* -* \par -* A Biquad filter using a transposed Direct Form II structure is shown below. -* \image html BiquadDF2Transposed.gif "Single transposed Direct Form II Biquad" -* Coefficients b0, b1, and b2 multiply the input signal x[n] and are referred to as the feedforward coefficients. -* Coefficients a1 and a2 multiply the output signal y[n] and are referred to as the feedback coefficients. -* Pay careful attention to the sign of the feedback coefficients. -* Some design tools flip the sign of the feedback coefficients: -*
-*    y[n] = b0 * x[n] + d1;
-*    d1 = b1 * x[n] - a1 * y[n] + d2;
-*    d2 = b2 * x[n] - a2 * y[n];
-* 
-* In this case the feedback coefficients a1 and a2 must be negated when used with the CMSIS DSP Library. -* -* \par -* Higher order filters are realized as a cascade of second order sections. -* numStages refers to the number of second order stages used. -* For example, an 8th order filter would be realized with numStages=4 second order stages. -* A 9th order filter would be realized with numStages=5 second order stages with the -* coefficients for one of the stages configured as a first order filter (b2=0 and a2=0). -* -* \par -* pState points to the state variable array. -* Each Biquad stage has 2 state variables d1 and d2. -* The state variables are arranged in the pState array as: -*
-*     {d11, d12, d21, d22, ...}
-* 
-* where d1x refers to the state variables for the first Biquad and -* d2x refers to the state variables for the second Biquad. -* The state array has a total length of 2*numStages values. -* The state variables are updated after each block of data is processed; the coefficients are untouched. -* -* \par -* The CMSIS library contains Biquad filters in both Direct Form I and transposed Direct Form II. -* The advantage of the Direct Form I structure is that it is numerically more robust for fixed-point data types. -* That is why the Direct Form I structure supports Q15 and Q31 data types. -* The transposed Direct Form II structure, on the other hand, requires a wide dynamic range for the state variables d1 and d2. -* Because of this, the CMSIS library only has a floating-point version of the Direct Form II Biquad. -* The advantage of the Direct Form II Biquad is that it requires half the number of state variables, 2 rather than 4, per Biquad stage. -* -* \par Instance Structure -* The coefficients and state variables for a filter are stored together in an instance data structure. -* A separate instance structure must be defined for each filter. -* Coefficient arrays may be shared among several instances while state variable arrays cannot be shared. -* -* \par Init Functions -* There is also an associated initialization function. -* The initialization function performs following operations: -* - Sets the values of the internal structure fields. -* - Zeros out the values in the state buffer. -* To do this manually without calling the init function, assign the follow subfields of the instance structure: -* numStages, pCoeffs, pState. Also set all of the values in pState to zero. -* -* \par -* Use of the initialization function is optional. -* However, if the initialization function is used, then the instance structure cannot be placed into a const data section. -* To place an instance structure into a const data section, the instance structure must be manually initialized. -* Set the values in the state buffer to zeros before static initialization. -* For example, to statically initialize the instance structure use -*
-*     arm_biquad_cascade_df2T_instance_f32 S1 = {numStages, pState, pCoeffs};
-* 
-* where numStages is the number of Biquad stages in the filter; pState is the address of the state buffer. -* pCoeffs is the address of the coefficient buffer; -* -*/ - -/** -* @addtogroup BiquadCascadeDF2T -* @{ -*/ - -/** -* @brief Processing function for the floating-point transposed direct form II Biquad cascade filter. -* @param[in] *S points to an instance of the filter data structure. -* @param[in] *pSrc points to the block of input data. -* @param[out] *pDst points to the block of output data -* @param[in] blockSize number of samples to process. -* @return none. -*/ - - -LOW_OPTIMIZATION_ENTER -void arm_biquad_cascade_stereo_df2T_f32( -const arm_biquad_cascade_stereo_df2T_instance_f32 * S, -float32_t * pSrc, -float32_t * pDst, -uint32_t blockSize) -{ - - float32_t *pIn = pSrc; /* source pointer */ - float32_t *pOut = pDst; /* destination pointer */ - float32_t *pState = S->pState; /* State pointer */ - float32_t *pCoeffs = S->pCoeffs; /* coefficient pointer */ - float32_t acc1a, acc1b; /* accumulator */ - float32_t b0, b1, b2, a1, a2; /* Filter coefficients */ - float32_t Xn1a, Xn1b; /* temporary input */ - float32_t d1a, d2a, d1b, d2b; /* state variables */ - uint32_t sample, stage = S->numStages; /* loop counters */ - -#if defined(ARM_MATH_CM7) - - float32_t Xn2a, Xn3a, Xn4a, Xn5a, Xn6a, Xn7a, Xn8a; /* Input State variables */ - float32_t Xn2b, Xn3b, Xn4b, Xn5b, Xn6b, Xn7b, Xn8b; /* Input State variables */ - float32_t acc2a, acc3a, acc4a, acc5a, acc6a, acc7a, acc8a; /* Simulates the accumulator */ - float32_t acc2b, acc3b, acc4b, acc5b, acc6b, acc7b, acc8b; /* Simulates the accumulator */ - - do - { - /* Reading the coefficients */ - b0 = pCoeffs[0]; - b1 = pCoeffs[1]; - b2 = pCoeffs[2]; - a1 = pCoeffs[3]; - /* Apply loop unrolling and compute 8 output values simultaneously. */ - sample = blockSize >> 3U; - a2 = pCoeffs[4]; - - /*Reading the state values */ - d1a = pState[0]; - d2a = pState[1]; - d1b = pState[2]; - d2b = pState[3]; - - pCoeffs += 5U; - - /* First part of the processing with loop unrolling. Compute 8 outputs at a time. - ** a second loop below computes the remaining 1 to 7 samples. */ - while (sample > 0U) { - - /* y[n] = b0 * x[n] + d1 */ - /* d1 = b1 * x[n] + a1 * y[n] + d2 */ - /* d2 = b2 * x[n] + a2 * y[n] */ - - /* Read the first 2 inputs. 2 cycles */ - Xn1a = pIn[0 ]; - Xn1b = pIn[1 ]; - - /* Sample 1. 5 cycles */ - Xn2a = pIn[2 ]; - acc1a = b0 * Xn1a + d1a; - - Xn2b = pIn[3 ]; - d1a = b1 * Xn1a + d2a; - - Xn3a = pIn[4 ]; - d2a = b2 * Xn1a; - - Xn3b = pIn[5 ]; - d1a += a1 * acc1a; - - Xn4a = pIn[6 ]; - d2a += a2 * acc1a; - - /* Sample 2. 5 cycles */ - Xn4b = pIn[7 ]; - acc1b = b0 * Xn1b + d1b; - - Xn5a = pIn[8 ]; - d1b = b1 * Xn1b + d2b; - - Xn5b = pIn[9 ]; - d2b = b2 * Xn1b; - - Xn6a = pIn[10]; - d1b += a1 * acc1b; - - Xn6b = pIn[11]; - d2b += a2 * acc1b; - - /* Sample 3. 5 cycles */ - Xn7a = pIn[12]; - acc2a = b0 * Xn2a + d1a; - - Xn7b = pIn[13]; - d1a = b1 * Xn2a + d2a; - - Xn8a = pIn[14]; - d2a = b2 * Xn2a; - - Xn8b = pIn[15]; - d1a += a1 * acc2a; - - pIn += 16; - d2a += a2 * acc2a; - - /* Sample 4. 5 cycles */ - acc2b = b0 * Xn2b + d1b; - d1b = b1 * Xn2b + d2b; - d2b = b2 * Xn2b; - d1b += a1 * acc2b; - d2b += a2 * acc2b; - - /* Sample 5. 5 cycles */ - acc3a = b0 * Xn3a + d1a; - d1a = b1 * Xn3a + d2a; - d2a = b2 * Xn3a; - d1a += a1 * acc3a; - d2a += a2 * acc3a; - - /* Sample 6. 5 cycles */ - acc3b = b0 * Xn3b + d1b; - d1b = b1 * Xn3b + d2b; - d2b = b2 * Xn3b; - d1b += a1 * acc3b; - d2b += a2 * acc3b; - - /* Sample 7. 5 cycles */ - acc4a = b0 * Xn4a + d1a; - d1a = b1 * Xn4a + d2a; - d2a = b2 * Xn4a; - d1a += a1 * acc4a; - d2a += a2 * acc4a; - - /* Sample 8. 5 cycles */ - acc4b = b0 * Xn4b + d1b; - d1b = b1 * Xn4b + d2b; - d2b = b2 * Xn4b; - d1b += a1 * acc4b; - d2b += a2 * acc4b; - - /* Sample 9. 5 cycles */ - acc5a = b0 * Xn5a + d1a; - d1a = b1 * Xn5a + d2a; - d2a = b2 * Xn5a; - d1a += a1 * acc5a; - d2a += a2 * acc5a; - - /* Sample 10. 5 cycles */ - acc5b = b0 * Xn5b + d1b; - d1b = b1 * Xn5b + d2b; - d2b = b2 * Xn5b; - d1b += a1 * acc5b; - d2b += a2 * acc5b; - - /* Sample 11. 5 cycles */ - acc6a = b0 * Xn6a + d1a; - d1a = b1 * Xn6a + d2a; - d2a = b2 * Xn6a; - d1a += a1 * acc6a; - d2a += a2 * acc6a; - - /* Sample 12. 5 cycles */ - acc6b = b0 * Xn6b + d1b; - d1b = b1 * Xn6b + d2b; - d2b = b2 * Xn6b; - d1b += a1 * acc6b; - d2b += a2 * acc6b; - - /* Sample 13. 5 cycles */ - acc7a = b0 * Xn7a + d1a; - d1a = b1 * Xn7a + d2a; - - pOut[0 ] = acc1a ; - d2a = b2 * Xn7a; - - pOut[1 ] = acc1b ; - d1a += a1 * acc7a; - - pOut[2 ] = acc2a ; - d2a += a2 * acc7a; - - /* Sample 14. 5 cycles */ - pOut[3 ] = acc2b ; - acc7b = b0 * Xn7b + d1b; - - pOut[4 ] = acc3a ; - d1b = b1 * Xn7b + d2b; - - pOut[5 ] = acc3b ; - d2b = b2 * Xn7b; - - pOut[6 ] = acc4a ; - d1b += a1 * acc7b; - - pOut[7 ] = acc4b ; - d2b += a2 * acc7b; - - /* Sample 15. 5 cycles */ - pOut[8 ] = acc5a ; - acc8a = b0 * Xn8a + d1a; - - pOut[9 ] = acc5b; - d1a = b1 * Xn8a + d2a; - - pOut[10] = acc6a; - d2a = b2 * Xn8a; - - pOut[11] = acc6b; - d1a += a1 * acc8a; - - pOut[12] = acc7a; - d2a += a2 * acc8a; - - /* Sample 16. 5 cycles */ - pOut[13] = acc7b; - acc8b = b0 * Xn8b + d1b; - - pOut[14] = acc8a; - d1b = b1 * Xn8b + d2b; - - pOut[15] = acc8b; - d2b = b2 * Xn8b; - - sample--; - d1b += a1 * acc8b; - - pOut += 16; - d2b += a2 * acc8b; - } - - sample = blockSize & 0x7U; - while (sample > 0U) { - /* Read the input */ - Xn1a = *pIn++; //Channel a - Xn1b = *pIn++; //Channel b - - /* y[n] = b0 * x[n] + d1 */ - acc1a = (b0 * Xn1a) + d1a; - acc1b = (b0 * Xn1b) + d1b; - - /* Store the result in the accumulator in the destination buffer. */ - *pOut++ = acc1a; - *pOut++ = acc1b; - - /* Every time after the output is computed state should be updated. */ - /* d1 = b1 * x[n] + a1 * y[n] + d2 */ - d1a = ((b1 * Xn1a) + (a1 * acc1a)) + d2a; - d1b = ((b1 * Xn1b) + (a1 * acc1b)) + d2b; - - /* d2 = b2 * x[n] + a2 * y[n] */ - d2a = (b2 * Xn1a) + (a2 * acc1a); - d2b = (b2 * Xn1b) + (a2 * acc1b); - - sample--; - } - - /* Store the updated state variables back into the state array */ - pState[0] = d1a; - pState[1] = d2a; - - pState[2] = d1b; - pState[3] = d2b; - - /* The current stage input is given as the output to the next stage */ - pIn = pDst; - /* decrement the loop counter */ - stage--; - - pState += 4U; - /*Reset the output working pointer */ - pOut = pDst; - - } while (stage > 0U); - -#elif defined(ARM_MATH_CM0_FAMILY) - - /* Run the below code for Cortex-M0 */ - - do - { - /* Reading the coefficients */ - b0 = *pCoeffs++; - b1 = *pCoeffs++; - b2 = *pCoeffs++; - a1 = *pCoeffs++; - a2 = *pCoeffs++; - - /*Reading the state values */ - d1a = pState[0]; - d2a = pState[1]; - d1b = pState[2]; - d2b = pState[3]; - - - sample = blockSize; - - while (sample > 0U) - { - /* Read the input */ - Xn1a = *pIn++; //Channel a - Xn1b = *pIn++; //Channel b - - /* y[n] = b0 * x[n] + d1 */ - acc1a = (b0 * Xn1a) + d1a; - acc1b = (b0 * Xn1b) + d1b; - - /* Store the result in the accumulator in the destination buffer. */ - *pOut++ = acc1a; - *pOut++ = acc1b; - - /* Every time after the output is computed state should be updated. */ - /* d1 = b1 * x[n] + a1 * y[n] + d2 */ - d1a = ((b1 * Xn1a) + (a1 * acc1a)) + d2a; - d1b = ((b1 * Xn1b) + (a1 * acc1b)) + d2b; - - /* d2 = b2 * x[n] + a2 * y[n] */ - d2a = (b2 * Xn1a) + (a2 * acc1a); - d2b = (b2 * Xn1b) + (a2 * acc1b); - - /* decrement the loop counter */ - sample--; - } - - /* Store the updated state variables back into the state array */ - *pState++ = d1a; - *pState++ = d2a; - *pState++ = d1b; - *pState++ = d2b; - - /* The current stage input is given as the output to the next stage */ - pIn = pDst; - - /*Reset the output working pointer */ - pOut = pDst; - - /* decrement the loop counter */ - stage--; - - } while (stage > 0U); - -#else - - float32_t Xn2a, Xn3a, Xn4a; /* Input State variables */ - float32_t Xn2b, Xn3b, Xn4b; /* Input State variables */ - float32_t acc2a, acc3a, acc4a; /* accumulator */ - float32_t acc2b, acc3b, acc4b; /* accumulator */ - float32_t p0a, p1a, p2a, p3a, p4a, A1a; - float32_t p0b, p1b, p2b, p3b, p4b, A1b; - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - do - { - /* Reading the coefficients */ - b0 = *pCoeffs++; - b1 = *pCoeffs++; - b2 = *pCoeffs++; - a1 = *pCoeffs++; - a2 = *pCoeffs++; - - /*Reading the state values */ - d1a = pState[0]; - d2a = pState[1]; - d1b = pState[2]; - d2b = pState[3]; - - /* Apply loop unrolling and compute 4 output values simultaneously. */ - sample = blockSize >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (sample > 0U) { - - /* y[n] = b0 * x[n] + d1 */ - /* d1 = b1 * x[n] + a1 * y[n] + d2 */ - /* d2 = b2 * x[n] + a2 * y[n] */ - - /* Read the four inputs */ - Xn1a = pIn[0]; - Xn1b = pIn[1]; - Xn2a = pIn[2]; - Xn2b = pIn[3]; - Xn3a = pIn[4]; - Xn3b = pIn[5]; - Xn4a = pIn[6]; - Xn4b = pIn[7]; - pIn += 8; - - p0a = b0 * Xn1a; - p0b = b0 * Xn1b; - p1a = b1 * Xn1a; - p1b = b1 * Xn1b; - acc1a = p0a + d1a; - acc1b = p0b + d1b; - p0a = b0 * Xn2a; - p0b = b0 * Xn2b; - p3a = a1 * acc1a; - p3b = a1 * acc1b; - p2a = b2 * Xn1a; - p2b = b2 * Xn1b; - A1a = p1a + p3a; - A1b = p1b + p3b; - p4a = a2 * acc1a; - p4b = a2 * acc1b; - d1a = A1a + d2a; - d1b = A1b + d2b; - d2a = p2a + p4a; - d2b = p2b + p4b; - - p1a = b1 * Xn2a; - p1b = b1 * Xn2b; - acc2a = p0a + d1a; - acc2b = p0b + d1b; - p0a = b0 * Xn3a; - p0b = b0 * Xn3b; - p3a = a1 * acc2a; - p3b = a1 * acc2b; - p2a = b2 * Xn2a; - p2b = b2 * Xn2b; - A1a = p1a + p3a; - A1b = p1b + p3b; - p4a = a2 * acc2a; - p4b = a2 * acc2b; - d1a = A1a + d2a; - d1b = A1b + d2b; - d2a = p2a + p4a; - d2b = p2b + p4b; - - p1a = b1 * Xn3a; - p1b = b1 * Xn3b; - acc3a = p0a + d1a; - acc3b = p0b + d1b; - p0a = b0 * Xn4a; - p0b = b0 * Xn4b; - p3a = a1 * acc3a; - p3b = a1 * acc3b; - p2a = b2 * Xn3a; - p2b = b2 * Xn3b; - A1a = p1a + p3a; - A1b = p1b + p3b; - p4a = a2 * acc3a; - p4b = a2 * acc3b; - d1a = A1a + d2a; - d1b = A1b + d2b; - d2a = p2a + p4a; - d2b = p2b + p4b; - - acc4a = p0a + d1a; - acc4b = p0b + d1b; - p1a = b1 * Xn4a; - p1b = b1 * Xn4b; - p3a = a1 * acc4a; - p3b = a1 * acc4b; - p2a = b2 * Xn4a; - p2b = b2 * Xn4b; - A1a = p1a + p3a; - A1b = p1b + p3b; - p4a = a2 * acc4a; - p4b = a2 * acc4b; - d1a = A1a + d2a; - d1b = A1b + d2b; - d2a = p2a + p4a; - d2b = p2b + p4b; - - pOut[0] = acc1a; - pOut[1] = acc1b; - pOut[2] = acc2a; - pOut[3] = acc2b; - pOut[4] = acc3a; - pOut[5] = acc3b; - pOut[6] = acc4a; - pOut[7] = acc4b; - pOut += 8; - - sample--; - } - - sample = blockSize & 0x3U; - while (sample > 0U) { - Xn1a = *pIn++; - Xn1b = *pIn++; - - p0a = b0 * Xn1a; - p0b = b0 * Xn1b; - p1a = b1 * Xn1a; - p1b = b1 * Xn1b; - acc1a = p0a + d1a; - acc1b = p0b + d1b; - p3a = a1 * acc1a; - p3b = a1 * acc1b; - p2a = b2 * Xn1a; - p2b = b2 * Xn1b; - A1a = p1a + p3a; - A1b = p1b + p3b; - p4a = a2 * acc1a; - p4b = a2 * acc1b; - d1a = A1a + d2a; - d1b = A1b + d2b; - d2a = p2a + p4a; - d2b = p2b + p4b; - - *pOut++ = acc1a; - *pOut++ = acc1b; - - sample--; - } - - /* Store the updated state variables back into the state array */ - *pState++ = d1a; - *pState++ = d2a; - *pState++ = d1b; - *pState++ = d2b; - - /* The current stage input is given as the output to the next stage */ - pIn = pDst; - - /*Reset the output working pointer */ - pOut = pDst; - - /* decrement the loop counter */ - stage--; - - } while (stage > 0U); - -#endif - -} -LOW_OPTIMIZATION_EXIT - -/** - * @} end of BiquadCascadeDF2T group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_stereo_df2T_init_f32.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_stereo_df2T_init_f32.c deleted file mode 100644 index 4940ec9..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_stereo_df2T_init_f32.c +++ /dev/null @@ -1,89 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_biquad_cascade_stereo_df2T_init_f32.c - * Description: Initialization function for floating-point transposed direct form II Biquad cascade filter - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupFilters - */ - -/** - * @addtogroup BiquadCascadeDF2T - * @{ - */ - -/** - * @brief Initialization function for the floating-point transposed direct form II Biquad cascade filter. - * @param[in,out] *S points to an instance of the filter data structure. - * @param[in] numStages number of 2nd order stages in the filter. - * @param[in] *pCoeffs points to the filter coefficients. - * @param[in] *pState points to the state buffer. - * @return none - * - * Coefficient and State Ordering: - * \par - * The coefficients are stored in the array pCoeffs in the following order: - *
- *     {b10, b11, b12, a11, a12, b20, b21, b22, a21, a22, ...}
- * 
- * - * \par - * where b1x and a1x are the coefficients for the first stage, - * b2x and a2x are the coefficients for the second stage, - * and so on. The pCoeffs array contains a total of 5*numStages values. - * - * \par - * The pState is a pointer to state array. - * Each Biquad stage has 2 state variables d1, and d2 for each channel. - * The 2 state variables for stage 1 are first, then the 2 state variables for stage 2, and so on. - * The state array has a total length of 2*numStages values. - * The state variables are updated after each block of data is processed; the coefficients are untouched. - */ - -void arm_biquad_cascade_stereo_df2T_init_f32( - arm_biquad_cascade_stereo_df2T_instance_f32 * S, - uint8_t numStages, - float32_t * pCoeffs, - float32_t * pState) -{ - /* Assign filter stages */ - S->numStages = numStages; - - /* Assign coefficient pointer */ - S->pCoeffs = pCoeffs; - - /* Clear state buffer and size is always 4 * numStages */ - memset(pState, 0, (4U * (uint32_t) numStages) * sizeof(float32_t)); - - /* Assign state pointer */ - S->pState = pState; -} - -/** - * @} end of BiquadCascadeDF2T group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_f32.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_f32.c deleted file mode 100644 index 9ce5bf0..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_f32.c +++ /dev/null @@ -1,635 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_conv_f32.c - * Description: Convolution of floating-point sequences - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupFilters - */ - -/** - * @defgroup Conv Convolution - * - * Convolution is a mathematical operation that operates on two finite length vectors to generate a finite length output vector. - * Convolution is similar to correlation and is frequently used in filtering and data analysis. - * The CMSIS DSP library contains functions for convolving Q7, Q15, Q31, and floating-point data types. - * The library also provides fast versions of the Q15 and Q31 functions on Cortex-M4 and Cortex-M3. - * - * \par Algorithm - * Let a[n] and b[n] be sequences of length srcALen and srcBLen samples respectively. - * Then the convolution - * - *
- *                   c[n] = a[n] * b[n]
- * 
- * - * \par - * is defined as - * \image html ConvolutionEquation.gif - * \par - * Note that c[n] is of length srcALen + srcBLen - 1 and is defined over the interval n=0, 1, 2, ..., srcALen + srcBLen - 2. - * pSrcA points to the first input vector of length srcALen and - * pSrcB points to the second input vector of length srcBLen. - * The output result is written to pDst and the calling function must allocate srcALen+srcBLen-1 words for the result. - * - * \par - * Conceptually, when two signals a[n] and b[n] are convolved, - * the signal b[n] slides over a[n]. - * For each offset \c n, the overlapping portions of a[n] and b[n] are multiplied and summed together. - * - * \par - * Note that convolution is a commutative operation: - * - *
- *                   a[n] * b[n] = b[n] * a[n].
- * 
- * - * \par - * This means that switching the A and B arguments to the convolution functions has no effect. - * - * Fixed-Point Behavior - * - * \par - * Convolution requires summing up a large number of intermediate products. - * As such, the Q7, Q15, and Q31 functions run a risk of overflow and saturation. - * Refer to the function specific documentation below for further details of the particular algorithm used. - * - * - * Fast Versions - * - * \par - * Fast versions are supported for Q31 and Q15. Cycles for Fast versions are less compared to Q31 and Q15 of conv and the design requires - * the input signals should be scaled down to avoid intermediate overflows. - * - * - * Opt Versions - * - * \par - * Opt versions are supported for Q15 and Q7. Design uses internal scratch buffer for getting good optimisation. - * These versions are optimised in cycles and consumes more memory(Scratch memory) compared to Q15 and Q7 versions - */ - -/** - * @addtogroup Conv - * @{ - */ - -/** - * @brief Convolution of floating-point sequences. - * @param[in] *pSrcA points to the first input sequence. - * @param[in] srcALen length of the first input sequence. - * @param[in] *pSrcB points to the second input sequence. - * @param[in] srcBLen length of the second input sequence. - * @param[out] *pDst points to the location where the output result is written. Length srcALen+srcBLen-1. - * @return none. - */ - -void arm_conv_f32( - float32_t * pSrcA, - uint32_t srcALen, - float32_t * pSrcB, - uint32_t srcBLen, - float32_t * pDst) -{ - - -#if defined (ARM_MATH_DSP) - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - float32_t *pIn1; /* inputA pointer */ - float32_t *pIn2; /* inputB pointer */ - float32_t *pOut = pDst; /* output pointer */ - float32_t *px; /* Intermediate inputA pointer */ - float32_t *py; /* Intermediate inputB pointer */ - float32_t *pSrc1, *pSrc2; /* Intermediate pointers */ - float32_t sum, acc0, acc1, acc2, acc3; /* Accumulator */ - float32_t x0, x1, x2, x3, c0; /* Temporary variables to hold state and coefficient values */ - uint32_t j, k, count, blkCnt, blockSize1, blockSize2, blockSize3; /* loop counters */ - - /* The algorithm implementation is based on the lengths of the inputs. */ - /* srcB is always made to slide across srcA. */ - /* So srcBLen is always considered as shorter or equal to srcALen */ - if (srcALen >= srcBLen) - { - /* Initialization of inputA pointer */ - pIn1 = pSrcA; - - /* Initialization of inputB pointer */ - pIn2 = pSrcB; - } - else - { - /* Initialization of inputA pointer */ - pIn1 = pSrcB; - - /* Initialization of inputB pointer */ - pIn2 = pSrcA; - - /* srcBLen is always considered as shorter or equal to srcALen */ - j = srcBLen; - srcBLen = srcALen; - srcALen = j; - } - - /* conv(x,y) at n = x[n] * y[0] + x[n-1] * y[1] + x[n-2] * y[2] + ...+ x[n-N+1] * y[N -1] */ - /* The function is internally - * divided into three stages according to the number of multiplications that has to be - * taken place between inputA samples and inputB samples. In the first stage of the - * algorithm, the multiplications increase by one for every iteration. - * In the second stage of the algorithm, srcBLen number of multiplications are done. - * In the third stage of the algorithm, the multiplications decrease by one - * for every iteration. */ - - /* The algorithm is implemented in three stages. - The loop counters of each stage is initiated here. */ - blockSize1 = srcBLen - 1U; - blockSize2 = srcALen - (srcBLen - 1U); - blockSize3 = blockSize1; - - /* -------------------------- - * initializations of stage1 - * -------------------------*/ - - /* sum = x[0] * y[0] - * sum = x[0] * y[1] + x[1] * y[0] - * .... - * sum = x[0] * y[srcBlen - 1] + x[1] * y[srcBlen - 2] +...+ x[srcBLen - 1] * y[0] - */ - - /* In this stage the MAC operations are increased by 1 for every iteration. - The count variable holds the number of MAC operations performed */ - count = 1U; - - /* Working pointer of inputA */ - px = pIn1; - - /* Working pointer of inputB */ - py = pIn2; - - - /* ------------------------ - * Stage1 process - * ----------------------*/ - - /* The first stage starts here */ - while (blockSize1 > 0U) - { - /* Accumulator is made zero for every iteration */ - sum = 0.0f; - - /* Apply loop unrolling and compute 4 MACs simultaneously. */ - k = count >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 MACs at a time. - ** a second loop below computes MACs for the remaining 1 to 3 samples. */ - while (k > 0U) - { - /* x[0] * y[srcBLen - 1] */ - sum += *px++ * *py--; - - /* x[1] * y[srcBLen - 2] */ - sum += *px++ * *py--; - - /* x[2] * y[srcBLen - 3] */ - sum += *px++ * *py--; - - /* x[3] * y[srcBLen - 4] */ - sum += *px++ * *py--; - - /* Decrement the loop counter */ - k--; - } - - /* If the count is not a multiple of 4, compute any remaining MACs here. - ** No loop unrolling is used. */ - k = count % 0x4U; - - while (k > 0U) - { - /* Perform the multiply-accumulate */ - sum += *px++ * *py--; - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut++ = sum; - - /* Update the inputA and inputB pointers for next MAC calculation */ - py = pIn2 + count; - px = pIn1; - - /* Increment the MAC count */ - count++; - - /* Decrement the loop counter */ - blockSize1--; - } - - /* -------------------------- - * Initializations of stage2 - * ------------------------*/ - - /* sum = x[0] * y[srcBLen-1] + x[1] * y[srcBLen-2] +...+ x[srcBLen-1] * y[0] - * sum = x[1] * y[srcBLen-1] + x[2] * y[srcBLen-2] +...+ x[srcBLen] * y[0] - * .... - * sum = x[srcALen-srcBLen-2] * y[srcBLen-1] + x[srcALen] * y[srcBLen-2] +...+ x[srcALen-1] * y[0] - */ - - /* Working pointer of inputA */ - px = pIn1; - - /* Working pointer of inputB */ - pSrc2 = pIn2 + (srcBLen - 1U); - py = pSrc2; - - /* count is index by which the pointer pIn1 to be incremented */ - count = 0U; - - /* ------------------- - * Stage2 process - * ------------------*/ - - /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed. - * So, to loop unroll over blockSize2, - * srcBLen should be greater than or equal to 4 */ - if (srcBLen >= 4U) - { - /* Loop unroll over blockSize2, by 4 */ - blkCnt = blockSize2 >> 2U; - - while (blkCnt > 0U) - { - /* Set all accumulators to zero */ - acc0 = 0.0f; - acc1 = 0.0f; - acc2 = 0.0f; - acc3 = 0.0f; - - /* read x[0], x[1], x[2] samples */ - x0 = *(px++); - x1 = *(px++); - x2 = *(px++); - - /* Apply loop unrolling and compute 4 MACs simultaneously. */ - k = srcBLen >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 MACs at a time. - ** a second loop below computes MACs for the remaining 1 to 3 samples. */ - do - { - /* Read y[srcBLen - 1] sample */ - c0 = *(py--); - - /* Read x[3] sample */ - x3 = *(px); - - /* Perform the multiply-accumulate */ - /* acc0 += x[0] * y[srcBLen - 1] */ - acc0 += x0 * c0; - - /* acc1 += x[1] * y[srcBLen - 1] */ - acc1 += x1 * c0; - - /* acc2 += x[2] * y[srcBLen - 1] */ - acc2 += x2 * c0; - - /* acc3 += x[3] * y[srcBLen - 1] */ - acc3 += x3 * c0; - - /* Read y[srcBLen - 2] sample */ - c0 = *(py--); - - /* Read x[4] sample */ - x0 = *(px + 1U); - - /* Perform the multiply-accumulate */ - /* acc0 += x[1] * y[srcBLen - 2] */ - acc0 += x1 * c0; - /* acc1 += x[2] * y[srcBLen - 2] */ - acc1 += x2 * c0; - /* acc2 += x[3] * y[srcBLen - 2] */ - acc2 += x3 * c0; - /* acc3 += x[4] * y[srcBLen - 2] */ - acc3 += x0 * c0; - - /* Read y[srcBLen - 3] sample */ - c0 = *(py--); - - /* Read x[5] sample */ - x1 = *(px + 2U); - - /* Perform the multiply-accumulates */ - /* acc0 += x[2] * y[srcBLen - 3] */ - acc0 += x2 * c0; - /* acc1 += x[3] * y[srcBLen - 2] */ - acc1 += x3 * c0; - /* acc2 += x[4] * y[srcBLen - 2] */ - acc2 += x0 * c0; - /* acc3 += x[5] * y[srcBLen - 2] */ - acc3 += x1 * c0; - - /* Read y[srcBLen - 4] sample */ - c0 = *(py--); - - /* Read x[6] sample */ - x2 = *(px + 3U); - px += 4U; - - /* Perform the multiply-accumulates */ - /* acc0 += x[3] * y[srcBLen - 4] */ - acc0 += x3 * c0; - /* acc1 += x[4] * y[srcBLen - 4] */ - acc1 += x0 * c0; - /* acc2 += x[5] * y[srcBLen - 4] */ - acc2 += x1 * c0; - /* acc3 += x[6] * y[srcBLen - 4] */ - acc3 += x2 * c0; - - - } while (--k); - - /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. - ** No loop unrolling is used. */ - k = srcBLen % 0x4U; - - while (k > 0U) - { - /* Read y[srcBLen - 5] sample */ - c0 = *(py--); - - /* Read x[7] sample */ - x3 = *(px++); - - /* Perform the multiply-accumulates */ - /* acc0 += x[4] * y[srcBLen - 5] */ - acc0 += x0 * c0; - /* acc1 += x[5] * y[srcBLen - 5] */ - acc1 += x1 * c0; - /* acc2 += x[6] * y[srcBLen - 5] */ - acc2 += x2 * c0; - /* acc3 += x[7] * y[srcBLen - 5] */ - acc3 += x3 * c0; - - /* Reuse the present samples for the next MAC */ - x0 = x1; - x1 = x2; - x2 = x3; - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut++ = acc0; - *pOut++ = acc1; - *pOut++ = acc2; - *pOut++ = acc3; - - /* Increment the pointer pIn1 index, count by 4 */ - count += 4U; - - /* Update the inputA and inputB pointers for next MAC calculation */ - px = pIn1 + count; - py = pSrc2; - - - /* Decrement the loop counter */ - blkCnt--; - } - - - /* If the blockSize2 is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize2 % 0x4U; - - while (blkCnt > 0U) - { - /* Accumulator is made zero for every iteration */ - sum = 0.0f; - - /* Apply loop unrolling and compute 4 MACs simultaneously. */ - k = srcBLen >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 MACs at a time. - ** a second loop below computes MACs for the remaining 1 to 3 samples. */ - while (k > 0U) - { - /* Perform the multiply-accumulates */ - sum += *px++ * *py--; - sum += *px++ * *py--; - sum += *px++ * *py--; - sum += *px++ * *py--; - - /* Decrement the loop counter */ - k--; - } - - /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. - ** No loop unrolling is used. */ - k = srcBLen % 0x4U; - - while (k > 0U) - { - /* Perform the multiply-accumulate */ - sum += *px++ * *py--; - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut++ = sum; - - /* Increment the MAC count */ - count++; - - /* Update the inputA and inputB pointers for next MAC calculation */ - px = pIn1 + count; - py = pSrc2; - - /* Decrement the loop counter */ - blkCnt--; - } - } - else - { - /* If the srcBLen is not a multiple of 4, - * the blockSize2 loop cannot be unrolled by 4 */ - blkCnt = blockSize2; - - while (blkCnt > 0U) - { - /* Accumulator is made zero for every iteration */ - sum = 0.0f; - - /* srcBLen number of MACS should be performed */ - k = srcBLen; - - while (k > 0U) - { - /* Perform the multiply-accumulate */ - sum += *px++ * *py--; - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut++ = sum; - - /* Increment the MAC count */ - count++; - - /* Update the inputA and inputB pointers for next MAC calculation */ - px = pIn1 + count; - py = pSrc2; - - /* Decrement the loop counter */ - blkCnt--; - } - } - - - /* -------------------------- - * Initializations of stage3 - * -------------------------*/ - - /* sum += x[srcALen-srcBLen+1] * y[srcBLen-1] + x[srcALen-srcBLen+2] * y[srcBLen-2] +...+ x[srcALen-1] * y[1] - * sum += x[srcALen-srcBLen+2] * y[srcBLen-1] + x[srcALen-srcBLen+3] * y[srcBLen-2] +...+ x[srcALen-1] * y[2] - * .... - * sum += x[srcALen-2] * y[srcBLen-1] + x[srcALen-1] * y[srcBLen-2] - * sum += x[srcALen-1] * y[srcBLen-1] - */ - - /* In this stage the MAC operations are decreased by 1 for every iteration. - The blockSize3 variable holds the number of MAC operations performed */ - - /* Working pointer of inputA */ - pSrc1 = (pIn1 + srcALen) - (srcBLen - 1U); - px = pSrc1; - - /* Working pointer of inputB */ - pSrc2 = pIn2 + (srcBLen - 1U); - py = pSrc2; - - /* ------------------- - * Stage3 process - * ------------------*/ - - while (blockSize3 > 0U) - { - /* Accumulator is made zero for every iteration */ - sum = 0.0f; - - /* Apply loop unrolling and compute 4 MACs simultaneously. */ - k = blockSize3 >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 MACs at a time. - ** a second loop below computes MACs for the remaining 1 to 3 samples. */ - while (k > 0U) - { - /* sum += x[srcALen - srcBLen + 1] * y[srcBLen - 1] */ - sum += *px++ * *py--; - - /* sum += x[srcALen - srcBLen + 2] * y[srcBLen - 2] */ - sum += *px++ * *py--; - - /* sum += x[srcALen - srcBLen + 3] * y[srcBLen - 3] */ - sum += *px++ * *py--; - - /* sum += x[srcALen - srcBLen + 4] * y[srcBLen - 4] */ - sum += *px++ * *py--; - - /* Decrement the loop counter */ - k--; - } - - /* If the blockSize3 is not a multiple of 4, compute any remaining MACs here. - ** No loop unrolling is used. */ - k = blockSize3 % 0x4U; - - while (k > 0U) - { - /* Perform the multiply-accumulates */ - /* sum += x[srcALen-1] * y[srcBLen-1] */ - sum += *px++ * *py--; - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut++ = sum; - - /* Update the inputA and inputB pointers for next MAC calculation */ - px = ++pSrc1; - py = pSrc2; - - /* Decrement the loop counter */ - blockSize3--; - } - -#else - - /* Run the below code for Cortex-M0 */ - - float32_t *pIn1 = pSrcA; /* inputA pointer */ - float32_t *pIn2 = pSrcB; /* inputB pointer */ - float32_t sum; /* Accumulator */ - uint32_t i, j; /* loop counters */ - - /* Loop to calculate convolution for output length number of times */ - for (i = 0U; i < ((srcALen + srcBLen) - 1U); i++) - { - /* Initialize sum with zero to carry out MAC operations */ - sum = 0.0f; - - /* Loop to perform MAC operations according to convolution equation */ - for (j = 0U; j <= i; j++) - { - /* Check the array limitations */ - if ((((i - j) < srcBLen) && (j < srcALen))) - { - /* z[i] += x[i-j] * y[j] */ - sum += pIn1[j] * pIn2[i - j]; - } - } - /* Store the output in the destination buffer */ - pDst[i] = sum; - } - -#endif /* #if defined (ARM_MATH_DSP) */ - -} - -/** - * @} end of Conv group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_fast_opt_q15.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_fast_opt_q15.c deleted file mode 100644 index c6e05b8..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_fast_opt_q15.c +++ /dev/null @@ -1,531 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_conv_fast_opt_q15.c - * Description: Fast Q15 Convolution - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupFilters - */ - -/** - * @addtogroup Conv - * @{ - */ - -/** - * @brief Convolution of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4. - * @param[in] *pSrcA points to the first input sequence. - * @param[in] srcALen length of the first input sequence. - * @param[in] *pSrcB points to the second input sequence. - * @param[in] srcBLen length of the second input sequence. - * @param[out] *pDst points to the location where the output result is written. Length srcALen+srcBLen-1. - * @param[in] *pScratch1 points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2. - * @param[in] *pScratch2 points to scratch buffer of size min(srcALen, srcBLen). - * @return none. - * - * \par Restrictions - * If the silicon does not support unaligned memory access enable the macro UNALIGNED_SUPPORT_DISABLE - * In this case input, output, scratch1 and scratch2 buffers should be aligned by 32-bit - * - * Scaling and Overflow Behavior: - * - * \par - * This fast version uses a 32-bit accumulator with 2.30 format. - * The accumulator maintains full precision of the intermediate multiplication results - * but provides only a single guard bit. There is no saturation on intermediate additions. - * Thus, if the accumulator overflows it wraps around and distorts the result. - * The input signals should be scaled down to avoid intermediate overflows. - * Scale down the inputs by log2(min(srcALen, srcBLen)) (log2 is read as log to the base 2) times to avoid overflows, - * as maximum of min(srcALen, srcBLen) number of additions are carried internally. - * The 2.30 accumulator is right shifted by 15 bits and then saturated to 1.15 format to yield the final result. - * - * \par - * See arm_conv_q15() for a slower implementation of this function which uses 64-bit accumulation to avoid wrap around distortion. - */ - -void arm_conv_fast_opt_q15( - q15_t * pSrcA, - uint32_t srcALen, - q15_t * pSrcB, - uint32_t srcBLen, - q15_t * pDst, - q15_t * pScratch1, - q15_t * pScratch2) -{ - q31_t acc0, acc1, acc2, acc3; /* Accumulators */ - q31_t x1, x2, x3; /* Temporary variables to hold state and coefficient values */ - q31_t y1, y2; /* State variables */ - q15_t *pOut = pDst; /* output pointer */ - q15_t *pScr1 = pScratch1; /* Temporary pointer for scratch1 */ - q15_t *pScr2 = pScratch2; /* Temporary pointer for scratch1 */ - q15_t *pIn1; /* inputA pointer */ - q15_t *pIn2; /* inputB pointer */ - q15_t *px; /* Intermediate inputA pointer */ - q15_t *py; /* Intermediate inputB pointer */ - uint32_t j, k, blkCnt; /* loop counter */ - uint32_t tapCnt; /* loop count */ -#ifdef UNALIGNED_SUPPORT_DISABLE - - q15_t a, b; - -#endif /* #ifdef UNALIGNED_SUPPORT_DISABLE */ - - /* The algorithm implementation is based on the lengths of the inputs. */ - /* srcB is always made to slide across srcA. */ - /* So srcBLen is always considered as shorter or equal to srcALen */ - if (srcALen >= srcBLen) - { - /* Initialization of inputA pointer */ - pIn1 = pSrcA; - - /* Initialization of inputB pointer */ - pIn2 = pSrcB; - } - else - { - /* Initialization of inputA pointer */ - pIn1 = pSrcB; - - /* Initialization of inputB pointer */ - pIn2 = pSrcA; - - /* srcBLen is always considered as shorter or equal to srcALen */ - j = srcBLen; - srcBLen = srcALen; - srcALen = j; - } - - /* Pointer to take end of scratch2 buffer */ - pScr2 = pScratch2 + srcBLen - 1; - - /* points to smaller length sequence */ - px = pIn2; - - /* Apply loop unrolling and do 4 Copies simultaneously. */ - k = srcBLen >> 2U; - - /* First part of the processing with loop unrolling copies 4 data points at a time. - ** a second loop below copies for the remaining 1 to 3 samples. */ - - /* Copy smaller length input sequence in reverse order into second scratch buffer */ - while (k > 0U) - { - /* copy second buffer in reversal manner */ - *pScr2-- = *px++; - *pScr2-- = *px++; - *pScr2-- = *px++; - *pScr2-- = *px++; - - /* Decrement the loop counter */ - k--; - } - - /* If the count is not a multiple of 4, copy remaining samples here. - ** No loop unrolling is used. */ - k = srcBLen % 0x4U; - - while (k > 0U) - { - /* copy second buffer in reversal manner for remaining samples */ - *pScr2-- = *px++; - - /* Decrement the loop counter */ - k--; - } - - /* Initialze temporary scratch pointer */ - pScr1 = pScratch1; - - /* Assuming scratch1 buffer is aligned by 32-bit */ - /* Fill (srcBLen - 1U) zeros in scratch1 buffer */ - arm_fill_q15(0, pScr1, (srcBLen - 1U)); - - /* Update temporary scratch pointer */ - pScr1 += (srcBLen - 1U); - - /* Copy bigger length sequence(srcALen) samples in scratch1 buffer */ - -#ifndef UNALIGNED_SUPPORT_DISABLE - - /* Copy (srcALen) samples in scratch buffer */ - arm_copy_q15(pIn1, pScr1, srcALen); - - /* Update pointers */ - pScr1 += srcALen; - -#else - - /* Apply loop unrolling and do 4 Copies simultaneously. */ - k = srcALen >> 2U; - - /* First part of the processing with loop unrolling copies 4 data points at a time. - ** a second loop below copies for the remaining 1 to 3 samples. */ - while (k > 0U) - { - /* copy second buffer in reversal manner */ - *pScr1++ = *pIn1++; - *pScr1++ = *pIn1++; - *pScr1++ = *pIn1++; - *pScr1++ = *pIn1++; - - /* Decrement the loop counter */ - k--; - } - - /* If the count is not a multiple of 4, copy remaining samples here. - ** No loop unrolling is used. */ - k = srcALen % 0x4U; - - while (k > 0U) - { - /* copy second buffer in reversal manner for remaining samples */ - *pScr1++ = *pIn1++; - - /* Decrement the loop counter */ - k--; - } - -#endif /* #ifndef UNALIGNED_SUPPORT_DISABLE */ - - -#ifndef UNALIGNED_SUPPORT_DISABLE - - /* Fill (srcBLen - 1U) zeros at end of scratch buffer */ - arm_fill_q15(0, pScr1, (srcBLen - 1U)); - - /* Update pointer */ - pScr1 += (srcBLen - 1U); - -#else - - /* Apply loop unrolling and do 4 Copies simultaneously. */ - k = (srcBLen - 1U) >> 2U; - - /* First part of the processing with loop unrolling copies 4 data points at a time. - ** a second loop below copies for the remaining 1 to 3 samples. */ - while (k > 0U) - { - /* copy second buffer in reversal manner */ - *pScr1++ = 0; - *pScr1++ = 0; - *pScr1++ = 0; - *pScr1++ = 0; - - /* Decrement the loop counter */ - k--; - } - - /* If the count is not a multiple of 4, copy remaining samples here. - ** No loop unrolling is used. */ - k = (srcBLen - 1U) % 0x4U; - - while (k > 0U) - { - /* copy second buffer in reversal manner for remaining samples */ - *pScr1++ = 0; - - /* Decrement the loop counter */ - k--; - } - -#endif /* #ifndef UNALIGNED_SUPPORT_DISABLE */ - - /* Temporary pointer for scratch2 */ - py = pScratch2; - - - /* Initialization of pIn2 pointer */ - pIn2 = py; - - /* First part of the processing with loop unrolling process 4 data points at a time. - ** a second loop below process for the remaining 1 to 3 samples. */ - - /* Actual convolution process starts here */ - blkCnt = (srcALen + srcBLen - 1U) >> 2; - - while (blkCnt > 0) - { - /* Initialze temporary scratch pointer as scratch1 */ - pScr1 = pScratch1; - - /* Clear Accumlators */ - acc0 = 0; - acc1 = 0; - acc2 = 0; - acc3 = 0; - - /* Read two samples from scratch1 buffer */ - x1 = *__SIMD32(pScr1)++; - - /* Read next two samples from scratch1 buffer */ - x2 = *__SIMD32(pScr1)++; - - tapCnt = (srcBLen) >> 2U; - - while (tapCnt > 0U) - { - -#ifndef UNALIGNED_SUPPORT_DISABLE - - /* Read four samples from smaller buffer */ - y1 = _SIMD32_OFFSET(pIn2); - y2 = _SIMD32_OFFSET(pIn2 + 2U); - - /* multiply and accumlate */ - acc0 = __SMLAD(x1, y1, acc0); - acc2 = __SMLAD(x2, y1, acc2); - - /* pack input data */ -#ifndef ARM_MATH_BIG_ENDIAN - x3 = __PKHBT(x2, x1, 0); -#else - x3 = __PKHBT(x1, x2, 0); -#endif - - /* multiply and accumlate */ - acc1 = __SMLADX(x3, y1, acc1); - - /* Read next two samples from scratch1 buffer */ - x1 = _SIMD32_OFFSET(pScr1); - - /* multiply and accumlate */ - acc0 = __SMLAD(x2, y2, acc0); - acc2 = __SMLAD(x1, y2, acc2); - - /* pack input data */ -#ifndef ARM_MATH_BIG_ENDIAN - x3 = __PKHBT(x1, x2, 0); -#else - x3 = __PKHBT(x2, x1, 0); -#endif - - acc3 = __SMLADX(x3, y1, acc3); - acc1 = __SMLADX(x3, y2, acc1); - - x2 = _SIMD32_OFFSET(pScr1 + 2U); - -#ifndef ARM_MATH_BIG_ENDIAN - x3 = __PKHBT(x2, x1, 0); -#else - x3 = __PKHBT(x1, x2, 0); -#endif - - acc3 = __SMLADX(x3, y2, acc3); - -#else - - /* Read four samples from smaller buffer */ - a = *pIn2; - b = *(pIn2 + 1); - -#ifndef ARM_MATH_BIG_ENDIAN - y1 = __PKHBT(a, b, 16); -#else - y1 = __PKHBT(b, a, 16); -#endif - - a = *(pIn2 + 2); - b = *(pIn2 + 3); -#ifndef ARM_MATH_BIG_ENDIAN - y2 = __PKHBT(a, b, 16); -#else - y2 = __PKHBT(b, a, 16); -#endif - - acc0 = __SMLAD(x1, y1, acc0); - - acc2 = __SMLAD(x2, y1, acc2); - -#ifndef ARM_MATH_BIG_ENDIAN - x3 = __PKHBT(x2, x1, 0); -#else - x3 = __PKHBT(x1, x2, 0); -#endif - - acc1 = __SMLADX(x3, y1, acc1); - - a = *pScr1; - b = *(pScr1 + 1); - -#ifndef ARM_MATH_BIG_ENDIAN - x1 = __PKHBT(a, b, 16); -#else - x1 = __PKHBT(b, a, 16); -#endif - - acc0 = __SMLAD(x2, y2, acc0); - - acc2 = __SMLAD(x1, y2, acc2); - -#ifndef ARM_MATH_BIG_ENDIAN - x3 = __PKHBT(x1, x2, 0); -#else - x3 = __PKHBT(x2, x1, 0); -#endif - - acc3 = __SMLADX(x3, y1, acc3); - - acc1 = __SMLADX(x3, y2, acc1); - - a = *(pScr1 + 2); - b = *(pScr1 + 3); - -#ifndef ARM_MATH_BIG_ENDIAN - x2 = __PKHBT(a, b, 16); -#else - x2 = __PKHBT(b, a, 16); -#endif - -#ifndef ARM_MATH_BIG_ENDIAN - x3 = __PKHBT(x2, x1, 0); -#else - x3 = __PKHBT(x1, x2, 0); -#endif - - acc3 = __SMLADX(x3, y2, acc3); - -#endif /* #ifndef UNALIGNED_SUPPORT_DISABLE */ - - /* update scratch pointers */ - pIn2 += 4U; - pScr1 += 4U; - - - /* Decrement the loop counter */ - tapCnt--; - } - - /* Update scratch pointer for remaining samples of smaller length sequence */ - pScr1 -= 4U; - - /* apply same above for remaining samples of smaller length sequence */ - tapCnt = (srcBLen) & 3U; - - while (tapCnt > 0U) - { - - /* accumlate the results */ - acc0 += (*pScr1++ * *pIn2); - acc1 += (*pScr1++ * *pIn2); - acc2 += (*pScr1++ * *pIn2); - acc3 += (*pScr1++ * *pIn2++); - - pScr1 -= 3U; - - /* Decrement the loop counter */ - tapCnt--; - } - - blkCnt--; - - - /* Store the results in the accumulators in the destination buffer. */ - -#ifndef ARM_MATH_BIG_ENDIAN - - *__SIMD32(pOut)++ = - __PKHBT(__SSAT((acc0 >> 15), 16), __SSAT((acc1 >> 15), 16), 16); - - *__SIMD32(pOut)++ = - __PKHBT(__SSAT((acc2 >> 15), 16), __SSAT((acc3 >> 15), 16), 16); - - -#else - - *__SIMD32(pOut)++ = - __PKHBT(__SSAT((acc1 >> 15), 16), __SSAT((acc0 >> 15), 16), 16); - - *__SIMD32(pOut)++ = - __PKHBT(__SSAT((acc3 >> 15), 16), __SSAT((acc2 >> 15), 16), 16); - - - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - /* Initialization of inputB pointer */ - pIn2 = py; - - pScratch1 += 4U; - - } - - - blkCnt = (srcALen + srcBLen - 1U) & 0x3; - - /* Calculate convolution for remaining samples of Bigger length sequence */ - while (blkCnt > 0) - { - /* Initialze temporary scratch pointer as scratch1 */ - pScr1 = pScratch1; - - /* Clear Accumlators */ - acc0 = 0; - - tapCnt = (srcBLen) >> 1U; - - while (tapCnt > 0U) - { - - acc0 += (*pScr1++ * *pIn2++); - acc0 += (*pScr1++ * *pIn2++); - - /* Decrement the loop counter */ - tapCnt--; - } - - tapCnt = (srcBLen) & 1U; - - /* apply same above for remaining samples of smaller length sequence */ - while (tapCnt > 0U) - { - - /* accumlate the results */ - acc0 += (*pScr1++ * *pIn2++); - - /* Decrement the loop counter */ - tapCnt--; - } - - blkCnt--; - - /* The result is in 2.30 format. Convert to 1.15 with saturation. - ** Then store the output in the destination buffer. */ - *pOut++ = (q15_t) (__SSAT((acc0 >> 15), 16)); - - /* Initialization of inputB pointer */ - pIn2 = py; - - pScratch1 += 1U; - - } - -} - -/** - * @} end of Conv group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_fast_q15.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_fast_q15.c deleted file mode 100644 index 9625ae5..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_fast_q15.c +++ /dev/null @@ -1,1398 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_conv_fast_q15.c - * Description: Fast Q15 Convolution - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupFilters - */ - -/** - * @addtogroup Conv - * @{ - */ - -/** - * @brief Convolution of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4. - * @param[in] *pSrcA points to the first input sequence. - * @param[in] srcALen length of the first input sequence. - * @param[in] *pSrcB points to the second input sequence. - * @param[in] srcBLen length of the second input sequence. - * @param[out] *pDst points to the location where the output result is written. Length srcALen+srcBLen-1. - * @return none. - * - * Scaling and Overflow Behavior: - * - * \par - * This fast version uses a 32-bit accumulator with 2.30 format. - * The accumulator maintains full precision of the intermediate multiplication results - * but provides only a single guard bit. There is no saturation on intermediate additions. - * Thus, if the accumulator overflows it wraps around and distorts the result. - * The input signals should be scaled down to avoid intermediate overflows. - * Scale down the inputs by log2(min(srcALen, srcBLen)) (log2 is read as log to the base 2) times to avoid overflows, - * as maximum of min(srcALen, srcBLen) number of additions are carried internally. - * The 2.30 accumulator is right shifted by 15 bits and then saturated to 1.15 format to yield the final result. - * - * \par - * See arm_conv_q15() for a slower implementation of this function which uses 64-bit accumulation to avoid wrap around distortion. - */ - -void arm_conv_fast_q15( - q15_t * pSrcA, - uint32_t srcALen, - q15_t * pSrcB, - uint32_t srcBLen, - q15_t * pDst) -{ -#ifndef UNALIGNED_SUPPORT_DISABLE - q15_t *pIn1; /* inputA pointer */ - q15_t *pIn2; /* inputB pointer */ - q15_t *pOut = pDst; /* output pointer */ - q31_t sum, acc0, acc1, acc2, acc3; /* Accumulator */ - q15_t *px; /* Intermediate inputA pointer */ - q15_t *py; /* Intermediate inputB pointer */ - q15_t *pSrc1, *pSrc2; /* Intermediate pointers */ - q31_t x0, x1, x2, x3, c0; /* Temporary variables to hold state and coefficient values */ - uint32_t blockSize1, blockSize2, blockSize3, j, k, count, blkCnt; /* loop counter */ - - /* The algorithm implementation is based on the lengths of the inputs. */ - /* srcB is always made to slide across srcA. */ - /* So srcBLen is always considered as shorter or equal to srcALen */ - if (srcALen >= srcBLen) - { - /* Initialization of inputA pointer */ - pIn1 = pSrcA; - - /* Initialization of inputB pointer */ - pIn2 = pSrcB; - } - else - { - /* Initialization of inputA pointer */ - pIn1 = pSrcB; - - /* Initialization of inputB pointer */ - pIn2 = pSrcA; - - /* srcBLen is always considered as shorter or equal to srcALen */ - j = srcBLen; - srcBLen = srcALen; - srcALen = j; - } - - /* conv(x,y) at n = x[n] * y[0] + x[n-1] * y[1] + x[n-2] * y[2] + ...+ x[n-N+1] * y[N -1] */ - /* The function is internally - * divided into three stages according to the number of multiplications that has to be - * taken place between inputA samples and inputB samples. In the first stage of the - * algorithm, the multiplications increase by one for every iteration. - * In the second stage of the algorithm, srcBLen number of multiplications are done. - * In the third stage of the algorithm, the multiplications decrease by one - * for every iteration. */ - - /* The algorithm is implemented in three stages. - The loop counters of each stage is initiated here. */ - blockSize1 = srcBLen - 1U; - blockSize2 = srcALen - (srcBLen - 1U); - blockSize3 = blockSize1; - - /* -------------------------- - * Initializations of stage1 - * -------------------------*/ - - /* sum = x[0] * y[0] - * sum = x[0] * y[1] + x[1] * y[0] - * .... - * sum = x[0] * y[srcBlen - 1] + x[1] * y[srcBlen - 2] +...+ x[srcBLen - 1] * y[0] - */ - - /* In this stage the MAC operations are increased by 1 for every iteration. - The count variable holds the number of MAC operations performed */ - count = 1U; - - /* Working pointer of inputA */ - px = pIn1; - - /* Working pointer of inputB */ - py = pIn2; - - - /* ------------------------ - * Stage1 process - * ----------------------*/ - - /* For loop unrolling by 4, this stage is divided into two. */ - /* First part of this stage computes the MAC operations less than 4 */ - /* Second part of this stage computes the MAC operations greater than or equal to 4 */ - - /* The first part of the stage starts here */ - while ((count < 4U) && (blockSize1 > 0U)) - { - /* Accumulator is made zero for every iteration */ - sum = 0; - - /* Loop over number of MAC operations between - * inputA samples and inputB samples */ - k = count; - - while (k > 0U) - { - /* Perform the multiply-accumulates */ - sum = __SMLAD(*px++, *py--, sum); - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut++ = (q15_t) (sum >> 15); - - /* Update the inputA and inputB pointers for next MAC calculation */ - py = pIn2 + count; - px = pIn1; - - /* Increment the MAC count */ - count++; - - /* Decrement the loop counter */ - blockSize1--; - } - - /* The second part of the stage starts here */ - /* The internal loop, over count, is unrolled by 4 */ - /* To, read the last two inputB samples using SIMD: - * y[srcBLen] and y[srcBLen-1] coefficients, py is decremented by 1 */ - py = py - 1; - - while (blockSize1 > 0U) - { - /* Accumulator is made zero for every iteration */ - sum = 0; - - /* Apply loop unrolling and compute 4 MACs simultaneously. */ - k = count >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 MACs at a time. - ** a second loop below computes MACs for the remaining 1 to 3 samples. */ - while (k > 0U) - { - /* Perform the multiply-accumulates */ - /* x[0], x[1] are multiplied with y[srcBLen - 1], y[srcBLen - 2] respectively */ - sum = __SMLADX(*__SIMD32(px)++, *__SIMD32(py)--, sum); - /* x[2], x[3] are multiplied with y[srcBLen - 3], y[srcBLen - 4] respectively */ - sum = __SMLADX(*__SIMD32(px)++, *__SIMD32(py)--, sum); - - /* Decrement the loop counter */ - k--; - } - - /* For the next MAC operations, the pointer py is used without SIMD - * So, py is incremented by 1 */ - py = py + 1U; - - /* If the count is not a multiple of 4, compute any remaining MACs here. - ** No loop unrolling is used. */ - k = count % 0x4U; - - while (k > 0U) - { - /* Perform the multiply-accumulates */ - sum = __SMLAD(*px++, *py--, sum); - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut++ = (q15_t) (sum >> 15); - - /* Update the inputA and inputB pointers for next MAC calculation */ - py = pIn2 + (count - 1U); - px = pIn1; - - /* Increment the MAC count */ - count++; - - /* Decrement the loop counter */ - blockSize1--; - } - - /* -------------------------- - * Initializations of stage2 - * ------------------------*/ - - /* sum = x[0] * y[srcBLen-1] + x[1] * y[srcBLen-2] +...+ x[srcBLen-1] * y[0] - * sum = x[1] * y[srcBLen-1] + x[2] * y[srcBLen-2] +...+ x[srcBLen] * y[0] - * .... - * sum = x[srcALen-srcBLen-2] * y[srcBLen-1] + x[srcALen] * y[srcBLen-2] +...+ x[srcALen-1] * y[0] - */ - - /* Working pointer of inputA */ - px = pIn1; - - /* Working pointer of inputB */ - pSrc2 = pIn2 + (srcBLen - 1U); - py = pSrc2; - - /* count is the index by which the pointer pIn1 to be incremented */ - count = 0U; - - - /* -------------------- - * Stage2 process - * -------------------*/ - - /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed. - * So, to loop unroll over blockSize2, - * srcBLen should be greater than or equal to 4 */ - if (srcBLen >= 4U) - { - /* Loop unroll over blockSize2, by 4 */ - blkCnt = blockSize2 >> 2U; - - while (blkCnt > 0U) - { - py = py - 1U; - - /* Set all accumulators to zero */ - acc0 = 0; - acc1 = 0; - acc2 = 0; - acc3 = 0; - - - /* read x[0], x[1] samples */ - x0 = *__SIMD32(px); - /* read x[1], x[2] samples */ - x1 = _SIMD32_OFFSET(px+1); - px+= 2U; - - - /* Apply loop unrolling and compute 4 MACs simultaneously. */ - k = srcBLen >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 MACs at a time. - ** a second loop below computes MACs for the remaining 1 to 3 samples. */ - do - { - /* Read the last two inputB samples using SIMD: - * y[srcBLen - 1] and y[srcBLen - 2] */ - c0 = *__SIMD32(py)--; - - /* acc0 += x[0] * y[srcBLen - 1] + x[1] * y[srcBLen - 2] */ - acc0 = __SMLADX(x0, c0, acc0); - - /* acc1 += x[1] * y[srcBLen - 1] + x[2] * y[srcBLen - 2] */ - acc1 = __SMLADX(x1, c0, acc1); - - /* Read x[2], x[3] */ - x2 = *__SIMD32(px); - - /* Read x[3], x[4] */ - x3 = _SIMD32_OFFSET(px+1); - - /* acc2 += x[2] * y[srcBLen - 1] + x[3] * y[srcBLen - 2] */ - acc2 = __SMLADX(x2, c0, acc2); - - /* acc3 += x[3] * y[srcBLen - 1] + x[4] * y[srcBLen - 2] */ - acc3 = __SMLADX(x3, c0, acc3); - - /* Read y[srcBLen - 3] and y[srcBLen - 4] */ - c0 = *__SIMD32(py)--; - - /* acc0 += x[2] * y[srcBLen - 3] + x[3] * y[srcBLen - 4] */ - acc0 = __SMLADX(x2, c0, acc0); - - /* acc1 += x[3] * y[srcBLen - 3] + x[4] * y[srcBLen - 4] */ - acc1 = __SMLADX(x3, c0, acc1); - - /* Read x[4], x[5] */ - x0 = _SIMD32_OFFSET(px+2); - - /* Read x[5], x[6] */ - x1 = _SIMD32_OFFSET(px+3); - px += 4U; - - /* acc2 += x[4] * y[srcBLen - 3] + x[5] * y[srcBLen - 4] */ - acc2 = __SMLADX(x0, c0, acc2); - - /* acc3 += x[5] * y[srcBLen - 3] + x[6] * y[srcBLen - 4] */ - acc3 = __SMLADX(x1, c0, acc3); - - } while (--k); - - /* For the next MAC operations, SIMD is not used - * So, the 16 bit pointer if inputB, py is updated */ - - /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. - ** No loop unrolling is used. */ - k = srcBLen % 0x4U; - - if (k == 1U) - { - /* Read y[srcBLen - 5] */ - c0 = *(py+1); - -#ifdef ARM_MATH_BIG_ENDIAN - - c0 = c0 << 16U; - -#else - - c0 = c0 & 0x0000FFFF; - -#endif /* #ifdef ARM_MATH_BIG_ENDIAN */ - - /* Read x[7] */ - x3 = *__SIMD32(px); - px++; - - /* Perform the multiply-accumulates */ - acc0 = __SMLAD(x0, c0, acc0); - acc1 = __SMLAD(x1, c0, acc1); - acc2 = __SMLADX(x1, c0, acc2); - acc3 = __SMLADX(x3, c0, acc3); - } - - if (k == 2U) - { - /* Read y[srcBLen - 5], y[srcBLen - 6] */ - c0 = _SIMD32_OFFSET(py); - - /* Read x[7], x[8] */ - x3 = *__SIMD32(px); - - /* Read x[9] */ - x2 = _SIMD32_OFFSET(px+1); - px += 2U; - - /* Perform the multiply-accumulates */ - acc0 = __SMLADX(x0, c0, acc0); - acc1 = __SMLADX(x1, c0, acc1); - acc2 = __SMLADX(x3, c0, acc2); - acc3 = __SMLADX(x2, c0, acc3); - } - - if (k == 3U) - { - /* Read y[srcBLen - 5], y[srcBLen - 6] */ - c0 = _SIMD32_OFFSET(py); - - /* Read x[7], x[8] */ - x3 = *__SIMD32(px); - - /* Read x[9] */ - x2 = _SIMD32_OFFSET(px+1); - - /* Perform the multiply-accumulates */ - acc0 = __SMLADX(x0, c0, acc0); - acc1 = __SMLADX(x1, c0, acc1); - acc2 = __SMLADX(x3, c0, acc2); - acc3 = __SMLADX(x2, c0, acc3); - - /* Read y[srcBLen - 7] */ - c0 = *(py-1); -#ifdef ARM_MATH_BIG_ENDIAN - - c0 = c0 << 16U; -#else - - c0 = c0 & 0x0000FFFF; -#endif /* #ifdef ARM_MATH_BIG_ENDIAN */ - - /* Read x[10] */ - x3 = _SIMD32_OFFSET(px+2); - px += 3U; - - /* Perform the multiply-accumulates */ - acc0 = __SMLADX(x1, c0, acc0); - acc1 = __SMLAD(x2, c0, acc1); - acc2 = __SMLADX(x2, c0, acc2); - acc3 = __SMLADX(x3, c0, acc3); - } - - /* Store the results in the accumulators in the destination buffer. */ -#ifndef ARM_MATH_BIG_ENDIAN - - *__SIMD32(pOut)++ = __PKHBT((acc0 >> 15), (acc1 >> 15), 16); - *__SIMD32(pOut)++ = __PKHBT((acc2 >> 15), (acc3 >> 15), 16); - -#else - - *__SIMD32(pOut)++ = __PKHBT((acc1 >> 15), (acc0 >> 15), 16); - *__SIMD32(pOut)++ = __PKHBT((acc3 >> 15), (acc2 >> 15), 16); - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - /* Increment the pointer pIn1 index, count by 4 */ - count += 4U; - - /* Update the inputA and inputB pointers for next MAC calculation */ - px = pIn1 + count; - py = pSrc2; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize2 is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize2 % 0x4U; - - while (blkCnt > 0U) - { - /* Accumulator is made zero for every iteration */ - sum = 0; - - /* Apply loop unrolling and compute 4 MACs simultaneously. */ - k = srcBLen >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 MACs at a time. - ** a second loop below computes MACs for the remaining 1 to 3 samples. */ - while (k > 0U) - { - /* Perform the multiply-accumulates */ - sum += ((q31_t) * px++ * *py--); - sum += ((q31_t) * px++ * *py--); - sum += ((q31_t) * px++ * *py--); - sum += ((q31_t) * px++ * *py--); - - /* Decrement the loop counter */ - k--; - } - - /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. - ** No loop unrolling is used. */ - k = srcBLen % 0x4U; - - while (k > 0U) - { - /* Perform the multiply-accumulates */ - sum += ((q31_t) * px++ * *py--); - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut++ = (q15_t) (sum >> 15); - - /* Increment the pointer pIn1 index, count by 1 */ - count++; - - /* Update the inputA and inputB pointers for next MAC calculation */ - px = pIn1 + count; - py = pSrc2; - - /* Decrement the loop counter */ - blkCnt--; - } - } - else - { - /* If the srcBLen is not a multiple of 4, - * the blockSize2 loop cannot be unrolled by 4 */ - blkCnt = blockSize2; - - while (blkCnt > 0U) - { - /* Accumulator is made zero for every iteration */ - sum = 0; - - /* srcBLen number of MACS should be performed */ - k = srcBLen; - - while (k > 0U) - { - /* Perform the multiply-accumulate */ - sum += ((q31_t) * px++ * *py--); - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut++ = (q15_t) (sum >> 15); - - /* Increment the MAC count */ - count++; - - /* Update the inputA and inputB pointers for next MAC calculation */ - px = pIn1 + count; - py = pSrc2; - - /* Decrement the loop counter */ - blkCnt--; - } - } - - - /* -------------------------- - * Initializations of stage3 - * -------------------------*/ - - /* sum += x[srcALen-srcBLen+1] * y[srcBLen-1] + x[srcALen-srcBLen+2] * y[srcBLen-2] +...+ x[srcALen-1] * y[1] - * sum += x[srcALen-srcBLen+2] * y[srcBLen-1] + x[srcALen-srcBLen+3] * y[srcBLen-2] +...+ x[srcALen-1] * y[2] - * .... - * sum += x[srcALen-2] * y[srcBLen-1] + x[srcALen-1] * y[srcBLen-2] - * sum += x[srcALen-1] * y[srcBLen-1] - */ - - /* In this stage the MAC operations are decreased by 1 for every iteration. - The blockSize3 variable holds the number of MAC operations performed */ - - /* Working pointer of inputA */ - pSrc1 = (pIn1 + srcALen) - (srcBLen - 1U); - px = pSrc1; - - /* Working pointer of inputB */ - pSrc2 = pIn2 + (srcBLen - 1U); - pIn2 = pSrc2 - 1U; - py = pIn2; - - /* ------------------- - * Stage3 process - * ------------------*/ - - /* For loop unrolling by 4, this stage is divided into two. */ - /* First part of this stage computes the MAC operations greater than 4 */ - /* Second part of this stage computes the MAC operations less than or equal to 4 */ - - /* The first part of the stage starts here */ - j = blockSize3 >> 2U; - - while ((j > 0U) && (blockSize3 > 0U)) - { - /* Accumulator is made zero for every iteration */ - sum = 0; - - /* Apply loop unrolling and compute 4 MACs simultaneously. */ - k = blockSize3 >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 MACs at a time. - ** a second loop below computes MACs for the remaining 1 to 3 samples. */ - while (k > 0U) - { - /* x[srcALen - srcBLen + 1], x[srcALen - srcBLen + 2] are multiplied - * with y[srcBLen - 1], y[srcBLen - 2] respectively */ - sum = __SMLADX(*__SIMD32(px)++, *__SIMD32(py)--, sum); - /* x[srcALen - srcBLen + 3], x[srcALen - srcBLen + 4] are multiplied - * with y[srcBLen - 3], y[srcBLen - 4] respectively */ - sum = __SMLADX(*__SIMD32(px)++, *__SIMD32(py)--, sum); - - /* Decrement the loop counter */ - k--; - } - - /* For the next MAC operations, the pointer py is used without SIMD - * So, py is incremented by 1 */ - py = py + 1U; - - /* If the blockSize3 is not a multiple of 4, compute any remaining MACs here. - ** No loop unrolling is used. */ - k = blockSize3 % 0x4U; - - while (k > 0U) - { - /* sum += x[srcALen - srcBLen + 5] * y[srcBLen - 5] */ - sum = __SMLAD(*px++, *py--, sum); - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut++ = (q15_t) (sum >> 15); - - /* Update the inputA and inputB pointers for next MAC calculation */ - px = ++pSrc1; - py = pIn2; - - /* Decrement the loop counter */ - blockSize3--; - - j--; - } - - /* The second part of the stage starts here */ - /* SIMD is not used for the next MAC operations, - * so pointer py is updated to read only one sample at a time */ - py = py + 1U; - - while (blockSize3 > 0U) - { - /* Accumulator is made zero for every iteration */ - sum = 0; - - /* Apply loop unrolling and compute 4 MACs simultaneously. */ - k = blockSize3; - - while (k > 0U) - { - /* Perform the multiply-accumulates */ - /* sum += x[srcALen-1] * y[srcBLen-1] */ - sum = __SMLAD(*px++, *py--, sum); - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut++ = (q15_t) (sum >> 15); - - /* Update the inputA and inputB pointers for next MAC calculation */ - px = ++pSrc1; - py = pSrc2; - - /* Decrement the loop counter */ - blockSize3--; - } - -#else - q15_t *pIn1; /* inputA pointer */ - q15_t *pIn2; /* inputB pointer */ - q15_t *pOut = pDst; /* output pointer */ - q31_t sum, acc0, acc1, acc2, acc3; /* Accumulator */ - q15_t *px; /* Intermediate inputA pointer */ - q15_t *py; /* Intermediate inputB pointer */ - q15_t *pSrc1, *pSrc2; /* Intermediate pointers */ - q31_t x0, x1, x2, x3, c0; /* Temporary variables to hold state and coefficient values */ - uint32_t blockSize1, blockSize2, blockSize3, j, k, count, blkCnt; /* loop counter */ - q15_t a, b; - - /* The algorithm implementation is based on the lengths of the inputs. */ - /* srcB is always made to slide across srcA. */ - /* So srcBLen is always considered as shorter or equal to srcALen */ - if (srcALen >= srcBLen) - { - /* Initialization of inputA pointer */ - pIn1 = pSrcA; - - /* Initialization of inputB pointer */ - pIn2 = pSrcB; - } - else - { - /* Initialization of inputA pointer */ - pIn1 = pSrcB; - - /* Initialization of inputB pointer */ - pIn2 = pSrcA; - - /* srcBLen is always considered as shorter or equal to srcALen */ - j = srcBLen; - srcBLen = srcALen; - srcALen = j; - } - - /* conv(x,y) at n = x[n] * y[0] + x[n-1] * y[1] + x[n-2] * y[2] + ...+ x[n-N+1] * y[N -1] */ - /* The function is internally - * divided into three stages according to the number of multiplications that has to be - * taken place between inputA samples and inputB samples. In the first stage of the - * algorithm, the multiplications increase by one for every iteration. - * In the second stage of the algorithm, srcBLen number of multiplications are done. - * In the third stage of the algorithm, the multiplications decrease by one - * for every iteration. */ - - /* The algorithm is implemented in three stages. - The loop counters of each stage is initiated here. */ - blockSize1 = srcBLen - 1U; - blockSize2 = srcALen - (srcBLen - 1U); - blockSize3 = blockSize1; - - /* -------------------------- - * Initializations of stage1 - * -------------------------*/ - - /* sum = x[0] * y[0] - * sum = x[0] * y[1] + x[1] * y[0] - * .... - * sum = x[0] * y[srcBlen - 1] + x[1] * y[srcBlen - 2] +...+ x[srcBLen - 1] * y[0] - */ - - /* In this stage the MAC operations are increased by 1 for every iteration. - The count variable holds the number of MAC operations performed */ - count = 1U; - - /* Working pointer of inputA */ - px = pIn1; - - /* Working pointer of inputB */ - py = pIn2; - - - /* ------------------------ - * Stage1 process - * ----------------------*/ - - /* For loop unrolling by 4, this stage is divided into two. */ - /* First part of this stage computes the MAC operations less than 4 */ - /* Second part of this stage computes the MAC operations greater than or equal to 4 */ - - /* The first part of the stage starts here */ - while ((count < 4U) && (blockSize1 > 0U)) - { - /* Accumulator is made zero for every iteration */ - sum = 0; - - /* Loop over number of MAC operations between - * inputA samples and inputB samples */ - k = count; - - while (k > 0U) - { - /* Perform the multiply-accumulates */ - sum += ((q31_t) * px++ * *py--); - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut++ = (q15_t) (sum >> 15); - - /* Update the inputA and inputB pointers for next MAC calculation */ - py = pIn2 + count; - px = pIn1; - - /* Increment the MAC count */ - count++; - - /* Decrement the loop counter */ - blockSize1--; - } - - /* The second part of the stage starts here */ - /* The internal loop, over count, is unrolled by 4 */ - /* To, read the last two inputB samples using SIMD: - * y[srcBLen] and y[srcBLen-1] coefficients, py is decremented by 1 */ - py = py - 1; - - while (blockSize1 > 0U) - { - /* Accumulator is made zero for every iteration */ - sum = 0; - - /* Apply loop unrolling and compute 4 MACs simultaneously. */ - k = count >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 MACs at a time. - ** a second loop below computes MACs for the remaining 1 to 3 samples. */ - py++; - - while (k > 0U) - { - /* Perform the multiply-accumulates */ - sum += ((q31_t) * px++ * *py--); - sum += ((q31_t) * px++ * *py--); - sum += ((q31_t) * px++ * *py--); - sum += ((q31_t) * px++ * *py--); - - /* Decrement the loop counter */ - k--; - } - - /* If the count is not a multiple of 4, compute any remaining MACs here. - ** No loop unrolling is used. */ - k = count % 0x4U; - - while (k > 0U) - { - /* Perform the multiply-accumulates */ - sum += ((q31_t) * px++ * *py--); - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut++ = (q15_t) (sum >> 15); - - /* Update the inputA and inputB pointers for next MAC calculation */ - py = pIn2 + (count - 1U); - px = pIn1; - - /* Increment the MAC count */ - count++; - - /* Decrement the loop counter */ - blockSize1--; - } - - /* -------------------------- - * Initializations of stage2 - * ------------------------*/ - - /* sum = x[0] * y[srcBLen-1] + x[1] * y[srcBLen-2] +...+ x[srcBLen-1] * y[0] - * sum = x[1] * y[srcBLen-1] + x[2] * y[srcBLen-2] +...+ x[srcBLen] * y[0] - * .... - * sum = x[srcALen-srcBLen-2] * y[srcBLen-1] + x[srcALen] * y[srcBLen-2] +...+ x[srcALen-1] * y[0] - */ - - /* Working pointer of inputA */ - px = pIn1; - - /* Working pointer of inputB */ - pSrc2 = pIn2 + (srcBLen - 1U); - py = pSrc2; - - /* count is the index by which the pointer pIn1 to be incremented */ - count = 0U; - - - /* -------------------- - * Stage2 process - * -------------------*/ - - /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed. - * So, to loop unroll over blockSize2, - * srcBLen should be greater than or equal to 4 */ - if (srcBLen >= 4U) - { - /* Loop unroll over blockSize2, by 4 */ - blkCnt = blockSize2 >> 2U; - - while (blkCnt > 0U) - { - py = py - 1U; - - /* Set all accumulators to zero */ - acc0 = 0; - acc1 = 0; - acc2 = 0; - acc3 = 0; - - /* read x[0], x[1] samples */ - a = *px++; - b = *px++; - -#ifndef ARM_MATH_BIG_ENDIAN - - x0 = __PKHBT(a, b, 16); - a = *px; - x1 = __PKHBT(b, a, 16); - -#else - - x0 = __PKHBT(b, a, 16); - a = *px; - x1 = __PKHBT(a, b, 16); - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - /* Apply loop unrolling and compute 4 MACs simultaneously. */ - k = srcBLen >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 MACs at a time. - ** a second loop below computes MACs for the remaining 1 to 3 samples. */ - do - { - /* Read the last two inputB samples using SIMD: - * y[srcBLen - 1] and y[srcBLen - 2] */ - a = *py; - b = *(py+1); - py -= 2; - -#ifndef ARM_MATH_BIG_ENDIAN - - c0 = __PKHBT(a, b, 16); - -#else - - c0 = __PKHBT(b, a, 16);; - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - /* acc0 += x[0] * y[srcBLen - 1] + x[1] * y[srcBLen - 2] */ - acc0 = __SMLADX(x0, c0, acc0); - - /* acc1 += x[1] * y[srcBLen - 1] + x[2] * y[srcBLen - 2] */ - acc1 = __SMLADX(x1, c0, acc1); - - a = *px; - b = *(px + 1); - -#ifndef ARM_MATH_BIG_ENDIAN - - x2 = __PKHBT(a, b, 16); - a = *(px + 2); - x3 = __PKHBT(b, a, 16); - -#else - - x2 = __PKHBT(b, a, 16); - a = *(px + 2); - x3 = __PKHBT(a, b, 16); - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - /* acc2 += x[2] * y[srcBLen - 1] + x[3] * y[srcBLen - 2] */ - acc2 = __SMLADX(x2, c0, acc2); - - /* acc3 += x[3] * y[srcBLen - 1] + x[4] * y[srcBLen - 2] */ - acc3 = __SMLADX(x3, c0, acc3); - - /* Read y[srcBLen - 3] and y[srcBLen - 4] */ - a = *py; - b = *(py+1); - py -= 2; - -#ifndef ARM_MATH_BIG_ENDIAN - - c0 = __PKHBT(a, b, 16); - -#else - - c0 = __PKHBT(b, a, 16);; - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - /* acc0 += x[2] * y[srcBLen - 3] + x[3] * y[srcBLen - 4] */ - acc0 = __SMLADX(x2, c0, acc0); - - /* acc1 += x[3] * y[srcBLen - 3] + x[4] * y[srcBLen - 4] */ - acc1 = __SMLADX(x3, c0, acc1); - - /* Read x[4], x[5], x[6] */ - a = *(px + 2); - b = *(px + 3); - -#ifndef ARM_MATH_BIG_ENDIAN - - x0 = __PKHBT(a, b, 16); - a = *(px + 4); - x1 = __PKHBT(b, a, 16); - -#else - - x0 = __PKHBT(b, a, 16); - a = *(px + 4); - x1 = __PKHBT(a, b, 16); - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - px += 4U; - - /* acc2 += x[4] * y[srcBLen - 3] + x[5] * y[srcBLen - 4] */ - acc2 = __SMLADX(x0, c0, acc2); - - /* acc3 += x[5] * y[srcBLen - 3] + x[6] * y[srcBLen - 4] */ - acc3 = __SMLADX(x1, c0, acc3); - - } while (--k); - - /* For the next MAC operations, SIMD is not used - * So, the 16 bit pointer if inputB, py is updated */ - - /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. - ** No loop unrolling is used. */ - k = srcBLen % 0x4U; - - if (k == 1U) - { - /* Read y[srcBLen - 5] */ - c0 = *(py+1); - -#ifdef ARM_MATH_BIG_ENDIAN - - c0 = c0 << 16U; - -#else - - c0 = c0 & 0x0000FFFF; - -#endif /* #ifdef ARM_MATH_BIG_ENDIAN */ - - /* Read x[7] */ - a = *px; - b = *(px+1); - px++; - -#ifndef ARM_MATH_BIG_ENDIAN - - x3 = __PKHBT(a, b, 16); - -#else - - x3 = __PKHBT(b, a, 16);; - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - - /* Perform the multiply-accumulates */ - acc0 = __SMLAD(x0, c0, acc0); - acc1 = __SMLAD(x1, c0, acc1); - acc2 = __SMLADX(x1, c0, acc2); - acc3 = __SMLADX(x3, c0, acc3); - } - - if (k == 2U) - { - /* Read y[srcBLen - 5], y[srcBLen - 6] */ - a = *py; - b = *(py+1); - -#ifndef ARM_MATH_BIG_ENDIAN - - c0 = __PKHBT(a, b, 16); - -#else - - c0 = __PKHBT(b, a, 16);; - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - /* Read x[7], x[8], x[9] */ - a = *px; - b = *(px + 1); - -#ifndef ARM_MATH_BIG_ENDIAN - - x3 = __PKHBT(a, b, 16); - a = *(px + 2); - x2 = __PKHBT(b, a, 16); - -#else - - x3 = __PKHBT(b, a, 16); - a = *(px + 2); - x2 = __PKHBT(a, b, 16); - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - px += 2U; - - /* Perform the multiply-accumulates */ - acc0 = __SMLADX(x0, c0, acc0); - acc1 = __SMLADX(x1, c0, acc1); - acc2 = __SMLADX(x3, c0, acc2); - acc3 = __SMLADX(x2, c0, acc3); - } - - if (k == 3U) - { - /* Read y[srcBLen - 5], y[srcBLen - 6] */ - a = *py; - b = *(py+1); - -#ifndef ARM_MATH_BIG_ENDIAN - - c0 = __PKHBT(a, b, 16); - -#else - - c0 = __PKHBT(b, a, 16);; - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - /* Read x[7], x[8], x[9] */ - a = *px; - b = *(px + 1); - -#ifndef ARM_MATH_BIG_ENDIAN - - x3 = __PKHBT(a, b, 16); - a = *(px + 2); - x2 = __PKHBT(b, a, 16); - -#else - - x3 = __PKHBT(b, a, 16); - a = *(px + 2); - x2 = __PKHBT(a, b, 16); - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - /* Perform the multiply-accumulates */ - acc0 = __SMLADX(x0, c0, acc0); - acc1 = __SMLADX(x1, c0, acc1); - acc2 = __SMLADX(x3, c0, acc2); - acc3 = __SMLADX(x2, c0, acc3); - - /* Read y[srcBLen - 7] */ - c0 = *(py-1); -#ifdef ARM_MATH_BIG_ENDIAN - - c0 = c0 << 16U; -#else - - c0 = c0 & 0x0000FFFF; -#endif /* #ifdef ARM_MATH_BIG_ENDIAN */ - - /* Read x[10] */ - a = *(px+2); - b = *(px+3); - -#ifndef ARM_MATH_BIG_ENDIAN - - x3 = __PKHBT(a, b, 16); - -#else - - x3 = __PKHBT(b, a, 16);; - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - px += 3U; - - /* Perform the multiply-accumulates */ - acc0 = __SMLADX(x1, c0, acc0); - acc1 = __SMLAD(x2, c0, acc1); - acc2 = __SMLADX(x2, c0, acc2); - acc3 = __SMLADX(x3, c0, acc3); - } - - /* Store the results in the accumulators in the destination buffer. */ - *pOut++ = (q15_t)(acc0 >> 15); - *pOut++ = (q15_t)(acc1 >> 15); - *pOut++ = (q15_t)(acc2 >> 15); - *pOut++ = (q15_t)(acc3 >> 15); - - /* Increment the pointer pIn1 index, count by 4 */ - count += 4U; - - /* Update the inputA and inputB pointers for next MAC calculation */ - px = pIn1 + count; - py = pSrc2; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize2 is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize2 % 0x4U; - - while (blkCnt > 0U) - { - /* Accumulator is made zero for every iteration */ - sum = 0; - - /* Apply loop unrolling and compute 4 MACs simultaneously. */ - k = srcBLen >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 MACs at a time. - ** a second loop below computes MACs for the remaining 1 to 3 samples. */ - while (k > 0U) - { - /* Perform the multiply-accumulates */ - sum += ((q31_t) * px++ * *py--); - sum += ((q31_t) * px++ * *py--); - sum += ((q31_t) * px++ * *py--); - sum += ((q31_t) * px++ * *py--); - - /* Decrement the loop counter */ - k--; - } - - /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. - ** No loop unrolling is used. */ - k = srcBLen % 0x4U; - - while (k > 0U) - { - /* Perform the multiply-accumulates */ - sum += ((q31_t) * px++ * *py--); - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut++ = (q15_t) (sum >> 15); - - /* Increment the pointer pIn1 index, count by 1 */ - count++; - - /* Update the inputA and inputB pointers for next MAC calculation */ - px = pIn1 + count; - py = pSrc2; - - /* Decrement the loop counter */ - blkCnt--; - } - } - else - { - /* If the srcBLen is not a multiple of 4, - * the blockSize2 loop cannot be unrolled by 4 */ - blkCnt = blockSize2; - - while (blkCnt > 0U) - { - /* Accumulator is made zero for every iteration */ - sum = 0; - - /* srcBLen number of MACS should be performed */ - k = srcBLen; - - while (k > 0U) - { - /* Perform the multiply-accumulate */ - sum += ((q31_t) * px++ * *py--); - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut++ = (q15_t) (sum >> 15); - - /* Increment the MAC count */ - count++; - - /* Update the inputA and inputB pointers for next MAC calculation */ - px = pIn1 + count; - py = pSrc2; - - /* Decrement the loop counter */ - blkCnt--; - } - } - - - /* -------------------------- - * Initializations of stage3 - * -------------------------*/ - - /* sum += x[srcALen-srcBLen+1] * y[srcBLen-1] + x[srcALen-srcBLen+2] * y[srcBLen-2] +...+ x[srcALen-1] * y[1] - * sum += x[srcALen-srcBLen+2] * y[srcBLen-1] + x[srcALen-srcBLen+3] * y[srcBLen-2] +...+ x[srcALen-1] * y[2] - * .... - * sum += x[srcALen-2] * y[srcBLen-1] + x[srcALen-1] * y[srcBLen-2] - * sum += x[srcALen-1] * y[srcBLen-1] - */ - - /* In this stage the MAC operations are decreased by 1 for every iteration. - The blockSize3 variable holds the number of MAC operations performed */ - - /* Working pointer of inputA */ - pSrc1 = (pIn1 + srcALen) - (srcBLen - 1U); - px = pSrc1; - - /* Working pointer of inputB */ - pSrc2 = pIn2 + (srcBLen - 1U); - pIn2 = pSrc2 - 1U; - py = pIn2; - - /* ------------------- - * Stage3 process - * ------------------*/ - - /* For loop unrolling by 4, this stage is divided into two. */ - /* First part of this stage computes the MAC operations greater than 4 */ - /* Second part of this stage computes the MAC operations less than or equal to 4 */ - - /* The first part of the stage starts here */ - j = blockSize3 >> 2U; - - while ((j > 0U) && (blockSize3 > 0U)) - { - /* Accumulator is made zero for every iteration */ - sum = 0; - - /* Apply loop unrolling and compute 4 MACs simultaneously. */ - k = blockSize3 >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 MACs at a time. - ** a second loop below computes MACs for the remaining 1 to 3 samples. */ - py++; - - while (k > 0U) - { - sum += ((q31_t) * px++ * *py--); - sum += ((q31_t) * px++ * *py--); - sum += ((q31_t) * px++ * *py--); - sum += ((q31_t) * px++ * *py--); - /* Decrement the loop counter */ - k--; - } - - /* If the blockSize3 is not a multiple of 4, compute any remaining MACs here. - ** No loop unrolling is used. */ - k = blockSize3 % 0x4U; - - while (k > 0U) - { - /* sum += x[srcALen - srcBLen + 5] * y[srcBLen - 5] */ - sum += ((q31_t) * px++ * *py--); - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut++ = (q15_t) (sum >> 15); - - /* Update the inputA and inputB pointers for next MAC calculation */ - px = ++pSrc1; - py = pIn2; - - /* Decrement the loop counter */ - blockSize3--; - - j--; - } - - /* The second part of the stage starts here */ - /* SIMD is not used for the next MAC operations, - * so pointer py is updated to read only one sample at a time */ - py = py + 1U; - - while (blockSize3 > 0U) - { - /* Accumulator is made zero for every iteration */ - sum = 0; - - /* Apply loop unrolling and compute 4 MACs simultaneously. */ - k = blockSize3; - - while (k > 0U) - { - /* Perform the multiply-accumulates */ - /* sum += x[srcALen-1] * y[srcBLen-1] */ - sum += ((q31_t) * px++ * *py--); - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut++ = (q15_t) (sum >> 15); - - /* Update the inputA and inputB pointers for next MAC calculation */ - px = ++pSrc1; - py = pSrc2; - - /* Decrement the loop counter */ - blockSize3--; - } - -#endif /* #ifndef UNALIGNED_SUPPORT_DISABLE */ -} - -/** - * @} end of Conv group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_fast_q31.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_fast_q31.c deleted file mode 100644 index ce3e334..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_fast_q31.c +++ /dev/null @@ -1,565 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_conv_fast_q31.c - * Description: Fast Q31 Convolution - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupFilters - */ - -/** - * @addtogroup Conv - * @{ - */ - -/** - * @param[in] *pSrcA points to the first input sequence. - * @param[in] srcALen length of the first input sequence. - * @param[in] *pSrcB points to the second input sequence. - * @param[in] srcBLen length of the second input sequence. - * @param[out] *pDst points to the location where the output result is written. Length srcALen+srcBLen-1. - * @return none. - * - * @details - * Scaling and Overflow Behavior: - * - * \par - * This function is optimized for speed at the expense of fixed-point precision and overflow protection. - * The result of each 1.31 x 1.31 multiplication is truncated to 2.30 format. - * These intermediate results are accumulated in a 32-bit register in 2.30 format. - * Finally, the accumulator is saturated and converted to a 1.31 result. - * - * \par - * The fast version has the same overflow behavior as the standard version but provides less precision since it discards the low 32 bits of each multiplication result. - * In order to avoid overflows completely the input signals must be scaled down. - * Scale down the inputs by log2(min(srcALen, srcBLen)) (log2 is read as log to the base 2) times to avoid overflows, - * as maximum of min(srcALen, srcBLen) number of additions are carried internally. - * - * \par - * See arm_conv_q31() for a slower implementation of this function which uses 64-bit accumulation to provide higher precision. - */ - -void arm_conv_fast_q31( - q31_t * pSrcA, - uint32_t srcALen, - q31_t * pSrcB, - uint32_t srcBLen, - q31_t * pDst) -{ - q31_t *pIn1; /* inputA pointer */ - q31_t *pIn2; /* inputB pointer */ - q31_t *pOut = pDst; /* output pointer */ - q31_t *px; /* Intermediate inputA pointer */ - q31_t *py; /* Intermediate inputB pointer */ - q31_t *pSrc1, *pSrc2; /* Intermediate pointers */ - q31_t sum, acc0, acc1, acc2, acc3; /* Accumulator */ - q31_t x0, x1, x2, x3, c0; /* Temporary variables to hold state and coefficient values */ - uint32_t j, k, count, blkCnt, blockSize1, blockSize2, blockSize3; /* loop counter */ - - /* The algorithm implementation is based on the lengths of the inputs. */ - /* srcB is always made to slide across srcA. */ - /* So srcBLen is always considered as shorter or equal to srcALen */ - if (srcALen >= srcBLen) - { - /* Initialization of inputA pointer */ - pIn1 = pSrcA; - - /* Initialization of inputB pointer */ - pIn2 = pSrcB; - } - else - { - /* Initialization of inputA pointer */ - pIn1 = pSrcB; - - /* Initialization of inputB pointer */ - pIn2 = pSrcA; - - /* srcBLen is always considered as shorter or equal to srcALen */ - j = srcBLen; - srcBLen = srcALen; - srcALen = j; - } - - /* conv(x,y) at n = x[n] * y[0] + x[n-1] * y[1] + x[n-2] * y[2] + ...+ x[n-N+1] * y[N -1] */ - /* The function is internally - * divided into three stages according to the number of multiplications that has to be - * taken place between inputA samples and inputB samples. In the first stage of the - * algorithm, the multiplications increase by one for every iteration. - * In the second stage of the algorithm, srcBLen number of multiplications are done. - * In the third stage of the algorithm, the multiplications decrease by one - * for every iteration. */ - - /* The algorithm is implemented in three stages. - The loop counters of each stage is initiated here. */ - blockSize1 = srcBLen - 1U; - blockSize2 = srcALen - (srcBLen - 1U); - blockSize3 = blockSize1; - - /* -------------------------- - * Initializations of stage1 - * -------------------------*/ - - /* sum = x[0] * y[0] - * sum = x[0] * y[1] + x[1] * y[0] - * .... - * sum = x[0] * y[srcBlen - 1] + x[1] * y[srcBlen - 2] +...+ x[srcBLen - 1] * y[0] - */ - - /* In this stage the MAC operations are increased by 1 for every iteration. - The count variable holds the number of MAC operations performed */ - count = 1U; - - /* Working pointer of inputA */ - px = pIn1; - - /* Working pointer of inputB */ - py = pIn2; - - - /* ------------------------ - * Stage1 process - * ----------------------*/ - - /* The first stage starts here */ - while (blockSize1 > 0U) - { - /* Accumulator is made zero for every iteration */ - sum = 0; - - /* Apply loop unrolling and compute 4 MACs simultaneously. */ - k = count >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 MACs at a time. - ** a second loop below computes MACs for the remaining 1 to 3 samples. */ - while (k > 0U) - { - /* x[0] * y[srcBLen - 1] */ - sum = (q31_t) ((((q63_t) sum << 32) + - ((q63_t) * px++ * (*py--))) >> 32); - - /* x[1] * y[srcBLen - 2] */ - sum = (q31_t) ((((q63_t) sum << 32) + - ((q63_t) * px++ * (*py--))) >> 32); - - /* x[2] * y[srcBLen - 3] */ - sum = (q31_t) ((((q63_t) sum << 32) + - ((q63_t) * px++ * (*py--))) >> 32); - - /* x[3] * y[srcBLen - 4] */ - sum = (q31_t) ((((q63_t) sum << 32) + - ((q63_t) * px++ * (*py--))) >> 32); - - /* Decrement the loop counter */ - k--; - } - - /* If the count is not a multiple of 4, compute any remaining MACs here. - ** No loop unrolling is used. */ - k = count % 0x4U; - - while (k > 0U) - { - /* Perform the multiply-accumulate */ - sum = (q31_t) ((((q63_t) sum << 32) + - ((q63_t) * px++ * (*py--))) >> 32); - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut++ = sum << 1; - - /* Update the inputA and inputB pointers for next MAC calculation */ - py = pIn2 + count; - px = pIn1; - - /* Increment the MAC count */ - count++; - - /* Decrement the loop counter */ - blockSize1--; - } - - /* -------------------------- - * Initializations of stage2 - * ------------------------*/ - - /* sum = x[0] * y[srcBLen-1] + x[1] * y[srcBLen-2] +...+ x[srcBLen-1] * y[0] - * sum = x[1] * y[srcBLen-1] + x[2] * y[srcBLen-2] +...+ x[srcBLen] * y[0] - * .... - * sum = x[srcALen-srcBLen-2] * y[srcBLen-1] + x[srcALen] * y[srcBLen-2] +...+ x[srcALen-1] * y[0] - */ - - /* Working pointer of inputA */ - px = pIn1; - - /* Working pointer of inputB */ - pSrc2 = pIn2 + (srcBLen - 1U); - py = pSrc2; - - /* count is index by which the pointer pIn1 to be incremented */ - count = 0U; - - /* ------------------- - * Stage2 process - * ------------------*/ - - /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed. - * So, to loop unroll over blockSize2, - * srcBLen should be greater than or equal to 4 */ - if (srcBLen >= 4U) - { - /* Loop unroll over blockSize2, by 4 */ - blkCnt = blockSize2 >> 2U; - - while (blkCnt > 0U) - { - /* Set all accumulators to zero */ - acc0 = 0; - acc1 = 0; - acc2 = 0; - acc3 = 0; - - /* read x[0], x[1], x[2] samples */ - x0 = *(px++); - x1 = *(px++); - x2 = *(px++); - - /* Apply loop unrolling and compute 4 MACs simultaneously. */ - k = srcBLen >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 MACs at a time. - ** a second loop below computes MACs for the remaining 1 to 3 samples. */ - do - { - /* Read y[srcBLen - 1] sample */ - c0 = *(py--); - - /* Read x[3] sample */ - x3 = *(px++); - - /* Perform the multiply-accumulates */ - /* acc0 += x[0] * y[srcBLen - 1] */ - acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x0 * c0)) >> 32); - - /* acc1 += x[1] * y[srcBLen - 1] */ - acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x1 * c0)) >> 32); - - /* acc2 += x[2] * y[srcBLen - 1] */ - acc2 = (q31_t) ((((q63_t) acc2 << 32) + ((q63_t) x2 * c0)) >> 32); - - /* acc3 += x[3] * y[srcBLen - 1] */ - acc3 = (q31_t) ((((q63_t) acc3 << 32) + ((q63_t) x3 * c0)) >> 32); - - /* Read y[srcBLen - 2] sample */ - c0 = *(py--); - - /* Read x[4] sample */ - x0 = *(px++); - - /* Perform the multiply-accumulate */ - /* acc0 += x[1] * y[srcBLen - 2] */ - acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x1 * c0)) >> 32); - /* acc1 += x[2] * y[srcBLen - 2] */ - acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x2 * c0)) >> 32); - /* acc2 += x[3] * y[srcBLen - 2] */ - acc2 = (q31_t) ((((q63_t) acc2 << 32) + ((q63_t) x3 * c0)) >> 32); - /* acc3 += x[4] * y[srcBLen - 2] */ - acc3 = (q31_t) ((((q63_t) acc3 << 32) + ((q63_t) x0 * c0)) >> 32); - - /* Read y[srcBLen - 3] sample */ - c0 = *(py--); - - /* Read x[5] sample */ - x1 = *(px++); - - /* Perform the multiply-accumulates */ - /* acc0 += x[2] * y[srcBLen - 3] */ - acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x2 * c0)) >> 32); - /* acc1 += x[3] * y[srcBLen - 3] */ - acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x3 * c0)) >> 32); - /* acc2 += x[4] * y[srcBLen - 3] */ - acc2 = (q31_t) ((((q63_t) acc2 << 32) + ((q63_t) x0 * c0)) >> 32); - /* acc3 += x[5] * y[srcBLen - 3] */ - acc3 = (q31_t) ((((q63_t) acc3 << 32) + ((q63_t) x1 * c0)) >> 32); - - /* Read y[srcBLen - 4] sample */ - c0 = *(py--); - - /* Read x[6] sample */ - x2 = *(px++); - - /* Perform the multiply-accumulates */ - /* acc0 += x[3] * y[srcBLen - 4] */ - acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x3 * c0)) >> 32); - /* acc1 += x[4] * y[srcBLen - 4] */ - acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x0 * c0)) >> 32); - /* acc2 += x[5] * y[srcBLen - 4] */ - acc2 = (q31_t) ((((q63_t) acc2 << 32) + ((q63_t) x1 * c0)) >> 32); - /* acc3 += x[6] * y[srcBLen - 4] */ - acc3 = (q31_t) ((((q63_t) acc3 << 32) + ((q63_t) x2 * c0)) >> 32); - - - } while (--k); - - /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. - ** No loop unrolling is used. */ - k = srcBLen % 0x4U; - - while (k > 0U) - { - /* Read y[srcBLen - 5] sample */ - c0 = *(py--); - - /* Read x[7] sample */ - x3 = *(px++); - - /* Perform the multiply-accumulates */ - /* acc0 += x[4] * y[srcBLen - 5] */ - acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x0 * c0)) >> 32); - /* acc1 += x[5] * y[srcBLen - 5] */ - acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x1 * c0)) >> 32); - /* acc2 += x[6] * y[srcBLen - 5] */ - acc2 = (q31_t) ((((q63_t) acc2 << 32) + ((q63_t) x2 * c0)) >> 32); - /* acc3 += x[7] * y[srcBLen - 5] */ - acc3 = (q31_t) ((((q63_t) acc3 << 32) + ((q63_t) x3 * c0)) >> 32); - - /* Reuse the present samples for the next MAC */ - x0 = x1; - x1 = x2; - x2 = x3; - - /* Decrement the loop counter */ - k--; - } - - /* Store the results in the accumulators in the destination buffer. */ - *pOut++ = (q31_t) (acc0 << 1); - *pOut++ = (q31_t) (acc1 << 1); - *pOut++ = (q31_t) (acc2 << 1); - *pOut++ = (q31_t) (acc3 << 1); - - /* Increment the pointer pIn1 index, count by 4 */ - count += 4U; - - /* Update the inputA and inputB pointers for next MAC calculation */ - px = pIn1 + count; - py = pSrc2; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize2 is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize2 % 0x4U; - - while (blkCnt > 0U) - { - /* Accumulator is made zero for every iteration */ - sum = 0; - - /* Apply loop unrolling and compute 4 MACs simultaneously. */ - k = srcBLen >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 MACs at a time. - ** a second loop below computes MACs for the remaining 1 to 3 samples. */ - while (k > 0U) - { - /* Perform the multiply-accumulates */ - sum = (q31_t) ((((q63_t) sum << 32) + - ((q63_t) * px++ * (*py--))) >> 32); - sum = (q31_t) ((((q63_t) sum << 32) + - ((q63_t) * px++ * (*py--))) >> 32); - sum = (q31_t) ((((q63_t) sum << 32) + - ((q63_t) * px++ * (*py--))) >> 32); - sum = (q31_t) ((((q63_t) sum << 32) + - ((q63_t) * px++ * (*py--))) >> 32); - - /* Decrement the loop counter */ - k--; - } - - /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. - ** No loop unrolling is used. */ - k = srcBLen % 0x4U; - - while (k > 0U) - { - /* Perform the multiply-accumulate */ - sum = (q31_t) ((((q63_t) sum << 32) + - ((q63_t) * px++ * (*py--))) >> 32); - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut++ = sum << 1; - - /* Increment the MAC count */ - count++; - - /* Update the inputA and inputB pointers for next MAC calculation */ - px = pIn1 + count; - py = pSrc2; - - /* Decrement the loop counter */ - blkCnt--; - } - } - else - { - /* If the srcBLen is not a multiple of 4, - * the blockSize2 loop cannot be unrolled by 4 */ - blkCnt = blockSize2; - - while (blkCnt > 0U) - { - /* Accumulator is made zero for every iteration */ - sum = 0; - - /* srcBLen number of MACS should be performed */ - k = srcBLen; - - while (k > 0U) - { - /* Perform the multiply-accumulate */ - sum = (q31_t) ((((q63_t) sum << 32) + - ((q63_t) * px++ * (*py--))) >> 32); - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut++ = sum << 1; - - /* Increment the MAC count */ - count++; - - /* Update the inputA and inputB pointers for next MAC calculation */ - px = pIn1 + count; - py = pSrc2; - - /* Decrement the loop counter */ - blkCnt--; - } - } - - - /* -------------------------- - * Initializations of stage3 - * -------------------------*/ - - /* sum += x[srcALen-srcBLen+1] * y[srcBLen-1] + x[srcALen-srcBLen+2] * y[srcBLen-2] +...+ x[srcALen-1] * y[1] - * sum += x[srcALen-srcBLen+2] * y[srcBLen-1] + x[srcALen-srcBLen+3] * y[srcBLen-2] +...+ x[srcALen-1] * y[2] - * .... - * sum += x[srcALen-2] * y[srcBLen-1] + x[srcALen-1] * y[srcBLen-2] - * sum += x[srcALen-1] * y[srcBLen-1] - */ - - /* In this stage the MAC operations are decreased by 1 for every iteration. - The blockSize3 variable holds the number of MAC operations performed */ - - /* Working pointer of inputA */ - pSrc1 = (pIn1 + srcALen) - (srcBLen - 1U); - px = pSrc1; - - /* Working pointer of inputB */ - pSrc2 = pIn2 + (srcBLen - 1U); - py = pSrc2; - - /* ------------------- - * Stage3 process - * ------------------*/ - - while (blockSize3 > 0U) - { - /* Accumulator is made zero for every iteration */ - sum = 0; - - /* Apply loop unrolling and compute 4 MACs simultaneously. */ - k = blockSize3 >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 MACs at a time. - ** a second loop below computes MACs for the remaining 1 to 3 samples. */ - while (k > 0U) - { - /* sum += x[srcALen - srcBLen + 1] * y[srcBLen - 1] */ - sum = (q31_t) ((((q63_t) sum << 32) + - ((q63_t) * px++ * (*py--))) >> 32); - - /* sum += x[srcALen - srcBLen + 2] * y[srcBLen - 2] */ - sum = (q31_t) ((((q63_t) sum << 32) + - ((q63_t) * px++ * (*py--))) >> 32); - - /* sum += x[srcALen - srcBLen + 3] * y[srcBLen - 3] */ - sum = (q31_t) ((((q63_t) sum << 32) + - ((q63_t) * px++ * (*py--))) >> 32); - - /* sum += x[srcALen - srcBLen + 4] * y[srcBLen - 4] */ - sum = (q31_t) ((((q63_t) sum << 32) + - ((q63_t) * px++ * (*py--))) >> 32); - - /* Decrement the loop counter */ - k--; - } - - /* If the blockSize3 is not a multiple of 4, compute any remaining MACs here. - ** No loop unrolling is used. */ - k = blockSize3 % 0x4U; - - while (k > 0U) - { - /* Perform the multiply-accumulate */ - sum = (q31_t) ((((q63_t) sum << 32) + - ((q63_t) * px++ * (*py--))) >> 32); - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut++ = sum << 1; - - /* Update the inputA and inputB pointers for next MAC calculation */ - px = ++pSrc1; - py = pSrc2; - - /* Decrement the loop counter */ - blockSize3--; - } - -} - -/** - * @} end of Conv group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_opt_q15.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_opt_q15.c deleted file mode 100644 index 1b20399..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_opt_q15.c +++ /dev/null @@ -1,533 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_conv_opt_q15.c - * Description: Convolution of Q15 sequences - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupFilters - */ - -/** - * @addtogroup Conv - * @{ - */ - -/** - * @brief Convolution of Q15 sequences. - * @param[in] *pSrcA points to the first input sequence. - * @param[in] srcALen length of the first input sequence. - * @param[in] *pSrcB points to the second input sequence. - * @param[in] srcBLen length of the second input sequence. - * @param[out] *pDst points to the location where the output result is written. Length srcALen+srcBLen-1. - * @param[in] *pScratch1 points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2. - * @param[in] *pScratch2 points to scratch buffer of size min(srcALen, srcBLen). - * @return none. - * - * \par Restrictions - * If the silicon does not support unaligned memory access enable the macro UNALIGNED_SUPPORT_DISABLE - * In this case input, output, scratch1 and scratch2 buffers should be aligned by 32-bit - * - * - * @details - * Scaling and Overflow Behavior: - * - * \par - * The function is implemented using a 64-bit internal accumulator. - * Both inputs are in 1.15 format and multiplications yield a 2.30 result. - * The 2.30 intermediate results are accumulated in a 64-bit accumulator in 34.30 format. - * This approach provides 33 guard bits and there is no risk of overflow. - * The 34.30 result is then truncated to 34.15 format by discarding the low 15 bits and then saturated to 1.15 format. - * - * - * \par - * Refer to arm_conv_fast_q15() for a faster but less precise version of this function for Cortex-M3 and Cortex-M4. - * - * - */ - -void arm_conv_opt_q15( - q15_t * pSrcA, - uint32_t srcALen, - q15_t * pSrcB, - uint32_t srcBLen, - q15_t * pDst, - q15_t * pScratch1, - q15_t * pScratch2) -{ - q63_t acc0, acc1, acc2, acc3; /* Accumulator */ - q31_t x1, x2, x3; /* Temporary variables to hold state and coefficient values */ - q31_t y1, y2; /* State variables */ - q15_t *pOut = pDst; /* output pointer */ - q15_t *pScr1 = pScratch1; /* Temporary pointer for scratch1 */ - q15_t *pScr2 = pScratch2; /* Temporary pointer for scratch1 */ - q15_t *pIn1; /* inputA pointer */ - q15_t *pIn2; /* inputB pointer */ - q15_t *px; /* Intermediate inputA pointer */ - q15_t *py; /* Intermediate inputB pointer */ - uint32_t j, k, blkCnt; /* loop counter */ - uint32_t tapCnt; /* loop count */ -#ifdef UNALIGNED_SUPPORT_DISABLE - - q15_t a, b; - -#endif /* #ifndef UNALIGNED_SUPPORT_DISABLE */ - - /* The algorithm implementation is based on the lengths of the inputs. */ - /* srcB is always made to slide across srcA. */ - /* So srcBLen is always considered as shorter or equal to srcALen */ - if (srcALen >= srcBLen) - { - /* Initialization of inputA pointer */ - pIn1 = pSrcA; - - /* Initialization of inputB pointer */ - pIn2 = pSrcB; - - } - else - { - /* Initialization of inputA pointer */ - pIn1 = pSrcB; - - /* Initialization of inputB pointer */ - pIn2 = pSrcA; - - /* srcBLen is always considered as shorter or equal to srcALen */ - j = srcBLen; - srcBLen = srcALen; - srcALen = j; - } - - /* pointer to take end of scratch2 buffer */ - pScr2 = pScratch2 + srcBLen - 1; - - /* points to smaller length sequence */ - px = pIn2; - - /* Apply loop unrolling and do 4 Copies simultaneously. */ - k = srcBLen >> 2U; - - /* First part of the processing with loop unrolling copies 4 data points at a time. - ** a second loop below copies for the remaining 1 to 3 samples. */ - /* Copy smaller length input sequence in reverse order into second scratch buffer */ - while (k > 0U) - { - /* copy second buffer in reversal manner */ - *pScr2-- = *px++; - *pScr2-- = *px++; - *pScr2-- = *px++; - *pScr2-- = *px++; - - /* Decrement the loop counter */ - k--; - } - - /* If the count is not a multiple of 4, copy remaining samples here. - ** No loop unrolling is used. */ - k = srcBLen % 0x4U; - - while (k > 0U) - { - /* copy second buffer in reversal manner for remaining samples */ - *pScr2-- = *px++; - - /* Decrement the loop counter */ - k--; - } - - /* Initialze temporary scratch pointer */ - pScr1 = pScratch1; - - /* Assuming scratch1 buffer is aligned by 32-bit */ - /* Fill (srcBLen - 1U) zeros in scratch buffer */ - arm_fill_q15(0, pScr1, (srcBLen - 1U)); - - /* Update temporary scratch pointer */ - pScr1 += (srcBLen - 1U); - - /* Copy bigger length sequence(srcALen) samples in scratch1 buffer */ - -#ifndef UNALIGNED_SUPPORT_DISABLE - - /* Copy (srcALen) samples in scratch buffer */ - arm_copy_q15(pIn1, pScr1, srcALen); - - /* Update pointers */ - pScr1 += srcALen; - -#else - - /* Apply loop unrolling and do 4 Copies simultaneously. */ - k = srcALen >> 2U; - - /* First part of the processing with loop unrolling copies 4 data points at a time. - ** a second loop below copies for the remaining 1 to 3 samples. */ - while (k > 0U) - { - /* copy second buffer in reversal manner */ - *pScr1++ = *pIn1++; - *pScr1++ = *pIn1++; - *pScr1++ = *pIn1++; - *pScr1++ = *pIn1++; - - /* Decrement the loop counter */ - k--; - } - - /* If the count is not a multiple of 4, copy remaining samples here. - ** No loop unrolling is used. */ - k = srcALen % 0x4U; - - while (k > 0U) - { - /* copy second buffer in reversal manner for remaining samples */ - *pScr1++ = *pIn1++; - - /* Decrement the loop counter */ - k--; - } - -#endif - - -#ifndef UNALIGNED_SUPPORT_DISABLE - - /* Fill (srcBLen - 1U) zeros at end of scratch buffer */ - arm_fill_q15(0, pScr1, (srcBLen - 1U)); - - /* Update pointer */ - pScr1 += (srcBLen - 1U); - -#else - - /* Apply loop unrolling and do 4 Copies simultaneously. */ - k = (srcBLen - 1U) >> 2U; - - /* First part of the processing with loop unrolling copies 4 data points at a time. - ** a second loop below copies for the remaining 1 to 3 samples. */ - while (k > 0U) - { - /* copy second buffer in reversal manner */ - *pScr1++ = 0; - *pScr1++ = 0; - *pScr1++ = 0; - *pScr1++ = 0; - - /* Decrement the loop counter */ - k--; - } - - /* If the count is not a multiple of 4, copy remaining samples here. - ** No loop unrolling is used. */ - k = (srcBLen - 1U) % 0x4U; - - while (k > 0U) - { - /* copy second buffer in reversal manner for remaining samples */ - *pScr1++ = 0; - - /* Decrement the loop counter */ - k--; - } - -#endif - - /* Temporary pointer for scratch2 */ - py = pScratch2; - - - /* Initialization of pIn2 pointer */ - pIn2 = py; - - /* First part of the processing with loop unrolling process 4 data points at a time. - ** a second loop below process for the remaining 1 to 3 samples. */ - - /* Actual convolution process starts here */ - blkCnt = (srcALen + srcBLen - 1U) >> 2; - - while (blkCnt > 0) - { - /* Initialze temporary scratch pointer as scratch1 */ - pScr1 = pScratch1; - - /* Clear Accumlators */ - acc0 = 0; - acc1 = 0; - acc2 = 0; - acc3 = 0; - - /* Read two samples from scratch1 buffer */ - x1 = *__SIMD32(pScr1)++; - - /* Read next two samples from scratch1 buffer */ - x2 = *__SIMD32(pScr1)++; - - tapCnt = (srcBLen) >> 2U; - - while (tapCnt > 0U) - { - -#ifndef UNALIGNED_SUPPORT_DISABLE - - /* Read four samples from smaller buffer */ - y1 = _SIMD32_OFFSET(pIn2); - y2 = _SIMD32_OFFSET(pIn2 + 2U); - - /* multiply and accumlate */ - acc0 = __SMLALD(x1, y1, acc0); - acc2 = __SMLALD(x2, y1, acc2); - - /* pack input data */ -#ifndef ARM_MATH_BIG_ENDIAN - x3 = __PKHBT(x2, x1, 0); -#else - x3 = __PKHBT(x1, x2, 0); -#endif - - /* multiply and accumlate */ - acc1 = __SMLALDX(x3, y1, acc1); - - /* Read next two samples from scratch1 buffer */ - x1 = _SIMD32_OFFSET(pScr1); - - /* multiply and accumlate */ - acc0 = __SMLALD(x2, y2, acc0); - acc2 = __SMLALD(x1, y2, acc2); - - /* pack input data */ -#ifndef ARM_MATH_BIG_ENDIAN - x3 = __PKHBT(x1, x2, 0); -#else - x3 = __PKHBT(x2, x1, 0); -#endif - - acc3 = __SMLALDX(x3, y1, acc3); - acc1 = __SMLALDX(x3, y2, acc1); - - x2 = _SIMD32_OFFSET(pScr1 + 2U); - -#ifndef ARM_MATH_BIG_ENDIAN - x3 = __PKHBT(x2, x1, 0); -#else - x3 = __PKHBT(x1, x2, 0); -#endif - - acc3 = __SMLALDX(x3, y2, acc3); - -#else - - /* Read four samples from smaller buffer */ - a = *pIn2; - b = *(pIn2 + 1); - -#ifndef ARM_MATH_BIG_ENDIAN - y1 = __PKHBT(a, b, 16); -#else - y1 = __PKHBT(b, a, 16); -#endif - - a = *(pIn2 + 2); - b = *(pIn2 + 3); -#ifndef ARM_MATH_BIG_ENDIAN - y2 = __PKHBT(a, b, 16); -#else - y2 = __PKHBT(b, a, 16); -#endif - - acc0 = __SMLALD(x1, y1, acc0); - - acc2 = __SMLALD(x2, y1, acc2); - -#ifndef ARM_MATH_BIG_ENDIAN - x3 = __PKHBT(x2, x1, 0); -#else - x3 = __PKHBT(x1, x2, 0); -#endif - - acc1 = __SMLALDX(x3, y1, acc1); - - a = *pScr1; - b = *(pScr1 + 1); - -#ifndef ARM_MATH_BIG_ENDIAN - x1 = __PKHBT(a, b, 16); -#else - x1 = __PKHBT(b, a, 16); -#endif - - acc0 = __SMLALD(x2, y2, acc0); - - acc2 = __SMLALD(x1, y2, acc2); - -#ifndef ARM_MATH_BIG_ENDIAN - x3 = __PKHBT(x1, x2, 0); -#else - x3 = __PKHBT(x2, x1, 0); -#endif - - acc3 = __SMLALDX(x3, y1, acc3); - - acc1 = __SMLALDX(x3, y2, acc1); - - a = *(pScr1 + 2); - b = *(pScr1 + 3); - -#ifndef ARM_MATH_BIG_ENDIAN - x2 = __PKHBT(a, b, 16); -#else - x2 = __PKHBT(b, a, 16); -#endif - -#ifndef ARM_MATH_BIG_ENDIAN - x3 = __PKHBT(x2, x1, 0); -#else - x3 = __PKHBT(x1, x2, 0); -#endif - - acc3 = __SMLALDX(x3, y2, acc3); - -#endif /* #ifndef UNALIGNED_SUPPORT_DISABLE */ - - pIn2 += 4U; - pScr1 += 4U; - - - /* Decrement the loop counter */ - tapCnt--; - } - - /* Update scratch pointer for remaining samples of smaller length sequence */ - pScr1 -= 4U; - - /* apply same above for remaining samples of smaller length sequence */ - tapCnt = (srcBLen) & 3U; - - while (tapCnt > 0U) - { - - /* accumlate the results */ - acc0 += (*pScr1++ * *pIn2); - acc1 += (*pScr1++ * *pIn2); - acc2 += (*pScr1++ * *pIn2); - acc3 += (*pScr1++ * *pIn2++); - - pScr1 -= 3U; - - /* Decrement the loop counter */ - tapCnt--; - } - - blkCnt--; - - - /* Store the results in the accumulators in the destination buffer. */ - -#ifndef ARM_MATH_BIG_ENDIAN - - *__SIMD32(pOut)++ = - __PKHBT(__SSAT((acc0 >> 15), 16), __SSAT((acc1 >> 15), 16), 16); - - *__SIMD32(pOut)++ = - __PKHBT(__SSAT((acc2 >> 15), 16), __SSAT((acc3 >> 15), 16), 16); - -#else - - *__SIMD32(pOut)++ = - __PKHBT(__SSAT((acc1 >> 15), 16), __SSAT((acc0 >> 15), 16), 16); - - *__SIMD32(pOut)++ = - __PKHBT(__SSAT((acc3 >> 15), 16), __SSAT((acc2 >> 15), 16), 16); - - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - /* Initialization of inputB pointer */ - pIn2 = py; - - pScratch1 += 4U; - - } - - - blkCnt = (srcALen + srcBLen - 1U) & 0x3; - - /* Calculate convolution for remaining samples of Bigger length sequence */ - while (blkCnt > 0) - { - /* Initialze temporary scratch pointer as scratch1 */ - pScr1 = pScratch1; - - /* Clear Accumlators */ - acc0 = 0; - - tapCnt = (srcBLen) >> 1U; - - while (tapCnt > 0U) - { - - /* Read next two samples from scratch1 buffer */ - acc0 += (*pScr1++ * *pIn2++); - acc0 += (*pScr1++ * *pIn2++); - - /* Decrement the loop counter */ - tapCnt--; - } - - tapCnt = (srcBLen) & 1U; - - /* apply same above for remaining samples of smaller length sequence */ - while (tapCnt > 0U) - { - - /* accumlate the results */ - acc0 += (*pScr1++ * *pIn2++); - - /* Decrement the loop counter */ - tapCnt--; - } - - blkCnt--; - - /* The result is in 2.30 format. Convert to 1.15 with saturation. - ** Then store the output in the destination buffer. */ - *pOut++ = (q15_t) (__SSAT((acc0 >> 15), 16)); - - - /* Initialization of inputB pointer */ - pIn2 = py; - - pScratch1 += 1U; - - } - -} - - -/** - * @} end of Conv group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_opt_q7.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_opt_q7.c deleted file mode 100644 index 24d378b..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_opt_q7.c +++ /dev/null @@ -1,423 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_conv_opt_q7.c - * Description: Convolution of Q7 sequences - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupFilters - */ - -/** - * @addtogroup Conv - * @{ - */ - -/** - * @brief Convolution of Q7 sequences. - * @param[in] *pSrcA points to the first input sequence. - * @param[in] srcALen length of the first input sequence. - * @param[in] *pSrcB points to the second input sequence. - * @param[in] srcBLen length of the second input sequence. - * @param[out] *pDst points to the location where the output result is written. Length srcALen+srcBLen-1. - * @param[in] *pScratch1 points to scratch buffer(of type q15_t) of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2. - * @param[in] *pScratch2 points to scratch buffer (of type q15_t) of size min(srcALen, srcBLen). - * @return none. - * - * \par Restrictions - * If the silicon does not support unaligned memory access enable the macro UNALIGNED_SUPPORT_DISABLE - * In this case input, output, scratch1 and scratch2 buffers should be aligned by 32-bit - * - * @details - * Scaling and Overflow Behavior: - * - * \par - * The function is implemented using a 32-bit internal accumulator. - * Both the inputs are represented in 1.7 format and multiplications yield a 2.14 result. - * The 2.14 intermediate results are accumulated in a 32-bit accumulator in 18.14 format. - * This approach provides 17 guard bits and there is no risk of overflow as long as max(srcALen, srcBLen)<131072. - * The 18.14 result is then truncated to 18.7 format by discarding the low 7 bits and then saturated to 1.7 format. - * - */ - -void arm_conv_opt_q7( - q7_t * pSrcA, - uint32_t srcALen, - q7_t * pSrcB, - uint32_t srcBLen, - q7_t * pDst, - q15_t * pScratch1, - q15_t * pScratch2) -{ - - q15_t *pScr2, *pScr1; /* Intermediate pointers for scratch pointers */ - q15_t x4; /* Temporary input variable */ - q7_t *pIn1, *pIn2; /* inputA and inputB pointer */ - uint32_t j, k, blkCnt, tapCnt; /* loop counter */ - q7_t *px; /* Temporary input1 pointer */ - q15_t *py; /* Temporary input2 pointer */ - q31_t acc0, acc1, acc2, acc3; /* Accumulator */ - q31_t x1, x2, x3, y1; /* Temporary input variables */ - q7_t *pOut = pDst; /* output pointer */ - q7_t out0, out1, out2, out3; /* temporary variables */ - - /* The algorithm implementation is based on the lengths of the inputs. */ - /* srcB is always made to slide across srcA. */ - /* So srcBLen is always considered as shorter or equal to srcALen */ - if (srcALen >= srcBLen) - { - /* Initialization of inputA pointer */ - pIn1 = pSrcA; - - /* Initialization of inputB pointer */ - pIn2 = pSrcB; - } - else - { - /* Initialization of inputA pointer */ - pIn1 = pSrcB; - - /* Initialization of inputB pointer */ - pIn2 = pSrcA; - - /* srcBLen is always considered as shorter or equal to srcALen */ - j = srcBLen; - srcBLen = srcALen; - srcALen = j; - } - - /* pointer to take end of scratch2 buffer */ - pScr2 = pScratch2; - - /* points to smaller length sequence */ - px = pIn2 + srcBLen - 1; - - /* Apply loop unrolling and do 4 Copies simultaneously. */ - k = srcBLen >> 2U; - - /* First part of the processing with loop unrolling copies 4 data points at a time. - ** a second loop below copies for the remaining 1 to 3 samples. */ - while (k > 0U) - { - /* copy second buffer in reversal manner */ - x4 = (q15_t) * px--; - *pScr2++ = x4; - x4 = (q15_t) * px--; - *pScr2++ = x4; - x4 = (q15_t) * px--; - *pScr2++ = x4; - x4 = (q15_t) * px--; - *pScr2++ = x4; - - /* Decrement the loop counter */ - k--; - } - - /* If the count is not a multiple of 4, copy remaining samples here. - ** No loop unrolling is used. */ - k = srcBLen % 0x4U; - - while (k > 0U) - { - /* copy second buffer in reversal manner for remaining samples */ - x4 = (q15_t) * px--; - *pScr2++ = x4; - - /* Decrement the loop counter */ - k--; - } - - /* Initialze temporary scratch pointer */ - pScr1 = pScratch1; - - /* Fill (srcBLen - 1U) zeros in scratch buffer */ - arm_fill_q15(0, pScr1, (srcBLen - 1U)); - - /* Update temporary scratch pointer */ - pScr1 += (srcBLen - 1U); - - /* Copy (srcALen) samples in scratch buffer */ - /* Apply loop unrolling and do 4 Copies simultaneously. */ - k = srcALen >> 2U; - - /* First part of the processing with loop unrolling copies 4 data points at a time. - ** a second loop below copies for the remaining 1 to 3 samples. */ - while (k > 0U) - { - /* copy second buffer in reversal manner */ - x4 = (q15_t) * pIn1++; - *pScr1++ = x4; - x4 = (q15_t) * pIn1++; - *pScr1++ = x4; - x4 = (q15_t) * pIn1++; - *pScr1++ = x4; - x4 = (q15_t) * pIn1++; - *pScr1++ = x4; - - /* Decrement the loop counter */ - k--; - } - - /* If the count is not a multiple of 4, copy remaining samples here. - ** No loop unrolling is used. */ - k = srcALen % 0x4U; - - while (k > 0U) - { - /* copy second buffer in reversal manner for remaining samples */ - x4 = (q15_t) * pIn1++; - *pScr1++ = x4; - - /* Decrement the loop counter */ - k--; - } - -#ifndef UNALIGNED_SUPPORT_DISABLE - - /* Fill (srcBLen - 1U) zeros at end of scratch buffer */ - arm_fill_q15(0, pScr1, (srcBLen - 1U)); - - /* Update pointer */ - pScr1 += (srcBLen - 1U); - -#else - - /* Apply loop unrolling and do 4 Copies simultaneously. */ - k = (srcBLen - 1U) >> 2U; - - /* First part of the processing with loop unrolling copies 4 data points at a time. - ** a second loop below copies for the remaining 1 to 3 samples. */ - while (k > 0U) - { - /* copy second buffer in reversal manner */ - *pScr1++ = 0; - *pScr1++ = 0; - *pScr1++ = 0; - *pScr1++ = 0; - - /* Decrement the loop counter */ - k--; - } - - /* If the count is not a multiple of 4, copy remaining samples here. - ** No loop unrolling is used. */ - k = (srcBLen - 1U) % 0x4U; - - while (k > 0U) - { - /* copy second buffer in reversal manner for remaining samples */ - *pScr1++ = 0; - - /* Decrement the loop counter */ - k--; - } - -#endif - - /* Temporary pointer for scratch2 */ - py = pScratch2; - - /* Initialization of pIn2 pointer */ - pIn2 = (q7_t *) py; - - pScr2 = py; - - /* Actual convolution process starts here */ - blkCnt = (srcALen + srcBLen - 1U) >> 2; - - while (blkCnt > 0) - { - /* Initialze temporary scratch pointer as scratch1 */ - pScr1 = pScratch1; - - /* Clear Accumlators */ - acc0 = 0; - acc1 = 0; - acc2 = 0; - acc3 = 0; - - /* Read two samples from scratch1 buffer */ - x1 = *__SIMD32(pScr1)++; - - /* Read next two samples from scratch1 buffer */ - x2 = *__SIMD32(pScr1)++; - - tapCnt = (srcBLen) >> 2U; - - while (tapCnt > 0U) - { - - /* Read four samples from smaller buffer */ - y1 = _SIMD32_OFFSET(pScr2); - - /* multiply and accumlate */ - acc0 = __SMLAD(x1, y1, acc0); - acc2 = __SMLAD(x2, y1, acc2); - - /* pack input data */ -#ifndef ARM_MATH_BIG_ENDIAN - x3 = __PKHBT(x2, x1, 0); -#else - x3 = __PKHBT(x1, x2, 0); -#endif - - /* multiply and accumlate */ - acc1 = __SMLADX(x3, y1, acc1); - - /* Read next two samples from scratch1 buffer */ - x1 = *__SIMD32(pScr1)++; - - /* pack input data */ -#ifndef ARM_MATH_BIG_ENDIAN - x3 = __PKHBT(x1, x2, 0); -#else - x3 = __PKHBT(x2, x1, 0); -#endif - - acc3 = __SMLADX(x3, y1, acc3); - - /* Read four samples from smaller buffer */ - y1 = _SIMD32_OFFSET(pScr2 + 2U); - - acc0 = __SMLAD(x2, y1, acc0); - - acc2 = __SMLAD(x1, y1, acc2); - - acc1 = __SMLADX(x3, y1, acc1); - - x2 = *__SIMD32(pScr1)++; - -#ifndef ARM_MATH_BIG_ENDIAN - x3 = __PKHBT(x2, x1, 0); -#else - x3 = __PKHBT(x1, x2, 0); -#endif - - acc3 = __SMLADX(x3, y1, acc3); - - pScr2 += 4U; - - - /* Decrement the loop counter */ - tapCnt--; - } - - - - /* Update scratch pointer for remaining samples of smaller length sequence */ - pScr1 -= 4U; - - - /* apply same above for remaining samples of smaller length sequence */ - tapCnt = (srcBLen) & 3U; - - while (tapCnt > 0U) - { - - /* accumlate the results */ - acc0 += (*pScr1++ * *pScr2); - acc1 += (*pScr1++ * *pScr2); - acc2 += (*pScr1++ * *pScr2); - acc3 += (*pScr1++ * *pScr2++); - - pScr1 -= 3U; - - /* Decrement the loop counter */ - tapCnt--; - } - - blkCnt--; - - /* Store the result in the accumulator in the destination buffer. */ - out0 = (q7_t) (__SSAT(acc0 >> 7U, 8)); - out1 = (q7_t) (__SSAT(acc1 >> 7U, 8)); - out2 = (q7_t) (__SSAT(acc2 >> 7U, 8)); - out3 = (q7_t) (__SSAT(acc3 >> 7U, 8)); - - *__SIMD32(pOut)++ = __PACKq7(out0, out1, out2, out3); - - /* Initialization of inputB pointer */ - pScr2 = py; - - pScratch1 += 4U; - - } - - - blkCnt = (srcALen + srcBLen - 1U) & 0x3; - - /* Calculate convolution for remaining samples of Bigger length sequence */ - while (blkCnt > 0) - { - /* Initialze temporary scratch pointer as scratch1 */ - pScr1 = pScratch1; - - /* Clear Accumlators */ - acc0 = 0; - - tapCnt = (srcBLen) >> 1U; - - while (tapCnt > 0U) - { - acc0 += (*pScr1++ * *pScr2++); - acc0 += (*pScr1++ * *pScr2++); - - /* Decrement the loop counter */ - tapCnt--; - } - - tapCnt = (srcBLen) & 1U; - - /* apply same above for remaining samples of smaller length sequence */ - while (tapCnt > 0U) - { - - /* accumlate the results */ - acc0 += (*pScr1++ * *pScr2++); - - /* Decrement the loop counter */ - tapCnt--; - } - - blkCnt--; - - /* Store the result in the accumulator in the destination buffer. */ - *pOut++ = (q7_t) (__SSAT(acc0 >> 7U, 8)); - - /* Initialization of inputB pointer */ - pScr2 = py; - - pScratch1 += 1U; - - } - -} - - -/** - * @} end of Conv group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_f32.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_f32.c deleted file mode 100644 index f3b15b4..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_f32.c +++ /dev/null @@ -1,678 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_conv_partial_f32.c - * Description: Partial convolution of floating-point sequences - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupFilters - */ - -/** - * @defgroup PartialConv Partial Convolution - * - * Partial Convolution is equivalent to Convolution except that a subset of the output samples is generated. - * Each function has two additional arguments. - * firstIndex specifies the starting index of the subset of output samples. - * numPoints is the number of output samples to compute. - * The function computes the output in the range - * [firstIndex, ..., firstIndex+numPoints-1]. - * The output array pDst contains numPoints values. - * - * The allowable range of output indices is [0 srcALen+srcBLen-2]. - * If the requested subset does not fall in this range then the functions return ARM_MATH_ARGUMENT_ERROR. - * Otherwise the functions return ARM_MATH_SUCCESS. - * \note Refer arm_conv_f32() for details on fixed point behavior. - * - * - * Fast Versions - * - * \par - * Fast versions are supported for Q31 and Q15 of partial convolution. Cycles for Fast versions are less compared to Q31 and Q15 of partial conv and the design requires - * the input signals should be scaled down to avoid intermediate overflows. - * - * - * Opt Versions - * - * \par - * Opt versions are supported for Q15 and Q7. Design uses internal scratch buffer for getting good optimisation. - * These versions are optimised in cycles and consumes more memory(Scratch memory) compared to Q15 and Q7 versions of partial convolution - */ - -/** - * @addtogroup PartialConv - * @{ - */ - -/** - * @brief Partial convolution of floating-point sequences. - * @param[in] *pSrcA points to the first input sequence. - * @param[in] srcALen length of the first input sequence. - * @param[in] *pSrcB points to the second input sequence. - * @param[in] srcBLen length of the second input sequence. - * @param[out] *pDst points to the location where the output result is written. - * @param[in] firstIndex is the first output sample to start with. - * @param[in] numPoints is the number of output points to be computed. - * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. - */ - -arm_status arm_conv_partial_f32( - float32_t * pSrcA, - uint32_t srcALen, - float32_t * pSrcB, - uint32_t srcBLen, - float32_t * pDst, - uint32_t firstIndex, - uint32_t numPoints) -{ - - -#if defined (ARM_MATH_DSP) - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - float32_t *pIn1 = pSrcA; /* inputA pointer */ - float32_t *pIn2 = pSrcB; /* inputB pointer */ - float32_t *pOut = pDst; /* output pointer */ - float32_t *px; /* Intermediate inputA pointer */ - float32_t *py; /* Intermediate inputB pointer */ - float32_t *pSrc1, *pSrc2; /* Intermediate pointers */ - float32_t sum, acc0, acc1, acc2, acc3; /* Accumulator */ - float32_t x0, x1, x2, x3, c0; /* Temporary variables to hold state and coefficient values */ - uint32_t j, k, count = 0U, blkCnt, check; - int32_t blockSize1, blockSize2, blockSize3; /* loop counters */ - arm_status status; /* status of Partial convolution */ - - - /* Check for range of output samples to be calculated */ - if ((firstIndex + numPoints) > ((srcALen + (srcBLen - 1U)))) - { - /* Set status as ARM_MATH_ARGUMENT_ERROR */ - status = ARM_MATH_ARGUMENT_ERROR; - } - else - { - - /* The algorithm implementation is based on the lengths of the inputs. */ - /* srcB is always made to slide across srcA. */ - /* So srcBLen is always considered as shorter or equal to srcALen */ - if (srcALen >= srcBLen) - { - /* Initialization of inputA pointer */ - pIn1 = pSrcA; - - /* Initialization of inputB pointer */ - pIn2 = pSrcB; - } - else - { - /* Initialization of inputA pointer */ - pIn1 = pSrcB; - - /* Initialization of inputB pointer */ - pIn2 = pSrcA; - - /* srcBLen is always considered as shorter or equal to srcALen */ - j = srcBLen; - srcBLen = srcALen; - srcALen = j; - } - - /* Conditions to check which loopCounter holds - * the first and last indices of the output samples to be calculated. */ - check = firstIndex + numPoints; - blockSize3 = ((int32_t)check > (int32_t)srcALen) ? (int32_t)check - (int32_t)srcALen : 0; - blockSize3 = ((int32_t)firstIndex > (int32_t)srcALen - 1) ? blockSize3 - (int32_t)firstIndex + (int32_t)srcALen : blockSize3; - blockSize1 = ((int32_t) srcBLen - 1) - (int32_t) firstIndex; - blockSize1 = (blockSize1 > 0) ? ((check > (srcBLen - 1U)) ? blockSize1 : - (int32_t) numPoints) : 0; - blockSize2 = ((int32_t) check - blockSize3) - - (blockSize1 + (int32_t) firstIndex); - blockSize2 = (blockSize2 > 0) ? blockSize2 : 0; - - /* conv(x,y) at n = x[n] * y[0] + x[n-1] * y[1] + x[n-2] * y[2] + ...+ x[n-N+1] * y[N -1] */ - /* The function is internally - * divided into three stages according to the number of multiplications that has to be - * taken place between inputA samples and inputB samples. In the first stage of the - * algorithm, the multiplications increase by one for every iteration. - * In the second stage of the algorithm, srcBLen number of multiplications are done. - * In the third stage of the algorithm, the multiplications decrease by one - * for every iteration. */ - - /* Set the output pointer to point to the firstIndex - * of the output sample to be calculated. */ - pOut = pDst + firstIndex; - - /* -------------------------- - * Initializations of stage1 - * -------------------------*/ - - /* sum = x[0] * y[0] - * sum = x[0] * y[1] + x[1] * y[0] - * .... - * sum = x[0] * y[srcBlen - 1] + x[1] * y[srcBlen - 2] +...+ x[srcBLen - 1] * y[0] - */ - - /* In this stage the MAC operations are increased by 1 for every iteration. - The count variable holds the number of MAC operations performed. - Since the partial convolution starts from from firstIndex - Number of Macs to be performed is firstIndex + 1 */ - count = 1U + firstIndex; - - /* Working pointer of inputA */ - px = pIn1; - - /* Working pointer of inputB */ - pSrc1 = pIn2 + firstIndex; - py = pSrc1; - - /* ------------------------ - * Stage1 process - * ----------------------*/ - - /* The first stage starts here */ - while (blockSize1 > 0) - { - /* Accumulator is made zero for every iteration */ - sum = 0.0f; - - /* Apply loop unrolling and compute 4 MACs simultaneously. */ - k = count >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 MACs at a time. - ** a second loop below computes MACs for the remaining 1 to 3 samples. */ - while (k > 0U) - { - /* x[0] * y[srcBLen - 1] */ - sum += *px++ * *py--; - - /* x[1] * y[srcBLen - 2] */ - sum += *px++ * *py--; - - /* x[2] * y[srcBLen - 3] */ - sum += *px++ * *py--; - - /* x[3] * y[srcBLen - 4] */ - sum += *px++ * *py--; - - /* Decrement the loop counter */ - k--; - } - - /* If the count is not a multiple of 4, compute any remaining MACs here. - ** No loop unrolling is used. */ - k = count % 0x4U; - - while (k > 0U) - { - /* Perform the multiply-accumulates */ - sum += *px++ * *py--; - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut++ = sum; - - /* Update the inputA and inputB pointers for next MAC calculation */ - py = ++pSrc1; - px = pIn1; - - /* Increment the MAC count */ - count++; - - /* Decrement the loop counter */ - blockSize1--; - } - - /* -------------------------- - * Initializations of stage2 - * ------------------------*/ - - /* sum = x[0] * y[srcBLen-1] + x[1] * y[srcBLen-2] +...+ x[srcBLen-1] * y[0] - * sum = x[1] * y[srcBLen-1] + x[2] * y[srcBLen-2] +...+ x[srcBLen] * y[0] - * .... - * sum = x[srcALen-srcBLen-2] * y[srcBLen-1] + x[srcALen] * y[srcBLen-2] +...+ x[srcALen-1] * y[0] - */ - - /* Working pointer of inputA */ - if ((int32_t)firstIndex - (int32_t)srcBLen + 1 > 0) - { - px = pIn1 + firstIndex - srcBLen + 1; - } - else - { - px = pIn1; - } - - /* Working pointer of inputB */ - pSrc2 = pIn2 + (srcBLen - 1U); - py = pSrc2; - - /* count is index by which the pointer pIn1 to be incremented */ - count = 0U; - - /* ------------------- - * Stage2 process - * ------------------*/ - - /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed. - * So, to loop unroll over blockSize2, - * srcBLen should be greater than or equal to 4 */ - if (srcBLen >= 4U) - { - /* Loop unroll over blockSize2, by 4 */ - blkCnt = ((uint32_t) blockSize2 >> 2U); - - while (blkCnt > 0U) - { - /* Set all accumulators to zero */ - acc0 = 0.0f; - acc1 = 0.0f; - acc2 = 0.0f; - acc3 = 0.0f; - - /* read x[0], x[1], x[2] samples */ - x0 = *(px++); - x1 = *(px++); - x2 = *(px++); - - /* Apply loop unrolling and compute 4 MACs simultaneously. */ - k = srcBLen >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 MACs at a time. - ** a second loop below computes MACs for the remaining 1 to 3 samples. */ - do - { - /* Read y[srcBLen - 1] sample */ - c0 = *(py--); - - /* Read x[3] sample */ - x3 = *(px++); - - /* Perform the multiply-accumulate */ - /* acc0 += x[0] * y[srcBLen - 1] */ - acc0 += x0 * c0; - - /* acc1 += x[1] * y[srcBLen - 1] */ - acc1 += x1 * c0; - - /* acc2 += x[2] * y[srcBLen - 1] */ - acc2 += x2 * c0; - - /* acc3 += x[3] * y[srcBLen - 1] */ - acc3 += x3 * c0; - - /* Read y[srcBLen - 2] sample */ - c0 = *(py--); - - /* Read x[4] sample */ - x0 = *(px++); - - /* Perform the multiply-accumulate */ - /* acc0 += x[1] * y[srcBLen - 2] */ - acc0 += x1 * c0; - /* acc1 += x[2] * y[srcBLen - 2] */ - acc1 += x2 * c0; - /* acc2 += x[3] * y[srcBLen - 2] */ - acc2 += x3 * c0; - /* acc3 += x[4] * y[srcBLen - 2] */ - acc3 += x0 * c0; - - /* Read y[srcBLen - 3] sample */ - c0 = *(py--); - - /* Read x[5] sample */ - x1 = *(px++); - - /* Perform the multiply-accumulates */ - /* acc0 += x[2] * y[srcBLen - 3] */ - acc0 += x2 * c0; - /* acc1 += x[3] * y[srcBLen - 2] */ - acc1 += x3 * c0; - /* acc2 += x[4] * y[srcBLen - 2] */ - acc2 += x0 * c0; - /* acc3 += x[5] * y[srcBLen - 2] */ - acc3 += x1 * c0; - - /* Read y[srcBLen - 4] sample */ - c0 = *(py--); - - /* Read x[6] sample */ - x2 = *(px++); - - /* Perform the multiply-accumulates */ - /* acc0 += x[3] * y[srcBLen - 4] */ - acc0 += x3 * c0; - /* acc1 += x[4] * y[srcBLen - 4] */ - acc1 += x0 * c0; - /* acc2 += x[5] * y[srcBLen - 4] */ - acc2 += x1 * c0; - /* acc3 += x[6] * y[srcBLen - 4] */ - acc3 += x2 * c0; - - - } while (--k); - - /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. - ** No loop unrolling is used. */ - k = srcBLen % 0x4U; - - while (k > 0U) - { - /* Read y[srcBLen - 5] sample */ - c0 = *(py--); - - /* Read x[7] sample */ - x3 = *(px++); - - /* Perform the multiply-accumulates */ - /* acc0 += x[4] * y[srcBLen - 5] */ - acc0 += x0 * c0; - /* acc1 += x[5] * y[srcBLen - 5] */ - acc1 += x1 * c0; - /* acc2 += x[6] * y[srcBLen - 5] */ - acc2 += x2 * c0; - /* acc3 += x[7] * y[srcBLen - 5] */ - acc3 += x3 * c0; - - /* Reuse the present samples for the next MAC */ - x0 = x1; - x1 = x2; - x2 = x3; - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut++ = acc0; - *pOut++ = acc1; - *pOut++ = acc2; - *pOut++ = acc3; - - /* Increment the pointer pIn1 index, count by 1 */ - count += 4U; - - /* Update the inputA and inputB pointers for next MAC calculation */ - if ((int32_t)firstIndex - (int32_t)srcBLen + 1 > 0) - { - px = pIn1 + firstIndex - srcBLen + 1 + count; - } - else - { - px = pIn1 + count; - } - py = pSrc2; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize2 is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = (uint32_t) blockSize2 % 0x4U; - - while (blkCnt > 0U) - { - /* Accumulator is made zero for every iteration */ - sum = 0.0f; - - /* Apply loop unrolling and compute 4 MACs simultaneously. */ - k = srcBLen >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 MACs at a time. - ** a second loop below computes MACs for the remaining 1 to 3 samples. */ - while (k > 0U) - { - /* Perform the multiply-accumulates */ - sum += *px++ * *py--; - sum += *px++ * *py--; - sum += *px++ * *py--; - sum += *px++ * *py--; - - /* Decrement the loop counter */ - k--; - } - - /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. - ** No loop unrolling is used. */ - k = srcBLen % 0x4U; - - while (k > 0U) - { - /* Perform the multiply-accumulate */ - sum += *px++ * *py--; - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut++ = sum; - - /* Increment the MAC count */ - count++; - - /* Update the inputA and inputB pointers for next MAC calculation */ - if ((int32_t)firstIndex - (int32_t)srcBLen + 1 > 0) - { - px = pIn1 + firstIndex - srcBLen + 1 + count; - } - else - { - px = pIn1 + count; - } - py = pSrc2; - - /* Decrement the loop counter */ - blkCnt--; - } - } - else - { - /* If the srcBLen is not a multiple of 4, - * the blockSize2 loop cannot be unrolled by 4 */ - blkCnt = (uint32_t) blockSize2; - - while (blkCnt > 0U) - { - /* Accumulator is made zero for every iteration */ - sum = 0.0f; - - /* srcBLen number of MACS should be performed */ - k = srcBLen; - - while (k > 0U) - { - /* Perform the multiply-accumulate */ - sum += *px++ * *py--; - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut++ = sum; - - /* Increment the MAC count */ - count++; - - /* Update the inputA and inputB pointers for next MAC calculation */ - if ((int32_t)firstIndex - (int32_t)srcBLen + 1 > 0) - { - px = pIn1 + firstIndex - srcBLen + 1 + count; - } - else - { - px = pIn1 + count; - } - py = pSrc2; - - /* Decrement the loop counter */ - blkCnt--; - } - } - - - /* -------------------------- - * Initializations of stage3 - * -------------------------*/ - - /* sum += x[srcALen-srcBLen+1] * y[srcBLen-1] + x[srcALen-srcBLen+2] * y[srcBLen-2] +...+ x[srcALen-1] * y[1] - * sum += x[srcALen-srcBLen+2] * y[srcBLen-1] + x[srcALen-srcBLen+3] * y[srcBLen-2] +...+ x[srcALen-1] * y[2] - * .... - * sum += x[srcALen-2] * y[srcBLen-1] + x[srcALen-1] * y[srcBLen-2] - * sum += x[srcALen-1] * y[srcBLen-1] - */ - - /* In this stage the MAC operations are decreased by 1 for every iteration. - The count variable holds the number of MAC operations performed */ - count = srcBLen - 1U; - - /* Working pointer of inputA */ - pSrc1 = (pIn1 + srcALen) - (srcBLen - 1U); - px = pSrc1; - - /* Working pointer of inputB */ - pSrc2 = pIn2 + (srcBLen - 1U); - py = pSrc2; - - while (blockSize3 > 0) - { - /* Accumulator is made zero for every iteration */ - sum = 0.0f; - - /* Apply loop unrolling and compute 4 MACs simultaneously. */ - k = count >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 MACs at a time. - ** a second loop below computes MACs for the remaining 1 to 3 samples. */ - while (k > 0U) - { - /* sum += x[srcALen - srcBLen + 1] * y[srcBLen - 1] */ - sum += *px++ * *py--; - - /* sum += x[srcALen - srcBLen + 2] * y[srcBLen - 2] */ - sum += *px++ * *py--; - - /* sum += x[srcALen - srcBLen + 3] * y[srcBLen - 3] */ - sum += *px++ * *py--; - - /* sum += x[srcALen - srcBLen + 4] * y[srcBLen - 4] */ - sum += *px++ * *py--; - - /* Decrement the loop counter */ - k--; - } - - /* If the count is not a multiple of 4, compute any remaining MACs here. - ** No loop unrolling is used. */ - k = count % 0x4U; - - while (k > 0U) - { - /* Perform the multiply-accumulates */ - /* sum += x[srcALen-1] * y[srcBLen-1] */ - sum += *px++ * *py--; - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut++ = sum; - - /* Update the inputA and inputB pointers for next MAC calculation */ - px = ++pSrc1; - py = pSrc2; - - /* Decrement the MAC count */ - count--; - - /* Decrement the loop counter */ - blockSize3--; - - } - - /* set status as ARM_MATH_SUCCESS */ - status = ARM_MATH_SUCCESS; - } - - /* Return to application */ - return (status); - -#else - - /* Run the below code for Cortex-M0 */ - - float32_t *pIn1 = pSrcA; /* inputA pointer */ - float32_t *pIn2 = pSrcB; /* inputB pointer */ - float32_t sum; /* Accumulator */ - uint32_t i, j; /* loop counters */ - arm_status status; /* status of Partial convolution */ - - /* Check for range of output samples to be calculated */ - if ((firstIndex + numPoints) > ((srcALen + (srcBLen - 1U)))) - { - /* Set status as ARM_ARGUMENT_ERROR */ - status = ARM_MATH_ARGUMENT_ERROR; - } - else - { - /* Loop to calculate convolution for output length number of values */ - for (i = firstIndex; i <= (firstIndex + numPoints - 1); i++) - { - /* Initialize sum with zero to carry on MAC operations */ - sum = 0.0f; - - /* Loop to perform MAC operations according to convolution equation */ - for (j = 0U; j <= i; j++) - { - /* Check the array limitations for inputs */ - if ((((i - j) < srcBLen) && (j < srcALen))) - { - /* z[i] += x[i-j] * y[j] */ - sum += pIn1[j] * pIn2[i - j]; - } - } - /* Store the output in the destination buffer */ - pDst[i] = sum; - } - /* set status as ARM_SUCCESS as there are no argument errors */ - status = ARM_MATH_SUCCESS; - } - return (status); - -#endif /* #if defined (ARM_MATH_DSP) */ - -} - -/** - * @} end of PartialConv group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_fast_opt_q15.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_fast_opt_q15.c deleted file mode 100644 index cf2d711..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_fast_opt_q15.c +++ /dev/null @@ -1,756 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_conv_partial_fast_opt_q15.c - * Description: Fast Q15 Partial convolution - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupFilters - */ - -/** - * @addtogroup PartialConv - * @{ - */ - -/** - * @brief Partial convolution of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4. - * @param[in] *pSrcA points to the first input sequence. - * @param[in] srcALen length of the first input sequence. - * @param[in] *pSrcB points to the second input sequence. - * @param[in] srcBLen length of the second input sequence. - * @param[out] *pDst points to the location where the output result is written. - * @param[in] firstIndex is the first output sample to start with. - * @param[in] numPoints is the number of output points to be computed. - * @param[in] *pScratch1 points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2. - * @param[in] *pScratch2 points to scratch buffer of size min(srcALen, srcBLen). - * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. - * - * See arm_conv_partial_q15() for a slower implementation of this function which uses a 64-bit accumulator to avoid wrap around distortion. - * - * \par Restrictions - * If the silicon does not support unaligned memory access enable the macro UNALIGNED_SUPPORT_DISABLE - * In this case input, output, scratch1 and scratch2 buffers should be aligned by 32-bit - * - */ - -#ifndef UNALIGNED_SUPPORT_DISABLE - -arm_status arm_conv_partial_fast_opt_q15( - q15_t * pSrcA, - uint32_t srcALen, - q15_t * pSrcB, - uint32_t srcBLen, - q15_t * pDst, - uint32_t firstIndex, - uint32_t numPoints, - q15_t * pScratch1, - q15_t * pScratch2) -{ - - q15_t *pOut = pDst; /* output pointer */ - q15_t *pScr1 = pScratch1; /* Temporary pointer for scratch1 */ - q15_t *pScr2 = pScratch2; /* Temporary pointer for scratch1 */ - q31_t acc0, acc1, acc2, acc3; /* Accumulator */ - q31_t x1, x2, x3; /* Temporary variables to hold state and coefficient values */ - q31_t y1, y2; /* State variables */ - q15_t *pIn1; /* inputA pointer */ - q15_t *pIn2; /* inputB pointer */ - q15_t *px; /* Intermediate inputA pointer */ - q15_t *py; /* Intermediate inputB pointer */ - uint32_t j, k, blkCnt; /* loop counter */ - arm_status status; - - uint32_t tapCnt; /* loop count */ - - /* Check for range of output samples to be calculated */ - if ((firstIndex + numPoints) > ((srcALen + (srcBLen - 1U)))) - { - /* Set status as ARM_MATH_ARGUMENT_ERROR */ - status = ARM_MATH_ARGUMENT_ERROR; - } - else - { - - /* The algorithm implementation is based on the lengths of the inputs. */ - /* srcB is always made to slide across srcA. */ - /* So srcBLen is always considered as shorter or equal to srcALen */ - if (srcALen >= srcBLen) - { - /* Initialization of inputA pointer */ - pIn1 = pSrcA; - - /* Initialization of inputB pointer */ - pIn2 = pSrcB; - } - else - { - /* Initialization of inputA pointer */ - pIn1 = pSrcB; - - /* Initialization of inputB pointer */ - pIn2 = pSrcA; - - /* srcBLen is always considered as shorter or equal to srcALen */ - j = srcBLen; - srcBLen = srcALen; - srcALen = j; - } - - /* Temporary pointer for scratch2 */ - py = pScratch2; - - /* pointer to take end of scratch2 buffer */ - pScr2 = pScratch2 + srcBLen - 1; - - /* points to smaller length sequence */ - px = pIn2; - - /* Apply loop unrolling and do 4 Copies simultaneously. */ - k = srcBLen >> 2U; - - /* First part of the processing with loop unrolling copies 4 data points at a time. - ** a second loop below copies for the remaining 1 to 3 samples. */ - - /* Copy smaller length input sequence in reverse order into second scratch buffer */ - while (k > 0U) - { - /* copy second buffer in reversal manner */ - *pScr2-- = *px++; - *pScr2-- = *px++; - *pScr2-- = *px++; - *pScr2-- = *px++; - - /* Decrement the loop counter */ - k--; - } - - /* If the count is not a multiple of 4, copy remaining samples here. - ** No loop unrolling is used. */ - k = srcBLen % 0x4U; - - while (k > 0U) - { - /* copy second buffer in reversal manner for remaining samples */ - *pScr2-- = *px++; - - /* Decrement the loop counter */ - k--; - } - - /* Initialze temporary scratch pointer */ - pScr1 = pScratch1; - - /* Assuming scratch1 buffer is aligned by 32-bit */ - /* Fill (srcBLen - 1U) zeros in scratch buffer */ - arm_fill_q15(0, pScr1, (srcBLen - 1U)); - - /* Update temporary scratch pointer */ - pScr1 += (srcBLen - 1U); - - /* Copy bigger length sequence(srcALen) samples in scratch1 buffer */ - - /* Copy (srcALen) samples in scratch buffer */ - arm_copy_q15(pIn1, pScr1, srcALen); - - /* Update pointers */ - pScr1 += srcALen; - - /* Fill (srcBLen - 1U) zeros at end of scratch buffer */ - arm_fill_q15(0, pScr1, (srcBLen - 1U)); - - /* Update pointer */ - pScr1 += (srcBLen - 1U); - - /* Initialization of pIn2 pointer */ - pIn2 = py; - - pScratch1 += firstIndex; - - pOut = pDst + firstIndex; - - /* First part of the processing with loop unrolling process 4 data points at a time. - ** a second loop below process for the remaining 1 to 3 samples. */ - - /* Actual convolution process starts here */ - blkCnt = (numPoints) >> 2; - - while (blkCnt > 0) - { - /* Initialze temporary scratch pointer as scratch1 */ - pScr1 = pScratch1; - - /* Clear Accumlators */ - acc0 = 0; - acc1 = 0; - acc2 = 0; - acc3 = 0; - - /* Read two samples from scratch1 buffer */ - x1 = *__SIMD32(pScr1)++; - - /* Read next two samples from scratch1 buffer */ - x2 = *__SIMD32(pScr1)++; - - tapCnt = (srcBLen) >> 2U; - - while (tapCnt > 0U) - { - - /* Read four samples from smaller buffer */ - y1 = _SIMD32_OFFSET(pIn2); - y2 = _SIMD32_OFFSET(pIn2 + 2U); - - /* multiply and accumlate */ - acc0 = __SMLAD(x1, y1, acc0); - acc2 = __SMLAD(x2, y1, acc2); - - /* pack input data */ -#ifndef ARM_MATH_BIG_ENDIAN - x3 = __PKHBT(x2, x1, 0); -#else - x3 = __PKHBT(x1, x2, 0); -#endif - - /* multiply and accumlate */ - acc1 = __SMLADX(x3, y1, acc1); - - /* Read next two samples from scratch1 buffer */ - x1 = _SIMD32_OFFSET(pScr1); - - /* multiply and accumlate */ - acc0 = __SMLAD(x2, y2, acc0); - - acc2 = __SMLAD(x1, y2, acc2); - - /* pack input data */ -#ifndef ARM_MATH_BIG_ENDIAN - x3 = __PKHBT(x1, x2, 0); -#else - x3 = __PKHBT(x2, x1, 0); -#endif - - acc3 = __SMLADX(x3, y1, acc3); - acc1 = __SMLADX(x3, y2, acc1); - - x2 = _SIMD32_OFFSET(pScr1 + 2U); - -#ifndef ARM_MATH_BIG_ENDIAN - x3 = __PKHBT(x2, x1, 0); -#else - x3 = __PKHBT(x1, x2, 0); -#endif - - acc3 = __SMLADX(x3, y2, acc3); - - /* update scratch pointers */ - pIn2 += 4U; - pScr1 += 4U; - - - /* Decrement the loop counter */ - tapCnt--; - } - - /* Update scratch pointer for remaining samples of smaller length sequence */ - pScr1 -= 4U; - - /* apply same above for remaining samples of smaller length sequence */ - tapCnt = (srcBLen) & 3U; - - while (tapCnt > 0U) - { - - /* accumlate the results */ - acc0 += (*pScr1++ * *pIn2); - acc1 += (*pScr1++ * *pIn2); - acc2 += (*pScr1++ * *pIn2); - acc3 += (*pScr1++ * *pIn2++); - - pScr1 -= 3U; - - /* Decrement the loop counter */ - tapCnt--; - } - - blkCnt--; - - - /* Store the results in the accumulators in the destination buffer. */ - -#ifndef ARM_MATH_BIG_ENDIAN - - *__SIMD32(pOut)++ = - __PKHBT(__SSAT((acc0 >> 15), 16), __SSAT((acc1 >> 15), 16), 16); - *__SIMD32(pOut)++ = - __PKHBT(__SSAT((acc2 >> 15), 16), __SSAT((acc3 >> 15), 16), 16); - -#else - - *__SIMD32(pOut)++ = - __PKHBT(__SSAT((acc1 >> 15), 16), __SSAT((acc0 >> 15), 16), 16); - *__SIMD32(pOut)++ = - __PKHBT(__SSAT((acc3 >> 15), 16), __SSAT((acc2 >> 15), 16), 16); - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - /* Initialization of inputB pointer */ - pIn2 = py; - - pScratch1 += 4U; - - } - - - blkCnt = numPoints & 0x3; - - /* Calculate convolution for remaining samples of Bigger length sequence */ - while (blkCnt > 0) - { - /* Initialze temporary scratch pointer as scratch1 */ - pScr1 = pScratch1; - - /* Clear Accumlators */ - acc0 = 0; - - tapCnt = (srcBLen) >> 1U; - - while (tapCnt > 0U) - { - - /* Read next two samples from scratch1 buffer */ - x1 = *__SIMD32(pScr1)++; - - /* Read two samples from smaller buffer */ - y1 = *__SIMD32(pIn2)++; - - acc0 = __SMLAD(x1, y1, acc0); - - /* Decrement the loop counter */ - tapCnt--; - } - - tapCnt = (srcBLen) & 1U; - - /* apply same above for remaining samples of smaller length sequence */ - while (tapCnt > 0U) - { - - /* accumlate the results */ - acc0 += (*pScr1++ * *pIn2++); - - /* Decrement the loop counter */ - tapCnt--; - } - - blkCnt--; - - /* The result is in 2.30 format. Convert to 1.15 with saturation. - ** Then store the output in the destination buffer. */ - *pOut++ = (q15_t) (__SSAT((acc0 >> 15), 16)); - - /* Initialization of inputB pointer */ - pIn2 = py; - - pScratch1 += 1U; - - } - /* set status as ARM_MATH_SUCCESS */ - status = ARM_MATH_SUCCESS; - } - /* Return to application */ - return (status); -} - -#else - -arm_status arm_conv_partial_fast_opt_q15( - q15_t * pSrcA, - uint32_t srcALen, - q15_t * pSrcB, - uint32_t srcBLen, - q15_t * pDst, - uint32_t firstIndex, - uint32_t numPoints, - q15_t * pScratch1, - q15_t * pScratch2) -{ - - q15_t *pOut = pDst; /* output pointer */ - q15_t *pScr1 = pScratch1; /* Temporary pointer for scratch1 */ - q15_t *pScr2 = pScratch2; /* Temporary pointer for scratch1 */ - q31_t acc0, acc1, acc2, acc3; /* Accumulator */ - q15_t *pIn1; /* inputA pointer */ - q15_t *pIn2; /* inputB pointer */ - q15_t *px; /* Intermediate inputA pointer */ - q15_t *py; /* Intermediate inputB pointer */ - uint32_t j, k, blkCnt; /* loop counter */ - arm_status status; /* Status variable */ - uint32_t tapCnt; /* loop count */ - q15_t x10, x11, x20, x21; /* Temporary variables to hold srcA buffer */ - q15_t y10, y11; /* Temporary variables to hold srcB buffer */ - - - /* Check for range of output samples to be calculated */ - if ((firstIndex + numPoints) > ((srcALen + (srcBLen - 1U)))) - { - /* Set status as ARM_MATH_ARGUMENT_ERROR */ - status = ARM_MATH_ARGUMENT_ERROR; - } - else - { - - /* The algorithm implementation is based on the lengths of the inputs. */ - /* srcB is always made to slide across srcA. */ - /* So srcBLen is always considered as shorter or equal to srcALen */ - if (srcALen >= srcBLen) - { - /* Initialization of inputA pointer */ - pIn1 = pSrcA; - - /* Initialization of inputB pointer */ - pIn2 = pSrcB; - } - else - { - /* Initialization of inputA pointer */ - pIn1 = pSrcB; - - /* Initialization of inputB pointer */ - pIn2 = pSrcA; - - /* srcBLen is always considered as shorter or equal to srcALen */ - j = srcBLen; - srcBLen = srcALen; - srcALen = j; - } - - /* Temporary pointer for scratch2 */ - py = pScratch2; - - /* pointer to take end of scratch2 buffer */ - pScr2 = pScratch2 + srcBLen - 1; - - /* points to smaller length sequence */ - px = pIn2; - - /* Apply loop unrolling and do 4 Copies simultaneously. */ - k = srcBLen >> 2U; - - /* First part of the processing with loop unrolling copies 4 data points at a time. - ** a second loop below copies for the remaining 1 to 3 samples. */ - while (k > 0U) - { - /* copy second buffer in reversal manner */ - *pScr2-- = *px++; - *pScr2-- = *px++; - *pScr2-- = *px++; - *pScr2-- = *px++; - - /* Decrement the loop counter */ - k--; - } - - /* If the count is not a multiple of 4, copy remaining samples here. - ** No loop unrolling is used. */ - k = srcBLen % 0x4U; - - while (k > 0U) - { - /* copy second buffer in reversal manner for remaining samples */ - *pScr2-- = *px++; - - /* Decrement the loop counter */ - k--; - } - - /* Initialze temporary scratch pointer */ - pScr1 = pScratch1; - - /* Fill (srcBLen - 1U) zeros in scratch buffer */ - arm_fill_q15(0, pScr1, (srcBLen - 1U)); - - /* Update temporary scratch pointer */ - pScr1 += (srcBLen - 1U); - - /* Copy bigger length sequence(srcALen) samples in scratch1 buffer */ - - - /* Apply loop unrolling and do 4 Copies simultaneously. */ - k = srcALen >> 2U; - - /* First part of the processing with loop unrolling copies 4 data points at a time. - ** a second loop below copies for the remaining 1 to 3 samples. */ - while (k > 0U) - { - /* copy second buffer in reversal manner */ - *pScr1++ = *pIn1++; - *pScr1++ = *pIn1++; - *pScr1++ = *pIn1++; - *pScr1++ = *pIn1++; - - /* Decrement the loop counter */ - k--; - } - - /* If the count is not a multiple of 4, copy remaining samples here. - ** No loop unrolling is used. */ - k = srcALen % 0x4U; - - while (k > 0U) - { - /* copy second buffer in reversal manner for remaining samples */ - *pScr1++ = *pIn1++; - - /* Decrement the loop counter */ - k--; - } - - - /* Apply loop unrolling and do 4 Copies simultaneously. */ - k = (srcBLen - 1U) >> 2U; - - /* First part of the processing with loop unrolling copies 4 data points at a time. - ** a second loop below copies for the remaining 1 to 3 samples. */ - while (k > 0U) - { - /* copy second buffer in reversal manner */ - *pScr1++ = 0; - *pScr1++ = 0; - *pScr1++ = 0; - *pScr1++ = 0; - - /* Decrement the loop counter */ - k--; - } - - /* If the count is not a multiple of 4, copy remaining samples here. - ** No loop unrolling is used. */ - k = (srcBLen - 1U) % 0x4U; - - while (k > 0U) - { - /* copy second buffer in reversal manner for remaining samples */ - *pScr1++ = 0; - - /* Decrement the loop counter */ - k--; - } - - - /* Initialization of pIn2 pointer */ - pIn2 = py; - - pScratch1 += firstIndex; - - pOut = pDst + firstIndex; - - /* Actual convolution process starts here */ - blkCnt = (numPoints) >> 2; - - while (blkCnt > 0) - { - /* Initialze temporary scratch pointer as scratch1 */ - pScr1 = pScratch1; - - /* Clear Accumlators */ - acc0 = 0; - acc1 = 0; - acc2 = 0; - acc3 = 0; - - /* Read two samples from scratch1 buffer */ - x10 = *pScr1++; - x11 = *pScr1++; - - /* Read next two samples from scratch1 buffer */ - x20 = *pScr1++; - x21 = *pScr1++; - - tapCnt = (srcBLen) >> 2U; - - while (tapCnt > 0U) - { - - /* Read two samples from smaller buffer */ - y10 = *pIn2; - y11 = *(pIn2 + 1U); - - /* multiply and accumlate */ - acc0 += (q31_t) x10 *y10; - acc0 += (q31_t) x11 *y11; - acc2 += (q31_t) x20 *y10; - acc2 += (q31_t) x21 *y11; - - /* multiply and accumlate */ - acc1 += (q31_t) x11 *y10; - acc1 += (q31_t) x20 *y11; - - /* Read next two samples from scratch1 buffer */ - x10 = *pScr1; - x11 = *(pScr1 + 1U); - - /* multiply and accumlate */ - acc3 += (q31_t) x21 *y10; - acc3 += (q31_t) x10 *y11; - - /* Read next two samples from scratch2 buffer */ - y10 = *(pIn2 + 2U); - y11 = *(pIn2 + 3U); - - /* multiply and accumlate */ - acc0 += (q31_t) x20 *y10; - acc0 += (q31_t) x21 *y11; - acc2 += (q31_t) x10 *y10; - acc2 += (q31_t) x11 *y11; - acc1 += (q31_t) x21 *y10; - acc1 += (q31_t) x10 *y11; - - /* Read next two samples from scratch1 buffer */ - x20 = *(pScr1 + 2); - x21 = *(pScr1 + 3); - - /* multiply and accumlate */ - acc3 += (q31_t) x11 *y10; - acc3 += (q31_t) x20 *y11; - - /* update scratch pointers */ - pIn2 += 4U; - pScr1 += 4U; - - /* Decrement the loop counter */ - tapCnt--; - } - - /* Update scratch pointer for remaining samples of smaller length sequence */ - pScr1 -= 4U; - - /* apply same above for remaining samples of smaller length sequence */ - tapCnt = (srcBLen) & 3U; - - while (tapCnt > 0U) - { - /* accumlate the results */ - acc0 += (*pScr1++ * *pIn2); - acc1 += (*pScr1++ * *pIn2); - acc2 += (*pScr1++ * *pIn2); - acc3 += (*pScr1++ * *pIn2++); - - pScr1 -= 3U; - - /* Decrement the loop counter */ - tapCnt--; - } - - blkCnt--; - - - /* Store the results in the accumulators in the destination buffer. */ - *pOut++ = __SSAT((acc0 >> 15), 16); - *pOut++ = __SSAT((acc1 >> 15), 16); - *pOut++ = __SSAT((acc2 >> 15), 16); - *pOut++ = __SSAT((acc3 >> 15), 16); - - /* Initialization of inputB pointer */ - pIn2 = py; - - pScratch1 += 4U; - - } - - - blkCnt = numPoints & 0x3; - - /* Calculate convolution for remaining samples of Bigger length sequence */ - while (blkCnt > 0) - { - /* Initialze temporary scratch pointer as scratch1 */ - pScr1 = pScratch1; - - /* Clear Accumlators */ - acc0 = 0; - - tapCnt = (srcBLen) >> 1U; - - while (tapCnt > 0U) - { - - /* Read next two samples from scratch1 buffer */ - x10 = *pScr1++; - x11 = *pScr1++; - - /* Read two samples from smaller buffer */ - y10 = *pIn2++; - y11 = *pIn2++; - - /* multiply and accumlate */ - acc0 += (q31_t) x10 *y10; - acc0 += (q31_t) x11 *y11; - - /* Decrement the loop counter */ - tapCnt--; - } - - tapCnt = (srcBLen) & 1U; - - /* apply same above for remaining samples of smaller length sequence */ - while (tapCnt > 0U) - { - - /* accumlate the results */ - acc0 += (*pScr1++ * *pIn2++); - - /* Decrement the loop counter */ - tapCnt--; - } - - blkCnt--; - - /* Store the result in the accumulator in the destination buffer. */ - *pOut++ = (q15_t) (__SSAT((acc0 >> 15), 16)); - - /* Initialization of inputB pointer */ - pIn2 = py; - - pScratch1 += 1U; - - } - - /* set status as ARM_MATH_SUCCESS */ - status = ARM_MATH_SUCCESS; - - } - - /* Return to application */ - return (status); -} - -#endif /* #ifndef UNALIGNED_SUPPORT_DISABLE */ - -/** - * @} end of PartialConv group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_fast_q15.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_fast_q15.c deleted file mode 100644 index bd43a98..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_fast_q15.c +++ /dev/null @@ -1,1494 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_conv_partial_fast_q15.c - * Description: Fast Q15 Partial convolution - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupFilters - */ - -/** - * @addtogroup PartialConv - * @{ - */ - -/** - * @brief Partial convolution of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4. - * @param[in] *pSrcA points to the first input sequence. - * @param[in] srcALen length of the first input sequence. - * @param[in] *pSrcB points to the second input sequence. - * @param[in] srcBLen length of the second input sequence. - * @param[out] *pDst points to the location where the output result is written. - * @param[in] firstIndex is the first output sample to start with. - * @param[in] numPoints is the number of output points to be computed. - * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. - * - * See arm_conv_partial_q15() for a slower implementation of this function which uses a 64-bit accumulator to avoid wrap around distortion. - */ - - -arm_status arm_conv_partial_fast_q15( - q15_t * pSrcA, - uint32_t srcALen, - q15_t * pSrcB, - uint32_t srcBLen, - q15_t * pDst, - uint32_t firstIndex, - uint32_t numPoints) -{ -#ifndef UNALIGNED_SUPPORT_DISABLE - - q15_t *pIn1; /* inputA pointer */ - q15_t *pIn2; /* inputB pointer */ - q15_t *pOut = pDst; /* output pointer */ - q31_t sum, acc0, acc1, acc2, acc3; /* Accumulator */ - q15_t *px; /* Intermediate inputA pointer */ - q15_t *py; /* Intermediate inputB pointer */ - q15_t *pSrc1, *pSrc2; /* Intermediate pointers */ - q31_t x0, x1, x2, x3, c0; - uint32_t j, k, count, check, blkCnt; - int32_t blockSize1, blockSize2, blockSize3; /* loop counters */ - arm_status status; /* status of Partial convolution */ - - /* Check for range of output samples to be calculated */ - if ((firstIndex + numPoints) > ((srcALen + (srcBLen - 1U)))) - { - /* Set status as ARM_MATH_ARGUMENT_ERROR */ - status = ARM_MATH_ARGUMENT_ERROR; - } - else - { - - /* The algorithm implementation is based on the lengths of the inputs. */ - /* srcB is always made to slide across srcA. */ - /* So srcBLen is always considered as shorter or equal to srcALen */ - if (srcALen >=srcBLen) - { - /* Initialization of inputA pointer */ - pIn1 = pSrcA; - - /* Initialization of inputB pointer */ - pIn2 = pSrcB; - } - else - { - /* Initialization of inputA pointer */ - pIn1 = pSrcB; - - /* Initialization of inputB pointer */ - pIn2 = pSrcA; - - /* srcBLen is always considered as shorter or equal to srcALen */ - j = srcBLen; - srcBLen = srcALen; - srcALen = j; - } - - /* Conditions to check which loopCounter holds - * the first and last indices of the output samples to be calculated. */ - check = firstIndex + numPoints; - blockSize3 = ((int32_t)check > (int32_t)srcALen) ? (int32_t)check - (int32_t)srcALen : 0; - blockSize3 = ((int32_t)firstIndex > (int32_t)srcALen - 1) ? blockSize3 - (int32_t)firstIndex + (int32_t)srcALen : blockSize3; - blockSize1 = (((int32_t) srcBLen - 1) - (int32_t) firstIndex); - blockSize1 = (blockSize1 > 0) ? ((check > (srcBLen - 1U)) ? blockSize1 : - (int32_t) numPoints) : 0; - blockSize2 = (int32_t) check - ((blockSize3 + blockSize1) + - (int32_t) firstIndex); - blockSize2 = (blockSize2 > 0) ? blockSize2 : 0; - - /* conv(x,y) at n = x[n] * y[0] + x[n-1] * y[1] + x[n-2] * y[2] + ...+ x[n-N+1] * y[N -1] */ - /* The function is internally - * divided into three stages according to the number of multiplications that has to be - * taken place between inputA samples and inputB samples. In the first stage of the - * algorithm, the multiplications increase by one for every iteration. - * In the second stage of the algorithm, srcBLen number of multiplications are done. - * In the third stage of the algorithm, the multiplications decrease by one - * for every iteration. */ - - /* Set the output pointer to point to the firstIndex - * of the output sample to be calculated. */ - pOut = pDst + firstIndex; - - /* -------------------------- - * Initializations of stage1 - * -------------------------*/ - - /* sum = x[0] * y[0] - * sum = x[0] * y[1] + x[1] * y[0] - * .... - * sum = x[0] * y[srcBlen - 1] + x[1] * y[srcBlen - 2] +...+ x[srcBLen - 1] * y[0] - */ - - /* In this stage the MAC operations are increased by 1 for every iteration. - The count variable holds the number of MAC operations performed. - Since the partial convolution starts from firstIndex - Number of Macs to be performed is firstIndex + 1 */ - count = 1U + firstIndex; - - /* Working pointer of inputA */ - px = pIn1; - - /* Working pointer of inputB */ - pSrc2 = pIn2 + firstIndex; - py = pSrc2; - - /* ------------------------ - * Stage1 process - * ----------------------*/ - - /* For loop unrolling by 4, this stage is divided into two. */ - /* First part of this stage computes the MAC operations less than 4 */ - /* Second part of this stage computes the MAC operations greater than or equal to 4 */ - - /* The first part of the stage starts here */ - while ((count < 4U) && (blockSize1 > 0)) - { - /* Accumulator is made zero for every iteration */ - sum = 0; - - /* Loop over number of MAC operations between - * inputA samples and inputB samples */ - k = count; - - while (k > 0U) - { - /* Perform the multiply-accumulates */ - sum = __SMLAD(*px++, *py--, sum); - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut++ = (q15_t) (sum >> 15); - - /* Update the inputA and inputB pointers for next MAC calculation */ - py = ++pSrc2; - px = pIn1; - - /* Increment the MAC count */ - count++; - - /* Decrement the loop counter */ - blockSize1--; - } - - /* The second part of the stage starts here */ - /* The internal loop, over count, is unrolled by 4 */ - /* To, read the last two inputB samples using SIMD: - * y[srcBLen] and y[srcBLen-1] coefficients, py is decremented by 1 */ - py = py - 1; - - while (blockSize1 > 0) - { - /* Accumulator is made zero for every iteration */ - sum = 0; - - /* Apply loop unrolling and compute 4 MACs simultaneously. */ - k = count >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 MACs at a time. - ** a second loop below computes MACs for the remaining 1 to 3 samples. */ - while (k > 0U) - { - /* Perform the multiply-accumulates */ - /* x[0], x[1] are multiplied with y[srcBLen - 1], y[srcBLen - 2] respectively */ - sum = __SMLADX(*__SIMD32(px)++, *__SIMD32(py)--, sum); - /* x[2], x[3] are multiplied with y[srcBLen - 3], y[srcBLen - 4] respectively */ - sum = __SMLADX(*__SIMD32(px)++, *__SIMD32(py)--, sum); - - /* Decrement the loop counter */ - k--; - } - - /* For the next MAC operations, the pointer py is used without SIMD - * So, py is incremented by 1 */ - py = py + 1U; - - /* If the count is not a multiple of 4, compute any remaining MACs here. - ** No loop unrolling is used. */ - k = count % 0x4U; - - while (k > 0U) - { - /* Perform the multiply-accumulates */ - sum = __SMLAD(*px++, *py--, sum); - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut++ = (q15_t) (sum >> 15); - - /* Update the inputA and inputB pointers for next MAC calculation */ - py = ++pSrc2 - 1U; - px = pIn1; - - /* Increment the MAC count */ - count++; - - /* Decrement the loop counter */ - blockSize1--; - } - - /* -------------------------- - * Initializations of stage2 - * ------------------------*/ - - /* sum = x[0] * y[srcBLen-1] + x[1] * y[srcBLen-2] +...+ x[srcBLen-1] * y[0] - * sum = x[1] * y[srcBLen-1] + x[2] * y[srcBLen-2] +...+ x[srcBLen] * y[0] - * .... - * sum = x[srcALen-srcBLen-2] * y[srcBLen-1] + x[srcALen] * y[srcBLen-2] +...+ x[srcALen-1] * y[0] - */ - - /* Working pointer of inputA */ - if ((int32_t)firstIndex - (int32_t)srcBLen + 1 > 0) - { - px = pIn1 + firstIndex - srcBLen + 1; - } - else - { - px = pIn1; - } - - /* Working pointer of inputB */ - pSrc2 = pIn2 + (srcBLen - 1U); - py = pSrc2; - - /* count is the index by which the pointer pIn1 to be incremented */ - count = 0U; - - - /* -------------------- - * Stage2 process - * -------------------*/ - - /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed. - * So, to loop unroll over blockSize2, - * srcBLen should be greater than or equal to 4 */ - if (srcBLen >= 4U) - { - /* Loop unroll over blockSize2, by 4 */ - blkCnt = ((uint32_t) blockSize2 >> 2U); - - while (blkCnt > 0U) - { - py = py - 1U; - - /* Set all accumulators to zero */ - acc0 = 0; - acc1 = 0; - acc2 = 0; - acc3 = 0; - - - /* read x[0], x[1] samples */ - x0 = *__SIMD32(px); - /* read x[1], x[2] samples */ - x1 = _SIMD32_OFFSET(px+1); - px+= 2U; - - - /* Apply loop unrolling and compute 4 MACs simultaneously. */ - k = srcBLen >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 MACs at a time. - ** a second loop below computes MACs for the remaining 1 to 3 samples. */ - do - { - /* Read the last two inputB samples using SIMD: - * y[srcBLen - 1] and y[srcBLen - 2] */ - c0 = *__SIMD32(py)--; - - /* acc0 += x[0] * y[srcBLen - 1] + x[1] * y[srcBLen - 2] */ - acc0 = __SMLADX(x0, c0, acc0); - - /* acc1 += x[1] * y[srcBLen - 1] + x[2] * y[srcBLen - 2] */ - acc1 = __SMLADX(x1, c0, acc1); - - /* Read x[2], x[3] */ - x2 = *__SIMD32(px); - - /* Read x[3], x[4] */ - x3 = _SIMD32_OFFSET(px+1); - - /* acc2 += x[2] * y[srcBLen - 1] + x[3] * y[srcBLen - 2] */ - acc2 = __SMLADX(x2, c0, acc2); - - /* acc3 += x[3] * y[srcBLen - 1] + x[4] * y[srcBLen - 2] */ - acc3 = __SMLADX(x3, c0, acc3); - - /* Read y[srcBLen - 3] and y[srcBLen - 4] */ - c0 = *__SIMD32(py)--; - - /* acc0 += x[2] * y[srcBLen - 3] + x[3] * y[srcBLen - 4] */ - acc0 = __SMLADX(x2, c0, acc0); - - /* acc1 += x[3] * y[srcBLen - 3] + x[4] * y[srcBLen - 4] */ - acc1 = __SMLADX(x3, c0, acc1); - - /* Read x[4], x[5] */ - x0 = _SIMD32_OFFSET(px+2); - - /* Read x[5], x[6] */ - x1 = _SIMD32_OFFSET(px+3); - px += 4U; - - /* acc2 += x[4] * y[srcBLen - 3] + x[5] * y[srcBLen - 4] */ - acc2 = __SMLADX(x0, c0, acc2); - - /* acc3 += x[5] * y[srcBLen - 3] + x[6] * y[srcBLen - 4] */ - acc3 = __SMLADX(x1, c0, acc3); - - } while (--k); - - /* For the next MAC operations, SIMD is not used - * So, the 16 bit pointer if inputB, py is updated */ - - /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. - ** No loop unrolling is used. */ - k = srcBLen % 0x4U; - - if (k == 1U) - { - /* Read y[srcBLen - 5] */ - c0 = *(py+1); -#ifdef ARM_MATH_BIG_ENDIAN - - c0 = c0 << 16U; - -#else - - c0 = c0 & 0x0000FFFF; - -#endif /* #ifdef ARM_MATH_BIG_ENDIAN */ - - /* Read x[7] */ - x3 = *__SIMD32(px); - px++; - - /* Perform the multiply-accumulates */ - acc0 = __SMLAD(x0, c0, acc0); - acc1 = __SMLAD(x1, c0, acc1); - acc2 = __SMLADX(x1, c0, acc2); - acc3 = __SMLADX(x3, c0, acc3); - } - - if (k == 2U) - { - /* Read y[srcBLen - 5], y[srcBLen - 6] */ - c0 = _SIMD32_OFFSET(py); - - /* Read x[7], x[8] */ - x3 = *__SIMD32(px); - - /* Read x[9] */ - x2 = _SIMD32_OFFSET(px+1); - px += 2U; - - /* Perform the multiply-accumulates */ - acc0 = __SMLADX(x0, c0, acc0); - acc1 = __SMLADX(x1, c0, acc1); - acc2 = __SMLADX(x3, c0, acc2); - acc3 = __SMLADX(x2, c0, acc3); - } - - if (k == 3U) - { - /* Read y[srcBLen - 5], y[srcBLen - 6] */ - c0 = _SIMD32_OFFSET(py); - - /* Read x[7], x[8] */ - x3 = *__SIMD32(px); - - /* Read x[9] */ - x2 = _SIMD32_OFFSET(px+1); - - /* Perform the multiply-accumulates */ - acc0 = __SMLADX(x0, c0, acc0); - acc1 = __SMLADX(x1, c0, acc1); - acc2 = __SMLADX(x3, c0, acc2); - acc3 = __SMLADX(x2, c0, acc3); - - c0 = *(py-1); -#ifdef ARM_MATH_BIG_ENDIAN - - c0 = c0 << 16U; -#else - - c0 = c0 & 0x0000FFFF; -#endif /* #ifdef ARM_MATH_BIG_ENDIAN */ - - /* Read x[10] */ - x3 = _SIMD32_OFFSET(px+2); - px += 3U; - - /* Perform the multiply-accumulates */ - acc0 = __SMLADX(x1, c0, acc0); - acc1 = __SMLAD(x2, c0, acc1); - acc2 = __SMLADX(x2, c0, acc2); - acc3 = __SMLADX(x3, c0, acc3); - } - - /* Store the results in the accumulators in the destination buffer. */ -#ifndef ARM_MATH_BIG_ENDIAN - - *__SIMD32(pOut)++ = __PKHBT(acc0 >> 15, acc1 >> 15, 16); - *__SIMD32(pOut)++ = __PKHBT(acc2 >> 15, acc3 >> 15, 16); - -#else - - *__SIMD32(pOut)++ = __PKHBT(acc1 >> 15, acc0 >> 15, 16); - *__SIMD32(pOut)++ = __PKHBT(acc3 >> 15, acc2 >> 15, 16); - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - /* Increment the pointer pIn1 index, count by 4 */ - count += 4U; - - /* Update the inputA and inputB pointers for next MAC calculation */ - px = pIn1 + count; - py = pSrc2; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize2 is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = (uint32_t) blockSize2 % 0x4U; - - while (blkCnt > 0U) - { - /* Accumulator is made zero for every iteration */ - sum = 0; - - /* Apply loop unrolling and compute 4 MACs simultaneously. */ - k = srcBLen >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 MACs at a time. - ** a second loop below computes MACs for the remaining 1 to 3 samples. */ - while (k > 0U) - { - /* Perform the multiply-accumulates */ - sum += ((q31_t) * px++ * *py--); - sum += ((q31_t) * px++ * *py--); - sum += ((q31_t) * px++ * *py--); - sum += ((q31_t) * px++ * *py--); - - /* Decrement the loop counter */ - k--; - } - - /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. - ** No loop unrolling is used. */ - k = srcBLen % 0x4U; - - while (k > 0U) - { - /* Perform the multiply-accumulates */ - sum += ((q31_t) * px++ * *py--); - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut++ = (q15_t) (sum >> 15); - - /* Increment the pointer pIn1 index, count by 1 */ - count++; - - /* Update the inputA and inputB pointers for next MAC calculation */ - if ((int32_t)firstIndex - (int32_t)srcBLen + 1 > 0) - { - px = pIn1 + firstIndex - srcBLen + 1 + count; - } - else - { - px = pIn1 + count; - } - py = pSrc2; - - /* Decrement the loop counter */ - blkCnt--; - } - } - else - { - /* If the srcBLen is not a multiple of 4, - * the blockSize2 loop cannot be unrolled by 4 */ - blkCnt = (uint32_t) blockSize2; - - while (blkCnt > 0U) - { - /* Accumulator is made zero for every iteration */ - sum = 0; - - /* srcBLen number of MACS should be performed */ - k = srcBLen; - - while (k > 0U) - { - /* Perform the multiply-accumulate */ - sum += ((q31_t) * px++ * *py--); - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut++ = (q15_t) (sum >> 15); - - /* Increment the MAC count */ - count++; - - /* Update the inputA and inputB pointers for next MAC calculation */ - if ((int32_t)firstIndex - (int32_t)srcBLen + 1 > 0) - { - px = pIn1 + firstIndex - srcBLen + 1 + count; - } - else - { - px = pIn1 + count; - } - py = pSrc2; - - /* Decrement the loop counter */ - blkCnt--; - } - } - - - /* -------------------------- - * Initializations of stage3 - * -------------------------*/ - - /* sum += x[srcALen-srcBLen+1] * y[srcBLen-1] + x[srcALen-srcBLen+2] * y[srcBLen-2] +...+ x[srcALen-1] * y[1] - * sum += x[srcALen-srcBLen+2] * y[srcBLen-1] + x[srcALen-srcBLen+3] * y[srcBLen-2] +...+ x[srcALen-1] * y[2] - * .... - * sum += x[srcALen-2] * y[srcBLen-1] + x[srcALen-1] * y[srcBLen-2] - * sum += x[srcALen-1] * y[srcBLen-1] - */ - - /* In this stage the MAC operations are decreased by 1 for every iteration. - The count variable holds the number of MAC operations performed */ - count = srcBLen - 1U; - - /* Working pointer of inputA */ - pSrc1 = (pIn1 + srcALen) - (srcBLen - 1U); - px = pSrc1; - - /* Working pointer of inputB */ - pSrc2 = pIn2 + (srcBLen - 1U); - pIn2 = pSrc2 - 1U; - py = pIn2; - - /* ------------------- - * Stage3 process - * ------------------*/ - - /* For loop unrolling by 4, this stage is divided into two. */ - /* First part of this stage computes the MAC operations greater than 4 */ - /* Second part of this stage computes the MAC operations less than or equal to 4 */ - - /* The first part of the stage starts here */ - j = count >> 2U; - - while ((j > 0U) && (blockSize3 > 0)) - { - /* Accumulator is made zero for every iteration */ - sum = 0; - - /* Apply loop unrolling and compute 4 MACs simultaneously. */ - k = count >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 MACs at a time. - ** a second loop below computes MACs for the remaining 1 to 3 samples. */ - while (k > 0U) - { - /* x[srcALen - srcBLen + 1], x[srcALen - srcBLen + 2] are multiplied - * with y[srcBLen - 1], y[srcBLen - 2] respectively */ - sum = __SMLADX(*__SIMD32(px)++, *__SIMD32(py)--, sum); - /* x[srcALen - srcBLen + 3], x[srcALen - srcBLen + 4] are multiplied - * with y[srcBLen - 3], y[srcBLen - 4] respectively */ - sum = __SMLADX(*__SIMD32(px)++, *__SIMD32(py)--, sum); - - /* Decrement the loop counter */ - k--; - } - - /* For the next MAC operations, the pointer py is used without SIMD - * So, py is incremented by 1 */ - py = py + 1U; - - /* If the count is not a multiple of 4, compute any remaining MACs here. - ** No loop unrolling is used. */ - k = count % 0x4U; - - while (k > 0U) - { - /* sum += x[srcALen - srcBLen + 5] * y[srcBLen - 5] */ - sum = __SMLAD(*px++, *py--, sum); - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut++ = (q15_t) (sum >> 15); - - /* Update the inputA and inputB pointers for next MAC calculation */ - px = ++pSrc1; - py = pIn2; - - /* Decrement the MAC count */ - count--; - - /* Decrement the loop counter */ - blockSize3--; - - j--; - } - - /* The second part of the stage starts here */ - /* SIMD is not used for the next MAC operations, - * so pointer py is updated to read only one sample at a time */ - py = py + 1U; - - while (blockSize3 > 0) - { - /* Accumulator is made zero for every iteration */ - sum = 0; - - /* Apply loop unrolling and compute 4 MACs simultaneously. */ - k = count; - - while (k > 0U) - { - /* Perform the multiply-accumulates */ - /* sum += x[srcALen-1] * y[srcBLen-1] */ - sum = __SMLAD(*px++, *py--, sum); - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut++ = (q15_t) (sum >> 15); - - /* Update the inputA and inputB pointers for next MAC calculation */ - px = ++pSrc1; - py = pSrc2; - - /* Decrement the MAC count */ - count--; - - /* Decrement the loop counter */ - blockSize3--; - } - - /* set status as ARM_MATH_SUCCESS */ - status = ARM_MATH_SUCCESS; - } - - /* Return to application */ - return (status); - -#else - - q15_t *pIn1; /* inputA pointer */ - q15_t *pIn2; /* inputB pointer */ - q15_t *pOut = pDst; /* output pointer */ - q31_t sum, acc0, acc1, acc2, acc3; /* Accumulator */ - q15_t *px; /* Intermediate inputA pointer */ - q15_t *py; /* Intermediate inputB pointer */ - q15_t *pSrc1, *pSrc2; /* Intermediate pointers */ - q31_t x0, x1, x2, x3, c0; - uint32_t j, k, count, check, blkCnt; - int32_t blockSize1, blockSize2, blockSize3; /* loop counters */ - arm_status status; /* status of Partial convolution */ - q15_t a, b; - - /* Check for range of output samples to be calculated */ - if ((firstIndex + numPoints) > ((srcALen + (srcBLen - 1U)))) - { - /* Set status as ARM_MATH_ARGUMENT_ERROR */ - status = ARM_MATH_ARGUMENT_ERROR; - } - else - { - - /* The algorithm implementation is based on the lengths of the inputs. */ - /* srcB is always made to slide across srcA. */ - /* So srcBLen is always considered as shorter or equal to srcALen */ - if (srcALen >=srcBLen) - { - /* Initialization of inputA pointer */ - pIn1 = pSrcA; - - /* Initialization of inputB pointer */ - pIn2 = pSrcB; - } - else - { - /* Initialization of inputA pointer */ - pIn1 = pSrcB; - - /* Initialization of inputB pointer */ - pIn2 = pSrcA; - - /* srcBLen is always considered as shorter or equal to srcALen */ - j = srcBLen; - srcBLen = srcALen; - srcALen = j; - } - - /* Conditions to check which loopCounter holds - * the first and last indices of the output samples to be calculated. */ - check = firstIndex + numPoints; - blockSize3 = ((int32_t)check > (int32_t)srcALen) ? (int32_t)check - (int32_t)srcALen : 0; - blockSize3 = ((int32_t)firstIndex > (int32_t)srcALen - 1) ? blockSize3 - (int32_t)firstIndex + (int32_t)srcALen : blockSize3; - blockSize1 = ((int32_t) srcBLen - 1) - (int32_t) firstIndex; - blockSize1 = (blockSize1 > 0) ? ((check > (srcBLen - 1U)) ? blockSize1 : - (int32_t) numPoints) : 0; - blockSize2 = ((int32_t) check - blockSize3) - - (blockSize1 + (int32_t) firstIndex); - blockSize2 = (blockSize2 > 0) ? blockSize2 : 0; - - /* conv(x,y) at n = x[n] * y[0] + x[n-1] * y[1] + x[n-2] * y[2] + ...+ x[n-N+1] * y[N -1] */ - /* The function is internally - * divided into three stages according to the number of multiplications that has to be - * taken place between inputA samples and inputB samples. In the first stage of the - * algorithm, the multiplications increase by one for every iteration. - * In the second stage of the algorithm, srcBLen number of multiplications are done. - * In the third stage of the algorithm, the multiplications decrease by one - * for every iteration. */ - - /* Set the output pointer to point to the firstIndex - * of the output sample to be calculated. */ - pOut = pDst + firstIndex; - - /* -------------------------- - * Initializations of stage1 - * -------------------------*/ - - /* sum = x[0] * y[0] - * sum = x[0] * y[1] + x[1] * y[0] - * .... - * sum = x[0] * y[srcBlen - 1] + x[1] * y[srcBlen - 2] +...+ x[srcBLen - 1] * y[0] - */ - - /* In this stage the MAC operations are increased by 1 for every iteration. - The count variable holds the number of MAC operations performed. - Since the partial convolution starts from firstIndex - Number of Macs to be performed is firstIndex + 1 */ - count = 1U + firstIndex; - - /* Working pointer of inputA */ - px = pIn1; - - /* Working pointer of inputB */ - pSrc2 = pIn2 + firstIndex; - py = pSrc2; - - /* ------------------------ - * Stage1 process - * ----------------------*/ - - /* For loop unrolling by 4, this stage is divided into two. */ - /* First part of this stage computes the MAC operations less than 4 */ - /* Second part of this stage computes the MAC operations greater than or equal to 4 */ - - /* The first part of the stage starts here */ - while ((count < 4U) && (blockSize1 > 0)) - { - /* Accumulator is made zero for every iteration */ - sum = 0; - - /* Loop over number of MAC operations between - * inputA samples and inputB samples */ - k = count; - - while (k > 0U) - { - /* Perform the multiply-accumulates */ - sum += ((q31_t) * px++ * *py--); - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut++ = (q15_t) (sum >> 15); - - /* Update the inputA and inputB pointers for next MAC calculation */ - py = ++pSrc2; - px = pIn1; - - /* Increment the MAC count */ - count++; - - /* Decrement the loop counter */ - blockSize1--; - } - - /* The second part of the stage starts here */ - /* The internal loop, over count, is unrolled by 4 */ - /* To, read the last two inputB samples using SIMD: - * y[srcBLen] and y[srcBLen-1] coefficients, py is decremented by 1 */ - py = py - 1; - - while (blockSize1 > 0) - { - /* Accumulator is made zero for every iteration */ - sum = 0; - - /* Apply loop unrolling and compute 4 MACs simultaneously. */ - k = count >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 MACs at a time. - ** a second loop below computes MACs for the remaining 1 to 3 samples. */ - py++; - - while (k > 0U) - { - /* Perform the multiply-accumulates */ - sum += ((q31_t) * px++ * *py--); - sum += ((q31_t) * px++ * *py--); - sum += ((q31_t) * px++ * *py--); - sum += ((q31_t) * px++ * *py--); - - /* Decrement the loop counter */ - k--; - } - - /* If the count is not a multiple of 4, compute any remaining MACs here. - ** No loop unrolling is used. */ - k = count % 0x4U; - - while (k > 0U) - { - /* Perform the multiply-accumulates */ - sum += ((q31_t) * px++ * *py--); - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut++ = (q15_t) (sum >> 15); - - /* Update the inputA and inputB pointers for next MAC calculation */ - py = ++pSrc2 - 1U; - px = pIn1; - - /* Increment the MAC count */ - count++; - - /* Decrement the loop counter */ - blockSize1--; - } - - /* -------------------------- - * Initializations of stage2 - * ------------------------*/ - - /* sum = x[0] * y[srcBLen-1] + x[1] * y[srcBLen-2] +...+ x[srcBLen-1] * y[0] - * sum = x[1] * y[srcBLen-1] + x[2] * y[srcBLen-2] +...+ x[srcBLen] * y[0] - * .... - * sum = x[srcALen-srcBLen-2] * y[srcBLen-1] + x[srcALen] * y[srcBLen-2] +...+ x[srcALen-1] * y[0] - */ - - /* Working pointer of inputA */ - if ((int32_t)firstIndex - (int32_t)srcBLen + 1 > 0) - { - px = pIn1 + firstIndex - srcBLen + 1; - } - else - { - px = pIn1; - } - - /* Working pointer of inputB */ - pSrc2 = pIn2 + (srcBLen - 1U); - py = pSrc2; - - /* count is the index by which the pointer pIn1 to be incremented */ - count = 0U; - - - /* -------------------- - * Stage2 process - * -------------------*/ - - /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed. - * So, to loop unroll over blockSize2, - * srcBLen should be greater than or equal to 4 */ - if (srcBLen >= 4U) - { - /* Loop unroll over blockSize2, by 4 */ - blkCnt = ((uint32_t) blockSize2 >> 2U); - - while (blkCnt > 0U) - { - py = py - 1U; - - /* Set all accumulators to zero */ - acc0 = 0; - acc1 = 0; - acc2 = 0; - acc3 = 0; - - /* read x[0], x[1] samples */ - a = *px++; - b = *px++; - -#ifndef ARM_MATH_BIG_ENDIAN - - x0 = __PKHBT(a, b, 16); - a = *px; - x1 = __PKHBT(b, a, 16); - -#else - - x0 = __PKHBT(b, a, 16); - a = *px; - x1 = __PKHBT(a, b, 16); - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - /* Apply loop unrolling and compute 4 MACs simultaneously. */ - k = srcBLen >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 MACs at a time. - ** a second loop below computes MACs for the remaining 1 to 3 samples. */ - do - { - /* Read the last two inputB samples using SIMD: - * y[srcBLen - 1] and y[srcBLen - 2] */ - a = *py; - b = *(py+1); - py -= 2; - -#ifndef ARM_MATH_BIG_ENDIAN - - c0 = __PKHBT(a, b, 16); - -#else - - c0 = __PKHBT(b, a, 16);; - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - /* acc0 += x[0] * y[srcBLen - 1] + x[1] * y[srcBLen - 2] */ - acc0 = __SMLADX(x0, c0, acc0); - - /* acc1 += x[1] * y[srcBLen - 1] + x[2] * y[srcBLen - 2] */ - acc1 = __SMLADX(x1, c0, acc1); - - a = *px; - b = *(px + 1); - -#ifndef ARM_MATH_BIG_ENDIAN - - x2 = __PKHBT(a, b, 16); - a = *(px + 2); - x3 = __PKHBT(b, a, 16); - -#else - - x2 = __PKHBT(b, a, 16); - a = *(px + 2); - x3 = __PKHBT(a, b, 16); - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - /* acc2 += x[2] * y[srcBLen - 1] + x[3] * y[srcBLen - 2] */ - acc2 = __SMLADX(x2, c0, acc2); - - /* acc3 += x[3] * y[srcBLen - 1] + x[4] * y[srcBLen - 2] */ - acc3 = __SMLADX(x3, c0, acc3); - - /* Read y[srcBLen - 3] and y[srcBLen - 4] */ - a = *py; - b = *(py+1); - py -= 2; - -#ifndef ARM_MATH_BIG_ENDIAN - - c0 = __PKHBT(a, b, 16); - -#else - - c0 = __PKHBT(b, a, 16);; - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - /* acc0 += x[2] * y[srcBLen - 3] + x[3] * y[srcBLen - 4] */ - acc0 = __SMLADX(x2, c0, acc0); - - /* acc1 += x[3] * y[srcBLen - 3] + x[4] * y[srcBLen - 4] */ - acc1 = __SMLADX(x3, c0, acc1); - - /* Read x[4], x[5], x[6] */ - a = *(px + 2); - b = *(px + 3); - -#ifndef ARM_MATH_BIG_ENDIAN - - x0 = __PKHBT(a, b, 16); - a = *(px + 4); - x1 = __PKHBT(b, a, 16); - -#else - - x0 = __PKHBT(b, a, 16); - a = *(px + 4); - x1 = __PKHBT(a, b, 16); - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - px += 4U; - - /* acc2 += x[4] * y[srcBLen - 3] + x[5] * y[srcBLen - 4] */ - acc2 = __SMLADX(x0, c0, acc2); - - /* acc3 += x[5] * y[srcBLen - 3] + x[6] * y[srcBLen - 4] */ - acc3 = __SMLADX(x1, c0, acc3); - - } while (--k); - - /* For the next MAC operations, SIMD is not used - * So, the 16 bit pointer if inputB, py is updated */ - - /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. - ** No loop unrolling is used. */ - k = srcBLen % 0x4U; - - if (k == 1U) - { - /* Read y[srcBLen - 5] */ - c0 = *(py+1); - -#ifdef ARM_MATH_BIG_ENDIAN - - c0 = c0 << 16U; - -#else - - c0 = c0 & 0x0000FFFF; - -#endif /* #ifdef ARM_MATH_BIG_ENDIAN */ - - /* Read x[7] */ - a = *px; - b = *(px+1); - px++; - -#ifndef ARM_MATH_BIG_ENDIAN - - x3 = __PKHBT(a, b, 16); - -#else - - x3 = __PKHBT(b, a, 16);; - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - - /* Perform the multiply-accumulates */ - acc0 = __SMLAD(x0, c0, acc0); - acc1 = __SMLAD(x1, c0, acc1); - acc2 = __SMLADX(x1, c0, acc2); - acc3 = __SMLADX(x3, c0, acc3); - } - - if (k == 2U) - { - /* Read y[srcBLen - 5], y[srcBLen - 6] */ - a = *py; - b = *(py+1); - -#ifndef ARM_MATH_BIG_ENDIAN - - c0 = __PKHBT(a, b, 16); - -#else - - c0 = __PKHBT(b, a, 16);; - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - /* Read x[7], x[8], x[9] */ - a = *px; - b = *(px + 1); - -#ifndef ARM_MATH_BIG_ENDIAN - - x3 = __PKHBT(a, b, 16); - a = *(px + 2); - x2 = __PKHBT(b, a, 16); - -#else - - x3 = __PKHBT(b, a, 16); - a = *(px + 2); - x2 = __PKHBT(a, b, 16); - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - px += 2U; - - /* Perform the multiply-accumulates */ - acc0 = __SMLADX(x0, c0, acc0); - acc1 = __SMLADX(x1, c0, acc1); - acc2 = __SMLADX(x3, c0, acc2); - acc3 = __SMLADX(x2, c0, acc3); - } - - if (k == 3U) - { - /* Read y[srcBLen - 5], y[srcBLen - 6] */ - a = *py; - b = *(py+1); - -#ifndef ARM_MATH_BIG_ENDIAN - - c0 = __PKHBT(a, b, 16); - -#else - - c0 = __PKHBT(b, a, 16);; - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - /* Read x[7], x[8], x[9] */ - a = *px; - b = *(px + 1); - -#ifndef ARM_MATH_BIG_ENDIAN - - x3 = __PKHBT(a, b, 16); - a = *(px + 2); - x2 = __PKHBT(b, a, 16); - -#else - - x3 = __PKHBT(b, a, 16); - a = *(px + 2); - x2 = __PKHBT(a, b, 16); - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - /* Perform the multiply-accumulates */ - acc0 = __SMLADX(x0, c0, acc0); - acc1 = __SMLADX(x1, c0, acc1); - acc2 = __SMLADX(x3, c0, acc2); - acc3 = __SMLADX(x2, c0, acc3); - - /* Read y[srcBLen - 7] */ - c0 = *(py-1); -#ifdef ARM_MATH_BIG_ENDIAN - - c0 = c0 << 16U; -#else - - c0 = c0 & 0x0000FFFF; -#endif /* #ifdef ARM_MATH_BIG_ENDIAN */ - - /* Read x[10] */ - a = *(px+2); - b = *(px+3); - -#ifndef ARM_MATH_BIG_ENDIAN - - x3 = __PKHBT(a, b, 16); - -#else - - x3 = __PKHBT(b, a, 16);; - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - px += 3U; - - /* Perform the multiply-accumulates */ - acc0 = __SMLADX(x1, c0, acc0); - acc1 = __SMLAD(x2, c0, acc1); - acc2 = __SMLADX(x2, c0, acc2); - acc3 = __SMLADX(x3, c0, acc3); - } - - /* Store the results in the accumulators in the destination buffer. */ - *pOut++ = (q15_t)(acc0 >> 15); - *pOut++ = (q15_t)(acc1 >> 15); - *pOut++ = (q15_t)(acc2 >> 15); - *pOut++ = (q15_t)(acc3 >> 15); - - /* Increment the pointer pIn1 index, count by 4 */ - count += 4U; - - /* Update the inputA and inputB pointers for next MAC calculation */ - px = pIn1 + count; - py = pSrc2; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize2 is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = (uint32_t) blockSize2 % 0x4U; - - while (blkCnt > 0U) - { - /* Accumulator is made zero for every iteration */ - sum = 0; - - /* Apply loop unrolling and compute 4 MACs simultaneously. */ - k = srcBLen >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 MACs at a time. - ** a second loop below computes MACs for the remaining 1 to 3 samples. */ - while (k > 0U) - { - /* Perform the multiply-accumulates */ - sum += ((q31_t) * px++ * *py--); - sum += ((q31_t) * px++ * *py--); - sum += ((q31_t) * px++ * *py--); - sum += ((q31_t) * px++ * *py--); - - /* Decrement the loop counter */ - k--; - } - - /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. - ** No loop unrolling is used. */ - k = srcBLen % 0x4U; - - while (k > 0U) - { - /* Perform the multiply-accumulates */ - sum += ((q31_t) * px++ * *py--); - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut++ = (q15_t) (sum >> 15); - - /* Increment the pointer pIn1 index, count by 1 */ - count++; - - /* Update the inputA and inputB pointers for next MAC calculation */ - px = pIn1 + count; - py = pSrc2; - - /* Decrement the loop counter */ - blkCnt--; - } - } - else - { - /* If the srcBLen is not a multiple of 4, - * the blockSize2 loop cannot be unrolled by 4 */ - blkCnt = (uint32_t) blockSize2; - - while (blkCnt > 0U) - { - /* Accumulator is made zero for every iteration */ - sum = 0; - - /* srcBLen number of MACS should be performed */ - k = srcBLen; - - while (k > 0U) - { - /* Perform the multiply-accumulate */ - sum += ((q31_t) * px++ * *py--); - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut++ = (q15_t) (sum >> 15); - - /* Increment the MAC count */ - count++; - - /* Update the inputA and inputB pointers for next MAC calculation */ - px = pIn1 + count; - py = pSrc2; - - /* Decrement the loop counter */ - blkCnt--; - } - } - - - /* -------------------------- - * Initializations of stage3 - * -------------------------*/ - - /* sum += x[srcALen-srcBLen+1] * y[srcBLen-1] + x[srcALen-srcBLen+2] * y[srcBLen-2] +...+ x[srcALen-1] * y[1] - * sum += x[srcALen-srcBLen+2] * y[srcBLen-1] + x[srcALen-srcBLen+3] * y[srcBLen-2] +...+ x[srcALen-1] * y[2] - * .... - * sum += x[srcALen-2] * y[srcBLen-1] + x[srcALen-1] * y[srcBLen-2] - * sum += x[srcALen-1] * y[srcBLen-1] - */ - - /* In this stage the MAC operations are decreased by 1 for every iteration. - The count variable holds the number of MAC operations performed */ - count = srcBLen - 1U; - - /* Working pointer of inputA */ - pSrc1 = (pIn1 + srcALen) - (srcBLen - 1U); - px = pSrc1; - - /* Working pointer of inputB */ - pSrc2 = pIn2 + (srcBLen - 1U); - pIn2 = pSrc2 - 1U; - py = pIn2; - - /* ------------------- - * Stage3 process - * ------------------*/ - - /* For loop unrolling by 4, this stage is divided into two. */ - /* First part of this stage computes the MAC operations greater than 4 */ - /* Second part of this stage computes the MAC operations less than or equal to 4 */ - - /* The first part of the stage starts here */ - j = count >> 2U; - - while ((j > 0U) && (blockSize3 > 0)) - { - /* Accumulator is made zero for every iteration */ - sum = 0; - - /* Apply loop unrolling and compute 4 MACs simultaneously. */ - k = count >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 MACs at a time. - ** a second loop below computes MACs for the remaining 1 to 3 samples. */ - py++; - - while (k > 0U) - { - /* Perform the multiply-accumulates */ - sum += ((q31_t) * px++ * *py--); - sum += ((q31_t) * px++ * *py--); - sum += ((q31_t) * px++ * *py--); - sum += ((q31_t) * px++ * *py--); - /* Decrement the loop counter */ - k--; - } - - - /* If the count is not a multiple of 4, compute any remaining MACs here. - ** No loop unrolling is used. */ - k = count % 0x4U; - - while (k > 0U) - { - /* Perform the multiply-accumulates */ - sum += ((q31_t) * px++ * *py--); - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut++ = (q15_t) (sum >> 15); - - /* Update the inputA and inputB pointers for next MAC calculation */ - px = ++pSrc1; - py = pIn2; - - /* Decrement the MAC count */ - count--; - - /* Decrement the loop counter */ - blockSize3--; - - j--; - } - - /* The second part of the stage starts here */ - /* SIMD is not used for the next MAC operations, - * so pointer py is updated to read only one sample at a time */ - py = py + 1U; - - while (blockSize3 > 0) - { - /* Accumulator is made zero for every iteration */ - sum = 0; - - /* Apply loop unrolling and compute 4 MACs simultaneously. */ - k = count; - - while (k > 0U) - { - /* Perform the multiply-accumulates */ - /* sum += x[srcALen-1] * y[srcBLen-1] */ - sum += ((q31_t) * px++ * *py--); - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut++ = (q15_t) (sum >> 15); - - /* Update the inputA and inputB pointers for next MAC calculation */ - px = ++pSrc1; - py = pSrc2; - - /* Decrement the MAC count */ - count--; - - /* Decrement the loop counter */ - blockSize3--; - } - - /* set status as ARM_MATH_SUCCESS */ - status = ARM_MATH_SUCCESS; - } - - /* Return to application */ - return (status); - -#endif /* #ifndef UNALIGNED_SUPPORT_DISABLE */ -} - -/** - * @} end of PartialConv group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_fast_q31.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_fast_q31.c deleted file mode 100644 index af3724d..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_fast_q31.c +++ /dev/null @@ -1,620 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_conv_partial_fast_q31.c - * Description: Fast Q31 Partial convolution - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupFilters - */ - -/** - * @addtogroup PartialConv - * @{ - */ - -/** - * @brief Partial convolution of Q31 sequences (fast version) for Cortex-M3 and Cortex-M4. - * @param[in] *pSrcA points to the first input sequence. - * @param[in] srcALen length of the first input sequence. - * @param[in] *pSrcB points to the second input sequence. - * @param[in] srcBLen length of the second input sequence. - * @param[out] *pDst points to the location where the output result is written. - * @param[in] firstIndex is the first output sample to start with. - * @param[in] numPoints is the number of output points to be computed. - * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. - * - * \par - * See arm_conv_partial_q31() for a slower implementation of this function which uses a 64-bit accumulator to provide higher precision. - */ - -arm_status arm_conv_partial_fast_q31( - q31_t * pSrcA, - uint32_t srcALen, - q31_t * pSrcB, - uint32_t srcBLen, - q31_t * pDst, - uint32_t firstIndex, - uint32_t numPoints) -{ - q31_t *pIn1; /* inputA pointer */ - q31_t *pIn2; /* inputB pointer */ - q31_t *pOut = pDst; /* output pointer */ - q31_t *px; /* Intermediate inputA pointer */ - q31_t *py; /* Intermediate inputB pointer */ - q31_t *pSrc1, *pSrc2; /* Intermediate pointers */ - q31_t sum, acc0, acc1, acc2, acc3; /* Accumulators */ - q31_t x0, x1, x2, x3, c0; - uint32_t j, k, count, check, blkCnt; - int32_t blockSize1, blockSize2, blockSize3; /* loop counters */ - arm_status status; /* status of Partial convolution */ - - - /* Check for range of output samples to be calculated */ - if ((firstIndex + numPoints) > ((srcALen + (srcBLen - 1U)))) - { - /* Set status as ARM_MATH_ARGUMENT_ERROR */ - status = ARM_MATH_ARGUMENT_ERROR; - } - else - { - - /* The algorithm implementation is based on the lengths of the inputs. */ - /* srcB is always made to slide across srcA. */ - /* So srcBLen is always considered as shorter or equal to srcALen */ - if (srcALen >= srcBLen) - { - /* Initialization of inputA pointer */ - pIn1 = pSrcA; - - /* Initialization of inputB pointer */ - pIn2 = pSrcB; - } - else - { - /* Initialization of inputA pointer */ - pIn1 = pSrcB; - - /* Initialization of inputB pointer */ - pIn2 = pSrcA; - - /* srcBLen is always considered as shorter or equal to srcALen */ - j = srcBLen; - srcBLen = srcALen; - srcALen = j; - } - - /* Conditions to check which loopCounter holds - * the first and last indices of the output samples to be calculated. */ - check = firstIndex + numPoints; - blockSize3 = ((int32_t)check > (int32_t)srcALen) ? (int32_t)check - (int32_t)srcALen : 0; - blockSize3 = ((int32_t)firstIndex > (int32_t)srcALen - 1) ? blockSize3 - (int32_t)firstIndex + (int32_t)srcALen : blockSize3; - blockSize1 = (((int32_t) srcBLen - 1) - (int32_t) firstIndex); - blockSize1 = (blockSize1 > 0) ? ((check > (srcBLen - 1U)) ? blockSize1 : - (int32_t) numPoints) : 0; - blockSize2 = (int32_t) check - ((blockSize3 + blockSize1) + - (int32_t) firstIndex); - blockSize2 = (blockSize2 > 0) ? blockSize2 : 0; - - /* conv(x,y) at n = x[n] * y[0] + x[n-1] * y[1] + x[n-2] * y[2] + ...+ x[n-N+1] * y[N -1] */ - /* The function is internally - * divided into three stages according to the number of multiplications that has to be - * taken place between inputA samples and inputB samples. In the first stage of the - * algorithm, the multiplications increase by one for every iteration. - * In the second stage of the algorithm, srcBLen number of multiplications are done. - * In the third stage of the algorithm, the multiplications decrease by one - * for every iteration. */ - - /* Set the output pointer to point to the firstIndex - * of the output sample to be calculated. */ - pOut = pDst + firstIndex; - - /* -------------------------- - * Initializations of stage1 - * -------------------------*/ - - /* sum = x[0] * y[0] - * sum = x[0] * y[1] + x[1] * y[0] - * .... - * sum = x[0] * y[srcBlen - 1] + x[1] * y[srcBlen - 2] +...+ x[srcBLen - 1] * y[0] - */ - - /* In this stage the MAC operations are increased by 1 for every iteration. - The count variable holds the number of MAC operations performed. - Since the partial convolution starts from firstIndex - Number of Macs to be performed is firstIndex + 1 */ - count = 1U + firstIndex; - - /* Working pointer of inputA */ - px = pIn1; - - /* Working pointer of inputB */ - pSrc2 = pIn2 + firstIndex; - py = pSrc2; - - /* ------------------------ - * Stage1 process - * ----------------------*/ - - /* The first loop starts here */ - while (blockSize1 > 0) - { - /* Accumulator is made zero for every iteration */ - sum = 0; - - /* Apply loop unrolling and compute 4 MACs simultaneously. */ - k = count >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 MACs at a time. - ** a second loop below computes MACs for the remaining 1 to 3 samples. */ - while (k > 0U) - { - /* x[0] * y[srcBLen - 1] */ - sum = (q31_t) ((((q63_t) sum << 32) + - ((q63_t) * px++ * (*py--))) >> 32); - - /* x[1] * y[srcBLen - 2] */ - sum = (q31_t) ((((q63_t) sum << 32) + - ((q63_t) * px++ * (*py--))) >> 32); - - /* x[2] * y[srcBLen - 3] */ - sum = (q31_t) ((((q63_t) sum << 32) + - ((q63_t) * px++ * (*py--))) >> 32); - - /* x[3] * y[srcBLen - 4] */ - sum = (q31_t) ((((q63_t) sum << 32) + - ((q63_t) * px++ * (*py--))) >> 32); - - /* Decrement the loop counter */ - k--; - } - - /* If the count is not a multiple of 4, compute any remaining MACs here. - ** No loop unrolling is used. */ - k = count % 0x4U; - - while (k > 0U) - { - /* Perform the multiply-accumulates */ - sum = (q31_t) ((((q63_t) sum << 32) + - ((q63_t) * px++ * (*py--))) >> 32); - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut++ = sum << 1; - - /* Update the inputA and inputB pointers for next MAC calculation */ - py = ++pSrc2; - px = pIn1; - - /* Increment the MAC count */ - count++; - - /* Decrement the loop counter */ - blockSize1--; - } - - /* -------------------------- - * Initializations of stage2 - * ------------------------*/ - - /* sum = x[0] * y[srcBLen-1] + x[1] * y[srcBLen-2] +...+ x[srcBLen-1] * y[0] - * sum = x[1] * y[srcBLen-1] + x[2] * y[srcBLen-2] +...+ x[srcBLen] * y[0] - * .... - * sum = x[srcALen-srcBLen-2] * y[srcBLen-1] + x[srcALen] * y[srcBLen-2] +...+ x[srcALen-1] * y[0] - */ - - /* Working pointer of inputA */ - if ((int32_t)firstIndex - (int32_t)srcBLen + 1 > 0) - { - px = pIn1 + firstIndex - srcBLen + 1; - } - else - { - px = pIn1; - } - - /* Working pointer of inputB */ - pSrc2 = pIn2 + (srcBLen - 1U); - py = pSrc2; - - /* count is index by which the pointer pIn1 to be incremented */ - count = 0U; - - /* ------------------- - * Stage2 process - * ------------------*/ - - /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed. - * So, to loop unroll over blockSize2, - * srcBLen should be greater than or equal to 4 */ - if (srcBLen >= 4U) - { - /* Loop unroll over blockSize2 */ - blkCnt = ((uint32_t) blockSize2 >> 2U); - - while (blkCnt > 0U) - { - /* Set all accumulators to zero */ - acc0 = 0; - acc1 = 0; - acc2 = 0; - acc3 = 0; - - /* read x[0], x[1], x[2] samples */ - x0 = *(px++); - x1 = *(px++); - x2 = *(px++); - - /* Apply loop unrolling and compute 4 MACs simultaneously. */ - k = srcBLen >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 MACs at a time. - ** a second loop below computes MACs for the remaining 1 to 3 samples. */ - do - { - /* Read y[srcBLen - 1] sample */ - c0 = *(py--); - - /* Read x[3] sample */ - x3 = *(px++); - - /* Perform the multiply-accumulate */ - /* acc0 += x[0] * y[srcBLen - 1] */ - acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x0 * c0)) >> 32); - - /* acc1 += x[1] * y[srcBLen - 1] */ - acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x1 * c0)) >> 32); - - /* acc2 += x[2] * y[srcBLen - 1] */ - acc2 = (q31_t) ((((q63_t) acc2 << 32) + ((q63_t) x2 * c0)) >> 32); - - /* acc3 += x[3] * y[srcBLen - 1] */ - acc3 = (q31_t) ((((q63_t) acc3 << 32) + ((q63_t) x3 * c0)) >> 32); - - /* Read y[srcBLen - 2] sample */ - c0 = *(py--); - - /* Read x[4] sample */ - x0 = *(px++); - - /* Perform the multiply-accumulate */ - /* acc0 += x[1] * y[srcBLen - 2] */ - acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x1 * c0)) >> 32); - /* acc1 += x[2] * y[srcBLen - 2] */ - acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x2 * c0)) >> 32); - /* acc2 += x[3] * y[srcBLen - 2] */ - acc2 = (q31_t) ((((q63_t) acc2 << 32) + ((q63_t) x3 * c0)) >> 32); - /* acc3 += x[4] * y[srcBLen - 2] */ - acc3 = (q31_t) ((((q63_t) acc3 << 32) + ((q63_t) x0 * c0)) >> 32); - - /* Read y[srcBLen - 3] sample */ - c0 = *(py--); - - /* Read x[5] sample */ - x1 = *(px++); - - /* Perform the multiply-accumulates */ - /* acc0 += x[2] * y[srcBLen - 3] */ - acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x2 * c0)) >> 32); - /* acc1 += x[3] * y[srcBLen - 2] */ - acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x3 * c0)) >> 32); - /* acc2 += x[4] * y[srcBLen - 2] */ - acc2 = (q31_t) ((((q63_t) acc2 << 32) + ((q63_t) x0 * c0)) >> 32); - /* acc3 += x[5] * y[srcBLen - 2] */ - acc3 = (q31_t) ((((q63_t) acc3 << 32) + ((q63_t) x1 * c0)) >> 32); - - /* Read y[srcBLen - 4] sample */ - c0 = *(py--); - - /* Read x[6] sample */ - x2 = *(px++); - - /* Perform the multiply-accumulates */ - /* acc0 += x[3] * y[srcBLen - 4] */ - acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x3 * c0)) >> 32); - /* acc1 += x[4] * y[srcBLen - 4] */ - acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x0 * c0)) >> 32); - /* acc2 += x[5] * y[srcBLen - 4] */ - acc2 = (q31_t) ((((q63_t) acc2 << 32) + ((q63_t) x1 * c0)) >> 32); - /* acc3 += x[6] * y[srcBLen - 4] */ - acc3 = (q31_t) ((((q63_t) acc3 << 32) + ((q63_t) x2 * c0)) >> 32); - - - } while (--k); - - /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. - ** No loop unrolling is used. */ - k = srcBLen % 0x4U; - - while (k > 0U) - { - /* Read y[srcBLen - 5] sample */ - c0 = *(py--); - - /* Read x[7] sample */ - x3 = *(px++); - - /* Perform the multiply-accumulates */ - /* acc0 += x[4] * y[srcBLen - 5] */ - acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x0 * c0)) >> 32); - /* acc1 += x[5] * y[srcBLen - 5] */ - acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x1 * c0)) >> 32); - /* acc2 += x[6] * y[srcBLen - 5] */ - acc2 = (q31_t) ((((q63_t) acc2 << 32) + ((q63_t) x2 * c0)) >> 32); - /* acc3 += x[7] * y[srcBLen - 5] */ - acc3 = (q31_t) ((((q63_t) acc3 << 32) + ((q63_t) x3 * c0)) >> 32); - - /* Reuse the present samples for the next MAC */ - x0 = x1; - x1 = x2; - x2 = x3; - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut++ = (q31_t) (acc0 << 1); - *pOut++ = (q31_t) (acc1 << 1); - *pOut++ = (q31_t) (acc2 << 1); - *pOut++ = (q31_t) (acc3 << 1); - - /* Increment the pointer pIn1 index, count by 4 */ - count += 4U; - - /* Update the inputA and inputB pointers for next MAC calculation */ - if ((int32_t)firstIndex - (int32_t)srcBLen + 1 > 0) - { - px = pIn1 + firstIndex - srcBLen + 1 + count; - } - else - { - px = pIn1 + count; - } - py = pSrc2; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize2 is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = (uint32_t) blockSize2 % 0x4U; - - while (blkCnt > 0U) - { - /* Accumulator is made zero for every iteration */ - sum = 0; - - /* Apply loop unrolling and compute 4 MACs simultaneously. */ - k = srcBLen >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 MACs at a time. - ** a second loop below computes MACs for the remaining 1 to 3 samples. */ - while (k > 0U) - { - /* Perform the multiply-accumulates */ - sum = (q31_t) ((((q63_t) sum << 32) + - ((q63_t) * px++ * (*py--))) >> 32); - sum = (q31_t) ((((q63_t) sum << 32) + - ((q63_t) * px++ * (*py--))) >> 32); - sum = (q31_t) ((((q63_t) sum << 32) + - ((q63_t) * px++ * (*py--))) >> 32); - sum = (q31_t) ((((q63_t) sum << 32) + - ((q63_t) * px++ * (*py--))) >> 32); - - /* Decrement the loop counter */ - k--; - } - - /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. - ** No loop unrolling is used. */ - k = srcBLen % 0x4U; - - while (k > 0U) - { - /* Perform the multiply-accumulate */ - sum = (q31_t) ((((q63_t) sum << 32) + - ((q63_t) * px++ * (*py--))) >> 32); - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut++ = sum << 1; - - /* Increment the MAC count */ - count++; - - /* Update the inputA and inputB pointers for next MAC calculation */ - if ((int32_t)firstIndex - (int32_t)srcBLen + 1 > 0) - { - px = pIn1 + firstIndex - srcBLen + 1 + count; - } - else - { - px = pIn1 + count; - } - py = pSrc2; - - /* Decrement the loop counter */ - blkCnt--; - } - } - else - { - /* If the srcBLen is not a multiple of 4, - * the blockSize2 loop cannot be unrolled by 4 */ - blkCnt = (uint32_t) blockSize2; - - while (blkCnt > 0U) - { - /* Accumulator is made zero for every iteration */ - sum = 0; - - /* srcBLen number of MACS should be performed */ - k = srcBLen; - - while (k > 0U) - { - /* Perform the multiply-accumulate */ - sum = (q31_t) ((((q63_t) sum << 32) + - ((q63_t) * px++ * (*py--))) >> 32); - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut++ = sum << 1; - - /* Increment the MAC count */ - count++; - - /* Update the inputA and inputB pointers for next MAC calculation */ - if ((int32_t)firstIndex - (int32_t)srcBLen + 1 > 0) - { - px = pIn1 + firstIndex - srcBLen + 1 + count; - } - else - { - px = pIn1 + count; - } - py = pSrc2; - - /* Decrement the loop counter */ - blkCnt--; - } - } - - - /* -------------------------- - * Initializations of stage3 - * -------------------------*/ - - /* sum += x[srcALen-srcBLen+1] * y[srcBLen-1] + x[srcALen-srcBLen+2] * y[srcBLen-2] +...+ x[srcALen-1] * y[1] - * sum += x[srcALen-srcBLen+2] * y[srcBLen-1] + x[srcALen-srcBLen+3] * y[srcBLen-2] +...+ x[srcALen-1] * y[2] - * .... - * sum += x[srcALen-2] * y[srcBLen-1] + x[srcALen-1] * y[srcBLen-2] - * sum += x[srcALen-1] * y[srcBLen-1] - */ - - /* In this stage the MAC operations are decreased by 1 for every iteration. - The count variable holds the number of MAC operations performed */ - count = srcBLen - 1U; - - /* Working pointer of inputA */ - pSrc1 = (pIn1 + srcALen) - (srcBLen - 1U); - px = pSrc1; - - /* Working pointer of inputB */ - pSrc2 = pIn2 + (srcBLen - 1U); - py = pSrc2; - - /* ------------------- - * Stage3 process - * ------------------*/ - - while (blockSize3 > 0) - { - /* Accumulator is made zero for every iteration */ - sum = 0; - - /* Apply loop unrolling and compute 4 MACs simultaneously. */ - k = count >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 MACs at a time. - ** a second loop below computes MACs for the remaining 1 to 3 samples. */ - while (k > 0U) - { - /* sum += x[srcALen - srcBLen + 1] * y[srcBLen - 1] */ - sum = (q31_t) ((((q63_t) sum << 32) + - ((q63_t) * px++ * (*py--))) >> 32); - - /* sum += x[srcALen - srcBLen + 2] * y[srcBLen - 2] */ - sum = (q31_t) ((((q63_t) sum << 32) + - ((q63_t) * px++ * (*py--))) >> 32); - - /* sum += x[srcALen - srcBLen + 3] * y[srcBLen - 3] */ - sum = (q31_t) ((((q63_t) sum << 32) + - ((q63_t) * px++ * (*py--))) >> 32); - - /* sum += x[srcALen - srcBLen + 4] * y[srcBLen - 4] */ - sum = (q31_t) ((((q63_t) sum << 32) + - ((q63_t) * px++ * (*py--))) >> 32); - - /* Decrement the loop counter */ - k--; - } - - /* If the count is not a multiple of 4, compute any remaining MACs here. - ** No loop unrolling is used. */ - k = count % 0x4U; - - while (k > 0U) - { - /* Perform the multiply-accumulates */ - /* sum += x[srcALen-1] * y[srcBLen-1] */ - sum = (q31_t) ((((q63_t) sum << 32) + - ((q63_t) * px++ * (*py--))) >> 32); - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut++ = sum << 1; - - /* Update the inputA and inputB pointers for next MAC calculation */ - px = ++pSrc1; - py = pSrc2; - - /* Decrement the MAC count */ - count--; - - /* Decrement the loop counter */ - blockSize3--; - - } - - /* set status as ARM_MATH_SUCCESS */ - status = ARM_MATH_SUCCESS; - } - - /* Return to application */ - return (status); - -} - -/** - * @} end of PartialConv group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_opt_q15.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_opt_q15.c deleted file mode 100644 index 44e368e..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_opt_q15.c +++ /dev/null @@ -1,753 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_conv_partial_opt_q15.c - * Description: Partial convolution of Q15 sequences - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupFilters - */ - -/** - * @addtogroup PartialConv - * @{ - */ - -/** - * @brief Partial convolution of Q15 sequences. - * @param[in] *pSrcA points to the first input sequence. - * @param[in] srcALen length of the first input sequence. - * @param[in] *pSrcB points to the second input sequence. - * @param[in] srcBLen length of the second input sequence. - * @param[out] *pDst points to the location where the output result is written. - * @param[in] firstIndex is the first output sample to start with. - * @param[in] numPoints is the number of output points to be computed. - * @param[in] *pScratch1 points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2. - * @param[in] *pScratch2 points to scratch buffer of size min(srcALen, srcBLen). - * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. - * - * \par Restrictions - * If the silicon does not support unaligned memory access enable the macro UNALIGNED_SUPPORT_DISABLE - * In this case input, output, state buffers should be aligned by 32-bit - * - * Refer to arm_conv_partial_fast_q15() for a faster but less precise version of this function for Cortex-M3 and Cortex-M4. - * - * - */ - -#ifndef UNALIGNED_SUPPORT_DISABLE - -arm_status arm_conv_partial_opt_q15( - q15_t * pSrcA, - uint32_t srcALen, - q15_t * pSrcB, - uint32_t srcBLen, - q15_t * pDst, - uint32_t firstIndex, - uint32_t numPoints, - q15_t * pScratch1, - q15_t * pScratch2) -{ - - q15_t *pOut = pDst; /* output pointer */ - q15_t *pScr1 = pScratch1; /* Temporary pointer for scratch1 */ - q15_t *pScr2 = pScratch2; /* Temporary pointer for scratch1 */ - q63_t acc0, acc1, acc2, acc3; /* Accumulator */ - q31_t x1, x2, x3; /* Temporary variables to hold state and coefficient values */ - q31_t y1, y2; /* State variables */ - q15_t *pIn1; /* inputA pointer */ - q15_t *pIn2; /* inputB pointer */ - q15_t *px; /* Intermediate inputA pointer */ - q15_t *py; /* Intermediate inputB pointer */ - uint32_t j, k, blkCnt; /* loop counter */ - arm_status status; /* Status variable */ - uint32_t tapCnt; /* loop count */ - - /* Check for range of output samples to be calculated */ - if ((firstIndex + numPoints) > ((srcALen + (srcBLen - 1U)))) - { - /* Set status as ARM_MATH_ARGUMENT_ERROR */ - status = ARM_MATH_ARGUMENT_ERROR; - } - else - { - - /* The algorithm implementation is based on the lengths of the inputs. */ - /* srcB is always made to slide across srcA. */ - /* So srcBLen is always considered as shorter or equal to srcALen */ - if (srcALen >= srcBLen) - { - /* Initialization of inputA pointer */ - pIn1 = pSrcA; - - /* Initialization of inputB pointer */ - pIn2 = pSrcB; - } - else - { - /* Initialization of inputA pointer */ - pIn1 = pSrcB; - - /* Initialization of inputB pointer */ - pIn2 = pSrcA; - - /* srcBLen is always considered as shorter or equal to srcALen */ - j = srcBLen; - srcBLen = srcALen; - srcALen = j; - } - - /* Temporary pointer for scratch2 */ - py = pScratch2; - - /* pointer to take end of scratch2 buffer */ - pScr2 = pScratch2 + srcBLen - 1; - - /* points to smaller length sequence */ - px = pIn2; - - /* Apply loop unrolling and do 4 Copies simultaneously. */ - k = srcBLen >> 2U; - - /* First part of the processing with loop unrolling copies 4 data points at a time. - ** a second loop below copies for the remaining 1 to 3 samples. */ - while (k > 0U) - { - /* copy second buffer in reversal manner */ - *pScr2-- = *px++; - *pScr2-- = *px++; - *pScr2-- = *px++; - *pScr2-- = *px++; - - /* Decrement the loop counter */ - k--; - } - - /* If the count is not a multiple of 4, copy remaining samples here. - ** No loop unrolling is used. */ - k = srcBLen % 0x4U; - - while (k > 0U) - { - /* copy second buffer in reversal manner for remaining samples */ - *pScr2-- = *px++; - - /* Decrement the loop counter */ - k--; - } - - /* Initialze temporary scratch pointer */ - pScr1 = pScratch1; - - /* Fill (srcBLen - 1U) zeros in scratch buffer */ - arm_fill_q15(0, pScr1, (srcBLen - 1U)); - - /* Update temporary scratch pointer */ - pScr1 += (srcBLen - 1U); - - /* Copy bigger length sequence(srcALen) samples in scratch1 buffer */ - - /* Copy (srcALen) samples in scratch buffer */ - arm_copy_q15(pIn1, pScr1, srcALen); - - /* Update pointers */ - pScr1 += srcALen; - - /* Fill (srcBLen - 1U) zeros at end of scratch buffer */ - arm_fill_q15(0, pScr1, (srcBLen - 1U)); - - /* Update pointer */ - pScr1 += (srcBLen - 1U); - - /* Initialization of pIn2 pointer */ - pIn2 = py; - - pScratch1 += firstIndex; - - pOut = pDst + firstIndex; - - /* Actual convolution process starts here */ - blkCnt = (numPoints) >> 2; - - while (blkCnt > 0) - { - /* Initialze temporary scratch pointer as scratch1 */ - pScr1 = pScratch1; - - /* Clear Accumlators */ - acc0 = 0; - acc1 = 0; - acc2 = 0; - acc3 = 0; - - /* Read two samples from scratch1 buffer */ - x1 = *__SIMD32(pScr1)++; - - /* Read next two samples from scratch1 buffer */ - x2 = *__SIMD32(pScr1)++; - - tapCnt = (srcBLen) >> 2U; - - while (tapCnt > 0U) - { - - /* Read four samples from smaller buffer */ - y1 = _SIMD32_OFFSET(pIn2); - y2 = _SIMD32_OFFSET(pIn2 + 2U); - - /* multiply and accumlate */ - acc0 = __SMLALD(x1, y1, acc0); - acc2 = __SMLALD(x2, y1, acc2); - - /* pack input data */ -#ifndef ARM_MATH_BIG_ENDIAN - x3 = __PKHBT(x2, x1, 0); -#else - x3 = __PKHBT(x1, x2, 0); -#endif - - /* multiply and accumlate */ - acc1 = __SMLALDX(x3, y1, acc1); - - /* Read next two samples from scratch1 buffer */ - x1 = _SIMD32_OFFSET(pScr1); - - /* multiply and accumlate */ - acc0 = __SMLALD(x2, y2, acc0); - acc2 = __SMLALD(x1, y2, acc2); - - /* pack input data */ -#ifndef ARM_MATH_BIG_ENDIAN - x3 = __PKHBT(x1, x2, 0); -#else - x3 = __PKHBT(x2, x1, 0); -#endif - - acc3 = __SMLALDX(x3, y1, acc3); - acc1 = __SMLALDX(x3, y2, acc1); - - x2 = _SIMD32_OFFSET(pScr1 + 2U); - -#ifndef ARM_MATH_BIG_ENDIAN - x3 = __PKHBT(x2, x1, 0); -#else - x3 = __PKHBT(x1, x2, 0); -#endif - - acc3 = __SMLALDX(x3, y2, acc3); - - /* update scratch pointers */ - pIn2 += 4U; - pScr1 += 4U; - - - /* Decrement the loop counter */ - tapCnt--; - } - - /* Update scratch pointer for remaining samples of smaller length sequence */ - pScr1 -= 4U; - - /* apply same above for remaining samples of smaller length sequence */ - tapCnt = (srcBLen) & 3U; - - while (tapCnt > 0U) - { - /* accumlate the results */ - acc0 += (*pScr1++ * *pIn2); - acc1 += (*pScr1++ * *pIn2); - acc2 += (*pScr1++ * *pIn2); - acc3 += (*pScr1++ * *pIn2++); - - pScr1 -= 3U; - - /* Decrement the loop counter */ - tapCnt--; - } - - blkCnt--; - - - /* Store the results in the accumulators in the destination buffer. */ - -#ifndef ARM_MATH_BIG_ENDIAN - - *__SIMD32(pOut)++ = - __PKHBT(__SSAT((acc0 >> 15), 16), __SSAT((acc1 >> 15), 16), 16); - *__SIMD32(pOut)++ = - __PKHBT(__SSAT((acc2 >> 15), 16), __SSAT((acc3 >> 15), 16), 16); - -#else - - *__SIMD32(pOut)++ = - __PKHBT(__SSAT((acc1 >> 15), 16), __SSAT((acc0 >> 15), 16), 16); - *__SIMD32(pOut)++ = - __PKHBT(__SSAT((acc3 >> 15), 16), __SSAT((acc2 >> 15), 16), 16); - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - /* Initialization of inputB pointer */ - pIn2 = py; - - pScratch1 += 4U; - - } - - - blkCnt = numPoints & 0x3; - - /* Calculate convolution for remaining samples of Bigger length sequence */ - while (blkCnt > 0) - { - /* Initialze temporary scratch pointer as scratch1 */ - pScr1 = pScratch1; - - /* Clear Accumlators */ - acc0 = 0; - - tapCnt = (srcBLen) >> 1U; - - while (tapCnt > 0U) - { - - /* Read next two samples from scratch1 buffer */ - x1 = *__SIMD32(pScr1)++; - - /* Read two samples from smaller buffer */ - y1 = *__SIMD32(pIn2)++; - - acc0 = __SMLALD(x1, y1, acc0); - - /* Decrement the loop counter */ - tapCnt--; - } - - tapCnt = (srcBLen) & 1U; - - /* apply same above for remaining samples of smaller length sequence */ - while (tapCnt > 0U) - { - - /* accumlate the results */ - acc0 += (*pScr1++ * *pIn2++); - - /* Decrement the loop counter */ - tapCnt--; - } - - blkCnt--; - - /* Store the result in the accumulator in the destination buffer. */ - *pOut++ = (q15_t) (__SSAT((acc0 >> 15), 16)); - - /* Initialization of inputB pointer */ - pIn2 = py; - - pScratch1 += 1U; - - } - - /* set status as ARM_MATH_SUCCESS */ - status = ARM_MATH_SUCCESS; - - } - - /* Return to application */ - return (status); -} - -#else - -arm_status arm_conv_partial_opt_q15( - q15_t * pSrcA, - uint32_t srcALen, - q15_t * pSrcB, - uint32_t srcBLen, - q15_t * pDst, - uint32_t firstIndex, - uint32_t numPoints, - q15_t * pScratch1, - q15_t * pScratch2) -{ - - q15_t *pOut = pDst; /* output pointer */ - q15_t *pScr1 = pScratch1; /* Temporary pointer for scratch1 */ - q15_t *pScr2 = pScratch2; /* Temporary pointer for scratch1 */ - q63_t acc0, acc1, acc2, acc3; /* Accumulator */ - q15_t *pIn1; /* inputA pointer */ - q15_t *pIn2; /* inputB pointer */ - q15_t *px; /* Intermediate inputA pointer */ - q15_t *py; /* Intermediate inputB pointer */ - uint32_t j, k, blkCnt; /* loop counter */ - arm_status status; /* Status variable */ - uint32_t tapCnt; /* loop count */ - q15_t x10, x11, x20, x21; /* Temporary variables to hold srcA buffer */ - q15_t y10, y11; /* Temporary variables to hold srcB buffer */ - - - /* Check for range of output samples to be calculated */ - if ((firstIndex + numPoints) > ((srcALen + (srcBLen - 1U)))) - { - /* Set status as ARM_MATH_ARGUMENT_ERROR */ - status = ARM_MATH_ARGUMENT_ERROR; - } - else - { - - /* The algorithm implementation is based on the lengths of the inputs. */ - /* srcB is always made to slide across srcA. */ - /* So srcBLen is always considered as shorter or equal to srcALen */ - if (srcALen >= srcBLen) - { - /* Initialization of inputA pointer */ - pIn1 = pSrcA; - - /* Initialization of inputB pointer */ - pIn2 = pSrcB; - } - else - { - /* Initialization of inputA pointer */ - pIn1 = pSrcB; - - /* Initialization of inputB pointer */ - pIn2 = pSrcA; - - /* srcBLen is always considered as shorter or equal to srcALen */ - j = srcBLen; - srcBLen = srcALen; - srcALen = j; - } - - /* Temporary pointer for scratch2 */ - py = pScratch2; - - /* pointer to take end of scratch2 buffer */ - pScr2 = pScratch2 + srcBLen - 1; - - /* points to smaller length sequence */ - px = pIn2; - - /* Apply loop unrolling and do 4 Copies simultaneously. */ - k = srcBLen >> 2U; - - /* First part of the processing with loop unrolling copies 4 data points at a time. - ** a second loop below copies for the remaining 1 to 3 samples. */ - while (k > 0U) - { - /* copy second buffer in reversal manner */ - *pScr2-- = *px++; - *pScr2-- = *px++; - *pScr2-- = *px++; - *pScr2-- = *px++; - - /* Decrement the loop counter */ - k--; - } - - /* If the count is not a multiple of 4, copy remaining samples here. - ** No loop unrolling is used. */ - k = srcBLen % 0x4U; - - while (k > 0U) - { - /* copy second buffer in reversal manner for remaining samples */ - *pScr2-- = *px++; - - /* Decrement the loop counter */ - k--; - } - - /* Initialze temporary scratch pointer */ - pScr1 = pScratch1; - - /* Fill (srcBLen - 1U) zeros in scratch buffer */ - arm_fill_q15(0, pScr1, (srcBLen - 1U)); - - /* Update temporary scratch pointer */ - pScr1 += (srcBLen - 1U); - - /* Copy bigger length sequence(srcALen) samples in scratch1 buffer */ - - - /* Apply loop unrolling and do 4 Copies simultaneously. */ - k = srcALen >> 2U; - - /* First part of the processing with loop unrolling copies 4 data points at a time. - ** a second loop below copies for the remaining 1 to 3 samples. */ - while (k > 0U) - { - /* copy second buffer in reversal manner */ - *pScr1++ = *pIn1++; - *pScr1++ = *pIn1++; - *pScr1++ = *pIn1++; - *pScr1++ = *pIn1++; - - /* Decrement the loop counter */ - k--; - } - - /* If the count is not a multiple of 4, copy remaining samples here. - ** No loop unrolling is used. */ - k = srcALen % 0x4U; - - while (k > 0U) - { - /* copy second buffer in reversal manner for remaining samples */ - *pScr1++ = *pIn1++; - - /* Decrement the loop counter */ - k--; - } - - - /* Apply loop unrolling and do 4 Copies simultaneously. */ - k = (srcBLen - 1U) >> 2U; - - /* First part of the processing with loop unrolling copies 4 data points at a time. - ** a second loop below copies for the remaining 1 to 3 samples. */ - while (k > 0U) - { - /* copy second buffer in reversal manner */ - *pScr1++ = 0; - *pScr1++ = 0; - *pScr1++ = 0; - *pScr1++ = 0; - - /* Decrement the loop counter */ - k--; - } - - /* If the count is not a multiple of 4, copy remaining samples here. - ** No loop unrolling is used. */ - k = (srcBLen - 1U) % 0x4U; - - while (k > 0U) - { - /* copy second buffer in reversal manner for remaining samples */ - *pScr1++ = 0; - - /* Decrement the loop counter */ - k--; - } - - - /* Initialization of pIn2 pointer */ - pIn2 = py; - - pScratch1 += firstIndex; - - pOut = pDst + firstIndex; - - /* Actual convolution process starts here */ - blkCnt = (numPoints) >> 2; - - while (blkCnt > 0) - { - /* Initialze temporary scratch pointer as scratch1 */ - pScr1 = pScratch1; - - /* Clear Accumlators */ - acc0 = 0; - acc1 = 0; - acc2 = 0; - acc3 = 0; - - /* Read two samples from scratch1 buffer */ - x10 = *pScr1++; - x11 = *pScr1++; - - /* Read next two samples from scratch1 buffer */ - x20 = *pScr1++; - x21 = *pScr1++; - - tapCnt = (srcBLen) >> 2U; - - while (tapCnt > 0U) - { - - /* Read two samples from smaller buffer */ - y10 = *pIn2; - y11 = *(pIn2 + 1U); - - /* multiply and accumlate */ - acc0 += (q63_t) x10 *y10; - acc0 += (q63_t) x11 *y11; - acc2 += (q63_t) x20 *y10; - acc2 += (q63_t) x21 *y11; - - /* multiply and accumlate */ - acc1 += (q63_t) x11 *y10; - acc1 += (q63_t) x20 *y11; - - /* Read next two samples from scratch1 buffer */ - x10 = *pScr1; - x11 = *(pScr1 + 1U); - - /* multiply and accumlate */ - acc3 += (q63_t) x21 *y10; - acc3 += (q63_t) x10 *y11; - - /* Read next two samples from scratch2 buffer */ - y10 = *(pIn2 + 2U); - y11 = *(pIn2 + 3U); - - /* multiply and accumlate */ - acc0 += (q63_t) x20 *y10; - acc0 += (q63_t) x21 *y11; - acc2 += (q63_t) x10 *y10; - acc2 += (q63_t) x11 *y11; - acc1 += (q63_t) x21 *y10; - acc1 += (q63_t) x10 *y11; - - /* Read next two samples from scratch1 buffer */ - x20 = *(pScr1 + 2); - x21 = *(pScr1 + 3); - - /* multiply and accumlate */ - acc3 += (q63_t) x11 *y10; - acc3 += (q63_t) x20 *y11; - - /* update scratch pointers */ - pIn2 += 4U; - pScr1 += 4U; - - /* Decrement the loop counter */ - tapCnt--; - } - - /* Update scratch pointer for remaining samples of smaller length sequence */ - pScr1 -= 4U; - - /* apply same above for remaining samples of smaller length sequence */ - tapCnt = (srcBLen) & 3U; - - while (tapCnt > 0U) - { - /* accumlate the results */ - acc0 += (*pScr1++ * *pIn2); - acc1 += (*pScr1++ * *pIn2); - acc2 += (*pScr1++ * *pIn2); - acc3 += (*pScr1++ * *pIn2++); - - pScr1 -= 3U; - - /* Decrement the loop counter */ - tapCnt--; - } - - blkCnt--; - - - /* Store the results in the accumulators in the destination buffer. */ - *pOut++ = __SSAT((acc0 >> 15), 16); - *pOut++ = __SSAT((acc1 >> 15), 16); - *pOut++ = __SSAT((acc2 >> 15), 16); - *pOut++ = __SSAT((acc3 >> 15), 16); - - - /* Initialization of inputB pointer */ - pIn2 = py; - - pScratch1 += 4U; - - } - - - blkCnt = numPoints & 0x3; - - /* Calculate convolution for remaining samples of Bigger length sequence */ - while (blkCnt > 0) - { - /* Initialze temporary scratch pointer as scratch1 */ - pScr1 = pScratch1; - - /* Clear Accumlators */ - acc0 = 0; - - tapCnt = (srcBLen) >> 1U; - - while (tapCnt > 0U) - { - - /* Read next two samples from scratch1 buffer */ - x10 = *pScr1++; - x11 = *pScr1++; - - /* Read two samples from smaller buffer */ - y10 = *pIn2++; - y11 = *pIn2++; - - /* multiply and accumlate */ - acc0 += (q63_t) x10 *y10; - acc0 += (q63_t) x11 *y11; - - /* Decrement the loop counter */ - tapCnt--; - } - - tapCnt = (srcBLen) & 1U; - - /* apply same above for remaining samples of smaller length sequence */ - while (tapCnt > 0U) - { - - /* accumlate the results */ - acc0 += (*pScr1++ * *pIn2++); - - /* Decrement the loop counter */ - tapCnt--; - } - - blkCnt--; - - /* Store the result in the accumulator in the destination buffer. */ - *pOut++ = (q15_t) (__SSAT((acc0 >> 15), 16)); - - - /* Initialization of inputB pointer */ - pIn2 = py; - - pScratch1 += 1U; - - } - - /* set status as ARM_MATH_SUCCESS */ - status = ARM_MATH_SUCCESS; - - } - - /* Return to application */ - return (status); -} - -#endif /* #ifndef UNALIGNED_SUPPORT_DISABLE */ - - -/** - * @} end of PartialConv group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_opt_q7.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_opt_q7.c deleted file mode 100644 index 00dbef1..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_opt_q7.c +++ /dev/null @@ -1,791 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_conv_partial_opt_q7.c - * Description: Partial convolution of Q7 sequences - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupFilters - */ - -/** - * @addtogroup PartialConv - * @{ - */ - -/** - * @brief Partial convolution of Q7 sequences. - * @param[in] *pSrcA points to the first input sequence. - * @param[in] srcALen length of the first input sequence. - * @param[in] *pSrcB points to the second input sequence. - * @param[in] srcBLen length of the second input sequence. - * @param[out] *pDst points to the location where the output result is written. - * @param[in] firstIndex is the first output sample to start with. - * @param[in] numPoints is the number of output points to be computed. - * @param[in] *pScratch1 points to scratch buffer(of type q15_t) of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2. - * @param[in] *pScratch2 points to scratch buffer (of type q15_t) of size min(srcALen, srcBLen). - * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. - * - * \par Restrictions - * If the silicon does not support unaligned memory access enable the macro UNALIGNED_SUPPORT_DISABLE - * In this case input, output, scratch1 and scratch2 buffers should be aligned by 32-bit - * - * - * - */ - - -#ifndef UNALIGNED_SUPPORT_DISABLE - -arm_status arm_conv_partial_opt_q7( - q7_t * pSrcA, - uint32_t srcALen, - q7_t * pSrcB, - uint32_t srcBLen, - q7_t * pDst, - uint32_t firstIndex, - uint32_t numPoints, - q15_t * pScratch1, - q15_t * pScratch2) -{ - - q15_t *pScr2, *pScr1; /* Intermediate pointers for scratch pointers */ - q15_t x4; /* Temporary input variable */ - q7_t *pIn1, *pIn2; /* inputA and inputB pointer */ - uint32_t j, k, blkCnt, tapCnt; /* loop counter */ - q7_t *px; /* Temporary input1 pointer */ - q15_t *py; /* Temporary input2 pointer */ - q31_t acc0, acc1, acc2, acc3; /* Accumulator */ - q31_t x1, x2, x3, y1; /* Temporary input variables */ - arm_status status; - q7_t *pOut = pDst; /* output pointer */ - q7_t out0, out1, out2, out3; /* temporary variables */ - - /* Check for range of output samples to be calculated */ - if ((firstIndex + numPoints) > ((srcALen + (srcBLen - 1U)))) - { - /* Set status as ARM_MATH_ARGUMENT_ERROR */ - status = ARM_MATH_ARGUMENT_ERROR; - } - else - { - - /* The algorithm implementation is based on the lengths of the inputs. */ - /* srcB is always made to slide across srcA. */ - /* So srcBLen is always considered as shorter or equal to srcALen */ - if (srcALen >= srcBLen) - { - /* Initialization of inputA pointer */ - pIn1 = pSrcA; - - /* Initialization of inputB pointer */ - pIn2 = pSrcB; - } - else - { - /* Initialization of inputA pointer */ - pIn1 = pSrcB; - - /* Initialization of inputB pointer */ - pIn2 = pSrcA; - - /* srcBLen is always considered as shorter or equal to srcALen */ - j = srcBLen; - srcBLen = srcALen; - srcALen = j; - } - - /* pointer to take end of scratch2 buffer */ - pScr2 = pScratch2; - - /* points to smaller length sequence */ - px = pIn2 + srcBLen - 1; - - /* Apply loop unrolling and do 4 Copies simultaneously. */ - k = srcBLen >> 2U; - - /* First part of the processing with loop unrolling copies 4 data points at a time. - ** a second loop below copies for the remaining 1 to 3 samples. */ - while (k > 0U) - { - /* copy second buffer in reversal manner */ - x4 = (q15_t) * px--; - *pScr2++ = x4; - x4 = (q15_t) * px--; - *pScr2++ = x4; - x4 = (q15_t) * px--; - *pScr2++ = x4; - x4 = (q15_t) * px--; - *pScr2++ = x4; - - /* Decrement the loop counter */ - k--; - } - - /* If the count is not a multiple of 4, copy remaining samples here. - ** No loop unrolling is used. */ - k = srcBLen % 0x4U; - - while (k > 0U) - { - /* copy second buffer in reversal manner for remaining samples */ - x4 = (q15_t) * px--; - *pScr2++ = x4; - - /* Decrement the loop counter */ - k--; - } - - /* Initialze temporary scratch pointer */ - pScr1 = pScratch1; - - /* Fill (srcBLen - 1U) zeros in scratch buffer */ - arm_fill_q15(0, pScr1, (srcBLen - 1U)); - - /* Update temporary scratch pointer */ - pScr1 += (srcBLen - 1U); - - /* Copy (srcALen) samples in scratch buffer */ - /* Apply loop unrolling and do 4 Copies simultaneously. */ - k = srcALen >> 2U; - - /* First part of the processing with loop unrolling copies 4 data points at a time. - ** a second loop below copies for the remaining 1 to 3 samples. */ - while (k > 0U) - { - /* copy second buffer in reversal manner */ - x4 = (q15_t) * pIn1++; - *pScr1++ = x4; - x4 = (q15_t) * pIn1++; - *pScr1++ = x4; - x4 = (q15_t) * pIn1++; - *pScr1++ = x4; - x4 = (q15_t) * pIn1++; - *pScr1++ = x4; - - /* Decrement the loop counter */ - k--; - } - - /* If the count is not a multiple of 4, copy remaining samples here. - ** No loop unrolling is used. */ - k = srcALen % 0x4U; - - while (k > 0U) - { - /* copy second buffer in reversal manner for remaining samples */ - x4 = (q15_t) * pIn1++; - *pScr1++ = x4; - - /* Decrement the loop counter */ - k--; - } - - /* Fill (srcBLen - 1U) zeros at end of scratch buffer */ - arm_fill_q15(0, pScr1, (srcBLen - 1U)); - - /* Update pointer */ - pScr1 += (srcBLen - 1U); - - - /* Temporary pointer for scratch2 */ - py = pScratch2; - - /* Initialization of pIn2 pointer */ - pIn2 = (q7_t *) py; - - pScr2 = py; - - pOut = pDst + firstIndex; - - pScratch1 += firstIndex; - - /* Actual convolution process starts here */ - blkCnt = (numPoints) >> 2; - - - while (blkCnt > 0) - { - /* Initialze temporary scratch pointer as scratch1 */ - pScr1 = pScratch1; - - /* Clear Accumlators */ - acc0 = 0; - acc1 = 0; - acc2 = 0; - acc3 = 0; - - /* Read two samples from scratch1 buffer */ - x1 = *__SIMD32(pScr1)++; - - /* Read next two samples from scratch1 buffer */ - x2 = *__SIMD32(pScr1)++; - - tapCnt = (srcBLen) >> 2U; - - while (tapCnt > 0U) - { - - /* Read four samples from smaller buffer */ - y1 = _SIMD32_OFFSET(pScr2); - - /* multiply and accumlate */ - acc0 = __SMLAD(x1, y1, acc0); - acc2 = __SMLAD(x2, y1, acc2); - - /* pack input data */ -#ifndef ARM_MATH_BIG_ENDIAN - x3 = __PKHBT(x2, x1, 0); -#else - x3 = __PKHBT(x1, x2, 0); -#endif - - /* multiply and accumlate */ - acc1 = __SMLADX(x3, y1, acc1); - - /* Read next two samples from scratch1 buffer */ - x1 = *__SIMD32(pScr1)++; - - /* pack input data */ -#ifndef ARM_MATH_BIG_ENDIAN - x3 = __PKHBT(x1, x2, 0); -#else - x3 = __PKHBT(x2, x1, 0); -#endif - - acc3 = __SMLADX(x3, y1, acc3); - - /* Read four samples from smaller buffer */ - y1 = _SIMD32_OFFSET(pScr2 + 2U); - - acc0 = __SMLAD(x2, y1, acc0); - - acc2 = __SMLAD(x1, y1, acc2); - - acc1 = __SMLADX(x3, y1, acc1); - - x2 = *__SIMD32(pScr1)++; - -#ifndef ARM_MATH_BIG_ENDIAN - x3 = __PKHBT(x2, x1, 0); -#else - x3 = __PKHBT(x1, x2, 0); -#endif - - acc3 = __SMLADX(x3, y1, acc3); - - pScr2 += 4U; - - - /* Decrement the loop counter */ - tapCnt--; - } - - - - /* Update scratch pointer for remaining samples of smaller length sequence */ - pScr1 -= 4U; - - - /* apply same above for remaining samples of smaller length sequence */ - tapCnt = (srcBLen) & 3U; - - while (tapCnt > 0U) - { - - /* accumlate the results */ - acc0 += (*pScr1++ * *pScr2); - acc1 += (*pScr1++ * *pScr2); - acc2 += (*pScr1++ * *pScr2); - acc3 += (*pScr1++ * *pScr2++); - - pScr1 -= 3U; - - /* Decrement the loop counter */ - tapCnt--; - } - - blkCnt--; - - /* Store the result in the accumulator in the destination buffer. */ - out0 = (q7_t) (__SSAT(acc0 >> 7U, 8)); - out1 = (q7_t) (__SSAT(acc1 >> 7U, 8)); - out2 = (q7_t) (__SSAT(acc2 >> 7U, 8)); - out3 = (q7_t) (__SSAT(acc3 >> 7U, 8)); - - *__SIMD32(pOut)++ = __PACKq7(out0, out1, out2, out3); - - /* Initialization of inputB pointer */ - pScr2 = py; - - pScratch1 += 4U; - - } - - blkCnt = (numPoints) & 0x3; - - /* Calculate convolution for remaining samples of Bigger length sequence */ - while (blkCnt > 0) - { - /* Initialze temporary scratch pointer as scratch1 */ - pScr1 = pScratch1; - - /* Clear Accumlators */ - acc0 = 0; - - tapCnt = (srcBLen) >> 1U; - - while (tapCnt > 0U) - { - - /* Read next two samples from scratch1 buffer */ - x1 = *__SIMD32(pScr1)++; - - /* Read two samples from smaller buffer */ - y1 = *__SIMD32(pScr2)++; - - acc0 = __SMLAD(x1, y1, acc0); - - /* Decrement the loop counter */ - tapCnt--; - } - - tapCnt = (srcBLen) & 1U; - - /* apply same above for remaining samples of smaller length sequence */ - while (tapCnt > 0U) - { - - /* accumlate the results */ - acc0 += (*pScr1++ * *pScr2++); - - /* Decrement the loop counter */ - tapCnt--; - } - - blkCnt--; - - /* Store the result in the accumulator in the destination buffer. */ - *pOut++ = (q7_t) (__SSAT(acc0 >> 7U, 8)); - - /* Initialization of inputB pointer */ - pScr2 = py; - - pScratch1 += 1U; - - } - - /* set status as ARM_MATH_SUCCESS */ - status = ARM_MATH_SUCCESS; - - - } - - return (status); - -} - -#else - -arm_status arm_conv_partial_opt_q7( - q7_t * pSrcA, - uint32_t srcALen, - q7_t * pSrcB, - uint32_t srcBLen, - q7_t * pDst, - uint32_t firstIndex, - uint32_t numPoints, - q15_t * pScratch1, - q15_t * pScratch2) -{ - - q15_t *pScr2, *pScr1; /* Intermediate pointers for scratch pointers */ - q15_t x4; /* Temporary input variable */ - q7_t *pIn1, *pIn2; /* inputA and inputB pointer */ - uint32_t j, k, blkCnt, tapCnt; /* loop counter */ - q7_t *px; /* Temporary input1 pointer */ - q15_t *py; /* Temporary input2 pointer */ - q31_t acc0, acc1, acc2, acc3; /* Accumulator */ - arm_status status; - q7_t *pOut = pDst; /* output pointer */ - q15_t x10, x11, x20, x21; /* Temporary input variables */ - q15_t y10, y11; /* Temporary input variables */ - - /* Check for range of output samples to be calculated */ - if ((firstIndex + numPoints) > ((srcALen + (srcBLen - 1U)))) - { - /* Set status as ARM_MATH_ARGUMENT_ERROR */ - status = ARM_MATH_ARGUMENT_ERROR; - } - else - { - - /* The algorithm implementation is based on the lengths of the inputs. */ - /* srcB is always made to slide across srcA. */ - /* So srcBLen is always considered as shorter or equal to srcALen */ - if (srcALen >= srcBLen) - { - /* Initialization of inputA pointer */ - pIn1 = pSrcA; - - /* Initialization of inputB pointer */ - pIn2 = pSrcB; - } - else - { - /* Initialization of inputA pointer */ - pIn1 = pSrcB; - - /* Initialization of inputB pointer */ - pIn2 = pSrcA; - - /* srcBLen is always considered as shorter or equal to srcALen */ - j = srcBLen; - srcBLen = srcALen; - srcALen = j; - } - - /* pointer to take end of scratch2 buffer */ - pScr2 = pScratch2; - - /* points to smaller length sequence */ - px = pIn2 + srcBLen - 1; - - /* Apply loop unrolling and do 4 Copies simultaneously. */ - k = srcBLen >> 2U; - - /* First part of the processing with loop unrolling copies 4 data points at a time. - ** a second loop below copies for the remaining 1 to 3 samples. */ - while (k > 0U) - { - /* copy second buffer in reversal manner */ - x4 = (q15_t) * px--; - *pScr2++ = x4; - x4 = (q15_t) * px--; - *pScr2++ = x4; - x4 = (q15_t) * px--; - *pScr2++ = x4; - x4 = (q15_t) * px--; - *pScr2++ = x4; - - /* Decrement the loop counter */ - k--; - } - - /* If the count is not a multiple of 4, copy remaining samples here. - ** No loop unrolling is used. */ - k = srcBLen % 0x4U; - - while (k > 0U) - { - /* copy second buffer in reversal manner for remaining samples */ - x4 = (q15_t) * px--; - *pScr2++ = x4; - - /* Decrement the loop counter */ - k--; - } - - /* Initialze temporary scratch pointer */ - pScr1 = pScratch1; - - /* Fill (srcBLen - 1U) zeros in scratch buffer */ - arm_fill_q15(0, pScr1, (srcBLen - 1U)); - - /* Update temporary scratch pointer */ - pScr1 += (srcBLen - 1U); - - /* Copy (srcALen) samples in scratch buffer */ - /* Apply loop unrolling and do 4 Copies simultaneously. */ - k = srcALen >> 2U; - - /* First part of the processing with loop unrolling copies 4 data points at a time. - ** a second loop below copies for the remaining 1 to 3 samples. */ - while (k > 0U) - { - /* copy second buffer in reversal manner */ - x4 = (q15_t) * pIn1++; - *pScr1++ = x4; - x4 = (q15_t) * pIn1++; - *pScr1++ = x4; - x4 = (q15_t) * pIn1++; - *pScr1++ = x4; - x4 = (q15_t) * pIn1++; - *pScr1++ = x4; - - /* Decrement the loop counter */ - k--; - } - - /* If the count is not a multiple of 4, copy remaining samples here. - ** No loop unrolling is used. */ - k = srcALen % 0x4U; - - while (k > 0U) - { - /* copy second buffer in reversal manner for remaining samples */ - x4 = (q15_t) * pIn1++; - *pScr1++ = x4; - - /* Decrement the loop counter */ - k--; - } - - /* Apply loop unrolling and do 4 Copies simultaneously. */ - k = (srcBLen - 1U) >> 2U; - - /* First part of the processing with loop unrolling copies 4 data points at a time. - ** a second loop below copies for the remaining 1 to 3 samples. */ - while (k > 0U) - { - /* copy second buffer in reversal manner */ - *pScr1++ = 0; - *pScr1++ = 0; - *pScr1++ = 0; - *pScr1++ = 0; - - /* Decrement the loop counter */ - k--; - } - - /* If the count is not a multiple of 4, copy remaining samples here. - ** No loop unrolling is used. */ - k = (srcBLen - 1U) % 0x4U; - - while (k > 0U) - { - /* copy second buffer in reversal manner for remaining samples */ - *pScr1++ = 0; - - /* Decrement the loop counter */ - k--; - } - - - /* Temporary pointer for scratch2 */ - py = pScratch2; - - /* Initialization of pIn2 pointer */ - pIn2 = (q7_t *) py; - - pScr2 = py; - - pOut = pDst + firstIndex; - - pScratch1 += firstIndex; - - /* Actual convolution process starts here */ - blkCnt = (numPoints) >> 2; - - - while (blkCnt > 0) - { - /* Initialze temporary scratch pointer as scratch1 */ - pScr1 = pScratch1; - - /* Clear Accumlators */ - acc0 = 0; - acc1 = 0; - acc2 = 0; - acc3 = 0; - - /* Read two samples from scratch1 buffer */ - x10 = *pScr1++; - x11 = *pScr1++; - - /* Read next two samples from scratch1 buffer */ - x20 = *pScr1++; - x21 = *pScr1++; - - tapCnt = (srcBLen) >> 2U; - - while (tapCnt > 0U) - { - - /* Read four samples from smaller buffer */ - y10 = *pScr2; - y11 = *(pScr2 + 1U); - - /* multiply and accumlate */ - acc0 += (q31_t) x10 *y10; - acc0 += (q31_t) x11 *y11; - acc2 += (q31_t) x20 *y10; - acc2 += (q31_t) x21 *y11; - - - acc1 += (q31_t) x11 *y10; - acc1 += (q31_t) x20 *y11; - - /* Read next two samples from scratch1 buffer */ - x10 = *pScr1; - x11 = *(pScr1 + 1U); - - /* multiply and accumlate */ - acc3 += (q31_t) x21 *y10; - acc3 += (q31_t) x10 *y11; - - /* Read next two samples from scratch2 buffer */ - y10 = *(pScr2 + 2U); - y11 = *(pScr2 + 3U); - - /* multiply and accumlate */ - acc0 += (q31_t) x20 *y10; - acc0 += (q31_t) x21 *y11; - acc2 += (q31_t) x10 *y10; - acc2 += (q31_t) x11 *y11; - acc1 += (q31_t) x21 *y10; - acc1 += (q31_t) x10 *y11; - - /* Read next two samples from scratch1 buffer */ - x20 = *(pScr1 + 2); - x21 = *(pScr1 + 3); - - /* multiply and accumlate */ - acc3 += (q31_t) x11 *y10; - acc3 += (q31_t) x20 *y11; - - /* update scratch pointers */ - - pScr1 += 4U; - pScr2 += 4U; - - /* Decrement the loop counter */ - tapCnt--; - } - - - - /* Update scratch pointer for remaining samples of smaller length sequence */ - pScr1 -= 4U; - - - /* apply same above for remaining samples of smaller length sequence */ - tapCnt = (srcBLen) & 3U; - - while (tapCnt > 0U) - { - - /* accumlate the results */ - acc0 += (*pScr1++ * *pScr2); - acc1 += (*pScr1++ * *pScr2); - acc2 += (*pScr1++ * *pScr2); - acc3 += (*pScr1++ * *pScr2++); - - pScr1 -= 3U; - - /* Decrement the loop counter */ - tapCnt--; - } - - blkCnt--; - - /* Store the result in the accumulator in the destination buffer. */ - *pOut++ = (q7_t) (__SSAT(acc0 >> 7U, 8)); - *pOut++ = (q7_t) (__SSAT(acc1 >> 7U, 8)); - *pOut++ = (q7_t) (__SSAT(acc2 >> 7U, 8)); - *pOut++ = (q7_t) (__SSAT(acc3 >> 7U, 8)); - - /* Initialization of inputB pointer */ - pScr2 = py; - - pScratch1 += 4U; - - } - - blkCnt = (numPoints) & 0x3; - - /* Calculate convolution for remaining samples of Bigger length sequence */ - while (blkCnt > 0) - { - /* Initialze temporary scratch pointer as scratch1 */ - pScr1 = pScratch1; - - /* Clear Accumlators */ - acc0 = 0; - - tapCnt = (srcBLen) >> 1U; - - while (tapCnt > 0U) - { - - /* Read next two samples from scratch1 buffer */ - x10 = *pScr1++; - x11 = *pScr1++; - - /* Read two samples from smaller buffer */ - y10 = *pScr2++; - y11 = *pScr2++; - - /* multiply and accumlate */ - acc0 += (q31_t) x10 *y10; - acc0 += (q31_t) x11 *y11; - - /* Decrement the loop counter */ - tapCnt--; - } - - tapCnt = (srcBLen) & 1U; - - /* apply same above for remaining samples of smaller length sequence */ - while (tapCnt > 0U) - { - - /* accumlate the results */ - acc0 += (*pScr1++ * *pScr2++); - - /* Decrement the loop counter */ - tapCnt--; - } - - blkCnt--; - - /* Store the result in the accumulator in the destination buffer. */ - *pOut++ = (q7_t) (__SSAT(acc0 >> 7U, 8)); - - /* Initialization of inputB pointer */ - pScr2 = py; - - pScratch1 += 1U; - - } - - /* set status as ARM_MATH_SUCCESS */ - status = ARM_MATH_SUCCESS; - - } - - return (status); - -} - -#endif /* #ifndef UNALIGNED_SUPPORT_DISABLE */ - - - -/** - * @} end of PartialConv group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_q15.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_q15.c deleted file mode 100644 index 93864b7..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_q15.c +++ /dev/null @@ -1,795 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_conv_partial_q15.c - * Description: Partial convolution of Q15 sequences - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupFilters - */ - -/** - * @addtogroup PartialConv - * @{ - */ - -/** - * @brief Partial convolution of Q15 sequences. - * @param[in] *pSrcA points to the first input sequence. - * @param[in] srcALen length of the first input sequence. - * @param[in] *pSrcB points to the second input sequence. - * @param[in] srcBLen length of the second input sequence. - * @param[out] *pDst points to the location where the output result is written. - * @param[in] firstIndex is the first output sample to start with. - * @param[in] numPoints is the number of output points to be computed. - * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. - * - * Refer to arm_conv_partial_fast_q15() for a faster but less precise version of this function for Cortex-M3 and Cortex-M4. - * - * \par - * Refer the function arm_conv_partial_opt_q15() for a faster implementation of this function using scratch buffers. - * - */ - -arm_status arm_conv_partial_q15( - q15_t * pSrcA, - uint32_t srcALen, - q15_t * pSrcB, - uint32_t srcBLen, - q15_t * pDst, - uint32_t firstIndex, - uint32_t numPoints) -{ - - -#if (defined(ARM_MATH_CM7) || defined(ARM_MATH_CM4) || defined(ARM_MATH_CM3)) && !defined(UNALIGNED_SUPPORT_DISABLE) - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - q15_t *pIn1; /* inputA pointer */ - q15_t *pIn2; /* inputB pointer */ - q15_t *pOut = pDst; /* output pointer */ - q63_t sum, acc0, acc1, acc2, acc3; /* Accumulator */ - q15_t *px; /* Intermediate inputA pointer */ - q15_t *py; /* Intermediate inputB pointer */ - q15_t *pSrc1, *pSrc2; /* Intermediate pointers */ - q31_t x0, x1, x2, x3, c0; /* Temporary input variables */ - uint32_t j, k, count, check, blkCnt; - int32_t blockSize1, blockSize2, blockSize3; /* loop counter */ - arm_status status; /* status of Partial convolution */ - - /* Check for range of output samples to be calculated */ - if ((firstIndex + numPoints) > ((srcALen + (srcBLen - 1U)))) - { - /* Set status as ARM_MATH_ARGUMENT_ERROR */ - status = ARM_MATH_ARGUMENT_ERROR; - } - else - { - - /* The algorithm implementation is based on the lengths of the inputs. */ - /* srcB is always made to slide across srcA. */ - /* So srcBLen is always considered as shorter or equal to srcALen */ - if (srcALen >= srcBLen) - { - /* Initialization of inputA pointer */ - pIn1 = pSrcA; - - /* Initialization of inputB pointer */ - pIn2 = pSrcB; - } - else - { - /* Initialization of inputA pointer */ - pIn1 = pSrcB; - - /* Initialization of inputB pointer */ - pIn2 = pSrcA; - - /* srcBLen is always considered as shorter or equal to srcALen */ - j = srcBLen; - srcBLen = srcALen; - srcALen = j; - } - - /* Conditions to check which loopCounter holds - * the first and last indices of the output samples to be calculated. */ - check = firstIndex + numPoints; - blockSize3 = ((int32_t)check > (int32_t)srcALen) ? (int32_t)check - (int32_t)srcALen : 0; - blockSize3 = ((int32_t)firstIndex > (int32_t)srcALen - 1) ? blockSize3 - (int32_t)firstIndex + (int32_t)srcALen : blockSize3; - blockSize1 = (((int32_t) srcBLen - 1) - (int32_t) firstIndex); - blockSize1 = (blockSize1 > 0) ? ((check > (srcBLen - 1U)) ? blockSize1 : - (int32_t) numPoints) : 0; - blockSize2 = (int32_t) check - ((blockSize3 + blockSize1) + - (int32_t) firstIndex); - blockSize2 = (blockSize2 > 0) ? blockSize2 : 0; - - /* conv(x,y) at n = x[n] * y[0] + x[n-1] * y[1] + x[n-2] * y[2] + ...+ x[n-N+1] * y[N -1] */ - /* The function is internally - * divided into three stages according to the number of multiplications that has to be - * taken place between inputA samples and inputB samples. In the first stage of the - * algorithm, the multiplications increase by one for every iteration. - * In the second stage of the algorithm, srcBLen number of multiplications are done. - * In the third stage of the algorithm, the multiplications decrease by one - * for every iteration. */ - - /* Set the output pointer to point to the firstIndex - * of the output sample to be calculated. */ - pOut = pDst + firstIndex; - - /* -------------------------- - * Initializations of stage1 - * -------------------------*/ - - /* sum = x[0] * y[0] - * sum = x[0] * y[1] + x[1] * y[0] - * .... - * sum = x[0] * y[srcBlen - 1] + x[1] * y[srcBlen - 2] +...+ x[srcBLen - 1] * y[0] - */ - - /* In this stage the MAC operations are increased by 1 for every iteration. - The count variable holds the number of MAC operations performed. - Since the partial convolution starts from firstIndex - Number of Macs to be performed is firstIndex + 1 */ - count = 1U + firstIndex; - - /* Working pointer of inputA */ - px = pIn1; - - /* Working pointer of inputB */ - pSrc2 = pIn2 + firstIndex; - py = pSrc2; - - /* ------------------------ - * Stage1 process - * ----------------------*/ - - /* For loop unrolling by 4, this stage is divided into two. */ - /* First part of this stage computes the MAC operations less than 4 */ - /* Second part of this stage computes the MAC operations greater than or equal to 4 */ - - /* The first part of the stage starts here */ - while ((count < 4U) && (blockSize1 > 0)) - { - /* Accumulator is made zero for every iteration */ - sum = 0; - - /* Loop over number of MAC operations between - * inputA samples and inputB samples */ - k = count; - - while (k > 0U) - { - /* Perform the multiply-accumulates */ - sum = __SMLALD(*px++, *py--, sum); - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut++ = (q15_t) (__SSAT((sum >> 15), 16)); - - /* Update the inputA and inputB pointers for next MAC calculation */ - py = ++pSrc2; - px = pIn1; - - /* Increment the MAC count */ - count++; - - /* Decrement the loop counter */ - blockSize1--; - } - - /* The second part of the stage starts here */ - /* The internal loop, over count, is unrolled by 4 */ - /* To, read the last two inputB samples using SIMD: - * y[srcBLen] and y[srcBLen-1] coefficients, py is decremented by 1 */ - py = py - 1; - - while (blockSize1 > 0) - { - /* Accumulator is made zero for every iteration */ - sum = 0; - - /* Apply loop unrolling and compute 4 MACs simultaneously. */ - k = count >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 MACs at a time. - ** a second loop below computes MACs for the remaining 1 to 3 samples. */ - while (k > 0U) - { - /* Perform the multiply-accumulates */ - /* x[0], x[1] are multiplied with y[srcBLen - 1], y[srcBLen - 2] respectively */ - sum = __SMLALDX(*__SIMD32(px)++, *__SIMD32(py)--, sum); - /* x[2], x[3] are multiplied with y[srcBLen - 3], y[srcBLen - 4] respectively */ - sum = __SMLALDX(*__SIMD32(px)++, *__SIMD32(py)--, sum); - - /* Decrement the loop counter */ - k--; - } - - /* For the next MAC operations, the pointer py is used without SIMD - * So, py is incremented by 1 */ - py = py + 1U; - - /* If the count is not a multiple of 4, compute any remaining MACs here. - ** No loop unrolling is used. */ - k = count % 0x4U; - - while (k > 0U) - { - /* Perform the multiply-accumulates */ - sum = __SMLALD(*px++, *py--, sum); - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut++ = (q15_t) (__SSAT((sum >> 15), 16)); - - /* Update the inputA and inputB pointers for next MAC calculation */ - py = ++pSrc2 - 1U; - px = pIn1; - - /* Increment the MAC count */ - count++; - - /* Decrement the loop counter */ - blockSize1--; - } - - /* -------------------------- - * Initializations of stage2 - * ------------------------*/ - - /* sum = x[0] * y[srcBLen-1] + x[1] * y[srcBLen-2] +...+ x[srcBLen-1] * y[0] - * sum = x[1] * y[srcBLen-1] + x[2] * y[srcBLen-2] +...+ x[srcBLen] * y[0] - * .... - * sum = x[srcALen-srcBLen-2] * y[srcBLen-1] + x[srcALen] * y[srcBLen-2] +...+ x[srcALen-1] * y[0] - */ - - /* Working pointer of inputA */ - if ((int32_t)firstIndex - (int32_t)srcBLen + 1 > 0) - { - px = pIn1 + firstIndex - srcBLen + 1; - } - else - { - px = pIn1; - } - - /* Working pointer of inputB */ - pSrc2 = pIn2 + (srcBLen - 1U); - py = pSrc2; - - /* count is the index by which the pointer pIn1 to be incremented */ - count = 0U; - - - /* -------------------- - * Stage2 process - * -------------------*/ - - /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed. - * So, to loop unroll over blockSize2, - * srcBLen should be greater than or equal to 4 */ - if (srcBLen >= 4U) - { - /* Loop unroll over blockSize2, by 4 */ - blkCnt = blockSize2 >> 2U; - - while (blkCnt > 0U) - { - py = py - 1U; - - /* Set all accumulators to zero */ - acc0 = 0; - acc1 = 0; - acc2 = 0; - acc3 = 0; - - - /* read x[0], x[1] samples */ - x0 = *__SIMD32(px); - /* read x[1], x[2] samples */ - x1 = _SIMD32_OFFSET(px+1); - px+= 2U; - - - /* Apply loop unrolling and compute 4 MACs simultaneously. */ - k = srcBLen >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 MACs at a time. - ** a second loop below computes MACs for the remaining 1 to 3 samples. */ - do - { - /* Read the last two inputB samples using SIMD: - * y[srcBLen - 1] and y[srcBLen - 2] */ - c0 = *__SIMD32(py)--; - - /* acc0 += x[0] * y[srcBLen - 1] + x[1] * y[srcBLen - 2] */ - acc0 = __SMLALDX(x0, c0, acc0); - - /* acc1 += x[1] * y[srcBLen - 1] + x[2] * y[srcBLen - 2] */ - acc1 = __SMLALDX(x1, c0, acc1); - - /* Read x[2], x[3] */ - x2 = *__SIMD32(px); - - /* Read x[3], x[4] */ - x3 = _SIMD32_OFFSET(px+1); - - /* acc2 += x[2] * y[srcBLen - 1] + x[3] * y[srcBLen - 2] */ - acc2 = __SMLALDX(x2, c0, acc2); - - /* acc3 += x[3] * y[srcBLen - 1] + x[4] * y[srcBLen - 2] */ - acc3 = __SMLALDX(x3, c0, acc3); - - /* Read y[srcBLen - 3] and y[srcBLen - 4] */ - c0 = *__SIMD32(py)--; - - /* acc0 += x[2] * y[srcBLen - 3] + x[3] * y[srcBLen - 4] */ - acc0 = __SMLALDX(x2, c0, acc0); - - /* acc1 += x[3] * y[srcBLen - 3] + x[4] * y[srcBLen - 4] */ - acc1 = __SMLALDX(x3, c0, acc1); - - /* Read x[4], x[5] */ - x0 = _SIMD32_OFFSET(px+2); - - /* Read x[5], x[6] */ - x1 = _SIMD32_OFFSET(px+3); - px += 4U; - - /* acc2 += x[4] * y[srcBLen - 3] + x[5] * y[srcBLen - 4] */ - acc2 = __SMLALDX(x0, c0, acc2); - - /* acc3 += x[5] * y[srcBLen - 3] + x[6] * y[srcBLen - 4] */ - acc3 = __SMLALDX(x1, c0, acc3); - - } while (--k); - - /* For the next MAC operations, SIMD is not used - * So, the 16 bit pointer if inputB, py is updated */ - - /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. - ** No loop unrolling is used. */ - k = srcBLen % 0x4U; - - if (k == 1U) - { - /* Read y[srcBLen - 5] */ - c0 = *(py+1); - -#ifdef ARM_MATH_BIG_ENDIAN - - c0 = c0 << 16U; - -#else - - c0 = c0 & 0x0000FFFF; - -#endif /* #ifdef ARM_MATH_BIG_ENDIAN */ - - /* Read x[7] */ - x3 = *__SIMD32(px); - px++; - - /* Perform the multiply-accumulates */ - acc0 = __SMLALD(x0, c0, acc0); - acc1 = __SMLALD(x1, c0, acc1); - acc2 = __SMLALDX(x1, c0, acc2); - acc3 = __SMLALDX(x3, c0, acc3); - } - - if (k == 2U) - { - /* Read y[srcBLen - 5], y[srcBLen - 6] */ - c0 = _SIMD32_OFFSET(py); - - /* Read x[7], x[8] */ - x3 = *__SIMD32(px); - - /* Read x[9] */ - x2 = _SIMD32_OFFSET(px+1); - px += 2U; - - /* Perform the multiply-accumulates */ - acc0 = __SMLALDX(x0, c0, acc0); - acc1 = __SMLALDX(x1, c0, acc1); - acc2 = __SMLALDX(x3, c0, acc2); - acc3 = __SMLALDX(x2, c0, acc3); - } - - if (k == 3U) - { - /* Read y[srcBLen - 5], y[srcBLen - 6] */ - c0 = _SIMD32_OFFSET(py); - - /* Read x[7], x[8] */ - x3 = *__SIMD32(px); - - /* Read x[9] */ - x2 = _SIMD32_OFFSET(px+1); - - /* Perform the multiply-accumulates */ - acc0 = __SMLALDX(x0, c0, acc0); - acc1 = __SMLALDX(x1, c0, acc1); - acc2 = __SMLALDX(x3, c0, acc2); - acc3 = __SMLALDX(x2, c0, acc3); - - c0 = *(py-1); - -#ifdef ARM_MATH_BIG_ENDIAN - - c0 = c0 << 16U; -#else - - c0 = c0 & 0x0000FFFF; -#endif /* #ifdef ARM_MATH_BIG_ENDIAN */ - - /* Read x[10] */ - x3 = _SIMD32_OFFSET(px+2); - px += 3U; - - /* Perform the multiply-accumulates */ - acc0 = __SMLALDX(x1, c0, acc0); - acc1 = __SMLALD(x2, c0, acc1); - acc2 = __SMLALDX(x2, c0, acc2); - acc3 = __SMLALDX(x3, c0, acc3); - } - - - /* Store the results in the accumulators in the destination buffer. */ - -#ifndef ARM_MATH_BIG_ENDIAN - - *__SIMD32(pOut)++ = - __PKHBT(__SSAT((acc0 >> 15), 16), __SSAT((acc1 >> 15), 16), 16); - *__SIMD32(pOut)++ = - __PKHBT(__SSAT((acc2 >> 15), 16), __SSAT((acc3 >> 15), 16), 16); - -#else - - *__SIMD32(pOut)++ = - __PKHBT(__SSAT((acc1 >> 15), 16), __SSAT((acc0 >> 15), 16), 16); - *__SIMD32(pOut)++ = - __PKHBT(__SSAT((acc3 >> 15), 16), __SSAT((acc2 >> 15), 16), 16); - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - /* Increment the pointer pIn1 index, count by 4 */ - count += 4U; - - /* Update the inputA and inputB pointers for next MAC calculation */ - if ((int32_t)firstIndex - (int32_t)srcBLen + 1 > 0) - { - px = pIn1 + firstIndex - srcBLen + 1 + count; - } - else - { - px = pIn1 + count; - } - py = pSrc2; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize2 is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = (uint32_t) blockSize2 % 0x4U; - - while (blkCnt > 0U) - { - /* Accumulator is made zero for every iteration */ - sum = 0; - - /* Apply loop unrolling and compute 4 MACs simultaneously. */ - k = srcBLen >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 MACs at a time. - ** a second loop below computes MACs for the remaining 1 to 3 samples. */ - while (k > 0U) - { - /* Perform the multiply-accumulates */ - sum += (q63_t) ((q31_t) * px++ * *py--); - sum += (q63_t) ((q31_t) * px++ * *py--); - sum += (q63_t) ((q31_t) * px++ * *py--); - sum += (q63_t) ((q31_t) * px++ * *py--); - - /* Decrement the loop counter */ - k--; - } - - /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. - ** No loop unrolling is used. */ - k = srcBLen % 0x4U; - - while (k > 0U) - { - /* Perform the multiply-accumulates */ - sum += (q63_t) ((q31_t) * px++ * *py--); - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut++ = (q15_t) (__SSAT(sum >> 15, 16)); - - /* Increment the pointer pIn1 index, count by 1 */ - count++; - - /* Update the inputA and inputB pointers for next MAC calculation */ - if ((int32_t)firstIndex - (int32_t)srcBLen + 1 > 0) - { - px = pIn1 + firstIndex - srcBLen + 1 + count; - } - else - { - px = pIn1 + count; - } - py = pSrc2; - - /* Decrement the loop counter */ - blkCnt--; - } - } - else - { - /* If the srcBLen is not a multiple of 4, - * the blockSize2 loop cannot be unrolled by 4 */ - blkCnt = (uint32_t) blockSize2; - - while (blkCnt > 0U) - { - /* Accumulator is made zero for every iteration */ - sum = 0; - - /* srcBLen number of MACS should be performed */ - k = srcBLen; - - while (k > 0U) - { - /* Perform the multiply-accumulate */ - sum += (q63_t) ((q31_t) * px++ * *py--); - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut++ = (q15_t) (__SSAT(sum >> 15, 16)); - - /* Increment the MAC count */ - count++; - - /* Update the inputA and inputB pointers for next MAC calculation */ - if ((int32_t)firstIndex - (int32_t)srcBLen + 1 > 0) - { - px = pIn1 + firstIndex - srcBLen + 1 + count; - } - else - { - px = pIn1 + count; - } - py = pSrc2; - - /* Decrement the loop counter */ - blkCnt--; - } - } - - - /* -------------------------- - * Initializations of stage3 - * -------------------------*/ - - /* sum += x[srcALen-srcBLen+1] * y[srcBLen-1] + x[srcALen-srcBLen+2] * y[srcBLen-2] +...+ x[srcALen-1] * y[1] - * sum += x[srcALen-srcBLen+2] * y[srcBLen-1] + x[srcALen-srcBLen+3] * y[srcBLen-2] +...+ x[srcALen-1] * y[2] - * .... - * sum += x[srcALen-2] * y[srcBLen-1] + x[srcALen-1] * y[srcBLen-2] - * sum += x[srcALen-1] * y[srcBLen-1] - */ - - /* In this stage the MAC operations are decreased by 1 for every iteration. - The count variable holds the number of MAC operations performed */ - count = srcBLen - 1U; - - /* Working pointer of inputA */ - pSrc1 = (pIn1 + srcALen) - (srcBLen - 1U); - px = pSrc1; - - /* Working pointer of inputB */ - pSrc2 = pIn2 + (srcBLen - 1U); - pIn2 = pSrc2 - 1U; - py = pIn2; - - /* ------------------- - * Stage3 process - * ------------------*/ - - /* For loop unrolling by 4, this stage is divided into two. */ - /* First part of this stage computes the MAC operations greater than 4 */ - /* Second part of this stage computes the MAC operations less than or equal to 4 */ - - /* The first part of the stage starts here */ - j = count >> 2U; - - while ((j > 0U) && (blockSize3 > 0)) - { - /* Accumulator is made zero for every iteration */ - sum = 0; - - /* Apply loop unrolling and compute 4 MACs simultaneously. */ - k = count >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 MACs at a time. - ** a second loop below computes MACs for the remaining 1 to 3 samples. */ - while (k > 0U) - { - /* x[srcALen - srcBLen + 1], x[srcALen - srcBLen + 2] are multiplied - * with y[srcBLen - 1], y[srcBLen - 2] respectively */ - sum = __SMLALDX(*__SIMD32(px)++, *__SIMD32(py)--, sum); - /* x[srcALen - srcBLen + 3], x[srcALen - srcBLen + 4] are multiplied - * with y[srcBLen - 3], y[srcBLen - 4] respectively */ - sum = __SMLALDX(*__SIMD32(px)++, *__SIMD32(py)--, sum); - - /* Decrement the loop counter */ - k--; - } - - /* For the next MAC operations, the pointer py is used without SIMD - * So, py is incremented by 1 */ - py = py + 1U; - - /* If the count is not a multiple of 4, compute any remaining MACs here. - ** No loop unrolling is used. */ - k = count % 0x4U; - - while (k > 0U) - { - /* sum += x[srcALen - srcBLen + 5] * y[srcBLen - 5] */ - sum = __SMLALD(*px++, *py--, sum); - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut++ = (q15_t) (__SSAT((sum >> 15), 16)); - - /* Update the inputA and inputB pointers for next MAC calculation */ - px = ++pSrc1; - py = pIn2; - - /* Decrement the MAC count */ - count--; - - /* Decrement the loop counter */ - blockSize3--; - - j--; - } - - /* The second part of the stage starts here */ - /* SIMD is not used for the next MAC operations, - * so pointer py is updated to read only one sample at a time */ - py = py + 1U; - - while (blockSize3 > 0) - { - /* Accumulator is made zero for every iteration */ - sum = 0; - - /* Apply loop unrolling and compute 4 MACs simultaneously. */ - k = count; - - while (k > 0U) - { - /* Perform the multiply-accumulates */ - /* sum += x[srcALen-1] * y[srcBLen-1] */ - sum = __SMLALD(*px++, *py--, sum); - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut++ = (q15_t) (__SSAT((sum >> 15), 16)); - - /* Update the inputA and inputB pointers for next MAC calculation */ - px = ++pSrc1; - py = pSrc2; - - /* Decrement the MAC count */ - count--; - - /* Decrement the loop counter */ - blockSize3--; - } - - /* set status as ARM_MATH_SUCCESS */ - status = ARM_MATH_SUCCESS; - } - - /* Return to application */ - return (status); - -#else - - /* Run the below code for Cortex-M0 */ - - q15_t *pIn1 = pSrcA; /* inputA pointer */ - q15_t *pIn2 = pSrcB; /* inputB pointer */ - q63_t sum; /* Accumulator */ - uint32_t i, j; /* loop counters */ - arm_status status; /* status of Partial convolution */ - - /* Check for range of output samples to be calculated */ - if ((firstIndex + numPoints) > ((srcALen + (srcBLen - 1U)))) - { - /* Set status as ARM_ARGUMENT_ERROR */ - status = ARM_MATH_ARGUMENT_ERROR; - } - else - { - /* Loop to calculate convolution for output length number of values */ - for (i = firstIndex; i <= (firstIndex + numPoints - 1); i++) - { - /* Initialize sum with zero to carry on MAC operations */ - sum = 0; - - /* Loop to perform MAC operations according to convolution equation */ - for (j = 0; j <= i; j++) - { - /* Check the array limitations */ - if (((i - j) < srcBLen) && (j < srcALen)) - { - /* z[i] += x[i-j] * y[j] */ - sum += ((q31_t) pIn1[j] * (pIn2[i - j])); - } - } - - /* Store the output in the destination buffer */ - pDst[i] = (q15_t) __SSAT((sum >> 15U), 16U); - } - /* set status as ARM_SUCCESS as there are no argument errors */ - status = ARM_MATH_SUCCESS; - } - return (status); - -#endif /* #if (defined(ARM_MATH_CM7) || defined(ARM_MATH_CM4) || defined(ARM_MATH_CM3)) && !defined(UNALIGNED_SUPPORT_DISABLE) */ - -} - -/** - * @} end of PartialConv group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_q31.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_q31.c deleted file mode 100644 index 94999b9..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_q31.c +++ /dev/null @@ -1,616 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_conv_partial_q31.c - * Description: Partial convolution of Q31 sequences - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupFilters - */ - -/** - * @addtogroup PartialConv - * @{ - */ - -/** - * @brief Partial convolution of Q31 sequences. - * @param[in] *pSrcA points to the first input sequence. - * @param[in] srcALen length of the first input sequence. - * @param[in] *pSrcB points to the second input sequence. - * @param[in] srcBLen length of the second input sequence. - * @param[out] *pDst points to the location where the output result is written. - * @param[in] firstIndex is the first output sample to start with. - * @param[in] numPoints is the number of output points to be computed. - * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. - * - * See arm_conv_partial_fast_q31() for a faster but less precise implementation of this function for Cortex-M3 and Cortex-M4. - */ - -arm_status arm_conv_partial_q31( - q31_t * pSrcA, - uint32_t srcALen, - q31_t * pSrcB, - uint32_t srcBLen, - q31_t * pDst, - uint32_t firstIndex, - uint32_t numPoints) -{ - - -#if defined (ARM_MATH_DSP) - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - q31_t *pIn1; /* inputA pointer */ - q31_t *pIn2; /* inputB pointer */ - q31_t *pOut = pDst; /* output pointer */ - q31_t *px; /* Intermediate inputA pointer */ - q31_t *py; /* Intermediate inputB pointer */ - q31_t *pSrc1, *pSrc2; /* Intermediate pointers */ - q63_t sum, acc0, acc1, acc2; /* Accumulator */ - q31_t x0, x1, x2, c0; - uint32_t j, k, count, check, blkCnt; - int32_t blockSize1, blockSize2, blockSize3; /* loop counter */ - arm_status status; /* status of Partial convolution */ - - - /* Check for range of output samples to be calculated */ - if ((firstIndex + numPoints) > ((srcALen + (srcBLen - 1U)))) - { - /* Set status as ARM_MATH_ARGUMENT_ERROR */ - status = ARM_MATH_ARGUMENT_ERROR; - } - else - { - - /* The algorithm implementation is based on the lengths of the inputs. */ - /* srcB is always made to slide across srcA. */ - /* So srcBLen is always considered as shorter or equal to srcALen */ - if (srcALen >= srcBLen) - { - /* Initialization of inputA pointer */ - pIn1 = pSrcA; - - /* Initialization of inputB pointer */ - pIn2 = pSrcB; - } - else - { - /* Initialization of inputA pointer */ - pIn1 = pSrcB; - - /* Initialization of inputB pointer */ - pIn2 = pSrcA; - - /* srcBLen is always considered as shorter or equal to srcALen */ - j = srcBLen; - srcBLen = srcALen; - srcALen = j; - } - - /* Conditions to check which loopCounter holds - * the first and last indices of the output samples to be calculated. */ - check = firstIndex + numPoints; - blockSize3 = ((int32_t)check > (int32_t)srcALen) ? (int32_t)check - (int32_t)srcALen : 0; - blockSize3 = ((int32_t)firstIndex > (int32_t)srcALen - 1) ? blockSize3 - (int32_t)firstIndex + (int32_t)srcALen : blockSize3; - blockSize1 = (((int32_t) srcBLen - 1) - (int32_t) firstIndex); - blockSize1 = (blockSize1 > 0) ? ((check > (srcBLen - 1U)) ? blockSize1 : - (int32_t) numPoints) : 0; - blockSize2 = (int32_t) check - ((blockSize3 + blockSize1) + - (int32_t) firstIndex); - blockSize2 = (blockSize2 > 0) ? blockSize2 : 0; - - /* conv(x,y) at n = x[n] * y[0] + x[n-1] * y[1] + x[n-2] * y[2] + ...+ x[n-N+1] * y[N -1] */ - /* The function is internally - * divided into three stages according to the number of multiplications that has to be - * taken place between inputA samples and inputB samples. In the first stage of the - * algorithm, the multiplications increase by one for every iteration. - * In the second stage of the algorithm, srcBLen number of multiplications are done. - * In the third stage of the algorithm, the multiplications decrease by one - * for every iteration. */ - - /* Set the output pointer to point to the firstIndex - * of the output sample to be calculated. */ - pOut = pDst + firstIndex; - - /* -------------------------- - * Initializations of stage1 - * -------------------------*/ - - /* sum = x[0] * y[0] - * sum = x[0] * y[1] + x[1] * y[0] - * .... - * sum = x[0] * y[srcBlen - 1] + x[1] * y[srcBlen - 2] +...+ x[srcBLen - 1] * y[0] - */ - - /* In this stage the MAC operations are increased by 1 for every iteration. - The count variable holds the number of MAC operations performed. - Since the partial convolution starts from firstIndex - Number of Macs to be performed is firstIndex + 1 */ - count = 1U + firstIndex; - - /* Working pointer of inputA */ - px = pIn1; - - /* Working pointer of inputB */ - pSrc2 = pIn2 + firstIndex; - py = pSrc2; - - /* ------------------------ - * Stage1 process - * ----------------------*/ - - /* The first loop starts here */ - while (blockSize1 > 0) - { - /* Accumulator is made zero for every iteration */ - sum = 0; - - /* Apply loop unrolling and compute 4 MACs simultaneously. */ - k = count >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 MACs at a time. - ** a second loop below computes MACs for the remaining 1 to 3 samples. */ - while (k > 0U) - { - /* x[0] * y[srcBLen - 1] */ - sum += (q63_t) * px++ * (*py--); - /* x[1] * y[srcBLen - 2] */ - sum += (q63_t) * px++ * (*py--); - /* x[2] * y[srcBLen - 3] */ - sum += (q63_t) * px++ * (*py--); - /* x[3] * y[srcBLen - 4] */ - sum += (q63_t) * px++ * (*py--); - - /* Decrement the loop counter */ - k--; - } - - /* If the count is not a multiple of 4, compute any remaining MACs here. - ** No loop unrolling is used. */ - k = count % 0x4U; - - while (k > 0U) - { - /* Perform the multiply-accumulate */ - sum += (q63_t) * px++ * (*py--); - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut++ = (q31_t) (sum >> 31); - - /* Update the inputA and inputB pointers for next MAC calculation */ - py = ++pSrc2; - px = pIn1; - - /* Increment the MAC count */ - count++; - - /* Decrement the loop counter */ - blockSize1--; - } - - /* -------------------------- - * Initializations of stage2 - * ------------------------*/ - - /* sum = x[0] * y[srcBLen-1] + x[1] * y[srcBLen-2] +...+ x[srcBLen-1] * y[0] - * sum = x[1] * y[srcBLen-1] + x[2] * y[srcBLen-2] +...+ x[srcBLen] * y[0] - * .... - * sum = x[srcALen-srcBLen-2] * y[srcBLen-1] + x[srcALen] * y[srcBLen-2] +...+ x[srcALen-1] * y[0] - */ - - /* Working pointer of inputA */ - if ((int32_t)firstIndex - (int32_t)srcBLen + 1 > 0) - { - px = pIn1 + firstIndex - srcBLen + 1; - } - else - { - px = pIn1; - } - - /* Working pointer of inputB */ - pSrc2 = pIn2 + (srcBLen - 1U); - py = pSrc2; - - /* count is index by which the pointer pIn1 to be incremented */ - count = 0U; - - /* ------------------- - * Stage2 process - * ------------------*/ - - /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed. - * So, to loop unroll over blockSize2, - * srcBLen should be greater than or equal to 4 */ - if (srcBLen >= 4U) - { - /* Loop unroll over blkCnt */ - - blkCnt = blockSize2 / 3; - while (blkCnt > 0U) - { - /* Set all accumulators to zero */ - acc0 = 0; - acc1 = 0; - acc2 = 0; - - /* read x[0], x[1] samples */ - x0 = *(px++); - x1 = *(px++); - - /* Apply loop unrolling and compute 3 MACs simultaneously. */ - k = srcBLen / 3; - - /* First part of the processing with loop unrolling. Compute 3 MACs at a time. - ** a second loop below computes MACs for the remaining 1 to 2 samples. */ - do - { - /* Read y[srcBLen - 1] sample */ - c0 = *(py); - - /* Read x[2] sample */ - x2 = *(px); - - /* Perform the multiply-accumulates */ - /* acc0 += x[0] * y[srcBLen - 1] */ - acc0 += (q63_t) x0 *c0; - /* acc1 += x[1] * y[srcBLen - 1] */ - acc1 += (q63_t) x1 *c0; - /* acc2 += x[2] * y[srcBLen - 1] */ - acc2 += (q63_t) x2 *c0; - - /* Read y[srcBLen - 2] sample */ - c0 = *(py - 1U); - - /* Read x[3] sample */ - x0 = *(px + 1U); - - /* Perform the multiply-accumulate */ - /* acc0 += x[1] * y[srcBLen - 2] */ - acc0 += (q63_t) x1 *c0; - /* acc1 += x[2] * y[srcBLen - 2] */ - acc1 += (q63_t) x2 *c0; - /* acc2 += x[3] * y[srcBLen - 2] */ - acc2 += (q63_t) x0 *c0; - - /* Read y[srcBLen - 3] sample */ - c0 = *(py - 2U); - - /* Read x[4] sample */ - x1 = *(px + 2U); - - /* Perform the multiply-accumulates */ - /* acc0 += x[2] * y[srcBLen - 3] */ - acc0 += (q63_t) x2 *c0; - /* acc1 += x[3] * y[srcBLen - 2] */ - acc1 += (q63_t) x0 *c0; - /* acc2 += x[4] * y[srcBLen - 2] */ - acc2 += (q63_t) x1 *c0; - - - px += 3U; - - py -= 3U; - - } while (--k); - - /* If the srcBLen is not a multiple of 3, compute any remaining MACs here. - ** No loop unrolling is used. */ - k = srcBLen - (3 * (srcBLen / 3)); - - while (k > 0U) - { - /* Read y[srcBLen - 5] sample */ - c0 = *(py--); - - /* Read x[7] sample */ - x2 = *(px++); - - /* Perform the multiply-accumulates */ - /* acc0 += x[4] * y[srcBLen - 5] */ - acc0 += (q63_t) x0 *c0; - /* acc1 += x[5] * y[srcBLen - 5] */ - acc1 += (q63_t) x1 *c0; - /* acc2 += x[6] * y[srcBLen - 5] */ - acc2 += (q63_t) x2 *c0; - - /* Reuse the present samples for the next MAC */ - x0 = x1; - x1 = x2; - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut++ = (q31_t) (acc0 >> 31); - *pOut++ = (q31_t) (acc1 >> 31); - *pOut++ = (q31_t) (acc2 >> 31); - - /* Increment the pointer pIn1 index, count by 3 */ - count += 3U; - - /* Update the inputA and inputB pointers for next MAC calculation */ - if ((int32_t)firstIndex - (int32_t)srcBLen + 1 > 0) - { - px = pIn1 + firstIndex - srcBLen + 1 + count; - } - else - { - px = pIn1 + count; - } - py = pSrc2; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize2 is not a multiple of 3, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize2 - 3 * (blockSize2 / 3); - - while (blkCnt > 0U) - { - /* Accumulator is made zero for every iteration */ - sum = 0; - - /* Apply loop unrolling and compute 4 MACs simultaneously. */ - k = srcBLen >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 MACs at a time. - ** a second loop below computes MACs for the remaining 1 to 3 samples. */ - while (k > 0U) - { - /* Perform the multiply-accumulates */ - sum += (q63_t) * px++ * (*py--); - sum += (q63_t) * px++ * (*py--); - sum += (q63_t) * px++ * (*py--); - sum += (q63_t) * px++ * (*py--); - - /* Decrement the loop counter */ - k--; - } - - /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. - ** No loop unrolling is used. */ - k = srcBLen % 0x4U; - - while (k > 0U) - { - /* Perform the multiply-accumulate */ - sum += (q63_t) * px++ * (*py--); - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut++ = (q31_t) (sum >> 31); - - /* Increment the MAC count */ - count++; - - /* Update the inputA and inputB pointers for next MAC calculation */ - if ((int32_t)firstIndex - (int32_t)srcBLen + 1 > 0) - { - px = pIn1 + firstIndex - srcBLen + 1 + count; - } - else - { - px = pIn1 + count; - } - py = pSrc2; - - /* Decrement the loop counter */ - blkCnt--; - } - } - else - { - /* If the srcBLen is not a multiple of 4, - * the blockSize2 loop cannot be unrolled by 4 */ - blkCnt = (uint32_t) blockSize2; - - while (blkCnt > 0U) - { - /* Accumulator is made zero for every iteration */ - sum = 0; - - /* srcBLen number of MACS should be performed */ - k = srcBLen; - - while (k > 0U) - { - /* Perform the multiply-accumulate */ - sum += (q63_t) * px++ * (*py--); - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut++ = (q31_t) (sum >> 31); - - /* Increment the MAC count */ - count++; - - /* Update the inputA and inputB pointers for next MAC calculation */ - if ((int32_t)firstIndex - (int32_t)srcBLen + 1 > 0) - { - px = pIn1 + firstIndex - srcBLen + 1 + count; - } - else - { - px = pIn1 + count; - } - py = pSrc2; - - /* Decrement the loop counter */ - blkCnt--; - } - } - - - /* -------------------------- - * Initializations of stage3 - * -------------------------*/ - - /* sum += x[srcALen-srcBLen+1] * y[srcBLen-1] + x[srcALen-srcBLen+2] * y[srcBLen-2] +...+ x[srcALen-1] * y[1] - * sum += x[srcALen-srcBLen+2] * y[srcBLen-1] + x[srcALen-srcBLen+3] * y[srcBLen-2] +...+ x[srcALen-1] * y[2] - * .... - * sum += x[srcALen-2] * y[srcBLen-1] + x[srcALen-1] * y[srcBLen-2] - * sum += x[srcALen-1] * y[srcBLen-1] - */ - - /* In this stage the MAC operations are decreased by 1 for every iteration. - The blockSize3 variable holds the number of MAC operations performed */ - count = srcBLen - 1U; - - /* Working pointer of inputA */ - pSrc1 = (pIn1 + srcALen) - (srcBLen - 1U); - px = pSrc1; - - /* Working pointer of inputB */ - pSrc2 = pIn2 + (srcBLen - 1U); - py = pSrc2; - - /* ------------------- - * Stage3 process - * ------------------*/ - - while (blockSize3 > 0) - { - /* Accumulator is made zero for every iteration */ - sum = 0; - - /* Apply loop unrolling and compute 4 MACs simultaneously. */ - k = count >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 MACs at a time. - ** a second loop below computes MACs for the remaining 1 to 3 samples. */ - while (k > 0U) - { - sum += (q63_t) * px++ * (*py--); - sum += (q63_t) * px++ * (*py--); - sum += (q63_t) * px++ * (*py--); - sum += (q63_t) * px++ * (*py--); - - /* Decrement the loop counter */ - k--; - } - - /* If the blockSize3 is not a multiple of 4, compute any remaining MACs here. - ** No loop unrolling is used. */ - k = count % 0x4U; - - while (k > 0U) - { - /* Perform the multiply-accumulate */ - sum += (q63_t) * px++ * (*py--); - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut++ = (q31_t) (sum >> 31); - - /* Update the inputA and inputB pointers for next MAC calculation */ - px = ++pSrc1; - py = pSrc2; - - /* Decrement the MAC count */ - count--; - - /* Decrement the loop counter */ - blockSize3--; - - } - - /* set status as ARM_MATH_SUCCESS */ - status = ARM_MATH_SUCCESS; - } - - /* Return to application */ - return (status); - -#else - - /* Run the below code for Cortex-M0 */ - - q31_t *pIn1 = pSrcA; /* inputA pointer */ - q31_t *pIn2 = pSrcB; /* inputB pointer */ - q63_t sum; /* Accumulator */ - uint32_t i, j; /* loop counters */ - arm_status status; /* status of Partial convolution */ - - /* Check for range of output samples to be calculated */ - if ((firstIndex + numPoints) > ((srcALen + (srcBLen - 1U)))) - { - /* Set status as ARM_ARGUMENT_ERROR */ - status = ARM_MATH_ARGUMENT_ERROR; - } - else - { - /* Loop to calculate convolution for output length number of values */ - for (i = firstIndex; i <= (firstIndex + numPoints - 1); i++) - { - /* Initialize sum with zero to carry on MAC operations */ - sum = 0; - - /* Loop to perform MAC operations according to convolution equation */ - for (j = 0; j <= i; j++) - { - /* Check the array limitations */ - if (((i - j) < srcBLen) && (j < srcALen)) - { - /* z[i] += x[i-j] * y[j] */ - sum += ((q63_t) pIn1[j] * (pIn2[i - j])); - } - } - - /* Store the output in the destination buffer */ - pDst[i] = (q31_t) (sum >> 31U); - } - /* set status as ARM_SUCCESS as there are no argument errors */ - status = ARM_MATH_SUCCESS; - } - return (status); - -#endif /* #if defined (ARM_MATH_DSP) */ - -} - -/** - * @} end of PartialConv group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_q7.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_q7.c deleted file mode 100644 index d4e0679..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_q7.c +++ /dev/null @@ -1,750 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_conv_partial_q7.c - * Description: Partial convolution of Q7 sequences - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupFilters - */ - -/** - * @addtogroup PartialConv - * @{ - */ - -/** - * @brief Partial convolution of Q7 sequences. - * @param[in] *pSrcA points to the first input sequence. - * @param[in] srcALen length of the first input sequence. - * @param[in] *pSrcB points to the second input sequence. - * @param[in] srcBLen length of the second input sequence. - * @param[out] *pDst points to the location where the output result is written. - * @param[in] firstIndex is the first output sample to start with. - * @param[in] numPoints is the number of output points to be computed. - * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. - * - * \par - * Refer the function arm_conv_partial_opt_q7() for a faster implementation of this function. - * - */ - -arm_status arm_conv_partial_q7( - q7_t * pSrcA, - uint32_t srcALen, - q7_t * pSrcB, - uint32_t srcBLen, - q7_t * pDst, - uint32_t firstIndex, - uint32_t numPoints) -{ - - -#if defined (ARM_MATH_DSP) - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - q7_t *pIn1; /* inputA pointer */ - q7_t *pIn2; /* inputB pointer */ - q7_t *pOut = pDst; /* output pointer */ - q7_t *px; /* Intermediate inputA pointer */ - q7_t *py; /* Intermediate inputB pointer */ - q7_t *pSrc1, *pSrc2; /* Intermediate pointers */ - q31_t sum, acc0, acc1, acc2, acc3; /* Accumulator */ - q31_t input1, input2; - q15_t in1, in2; - q7_t x0, x1, x2, x3, c0, c1; - uint32_t j, k, count, check, blkCnt; - int32_t blockSize1, blockSize2, blockSize3; /* loop counter */ - arm_status status; - - - /* Check for range of output samples to be calculated */ - if ((firstIndex + numPoints) > ((srcALen + (srcBLen - 1U)))) - { - /* Set status as ARM_MATH_ARGUMENT_ERROR */ - status = ARM_MATH_ARGUMENT_ERROR; - } - else - { - - /* The algorithm implementation is based on the lengths of the inputs. */ - /* srcB is always made to slide across srcA. */ - /* So srcBLen is always considered as shorter or equal to srcALen */ - if (srcALen >= srcBLen) - { - /* Initialization of inputA pointer */ - pIn1 = pSrcA; - - /* Initialization of inputB pointer */ - pIn2 = pSrcB; - } - else - { - /* Initialization of inputA pointer */ - pIn1 = pSrcB; - - /* Initialization of inputB pointer */ - pIn2 = pSrcA; - - /* srcBLen is always considered as shorter or equal to srcALen */ - j = srcBLen; - srcBLen = srcALen; - srcALen = j; - } - - /* Conditions to check which loopCounter holds - * the first and last indices of the output samples to be calculated. */ - check = firstIndex + numPoints; - blockSize3 = ((int32_t)check > (int32_t)srcALen) ? (int32_t)check - (int32_t)srcALen : 0; - blockSize3 = ((int32_t)firstIndex > (int32_t)srcALen - 1) ? blockSize3 - (int32_t)firstIndex + (int32_t)srcALen : blockSize3; - blockSize1 = (((int32_t) srcBLen - 1) - (int32_t) firstIndex); - blockSize1 = (blockSize1 > 0) ? ((check > (srcBLen - 1U)) ? blockSize1 : - (int32_t) numPoints) : 0; - blockSize2 = (int32_t) check - ((blockSize3 + blockSize1) + - (int32_t) firstIndex); - blockSize2 = (blockSize2 > 0) ? blockSize2 : 0; - - /* conv(x,y) at n = x[n] * y[0] + x[n-1] * y[1] + x[n-2] * y[2] + ...+ x[n-N+1] * y[N -1] */ - /* The function is internally - * divided into three stages according to the number of multiplications that has to be - * taken place between inputA samples and inputB samples. In the first stage of the - * algorithm, the multiplications increase by one for every iteration. - * In the second stage of the algorithm, srcBLen number of multiplications are done. - * In the third stage of the algorithm, the multiplications decrease by one - * for every iteration. */ - - /* Set the output pointer to point to the firstIndex - * of the output sample to be calculated. */ - pOut = pDst + firstIndex; - - /* -------------------------- - * Initializations of stage1 - * -------------------------*/ - - /* sum = x[0] * y[0] - * sum = x[0] * y[1] + x[1] * y[0] - * .... - * sum = x[0] * y[srcBlen - 1] + x[1] * y[srcBlen - 2] +...+ x[srcBLen - 1] * y[0] - */ - - /* In this stage the MAC operations are increased by 1 for every iteration. - The count variable holds the number of MAC operations performed. - Since the partial convolution starts from from firstIndex - Number of Macs to be performed is firstIndex + 1 */ - count = 1U + firstIndex; - - /* Working pointer of inputA */ - px = pIn1; - - /* Working pointer of inputB */ - pSrc2 = pIn2 + firstIndex; - py = pSrc2; - - /* ------------------------ - * Stage1 process - * ----------------------*/ - - /* The first stage starts here */ - while (blockSize1 > 0) - { - /* Accumulator is made zero for every iteration */ - sum = 0; - - /* Apply loop unrolling and compute 4 MACs simultaneously. */ - k = count >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 MACs at a time. - ** a second loop below computes MACs for the remaining 1 to 3 samples. */ - while (k > 0U) - { - /* x[0] , x[1] */ - in1 = (q15_t) * px++; - in2 = (q15_t) * px++; - input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); - - /* y[srcBLen - 1] , y[srcBLen - 2] */ - in1 = (q15_t) * py--; - in2 = (q15_t) * py--; - input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); - - /* x[0] * y[srcBLen - 1] */ - /* x[1] * y[srcBLen - 2] */ - sum = __SMLAD(input1, input2, sum); - - /* x[2] , x[3] */ - in1 = (q15_t) * px++; - in2 = (q15_t) * px++; - input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); - - /* y[srcBLen - 3] , y[srcBLen - 4] */ - in1 = (q15_t) * py--; - in2 = (q15_t) * py--; - input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); - - /* x[2] * y[srcBLen - 3] */ - /* x[3] * y[srcBLen - 4] */ - sum = __SMLAD(input1, input2, sum); - - /* Decrement the loop counter */ - k--; - } - - /* If the count is not a multiple of 4, compute any remaining MACs here. - ** No loop unrolling is used. */ - k = count % 0x4U; - - while (k > 0U) - { - /* Perform the multiply-accumulates */ - sum += ((q31_t) * px++ * *py--); - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut++ = (q7_t) (__SSAT(sum >> 7, 8)); - - /* Update the inputA and inputB pointers for next MAC calculation */ - py = ++pSrc2; - px = pIn1; - - /* Increment the MAC count */ - count++; - - /* Decrement the loop counter */ - blockSize1--; - } - - /* -------------------------- - * Initializations of stage2 - * ------------------------*/ - - /* sum = x[0] * y[srcBLen-1] + x[1] * y[srcBLen-2] +...+ x[srcBLen-1] * y[0] - * sum = x[1] * y[srcBLen-1] + x[2] * y[srcBLen-2] +...+ x[srcBLen] * y[0] - * .... - * sum = x[srcALen-srcBLen-2] * y[srcBLen-1] + x[srcALen] * y[srcBLen-2] +...+ x[srcALen-1] * y[0] - */ - - /* Working pointer of inputA */ - if ((int32_t)firstIndex - (int32_t)srcBLen + 1 > 0) - { - px = pIn1 + firstIndex - srcBLen + 1; - } - else - { - px = pIn1; - } - - /* Working pointer of inputB */ - pSrc2 = pIn2 + (srcBLen - 1U); - py = pSrc2; - - /* count is index by which the pointer pIn1 to be incremented */ - count = 0U; - - /* ------------------- - * Stage2 process - * ------------------*/ - - /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed. - * So, to loop unroll over blockSize2, - * srcBLen should be greater than or equal to 4 */ - if (srcBLen >= 4U) - { - /* Loop unroll over blockSize2, by 4 */ - blkCnt = ((uint32_t) blockSize2 >> 2U); - - while (blkCnt > 0U) - { - /* Set all accumulators to zero */ - acc0 = 0; - acc1 = 0; - acc2 = 0; - acc3 = 0; - - /* read x[0], x[1], x[2] samples */ - x0 = *(px++); - x1 = *(px++); - x2 = *(px++); - - /* Apply loop unrolling and compute 4 MACs simultaneously. */ - k = srcBLen >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 MACs at a time. - ** a second loop below computes MACs for the remaining 1 to 3 samples. */ - do - { - /* Read y[srcBLen - 1] sample */ - c0 = *(py--); - /* Read y[srcBLen - 2] sample */ - c1 = *(py--); - - /* Read x[3] sample */ - x3 = *(px++); - - /* x[0] and x[1] are packed */ - in1 = (q15_t) x0; - in2 = (q15_t) x1; - - input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); - - /* y[srcBLen - 1] and y[srcBLen - 2] are packed */ - in1 = (q15_t) c0; - in2 = (q15_t) c1; - - input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); - - /* acc0 += x[0] * y[srcBLen - 1] + x[1] * y[srcBLen - 2] */ - acc0 = __SMLAD(input1, input2, acc0); - - /* x[1] and x[2] are packed */ - in1 = (q15_t) x1; - in2 = (q15_t) x2; - - input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); - - /* acc1 += x[1] * y[srcBLen - 1] + x[2] * y[srcBLen - 2] */ - acc1 = __SMLAD(input1, input2, acc1); - - /* x[2] and x[3] are packed */ - in1 = (q15_t) x2; - in2 = (q15_t) x3; - - input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); - - /* acc2 += x[2] * y[srcBLen - 1] + x[3] * y[srcBLen - 2] */ - acc2 = __SMLAD(input1, input2, acc2); - - /* Read x[4] sample */ - x0 = *(px++); - - /* x[3] and x[4] are packed */ - in1 = (q15_t) x3; - in2 = (q15_t) x0; - - input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); - - /* acc3 += x[3] * y[srcBLen - 1] + x[4] * y[srcBLen - 2] */ - acc3 = __SMLAD(input1, input2, acc3); - - /* Read y[srcBLen - 3] sample */ - c0 = *(py--); - /* Read y[srcBLen - 4] sample */ - c1 = *(py--); - - /* Read x[5] sample */ - x1 = *(px++); - - /* x[2] and x[3] are packed */ - in1 = (q15_t) x2; - in2 = (q15_t) x3; - - input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); - - /* y[srcBLen - 3] and y[srcBLen - 4] are packed */ - in1 = (q15_t) c0; - in2 = (q15_t) c1; - - input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); - - /* acc0 += x[2] * y[srcBLen - 3] + x[3] * y[srcBLen - 4] */ - acc0 = __SMLAD(input1, input2, acc0); - - /* x[3] and x[4] are packed */ - in1 = (q15_t) x3; - in2 = (q15_t) x0; - - input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); - - /* acc1 += x[3] * y[srcBLen - 3] + x[4] * y[srcBLen - 4] */ - acc1 = __SMLAD(input1, input2, acc1); - - /* x[4] and x[5] are packed */ - in1 = (q15_t) x0; - in2 = (q15_t) x1; - - input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); - - /* acc2 += x[4] * y[srcBLen - 3] + x[5] * y[srcBLen - 4] */ - acc2 = __SMLAD(input1, input2, acc2); - - /* Read x[6] sample */ - x2 = *(px++); - - /* x[5] and x[6] are packed */ - in1 = (q15_t) x1; - in2 = (q15_t) x2; - - input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); - - /* acc3 += x[5] * y[srcBLen - 3] + x[6] * y[srcBLen - 4] */ - acc3 = __SMLAD(input1, input2, acc3); - - } while (--k); - - /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. - ** No loop unrolling is used. */ - k = srcBLen % 0x4U; - - while (k > 0U) - { - /* Read y[srcBLen - 5] sample */ - c0 = *(py--); - - /* Read x[7] sample */ - x3 = *(px++); - - /* Perform the multiply-accumulates */ - /* acc0 += x[4] * y[srcBLen - 5] */ - acc0 += ((q31_t) x0 * c0); - /* acc1 += x[5] * y[srcBLen - 5] */ - acc1 += ((q31_t) x1 * c0); - /* acc2 += x[6] * y[srcBLen - 5] */ - acc2 += ((q31_t) x2 * c0); - /* acc3 += x[7] * y[srcBLen - 5] */ - acc3 += ((q31_t) x3 * c0); - - /* Reuse the present samples for the next MAC */ - x0 = x1; - x1 = x2; - x2 = x3; - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut++ = (q7_t) (__SSAT(acc0 >> 7, 8)); - *pOut++ = (q7_t) (__SSAT(acc1 >> 7, 8)); - *pOut++ = (q7_t) (__SSAT(acc2 >> 7, 8)); - *pOut++ = (q7_t) (__SSAT(acc3 >> 7, 8)); - - /* Increment the pointer pIn1 index, count by 4 */ - count += 4U; - - /* Update the inputA and inputB pointers for next MAC calculation */ - if ((int32_t)firstIndex - (int32_t)srcBLen + 1 > 0) - { - px = pIn1 + firstIndex - srcBLen + 1 + count; - } - else - { - px = pIn1 + count; - } - py = pSrc2; - - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize2 is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = (uint32_t) blockSize2 % 0x4U; - - while (blkCnt > 0U) - { - /* Accumulator is made zero for every iteration */ - sum = 0; - - /* Apply loop unrolling and compute 4 MACs simultaneously. */ - k = srcBLen >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 MACs at a time. - ** a second loop below computes MACs for the remaining 1 to 3 samples. */ - while (k > 0U) - { - - /* Reading two inputs of SrcA buffer and packing */ - in1 = (q15_t) * px++; - in2 = (q15_t) * px++; - input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); - - /* Reading two inputs of SrcB buffer and packing */ - in1 = (q15_t) * py--; - in2 = (q15_t) * py--; - input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); - - /* Perform the multiply-accumulates */ - sum = __SMLAD(input1, input2, sum); - - /* Reading two inputs of SrcA buffer and packing */ - in1 = (q15_t) * px++; - in2 = (q15_t) * px++; - input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); - - /* Reading two inputs of SrcB buffer and packing */ - in1 = (q15_t) * py--; - in2 = (q15_t) * py--; - input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); - - /* Perform the multiply-accumulates */ - sum = __SMLAD(input1, input2, sum); - - /* Decrement the loop counter */ - k--; - } - - /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. - ** No loop unrolling is used. */ - k = srcBLen % 0x4U; - - while (k > 0U) - { - /* Perform the multiply-accumulates */ - sum += ((q31_t) * px++ * *py--); - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut++ = (q7_t) (__SSAT(sum >> 7, 8)); - - /* Increment the pointer pIn1 index, count by 1 */ - count++; - - /* Update the inputA and inputB pointers for next MAC calculation */ - if ((int32_t)firstIndex - (int32_t)srcBLen + 1 > 0) - { - px = pIn1 + firstIndex - srcBLen + 1 + count; - } - else - { - px = pIn1 + count; - } - py = pSrc2; - - /* Decrement the loop counter */ - blkCnt--; - } - } - else - { - /* If the srcBLen is not a multiple of 4, - * the blockSize2 loop cannot be unrolled by 4 */ - blkCnt = (uint32_t) blockSize2; - - while (blkCnt > 0U) - { - /* Accumulator is made zero for every iteration */ - sum = 0; - - /* srcBLen number of MACS should be performed */ - k = srcBLen; - - while (k > 0U) - { - /* Perform the multiply-accumulate */ - sum += ((q31_t) * px++ * *py--); - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut++ = (q7_t) (__SSAT(sum >> 7, 8)); - - /* Increment the MAC count */ - count++; - - /* Update the inputA and inputB pointers for next MAC calculation */ - if ((int32_t)firstIndex - (int32_t)srcBLen + 1 > 0) - { - px = pIn1 + firstIndex - srcBLen + 1 + count; - } - else - { - px = pIn1 + count; - } - py = pSrc2; - - /* Decrement the loop counter */ - blkCnt--; - } - } - - - /* -------------------------- - * Initializations of stage3 - * -------------------------*/ - - /* sum += x[srcALen-srcBLen+1] * y[srcBLen-1] + x[srcALen-srcBLen+2] * y[srcBLen-2] +...+ x[srcALen-1] * y[1] - * sum += x[srcALen-srcBLen+2] * y[srcBLen-1] + x[srcALen-srcBLen+3] * y[srcBLen-2] +...+ x[srcALen-1] * y[2] - * .... - * sum += x[srcALen-2] * y[srcBLen-1] + x[srcALen-1] * y[srcBLen-2] - * sum += x[srcALen-1] * y[srcBLen-1] - */ - - /* In this stage the MAC operations are decreased by 1 for every iteration. - The count variable holds the number of MAC operations performed */ - count = srcBLen - 1U; - - /* Working pointer of inputA */ - pSrc1 = (pIn1 + srcALen) - (srcBLen - 1U); - px = pSrc1; - - /* Working pointer of inputB */ - pSrc2 = pIn2 + (srcBLen - 1U); - py = pSrc2; - - /* ------------------- - * Stage3 process - * ------------------*/ - - while (blockSize3 > 0) - { - /* Accumulator is made zero for every iteration */ - sum = 0; - - /* Apply loop unrolling and compute 4 MACs simultaneously. */ - k = count >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 MACs at a time. - ** a second loop below computes MACs for the remaining 1 to 3 samples. */ - while (k > 0U) - { - /* Reading two inputs, x[srcALen - srcBLen + 1] and x[srcALen - srcBLen + 2] of SrcA buffer and packing */ - in1 = (q15_t) * px++; - in2 = (q15_t) * px++; - input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); - - /* Reading two inputs, y[srcBLen - 1] and y[srcBLen - 2] of SrcB buffer and packing */ - in1 = (q15_t) * py--; - in2 = (q15_t) * py--; - input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); - - /* sum += x[srcALen - srcBLen + 1] * y[srcBLen - 1] */ - /* sum += x[srcALen - srcBLen + 2] * y[srcBLen - 2] */ - sum = __SMLAD(input1, input2, sum); - - /* Reading two inputs, x[srcALen - srcBLen + 3] and x[srcALen - srcBLen + 4] of SrcA buffer and packing */ - in1 = (q15_t) * px++; - in2 = (q15_t) * px++; - input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); - - /* Reading two inputs, y[srcBLen - 3] and y[srcBLen - 4] of SrcB buffer and packing */ - in1 = (q15_t) * py--; - in2 = (q15_t) * py--; - input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); - - /* sum += x[srcALen - srcBLen + 3] * y[srcBLen - 3] */ - /* sum += x[srcALen - srcBLen + 4] * y[srcBLen - 4] */ - sum = __SMLAD(input1, input2, sum); - - /* Decrement the loop counter */ - k--; - } - - /* If the count is not a multiple of 4, compute any remaining MACs here. - ** No loop unrolling is used. */ - k = count % 0x4U; - - while (k > 0U) - { - /* Perform the multiply-accumulates */ - /* sum += x[srcALen-1] * y[srcBLen-1] */ - sum += ((q31_t) * px++ * *py--); - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut++ = (q7_t) (__SSAT(sum >> 7, 8)); - - /* Update the inputA and inputB pointers for next MAC calculation */ - px = ++pSrc1; - py = pSrc2; - - /* Decrement the MAC count */ - count--; - - /* Decrement the loop counter */ - blockSize3--; - - } - - /* set status as ARM_MATH_SUCCESS */ - status = ARM_MATH_SUCCESS; - } - - /* Return to application */ - return (status); - -#else - - /* Run the below code for Cortex-M0 */ - - q7_t *pIn1 = pSrcA; /* inputA pointer */ - q7_t *pIn2 = pSrcB; /* inputB pointer */ - q31_t sum; /* Accumulator */ - uint32_t i, j; /* loop counters */ - arm_status status; /* status of Partial convolution */ - - /* Check for range of output samples to be calculated */ - if ((firstIndex + numPoints) > ((srcALen + (srcBLen - 1U)))) - { - /* Set status as ARM_ARGUMENT_ERROR */ - status = ARM_MATH_ARGUMENT_ERROR; - } - else - { - /* Loop to calculate convolution for output length number of values */ - for (i = firstIndex; i <= (firstIndex + numPoints - 1); i++) - { - /* Initialize sum with zero to carry on MAC operations */ - sum = 0; - - /* Loop to perform MAC operations according to convolution equation */ - for (j = 0; j <= i; j++) - { - /* Check the array limitations */ - if (((i - j) < srcBLen) && (j < srcALen)) - { - /* z[i] += x[i-j] * y[j] */ - sum += ((q15_t) pIn1[j] * (pIn2[i - j])); - } - } - - /* Store the output in the destination buffer */ - pDst[i] = (q7_t) __SSAT((sum >> 7U), 8U); - } - /* set status as ARM_SUCCESS as there are no argument errors */ - status = ARM_MATH_SUCCESS; - } - return (status); - -#endif /* #if defined (ARM_MATH_DSP) */ - -} - -/** - * @} end of PartialConv group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_q15.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_q15.c deleted file mode 100644 index 29513fd..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_q15.c +++ /dev/null @@ -1,722 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_conv_q15.c - * Description: Convolution of Q15 sequences - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupFilters - */ - -/** - * @addtogroup Conv - * @{ - */ - -/** - * @brief Convolution of Q15 sequences. - * @param[in] *pSrcA points to the first input sequence. - * @param[in] srcALen length of the first input sequence. - * @param[in] *pSrcB points to the second input sequence. - * @param[in] srcBLen length of the second input sequence. - * @param[out] *pDst points to the location where the output result is written. Length srcALen+srcBLen-1. - * @return none. - * - * @details - * Scaling and Overflow Behavior: - * - * \par - * The function is implemented using a 64-bit internal accumulator. - * Both inputs are in 1.15 format and multiplications yield a 2.30 result. - * The 2.30 intermediate results are accumulated in a 64-bit accumulator in 34.30 format. - * This approach provides 33 guard bits and there is no risk of overflow. - * The 34.30 result is then truncated to 34.15 format by discarding the low 15 bits and then saturated to 1.15 format. - * - * \par - * Refer to arm_conv_fast_q15() for a faster but less precise version of this function for Cortex-M3 and Cortex-M4. - * - * \par - * Refer the function arm_conv_opt_q15() for a faster implementation of this function using scratch buffers. - * - */ - -void arm_conv_q15( - q15_t * pSrcA, - uint32_t srcALen, - q15_t * pSrcB, - uint32_t srcBLen, - q15_t * pDst) -{ - -#if (defined(ARM_MATH_CM7) || defined(ARM_MATH_CM4) || defined(ARM_MATH_CM3)) && !defined(UNALIGNED_SUPPORT_DISABLE) - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - q15_t *pIn1; /* inputA pointer */ - q15_t *pIn2; /* inputB pointer */ - q15_t *pOut = pDst; /* output pointer */ - q63_t sum, acc0, acc1, acc2, acc3; /* Accumulator */ - q15_t *px; /* Intermediate inputA pointer */ - q15_t *py; /* Intermediate inputB pointer */ - q15_t *pSrc1, *pSrc2; /* Intermediate pointers */ - q31_t x0, x1, x2, x3, c0; /* Temporary variables to hold state and coefficient values */ - uint32_t blockSize1, blockSize2, blockSize3, j, k, count, blkCnt; /* loop counter */ - - /* The algorithm implementation is based on the lengths of the inputs. */ - /* srcB is always made to slide across srcA. */ - /* So srcBLen is always considered as shorter or equal to srcALen */ - if (srcALen >= srcBLen) - { - /* Initialization of inputA pointer */ - pIn1 = pSrcA; - - /* Initialization of inputB pointer */ - pIn2 = pSrcB; - } - else - { - /* Initialization of inputA pointer */ - pIn1 = pSrcB; - - /* Initialization of inputB pointer */ - pIn2 = pSrcA; - - /* srcBLen is always considered as shorter or equal to srcALen */ - j = srcBLen; - srcBLen = srcALen; - srcALen = j; - } - - /* conv(x,y) at n = x[n] * y[0] + x[n-1] * y[1] + x[n-2] * y[2] + ...+ x[n-N+1] * y[N -1] */ - /* The function is internally - * divided into three stages according to the number of multiplications that has to be - * taken place between inputA samples and inputB samples. In the first stage of the - * algorithm, the multiplications increase by one for every iteration. - * In the second stage of the algorithm, srcBLen number of multiplications are done. - * In the third stage of the algorithm, the multiplications decrease by one - * for every iteration. */ - - /* The algorithm is implemented in three stages. - The loop counters of each stage is initiated here. */ - blockSize1 = srcBLen - 1U; - blockSize2 = srcALen - (srcBLen - 1U); - - /* -------------------------- - * Initializations of stage1 - * -------------------------*/ - - /* sum = x[0] * y[0] - * sum = x[0] * y[1] + x[1] * y[0] - * .... - * sum = x[0] * y[srcBlen - 1] + x[1] * y[srcBlen - 2] +...+ x[srcBLen - 1] * y[0] - */ - - /* In this stage the MAC operations are increased by 1 for every iteration. - The count variable holds the number of MAC operations performed */ - count = 1U; - - /* Working pointer of inputA */ - px = pIn1; - - /* Working pointer of inputB */ - py = pIn2; - - - /* ------------------------ - * Stage1 process - * ----------------------*/ - - /* For loop unrolling by 4, this stage is divided into two. */ - /* First part of this stage computes the MAC operations less than 4 */ - /* Second part of this stage computes the MAC operations greater than or equal to 4 */ - - /* The first part of the stage starts here */ - while ((count < 4U) && (blockSize1 > 0U)) - { - /* Accumulator is made zero for every iteration */ - sum = 0; - - /* Loop over number of MAC operations between - * inputA samples and inputB samples */ - k = count; - - while (k > 0U) - { - /* Perform the multiply-accumulates */ - sum = __SMLALD(*px++, *py--, sum); - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut++ = (q15_t) (__SSAT((sum >> 15), 16)); - - /* Update the inputA and inputB pointers for next MAC calculation */ - py = pIn2 + count; - px = pIn1; - - /* Increment the MAC count */ - count++; - - /* Decrement the loop counter */ - blockSize1--; - } - - /* The second part of the stage starts here */ - /* The internal loop, over count, is unrolled by 4 */ - /* To, read the last two inputB samples using SIMD: - * y[srcBLen] and y[srcBLen-1] coefficients, py is decremented by 1 */ - py = py - 1; - - while (blockSize1 > 0U) - { - /* Accumulator is made zero for every iteration */ - sum = 0; - - /* Apply loop unrolling and compute 4 MACs simultaneously. */ - k = count >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 MACs at a time. - ** a second loop below computes MACs for the remaining 1 to 3 samples. */ - while (k > 0U) - { - /* Perform the multiply-accumulates */ - /* x[0], x[1] are multiplied with y[srcBLen - 1], y[srcBLen - 2] respectively */ - sum = __SMLALDX(*__SIMD32(px)++, *__SIMD32(py)--, sum); - /* x[2], x[3] are multiplied with y[srcBLen - 3], y[srcBLen - 4] respectively */ - sum = __SMLALDX(*__SIMD32(px)++, *__SIMD32(py)--, sum); - - /* Decrement the loop counter */ - k--; - } - - /* For the next MAC operations, the pointer py is used without SIMD - * So, py is incremented by 1 */ - py = py + 1U; - - /* If the count is not a multiple of 4, compute any remaining MACs here. - ** No loop unrolling is used. */ - k = count % 0x4U; - - while (k > 0U) - { - /* Perform the multiply-accumulates */ - sum = __SMLALD(*px++, *py--, sum); - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut++ = (q15_t) (__SSAT((sum >> 15), 16)); - - /* Update the inputA and inputB pointers for next MAC calculation */ - py = pIn2 + (count - 1U); - px = pIn1; - - /* Increment the MAC count */ - count++; - - /* Decrement the loop counter */ - blockSize1--; - } - - /* -------------------------- - * Initializations of stage2 - * ------------------------*/ - - /* sum = x[0] * y[srcBLen-1] + x[1] * y[srcBLen-2] +...+ x[srcBLen-1] * y[0] - * sum = x[1] * y[srcBLen-1] + x[2] * y[srcBLen-2] +...+ x[srcBLen] * y[0] - * .... - * sum = x[srcALen-srcBLen-2] * y[srcBLen-1] + x[srcALen] * y[srcBLen-2] +...+ x[srcALen-1] * y[0] - */ - - /* Working pointer of inputA */ - px = pIn1; - - /* Working pointer of inputB */ - pSrc2 = pIn2 + (srcBLen - 1U); - py = pSrc2; - - /* count is the index by which the pointer pIn1 to be incremented */ - count = 0U; - - - /* -------------------- - * Stage2 process - * -------------------*/ - - /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed. - * So, to loop unroll over blockSize2, - * srcBLen should be greater than or equal to 4 */ - if (srcBLen >= 4U) - { - /* Loop unroll over blockSize2, by 4 */ - blkCnt = blockSize2 >> 2U; - - while (blkCnt > 0U) - { - py = py - 1U; - - /* Set all accumulators to zero */ - acc0 = 0; - acc1 = 0; - acc2 = 0; - acc3 = 0; - - - /* read x[0], x[1] samples */ - x0 = *__SIMD32(px); - /* read x[1], x[2] samples */ - x1 = _SIMD32_OFFSET(px+1); - px+= 2U; - - - /* Apply loop unrolling and compute 4 MACs simultaneously. */ - k = srcBLen >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 MACs at a time. - ** a second loop below computes MACs for the remaining 1 to 3 samples. */ - do - { - /* Read the last two inputB samples using SIMD: - * y[srcBLen - 1] and y[srcBLen - 2] */ - c0 = *__SIMD32(py)--; - - /* acc0 += x[0] * y[srcBLen - 1] + x[1] * y[srcBLen - 2] */ - acc0 = __SMLALDX(x0, c0, acc0); - - /* acc1 += x[1] * y[srcBLen - 1] + x[2] * y[srcBLen - 2] */ - acc1 = __SMLALDX(x1, c0, acc1); - - /* Read x[2], x[3] */ - x2 = *__SIMD32(px); - - /* Read x[3], x[4] */ - x3 = _SIMD32_OFFSET(px+1); - - /* acc2 += x[2] * y[srcBLen - 1] + x[3] * y[srcBLen - 2] */ - acc2 = __SMLALDX(x2, c0, acc2); - - /* acc3 += x[3] * y[srcBLen - 1] + x[4] * y[srcBLen - 2] */ - acc3 = __SMLALDX(x3, c0, acc3); - - /* Read y[srcBLen - 3] and y[srcBLen - 4] */ - c0 = *__SIMD32(py)--; - - /* acc0 += x[2] * y[srcBLen - 3] + x[3] * y[srcBLen - 4] */ - acc0 = __SMLALDX(x2, c0, acc0); - - /* acc1 += x[3] * y[srcBLen - 3] + x[4] * y[srcBLen - 4] */ - acc1 = __SMLALDX(x3, c0, acc1); - - /* Read x[4], x[5] */ - x0 = _SIMD32_OFFSET(px+2); - - /* Read x[5], x[6] */ - x1 = _SIMD32_OFFSET(px+3); - px += 4U; - - /* acc2 += x[4] * y[srcBLen - 3] + x[5] * y[srcBLen - 4] */ - acc2 = __SMLALDX(x0, c0, acc2); - - /* acc3 += x[5] * y[srcBLen - 3] + x[6] * y[srcBLen - 4] */ - acc3 = __SMLALDX(x1, c0, acc3); - - } while (--k); - - /* For the next MAC operations, SIMD is not used - * So, the 16 bit pointer if inputB, py is updated */ - - /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. - ** No loop unrolling is used. */ - k = srcBLen % 0x4U; - - if (k == 1U) - { - /* Read y[srcBLen - 5] */ - c0 = *(py+1); - -#ifdef ARM_MATH_BIG_ENDIAN - - c0 = c0 << 16U; - -#else - - c0 = c0 & 0x0000FFFF; - -#endif /* #ifdef ARM_MATH_BIG_ENDIAN */ - /* Read x[7] */ - x3 = *__SIMD32(px); - px++; - - /* Perform the multiply-accumulates */ - acc0 = __SMLALD(x0, c0, acc0); - acc1 = __SMLALD(x1, c0, acc1); - acc2 = __SMLALDX(x1, c0, acc2); - acc3 = __SMLALDX(x3, c0, acc3); - } - - if (k == 2U) - { - /* Read y[srcBLen - 5], y[srcBLen - 6] */ - c0 = _SIMD32_OFFSET(py); - - /* Read x[7], x[8] */ - x3 = *__SIMD32(px); - - /* Read x[9] */ - x2 = _SIMD32_OFFSET(px+1); - px += 2U; - - /* Perform the multiply-accumulates */ - acc0 = __SMLALDX(x0, c0, acc0); - acc1 = __SMLALDX(x1, c0, acc1); - acc2 = __SMLALDX(x3, c0, acc2); - acc3 = __SMLALDX(x2, c0, acc3); - } - - if (k == 3U) - { - /* Read y[srcBLen - 5], y[srcBLen - 6] */ - c0 = _SIMD32_OFFSET(py); - - /* Read x[7], x[8] */ - x3 = *__SIMD32(px); - - /* Read x[9] */ - x2 = _SIMD32_OFFSET(px+1); - - /* Perform the multiply-accumulates */ - acc0 = __SMLALDX(x0, c0, acc0); - acc1 = __SMLALDX(x1, c0, acc1); - acc2 = __SMLALDX(x3, c0, acc2); - acc3 = __SMLALDX(x2, c0, acc3); - - c0 = *(py-1); - -#ifdef ARM_MATH_BIG_ENDIAN - - c0 = c0 << 16U; -#else - - c0 = c0 & 0x0000FFFF; -#endif /* #ifdef ARM_MATH_BIG_ENDIAN */ - /* Read x[10] */ - x3 = _SIMD32_OFFSET(px+2); - px += 3U; - - /* Perform the multiply-accumulates */ - acc0 = __SMLALDX(x1, c0, acc0); - acc1 = __SMLALD(x2, c0, acc1); - acc2 = __SMLALDX(x2, c0, acc2); - acc3 = __SMLALDX(x3, c0, acc3); - } - - - /* Store the results in the accumulators in the destination buffer. */ - -#ifndef ARM_MATH_BIG_ENDIAN - - *__SIMD32(pOut)++ = - __PKHBT(__SSAT((acc0 >> 15), 16), __SSAT((acc1 >> 15), 16), 16); - *__SIMD32(pOut)++ = - __PKHBT(__SSAT((acc2 >> 15), 16), __SSAT((acc3 >> 15), 16), 16); - -#else - - *__SIMD32(pOut)++ = - __PKHBT(__SSAT((acc1 >> 15), 16), __SSAT((acc0 >> 15), 16), 16); - *__SIMD32(pOut)++ = - __PKHBT(__SSAT((acc3 >> 15), 16), __SSAT((acc2 >> 15), 16), 16); - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - /* Increment the pointer pIn1 index, count by 4 */ - count += 4U; - - /* Update the inputA and inputB pointers for next MAC calculation */ - px = pIn1 + count; - py = pSrc2; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize2 is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize2 % 0x4U; - - while (blkCnt > 0U) - { - /* Accumulator is made zero for every iteration */ - sum = 0; - - /* Apply loop unrolling and compute 4 MACs simultaneously. */ - k = srcBLen >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 MACs at a time. - ** a second loop below computes MACs for the remaining 1 to 3 samples. */ - while (k > 0U) - { - /* Perform the multiply-accumulates */ - sum += (q63_t) ((q31_t) * px++ * *py--); - sum += (q63_t) ((q31_t) * px++ * *py--); - sum += (q63_t) ((q31_t) * px++ * *py--); - sum += (q63_t) ((q31_t) * px++ * *py--); - - /* Decrement the loop counter */ - k--; - } - - /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. - ** No loop unrolling is used. */ - k = srcBLen % 0x4U; - - while (k > 0U) - { - /* Perform the multiply-accumulates */ - sum += (q63_t) ((q31_t) * px++ * *py--); - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut++ = (q15_t) (__SSAT(sum >> 15, 16)); - - /* Increment the pointer pIn1 index, count by 1 */ - count++; - - /* Update the inputA and inputB pointers for next MAC calculation */ - px = pIn1 + count; - py = pSrc2; - - /* Decrement the loop counter */ - blkCnt--; - } - } - else - { - /* If the srcBLen is not a multiple of 4, - * the blockSize2 loop cannot be unrolled by 4 */ - blkCnt = blockSize2; - - while (blkCnt > 0U) - { - /* Accumulator is made zero for every iteration */ - sum = 0; - - /* srcBLen number of MACS should be performed */ - k = srcBLen; - - while (k > 0U) - { - /* Perform the multiply-accumulate */ - sum += (q63_t) ((q31_t) * px++ * *py--); - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut++ = (q15_t) (__SSAT(sum >> 15, 16)); - - /* Increment the MAC count */ - count++; - - /* Update the inputA and inputB pointers for next MAC calculation */ - px = pIn1 + count; - py = pSrc2; - - /* Decrement the loop counter */ - blkCnt--; - } - } - - - /* -------------------------- - * Initializations of stage3 - * -------------------------*/ - - /* sum += x[srcALen-srcBLen+1] * y[srcBLen-1] + x[srcALen-srcBLen+2] * y[srcBLen-2] +...+ x[srcALen-1] * y[1] - * sum += x[srcALen-srcBLen+2] * y[srcBLen-1] + x[srcALen-srcBLen+3] * y[srcBLen-2] +...+ x[srcALen-1] * y[2] - * .... - * sum += x[srcALen-2] * y[srcBLen-1] + x[srcALen-1] * y[srcBLen-2] - * sum += x[srcALen-1] * y[srcBLen-1] - */ - - /* In this stage the MAC operations are decreased by 1 for every iteration. - The blockSize3 variable holds the number of MAC operations performed */ - - blockSize3 = srcBLen - 1U; - - /* Working pointer of inputA */ - pSrc1 = (pIn1 + srcALen) - (srcBLen - 1U); - px = pSrc1; - - /* Working pointer of inputB */ - pSrc2 = pIn2 + (srcBLen - 1U); - pIn2 = pSrc2 - 1U; - py = pIn2; - - /* ------------------- - * Stage3 process - * ------------------*/ - - /* For loop unrolling by 4, this stage is divided into two. */ - /* First part of this stage computes the MAC operations greater than 4 */ - /* Second part of this stage computes the MAC operations less than or equal to 4 */ - - /* The first part of the stage starts here */ - j = blockSize3 >> 2U; - - while ((j > 0U) && (blockSize3 > 0U)) - { - /* Accumulator is made zero for every iteration */ - sum = 0; - - /* Apply loop unrolling and compute 4 MACs simultaneously. */ - k = blockSize3 >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 MACs at a time. - ** a second loop below computes MACs for the remaining 1 to 3 samples. */ - while (k > 0U) - { - /* x[srcALen - srcBLen + 1], x[srcALen - srcBLen + 2] are multiplied - * with y[srcBLen - 1], y[srcBLen - 2] respectively */ - sum = __SMLALDX(*__SIMD32(px)++, *__SIMD32(py)--, sum); - /* x[srcALen - srcBLen + 3], x[srcALen - srcBLen + 4] are multiplied - * with y[srcBLen - 3], y[srcBLen - 4] respectively */ - sum = __SMLALDX(*__SIMD32(px)++, *__SIMD32(py)--, sum); - - /* Decrement the loop counter */ - k--; - } - - /* For the next MAC operations, the pointer py is used without SIMD - * So, py is incremented by 1 */ - py = py + 1U; - - /* If the blockSize3 is not a multiple of 4, compute any remaining MACs here. - ** No loop unrolling is used. */ - k = blockSize3 % 0x4U; - - while (k > 0U) - { - /* sum += x[srcALen - srcBLen + 5] * y[srcBLen - 5] */ - sum = __SMLALD(*px++, *py--, sum); - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut++ = (q15_t) (__SSAT((sum >> 15), 16)); - - /* Update the inputA and inputB pointers for next MAC calculation */ - px = ++pSrc1; - py = pIn2; - - /* Decrement the loop counter */ - blockSize3--; - - j--; - } - - /* The second part of the stage starts here */ - /* SIMD is not used for the next MAC operations, - * so pointer py is updated to read only one sample at a time */ - py = py + 1U; - - while (blockSize3 > 0U) - { - /* Accumulator is made zero for every iteration */ - sum = 0; - - /* Apply loop unrolling and compute 4 MACs simultaneously. */ - k = blockSize3; - - while (k > 0U) - { - /* Perform the multiply-accumulates */ - /* sum += x[srcALen-1] * y[srcBLen-1] */ - sum = __SMLALD(*px++, *py--, sum); - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut++ = (q15_t) (__SSAT((sum >> 15), 16)); - - /* Update the inputA and inputB pointers for next MAC calculation */ - px = ++pSrc1; - py = pSrc2; - - /* Decrement the loop counter */ - blockSize3--; - } - -#else - -/* Run the below code for Cortex-M0 */ - - q15_t *pIn1 = pSrcA; /* input pointer */ - q15_t *pIn2 = pSrcB; /* coefficient pointer */ - q63_t sum; /* Accumulator */ - uint32_t i, j; /* loop counter */ - - /* Loop to calculate output of convolution for output length number of times */ - for (i = 0; i < (srcALen + srcBLen - 1); i++) - { - /* Initialize sum with zero to carry on MAC operations */ - sum = 0; - - /* Loop to perform MAC operations according to convolution equation */ - for (j = 0; j <= i; j++) - { - /* Check the array limitations */ - if (((i - j) < srcBLen) && (j < srcALen)) - { - /* z[i] += x[i-j] * y[j] */ - sum += (q31_t) pIn1[j] * (pIn2[i - j]); - } - } - - /* Store the output in the destination buffer */ - pDst[i] = (q15_t) __SSAT((sum >> 15U), 16U); - } - -#endif /* #if (defined(ARM_MATH_CM7) || defined(ARM_MATH_CM4) || defined(ARM_MATH_CM3)) && !defined(UNALIGNED_SUPPORT_DISABLE) */ - -} - -/** - * @} end of Conv group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_q31.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_q31.c deleted file mode 100644 index 78e50f0..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_q31.c +++ /dev/null @@ -1,553 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_conv_q31.c - * Description: Convolution of Q31 sequences - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupFilters - */ - -/** - * @addtogroup Conv - * @{ - */ - -/** - * @brief Convolution of Q31 sequences. - * @param[in] *pSrcA points to the first input sequence. - * @param[in] srcALen length of the first input sequence. - * @param[in] *pSrcB points to the second input sequence. - * @param[in] srcBLen length of the second input sequence. - * @param[out] *pDst points to the location where the output result is written. Length srcALen+srcBLen-1. - * @return none. - * - * @details - * Scaling and Overflow Behavior: - * - * \par - * The function is implemented using an internal 64-bit accumulator. - * The accumulator has a 2.62 format and maintains full precision of the intermediate multiplication results but provides only a single guard bit. - * There is no saturation on intermediate additions. - * Thus, if the accumulator overflows it wraps around and distorts the result. - * The input signals should be scaled down to avoid intermediate overflows. - * Scale down the inputs by log2(min(srcALen, srcBLen)) (log2 is read as log to the base 2) times to avoid overflows, - * as maximum of min(srcALen, srcBLen) number of additions are carried internally. - * The 2.62 accumulator is right shifted by 31 bits and saturated to 1.31 format to yield the final result. - * - * \par - * See arm_conv_fast_q31() for a faster but less precise implementation of this function for Cortex-M3 and Cortex-M4. - */ - -void arm_conv_q31( - q31_t * pSrcA, - uint32_t srcALen, - q31_t * pSrcB, - uint32_t srcBLen, - q31_t * pDst) -{ - - -#if defined (ARM_MATH_DSP) - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - q31_t *pIn1; /* inputA pointer */ - q31_t *pIn2; /* inputB pointer */ - q31_t *pOut = pDst; /* output pointer */ - q31_t *px; /* Intermediate inputA pointer */ - q31_t *py; /* Intermediate inputB pointer */ - q31_t *pSrc1, *pSrc2; /* Intermediate pointers */ - q63_t sum; /* Accumulator */ - q63_t acc0, acc1, acc2; /* Accumulator */ - q31_t x0, x1, x2, c0; /* Temporary variables to hold state and coefficient values */ - uint32_t j, k, count, blkCnt, blockSize1, blockSize2, blockSize3; /* loop counter */ - - /* The algorithm implementation is based on the lengths of the inputs. */ - /* srcB is always made to slide across srcA. */ - /* So srcBLen is always considered as shorter or equal to srcALen */ - if (srcALen >= srcBLen) - { - /* Initialization of inputA pointer */ - pIn1 = pSrcA; - - /* Initialization of inputB pointer */ - pIn2 = pSrcB; - } - else - { - /* Initialization of inputA pointer */ - pIn1 = (q31_t *) pSrcB; - - /* Initialization of inputB pointer */ - pIn2 = (q31_t *) pSrcA; - - /* srcBLen is always considered as shorter or equal to srcALen */ - j = srcBLen; - srcBLen = srcALen; - srcALen = j; - } - - /* conv(x,y) at n = x[n] * y[0] + x[n-1] * y[1] + x[n-2] * y[2] + ...+ x[n-N+1] * y[N -1] */ - /* The function is internally - * divided into three stages according to the number of multiplications that has to be - * taken place between inputA samples and inputB samples. In the first stage of the - * algorithm, the multiplications increase by one for every iteration. - * In the second stage of the algorithm, srcBLen number of multiplications are done. - * In the third stage of the algorithm, the multiplications decrease by one - * for every iteration. */ - - /* The algorithm is implemented in three stages. - The loop counters of each stage is initiated here. */ - blockSize1 = srcBLen - 1U; - blockSize2 = srcALen - (srcBLen - 1U); - blockSize3 = blockSize1; - - /* -------------------------- - * Initializations of stage1 - * -------------------------*/ - - /* sum = x[0] * y[0] - * sum = x[0] * y[1] + x[1] * y[0] - * .... - * sum = x[0] * y[srcBlen - 1] + x[1] * y[srcBlen - 2] +...+ x[srcBLen - 1] * y[0] - */ - - /* In this stage the MAC operations are increased by 1 for every iteration. - The count variable holds the number of MAC operations performed */ - count = 1U; - - /* Working pointer of inputA */ - px = pIn1; - - /* Working pointer of inputB */ - py = pIn2; - - - /* ------------------------ - * Stage1 process - * ----------------------*/ - - /* The first stage starts here */ - while (blockSize1 > 0U) - { - /* Accumulator is made zero for every iteration */ - sum = 0; - - /* Apply loop unrolling and compute 4 MACs simultaneously. */ - k = count >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 MACs at a time. - ** a second loop below computes MACs for the remaining 1 to 3 samples. */ - while (k > 0U) - { - /* x[0] * y[srcBLen - 1] */ - sum += (q63_t) * px++ * (*py--); - /* x[1] * y[srcBLen - 2] */ - sum += (q63_t) * px++ * (*py--); - /* x[2] * y[srcBLen - 3] */ - sum += (q63_t) * px++ * (*py--); - /* x[3] * y[srcBLen - 4] */ - sum += (q63_t) * px++ * (*py--); - - /* Decrement the loop counter */ - k--; - } - - /* If the count is not a multiple of 4, compute any remaining MACs here. - ** No loop unrolling is used. */ - k = count % 0x4U; - - while (k > 0U) - { - /* Perform the multiply-accumulate */ - sum += (q63_t) * px++ * (*py--); - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut++ = (q31_t) (sum >> 31); - - /* Update the inputA and inputB pointers for next MAC calculation */ - py = pIn2 + count; - px = pIn1; - - /* Increment the MAC count */ - count++; - - /* Decrement the loop counter */ - blockSize1--; - } - - /* -------------------------- - * Initializations of stage2 - * ------------------------*/ - - /* sum = x[0] * y[srcBLen-1] + x[1] * y[srcBLen-2] +...+ x[srcBLen-1] * y[0] - * sum = x[1] * y[srcBLen-1] + x[2] * y[srcBLen-2] +...+ x[srcBLen] * y[0] - * .... - * sum = x[srcALen-srcBLen-2] * y[srcBLen-1] + x[srcALen] * y[srcBLen-2] +...+ x[srcALen-1] * y[0] - */ - - /* Working pointer of inputA */ - px = pIn1; - - /* Working pointer of inputB */ - pSrc2 = pIn2 + (srcBLen - 1U); - py = pSrc2; - - /* count is index by which the pointer pIn1 to be incremented */ - count = 0U; - - /* ------------------- - * Stage2 process - * ------------------*/ - - /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed. - * So, to loop unroll over blockSize2, - * srcBLen should be greater than or equal to 4 */ - if (srcBLen >= 4U) - { - /* Loop unroll by 3 */ - blkCnt = blockSize2 / 3; - - while (blkCnt > 0U) - { - /* Set all accumulators to zero */ - acc0 = 0; - acc1 = 0; - acc2 = 0; - - /* read x[0], x[1], x[2] samples */ - x0 = *(px++); - x1 = *(px++); - - /* Apply loop unrolling and compute 3 MACs simultaneously. */ - k = srcBLen / 3; - - /* First part of the processing with loop unrolling. Compute 3 MACs at a time. - ** a second loop below computes MACs for the remaining 1 to 2 samples. */ - do - { - /* Read y[srcBLen - 1] sample */ - c0 = *(py); - - /* Read x[3] sample */ - x2 = *(px); - - /* Perform the multiply-accumulates */ - /* acc0 += x[0] * y[srcBLen - 1] */ - acc0 += ((q63_t) x0 * c0); - /* acc1 += x[1] * y[srcBLen - 1] */ - acc1 += ((q63_t) x1 * c0); - /* acc2 += x[2] * y[srcBLen - 1] */ - acc2 += ((q63_t) x2 * c0); - - /* Read y[srcBLen - 2] sample */ - c0 = *(py - 1U); - - /* Read x[4] sample */ - x0 = *(px + 1U); - - /* Perform the multiply-accumulate */ - /* acc0 += x[1] * y[srcBLen - 2] */ - acc0 += ((q63_t) x1 * c0); - /* acc1 += x[2] * y[srcBLen - 2] */ - acc1 += ((q63_t) x2 * c0); - /* acc2 += x[3] * y[srcBLen - 2] */ - acc2 += ((q63_t) x0 * c0); - - /* Read y[srcBLen - 3] sample */ - c0 = *(py - 2U); - - /* Read x[5] sample */ - x1 = *(px + 2U); - - /* Perform the multiply-accumulates */ - /* acc0 += x[2] * y[srcBLen - 3] */ - acc0 += ((q63_t) x2 * c0); - /* acc1 += x[3] * y[srcBLen - 2] */ - acc1 += ((q63_t) x0 * c0); - /* acc2 += x[4] * y[srcBLen - 2] */ - acc2 += ((q63_t) x1 * c0); - - /* update scratch pointers */ - px += 3U; - py -= 3U; - - } while (--k); - - /* If the srcBLen is not a multiple of 3, compute any remaining MACs here. - ** No loop unrolling is used. */ - k = srcBLen - (3 * (srcBLen / 3)); - - while (k > 0U) - { - /* Read y[srcBLen - 5] sample */ - c0 = *(py--); - - /* Read x[7] sample */ - x2 = *(px++); - - /* Perform the multiply-accumulates */ - /* acc0 += x[4] * y[srcBLen - 5] */ - acc0 += ((q63_t) x0 * c0); - /* acc1 += x[5] * y[srcBLen - 5] */ - acc1 += ((q63_t) x1 * c0); - /* acc2 += x[6] * y[srcBLen - 5] */ - acc2 += ((q63_t) x2 * c0); - - /* Reuse the present samples for the next MAC */ - x0 = x1; - x1 = x2; - - /* Decrement the loop counter */ - k--; - } - - /* Store the results in the accumulators in the destination buffer. */ - *pOut++ = (q31_t) (acc0 >> 31); - *pOut++ = (q31_t) (acc1 >> 31); - *pOut++ = (q31_t) (acc2 >> 31); - - /* Increment the pointer pIn1 index, count by 3 */ - count += 3U; - - /* Update the inputA and inputB pointers for next MAC calculation */ - px = pIn1 + count; - py = pSrc2; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize2 is not a multiple of 3, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize2 - 3 * (blockSize2 / 3); - - while (blkCnt > 0U) - { - /* Accumulator is made zero for every iteration */ - sum = 0; - - /* Apply loop unrolling and compute 4 MACs simultaneously. */ - k = srcBLen >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 MACs at a time. - ** a second loop below computes MACs for the remaining 1 to 3 samples. */ - while (k > 0U) - { - /* Perform the multiply-accumulates */ - sum += (q63_t) * px++ * (*py--); - sum += (q63_t) * px++ * (*py--); - sum += (q63_t) * px++ * (*py--); - sum += (q63_t) * px++ * (*py--); - - /* Decrement the loop counter */ - k--; - } - - /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. - ** No loop unrolling is used. */ - k = srcBLen % 0x4U; - - while (k > 0U) - { - /* Perform the multiply-accumulate */ - sum += (q63_t) * px++ * (*py--); - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut++ = (q31_t) (sum >> 31); - - /* Increment the MAC count */ - count++; - - /* Update the inputA and inputB pointers for next MAC calculation */ - px = pIn1 + count; - py = pSrc2; - - /* Decrement the loop counter */ - blkCnt--; - } - } - else - { - /* If the srcBLen is not a multiple of 4, - * the blockSize2 loop cannot be unrolled by 4 */ - blkCnt = blockSize2; - - while (blkCnt > 0U) - { - /* Accumulator is made zero for every iteration */ - sum = 0; - - /* srcBLen number of MACS should be performed */ - k = srcBLen; - - while (k > 0U) - { - /* Perform the multiply-accumulate */ - sum += (q63_t) * px++ * (*py--); - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut++ = (q31_t) (sum >> 31); - - /* Increment the MAC count */ - count++; - - /* Update the inputA and inputB pointers for next MAC calculation */ - px = pIn1 + count; - py = pSrc2; - - /* Decrement the loop counter */ - blkCnt--; - } - } - - - /* -------------------------- - * Initializations of stage3 - * -------------------------*/ - - /* sum += x[srcALen-srcBLen+1] * y[srcBLen-1] + x[srcALen-srcBLen+2] * y[srcBLen-2] +...+ x[srcALen-1] * y[1] - * sum += x[srcALen-srcBLen+2] * y[srcBLen-1] + x[srcALen-srcBLen+3] * y[srcBLen-2] +...+ x[srcALen-1] * y[2] - * .... - * sum += x[srcALen-2] * y[srcBLen-1] + x[srcALen-1] * y[srcBLen-2] - * sum += x[srcALen-1] * y[srcBLen-1] - */ - - /* In this stage the MAC operations are decreased by 1 for every iteration. - The blockSize3 variable holds the number of MAC operations performed */ - - /* Working pointer of inputA */ - pSrc1 = (pIn1 + srcALen) - (srcBLen - 1U); - px = pSrc1; - - /* Working pointer of inputB */ - pSrc2 = pIn2 + (srcBLen - 1U); - py = pSrc2; - - /* ------------------- - * Stage3 process - * ------------------*/ - - while (blockSize3 > 0U) - { - /* Accumulator is made zero for every iteration */ - sum = 0; - - /* Apply loop unrolling and compute 4 MACs simultaneously. */ - k = blockSize3 >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 MACs at a time. - ** a second loop below computes MACs for the remaining 1 to 3 samples. */ - while (k > 0U) - { - /* sum += x[srcALen - srcBLen + 1] * y[srcBLen - 1] */ - sum += (q63_t) * px++ * (*py--); - /* sum += x[srcALen - srcBLen + 2] * y[srcBLen - 2] */ - sum += (q63_t) * px++ * (*py--); - /* sum += x[srcALen - srcBLen + 3] * y[srcBLen - 3] */ - sum += (q63_t) * px++ * (*py--); - /* sum += x[srcALen - srcBLen + 4] * y[srcBLen - 4] */ - sum += (q63_t) * px++ * (*py--); - - /* Decrement the loop counter */ - k--; - } - - /* If the blockSize3 is not a multiple of 4, compute any remaining MACs here. - ** No loop unrolling is used. */ - k = blockSize3 % 0x4U; - - while (k > 0U) - { - /* Perform the multiply-accumulate */ - sum += (q63_t) * px++ * (*py--); - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut++ = (q31_t) (sum >> 31); - - /* Update the inputA and inputB pointers for next MAC calculation */ - px = ++pSrc1; - py = pSrc2; - - /* Decrement the loop counter */ - blockSize3--; - } - -#else - - /* Run the below code for Cortex-M0 */ - - q31_t *pIn1 = pSrcA; /* input pointer */ - q31_t *pIn2 = pSrcB; /* coefficient pointer */ - q63_t sum; /* Accumulator */ - uint32_t i, j; /* loop counter */ - - /* Loop to calculate output of convolution for output length number of times */ - for (i = 0; i < (srcALen + srcBLen - 1); i++) - { - /* Initialize sum with zero to carry on MAC operations */ - sum = 0; - - /* Loop to perform MAC operations according to convolution equation */ - for (j = 0; j <= i; j++) - { - /* Check the array limitations */ - if (((i - j) < srcBLen) && (j < srcALen)) - { - /* z[i] += x[i-j] * y[j] */ - sum += ((q63_t) pIn1[j] * (pIn2[i - j])); - } - } - - /* Store the output in the destination buffer */ - pDst[i] = (q31_t) (sum >> 31U); - } - -#endif /* #if defined (ARM_MATH_DSP) */ - -} - -/** - * @} end of Conv group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_q7.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_q7.c deleted file mode 100644 index 9e5a79b..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_q7.c +++ /dev/null @@ -1,678 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_conv_q7.c - * Description: Convolution of Q7 sequences - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupFilters - */ - -/** - * @addtogroup Conv - * @{ - */ - -/** - * @brief Convolution of Q7 sequences. - * @param[in] *pSrcA points to the first input sequence. - * @param[in] srcALen length of the first input sequence. - * @param[in] *pSrcB points to the second input sequence. - * @param[in] srcBLen length of the second input sequence. - * @param[out] *pDst points to the location where the output result is written. Length srcALen+srcBLen-1. - * @return none. - * - * @details - * Scaling and Overflow Behavior: - * - * \par - * The function is implemented using a 32-bit internal accumulator. - * Both the inputs are represented in 1.7 format and multiplications yield a 2.14 result. - * The 2.14 intermediate results are accumulated in a 32-bit accumulator in 18.14 format. - * This approach provides 17 guard bits and there is no risk of overflow as long as max(srcALen, srcBLen)<131072. - * The 18.14 result is then truncated to 18.7 format by discarding the low 7 bits and then saturated to 1.7 format. - * - * \par - * Refer the function arm_conv_opt_q7() for a faster implementation of this function. - * - */ - -void arm_conv_q7( - q7_t * pSrcA, - uint32_t srcALen, - q7_t * pSrcB, - uint32_t srcBLen, - q7_t * pDst) -{ - - -#if defined (ARM_MATH_DSP) - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - q7_t *pIn1; /* inputA pointer */ - q7_t *pIn2; /* inputB pointer */ - q7_t *pOut = pDst; /* output pointer */ - q7_t *px; /* Intermediate inputA pointer */ - q7_t *py; /* Intermediate inputB pointer */ - q7_t *pSrc1, *pSrc2; /* Intermediate pointers */ - q7_t x0, x1, x2, x3, c0, c1; /* Temporary variables to hold state and coefficient values */ - q31_t sum, acc0, acc1, acc2, acc3; /* Accumulator */ - q31_t input1, input2; /* Temporary input variables */ - q15_t in1, in2; /* Temporary input variables */ - uint32_t j, k, count, blkCnt, blockSize1, blockSize2, blockSize3; /* loop counter */ - - /* The algorithm implementation is based on the lengths of the inputs. */ - /* srcB is always made to slide across srcA. */ - /* So srcBLen is always considered as shorter or equal to srcALen */ - if (srcALen >= srcBLen) - { - /* Initialization of inputA pointer */ - pIn1 = pSrcA; - - /* Initialization of inputB pointer */ - pIn2 = pSrcB; - } - else - { - /* Initialization of inputA pointer */ - pIn1 = pSrcB; - - /* Initialization of inputB pointer */ - pIn2 = pSrcA; - - /* srcBLen is always considered as shorter or equal to srcALen */ - j = srcBLen; - srcBLen = srcALen; - srcALen = j; - } - - /* conv(x,y) at n = x[n] * y[0] + x[n-1] * y[1] + x[n-2] * y[2] + ...+ x[n-N+1] * y[N -1] */ - /* The function is internally - * divided into three stages according to the number of multiplications that has to be - * taken place between inputA samples and inputB samples. In the first stage of the - * algorithm, the multiplications increase by one for every iteration. - * In the second stage of the algorithm, srcBLen number of multiplications are done. - * In the third stage of the algorithm, the multiplications decrease by one - * for every iteration. */ - - /* The algorithm is implemented in three stages. - The loop counters of each stage is initiated here. */ - blockSize1 = srcBLen - 1U; - blockSize2 = (srcALen - srcBLen) + 1U; - blockSize3 = blockSize1; - - /* -------------------------- - * Initializations of stage1 - * -------------------------*/ - - /* sum = x[0] * y[0] - * sum = x[0] * y[1] + x[1] * y[0] - * .... - * sum = x[0] * y[srcBlen - 1] + x[1] * y[srcBlen - 2] +...+ x[srcBLen - 1] * y[0] - */ - - /* In this stage the MAC operations are increased by 1 for every iteration. - The count variable holds the number of MAC operations performed */ - count = 1U; - - /* Working pointer of inputA */ - px = pIn1; - - /* Working pointer of inputB */ - py = pIn2; - - - /* ------------------------ - * Stage1 process - * ----------------------*/ - - /* The first stage starts here */ - while (blockSize1 > 0U) - { - /* Accumulator is made zero for every iteration */ - sum = 0; - - /* Apply loop unrolling and compute 4 MACs simultaneously. */ - k = count >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 MACs at a time. - ** a second loop below computes MACs for the remaining 1 to 3 samples. */ - while (k > 0U) - { - /* x[0] , x[1] */ - in1 = (q15_t) * px++; - in2 = (q15_t) * px++; - input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16U); - - /* y[srcBLen - 1] , y[srcBLen - 2] */ - in1 = (q15_t) * py--; - in2 = (q15_t) * py--; - input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16U); - - /* x[0] * y[srcBLen - 1] */ - /* x[1] * y[srcBLen - 2] */ - sum = __SMLAD(input1, input2, sum); - - /* x[2] , x[3] */ - in1 = (q15_t) * px++; - in2 = (q15_t) * px++; - input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16U); - - /* y[srcBLen - 3] , y[srcBLen - 4] */ - in1 = (q15_t) * py--; - in2 = (q15_t) * py--; - input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16U); - - /* x[2] * y[srcBLen - 3] */ - /* x[3] * y[srcBLen - 4] */ - sum = __SMLAD(input1, input2, sum); - - /* Decrement the loop counter */ - k--; - } - - /* If the count is not a multiple of 4, compute any remaining MACs here. - ** No loop unrolling is used. */ - k = count % 0x4U; - - while (k > 0U) - { - /* Perform the multiply-accumulates */ - sum += ((q15_t) * px++ * *py--); - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut++ = (q7_t) (__SSAT(sum >> 7U, 8)); - - /* Update the inputA and inputB pointers for next MAC calculation */ - py = pIn2 + count; - px = pIn1; - - /* Increment the MAC count */ - count++; - - /* Decrement the loop counter */ - blockSize1--; - } - - /* -------------------------- - * Initializations of stage2 - * ------------------------*/ - - /* sum = x[0] * y[srcBLen-1] + x[1] * y[srcBLen-2] +...+ x[srcBLen-1] * y[0] - * sum = x[1] * y[srcBLen-1] + x[2] * y[srcBLen-2] +...+ x[srcBLen] * y[0] - * .... - * sum = x[srcALen-srcBLen-2] * y[srcBLen-1] + x[srcALen] * y[srcBLen-2] +...+ x[srcALen-1] * y[0] - */ - - /* Working pointer of inputA */ - px = pIn1; - - /* Working pointer of inputB */ - pSrc2 = pIn2 + (srcBLen - 1U); - py = pSrc2; - - /* count is index by which the pointer pIn1 to be incremented */ - count = 0U; - - /* ------------------- - * Stage2 process - * ------------------*/ - - /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed. - * So, to loop unroll over blockSize2, - * srcBLen should be greater than or equal to 4 */ - if (srcBLen >= 4U) - { - /* Loop unroll over blockSize2, by 4 */ - blkCnt = blockSize2 >> 2U; - - while (blkCnt > 0U) - { - /* Set all accumulators to zero */ - acc0 = 0; - acc1 = 0; - acc2 = 0; - acc3 = 0; - - /* read x[0], x[1], x[2] samples */ - x0 = *(px++); - x1 = *(px++); - x2 = *(px++); - - /* Apply loop unrolling and compute 4 MACs simultaneously. */ - k = srcBLen >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 MACs at a time. - ** a second loop below computes MACs for the remaining 1 to 3 samples. */ - do - { - /* Read y[srcBLen - 1] sample */ - c0 = *(py--); - /* Read y[srcBLen - 2] sample */ - c1 = *(py--); - - /* Read x[3] sample */ - x3 = *(px++); - - /* x[0] and x[1] are packed */ - in1 = (q15_t) x0; - in2 = (q15_t) x1; - - input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16U); - - /* y[srcBLen - 1] and y[srcBLen - 2] are packed */ - in1 = (q15_t) c0; - in2 = (q15_t) c1; - - input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16U); - - /* acc0 += x[0] * y[srcBLen - 1] + x[1] * y[srcBLen - 2] */ - acc0 = __SMLAD(input1, input2, acc0); - - /* x[1] and x[2] are packed */ - in1 = (q15_t) x1; - in2 = (q15_t) x2; - - input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16U); - - /* acc1 += x[1] * y[srcBLen - 1] + x[2] * y[srcBLen - 2] */ - acc1 = __SMLAD(input1, input2, acc1); - - /* x[2] and x[3] are packed */ - in1 = (q15_t) x2; - in2 = (q15_t) x3; - - input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16U); - - /* acc2 += x[2] * y[srcBLen - 1] + x[3] * y[srcBLen - 2] */ - acc2 = __SMLAD(input1, input2, acc2); - - /* Read x[4] sample */ - x0 = *(px++); - - /* x[3] and x[4] are packed */ - in1 = (q15_t) x3; - in2 = (q15_t) x0; - - input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16U); - - /* acc3 += x[3] * y[srcBLen - 1] + x[4] * y[srcBLen - 2] */ - acc3 = __SMLAD(input1, input2, acc3); - - /* Read y[srcBLen - 3] sample */ - c0 = *(py--); - /* Read y[srcBLen - 4] sample */ - c1 = *(py--); - - /* Read x[5] sample */ - x1 = *(px++); - - /* x[2] and x[3] are packed */ - in1 = (q15_t) x2; - in2 = (q15_t) x3; - - input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16U); - - /* y[srcBLen - 3] and y[srcBLen - 4] are packed */ - in1 = (q15_t) c0; - in2 = (q15_t) c1; - - input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16U); - - /* acc0 += x[2] * y[srcBLen - 3] + x[3] * y[srcBLen - 4] */ - acc0 = __SMLAD(input1, input2, acc0); - - /* x[3] and x[4] are packed */ - in1 = (q15_t) x3; - in2 = (q15_t) x0; - - input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16U); - - /* acc1 += x[3] * y[srcBLen - 3] + x[4] * y[srcBLen - 4] */ - acc1 = __SMLAD(input1, input2, acc1); - - /* x[4] and x[5] are packed */ - in1 = (q15_t) x0; - in2 = (q15_t) x1; - - input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16U); - - /* acc2 += x[4] * y[srcBLen - 3] + x[5] * y[srcBLen - 4] */ - acc2 = __SMLAD(input1, input2, acc2); - - /* Read x[6] sample */ - x2 = *(px++); - - /* x[5] and x[6] are packed */ - in1 = (q15_t) x1; - in2 = (q15_t) x2; - - input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16U); - - /* acc3 += x[5] * y[srcBLen - 3] + x[6] * y[srcBLen - 4] */ - acc3 = __SMLAD(input1, input2, acc3); - - } while (--k); - - /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. - ** No loop unrolling is used. */ - k = srcBLen % 0x4U; - - while (k > 0U) - { - /* Read y[srcBLen - 5] sample */ - c0 = *(py--); - - /* Read x[7] sample */ - x3 = *(px++); - - /* Perform the multiply-accumulates */ - /* acc0 += x[4] * y[srcBLen - 5] */ - acc0 += ((q15_t) x0 * c0); - /* acc1 += x[5] * y[srcBLen - 5] */ - acc1 += ((q15_t) x1 * c0); - /* acc2 += x[6] * y[srcBLen - 5] */ - acc2 += ((q15_t) x2 * c0); - /* acc3 += x[7] * y[srcBLen - 5] */ - acc3 += ((q15_t) x3 * c0); - - /* Reuse the present samples for the next MAC */ - x0 = x1; - x1 = x2; - x2 = x3; - - /* Decrement the loop counter */ - k--; - } - - - /* Store the result in the accumulator in the destination buffer. */ - *pOut++ = (q7_t) (__SSAT(acc0 >> 7U, 8)); - *pOut++ = (q7_t) (__SSAT(acc1 >> 7U, 8)); - *pOut++ = (q7_t) (__SSAT(acc2 >> 7U, 8)); - *pOut++ = (q7_t) (__SSAT(acc3 >> 7U, 8)); - - /* Increment the pointer pIn1 index, count by 4 */ - count += 4U; - - /* Update the inputA and inputB pointers for next MAC calculation */ - px = pIn1 + count; - py = pSrc2; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize2 is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize2 % 0x4U; - - while (blkCnt > 0U) - { - /* Accumulator is made zero for every iteration */ - sum = 0; - - /* Apply loop unrolling and compute 4 MACs simultaneously. */ - k = srcBLen >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 MACs at a time. - ** a second loop below computes MACs for the remaining 1 to 3 samples. */ - while (k > 0U) - { - - /* Reading two inputs of SrcA buffer and packing */ - in1 = (q15_t) * px++; - in2 = (q15_t) * px++; - input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16U); - - /* Reading two inputs of SrcB buffer and packing */ - in1 = (q15_t) * py--; - in2 = (q15_t) * py--; - input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16U); - - /* Perform the multiply-accumulates */ - sum = __SMLAD(input1, input2, sum); - - /* Reading two inputs of SrcA buffer and packing */ - in1 = (q15_t) * px++; - in2 = (q15_t) * px++; - input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16U); - - /* Reading two inputs of SrcB buffer and packing */ - in1 = (q15_t) * py--; - in2 = (q15_t) * py--; - input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16U); - - /* Perform the multiply-accumulates */ - sum = __SMLAD(input1, input2, sum); - - /* Decrement the loop counter */ - k--; - } - - /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. - ** No loop unrolling is used. */ - k = srcBLen % 0x4U; - - while (k > 0U) - { - /* Perform the multiply-accumulates */ - sum += ((q15_t) * px++ * *py--); - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut++ = (q7_t) (__SSAT(sum >> 7U, 8)); - - /* Increment the pointer pIn1 index, count by 1 */ - count++; - - /* Update the inputA and inputB pointers for next MAC calculation */ - px = pIn1 + count; - py = pSrc2; - - /* Decrement the loop counter */ - blkCnt--; - } - } - else - { - /* If the srcBLen is not a multiple of 4, - * the blockSize2 loop cannot be unrolled by 4 */ - blkCnt = blockSize2; - - while (blkCnt > 0U) - { - /* Accumulator is made zero for every iteration */ - sum = 0; - - /* srcBLen number of MACS should be performed */ - k = srcBLen; - - while (k > 0U) - { - /* Perform the multiply-accumulate */ - sum += ((q15_t) * px++ * *py--); - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut++ = (q7_t) (__SSAT(sum >> 7U, 8)); - - /* Increment the MAC count */ - count++; - - /* Update the inputA and inputB pointers for next MAC calculation */ - px = pIn1 + count; - py = pSrc2; - - /* Decrement the loop counter */ - blkCnt--; - } - } - - - /* -------------------------- - * Initializations of stage3 - * -------------------------*/ - - /* sum += x[srcALen-srcBLen+1] * y[srcBLen-1] + x[srcALen-srcBLen+2] * y[srcBLen-2] +...+ x[srcALen-1] * y[1] - * sum += x[srcALen-srcBLen+2] * y[srcBLen-1] + x[srcALen-srcBLen+3] * y[srcBLen-2] +...+ x[srcALen-1] * y[2] - * .... - * sum += x[srcALen-2] * y[srcBLen-1] + x[srcALen-1] * y[srcBLen-2] - * sum += x[srcALen-1] * y[srcBLen-1] - */ - - /* In this stage the MAC operations are decreased by 1 for every iteration. - The blockSize3 variable holds the number of MAC operations performed */ - - /* Working pointer of inputA */ - pSrc1 = pIn1 + (srcALen - (srcBLen - 1U)); - px = pSrc1; - - /* Working pointer of inputB */ - pSrc2 = pIn2 + (srcBLen - 1U); - py = pSrc2; - - /* ------------------- - * Stage3 process - * ------------------*/ - - while (blockSize3 > 0U) - { - /* Accumulator is made zero for every iteration */ - sum = 0; - - /* Apply loop unrolling and compute 4 MACs simultaneously. */ - k = blockSize3 >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 MACs at a time. - ** a second loop below computes MACs for the remaining 1 to 3 samples. */ - while (k > 0U) - { - /* Reading two inputs, x[srcALen - srcBLen + 1] and x[srcALen - srcBLen + 2] of SrcA buffer and packing */ - in1 = (q15_t) * px++; - in2 = (q15_t) * px++; - input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16U); - - /* Reading two inputs, y[srcBLen - 1] and y[srcBLen - 2] of SrcB buffer and packing */ - in1 = (q15_t) * py--; - in2 = (q15_t) * py--; - input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16U); - - /* sum += x[srcALen - srcBLen + 1] * y[srcBLen - 1] */ - /* sum += x[srcALen - srcBLen + 2] * y[srcBLen - 2] */ - sum = __SMLAD(input1, input2, sum); - - /* Reading two inputs, x[srcALen - srcBLen + 3] and x[srcALen - srcBLen + 4] of SrcA buffer and packing */ - in1 = (q15_t) * px++; - in2 = (q15_t) * px++; - input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16U); - - /* Reading two inputs, y[srcBLen - 3] and y[srcBLen - 4] of SrcB buffer and packing */ - in1 = (q15_t) * py--; - in2 = (q15_t) * py--; - input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16U); - - /* sum += x[srcALen - srcBLen + 3] * y[srcBLen - 3] */ - /* sum += x[srcALen - srcBLen + 4] * y[srcBLen - 4] */ - sum = __SMLAD(input1, input2, sum); - - /* Decrement the loop counter */ - k--; - } - - /* If the blockSize3 is not a multiple of 4, compute any remaining MACs here. - ** No loop unrolling is used. */ - k = blockSize3 % 0x4U; - - while (k > 0U) - { - /* Perform the multiply-accumulates */ - sum += ((q15_t) * px++ * *py--); - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut++ = (q7_t) (__SSAT(sum >> 7U, 8)); - - /* Update the inputA and inputB pointers for next MAC calculation */ - px = ++pSrc1; - py = pSrc2; - - /* Decrement the loop counter */ - blockSize3--; - } - -#else - - /* Run the below code for Cortex-M0 */ - - q7_t *pIn1 = pSrcA; /* input pointer */ - q7_t *pIn2 = pSrcB; /* coefficient pointer */ - q31_t sum; /* Accumulator */ - uint32_t i, j; /* loop counter */ - - /* Loop to calculate output of convolution for output length number of times */ - for (i = 0; i < (srcALen + srcBLen - 1); i++) - { - /* Initialize sum with zero to carry on MAC operations */ - sum = 0; - - /* Loop to perform MAC operations according to convolution equation */ - for (j = 0; j <= i; j++) - { - /* Check the array limitations */ - if (((i - j) < srcBLen) && (j < srcALen)) - { - /* z[i] += x[i-j] * y[j] */ - sum += (q15_t) pIn1[j] * (pIn2[i - j]); - } - } - - /* Store the output in the destination buffer */ - pDst[i] = (q7_t) __SSAT((sum >> 7U), 8U); - } - -#endif /* #if defined (ARM_MATH_DSP) */ - -} - -/** - * @} end of Conv group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_f32.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_f32.c deleted file mode 100644 index 12031f1..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_f32.c +++ /dev/null @@ -1,727 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_correlate_f32.c - * Description: Correlation of floating-point sequences - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupFilters - */ - -/** - * @defgroup Corr Correlation - * - * Correlation is a mathematical operation that is similar to convolution. - * As with convolution, correlation uses two signals to produce a third signal. - * The underlying algorithms in correlation and convolution are identical except that one of the inputs is flipped in convolution. - * Correlation is commonly used to measure the similarity between two signals. - * It has applications in pattern recognition, cryptanalysis, and searching. - * The CMSIS library provides correlation functions for Q7, Q15, Q31 and floating-point data types. - * Fast versions of the Q15 and Q31 functions are also provided. - * - * \par Algorithm - * Let a[n] and b[n] be sequences of length srcALen and srcBLen samples respectively. - * The convolution of the two signals is denoted by - *
- *                   c[n] = a[n] * b[n]
- * 
- * In correlation, one of the signals is flipped in time - *
- *                   c[n] = a[n] * b[-n]
- * 
- * - * \par - * and this is mathematically defined as - * \image html CorrelateEquation.gif - * \par - * The pSrcA points to the first input vector of length srcALen and pSrcB points to the second input vector of length srcBLen. - * The result c[n] is of length 2 * max(srcALen, srcBLen) - 1 and is defined over the interval n=0, 1, 2, ..., (2 * max(srcALen, srcBLen) - 2). - * The output result is written to pDst and the calling function must allocate 2 * max(srcALen, srcBLen) - 1 words for the result. - * - * Note - * \par - * The pDst should be initialized to all zeros before being used. - * - * Fixed-Point Behavior - * \par - * Correlation requires summing up a large number of intermediate products. - * As such, the Q7, Q15, and Q31 functions run a risk of overflow and saturation. - * Refer to the function specific documentation below for further details of the particular algorithm used. - * - * - * Fast Versions - * - * \par - * Fast versions are supported for Q31 and Q15. Cycles for Fast versions are less compared to Q31 and Q15 of correlate and the design requires - * the input signals should be scaled down to avoid intermediate overflows. - * - * - * Opt Versions - * - * \par - * Opt versions are supported for Q15 and Q7. Design uses internal scratch buffer for getting good optimisation. - * These versions are optimised in cycles and consumes more memory(Scratch memory) compared to Q15 and Q7 versions of correlate - */ - -/** - * @addtogroup Corr - * @{ - */ -/** - * @brief Correlation of floating-point sequences. - * @param[in] *pSrcA points to the first input sequence. - * @param[in] srcALen length of the first input sequence. - * @param[in] *pSrcB points to the second input sequence. - * @param[in] srcBLen length of the second input sequence. - * @param[out] *pDst points to the location where the output result is written. Length 2 * max(srcALen, srcBLen) - 1. - * @return none. - */ - -void arm_correlate_f32( - float32_t * pSrcA, - uint32_t srcALen, - float32_t * pSrcB, - uint32_t srcBLen, - float32_t * pDst) -{ - - -#if defined (ARM_MATH_DSP) - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - float32_t *pIn1; /* inputA pointer */ - float32_t *pIn2; /* inputB pointer */ - float32_t *pOut = pDst; /* output pointer */ - float32_t *px; /* Intermediate inputA pointer */ - float32_t *py; /* Intermediate inputB pointer */ - float32_t *pSrc1; /* Intermediate pointers */ - float32_t sum, acc0, acc1, acc2, acc3; /* Accumulators */ - float32_t x0, x1, x2, x3, c0; /* temporary variables for holding input and coefficient values */ - uint32_t j, k = 0U, count, blkCnt, outBlockSize, blockSize1, blockSize2, blockSize3; /* loop counters */ - int32_t inc = 1; /* Destination address modifier */ - - - /* The algorithm implementation is based on the lengths of the inputs. */ - /* srcB is always made to slide across srcA. */ - /* So srcBLen is always considered as shorter or equal to srcALen */ - /* But CORR(x, y) is reverse of CORR(y, x) */ - /* So, when srcBLen > srcALen, output pointer is made to point to the end of the output buffer */ - /* and the destination pointer modifier, inc is set to -1 */ - /* If srcALen > srcBLen, zero pad has to be done to srcB to make the two inputs of same length */ - /* But to improve the performance, - * we assume zeroes in the output instead of zero padding either of the the inputs*/ - /* If srcALen > srcBLen, - * (srcALen - srcBLen) zeroes has to included in the starting of the output buffer */ - /* If srcALen < srcBLen, - * (srcALen - srcBLen) zeroes has to included in the ending of the output buffer */ - if (srcALen >= srcBLen) - { - /* Initialization of inputA pointer */ - pIn1 = pSrcA; - - /* Initialization of inputB pointer */ - pIn2 = pSrcB; - - /* Number of output samples is calculated */ - outBlockSize = (2U * srcALen) - 1U; - - /* When srcALen > srcBLen, zero padding has to be done to srcB - * to make their lengths equal. - * Instead, (outBlockSize - (srcALen + srcBLen - 1)) - * number of output samples are made zero */ - j = outBlockSize - (srcALen + (srcBLen - 1U)); - - /* Updating the pointer position to non zero value */ - pOut += j; - - //while (j > 0U) - //{ - // /* Zero is stored in the destination buffer */ - // *pOut++ = 0.0f; - - // /* Decrement the loop counter */ - // j--; - //} - - } - else - { - /* Initialization of inputA pointer */ - pIn1 = pSrcB; - - /* Initialization of inputB pointer */ - pIn2 = pSrcA; - - /* srcBLen is always considered as shorter or equal to srcALen */ - j = srcBLen; - srcBLen = srcALen; - srcALen = j; - - /* CORR(x, y) = Reverse order(CORR(y, x)) */ - /* Hence set the destination pointer to point to the last output sample */ - pOut = pDst + ((srcALen + srcBLen) - 2U); - - /* Destination address modifier is set to -1 */ - inc = -1; - - } - - /* The function is internally - * divided into three parts according to the number of multiplications that has to be - * taken place between inputA samples and inputB samples. In the first part of the - * algorithm, the multiplications increase by one for every iteration. - * In the second part of the algorithm, srcBLen number of multiplications are done. - * In the third part of the algorithm, the multiplications decrease by one - * for every iteration.*/ - /* The algorithm is implemented in three stages. - * The loop counters of each stage is initiated here. */ - blockSize1 = srcBLen - 1U; - blockSize2 = srcALen - (srcBLen - 1U); - blockSize3 = blockSize1; - - /* -------------------------- - * Initializations of stage1 - * -------------------------*/ - - /* sum = x[0] * y[srcBlen - 1] - * sum = x[0] * y[srcBlen-2] + x[1] * y[srcBlen - 1] - * .... - * sum = x[0] * y[0] + x[1] * y[1] +...+ x[srcBLen - 1] * y[srcBLen - 1] - */ - - /* In this stage the MAC operations are increased by 1 for every iteration. - The count variable holds the number of MAC operations performed */ - count = 1U; - - /* Working pointer of inputA */ - px = pIn1; - - /* Working pointer of inputB */ - pSrc1 = pIn2 + (srcBLen - 1U); - py = pSrc1; - - /* ------------------------ - * Stage1 process - * ----------------------*/ - - /* The first stage starts here */ - while (blockSize1 > 0U) - { - /* Accumulator is made zero for every iteration */ - sum = 0.0f; - - /* Apply loop unrolling and compute 4 MACs simultaneously. */ - k = count >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 MACs at a time. - ** a second loop below computes MACs for the remaining 1 to 3 samples. */ - while (k > 0U) - { - /* x[0] * y[srcBLen - 4] */ - sum += *px++ * *py++; - /* x[1] * y[srcBLen - 3] */ - sum += *px++ * *py++; - /* x[2] * y[srcBLen - 2] */ - sum += *px++ * *py++; - /* x[3] * y[srcBLen - 1] */ - sum += *px++ * *py++; - - /* Decrement the loop counter */ - k--; - } - - /* If the count is not a multiple of 4, compute any remaining MACs here. - ** No loop unrolling is used. */ - k = count % 0x4U; - - while (k > 0U) - { - /* Perform the multiply-accumulate */ - /* x[0] * y[srcBLen - 1] */ - sum += *px++ * *py++; - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut = sum; - /* Destination pointer is updated according to the address modifier, inc */ - pOut += inc; - - /* Update the inputA and inputB pointers for next MAC calculation */ - py = pSrc1 - count; - px = pIn1; - - /* Increment the MAC count */ - count++; - - /* Decrement the loop counter */ - blockSize1--; - } - - /* -------------------------- - * Initializations of stage2 - * ------------------------*/ - - /* sum = x[0] * y[0] + x[1] * y[1] +...+ x[srcBLen-1] * y[srcBLen-1] - * sum = x[1] * y[0] + x[2] * y[1] +...+ x[srcBLen] * y[srcBLen-1] - * .... - * sum = x[srcALen-srcBLen-2] * y[0] + x[srcALen-srcBLen-1] * y[1] +...+ x[srcALen-1] * y[srcBLen-1] - */ - - /* Working pointer of inputA */ - px = pIn1; - - /* Working pointer of inputB */ - py = pIn2; - - /* count is index by which the pointer pIn1 to be incremented */ - count = 0U; - - /* ------------------- - * Stage2 process - * ------------------*/ - - /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed. - * So, to loop unroll over blockSize2, - * srcBLen should be greater than or equal to 4, to loop unroll the srcBLen loop */ - if (srcBLen >= 4U) - { - /* Loop unroll over blockSize2, by 4 */ - blkCnt = blockSize2 >> 2U; - - while (blkCnt > 0U) - { - /* Set all accumulators to zero */ - acc0 = 0.0f; - acc1 = 0.0f; - acc2 = 0.0f; - acc3 = 0.0f; - - /* read x[0], x[1], x[2] samples */ - x0 = *(px++); - x1 = *(px++); - x2 = *(px++); - - /* Apply loop unrolling and compute 4 MACs simultaneously. */ - k = srcBLen >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 MACs at a time. - ** a second loop below computes MACs for the remaining 1 to 3 samples. */ - do - { - /* Read y[0] sample */ - c0 = *(py++); - - /* Read x[3] sample */ - x3 = *(px++); - - /* Perform the multiply-accumulate */ - /* acc0 += x[0] * y[0] */ - acc0 += x0 * c0; - /* acc1 += x[1] * y[0] */ - acc1 += x1 * c0; - /* acc2 += x[2] * y[0] */ - acc2 += x2 * c0; - /* acc3 += x[3] * y[0] */ - acc3 += x3 * c0; - - /* Read y[1] sample */ - c0 = *(py++); - - /* Read x[4] sample */ - x0 = *(px++); - - /* Perform the multiply-accumulate */ - /* acc0 += x[1] * y[1] */ - acc0 += x1 * c0; - /* acc1 += x[2] * y[1] */ - acc1 += x2 * c0; - /* acc2 += x[3] * y[1] */ - acc2 += x3 * c0; - /* acc3 += x[4] * y[1] */ - acc3 += x0 * c0; - - /* Read y[2] sample */ - c0 = *(py++); - - /* Read x[5] sample */ - x1 = *(px++); - - /* Perform the multiply-accumulates */ - /* acc0 += x[2] * y[2] */ - acc0 += x2 * c0; - /* acc1 += x[3] * y[2] */ - acc1 += x3 * c0; - /* acc2 += x[4] * y[2] */ - acc2 += x0 * c0; - /* acc3 += x[5] * y[2] */ - acc3 += x1 * c0; - - /* Read y[3] sample */ - c0 = *(py++); - - /* Read x[6] sample */ - x2 = *(px++); - - /* Perform the multiply-accumulates */ - /* acc0 += x[3] * y[3] */ - acc0 += x3 * c0; - /* acc1 += x[4] * y[3] */ - acc1 += x0 * c0; - /* acc2 += x[5] * y[3] */ - acc2 += x1 * c0; - /* acc3 += x[6] * y[3] */ - acc3 += x2 * c0; - - - } while (--k); - - /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. - ** No loop unrolling is used. */ - k = srcBLen % 0x4U; - - while (k > 0U) - { - /* Read y[4] sample */ - c0 = *(py++); - - /* Read x[7] sample */ - x3 = *(px++); - - /* Perform the multiply-accumulates */ - /* acc0 += x[4] * y[4] */ - acc0 += x0 * c0; - /* acc1 += x[5] * y[4] */ - acc1 += x1 * c0; - /* acc2 += x[6] * y[4] */ - acc2 += x2 * c0; - /* acc3 += x[7] * y[4] */ - acc3 += x3 * c0; - - /* Reuse the present samples for the next MAC */ - x0 = x1; - x1 = x2; - x2 = x3; - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut = acc0; - /* Destination pointer is updated according to the address modifier, inc */ - pOut += inc; - - *pOut = acc1; - pOut += inc; - - *pOut = acc2; - pOut += inc; - - *pOut = acc3; - pOut += inc; - - /* Increment the pointer pIn1 index, count by 4 */ - count += 4U; - - /* Update the inputA and inputB pointers for next MAC calculation */ - px = pIn1 + count; - py = pIn2; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize2 is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize2 % 0x4U; - - while (blkCnt > 0U) - { - /* Accumulator is made zero for every iteration */ - sum = 0.0f; - - /* Apply loop unrolling and compute 4 MACs simultaneously. */ - k = srcBLen >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 MACs at a time. - ** a second loop below computes MACs for the remaining 1 to 3 samples. */ - while (k > 0U) - { - /* Perform the multiply-accumulates */ - sum += *px++ * *py++; - sum += *px++ * *py++; - sum += *px++ * *py++; - sum += *px++ * *py++; - - /* Decrement the loop counter */ - k--; - } - - /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. - ** No loop unrolling is used. */ - k = srcBLen % 0x4U; - - while (k > 0U) - { - /* Perform the multiply-accumulate */ - sum += *px++ * *py++; - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut = sum; - /* Destination pointer is updated according to the address modifier, inc */ - pOut += inc; - - /* Increment the pointer pIn1 index, count by 1 */ - count++; - - /* Update the inputA and inputB pointers for next MAC calculation */ - px = pIn1 + count; - py = pIn2; - - /* Decrement the loop counter */ - blkCnt--; - } - } - else - { - /* If the srcBLen is not a multiple of 4, - * the blockSize2 loop cannot be unrolled by 4 */ - blkCnt = blockSize2; - - while (blkCnt > 0U) - { - /* Accumulator is made zero for every iteration */ - sum = 0.0f; - - /* Loop over srcBLen */ - k = srcBLen; - - while (k > 0U) - { - /* Perform the multiply-accumulate */ - sum += *px++ * *py++; - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut = sum; - /* Destination pointer is updated according to the address modifier, inc */ - pOut += inc; - - /* Increment the pointer pIn1 index, count by 1 */ - count++; - - /* Update the inputA and inputB pointers for next MAC calculation */ - px = pIn1 + count; - py = pIn2; - - /* Decrement the loop counter */ - blkCnt--; - } - } - - /* -------------------------- - * Initializations of stage3 - * -------------------------*/ - - /* sum += x[srcALen-srcBLen+1] * y[0] + x[srcALen-srcBLen+2] * y[1] +...+ x[srcALen-1] * y[srcBLen-1] - * sum += x[srcALen-srcBLen+2] * y[0] + x[srcALen-srcBLen+3] * y[1] +...+ x[srcALen-1] * y[srcBLen-1] - * .... - * sum += x[srcALen-2] * y[0] + x[srcALen-1] * y[1] - * sum += x[srcALen-1] * y[0] - */ - - /* In this stage the MAC operations are decreased by 1 for every iteration. - The count variable holds the number of MAC operations performed */ - count = srcBLen - 1U; - - /* Working pointer of inputA */ - pSrc1 = pIn1 + (srcALen - (srcBLen - 1U)); - px = pSrc1; - - /* Working pointer of inputB */ - py = pIn2; - - /* ------------------- - * Stage3 process - * ------------------*/ - - while (blockSize3 > 0U) - { - /* Accumulator is made zero for every iteration */ - sum = 0.0f; - - /* Apply loop unrolling and compute 4 MACs simultaneously. */ - k = count >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 MACs at a time. - ** a second loop below computes MACs for the remaining 1 to 3 samples. */ - while (k > 0U) - { - /* Perform the multiply-accumulates */ - /* sum += x[srcALen - srcBLen + 4] * y[3] */ - sum += *px++ * *py++; - /* sum += x[srcALen - srcBLen + 3] * y[2] */ - sum += *px++ * *py++; - /* sum += x[srcALen - srcBLen + 2] * y[1] */ - sum += *px++ * *py++; - /* sum += x[srcALen - srcBLen + 1] * y[0] */ - sum += *px++ * *py++; - - /* Decrement the loop counter */ - k--; - } - - /* If the count is not a multiple of 4, compute any remaining MACs here. - ** No loop unrolling is used. */ - k = count % 0x4U; - - while (k > 0U) - { - /* Perform the multiply-accumulates */ - sum += *px++ * *py++; - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut = sum; - /* Destination pointer is updated according to the address modifier, inc */ - pOut += inc; - - /* Update the inputA and inputB pointers for next MAC calculation */ - px = ++pSrc1; - py = pIn2; - - /* Decrement the MAC count */ - count--; - - /* Decrement the loop counter */ - blockSize3--; - } - -#else - - /* Run the below code for Cortex-M0 */ - - float32_t *pIn1 = pSrcA; /* inputA pointer */ - float32_t *pIn2 = pSrcB + (srcBLen - 1U); /* inputB pointer */ - float32_t sum; /* Accumulator */ - uint32_t i = 0U, j; /* loop counters */ - uint32_t inv = 0U; /* Reverse order flag */ - uint32_t tot = 0U; /* Length */ - - /* The algorithm implementation is based on the lengths of the inputs. */ - /* srcB is always made to slide across srcA. */ - /* So srcBLen is always considered as shorter or equal to srcALen */ - /* But CORR(x, y) is reverse of CORR(y, x) */ - /* So, when srcBLen > srcALen, output pointer is made to point to the end of the output buffer */ - /* and a varaible, inv is set to 1 */ - /* If lengths are not equal then zero pad has to be done to make the two - * inputs of same length. But to improve the performance, we assume zeroes - * in the output instead of zero padding either of the the inputs*/ - /* If srcALen > srcBLen, (srcALen - srcBLen) zeroes has to included in the - * starting of the output buffer */ - /* If srcALen < srcBLen, (srcALen - srcBLen) zeroes has to included in the - * ending of the output buffer */ - /* Once the zero padding is done the remaining of the output is calcualted - * using convolution but with the shorter signal time shifted. */ - - /* Calculate the length of the remaining sequence */ - tot = ((srcALen + srcBLen) - 2U); - - if (srcALen > srcBLen) - { - /* Calculating the number of zeros to be padded to the output */ - j = srcALen - srcBLen; - - /* Initialise the pointer after zero padding */ - pDst += j; - } - - else if (srcALen < srcBLen) - { - /* Initialization to inputB pointer */ - pIn1 = pSrcB; - - /* Initialization to the end of inputA pointer */ - pIn2 = pSrcA + (srcALen - 1U); - - /* Initialisation of the pointer after zero padding */ - pDst = pDst + tot; - - /* Swapping the lengths */ - j = srcALen; - srcALen = srcBLen; - srcBLen = j; - - /* Setting the reverse flag */ - inv = 1; - - } - - /* Loop to calculate convolution for output length number of times */ - for (i = 0U; i <= tot; i++) - { - /* Initialize sum with zero to carry on MAC operations */ - sum = 0.0f; - - /* Loop to perform MAC operations according to convolution equation */ - for (j = 0U; j <= i; j++) - { - /* Check the array limitations */ - if ((((i - j) < srcBLen) && (j < srcALen))) - { - /* z[i] += x[i-j] * y[j] */ - sum += pIn1[j] * pIn2[-((int32_t) i - j)]; - } - } - /* Store the output in the destination buffer */ - if (inv == 1) - *pDst-- = sum; - else - *pDst++ = sum; - } - -#endif /* #if defined (ARM_MATH_DSP) */ - -} - -/** - * @} end of Corr group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_fast_opt_q15.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_fast_opt_q15.c deleted file mode 100644 index a1b0dbd..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_fast_opt_q15.c +++ /dev/null @@ -1,500 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_correlate_fast_opt_q15.c - * Description: Fast Q15 Correlation - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupFilters - */ - -/** - * @addtogroup Corr - * @{ - */ - -/** - * @brief Correlation of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4. - * @param[in] *pSrcA points to the first input sequence. - * @param[in] srcALen length of the first input sequence. - * @param[in] *pSrcB points to the second input sequence. - * @param[in] srcBLen length of the second input sequence. - * @param[out] *pDst points to the location where the output result is written. Length 2 * max(srcALen, srcBLen) - 1. - * @param[in] *pScratch points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2. - * @return none. - * - * - * \par Restrictions - * If the silicon does not support unaligned memory access enable the macro UNALIGNED_SUPPORT_DISABLE - * In this case input, output, scratch buffers should be aligned by 32-bit - * - * - * Scaling and Overflow Behavior: - * - * \par - * This fast version uses a 32-bit accumulator with 2.30 format. - * The accumulator maintains full precision of the intermediate multiplication results but provides only a single guard bit. - * There is no saturation on intermediate additions. - * Thus, if the accumulator overflows it wraps around and distorts the result. - * The input signals should be scaled down to avoid intermediate overflows. - * Scale down one of the inputs by 1/min(srcALen, srcBLen) to avoid overflow since a - * maximum of min(srcALen, srcBLen) number of additions is carried internally. - * The 2.30 accumulator is right shifted by 15 bits and then saturated to 1.15 format to yield the final result. - * - * \par - * See arm_correlate_q15() for a slower implementation of this function which uses a 64-bit accumulator to avoid wrap around distortion. - */ - -void arm_correlate_fast_opt_q15( - q15_t * pSrcA, - uint32_t srcALen, - q15_t * pSrcB, - uint32_t srcBLen, - q15_t * pDst, - q15_t * pScratch) -{ - q15_t *pIn1; /* inputA pointer */ - q15_t *pIn2; /* inputB pointer */ - q31_t acc0, acc1, acc2, acc3; /* Accumulators */ - q15_t *py; /* Intermediate inputB pointer */ - q31_t x1, x2, x3; /* temporary variables for holding input and coefficient values */ - uint32_t j, blkCnt, outBlockSize; /* loop counter */ - int32_t inc = 1; /* Destination address modifier */ - uint32_t tapCnt; - q31_t y1, y2; - q15_t *pScr; /* Intermediate pointers */ - q15_t *pOut = pDst; /* output pointer */ -#ifdef UNALIGNED_SUPPORT_DISABLE - - q15_t a, b; - -#endif /* #ifndef UNALIGNED_SUPPORT_DISABLE */ - - /* The algorithm implementation is based on the lengths of the inputs. */ - /* srcB is always made to slide across srcA. */ - /* So srcBLen is always considered as shorter or equal to srcALen */ - /* But CORR(x, y) is reverse of CORR(y, x) */ - /* So, when srcBLen > srcALen, output pointer is made to point to the end of the output buffer */ - /* and the destination pointer modifier, inc is set to -1 */ - /* If srcALen > srcBLen, zero pad has to be done to srcB to make the two inputs of same length */ - /* But to improve the performance, - * we include zeroes in the output instead of zero padding either of the the inputs*/ - /* If srcALen > srcBLen, - * (srcALen - srcBLen) zeroes has to included in the starting of the output buffer */ - /* If srcALen < srcBLen, - * (srcALen - srcBLen) zeroes has to included in the ending of the output buffer */ - if (srcALen >= srcBLen) - { - /* Initialization of inputA pointer */ - pIn1 = (pSrcA); - - /* Initialization of inputB pointer */ - pIn2 = (pSrcB); - - /* Number of output samples is calculated */ - outBlockSize = (2U * srcALen) - 1U; - - /* When srcALen > srcBLen, zero padding is done to srcB - * to make their lengths equal. - * Instead, (outBlockSize - (srcALen + srcBLen - 1)) - * number of output samples are made zero */ - j = outBlockSize - (srcALen + (srcBLen - 1U)); - - /* Updating the pointer position to non zero value */ - pOut += j; - - } - else - { - /* Initialization of inputA pointer */ - pIn1 = (pSrcB); - - /* Initialization of inputB pointer */ - pIn2 = (pSrcA); - - /* srcBLen is always considered as shorter or equal to srcALen */ - j = srcBLen; - srcBLen = srcALen; - srcALen = j; - - /* CORR(x, y) = Reverse order(CORR(y, x)) */ - /* Hence set the destination pointer to point to the last output sample */ - pOut = pDst + ((srcALen + srcBLen) - 2U); - - /* Destination address modifier is set to -1 */ - inc = -1; - - } - - pScr = pScratch; - - /* Fill (srcBLen - 1U) zeros in scratch buffer */ - arm_fill_q15(0, pScr, (srcBLen - 1U)); - - /* Update temporary scratch pointer */ - pScr += (srcBLen - 1U); - -#ifndef UNALIGNED_SUPPORT_DISABLE - - /* Copy (srcALen) samples in scratch buffer */ - arm_copy_q15(pIn1, pScr, srcALen); - - /* Update pointers */ - pScr += srcALen; - -#else - - /* Apply loop unrolling and do 4 Copies simultaneously. */ - j = srcALen >> 2U; - - /* First part of the processing with loop unrolling copies 4 data points at a time. - ** a second loop below copies for the remaining 1 to 3 samples. */ - while (j > 0U) - { - /* copy second buffer in reversal manner */ - *pScr++ = *pIn1++; - *pScr++ = *pIn1++; - *pScr++ = *pIn1++; - *pScr++ = *pIn1++; - - /* Decrement the loop counter */ - j--; - } - - /* If the count is not a multiple of 4, copy remaining samples here. - ** No loop unrolling is used. */ - j = srcALen % 0x4U; - - while (j > 0U) - { - /* copy second buffer in reversal manner for remaining samples */ - *pScr++ = *pIn1++; - - /* Decrement the loop counter */ - j--; - } - -#endif /* #ifndef UNALIGNED_SUPPORT_DISABLE */ - -#ifndef UNALIGNED_SUPPORT_DISABLE - - /* Fill (srcBLen - 1U) zeros at end of scratch buffer */ - arm_fill_q15(0, pScr, (srcBLen - 1U)); - - /* Update pointer */ - pScr += (srcBLen - 1U); - -#else - -/* Apply loop unrolling and do 4 Copies simultaneously. */ - j = (srcBLen - 1U) >> 2U; - - /* First part of the processing with loop unrolling copies 4 data points at a time. - ** a second loop below copies for the remaining 1 to 3 samples. */ - while (j > 0U) - { - /* copy second buffer in reversal manner */ - *pScr++ = 0; - *pScr++ = 0; - *pScr++ = 0; - *pScr++ = 0; - - /* Decrement the loop counter */ - j--; - } - - /* If the count is not a multiple of 4, copy remaining samples here. - ** No loop unrolling is used. */ - j = (srcBLen - 1U) % 0x4U; - - while (j > 0U) - { - /* copy second buffer in reversal manner for remaining samples */ - *pScr++ = 0; - - /* Decrement the loop counter */ - j--; - } - -#endif /* #ifndef UNALIGNED_SUPPORT_DISABLE */ - - /* Temporary pointer for scratch2 */ - py = pIn2; - - - /* Actual correlation process starts here */ - blkCnt = (srcALen + srcBLen - 1U) >> 2; - - while (blkCnt > 0) - { - /* Initialze temporary scratch pointer as scratch1 */ - pScr = pScratch; - - /* Clear Accumlators */ - acc0 = 0; - acc1 = 0; - acc2 = 0; - acc3 = 0; - - /* Read four samples from scratch1 buffer */ - x1 = *__SIMD32(pScr)++; - - /* Read next four samples from scratch1 buffer */ - x2 = *__SIMD32(pScr)++; - - tapCnt = (srcBLen) >> 2U; - - while (tapCnt > 0U) - { - -#ifndef UNALIGNED_SUPPORT_DISABLE - - /* Read four samples from smaller buffer */ - y1 = _SIMD32_OFFSET(pIn2); - y2 = _SIMD32_OFFSET(pIn2 + 2U); - - acc0 = __SMLAD(x1, y1, acc0); - - acc2 = __SMLAD(x2, y1, acc2); - -#ifndef ARM_MATH_BIG_ENDIAN - x3 = __PKHBT(x2, x1, 0); -#else - x3 = __PKHBT(x1, x2, 0); -#endif - - acc1 = __SMLADX(x3, y1, acc1); - - x1 = _SIMD32_OFFSET(pScr); - - acc0 = __SMLAD(x2, y2, acc0); - - acc2 = __SMLAD(x1, y2, acc2); - -#ifndef ARM_MATH_BIG_ENDIAN - x3 = __PKHBT(x1, x2, 0); -#else - x3 = __PKHBT(x2, x1, 0); -#endif - - acc3 = __SMLADX(x3, y1, acc3); - - acc1 = __SMLADX(x3, y2, acc1); - - x2 = _SIMD32_OFFSET(pScr + 2U); - -#ifndef ARM_MATH_BIG_ENDIAN - x3 = __PKHBT(x2, x1, 0); -#else - x3 = __PKHBT(x1, x2, 0); -#endif - - acc3 = __SMLADX(x3, y2, acc3); -#else - - /* Read four samples from smaller buffer */ - a = *pIn2; - b = *(pIn2 + 1); - -#ifndef ARM_MATH_BIG_ENDIAN - y1 = __PKHBT(a, b, 16); -#else - y1 = __PKHBT(b, a, 16); -#endif - - a = *(pIn2 + 2); - b = *(pIn2 + 3); -#ifndef ARM_MATH_BIG_ENDIAN - y2 = __PKHBT(a, b, 16); -#else - y2 = __PKHBT(b, a, 16); -#endif - - acc0 = __SMLAD(x1, y1, acc0); - - acc2 = __SMLAD(x2, y1, acc2); - -#ifndef ARM_MATH_BIG_ENDIAN - x3 = __PKHBT(x2, x1, 0); -#else - x3 = __PKHBT(x1, x2, 0); -#endif - - acc1 = __SMLADX(x3, y1, acc1); - - a = *pScr; - b = *(pScr + 1); - -#ifndef ARM_MATH_BIG_ENDIAN - x1 = __PKHBT(a, b, 16); -#else - x1 = __PKHBT(b, a, 16); -#endif - - acc0 = __SMLAD(x2, y2, acc0); - - acc2 = __SMLAD(x1, y2, acc2); - -#ifndef ARM_MATH_BIG_ENDIAN - x3 = __PKHBT(x1, x2, 0); -#else - x3 = __PKHBT(x2, x1, 0); -#endif - - acc3 = __SMLADX(x3, y1, acc3); - - acc1 = __SMLADX(x3, y2, acc1); - - a = *(pScr + 2); - b = *(pScr + 3); - -#ifndef ARM_MATH_BIG_ENDIAN - x2 = __PKHBT(a, b, 16); -#else - x2 = __PKHBT(b, a, 16); -#endif - -#ifndef ARM_MATH_BIG_ENDIAN - x3 = __PKHBT(x2, x1, 0); -#else - x3 = __PKHBT(x1, x2, 0); -#endif - - acc3 = __SMLADX(x3, y2, acc3); - -#endif /* #ifndef UNALIGNED_SUPPORT_DISABLE */ - - pIn2 += 4U; - - pScr += 4U; - - - /* Decrement the loop counter */ - tapCnt--; - } - - - - /* Update scratch pointer for remaining samples of smaller length sequence */ - pScr -= 4U; - - - /* apply same above for remaining samples of smaller length sequence */ - tapCnt = (srcBLen) & 3U; - - while (tapCnt > 0U) - { - - /* accumlate the results */ - acc0 += (*pScr++ * *pIn2); - acc1 += (*pScr++ * *pIn2); - acc2 += (*pScr++ * *pIn2); - acc3 += (*pScr++ * *pIn2++); - - pScr -= 3U; - - /* Decrement the loop counter */ - tapCnt--; - } - - blkCnt--; - - - /* Store the results in the accumulators in the destination buffer. */ - *pOut = (__SSAT(acc0 >> 15U, 16)); - pOut += inc; - *pOut = (__SSAT(acc1 >> 15U, 16)); - pOut += inc; - *pOut = (__SSAT(acc2 >> 15U, 16)); - pOut += inc; - *pOut = (__SSAT(acc3 >> 15U, 16)); - pOut += inc; - - - /* Initialization of inputB pointer */ - pIn2 = py; - - pScratch += 4U; - - } - - - blkCnt = (srcALen + srcBLen - 1U) & 0x3; - - /* Calculate correlation for remaining samples of Bigger length sequence */ - while (blkCnt > 0) - { - /* Initialze temporary scratch pointer as scratch1 */ - pScr = pScratch; - - /* Clear Accumlators */ - acc0 = 0; - - tapCnt = (srcBLen) >> 1U; - - while (tapCnt > 0U) - { - - acc0 += (*pScr++ * *pIn2++); - acc0 += (*pScr++ * *pIn2++); - - /* Decrement the loop counter */ - tapCnt--; - } - - tapCnt = (srcBLen) & 1U; - - /* apply same above for remaining samples of smaller length sequence */ - while (tapCnt > 0U) - { - - /* accumlate the results */ - acc0 += (*pScr++ * *pIn2++); - - /* Decrement the loop counter */ - tapCnt--; - } - - blkCnt--; - - /* Store the result in the accumulator in the destination buffer. */ - - *pOut = (q15_t) (__SSAT((acc0 >> 15), 16)); - - pOut += inc; - - /* Initialization of inputB pointer */ - pIn2 = py; - - pScratch += 1U; - - } -} - -/** - * @} end of Corr group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_fast_q15.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_fast_q15.c deleted file mode 100644 index 383949d..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_fast_q15.c +++ /dev/null @@ -1,1307 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_correlate_fast_q15.c - * Description: Fast Q15 Correlation - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupFilters - */ - -/** - * @addtogroup Corr - * @{ - */ - -/** - * @brief Correlation of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4. - * @param[in] *pSrcA points to the first input sequence. - * @param[in] srcALen length of the first input sequence. - * @param[in] *pSrcB points to the second input sequence. - * @param[in] srcBLen length of the second input sequence. - * @param[out] *pDst points to the location where the output result is written. Length 2 * max(srcALen, srcBLen) - 1. - * @return none. - * - * Scaling and Overflow Behavior: - * - * \par - * This fast version uses a 32-bit accumulator with 2.30 format. - * The accumulator maintains full precision of the intermediate multiplication results but provides only a single guard bit. - * There is no saturation on intermediate additions. - * Thus, if the accumulator overflows it wraps around and distorts the result. - * The input signals should be scaled down to avoid intermediate overflows. - * Scale down one of the inputs by 1/min(srcALen, srcBLen) to avoid overflow since a - * maximum of min(srcALen, srcBLen) number of additions is carried internally. - * The 2.30 accumulator is right shifted by 15 bits and then saturated to 1.15 format to yield the final result. - * - * \par - * See arm_correlate_q15() for a slower implementation of this function which uses a 64-bit accumulator to avoid wrap around distortion. - */ - -void arm_correlate_fast_q15( - q15_t * pSrcA, - uint32_t srcALen, - q15_t * pSrcB, - uint32_t srcBLen, - q15_t * pDst) -{ -#ifndef UNALIGNED_SUPPORT_DISABLE - - q15_t *pIn1; /* inputA pointer */ - q15_t *pIn2; /* inputB pointer */ - q15_t *pOut = pDst; /* output pointer */ - q31_t sum, acc0, acc1, acc2, acc3; /* Accumulators */ - q15_t *px; /* Intermediate inputA pointer */ - q15_t *py; /* Intermediate inputB pointer */ - q15_t *pSrc1; /* Intermediate pointers */ - q31_t x0, x1, x2, x3, c0; /* temporary variables for holding input and coefficient values */ - uint32_t j, k = 0U, count, blkCnt, outBlockSize, blockSize1, blockSize2, blockSize3; /* loop counter */ - int32_t inc = 1; /* Destination address modifier */ - - - /* The algorithm implementation is based on the lengths of the inputs. */ - /* srcB is always made to slide across srcA. */ - /* So srcBLen is always considered as shorter or equal to srcALen */ - /* But CORR(x, y) is reverse of CORR(y, x) */ - /* So, when srcBLen > srcALen, output pointer is made to point to the end of the output buffer */ - /* and the destination pointer modifier, inc is set to -1 */ - /* If srcALen > srcBLen, zero pad has to be done to srcB to make the two inputs of same length */ - /* But to improve the performance, - * we include zeroes in the output instead of zero padding either of the the inputs*/ - /* If srcALen > srcBLen, - * (srcALen - srcBLen) zeroes has to included in the starting of the output buffer */ - /* If srcALen < srcBLen, - * (srcALen - srcBLen) zeroes has to included in the ending of the output buffer */ - if (srcALen >= srcBLen) - { - /* Initialization of inputA pointer */ - pIn1 = (pSrcA); - - /* Initialization of inputB pointer */ - pIn2 = (pSrcB); - - /* Number of output samples is calculated */ - outBlockSize = (2U * srcALen) - 1U; - - /* When srcALen > srcBLen, zero padding is done to srcB - * to make their lengths equal. - * Instead, (outBlockSize - (srcALen + srcBLen - 1)) - * number of output samples are made zero */ - j = outBlockSize - (srcALen + (srcBLen - 1U)); - - /* Updating the pointer position to non zero value */ - pOut += j; - - } - else - { - /* Initialization of inputA pointer */ - pIn1 = (pSrcB); - - /* Initialization of inputB pointer */ - pIn2 = (pSrcA); - - /* srcBLen is always considered as shorter or equal to srcALen */ - j = srcBLen; - srcBLen = srcALen; - srcALen = j; - - /* CORR(x, y) = Reverse order(CORR(y, x)) */ - /* Hence set the destination pointer to point to the last output sample */ - pOut = pDst + ((srcALen + srcBLen) - 2U); - - /* Destination address modifier is set to -1 */ - inc = -1; - - } - - /* The function is internally - * divided into three parts according to the number of multiplications that has to be - * taken place between inputA samples and inputB samples. In the first part of the - * algorithm, the multiplications increase by one for every iteration. - * In the second part of the algorithm, srcBLen number of multiplications are done. - * In the third part of the algorithm, the multiplications decrease by one - * for every iteration.*/ - /* The algorithm is implemented in three stages. - * The loop counters of each stage is initiated here. */ - blockSize1 = srcBLen - 1U; - blockSize2 = srcALen - (srcBLen - 1U); - blockSize3 = blockSize1; - - /* -------------------------- - * Initializations of stage1 - * -------------------------*/ - - /* sum = x[0] * y[srcBlen - 1] - * sum = x[0] * y[srcBlen - 2] + x[1] * y[srcBlen - 1] - * .... - * sum = x[0] * y[0] + x[1] * y[1] +...+ x[srcBLen - 1] * y[srcBLen - 1] - */ - - /* In this stage the MAC operations are increased by 1 for every iteration. - The count variable holds the number of MAC operations performed */ - count = 1U; - - /* Working pointer of inputA */ - px = pIn1; - - /* Working pointer of inputB */ - pSrc1 = pIn2 + (srcBLen - 1U); - py = pSrc1; - - /* ------------------------ - * Stage1 process - * ----------------------*/ - - /* The first loop starts here */ - while (blockSize1 > 0U) - { - /* Accumulator is made zero for every iteration */ - sum = 0; - - /* Apply loop unrolling and compute 4 MACs simultaneously. */ - k = count >> 2; - - /* First part of the processing with loop unrolling. Compute 4 MACs at a time. - ** a second loop below computes MACs for the remaining 1 to 3 samples. */ - while (k > 0U) - { - /* x[0] * y[srcBLen - 4] , x[1] * y[srcBLen - 3] */ - sum = __SMLAD(*__SIMD32(px)++, *__SIMD32(py)++, sum); - /* x[3] * y[srcBLen - 1] , x[2] * y[srcBLen - 2] */ - sum = __SMLAD(*__SIMD32(px)++, *__SIMD32(py)++, sum); - - /* Decrement the loop counter */ - k--; - } - - /* If the count is not a multiple of 4, compute any remaining MACs here. - ** No loop unrolling is used. */ - k = count % 0x4U; - - while (k > 0U) - { - /* Perform the multiply-accumulates */ - /* x[0] * y[srcBLen - 1] */ - sum = __SMLAD(*px++, *py++, sum); - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut = (q15_t) (sum >> 15); - /* Destination pointer is updated according to the address modifier, inc */ - pOut += inc; - - /* Update the inputA and inputB pointers for next MAC calculation */ - py = pSrc1 - count; - px = pIn1; - - /* Increment the MAC count */ - count++; - - /* Decrement the loop counter */ - blockSize1--; - } - - /* -------------------------- - * Initializations of stage2 - * ------------------------*/ - - /* sum = x[0] * y[0] + x[1] * y[1] +...+ x[srcBLen-1] * y[srcBLen-1] - * sum = x[1] * y[0] + x[2] * y[1] +...+ x[srcBLen] * y[srcBLen-1] - * .... - * sum = x[srcALen-srcBLen-2] * y[0] + x[srcALen-srcBLen-1] * y[1] +...+ x[srcALen-1] * y[srcBLen-1] - */ - - /* Working pointer of inputA */ - px = pIn1; - - /* Working pointer of inputB */ - py = pIn2; - - /* count is index by which the pointer pIn1 to be incremented */ - count = 0U; - - /* ------------------- - * Stage2 process - * ------------------*/ - - /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed. - * So, to loop unroll over blockSize2, - * srcBLen should be greater than or equal to 4, to loop unroll the srcBLen loop */ - if (srcBLen >= 4U) - { - /* Loop unroll over blockSize2, by 4 */ - blkCnt = blockSize2 >> 2U; - - while (blkCnt > 0U) - { - /* Set all accumulators to zero */ - acc0 = 0; - acc1 = 0; - acc2 = 0; - acc3 = 0; - - /* read x[0], x[1] samples */ - x0 = *__SIMD32(px); - /* read x[1], x[2] samples */ - x1 = _SIMD32_OFFSET(px + 1); - px += 2U; - - /* Apply loop unrolling and compute 4 MACs simultaneously. */ - k = srcBLen >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 MACs at a time. - ** a second loop below computes MACs for the remaining 1 to 3 samples. */ - do - { - /* Read the first two inputB samples using SIMD: - * y[0] and y[1] */ - c0 = *__SIMD32(py)++; - - /* acc0 += x[0] * y[0] + x[1] * y[1] */ - acc0 = __SMLAD(x0, c0, acc0); - - /* acc1 += x[1] * y[0] + x[2] * y[1] */ - acc1 = __SMLAD(x1, c0, acc1); - - /* Read x[2], x[3] */ - x2 = *__SIMD32(px); - - /* Read x[3], x[4] */ - x3 = _SIMD32_OFFSET(px + 1); - - /* acc2 += x[2] * y[0] + x[3] * y[1] */ - acc2 = __SMLAD(x2, c0, acc2); - - /* acc3 += x[3] * y[0] + x[4] * y[1] */ - acc3 = __SMLAD(x3, c0, acc3); - - /* Read y[2] and y[3] */ - c0 = *__SIMD32(py)++; - - /* acc0 += x[2] * y[2] + x[3] * y[3] */ - acc0 = __SMLAD(x2, c0, acc0); - - /* acc1 += x[3] * y[2] + x[4] * y[3] */ - acc1 = __SMLAD(x3, c0, acc1); - - /* Read x[4], x[5] */ - x0 = _SIMD32_OFFSET(px + 2); - - /* Read x[5], x[6] */ - x1 = _SIMD32_OFFSET(px + 3); - px += 4U; - - /* acc2 += x[4] * y[2] + x[5] * y[3] */ - acc2 = __SMLAD(x0, c0, acc2); - - /* acc3 += x[5] * y[2] + x[6] * y[3] */ - acc3 = __SMLAD(x1, c0, acc3); - - } while (--k); - - /* For the next MAC operations, SIMD is not used - * So, the 16 bit pointer if inputB, py is updated */ - - /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. - ** No loop unrolling is used. */ - k = srcBLen % 0x4U; - - if (k == 1U) - { - /* Read y[4] */ - c0 = *py; -#ifdef ARM_MATH_BIG_ENDIAN - - c0 = c0 << 16U; - -#else - - c0 = c0 & 0x0000FFFF; - -#endif /* #ifdef ARM_MATH_BIG_ENDIAN */ - - /* Read x[7] */ - x3 = *__SIMD32(px); - px++; - - /* Perform the multiply-accumulates */ - acc0 = __SMLAD(x0, c0, acc0); - acc1 = __SMLAD(x1, c0, acc1); - acc2 = __SMLADX(x1, c0, acc2); - acc3 = __SMLADX(x3, c0, acc3); - } - - if (k == 2U) - { - /* Read y[4], y[5] */ - c0 = *__SIMD32(py); - - /* Read x[7], x[8] */ - x3 = *__SIMD32(px); - - /* Read x[9] */ - x2 = _SIMD32_OFFSET(px + 1); - px += 2U; - - /* Perform the multiply-accumulates */ - acc0 = __SMLAD(x0, c0, acc0); - acc1 = __SMLAD(x1, c0, acc1); - acc2 = __SMLAD(x3, c0, acc2); - acc3 = __SMLAD(x2, c0, acc3); - } - - if (k == 3U) - { - /* Read y[4], y[5] */ - c0 = *__SIMD32(py)++; - - /* Read x[7], x[8] */ - x3 = *__SIMD32(px); - - /* Read x[9] */ - x2 = _SIMD32_OFFSET(px + 1); - - /* Perform the multiply-accumulates */ - acc0 = __SMLAD(x0, c0, acc0); - acc1 = __SMLAD(x1, c0, acc1); - acc2 = __SMLAD(x3, c0, acc2); - acc3 = __SMLAD(x2, c0, acc3); - - c0 = (*py); - /* Read y[6] */ -#ifdef ARM_MATH_BIG_ENDIAN - - c0 = c0 << 16U; -#else - - c0 = c0 & 0x0000FFFF; -#endif /* #ifdef ARM_MATH_BIG_ENDIAN */ - - /* Read x[10] */ - x3 = _SIMD32_OFFSET(px + 2); - px += 3U; - - /* Perform the multiply-accumulates */ - acc0 = __SMLADX(x1, c0, acc0); - acc1 = __SMLAD(x2, c0, acc1); - acc2 = __SMLADX(x2, c0, acc2); - acc3 = __SMLADX(x3, c0, acc3); - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut = (q15_t) (acc0 >> 15); - /* Destination pointer is updated according to the address modifier, inc */ - pOut += inc; - - *pOut = (q15_t) (acc1 >> 15); - pOut += inc; - - *pOut = (q15_t) (acc2 >> 15); - pOut += inc; - - *pOut = (q15_t) (acc3 >> 15); - pOut += inc; - - /* Increment the pointer pIn1 index, count by 1 */ - count += 4U; - - /* Update the inputA and inputB pointers for next MAC calculation */ - px = pIn1 + count; - py = pIn2; - - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize2 is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize2 % 0x4U; - - while (blkCnt > 0U) - { - /* Accumulator is made zero for every iteration */ - sum = 0; - - /* Apply loop unrolling and compute 4 MACs simultaneously. */ - k = srcBLen >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 MACs at a time. - ** a second loop below computes MACs for the remaining 1 to 3 samples. */ - while (k > 0U) - { - /* Perform the multiply-accumulates */ - sum += ((q31_t) * px++ * *py++); - sum += ((q31_t) * px++ * *py++); - sum += ((q31_t) * px++ * *py++); - sum += ((q31_t) * px++ * *py++); - - /* Decrement the loop counter */ - k--; - } - - /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. - ** No loop unrolling is used. */ - k = srcBLen % 0x4U; - - while (k > 0U) - { - /* Perform the multiply-accumulates */ - sum += ((q31_t) * px++ * *py++); - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut = (q15_t) (sum >> 15); - /* Destination pointer is updated according to the address modifier, inc */ - pOut += inc; - - /* Increment the pointer pIn1 index, count by 1 */ - count++; - - /* Update the inputA and inputB pointers for next MAC calculation */ - px = pIn1 + count; - py = pIn2; - - /* Decrement the loop counter */ - blkCnt--; - } - } - else - { - /* If the srcBLen is not a multiple of 4, - * the blockSize2 loop cannot be unrolled by 4 */ - blkCnt = blockSize2; - - while (blkCnt > 0U) - { - /* Accumulator is made zero for every iteration */ - sum = 0; - - /* Loop over srcBLen */ - k = srcBLen; - - while (k > 0U) - { - /* Perform the multiply-accumulate */ - sum += ((q31_t) * px++ * *py++); - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut = (q15_t) (sum >> 15); - /* Destination pointer is updated according to the address modifier, inc */ - pOut += inc; - - /* Increment the MAC count */ - count++; - - /* Update the inputA and inputB pointers for next MAC calculation */ - px = pIn1 + count; - py = pIn2; - - /* Decrement the loop counter */ - blkCnt--; - } - } - - /* -------------------------- - * Initializations of stage3 - * -------------------------*/ - - /* sum += x[srcALen-srcBLen+1] * y[0] + x[srcALen-srcBLen+2] * y[1] +...+ x[srcALen-1] * y[srcBLen-1] - * sum += x[srcALen-srcBLen+2] * y[0] + x[srcALen-srcBLen+3] * y[1] +...+ x[srcALen-1] * y[srcBLen-1] - * .... - * sum += x[srcALen-2] * y[0] + x[srcALen-1] * y[1] - * sum += x[srcALen-1] * y[0] - */ - - /* In this stage the MAC operations are decreased by 1 for every iteration. - The count variable holds the number of MAC operations performed */ - count = srcBLen - 1U; - - /* Working pointer of inputA */ - pSrc1 = (pIn1 + srcALen) - (srcBLen - 1U); - px = pSrc1; - - /* Working pointer of inputB */ - py = pIn2; - - /* ------------------- - * Stage3 process - * ------------------*/ - - while (blockSize3 > 0U) - { - /* Accumulator is made zero for every iteration */ - sum = 0; - - /* Apply loop unrolling and compute 4 MACs simultaneously. */ - k = count >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 MACs at a time. - ** a second loop below computes MACs for the remaining 1 to 3 samples. */ - while (k > 0U) - { - /* Perform the multiply-accumulates */ - /* sum += x[srcALen - srcBLen + 4] * y[3] , sum += x[srcALen - srcBLen + 3] * y[2] */ - sum = __SMLAD(*__SIMD32(px)++, *__SIMD32(py)++, sum); - /* sum += x[srcALen - srcBLen + 2] * y[1] , sum += x[srcALen - srcBLen + 1] * y[0] */ - sum = __SMLAD(*__SIMD32(px)++, *__SIMD32(py)++, sum); - - /* Decrement the loop counter */ - k--; - } - - /* If the count is not a multiple of 4, compute any remaining MACs here. - ** No loop unrolling is used. */ - k = count % 0x4U; - - while (k > 0U) - { - /* Perform the multiply-accumulates */ - sum = __SMLAD(*px++, *py++, sum); - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut = (q15_t) (sum >> 15); - /* Destination pointer is updated according to the address modifier, inc */ - pOut += inc; - - /* Update the inputA and inputB pointers for next MAC calculation */ - px = ++pSrc1; - py = pIn2; - - /* Decrement the MAC count */ - count--; - - /* Decrement the loop counter */ - blockSize3--; - } - -#else - - q15_t *pIn1; /* inputA pointer */ - q15_t *pIn2; /* inputB pointer */ - q15_t *pOut = pDst; /* output pointer */ - q31_t sum, acc0, acc1, acc2, acc3; /* Accumulators */ - q15_t *px; /* Intermediate inputA pointer */ - q15_t *py; /* Intermediate inputB pointer */ - q15_t *pSrc1; /* Intermediate pointers */ - q31_t x0, x1, x2, x3, c0; /* temporary variables for holding input and coefficient values */ - uint32_t j, k = 0U, count, blkCnt, outBlockSize, blockSize1, blockSize2, blockSize3; /* loop counter */ - int32_t inc = 1; /* Destination address modifier */ - q15_t a, b; - - - /* The algorithm implementation is based on the lengths of the inputs. */ - /* srcB is always made to slide across srcA. */ - /* So srcBLen is always considered as shorter or equal to srcALen */ - /* But CORR(x, y) is reverse of CORR(y, x) */ - /* So, when srcBLen > srcALen, output pointer is made to point to the end of the output buffer */ - /* and the destination pointer modifier, inc is set to -1 */ - /* If srcALen > srcBLen, zero pad has to be done to srcB to make the two inputs of same length */ - /* But to improve the performance, - * we include zeroes in the output instead of zero padding either of the the inputs*/ - /* If srcALen > srcBLen, - * (srcALen - srcBLen) zeroes has to included in the starting of the output buffer */ - /* If srcALen < srcBLen, - * (srcALen - srcBLen) zeroes has to included in the ending of the output buffer */ - if (srcALen >= srcBLen) - { - /* Initialization of inputA pointer */ - pIn1 = (pSrcA); - - /* Initialization of inputB pointer */ - pIn2 = (pSrcB); - - /* Number of output samples is calculated */ - outBlockSize = (2U * srcALen) - 1U; - - /* When srcALen > srcBLen, zero padding is done to srcB - * to make their lengths equal. - * Instead, (outBlockSize - (srcALen + srcBLen - 1)) - * number of output samples are made zero */ - j = outBlockSize - (srcALen + (srcBLen - 1U)); - - /* Updating the pointer position to non zero value */ - pOut += j; - - } - else - { - /* Initialization of inputA pointer */ - pIn1 = (pSrcB); - - /* Initialization of inputB pointer */ - pIn2 = (pSrcA); - - /* srcBLen is always considered as shorter or equal to srcALen */ - j = srcBLen; - srcBLen = srcALen; - srcALen = j; - - /* CORR(x, y) = Reverse order(CORR(y, x)) */ - /* Hence set the destination pointer to point to the last output sample */ - pOut = pDst + ((srcALen + srcBLen) - 2U); - - /* Destination address modifier is set to -1 */ - inc = -1; - - } - - /* The function is internally - * divided into three parts according to the number of multiplications that has to be - * taken place between inputA samples and inputB samples. In the first part of the - * algorithm, the multiplications increase by one for every iteration. - * In the second part of the algorithm, srcBLen number of multiplications are done. - * In the third part of the algorithm, the multiplications decrease by one - * for every iteration.*/ - /* The algorithm is implemented in three stages. - * The loop counters of each stage is initiated here. */ - blockSize1 = srcBLen - 1U; - blockSize2 = srcALen - (srcBLen - 1U); - blockSize3 = blockSize1; - - /* -------------------------- - * Initializations of stage1 - * -------------------------*/ - - /* sum = x[0] * y[srcBlen - 1] - * sum = x[0] * y[srcBlen - 2] + x[1] * y[srcBlen - 1] - * .... - * sum = x[0] * y[0] + x[1] * y[1] +...+ x[srcBLen - 1] * y[srcBLen - 1] - */ - - /* In this stage the MAC operations are increased by 1 for every iteration. - The count variable holds the number of MAC operations performed */ - count = 1U; - - /* Working pointer of inputA */ - px = pIn1; - - /* Working pointer of inputB */ - pSrc1 = pIn2 + (srcBLen - 1U); - py = pSrc1; - - /* ------------------------ - * Stage1 process - * ----------------------*/ - - /* The first loop starts here */ - while (blockSize1 > 0U) - { - /* Accumulator is made zero for every iteration */ - sum = 0; - - /* Apply loop unrolling and compute 4 MACs simultaneously. */ - k = count >> 2; - - /* First part of the processing with loop unrolling. Compute 4 MACs at a time. - ** a second loop below computes MACs for the remaining 1 to 3 samples. */ - while (k > 0U) - { - /* x[0] * y[srcBLen - 4] , x[1] * y[srcBLen - 3] */ - sum += ((q31_t) * px++ * *py++); - sum += ((q31_t) * px++ * *py++); - sum += ((q31_t) * px++ * *py++); - sum += ((q31_t) * px++ * *py++); - - /* Decrement the loop counter */ - k--; - } - - /* If the count is not a multiple of 4, compute any remaining MACs here. - ** No loop unrolling is used. */ - k = count % 0x4U; - - while (k > 0U) - { - /* Perform the multiply-accumulates */ - /* x[0] * y[srcBLen - 1] */ - sum += ((q31_t) * px++ * *py++); - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut = (q15_t) (sum >> 15); - /* Destination pointer is updated according to the address modifier, inc */ - pOut += inc; - - /* Update the inputA and inputB pointers for next MAC calculation */ - py = pSrc1 - count; - px = pIn1; - - /* Increment the MAC count */ - count++; - - /* Decrement the loop counter */ - blockSize1--; - } - - /* -------------------------- - * Initializations of stage2 - * ------------------------*/ - - /* sum = x[0] * y[0] + x[1] * y[1] +...+ x[srcBLen-1] * y[srcBLen-1] - * sum = x[1] * y[0] + x[2] * y[1] +...+ x[srcBLen] * y[srcBLen-1] - * .... - * sum = x[srcALen-srcBLen-2] * y[0] + x[srcALen-srcBLen-1] * y[1] +...+ x[srcALen-1] * y[srcBLen-1] - */ - - /* Working pointer of inputA */ - px = pIn1; - - /* Working pointer of inputB */ - py = pIn2; - - /* count is index by which the pointer pIn1 to be incremented */ - count = 0U; - - /* ------------------- - * Stage2 process - * ------------------*/ - - /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed. - * So, to loop unroll over blockSize2, - * srcBLen should be greater than or equal to 4, to loop unroll the srcBLen loop */ - if (srcBLen >= 4U) - { - /* Loop unroll over blockSize2, by 4 */ - blkCnt = blockSize2 >> 2U; - - while (blkCnt > 0U) - { - /* Set all accumulators to zero */ - acc0 = 0; - acc1 = 0; - acc2 = 0; - acc3 = 0; - - /* read x[0], x[1], x[2] samples */ - a = *px; - b = *(px + 1); - -#ifndef ARM_MATH_BIG_ENDIAN - - x0 = __PKHBT(a, b, 16); - a = *(px + 2); - x1 = __PKHBT(b, a, 16); - -#else - - x0 = __PKHBT(b, a, 16); - a = *(px + 2); - x1 = __PKHBT(a, b, 16); - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - px += 2U; - - /* Apply loop unrolling and compute 4 MACs simultaneously. */ - k = srcBLen >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 MACs at a time. - ** a second loop below computes MACs for the remaining 1 to 3 samples. */ - do - { - /* Read the first two inputB samples using SIMD: - * y[0] and y[1] */ - a = *py; - b = *(py + 1); - -#ifndef ARM_MATH_BIG_ENDIAN - - c0 = __PKHBT(a, b, 16); - -#else - - c0 = __PKHBT(b, a, 16); - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - /* acc0 += x[0] * y[0] + x[1] * y[1] */ - acc0 = __SMLAD(x0, c0, acc0); - - /* acc1 += x[1] * y[0] + x[2] * y[1] */ - acc1 = __SMLAD(x1, c0, acc1); - - /* Read x[2], x[3], x[4] */ - a = *px; - b = *(px + 1); - -#ifndef ARM_MATH_BIG_ENDIAN - - x2 = __PKHBT(a, b, 16); - a = *(px + 2); - x3 = __PKHBT(b, a, 16); - -#else - - x2 = __PKHBT(b, a, 16); - a = *(px + 2); - x3 = __PKHBT(a, b, 16); - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - /* acc2 += x[2] * y[0] + x[3] * y[1] */ - acc2 = __SMLAD(x2, c0, acc2); - - /* acc3 += x[3] * y[0] + x[4] * y[1] */ - acc3 = __SMLAD(x3, c0, acc3); - - /* Read y[2] and y[3] */ - a = *(py + 2); - b = *(py + 3); - - py += 4U; - -#ifndef ARM_MATH_BIG_ENDIAN - - c0 = __PKHBT(a, b, 16); - -#else - - c0 = __PKHBT(b, a, 16); - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - /* acc0 += x[2] * y[2] + x[3] * y[3] */ - acc0 = __SMLAD(x2, c0, acc0); - - /* acc1 += x[3] * y[2] + x[4] * y[3] */ - acc1 = __SMLAD(x3, c0, acc1); - - /* Read x[4], x[5], x[6] */ - a = *(px + 2); - b = *(px + 3); - -#ifndef ARM_MATH_BIG_ENDIAN - - x0 = __PKHBT(a, b, 16); - a = *(px + 4); - x1 = __PKHBT(b, a, 16); - -#else - - x0 = __PKHBT(b, a, 16); - a = *(px + 4); - x1 = __PKHBT(a, b, 16); - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - px += 4U; - - /* acc2 += x[4] * y[2] + x[5] * y[3] */ - acc2 = __SMLAD(x0, c0, acc2); - - /* acc3 += x[5] * y[2] + x[6] * y[3] */ - acc3 = __SMLAD(x1, c0, acc3); - - } while (--k); - - /* For the next MAC operations, SIMD is not used - * So, the 16 bit pointer if inputB, py is updated */ - - /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. - ** No loop unrolling is used. */ - k = srcBLen % 0x4U; - - if (k == 1U) - { - /* Read y[4] */ - c0 = *py; -#ifdef ARM_MATH_BIG_ENDIAN - - c0 = c0 << 16U; - -#else - - c0 = c0 & 0x0000FFFF; - -#endif /* #ifdef ARM_MATH_BIG_ENDIAN */ - - /* Read x[7] */ - a = *px; - b = *(px + 1); - - px++;; - -#ifndef ARM_MATH_BIG_ENDIAN - - x3 = __PKHBT(a, b, 16); - -#else - - x3 = __PKHBT(b, a, 16); - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - px++; - - /* Perform the multiply-accumulates */ - acc0 = __SMLAD(x0, c0, acc0); - acc1 = __SMLAD(x1, c0, acc1); - acc2 = __SMLADX(x1, c0, acc2); - acc3 = __SMLADX(x3, c0, acc3); - } - - if (k == 2U) - { - /* Read y[4], y[5] */ - a = *py; - b = *(py + 1); - -#ifndef ARM_MATH_BIG_ENDIAN - - c0 = __PKHBT(a, b, 16); - -#else - - c0 = __PKHBT(b, a, 16); - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - /* Read x[7], x[8], x[9] */ - a = *px; - b = *(px + 1); - -#ifndef ARM_MATH_BIG_ENDIAN - - x3 = __PKHBT(a, b, 16); - a = *(px + 2); - x2 = __PKHBT(b, a, 16); - -#else - - x3 = __PKHBT(b, a, 16); - a = *(px + 2); - x2 = __PKHBT(a, b, 16); - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - px += 2U; - - /* Perform the multiply-accumulates */ - acc0 = __SMLAD(x0, c0, acc0); - acc1 = __SMLAD(x1, c0, acc1); - acc2 = __SMLAD(x3, c0, acc2); - acc3 = __SMLAD(x2, c0, acc3); - } - - if (k == 3U) - { - /* Read y[4], y[5] */ - a = *py; - b = *(py + 1); - -#ifndef ARM_MATH_BIG_ENDIAN - - c0 = __PKHBT(a, b, 16); - -#else - - c0 = __PKHBT(b, a, 16); - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - py += 2U; - - /* Read x[7], x[8], x[9] */ - a = *px; - b = *(px + 1); - -#ifndef ARM_MATH_BIG_ENDIAN - - x3 = __PKHBT(a, b, 16); - a = *(px + 2); - x2 = __PKHBT(b, a, 16); - -#else - - x3 = __PKHBT(b, a, 16); - a = *(px + 2); - x2 = __PKHBT(a, b, 16); - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - /* Perform the multiply-accumulates */ - acc0 = __SMLAD(x0, c0, acc0); - acc1 = __SMLAD(x1, c0, acc1); - acc2 = __SMLAD(x3, c0, acc2); - acc3 = __SMLAD(x2, c0, acc3); - - c0 = (*py); - /* Read y[6] */ -#ifdef ARM_MATH_BIG_ENDIAN - - c0 = c0 << 16U; -#else - - c0 = c0 & 0x0000FFFF; -#endif /* #ifdef ARM_MATH_BIG_ENDIAN */ - - /* Read x[10] */ - b = *(px + 3); - -#ifndef ARM_MATH_BIG_ENDIAN - - x3 = __PKHBT(a, b, 16); - -#else - - x3 = __PKHBT(b, a, 16); - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - px += 3U; - - /* Perform the multiply-accumulates */ - acc0 = __SMLADX(x1, c0, acc0); - acc1 = __SMLAD(x2, c0, acc1); - acc2 = __SMLADX(x2, c0, acc2); - acc3 = __SMLADX(x3, c0, acc3); - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut = (q15_t) (acc0 >> 15); - /* Destination pointer is updated according to the address modifier, inc */ - pOut += inc; - - *pOut = (q15_t) (acc1 >> 15); - pOut += inc; - - *pOut = (q15_t) (acc2 >> 15); - pOut += inc; - - *pOut = (q15_t) (acc3 >> 15); - pOut += inc; - - /* Increment the pointer pIn1 index, count by 1 */ - count += 4U; - - /* Update the inputA and inputB pointers for next MAC calculation */ - px = pIn1 + count; - py = pIn2; - - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize2 is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize2 % 0x4U; - - while (blkCnt > 0U) - { - /* Accumulator is made zero for every iteration */ - sum = 0; - - /* Apply loop unrolling and compute 4 MACs simultaneously. */ - k = srcBLen >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 MACs at a time. - ** a second loop below computes MACs for the remaining 1 to 3 samples. */ - while (k > 0U) - { - /* Perform the multiply-accumulates */ - sum += ((q31_t) * px++ * *py++); - sum += ((q31_t) * px++ * *py++); - sum += ((q31_t) * px++ * *py++); - sum += ((q31_t) * px++ * *py++); - - /* Decrement the loop counter */ - k--; - } - - /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. - ** No loop unrolling is used. */ - k = srcBLen % 0x4U; - - while (k > 0U) - { - /* Perform the multiply-accumulates */ - sum += ((q31_t) * px++ * *py++); - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut = (q15_t) (sum >> 15); - /* Destination pointer is updated according to the address modifier, inc */ - pOut += inc; - - /* Increment the pointer pIn1 index, count by 1 */ - count++; - - /* Update the inputA and inputB pointers for next MAC calculation */ - px = pIn1 + count; - py = pIn2; - - /* Decrement the loop counter */ - blkCnt--; - } - } - else - { - /* If the srcBLen is not a multiple of 4, - * the blockSize2 loop cannot be unrolled by 4 */ - blkCnt = blockSize2; - - while (blkCnt > 0U) - { - /* Accumulator is made zero for every iteration */ - sum = 0; - - /* Loop over srcBLen */ - k = srcBLen; - - while (k > 0U) - { - /* Perform the multiply-accumulate */ - sum += ((q31_t) * px++ * *py++); - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut = (q15_t) (sum >> 15); - /* Destination pointer is updated according to the address modifier, inc */ - pOut += inc; - - /* Increment the MAC count */ - count++; - - /* Update the inputA and inputB pointers for next MAC calculation */ - px = pIn1 + count; - py = pIn2; - - /* Decrement the loop counter */ - blkCnt--; - } - } - - /* -------------------------- - * Initializations of stage3 - * -------------------------*/ - - /* sum += x[srcALen-srcBLen+1] * y[0] + x[srcALen-srcBLen+2] * y[1] +...+ x[srcALen-1] * y[srcBLen-1] - * sum += x[srcALen-srcBLen+2] * y[0] + x[srcALen-srcBLen+3] * y[1] +...+ x[srcALen-1] * y[srcBLen-1] - * .... - * sum += x[srcALen-2] * y[0] + x[srcALen-1] * y[1] - * sum += x[srcALen-1] * y[0] - */ - - /* In this stage the MAC operations are decreased by 1 for every iteration. - The count variable holds the number of MAC operations performed */ - count = srcBLen - 1U; - - /* Working pointer of inputA */ - pSrc1 = (pIn1 + srcALen) - (srcBLen - 1U); - px = pSrc1; - - /* Working pointer of inputB */ - py = pIn2; - - /* ------------------- - * Stage3 process - * ------------------*/ - - while (blockSize3 > 0U) - { - /* Accumulator is made zero for every iteration */ - sum = 0; - - /* Apply loop unrolling and compute 4 MACs simultaneously. */ - k = count >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 MACs at a time. - ** a second loop below computes MACs for the remaining 1 to 3 samples. */ - while (k > 0U) - { - /* Perform the multiply-accumulates */ - sum += ((q31_t) * px++ * *py++); - sum += ((q31_t) * px++ * *py++); - sum += ((q31_t) * px++ * *py++); - sum += ((q31_t) * px++ * *py++); - - /* Decrement the loop counter */ - k--; - } - - /* If the count is not a multiple of 4, compute any remaining MACs here. - ** No loop unrolling is used. */ - k = count % 0x4U; - - while (k > 0U) - { - /* Perform the multiply-accumulates */ - sum += ((q31_t) * px++ * *py++); - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut = (q15_t) (sum >> 15); - /* Destination pointer is updated according to the address modifier, inc */ - pOut += inc; - - /* Update the inputA and inputB pointers for next MAC calculation */ - px = ++pSrc1; - py = pIn2; - - /* Decrement the MAC count */ - count--; - - /* Decrement the loop counter */ - blockSize3--; - } - -#endif /* #ifndef UNALIGNED_SUPPORT_DISABLE */ - -} - -/** - * @} end of Corr group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_fast_q31.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_fast_q31.c deleted file mode 100644 index 4a006aa..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_fast_q31.c +++ /dev/null @@ -1,600 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_correlate_fast_q31.c - * Description: Fast Q31 Correlation - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupFilters - */ - -/** - * @addtogroup Corr - * @{ - */ - -/** - * @brief Correlation of Q31 sequences (fast version) for Cortex-M3 and Cortex-M4. - * @param[in] *pSrcA points to the first input sequence. - * @param[in] srcALen length of the first input sequence. - * @param[in] *pSrcB points to the second input sequence. - * @param[in] srcBLen length of the second input sequence. - * @param[out] *pDst points to the location where the output result is written. Length 2 * max(srcALen, srcBLen) - 1. - * @return none. - * - * @details - * Scaling and Overflow Behavior: - * - * \par - * This function is optimized for speed at the expense of fixed-point precision and overflow protection. - * The result of each 1.31 x 1.31 multiplication is truncated to 2.30 format. - * These intermediate results are accumulated in a 32-bit register in 2.30 format. - * Finally, the accumulator is saturated and converted to a 1.31 result. - * - * \par - * The fast version has the same overflow behavior as the standard version but provides less precision since it discards the low 32 bits of each multiplication result. - * In order to avoid overflows completely the input signals must be scaled down. - * The input signals should be scaled down to avoid intermediate overflows. - * Scale down one of the inputs by 1/min(srcALen, srcBLen)to avoid overflows since a - * maximum of min(srcALen, srcBLen) number of additions is carried internally. - * - * \par - * See arm_correlate_q31() for a slower implementation of this function which uses 64-bit accumulation to provide higher precision. - */ - -void arm_correlate_fast_q31( - q31_t * pSrcA, - uint32_t srcALen, - q31_t * pSrcB, - uint32_t srcBLen, - q31_t * pDst) -{ - q31_t *pIn1; /* inputA pointer */ - q31_t *pIn2; /* inputB pointer */ - q31_t *pOut = pDst; /* output pointer */ - q31_t *px; /* Intermediate inputA pointer */ - q31_t *py; /* Intermediate inputB pointer */ - q31_t *pSrc1; /* Intermediate pointers */ - q31_t sum, acc0, acc1, acc2, acc3; /* Accumulators */ - q31_t x0, x1, x2, x3, c0; /* temporary variables for holding input and coefficient values */ - uint32_t j, k = 0U, count, blkCnt, outBlockSize, blockSize1, blockSize2, blockSize3; /* loop counter */ - int32_t inc = 1; /* Destination address modifier */ - - - /* The algorithm implementation is based on the lengths of the inputs. */ - /* srcB is always made to slide across srcA. */ - /* So srcBLen is always considered as shorter or equal to srcALen */ - if (srcALen >= srcBLen) - { - /* Initialization of inputA pointer */ - pIn1 = (pSrcA); - - /* Initialization of inputB pointer */ - pIn2 = (pSrcB); - - /* Number of output samples is calculated */ - outBlockSize = (2U * srcALen) - 1U; - - /* When srcALen > srcBLen, zero padding is done to srcB - * to make their lengths equal. - * Instead, (outBlockSize - (srcALen + srcBLen - 1)) - * number of output samples are made zero */ - j = outBlockSize - (srcALen + (srcBLen - 1U)); - - /* Updating the pointer position to non zero value */ - pOut += j; - - } - else - { - /* Initialization of inputA pointer */ - pIn1 = (pSrcB); - - /* Initialization of inputB pointer */ - pIn2 = (pSrcA); - - /* srcBLen is always considered as shorter or equal to srcALen */ - j = srcBLen; - srcBLen = srcALen; - srcALen = j; - - /* CORR(x, y) = Reverse order(CORR(y, x)) */ - /* Hence set the destination pointer to point to the last output sample */ - pOut = pDst + ((srcALen + srcBLen) - 2U); - - /* Destination address modifier is set to -1 */ - inc = -1; - - } - - /* The function is internally - * divided into three parts according to the number of multiplications that has to be - * taken place between inputA samples and inputB samples. In the first part of the - * algorithm, the multiplications increase by one for every iteration. - * In the second part of the algorithm, srcBLen number of multiplications are done. - * In the third part of the algorithm, the multiplications decrease by one - * for every iteration.*/ - /* The algorithm is implemented in three stages. - * The loop counters of each stage is initiated here. */ - blockSize1 = srcBLen - 1U; - blockSize2 = srcALen - (srcBLen - 1U); - blockSize3 = blockSize1; - - /* -------------------------- - * Initializations of stage1 - * -------------------------*/ - - /* sum = x[0] * y[srcBlen - 1] - * sum = x[0] * y[srcBlen - 2] + x[1] * y[srcBlen - 1] - * .... - * sum = x[0] * y[0] + x[1] * y[1] +...+ x[srcBLen - 1] * y[srcBLen - 1] - */ - - /* In this stage the MAC operations are increased by 1 for every iteration. - The count variable holds the number of MAC operations performed */ - count = 1U; - - /* Working pointer of inputA */ - px = pIn1; - - /* Working pointer of inputB */ - pSrc1 = pIn2 + (srcBLen - 1U); - py = pSrc1; - - /* ------------------------ - * Stage1 process - * ----------------------*/ - - /* The first stage starts here */ - while (blockSize1 > 0U) - { - /* Accumulator is made zero for every iteration */ - sum = 0; - - /* Apply loop unrolling and compute 4 MACs simultaneously. */ - k = count >> 2; - - /* First part of the processing with loop unrolling. Compute 4 MACs at a time. - ** a second loop below computes MACs for the remaining 1 to 3 samples. */ - while (k > 0U) - { - /* x[0] * y[srcBLen - 4] */ - sum = (q31_t) ((((q63_t) sum << 32) + - ((q63_t) * px++ * (*py++))) >> 32); - /* x[1] * y[srcBLen - 3] */ - sum = (q31_t) ((((q63_t) sum << 32) + - ((q63_t) * px++ * (*py++))) >> 32); - /* x[2] * y[srcBLen - 2] */ - sum = (q31_t) ((((q63_t) sum << 32) + - ((q63_t) * px++ * (*py++))) >> 32); - /* x[3] * y[srcBLen - 1] */ - sum = (q31_t) ((((q63_t) sum << 32) + - ((q63_t) * px++ * (*py++))) >> 32); - - /* Decrement the loop counter */ - k--; - } - - /* If the count is not a multiple of 4, compute any remaining MACs here. - ** No loop unrolling is used. */ - k = count % 0x4U; - - while (k > 0U) - { - /* Perform the multiply-accumulates */ - /* x[0] * y[srcBLen - 1] */ - sum = (q31_t) ((((q63_t) sum << 32) + - ((q63_t) * px++ * (*py++))) >> 32); - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut = sum << 1; - /* Destination pointer is updated according to the address modifier, inc */ - pOut += inc; - - /* Update the inputA and inputB pointers for next MAC calculation */ - py = pSrc1 - count; - px = pIn1; - - /* Increment the MAC count */ - count++; - - /* Decrement the loop counter */ - blockSize1--; - } - - /* -------------------------- - * Initializations of stage2 - * ------------------------*/ - - /* sum = x[0] * y[0] + x[1] * y[1] +...+ x[srcBLen-1] * y[srcBLen-1] - * sum = x[1] * y[0] + x[2] * y[1] +...+ x[srcBLen] * y[srcBLen-1] - * .... - * sum = x[srcALen-srcBLen-2] * y[0] + x[srcALen-srcBLen-1] * y[1] +...+ x[srcALen-1] * y[srcBLen-1] - */ - - /* Working pointer of inputA */ - px = pIn1; - - /* Working pointer of inputB */ - py = pIn2; - - /* count is index by which the pointer pIn1 to be incremented */ - count = 0U; - - /* ------------------- - * Stage2 process - * ------------------*/ - - /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed. - * So, to loop unroll over blockSize2, - * srcBLen should be greater than or equal to 4 */ - if (srcBLen >= 4U) - { - /* Loop unroll over blockSize2, by 4 */ - blkCnt = blockSize2 >> 2U; - - while (blkCnt > 0U) - { - /* Set all accumulators to zero */ - acc0 = 0; - acc1 = 0; - acc2 = 0; - acc3 = 0; - - /* read x[0], x[1], x[2] samples */ - x0 = *(px++); - x1 = *(px++); - x2 = *(px++); - - /* Apply loop unrolling and compute 4 MACs simultaneously. */ - k = srcBLen >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 MACs at a time. - ** a second loop below computes MACs for the remaining 1 to 3 samples. */ - do - { - /* Read y[0] sample */ - c0 = *(py++); - - /* Read x[3] sample */ - x3 = *(px++); - - /* Perform the multiply-accumulate */ - /* acc0 += x[0] * y[0] */ - acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x0 * c0)) >> 32); - /* acc1 += x[1] * y[0] */ - acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x1 * c0)) >> 32); - /* acc2 += x[2] * y[0] */ - acc2 = (q31_t) ((((q63_t) acc2 << 32) + ((q63_t) x2 * c0)) >> 32); - /* acc3 += x[3] * y[0] */ - acc3 = (q31_t) ((((q63_t) acc3 << 32) + ((q63_t) x3 * c0)) >> 32); - - /* Read y[1] sample */ - c0 = *(py++); - - /* Read x[4] sample */ - x0 = *(px++); - - /* Perform the multiply-accumulates */ - /* acc0 += x[1] * y[1] */ - acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x1 * c0)) >> 32); - /* acc1 += x[2] * y[1] */ - acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x2 * c0)) >> 32); - /* acc2 += x[3] * y[1] */ - acc2 = (q31_t) ((((q63_t) acc2 << 32) + ((q63_t) x3 * c0)) >> 32); - /* acc3 += x[4] * y[1] */ - acc3 = (q31_t) ((((q63_t) acc3 << 32) + ((q63_t) x0 * c0)) >> 32); - - /* Read y[2] sample */ - c0 = *(py++); - - /* Read x[5] sample */ - x1 = *(px++); - - /* Perform the multiply-accumulates */ - /* acc0 += x[2] * y[2] */ - acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x2 * c0)) >> 32); - /* acc1 += x[3] * y[2] */ - acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x3 * c0)) >> 32); - /* acc2 += x[4] * y[2] */ - acc2 = (q31_t) ((((q63_t) acc2 << 32) + ((q63_t) x0 * c0)) >> 32); - /* acc3 += x[5] * y[2] */ - acc3 = (q31_t) ((((q63_t) acc3 << 32) + ((q63_t) x1 * c0)) >> 32); - - /* Read y[3] sample */ - c0 = *(py++); - - /* Read x[6] sample */ - x2 = *(px++); - - /* Perform the multiply-accumulates */ - /* acc0 += x[3] * y[3] */ - acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x3 * c0)) >> 32); - /* acc1 += x[4] * y[3] */ - acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x0 * c0)) >> 32); - /* acc2 += x[5] * y[3] */ - acc2 = (q31_t) ((((q63_t) acc2 << 32) + ((q63_t) x1 * c0)) >> 32); - /* acc3 += x[6] * y[3] */ - acc3 = (q31_t) ((((q63_t) acc3 << 32) + ((q63_t) x2 * c0)) >> 32); - - - } while (--k); - - /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. - ** No loop unrolling is used. */ - k = srcBLen % 0x4U; - - while (k > 0U) - { - /* Read y[4] sample */ - c0 = *(py++); - - /* Read x[7] sample */ - x3 = *(px++); - - /* Perform the multiply-accumulates */ - /* acc0 += x[4] * y[4] */ - acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x0 * c0)) >> 32); - /* acc1 += x[5] * y[4] */ - acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x1 * c0)) >> 32); - /* acc2 += x[6] * y[4] */ - acc2 = (q31_t) ((((q63_t) acc2 << 32) + ((q63_t) x2 * c0)) >> 32); - /* acc3 += x[7] * y[4] */ - acc3 = (q31_t) ((((q63_t) acc3 << 32) + ((q63_t) x3 * c0)) >> 32); - - /* Reuse the present samples for the next MAC */ - x0 = x1; - x1 = x2; - x2 = x3; - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut = (q31_t) (acc0 << 1); - /* Destination pointer is updated according to the address modifier, inc */ - pOut += inc; - - *pOut = (q31_t) (acc1 << 1); - pOut += inc; - - *pOut = (q31_t) (acc2 << 1); - pOut += inc; - - *pOut = (q31_t) (acc3 << 1); - pOut += inc; - - /* Increment the pointer pIn1 index, count by 4 */ - count += 4U; - - /* Update the inputA and inputB pointers for next MAC calculation */ - px = pIn1 + count; - py = pIn2; - - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize2 is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize2 % 0x4U; - - while (blkCnt > 0U) - { - /* Accumulator is made zero for every iteration */ - sum = 0; - - /* Apply loop unrolling and compute 4 MACs simultaneously. */ - k = srcBLen >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 MACs at a time. - ** a second loop below computes MACs for the remaining 1 to 3 samples. */ - while (k > 0U) - { - /* Perform the multiply-accumulates */ - sum = (q31_t) ((((q63_t) sum << 32) + - ((q63_t) * px++ * (*py++))) >> 32); - sum = (q31_t) ((((q63_t) sum << 32) + - ((q63_t) * px++ * (*py++))) >> 32); - sum = (q31_t) ((((q63_t) sum << 32) + - ((q63_t) * px++ * (*py++))) >> 32); - sum = (q31_t) ((((q63_t) sum << 32) + - ((q63_t) * px++ * (*py++))) >> 32); - - /* Decrement the loop counter */ - k--; - } - - /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. - ** No loop unrolling is used. */ - k = srcBLen % 0x4U; - - while (k > 0U) - { - /* Perform the multiply-accumulate */ - sum = (q31_t) ((((q63_t) sum << 32) + - ((q63_t) * px++ * (*py++))) >> 32); - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut = sum << 1; - /* Destination pointer is updated according to the address modifier, inc */ - pOut += inc; - - /* Increment the MAC count */ - count++; - - /* Update the inputA and inputB pointers for next MAC calculation */ - px = pIn1 + count; - py = pIn2; - - - /* Decrement the loop counter */ - blkCnt--; - } - } - else - { - /* If the srcBLen is not a multiple of 4, - * the blockSize2 loop cannot be unrolled by 4 */ - blkCnt = blockSize2; - - while (blkCnt > 0U) - { - /* Accumulator is made zero for every iteration */ - sum = 0; - - /* Loop over srcBLen */ - k = srcBLen; - - while (k > 0U) - { - /* Perform the multiply-accumulate */ - sum = (q31_t) ((((q63_t) sum << 32) + - ((q63_t) * px++ * (*py++))) >> 32); - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut = sum << 1; - /* Destination pointer is updated according to the address modifier, inc */ - pOut += inc; - - /* Increment the MAC count */ - count++; - - /* Update the inputA and inputB pointers for next MAC calculation */ - px = pIn1 + count; - py = pIn2; - - /* Decrement the loop counter */ - blkCnt--; - } - } - - /* -------------------------- - * Initializations of stage3 - * -------------------------*/ - - /* sum += x[srcALen-srcBLen+1] * y[0] + x[srcALen-srcBLen+2] * y[1] +...+ x[srcALen-1] * y[srcBLen-1] - * sum += x[srcALen-srcBLen+2] * y[0] + x[srcALen-srcBLen+3] * y[1] +...+ x[srcALen-1] * y[srcBLen-1] - * .... - * sum += x[srcALen-2] * y[0] + x[srcALen-1] * y[1] - * sum += x[srcALen-1] * y[0] - */ - - /* In this stage the MAC operations are decreased by 1 for every iteration. - The count variable holds the number of MAC operations performed */ - count = srcBLen - 1U; - - /* Working pointer of inputA */ - pSrc1 = ((pIn1 + srcALen) - srcBLen) + 1U; - px = pSrc1; - - /* Working pointer of inputB */ - py = pIn2; - - /* ------------------- - * Stage3 process - * ------------------*/ - - while (blockSize3 > 0U) - { - /* Accumulator is made zero for every iteration */ - sum = 0; - - /* Apply loop unrolling and compute 4 MACs simultaneously. */ - k = count >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 MACs at a time. - ** a second loop below computes MACs for the remaining 1 to 3 samples. */ - while (k > 0U) - { - /* Perform the multiply-accumulates */ - /* sum += x[srcALen - srcBLen + 4] * y[3] */ - sum = (q31_t) ((((q63_t) sum << 32) + - ((q63_t) * px++ * (*py++))) >> 32); - /* sum += x[srcALen - srcBLen + 3] * y[2] */ - sum = (q31_t) ((((q63_t) sum << 32) + - ((q63_t) * px++ * (*py++))) >> 32); - /* sum += x[srcALen - srcBLen + 2] * y[1] */ - sum = (q31_t) ((((q63_t) sum << 32) + - ((q63_t) * px++ * (*py++))) >> 32); - /* sum += x[srcALen - srcBLen + 1] * y[0] */ - sum = (q31_t) ((((q63_t) sum << 32) + - ((q63_t) * px++ * (*py++))) >> 32); - - /* Decrement the loop counter */ - k--; - } - - /* If the count is not a multiple of 4, compute any remaining MACs here. - ** No loop unrolling is used. */ - k = count % 0x4U; - - while (k > 0U) - { - /* Perform the multiply-accumulates */ - sum = (q31_t) ((((q63_t) sum << 32) + - ((q63_t) * px++ * (*py++))) >> 32); - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut = sum << 1; - /* Destination pointer is updated according to the address modifier, inc */ - pOut += inc; - - /* Update the inputA and inputB pointers for next MAC calculation */ - px = ++pSrc1; - py = pIn2; - - /* Decrement the MAC count */ - count--; - - /* Decrement the loop counter */ - blockSize3--; - } - -} - -/** - * @} end of Corr group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_opt_q15.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_opt_q15.c deleted file mode 100644 index 1eda719..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_opt_q15.c +++ /dev/null @@ -1,501 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_correlate_opt_q15.c - * Description: Correlation of Q15 sequences - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupFilters - */ - -/** - * @addtogroup Corr - * @{ - */ - -/** - * @brief Correlation of Q15 sequences. - * @param[in] *pSrcA points to the first input sequence. - * @param[in] srcALen length of the first input sequence. - * @param[in] *pSrcB points to the second input sequence. - * @param[in] srcBLen length of the second input sequence. - * @param[out] *pDst points to the location where the output result is written. Length 2 * max(srcALen, srcBLen) - 1. - * @param[in] *pScratch points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2. - * @return none. - * - * \par Restrictions - * If the silicon does not support unaligned memory access enable the macro UNALIGNED_SUPPORT_DISABLE - * In this case input, output, scratch buffers should be aligned by 32-bit - * - * @details - * Scaling and Overflow Behavior: - * - * \par - * The function is implemented using a 64-bit internal accumulator. - * Both inputs are in 1.15 format and multiplications yield a 2.30 result. - * The 2.30 intermediate results are accumulated in a 64-bit accumulator in 34.30 format. - * This approach provides 33 guard bits and there is no risk of overflow. - * The 34.30 result is then truncated to 34.15 format by discarding the low 15 bits and then saturated to 1.15 format. - * - * \par - * Refer to arm_correlate_fast_q15() for a faster but less precise version of this function for Cortex-M3 and Cortex-M4. - * - * - */ - - -void arm_correlate_opt_q15( - q15_t * pSrcA, - uint32_t srcALen, - q15_t * pSrcB, - uint32_t srcBLen, - q15_t * pDst, - q15_t * pScratch) -{ - q15_t *pIn1; /* inputA pointer */ - q15_t *pIn2; /* inputB pointer */ - q63_t acc0, acc1, acc2, acc3; /* Accumulators */ - q15_t *py; /* Intermediate inputB pointer */ - q31_t x1, x2, x3; /* temporary variables for holding input1 and input2 values */ - uint32_t j, blkCnt, outBlockSize; /* loop counter */ - int32_t inc = 1; /* output pointer increment */ - uint32_t tapCnt; - q31_t y1, y2; - q15_t *pScr; /* Intermediate pointers */ - q15_t *pOut = pDst; /* output pointer */ -#ifdef UNALIGNED_SUPPORT_DISABLE - - q15_t a, b; - -#endif /* #ifndef UNALIGNED_SUPPORT_DISABLE */ - - /* The algorithm implementation is based on the lengths of the inputs. */ - /* srcB is always made to slide across srcA. */ - /* So srcBLen is always considered as shorter or equal to srcALen */ - /* But CORR(x, y) is reverse of CORR(y, x) */ - /* So, when srcBLen > srcALen, output pointer is made to point to the end of the output buffer */ - /* and the destination pointer modifier, inc is set to -1 */ - /* If srcALen > srcBLen, zero pad has to be done to srcB to make the two inputs of same length */ - /* But to improve the performance, - * we include zeroes in the output instead of zero padding either of the the inputs*/ - /* If srcALen > srcBLen, - * (srcALen - srcBLen) zeroes has to included in the starting of the output buffer */ - /* If srcALen < srcBLen, - * (srcALen - srcBLen) zeroes has to included in the ending of the output buffer */ - if (srcALen >= srcBLen) - { - /* Initialization of inputA pointer */ - pIn1 = (pSrcA); - - /* Initialization of inputB pointer */ - pIn2 = (pSrcB); - - /* Number of output samples is calculated */ - outBlockSize = (2U * srcALen) - 1U; - - /* When srcALen > srcBLen, zero padding is done to srcB - * to make their lengths equal. - * Instead, (outBlockSize - (srcALen + srcBLen - 1)) - * number of output samples are made zero */ - j = outBlockSize - (srcALen + (srcBLen - 1U)); - - /* Updating the pointer position to non zero value */ - pOut += j; - - } - else - { - /* Initialization of inputA pointer */ - pIn1 = (pSrcB); - - /* Initialization of inputB pointer */ - pIn2 = (pSrcA); - - /* srcBLen is always considered as shorter or equal to srcALen */ - j = srcBLen; - srcBLen = srcALen; - srcALen = j; - - /* CORR(x, y) = Reverse order(CORR(y, x)) */ - /* Hence set the destination pointer to point to the last output sample */ - pOut = pDst + ((srcALen + srcBLen) - 2U); - - /* Destination address modifier is set to -1 */ - inc = -1; - - } - - pScr = pScratch; - - /* Fill (srcBLen - 1U) zeros in scratch buffer */ - arm_fill_q15(0, pScr, (srcBLen - 1U)); - - /* Update temporary scratch pointer */ - pScr += (srcBLen - 1U); - -#ifndef UNALIGNED_SUPPORT_DISABLE - - /* Copy (srcALen) samples in scratch buffer */ - arm_copy_q15(pIn1, pScr, srcALen); - - /* Update pointers */ - //pIn1 += srcALen; - pScr += srcALen; - -#else - - /* Apply loop unrolling and do 4 Copies simultaneously. */ - j = srcALen >> 2U; - - /* First part of the processing with loop unrolling copies 4 data points at a time. - ** a second loop below copies for the remaining 1 to 3 samples. */ - while (j > 0U) - { - /* copy second buffer in reversal manner */ - *pScr++ = *pIn1++; - *pScr++ = *pIn1++; - *pScr++ = *pIn1++; - *pScr++ = *pIn1++; - - /* Decrement the loop counter */ - j--; - } - - /* If the count is not a multiple of 4, copy remaining samples here. - ** No loop unrolling is used. */ - j = srcALen % 0x4U; - - while (j > 0U) - { - /* copy second buffer in reversal manner for remaining samples */ - *pScr++ = *pIn1++; - - /* Decrement the loop counter */ - j--; - } - -#endif /* #ifndef UNALIGNED_SUPPORT_DISABLE */ - -#ifndef UNALIGNED_SUPPORT_DISABLE - - /* Fill (srcBLen - 1U) zeros at end of scratch buffer */ - arm_fill_q15(0, pScr, (srcBLen - 1U)); - - /* Update pointer */ - pScr += (srcBLen - 1U); - -#else - -/* Apply loop unrolling and do 4 Copies simultaneously. */ - j = (srcBLen - 1U) >> 2U; - - /* First part of the processing with loop unrolling copies 4 data points at a time. - ** a second loop below copies for the remaining 1 to 3 samples. */ - while (j > 0U) - { - /* copy second buffer in reversal manner */ - *pScr++ = 0; - *pScr++ = 0; - *pScr++ = 0; - *pScr++ = 0; - - /* Decrement the loop counter */ - j--; - } - - /* If the count is not a multiple of 4, copy remaining samples here. - ** No loop unrolling is used. */ - j = (srcBLen - 1U) % 0x4U; - - while (j > 0U) - { - /* copy second buffer in reversal manner for remaining samples */ - *pScr++ = 0; - - /* Decrement the loop counter */ - j--; - } - -#endif /* #ifndef UNALIGNED_SUPPORT_DISABLE */ - - /* Temporary pointer for scratch2 */ - py = pIn2; - - - /* Actual correlation process starts here */ - blkCnt = (srcALen + srcBLen - 1U) >> 2; - - while (blkCnt > 0) - { - /* Initialze temporary scratch pointer as scratch1 */ - pScr = pScratch; - - /* Clear Accumlators */ - acc0 = 0; - acc1 = 0; - acc2 = 0; - acc3 = 0; - - /* Read four samples from scratch1 buffer */ - x1 = *__SIMD32(pScr)++; - - /* Read next four samples from scratch1 buffer */ - x2 = *__SIMD32(pScr)++; - - tapCnt = (srcBLen) >> 2U; - - while (tapCnt > 0U) - { - -#ifndef UNALIGNED_SUPPORT_DISABLE - - /* Read four samples from smaller buffer */ - y1 = _SIMD32_OFFSET(pIn2); - y2 = _SIMD32_OFFSET(pIn2 + 2U); - - acc0 = __SMLALD(x1, y1, acc0); - - acc2 = __SMLALD(x2, y1, acc2); - -#ifndef ARM_MATH_BIG_ENDIAN - x3 = __PKHBT(x2, x1, 0); -#else - x3 = __PKHBT(x1, x2, 0); -#endif - - acc1 = __SMLALDX(x3, y1, acc1); - - x1 = _SIMD32_OFFSET(pScr); - - acc0 = __SMLALD(x2, y2, acc0); - - acc2 = __SMLALD(x1, y2, acc2); - -#ifndef ARM_MATH_BIG_ENDIAN - x3 = __PKHBT(x1, x2, 0); -#else - x3 = __PKHBT(x2, x1, 0); -#endif - - acc3 = __SMLALDX(x3, y1, acc3); - - acc1 = __SMLALDX(x3, y2, acc1); - - x2 = _SIMD32_OFFSET(pScr + 2U); - -#ifndef ARM_MATH_BIG_ENDIAN - x3 = __PKHBT(x2, x1, 0); -#else - x3 = __PKHBT(x1, x2, 0); -#endif - - acc3 = __SMLALDX(x3, y2, acc3); - -#else - - /* Read four samples from smaller buffer */ - a = *pIn2; - b = *(pIn2 + 1); - -#ifndef ARM_MATH_BIG_ENDIAN - y1 = __PKHBT(a, b, 16); -#else - y1 = __PKHBT(b, a, 16); -#endif - - a = *(pIn2 + 2); - b = *(pIn2 + 3); -#ifndef ARM_MATH_BIG_ENDIAN - y2 = __PKHBT(a, b, 16); -#else - y2 = __PKHBT(b, a, 16); -#endif - - acc0 = __SMLALD(x1, y1, acc0); - - acc2 = __SMLALD(x2, y1, acc2); - -#ifndef ARM_MATH_BIG_ENDIAN - x3 = __PKHBT(x2, x1, 0); -#else - x3 = __PKHBT(x1, x2, 0); -#endif - - acc1 = __SMLALDX(x3, y1, acc1); - - a = *pScr; - b = *(pScr + 1); - -#ifndef ARM_MATH_BIG_ENDIAN - x1 = __PKHBT(a, b, 16); -#else - x1 = __PKHBT(b, a, 16); -#endif - - acc0 = __SMLALD(x2, y2, acc0); - - acc2 = __SMLALD(x1, y2, acc2); - -#ifndef ARM_MATH_BIG_ENDIAN - x3 = __PKHBT(x1, x2, 0); -#else - x3 = __PKHBT(x2, x1, 0); -#endif - - acc3 = __SMLALDX(x3, y1, acc3); - - acc1 = __SMLALDX(x3, y2, acc1); - - a = *(pScr + 2); - b = *(pScr + 3); - -#ifndef ARM_MATH_BIG_ENDIAN - x2 = __PKHBT(a, b, 16); -#else - x2 = __PKHBT(b, a, 16); -#endif - -#ifndef ARM_MATH_BIG_ENDIAN - x3 = __PKHBT(x2, x1, 0); -#else - x3 = __PKHBT(x1, x2, 0); -#endif - - acc3 = __SMLALDX(x3, y2, acc3); - -#endif /* #ifndef UNALIGNED_SUPPORT_DISABLE */ - - pIn2 += 4U; - - pScr += 4U; - - - /* Decrement the loop counter */ - tapCnt--; - } - - - - /* Update scratch pointer for remaining samples of smaller length sequence */ - pScr -= 4U; - - - /* apply same above for remaining samples of smaller length sequence */ - tapCnt = (srcBLen) & 3U; - - while (tapCnt > 0U) - { - - /* accumlate the results */ - acc0 += (*pScr++ * *pIn2); - acc1 += (*pScr++ * *pIn2); - acc2 += (*pScr++ * *pIn2); - acc3 += (*pScr++ * *pIn2++); - - pScr -= 3U; - - /* Decrement the loop counter */ - tapCnt--; - } - - blkCnt--; - - - /* Store the results in the accumulators in the destination buffer. */ - *pOut = (__SSAT(acc0 >> 15U, 16)); - pOut += inc; - *pOut = (__SSAT(acc1 >> 15U, 16)); - pOut += inc; - *pOut = (__SSAT(acc2 >> 15U, 16)); - pOut += inc; - *pOut = (__SSAT(acc3 >> 15U, 16)); - pOut += inc; - - /* Initialization of inputB pointer */ - pIn2 = py; - - pScratch += 4U; - - } - - - blkCnt = (srcALen + srcBLen - 1U) & 0x3; - - /* Calculate correlation for remaining samples of Bigger length sequence */ - while (blkCnt > 0) - { - /* Initialze temporary scratch pointer as scratch1 */ - pScr = pScratch; - - /* Clear Accumlators */ - acc0 = 0; - - tapCnt = (srcBLen) >> 1U; - - while (tapCnt > 0U) - { - - acc0 += (*pScr++ * *pIn2++); - acc0 += (*pScr++ * *pIn2++); - - /* Decrement the loop counter */ - tapCnt--; - } - - tapCnt = (srcBLen) & 1U; - - /* apply same above for remaining samples of smaller length sequence */ - while (tapCnt > 0U) - { - - /* accumlate the results */ - acc0 += (*pScr++ * *pIn2++); - - /* Decrement the loop counter */ - tapCnt--; - } - - blkCnt--; - - /* Store the result in the accumulator in the destination buffer. */ - *pOut = (q15_t) (__SSAT((acc0 >> 15), 16)); - - pOut += inc; - - /* Initialization of inputB pointer */ - pIn2 = py; - - pScratch += 1U; - - } - - -} - -/** - * @} end of Corr group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_opt_q7.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_opt_q7.c deleted file mode 100644 index d4ff45e..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_opt_q7.c +++ /dev/null @@ -1,452 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_correlate_opt_q7.c - * Description: Correlation of Q7 sequences - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupFilters - */ - -/** - * @addtogroup Corr - * @{ - */ - -/** - * @brief Correlation of Q7 sequences. - * @param[in] *pSrcA points to the first input sequence. - * @param[in] srcALen length of the first input sequence. - * @param[in] *pSrcB points to the second input sequence. - * @param[in] srcBLen length of the second input sequence. - * @param[out] *pDst points to the location where the output result is written. Length 2 * max(srcALen, srcBLen) - 1. - * @param[in] *pScratch1 points to scratch buffer(of type q15_t) of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2. - * @param[in] *pScratch2 points to scratch buffer (of type q15_t) of size min(srcALen, srcBLen). - * @return none. - * - * - * \par Restrictions - * If the silicon does not support unaligned memory access enable the macro UNALIGNED_SUPPORT_DISABLE - * In this case input, output, scratch1 and scratch2 buffers should be aligned by 32-bit - * - * @details - * Scaling and Overflow Behavior: - * - * \par - * The function is implemented using a 32-bit internal accumulator. - * Both the inputs are represented in 1.7 format and multiplications yield a 2.14 result. - * The 2.14 intermediate results are accumulated in a 32-bit accumulator in 18.14 format. - * This approach provides 17 guard bits and there is no risk of overflow as long as max(srcALen, srcBLen)<131072. - * The 18.14 result is then truncated to 18.7 format by discarding the low 7 bits and saturated to 1.7 format. - * - * - */ - - - -void arm_correlate_opt_q7( - q7_t * pSrcA, - uint32_t srcALen, - q7_t * pSrcB, - uint32_t srcBLen, - q7_t * pDst, - q15_t * pScratch1, - q15_t * pScratch2) -{ - q7_t *pOut = pDst; /* output pointer */ - q15_t *pScr1 = pScratch1; /* Temporary pointer for scratch */ - q15_t *pScr2 = pScratch2; /* Temporary pointer for scratch */ - q7_t *pIn1; /* inputA pointer */ - q7_t *pIn2; /* inputB pointer */ - q15_t *py; /* Intermediate inputB pointer */ - q31_t acc0, acc1, acc2, acc3; /* Accumulators */ - uint32_t j, k = 0U, blkCnt; /* loop counter */ - int32_t inc = 1; /* output pointer increment */ - uint32_t outBlockSize; /* loop counter */ - q15_t x4; /* Temporary input variable */ - uint32_t tapCnt; /* loop counter */ - q31_t x1, x2, x3, y1; /* Temporary input variables */ - - /* The algorithm implementation is based on the lengths of the inputs. */ - /* srcB is always made to slide across srcA. */ - /* So srcBLen is always considered as shorter or equal to srcALen */ - /* But CORR(x, y) is reverse of CORR(y, x) */ - /* So, when srcBLen > srcALen, output pointer is made to point to the end of the output buffer */ - /* and the destination pointer modifier, inc is set to -1 */ - /* If srcALen > srcBLen, zero pad has to be done to srcB to make the two inputs of same length */ - /* But to improve the performance, - * we include zeroes in the output instead of zero padding either of the the inputs*/ - /* If srcALen > srcBLen, - * (srcALen - srcBLen) zeroes has to included in the starting of the output buffer */ - /* If srcALen < srcBLen, - * (srcALen - srcBLen) zeroes has to included in the ending of the output buffer */ - if (srcALen >= srcBLen) - { - /* Initialization of inputA pointer */ - pIn1 = (pSrcA); - - /* Initialization of inputB pointer */ - pIn2 = (pSrcB); - - /* Number of output samples is calculated */ - outBlockSize = (2U * srcALen) - 1U; - - /* When srcALen > srcBLen, zero padding is done to srcB - * to make their lengths equal. - * Instead, (outBlockSize - (srcALen + srcBLen - 1)) - * number of output samples are made zero */ - j = outBlockSize - (srcALen + (srcBLen - 1U)); - - /* Updating the pointer position to non zero value */ - pOut += j; - - } - else - { - /* Initialization of inputA pointer */ - pIn1 = (pSrcB); - - /* Initialization of inputB pointer */ - pIn2 = (pSrcA); - - /* srcBLen is always considered as shorter or equal to srcALen */ - j = srcBLen; - srcBLen = srcALen; - srcALen = j; - - /* CORR(x, y) = Reverse order(CORR(y, x)) */ - /* Hence set the destination pointer to point to the last output sample */ - pOut = pDst + ((srcALen + srcBLen) - 2U); - - /* Destination address modifier is set to -1 */ - inc = -1; - - } - - - /* Copy (srcBLen) samples in scratch buffer */ - k = srcBLen >> 2U; - - /* First part of the processing with loop unrolling copies 4 data points at a time. - ** a second loop below copies for the remaining 1 to 3 samples. */ - while (k > 0U) - { - /* copy second buffer in reversal manner */ - x4 = (q15_t) * pIn2++; - *pScr2++ = x4; - x4 = (q15_t) * pIn2++; - *pScr2++ = x4; - x4 = (q15_t) * pIn2++; - *pScr2++ = x4; - x4 = (q15_t) * pIn2++; - *pScr2++ = x4; - - /* Decrement the loop counter */ - k--; - } - - /* If the count is not a multiple of 4, copy remaining samples here. - ** No loop unrolling is used. */ - k = srcBLen % 0x4U; - - while (k > 0U) - { - /* copy second buffer in reversal manner for remaining samples */ - x4 = (q15_t) * pIn2++; - *pScr2++ = x4; - - /* Decrement the loop counter */ - k--; - } - - /* Fill (srcBLen - 1U) zeros in scratch buffer */ - arm_fill_q15(0, pScr1, (srcBLen - 1U)); - - /* Update temporary scratch pointer */ - pScr1 += (srcBLen - 1U); - - /* Copy (srcALen) samples in scratch buffer */ - k = srcALen >> 2U; - - /* First part of the processing with loop unrolling copies 4 data points at a time. - ** a second loop below copies for the remaining 1 to 3 samples. */ - while (k > 0U) - { - /* copy second buffer in reversal manner */ - x4 = (q15_t) * pIn1++; - *pScr1++ = x4; - x4 = (q15_t) * pIn1++; - *pScr1++ = x4; - x4 = (q15_t) * pIn1++; - *pScr1++ = x4; - x4 = (q15_t) * pIn1++; - *pScr1++ = x4; - - /* Decrement the loop counter */ - k--; - } - - /* If the count is not a multiple of 4, copy remaining samples here. - ** No loop unrolling is used. */ - k = srcALen % 0x4U; - - while (k > 0U) - { - /* copy second buffer in reversal manner for remaining samples */ - x4 = (q15_t) * pIn1++; - *pScr1++ = x4; - - /* Decrement the loop counter */ - k--; - } - -#ifndef UNALIGNED_SUPPORT_DISABLE - - /* Fill (srcBLen - 1U) zeros at end of scratch buffer */ - arm_fill_q15(0, pScr1, (srcBLen - 1U)); - - /* Update pointer */ - pScr1 += (srcBLen - 1U); - -#else - -/* Apply loop unrolling and do 4 Copies simultaneously. */ - k = (srcBLen - 1U) >> 2U; - - /* First part of the processing with loop unrolling copies 4 data points at a time. - ** a second loop below copies for the remaining 1 to 3 samples. */ - while (k > 0U) - { - /* copy second buffer in reversal manner */ - *pScr1++ = 0; - *pScr1++ = 0; - *pScr1++ = 0; - *pScr1++ = 0; - - /* Decrement the loop counter */ - k--; - } - - /* If the count is not a multiple of 4, copy remaining samples here. - ** No loop unrolling is used. */ - k = (srcBLen - 1U) % 0x4U; - - while (k > 0U) - { - /* copy second buffer in reversal manner for remaining samples */ - *pScr1++ = 0; - - /* Decrement the loop counter */ - k--; - } - -#endif /* #ifndef UNALIGNED_SUPPORT_DISABLE */ - - /* Temporary pointer for second sequence */ - py = pScratch2; - - /* Initialization of pScr2 pointer */ - pScr2 = pScratch2; - - /* Actual correlation process starts here */ - blkCnt = (srcALen + srcBLen - 1U) >> 2; - - while (blkCnt > 0) - { - /* Initialze temporary scratch pointer as scratch1 */ - pScr1 = pScratch1; - - /* Clear Accumlators */ - acc0 = 0; - acc1 = 0; - acc2 = 0; - acc3 = 0; - - /* Read two samples from scratch1 buffer */ - x1 = *__SIMD32(pScr1)++; - - /* Read next two samples from scratch1 buffer */ - x2 = *__SIMD32(pScr1)++; - - tapCnt = (srcBLen) >> 2U; - - while (tapCnt > 0U) - { - - /* Read four samples from smaller buffer */ - y1 = _SIMD32_OFFSET(pScr2); - - /* multiply and accumlate */ - acc0 = __SMLAD(x1, y1, acc0); - acc2 = __SMLAD(x2, y1, acc2); - - /* pack input data */ -#ifndef ARM_MATH_BIG_ENDIAN - x3 = __PKHBT(x2, x1, 0); -#else - x3 = __PKHBT(x1, x2, 0); -#endif - - /* multiply and accumlate */ - acc1 = __SMLADX(x3, y1, acc1); - - /* Read next two samples from scratch1 buffer */ - x1 = *__SIMD32(pScr1)++; - - /* pack input data */ -#ifndef ARM_MATH_BIG_ENDIAN - x3 = __PKHBT(x1, x2, 0); -#else - x3 = __PKHBT(x2, x1, 0); -#endif - - acc3 = __SMLADX(x3, y1, acc3); - - /* Read four samples from smaller buffer */ - y1 = _SIMD32_OFFSET(pScr2 + 2U); - - acc0 = __SMLAD(x2, y1, acc0); - - acc2 = __SMLAD(x1, y1, acc2); - - acc1 = __SMLADX(x3, y1, acc1); - - x2 = *__SIMD32(pScr1)++; - -#ifndef ARM_MATH_BIG_ENDIAN - x3 = __PKHBT(x2, x1, 0); -#else - x3 = __PKHBT(x1, x2, 0); -#endif - - acc3 = __SMLADX(x3, y1, acc3); - - pScr2 += 4U; - - - /* Decrement the loop counter */ - tapCnt--; - } - - - - /* Update scratch pointer for remaining samples of smaller length sequence */ - pScr1 -= 4U; - - - /* apply same above for remaining samples of smaller length sequence */ - tapCnt = (srcBLen) & 3U; - - while (tapCnt > 0U) - { - - /* accumlate the results */ - acc0 += (*pScr1++ * *pScr2); - acc1 += (*pScr1++ * *pScr2); - acc2 += (*pScr1++ * *pScr2); - acc3 += (*pScr1++ * *pScr2++); - - pScr1 -= 3U; - - /* Decrement the loop counter */ - tapCnt--; - } - - blkCnt--; - - /* Store the result in the accumulator in the destination buffer. */ - *pOut = (q7_t) (__SSAT(acc0 >> 7U, 8)); - pOut += inc; - *pOut = (q7_t) (__SSAT(acc1 >> 7U, 8)); - pOut += inc; - *pOut = (q7_t) (__SSAT(acc2 >> 7U, 8)); - pOut += inc; - *pOut = (q7_t) (__SSAT(acc3 >> 7U, 8)); - pOut += inc; - - /* Initialization of inputB pointer */ - pScr2 = py; - - pScratch1 += 4U; - - } - - - blkCnt = (srcALen + srcBLen - 1U) & 0x3; - - /* Calculate correlation for remaining samples of Bigger length sequence */ - while (blkCnt > 0) - { - /* Initialze temporary scratch pointer as scratch1 */ - pScr1 = pScratch1; - - /* Clear Accumlators */ - acc0 = 0; - - tapCnt = (srcBLen) >> 1U; - - while (tapCnt > 0U) - { - acc0 += (*pScr1++ * *pScr2++); - acc0 += (*pScr1++ * *pScr2++); - - /* Decrement the loop counter */ - tapCnt--; - } - - tapCnt = (srcBLen) & 1U; - - /* apply same above for remaining samples of smaller length sequence */ - while (tapCnt > 0U) - { - - /* accumlate the results */ - acc0 += (*pScr1++ * *pScr2++); - - /* Decrement the loop counter */ - tapCnt--; - } - - blkCnt--; - - /* Store the result in the accumulator in the destination buffer. */ - *pOut = (q7_t) (__SSAT(acc0 >> 7U, 8)); - - pOut += inc; - - /* Initialization of inputB pointer */ - pScr2 = py; - - pScratch1 += 1U; - - } - -} - -/** - * @} end of Corr group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_q15.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_q15.c deleted file mode 100644 index ce86db4..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_q15.c +++ /dev/null @@ -1,707 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_correlate_q15.c - * Description: Correlation of Q15 sequences - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupFilters - */ - -/** - * @addtogroup Corr - * @{ - */ - -/** - * @brief Correlation of Q15 sequences. - * @param[in] *pSrcA points to the first input sequence. - * @param[in] srcALen length of the first input sequence. - * @param[in] *pSrcB points to the second input sequence. - * @param[in] srcBLen length of the second input sequence. - * @param[out] *pDst points to the location where the output result is written. Length 2 * max(srcALen, srcBLen) - 1. - * @return none. - * - * @details - * Scaling and Overflow Behavior: - * - * \par - * The function is implemented using a 64-bit internal accumulator. - * Both inputs are in 1.15 format and multiplications yield a 2.30 result. - * The 2.30 intermediate results are accumulated in a 64-bit accumulator in 34.30 format. - * This approach provides 33 guard bits and there is no risk of overflow. - * The 34.30 result is then truncated to 34.15 format by discarding the low 15 bits and then saturated to 1.15 format. - * - * \par - * Refer to arm_correlate_fast_q15() for a faster but less precise version of this function for Cortex-M3 and Cortex-M4. - * - * \par - * Refer the function arm_correlate_opt_q15() for a faster implementation of this function using scratch buffers. - * - */ - -void arm_correlate_q15( - q15_t * pSrcA, - uint32_t srcALen, - q15_t * pSrcB, - uint32_t srcBLen, - q15_t * pDst) -{ - -#if (defined(ARM_MATH_CM7) || defined(ARM_MATH_CM4) || defined(ARM_MATH_CM3)) && !defined(UNALIGNED_SUPPORT_DISABLE) - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - q15_t *pIn1; /* inputA pointer */ - q15_t *pIn2; /* inputB pointer */ - q15_t *pOut = pDst; /* output pointer */ - q63_t sum, acc0, acc1, acc2, acc3; /* Accumulators */ - q15_t *px; /* Intermediate inputA pointer */ - q15_t *py; /* Intermediate inputB pointer */ - q15_t *pSrc1; /* Intermediate pointers */ - q31_t x0, x1, x2, x3, c0; /* temporary variables for holding input and coefficient values */ - uint32_t j, k = 0U, count, blkCnt, outBlockSize, blockSize1, blockSize2, blockSize3; /* loop counter */ - int32_t inc = 1; /* Destination address modifier */ - - - /* The algorithm implementation is based on the lengths of the inputs. */ - /* srcB is always made to slide across srcA. */ - /* So srcBLen is always considered as shorter or equal to srcALen */ - /* But CORR(x, y) is reverse of CORR(y, x) */ - /* So, when srcBLen > srcALen, output pointer is made to point to the end of the output buffer */ - /* and the destination pointer modifier, inc is set to -1 */ - /* If srcALen > srcBLen, zero pad has to be done to srcB to make the two inputs of same length */ - /* But to improve the performance, - * we include zeroes in the output instead of zero padding either of the the inputs*/ - /* If srcALen > srcBLen, - * (srcALen - srcBLen) zeroes has to included in the starting of the output buffer */ - /* If srcALen < srcBLen, - * (srcALen - srcBLen) zeroes has to included in the ending of the output buffer */ - if (srcALen >= srcBLen) - { - /* Initialization of inputA pointer */ - pIn1 = (pSrcA); - - /* Initialization of inputB pointer */ - pIn2 = (pSrcB); - - /* Number of output samples is calculated */ - outBlockSize = (2U * srcALen) - 1U; - - /* When srcALen > srcBLen, zero padding is done to srcB - * to make their lengths equal. - * Instead, (outBlockSize - (srcALen + srcBLen - 1)) - * number of output samples are made zero */ - j = outBlockSize - (srcALen + (srcBLen - 1U)); - - /* Updating the pointer position to non zero value */ - pOut += j; - - } - else - { - /* Initialization of inputA pointer */ - pIn1 = (pSrcB); - - /* Initialization of inputB pointer */ - pIn2 = (pSrcA); - - /* srcBLen is always considered as shorter or equal to srcALen */ - j = srcBLen; - srcBLen = srcALen; - srcALen = j; - - /* CORR(x, y) = Reverse order(CORR(y, x)) */ - /* Hence set the destination pointer to point to the last output sample */ - pOut = pDst + ((srcALen + srcBLen) - 2U); - - /* Destination address modifier is set to -1 */ - inc = -1; - - } - - /* The function is internally - * divided into three parts according to the number of multiplications that has to be - * taken place between inputA samples and inputB samples. In the first part of the - * algorithm, the multiplications increase by one for every iteration. - * In the second part of the algorithm, srcBLen number of multiplications are done. - * In the third part of the algorithm, the multiplications decrease by one - * for every iteration.*/ - /* The algorithm is implemented in three stages. - * The loop counters of each stage is initiated here. */ - blockSize1 = srcBLen - 1U; - blockSize2 = srcALen - (srcBLen - 1U); - blockSize3 = blockSize1; - - /* -------------------------- - * Initializations of stage1 - * -------------------------*/ - - /* sum = x[0] * y[srcBlen - 1] - * sum = x[0] * y[srcBlen - 2] + x[1] * y[srcBlen - 1] - * .... - * sum = x[0] * y[0] + x[1] * y[1] +...+ x[srcBLen - 1] * y[srcBLen - 1] - */ - - /* In this stage the MAC operations are increased by 1 for every iteration. - The count variable holds the number of MAC operations performed */ - count = 1U; - - /* Working pointer of inputA */ - px = pIn1; - - /* Working pointer of inputB */ - pSrc1 = pIn2 + (srcBLen - 1U); - py = pSrc1; - - /* ------------------------ - * Stage1 process - * ----------------------*/ - - /* The first loop starts here */ - while (blockSize1 > 0U) - { - /* Accumulator is made zero for every iteration */ - sum = 0; - - /* Apply loop unrolling and compute 4 MACs simultaneously. */ - k = count >> 2; - - /* First part of the processing with loop unrolling. Compute 4 MACs at a time. - ** a second loop below computes MACs for the remaining 1 to 3 samples. */ - while (k > 0U) - { - /* x[0] * y[srcBLen - 4] , x[1] * y[srcBLen - 3] */ - sum = __SMLALD(*__SIMD32(px)++, *__SIMD32(py)++, sum); - /* x[3] * y[srcBLen - 1] , x[2] * y[srcBLen - 2] */ - sum = __SMLALD(*__SIMD32(px)++, *__SIMD32(py)++, sum); - - /* Decrement the loop counter */ - k--; - } - - /* If the count is not a multiple of 4, compute any remaining MACs here. - ** No loop unrolling is used. */ - k = count % 0x4U; - - while (k > 0U) - { - /* Perform the multiply-accumulates */ - /* x[0] * y[srcBLen - 1] */ - sum = __SMLALD(*px++, *py++, sum); - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut = (q15_t) (__SSAT((sum >> 15), 16)); - /* Destination pointer is updated according to the address modifier, inc */ - pOut += inc; - - /* Update the inputA and inputB pointers for next MAC calculation */ - py = pSrc1 - count; - px = pIn1; - - /* Increment the MAC count */ - count++; - - /* Decrement the loop counter */ - blockSize1--; - } - - /* -------------------------- - * Initializations of stage2 - * ------------------------*/ - - /* sum = x[0] * y[0] + x[1] * y[1] +...+ x[srcBLen-1] * y[srcBLen-1] - * sum = x[1] * y[0] + x[2] * y[1] +...+ x[srcBLen] * y[srcBLen-1] - * .... - * sum = x[srcALen-srcBLen-2] * y[0] + x[srcALen-srcBLen-1] * y[1] +...+ x[srcALen-1] * y[srcBLen-1] - */ - - /* Working pointer of inputA */ - px = pIn1; - - /* Working pointer of inputB */ - py = pIn2; - - /* count is index by which the pointer pIn1 to be incremented */ - count = 0U; - - /* ------------------- - * Stage2 process - * ------------------*/ - - /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed. - * So, to loop unroll over blockSize2, - * srcBLen should be greater than or equal to 4, to loop unroll the srcBLen loop */ - if (srcBLen >= 4U) - { - /* Loop unroll over blockSize2, by 4 */ - blkCnt = blockSize2 >> 2U; - - while (blkCnt > 0U) - { - /* Set all accumulators to zero */ - acc0 = 0; - acc1 = 0; - acc2 = 0; - acc3 = 0; - - /* read x[0], x[1] samples */ - x0 = *__SIMD32(px); - /* read x[1], x[2] samples */ - x1 = _SIMD32_OFFSET(px + 1); - px += 2U; - - /* Apply loop unrolling and compute 4 MACs simultaneously. */ - k = srcBLen >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 MACs at a time. - ** a second loop below computes MACs for the remaining 1 to 3 samples. */ - do - { - /* Read the first two inputB samples using SIMD: - * y[0] and y[1] */ - c0 = *__SIMD32(py)++; - - /* acc0 += x[0] * y[0] + x[1] * y[1] */ - acc0 = __SMLALD(x0, c0, acc0); - - /* acc1 += x[1] * y[0] + x[2] * y[1] */ - acc1 = __SMLALD(x1, c0, acc1); - - /* Read x[2], x[3] */ - x2 = *__SIMD32(px); - - /* Read x[3], x[4] */ - x3 = _SIMD32_OFFSET(px + 1); - - /* acc2 += x[2] * y[0] + x[3] * y[1] */ - acc2 = __SMLALD(x2, c0, acc2); - - /* acc3 += x[3] * y[0] + x[4] * y[1] */ - acc3 = __SMLALD(x3, c0, acc3); - - /* Read y[2] and y[3] */ - c0 = *__SIMD32(py)++; - - /* acc0 += x[2] * y[2] + x[3] * y[3] */ - acc0 = __SMLALD(x2, c0, acc0); - - /* acc1 += x[3] * y[2] + x[4] * y[3] */ - acc1 = __SMLALD(x3, c0, acc1); - - /* Read x[4], x[5] */ - x0 = _SIMD32_OFFSET(px + 2); - - /* Read x[5], x[6] */ - x1 = _SIMD32_OFFSET(px + 3); - - px += 4U; - - /* acc2 += x[4] * y[2] + x[5] * y[3] */ - acc2 = __SMLALD(x0, c0, acc2); - - /* acc3 += x[5] * y[2] + x[6] * y[3] */ - acc3 = __SMLALD(x1, c0, acc3); - - } while (--k); - - /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. - ** No loop unrolling is used. */ - k = srcBLen % 0x4U; - - if (k == 1U) - { - /* Read y[4] */ - c0 = *py; -#ifdef ARM_MATH_BIG_ENDIAN - - c0 = c0 << 16U; - -#else - - c0 = c0 & 0x0000FFFF; - -#endif /* #ifdef ARM_MATH_BIG_ENDIAN */ - /* Read x[7] */ - x3 = *__SIMD32(px); - px++; - - /* Perform the multiply-accumulates */ - acc0 = __SMLALD(x0, c0, acc0); - acc1 = __SMLALD(x1, c0, acc1); - acc2 = __SMLALDX(x1, c0, acc2); - acc3 = __SMLALDX(x3, c0, acc3); - } - - if (k == 2U) - { - /* Read y[4], y[5] */ - c0 = *__SIMD32(py); - - /* Read x[7], x[8] */ - x3 = *__SIMD32(px); - - /* Read x[9] */ - x2 = _SIMD32_OFFSET(px + 1); - px += 2U; - - /* Perform the multiply-accumulates */ - acc0 = __SMLALD(x0, c0, acc0); - acc1 = __SMLALD(x1, c0, acc1); - acc2 = __SMLALD(x3, c0, acc2); - acc3 = __SMLALD(x2, c0, acc3); - } - - if (k == 3U) - { - /* Read y[4], y[5] */ - c0 = *__SIMD32(py)++; - - /* Read x[7], x[8] */ - x3 = *__SIMD32(px); - - /* Read x[9] */ - x2 = _SIMD32_OFFSET(px + 1); - - /* Perform the multiply-accumulates */ - acc0 = __SMLALD(x0, c0, acc0); - acc1 = __SMLALD(x1, c0, acc1); - acc2 = __SMLALD(x3, c0, acc2); - acc3 = __SMLALD(x2, c0, acc3); - - c0 = (*py); - - /* Read y[6] */ -#ifdef ARM_MATH_BIG_ENDIAN - - c0 = c0 << 16U; -#else - - c0 = c0 & 0x0000FFFF; -#endif /* #ifdef ARM_MATH_BIG_ENDIAN */ - /* Read x[10] */ - x3 = _SIMD32_OFFSET(px + 2); - px += 3U; - - /* Perform the multiply-accumulates */ - acc0 = __SMLALDX(x1, c0, acc0); - acc1 = __SMLALD(x2, c0, acc1); - acc2 = __SMLALDX(x2, c0, acc2); - acc3 = __SMLALDX(x3, c0, acc3); - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut = (q15_t) (__SSAT(acc0 >> 15, 16)); - /* Destination pointer is updated according to the address modifier, inc */ - pOut += inc; - - *pOut = (q15_t) (__SSAT(acc1 >> 15, 16)); - pOut += inc; - - *pOut = (q15_t) (__SSAT(acc2 >> 15, 16)); - pOut += inc; - - *pOut = (q15_t) (__SSAT(acc3 >> 15, 16)); - pOut += inc; - - /* Increment the count by 4 as 4 output values are computed */ - count += 4U; - - /* Update the inputA and inputB pointers for next MAC calculation */ - px = pIn1 + count; - py = pIn2; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize2 is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize2 % 0x4U; - - while (blkCnt > 0U) - { - /* Accumulator is made zero for every iteration */ - sum = 0; - - /* Apply loop unrolling and compute 4 MACs simultaneously. */ - k = srcBLen >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 MACs at a time. - ** a second loop below computes MACs for the remaining 1 to 3 samples. */ - while (k > 0U) - { - /* Perform the multiply-accumulates */ - sum += ((q63_t) * px++ * *py++); - sum += ((q63_t) * px++ * *py++); - sum += ((q63_t) * px++ * *py++); - sum += ((q63_t) * px++ * *py++); - - /* Decrement the loop counter */ - k--; - } - - /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. - ** No loop unrolling is used. */ - k = srcBLen % 0x4U; - - while (k > 0U) - { - /* Perform the multiply-accumulates */ - sum += ((q63_t) * px++ * *py++); - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut = (q15_t) (__SSAT(sum >> 15, 16)); - /* Destination pointer is updated according to the address modifier, inc */ - pOut += inc; - - /* Increment count by 1, as one output value is computed */ - count++; - - /* Update the inputA and inputB pointers for next MAC calculation */ - px = pIn1 + count; - py = pIn2; - - /* Decrement the loop counter */ - blkCnt--; - } - } - else - { - /* If the srcBLen is not a multiple of 4, - * the blockSize2 loop cannot be unrolled by 4 */ - blkCnt = blockSize2; - - while (blkCnt > 0U) - { - /* Accumulator is made zero for every iteration */ - sum = 0; - - /* Loop over srcBLen */ - k = srcBLen; - - while (k > 0U) - { - /* Perform the multiply-accumulate */ - sum += ((q63_t) * px++ * *py++); - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut = (q15_t) (__SSAT(sum >> 15, 16)); - /* Destination pointer is updated according to the address modifier, inc */ - pOut += inc; - - /* Increment the MAC count */ - count++; - - /* Update the inputA and inputB pointers for next MAC calculation */ - px = pIn1 + count; - py = pIn2; - - /* Decrement the loop counter */ - blkCnt--; - } - } - - /* -------------------------- - * Initializations of stage3 - * -------------------------*/ - - /* sum += x[srcALen-srcBLen+1] * y[0] + x[srcALen-srcBLen+2] * y[1] +...+ x[srcALen-1] * y[srcBLen-1] - * sum += x[srcALen-srcBLen+2] * y[0] + x[srcALen-srcBLen+3] * y[1] +...+ x[srcALen-1] * y[srcBLen-1] - * .... - * sum += x[srcALen-2] * y[0] + x[srcALen-1] * y[1] - * sum += x[srcALen-1] * y[0] - */ - - /* In this stage the MAC operations are decreased by 1 for every iteration. - The count variable holds the number of MAC operations performed */ - count = srcBLen - 1U; - - /* Working pointer of inputA */ - pSrc1 = (pIn1 + srcALen) - (srcBLen - 1U); - px = pSrc1; - - /* Working pointer of inputB */ - py = pIn2; - - /* ------------------- - * Stage3 process - * ------------------*/ - - while (blockSize3 > 0U) - { - /* Accumulator is made zero for every iteration */ - sum = 0; - - /* Apply loop unrolling and compute 4 MACs simultaneously. */ - k = count >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 MACs at a time. - ** a second loop below computes MACs for the remaining 1 to 3 samples. */ - while (k > 0U) - { - /* Perform the multiply-accumulates */ - /* sum += x[srcALen - srcBLen + 4] * y[3] , sum += x[srcALen - srcBLen + 3] * y[2] */ - sum = __SMLALD(*__SIMD32(px)++, *__SIMD32(py)++, sum); - /* sum += x[srcALen - srcBLen + 2] * y[1] , sum += x[srcALen - srcBLen + 1] * y[0] */ - sum = __SMLALD(*__SIMD32(px)++, *__SIMD32(py)++, sum); - - /* Decrement the loop counter */ - k--; - } - - /* If the count is not a multiple of 4, compute any remaining MACs here. - ** No loop unrolling is used. */ - k = count % 0x4U; - - while (k > 0U) - { - /* Perform the multiply-accumulates */ - sum = __SMLALD(*px++, *py++, sum); - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut = (q15_t) (__SSAT((sum >> 15), 16)); - /* Destination pointer is updated according to the address modifier, inc */ - pOut += inc; - - /* Update the inputA and inputB pointers for next MAC calculation */ - px = ++pSrc1; - py = pIn2; - - /* Decrement the MAC count */ - count--; - - /* Decrement the loop counter */ - blockSize3--; - } - -#else - -/* Run the below code for Cortex-M0 */ - - q15_t *pIn1 = pSrcA; /* inputA pointer */ - q15_t *pIn2 = pSrcB + (srcBLen - 1U); /* inputB pointer */ - q63_t sum; /* Accumulators */ - uint32_t i = 0U, j; /* loop counters */ - uint32_t inv = 0U; /* Reverse order flag */ - uint32_t tot = 0U; /* Length */ - - /* The algorithm implementation is based on the lengths of the inputs. */ - /* srcB is always made to slide across srcA. */ - /* So srcBLen is always considered as shorter or equal to srcALen */ - /* But CORR(x, y) is reverse of CORR(y, x) */ - /* So, when srcBLen > srcALen, output pointer is made to point to the end of the output buffer */ - /* and a varaible, inv is set to 1 */ - /* If lengths are not equal then zero pad has to be done to make the two - * inputs of same length. But to improve the performance, we include zeroes - * in the output instead of zero padding either of the the inputs*/ - /* If srcALen > srcBLen, (srcALen - srcBLen) zeroes has to included in the - * starting of the output buffer */ - /* If srcALen < srcBLen, (srcALen - srcBLen) zeroes has to included in the - * ending of the output buffer */ - /* Once the zero padding is done the remaining of the output is calcualted - * using convolution but with the shorter signal time shifted. */ - - /* Calculate the length of the remaining sequence */ - tot = ((srcALen + srcBLen) - 2U); - - if (srcALen > srcBLen) - { - /* Calculating the number of zeros to be padded to the output */ - j = srcALen - srcBLen; - - /* Initialise the pointer after zero padding */ - pDst += j; - } - - else if (srcALen < srcBLen) - { - /* Initialization to inputB pointer */ - pIn1 = pSrcB; - - /* Initialization to the end of inputA pointer */ - pIn2 = pSrcA + (srcALen - 1U); - - /* Initialisation of the pointer after zero padding */ - pDst = pDst + tot; - - /* Swapping the lengths */ - j = srcALen; - srcALen = srcBLen; - srcBLen = j; - - /* Setting the reverse flag */ - inv = 1; - - } - - /* Loop to calculate convolution for output length number of times */ - for (i = 0U; i <= tot; i++) - { - /* Initialize sum with zero to carry on MAC operations */ - sum = 0; - - /* Loop to perform MAC operations according to convolution equation */ - for (j = 0U; j <= i; j++) - { - /* Check the array limitations */ - if ((((i - j) < srcBLen) && (j < srcALen))) - { - /* z[i] += x[i-j] * y[j] */ - sum += ((q31_t) pIn1[j] * pIn2[-((int32_t) i - j)]); - } - } - /* Store the output in the destination buffer */ - if (inv == 1) - *pDst-- = (q15_t) __SSAT((sum >> 15U), 16U); - else - *pDst++ = (q15_t) __SSAT((sum >> 15U), 16U); - } - -#endif /* #if (defined(ARM_MATH_CM7) || defined(ARM_MATH_CM4) || defined(ARM_MATH_CM3)) && !defined(UNALIGNED_SUPPORT_DISABLE) */ - -} - -/** - * @} end of Corr group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_q31.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_q31.c deleted file mode 100644 index 3d7d3d0..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_q31.c +++ /dev/null @@ -1,653 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_correlate_q31.c - * Description: Correlation of Q31 sequences - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupFilters - */ - -/** - * @addtogroup Corr - * @{ - */ - -/** - * @brief Correlation of Q31 sequences. - * @param[in] *pSrcA points to the first input sequence. - * @param[in] srcALen length of the first input sequence. - * @param[in] *pSrcB points to the second input sequence. - * @param[in] srcBLen length of the second input sequence. - * @param[out] *pDst points to the location where the output result is written. Length 2 * max(srcALen, srcBLen) - 1. - * @return none. - * - * @details - * Scaling and Overflow Behavior: - * - * \par - * The function is implemented using an internal 64-bit accumulator. - * The accumulator has a 2.62 format and maintains full precision of the intermediate multiplication results but provides only a single guard bit. - * There is no saturation on intermediate additions. - * Thus, if the accumulator overflows it wraps around and distorts the result. - * The input signals should be scaled down to avoid intermediate overflows. - * Scale down one of the inputs by 1/min(srcALen, srcBLen)to avoid overflows since a - * maximum of min(srcALen, srcBLen) number of additions is carried internally. - * The 2.62 accumulator is right shifted by 31 bits and saturated to 1.31 format to yield the final result. - * - * \par - * See arm_correlate_fast_q31() for a faster but less precise implementation of this function for Cortex-M3 and Cortex-M4. - */ - -void arm_correlate_q31( - q31_t * pSrcA, - uint32_t srcALen, - q31_t * pSrcB, - uint32_t srcBLen, - q31_t * pDst) -{ - -#if defined (ARM_MATH_DSP) - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - q31_t *pIn1; /* inputA pointer */ - q31_t *pIn2; /* inputB pointer */ - q31_t *pOut = pDst; /* output pointer */ - q31_t *px; /* Intermediate inputA pointer */ - q31_t *py; /* Intermediate inputB pointer */ - q31_t *pSrc1; /* Intermediate pointers */ - q63_t sum, acc0, acc1, acc2; /* Accumulators */ - q31_t x0, x1, x2, c0; /* temporary variables for holding input and coefficient values */ - uint32_t j, k = 0U, count, blkCnt, outBlockSize, blockSize1, blockSize2, blockSize3; /* loop counter */ - int32_t inc = 1; /* Destination address modifier */ - - - /* The algorithm implementation is based on the lengths of the inputs. */ - /* srcB is always made to slide across srcA. */ - /* So srcBLen is always considered as shorter or equal to srcALen */ - /* But CORR(x, y) is reverse of CORR(y, x) */ - /* So, when srcBLen > srcALen, output pointer is made to point to the end of the output buffer */ - /* and the destination pointer modifier, inc is set to -1 */ - /* If srcALen > srcBLen, zero pad has to be done to srcB to make the two inputs of same length */ - /* But to improve the performance, - * we include zeroes in the output instead of zero padding either of the the inputs*/ - /* If srcALen > srcBLen, - * (srcALen - srcBLen) zeroes has to included in the starting of the output buffer */ - /* If srcALen < srcBLen, - * (srcALen - srcBLen) zeroes has to included in the ending of the output buffer */ - if (srcALen >= srcBLen) - { - /* Initialization of inputA pointer */ - pIn1 = (pSrcA); - - /* Initialization of inputB pointer */ - pIn2 = (pSrcB); - - /* Number of output samples is calculated */ - outBlockSize = (2U * srcALen) - 1U; - - /* When srcALen > srcBLen, zero padding is done to srcB - * to make their lengths equal. - * Instead, (outBlockSize - (srcALen + srcBLen - 1)) - * number of output samples are made zero */ - j = outBlockSize - (srcALen + (srcBLen - 1U)); - - /* Updating the pointer position to non zero value */ - pOut += j; - - } - else - { - /* Initialization of inputA pointer */ - pIn1 = (pSrcB); - - /* Initialization of inputB pointer */ - pIn2 = (pSrcA); - - /* srcBLen is always considered as shorter or equal to srcALen */ - j = srcBLen; - srcBLen = srcALen; - srcALen = j; - - /* CORR(x, y) = Reverse order(CORR(y, x)) */ - /* Hence set the destination pointer to point to the last output sample */ - pOut = pDst + ((srcALen + srcBLen) - 2U); - - /* Destination address modifier is set to -1 */ - inc = -1; - - } - - /* The function is internally - * divided into three parts according to the number of multiplications that has to be - * taken place between inputA samples and inputB samples. In the first part of the - * algorithm, the multiplications increase by one for every iteration. - * In the second part of the algorithm, srcBLen number of multiplications are done. - * In the third part of the algorithm, the multiplications decrease by one - * for every iteration.*/ - /* The algorithm is implemented in three stages. - * The loop counters of each stage is initiated here. */ - blockSize1 = srcBLen - 1U; - blockSize2 = srcALen - (srcBLen - 1U); - blockSize3 = blockSize1; - - /* -------------------------- - * Initializations of stage1 - * -------------------------*/ - - /* sum = x[0] * y[srcBlen - 1] - * sum = x[0] * y[srcBlen - 2] + x[1] * y[srcBlen - 1] - * .... - * sum = x[0] * y[0] + x[1] * y[1] +...+ x[srcBLen - 1] * y[srcBLen - 1] - */ - - /* In this stage the MAC operations are increased by 1 for every iteration. - The count variable holds the number of MAC operations performed */ - count = 1U; - - /* Working pointer of inputA */ - px = pIn1; - - /* Working pointer of inputB */ - pSrc1 = pIn2 + (srcBLen - 1U); - py = pSrc1; - - /* ------------------------ - * Stage1 process - * ----------------------*/ - - /* The first stage starts here */ - while (blockSize1 > 0U) - { - /* Accumulator is made zero for every iteration */ - sum = 0; - - /* Apply loop unrolling and compute 4 MACs simultaneously. */ - k = count >> 2; - - /* First part of the processing with loop unrolling. Compute 4 MACs at a time. - ** a second loop below computes MACs for the remaining 1 to 3 samples. */ - while (k > 0U) - { - /* x[0] * y[srcBLen - 4] */ - sum += (q63_t) * px++ * (*py++); - /* x[1] * y[srcBLen - 3] */ - sum += (q63_t) * px++ * (*py++); - /* x[2] * y[srcBLen - 2] */ - sum += (q63_t) * px++ * (*py++); - /* x[3] * y[srcBLen - 1] */ - sum += (q63_t) * px++ * (*py++); - - /* Decrement the loop counter */ - k--; - } - - /* If the count is not a multiple of 4, compute any remaining MACs here. - ** No loop unrolling is used. */ - k = count % 0x4U; - - while (k > 0U) - { - /* Perform the multiply-accumulates */ - /* x[0] * y[srcBLen - 1] */ - sum += (q63_t) * px++ * (*py++); - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut = (q31_t) (sum >> 31); - /* Destination pointer is updated according to the address modifier, inc */ - pOut += inc; - - /* Update the inputA and inputB pointers for next MAC calculation */ - py = pSrc1 - count; - px = pIn1; - - /* Increment the MAC count */ - count++; - - /* Decrement the loop counter */ - blockSize1--; - } - - /* -------------------------- - * Initializations of stage2 - * ------------------------*/ - - /* sum = x[0] * y[0] + x[1] * y[1] +...+ x[srcBLen-1] * y[srcBLen-1] - * sum = x[1] * y[0] + x[2] * y[1] +...+ x[srcBLen] * y[srcBLen-1] - * .... - * sum = x[srcALen-srcBLen-2] * y[0] + x[srcALen-srcBLen-1] * y[1] +...+ x[srcALen-1] * y[srcBLen-1] - */ - - /* Working pointer of inputA */ - px = pIn1; - - /* Working pointer of inputB */ - py = pIn2; - - /* count is index by which the pointer pIn1 to be incremented */ - count = 0U; - - /* ------------------- - * Stage2 process - * ------------------*/ - - /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed. - * So, to loop unroll over blockSize2, - * srcBLen should be greater than or equal to 4 */ - if (srcBLen >= 4U) - { - /* Loop unroll by 3 */ - blkCnt = blockSize2 / 3; - - while (blkCnt > 0U) - { - /* Set all accumulators to zero */ - acc0 = 0; - acc1 = 0; - acc2 = 0; - - /* read x[0], x[1] samples */ - x0 = *(px++); - x1 = *(px++); - - /* Apply loop unrolling and compute 3 MACs simultaneously. */ - k = srcBLen / 3; - - /* First part of the processing with loop unrolling. Compute 3 MACs at a time. - ** a second loop below computes MACs for the remaining 1 to 2 samples. */ - do - { - /* Read y[0] sample */ - c0 = *(py); - - /* Read x[2] sample */ - x2 = *(px); - - /* Perform the multiply-accumulate */ - /* acc0 += x[0] * y[0] */ - acc0 += ((q63_t) x0 * c0); - /* acc1 += x[1] * y[0] */ - acc1 += ((q63_t) x1 * c0); - /* acc2 += x[2] * y[0] */ - acc2 += ((q63_t) x2 * c0); - - /* Read y[1] sample */ - c0 = *(py + 1U); - - /* Read x[3] sample */ - x0 = *(px + 1U); - - /* Perform the multiply-accumulates */ - /* acc0 += x[1] * y[1] */ - acc0 += ((q63_t) x1 * c0); - /* acc1 += x[2] * y[1] */ - acc1 += ((q63_t) x2 * c0); - /* acc2 += x[3] * y[1] */ - acc2 += ((q63_t) x0 * c0); - - /* Read y[2] sample */ - c0 = *(py + 2U); - - /* Read x[4] sample */ - x1 = *(px + 2U); - - /* Perform the multiply-accumulates */ - /* acc0 += x[2] * y[2] */ - acc0 += ((q63_t) x2 * c0); - /* acc1 += x[3] * y[2] */ - acc1 += ((q63_t) x0 * c0); - /* acc2 += x[4] * y[2] */ - acc2 += ((q63_t) x1 * c0); - - /* update scratch pointers */ - px += 3U; - py += 3U; - - } while (--k); - - /* If the srcBLen is not a multiple of 3, compute any remaining MACs here. - ** No loop unrolling is used. */ - k = srcBLen - (3 * (srcBLen / 3)); - - while (k > 0U) - { - /* Read y[4] sample */ - c0 = *(py++); - - /* Read x[7] sample */ - x2 = *(px++); - - /* Perform the multiply-accumulates */ - /* acc0 += x[4] * y[4] */ - acc0 += ((q63_t) x0 * c0); - /* acc1 += x[5] * y[4] */ - acc1 += ((q63_t) x1 * c0); - /* acc2 += x[6] * y[4] */ - acc2 += ((q63_t) x2 * c0); - - /* Reuse the present samples for the next MAC */ - x0 = x1; - x1 = x2; - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut = (q31_t) (acc0 >> 31); - /* Destination pointer is updated according to the address modifier, inc */ - pOut += inc; - - *pOut = (q31_t) (acc1 >> 31); - pOut += inc; - - *pOut = (q31_t) (acc2 >> 31); - pOut += inc; - - /* Increment the pointer pIn1 index, count by 3 */ - count += 3U; - - /* Update the inputA and inputB pointers for next MAC calculation */ - px = pIn1 + count; - py = pIn2; - - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize2 is not a multiple of 3, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize2 - 3 * (blockSize2 / 3); - - while (blkCnt > 0U) - { - /* Accumulator is made zero for every iteration */ - sum = 0; - - /* Apply loop unrolling and compute 4 MACs simultaneously. */ - k = srcBLen >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 MACs at a time. - ** a second loop below computes MACs for the remaining 1 to 3 samples. */ - while (k > 0U) - { - /* Perform the multiply-accumulates */ - sum += (q63_t) * px++ * (*py++); - sum += (q63_t) * px++ * (*py++); - sum += (q63_t) * px++ * (*py++); - sum += (q63_t) * px++ * (*py++); - - /* Decrement the loop counter */ - k--; - } - - /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. - ** No loop unrolling is used. */ - k = srcBLen % 0x4U; - - while (k > 0U) - { - /* Perform the multiply-accumulate */ - sum += (q63_t) * px++ * (*py++); - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut = (q31_t) (sum >> 31); - /* Destination pointer is updated according to the address modifier, inc */ - pOut += inc; - - /* Increment the MAC count */ - count++; - - /* Update the inputA and inputB pointers for next MAC calculation */ - px = pIn1 + count; - py = pIn2; - - /* Decrement the loop counter */ - blkCnt--; - } - } - else - { - /* If the srcBLen is not a multiple of 4, - * the blockSize2 loop cannot be unrolled by 4 */ - blkCnt = blockSize2; - - while (blkCnt > 0U) - { - /* Accumulator is made zero for every iteration */ - sum = 0; - - /* Loop over srcBLen */ - k = srcBLen; - - while (k > 0U) - { - /* Perform the multiply-accumulate */ - sum += (q63_t) * px++ * (*py++); - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut = (q31_t) (sum >> 31); - /* Destination pointer is updated according to the address modifier, inc */ - pOut += inc; - - /* Increment the MAC count */ - count++; - - /* Update the inputA and inputB pointers for next MAC calculation */ - px = pIn1 + count; - py = pIn2; - - /* Decrement the loop counter */ - blkCnt--; - } - } - - /* -------------------------- - * Initializations of stage3 - * -------------------------*/ - - /* sum += x[srcALen-srcBLen+1] * y[0] + x[srcALen-srcBLen+2] * y[1] +...+ x[srcALen-1] * y[srcBLen-1] - * sum += x[srcALen-srcBLen+2] * y[0] + x[srcALen-srcBLen+3] * y[1] +...+ x[srcALen-1] * y[srcBLen-1] - * .... - * sum += x[srcALen-2] * y[0] + x[srcALen-1] * y[1] - * sum += x[srcALen-1] * y[0] - */ - - /* In this stage the MAC operations are decreased by 1 for every iteration. - The count variable holds the number of MAC operations performed */ - count = srcBLen - 1U; - - /* Working pointer of inputA */ - pSrc1 = pIn1 + (srcALen - (srcBLen - 1U)); - px = pSrc1; - - /* Working pointer of inputB */ - py = pIn2; - - /* ------------------- - * Stage3 process - * ------------------*/ - - while (blockSize3 > 0U) - { - /* Accumulator is made zero for every iteration */ - sum = 0; - - /* Apply loop unrolling and compute 4 MACs simultaneously. */ - k = count >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 MACs at a time. - ** a second loop below computes MACs for the remaining 1 to 3 samples. */ - while (k > 0U) - { - /* Perform the multiply-accumulates */ - /* sum += x[srcALen - srcBLen + 4] * y[3] */ - sum += (q63_t) * px++ * (*py++); - /* sum += x[srcALen - srcBLen + 3] * y[2] */ - sum += (q63_t) * px++ * (*py++); - /* sum += x[srcALen - srcBLen + 2] * y[1] */ - sum += (q63_t) * px++ * (*py++); - /* sum += x[srcALen - srcBLen + 1] * y[0] */ - sum += (q63_t) * px++ * (*py++); - - /* Decrement the loop counter */ - k--; - } - - /* If the count is not a multiple of 4, compute any remaining MACs here. - ** No loop unrolling is used. */ - k = count % 0x4U; - - while (k > 0U) - { - /* Perform the multiply-accumulates */ - sum += (q63_t) * px++ * (*py++); - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut = (q31_t) (sum >> 31); - /* Destination pointer is updated according to the address modifier, inc */ - pOut += inc; - - /* Update the inputA and inputB pointers for next MAC calculation */ - px = ++pSrc1; - py = pIn2; - - /* Decrement the MAC count */ - count--; - - /* Decrement the loop counter */ - blockSize3--; - } - -#else - - /* Run the below code for Cortex-M0 */ - - q31_t *pIn1 = pSrcA; /* inputA pointer */ - q31_t *pIn2 = pSrcB + (srcBLen - 1U); /* inputB pointer */ - q63_t sum; /* Accumulators */ - uint32_t i = 0U, j; /* loop counters */ - uint32_t inv = 0U; /* Reverse order flag */ - uint32_t tot = 0U; /* Length */ - - /* The algorithm implementation is based on the lengths of the inputs. */ - /* srcB is always made to slide across srcA. */ - /* So srcBLen is always considered as shorter or equal to srcALen */ - /* But CORR(x, y) is reverse of CORR(y, x) */ - /* So, when srcBLen > srcALen, output pointer is made to point to the end of the output buffer */ - /* and a varaible, inv is set to 1 */ - /* If lengths are not equal then zero pad has to be done to make the two - * inputs of same length. But to improve the performance, we include zeroes - * in the output instead of zero padding either of the the inputs*/ - /* If srcALen > srcBLen, (srcALen - srcBLen) zeroes has to included in the - * starting of the output buffer */ - /* If srcALen < srcBLen, (srcALen - srcBLen) zeroes has to included in the - * ending of the output buffer */ - /* Once the zero padding is done the remaining of the output is calcualted - * using correlation but with the shorter signal time shifted. */ - - /* Calculate the length of the remaining sequence */ - tot = ((srcALen + srcBLen) - 2U); - - if (srcALen > srcBLen) - { - /* Calculating the number of zeros to be padded to the output */ - j = srcALen - srcBLen; - - /* Initialise the pointer after zero padding */ - pDst += j; - } - - else if (srcALen < srcBLen) - { - /* Initialization to inputB pointer */ - pIn1 = pSrcB; - - /* Initialization to the end of inputA pointer */ - pIn2 = pSrcA + (srcALen - 1U); - - /* Initialisation of the pointer after zero padding */ - pDst = pDst + tot; - - /* Swapping the lengths */ - j = srcALen; - srcALen = srcBLen; - srcBLen = j; - - /* Setting the reverse flag */ - inv = 1; - - } - - /* Loop to calculate correlation for output length number of times */ - for (i = 0U; i <= tot; i++) - { - /* Initialize sum with zero to carry on MAC operations */ - sum = 0; - - /* Loop to perform MAC operations according to correlation equation */ - for (j = 0U; j <= i; j++) - { - /* Check the array limitations */ - if ((((i - j) < srcBLen) && (j < srcALen))) - { - /* z[i] += x[i-j] * y[j] */ - sum += ((q63_t) pIn1[j] * pIn2[-((int32_t) i - j)]); - } - } - /* Store the output in the destination buffer */ - if (inv == 1) - *pDst-- = (q31_t) (sum >> 31U); - else - *pDst++ = (q31_t) (sum >> 31U); - } - -#endif /* #if defined (ARM_MATH_DSP) */ - -} - -/** - * @} end of Corr group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_q7.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_q7.c deleted file mode 100644 index dc5247f..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_q7.c +++ /dev/null @@ -1,778 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_correlate_q7.c - * Description: Correlation of Q7 sequences - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupFilters - */ - -/** - * @addtogroup Corr - * @{ - */ - -/** - * @brief Correlation of Q7 sequences. - * @param[in] *pSrcA points to the first input sequence. - * @param[in] srcALen length of the first input sequence. - * @param[in] *pSrcB points to the second input sequence. - * @param[in] srcBLen length of the second input sequence. - * @param[out] *pDst points to the location where the output result is written. Length 2 * max(srcALen, srcBLen) - 1. - * @return none. - * - * @details - * Scaling and Overflow Behavior: - * - * \par - * The function is implemented using a 32-bit internal accumulator. - * Both the inputs are represented in 1.7 format and multiplications yield a 2.14 result. - * The 2.14 intermediate results are accumulated in a 32-bit accumulator in 18.14 format. - * This approach provides 17 guard bits and there is no risk of overflow as long as max(srcALen, srcBLen)<131072. - * The 18.14 result is then truncated to 18.7 format by discarding the low 7 bits and saturated to 1.7 format. - * - * \par - * Refer the function arm_correlate_opt_q7() for a faster implementation of this function. - * - */ - -void arm_correlate_q7( - q7_t * pSrcA, - uint32_t srcALen, - q7_t * pSrcB, - uint32_t srcBLen, - q7_t * pDst) -{ - - -#if defined (ARM_MATH_DSP) - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - q7_t *pIn1; /* inputA pointer */ - q7_t *pIn2; /* inputB pointer */ - q7_t *pOut = pDst; /* output pointer */ - q7_t *px; /* Intermediate inputA pointer */ - q7_t *py; /* Intermediate inputB pointer */ - q7_t *pSrc1; /* Intermediate pointers */ - q31_t sum, acc0, acc1, acc2, acc3; /* Accumulators */ - q31_t input1, input2; /* temporary variables */ - q15_t in1, in2; /* temporary variables */ - q7_t x0, x1, x2, x3, c0, c1; /* temporary variables for holding input and coefficient values */ - uint32_t j, k = 0U, count, blkCnt, outBlockSize, blockSize1, blockSize2, blockSize3; /* loop counter */ - int32_t inc = 1; - - - /* The algorithm implementation is based on the lengths of the inputs. */ - /* srcB is always made to slide across srcA. */ - /* So srcBLen is always considered as shorter or equal to srcALen */ - /* But CORR(x, y) is reverse of CORR(y, x) */ - /* So, when srcBLen > srcALen, output pointer is made to point to the end of the output buffer */ - /* and the destination pointer modifier, inc is set to -1 */ - /* If srcALen > srcBLen, zero pad has to be done to srcB to make the two inputs of same length */ - /* But to improve the performance, - * we include zeroes in the output instead of zero padding either of the the inputs*/ - /* If srcALen > srcBLen, - * (srcALen - srcBLen) zeroes has to included in the starting of the output buffer */ - /* If srcALen < srcBLen, - * (srcALen - srcBLen) zeroes has to included in the ending of the output buffer */ - if (srcALen >= srcBLen) - { - /* Initialization of inputA pointer */ - pIn1 = (pSrcA); - - /* Initialization of inputB pointer */ - pIn2 = (pSrcB); - - /* Number of output samples is calculated */ - outBlockSize = (2U * srcALen) - 1U; - - /* When srcALen > srcBLen, zero padding is done to srcB - * to make their lengths equal. - * Instead, (outBlockSize - (srcALen + srcBLen - 1)) - * number of output samples are made zero */ - j = outBlockSize - (srcALen + (srcBLen - 1U)); - - /* Updating the pointer position to non zero value */ - pOut += j; - - } - else - { - /* Initialization of inputA pointer */ - pIn1 = (pSrcB); - - /* Initialization of inputB pointer */ - pIn2 = (pSrcA); - - /* srcBLen is always considered as shorter or equal to srcALen */ - j = srcBLen; - srcBLen = srcALen; - srcALen = j; - - /* CORR(x, y) = Reverse order(CORR(y, x)) */ - /* Hence set the destination pointer to point to the last output sample */ - pOut = pDst + ((srcALen + srcBLen) - 2U); - - /* Destination address modifier is set to -1 */ - inc = -1; - - } - - /* The function is internally - * divided into three parts according to the number of multiplications that has to be - * taken place between inputA samples and inputB samples. In the first part of the - * algorithm, the multiplications increase by one for every iteration. - * In the second part of the algorithm, srcBLen number of multiplications are done. - * In the third part of the algorithm, the multiplications decrease by one - * for every iteration.*/ - /* The algorithm is implemented in three stages. - * The loop counters of each stage is initiated here. */ - blockSize1 = srcBLen - 1U; - blockSize2 = srcALen - (srcBLen - 1U); - blockSize3 = blockSize1; - - /* -------------------------- - * Initializations of stage1 - * -------------------------*/ - - /* sum = x[0] * y[srcBlen - 1] - * sum = x[0] * y[srcBlen - 2] + x[1] * y[srcBlen - 1] - * .... - * sum = x[0] * y[0] + x[1] * y[1] +...+ x[srcBLen - 1] * y[srcBLen - 1] - */ - - /* In this stage the MAC operations are increased by 1 for every iteration. - The count variable holds the number of MAC operations performed */ - count = 1U; - - /* Working pointer of inputA */ - px = pIn1; - - /* Working pointer of inputB */ - pSrc1 = pIn2 + (srcBLen - 1U); - py = pSrc1; - - /* ------------------------ - * Stage1 process - * ----------------------*/ - - /* The first stage starts here */ - while (blockSize1 > 0U) - { - /* Accumulator is made zero for every iteration */ - sum = 0; - - /* Apply loop unrolling and compute 4 MACs simultaneously. */ - k = count >> 2; - - /* First part of the processing with loop unrolling. Compute 4 MACs at a time. - ** a second loop below computes MACs for the remaining 1 to 3 samples. */ - while (k > 0U) - { - /* x[0] , x[1] */ - in1 = (q15_t) * px++; - in2 = (q15_t) * px++; - input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); - - /* y[srcBLen - 4] , y[srcBLen - 3] */ - in1 = (q15_t) * py++; - in2 = (q15_t) * py++; - input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); - - /* x[0] * y[srcBLen - 4] */ - /* x[1] * y[srcBLen - 3] */ - sum = __SMLAD(input1, input2, sum); - - /* x[2] , x[3] */ - in1 = (q15_t) * px++; - in2 = (q15_t) * px++; - input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); - - /* y[srcBLen - 2] , y[srcBLen - 1] */ - in1 = (q15_t) * py++; - in2 = (q15_t) * py++; - input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); - - /* x[2] * y[srcBLen - 2] */ - /* x[3] * y[srcBLen - 1] */ - sum = __SMLAD(input1, input2, sum); - - - /* Decrement the loop counter */ - k--; - } - - /* If the count is not a multiple of 4, compute any remaining MACs here. - ** No loop unrolling is used. */ - k = count % 0x4U; - - while (k > 0U) - { - /* Perform the multiply-accumulates */ - /* x[0] * y[srcBLen - 1] */ - sum += (q31_t) ((q15_t) * px++ * *py++); - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut = (q7_t) (__SSAT(sum >> 7, 8)); - /* Destination pointer is updated according to the address modifier, inc */ - pOut += inc; - - /* Update the inputA and inputB pointers for next MAC calculation */ - py = pSrc1 - count; - px = pIn1; - - /* Increment the MAC count */ - count++; - - /* Decrement the loop counter */ - blockSize1--; - } - - /* -------------------------- - * Initializations of stage2 - * ------------------------*/ - - /* sum = x[0] * y[0] + x[1] * y[1] +...+ x[srcBLen-1] * y[srcBLen-1] - * sum = x[1] * y[0] + x[2] * y[1] +...+ x[srcBLen] * y[srcBLen-1] - * .... - * sum = x[srcALen-srcBLen-2] * y[0] + x[srcALen-srcBLen-1] * y[1] +...+ x[srcALen-1] * y[srcBLen-1] - */ - - /* Working pointer of inputA */ - px = pIn1; - - /* Working pointer of inputB */ - py = pIn2; - - /* count is index by which the pointer pIn1 to be incremented */ - count = 0U; - - /* ------------------- - * Stage2 process - * ------------------*/ - - /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed. - * So, to loop unroll over blockSize2, - * srcBLen should be greater than or equal to 4 */ - if (srcBLen >= 4U) - { - /* Loop unroll over blockSize2, by 4 */ - blkCnt = blockSize2 >> 2U; - - while (blkCnt > 0U) - { - /* Set all accumulators to zero */ - acc0 = 0; - acc1 = 0; - acc2 = 0; - acc3 = 0; - - /* read x[0], x[1], x[2] samples */ - x0 = *px++; - x1 = *px++; - x2 = *px++; - - /* Apply loop unrolling and compute 4 MACs simultaneously. */ - k = srcBLen >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 MACs at a time. - ** a second loop below computes MACs for the remaining 1 to 3 samples. */ - do - { - /* Read y[0] sample */ - c0 = *py++; - /* Read y[1] sample */ - c1 = *py++; - - /* Read x[3] sample */ - x3 = *px++; - - /* x[0] and x[1] are packed */ - in1 = (q15_t) x0; - in2 = (q15_t) x1; - - input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); - - /* y[0] and y[1] are packed */ - in1 = (q15_t) c0; - in2 = (q15_t) c1; - - input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); - - /* acc0 += x[0] * y[0] + x[1] * y[1] */ - acc0 = __SMLAD(input1, input2, acc0); - - /* x[1] and x[2] are packed */ - in1 = (q15_t) x1; - in2 = (q15_t) x2; - - input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); - - /* acc1 += x[1] * y[0] + x[2] * y[1] */ - acc1 = __SMLAD(input1, input2, acc1); - - /* x[2] and x[3] are packed */ - in1 = (q15_t) x2; - in2 = (q15_t) x3; - - input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); - - /* acc2 += x[2] * y[0] + x[3] * y[1] */ - acc2 = __SMLAD(input1, input2, acc2); - - /* Read x[4] sample */ - x0 = *(px++); - - /* x[3] and x[4] are packed */ - in1 = (q15_t) x3; - in2 = (q15_t) x0; - - input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); - - /* acc3 += x[3] * y[0] + x[4] * y[1] */ - acc3 = __SMLAD(input1, input2, acc3); - - /* Read y[2] sample */ - c0 = *py++; - /* Read y[3] sample */ - c1 = *py++; - - /* Read x[5] sample */ - x1 = *px++; - - /* x[2] and x[3] are packed */ - in1 = (q15_t) x2; - in2 = (q15_t) x3; - - input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); - - /* y[2] and y[3] are packed */ - in1 = (q15_t) c0; - in2 = (q15_t) c1; - - input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); - - /* acc0 += x[2] * y[2] + x[3] * y[3] */ - acc0 = __SMLAD(input1, input2, acc0); - - /* x[3] and x[4] are packed */ - in1 = (q15_t) x3; - in2 = (q15_t) x0; - - input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); - - /* acc1 += x[3] * y[2] + x[4] * y[3] */ - acc1 = __SMLAD(input1, input2, acc1); - - /* x[4] and x[5] are packed */ - in1 = (q15_t) x0; - in2 = (q15_t) x1; - - input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); - - /* acc2 += x[4] * y[2] + x[5] * y[3] */ - acc2 = __SMLAD(input1, input2, acc2); - - /* Read x[6] sample */ - x2 = *px++; - - /* x[5] and x[6] are packed */ - in1 = (q15_t) x1; - in2 = (q15_t) x2; - - input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); - - /* acc3 += x[5] * y[2] + x[6] * y[3] */ - acc3 = __SMLAD(input1, input2, acc3); - - } while (--k); - - /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. - ** No loop unrolling is used. */ - k = srcBLen % 0x4U; - - while (k > 0U) - { - /* Read y[4] sample */ - c0 = *py++; - - /* Read x[7] sample */ - x3 = *px++; - - /* Perform the multiply-accumulates */ - /* acc0 += x[4] * y[4] */ - acc0 += ((q15_t) x0 * c0); - /* acc1 += x[5] * y[4] */ - acc1 += ((q15_t) x1 * c0); - /* acc2 += x[6] * y[4] */ - acc2 += ((q15_t) x2 * c0); - /* acc3 += x[7] * y[4] */ - acc3 += ((q15_t) x3 * c0); - - /* Reuse the present samples for the next MAC */ - x0 = x1; - x1 = x2; - x2 = x3; - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut = (q7_t) (__SSAT(acc0 >> 7, 8)); - /* Destination pointer is updated according to the address modifier, inc */ - pOut += inc; - - *pOut = (q7_t) (__SSAT(acc1 >> 7, 8)); - pOut += inc; - - *pOut = (q7_t) (__SSAT(acc2 >> 7, 8)); - pOut += inc; - - *pOut = (q7_t) (__SSAT(acc3 >> 7, 8)); - pOut += inc; - - count += 4U; - /* Update the inputA and inputB pointers for next MAC calculation */ - px = pIn1 + count; - py = pIn2; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize2 is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize2 % 0x4U; - - while (blkCnt > 0U) - { - /* Accumulator is made zero for every iteration */ - sum = 0; - - /* Apply loop unrolling and compute 4 MACs simultaneously. */ - k = srcBLen >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 MACs at a time. - ** a second loop below computes MACs for the remaining 1 to 3 samples. */ - while (k > 0U) - { - /* Reading two inputs of SrcA buffer and packing */ - in1 = (q15_t) * px++; - in2 = (q15_t) * px++; - input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); - - /* Reading two inputs of SrcB buffer and packing */ - in1 = (q15_t) * py++; - in2 = (q15_t) * py++; - input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); - - /* Perform the multiply-accumulates */ - sum = __SMLAD(input1, input2, sum); - - /* Reading two inputs of SrcA buffer and packing */ - in1 = (q15_t) * px++; - in2 = (q15_t) * px++; - input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); - - /* Reading two inputs of SrcB buffer and packing */ - in1 = (q15_t) * py++; - in2 = (q15_t) * py++; - input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); - - /* Perform the multiply-accumulates */ - sum = __SMLAD(input1, input2, sum); - - /* Decrement the loop counter */ - k--; - } - - /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. - ** No loop unrolling is used. */ - k = srcBLen % 0x4U; - - while (k > 0U) - { - /* Perform the multiply-accumulates */ - sum += ((q15_t) * px++ * *py++); - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut = (q7_t) (__SSAT(sum >> 7, 8)); - /* Destination pointer is updated according to the address modifier, inc */ - pOut += inc; - - /* Increment the pointer pIn1 index, count by 1 */ - count++; - - /* Update the inputA and inputB pointers for next MAC calculation */ - px = pIn1 + count; - py = pIn2; - - /* Decrement the loop counter */ - blkCnt--; - } - } - else - { - /* If the srcBLen is not a multiple of 4, - * the blockSize2 loop cannot be unrolled by 4 */ - blkCnt = blockSize2; - - while (blkCnt > 0U) - { - /* Accumulator is made zero for every iteration */ - sum = 0; - - /* Loop over srcBLen */ - k = srcBLen; - - while (k > 0U) - { - /* Perform the multiply-accumulate */ - sum += ((q15_t) * px++ * *py++); - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut = (q7_t) (__SSAT(sum >> 7, 8)); - /* Destination pointer is updated according to the address modifier, inc */ - pOut += inc; - - /* Increment the MAC count */ - count++; - - /* Update the inputA and inputB pointers for next MAC calculation */ - px = pIn1 + count; - py = pIn2; - - - /* Decrement the loop counter */ - blkCnt--; - } - } - - /* -------------------------- - * Initializations of stage3 - * -------------------------*/ - - /* sum += x[srcALen-srcBLen+1] * y[0] + x[srcALen-srcBLen+2] * y[1] +...+ x[srcALen-1] * y[srcBLen-1] - * sum += x[srcALen-srcBLen+2] * y[0] + x[srcALen-srcBLen+3] * y[1] +...+ x[srcALen-1] * y[srcBLen-1] - * .... - * sum += x[srcALen-2] * y[0] + x[srcALen-1] * y[1] - * sum += x[srcALen-1] * y[0] - */ - - /* In this stage the MAC operations are decreased by 1 for every iteration. - The count variable holds the number of MAC operations performed */ - count = srcBLen - 1U; - - /* Working pointer of inputA */ - pSrc1 = pIn1 + (srcALen - (srcBLen - 1U)); - px = pSrc1; - - /* Working pointer of inputB */ - py = pIn2; - - /* ------------------- - * Stage3 process - * ------------------*/ - - while (blockSize3 > 0U) - { - /* Accumulator is made zero for every iteration */ - sum = 0; - - /* Apply loop unrolling and compute 4 MACs simultaneously. */ - k = count >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 MACs at a time. - ** a second loop below computes MACs for the remaining 1 to 3 samples. */ - while (k > 0U) - { - /* x[srcALen - srcBLen + 1] , x[srcALen - srcBLen + 2] */ - in1 = (q15_t) * px++; - in2 = (q15_t) * px++; - input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); - - /* y[0] , y[1] */ - in1 = (q15_t) * py++; - in2 = (q15_t) * py++; - input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); - - /* sum += x[srcALen - srcBLen + 1] * y[0] */ - /* sum += x[srcALen - srcBLen + 2] * y[1] */ - sum = __SMLAD(input1, input2, sum); - - /* x[srcALen - srcBLen + 3] , x[srcALen - srcBLen + 4] */ - in1 = (q15_t) * px++; - in2 = (q15_t) * px++; - input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); - - /* y[2] , y[3] */ - in1 = (q15_t) * py++; - in2 = (q15_t) * py++; - input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); - - /* sum += x[srcALen - srcBLen + 3] * y[2] */ - /* sum += x[srcALen - srcBLen + 4] * y[3] */ - sum = __SMLAD(input1, input2, sum); - - /* Decrement the loop counter */ - k--; - } - - /* If the count is not a multiple of 4, compute any remaining MACs here. - ** No loop unrolling is used. */ - k = count % 0x4U; - - while (k > 0U) - { - /* Perform the multiply-accumulates */ - sum += ((q15_t) * px++ * *py++); - - /* Decrement the loop counter */ - k--; - } - - /* Store the result in the accumulator in the destination buffer. */ - *pOut = (q7_t) (__SSAT(sum >> 7, 8)); - /* Destination pointer is updated according to the address modifier, inc */ - pOut += inc; - - /* Update the inputA and inputB pointers for next MAC calculation */ - px = ++pSrc1; - py = pIn2; - - /* Decrement the MAC count */ - count--; - - /* Decrement the loop counter */ - blockSize3--; - } - -#else - -/* Run the below code for Cortex-M0 */ - - q7_t *pIn1 = pSrcA; /* inputA pointer */ - q7_t *pIn2 = pSrcB + (srcBLen - 1U); /* inputB pointer */ - q31_t sum; /* Accumulator */ - uint32_t i = 0U, j; /* loop counters */ - uint32_t inv = 0U; /* Reverse order flag */ - uint32_t tot = 0U; /* Length */ - - /* The algorithm implementation is based on the lengths of the inputs. */ - /* srcB is always made to slide across srcA. */ - /* So srcBLen is always considered as shorter or equal to srcALen */ - /* But CORR(x, y) is reverse of CORR(y, x) */ - /* So, when srcBLen > srcALen, output pointer is made to point to the end of the output buffer */ - /* and a varaible, inv is set to 1 */ - /* If lengths are not equal then zero pad has to be done to make the two - * inputs of same length. But to improve the performance, we include zeroes - * in the output instead of zero padding either of the the inputs*/ - /* If srcALen > srcBLen, (srcALen - srcBLen) zeroes has to included in the - * starting of the output buffer */ - /* If srcALen < srcBLen, (srcALen - srcBLen) zeroes has to included in the - * ending of the output buffer */ - /* Once the zero padding is done the remaining of the output is calcualted - * using convolution but with the shorter signal time shifted. */ - - /* Calculate the length of the remaining sequence */ - tot = ((srcALen + srcBLen) - 2U); - - if (srcALen > srcBLen) - { - /* Calculating the number of zeros to be padded to the output */ - j = srcALen - srcBLen; - - /* Initialise the pointer after zero padding */ - pDst += j; - } - - else if (srcALen < srcBLen) - { - /* Initialization to inputB pointer */ - pIn1 = pSrcB; - - /* Initialization to the end of inputA pointer */ - pIn2 = pSrcA + (srcALen - 1U); - - /* Initialisation of the pointer after zero padding */ - pDst = pDst + tot; - - /* Swapping the lengths */ - j = srcALen; - srcALen = srcBLen; - srcBLen = j; - - /* Setting the reverse flag */ - inv = 1; - - } - - /* Loop to calculate convolution for output length number of times */ - for (i = 0U; i <= tot; i++) - { - /* Initialize sum with zero to carry on MAC operations */ - sum = 0; - - /* Loop to perform MAC operations according to convolution equation */ - for (j = 0U; j <= i; j++) - { - /* Check the array limitations */ - if ((((i - j) < srcBLen) && (j < srcALen))) - { - /* z[i] += x[i-j] * y[j] */ - sum += ((q15_t) pIn1[j] * pIn2[-((int32_t) i - j)]); - } - } - /* Store the output in the destination buffer */ - if (inv == 1) - *pDst-- = (q7_t) __SSAT((sum >> 7U), 8U); - else - *pDst++ = (q7_t) __SSAT((sum >> 7U), 8U); - } - -#endif /* #if defined (ARM_MATH_DSP) */ - -} - -/** - * @} end of Corr group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_f32.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_f32.c deleted file mode 100644 index 160dc2a..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_f32.c +++ /dev/null @@ -1,512 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_fir_decimate_f32.c - * Description: FIR decimation for floating-point sequences - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupFilters - */ - -/** - * @defgroup FIR_decimate Finite Impulse Response (FIR) Decimator - * - * These functions combine an FIR filter together with a decimator. - * They are used in multirate systems for reducing the sample rate of a signal without introducing aliasing distortion. - * Conceptually, the functions are equivalent to the block diagram below: - * \image html FIRDecimator.gif "Components included in the FIR Decimator functions" - * When decimating by a factor of M, the signal should be prefiltered by a lowpass filter with a normalized - * cutoff frequency of 1/M in order to prevent aliasing distortion. - * The user of the function is responsible for providing the filter coefficients. - * - * The FIR decimator functions provided in the CMSIS DSP Library combine the FIR filter and the decimator in an efficient manner. - * Instead of calculating all of the FIR filter outputs and discarding M-1 out of every M, only the - * samples output by the decimator are computed. - * The functions operate on blocks of input and output data. - * pSrc points to an array of blockSize input values and - * pDst points to an array of blockSize/M output values. - * In order to have an integer number of output samples blockSize - * must always be a multiple of the decimation factor M. - * - * The library provides separate functions for Q15, Q31 and floating-point data types. - * - * \par Algorithm: - * The FIR portion of the algorithm uses the standard form filter: - *
- *    y[n] = b[0] * x[n] + b[1] * x[n-1] + b[2] * x[n-2] + ...+ b[numTaps-1] * x[n-numTaps+1]
- * 
- * where, b[n] are the filter coefficients. - * \par - * The pCoeffs points to a coefficient array of size numTaps. - * Coefficients are stored in time reversed order. - * \par - *
- *    {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}
- * 
- * \par - * pState points to a state array of size numTaps + blockSize - 1. - * Samples in the state buffer are stored in the order: - * \par - *
- *    {x[n-numTaps+1], x[n-numTaps], x[n-numTaps-1], x[n-numTaps-2]....x[0], x[1], ..., x[blockSize-1]}
- * 
- * The state variables are updated after each block of data is processed, the coefficients are untouched. - * - * \par Instance Structure - * The coefficients and state variables for a filter are stored together in an instance data structure. - * A separate instance structure must be defined for each filter. - * Coefficient arrays may be shared among several instances while state variable array should be allocated separately. - * There are separate instance structure declarations for each of the 3 supported data types. - * - * \par Initialization Functions - * There is also an associated initialization function for each data type. - * The initialization function performs the following operations: - * - Sets the values of the internal structure fields. - * - Zeros out the values in the state buffer. - * - Checks to make sure that the size of the input is a multiple of the decimation factor. - * To do this manually without calling the init function, assign the follow subfields of the instance structure: - * numTaps, pCoeffs, M (decimation factor), pState. Also set all of the values in pState to zero. - * - * \par - * Use of the initialization function is optional. - * However, if the initialization function is used, then the instance structure cannot be placed into a const data section. - * To place an instance structure into a const data section, the instance structure must be manually initialized. - * The code below statically initializes each of the 3 different data type filter instance structures - *
- *arm_fir_decimate_instance_f32 S = {M, numTaps, pCoeffs, pState};
- *arm_fir_decimate_instance_q31 S = {M, numTaps, pCoeffs, pState};
- *arm_fir_decimate_instance_q15 S = {M, numTaps, pCoeffs, pState};
- * 
- * where M is the decimation factor; numTaps is the number of filter coefficients in the filter; - * pCoeffs is the address of the coefficient buffer; - * pState is the address of the state buffer. - * Be sure to set the values in the state buffer to zeros when doing static initialization. - * - * \par Fixed-Point Behavior - * Care must be taken when using the fixed-point versions of the FIR decimate filter functions. - * In particular, the overflow and saturation behavior of the accumulator used in each function must be considered. - * Refer to the function specific documentation below for usage guidelines. - */ - -/** - * @addtogroup FIR_decimate - * @{ - */ - - /** - * @brief Processing function for the floating-point FIR decimator. - * @param[in] *S points to an instance of the floating-point FIR decimator structure. - * @param[in] *pSrc points to the block of input data. - * @param[out] *pDst points to the block of output data. - * @param[in] blockSize number of input samples to process per call. - * @return none. - */ - -void arm_fir_decimate_f32( - const arm_fir_decimate_instance_f32 * S, - float32_t * pSrc, - float32_t * pDst, - uint32_t blockSize) -{ - float32_t *pState = S->pState; /* State pointer */ - float32_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ - float32_t *pStateCurnt; /* Points to the current sample of the state */ - float32_t *px, *pb; /* Temporary pointers for state and coefficient buffers */ - float32_t sum0; /* Accumulator */ - float32_t x0, c0; /* Temporary variables to hold state and coefficient values */ - uint32_t numTaps = S->numTaps; /* Number of filter coefficients in the filter */ - uint32_t i, tapCnt, blkCnt, outBlockSize = blockSize / S->M; /* Loop counters */ - -#if defined (ARM_MATH_DSP) - - uint32_t blkCntN4; - float32_t *px0, *px1, *px2, *px3; - float32_t acc0, acc1, acc2, acc3; - float32_t x1, x2, x3; - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - /* S->pState buffer contains previous frame (numTaps - 1) samples */ - /* pStateCurnt points to the location where the new input data should be written */ - pStateCurnt = S->pState + (numTaps - 1U); - - /* Total number of output samples to be computed */ - blkCnt = outBlockSize / 4; - blkCntN4 = outBlockSize - (4 * blkCnt); - - while (blkCnt > 0U) - { - /* Copy 4 * decimation factor number of new input samples into the state buffer */ - i = 4 * S->M; - - do - { - *pStateCurnt++ = *pSrc++; - - } while (--i); - - /* Set accumulators to zero */ - acc0 = 0.0f; - acc1 = 0.0f; - acc2 = 0.0f; - acc3 = 0.0f; - - /* Initialize state pointer for all the samples */ - px0 = pState; - px1 = pState + S->M; - px2 = pState + 2 * S->M; - px3 = pState + 3 * S->M; - - /* Initialize coeff pointer */ - pb = pCoeffs; - - /* Loop unrolling. Process 4 taps at a time. */ - tapCnt = numTaps >> 2; - - /* Loop over the number of taps. Unroll by a factor of 4. - ** Repeat until we've computed numTaps-4 coefficients. */ - - while (tapCnt > 0U) - { - /* Read the b[numTaps-1] coefficient */ - c0 = *(pb++); - - /* Read x[n-numTaps-1] sample for acc0 */ - x0 = *(px0++); - /* Read x[n-numTaps-1] sample for acc1 */ - x1 = *(px1++); - /* Read x[n-numTaps-1] sample for acc2 */ - x2 = *(px2++); - /* Read x[n-numTaps-1] sample for acc3 */ - x3 = *(px3++); - - /* Perform the multiply-accumulate */ - acc0 += x0 * c0; - acc1 += x1 * c0; - acc2 += x2 * c0; - acc3 += x3 * c0; - - /* Read the b[numTaps-2] coefficient */ - c0 = *(pb++); - - /* Read x[n-numTaps-2] sample for acc0, acc1, acc2, acc3 */ - x0 = *(px0++); - x1 = *(px1++); - x2 = *(px2++); - x3 = *(px3++); - - /* Perform the multiply-accumulate */ - acc0 += x0 * c0; - acc1 += x1 * c0; - acc2 += x2 * c0; - acc3 += x3 * c0; - - /* Read the b[numTaps-3] coefficient */ - c0 = *(pb++); - - /* Read x[n-numTaps-3] sample acc0, acc1, acc2, acc3 */ - x0 = *(px0++); - x1 = *(px1++); - x2 = *(px2++); - x3 = *(px3++); - - /* Perform the multiply-accumulate */ - acc0 += x0 * c0; - acc1 += x1 * c0; - acc2 += x2 * c0; - acc3 += x3 * c0; - - /* Read the b[numTaps-4] coefficient */ - c0 = *(pb++); - - /* Read x[n-numTaps-4] sample acc0, acc1, acc2, acc3 */ - x0 = *(px0++); - x1 = *(px1++); - x2 = *(px2++); - x3 = *(px3++); - - /* Perform the multiply-accumulate */ - acc0 += x0 * c0; - acc1 += x1 * c0; - acc2 += x2 * c0; - acc3 += x3 * c0; - - /* Decrement the loop counter */ - tapCnt--; - } - - /* If the filter length is not a multiple of 4, compute the remaining filter taps */ - tapCnt = numTaps % 0x4U; - - while (tapCnt > 0U) - { - /* Read coefficients */ - c0 = *(pb++); - - /* Fetch state variables for acc0, acc1, acc2, acc3 */ - x0 = *(px0++); - x1 = *(px1++); - x2 = *(px2++); - x3 = *(px3++); - - /* Perform the multiply-accumulate */ - acc0 += x0 * c0; - acc1 += x1 * c0; - acc2 += x2 * c0; - acc3 += x3 * c0; - - /* Decrement the loop counter */ - tapCnt--; - } - - /* Advance the state pointer by the decimation factor - * to process the next group of decimation factor number samples */ - pState = pState + 4 * S->M; - - /* The result is in the accumulator, store in the destination buffer. */ - *pDst++ = acc0; - *pDst++ = acc1; - *pDst++ = acc2; - *pDst++ = acc3; - - /* Decrement the loop counter */ - blkCnt--; - } - - while (blkCntN4 > 0U) - { - /* Copy decimation factor number of new input samples into the state buffer */ - i = S->M; - - do - { - *pStateCurnt++ = *pSrc++; - - } while (--i); - - /* Set accumulator to zero */ - sum0 = 0.0f; - - /* Initialize state pointer */ - px = pState; - - /* Initialize coeff pointer */ - pb = pCoeffs; - - /* Loop unrolling. Process 4 taps at a time. */ - tapCnt = numTaps >> 2; - - /* Loop over the number of taps. Unroll by a factor of 4. - ** Repeat until we've computed numTaps-4 coefficients. */ - while (tapCnt > 0U) - { - /* Read the b[numTaps-1] coefficient */ - c0 = *(pb++); - - /* Read x[n-numTaps-1] sample */ - x0 = *(px++); - - /* Perform the multiply-accumulate */ - sum0 += x0 * c0; - - /* Read the b[numTaps-2] coefficient */ - c0 = *(pb++); - - /* Read x[n-numTaps-2] sample */ - x0 = *(px++); - - /* Perform the multiply-accumulate */ - sum0 += x0 * c0; - - /* Read the b[numTaps-3] coefficient */ - c0 = *(pb++); - - /* Read x[n-numTaps-3] sample */ - x0 = *(px++); - - /* Perform the multiply-accumulate */ - sum0 += x0 * c0; - - /* Read the b[numTaps-4] coefficient */ - c0 = *(pb++); - - /* Read x[n-numTaps-4] sample */ - x0 = *(px++); - - /* Perform the multiply-accumulate */ - sum0 += x0 * c0; - - /* Decrement the loop counter */ - tapCnt--; - } - - /* If the filter length is not a multiple of 4, compute the remaining filter taps */ - tapCnt = numTaps % 0x4U; - - while (tapCnt > 0U) - { - /* Read coefficients */ - c0 = *(pb++); - - /* Fetch 1 state variable */ - x0 = *(px++); - - /* Perform the multiply-accumulate */ - sum0 += x0 * c0; - - /* Decrement the loop counter */ - tapCnt--; - } - - /* Advance the state pointer by the decimation factor - * to process the next group of decimation factor number samples */ - pState = pState + S->M; - - /* The result is in the accumulator, store in the destination buffer. */ - *pDst++ = sum0; - - /* Decrement the loop counter */ - blkCntN4--; - } - - /* Processing is complete. - ** Now copy the last numTaps - 1 samples to the satrt of the state buffer. - ** This prepares the state buffer for the next function call. */ - - /* Points to the start of the state buffer */ - pStateCurnt = S->pState; - - i = (numTaps - 1U) >> 2; - - /* copy data */ - while (i > 0U) - { - *pStateCurnt++ = *pState++; - *pStateCurnt++ = *pState++; - *pStateCurnt++ = *pState++; - *pStateCurnt++ = *pState++; - - /* Decrement the loop counter */ - i--; - } - - i = (numTaps - 1U) % 0x04U; - - /* copy data */ - while (i > 0U) - { - *pStateCurnt++ = *pState++; - - /* Decrement the loop counter */ - i--; - } - -#else - -/* Run the below code for Cortex-M0 */ - - /* S->pState buffer contains previous frame (numTaps - 1) samples */ - /* pStateCurnt points to the location where the new input data should be written */ - pStateCurnt = S->pState + (numTaps - 1U); - - /* Total number of output samples to be computed */ - blkCnt = outBlockSize; - - while (blkCnt > 0U) - { - /* Copy decimation factor number of new input samples into the state buffer */ - i = S->M; - - do - { - *pStateCurnt++ = *pSrc++; - - } while (--i); - - /* Set accumulator to zero */ - sum0 = 0.0f; - - /* Initialize state pointer */ - px = pState; - - /* Initialize coeff pointer */ - pb = pCoeffs; - - tapCnt = numTaps; - - while (tapCnt > 0U) - { - /* Read coefficients */ - c0 = *pb++; - - /* Fetch 1 state variable */ - x0 = *px++; - - /* Perform the multiply-accumulate */ - sum0 += x0 * c0; - - /* Decrement the loop counter */ - tapCnt--; - } - - /* Advance the state pointer by the decimation factor - * to process the next group of decimation factor number samples */ - pState = pState + S->M; - - /* The result is in the accumulator, store in the destination buffer. */ - *pDst++ = sum0; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* Processing is complete. - ** Now copy the last numTaps - 1 samples to the start of the state buffer. - ** This prepares the state buffer for the next function call. */ - - /* Points to the start of the state buffer */ - pStateCurnt = S->pState; - - /* Copy numTaps number of values */ - i = (numTaps - 1U); - - /* copy data */ - while (i > 0U) - { - *pStateCurnt++ = *pState++; - - /* Decrement the loop counter */ - i--; - } - -#endif /* #if defined (ARM_MATH_DSP) */ - -} - -/** - * @} end of FIR_decimate group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_fast_q15.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_fast_q15.c deleted file mode 100644 index 00b2790..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_fast_q15.c +++ /dev/null @@ -1,586 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_fir_decimate_fast_q15.c - * Description: Fast Q15 FIR Decimator - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupFilters - */ - -/** - * @addtogroup FIR_decimate - * @{ - */ - -/** - * @brief Processing function for the Q15 FIR decimator (fast variant) for Cortex-M3 and Cortex-M4. - * @param[in] *S points to an instance of the Q15 FIR decimator structure. - * @param[in] *pSrc points to the block of input data. - * @param[out] *pDst points to the block of output data - * @param[in] blockSize number of input samples to process per call. - * @return none - * - * \par Restrictions - * If the silicon does not support unaligned memory access enable the macro UNALIGNED_SUPPORT_DISABLE - * In this case input, output, state buffers should be aligned by 32-bit - * - * Scaling and Overflow Behavior: - * \par - * This fast version uses a 32-bit accumulator with 2.30 format. - * The accumulator maintains full precision of the intermediate multiplication results but provides only a single guard bit. - * Thus, if the accumulator result overflows it wraps around and distorts the result. - * In order to avoid overflows completely the input signal must be scaled down by log2(numTaps) bits (log2 is read as log to the base 2). - * The 2.30 accumulator is then truncated to 2.15 format and saturated to yield the 1.15 result. - * - * \par - * Refer to the function arm_fir_decimate_q15() for a slower implementation of this function which uses 64-bit accumulation to avoid wrap around distortion. - * Both the slow and the fast versions use the same instance structure. - * Use the function arm_fir_decimate_init_q15() to initialize the filter structure. - */ - -#ifndef UNALIGNED_SUPPORT_DISABLE - -void arm_fir_decimate_fast_q15( - const arm_fir_decimate_instance_q15 * S, - q15_t * pSrc, - q15_t * pDst, - uint32_t blockSize) -{ - q15_t *pState = S->pState; /* State pointer */ - q15_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ - q15_t *pStateCurnt; /* Points to the current sample of the state */ - q15_t *px; /* Temporary pointer for state buffer */ - q15_t *pb; /* Temporary pointer coefficient buffer */ - q31_t x0, x1, c0, c1; /* Temporary variables to hold state and coefficient values */ - q31_t sum0; /* Accumulators */ - q31_t acc0, acc1; - q15_t *px0, *px1; - uint32_t blkCntN3; - uint32_t numTaps = S->numTaps; /* Number of taps */ - uint32_t i, blkCnt, tapCnt, outBlockSize = blockSize / S->M; /* Loop counters */ - - - /* S->pState buffer contains previous frame (numTaps - 1) samples */ - /* pStateCurnt points to the location where the new input data should be written */ - pStateCurnt = S->pState + (numTaps - 1U); - - - /* Total number of output samples to be computed */ - blkCnt = outBlockSize / 2; - blkCntN3 = outBlockSize - (2 * blkCnt); - - - while (blkCnt > 0U) - { - /* Copy decimation factor number of new input samples into the state buffer */ - i = 2 * S->M; - - do - { - *pStateCurnt++ = *pSrc++; - - } while (--i); - - /* Set accumulator to zero */ - acc0 = 0; - acc1 = 0; - - /* Initialize state pointer */ - px0 = pState; - - px1 = pState + S->M; - - - /* Initialize coeff pointer */ - pb = pCoeffs; - - /* Loop unrolling. Process 4 taps at a time. */ - tapCnt = numTaps >> 2; - - /* Loop over the number of taps. Unroll by a factor of 4. - ** Repeat until we've computed numTaps-4 coefficients. */ - while (tapCnt > 0U) - { - /* Read the Read b[numTaps-1] and b[numTaps-2] coefficients */ - c0 = *__SIMD32(pb)++; - - /* Read x[n-numTaps-1] and x[n-numTaps-2]sample */ - x0 = *__SIMD32(px0)++; - - x1 = *__SIMD32(px1)++; - - /* Perform the multiply-accumulate */ - acc0 = __SMLAD(x0, c0, acc0); - - acc1 = __SMLAD(x1, c0, acc1); - - /* Read the b[numTaps-3] and b[numTaps-4] coefficient */ - c0 = *__SIMD32(pb)++; - - /* Read x[n-numTaps-2] and x[n-numTaps-3] sample */ - x0 = *__SIMD32(px0)++; - - x1 = *__SIMD32(px1)++; - - /* Perform the multiply-accumulate */ - acc0 = __SMLAD(x0, c0, acc0); - - acc1 = __SMLAD(x1, c0, acc1); - - /* Decrement the loop counter */ - tapCnt--; - } - - /* If the filter length is not a multiple of 4, compute the remaining filter taps */ - tapCnt = numTaps % 0x4U; - - while (tapCnt > 0U) - { - /* Read coefficients */ - c0 = *pb++; - - /* Fetch 1 state variable */ - x0 = *px0++; - - x1 = *px1++; - - /* Perform the multiply-accumulate */ - acc0 = __SMLAD(x0, c0, acc0); - acc1 = __SMLAD(x1, c0, acc1); - - /* Decrement the loop counter */ - tapCnt--; - } - - /* Advance the state pointer by the decimation factor - * to process the next group of decimation factor number samples */ - pState = pState + S->M * 2; - - /* Store filter output, smlad returns the values in 2.14 format */ - /* so downsacle by 15 to get output in 1.15 */ - *pDst++ = (q15_t) (__SSAT((acc0 >> 15), 16)); - *pDst++ = (q15_t) (__SSAT((acc1 >> 15), 16)); - - /* Decrement the loop counter */ - blkCnt--; - } - - - - while (blkCntN3 > 0U) - { - /* Copy decimation factor number of new input samples into the state buffer */ - i = S->M; - - do - { - *pStateCurnt++ = *pSrc++; - - } while (--i); - - /*Set sum to zero */ - sum0 = 0; - - /* Initialize state pointer */ - px = pState; - - /* Initialize coeff pointer */ - pb = pCoeffs; - - /* Loop unrolling. Process 4 taps at a time. */ - tapCnt = numTaps >> 2; - - /* Loop over the number of taps. Unroll by a factor of 4. - ** Repeat until we've computed numTaps-4 coefficients. */ - while (tapCnt > 0U) - { - /* Read the Read b[numTaps-1] and b[numTaps-2] coefficients */ - c0 = *__SIMD32(pb)++; - - /* Read x[n-numTaps-1] and x[n-numTaps-2]sample */ - x0 = *__SIMD32(px)++; - - /* Read the b[numTaps-3] and b[numTaps-4] coefficient */ - c1 = *__SIMD32(pb)++; - - /* Perform the multiply-accumulate */ - sum0 = __SMLAD(x0, c0, sum0); - - /* Read x[n-numTaps-2] and x[n-numTaps-3] sample */ - x0 = *__SIMD32(px)++; - - /* Perform the multiply-accumulate */ - sum0 = __SMLAD(x0, c1, sum0); - - /* Decrement the loop counter */ - tapCnt--; - } - - /* If the filter length is not a multiple of 4, compute the remaining filter taps */ - tapCnt = numTaps % 0x4U; - - while (tapCnt > 0U) - { - /* Read coefficients */ - c0 = *pb++; - - /* Fetch 1 state variable */ - x0 = *px++; - - /* Perform the multiply-accumulate */ - sum0 = __SMLAD(x0, c0, sum0); - - /* Decrement the loop counter */ - tapCnt--; - } - - /* Advance the state pointer by the decimation factor - * to process the next group of decimation factor number samples */ - pState = pState + S->M; - - /* Store filter output, smlad returns the values in 2.14 format */ - /* so downsacle by 15 to get output in 1.15 */ - *pDst++ = (q15_t) (__SSAT((sum0 >> 15), 16)); - - /* Decrement the loop counter */ - blkCntN3--; - } - - /* Processing is complete. - ** Now copy the last numTaps - 1 samples to the satrt of the state buffer. - ** This prepares the state buffer for the next function call. */ - - /* Points to the start of the state buffer */ - pStateCurnt = S->pState; - - i = (numTaps - 1U) >> 2U; - - /* copy data */ - while (i > 0U) - { - *__SIMD32(pStateCurnt)++ = *__SIMD32(pState)++; - *__SIMD32(pStateCurnt)++ = *__SIMD32(pState)++; - - /* Decrement the loop counter */ - i--; - } - - i = (numTaps - 1U) % 0x04U; - - /* copy data */ - while (i > 0U) - { - *pStateCurnt++ = *pState++; - - /* Decrement the loop counter */ - i--; - } -} - -#else - - -void arm_fir_decimate_fast_q15( - const arm_fir_decimate_instance_q15 * S, - q15_t * pSrc, - q15_t * pDst, - uint32_t blockSize) -{ - q15_t *pState = S->pState; /* State pointer */ - q15_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ - q15_t *pStateCurnt; /* Points to the current sample of the state */ - q15_t *px; /* Temporary pointer for state buffer */ - q15_t *pb; /* Temporary pointer coefficient buffer */ - q15_t x0, x1, c0; /* Temporary variables to hold state and coefficient values */ - q31_t sum0; /* Accumulators */ - q31_t acc0, acc1; - q15_t *px0, *px1; - uint32_t blkCntN3; - uint32_t numTaps = S->numTaps; /* Number of taps */ - uint32_t i, blkCnt, tapCnt, outBlockSize = blockSize / S->M; /* Loop counters */ - - - /* S->pState buffer contains previous frame (numTaps - 1) samples */ - /* pStateCurnt points to the location where the new input data should be written */ - pStateCurnt = S->pState + (numTaps - 1U); - - - /* Total number of output samples to be computed */ - blkCnt = outBlockSize / 2; - blkCntN3 = outBlockSize - (2 * blkCnt); - - while (blkCnt > 0U) - { - /* Copy decimation factor number of new input samples into the state buffer */ - i = 2 * S->M; - - do - { - *pStateCurnt++ = *pSrc++; - - } while (--i); - - /* Set accumulator to zero */ - acc0 = 0; - acc1 = 0; - - /* Initialize state pointer */ - px0 = pState; - - px1 = pState + S->M; - - - /* Initialize coeff pointer */ - pb = pCoeffs; - - /* Loop unrolling. Process 4 taps at a time. */ - tapCnt = numTaps >> 2; - - /* Loop over the number of taps. Unroll by a factor of 4. - ** Repeat until we've computed numTaps-4 coefficients. */ - while (tapCnt > 0U) - { - /* Read the Read b[numTaps-1] coefficients */ - c0 = *pb++; - - /* Read x[n-numTaps-1] for sample 0 and for sample 1 */ - x0 = *px0++; - x1 = *px1++; - - /* Perform the multiply-accumulate */ - acc0 += x0 * c0; - acc1 += x1 * c0; - - /* Read the b[numTaps-2] coefficient */ - c0 = *pb++; - - /* Read x[n-numTaps-2] for sample 0 and sample 1 */ - x0 = *px0++; - x1 = *px1++; - - /* Perform the multiply-accumulate */ - acc0 += x0 * c0; - acc1 += x1 * c0; - - /* Read the b[numTaps-3] coefficients */ - c0 = *pb++; - - /* Read x[n-numTaps-3] for sample 0 and sample 1 */ - x0 = *px0++; - x1 = *px1++; - - /* Perform the multiply-accumulate */ - acc0 += x0 * c0; - acc1 += x1 * c0; - - /* Read the b[numTaps-4] coefficient */ - c0 = *pb++; - - /* Read x[n-numTaps-4] for sample 0 and sample 1 */ - x0 = *px0++; - x1 = *px1++; - - /* Perform the multiply-accumulate */ - acc0 += x0 * c0; - acc1 += x1 * c0; - - /* Decrement the loop counter */ - tapCnt--; - } - - /* If the filter length is not a multiple of 4, compute the remaining filter taps */ - tapCnt = numTaps % 0x4U; - - while (tapCnt > 0U) - { - /* Read coefficients */ - c0 = *pb++; - - /* Fetch 1 state variable */ - x0 = *px0++; - x1 = *px1++; - - /* Perform the multiply-accumulate */ - acc0 += x0 * c0; - acc1 += x1 * c0; - - /* Decrement the loop counter */ - tapCnt--; - } - - /* Advance the state pointer by the decimation factor - * to process the next group of decimation factor number samples */ - pState = pState + S->M * 2; - - /* Store filter output, smlad returns the values in 2.14 format */ - /* so downsacle by 15 to get output in 1.15 */ - - *pDst++ = (q15_t) (__SSAT((acc0 >> 15), 16)); - *pDst++ = (q15_t) (__SSAT((acc1 >> 15), 16)); - - - /* Decrement the loop counter */ - blkCnt--; - } - - while (blkCntN3 > 0U) - { - /* Copy decimation factor number of new input samples into the state buffer */ - i = S->M; - - do - { - *pStateCurnt++ = *pSrc++; - - } while (--i); - - /*Set sum to zero */ - sum0 = 0; - - /* Initialize state pointer */ - px = pState; - - /* Initialize coeff pointer */ - pb = pCoeffs; - - /* Loop unrolling. Process 4 taps at a time. */ - tapCnt = numTaps >> 2; - - /* Loop over the number of taps. Unroll by a factor of 4. - ** Repeat until we've computed numTaps-4 coefficients. */ - while (tapCnt > 0U) - { - /* Read the Read b[numTaps-1] coefficients */ - c0 = *pb++; - - /* Read x[n-numTaps-1] and sample */ - x0 = *px++; - - /* Perform the multiply-accumulate */ - sum0 += x0 * c0; - - /* Read the b[numTaps-2] coefficient */ - c0 = *pb++; - - /* Read x[n-numTaps-2] and sample */ - x0 = *px++; - - /* Perform the multiply-accumulate */ - sum0 += x0 * c0; - - /* Read the b[numTaps-3] coefficients */ - c0 = *pb++; - - /* Read x[n-numTaps-3] sample */ - x0 = *px++; - - /* Perform the multiply-accumulate */ - sum0 += x0 * c0; - - /* Read the b[numTaps-4] coefficient */ - c0 = *pb++; - - /* Read x[n-numTaps-4] sample */ - x0 = *px++; - - /* Perform the multiply-accumulate */ - sum0 += x0 * c0; - - /* Decrement the loop counter */ - tapCnt--; - } - - /* If the filter length is not a multiple of 4, compute the remaining filter taps */ - tapCnt = numTaps % 0x4U; - - while (tapCnt > 0U) - { - /* Read coefficients */ - c0 = *pb++; - - /* Fetch 1 state variable */ - x0 = *px++; - - /* Perform the multiply-accumulate */ - sum0 += x0 * c0; - - /* Decrement the loop counter */ - tapCnt--; - } - - /* Advance the state pointer by the decimation factor - * to process the next group of decimation factor number samples */ - pState = pState + S->M; - - /* Store filter output, smlad returns the values in 2.14 format */ - /* so downsacle by 15 to get output in 1.15 */ - *pDst++ = (q15_t) (__SSAT((sum0 >> 15), 16)); - - /* Decrement the loop counter */ - blkCntN3--; - } - - /* Processing is complete. - ** Now copy the last numTaps - 1 samples to the satrt of the state buffer. - ** This prepares the state buffer for the next function call. */ - - /* Points to the start of the state buffer */ - pStateCurnt = S->pState; - - i = (numTaps - 1U) >> 2U; - - /* copy data */ - while (i > 0U) - { - *pStateCurnt++ = *pState++; - *pStateCurnt++ = *pState++; - *pStateCurnt++ = *pState++; - *pStateCurnt++ = *pState++; - - /* Decrement the loop counter */ - i--; - } - - i = (numTaps - 1U) % 0x04U; - - /* copy data */ - while (i > 0U) - { - *pStateCurnt++ = *pState++; - - /* Decrement the loop counter */ - i--; - } -} - - -#endif /* #ifndef UNALIGNED_SUPPORT_DISABLE */ - -/** - * @} end of FIR_decimate group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_fast_q31.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_fast_q31.c deleted file mode 100644 index 3b3d817..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_fast_q31.c +++ /dev/null @@ -1,339 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_fir_decimate_fast_q31.c - * Description: Fast Q31 FIR Decimator - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupFilters - */ - -/** - * @addtogroup FIR_decimate - * @{ - */ - -/** - * @brief Processing function for the Q31 FIR decimator (fast variant) for Cortex-M3 and Cortex-M4. - * @param[in] *S points to an instance of the Q31 FIR decimator structure. - * @param[in] *pSrc points to the block of input data. - * @param[out] *pDst points to the block of output data - * @param[in] blockSize number of input samples to process per call. - * @return none - * - * Scaling and Overflow Behavior: - * - * \par - * This function is optimized for speed at the expense of fixed-point precision and overflow protection. - * The result of each 1.31 x 1.31 multiplication is truncated to 2.30 format. - * These intermediate results are added to a 2.30 accumulator. - * Finally, the accumulator is saturated and converted to a 1.31 result. - * The fast version has the same overflow behavior as the standard version and provides less precision since it discards the low 32 bits of each multiplication result. - * In order to avoid overflows completely the input signal must be scaled down by log2(numTaps) bits (where log2 is read as log to the base 2). - * - * \par - * Refer to the function arm_fir_decimate_q31() for a slower implementation of this function which uses a 64-bit accumulator to provide higher precision. - * Both the slow and the fast versions use the same instance structure. - * Use the function arm_fir_decimate_init_q31() to initialize the filter structure. - */ - -void arm_fir_decimate_fast_q31( - arm_fir_decimate_instance_q31 * S, - q31_t * pSrc, - q31_t * pDst, - uint32_t blockSize) -{ - q31_t *pState = S->pState; /* State pointer */ - q31_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ - q31_t *pStateCurnt; /* Points to the current sample of the state */ - q31_t x0, c0; /* Temporary variables to hold state and coefficient values */ - q31_t *px; /* Temporary pointers for state buffer */ - q31_t *pb; /* Temporary pointers for coefficient buffer */ - q31_t sum0; /* Accumulator */ - uint32_t numTaps = S->numTaps; /* Number of taps */ - uint32_t i, tapCnt, blkCnt, outBlockSize = blockSize / S->M; /* Loop counters */ - uint32_t blkCntN2; - q31_t x1; - q31_t acc0, acc1; - q31_t *px0, *px1; - - /* S->pState buffer contains previous frame (numTaps - 1) samples */ - /* pStateCurnt points to the location where the new input data should be written */ - pStateCurnt = S->pState + (numTaps - 1U); - - /* Total number of output samples to be computed */ - - blkCnt = outBlockSize / 2; - blkCntN2 = outBlockSize - (2 * blkCnt); - - while (blkCnt > 0U) - { - /* Copy decimation factor number of new input samples into the state buffer */ - i = 2 * S->M; - - do - { - *pStateCurnt++ = *pSrc++; - - } while (--i); - - /* Set accumulator to zero */ - acc0 = 0; - acc1 = 0; - - /* Initialize state pointer */ - px0 = pState; - px1 = pState + S->M; - - /* Initialize coeff pointer */ - pb = pCoeffs; - - /* Loop unrolling. Process 4 taps at a time. */ - tapCnt = numTaps >> 2; - - /* Loop over the number of taps. Unroll by a factor of 4. - ** Repeat until we've computed numTaps-4 coefficients. */ - while (tapCnt > 0U) - { - /* Read the b[numTaps-1] coefficient */ - c0 = *(pb); - - /* Read x[n-numTaps-1] for sample 0 sample 1 */ - x0 = *(px0); - x1 = *(px1); - - /* Perform the multiply-accumulate */ - acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x0 * c0)) >> 32); - acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x1 * c0)) >> 32); - - /* Read the b[numTaps-2] coefficient */ - c0 = *(pb + 1U); - - /* Read x[n-numTaps-2] for sample 0 sample 1 */ - x0 = *(px0 + 1U); - x1 = *(px1 + 1U); - - /* Perform the multiply-accumulate */ - acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x0 * c0)) >> 32); - acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x1 * c0)) >> 32); - - /* Read the b[numTaps-3] coefficient */ - c0 = *(pb + 2U); - - /* Read x[n-numTaps-3] for sample 0 sample 1 */ - x0 = *(px0 + 2U); - x1 = *(px1 + 2U); - pb += 4U; - - /* Perform the multiply-accumulate */ - acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x0 * c0)) >> 32); - acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x1 * c0)) >> 32); - - /* Read the b[numTaps-4] coefficient */ - c0 = *(pb - 1U); - - /* Read x[n-numTaps-4] for sample 0 sample 1 */ - x0 = *(px0 + 3U); - x1 = *(px1 + 3U); - - - /* Perform the multiply-accumulate */ - acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x0 * c0)) >> 32); - acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x1 * c0)) >> 32); - - /* update state pointers */ - px0 += 4U; - px1 += 4U; - - /* Decrement the loop counter */ - tapCnt--; - } - - /* If the filter length is not a multiple of 4, compute the remaining filter taps */ - tapCnt = numTaps % 0x4U; - - while (tapCnt > 0U) - { - /* Read coefficients */ - c0 = *(pb++); - - /* Fetch 1 state variable */ - x0 = *(px0++); - x1 = *(px1++); - - /* Perform the multiply-accumulate */ - acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x0 * c0)) >> 32); - acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x1 * c0)) >> 32); - - /* Decrement the loop counter */ - tapCnt--; - } - - /* Advance the state pointer by the decimation factor - * to process the next group of decimation factor number samples */ - pState = pState + S->M * 2; - - /* The result is in the accumulator, store in the destination buffer. */ - *pDst++ = (q31_t) (acc0 << 1); - *pDst++ = (q31_t) (acc1 << 1); - - /* Decrement the loop counter */ - blkCnt--; - } - - while (blkCntN2 > 0U) - { - /* Copy decimation factor number of new input samples into the state buffer */ - i = S->M; - - do - { - *pStateCurnt++ = *pSrc++; - - } while (--i); - - /* Set accumulator to zero */ - sum0 = 0; - - /* Initialize state pointer */ - px = pState; - - /* Initialize coeff pointer */ - pb = pCoeffs; - - /* Loop unrolling. Process 4 taps at a time. */ - tapCnt = numTaps >> 2; - - /* Loop over the number of taps. Unroll by a factor of 4. - ** Repeat until we've computed numTaps-4 coefficients. */ - while (tapCnt > 0U) - { - /* Read the b[numTaps-1] coefficient */ - c0 = *(pb++); - - /* Read x[n-numTaps-1] sample */ - x0 = *(px++); - - /* Perform the multiply-accumulate */ - sum0 = (q31_t) ((((q63_t) sum0 << 32) + ((q63_t) x0 * c0)) >> 32); - - /* Read the b[numTaps-2] coefficient */ - c0 = *(pb++); - - /* Read x[n-numTaps-2] sample */ - x0 = *(px++); - - /* Perform the multiply-accumulate */ - sum0 = (q31_t) ((((q63_t) sum0 << 32) + ((q63_t) x0 * c0)) >> 32); - - /* Read the b[numTaps-3] coefficient */ - c0 = *(pb++); - - /* Read x[n-numTaps-3] sample */ - x0 = *(px++); - - /* Perform the multiply-accumulate */ - sum0 = (q31_t) ((((q63_t) sum0 << 32) + ((q63_t) x0 * c0)) >> 32); - - /* Read the b[numTaps-4] coefficient */ - c0 = *(pb++); - - /* Read x[n-numTaps-4] sample */ - x0 = *(px++); - - /* Perform the multiply-accumulate */ - sum0 = (q31_t) ((((q63_t) sum0 << 32) + ((q63_t) x0 * c0)) >> 32); - - /* Decrement the loop counter */ - tapCnt--; - } - - /* If the filter length is not a multiple of 4, compute the remaining filter taps */ - tapCnt = numTaps % 0x4U; - - while (tapCnt > 0U) - { - /* Read coefficients */ - c0 = *(pb++); - - /* Fetch 1 state variable */ - x0 = *(px++); - - /* Perform the multiply-accumulate */ - sum0 = (q31_t) ((((q63_t) sum0 << 32) + ((q63_t) x0 * c0)) >> 32); - - /* Decrement the loop counter */ - tapCnt--; - } - - /* Advance the state pointer by the decimation factor - * to process the next group of decimation factor number samples */ - pState = pState + S->M; - - /* The result is in the accumulator, store in the destination buffer. */ - *pDst++ = (q31_t) (sum0 << 1); - - /* Decrement the loop counter */ - blkCntN2--; - } - - /* Processing is complete. - ** Now copy the last numTaps - 1 samples to the satrt of the state buffer. - ** This prepares the state buffer for the next function call. */ - - /* Points to the start of the state buffer */ - pStateCurnt = S->pState; - - i = (numTaps - 1U) >> 2U; - - /* copy data */ - while (i > 0U) - { - *pStateCurnt++ = *pState++; - *pStateCurnt++ = *pState++; - *pStateCurnt++ = *pState++; - *pStateCurnt++ = *pState++; - - /* Decrement the loop counter */ - i--; - } - - i = (numTaps - 1U) % 0x04U; - - /* copy data */ - while (i > 0U) - { - *pStateCurnt++ = *pState++; - - /* Decrement the loop counter */ - i--; - } -} - -/** - * @} end of FIR_decimate group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_init_f32.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_init_f32.c deleted file mode 100644 index 20eb959..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_init_f32.c +++ /dev/null @@ -1,105 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_fir_decimate_init_f32.c - * Description: Floating-point FIR Decimator initialization function - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupFilters - */ - -/** - * @addtogroup FIR_decimate - * @{ - */ - -/** - * @brief Initialization function for the floating-point FIR decimator. - * @param[in,out] *S points to an instance of the floating-point FIR decimator structure. - * @param[in] numTaps number of coefficients in the filter. - * @param[in] M decimation factor. - * @param[in] *pCoeffs points to the filter coefficients. - * @param[in] *pState points to the state buffer. - * @param[in] blockSize number of input samples to process per call. - * @return The function returns ARM_MATH_SUCCESS if initialization was successful or ARM_MATH_LENGTH_ERROR if - * blockSize is not a multiple of M. - * - * Description: - * \par - * pCoeffs points to the array of filter coefficients stored in time reversed order: - *
- *    {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}
- * 
- * \par - * pState points to the array of state variables. - * pState is of length numTaps+blockSize-1 words where blockSize is the number of input samples passed to arm_fir_decimate_f32(). - * M is the decimation factor. - */ - -arm_status arm_fir_decimate_init_f32( - arm_fir_decimate_instance_f32 * S, - uint16_t numTaps, - uint8_t M, - float32_t * pCoeffs, - float32_t * pState, - uint32_t blockSize) -{ - arm_status status; - - /* The size of the input block must be a multiple of the decimation factor */ - if ((blockSize % M) != 0U) - { - /* Set status as ARM_MATH_LENGTH_ERROR */ - status = ARM_MATH_LENGTH_ERROR; - } - else - { - /* Assign filter taps */ - S->numTaps = numTaps; - - /* Assign coefficient pointer */ - S->pCoeffs = pCoeffs; - - /* Clear state buffer and size is always (blockSize + numTaps - 1) */ - memset(pState, 0, (numTaps + (blockSize - 1U)) * sizeof(float32_t)); - - /* Assign state pointer */ - S->pState = pState; - - /* Assign Decimation Factor */ - S->M = M; - - status = ARM_MATH_SUCCESS; - } - - return (status); - -} - -/** - * @} end of FIR_decimate group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_init_q15.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_init_q15.c deleted file mode 100644 index 9094de5..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_init_q15.c +++ /dev/null @@ -1,107 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_fir_decimate_init_q15.c - * Description: Initialization function for the Q15 FIR Decimator - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupFilters - */ - -/** - * @addtogroup FIR_decimate - * @{ - */ - -/** - * @brief Initialization function for the Q15 FIR decimator. - * @param[in,out] *S points to an instance of the Q15 FIR decimator structure. - * @param[in] numTaps number of coefficients in the filter. - * @param[in] M decimation factor. - * @param[in] *pCoeffs points to the filter coefficients. - * @param[in] *pState points to the state buffer. - * @param[in] blockSize number of input samples to process per call. - * @return The function returns ARM_MATH_SUCCESS if initialization was successful or ARM_MATH_LENGTH_ERROR if - * blockSize is not a multiple of M. - * - * Description: - * \par - * pCoeffs points to the array of filter coefficients stored in time reversed order: - *
- *    {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}
- * 
- * \par - * pState points to the array of state variables. - * pState is of length numTaps+blockSize-1 words where blockSize is the number of input samples - * to the call arm_fir_decimate_q15(). - * M is the decimation factor. - */ - -arm_status arm_fir_decimate_init_q15( - arm_fir_decimate_instance_q15 * S, - uint16_t numTaps, - uint8_t M, - q15_t * pCoeffs, - q15_t * pState, - uint32_t blockSize) -{ - - arm_status status; - - /* The size of the input block must be a multiple of the decimation factor */ - if ((blockSize % M) != 0U) - { - /* Set status as ARM_MATH_LENGTH_ERROR */ - status = ARM_MATH_LENGTH_ERROR; - } - else - { - /* Assign filter taps */ - S->numTaps = numTaps; - - /* Assign coefficient pointer */ - S->pCoeffs = pCoeffs; - - /* Clear the state buffer. The size of buffer is always (blockSize + numTaps - 1) */ - memset(pState, 0, (numTaps + (blockSize - 1U)) * sizeof(q15_t)); - - /* Assign state pointer */ - S->pState = pState; - - /* Assign Decimation factor */ - S->M = M; - - status = ARM_MATH_SUCCESS; - } - - return (status); - -} - -/** - * @} end of FIR_decimate group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_init_q31.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_init_q31.c deleted file mode 100644 index a223a8e..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_init_q31.c +++ /dev/null @@ -1,105 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_fir_decimate_init_q31.c - * Description: Initialization function for Q31 FIR Decimation filter - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupFilters - */ - -/** - * @addtogroup FIR_decimate - * @{ - */ - -/** - * @brief Initialization function for the Q31 FIR decimator. - * @param[in,out] *S points to an instance of the Q31 FIR decimator structure. - * @param[in] numTaps number of coefficients in the filter. - * @param[in] M decimation factor. - * @param[in] *pCoeffs points to the filter coefficients. - * @param[in] *pState points to the state buffer. - * @param[in] blockSize number of input samples to process per call. - * @return The function returns ARM_MATH_SUCCESS if initialization was successful or ARM_MATH_LENGTH_ERROR if - * blockSize is not a multiple of M. - * - * Description: - * \par - * pCoeffs points to the array of filter coefficients stored in time reversed order: - *
- *    {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}
- * 
- * \par - * pState points to the array of state variables. - * pState is of length numTaps+blockSize-1 words where blockSize is the number of input samples passed to arm_fir_decimate_q31(). - * M is the decimation factor. - */ - -arm_status arm_fir_decimate_init_q31( - arm_fir_decimate_instance_q31 * S, - uint16_t numTaps, - uint8_t M, - q31_t * pCoeffs, - q31_t * pState, - uint32_t blockSize) -{ - arm_status status; - - /* The size of the input block must be a multiple of the decimation factor */ - if ((blockSize % M) != 0U) - { - /* Set status as ARM_MATH_LENGTH_ERROR */ - status = ARM_MATH_LENGTH_ERROR; - } - else - { - /* Assign filter taps */ - S->numTaps = numTaps; - - /* Assign coefficient pointer */ - S->pCoeffs = pCoeffs; - - /* Clear the state buffer. The size is always (blockSize + numTaps - 1) */ - memset(pState, 0, (numTaps + (blockSize - 1)) * sizeof(q31_t)); - - /* Assign state pointer */ - S->pState = pState; - - /* Assign Decimation factor */ - S->M = M; - - status = ARM_MATH_SUCCESS; - } - - return (status); - -} - -/** - * @} end of FIR_decimate group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_q15.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_q15.c deleted file mode 100644 index 345aa9c..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_q15.c +++ /dev/null @@ -1,684 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_fir_decimate_q15.c - * Description: Q15 FIR Decimator - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupFilters - */ - -/** - * @addtogroup FIR_decimate - * @{ - */ - -/** - * @brief Processing function for the Q15 FIR decimator. - * @param[in] *S points to an instance of the Q15 FIR decimator structure. - * @param[in] *pSrc points to the block of input data. - * @param[out] *pDst points to the location where the output result is written. - * @param[in] blockSize number of input samples to process per call. - * @return none. - * - * Scaling and Overflow Behavior: - * \par - * The function is implemented using a 64-bit internal accumulator. - * Both coefficients and state variables are represented in 1.15 format and multiplications yield a 2.30 result. - * The 2.30 intermediate results are accumulated in a 64-bit accumulator in 34.30 format. - * There is no risk of internal overflow with this approach and the full precision of intermediate multiplications is preserved. - * After all additions have been performed, the accumulator is truncated to 34.15 format by discarding low 15 bits. - * Lastly, the accumulator is saturated to yield a result in 1.15 format. - * - * \par - * Refer to the function arm_fir_decimate_fast_q15() for a faster but less precise implementation of this function for Cortex-M3 and Cortex-M4. - */ - -#if defined (ARM_MATH_DSP) - -#ifndef UNALIGNED_SUPPORT_DISABLE - -void arm_fir_decimate_q15( - const arm_fir_decimate_instance_q15 * S, - q15_t * pSrc, - q15_t * pDst, - uint32_t blockSize) -{ - q15_t *pState = S->pState; /* State pointer */ - q15_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ - q15_t *pStateCurnt; /* Points to the current sample of the state */ - q15_t *px; /* Temporary pointer for state buffer */ - q15_t *pb; /* Temporary pointer coefficient buffer */ - q31_t x0, x1, c0, c1; /* Temporary variables to hold state and coefficient values */ - q63_t sum0; /* Accumulators */ - q63_t acc0, acc1; - q15_t *px0, *px1; - uint32_t blkCntN3; - uint32_t numTaps = S->numTaps; /* Number of taps */ - uint32_t i, blkCnt, tapCnt, outBlockSize = blockSize / S->M; /* Loop counters */ - - - /* S->pState buffer contains previous frame (numTaps - 1) samples */ - /* pStateCurnt points to the location where the new input data should be written */ - pStateCurnt = S->pState + (numTaps - 1U); - - - /* Total number of output samples to be computed */ - blkCnt = outBlockSize / 2; - blkCntN3 = outBlockSize - (2 * blkCnt); - - - while (blkCnt > 0U) - { - /* Copy decimation factor number of new input samples into the state buffer */ - i = 2 * S->M; - - do - { - *pStateCurnt++ = *pSrc++; - - } while (--i); - - /* Set accumulator to zero */ - acc0 = 0; - acc1 = 0; - - /* Initialize state pointer */ - px0 = pState; - - px1 = pState + S->M; - - - /* Initialize coeff pointer */ - pb = pCoeffs; - - /* Loop unrolling. Process 4 taps at a time. */ - tapCnt = numTaps >> 2; - - /* Loop over the number of taps. Unroll by a factor of 4. - ** Repeat until we've computed numTaps-4 coefficients. */ - while (tapCnt > 0U) - { - /* Read the Read b[numTaps-1] and b[numTaps-2] coefficients */ - c0 = *__SIMD32(pb)++; - - /* Read x[n-numTaps-1] and x[n-numTaps-2]sample */ - x0 = *__SIMD32(px0)++; - - x1 = *__SIMD32(px1)++; - - /* Perform the multiply-accumulate */ - acc0 = __SMLALD(x0, c0, acc0); - - acc1 = __SMLALD(x1, c0, acc1); - - /* Read the b[numTaps-3] and b[numTaps-4] coefficient */ - c0 = *__SIMD32(pb)++; - - /* Read x[n-numTaps-2] and x[n-numTaps-3] sample */ - x0 = *__SIMD32(px0)++; - - x1 = *__SIMD32(px1)++; - - /* Perform the multiply-accumulate */ - acc0 = __SMLALD(x0, c0, acc0); - - acc1 = __SMLALD(x1, c0, acc1); - - /* Decrement the loop counter */ - tapCnt--; - } - - /* If the filter length is not a multiple of 4, compute the remaining filter taps */ - tapCnt = numTaps % 0x4U; - - while (tapCnt > 0U) - { - /* Read coefficients */ - c0 = *pb++; - - /* Fetch 1 state variable */ - x0 = *px0++; - - x1 = *px1++; - - /* Perform the multiply-accumulate */ - acc0 = __SMLALD(x0, c0, acc0); - acc1 = __SMLALD(x1, c0, acc1); - - /* Decrement the loop counter */ - tapCnt--; - } - - /* Advance the state pointer by the decimation factor - * to process the next group of decimation factor number samples */ - pState = pState + S->M * 2; - - /* Store filter output, smlad returns the values in 2.14 format */ - /* so downsacle by 15 to get output in 1.15 */ - *pDst++ = (q15_t) (__SSAT((acc0 >> 15), 16)); - *pDst++ = (q15_t) (__SSAT((acc1 >> 15), 16)); - - /* Decrement the loop counter */ - blkCnt--; - } - - - - while (blkCntN3 > 0U) - { - /* Copy decimation factor number of new input samples into the state buffer */ - i = S->M; - - do - { - *pStateCurnt++ = *pSrc++; - - } while (--i); - - /*Set sum to zero */ - sum0 = 0; - - /* Initialize state pointer */ - px = pState; - - /* Initialize coeff pointer */ - pb = pCoeffs; - - /* Loop unrolling. Process 4 taps at a time. */ - tapCnt = numTaps >> 2; - - /* Loop over the number of taps. Unroll by a factor of 4. - ** Repeat until we've computed numTaps-4 coefficients. */ - while (tapCnt > 0U) - { - /* Read the Read b[numTaps-1] and b[numTaps-2] coefficients */ - c0 = *__SIMD32(pb)++; - - /* Read x[n-numTaps-1] and x[n-numTaps-2]sample */ - x0 = *__SIMD32(px)++; - - /* Read the b[numTaps-3] and b[numTaps-4] coefficient */ - c1 = *__SIMD32(pb)++; - - /* Perform the multiply-accumulate */ - sum0 = __SMLALD(x0, c0, sum0); - - /* Read x[n-numTaps-2] and x[n-numTaps-3] sample */ - x0 = *__SIMD32(px)++; - - /* Perform the multiply-accumulate */ - sum0 = __SMLALD(x0, c1, sum0); - - /* Decrement the loop counter */ - tapCnt--; - } - - /* If the filter length is not a multiple of 4, compute the remaining filter taps */ - tapCnt = numTaps % 0x4U; - - while (tapCnt > 0U) - { - /* Read coefficients */ - c0 = *pb++; - - /* Fetch 1 state variable */ - x0 = *px++; - - /* Perform the multiply-accumulate */ - sum0 = __SMLALD(x0, c0, sum0); - - /* Decrement the loop counter */ - tapCnt--; - } - - /* Advance the state pointer by the decimation factor - * to process the next group of decimation factor number samples */ - pState = pState + S->M; - - /* Store filter output, smlad returns the values in 2.14 format */ - /* so downsacle by 15 to get output in 1.15 */ - *pDst++ = (q15_t) (__SSAT((sum0 >> 15), 16)); - - /* Decrement the loop counter */ - blkCntN3--; - } - - /* Processing is complete. - ** Now copy the last numTaps - 1 samples to the satrt of the state buffer. - ** This prepares the state buffer for the next function call. */ - - /* Points to the start of the state buffer */ - pStateCurnt = S->pState; - - i = (numTaps - 1U) >> 2U; - - /* copy data */ - while (i > 0U) - { - *__SIMD32(pStateCurnt)++ = *__SIMD32(pState)++; - *__SIMD32(pStateCurnt)++ = *__SIMD32(pState)++; - - /* Decrement the loop counter */ - i--; - } - - i = (numTaps - 1U) % 0x04U; - - /* copy data */ - while (i > 0U) - { - *pStateCurnt++ = *pState++; - - /* Decrement the loop counter */ - i--; - } -} - -#else - - -void arm_fir_decimate_q15( - const arm_fir_decimate_instance_q15 * S, - q15_t * pSrc, - q15_t * pDst, - uint32_t blockSize) -{ - q15_t *pState = S->pState; /* State pointer */ - q15_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ - q15_t *pStateCurnt; /* Points to the current sample of the state */ - q15_t *px; /* Temporary pointer for state buffer */ - q15_t *pb; /* Temporary pointer coefficient buffer */ - q15_t x0, x1, c0; /* Temporary variables to hold state and coefficient values */ - q63_t sum0; /* Accumulators */ - q63_t acc0, acc1; - q15_t *px0, *px1; - uint32_t blkCntN3; - uint32_t numTaps = S->numTaps; /* Number of taps */ - uint32_t i, blkCnt, tapCnt, outBlockSize = blockSize / S->M; /* Loop counters */ - - - /* S->pState buffer contains previous frame (numTaps - 1) samples */ - /* pStateCurnt points to the location where the new input data should be written */ - pStateCurnt = S->pState + (numTaps - 1U); - - - /* Total number of output samples to be computed */ - blkCnt = outBlockSize / 2; - blkCntN3 = outBlockSize - (2 * blkCnt); - - while (blkCnt > 0U) - { - /* Copy decimation factor number of new input samples into the state buffer */ - i = 2 * S->M; - - do - { - *pStateCurnt++ = *pSrc++; - - } while (--i); - - /* Set accumulator to zero */ - acc0 = 0; - acc1 = 0; - - /* Initialize state pointer */ - px0 = pState; - - px1 = pState + S->M; - - - /* Initialize coeff pointer */ - pb = pCoeffs; - - /* Loop unrolling. Process 4 taps at a time. */ - tapCnt = numTaps >> 2; - - /* Loop over the number of taps. Unroll by a factor of 4. - ** Repeat until we've computed numTaps-4 coefficients. */ - while (tapCnt > 0U) - { - /* Read the Read b[numTaps-1] coefficients */ - c0 = *pb++; - - /* Read x[n-numTaps-1] for sample 0 and for sample 1 */ - x0 = *px0++; - x1 = *px1++; - - /* Perform the multiply-accumulate */ - acc0 += x0 * c0; - acc1 += x1 * c0; - - /* Read the b[numTaps-2] coefficient */ - c0 = *pb++; - - /* Read x[n-numTaps-2] for sample 0 and sample 1 */ - x0 = *px0++; - x1 = *px1++; - - /* Perform the multiply-accumulate */ - acc0 += x0 * c0; - acc1 += x1 * c0; - - /* Read the b[numTaps-3] coefficients */ - c0 = *pb++; - - /* Read x[n-numTaps-3] for sample 0 and sample 1 */ - x0 = *px0++; - x1 = *px1++; - - /* Perform the multiply-accumulate */ - acc0 += x0 * c0; - acc1 += x1 * c0; - - /* Read the b[numTaps-4] coefficient */ - c0 = *pb++; - - /* Read x[n-numTaps-4] for sample 0 and sample 1 */ - x0 = *px0++; - x1 = *px1++; - - /* Perform the multiply-accumulate */ - acc0 += x0 * c0; - acc1 += x1 * c0; - - /* Decrement the loop counter */ - tapCnt--; - } - - /* If the filter length is not a multiple of 4, compute the remaining filter taps */ - tapCnt = numTaps % 0x4U; - - while (tapCnt > 0U) - { - /* Read coefficients */ - c0 = *pb++; - - /* Fetch 1 state variable */ - x0 = *px0++; - x1 = *px1++; - - /* Perform the multiply-accumulate */ - acc0 += x0 * c0; - acc1 += x1 * c0; - - /* Decrement the loop counter */ - tapCnt--; - } - - /* Advance the state pointer by the decimation factor - * to process the next group of decimation factor number samples */ - pState = pState + S->M * 2; - - /* Store filter output, smlad returns the values in 2.14 format */ - /* so downsacle by 15 to get output in 1.15 */ - - *pDst++ = (q15_t) (__SSAT((acc0 >> 15), 16)); - *pDst++ = (q15_t) (__SSAT((acc1 >> 15), 16)); - - /* Decrement the loop counter */ - blkCnt--; - } - - while (blkCntN3 > 0U) - { - /* Copy decimation factor number of new input samples into the state buffer */ - i = S->M; - - do - { - *pStateCurnt++ = *pSrc++; - - } while (--i); - - /*Set sum to zero */ - sum0 = 0; - - /* Initialize state pointer */ - px = pState; - - /* Initialize coeff pointer */ - pb = pCoeffs; - - /* Loop unrolling. Process 4 taps at a time. */ - tapCnt = numTaps >> 2; - - /* Loop over the number of taps. Unroll by a factor of 4. - ** Repeat until we've computed numTaps-4 coefficients. */ - while (tapCnt > 0U) - { - /* Read the Read b[numTaps-1] coefficients */ - c0 = *pb++; - - /* Read x[n-numTaps-1] and sample */ - x0 = *px++; - - /* Perform the multiply-accumulate */ - sum0 += x0 * c0; - - /* Read the b[numTaps-2] coefficient */ - c0 = *pb++; - - /* Read x[n-numTaps-2] and sample */ - x0 = *px++; - - /* Perform the multiply-accumulate */ - sum0 += x0 * c0; - - /* Read the b[numTaps-3] coefficients */ - c0 = *pb++; - - /* Read x[n-numTaps-3] sample */ - x0 = *px++; - - /* Perform the multiply-accumulate */ - sum0 += x0 * c0; - - /* Read the b[numTaps-4] coefficient */ - c0 = *pb++; - - /* Read x[n-numTaps-4] sample */ - x0 = *px++; - - /* Perform the multiply-accumulate */ - sum0 += x0 * c0; - - /* Decrement the loop counter */ - tapCnt--; - } - - /* If the filter length is not a multiple of 4, compute the remaining filter taps */ - tapCnt = numTaps % 0x4U; - - while (tapCnt > 0U) - { - /* Read coefficients */ - c0 = *pb++; - - /* Fetch 1 state variable */ - x0 = *px++; - - /* Perform the multiply-accumulate */ - sum0 += x0 * c0; - - /* Decrement the loop counter */ - tapCnt--; - } - - /* Advance the state pointer by the decimation factor - * to process the next group of decimation factor number samples */ - pState = pState + S->M; - - /* Store filter output, smlad returns the values in 2.14 format */ - /* so downsacle by 15 to get output in 1.15 */ - *pDst++ = (q15_t) (__SSAT((sum0 >> 15), 16)); - - /* Decrement the loop counter */ - blkCntN3--; - } - - /* Processing is complete. - ** Now copy the last numTaps - 1 samples to the satrt of the state buffer. - ** This prepares the state buffer for the next function call. */ - - /* Points to the start of the state buffer */ - pStateCurnt = S->pState; - - i = (numTaps - 1U) >> 2U; - - /* copy data */ - while (i > 0U) - { - *pStateCurnt++ = *pState++; - *pStateCurnt++ = *pState++; - *pStateCurnt++ = *pState++; - *pStateCurnt++ = *pState++; - - /* Decrement the loop counter */ - i--; - } - - i = (numTaps - 1U) % 0x04U; - - /* copy data */ - while (i > 0U) - { - *pStateCurnt++ = *pState++; - - /* Decrement the loop counter */ - i--; - } -} - - -#endif /* #ifndef UNALIGNED_SUPPORT_DISABLE */ - -#else - - -void arm_fir_decimate_q15( - const arm_fir_decimate_instance_q15 * S, - q15_t * pSrc, - q15_t * pDst, - uint32_t blockSize) -{ - q15_t *pState = S->pState; /* State pointer */ - q15_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ - q15_t *pStateCurnt; /* Points to the current sample of the state */ - q15_t *px; /* Temporary pointer for state buffer */ - q15_t *pb; /* Temporary pointer coefficient buffer */ - q31_t x0, c0; /* Temporary variables to hold state and coefficient values */ - q63_t sum0; /* Accumulators */ - uint32_t numTaps = S->numTaps; /* Number of taps */ - uint32_t i, blkCnt, tapCnt, outBlockSize = blockSize / S->M; /* Loop counters */ - - - -/* Run the below code for Cortex-M0 */ - - /* S->pState buffer contains previous frame (numTaps - 1) samples */ - /* pStateCurnt points to the location where the new input data should be written */ - pStateCurnt = S->pState + (numTaps - 1U); - - /* Total number of output samples to be computed */ - blkCnt = outBlockSize; - - while (blkCnt > 0U) - { - /* Copy decimation factor number of new input samples into the state buffer */ - i = S->M; - - do - { - *pStateCurnt++ = *pSrc++; - - } while (--i); - - /*Set sum to zero */ - sum0 = 0; - - /* Initialize state pointer */ - px = pState; - - /* Initialize coeff pointer */ - pb = pCoeffs; - - tapCnt = numTaps; - - while (tapCnt > 0U) - { - /* Read coefficients */ - c0 = *pb++; - - /* Fetch 1 state variable */ - x0 = *px++; - - /* Perform the multiply-accumulate */ - sum0 += (q31_t) x0 *c0; - - /* Decrement the loop counter */ - tapCnt--; - } - - /* Advance the state pointer by the decimation factor - * to process the next group of decimation factor number samples */ - pState = pState + S->M; - - /*Store filter output , smlad will return the values in 2.14 format */ - /* so downsacle by 15 to get output in 1.15 */ - *pDst++ = (q15_t) (__SSAT((sum0 >> 15), 16)); - - /* Decrement the loop counter */ - blkCnt--; - } - - /* Processing is complete. - ** Now copy the last numTaps - 1 samples to the start of the state buffer. - ** This prepares the state buffer for the next function call. */ - - /* Points to the start of the state buffer */ - pStateCurnt = S->pState; - - i = numTaps - 1U; - - /* copy data */ - while (i > 0U) - { - *pStateCurnt++ = *pState++; - - /* Decrement the loop counter */ - i--; - } - - -} -#endif /* #if defined (ARM_MATH_DSP) */ - - -/** - * @} end of FIR_decimate group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_q31.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_q31.c deleted file mode 100644 index ed67442..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_q31.c +++ /dev/null @@ -1,299 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_fir_decimate_q31.c - * Description: Q31 FIR Decimator - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupFilters - */ - -/** - * @addtogroup FIR_decimate - * @{ - */ - -/** - * @brief Processing function for the Q31 FIR decimator. - * @param[in] *S points to an instance of the Q31 FIR decimator structure. - * @param[in] *pSrc points to the block of input data. - * @param[out] *pDst points to the block of output data - * @param[in] blockSize number of input samples to process per call. - * @return none - * - * Scaling and Overflow Behavior: - * \par - * The function is implemented using an internal 64-bit accumulator. - * The accumulator has a 2.62 format and maintains full precision of the intermediate multiplication results but provides only a single guard bit. - * Thus, if the accumulator result overflows it wraps around rather than clip. - * In order to avoid overflows completely the input signal must be scaled down by log2(numTaps) bits (where log2 is read as log to the base 2). - * After all multiply-accumulates are performed, the 2.62 accumulator is truncated to 1.32 format and then saturated to 1.31 format. - * - * \par - * Refer to the function arm_fir_decimate_fast_q31() for a faster but less precise implementation of this function for Cortex-M3 and Cortex-M4. - */ - -void arm_fir_decimate_q31( - const arm_fir_decimate_instance_q31 * S, - q31_t * pSrc, - q31_t * pDst, - uint32_t blockSize) -{ - q31_t *pState = S->pState; /* State pointer */ - q31_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ - q31_t *pStateCurnt; /* Points to the current sample of the state */ - q31_t x0, c0; /* Temporary variables to hold state and coefficient values */ - q31_t *px; /* Temporary pointers for state buffer */ - q31_t *pb; /* Temporary pointers for coefficient buffer */ - q63_t sum0; /* Accumulator */ - uint32_t numTaps = S->numTaps; /* Number of taps */ - uint32_t i, tapCnt, blkCnt, outBlockSize = blockSize / S->M; /* Loop counters */ - - -#if defined (ARM_MATH_DSP) - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - /* S->pState buffer contains previous frame (numTaps - 1) samples */ - /* pStateCurnt points to the location where the new input data should be written */ - pStateCurnt = S->pState + (numTaps - 1U); - - /* Total number of output samples to be computed */ - blkCnt = outBlockSize; - - while (blkCnt > 0U) - { - /* Copy decimation factor number of new input samples into the state buffer */ - i = S->M; - - do - { - *pStateCurnt++ = *pSrc++; - - } while (--i); - - /* Set accumulator to zero */ - sum0 = 0; - - /* Initialize state pointer */ - px = pState; - - /* Initialize coeff pointer */ - pb = pCoeffs; - - /* Loop unrolling. Process 4 taps at a time. */ - tapCnt = numTaps >> 2; - - /* Loop over the number of taps. Unroll by a factor of 4. - ** Repeat until we've computed numTaps-4 coefficients. */ - while (tapCnt > 0U) - { - /* Read the b[numTaps-1] coefficient */ - c0 = *(pb++); - - /* Read x[n-numTaps-1] sample */ - x0 = *(px++); - - /* Perform the multiply-accumulate */ - sum0 += (q63_t) x0 *c0; - - /* Read the b[numTaps-2] coefficient */ - c0 = *(pb++); - - /* Read x[n-numTaps-2] sample */ - x0 = *(px++); - - /* Perform the multiply-accumulate */ - sum0 += (q63_t) x0 *c0; - - /* Read the b[numTaps-3] coefficient */ - c0 = *(pb++); - - /* Read x[n-numTaps-3] sample */ - x0 = *(px++); - - /* Perform the multiply-accumulate */ - sum0 += (q63_t) x0 *c0; - - /* Read the b[numTaps-4] coefficient */ - c0 = *(pb++); - - /* Read x[n-numTaps-4] sample */ - x0 = *(px++); - - /* Perform the multiply-accumulate */ - sum0 += (q63_t) x0 *c0; - - /* Decrement the loop counter */ - tapCnt--; - } - - /* If the filter length is not a multiple of 4, compute the remaining filter taps */ - tapCnt = numTaps % 0x4U; - - while (tapCnt > 0U) - { - /* Read coefficients */ - c0 = *(pb++); - - /* Fetch 1 state variable */ - x0 = *(px++); - - /* Perform the multiply-accumulate */ - sum0 += (q63_t) x0 *c0; - - /* Decrement the loop counter */ - tapCnt--; - } - - /* Advance the state pointer by the decimation factor - * to process the next group of decimation factor number samples */ - pState = pState + S->M; - - /* The result is in the accumulator, store in the destination buffer. */ - *pDst++ = (q31_t) (sum0 >> 31); - - /* Decrement the loop counter */ - blkCnt--; - } - - /* Processing is complete. - ** Now copy the last numTaps - 1 samples to the satrt of the state buffer. - ** This prepares the state buffer for the next function call. */ - - /* Points to the start of the state buffer */ - pStateCurnt = S->pState; - - i = (numTaps - 1U) >> 2U; - - /* copy data */ - while (i > 0U) - { - *pStateCurnt++ = *pState++; - *pStateCurnt++ = *pState++; - *pStateCurnt++ = *pState++; - *pStateCurnt++ = *pState++; - - /* Decrement the loop counter */ - i--; - } - - i = (numTaps - 1U) % 0x04U; - - /* copy data */ - while (i > 0U) - { - *pStateCurnt++ = *pState++; - - /* Decrement the loop counter */ - i--; - } - -#else - -/* Run the below code for Cortex-M0 */ - - /* S->pState buffer contains previous frame (numTaps - 1) samples */ - /* pStateCurnt points to the location where the new input data should be written */ - pStateCurnt = S->pState + (numTaps - 1U); - - /* Total number of output samples to be computed */ - blkCnt = outBlockSize; - - while (blkCnt > 0U) - { - /* Copy decimation factor number of new input samples into the state buffer */ - i = S->M; - - do - { - *pStateCurnt++ = *pSrc++; - - } while (--i); - - /* Set accumulator to zero */ - sum0 = 0; - - /* Initialize state pointer */ - px = pState; - - /* Initialize coeff pointer */ - pb = pCoeffs; - - tapCnt = numTaps; - - while (tapCnt > 0U) - { - /* Read coefficients */ - c0 = *pb++; - - /* Fetch 1 state variable */ - x0 = *px++; - - /* Perform the multiply-accumulate */ - sum0 += (q63_t) x0 *c0; - - /* Decrement the loop counter */ - tapCnt--; - } - - /* Advance the state pointer by the decimation factor - * to process the next group of decimation factor number samples */ - pState = pState + S->M; - - /* The result is in the accumulator, store in the destination buffer. */ - *pDst++ = (q31_t) (sum0 >> 31); - - /* Decrement the loop counter */ - blkCnt--; - } - - /* Processing is complete. - ** Now copy the last numTaps - 1 samples to the start of the state buffer. - ** This prepares the state buffer for the next function call. */ - - /* Points to the start of the state buffer */ - pStateCurnt = S->pState; - - i = numTaps - 1U; - - /* copy data */ - while (i > 0U) - { - *pStateCurnt++ = *pState++; - - /* Decrement the loop counter */ - i--; - } - -#endif /* #if defined (ARM_MATH_DSP) */ - -} - -/** - * @} end of FIR_decimate group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_f32.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_f32.c deleted file mode 100644 index 61ec80a..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_f32.c +++ /dev/null @@ -1,985 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_fir_f32.c - * Description: Floating-point FIR filter processing function - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** -* @ingroup groupFilters -*/ - -/** -* @defgroup FIR Finite Impulse Response (FIR) Filters -* -* This set of functions implements Finite Impulse Response (FIR) filters -* for Q7, Q15, Q31, and floating-point data types. Fast versions of Q15 and Q31 are also provided. -* The functions operate on blocks of input and output data and each call to the function processes -* blockSize samples through the filter. pSrc and -* pDst points to input and output arrays containing blockSize values. -* -* \par Algorithm: -* The FIR filter algorithm is based upon a sequence of multiply-accumulate (MAC) operations. -* Each filter coefficient b[n] is multiplied by a state variable which equals a previous input sample x[n]. -*
-*    y[n] = b[0] * x[n] + b[1] * x[n-1] + b[2] * x[n-2] + ...+ b[numTaps-1] * x[n-numTaps+1]
-* 
-* \par -* \image html FIR.gif "Finite Impulse Response filter" -* \par -* pCoeffs points to a coefficient array of size numTaps. -* Coefficients are stored in time reversed order. -* \par -*
-*    {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}
-* 
-* \par -* pState points to a state array of size numTaps + blockSize - 1. -* Samples in the state buffer are stored in the following order. -* \par -*
-*    {x[n-numTaps+1], x[n-numTaps], x[n-numTaps-1], x[n-numTaps-2]....x[0], x[1], ..., x[blockSize-1]}
-* 
-* \par -* Note that the length of the state buffer exceeds the length of the coefficient array by blockSize-1. -* The increased state buffer length allows circular addressing, which is traditionally used in the FIR filters, -* to be avoided and yields a significant speed improvement. -* The state variables are updated after each block of data is processed; the coefficients are untouched. -* \par Instance Structure -* The coefficients and state variables for a filter are stored together in an instance data structure. -* A separate instance structure must be defined for each filter. -* Coefficient arrays may be shared among several instances while state variable arrays cannot be shared. -* There are separate instance structure declarations for each of the 4 supported data types. -* -* \par Initialization Functions -* There is also an associated initialization function for each data type. -* The initialization function performs the following operations: -* - Sets the values of the internal structure fields. -* - Zeros out the values in the state buffer. -* To do this manually without calling the init function, assign the follow subfields of the instance structure: -* numTaps, pCoeffs, pState. Also set all of the values in pState to zero. -* -* \par -* Use of the initialization function is optional. -* However, if the initialization function is used, then the instance structure cannot be placed into a const data section. -* To place an instance structure into a const data section, the instance structure must be manually initialized. -* Set the values in the state buffer to zeros before static initialization. -* The code below statically initializes each of the 4 different data type filter instance structures -*
-*arm_fir_instance_f32 S = {numTaps, pState, pCoeffs};
-*arm_fir_instance_q31 S = {numTaps, pState, pCoeffs};
-*arm_fir_instance_q15 S = {numTaps, pState, pCoeffs};
-*arm_fir_instance_q7 S =  {numTaps, pState, pCoeffs};
-* 
-* -* where numTaps is the number of filter coefficients in the filter; pState is the address of the state buffer; -* pCoeffs is the address of the coefficient buffer. -* -* \par Fixed-Point Behavior -* Care must be taken when using the fixed-point versions of the FIR filter functions. -* In particular, the overflow and saturation behavior of the accumulator used in each function must be considered. -* Refer to the function specific documentation below for usage guidelines. -*/ - -/** -* @addtogroup FIR -* @{ -*/ - -/** -* -* @param[in] *S points to an instance of the floating-point FIR filter structure. -* @param[in] *pSrc points to the block of input data. -* @param[out] *pDst points to the block of output data. -* @param[in] blockSize number of samples to process per call. -* @return none. -* -*/ - -#if defined(ARM_MATH_CM7) - -void arm_fir_f32( -const arm_fir_instance_f32 * S, -float32_t * pSrc, -float32_t * pDst, -uint32_t blockSize) -{ - float32_t *pState = S->pState; /* State pointer */ - float32_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ - float32_t *pStateCurnt; /* Points to the current sample of the state */ - float32_t *px, *pb; /* Temporary pointers for state and coefficient buffers */ - float32_t acc0, acc1, acc2, acc3, acc4, acc5, acc6, acc7; /* Accumulators */ - float32_t x0, x1, x2, x3, x4, x5, x6, x7, c0; /* Temporary variables to hold state and coefficient values */ - uint32_t numTaps = S->numTaps; /* Number of filter coefficients in the filter */ - uint32_t i, tapCnt, blkCnt; /* Loop counters */ - - /* S->pState points to state array which contains previous frame (numTaps - 1) samples */ - /* pStateCurnt points to the location where the new input data should be written */ - pStateCurnt = &(S->pState[(numTaps - 1U)]); - - /* Apply loop unrolling and compute 8 output values simultaneously. - * The variables acc0 ... acc7 hold output values that are being computed: - * - * acc0 = b[numTaps-1] * x[n-numTaps-1] + b[numTaps-2] * x[n-numTaps-2] + b[numTaps-3] * x[n-numTaps-3] +...+ b[0] * x[0] - * acc1 = b[numTaps-1] * x[n-numTaps] + b[numTaps-2] * x[n-numTaps-1] + b[numTaps-3] * x[n-numTaps-2] +...+ b[0] * x[1] - * acc2 = b[numTaps-1] * x[n-numTaps+1] + b[numTaps-2] * x[n-numTaps] + b[numTaps-3] * x[n-numTaps-1] +...+ b[0] * x[2] - * acc3 = b[numTaps-1] * x[n-numTaps+2] + b[numTaps-2] * x[n-numTaps+1] + b[numTaps-3] * x[n-numTaps] +...+ b[0] * x[3] - */ - blkCnt = blockSize >> 3; - - /* First part of the processing with loop unrolling. Compute 8 outputs at a time. - ** a second loop below computes the remaining 1 to 7 samples. */ - while (blkCnt > 0U) - { - /* Copy four new input samples into the state buffer */ - *pStateCurnt++ = *pSrc++; - *pStateCurnt++ = *pSrc++; - *pStateCurnt++ = *pSrc++; - *pStateCurnt++ = *pSrc++; - - /* Set all accumulators to zero */ - acc0 = 0.0f; - acc1 = 0.0f; - acc2 = 0.0f; - acc3 = 0.0f; - acc4 = 0.0f; - acc5 = 0.0f; - acc6 = 0.0f; - acc7 = 0.0f; - - /* Initialize state pointer */ - px = pState; - - /* Initialize coeff pointer */ - pb = (pCoeffs); - - /* This is separated from the others to avoid - * a call to __aeabi_memmove which would be slower - */ - *pStateCurnt++ = *pSrc++; - *pStateCurnt++ = *pSrc++; - *pStateCurnt++ = *pSrc++; - *pStateCurnt++ = *pSrc++; - - /* Read the first seven samples from the state buffer: x[n-numTaps], x[n-numTaps-1], x[n-numTaps-2] */ - x0 = *px++; - x1 = *px++; - x2 = *px++; - x3 = *px++; - x4 = *px++; - x5 = *px++; - x6 = *px++; - - /* Loop unrolling. Process 8 taps at a time. */ - tapCnt = numTaps >> 3U; - - /* Loop over the number of taps. Unroll by a factor of 8. - ** Repeat until we've computed numTaps-8 coefficients. */ - while (tapCnt > 0U) - { - /* Read the b[numTaps-1] coefficient */ - c0 = *(pb++); - - /* Read x[n-numTaps-3] sample */ - x7 = *(px++); - - /* acc0 += b[numTaps-1] * x[n-numTaps] */ - acc0 += x0 * c0; - - /* acc1 += b[numTaps-1] * x[n-numTaps-1] */ - acc1 += x1 * c0; - - /* acc2 += b[numTaps-1] * x[n-numTaps-2] */ - acc2 += x2 * c0; - - /* acc3 += b[numTaps-1] * x[n-numTaps-3] */ - acc3 += x3 * c0; - - /* acc4 += b[numTaps-1] * x[n-numTaps-4] */ - acc4 += x4 * c0; - - /* acc1 += b[numTaps-1] * x[n-numTaps-5] */ - acc5 += x5 * c0; - - /* acc2 += b[numTaps-1] * x[n-numTaps-6] */ - acc6 += x6 * c0; - - /* acc3 += b[numTaps-1] * x[n-numTaps-7] */ - acc7 += x7 * c0; - - /* Read the b[numTaps-2] coefficient */ - c0 = *(pb++); - - /* Read x[n-numTaps-4] sample */ - x0 = *(px++); - - /* Perform the multiply-accumulate */ - acc0 += x1 * c0; - acc1 += x2 * c0; - acc2 += x3 * c0; - acc3 += x4 * c0; - acc4 += x5 * c0; - acc5 += x6 * c0; - acc6 += x7 * c0; - acc7 += x0 * c0; - - /* Read the b[numTaps-3] coefficient */ - c0 = *(pb++); - - /* Read x[n-numTaps-5] sample */ - x1 = *(px++); - - /* Perform the multiply-accumulates */ - acc0 += x2 * c0; - acc1 += x3 * c0; - acc2 += x4 * c0; - acc3 += x5 * c0; - acc4 += x6 * c0; - acc5 += x7 * c0; - acc6 += x0 * c0; - acc7 += x1 * c0; - - /* Read the b[numTaps-4] coefficient */ - c0 = *(pb++); - - /* Read x[n-numTaps-6] sample */ - x2 = *(px++); - - /* Perform the multiply-accumulates */ - acc0 += x3 * c0; - acc1 += x4 * c0; - acc2 += x5 * c0; - acc3 += x6 * c0; - acc4 += x7 * c0; - acc5 += x0 * c0; - acc6 += x1 * c0; - acc7 += x2 * c0; - - /* Read the b[numTaps-4] coefficient */ - c0 = *(pb++); - - /* Read x[n-numTaps-6] sample */ - x3 = *(px++); - /* Perform the multiply-accumulates */ - acc0 += x4 * c0; - acc1 += x5 * c0; - acc2 += x6 * c0; - acc3 += x7 * c0; - acc4 += x0 * c0; - acc5 += x1 * c0; - acc6 += x2 * c0; - acc7 += x3 * c0; - - /* Read the b[numTaps-4] coefficient */ - c0 = *(pb++); - - /* Read x[n-numTaps-6] sample */ - x4 = *(px++); - - /* Perform the multiply-accumulates */ - acc0 += x5 * c0; - acc1 += x6 * c0; - acc2 += x7 * c0; - acc3 += x0 * c0; - acc4 += x1 * c0; - acc5 += x2 * c0; - acc6 += x3 * c0; - acc7 += x4 * c0; - - /* Read the b[numTaps-4] coefficient */ - c0 = *(pb++); - - /* Read x[n-numTaps-6] sample */ - x5 = *(px++); - - /* Perform the multiply-accumulates */ - acc0 += x6 * c0; - acc1 += x7 * c0; - acc2 += x0 * c0; - acc3 += x1 * c0; - acc4 += x2 * c0; - acc5 += x3 * c0; - acc6 += x4 * c0; - acc7 += x5 * c0; - - /* Read the b[numTaps-4] coefficient */ - c0 = *(pb++); - - /* Read x[n-numTaps-6] sample */ - x6 = *(px++); - - /* Perform the multiply-accumulates */ - acc0 += x7 * c0; - acc1 += x0 * c0; - acc2 += x1 * c0; - acc3 += x2 * c0; - acc4 += x3 * c0; - acc5 += x4 * c0; - acc6 += x5 * c0; - acc7 += x6 * c0; - - tapCnt--; - } - - /* If the filter length is not a multiple of 8, compute the remaining filter taps */ - tapCnt = numTaps % 0x8U; - - while (tapCnt > 0U) - { - /* Read coefficients */ - c0 = *(pb++); - - /* Fetch 1 state variable */ - x7 = *(px++); - - /* Perform the multiply-accumulates */ - acc0 += x0 * c0; - acc1 += x1 * c0; - acc2 += x2 * c0; - acc3 += x3 * c0; - acc4 += x4 * c0; - acc5 += x5 * c0; - acc6 += x6 * c0; - acc7 += x7 * c0; - - /* Reuse the present sample states for next sample */ - x0 = x1; - x1 = x2; - x2 = x3; - x3 = x4; - x4 = x5; - x5 = x6; - x6 = x7; - - /* Decrement the loop counter */ - tapCnt--; - } - - /* Advance the state pointer by 8 to process the next group of 8 samples */ - pState = pState + 8; - - /* The results in the 8 accumulators, store in the destination buffer. */ - *pDst++ = acc0; - *pDst++ = acc1; - *pDst++ = acc2; - *pDst++ = acc3; - *pDst++ = acc4; - *pDst++ = acc5; - *pDst++ = acc6; - *pDst++ = acc7; - - blkCnt--; - } - - /* If the blockSize is not a multiple of 8, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize % 0x8U; - - while (blkCnt > 0U) - { - /* Copy one sample at a time into state buffer */ - *pStateCurnt++ = *pSrc++; - - /* Set the accumulator to zero */ - acc0 = 0.0f; - - /* Initialize state pointer */ - px = pState; - - /* Initialize Coefficient pointer */ - pb = (pCoeffs); - - i = numTaps; - - /* Perform the multiply-accumulates */ - do - { - acc0 += *px++ * *pb++; - i--; - - } while (i > 0U); - - /* The result is store in the destination buffer. */ - *pDst++ = acc0; - - /* Advance state pointer by 1 for the next sample */ - pState = pState + 1; - - blkCnt--; - } - - /* Processing is complete. - ** Now copy the last numTaps - 1 samples to the start of the state buffer. - ** This prepares the state buffer for the next function call. */ - - /* Points to the start of the state buffer */ - pStateCurnt = S->pState; - - tapCnt = (numTaps - 1U) >> 2U; - - /* copy data */ - while (tapCnt > 0U) - { - *pStateCurnt++ = *pState++; - *pStateCurnt++ = *pState++; - *pStateCurnt++ = *pState++; - *pStateCurnt++ = *pState++; - - /* Decrement the loop counter */ - tapCnt--; - } - - /* Calculate remaining number of copies */ - tapCnt = (numTaps - 1U) % 0x4U; - - /* Copy the remaining q31_t data */ - while (tapCnt > 0U) - { - *pStateCurnt++ = *pState++; - - /* Decrement the loop counter */ - tapCnt--; - } -} - -#elif defined(ARM_MATH_CM0_FAMILY) - -void arm_fir_f32( -const arm_fir_instance_f32 * S, -float32_t * pSrc, -float32_t * pDst, -uint32_t blockSize) -{ - float32_t *pState = S->pState; /* State pointer */ - float32_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ - float32_t *pStateCurnt; /* Points to the current sample of the state */ - float32_t *px, *pb; /* Temporary pointers for state and coefficient buffers */ - uint32_t numTaps = S->numTaps; /* Number of filter coefficients in the filter */ - uint32_t i, tapCnt, blkCnt; /* Loop counters */ - - /* Run the below code for Cortex-M0 */ - - float32_t acc; - - /* S->pState points to state array which contains previous frame (numTaps - 1) samples */ - /* pStateCurnt points to the location where the new input data should be written */ - pStateCurnt = &(S->pState[(numTaps - 1U)]); - - /* Initialize blkCnt with blockSize */ - blkCnt = blockSize; - - while (blkCnt > 0U) - { - /* Copy one sample at a time into state buffer */ - *pStateCurnt++ = *pSrc++; - - /* Set the accumulator to zero */ - acc = 0.0f; - - /* Initialize state pointer */ - px = pState; - - /* Initialize Coefficient pointer */ - pb = pCoeffs; - - i = numTaps; - - /* Perform the multiply-accumulates */ - do - { - /* acc = b[numTaps-1] * x[n-numTaps-1] + b[numTaps-2] * x[n-numTaps-2] + b[numTaps-3] * x[n-numTaps-3] +...+ b[0] * x[0] */ - acc += *px++ * *pb++; - i--; - - } while (i > 0U); - - /* The result is store in the destination buffer. */ - *pDst++ = acc; - - /* Advance state pointer by 1 for the next sample */ - pState = pState + 1; - - blkCnt--; - } - - /* Processing is complete. - ** Now copy the last numTaps - 1 samples to the starting of the state buffer. - ** This prepares the state buffer for the next function call. */ - - /* Points to the start of the state buffer */ - pStateCurnt = S->pState; - - /* Copy numTaps number of values */ - tapCnt = numTaps - 1U; - - /* Copy data */ - while (tapCnt > 0U) - { - *pStateCurnt++ = *pState++; - - /* Decrement the loop counter */ - tapCnt--; - } - -} - -#else - -/* Run the below code for Cortex-M4 and Cortex-M3 */ - -void arm_fir_f32( -const arm_fir_instance_f32 * S, -float32_t * pSrc, -float32_t * pDst, -uint32_t blockSize) -{ - float32_t *pState = S->pState; /* State pointer */ - float32_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ - float32_t *pStateCurnt; /* Points to the current sample of the state */ - float32_t *px, *pb; /* Temporary pointers for state and coefficient buffers */ - float32_t acc0, acc1, acc2, acc3, acc4, acc5, acc6, acc7; /* Accumulators */ - float32_t x0, x1, x2, x3, x4, x5, x6, x7, c0; /* Temporary variables to hold state and coefficient values */ - uint32_t numTaps = S->numTaps; /* Number of filter coefficients in the filter */ - uint32_t i, tapCnt, blkCnt; /* Loop counters */ - float32_t p0,p1,p2,p3,p4,p5,p6,p7; /* Temporary product values */ - - /* S->pState points to state array which contains previous frame (numTaps - 1) samples */ - /* pStateCurnt points to the location where the new input data should be written */ - pStateCurnt = &(S->pState[(numTaps - 1U)]); - - /* Apply loop unrolling and compute 8 output values simultaneously. - * The variables acc0 ... acc7 hold output values that are being computed: - * - * acc0 = b[numTaps-1] * x[n-numTaps-1] + b[numTaps-2] * x[n-numTaps-2] + b[numTaps-3] * x[n-numTaps-3] +...+ b[0] * x[0] - * acc1 = b[numTaps-1] * x[n-numTaps] + b[numTaps-2] * x[n-numTaps-1] + b[numTaps-3] * x[n-numTaps-2] +...+ b[0] * x[1] - * acc2 = b[numTaps-1] * x[n-numTaps+1] + b[numTaps-2] * x[n-numTaps] + b[numTaps-3] * x[n-numTaps-1] +...+ b[0] * x[2] - * acc3 = b[numTaps-1] * x[n-numTaps+2] + b[numTaps-2] * x[n-numTaps+1] + b[numTaps-3] * x[n-numTaps] +...+ b[0] * x[3] - */ - blkCnt = blockSize >> 3; - - /* First part of the processing with loop unrolling. Compute 8 outputs at a time. - ** a second loop below computes the remaining 1 to 7 samples. */ - while (blkCnt > 0U) - { - /* Copy four new input samples into the state buffer */ - *pStateCurnt++ = *pSrc++; - *pStateCurnt++ = *pSrc++; - *pStateCurnt++ = *pSrc++; - *pStateCurnt++ = *pSrc++; - - /* Set all accumulators to zero */ - acc0 = 0.0f; - acc1 = 0.0f; - acc2 = 0.0f; - acc3 = 0.0f; - acc4 = 0.0f; - acc5 = 0.0f; - acc6 = 0.0f; - acc7 = 0.0f; - - /* Initialize state pointer */ - px = pState; - - /* Initialize coeff pointer */ - pb = (pCoeffs); - - /* This is separated from the others to avoid - * a call to __aeabi_memmove which would be slower - */ - *pStateCurnt++ = *pSrc++; - *pStateCurnt++ = *pSrc++; - *pStateCurnt++ = *pSrc++; - *pStateCurnt++ = *pSrc++; - - /* Read the first seven samples from the state buffer: x[n-numTaps], x[n-numTaps-1], x[n-numTaps-2] */ - x0 = *px++; - x1 = *px++; - x2 = *px++; - x3 = *px++; - x4 = *px++; - x5 = *px++; - x6 = *px++; - - /* Loop unrolling. Process 8 taps at a time. */ - tapCnt = numTaps >> 3U; - - /* Loop over the number of taps. Unroll by a factor of 8. - ** Repeat until we've computed numTaps-8 coefficients. */ - while (tapCnt > 0U) - { - /* Read the b[numTaps-1] coefficient */ - c0 = *(pb++); - - /* Read x[n-numTaps-3] sample */ - x7 = *(px++); - - /* acc0 += b[numTaps-1] * x[n-numTaps] */ - p0 = x0 * c0; - - /* acc1 += b[numTaps-1] * x[n-numTaps-1] */ - p1 = x1 * c0; - - /* acc2 += b[numTaps-1] * x[n-numTaps-2] */ - p2 = x2 * c0; - - /* acc3 += b[numTaps-1] * x[n-numTaps-3] */ - p3 = x3 * c0; - - /* acc4 += b[numTaps-1] * x[n-numTaps-4] */ - p4 = x4 * c0; - - /* acc1 += b[numTaps-1] * x[n-numTaps-5] */ - p5 = x5 * c0; - - /* acc2 += b[numTaps-1] * x[n-numTaps-6] */ - p6 = x6 * c0; - - /* acc3 += b[numTaps-1] * x[n-numTaps-7] */ - p7 = x7 * c0; - - /* Read the b[numTaps-2] coefficient */ - c0 = *(pb++); - - /* Read x[n-numTaps-4] sample */ - x0 = *(px++); - - acc0 += p0; - acc1 += p1; - acc2 += p2; - acc3 += p3; - acc4 += p4; - acc5 += p5; - acc6 += p6; - acc7 += p7; - - - /* Perform the multiply-accumulate */ - p0 = x1 * c0; - p1 = x2 * c0; - p2 = x3 * c0; - p3 = x4 * c0; - p4 = x5 * c0; - p5 = x6 * c0; - p6 = x7 * c0; - p7 = x0 * c0; - - /* Read the b[numTaps-3] coefficient */ - c0 = *(pb++); - - /* Read x[n-numTaps-5] sample */ - x1 = *(px++); - - acc0 += p0; - acc1 += p1; - acc2 += p2; - acc3 += p3; - acc4 += p4; - acc5 += p5; - acc6 += p6; - acc7 += p7; - - /* Perform the multiply-accumulates */ - p0 = x2 * c0; - p1 = x3 * c0; - p2 = x4 * c0; - p3 = x5 * c0; - p4 = x6 * c0; - p5 = x7 * c0; - p6 = x0 * c0; - p7 = x1 * c0; - - /* Read the b[numTaps-4] coefficient */ - c0 = *(pb++); - - /* Read x[n-numTaps-6] sample */ - x2 = *(px++); - - acc0 += p0; - acc1 += p1; - acc2 += p2; - acc3 += p3; - acc4 += p4; - acc5 += p5; - acc6 += p6; - acc7 += p7; - - /* Perform the multiply-accumulates */ - p0 = x3 * c0; - p1 = x4 * c0; - p2 = x5 * c0; - p3 = x6 * c0; - p4 = x7 * c0; - p5 = x0 * c0; - p6 = x1 * c0; - p7 = x2 * c0; - - /* Read the b[numTaps-4] coefficient */ - c0 = *(pb++); - - /* Read x[n-numTaps-6] sample */ - x3 = *(px++); - - acc0 += p0; - acc1 += p1; - acc2 += p2; - acc3 += p3; - acc4 += p4; - acc5 += p5; - acc6 += p6; - acc7 += p7; - - /* Perform the multiply-accumulates */ - p0 = x4 * c0; - p1 = x5 * c0; - p2 = x6 * c0; - p3 = x7 * c0; - p4 = x0 * c0; - p5 = x1 * c0; - p6 = x2 * c0; - p7 = x3 * c0; - - /* Read the b[numTaps-4] coefficient */ - c0 = *(pb++); - - /* Read x[n-numTaps-6] sample */ - x4 = *(px++); - - acc0 += p0; - acc1 += p1; - acc2 += p2; - acc3 += p3; - acc4 += p4; - acc5 += p5; - acc6 += p6; - acc7 += p7; - - /* Perform the multiply-accumulates */ - p0 = x5 * c0; - p1 = x6 * c0; - p2 = x7 * c0; - p3 = x0 * c0; - p4 = x1 * c0; - p5 = x2 * c0; - p6 = x3 * c0; - p7 = x4 * c0; - - /* Read the b[numTaps-4] coefficient */ - c0 = *(pb++); - - /* Read x[n-numTaps-6] sample */ - x5 = *(px++); - - acc0 += p0; - acc1 += p1; - acc2 += p2; - acc3 += p3; - acc4 += p4; - acc5 += p5; - acc6 += p6; - acc7 += p7; - - /* Perform the multiply-accumulates */ - p0 = x6 * c0; - p1 = x7 * c0; - p2 = x0 * c0; - p3 = x1 * c0; - p4 = x2 * c0; - p5 = x3 * c0; - p6 = x4 * c0; - p7 = x5 * c0; - - /* Read the b[numTaps-4] coefficient */ - c0 = *(pb++); - - /* Read x[n-numTaps-6] sample */ - x6 = *(px++); - - acc0 += p0; - acc1 += p1; - acc2 += p2; - acc3 += p3; - acc4 += p4; - acc5 += p5; - acc6 += p6; - acc7 += p7; - - /* Perform the multiply-accumulates */ - p0 = x7 * c0; - p1 = x0 * c0; - p2 = x1 * c0; - p3 = x2 * c0; - p4 = x3 * c0; - p5 = x4 * c0; - p6 = x5 * c0; - p7 = x6 * c0; - - tapCnt--; - - acc0 += p0; - acc1 += p1; - acc2 += p2; - acc3 += p3; - acc4 += p4; - acc5 += p5; - acc6 += p6; - acc7 += p7; - } - - /* If the filter length is not a multiple of 8, compute the remaining filter taps */ - tapCnt = numTaps % 0x8U; - - while (tapCnt > 0U) - { - /* Read coefficients */ - c0 = *(pb++); - - /* Fetch 1 state variable */ - x7 = *(px++); - - /* Perform the multiply-accumulates */ - p0 = x0 * c0; - p1 = x1 * c0; - p2 = x2 * c0; - p3 = x3 * c0; - p4 = x4 * c0; - p5 = x5 * c0; - p6 = x6 * c0; - p7 = x7 * c0; - - /* Reuse the present sample states for next sample */ - x0 = x1; - x1 = x2; - x2 = x3; - x3 = x4; - x4 = x5; - x5 = x6; - x6 = x7; - - acc0 += p0; - acc1 += p1; - acc2 += p2; - acc3 += p3; - acc4 += p4; - acc5 += p5; - acc6 += p6; - acc7 += p7; - - /* Decrement the loop counter */ - tapCnt--; - } - - /* Advance the state pointer by 8 to process the next group of 8 samples */ - pState = pState + 8; - - /* The results in the 8 accumulators, store in the destination buffer. */ - *pDst++ = acc0; - *pDst++ = acc1; - *pDst++ = acc2; - *pDst++ = acc3; - *pDst++ = acc4; - *pDst++ = acc5; - *pDst++ = acc6; - *pDst++ = acc7; - - blkCnt--; - } - - /* If the blockSize is not a multiple of 8, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize % 0x8U; - - while (blkCnt > 0U) - { - /* Copy one sample at a time into state buffer */ - *pStateCurnt++ = *pSrc++; - - /* Set the accumulator to zero */ - acc0 = 0.0f; - - /* Initialize state pointer */ - px = pState; - - /* Initialize Coefficient pointer */ - pb = (pCoeffs); - - i = numTaps; - - /* Perform the multiply-accumulates */ - do - { - acc0 += *px++ * *pb++; - i--; - - } while (i > 0U); - - /* The result is store in the destination buffer. */ - *pDst++ = acc0; - - /* Advance state pointer by 1 for the next sample */ - pState = pState + 1; - - blkCnt--; - } - - /* Processing is complete. - ** Now copy the last numTaps - 1 samples to the start of the state buffer. - ** This prepares the state buffer for the next function call. */ - - /* Points to the start of the state buffer */ - pStateCurnt = S->pState; - - tapCnt = (numTaps - 1U) >> 2U; - - /* copy data */ - while (tapCnt > 0U) - { - *pStateCurnt++ = *pState++; - *pStateCurnt++ = *pState++; - *pStateCurnt++ = *pState++; - *pStateCurnt++ = *pState++; - - /* Decrement the loop counter */ - tapCnt--; - } - - /* Calculate remaining number of copies */ - tapCnt = (numTaps - 1U) % 0x4U; - - /* Copy the remaining q31_t data */ - while (tapCnt > 0U) - { - *pStateCurnt++ = *pState++; - - /* Decrement the loop counter */ - tapCnt--; - } -} - -#endif - -/** -* @} end of FIR group -*/ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_fast_q15.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_fast_q15.c deleted file mode 100644 index 212990c..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_fast_q15.c +++ /dev/null @@ -1,333 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_fir_fast_q15.c - * Description: Q15 Fast FIR filter processing function - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupFilters - */ - -/** - * @addtogroup FIR - * @{ - */ - -/** - * @param[in] *S points to an instance of the Q15 FIR filter structure. - * @param[in] *pSrc points to the block of input data. - * @param[out] *pDst points to the block of output data. - * @param[in] blockSize number of samples to process per call. - * @return none. - * - * Scaling and Overflow Behavior: - * \par - * This fast version uses a 32-bit accumulator with 2.30 format. - * The accumulator maintains full precision of the intermediate multiplication results but provides only a single guard bit. - * Thus, if the accumulator result overflows it wraps around and distorts the result. - * In order to avoid overflows completely the input signal must be scaled down by log2(numTaps) bits. - * The 2.30 accumulator is then truncated to 2.15 format and saturated to yield the 1.15 result. - * - * \par - * Refer to the function arm_fir_q15() for a slower implementation of this function which uses 64-bit accumulation to avoid wrap around distortion. Both the slow and the fast versions use the same instance structure. - * Use the function arm_fir_init_q15() to initialize the filter structure. - */ - -void arm_fir_fast_q15( - const arm_fir_instance_q15 * S, - q15_t * pSrc, - q15_t * pDst, - uint32_t blockSize) -{ - q15_t *pState = S->pState; /* State pointer */ - q15_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ - q15_t *pStateCurnt; /* Points to the current sample of the state */ - q31_t acc0, acc1, acc2, acc3; /* Accumulators */ - q15_t *pb; /* Temporary pointer for coefficient buffer */ - q15_t *px; /* Temporary q31 pointer for SIMD state buffer accesses */ - q31_t x0, x1, x2, c0; /* Temporary variables to hold SIMD state and coefficient values */ - uint32_t numTaps = S->numTaps; /* Number of taps in the filter */ - uint32_t tapCnt, blkCnt; /* Loop counters */ - - - /* S->pState points to state array which contains previous frame (numTaps - 1) samples */ - /* pStateCurnt points to the location where the new input data should be written */ - pStateCurnt = &(S->pState[(numTaps - 1U)]); - - /* Apply loop unrolling and compute 4 output values simultaneously. - * The variables acc0 ... acc3 hold output values that are being computed: - * - * acc0 = b[numTaps-1] * x[n-numTaps-1] + b[numTaps-2] * x[n-numTaps-2] + b[numTaps-3] * x[n-numTaps-3] +...+ b[0] * x[0] - * acc1 = b[numTaps-1] * x[n-numTaps] + b[numTaps-2] * x[n-numTaps-1] + b[numTaps-3] * x[n-numTaps-2] +...+ b[0] * x[1] - * acc2 = b[numTaps-1] * x[n-numTaps+1] + b[numTaps-2] * x[n-numTaps] + b[numTaps-3] * x[n-numTaps-1] +...+ b[0] * x[2] - * acc3 = b[numTaps-1] * x[n-numTaps+2] + b[numTaps-2] * x[n-numTaps+1] + b[numTaps-3] * x[n-numTaps] +...+ b[0] * x[3] - */ - - blkCnt = blockSize >> 2; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - /* Copy four new input samples into the state buffer. - ** Use 32-bit SIMD to move the 16-bit data. Only requires two copies. */ - *pStateCurnt++ = *pSrc++; - *pStateCurnt++ = *pSrc++; - *pStateCurnt++ = *pSrc++; - *pStateCurnt++ = *pSrc++; - - - /* Set all accumulators to zero */ - acc0 = 0; - acc1 = 0; - acc2 = 0; - acc3 = 0; - - /* Typecast q15_t pointer to q31_t pointer for state reading in q31_t */ - px = pState; - - /* Typecast q15_t pointer to q31_t pointer for coefficient reading in q31_t */ - pb = pCoeffs; - - /* Read the first two samples from the state buffer: x[n-N], x[n-N-1] */ - x0 = *__SIMD32(px)++; - - /* Read the third and forth samples from the state buffer: x[n-N-2], x[n-N-3] */ - x2 = *__SIMD32(px)++; - - /* Loop over the number of taps. Unroll by a factor of 4. - ** Repeat until we've computed numTaps-(numTaps%4) coefficients. */ - tapCnt = numTaps >> 2; - - while (tapCnt > 0) - { - /* Read the first two coefficients using SIMD: b[N] and b[N-1] coefficients */ - c0 = *__SIMD32(pb)++; - - /* acc0 += b[N] * x[n-N] + b[N-1] * x[n-N-1] */ - acc0 = __SMLAD(x0, c0, acc0); - - /* acc2 += b[N] * x[n-N-2] + b[N-1] * x[n-N-3] */ - acc2 = __SMLAD(x2, c0, acc2); - - /* pack x[n-N-1] and x[n-N-2] */ -#ifndef ARM_MATH_BIG_ENDIAN - x1 = __PKHBT(x2, x0, 0); -#else - x1 = __PKHBT(x0, x2, 0); -#endif - - /* Read state x[n-N-4], x[n-N-5] */ - x0 = _SIMD32_OFFSET(px); - - /* acc1 += b[N] * x[n-N-1] + b[N-1] * x[n-N-2] */ - acc1 = __SMLADX(x1, c0, acc1); - - /* pack x[n-N-3] and x[n-N-4] */ -#ifndef ARM_MATH_BIG_ENDIAN - x1 = __PKHBT(x0, x2, 0); -#else - x1 = __PKHBT(x2, x0, 0); -#endif - - /* acc3 += b[N] * x[n-N-3] + b[N-1] * x[n-N-4] */ - acc3 = __SMLADX(x1, c0, acc3); - - /* Read coefficients b[N-2], b[N-3] */ - c0 = *__SIMD32(pb)++; - - /* acc0 += b[N-2] * x[n-N-2] + b[N-3] * x[n-N-3] */ - acc0 = __SMLAD(x2, c0, acc0); - - /* Read state x[n-N-6], x[n-N-7] with offset */ - x2 = _SIMD32_OFFSET(px + 2U); - - /* acc2 += b[N-2] * x[n-N-4] + b[N-3] * x[n-N-5] */ - acc2 = __SMLAD(x0, c0, acc2); - - /* acc1 += b[N-2] * x[n-N-3] + b[N-3] * x[n-N-4] */ - acc1 = __SMLADX(x1, c0, acc1); - - /* pack x[n-N-5] and x[n-N-6] */ -#ifndef ARM_MATH_BIG_ENDIAN - x1 = __PKHBT(x2, x0, 0); -#else - x1 = __PKHBT(x0, x2, 0); -#endif - - /* acc3 += b[N-2] * x[n-N-5] + b[N-3] * x[n-N-6] */ - acc3 = __SMLADX(x1, c0, acc3); - - /* Update state pointer for next state reading */ - px += 4U; - - /* Decrement tap count */ - tapCnt--; - - } - - /* If the filter length is not a multiple of 4, compute the remaining filter taps. - ** This is always be 2 taps since the filter length is even. */ - if ((numTaps & 0x3U) != 0U) - { - - /* Read last two coefficients */ - c0 = *__SIMD32(pb)++; - - /* Perform the multiply-accumulates */ - acc0 = __SMLAD(x0, c0, acc0); - acc2 = __SMLAD(x2, c0, acc2); - - /* pack state variables */ -#ifndef ARM_MATH_BIG_ENDIAN - x1 = __PKHBT(x2, x0, 0); -#else - x1 = __PKHBT(x0, x2, 0); -#endif - - /* Read last state variables */ - x0 = *__SIMD32(px); - - /* Perform the multiply-accumulates */ - acc1 = __SMLADX(x1, c0, acc1); - - /* pack state variables */ -#ifndef ARM_MATH_BIG_ENDIAN - x1 = __PKHBT(x0, x2, 0); -#else - x1 = __PKHBT(x2, x0, 0); -#endif - - /* Perform the multiply-accumulates */ - acc3 = __SMLADX(x1, c0, acc3); - } - - /* The results in the 4 accumulators are in 2.30 format. Convert to 1.15 with saturation. - ** Then store the 4 outputs in the destination buffer. */ - -#ifndef ARM_MATH_BIG_ENDIAN - - *__SIMD32(pDst)++ = - __PKHBT(__SSAT((acc0 >> 15), 16), __SSAT((acc1 >> 15), 16), 16); - - *__SIMD32(pDst)++ = - __PKHBT(__SSAT((acc2 >> 15), 16), __SSAT((acc3 >> 15), 16), 16); - -#else - - *__SIMD32(pDst)++ = - __PKHBT(__SSAT((acc1 >> 15), 16), __SSAT((acc0 >> 15), 16), 16); - - *__SIMD32(pDst)++ = - __PKHBT(__SSAT((acc3 >> 15), 16), __SSAT((acc2 >> 15), 16), 16); - - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - /* Advance the state pointer by 4 to process the next group of 4 samples */ - pState = pState + 4U; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize % 0x4U; - while (blkCnt > 0U) - { - /* Copy two samples into state buffer */ - *pStateCurnt++ = *pSrc++; - - /* Set the accumulator to zero */ - acc0 = 0; - - /* Use SIMD to hold states and coefficients */ - px = pState; - pb = pCoeffs; - - tapCnt = numTaps >> 1U; - - do - { - - acc0 += (q31_t) * px++ * *pb++; - acc0 += (q31_t) * px++ * *pb++; - - tapCnt--; - } - while (tapCnt > 0U); - - /* The result is in 2.30 format. Convert to 1.15 with saturation. - ** Then store the output in the destination buffer. */ - *pDst++ = (q15_t) (__SSAT((acc0 >> 15), 16)); - - /* Advance state pointer by 1 for the next sample */ - pState = pState + 1U; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* Processing is complete. - ** Now copy the last numTaps - 1 samples to the satrt of the state buffer. - ** This prepares the state buffer for the next function call. */ - - /* Points to the start of the state buffer */ - pStateCurnt = S->pState; - - /* Calculation of count for copying integer writes */ - tapCnt = (numTaps - 1U) >> 2; - - while (tapCnt > 0U) - { - *pStateCurnt++ = *pState++; - *pStateCurnt++ = *pState++; - *pStateCurnt++ = *pState++; - *pStateCurnt++ = *pState++; - - tapCnt--; - - } - - /* Calculation of count for remaining q15_t data */ - tapCnt = (numTaps - 1U) % 0x4U; - - /* copy remaining data */ - while (tapCnt > 0U) - { - *pStateCurnt++ = *pState++; - - /* Decrement the loop counter */ - tapCnt--; - } - -} - -/** - * @} end of FIR group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_fast_q31.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_fast_q31.c deleted file mode 100644 index d37e13c..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_fast_q31.c +++ /dev/null @@ -1,293 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_fir_fast_q31.c - * Description: Processing function for the Q31 Fast FIR filter - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupFilters - */ - -/** - * @addtogroup FIR - * @{ - */ - -/** - * @param[in] *S points to an instance of the Q31 structure. - * @param[in] *pSrc points to the block of input data. - * @param[out] *pDst points to the block output data. - * @param[in] blockSize number of samples to process per call. - * @return none. - * - * Scaling and Overflow Behavior: - * - * \par - * This function is optimized for speed at the expense of fixed-point precision and overflow protection. - * The result of each 1.31 x 1.31 multiplication is truncated to 2.30 format. - * These intermediate results are added to a 2.30 accumulator. - * Finally, the accumulator is saturated and converted to a 1.31 result. - * The fast version has the same overflow behavior as the standard version and provides less precision since it discards the low 32 bits of each multiplication result. - * In order to avoid overflows completely the input signal must be scaled down by log2(numTaps) bits. - * - * \par - * Refer to the function arm_fir_q31() for a slower implementation of this function which uses a 64-bit accumulator to provide higher precision. Both the slow and the fast versions use the same instance structure. - * Use the function arm_fir_init_q31() to initialize the filter structure. - */ - -IAR_ONLY_LOW_OPTIMIZATION_ENTER -void arm_fir_fast_q31( - const arm_fir_instance_q31 * S, - q31_t * pSrc, - q31_t * pDst, - uint32_t blockSize) -{ - q31_t *pState = S->pState; /* State pointer */ - q31_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ - q31_t *pStateCurnt; /* Points to the current sample of the state */ - q31_t x0, x1, x2, x3; /* Temporary variables to hold state */ - q31_t c0; /* Temporary variable to hold coefficient value */ - q31_t *px; /* Temporary pointer for state */ - q31_t *pb; /* Temporary pointer for coefficient buffer */ - q31_t acc0, acc1, acc2, acc3; /* Accumulators */ - uint32_t numTaps = S->numTaps; /* Number of filter coefficients in the filter */ - uint32_t i, tapCnt, blkCnt; /* Loop counters */ - - /* S->pState points to buffer which contains previous frame (numTaps - 1) samples */ - /* pStateCurnt points to the location where the new input data should be written */ - pStateCurnt = &(S->pState[(numTaps - 1U)]); - - /* Apply loop unrolling and compute 4 output values simultaneously. - * The variables acc0 ... acc3 hold output values that are being computed: - * - * acc0 = b[numTaps-1] * x[n-numTaps-1] + b[numTaps-2] * x[n-numTaps-2] + b[numTaps-3] * x[n-numTaps-3] +...+ b[0] * x[0] - * acc1 = b[numTaps-1] * x[n-numTaps] + b[numTaps-2] * x[n-numTaps-1] + b[numTaps-3] * x[n-numTaps-2] +...+ b[0] * x[1] - * acc2 = b[numTaps-1] * x[n-numTaps+1] + b[numTaps-2] * x[n-numTaps] + b[numTaps-3] * x[n-numTaps-1] +...+ b[0] * x[2] - * acc3 = b[numTaps-1] * x[n-numTaps+2] + b[numTaps-2] * x[n-numTaps+1] + b[numTaps-3] * x[n-numTaps] +...+ b[0] * x[3] - */ - blkCnt = blockSize >> 2; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - /* Copy four new input samples into the state buffer */ - *pStateCurnt++ = *pSrc++; - *pStateCurnt++ = *pSrc++; - *pStateCurnt++ = *pSrc++; - *pStateCurnt++ = *pSrc++; - - /* Set all accumulators to zero */ - acc0 = 0; - acc1 = 0; - acc2 = 0; - acc3 = 0; - - /* Initialize state pointer */ - px = pState; - - /* Initialize coefficient pointer */ - pb = pCoeffs; - - /* Read the first three samples from the state buffer: - * x[n-numTaps], x[n-numTaps-1], x[n-numTaps-2] */ - x0 = *(px++); - x1 = *(px++); - x2 = *(px++); - - /* Loop unrolling. Process 4 taps at a time. */ - tapCnt = numTaps >> 2; - i = tapCnt; - - while (i > 0U) - { - /* Read the b[numTaps] coefficient */ - c0 = *pb; - - /* Read x[n-numTaps-3] sample */ - x3 = *px; - - /* acc0 += b[numTaps] * x[n-numTaps] */ - multAcc_32x32_keep32_R(acc0, x0, c0); - - /* acc1 += b[numTaps] * x[n-numTaps-1] */ - multAcc_32x32_keep32_R(acc1, x1, c0); - - /* acc2 += b[numTaps] * x[n-numTaps-2] */ - multAcc_32x32_keep32_R(acc2, x2, c0); - - /* acc3 += b[numTaps] * x[n-numTaps-3] */ - multAcc_32x32_keep32_R(acc3, x3, c0); - - /* Read the b[numTaps-1] coefficient */ - c0 = *(pb + 1U); - - /* Read x[n-numTaps-4] sample */ - x0 = *(px + 1U); - - /* Perform the multiply-accumulates */ - multAcc_32x32_keep32_R(acc0, x1, c0); - multAcc_32x32_keep32_R(acc1, x2, c0); - multAcc_32x32_keep32_R(acc2, x3, c0); - multAcc_32x32_keep32_R(acc3, x0, c0); - - /* Read the b[numTaps-2] coefficient */ - c0 = *(pb + 2U); - - /* Read x[n-numTaps-5] sample */ - x1 = *(px + 2U); - - /* Perform the multiply-accumulates */ - multAcc_32x32_keep32_R(acc0, x2, c0); - multAcc_32x32_keep32_R(acc1, x3, c0); - multAcc_32x32_keep32_R(acc2, x0, c0); - multAcc_32x32_keep32_R(acc3, x1, c0); - - /* Read the b[numTaps-3] coefficients */ - c0 = *(pb + 3U); - - /* Read x[n-numTaps-6] sample */ - x2 = *(px + 3U); - - /* Perform the multiply-accumulates */ - multAcc_32x32_keep32_R(acc0, x3, c0); - multAcc_32x32_keep32_R(acc1, x0, c0); - multAcc_32x32_keep32_R(acc2, x1, c0); - multAcc_32x32_keep32_R(acc3, x2, c0); - - /* update coefficient pointer */ - pb += 4U; - px += 4U; - - /* Decrement the loop counter */ - i--; - } - - /* If the filter length is not a multiple of 4, compute the remaining filter taps */ - - i = numTaps - (tapCnt * 4U); - while (i > 0U) - { - /* Read coefficients */ - c0 = *(pb++); - - /* Fetch 1 state variable */ - x3 = *(px++); - - /* Perform the multiply-accumulates */ - multAcc_32x32_keep32_R(acc0, x0, c0); - multAcc_32x32_keep32_R(acc1, x1, c0); - multAcc_32x32_keep32_R(acc2, x2, c0); - multAcc_32x32_keep32_R(acc3, x3, c0); - - /* Reuse the present sample states for next sample */ - x0 = x1; - x1 = x2; - x2 = x3; - - /* Decrement the loop counter */ - i--; - } - - /* Advance the state pointer by 4 to process the next group of 4 samples */ - pState = pState + 4; - - /* The results in the 4 accumulators are in 2.30 format. Convert to 1.31 - ** Then store the 4 outputs in the destination buffer. */ - *pDst++ = (q31_t) (acc0 << 1); - *pDst++ = (q31_t) (acc1 << 1); - *pDst++ = (q31_t) (acc2 << 1); - *pDst++ = (q31_t) (acc3 << 1); - - /* Decrement the samples loop counter */ - blkCnt--; - } - - - /* If the blockSize is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize % 4U; - - while (blkCnt > 0U) - { - /* Copy one sample at a time into state buffer */ - *pStateCurnt++ = *pSrc++; - - /* Set the accumulator to zero */ - acc0 = 0; - - /* Initialize state pointer */ - px = pState; - - /* Initialize Coefficient pointer */ - pb = (pCoeffs); - - i = numTaps; - - /* Perform the multiply-accumulates */ - do - { - multAcc_32x32_keep32_R(acc0, (*px++), (*(pb++))); - i--; - } while (i > 0U); - - /* The result is in 2.30 format. Convert to 1.31 - ** Then store the output in the destination buffer. */ - *pDst++ = (q31_t) (acc0 << 1); - - /* Advance state pointer by 1 for the next sample */ - pState = pState + 1; - - /* Decrement the samples loop counter */ - blkCnt--; - } - - /* Processing is complete. - ** Now copy the last numTaps - 1 samples to the start of the state buffer. - ** This prepares the state buffer for the next function call. */ - - /* Points to the start of the state buffer */ - pStateCurnt = S->pState; - - /* Calculate remaining number of copies */ - tapCnt = (numTaps - 1U); - - /* Copy the remaining q31_t data */ - while (tapCnt > 0U) - { - *pStateCurnt++ = *pState++; - - /* Decrement the loop counter */ - tapCnt--; - } - - -} -IAR_ONLY_LOW_OPTIMIZATION_EXIT -/** - * @} end of FIR group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_init_f32.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_init_f32.c deleted file mode 100644 index 8bcb736..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_init_f32.c +++ /dev/null @@ -1,84 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_fir_init_f32.c - * Description: Floating-point FIR filter initialization function - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupFilters - */ - -/** - * @addtogroup FIR - * @{ - */ - -/** - * @details - * - * @param[in,out] *S points to an instance of the floating-point FIR filter structure. - * @param[in] numTaps Number of filter coefficients in the filter. - * @param[in] *pCoeffs points to the filter coefficients buffer. - * @param[in] *pState points to the state buffer. - * @param[in] blockSize number of samples that are processed per call. - * @return none. - * - * Description: - * \par - * pCoeffs points to the array of filter coefficients stored in time reversed order: - *
- *    {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}
- * 
- * \par - * pState points to the array of state variables. - * pState is of length numTaps+blockSize-1 samples, where blockSize is the number of input samples processed by each call to arm_fir_f32(). - */ - -void arm_fir_init_f32( - arm_fir_instance_f32 * S, - uint16_t numTaps, - float32_t * pCoeffs, - float32_t * pState, - uint32_t blockSize) -{ - /* Assign filter taps */ - S->numTaps = numTaps; - - /* Assign coefficient pointer */ - S->pCoeffs = pCoeffs; - - /* Clear state buffer and the size of state buffer is (blockSize + numTaps - 1) */ - memset(pState, 0, (numTaps + (blockSize - 1U)) * sizeof(float32_t)); - - /* Assign state pointer */ - S->pState = pState; - -} - -/** - * @} end of FIR group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_init_q15.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_init_q15.c deleted file mode 100644 index e4d6ef8..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_init_q15.c +++ /dev/null @@ -1,142 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_fir_init_q15.c - * Description: Q15 FIR filter initialization function - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupFilters - */ - -/** - * @addtogroup FIR - * @{ - */ - -/** - * @param[in,out] *S points to an instance of the Q15 FIR filter structure. - * @param[in] numTaps Number of filter coefficients in the filter. Must be even and greater than or equal to 4. - * @param[in] *pCoeffs points to the filter coefficients buffer. - * @param[in] *pState points to the state buffer. - * @param[in] blockSize is number of samples processed per call. - * @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if - * numTaps is not greater than or equal to 4 and even. - * - * Description: - * \par - * pCoeffs points to the array of filter coefficients stored in time reversed order: - *
- *    {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}
- * 
- * Note that numTaps must be even and greater than or equal to 4. - * To implement an odd length filter simply increase numTaps by 1 and set the last coefficient to zero. - * For example, to implement a filter with numTaps=3 and coefficients - *
- *     {0.3, -0.8, 0.3}
- * 
- * set numTaps=4 and use the coefficients: - *
- *     {0.3, -0.8, 0.3, 0}.
- * 
- * Similarly, to implement a two point filter - *
- *     {0.3, -0.3}
- * 
- * set numTaps=4 and use the coefficients: - *
- *     {0.3, -0.3, 0, 0}.
- * 
- * \par - * pState points to the array of state variables. - * pState is of length numTaps+blockSize, when running on Cortex-M4 and Cortex-M3 and is of length numTaps+blockSize-1, when running on Cortex-M0 where blockSize is the number of input samples processed by each call to arm_fir_q15(). - */ - -arm_status arm_fir_init_q15( - arm_fir_instance_q15 * S, - uint16_t numTaps, - q15_t * pCoeffs, - q15_t * pState, - uint32_t blockSize) -{ - arm_status status; - - -#if defined (ARM_MATH_DSP) - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - /* The Number of filter coefficients in the filter must be even and at least 4 */ - if (numTaps & 0x1U) - { - status = ARM_MATH_ARGUMENT_ERROR; - } - else - { - /* Assign filter taps */ - S->numTaps = numTaps; - - /* Assign coefficient pointer */ - S->pCoeffs = pCoeffs; - - /* Clear the state buffer. The size is always (blockSize + numTaps ) */ - memset(pState, 0, (numTaps + (blockSize)) * sizeof(q15_t)); - - /* Assign state pointer */ - S->pState = pState; - - status = ARM_MATH_SUCCESS; - } - - return (status); - -#else - - /* Run the below code for Cortex-M0 */ - - /* Assign filter taps */ - S->numTaps = numTaps; - - /* Assign coefficient pointer */ - S->pCoeffs = pCoeffs; - - /* Clear the state buffer. The size is always (blockSize + numTaps - 1) */ - memset(pState, 0, (numTaps + (blockSize - 1U)) * sizeof(q15_t)); - - /* Assign state pointer */ - S->pState = pState; - - status = ARM_MATH_SUCCESS; - - return (status); - -#endif /* #if defined (ARM_MATH_DSP) */ - -} - -/** - * @} end of FIR group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_init_q31.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_init_q31.c deleted file mode 100644 index 3308438..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_init_q31.c +++ /dev/null @@ -1,84 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_fir_init_q31.c - * Description: Q31 FIR filter initialization function. - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupFilters - */ - -/** - * @addtogroup FIR - * @{ - */ - -/** - * @details - * - * @param[in,out] *S points to an instance of the Q31 FIR filter structure. - * @param[in] numTaps Number of filter coefficients in the filter. - * @param[in] *pCoeffs points to the filter coefficients buffer. - * @param[in] *pState points to the state buffer. - * @param[in] blockSize number of samples that are processed per call. - * @return none. - * - * Description: - * \par - * pCoeffs points to the array of filter coefficients stored in time reversed order: - *
- *    {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}
- * 
- * \par - * pState points to the array of state variables. - * pState is of length numTaps+blockSize-1 samples, where blockSize is the number of input samples processed by each call to arm_fir_q31(). - */ - -void arm_fir_init_q31( - arm_fir_instance_q31 * S, - uint16_t numTaps, - q31_t * pCoeffs, - q31_t * pState, - uint32_t blockSize) -{ - /* Assign filter taps */ - S->numTaps = numTaps; - - /* Assign coefficient pointer */ - S->pCoeffs = pCoeffs; - - /* Clear state buffer and state array size is (blockSize + numTaps - 1) */ - memset(pState, 0, (blockSize + ((uint32_t) numTaps - 1U)) * sizeof(q31_t)); - - /* Assign state pointer */ - S->pState = pState; - -} - -/** - * @} end of FIR group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_init_q7.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_init_q7.c deleted file mode 100644 index 38cc7b4..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_init_q7.c +++ /dev/null @@ -1,82 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_fir_init_q7.c - * Description: Q7 FIR filter initialization function - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupFilters - */ - -/** - * @addtogroup FIR - * @{ - */ -/** - * @param[in,out] *S points to an instance of the Q7 FIR filter structure. - * @param[in] numTaps Number of filter coefficients in the filter. - * @param[in] *pCoeffs points to the filter coefficients buffer. - * @param[in] *pState points to the state buffer. - * @param[in] blockSize number of samples that are processed per call. - * @return none - * - * Description: - * \par - * pCoeffs points to the array of filter coefficients stored in time reversed order: - *
- *    {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}
- * 
- * \par - * pState points to the array of state variables. - * pState is of length numTaps+blockSize-1 samples, where blockSize is the number of input samples processed by each call to arm_fir_q7(). - */ - -void arm_fir_init_q7( - arm_fir_instance_q7 * S, - uint16_t numTaps, - q7_t * pCoeffs, - q7_t * pState, - uint32_t blockSize) -{ - - /* Assign filter taps */ - S->numTaps = numTaps; - - /* Assign coefficient pointer */ - S->pCoeffs = pCoeffs; - - /* Clear the state buffer. The size is always (blockSize + numTaps - 1) */ - memset(pState, 0, (numTaps + (blockSize - 1U)) * sizeof(q7_t)); - - /* Assign state pointer */ - S->pState = pState; - -} - -/** - * @} end of FIR group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_interpolate_f32.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_interpolate_f32.c deleted file mode 100644 index 66cfcf8..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_interpolate_f32.c +++ /dev/null @@ -1,569 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_fir_interpolate_f32.c - * Description: Floating-point FIR interpolation sequences - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @defgroup FIR_Interpolate Finite Impulse Response (FIR) Interpolator - * - * These functions combine an upsampler (zero stuffer) and an FIR filter. - * They are used in multirate systems for increasing the sample rate of a signal without introducing high frequency images. - * Conceptually, the functions are equivalent to the block diagram below: - * \image html FIRInterpolator.gif "Components included in the FIR Interpolator functions" - * After upsampling by a factor of L, the signal should be filtered by a lowpass filter with a normalized - * cutoff frequency of 1/L in order to eliminate high frequency copies of the spectrum. - * The user of the function is responsible for providing the filter coefficients. - * - * The FIR interpolator functions provided in the CMSIS DSP Library combine the upsampler and FIR filter in an efficient manner. - * The upsampler inserts L-1 zeros between each sample. - * Instead of multiplying by these zero values, the FIR filter is designed to skip them. - * This leads to an efficient implementation without any wasted effort. - * The functions operate on blocks of input and output data. - * pSrc points to an array of blockSize input values and - * pDst points to an array of blockSize*L output values. - * - * The library provides separate functions for Q15, Q31, and floating-point data types. - * - * \par Algorithm: - * The functions use a polyphase filter structure: - *
- *    y[n] = b[0] * x[n] + b[L]   * x[n-1] + ... + b[L*(phaseLength-1)] * x[n-phaseLength+1]
- *    y[n+1] = b[1] * x[n] + b[L+1] * x[n-1] + ... + b[L*(phaseLength-1)+1] * x[n-phaseLength+1]
- *    ...
- *    y[n+(L-1)] = b[L-1] * x[n] + b[2*L-1] * x[n-1] + ....+ b[L*(phaseLength-1)+(L-1)] * x[n-phaseLength+1]
- * 
- * This approach is more efficient than straightforward upsample-then-filter algorithms. - * With this method the computation is reduced by a factor of 1/L when compared to using a standard FIR filter. - * \par - * pCoeffs points to a coefficient array of size numTaps. - * numTaps must be a multiple of the interpolation factor L and this is checked by the - * initialization functions. - * Internally, the function divides the FIR filter's impulse response into shorter filters of length - * phaseLength=numTaps/L. - * Coefficients are stored in time reversed order. - * \par - *
- *    {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}
- * 
- * \par - * pState points to a state array of size blockSize + phaseLength - 1. - * Samples in the state buffer are stored in the order: - * \par - *
- *    {x[n-phaseLength+1], x[n-phaseLength], x[n-phaseLength-1], x[n-phaseLength-2]....x[0], x[1], ..., x[blockSize-1]}
- * 
- * The state variables are updated after each block of data is processed, the coefficients are untouched. - * - * \par Instance Structure - * The coefficients and state variables for a filter are stored together in an instance data structure. - * A separate instance structure must be defined for each filter. - * Coefficient arrays may be shared among several instances while state variable array should be allocated separately. - * There are separate instance structure declarations for each of the 3 supported data types. - * - * \par Initialization Functions - * There is also an associated initialization function for each data type. - * The initialization function performs the following operations: - * - Sets the values of the internal structure fields. - * - Zeros out the values in the state buffer. - * - Checks to make sure that the length of the filter is a multiple of the interpolation factor. - * To do this manually without calling the init function, assign the follow subfields of the instance structure: - * L (interpolation factor), pCoeffs, phaseLength (numTaps / L), pState. Also set all of the values in pState to zero. - * - * \par - * Use of the initialization function is optional. - * However, if the initialization function is used, then the instance structure cannot be placed into a const data section. - * To place an instance structure into a const data section, the instance structure must be manually initialized. - * The code below statically initializes each of the 3 different data type filter instance structures - *
- * arm_fir_interpolate_instance_f32 S = {L, phaseLength, pCoeffs, pState};
- * arm_fir_interpolate_instance_q31 S = {L, phaseLength, pCoeffs, pState};
- * arm_fir_interpolate_instance_q15 S = {L, phaseLength, pCoeffs, pState};
- * 
- * where L is the interpolation factor; phaseLength=numTaps/L is the - * length of each of the shorter FIR filters used internally, - * pCoeffs is the address of the coefficient buffer; - * pState is the address of the state buffer. - * Be sure to set the values in the state buffer to zeros when doing static initialization. - * - * \par Fixed-Point Behavior - * Care must be taken when using the fixed-point versions of the FIR interpolate filter functions. - * In particular, the overflow and saturation behavior of the accumulator used in each function must be considered. - * Refer to the function specific documentation below for usage guidelines. - */ - -/** - * @addtogroup FIR_Interpolate - * @{ - */ - -/** - * @brief Processing function for the floating-point FIR interpolator. - * @param[in] *S points to an instance of the floating-point FIR interpolator structure. - * @param[in] *pSrc points to the block of input data. - * @param[out] *pDst points to the block of output data. - * @param[in] blockSize number of input samples to process per call. - * @return none. - */ -#if defined (ARM_MATH_DSP) - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - -void arm_fir_interpolate_f32( - const arm_fir_interpolate_instance_f32 * S, - float32_t * pSrc, - float32_t * pDst, - uint32_t blockSize) -{ - float32_t *pState = S->pState; /* State pointer */ - float32_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ - float32_t *pStateCurnt; /* Points to the current sample of the state */ - float32_t *ptr1, *ptr2; /* Temporary pointers for state and coefficient buffers */ - float32_t sum0; /* Accumulators */ - float32_t x0, c0; /* Temporary variables to hold state and coefficient values */ - uint32_t i, blkCnt, j; /* Loop counters */ - uint16_t phaseLen = S->phaseLength, tapCnt; /* Length of each polyphase filter component */ - float32_t acc0, acc1, acc2, acc3; - float32_t x1, x2, x3; - uint32_t blkCntN4; - float32_t c1, c2, c3; - - /* S->pState buffer contains previous frame (phaseLen - 1) samples */ - /* pStateCurnt points to the location where the new input data should be written */ - pStateCurnt = S->pState + (phaseLen - 1U); - - /* Initialise blkCnt */ - blkCnt = blockSize / 4; - blkCntN4 = blockSize - (4 * blkCnt); - - /* Samples loop unrolled by 4 */ - while (blkCnt > 0U) - { - /* Copy new input sample into the state buffer */ - *pStateCurnt++ = *pSrc++; - *pStateCurnt++ = *pSrc++; - *pStateCurnt++ = *pSrc++; - *pStateCurnt++ = *pSrc++; - - /* Address modifier index of coefficient buffer */ - j = 1U; - - /* Loop over the Interpolation factor. */ - i = (S->L); - - while (i > 0U) - { - /* Set accumulator to zero */ - acc0 = 0.0f; - acc1 = 0.0f; - acc2 = 0.0f; - acc3 = 0.0f; - - /* Initialize state pointer */ - ptr1 = pState; - - /* Initialize coefficient pointer */ - ptr2 = pCoeffs + (S->L - j); - - /* Loop over the polyPhase length. Unroll by a factor of 4. - ** Repeat until we've computed numTaps-(4*S->L) coefficients. */ - tapCnt = phaseLen >> 2U; - - x0 = *(ptr1++); - x1 = *(ptr1++); - x2 = *(ptr1++); - - while (tapCnt > 0U) - { - - /* Read the input sample */ - x3 = *(ptr1++); - - /* Read the coefficient */ - c0 = *(ptr2); - - /* Perform the multiply-accumulate */ - acc0 += x0 * c0; - acc1 += x1 * c0; - acc2 += x2 * c0; - acc3 += x3 * c0; - - /* Read the coefficient */ - c1 = *(ptr2 + S->L); - - /* Read the input sample */ - x0 = *(ptr1++); - - /* Perform the multiply-accumulate */ - acc0 += x1 * c1; - acc1 += x2 * c1; - acc2 += x3 * c1; - acc3 += x0 * c1; - - /* Read the coefficient */ - c2 = *(ptr2 + S->L * 2); - - /* Read the input sample */ - x1 = *(ptr1++); - - /* Perform the multiply-accumulate */ - acc0 += x2 * c2; - acc1 += x3 * c2; - acc2 += x0 * c2; - acc3 += x1 * c2; - - /* Read the coefficient */ - c3 = *(ptr2 + S->L * 3); - - /* Read the input sample */ - x2 = *(ptr1++); - - /* Perform the multiply-accumulate */ - acc0 += x3 * c3; - acc1 += x0 * c3; - acc2 += x1 * c3; - acc3 += x2 * c3; - - - /* Upsampling is done by stuffing L-1 zeros between each sample. - * So instead of multiplying zeros with coefficients, - * Increment the coefficient pointer by interpolation factor times. */ - ptr2 += 4 * S->L; - - /* Decrement the loop counter */ - tapCnt--; - } - - /* If the polyPhase length is not a multiple of 4, compute the remaining filter taps */ - tapCnt = phaseLen % 0x4U; - - while (tapCnt > 0U) - { - - /* Read the input sample */ - x3 = *(ptr1++); - - /* Read the coefficient */ - c0 = *(ptr2); - - /* Perform the multiply-accumulate */ - acc0 += x0 * c0; - acc1 += x1 * c0; - acc2 += x2 * c0; - acc3 += x3 * c0; - - /* Increment the coefficient pointer by interpolation factor times. */ - ptr2 += S->L; - - /* update states for next sample processing */ - x0 = x1; - x1 = x2; - x2 = x3; - - /* Decrement the loop counter */ - tapCnt--; - } - - /* The result is in the accumulator, store in the destination buffer. */ - *pDst = acc0; - *(pDst + S->L) = acc1; - *(pDst + 2 * S->L) = acc2; - *(pDst + 3 * S->L) = acc3; - - pDst++; - - /* Increment the address modifier index of coefficient buffer */ - j++; - - /* Decrement the loop counter */ - i--; - } - - /* Advance the state pointer by 1 - * to process the next group of interpolation factor number samples */ - pState = pState + 4; - - pDst += S->L * 3; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - - while (blkCntN4 > 0U) - { - /* Copy new input sample into the state buffer */ - *pStateCurnt++ = *pSrc++; - - /* Address modifier index of coefficient buffer */ - j = 1U; - - /* Loop over the Interpolation factor. */ - i = S->L; - while (i > 0U) - { - /* Set accumulator to zero */ - sum0 = 0.0f; - - /* Initialize state pointer */ - ptr1 = pState; - - /* Initialize coefficient pointer */ - ptr2 = pCoeffs + (S->L - j); - - /* Loop over the polyPhase length. Unroll by a factor of 4. - ** Repeat until we've computed numTaps-(4*S->L) coefficients. */ - tapCnt = phaseLen >> 2U; - while (tapCnt > 0U) - { - - /* Read the coefficient */ - c0 = *(ptr2); - - /* Upsampling is done by stuffing L-1 zeros between each sample. - * So instead of multiplying zeros with coefficients, - * Increment the coefficient pointer by interpolation factor times. */ - ptr2 += S->L; - - /* Read the input sample */ - x0 = *(ptr1++); - - /* Perform the multiply-accumulate */ - sum0 += x0 * c0; - - /* Read the coefficient */ - c0 = *(ptr2); - - /* Increment the coefficient pointer by interpolation factor times. */ - ptr2 += S->L; - - /* Read the input sample */ - x0 = *(ptr1++); - - /* Perform the multiply-accumulate */ - sum0 += x0 * c0; - - /* Read the coefficient */ - c0 = *(ptr2); - - /* Increment the coefficient pointer by interpolation factor times. */ - ptr2 += S->L; - - /* Read the input sample */ - x0 = *(ptr1++); - - /* Perform the multiply-accumulate */ - sum0 += x0 * c0; - - /* Read the coefficient */ - c0 = *(ptr2); - - /* Increment the coefficient pointer by interpolation factor times. */ - ptr2 += S->L; - - /* Read the input sample */ - x0 = *(ptr1++); - - /* Perform the multiply-accumulate */ - sum0 += x0 * c0; - - /* Decrement the loop counter */ - tapCnt--; - } - - /* If the polyPhase length is not a multiple of 4, compute the remaining filter taps */ - tapCnt = phaseLen % 0x4U; - - while (tapCnt > 0U) - { - /* Perform the multiply-accumulate */ - sum0 += *(ptr1++) * (*ptr2); - - /* Increment the coefficient pointer by interpolation factor times. */ - ptr2 += S->L; - - /* Decrement the loop counter */ - tapCnt--; - } - - /* The result is in the accumulator, store in the destination buffer. */ - *pDst++ = sum0; - - /* Increment the address modifier index of coefficient buffer */ - j++; - - /* Decrement the loop counter */ - i--; - } - - /* Advance the state pointer by 1 - * to process the next group of interpolation factor number samples */ - pState = pState + 1; - - /* Decrement the loop counter */ - blkCntN4--; - } - - /* Processing is complete. - ** Now copy the last phaseLen - 1 samples to the satrt of the state buffer. - ** This prepares the state buffer for the next function call. */ - - /* Points to the start of the state buffer */ - pStateCurnt = S->pState; - - tapCnt = (phaseLen - 1U) >> 2U; - - /* copy data */ - while (tapCnt > 0U) - { - *pStateCurnt++ = *pState++; - *pStateCurnt++ = *pState++; - *pStateCurnt++ = *pState++; - *pStateCurnt++ = *pState++; - - /* Decrement the loop counter */ - tapCnt--; - } - - tapCnt = (phaseLen - 1U) % 0x04U; - - /* copy data */ - while (tapCnt > 0U) - { - *pStateCurnt++ = *pState++; - - /* Decrement the loop counter */ - tapCnt--; - } -} - -#else - - /* Run the below code for Cortex-M0 */ - -void arm_fir_interpolate_f32( - const arm_fir_interpolate_instance_f32 * S, - float32_t * pSrc, - float32_t * pDst, - uint32_t blockSize) -{ - float32_t *pState = S->pState; /* State pointer */ - float32_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ - float32_t *pStateCurnt; /* Points to the current sample of the state */ - float32_t *ptr1, *ptr2; /* Temporary pointers for state and coefficient buffers */ - - - float32_t sum; /* Accumulator */ - uint32_t i, blkCnt; /* Loop counters */ - uint16_t phaseLen = S->phaseLength, tapCnt; /* Length of each polyphase filter component */ - - - /* S->pState buffer contains previous frame (phaseLen - 1) samples */ - /* pStateCurnt points to the location where the new input data should be written */ - pStateCurnt = S->pState + (phaseLen - 1U); - - /* Total number of intput samples */ - blkCnt = blockSize; - - /* Loop over the blockSize. */ - while (blkCnt > 0U) - { - /* Copy new input sample into the state buffer */ - *pStateCurnt++ = *pSrc++; - - /* Loop over the Interpolation factor. */ - i = S->L; - - while (i > 0U) - { - /* Set accumulator to zero */ - sum = 0.0f; - - /* Initialize state pointer */ - ptr1 = pState; - - /* Initialize coefficient pointer */ - ptr2 = pCoeffs + (i - 1U); - - /* Loop over the polyPhase length */ - tapCnt = phaseLen; - - while (tapCnt > 0U) - { - /* Perform the multiply-accumulate */ - sum += *ptr1++ * *ptr2; - - /* Increment the coefficient pointer by interpolation factor times. */ - ptr2 += S->L; - - /* Decrement the loop counter */ - tapCnt--; - } - - /* The result is in the accumulator, store in the destination buffer. */ - *pDst++ = sum; - - /* Decrement the loop counter */ - i--; - } - - /* Advance the state pointer by 1 - * to process the next group of interpolation factor number samples */ - pState = pState + 1; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* Processing is complete. - ** Now copy the last phaseLen - 1 samples to the start of the state buffer. - ** This prepares the state buffer for the next function call. */ - - /* Points to the start of the state buffer */ - pStateCurnt = S->pState; - - tapCnt = phaseLen - 1U; - - while (tapCnt > 0U) - { - *pStateCurnt++ = *pState++; - - /* Decrement the loop counter */ - tapCnt--; - } - -} - -#endif /* #if defined (ARM_MATH_DSP) */ - - - - /** - * @} end of FIR_Interpolate group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_interpolate_init_f32.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_interpolate_init_f32.c deleted file mode 100644 index 05fc370..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_interpolate_init_f32.c +++ /dev/null @@ -1,109 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_fir_interpolate_init_f32.c - * Description: Floating-point FIR interpolator initialization function - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupFilters - */ - -/** - * @addtogroup FIR_Interpolate - * @{ - */ - -/** - * @brief Initialization function for the floating-point FIR interpolator. - * @param[in,out] *S points to an instance of the floating-point FIR interpolator structure. - * @param[in] L upsample factor. - * @param[in] numTaps number of filter coefficients in the filter. - * @param[in] *pCoeffs points to the filter coefficient buffer. - * @param[in] *pState points to the state buffer. - * @param[in] blockSize number of input samples to process per call. - * @return The function returns ARM_MATH_SUCCESS if initialization was successful or ARM_MATH_LENGTH_ERROR if - * the filter length numTaps is not a multiple of the interpolation factor L. - * - * Description: - * \par - * pCoeffs points to the array of filter coefficients stored in time reversed order: - *
- *    {b[numTaps-1], b[numTaps-2], b[numTaps-2], ..., b[1], b[0]}
- * 
- * The length of the filter numTaps must be a multiple of the interpolation factor L. - * \par - * pState points to the array of state variables. - * pState is of length (numTaps/L)+blockSize-1 words - * where blockSize is the number of input samples processed by each call to arm_fir_interpolate_f32(). - */ - -arm_status arm_fir_interpolate_init_f32( - arm_fir_interpolate_instance_f32 * S, - uint8_t L, - uint16_t numTaps, - float32_t * pCoeffs, - float32_t * pState, - uint32_t blockSize) -{ - arm_status status; - - /* The filter length must be a multiple of the interpolation factor */ - if ((numTaps % L) != 0U) - { - /* Set status as ARM_MATH_LENGTH_ERROR */ - status = ARM_MATH_LENGTH_ERROR; - } - else - { - - /* Assign coefficient pointer */ - S->pCoeffs = pCoeffs; - - /* Assign Interpolation factor */ - S->L = L; - - /* Assign polyPhaseLength */ - S->phaseLength = numTaps / L; - - /* Clear state buffer and size of state array is always phaseLength + blockSize - 1 */ - memset(pState, 0, - (blockSize + - ((uint32_t) S->phaseLength - 1U)) * sizeof(float32_t)); - - /* Assign state pointer */ - S->pState = pState; - - status = ARM_MATH_SUCCESS; - } - - return (status); - -} - - /** - * @} end of FIR_Interpolate group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_interpolate_init_q15.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_interpolate_init_q15.c deleted file mode 100644 index 3b3fb79..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_interpolate_init_q15.c +++ /dev/null @@ -1,108 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_fir_interpolate_init_q15.c - * Description: Q15 FIR interpolator initialization function - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupFilters - */ - -/** - * @addtogroup FIR_Interpolate - * @{ - */ - -/** - * @brief Initialization function for the Q15 FIR interpolator. - * @param[in,out] *S points to an instance of the Q15 FIR interpolator structure. - * @param[in] L upsample factor. - * @param[in] numTaps number of filter coefficients in the filter. - * @param[in] *pCoeffs points to the filter coefficient buffer. - * @param[in] *pState points to the state buffer. - * @param[in] blockSize number of input samples to process per call. - * @return The function returns ARM_MATH_SUCCESS if initialization was successful or ARM_MATH_LENGTH_ERROR if - * the filter length numTaps is not a multiple of the interpolation factor L. - * - * Description: - * \par - * pCoeffs points to the array of filter coefficients stored in time reversed order: - *
- *    {b[numTaps-1], b[numTaps-2], b[numTaps-2], ..., b[1], b[0]}
- * 
- * The length of the filter numTaps must be a multiple of the interpolation factor L. - * \par - * pState points to the array of state variables. - * pState is of length (numTaps/L)+blockSize-1 words - * where blockSize is the number of input samples processed by each call to arm_fir_interpolate_q15(). - */ - -arm_status arm_fir_interpolate_init_q15( - arm_fir_interpolate_instance_q15 * S, - uint8_t L, - uint16_t numTaps, - q15_t * pCoeffs, - q15_t * pState, - uint32_t blockSize) -{ - arm_status status; - - /* The filter length must be a multiple of the interpolation factor */ - if ((numTaps % L) != 0U) - { - /* Set status as ARM_MATH_LENGTH_ERROR */ - status = ARM_MATH_LENGTH_ERROR; - } - else - { - - /* Assign coefficient pointer */ - S->pCoeffs = pCoeffs; - - /* Assign Interpolation factor */ - S->L = L; - - /* Assign polyPhaseLength */ - S->phaseLength = numTaps / L; - - /* Clear state buffer and size of buffer is always phaseLength + blockSize - 1 */ - memset(pState, 0, - (blockSize + ((uint32_t) S->phaseLength - 1U)) * sizeof(q15_t)); - - /* Assign state pointer */ - S->pState = pState; - - status = ARM_MATH_SUCCESS; - } - - return (status); - -} - - /** - * @} end of FIR_Interpolate group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_interpolate_init_q31.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_interpolate_init_q31.c deleted file mode 100644 index 03959c0..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_interpolate_init_q31.c +++ /dev/null @@ -1,109 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_fir_interpolate_init_q31.c - * Description: Q31 FIR interpolator initialization function - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupFilters - */ - -/** - * @addtogroup FIR_Interpolate - * @{ - */ - - -/** - * @brief Initialization function for the Q31 FIR interpolator. - * @param[in,out] *S points to an instance of the Q31 FIR interpolator structure. - * @param[in] L upsample factor. - * @param[in] numTaps number of filter coefficients in the filter. - * @param[in] *pCoeffs points to the filter coefficient buffer. - * @param[in] *pState points to the state buffer. - * @param[in] blockSize number of input samples to process per call. - * @return The function returns ARM_MATH_SUCCESS if initialization was successful or ARM_MATH_LENGTH_ERROR if - * the filter length numTaps is not a multiple of the interpolation factor L. - * - * Description: - * \par - * pCoeffs points to the array of filter coefficients stored in time reversed order: - *
- *    {b[numTaps-1], b[numTaps-2], b[numTaps-2], ..., b[1], b[0]}
- * 
- * The length of the filter numTaps must be a multiple of the interpolation factor L. - * \par - * pState points to the array of state variables. - * pState is of length (numTaps/L)+blockSize-1 words - * where blockSize is the number of input samples processed by each call to arm_fir_interpolate_q31(). - */ - -arm_status arm_fir_interpolate_init_q31( - arm_fir_interpolate_instance_q31 * S, - uint8_t L, - uint16_t numTaps, - q31_t * pCoeffs, - q31_t * pState, - uint32_t blockSize) -{ - arm_status status; - - /* The filter length must be a multiple of the interpolation factor */ - if ((numTaps % L) != 0U) - { - /* Set status as ARM_MATH_LENGTH_ERROR */ - status = ARM_MATH_LENGTH_ERROR; - } - else - { - - /* Assign coefficient pointer */ - S->pCoeffs = pCoeffs; - - /* Assign Interpolation factor */ - S->L = L; - - /* Assign polyPhaseLength */ - S->phaseLength = numTaps / L; - - /* Clear state buffer and size of buffer is always phaseLength + blockSize - 1 */ - memset(pState, 0, - (blockSize + ((uint32_t) S->phaseLength - 1U)) * sizeof(q31_t)); - - /* Assign state pointer */ - S->pState = pState; - - status = ARM_MATH_SUCCESS; - } - - return (status); - -} - - /** - * @} end of FIR_Interpolate group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_interpolate_q15.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_interpolate_q15.c deleted file mode 100644 index dc0cb4b..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_interpolate_q15.c +++ /dev/null @@ -1,496 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_fir_interpolate_q15.c - * Description: Q15 FIR interpolation - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupFilters - */ - -/** - * @addtogroup FIR_Interpolate - * @{ - */ - -/** - * @brief Processing function for the Q15 FIR interpolator. - * @param[in] *S points to an instance of the Q15 FIR interpolator structure. - * @param[in] *pSrc points to the block of input data. - * @param[out] *pDst points to the block of output data. - * @param[in] blockSize number of input samples to process per call. - * @return none. - * - * Scaling and Overflow Behavior: - * \par - * The function is implemented using a 64-bit internal accumulator. - * Both coefficients and state variables are represented in 1.15 format and multiplications yield a 2.30 result. - * The 2.30 intermediate results are accumulated in a 64-bit accumulator in 34.30 format. - * There is no risk of internal overflow with this approach and the full precision of intermediate multiplications is preserved. - * After all additions have been performed, the accumulator is truncated to 34.15 format by discarding low 15 bits. - * Lastly, the accumulator is saturated to yield a result in 1.15 format. - */ - -#if defined (ARM_MATH_DSP) - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - -void arm_fir_interpolate_q15( - const arm_fir_interpolate_instance_q15 * S, - q15_t * pSrc, - q15_t * pDst, - uint32_t blockSize) -{ - q15_t *pState = S->pState; /* State pointer */ - q15_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ - q15_t *pStateCurnt; /* Points to the current sample of the state */ - q15_t *ptr1, *ptr2; /* Temporary pointers for state and coefficient buffers */ - q63_t sum0; /* Accumulators */ - q15_t x0, c0; /* Temporary variables to hold state and coefficient values */ - uint32_t i, blkCnt, j, tapCnt; /* Loop counters */ - uint16_t phaseLen = S->phaseLength; /* Length of each polyphase filter component */ - uint32_t blkCntN2; - q63_t acc0, acc1; - q15_t x1; - - /* S->pState buffer contains previous frame (phaseLen - 1) samples */ - /* pStateCurnt points to the location where the new input data should be written */ - pStateCurnt = S->pState + ((q31_t) phaseLen - 1); - - /* Initialise blkCnt */ - blkCnt = blockSize / 2; - blkCntN2 = blockSize - (2 * blkCnt); - - /* Samples loop unrolled by 2 */ - while (blkCnt > 0U) - { - /* Copy new input sample into the state buffer */ - *pStateCurnt++ = *pSrc++; - *pStateCurnt++ = *pSrc++; - - /* Address modifier index of coefficient buffer */ - j = 1U; - - /* Loop over the Interpolation factor. */ - i = (S->L); - - while (i > 0U) - { - /* Set accumulator to zero */ - acc0 = 0; - acc1 = 0; - - /* Initialize state pointer */ - ptr1 = pState; - - /* Initialize coefficient pointer */ - ptr2 = pCoeffs + (S->L - j); - - /* Loop over the polyPhase length. Unroll by a factor of 4. - ** Repeat until we've computed numTaps-(4*S->L) coefficients. */ - tapCnt = phaseLen >> 2U; - - x0 = *(ptr1++); - - while (tapCnt > 0U) - { - - /* Read the input sample */ - x1 = *(ptr1++); - - /* Read the coefficient */ - c0 = *(ptr2); - - /* Perform the multiply-accumulate */ - acc0 += (q63_t) x0 *c0; - acc1 += (q63_t) x1 *c0; - - - /* Read the coefficient */ - c0 = *(ptr2 + S->L); - - /* Read the input sample */ - x0 = *(ptr1++); - - /* Perform the multiply-accumulate */ - acc0 += (q63_t) x1 *c0; - acc1 += (q63_t) x0 *c0; - - - /* Read the coefficient */ - c0 = *(ptr2 + S->L * 2); - - /* Read the input sample */ - x1 = *(ptr1++); - - /* Perform the multiply-accumulate */ - acc0 += (q63_t) x0 *c0; - acc1 += (q63_t) x1 *c0; - - /* Read the coefficient */ - c0 = *(ptr2 + S->L * 3); - - /* Read the input sample */ - x0 = *(ptr1++); - - /* Perform the multiply-accumulate */ - acc0 += (q63_t) x1 *c0; - acc1 += (q63_t) x0 *c0; - - - /* Upsampling is done by stuffing L-1 zeros between each sample. - * So instead of multiplying zeros with coefficients, - * Increment the coefficient pointer by interpolation factor times. */ - ptr2 += 4 * S->L; - - /* Decrement the loop counter */ - tapCnt--; - } - - /* If the polyPhase length is not a multiple of 4, compute the remaining filter taps */ - tapCnt = phaseLen % 0x4U; - - while (tapCnt > 0U) - { - - /* Read the input sample */ - x1 = *(ptr1++); - - /* Read the coefficient */ - c0 = *(ptr2); - - /* Perform the multiply-accumulate */ - acc0 += (q63_t) x0 *c0; - acc1 += (q63_t) x1 *c0; - - /* Increment the coefficient pointer by interpolation factor times. */ - ptr2 += S->L; - - /* update states for next sample processing */ - x0 = x1; - - /* Decrement the loop counter */ - tapCnt--; - } - - /* The result is in the accumulator, store in the destination buffer. */ - *pDst = (q15_t) (__SSAT((acc0 >> 15), 16)); - *(pDst + S->L) = (q15_t) (__SSAT((acc1 >> 15), 16)); - - pDst++; - - /* Increment the address modifier index of coefficient buffer */ - j++; - - /* Decrement the loop counter */ - i--; - } - - /* Advance the state pointer by 1 - * to process the next group of interpolation factor number samples */ - pState = pState + 2; - - pDst += S->L; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 2, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blkCntN2; - - /* Loop over the blockSize. */ - while (blkCnt > 0U) - { - /* Copy new input sample into the state buffer */ - *pStateCurnt++ = *pSrc++; - - /* Address modifier index of coefficient buffer */ - j = 1U; - - /* Loop over the Interpolation factor. */ - i = S->L; - while (i > 0U) - { - /* Set accumulator to zero */ - sum0 = 0; - - /* Initialize state pointer */ - ptr1 = pState; - - /* Initialize coefficient pointer */ - ptr2 = pCoeffs + (S->L - j); - - /* Loop over the polyPhase length. Unroll by a factor of 4. - ** Repeat until we've computed numTaps-(4*S->L) coefficients. */ - tapCnt = phaseLen >> 2; - while (tapCnt > 0U) - { - - /* Read the coefficient */ - c0 = *(ptr2); - - /* Upsampling is done by stuffing L-1 zeros between each sample. - * So instead of multiplying zeros with coefficients, - * Increment the coefficient pointer by interpolation factor times. */ - ptr2 += S->L; - - /* Read the input sample */ - x0 = *(ptr1++); - - /* Perform the multiply-accumulate */ - sum0 += (q63_t) x0 *c0; - - /* Read the coefficient */ - c0 = *(ptr2); - - /* Increment the coefficient pointer by interpolation factor times. */ - ptr2 += S->L; - - /* Read the input sample */ - x0 = *(ptr1++); - - /* Perform the multiply-accumulate */ - sum0 += (q63_t) x0 *c0; - - /* Read the coefficient */ - c0 = *(ptr2); - - /* Increment the coefficient pointer by interpolation factor times. */ - ptr2 += S->L; - - /* Read the input sample */ - x0 = *(ptr1++); - - /* Perform the multiply-accumulate */ - sum0 += (q63_t) x0 *c0; - - /* Read the coefficient */ - c0 = *(ptr2); - - /* Increment the coefficient pointer by interpolation factor times. */ - ptr2 += S->L; - - /* Read the input sample */ - x0 = *(ptr1++); - - /* Perform the multiply-accumulate */ - sum0 += (q63_t) x0 *c0; - - /* Decrement the loop counter */ - tapCnt--; - } - - /* If the polyPhase length is not a multiple of 4, compute the remaining filter taps */ - tapCnt = phaseLen & 0x3U; - - while (tapCnt > 0U) - { - /* Read the coefficient */ - c0 = *(ptr2); - - /* Increment the coefficient pointer by interpolation factor times. */ - ptr2 += S->L; - - /* Read the input sample */ - x0 = *(ptr1++); - - /* Perform the multiply-accumulate */ - sum0 += (q63_t) x0 *c0; - - /* Decrement the loop counter */ - tapCnt--; - } - - /* The result is in the accumulator, store in the destination buffer. */ - *pDst++ = (q15_t) (__SSAT((sum0 >> 15), 16)); - - j++; - - /* Decrement the loop counter */ - i--; - } - - /* Advance the state pointer by 1 - * to process the next group of interpolation factor number samples */ - pState = pState + 1; - - /* Decrement the loop counter */ - blkCnt--; - } - - - /* Processing is complete. - ** Now copy the last phaseLen - 1 samples to the satrt of the state buffer. - ** This prepares the state buffer for the next function call. */ - - /* Points to the start of the state buffer */ - pStateCurnt = S->pState; - - i = ((uint32_t) phaseLen - 1U) >> 2U; - - /* copy data */ - while (i > 0U) - { -#ifndef UNALIGNED_SUPPORT_DISABLE - - *__SIMD32(pStateCurnt)++ = *__SIMD32(pState)++; - *__SIMD32(pStateCurnt)++ = *__SIMD32(pState)++; - -#else - - *pStateCurnt++ = *pState++; - *pStateCurnt++ = *pState++; - *pStateCurnt++ = *pState++; - *pStateCurnt++ = *pState++; - -#endif /* #ifndef UNALIGNED_SUPPORT_DISABLE */ - - /* Decrement the loop counter */ - i--; - } - - i = ((uint32_t) phaseLen - 1U) % 0x04U; - - while (i > 0U) - { - *pStateCurnt++ = *pState++; - - /* Decrement the loop counter */ - i--; - } -} - -#else - - /* Run the below code for Cortex-M0 */ - -void arm_fir_interpolate_q15( - const arm_fir_interpolate_instance_q15 * S, - q15_t * pSrc, - q15_t * pDst, - uint32_t blockSize) -{ - q15_t *pState = S->pState; /* State pointer */ - q15_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ - q15_t *pStateCurnt; /* Points to the current sample of the state */ - q15_t *ptr1, *ptr2; /* Temporary pointers for state and coefficient buffers */ - q63_t sum; /* Accumulator */ - q15_t x0, c0; /* Temporary variables to hold state and coefficient values */ - uint32_t i, blkCnt, tapCnt; /* Loop counters */ - uint16_t phaseLen = S->phaseLength; /* Length of each polyphase filter component */ - - - /* S->pState buffer contains previous frame (phaseLen - 1) samples */ - /* pStateCurnt points to the location where the new input data should be written */ - pStateCurnt = S->pState + (phaseLen - 1U); - - /* Total number of intput samples */ - blkCnt = blockSize; - - /* Loop over the blockSize. */ - while (blkCnt > 0U) - { - /* Copy new input sample into the state buffer */ - *pStateCurnt++ = *pSrc++; - - /* Loop over the Interpolation factor. */ - i = S->L; - - while (i > 0U) - { - /* Set accumulator to zero */ - sum = 0; - - /* Initialize state pointer */ - ptr1 = pState; - - /* Initialize coefficient pointer */ - ptr2 = pCoeffs + (i - 1U); - - /* Loop over the polyPhase length */ - tapCnt = (uint32_t) phaseLen; - - while (tapCnt > 0U) - { - /* Read the coefficient */ - c0 = *ptr2; - - /* Increment the coefficient pointer by interpolation factor times. */ - ptr2 += S->L; - - /* Read the input sample */ - x0 = *ptr1++; - - /* Perform the multiply-accumulate */ - sum += ((q31_t) x0 * c0); - - /* Decrement the loop counter */ - tapCnt--; - } - - /* Store the result after converting to 1.15 format in the destination buffer */ - *pDst++ = (q15_t) (__SSAT((sum >> 15), 16)); - - /* Decrement the loop counter */ - i--; - } - - /* Advance the state pointer by 1 - * to process the next group of interpolation factor number samples */ - pState = pState + 1; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* Processing is complete. - ** Now copy the last phaseLen - 1 samples to the start of the state buffer. - ** This prepares the state buffer for the next function call. */ - - /* Points to the start of the state buffer */ - pStateCurnt = S->pState; - - i = (uint32_t) phaseLen - 1U; - - while (i > 0U) - { - *pStateCurnt++ = *pState++; - - /* Decrement the loop counter */ - i--; - } - -} - -#endif /* #if defined (ARM_MATH_DSP) */ - - - /** - * @} end of FIR_Interpolate group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_interpolate_q31.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_interpolate_q31.c deleted file mode 100644 index 2d23b37..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_interpolate_q31.c +++ /dev/null @@ -1,492 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_fir_interpolate_q31.c - * Description: Q31 FIR interpolation - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupFilters - */ - -/** - * @addtogroup FIR_Interpolate - * @{ - */ - -/** - * @brief Processing function for the Q31 FIR interpolator. - * @param[in] *S points to an instance of the Q31 FIR interpolator structure. - * @param[in] *pSrc points to the block of input data. - * @param[out] *pDst points to the block of output data. - * @param[in] blockSize number of input samples to process per call. - * @return none. - * - * Scaling and Overflow Behavior: - * \par - * The function is implemented using an internal 64-bit accumulator. - * The accumulator has a 2.62 format and maintains full precision of the intermediate multiplication results but provides only a single guard bit. - * Thus, if the accumulator result overflows it wraps around rather than clip. - * In order to avoid overflows completely the input signal must be scaled down by 1/(numTaps/L). - * since numTaps/L additions occur per output sample. - * After all multiply-accumulates are performed, the 2.62 accumulator is truncated to 1.32 format and then saturated to 1.31 format. - */ - -#if defined (ARM_MATH_DSP) - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - -void arm_fir_interpolate_q31( - const arm_fir_interpolate_instance_q31 * S, - q31_t * pSrc, - q31_t * pDst, - uint32_t blockSize) -{ - q31_t *pState = S->pState; /* State pointer */ - q31_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ - q31_t *pStateCurnt; /* Points to the current sample of the state */ - q31_t *ptr1, *ptr2; /* Temporary pointers for state and coefficient buffers */ - q63_t sum0; /* Accumulators */ - q31_t x0, c0; /* Temporary variables to hold state and coefficient values */ - uint32_t i, blkCnt, j; /* Loop counters */ - uint16_t phaseLen = S->phaseLength, tapCnt; /* Length of each polyphase filter component */ - - uint32_t blkCntN2; - q63_t acc0, acc1; - q31_t x1; - - /* S->pState buffer contains previous frame (phaseLen - 1) samples */ - /* pStateCurnt points to the location where the new input data should be written */ - pStateCurnt = S->pState + ((q31_t) phaseLen - 1); - - /* Initialise blkCnt */ - blkCnt = blockSize / 2; - blkCntN2 = blockSize - (2 * blkCnt); - - /* Samples loop unrolled by 2 */ - while (blkCnt > 0U) - { - /* Copy new input sample into the state buffer */ - *pStateCurnt++ = *pSrc++; - *pStateCurnt++ = *pSrc++; - - /* Address modifier index of coefficient buffer */ - j = 1U; - - /* Loop over the Interpolation factor. */ - i = (S->L); - - while (i > 0U) - { - /* Set accumulator to zero */ - acc0 = 0; - acc1 = 0; - - /* Initialize state pointer */ - ptr1 = pState; - - /* Initialize coefficient pointer */ - ptr2 = pCoeffs + (S->L - j); - - /* Loop over the polyPhase length. Unroll by a factor of 4. - ** Repeat until we've computed numTaps-(4*S->L) coefficients. */ - tapCnt = phaseLen >> 2U; - - x0 = *(ptr1++); - - while (tapCnt > 0U) - { - - /* Read the input sample */ - x1 = *(ptr1++); - - /* Read the coefficient */ - c0 = *(ptr2); - - /* Perform the multiply-accumulate */ - acc0 += (q63_t) x0 *c0; - acc1 += (q63_t) x1 *c0; - - - /* Read the coefficient */ - c0 = *(ptr2 + S->L); - - /* Read the input sample */ - x0 = *(ptr1++); - - /* Perform the multiply-accumulate */ - acc0 += (q63_t) x1 *c0; - acc1 += (q63_t) x0 *c0; - - - /* Read the coefficient */ - c0 = *(ptr2 + S->L * 2); - - /* Read the input sample */ - x1 = *(ptr1++); - - /* Perform the multiply-accumulate */ - acc0 += (q63_t) x0 *c0; - acc1 += (q63_t) x1 *c0; - - /* Read the coefficient */ - c0 = *(ptr2 + S->L * 3); - - /* Read the input sample */ - x0 = *(ptr1++); - - /* Perform the multiply-accumulate */ - acc0 += (q63_t) x1 *c0; - acc1 += (q63_t) x0 *c0; - - - /* Upsampling is done by stuffing L-1 zeros between each sample. - * So instead of multiplying zeros with coefficients, - * Increment the coefficient pointer by interpolation factor times. */ - ptr2 += 4 * S->L; - - /* Decrement the loop counter */ - tapCnt--; - } - - /* If the polyPhase length is not a multiple of 4, compute the remaining filter taps */ - tapCnt = phaseLen % 0x4U; - - while (tapCnt > 0U) - { - - /* Read the input sample */ - x1 = *(ptr1++); - - /* Read the coefficient */ - c0 = *(ptr2); - - /* Perform the multiply-accumulate */ - acc0 += (q63_t) x0 *c0; - acc1 += (q63_t) x1 *c0; - - /* Increment the coefficient pointer by interpolation factor times. */ - ptr2 += S->L; - - /* update states for next sample processing */ - x0 = x1; - - /* Decrement the loop counter */ - tapCnt--; - } - - /* The result is in the accumulator, store in the destination buffer. */ - *pDst = (q31_t) (acc0 >> 31); - *(pDst + S->L) = (q31_t) (acc1 >> 31); - - - pDst++; - - /* Increment the address modifier index of coefficient buffer */ - j++; - - /* Decrement the loop counter */ - i--; - } - - /* Advance the state pointer by 1 - * to process the next group of interpolation factor number samples */ - pState = pState + 2; - - pDst += S->L; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 2, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blkCntN2; - - /* Loop over the blockSize. */ - while (blkCnt > 0U) - { - /* Copy new input sample into the state buffer */ - *pStateCurnt++ = *pSrc++; - - /* Address modifier index of coefficient buffer */ - j = 1U; - - /* Loop over the Interpolation factor. */ - i = S->L; - while (i > 0U) - { - /* Set accumulator to zero */ - sum0 = 0; - - /* Initialize state pointer */ - ptr1 = pState; - - /* Initialize coefficient pointer */ - ptr2 = pCoeffs + (S->L - j); - - /* Loop over the polyPhase length. Unroll by a factor of 4. - ** Repeat until we've computed numTaps-(4*S->L) coefficients. */ - tapCnt = phaseLen >> 2; - while (tapCnt > 0U) - { - - /* Read the coefficient */ - c0 = *(ptr2); - - /* Upsampling is done by stuffing L-1 zeros between each sample. - * So instead of multiplying zeros with coefficients, - * Increment the coefficient pointer by interpolation factor times. */ - ptr2 += S->L; - - /* Read the input sample */ - x0 = *(ptr1++); - - /* Perform the multiply-accumulate */ - sum0 += (q63_t) x0 *c0; - - /* Read the coefficient */ - c0 = *(ptr2); - - /* Increment the coefficient pointer by interpolation factor times. */ - ptr2 += S->L; - - /* Read the input sample */ - x0 = *(ptr1++); - - /* Perform the multiply-accumulate */ - sum0 += (q63_t) x0 *c0; - - /* Read the coefficient */ - c0 = *(ptr2); - - /* Increment the coefficient pointer by interpolation factor times. */ - ptr2 += S->L; - - /* Read the input sample */ - x0 = *(ptr1++); - - /* Perform the multiply-accumulate */ - sum0 += (q63_t) x0 *c0; - - /* Read the coefficient */ - c0 = *(ptr2); - - /* Increment the coefficient pointer by interpolation factor times. */ - ptr2 += S->L; - - /* Read the input sample */ - x0 = *(ptr1++); - - /* Perform the multiply-accumulate */ - sum0 += (q63_t) x0 *c0; - - /* Decrement the loop counter */ - tapCnt--; - } - - /* If the polyPhase length is not a multiple of 4, compute the remaining filter taps */ - tapCnt = phaseLen & 0x3U; - - while (tapCnt > 0U) - { - /* Read the coefficient */ - c0 = *(ptr2); - - /* Increment the coefficient pointer by interpolation factor times. */ - ptr2 += S->L; - - /* Read the input sample */ - x0 = *(ptr1++); - - /* Perform the multiply-accumulate */ - sum0 += (q63_t) x0 *c0; - - /* Decrement the loop counter */ - tapCnt--; - } - - /* The result is in the accumulator, store in the destination buffer. */ - *pDst++ = (q31_t) (sum0 >> 31); - - /* Increment the address modifier index of coefficient buffer */ - j++; - - /* Decrement the loop counter */ - i--; - } - - /* Advance the state pointer by 1 - * to process the next group of interpolation factor number samples */ - pState = pState + 1; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* Processing is complete. - ** Now copy the last phaseLen - 1 samples to the satrt of the state buffer. - ** This prepares the state buffer for the next function call. */ - - /* Points to the start of the state buffer */ - pStateCurnt = S->pState; - - tapCnt = (phaseLen - 1U) >> 2U; - - /* copy data */ - while (tapCnt > 0U) - { - *pStateCurnt++ = *pState++; - *pStateCurnt++ = *pState++; - *pStateCurnt++ = *pState++; - *pStateCurnt++ = *pState++; - - /* Decrement the loop counter */ - tapCnt--; - } - - tapCnt = (phaseLen - 1U) % 0x04U; - - /* copy data */ - while (tapCnt > 0U) - { - *pStateCurnt++ = *pState++; - - /* Decrement the loop counter */ - tapCnt--; - } - -} - - -#else - -void arm_fir_interpolate_q31( - const arm_fir_interpolate_instance_q31 * S, - q31_t * pSrc, - q31_t * pDst, - uint32_t blockSize) -{ - q31_t *pState = S->pState; /* State pointer */ - q31_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ - q31_t *pStateCurnt; /* Points to the current sample of the state */ - q31_t *ptr1, *ptr2; /* Temporary pointers for state and coefficient buffers */ - - /* Run the below code for Cortex-M0 */ - - q63_t sum; /* Accumulator */ - q31_t x0, c0; /* Temporary variables to hold state and coefficient values */ - uint32_t i, blkCnt; /* Loop counters */ - uint16_t phaseLen = S->phaseLength, tapCnt; /* Length of each polyphase filter component */ - - - /* S->pState buffer contains previous frame (phaseLen - 1) samples */ - /* pStateCurnt points to the location where the new input data should be written */ - pStateCurnt = S->pState + ((q31_t) phaseLen - 1); - - /* Total number of intput samples */ - blkCnt = blockSize; - - /* Loop over the blockSize. */ - while (blkCnt > 0U) - { - /* Copy new input sample into the state buffer */ - *pStateCurnt++ = *pSrc++; - - /* Loop over the Interpolation factor. */ - i = S->L; - - while (i > 0U) - { - /* Set accumulator to zero */ - sum = 0; - - /* Initialize state pointer */ - ptr1 = pState; - - /* Initialize coefficient pointer */ - ptr2 = pCoeffs + (i - 1U); - - tapCnt = phaseLen; - - while (tapCnt > 0U) - { - /* Read the coefficient */ - c0 = *(ptr2); - - /* Increment the coefficient pointer by interpolation factor times. */ - ptr2 += S->L; - - /* Read the input sample */ - x0 = *ptr1++; - - /* Perform the multiply-accumulate */ - sum += (q63_t) x0 *c0; - - /* Decrement the loop counter */ - tapCnt--; - } - - /* The result is in the accumulator, store in the destination buffer. */ - *pDst++ = (q31_t) (sum >> 31); - - /* Decrement the loop counter */ - i--; - } - - /* Advance the state pointer by 1 - * to process the next group of interpolation factor number samples */ - pState = pState + 1; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* Processing is complete. - ** Now copy the last phaseLen - 1 samples to the satrt of the state buffer. - ** This prepares the state buffer for the next function call. */ - - /* Points to the start of the state buffer */ - pStateCurnt = S->pState; - - tapCnt = phaseLen - 1U; - - /* copy data */ - while (tapCnt > 0U) - { - *pStateCurnt++ = *pState++; - - /* Decrement the loop counter */ - tapCnt--; - } - -} - -#endif /* #if defined (ARM_MATH_DSP) */ - - /** - * @} end of FIR_Interpolate group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_lattice_f32.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_lattice_f32.c deleted file mode 100644 index 369c9e4..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_lattice_f32.c +++ /dev/null @@ -1,494 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_fir_lattice_f32.c - * Description: Processing function for the floating-point FIR Lattice filter - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupFilters - */ - -/** - * @defgroup FIR_Lattice Finite Impulse Response (FIR) Lattice Filters - * - * This set of functions implements Finite Impulse Response (FIR) lattice filters - * for Q15, Q31 and floating-point data types. Lattice filters are used in a - * variety of adaptive filter applications. The filter structure is feedforward and - * the net impulse response is finite length. - * The functions operate on blocks - * of input and output data and each call to the function processes - * blockSize samples through the filter. pSrc and - * pDst point to input and output arrays containing blockSize values. - * - * \par Algorithm: - * \image html FIRLattice.gif "Finite Impulse Response Lattice filter" - * The following difference equation is implemented: - *
- *    f0[n] = g0[n] = x[n]
- *    fm[n] = fm-1[n] + km * gm-1[n-1] for m = 1, 2, ...M
- *    gm[n] = km * fm-1[n] + gm-1[n-1] for m = 1, 2, ...M
- *    y[n] = fM[n]
- * 
- * \par - * pCoeffs points to tha array of reflection coefficients of size numStages. - * Reflection Coefficients are stored in the following order. - * \par - *
- *    {k1, k2, ..., kM}
- * 
- * where M is number of stages - * \par - * pState points to a state array of size numStages. - * The state variables (g values) hold previous inputs and are stored in the following order. - *
- *    {g0[n], g1[n], g2[n] ...gM-1[n]}
- * 
- * The state variables are updated after each block of data is processed; the coefficients are untouched. - * \par Instance Structure - * The coefficients and state variables for a filter are stored together in an instance data structure. - * A separate instance structure must be defined for each filter. - * Coefficient arrays may be shared among several instances while state variable arrays cannot be shared. - * There are separate instance structure declarations for each of the 3 supported data types. - * - * \par Initialization Functions - * There is also an associated initialization function for each data type. - * The initialization function performs the following operations: - * - Sets the values of the internal structure fields. - * - Zeros out the values in the state buffer. - * To do this manually without calling the init function, assign the follow subfields of the instance structure: - * numStages, pCoeffs, pState. Also set all of the values in pState to zero. - * - * \par - * Use of the initialization function is optional. - * However, if the initialization function is used, then the instance structure cannot be placed into a const data section. - * To place an instance structure into a const data section, the instance structure must be manually initialized. - * Set the values in the state buffer to zeros and then manually initialize the instance structure as follows: - *
- *arm_fir_lattice_instance_f32 S = {numStages, pState, pCoeffs};
- *arm_fir_lattice_instance_q31 S = {numStages, pState, pCoeffs};
- *arm_fir_lattice_instance_q15 S = {numStages, pState, pCoeffs};
- * 
- * \par - * where numStages is the number of stages in the filter; pState is the address of the state buffer; - * pCoeffs is the address of the coefficient buffer. - * \par Fixed-Point Behavior - * Care must be taken when using the fixed-point versions of the FIR Lattice filter functions. - * In particular, the overflow and saturation behavior of the accumulator used in each function must be considered. - * Refer to the function specific documentation below for usage guidelines. - */ - -/** - * @addtogroup FIR_Lattice - * @{ - */ - - - /** - * @brief Processing function for the floating-point FIR lattice filter. - * @param[in] *S points to an instance of the floating-point FIR lattice structure. - * @param[in] *pSrc points to the block of input data. - * @param[out] *pDst points to the block of output data - * @param[in] blockSize number of samples to process. - * @return none. - */ - -void arm_fir_lattice_f32( - const arm_fir_lattice_instance_f32 * S, - float32_t * pSrc, - float32_t * pDst, - uint32_t blockSize) -{ - float32_t *pState; /* State pointer */ - float32_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ - float32_t *px; /* temporary state pointer */ - float32_t *pk; /* temporary coefficient pointer */ - - -#if defined (ARM_MATH_DSP) - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - float32_t fcurr1, fnext1, gcurr1, gnext1; /* temporary variables for first sample in loop unrolling */ - float32_t fcurr2, fnext2, gnext2; /* temporary variables for second sample in loop unrolling */ - float32_t fcurr3, fnext3, gnext3; /* temporary variables for third sample in loop unrolling */ - float32_t fcurr4, fnext4, gnext4; /* temporary variables for fourth sample in loop unrolling */ - uint32_t numStages = S->numStages; /* Number of stages in the filter */ - uint32_t blkCnt, stageCnt; /* temporary variables for counts */ - - gcurr1 = 0.0f; - pState = &S->pState[0]; - - blkCnt = blockSize >> 2; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - - /* Read two samples from input buffer */ - /* f0(n) = x(n) */ - fcurr1 = *pSrc++; - fcurr2 = *pSrc++; - - /* Initialize coeff pointer */ - pk = (pCoeffs); - - /* Initialize state pointer */ - px = pState; - - /* Read g0(n-1) from state */ - gcurr1 = *px; - - /* Process first sample for first tap */ - /* f1(n) = f0(n) + K1 * g0(n-1) */ - fnext1 = fcurr1 + ((*pk) * gcurr1); - /* g1(n) = f0(n) * K1 + g0(n-1) */ - gnext1 = (fcurr1 * (*pk)) + gcurr1; - - /* Process second sample for first tap */ - /* for sample 2 processing */ - fnext2 = fcurr2 + ((*pk) * fcurr1); - gnext2 = (fcurr2 * (*pk)) + fcurr1; - - /* Read next two samples from input buffer */ - /* f0(n+2) = x(n+2) */ - fcurr3 = *pSrc++; - fcurr4 = *pSrc++; - - /* Copy only last input samples into the state buffer - which will be used for next four samples processing */ - *px++ = fcurr4; - - /* Process third sample for first tap */ - fnext3 = fcurr3 + ((*pk) * fcurr2); - gnext3 = (fcurr3 * (*pk)) + fcurr2; - - /* Process fourth sample for first tap */ - fnext4 = fcurr4 + ((*pk) * fcurr3); - gnext4 = (fcurr4 * (*pk++)) + fcurr3; - - /* Update of f values for next coefficient set processing */ - fcurr1 = fnext1; - fcurr2 = fnext2; - fcurr3 = fnext3; - fcurr4 = fnext4; - - /* Loop unrolling. Process 4 taps at a time . */ - stageCnt = (numStages - 1U) >> 2U; - - /* Loop over the number of taps. Unroll by a factor of 4. - ** Repeat until we've computed numStages-3 coefficients. */ - - /* Process 2nd, 3rd, 4th and 5th taps ... here */ - while (stageCnt > 0U) - { - /* Read g1(n-1), g3(n-1) .... from state */ - gcurr1 = *px; - - /* save g1(n) in state buffer */ - *px++ = gnext4; - - /* Process first sample for 2nd, 6th .. tap */ - /* Sample processing for K2, K6.... */ - /* f2(n) = f1(n) + K2 * g1(n-1) */ - fnext1 = fcurr1 + ((*pk) * gcurr1); - /* Process second sample for 2nd, 6th .. tap */ - /* for sample 2 processing */ - fnext2 = fcurr2 + ((*pk) * gnext1); - /* Process third sample for 2nd, 6th .. tap */ - fnext3 = fcurr3 + ((*pk) * gnext2); - /* Process fourth sample for 2nd, 6th .. tap */ - fnext4 = fcurr4 + ((*pk) * gnext3); - - /* g2(n) = f1(n) * K2 + g1(n-1) */ - /* Calculation of state values for next stage */ - gnext4 = (fcurr4 * (*pk)) + gnext3; - gnext3 = (fcurr3 * (*pk)) + gnext2; - gnext2 = (fcurr2 * (*pk)) + gnext1; - gnext1 = (fcurr1 * (*pk++)) + gcurr1; - - - /* Read g2(n-1), g4(n-1) .... from state */ - gcurr1 = *px; - - /* save g2(n) in state buffer */ - *px++ = gnext4; - - /* Sample processing for K3, K7.... */ - /* Process first sample for 3rd, 7th .. tap */ - /* f3(n) = f2(n) + K3 * g2(n-1) */ - fcurr1 = fnext1 + ((*pk) * gcurr1); - /* Process second sample for 3rd, 7th .. tap */ - fcurr2 = fnext2 + ((*pk) * gnext1); - /* Process third sample for 3rd, 7th .. tap */ - fcurr3 = fnext3 + ((*pk) * gnext2); - /* Process fourth sample for 3rd, 7th .. tap */ - fcurr4 = fnext4 + ((*pk) * gnext3); - - /* Calculation of state values for next stage */ - /* g3(n) = f2(n) * K3 + g2(n-1) */ - gnext4 = (fnext4 * (*pk)) + gnext3; - gnext3 = (fnext3 * (*pk)) + gnext2; - gnext2 = (fnext2 * (*pk)) + gnext1; - gnext1 = (fnext1 * (*pk++)) + gcurr1; - - - /* Read g1(n-1), g3(n-1) .... from state */ - gcurr1 = *px; - - /* save g3(n) in state buffer */ - *px++ = gnext4; - - /* Sample processing for K4, K8.... */ - /* Process first sample for 4th, 8th .. tap */ - /* f4(n) = f3(n) + K4 * g3(n-1) */ - fnext1 = fcurr1 + ((*pk) * gcurr1); - /* Process second sample for 4th, 8th .. tap */ - /* for sample 2 processing */ - fnext2 = fcurr2 + ((*pk) * gnext1); - /* Process third sample for 4th, 8th .. tap */ - fnext3 = fcurr3 + ((*pk) * gnext2); - /* Process fourth sample for 4th, 8th .. tap */ - fnext4 = fcurr4 + ((*pk) * gnext3); - - /* g4(n) = f3(n) * K4 + g3(n-1) */ - /* Calculation of state values for next stage */ - gnext4 = (fcurr4 * (*pk)) + gnext3; - gnext3 = (fcurr3 * (*pk)) + gnext2; - gnext2 = (fcurr2 * (*pk)) + gnext1; - gnext1 = (fcurr1 * (*pk++)) + gcurr1; - - /* Read g2(n-1), g4(n-1) .... from state */ - gcurr1 = *px; - - /* save g4(n) in state buffer */ - *px++ = gnext4; - - /* Sample processing for K5, K9.... */ - /* Process first sample for 5th, 9th .. tap */ - /* f5(n) = f4(n) + K5 * g4(n-1) */ - fcurr1 = fnext1 + ((*pk) * gcurr1); - /* Process second sample for 5th, 9th .. tap */ - fcurr2 = fnext2 + ((*pk) * gnext1); - /* Process third sample for 5th, 9th .. tap */ - fcurr3 = fnext3 + ((*pk) * gnext2); - /* Process fourth sample for 5th, 9th .. tap */ - fcurr4 = fnext4 + ((*pk) * gnext3); - - /* Calculation of state values for next stage */ - /* g5(n) = f4(n) * K5 + g4(n-1) */ - gnext4 = (fnext4 * (*pk)) + gnext3; - gnext3 = (fnext3 * (*pk)) + gnext2; - gnext2 = (fnext2 * (*pk)) + gnext1; - gnext1 = (fnext1 * (*pk++)) + gcurr1; - - stageCnt--; - } - - /* If the (filter length -1) is not a multiple of 4, compute the remaining filter taps */ - stageCnt = (numStages - 1U) % 0x4U; - - while (stageCnt > 0U) - { - gcurr1 = *px; - - /* save g value in state buffer */ - *px++ = gnext4; - - /* Process four samples for last three taps here */ - fnext1 = fcurr1 + ((*pk) * gcurr1); - fnext2 = fcurr2 + ((*pk) * gnext1); - fnext3 = fcurr3 + ((*pk) * gnext2); - fnext4 = fcurr4 + ((*pk) * gnext3); - - /* g1(n) = f0(n) * K1 + g0(n-1) */ - gnext4 = (fcurr4 * (*pk)) + gnext3; - gnext3 = (fcurr3 * (*pk)) + gnext2; - gnext2 = (fcurr2 * (*pk)) + gnext1; - gnext1 = (fcurr1 * (*pk++)) + gcurr1; - - /* Update of f values for next coefficient set processing */ - fcurr1 = fnext1; - fcurr2 = fnext2; - fcurr3 = fnext3; - fcurr4 = fnext4; - - stageCnt--; - - } - - /* The results in the 4 accumulators, store in the destination buffer. */ - /* y(n) = fN(n) */ - *pDst++ = fcurr1; - *pDst++ = fcurr2; - *pDst++ = fcurr3; - *pDst++ = fcurr4; - - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize % 0x4U; - - while (blkCnt > 0U) - { - /* f0(n) = x(n) */ - fcurr1 = *pSrc++; - - /* Initialize coeff pointer */ - pk = (pCoeffs); - - /* Initialize state pointer */ - px = pState; - - /* read g2(n) from state buffer */ - gcurr1 = *px; - - /* for sample 1 processing */ - /* f1(n) = f0(n) + K1 * g0(n-1) */ - fnext1 = fcurr1 + ((*pk) * gcurr1); - /* g1(n) = f0(n) * K1 + g0(n-1) */ - gnext1 = (fcurr1 * (*pk++)) + gcurr1; - - /* save g1(n) in state buffer */ - *px++ = fcurr1; - - /* f1(n) is saved in fcurr1 - for next stage processing */ - fcurr1 = fnext1; - - stageCnt = (numStages - 1U); - - /* stage loop */ - while (stageCnt > 0U) - { - /* read g2(n) from state buffer */ - gcurr1 = *px; - - /* save g1(n) in state buffer */ - *px++ = gnext1; - - /* Sample processing for K2, K3.... */ - /* f2(n) = f1(n) + K2 * g1(n-1) */ - fnext1 = fcurr1 + ((*pk) * gcurr1); - /* g2(n) = f1(n) * K2 + g1(n-1) */ - gnext1 = (fcurr1 * (*pk++)) + gcurr1; - - /* f1(n) is saved in fcurr1 - for next stage processing */ - fcurr1 = fnext1; - - stageCnt--; - - } - - /* y(n) = fN(n) */ - *pDst++ = fcurr1; - - blkCnt--; - - } - -#else - - /* Run the below code for Cortex-M0 */ - - float32_t fcurr, fnext, gcurr, gnext; /* temporary variables */ - uint32_t numStages = S->numStages; /* Length of the filter */ - uint32_t blkCnt, stageCnt; /* temporary variables for counts */ - - pState = &S->pState[0]; - - blkCnt = blockSize; - - while (blkCnt > 0U) - { - /* f0(n) = x(n) */ - fcurr = *pSrc++; - - /* Initialize coeff pointer */ - pk = pCoeffs; - - /* Initialize state pointer */ - px = pState; - - /* read g0(n-1) from state buffer */ - gcurr = *px; - - /* for sample 1 processing */ - /* f1(n) = f0(n) + K1 * g0(n-1) */ - fnext = fcurr + ((*pk) * gcurr); - /* g1(n) = f0(n) * K1 + g0(n-1) */ - gnext = (fcurr * (*pk++)) + gcurr; - - /* save f0(n) in state buffer */ - *px++ = fcurr; - - /* f1(n) is saved in fcurr - for next stage processing */ - fcurr = fnext; - - stageCnt = (numStages - 1U); - - /* stage loop */ - while (stageCnt > 0U) - { - /* read g2(n) from state buffer */ - gcurr = *px; - - /* save g1(n) in state buffer */ - *px++ = gnext; - - /* Sample processing for K2, K3.... */ - /* f2(n) = f1(n) + K2 * g1(n-1) */ - fnext = fcurr + ((*pk) * gcurr); - /* g2(n) = f1(n) * K2 + g1(n-1) */ - gnext = (fcurr * (*pk++)) + gcurr; - - /* f1(n) is saved in fcurr1 - for next stage processing */ - fcurr = fnext; - - stageCnt--; - - } - - /* y(n) = fN(n) */ - *pDst++ = fcurr; - - blkCnt--; - - } - -#endif /* #if defined (ARM_MATH_DSP) */ - -} - -/** - * @} end of FIR_Lattice group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_lattice_init_f32.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_lattice_init_f32.c deleted file mode 100644 index 2e31a15..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_lattice_init_f32.c +++ /dev/null @@ -1,71 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_fir_lattice_init_f32.c - * Description: Floating-point FIR Lattice filter initialization function - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupFilters - */ - -/** - * @addtogroup FIR_Lattice - * @{ - */ - -/** - * @brief Initialization function for the floating-point FIR lattice filter. - * @param[in] *S points to an instance of the floating-point FIR lattice structure. - * @param[in] numStages number of filter stages. - * @param[in] *pCoeffs points to the coefficient buffer. The array is of length numStages. - * @param[in] *pState points to the state buffer. The array is of length numStages. - * @return none. - */ - -void arm_fir_lattice_init_f32( - arm_fir_lattice_instance_f32 * S, - uint16_t numStages, - float32_t * pCoeffs, - float32_t * pState) -{ - /* Assign filter taps */ - S->numStages = numStages; - - /* Assign coefficient pointer */ - S->pCoeffs = pCoeffs; - - /* Clear state buffer and size is always numStages */ - memset(pState, 0, (numStages) * sizeof(float32_t)); - - /* Assign state pointer */ - S->pState = pState; - -} - -/** - * @} end of FIR_Lattice group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_lattice_init_q15.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_lattice_init_q15.c deleted file mode 100644 index ab5afd6..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_lattice_init_q15.c +++ /dev/null @@ -1,71 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_fir_lattice_init_q15.c - * Description: Q15 FIR Lattice filter initialization function - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupFilters - */ - -/** - * @addtogroup FIR_Lattice - * @{ - */ - - /** - * @brief Initialization function for the Q15 FIR lattice filter. - * @param[in] *S points to an instance of the Q15 FIR lattice structure. - * @param[in] numStages number of filter stages. - * @param[in] *pCoeffs points to the coefficient buffer. The array is of length numStages. - * @param[in] *pState points to the state buffer. The array is of length numStages. - * @return none. - */ - -void arm_fir_lattice_init_q15( - arm_fir_lattice_instance_q15 * S, - uint16_t numStages, - q15_t * pCoeffs, - q15_t * pState) -{ - /* Assign filter taps */ - S->numStages = numStages; - - /* Assign coefficient pointer */ - S->pCoeffs = pCoeffs; - - /* Clear state buffer and size is always numStages */ - memset(pState, 0, (numStages) * sizeof(q15_t)); - - /* Assign state pointer */ - S->pState = pState; - -} - -/** - * @} end of FIR_Lattice group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_lattice_init_q31.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_lattice_init_q31.c deleted file mode 100644 index 4dc30cc..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_lattice_init_q31.c +++ /dev/null @@ -1,71 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_fir_lattice_init_q31.c - * Description: Q31 FIR lattice filter initialization function - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupFilters - */ - -/** - * @addtogroup FIR_Lattice - * @{ - */ - - /** - * @brief Initialization function for the Q31 FIR lattice filter. - * @param[in] *S points to an instance of the Q31 FIR lattice structure. - * @param[in] numStages number of filter stages. - * @param[in] *pCoeffs points to the coefficient buffer. The array is of length numStages. - * @param[in] *pState points to the state buffer. The array is of length numStages. - * @return none. - */ - -void arm_fir_lattice_init_q31( - arm_fir_lattice_instance_q31 * S, - uint16_t numStages, - q31_t * pCoeffs, - q31_t * pState) -{ - /* Assign filter taps */ - S->numStages = numStages; - - /* Assign coefficient pointer */ - S->pCoeffs = pCoeffs; - - /* Clear state buffer and size is always numStages */ - memset(pState, 0, (numStages) * sizeof(q31_t)); - - /* Assign state pointer */ - S->pState = pState; - -} - -/** - * @} end of FIR_Lattice group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_lattice_q15.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_lattice_q15.c deleted file mode 100644 index 4c4e849..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_lattice_q15.c +++ /dev/null @@ -1,524 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_fir_lattice_q15.c - * Description: Q15 FIR lattice filter processing function - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupFilters - */ - -/** - * @addtogroup FIR_Lattice - * @{ - */ - - -/** - * @brief Processing function for the Q15 FIR lattice filter. - * @param[in] *S points to an instance of the Q15 FIR lattice structure. - * @param[in] *pSrc points to the block of input data. - * @param[out] *pDst points to the block of output data - * @param[in] blockSize number of samples to process. - * @return none. - */ - -void arm_fir_lattice_q15( - const arm_fir_lattice_instance_q15 * S, - q15_t * pSrc, - q15_t * pDst, - uint32_t blockSize) -{ - q15_t *pState; /* State pointer */ - q15_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ - q15_t *px; /* temporary state pointer */ - q15_t *pk; /* temporary coefficient pointer */ - - -#if defined (ARM_MATH_DSP) - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - q31_t fcurnt1, fnext1, gcurnt1 = 0, gnext1; /* temporary variables for first sample in loop unrolling */ - q31_t fcurnt2, fnext2, gnext2; /* temporary variables for second sample in loop unrolling */ - q31_t fcurnt3, fnext3, gnext3; /* temporary variables for third sample in loop unrolling */ - q31_t fcurnt4, fnext4, gnext4; /* temporary variables for fourth sample in loop unrolling */ - uint32_t numStages = S->numStages; /* Number of stages in the filter */ - uint32_t blkCnt, stageCnt; /* temporary variables for counts */ - - pState = &S->pState[0]; - - blkCnt = blockSize >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - - /* Read two samples from input buffer */ - /* f0(n) = x(n) */ - fcurnt1 = *pSrc++; - fcurnt2 = *pSrc++; - - /* Initialize coeff pointer */ - pk = (pCoeffs); - - /* Initialize state pointer */ - px = pState; - - /* Read g0(n-1) from state */ - gcurnt1 = *px; - - /* Process first sample for first tap */ - /* f1(n) = f0(n) + K1 * g0(n-1) */ - fnext1 = (q31_t) ((gcurnt1 * (*pk)) >> 15U) + fcurnt1; - fnext1 = __SSAT(fnext1, 16); - - /* g1(n) = f0(n) * K1 + g0(n-1) */ - gnext1 = (q31_t) ((fcurnt1 * (*pk)) >> 15U) + gcurnt1; - gnext1 = __SSAT(gnext1, 16); - - /* Process second sample for first tap */ - /* for sample 2 processing */ - fnext2 = (q31_t) ((fcurnt1 * (*pk)) >> 15U) + fcurnt2; - fnext2 = __SSAT(fnext2, 16); - - gnext2 = (q31_t) ((fcurnt2 * (*pk)) >> 15U) + fcurnt1; - gnext2 = __SSAT(gnext2, 16); - - - /* Read next two samples from input buffer */ - /* f0(n+2) = x(n+2) */ - fcurnt3 = *pSrc++; - fcurnt4 = *pSrc++; - - /* Copy only last input samples into the state buffer - which is used for next four samples processing */ - *px++ = (q15_t) fcurnt4; - - /* Process third sample for first tap */ - fnext3 = (q31_t) ((fcurnt2 * (*pk)) >> 15U) + fcurnt3; - fnext3 = __SSAT(fnext3, 16); - gnext3 = (q31_t) ((fcurnt3 * (*pk)) >> 15U) + fcurnt2; - gnext3 = __SSAT(gnext3, 16); - - /* Process fourth sample for first tap */ - fnext4 = (q31_t) ((fcurnt3 * (*pk)) >> 15U) + fcurnt4; - fnext4 = __SSAT(fnext4, 16); - gnext4 = (q31_t) ((fcurnt4 * (*pk++)) >> 15U) + fcurnt3; - gnext4 = __SSAT(gnext4, 16); - - /* Update of f values for next coefficient set processing */ - fcurnt1 = fnext1; - fcurnt2 = fnext2; - fcurnt3 = fnext3; - fcurnt4 = fnext4; - - - /* Loop unrolling. Process 4 taps at a time . */ - stageCnt = (numStages - 1U) >> 2; - - - /* Loop over the number of taps. Unroll by a factor of 4. - ** Repeat until we've computed numStages-3 coefficients. */ - - /* Process 2nd, 3rd, 4th and 5th taps ... here */ - while (stageCnt > 0U) - { - /* Read g1(n-1), g3(n-1) .... from state */ - gcurnt1 = *px; - - /* save g1(n) in state buffer */ - *px++ = (q15_t) gnext4; - - /* Process first sample for 2nd, 6th .. tap */ - /* Sample processing for K2, K6.... */ - /* f1(n) = f0(n) + K1 * g0(n-1) */ - fnext1 = (q31_t) ((gcurnt1 * (*pk)) >> 15U) + fcurnt1; - fnext1 = __SSAT(fnext1, 16); - - - /* Process second sample for 2nd, 6th .. tap */ - /* for sample 2 processing */ - fnext2 = (q31_t) ((gnext1 * (*pk)) >> 15U) + fcurnt2; - fnext2 = __SSAT(fnext2, 16); - /* Process third sample for 2nd, 6th .. tap */ - fnext3 = (q31_t) ((gnext2 * (*pk)) >> 15U) + fcurnt3; - fnext3 = __SSAT(fnext3, 16); - /* Process fourth sample for 2nd, 6th .. tap */ - /* fnext4 = fcurnt4 + (*pk) * gnext3; */ - fnext4 = (q31_t) ((gnext3 * (*pk)) >> 15U) + fcurnt4; - fnext4 = __SSAT(fnext4, 16); - - /* g1(n) = f0(n) * K1 + g0(n-1) */ - /* Calculation of state values for next stage */ - gnext4 = (q31_t) ((fcurnt4 * (*pk)) >> 15U) + gnext3; - gnext4 = __SSAT(gnext4, 16); - gnext3 = (q31_t) ((fcurnt3 * (*pk)) >> 15U) + gnext2; - gnext3 = __SSAT(gnext3, 16); - - gnext2 = (q31_t) ((fcurnt2 * (*pk)) >> 15U) + gnext1; - gnext2 = __SSAT(gnext2, 16); - - gnext1 = (q31_t) ((fcurnt1 * (*pk++)) >> 15U) + gcurnt1; - gnext1 = __SSAT(gnext1, 16); - - - /* Read g2(n-1), g4(n-1) .... from state */ - gcurnt1 = *px; - - /* save g1(n) in state buffer */ - *px++ = (q15_t) gnext4; - - /* Sample processing for K3, K7.... */ - /* Process first sample for 3rd, 7th .. tap */ - /* f3(n) = f2(n) + K3 * g2(n-1) */ - fcurnt1 = (q31_t) ((gcurnt1 * (*pk)) >> 15U) + fnext1; - fcurnt1 = __SSAT(fcurnt1, 16); - - /* Process second sample for 3rd, 7th .. tap */ - fcurnt2 = (q31_t) ((gnext1 * (*pk)) >> 15U) + fnext2; - fcurnt2 = __SSAT(fcurnt2, 16); - - /* Process third sample for 3rd, 7th .. tap */ - fcurnt3 = (q31_t) ((gnext2 * (*pk)) >> 15U) + fnext3; - fcurnt3 = __SSAT(fcurnt3, 16); - - /* Process fourth sample for 3rd, 7th .. tap */ - fcurnt4 = (q31_t) ((gnext3 * (*pk)) >> 15U) + fnext4; - fcurnt4 = __SSAT(fcurnt4, 16); - - /* Calculation of state values for next stage */ - /* g3(n) = f2(n) * K3 + g2(n-1) */ - gnext4 = (q31_t) ((fnext4 * (*pk)) >> 15U) + gnext3; - gnext4 = __SSAT(gnext4, 16); - - gnext3 = (q31_t) ((fnext3 * (*pk)) >> 15U) + gnext2; - gnext3 = __SSAT(gnext3, 16); - - gnext2 = (q31_t) ((fnext2 * (*pk)) >> 15U) + gnext1; - gnext2 = __SSAT(gnext2, 16); - - gnext1 = (q31_t) ((fnext1 * (*pk++)) >> 15U) + gcurnt1; - gnext1 = __SSAT(gnext1, 16); - - /* Read g1(n-1), g3(n-1) .... from state */ - gcurnt1 = *px; - - /* save g1(n) in state buffer */ - *px++ = (q15_t) gnext4; - - /* Sample processing for K4, K8.... */ - /* Process first sample for 4th, 8th .. tap */ - /* f4(n) = f3(n) + K4 * g3(n-1) */ - fnext1 = (q31_t) ((gcurnt1 * (*pk)) >> 15U) + fcurnt1; - fnext1 = __SSAT(fnext1, 16); - - /* Process second sample for 4th, 8th .. tap */ - /* for sample 2 processing */ - fnext2 = (q31_t) ((gnext1 * (*pk)) >> 15U) + fcurnt2; - fnext2 = __SSAT(fnext2, 16); - - /* Process third sample for 4th, 8th .. tap */ - fnext3 = (q31_t) ((gnext2 * (*pk)) >> 15U) + fcurnt3; - fnext3 = __SSAT(fnext3, 16); - - /* Process fourth sample for 4th, 8th .. tap */ - fnext4 = (q31_t) ((gnext3 * (*pk)) >> 15U) + fcurnt4; - fnext4 = __SSAT(fnext4, 16); - - /* g4(n) = f3(n) * K4 + g3(n-1) */ - /* Calculation of state values for next stage */ - gnext4 = (q31_t) ((fcurnt4 * (*pk)) >> 15U) + gnext3; - gnext4 = __SSAT(gnext4, 16); - - gnext3 = (q31_t) ((fcurnt3 * (*pk)) >> 15U) + gnext2; - gnext3 = __SSAT(gnext3, 16); - - gnext2 = (q31_t) ((fcurnt2 * (*pk)) >> 15U) + gnext1; - gnext2 = __SSAT(gnext2, 16); - gnext1 = (q31_t) ((fcurnt1 * (*pk++)) >> 15U) + gcurnt1; - gnext1 = __SSAT(gnext1, 16); - - - /* Read g2(n-1), g4(n-1) .... from state */ - gcurnt1 = *px; - - /* save g4(n) in state buffer */ - *px++ = (q15_t) gnext4; - - /* Sample processing for K5, K9.... */ - /* Process first sample for 5th, 9th .. tap */ - /* f5(n) = f4(n) + K5 * g4(n-1) */ - fcurnt1 = (q31_t) ((gcurnt1 * (*pk)) >> 15U) + fnext1; - fcurnt1 = __SSAT(fcurnt1, 16); - - /* Process second sample for 5th, 9th .. tap */ - fcurnt2 = (q31_t) ((gnext1 * (*pk)) >> 15U) + fnext2; - fcurnt2 = __SSAT(fcurnt2, 16); - - /* Process third sample for 5th, 9th .. tap */ - fcurnt3 = (q31_t) ((gnext2 * (*pk)) >> 15U) + fnext3; - fcurnt3 = __SSAT(fcurnt3, 16); - - /* Process fourth sample for 5th, 9th .. tap */ - fcurnt4 = (q31_t) ((gnext3 * (*pk)) >> 15U) + fnext4; - fcurnt4 = __SSAT(fcurnt4, 16); - - /* Calculation of state values for next stage */ - /* g5(n) = f4(n) * K5 + g4(n-1) */ - gnext4 = (q31_t) ((fnext4 * (*pk)) >> 15U) + gnext3; - gnext4 = __SSAT(gnext4, 16); - gnext3 = (q31_t) ((fnext3 * (*pk)) >> 15U) + gnext2; - gnext3 = __SSAT(gnext3, 16); - gnext2 = (q31_t) ((fnext2 * (*pk)) >> 15U) + gnext1; - gnext2 = __SSAT(gnext2, 16); - gnext1 = (q31_t) ((fnext1 * (*pk++)) >> 15U) + gcurnt1; - gnext1 = __SSAT(gnext1, 16); - - stageCnt--; - } - - /* If the (filter length -1) is not a multiple of 4, compute the remaining filter taps */ - stageCnt = (numStages - 1U) % 0x4U; - - while (stageCnt > 0U) - { - gcurnt1 = *px; - - /* save g value in state buffer */ - *px++ = (q15_t) gnext4; - - /* Process four samples for last three taps here */ - fnext1 = (q31_t) ((gcurnt1 * (*pk)) >> 15U) + fcurnt1; - fnext1 = __SSAT(fnext1, 16); - fnext2 = (q31_t) ((gnext1 * (*pk)) >> 15U) + fcurnt2; - fnext2 = __SSAT(fnext2, 16); - - fnext3 = (q31_t) ((gnext2 * (*pk)) >> 15U) + fcurnt3; - fnext3 = __SSAT(fnext3, 16); - - fnext4 = (q31_t) ((gnext3 * (*pk)) >> 15U) + fcurnt4; - fnext4 = __SSAT(fnext4, 16); - - /* g1(n) = f0(n) * K1 + g0(n-1) */ - gnext4 = (q31_t) ((fcurnt4 * (*pk)) >> 15U) + gnext3; - gnext4 = __SSAT(gnext4, 16); - gnext3 = (q31_t) ((fcurnt3 * (*pk)) >> 15U) + gnext2; - gnext3 = __SSAT(gnext3, 16); - gnext2 = (q31_t) ((fcurnt2 * (*pk)) >> 15U) + gnext1; - gnext2 = __SSAT(gnext2, 16); - gnext1 = (q31_t) ((fcurnt1 * (*pk++)) >> 15U) + gcurnt1; - gnext1 = __SSAT(gnext1, 16); - - /* Update of f values for next coefficient set processing */ - fcurnt1 = fnext1; - fcurnt2 = fnext2; - fcurnt3 = fnext3; - fcurnt4 = fnext4; - - stageCnt--; - - } - - /* The results in the 4 accumulators, store in the destination buffer. */ - /* y(n) = fN(n) */ - -#ifndef ARM_MATH_BIG_ENDIAN - - *__SIMD32(pDst)++ = __PKHBT(fcurnt1, fcurnt2, 16); - *__SIMD32(pDst)++ = __PKHBT(fcurnt3, fcurnt4, 16); - -#else - - *__SIMD32(pDst)++ = __PKHBT(fcurnt2, fcurnt1, 16); - *__SIMD32(pDst)++ = __PKHBT(fcurnt4, fcurnt3, 16); - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize % 0x4U; - - while (blkCnt > 0U) - { - /* f0(n) = x(n) */ - fcurnt1 = *pSrc++; - - /* Initialize coeff pointer */ - pk = (pCoeffs); - - /* Initialize state pointer */ - px = pState; - - /* read g2(n) from state buffer */ - gcurnt1 = *px; - - /* for sample 1 processing */ - /* f1(n) = f0(n) + K1 * g0(n-1) */ - fnext1 = (((q31_t) gcurnt1 * (*pk)) >> 15U) + fcurnt1; - fnext1 = __SSAT(fnext1, 16); - - - /* g1(n) = f0(n) * K1 + g0(n-1) */ - gnext1 = (((q31_t) fcurnt1 * (*pk++)) >> 15U) + gcurnt1; - gnext1 = __SSAT(gnext1, 16); - - /* save g1(n) in state buffer */ - *px++ = (q15_t) fcurnt1; - - /* f1(n) is saved in fcurnt1 - for next stage processing */ - fcurnt1 = fnext1; - - stageCnt = (numStages - 1U); - - /* stage loop */ - while (stageCnt > 0U) - { - /* read g2(n) from state buffer */ - gcurnt1 = *px; - - /* save g1(n) in state buffer */ - *px++ = (q15_t) gnext1; - - /* Sample processing for K2, K3.... */ - /* f2(n) = f1(n) + K2 * g1(n-1) */ - fnext1 = (((q31_t) gcurnt1 * (*pk)) >> 15U) + fcurnt1; - fnext1 = __SSAT(fnext1, 16); - - /* g2(n) = f1(n) * K2 + g1(n-1) */ - gnext1 = (((q31_t) fcurnt1 * (*pk++)) >> 15U) + gcurnt1; - gnext1 = __SSAT(gnext1, 16); - - - /* f1(n) is saved in fcurnt1 - for next stage processing */ - fcurnt1 = fnext1; - - stageCnt--; - - } - - /* y(n) = fN(n) */ - *pDst++ = __SSAT(fcurnt1, 16); - - - blkCnt--; - - } - -#else - - /* Run the below code for Cortex-M0 */ - - q31_t fcurnt, fnext, gcurnt, gnext; /* temporary variables */ - uint32_t numStages = S->numStages; /* Length of the filter */ - uint32_t blkCnt, stageCnt; /* temporary variables for counts */ - - pState = &S->pState[0]; - - blkCnt = blockSize; - - while (blkCnt > 0U) - { - /* f0(n) = x(n) */ - fcurnt = *pSrc++; - - /* Initialize coeff pointer */ - pk = (pCoeffs); - - /* Initialize state pointer */ - px = pState; - - /* read g0(n-1) from state buffer */ - gcurnt = *px; - - /* for sample 1 processing */ - /* f1(n) = f0(n) + K1 * g0(n-1) */ - fnext = ((gcurnt * (*pk)) >> 15U) + fcurnt; - fnext = __SSAT(fnext, 16); - - - /* g1(n) = f0(n) * K1 + g0(n-1) */ - gnext = ((fcurnt * (*pk++)) >> 15U) + gcurnt; - gnext = __SSAT(gnext, 16); - - /* save f0(n) in state buffer */ - *px++ = (q15_t) fcurnt; - - /* f1(n) is saved in fcurnt - for next stage processing */ - fcurnt = fnext; - - stageCnt = (numStages - 1U); - - /* stage loop */ - while (stageCnt > 0U) - { - /* read g1(n-1) from state buffer */ - gcurnt = *px; - - /* save g0(n-1) in state buffer */ - *px++ = (q15_t) gnext; - - /* Sample processing for K2, K3.... */ - /* f2(n) = f1(n) + K2 * g1(n-1) */ - fnext = ((gcurnt * (*pk)) >> 15U) + fcurnt; - fnext = __SSAT(fnext, 16); - - /* g2(n) = f1(n) * K2 + g1(n-1) */ - gnext = ((fcurnt * (*pk++)) >> 15U) + gcurnt; - gnext = __SSAT(gnext, 16); - - - /* f1(n) is saved in fcurnt - for next stage processing */ - fcurnt = fnext; - - stageCnt--; - - } - - /* y(n) = fN(n) */ - *pDst++ = __SSAT(fcurnt, 16); - - - blkCnt--; - - } - -#endif /* #if defined (ARM_MATH_DSP) */ - -} - -/** - * @} end of FIR_Lattice group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_lattice_q31.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_lattice_q31.c deleted file mode 100644 index 8acfd34..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_lattice_q31.c +++ /dev/null @@ -1,341 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_fir_lattice_q31.c - * Description: Q31 FIR lattice filter processing function - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupFilters - */ - -/** - * @addtogroup FIR_Lattice - * @{ - */ - - -/** - * @brief Processing function for the Q31 FIR lattice filter. - * @param[in] *S points to an instance of the Q31 FIR lattice structure. - * @param[in] *pSrc points to the block of input data. - * @param[out] *pDst points to the block of output data - * @param[in] blockSize number of samples to process. - * @return none. - * - * @details - * Scaling and Overflow Behavior: - * In order to avoid overflows the input signal must be scaled down by 2*log2(numStages) bits. - */ - -#if defined (ARM_MATH_DSP) - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - -void arm_fir_lattice_q31( - const arm_fir_lattice_instance_q31 * S, - q31_t * pSrc, - q31_t * pDst, - uint32_t blockSize) -{ - q31_t *pState; /* State pointer */ - q31_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ - q31_t *px; /* temporary state pointer */ - q31_t *pk; /* temporary coefficient pointer */ - q31_t fcurr1, fnext1, gcurr1 = 0, gnext1; /* temporary variables for first sample in loop unrolling */ - q31_t fcurr2, fnext2, gnext2; /* temporary variables for second sample in loop unrolling */ - uint32_t numStages = S->numStages; /* Length of the filter */ - uint32_t blkCnt, stageCnt; /* temporary variables for counts */ - q31_t k; - - pState = &S->pState[0]; - - blkCnt = blockSize >> 1U; - - /* First part of the processing with loop unrolling. Compute 2 outputs at a time. - a second loop below computes the remaining 1 sample. */ - while (blkCnt > 0U) - { - /* f0(n) = x(n) */ - fcurr1 = *pSrc++; - - /* f0(n) = x(n) */ - fcurr2 = *pSrc++; - - /* Initialize coeff pointer */ - pk = (pCoeffs); - - /* Initialize state pointer */ - px = pState; - - /* read g0(n - 1) from state buffer */ - gcurr1 = *px; - - /* Read the reflection coefficient */ - k = *pk++; - - /* for sample 1 processing */ - /* f1(n) = f0(n) + K1 * g0(n-1) */ - fnext1 = (q31_t) (((q63_t) gcurr1 * k) >> 32); - - /* g1(n) = f0(n) * K1 + g0(n-1) */ - gnext1 = (q31_t) (((q63_t) fcurr1 * (k)) >> 32); - fnext1 = fcurr1 + (fnext1 << 1U); - gnext1 = gcurr1 + (gnext1 << 1U); - - /* for sample 1 processing */ - /* f1(n) = f0(n) + K1 * g0(n-1) */ - fnext2 = (q31_t) (((q63_t) fcurr1 * k) >> 32); - - /* g1(n) = f0(n) * K1 + g0(n-1) */ - gnext2 = (q31_t) (((q63_t) fcurr2 * (k)) >> 32); - fnext2 = fcurr2 + (fnext2 << 1U); - gnext2 = fcurr1 + (gnext2 << 1U); - - /* save g1(n) in state buffer */ - *px++ = fcurr2; - - /* f1(n) is saved in fcurr1 - for next stage processing */ - fcurr1 = fnext1; - fcurr2 = fnext2; - - stageCnt = (numStages - 1U); - - /* stage loop */ - while (stageCnt > 0U) - { - - /* Read the reflection coefficient */ - k = *pk++; - - /* read g2(n) from state buffer */ - gcurr1 = *px; - - /* save g1(n) in state buffer */ - *px++ = gnext2; - - /* Sample processing for K2, K3.... */ - /* f2(n) = f1(n) + K2 * g1(n-1) */ - fnext1 = (q31_t) (((q63_t) gcurr1 * k) >> 32); - fnext2 = (q31_t) (((q63_t) gnext1 * k) >> 32); - - fnext1 = fcurr1 + (fnext1 << 1U); - fnext2 = fcurr2 + (fnext2 << 1U); - - /* g2(n) = f1(n) * K2 + g1(n-1) */ - gnext2 = (q31_t) (((q63_t) fcurr2 * (k)) >> 32); - gnext2 = gnext1 + (gnext2 << 1U); - - /* g2(n) = f1(n) * K2 + g1(n-1) */ - gnext1 = (q31_t) (((q63_t) fcurr1 * (k)) >> 32); - gnext1 = gcurr1 + (gnext1 << 1U); - - /* f1(n) is saved in fcurr1 - for next stage processing */ - fcurr1 = fnext1; - fcurr2 = fnext2; - - stageCnt--; - - } - - /* y(n) = fN(n) */ - *pDst++ = fcurr1; - *pDst++ = fcurr2; - - blkCnt--; - - } - - /* If the blockSize is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize % 0x2U; - - while (blkCnt > 0U) - { - /* f0(n) = x(n) */ - fcurr1 = *pSrc++; - - /* Initialize coeff pointer */ - pk = (pCoeffs); - - /* Initialize state pointer */ - px = pState; - - /* read g0(n - 1) from state buffer */ - gcurr1 = *px; - - /* Read the reflection coefficient */ - k = *pk++; - - /* for sample 1 processing */ - /* f1(n) = f0(n) + K1 * g0(n-1) */ - fnext1 = (q31_t) (((q63_t) gcurr1 * k) >> 32); - fnext1 = fcurr1 + (fnext1 << 1U); - - /* g1(n) = f0(n) * K1 + g0(n-1) */ - gnext1 = (q31_t) (((q63_t) fcurr1 * (k)) >> 32); - gnext1 = gcurr1 + (gnext1 << 1U); - - /* save g1(n) in state buffer */ - *px++ = fcurr1; - - /* f1(n) is saved in fcurr1 - for next stage processing */ - fcurr1 = fnext1; - - stageCnt = (numStages - 1U); - - /* stage loop */ - while (stageCnt > 0U) - { - /* Read the reflection coefficient */ - k = *pk++; - - /* read g2(n) from state buffer */ - gcurr1 = *px; - - /* save g1(n) in state buffer */ - *px++ = gnext1; - - /* Sample processing for K2, K3.... */ - /* f2(n) = f1(n) + K2 * g1(n-1) */ - fnext1 = (q31_t) (((q63_t) gcurr1 * k) >> 32); - fnext1 = fcurr1 + (fnext1 << 1U); - - /* g2(n) = f1(n) * K2 + g1(n-1) */ - gnext1 = (q31_t) (((q63_t) fcurr1 * (k)) >> 32); - gnext1 = gcurr1 + (gnext1 << 1U); - - /* f1(n) is saved in fcurr1 - for next stage processing */ - fcurr1 = fnext1; - - stageCnt--; - - } - - - /* y(n) = fN(n) */ - *pDst++ = fcurr1; - - blkCnt--; - - } - - -} - - -#else - -/* Run the below code for Cortex-M0 */ - -void arm_fir_lattice_q31( - const arm_fir_lattice_instance_q31 * S, - q31_t * pSrc, - q31_t * pDst, - uint32_t blockSize) -{ - q31_t *pState; /* State pointer */ - q31_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ - q31_t *px; /* temporary state pointer */ - q31_t *pk; /* temporary coefficient pointer */ - q31_t fcurr, fnext, gcurr, gnext; /* temporary variables */ - uint32_t numStages = S->numStages; /* Length of the filter */ - uint32_t blkCnt, stageCnt; /* temporary variables for counts */ - - pState = &S->pState[0]; - - blkCnt = blockSize; - - while (blkCnt > 0U) - { - /* f0(n) = x(n) */ - fcurr = *pSrc++; - - /* Initialize coeff pointer */ - pk = (pCoeffs); - - /* Initialize state pointer */ - px = pState; - - /* read g0(n-1) from state buffer */ - gcurr = *px; - - /* for sample 1 processing */ - /* f1(n) = f0(n) + K1 * g0(n-1) */ - fnext = (q31_t) (((q63_t) gcurr * (*pk)) >> 31) + fcurr; - /* g1(n) = f0(n) * K1 + g0(n-1) */ - gnext = (q31_t) (((q63_t) fcurr * (*pk++)) >> 31) + gcurr; - /* save g1(n) in state buffer */ - *px++ = fcurr; - - /* f1(n) is saved in fcurr1 - for next stage processing */ - fcurr = fnext; - - stageCnt = (numStages - 1U); - - /* stage loop */ - while (stageCnt > 0U) - { - /* read g2(n) from state buffer */ - gcurr = *px; - - /* save g1(n) in state buffer */ - *px++ = gnext; - - /* Sample processing for K2, K3.... */ - /* f2(n) = f1(n) + K2 * g1(n-1) */ - fnext = (q31_t) (((q63_t) gcurr * (*pk)) >> 31) + fcurr; - /* g2(n) = f1(n) * K2 + g1(n-1) */ - gnext = (q31_t) (((q63_t) fcurr * (*pk++)) >> 31) + gcurr; - - /* f1(n) is saved in fcurr1 - for next stage processing */ - fcurr = fnext; - - stageCnt--; - - } - - /* y(n) = fN(n) */ - *pDst++ = fcurr; - - blkCnt--; - - } - -} - -#endif /* #if defined (ARM_MATH_DSP) */ - - -/** - * @} end of FIR_Lattice group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_q15.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_q15.c deleted file mode 100644 index e970a10..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_q15.c +++ /dev/null @@ -1,679 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_fir_q15.c - * Description: Q15 FIR filter processing function - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupFilters - */ - -/** - * @addtogroup FIR - * @{ - */ - -/** - * @brief Processing function for the Q15 FIR filter. - * @param[in] *S points to an instance of the Q15 FIR structure. - * @param[in] *pSrc points to the block of input data. - * @param[out] *pDst points to the block of output data. - * @param[in] blockSize number of samples to process per call. - * @return none. - * - * - * \par Restrictions - * If the silicon does not support unaligned memory access enable the macro UNALIGNED_SUPPORT_DISABLE - * In this case input, output, state buffers should be aligned by 32-bit - * - * Scaling and Overflow Behavior: - * \par - * The function is implemented using a 64-bit internal accumulator. - * Both coefficients and state variables are represented in 1.15 format and multiplications yield a 2.30 result. - * The 2.30 intermediate results are accumulated in a 64-bit accumulator in 34.30 format. - * There is no risk of internal overflow with this approach and the full precision of intermediate multiplications is preserved. - * After all additions have been performed, the accumulator is truncated to 34.15 format by discarding low 15 bits. - * Lastly, the accumulator is saturated to yield a result in 1.15 format. - * - * \par - * Refer to the function arm_fir_fast_q15() for a faster but less precise implementation of this function. - */ - -#if defined (ARM_MATH_DSP) - -/* Run the below code for Cortex-M4 and Cortex-M3 */ - -#ifndef UNALIGNED_SUPPORT_DISABLE - - -void arm_fir_q15( - const arm_fir_instance_q15 * S, - q15_t * pSrc, - q15_t * pDst, - uint32_t blockSize) -{ - q15_t *pState = S->pState; /* State pointer */ - q15_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ - q15_t *pStateCurnt; /* Points to the current sample of the state */ - q15_t *px1; /* Temporary q15 pointer for state buffer */ - q15_t *pb; /* Temporary pointer for coefficient buffer */ - q31_t x0, x1, x2, x3, c0; /* Temporary variables to hold SIMD state and coefficient values */ - q63_t acc0, acc1, acc2, acc3; /* Accumulators */ - uint32_t numTaps = S->numTaps; /* Number of taps in the filter */ - uint32_t tapCnt, blkCnt; /* Loop counters */ - - - /* S->pState points to state array which contains previous frame (numTaps - 1) samples */ - /* pStateCurnt points to the location where the new input data should be written */ - pStateCurnt = &(S->pState[(numTaps - 1U)]); - - /* Apply loop unrolling and compute 4 output values simultaneously. - * The variables acc0 ... acc3 hold output values that are being computed: - * - * acc0 = b[numTaps-1] * x[n-numTaps-1] + b[numTaps-2] * x[n-numTaps-2] + b[numTaps-3] * x[n-numTaps-3] +...+ b[0] * x[0] - * acc1 = b[numTaps-1] * x[n-numTaps] + b[numTaps-2] * x[n-numTaps-1] + b[numTaps-3] * x[n-numTaps-2] +...+ b[0] * x[1] - * acc2 = b[numTaps-1] * x[n-numTaps+1] + b[numTaps-2] * x[n-numTaps] + b[numTaps-3] * x[n-numTaps-1] +...+ b[0] * x[2] - * acc3 = b[numTaps-1] * x[n-numTaps+2] + b[numTaps-2] * x[n-numTaps+1] + b[numTaps-3] * x[n-numTaps] +...+ b[0] * x[3] - */ - - blkCnt = blockSize >> 2; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - /* Copy four new input samples into the state buffer. - ** Use 32-bit SIMD to move the 16-bit data. Only requires two copies. */ - *__SIMD32(pStateCurnt)++ = *__SIMD32(pSrc)++; - *__SIMD32(pStateCurnt)++ = *__SIMD32(pSrc)++; - - /* Set all accumulators to zero */ - acc0 = 0; - acc1 = 0; - acc2 = 0; - acc3 = 0; - - /* Initialize state pointer of type q15 */ - px1 = pState; - - /* Initialize coeff pointer of type q31 */ - pb = pCoeffs; - - /* Read the first two samples from the state buffer: x[n-N], x[n-N-1] */ - x0 = _SIMD32_OFFSET(px1); - - /* Read the third and forth samples from the state buffer: x[n-N-1], x[n-N-2] */ - x1 = _SIMD32_OFFSET(px1 + 1U); - - px1 += 2U; - - /* Loop over the number of taps. Unroll by a factor of 4. - ** Repeat until we've computed numTaps-4 coefficients. */ - tapCnt = numTaps >> 2; - - while (tapCnt > 0U) - { - /* Read the first two coefficients using SIMD: b[N] and b[N-1] coefficients */ - c0 = *__SIMD32(pb)++; - - /* acc0 += b[N] * x[n-N] + b[N-1] * x[n-N-1] */ - acc0 = __SMLALD(x0, c0, acc0); - - /* acc1 += b[N] * x[n-N-1] + b[N-1] * x[n-N-2] */ - acc1 = __SMLALD(x1, c0, acc1); - - /* Read state x[n-N-2], x[n-N-3] */ - x2 = _SIMD32_OFFSET(px1); - - /* Read state x[n-N-3], x[n-N-4] */ - x3 = _SIMD32_OFFSET(px1 + 1U); - - /* acc2 += b[N] * x[n-N-2] + b[N-1] * x[n-N-3] */ - acc2 = __SMLALD(x2, c0, acc2); - - /* acc3 += b[N] * x[n-N-3] + b[N-1] * x[n-N-4] */ - acc3 = __SMLALD(x3, c0, acc3); - - /* Read coefficients b[N-2], b[N-3] */ - c0 = *__SIMD32(pb)++; - - /* acc0 += b[N-2] * x[n-N-2] + b[N-3] * x[n-N-3] */ - acc0 = __SMLALD(x2, c0, acc0); - - /* acc1 += b[N-2] * x[n-N-3] + b[N-3] * x[n-N-4] */ - acc1 = __SMLALD(x3, c0, acc1); - - /* Read state x[n-N-4], x[n-N-5] */ - x0 = _SIMD32_OFFSET(px1 + 2U); - - /* Read state x[n-N-5], x[n-N-6] */ - x1 = _SIMD32_OFFSET(px1 + 3U); - - /* acc2 += b[N-2] * x[n-N-4] + b[N-3] * x[n-N-5] */ - acc2 = __SMLALD(x0, c0, acc2); - - /* acc3 += b[N-2] * x[n-N-5] + b[N-3] * x[n-N-6] */ - acc3 = __SMLALD(x1, c0, acc3); - - px1 += 4U; - - tapCnt--; - - } - - - /* If the filter length is not a multiple of 4, compute the remaining filter taps. - ** This is always be 2 taps since the filter length is even. */ - if ((numTaps & 0x3U) != 0U) - { - /* Read 2 coefficients */ - c0 = *__SIMD32(pb)++; - - /* Fetch 4 state variables */ - x2 = _SIMD32_OFFSET(px1); - - x3 = _SIMD32_OFFSET(px1 + 1U); - - /* Perform the multiply-accumulates */ - acc0 = __SMLALD(x0, c0, acc0); - - px1 += 2U; - - acc1 = __SMLALD(x1, c0, acc1); - acc2 = __SMLALD(x2, c0, acc2); - acc3 = __SMLALD(x3, c0, acc3); - } - - /* The results in the 4 accumulators are in 2.30 format. Convert to 1.15 with saturation. - ** Then store the 4 outputs in the destination buffer. */ - -#ifndef ARM_MATH_BIG_ENDIAN - - *__SIMD32(pDst)++ = - __PKHBT(__SSAT((acc0 >> 15), 16), __SSAT((acc1 >> 15), 16), 16); - *__SIMD32(pDst)++ = - __PKHBT(__SSAT((acc2 >> 15), 16), __SSAT((acc3 >> 15), 16), 16); - -#else - - *__SIMD32(pDst)++ = - __PKHBT(__SSAT((acc1 >> 15), 16), __SSAT((acc0 >> 15), 16), 16); - *__SIMD32(pDst)++ = - __PKHBT(__SSAT((acc3 >> 15), 16), __SSAT((acc2 >> 15), 16), 16); - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - - - /* Advance the state pointer by 4 to process the next group of 4 samples */ - pState = pState + 4; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize % 0x4U; - while (blkCnt > 0U) - { - /* Copy two samples into state buffer */ - *pStateCurnt++ = *pSrc++; - - /* Set the accumulator to zero */ - acc0 = 0; - - /* Initialize state pointer of type q15 */ - px1 = pState; - - /* Initialize coeff pointer of type q31 */ - pb = pCoeffs; - - tapCnt = numTaps >> 1; - - do - { - - c0 = *__SIMD32(pb)++; - x0 = *__SIMD32(px1)++; - - acc0 = __SMLALD(x0, c0, acc0); - tapCnt--; - } - while (tapCnt > 0U); - - /* The result is in 2.30 format. Convert to 1.15 with saturation. - ** Then store the output in the destination buffer. */ - *pDst++ = (q15_t) (__SSAT((acc0 >> 15), 16)); - - /* Advance state pointer by 1 for the next sample */ - pState = pState + 1; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* Processing is complete. - ** Now copy the last numTaps - 1 samples to the satrt of the state buffer. - ** This prepares the state buffer for the next function call. */ - - /* Points to the start of the state buffer */ - pStateCurnt = S->pState; - - /* Calculation of count for copying integer writes */ - tapCnt = (numTaps - 1U) >> 2; - - while (tapCnt > 0U) - { - - /* Copy state values to start of state buffer */ - *__SIMD32(pStateCurnt)++ = *__SIMD32(pState)++; - *__SIMD32(pStateCurnt)++ = *__SIMD32(pState)++; - - tapCnt--; - - } - - /* Calculation of count for remaining q15_t data */ - tapCnt = (numTaps - 1U) % 0x4U; - - /* copy remaining data */ - while (tapCnt > 0U) - { - *pStateCurnt++ = *pState++; - - /* Decrement the loop counter */ - tapCnt--; - } -} - -#else /* UNALIGNED_SUPPORT_DISABLE */ - -void arm_fir_q15( - const arm_fir_instance_q15 * S, - q15_t * pSrc, - q15_t * pDst, - uint32_t blockSize) -{ - q15_t *pState = S->pState; /* State pointer */ - q15_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ - q15_t *pStateCurnt; /* Points to the current sample of the state */ - q63_t acc0, acc1, acc2, acc3; /* Accumulators */ - q15_t *pb; /* Temporary pointer for coefficient buffer */ - q15_t *px; /* Temporary q31 pointer for SIMD state buffer accesses */ - q31_t x0, x1, x2, c0; /* Temporary variables to hold SIMD state and coefficient values */ - uint32_t numTaps = S->numTaps; /* Number of taps in the filter */ - uint32_t tapCnt, blkCnt; /* Loop counters */ - - - /* S->pState points to state array which contains previous frame (numTaps - 1) samples */ - /* pStateCurnt points to the location where the new input data should be written */ - pStateCurnt = &(S->pState[(numTaps - 1U)]); - - /* Apply loop unrolling and compute 4 output values simultaneously. - * The variables acc0 ... acc3 hold output values that are being computed: - * - * acc0 = b[numTaps-1] * x[n-numTaps-1] + b[numTaps-2] * x[n-numTaps-2] + b[numTaps-3] * x[n-numTaps-3] +...+ b[0] * x[0] - * acc1 = b[numTaps-1] * x[n-numTaps] + b[numTaps-2] * x[n-numTaps-1] + b[numTaps-3] * x[n-numTaps-2] +...+ b[0] * x[1] - * acc2 = b[numTaps-1] * x[n-numTaps+1] + b[numTaps-2] * x[n-numTaps] + b[numTaps-3] * x[n-numTaps-1] +...+ b[0] * x[2] - * acc3 = b[numTaps-1] * x[n-numTaps+2] + b[numTaps-2] * x[n-numTaps+1] + b[numTaps-3] * x[n-numTaps] +...+ b[0] * x[3] - */ - - blkCnt = blockSize >> 2; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - /* Copy four new input samples into the state buffer. - ** Use 32-bit SIMD to move the 16-bit data. Only requires two copies. */ - *pStateCurnt++ = *pSrc++; - *pStateCurnt++ = *pSrc++; - *pStateCurnt++ = *pSrc++; - *pStateCurnt++ = *pSrc++; - - - /* Set all accumulators to zero */ - acc0 = 0; - acc1 = 0; - acc2 = 0; - acc3 = 0; - - /* Typecast q15_t pointer to q31_t pointer for state reading in q31_t */ - px = pState; - - /* Typecast q15_t pointer to q31_t pointer for coefficient reading in q31_t */ - pb = pCoeffs; - - /* Read the first two samples from the state buffer: x[n-N], x[n-N-1] */ - x0 = *__SIMD32(px)++; - - /* Read the third and forth samples from the state buffer: x[n-N-2], x[n-N-3] */ - x2 = *__SIMD32(px)++; - - /* Loop over the number of taps. Unroll by a factor of 4. - ** Repeat until we've computed numTaps-(numTaps%4) coefficients. */ - tapCnt = numTaps >> 2; - - while (tapCnt > 0) - { - /* Read the first two coefficients using SIMD: b[N] and b[N-1] coefficients */ - c0 = *__SIMD32(pb)++; - - /* acc0 += b[N] * x[n-N] + b[N-1] * x[n-N-1] */ - acc0 = __SMLALD(x0, c0, acc0); - - /* acc2 += b[N] * x[n-N-2] + b[N-1] * x[n-N-3] */ - acc2 = __SMLALD(x2, c0, acc2); - - /* pack x[n-N-1] and x[n-N-2] */ -#ifndef ARM_MATH_BIG_ENDIAN - x1 = __PKHBT(x2, x0, 0); -#else - x1 = __PKHBT(x0, x2, 0); -#endif - - /* Read state x[n-N-4], x[n-N-5] */ - x0 = _SIMD32_OFFSET(px); - - /* acc1 += b[N] * x[n-N-1] + b[N-1] * x[n-N-2] */ - acc1 = __SMLALDX(x1, c0, acc1); - - /* pack x[n-N-3] and x[n-N-4] */ -#ifndef ARM_MATH_BIG_ENDIAN - x1 = __PKHBT(x0, x2, 0); -#else - x1 = __PKHBT(x2, x0, 0); -#endif - - /* acc3 += b[N] * x[n-N-3] + b[N-1] * x[n-N-4] */ - acc3 = __SMLALDX(x1, c0, acc3); - - /* Read coefficients b[N-2], b[N-3] */ - c0 = *__SIMD32(pb)++; - - /* acc0 += b[N-2] * x[n-N-2] + b[N-3] * x[n-N-3] */ - acc0 = __SMLALD(x2, c0, acc0); - - /* Read state x[n-N-6], x[n-N-7] with offset */ - x2 = _SIMD32_OFFSET(px + 2U); - - /* acc2 += b[N-2] * x[n-N-4] + b[N-3] * x[n-N-5] */ - acc2 = __SMLALD(x0, c0, acc2); - - /* acc1 += b[N-2] * x[n-N-3] + b[N-3] * x[n-N-4] */ - acc1 = __SMLALDX(x1, c0, acc1); - - /* pack x[n-N-5] and x[n-N-6] */ -#ifndef ARM_MATH_BIG_ENDIAN - x1 = __PKHBT(x2, x0, 0); -#else - x1 = __PKHBT(x0, x2, 0); -#endif - - /* acc3 += b[N-2] * x[n-N-5] + b[N-3] * x[n-N-6] */ - acc3 = __SMLALDX(x1, c0, acc3); - - /* Update state pointer for next state reading */ - px += 4U; - - /* Decrement tap count */ - tapCnt--; - - } - - /* If the filter length is not a multiple of 4, compute the remaining filter taps. - ** This is always be 2 taps since the filter length is even. */ - if ((numTaps & 0x3U) != 0U) - { - - /* Read last two coefficients */ - c0 = *__SIMD32(pb)++; - - /* Perform the multiply-accumulates */ - acc0 = __SMLALD(x0, c0, acc0); - acc2 = __SMLALD(x2, c0, acc2); - - /* pack state variables */ -#ifndef ARM_MATH_BIG_ENDIAN - x1 = __PKHBT(x2, x0, 0); -#else - x1 = __PKHBT(x0, x2, 0); -#endif - - /* Read last state variables */ - x0 = *__SIMD32(px); - - /* Perform the multiply-accumulates */ - acc1 = __SMLALDX(x1, c0, acc1); - - /* pack state variables */ -#ifndef ARM_MATH_BIG_ENDIAN - x1 = __PKHBT(x0, x2, 0); -#else - x1 = __PKHBT(x2, x0, 0); -#endif - - /* Perform the multiply-accumulates */ - acc3 = __SMLALDX(x1, c0, acc3); - } - - /* The results in the 4 accumulators are in 2.30 format. Convert to 1.15 with saturation. - ** Then store the 4 outputs in the destination buffer. */ - -#ifndef ARM_MATH_BIG_ENDIAN - - *__SIMD32(pDst)++ = - __PKHBT(__SSAT((acc0 >> 15), 16), __SSAT((acc1 >> 15), 16), 16); - - *__SIMD32(pDst)++ = - __PKHBT(__SSAT((acc2 >> 15), 16), __SSAT((acc3 >> 15), 16), 16); - -#else - - *__SIMD32(pDst)++ = - __PKHBT(__SSAT((acc1 >> 15), 16), __SSAT((acc0 >> 15), 16), 16); - - *__SIMD32(pDst)++ = - __PKHBT(__SSAT((acc3 >> 15), 16), __SSAT((acc2 >> 15), 16), 16); - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - /* Advance the state pointer by 4 to process the next group of 4 samples */ - pState = pState + 4; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize % 0x4U; - while (blkCnt > 0U) - { - /* Copy two samples into state buffer */ - *pStateCurnt++ = *pSrc++; - - /* Set the accumulator to zero */ - acc0 = 0; - - /* Use SIMD to hold states and coefficients */ - px = pState; - pb = pCoeffs; - - tapCnt = numTaps >> 1U; - - do - { - acc0 += (q31_t) * px++ * *pb++; - acc0 += (q31_t) * px++ * *pb++; - tapCnt--; - } - while (tapCnt > 0U); - - /* The result is in 2.30 format. Convert to 1.15 with saturation. - ** Then store the output in the destination buffer. */ - *pDst++ = (q15_t) (__SSAT((acc0 >> 15), 16)); - - /* Advance state pointer by 1 for the next sample */ - pState = pState + 1U; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* Processing is complete. - ** Now copy the last numTaps - 1 samples to the satrt of the state buffer. - ** This prepares the state buffer for the next function call. */ - - /* Points to the start of the state buffer */ - pStateCurnt = S->pState; - - /* Calculation of count for copying integer writes */ - tapCnt = (numTaps - 1U) >> 2; - - while (tapCnt > 0U) - { - *pStateCurnt++ = *pState++; - *pStateCurnt++ = *pState++; - *pStateCurnt++ = *pState++; - *pStateCurnt++ = *pState++; - - tapCnt--; - - } - - /* Calculation of count for remaining q15_t data */ - tapCnt = (numTaps - 1U) % 0x4U; - - /* copy remaining data */ - while (tapCnt > 0U) - { - *pStateCurnt++ = *pState++; - - /* Decrement the loop counter */ - tapCnt--; - } -} - - -#endif /* #ifndef UNALIGNED_SUPPORT_DISABLE */ - -#else /* ARM_MATH_CM0_FAMILY */ - - -/* Run the below code for Cortex-M0 */ - -void arm_fir_q15( - const arm_fir_instance_q15 * S, - q15_t * pSrc, - q15_t * pDst, - uint32_t blockSize) -{ - q15_t *pState = S->pState; /* State pointer */ - q15_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ - q15_t *pStateCurnt; /* Points to the current sample of the state */ - - - - q15_t *px; /* Temporary pointer for state buffer */ - q15_t *pb; /* Temporary pointer for coefficient buffer */ - q63_t acc; /* Accumulator */ - uint32_t numTaps = S->numTaps; /* Number of nTaps in the filter */ - uint32_t tapCnt, blkCnt; /* Loop counters */ - - /* S->pState buffer contains previous frame (numTaps - 1) samples */ - /* pStateCurnt points to the location where the new input data should be written */ - pStateCurnt = &(S->pState[(numTaps - 1U)]); - - /* Initialize blkCnt with blockSize */ - blkCnt = blockSize; - - while (blkCnt > 0U) - { - /* Copy one sample at a time into state buffer */ - *pStateCurnt++ = *pSrc++; - - /* Set the accumulator to zero */ - acc = 0; - - /* Initialize state pointer */ - px = pState; - - /* Initialize Coefficient pointer */ - pb = pCoeffs; - - tapCnt = numTaps; - - /* Perform the multiply-accumulates */ - do - { - /* acc = b[numTaps-1] * x[n-numTaps-1] + b[numTaps-2] * x[n-numTaps-2] + b[numTaps-3] * x[n-numTaps-3] +...+ b[0] * x[0] */ - acc += (q31_t) * px++ * *pb++; - tapCnt--; - } while (tapCnt > 0U); - - /* The result is in 2.30 format. Convert to 1.15 - ** Then store the output in the destination buffer. */ - *pDst++ = (q15_t) __SSAT((acc >> 15U), 16); - - /* Advance state pointer by 1 for the next sample */ - pState = pState + 1; - - /* Decrement the samples loop counter */ - blkCnt--; - } - - /* Processing is complete. - ** Now copy the last numTaps - 1 samples to the satrt of the state buffer. - ** This prepares the state buffer for the next function call. */ - - /* Points to the start of the state buffer */ - pStateCurnt = S->pState; - - /* Copy numTaps number of values */ - tapCnt = (numTaps - 1U); - - /* copy data */ - while (tapCnt > 0U) - { - *pStateCurnt++ = *pState++; - - /* Decrement the loop counter */ - tapCnt--; - } - -} - -#endif /* #if defined (ARM_MATH_DSP) */ - - - - -/** - * @} end of FIR group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_q31.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_q31.c deleted file mode 100644 index 4ca8295..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_q31.c +++ /dev/null @@ -1,353 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_fir_q31.c - * Description: Q31 FIR filter processing function - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupFilters - */ - -/** - * @addtogroup FIR - * @{ - */ - -/** - * @param[in] *S points to an instance of the Q31 FIR filter structure. - * @param[in] *pSrc points to the block of input data. - * @param[out] *pDst points to the block of output data. - * @param[in] blockSize number of samples to process per call. - * @return none. - * - * @details - * Scaling and Overflow Behavior: - * \par - * The function is implemented using an internal 64-bit accumulator. - * The accumulator has a 2.62 format and maintains full precision of the intermediate multiplication results but provides only a single guard bit. - * Thus, if the accumulator result overflows it wraps around rather than clip. - * In order to avoid overflows completely the input signal must be scaled down by log2(numTaps) bits. - * After all multiply-accumulates are performed, the 2.62 accumulator is right shifted by 31 bits and saturated to 1.31 format to yield the final result. - * - * \par - * Refer to the function arm_fir_fast_q31() for a faster but less precise implementation of this filter for Cortex-M3 and Cortex-M4. - */ - -void arm_fir_q31( - const arm_fir_instance_q31 * S, - q31_t * pSrc, - q31_t * pDst, - uint32_t blockSize) -{ - q31_t *pState = S->pState; /* State pointer */ - q31_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ - q31_t *pStateCurnt; /* Points to the current sample of the state */ - - -#if defined (ARM_MATH_DSP) - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - q31_t x0, x1, x2; /* Temporary variables to hold state */ - q31_t c0; /* Temporary variable to hold coefficient value */ - q31_t *px; /* Temporary pointer for state */ - q31_t *pb; /* Temporary pointer for coefficient buffer */ - q63_t acc0, acc1, acc2; /* Accumulators */ - uint32_t numTaps = S->numTaps; /* Number of filter coefficients in the filter */ - uint32_t i, tapCnt, blkCnt, tapCntN3; /* Loop counters */ - - /* S->pState points to state array which contains previous frame (numTaps - 1) samples */ - /* pStateCurnt points to the location where the new input data should be written */ - pStateCurnt = &(S->pState[(numTaps - 1U)]); - - /* Apply loop unrolling and compute 4 output values simultaneously. - * The variables acc0 ... acc3 hold output values that are being computed: - * - * acc0 = b[numTaps-1] * x[n-numTaps-1] + b[numTaps-2] * x[n-numTaps-2] + b[numTaps-3] * x[n-numTaps-3] +...+ b[0] * x[0] - * acc1 = b[numTaps-1] * x[n-numTaps] + b[numTaps-2] * x[n-numTaps-1] + b[numTaps-3] * x[n-numTaps-2] +...+ b[0] * x[1] - * acc2 = b[numTaps-1] * x[n-numTaps+1] + b[numTaps-2] * x[n-numTaps] + b[numTaps-3] * x[n-numTaps-1] +...+ b[0] * x[2] - * acc3 = b[numTaps-1] * x[n-numTaps+2] + b[numTaps-2] * x[n-numTaps+1] + b[numTaps-3] * x[n-numTaps] +...+ b[0] * x[3] - */ - blkCnt = blockSize / 3; - blockSize = blockSize - (3 * blkCnt); - - tapCnt = numTaps / 3; - tapCntN3 = numTaps - (3 * tapCnt); - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - /* Copy three new input samples into the state buffer */ - *pStateCurnt++ = *pSrc++; - *pStateCurnt++ = *pSrc++; - *pStateCurnt++ = *pSrc++; - - /* Set all accumulators to zero */ - acc0 = 0; - acc1 = 0; - acc2 = 0; - - /* Initialize state pointer */ - px = pState; - - /* Initialize coefficient pointer */ - pb = pCoeffs; - - /* Read the first two samples from the state buffer: - * x[n-numTaps], x[n-numTaps-1] */ - x0 = *(px++); - x1 = *(px++); - - /* Loop unrolling. Process 3 taps at a time. */ - i = tapCnt; - - while (i > 0U) - { - /* Read the b[numTaps] coefficient */ - c0 = *pb; - - /* Read x[n-numTaps-2] sample */ - x2 = *(px++); - - /* Perform the multiply-accumulates */ - acc0 += ((q63_t) x0 * c0); - acc1 += ((q63_t) x1 * c0); - acc2 += ((q63_t) x2 * c0); - - /* Read the coefficient and state */ - c0 = *(pb + 1U); - x0 = *(px++); - - /* Perform the multiply-accumulates */ - acc0 += ((q63_t) x1 * c0); - acc1 += ((q63_t) x2 * c0); - acc2 += ((q63_t) x0 * c0); - - /* Read the coefficient and state */ - c0 = *(pb + 2U); - x1 = *(px++); - - /* update coefficient pointer */ - pb += 3U; - - /* Perform the multiply-accumulates */ - acc0 += ((q63_t) x2 * c0); - acc1 += ((q63_t) x0 * c0); - acc2 += ((q63_t) x1 * c0); - - /* Decrement the loop counter */ - i--; - } - - /* If the filter length is not a multiple of 3, compute the remaining filter taps */ - - i = tapCntN3; - - while (i > 0U) - { - /* Read coefficients */ - c0 = *(pb++); - - /* Fetch 1 state variable */ - x2 = *(px++); - - /* Perform the multiply-accumulates */ - acc0 += ((q63_t) x0 * c0); - acc1 += ((q63_t) x1 * c0); - acc2 += ((q63_t) x2 * c0); - - /* Reuse the present sample states for next sample */ - x0 = x1; - x1 = x2; - - /* Decrement the loop counter */ - i--; - } - - /* Advance the state pointer by 3 to process the next group of 3 samples */ - pState = pState + 3; - - /* The results in the 3 accumulators are in 2.30 format. Convert to 1.31 - ** Then store the 3 outputs in the destination buffer. */ - *pDst++ = (q31_t) (acc0 >> 31U); - *pDst++ = (q31_t) (acc1 >> 31U); - *pDst++ = (q31_t) (acc2 >> 31U); - - /* Decrement the samples loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 3, compute any remaining output samples here. - ** No loop unrolling is used. */ - - while (blockSize > 0U) - { - /* Copy one sample at a time into state buffer */ - *pStateCurnt++ = *pSrc++; - - /* Set the accumulator to zero */ - acc0 = 0; - - /* Initialize state pointer */ - px = pState; - - /* Initialize Coefficient pointer */ - pb = (pCoeffs); - - i = numTaps; - - /* Perform the multiply-accumulates */ - do - { - acc0 += (q63_t) * (px++) * (*(pb++)); - i--; - } while (i > 0U); - - /* The result is in 2.62 format. Convert to 1.31 - ** Then store the output in the destination buffer. */ - *pDst++ = (q31_t) (acc0 >> 31U); - - /* Advance state pointer by 1 for the next sample */ - pState = pState + 1; - - /* Decrement the samples loop counter */ - blockSize--; - } - - /* Processing is complete. - ** Now copy the last numTaps - 1 samples to the satrt of the state buffer. - ** This prepares the state buffer for the next function call. */ - - /* Points to the start of the state buffer */ - pStateCurnt = S->pState; - - tapCnt = (numTaps - 1U) >> 2U; - - /* copy data */ - while (tapCnt > 0U) - { - *pStateCurnt++ = *pState++; - *pStateCurnt++ = *pState++; - *pStateCurnt++ = *pState++; - *pStateCurnt++ = *pState++; - - /* Decrement the loop counter */ - tapCnt--; - } - - /* Calculate remaining number of copies */ - tapCnt = (numTaps - 1U) % 0x4U; - - /* Copy the remaining q31_t data */ - while (tapCnt > 0U) - { - *pStateCurnt++ = *pState++; - - /* Decrement the loop counter */ - tapCnt--; - } - -#else - -/* Run the below code for Cortex-M0 */ - - q31_t *px; /* Temporary pointer for state */ - q31_t *pb; /* Temporary pointer for coefficient buffer */ - q63_t acc; /* Accumulator */ - uint32_t numTaps = S->numTaps; /* Length of the filter */ - uint32_t i, tapCnt, blkCnt; /* Loop counters */ - - /* S->pState buffer contains previous frame (numTaps - 1) samples */ - /* pStateCurnt points to the location where the new input data should be written */ - pStateCurnt = &(S->pState[(numTaps - 1U)]); - - /* Initialize blkCnt with blockSize */ - blkCnt = blockSize; - - while (blkCnt > 0U) - { - /* Copy one sample at a time into state buffer */ - *pStateCurnt++ = *pSrc++; - - /* Set the accumulator to zero */ - acc = 0; - - /* Initialize state pointer */ - px = pState; - - /* Initialize Coefficient pointer */ - pb = pCoeffs; - - i = numTaps; - - /* Perform the multiply-accumulates */ - do - { - /* acc = b[numTaps-1] * x[n-numTaps-1] + b[numTaps-2] * x[n-numTaps-2] + b[numTaps-3] * x[n-numTaps-3] +...+ b[0] * x[0] */ - acc += (q63_t) * px++ * *pb++; - i--; - } while (i > 0U); - - /* The result is in 2.62 format. Convert to 1.31 - ** Then store the output in the destination buffer. */ - *pDst++ = (q31_t) (acc >> 31U); - - /* Advance state pointer by 1 for the next sample */ - pState = pState + 1; - - /* Decrement the samples loop counter */ - blkCnt--; - } - - /* Processing is complete. - ** Now copy the last numTaps - 1 samples to the starting of the state buffer. - ** This prepares the state buffer for the next function call. */ - - /* Points to the start of the state buffer */ - pStateCurnt = S->pState; - - /* Copy numTaps number of values */ - tapCnt = numTaps - 1U; - - /* Copy the data */ - while (tapCnt > 0U) - { - *pStateCurnt++ = *pState++; - - /* Decrement the loop counter */ - tapCnt--; - } - - -#endif /* #if defined (ARM_MATH_DSP) */ - -} - -/** - * @} end of FIR group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_q7.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_q7.c deleted file mode 100644 index 23e60ad..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_q7.c +++ /dev/null @@ -1,385 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_fir_q7.c - * Description: Q7 FIR filter processing function - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupFilters - */ - -/** - * @addtogroup FIR - * @{ - */ - -/** - * @param[in] *S points to an instance of the Q7 FIR filter structure. - * @param[in] *pSrc points to the block of input data. - * @param[out] *pDst points to the block of output data. - * @param[in] blockSize number of samples to process per call. - * @return none. - * - * Scaling and Overflow Behavior: - * \par - * The function is implemented using a 32-bit internal accumulator. - * Both coefficients and state variables are represented in 1.7 format and multiplications yield a 2.14 result. - * The 2.14 intermediate results are accumulated in a 32-bit accumulator in 18.14 format. - * There is no risk of internal overflow with this approach and the full precision of intermediate multiplications is preserved. - * The accumulator is converted to 18.7 format by discarding the low 7 bits. - * Finally, the result is truncated to 1.7 format. - */ - -void arm_fir_q7( - const arm_fir_instance_q7 * S, - q7_t * pSrc, - q7_t * pDst, - uint32_t blockSize) -{ - -#if defined (ARM_MATH_DSP) - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - q7_t *pState = S->pState; /* State pointer */ - q7_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ - q7_t *pStateCurnt; /* Points to the current sample of the state */ - q7_t x0, x1, x2, x3; /* Temporary variables to hold state */ - q7_t c0; /* Temporary variable to hold coefficient value */ - q7_t *px; /* Temporary pointer for state */ - q7_t *pb; /* Temporary pointer for coefficient buffer */ - q31_t acc0, acc1, acc2, acc3; /* Accumulators */ - uint32_t numTaps = S->numTaps; /* Number of filter coefficients in the filter */ - uint32_t i, tapCnt, blkCnt; /* Loop counters */ - - /* S->pState points to state array which contains previous frame (numTaps - 1) samples */ - /* pStateCurnt points to the location where the new input data should be written */ - pStateCurnt = &(S->pState[(numTaps - 1U)]); - - /* Apply loop unrolling and compute 4 output values simultaneously. - * The variables acc0 ... acc3 hold output values that are being computed: - * - * acc0 = b[numTaps-1] * x[n-numTaps-1] + b[numTaps-2] * x[n-numTaps-2] + b[numTaps-3] * x[n-numTaps-3] +...+ b[0] * x[0] - * acc1 = b[numTaps-1] * x[n-numTaps] + b[numTaps-2] * x[n-numTaps-1] + b[numTaps-3] * x[n-numTaps-2] +...+ b[0] * x[1] - * acc2 = b[numTaps-1] * x[n-numTaps+1] + b[numTaps-2] * x[n-numTaps] + b[numTaps-3] * x[n-numTaps-1] +...+ b[0] * x[2] - * acc3 = b[numTaps-1] * x[n-numTaps+2] + b[numTaps-2] * x[n-numTaps+1] + b[numTaps-3] * x[n-numTaps] +...+ b[0] * x[3] - */ - blkCnt = blockSize >> 2; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - /* Copy four new input samples into the state buffer */ - *pStateCurnt++ = *pSrc++; - *pStateCurnt++ = *pSrc++; - *pStateCurnt++ = *pSrc++; - *pStateCurnt++ = *pSrc++; - - /* Set all accumulators to zero */ - acc0 = 0; - acc1 = 0; - acc2 = 0; - acc3 = 0; - - /* Initialize state pointer */ - px = pState; - - /* Initialize coefficient pointer */ - pb = pCoeffs; - - /* Read the first three samples from the state buffer: - * x[n-numTaps], x[n-numTaps-1], x[n-numTaps-2] */ - x0 = *(px++); - x1 = *(px++); - x2 = *(px++); - - /* Loop unrolling. Process 4 taps at a time. */ - tapCnt = numTaps >> 2; - i = tapCnt; - - while (i > 0U) - { - /* Read the b[numTaps] coefficient */ - c0 = *pb; - - /* Read x[n-numTaps-3] sample */ - x3 = *px; - - /* acc0 += b[numTaps] * x[n-numTaps] */ - acc0 += ((q15_t) x0 * c0); - - /* acc1 += b[numTaps] * x[n-numTaps-1] */ - acc1 += ((q15_t) x1 * c0); - - /* acc2 += b[numTaps] * x[n-numTaps-2] */ - acc2 += ((q15_t) x2 * c0); - - /* acc3 += b[numTaps] * x[n-numTaps-3] */ - acc3 += ((q15_t) x3 * c0); - - /* Read the b[numTaps-1] coefficient */ - c0 = *(pb + 1U); - - /* Read x[n-numTaps-4] sample */ - x0 = *(px + 1U); - - /* Perform the multiply-accumulates */ - acc0 += ((q15_t) x1 * c0); - acc1 += ((q15_t) x2 * c0); - acc2 += ((q15_t) x3 * c0); - acc3 += ((q15_t) x0 * c0); - - /* Read the b[numTaps-2] coefficient */ - c0 = *(pb + 2U); - - /* Read x[n-numTaps-5] sample */ - x1 = *(px + 2U); - - /* Perform the multiply-accumulates */ - acc0 += ((q15_t) x2 * c0); - acc1 += ((q15_t) x3 * c0); - acc2 += ((q15_t) x0 * c0); - acc3 += ((q15_t) x1 * c0); - - /* Read the b[numTaps-3] coefficients */ - c0 = *(pb + 3U); - - /* Read x[n-numTaps-6] sample */ - x2 = *(px + 3U); - - /* Perform the multiply-accumulates */ - acc0 += ((q15_t) x3 * c0); - acc1 += ((q15_t) x0 * c0); - acc2 += ((q15_t) x1 * c0); - acc3 += ((q15_t) x2 * c0); - - /* update coefficient pointer */ - pb += 4U; - px += 4U; - - /* Decrement the loop counter */ - i--; - } - - /* If the filter length is not a multiple of 4, compute the remaining filter taps */ - - i = numTaps - (tapCnt * 4U); - while (i > 0U) - { - /* Read coefficients */ - c0 = *(pb++); - - /* Fetch 1 state variable */ - x3 = *(px++); - - /* Perform the multiply-accumulates */ - acc0 += ((q15_t) x0 * c0); - acc1 += ((q15_t) x1 * c0); - acc2 += ((q15_t) x2 * c0); - acc3 += ((q15_t) x3 * c0); - - /* Reuse the present sample states for next sample */ - x0 = x1; - x1 = x2; - x2 = x3; - - /* Decrement the loop counter */ - i--; - } - - /* Advance the state pointer by 4 to process the next group of 4 samples */ - pState = pState + 4; - - /* The results in the 4 accumulators are in 2.62 format. Convert to 1.31 - ** Then store the 4 outputs in the destination buffer. */ - acc0 = __SSAT((acc0 >> 7U), 8); - *pDst++ = acc0; - acc1 = __SSAT((acc1 >> 7U), 8); - *pDst++ = acc1; - acc2 = __SSAT((acc2 >> 7U), 8); - *pDst++ = acc2; - acc3 = __SSAT((acc3 >> 7U), 8); - *pDst++ = acc3; - - /* Decrement the samples loop counter */ - blkCnt--; - } - - - /* If the blockSize is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize % 4U; - - while (blkCnt > 0U) - { - /* Copy one sample at a time into state buffer */ - *pStateCurnt++ = *pSrc++; - - /* Set the accumulator to zero */ - acc0 = 0; - - /* Initialize state pointer */ - px = pState; - - /* Initialize Coefficient pointer */ - pb = (pCoeffs); - - i = numTaps; - - /* Perform the multiply-accumulates */ - do - { - acc0 += (q15_t) * (px++) * (*(pb++)); - i--; - } while (i > 0U); - - /* The result is in 2.14 format. Convert to 1.7 - ** Then store the output in the destination buffer. */ - *pDst++ = __SSAT((acc0 >> 7U), 8); - - /* Advance state pointer by 1 for the next sample */ - pState = pState + 1; - - /* Decrement the samples loop counter */ - blkCnt--; - } - - /* Processing is complete. - ** Now copy the last numTaps - 1 samples to the satrt of the state buffer. - ** This prepares the state buffer for the next function call. */ - - /* Points to the start of the state buffer */ - pStateCurnt = S->pState; - - tapCnt = (numTaps - 1U) >> 2U; - - /* copy data */ - while (tapCnt > 0U) - { - *pStateCurnt++ = *pState++; - *pStateCurnt++ = *pState++; - *pStateCurnt++ = *pState++; - *pStateCurnt++ = *pState++; - - /* Decrement the loop counter */ - tapCnt--; - } - - /* Calculate remaining number of copies */ - tapCnt = (numTaps - 1U) % 0x4U; - - /* Copy the remaining q31_t data */ - while (tapCnt > 0U) - { - *pStateCurnt++ = *pState++; - - /* Decrement the loop counter */ - tapCnt--; - } - -#else - -/* Run the below code for Cortex-M0 */ - - uint32_t numTaps = S->numTaps; /* Number of taps in the filter */ - uint32_t i, blkCnt; /* Loop counters */ - q7_t *pState = S->pState; /* State pointer */ - q7_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ - q7_t *px, *pb; /* Temporary pointers to state and coeff */ - q31_t acc = 0; /* Accumlator */ - q7_t *pStateCurnt; /* Points to the current sample of the state */ - - - /* S->pState points to state array which contains previous frame (numTaps - 1) samples */ - /* pStateCurnt points to the location where the new input data should be written */ - pStateCurnt = S->pState + (numTaps - 1U); - - /* Initialize blkCnt with blockSize */ - blkCnt = blockSize; - - /* Perform filtering upto BlockSize - BlockSize%4 */ - while (blkCnt > 0U) - { - /* Copy one sample at a time into state buffer */ - *pStateCurnt++ = *pSrc++; - - /* Set accumulator to zero */ - acc = 0; - - /* Initialize state pointer of type q7 */ - px = pState; - - /* Initialize coeff pointer of type q7 */ - pb = pCoeffs; - - - i = numTaps; - - while (i > 0U) - { - /* acc = b[numTaps-1] * x[n-numTaps-1] + b[numTaps-2] * x[n-numTaps-2] + b[numTaps-3] * x[n-numTaps-3] +...+ b[0] * x[0] */ - acc += (q15_t) * px++ * *pb++; - i--; - } - - /* Store the 1.7 format filter output in destination buffer */ - *pDst++ = (q7_t) __SSAT((acc >> 7), 8); - - /* Advance the state pointer by 1 to process the next sample */ - pState = pState + 1; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* Processing is complete. - ** Now copy the last numTaps - 1 samples to the satrt of the state buffer. - ** This prepares the state buffer for the next function call. */ - - - /* Points to the start of the state buffer */ - pStateCurnt = S->pState; - - - /* Copy numTaps number of values */ - i = (numTaps - 1U); - - /* Copy q7_t data */ - while (i > 0U) - { - *pStateCurnt++ = *pState++; - i--; - } - -#endif /* #if defined (ARM_MATH_DSP) */ - -} - -/** - * @} end of FIR group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_f32.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_f32.c deleted file mode 100644 index bba2936..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_f32.c +++ /dev/null @@ -1,433 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_fir_sparse_f32.c - * Description: Floating-point sparse FIR filter processing function - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupFilters - */ - -/** - * @defgroup FIR_Sparse Finite Impulse Response (FIR) Sparse Filters - * - * This group of functions implements sparse FIR filters. - * Sparse FIR filters are equivalent to standard FIR filters except that most of the coefficients are equal to zero. - * Sparse filters are used for simulating reflections in communications and audio applications. - * - * There are separate functions for Q7, Q15, Q31, and floating-point data types. - * The functions operate on blocks of input and output data and each call to the function processes - * blockSize samples through the filter. pSrc and - * pDst points to input and output arrays respectively containing blockSize values. - * - * \par Algorithm: - * The sparse filter instant structure contains an array of tap indices pTapDelay which specifies the locations of the non-zero coefficients. - * This is in addition to the coefficient array b. - * The implementation essentially skips the multiplications by zero and leads to an efficient realization. - *
- *     y[n] = b[0] * x[n-pTapDelay[0]] + b[1] * x[n-pTapDelay[1]] + b[2] * x[n-pTapDelay[2]] + ...+ b[numTaps-1] * x[n-pTapDelay[numTaps-1]]
- * 
- * \par - * \image html FIRSparse.gif "Sparse FIR filter. b[n] represents the filter coefficients" - * \par - * pCoeffs points to a coefficient array of size numTaps; - * pTapDelay points to an array of nonzero indices and is also of size numTaps; - * pState points to a state array of size maxDelay + blockSize, where - * maxDelay is the largest offset value that is ever used in the pTapDelay array. - * Some of the processing functions also require temporary working buffers. - * - * \par Instance Structure - * The coefficients and state variables for a filter are stored together in an instance data structure. - * A separate instance structure must be defined for each filter. - * Coefficient and offset arrays may be shared among several instances while state variable arrays cannot be shared. - * There are separate instance structure declarations for each of the 4 supported data types. - * - * \par Initialization Functions - * There is also an associated initialization function for each data type. - * The initialization function performs the following operations: - * - Sets the values of the internal structure fields. - * - Zeros out the values in the state buffer. - * To do this manually without calling the init function, assign the follow subfields of the instance structure: - * numTaps, pCoeffs, pTapDelay, maxDelay, stateIndex, pState. Also set all of the values in pState to zero. - * - * \par - * Use of the initialization function is optional. - * However, if the initialization function is used, then the instance structure cannot be placed into a const data section. - * To place an instance structure into a const data section, the instance structure must be manually initialized. - * Set the values in the state buffer to zeros before static initialization. - * The code below statically initializes each of the 4 different data type filter instance structures - *
- *arm_fir_sparse_instance_f32 S = {numTaps, 0, pState, pCoeffs, maxDelay, pTapDelay};
- *arm_fir_sparse_instance_q31 S = {numTaps, 0, pState, pCoeffs, maxDelay, pTapDelay};
- *arm_fir_sparse_instance_q15 S = {numTaps, 0, pState, pCoeffs, maxDelay, pTapDelay};
- *arm_fir_sparse_instance_q7 S =  {numTaps, 0, pState, pCoeffs, maxDelay, pTapDelay};
- * 
- * \par - * - * \par Fixed-Point Behavior - * Care must be taken when using the fixed-point versions of the sparse FIR filter functions. - * In particular, the overflow and saturation behavior of the accumulator used in each function must be considered. - * Refer to the function specific documentation below for usage guidelines. - */ - -/** - * @addtogroup FIR_Sparse - * @{ - */ - -/** - * @brief Processing function for the floating-point sparse FIR filter. - * @param[in] *S points to an instance of the floating-point sparse FIR structure. - * @param[in] *pSrc points to the block of input data. - * @param[out] *pDst points to the block of output data - * @param[in] *pScratchIn points to a temporary buffer of size blockSize. - * @param[in] blockSize number of input samples to process per call. - * @return none. - */ - -void arm_fir_sparse_f32( - arm_fir_sparse_instance_f32 * S, - float32_t * pSrc, - float32_t * pDst, - float32_t * pScratchIn, - uint32_t blockSize) -{ - - float32_t *pState = S->pState; /* State pointer */ - float32_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ - float32_t *px; /* Scratch buffer pointer */ - float32_t *py = pState; /* Temporary pointers for state buffer */ - float32_t *pb = pScratchIn; /* Temporary pointers for scratch buffer */ - float32_t *pOut; /* Destination pointer */ - int32_t *pTapDelay = S->pTapDelay; /* Pointer to the array containing offset of the non-zero tap values. */ - uint32_t delaySize = S->maxDelay + blockSize; /* state length */ - uint16_t numTaps = S->numTaps; /* Number of filter coefficients in the filter */ - int32_t readIndex; /* Read index of the state buffer */ - uint32_t tapCnt, blkCnt; /* loop counters */ - float32_t coeff = *pCoeffs++; /* Read the first coefficient value */ - - - - /* BlockSize of Input samples are copied into the state buffer */ - /* StateIndex points to the starting position to write in the state buffer */ - arm_circularWrite_f32((int32_t *) py, delaySize, &S->stateIndex, 1, - (int32_t *) pSrc, 1, blockSize); - - - /* Read Index, from where the state buffer should be read, is calculated. */ - readIndex = ((int32_t) S->stateIndex - (int32_t) blockSize) - *pTapDelay++; - - /* Wraparound of readIndex */ - if (readIndex < 0) - { - readIndex += (int32_t) delaySize; - } - - /* Working pointer for state buffer is updated */ - py = pState; - - /* blockSize samples are read from the state buffer */ - arm_circularRead_f32((int32_t *) py, delaySize, &readIndex, 1, - (int32_t *) pb, (int32_t *) pb, blockSize, 1, - blockSize); - - /* Working pointer for the scratch buffer */ - px = pb; - - /* Working pointer for destination buffer */ - pOut = pDst; - - -#if defined (ARM_MATH_DSP) - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - /* Loop over the blockSize. Unroll by a factor of 4. - * Compute 4 Multiplications at a time. */ - blkCnt = blockSize >> 2U; - - while (blkCnt > 0U) - { - /* Perform Multiplications and store in destination buffer */ - *pOut++ = *px++ * coeff; - *pOut++ = *px++ * coeff; - *pOut++ = *px++ * coeff; - *pOut++ = *px++ * coeff; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, - * compute the remaining samples */ - blkCnt = blockSize % 0x4U; - - while (blkCnt > 0U) - { - /* Perform Multiplications and store in destination buffer */ - *pOut++ = *px++ * coeff; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* Load the coefficient value and - * increment the coefficient buffer for the next set of state values */ - coeff = *pCoeffs++; - - /* Read Index, from where the state buffer should be read, is calculated. */ - readIndex = ((int32_t) S->stateIndex - (int32_t) blockSize) - *pTapDelay++; - - /* Wraparound of readIndex */ - if (readIndex < 0) - { - readIndex += (int32_t) delaySize; - } - - /* Loop over the number of taps. */ - tapCnt = (uint32_t) numTaps - 2U; - - while (tapCnt > 0U) - { - - /* Working pointer for state buffer is updated */ - py = pState; - - /* blockSize samples are read from the state buffer */ - arm_circularRead_f32((int32_t *) py, delaySize, &readIndex, 1, - (int32_t *) pb, (int32_t *) pb, blockSize, 1, - blockSize); - - /* Working pointer for the scratch buffer */ - px = pb; - - /* Working pointer for destination buffer */ - pOut = pDst; - - /* Loop over the blockSize. Unroll by a factor of 4. - * Compute 4 MACS at a time. */ - blkCnt = blockSize >> 2U; - - while (blkCnt > 0U) - { - /* Perform Multiply-Accumulate */ - *pOut++ += *px++ * coeff; - *pOut++ += *px++ * coeff; - *pOut++ += *px++ * coeff; - *pOut++ += *px++ * coeff; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, - * compute the remaining samples */ - blkCnt = blockSize % 0x4U; - - while (blkCnt > 0U) - { - /* Perform Multiply-Accumulate */ - *pOut++ += *px++ * coeff; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* Load the coefficient value and - * increment the coefficient buffer for the next set of state values */ - coeff = *pCoeffs++; - - /* Read Index, from where the state buffer should be read, is calculated. */ - readIndex = ((int32_t) S->stateIndex - - (int32_t) blockSize) - *pTapDelay++; - - /* Wraparound of readIndex */ - if (readIndex < 0) - { - readIndex += (int32_t) delaySize; - } - - /* Decrement the tap loop counter */ - tapCnt--; - } - - /* Compute last tap without the final read of pTapDelay */ - - /* Working pointer for state buffer is updated */ - py = pState; - - /* blockSize samples are read from the state buffer */ - arm_circularRead_f32((int32_t *) py, delaySize, &readIndex, 1, - (int32_t *) pb, (int32_t *) pb, blockSize, 1, - blockSize); - - /* Working pointer for the scratch buffer */ - px = pb; - - /* Working pointer for destination buffer */ - pOut = pDst; - - /* Loop over the blockSize. Unroll by a factor of 4. - * Compute 4 MACS at a time. */ - blkCnt = blockSize >> 2U; - - while (blkCnt > 0U) - { - /* Perform Multiply-Accumulate */ - *pOut++ += *px++ * coeff; - *pOut++ += *px++ * coeff; - *pOut++ += *px++ * coeff; - *pOut++ += *px++ * coeff; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, - * compute the remaining samples */ - blkCnt = blockSize % 0x4U; - - while (blkCnt > 0U) - { - /* Perform Multiply-Accumulate */ - *pOut++ += *px++ * coeff; - - /* Decrement the loop counter */ - blkCnt--; - } - -#else - -/* Run the below code for Cortex-M0 */ - - blkCnt = blockSize; - - while (blkCnt > 0U) - { - /* Perform Multiplications and store in destination buffer */ - *pOut++ = *px++ * coeff; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* Load the coefficient value and - * increment the coefficient buffer for the next set of state values */ - coeff = *pCoeffs++; - - /* Read Index, from where the state buffer should be read, is calculated. */ - readIndex = ((int32_t) S->stateIndex - (int32_t) blockSize) - *pTapDelay++; - - /* Wraparound of readIndex */ - if (readIndex < 0) - { - readIndex += (int32_t) delaySize; - } - - /* Loop over the number of taps. */ - tapCnt = (uint32_t) numTaps - 2U; - - while (tapCnt > 0U) - { - - /* Working pointer for state buffer is updated */ - py = pState; - - /* blockSize samples are read from the state buffer */ - arm_circularRead_f32((int32_t *) py, delaySize, &readIndex, 1, - (int32_t *) pb, (int32_t *) pb, blockSize, 1, - blockSize); - - /* Working pointer for the scratch buffer */ - px = pb; - - /* Working pointer for destination buffer */ - pOut = pDst; - - blkCnt = blockSize; - - while (blkCnt > 0U) - { - /* Perform Multiply-Accumulate */ - *pOut++ += *px++ * coeff; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* Load the coefficient value and - * increment the coefficient buffer for the next set of state values */ - coeff = *pCoeffs++; - - /* Read Index, from where the state buffer should be read, is calculated. */ - readIndex = - ((int32_t) S->stateIndex - (int32_t) blockSize) - *pTapDelay++; - - /* Wraparound of readIndex */ - if (readIndex < 0) - { - readIndex += (int32_t) delaySize; - } - - /* Decrement the tap loop counter */ - tapCnt--; - } - - /* Compute last tap without the final read of pTapDelay */ - - /* Working pointer for state buffer is updated */ - py = pState; - - /* blockSize samples are read from the state buffer */ - arm_circularRead_f32((int32_t *) py, delaySize, &readIndex, 1, - (int32_t *) pb, (int32_t *) pb, blockSize, 1, - blockSize); - - /* Working pointer for the scratch buffer */ - px = pb; - - /* Working pointer for destination buffer */ - pOut = pDst; - - blkCnt = blockSize; - - while (blkCnt > 0U) - { - /* Perform Multiply-Accumulate */ - *pOut++ += *px++ * coeff; - - /* Decrement the loop counter */ - blkCnt--; - } - -#endif /* #if defined (ARM_MATH_DSP) */ - -} - -/** - * @} end of FIR_Sparse group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_init_f32.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_init_f32.c deleted file mode 100644 index d663679..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_init_f32.c +++ /dev/null @@ -1,95 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_fir_sparse_init_f32.c - * Description: Floating-point sparse FIR filter initialization function - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupFilters - */ - -/** - * @addtogroup FIR_Sparse - * @{ - */ - -/** - * @brief Initialization function for the floating-point sparse FIR filter. - * @param[in,out] *S points to an instance of the floating-point sparse FIR structure. - * @param[in] numTaps number of nonzero coefficients in the filter. - * @param[in] *pCoeffs points to the array of filter coefficients. - * @param[in] *pState points to the state buffer. - * @param[in] *pTapDelay points to the array of offset times. - * @param[in] maxDelay maximum offset time supported. - * @param[in] blockSize number of samples that will be processed per block. - * @return none - * - * Description: - * \par - * pCoeffs holds the filter coefficients and has length numTaps. - * pState holds the filter's state variables and must be of length - * maxDelay + blockSize, where maxDelay - * is the maximum number of delay line values. - * blockSize is the - * number of samples processed by the arm_fir_sparse_f32() function. - */ - -void arm_fir_sparse_init_f32( - arm_fir_sparse_instance_f32 * S, - uint16_t numTaps, - float32_t * pCoeffs, - float32_t * pState, - int32_t * pTapDelay, - uint16_t maxDelay, - uint32_t blockSize) -{ - /* Assign filter taps */ - S->numTaps = numTaps; - - /* Assign coefficient pointer */ - S->pCoeffs = pCoeffs; - - /* Assign TapDelay pointer */ - S->pTapDelay = pTapDelay; - - /* Assign MaxDelay */ - S->maxDelay = maxDelay; - - /* reset the stateIndex to 0 */ - S->stateIndex = 0U; - - /* Clear state buffer and size is always maxDelay + blockSize */ - memset(pState, 0, (maxDelay + blockSize) * sizeof(float32_t)); - - /* Assign state pointer */ - S->pState = pState; - -} - -/** - * @} end of FIR_Sparse group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_init_q15.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_init_q15.c deleted file mode 100644 index 08c2d0e..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_init_q15.c +++ /dev/null @@ -1,95 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_fir_sparse_init_q15.c - * Description: Q15 sparse FIR filter initialization function - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupFilters - */ - -/** - * @addtogroup FIR_Sparse - * @{ - */ - -/** - * @brief Initialization function for the Q15 sparse FIR filter. - * @param[in,out] *S points to an instance of the Q15 sparse FIR structure. - * @param[in] numTaps number of nonzero coefficients in the filter. - * @param[in] *pCoeffs points to the array of filter coefficients. - * @param[in] *pState points to the state buffer. - * @param[in] *pTapDelay points to the array of offset times. - * @param[in] maxDelay maximum offset time supported. - * @param[in] blockSize number of samples that will be processed per block. - * @return none - * - * Description: - * \par - * pCoeffs holds the filter coefficients and has length numTaps. - * pState holds the filter's state variables and must be of length - * maxDelay + blockSize, where maxDelay - * is the maximum number of delay line values. - * blockSize is the - * number of words processed by arm_fir_sparse_q15() function. - */ - -void arm_fir_sparse_init_q15( - arm_fir_sparse_instance_q15 * S, - uint16_t numTaps, - q15_t * pCoeffs, - q15_t * pState, - int32_t * pTapDelay, - uint16_t maxDelay, - uint32_t blockSize) -{ - /* Assign filter taps */ - S->numTaps = numTaps; - - /* Assign coefficient pointer */ - S->pCoeffs = pCoeffs; - - /* Assign TapDelay pointer */ - S->pTapDelay = pTapDelay; - - /* Assign MaxDelay */ - S->maxDelay = maxDelay; - - /* reset the stateIndex to 0 */ - S->stateIndex = 0U; - - /* Clear state buffer and size is always maxDelay + blockSize */ - memset(pState, 0, (maxDelay + blockSize) * sizeof(q15_t)); - - /* Assign state pointer */ - S->pState = pState; - -} - -/** - * @} end of FIR_Sparse group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_init_q31.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_init_q31.c deleted file mode 100644 index 4a94232..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_init_q31.c +++ /dev/null @@ -1,94 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_fir_sparse_init_q31.c - * Description: Q31 sparse FIR filter initialization function - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupFilters - */ - -/** - * @addtogroup FIR_Sparse - * @{ - */ - -/** - * @brief Initialization function for the Q31 sparse FIR filter. - * @param[in,out] *S points to an instance of the Q31 sparse FIR structure. - * @param[in] numTaps number of nonzero coefficients in the filter. - * @param[in] *pCoeffs points to the array of filter coefficients. - * @param[in] *pState points to the state buffer. - * @param[in] *pTapDelay points to the array of offset times. - * @param[in] maxDelay maximum offset time supported. - * @param[in] blockSize number of samples that will be processed per block. - * @return none - * - * Description: - * \par - * pCoeffs holds the filter coefficients and has length numTaps. - * pState holds the filter's state variables and must be of length - * maxDelay + blockSize, where maxDelay - * is the maximum number of delay line values. - * blockSize is the number of words processed by arm_fir_sparse_q31() function. - */ - -void arm_fir_sparse_init_q31( - arm_fir_sparse_instance_q31 * S, - uint16_t numTaps, - q31_t * pCoeffs, - q31_t * pState, - int32_t * pTapDelay, - uint16_t maxDelay, - uint32_t blockSize) -{ - /* Assign filter taps */ - S->numTaps = numTaps; - - /* Assign coefficient pointer */ - S->pCoeffs = pCoeffs; - - /* Assign TapDelay pointer */ - S->pTapDelay = pTapDelay; - - /* Assign MaxDelay */ - S->maxDelay = maxDelay; - - /* reset the stateIndex to 0 */ - S->stateIndex = 0U; - - /* Clear state buffer and size is always maxDelay + blockSize */ - memset(pState, 0, (maxDelay + blockSize) * sizeof(q31_t)); - - /* Assign state pointer */ - S->pState = pState; - -} - -/** - * @} end of FIR_Sparse group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_init_q7.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_init_q7.c deleted file mode 100644 index 58d6705..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_init_q7.c +++ /dev/null @@ -1,95 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_fir_sparse_init_q7.c - * Description: Q7 sparse FIR filter initialization function - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupFilters - */ - -/** - * @addtogroup FIR_Sparse - * @{ - */ - -/** - * @brief Initialization function for the Q7 sparse FIR filter. - * @param[in,out] *S points to an instance of the Q7 sparse FIR structure. - * @param[in] numTaps number of nonzero coefficients in the filter. - * @param[in] *pCoeffs points to the array of filter coefficients. - * @param[in] *pState points to the state buffer. - * @param[in] *pTapDelay points to the array of offset times. - * @param[in] maxDelay maximum offset time supported. - * @param[in] blockSize number of samples that will be processed per block. - * @return none - * - * Description: - * \par - * pCoeffs holds the filter coefficients and has length numTaps. - * pState holds the filter's state variables and must be of length - * maxDelay + blockSize, where maxDelay - * is the maximum number of delay line values. - * blockSize is the - * number of samples processed by the arm_fir_sparse_q7() function. - */ - -void arm_fir_sparse_init_q7( - arm_fir_sparse_instance_q7 * S, - uint16_t numTaps, - q7_t * pCoeffs, - q7_t * pState, - int32_t * pTapDelay, - uint16_t maxDelay, - uint32_t blockSize) -{ - /* Assign filter taps */ - S->numTaps = numTaps; - - /* Assign coefficient pointer */ - S->pCoeffs = pCoeffs; - - /* Assign TapDelay pointer */ - S->pTapDelay = pTapDelay; - - /* Assign MaxDelay */ - S->maxDelay = maxDelay; - - /* reset the stateIndex to 0 */ - S->stateIndex = 0U; - - /* Clear state buffer and size is always maxDelay + blockSize */ - memset(pState, 0, (maxDelay + blockSize) * sizeof(q7_t)); - - /* Assign state pointer */ - S->pState = pState; - -} - -/** - * @} end of FIR_Sparse group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_q15.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_q15.c deleted file mode 100644 index e17f2bd..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_q15.c +++ /dev/null @@ -1,470 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_fir_sparse_q15.c - * Description: Q15 sparse FIR filter processing function - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @addtogroup FIR_Sparse - * @{ - */ - -/** - * @brief Processing function for the Q15 sparse FIR filter. - * @param[in] *S points to an instance of the Q15 sparse FIR structure. - * @param[in] *pSrc points to the block of input data. - * @param[out] *pDst points to the block of output data - * @param[in] *pScratchIn points to a temporary buffer of size blockSize. - * @param[in] *pScratchOut points to a temporary buffer of size blockSize. - * @param[in] blockSize number of input samples to process per call. - * @return none. - * - * Scaling and Overflow Behavior: - * \par - * The function is implemented using an internal 32-bit accumulator. - * The 1.15 x 1.15 multiplications yield a 2.30 result and these are added to a 2.30 accumulator. - * Thus the full precision of the multiplications is maintained but there is only a single guard bit in the accumulator. - * If the accumulator result overflows it will wrap around rather than saturate. - * After all multiply-accumulates are performed, the 2.30 accumulator is truncated to 2.15 format and then saturated to 1.15 format. - * In order to avoid overflows the input signal or coefficients must be scaled down by log2(numTaps) bits. - */ - - -void arm_fir_sparse_q15( - arm_fir_sparse_instance_q15 * S, - q15_t * pSrc, - q15_t * pDst, - q15_t * pScratchIn, - q31_t * pScratchOut, - uint32_t blockSize) -{ - - q15_t *pState = S->pState; /* State pointer */ - q15_t *pIn = pSrc; /* Working pointer for input */ - q15_t *pOut = pDst; /* Working pointer for output */ - q15_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ - q15_t *px; /* Temporary pointers for scratch buffer */ - q15_t *pb = pScratchIn; /* Temporary pointers for scratch buffer */ - q15_t *py = pState; /* Temporary pointers for state buffer */ - int32_t *pTapDelay = S->pTapDelay; /* Pointer to the array containing offset of the non-zero tap values. */ - uint32_t delaySize = S->maxDelay + blockSize; /* state length */ - uint16_t numTaps = S->numTaps; /* Filter order */ - int32_t readIndex; /* Read index of the state buffer */ - uint32_t tapCnt, blkCnt; /* loop counters */ - q15_t coeff = *pCoeffs++; /* Read the first coefficient value */ - q31_t *pScr2 = pScratchOut; /* Working pointer for pScratchOut */ - - -#if defined (ARM_MATH_DSP) - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - q31_t in1, in2; /* Temporary variables */ - - - /* BlockSize of Input samples are copied into the state buffer */ - /* StateIndex points to the starting position to write in the state buffer */ - arm_circularWrite_q15(py, delaySize, &S->stateIndex, 1, pIn, 1, blockSize); - - /* Loop over the number of taps. */ - tapCnt = numTaps; - - /* Read Index, from where the state buffer should be read, is calculated. */ - readIndex = (S->stateIndex - blockSize) - *pTapDelay++; - - /* Wraparound of readIndex */ - if (readIndex < 0) - { - readIndex += (int32_t) delaySize; - } - - /* Working pointer for state buffer is updated */ - py = pState; - - /* blockSize samples are read from the state buffer */ - arm_circularRead_q15(py, delaySize, &readIndex, 1, - pb, pb, blockSize, 1, blockSize); - - /* Working pointer for the scratch buffer of state values */ - px = pb; - - /* Working pointer for scratch buffer of output values */ - pScratchOut = pScr2; - - /* Loop over the blockSize. Unroll by a factor of 4. - * Compute 4 multiplications at a time. */ - blkCnt = blockSize >> 2; - - while (blkCnt > 0U) - { - /* Perform multiplication and store in the scratch buffer */ - *pScratchOut++ = ((q31_t) * px++ * coeff); - *pScratchOut++ = ((q31_t) * px++ * coeff); - *pScratchOut++ = ((q31_t) * px++ * coeff); - *pScratchOut++ = ((q31_t) * px++ * coeff); - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, - * compute the remaining samples */ - blkCnt = blockSize % 0x4U; - - while (blkCnt > 0U) - { - /* Perform multiplication and store in the scratch buffer */ - *pScratchOut++ = ((q31_t) * px++ * coeff); - - /* Decrement the loop counter */ - blkCnt--; - } - - /* Load the coefficient value and - * increment the coefficient buffer for the next set of state values */ - coeff = *pCoeffs++; - - /* Read Index, from where the state buffer should be read, is calculated. */ - readIndex = (S->stateIndex - blockSize) - *pTapDelay++; - - /* Wraparound of readIndex */ - if (readIndex < 0) - { - readIndex += (int32_t) delaySize; - } - - /* Loop over the number of taps. */ - tapCnt = (uint32_t) numTaps - 2U; - - while (tapCnt > 0U) - { - /* Working pointer for state buffer is updated */ - py = pState; - - /* blockSize samples are read from the state buffer */ - arm_circularRead_q15(py, delaySize, &readIndex, 1, - pb, pb, blockSize, 1, blockSize); - - /* Working pointer for the scratch buffer of state values */ - px = pb; - - /* Working pointer for scratch buffer of output values */ - pScratchOut = pScr2; - - /* Loop over the blockSize. Unroll by a factor of 4. - * Compute 4 MACS at a time. */ - blkCnt = blockSize >> 2; - - while (blkCnt > 0U) - { - /* Perform Multiply-Accumulate */ - *pScratchOut++ += (q31_t) * px++ * coeff; - *pScratchOut++ += (q31_t) * px++ * coeff; - *pScratchOut++ += (q31_t) * px++ * coeff; - *pScratchOut++ += (q31_t) * px++ * coeff; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, - * compute the remaining samples */ - blkCnt = blockSize % 0x4U; - - while (blkCnt > 0U) - { - /* Perform Multiply-Accumulate */ - *pScratchOut++ += (q31_t) * px++ * coeff; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* Load the coefficient value and - * increment the coefficient buffer for the next set of state values */ - coeff = *pCoeffs++; - - /* Read Index, from where the state buffer should be read, is calculated. */ - readIndex = (S->stateIndex - blockSize) - *pTapDelay++; - - /* Wraparound of readIndex */ - if (readIndex < 0) - { - readIndex += (int32_t) delaySize; - } - - /* Decrement the tap loop counter */ - tapCnt--; - } - - /* Compute last tap without the final read of pTapDelay */ - - /* Working pointer for state buffer is updated */ - py = pState; - - /* blockSize samples are read from the state buffer */ - arm_circularRead_q15(py, delaySize, &readIndex, 1, - pb, pb, blockSize, 1, blockSize); - - /* Working pointer for the scratch buffer of state values */ - px = pb; - - /* Working pointer for scratch buffer of output values */ - pScratchOut = pScr2; - - /* Loop over the blockSize. Unroll by a factor of 4. - * Compute 4 MACS at a time. */ - blkCnt = blockSize >> 2; - - while (blkCnt > 0U) - { - /* Perform Multiply-Accumulate */ - *pScratchOut++ += (q31_t) * px++ * coeff; - *pScratchOut++ += (q31_t) * px++ * coeff; - *pScratchOut++ += (q31_t) * px++ * coeff; - *pScratchOut++ += (q31_t) * px++ * coeff; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, - * compute the remaining samples */ - blkCnt = blockSize % 0x4U; - - while (blkCnt > 0U) - { - /* Perform Multiply-Accumulate */ - *pScratchOut++ += (q31_t) * px++ * coeff; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* All the output values are in pScratchOut buffer. - Convert them into 1.15 format, saturate and store in the destination buffer. */ - /* Loop over the blockSize. */ - blkCnt = blockSize >> 2; - - while (blkCnt > 0U) - { - in1 = *pScr2++; - in2 = *pScr2++; - -#ifndef ARM_MATH_BIG_ENDIAN - - *__SIMD32(pOut)++ = - __PKHBT((q15_t) __SSAT(in1 >> 15, 16), (q15_t) __SSAT(in2 >> 15, 16), - 16); - -#else - *__SIMD32(pOut)++ = - __PKHBT((q15_t) __SSAT(in2 >> 15, 16), (q15_t) __SSAT(in1 >> 15, 16), - 16); - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - in1 = *pScr2++; - - in2 = *pScr2++; - -#ifndef ARM_MATH_BIG_ENDIAN - - *__SIMD32(pOut)++ = - __PKHBT((q15_t) __SSAT(in1 >> 15, 16), (q15_t) __SSAT(in2 >> 15, 16), - 16); - -#else - - *__SIMD32(pOut)++ = - __PKHBT((q15_t) __SSAT(in2 >> 15, 16), (q15_t) __SSAT(in1 >> 15, 16), - 16); - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - - blkCnt--; - - } - - /* If the blockSize is not a multiple of 4, - remaining samples are processed in the below loop */ - blkCnt = blockSize % 0x4U; - - while (blkCnt > 0U) - { - *pOut++ = (q15_t) __SSAT(*pScr2++ >> 15, 16); - blkCnt--; - } - -#else - - /* Run the below code for Cortex-M0 */ - - /* BlockSize of Input samples are copied into the state buffer */ - /* StateIndex points to the starting position to write in the state buffer */ - arm_circularWrite_q15(py, delaySize, &S->stateIndex, 1, pIn, 1, blockSize); - - /* Loop over the number of taps. */ - tapCnt = numTaps; - - /* Read Index, from where the state buffer should be read, is calculated. */ - readIndex = (S->stateIndex - blockSize) - *pTapDelay++; - - /* Wraparound of readIndex */ - if (readIndex < 0) - { - readIndex += (int32_t) delaySize; - } - - /* Working pointer for state buffer is updated */ - py = pState; - - /* blockSize samples are read from the state buffer */ - arm_circularRead_q15(py, delaySize, &readIndex, 1, - pb, pb, blockSize, 1, blockSize); - - /* Working pointer for the scratch buffer of state values */ - px = pb; - - /* Working pointer for scratch buffer of output values */ - pScratchOut = pScr2; - - blkCnt = blockSize; - - while (blkCnt > 0U) - { - /* Perform multiplication and store in the scratch buffer */ - *pScratchOut++ = ((q31_t) * px++ * coeff); - - /* Decrement the loop counter */ - blkCnt--; - } - - /* Load the coefficient value and - * increment the coefficient buffer for the next set of state values */ - coeff = *pCoeffs++; - - /* Read Index, from where the state buffer should be read, is calculated. */ - readIndex = (S->stateIndex - blockSize) - *pTapDelay++; - - /* Wraparound of readIndex */ - if (readIndex < 0) - { - readIndex += (int32_t) delaySize; - } - - /* Loop over the number of taps. */ - tapCnt = (uint32_t) numTaps - 2U; - - while (tapCnt > 0U) - { - /* Working pointer for state buffer is updated */ - py = pState; - - /* blockSize samples are read from the state buffer */ - arm_circularRead_q15(py, delaySize, &readIndex, 1, - pb, pb, blockSize, 1, blockSize); - - /* Working pointer for the scratch buffer of state values */ - px = pb; - - /* Working pointer for scratch buffer of output values */ - pScratchOut = pScr2; - - blkCnt = blockSize; - - while (blkCnt > 0U) - { - /* Perform Multiply-Accumulate */ - *pScratchOut++ += (q31_t) * px++ * coeff; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* Load the coefficient value and - * increment the coefficient buffer for the next set of state values */ - coeff = *pCoeffs++; - - /* Read Index, from where the state buffer should be read, is calculated. */ - readIndex = (S->stateIndex - blockSize) - *pTapDelay++; - - /* Wraparound of readIndex */ - if (readIndex < 0) - { - readIndex += (int32_t) delaySize; - } - - /* Decrement the tap loop counter */ - tapCnt--; - } - - /* Compute last tap without the final read of pTapDelay */ - - /* Working pointer for state buffer is updated */ - py = pState; - - /* blockSize samples are read from the state buffer */ - arm_circularRead_q15(py, delaySize, &readIndex, 1, - pb, pb, blockSize, 1, blockSize); - - /* Working pointer for the scratch buffer of state values */ - px = pb; - - /* Working pointer for scratch buffer of output values */ - pScratchOut = pScr2; - - blkCnt = blockSize; - - while (blkCnt > 0U) - { - /* Perform Multiply-Accumulate */ - *pScratchOut++ += (q31_t) * px++ * coeff; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* All the output values are in pScratchOut buffer. - Convert them into 1.15 format, saturate and store in the destination buffer. */ - /* Loop over the blockSize. */ - blkCnt = blockSize; - - while (blkCnt > 0U) - { - *pOut++ = (q15_t) __SSAT(*pScr2++ >> 15, 16); - blkCnt--; - } - -#endif /* #if defined (ARM_MATH_DSP) */ - -} - -/** - * @} end of FIR_Sparse group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_q31.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_q31.c deleted file mode 100644 index e441716..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_q31.c +++ /dev/null @@ -1,450 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_fir_sparse_q31.c - * Description: Q31 sparse FIR filter processing function - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - - -/** - * @addtogroup FIR_Sparse - * @{ - */ - -/** - * @brief Processing function for the Q31 sparse FIR filter. - * @param[in] *S points to an instance of the Q31 sparse FIR structure. - * @param[in] *pSrc points to the block of input data. - * @param[out] *pDst points to the block of output data - * @param[in] *pScratchIn points to a temporary buffer of size blockSize. - * @param[in] blockSize number of input samples to process per call. - * @return none. - * - * Scaling and Overflow Behavior: - * \par - * The function is implemented using an internal 32-bit accumulator. - * The 1.31 x 1.31 multiplications are truncated to 2.30 format. - * This leads to loss of precision on the intermediate multiplications and provides only a single guard bit. - * If the accumulator result overflows, it wraps around rather than saturate. - * In order to avoid overflows the input signal or coefficients must be scaled down by log2(numTaps) bits. - */ - -void arm_fir_sparse_q31( - arm_fir_sparse_instance_q31 * S, - q31_t * pSrc, - q31_t * pDst, - q31_t * pScratchIn, - uint32_t blockSize) -{ - - q31_t *pState = S->pState; /* State pointer */ - q31_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ - q31_t *px; /* Scratch buffer pointer */ - q31_t *py = pState; /* Temporary pointers for state buffer */ - q31_t *pb = pScratchIn; /* Temporary pointers for scratch buffer */ - q31_t *pOut; /* Destination pointer */ - q63_t out; /* Temporary output variable */ - int32_t *pTapDelay = S->pTapDelay; /* Pointer to the array containing offset of the non-zero tap values. */ - uint32_t delaySize = S->maxDelay + blockSize; /* state length */ - uint16_t numTaps = S->numTaps; /* Filter order */ - int32_t readIndex; /* Read index of the state buffer */ - uint32_t tapCnt, blkCnt; /* loop counters */ - q31_t coeff = *pCoeffs++; /* Read the first coefficient value */ - q31_t in; - - - /* BlockSize of Input samples are copied into the state buffer */ - /* StateIndex points to the starting position to write in the state buffer */ - arm_circularWrite_f32((int32_t *) py, delaySize, &S->stateIndex, 1, - (int32_t *) pSrc, 1, blockSize); - - /* Read Index, from where the state buffer should be read, is calculated. */ - readIndex = (int32_t) (S->stateIndex - blockSize) - *pTapDelay++; - - /* Wraparound of readIndex */ - if (readIndex < 0) - { - readIndex += (int32_t) delaySize; - } - - /* Working pointer for state buffer is updated */ - py = pState; - - /* blockSize samples are read from the state buffer */ - arm_circularRead_f32((int32_t *) py, delaySize, &readIndex, 1, - (int32_t *) pb, (int32_t *) pb, blockSize, 1, - blockSize); - - /* Working pointer for the scratch buffer of state values */ - px = pb; - - /* Working pointer for scratch buffer of output values */ - pOut = pDst; - - -#if defined (ARM_MATH_DSP) - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - /* Loop over the blockSize. Unroll by a factor of 4. - * Compute 4 Multiplications at a time. */ - blkCnt = blockSize >> 2; - - while (blkCnt > 0U) - { - /* Perform Multiplications and store in the destination buffer */ - *pOut++ = (q31_t) (((q63_t) * px++ * coeff) >> 32); - *pOut++ = (q31_t) (((q63_t) * px++ * coeff) >> 32); - *pOut++ = (q31_t) (((q63_t) * px++ * coeff) >> 32); - *pOut++ = (q31_t) (((q63_t) * px++ * coeff) >> 32); - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, - * compute the remaining samples */ - blkCnt = blockSize % 0x4U; - - while (blkCnt > 0U) - { - /* Perform Multiplications and store in the destination buffer */ - *pOut++ = (q31_t) (((q63_t) * px++ * coeff) >> 32); - - /* Decrement the loop counter */ - blkCnt--; - } - - /* Load the coefficient value and - * increment the coefficient buffer for the next set of state values */ - coeff = *pCoeffs++; - - /* Read Index, from where the state buffer should be read, is calculated. */ - readIndex = (int32_t) (S->stateIndex - blockSize) - *pTapDelay++; - - /* Wraparound of readIndex */ - if (readIndex < 0) - { - readIndex += (int32_t) delaySize; - } - - /* Loop over the number of taps. */ - tapCnt = (uint32_t) numTaps - 2U; - - while (tapCnt > 0U) - { - /* Working pointer for state buffer is updated */ - py = pState; - - /* blockSize samples are read from the state buffer */ - arm_circularRead_f32((int32_t *) py, delaySize, &readIndex, 1, - (int32_t *) pb, (int32_t *) pb, blockSize, 1, - blockSize); - - /* Working pointer for the scratch buffer of state values */ - px = pb; - - /* Working pointer for scratch buffer of output values */ - pOut = pDst; - - /* Loop over the blockSize. Unroll by a factor of 4. - * Compute 4 MACS at a time. */ - blkCnt = blockSize >> 2; - - while (blkCnt > 0U) - { - out = *pOut; - out += ((q63_t) * px++ * coeff) >> 32; - *pOut++ = (q31_t) (out); - - out = *pOut; - out += ((q63_t) * px++ * coeff) >> 32; - *pOut++ = (q31_t) (out); - - out = *pOut; - out += ((q63_t) * px++ * coeff) >> 32; - *pOut++ = (q31_t) (out); - - out = *pOut; - out += ((q63_t) * px++ * coeff) >> 32; - *pOut++ = (q31_t) (out); - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, - * compute the remaining samples */ - blkCnt = blockSize % 0x4U; - - while (blkCnt > 0U) - { - /* Perform Multiply-Accumulate */ - out = *pOut; - out += ((q63_t) * px++ * coeff) >> 32; - *pOut++ = (q31_t) (out); - - /* Decrement the loop counter */ - blkCnt--; - } - - /* Load the coefficient value and - * increment the coefficient buffer for the next set of state values */ - coeff = *pCoeffs++; - - /* Read Index, from where the state buffer should be read, is calculated. */ - readIndex = (int32_t) (S->stateIndex - blockSize) - *pTapDelay++; - - /* Wraparound of readIndex */ - if (readIndex < 0) - { - readIndex += (int32_t) delaySize; - } - - /* Decrement the tap loop counter */ - tapCnt--; - } - - /* Compute last tap without the final read of pTapDelay */ - - /* Working pointer for state buffer is updated */ - py = pState; - - /* blockSize samples are read from the state buffer */ - arm_circularRead_f32((int32_t *) py, delaySize, &readIndex, 1, - (int32_t *) pb, (int32_t *) pb, blockSize, 1, - blockSize); - - /* Working pointer for the scratch buffer of state values */ - px = pb; - - /* Working pointer for scratch buffer of output values */ - pOut = pDst; - - /* Loop over the blockSize. Unroll by a factor of 4. - * Compute 4 MACS at a time. */ - blkCnt = blockSize >> 2; - - while (blkCnt > 0U) - { - out = *pOut; - out += ((q63_t) * px++ * coeff) >> 32; - *pOut++ = (q31_t) (out); - - out = *pOut; - out += ((q63_t) * px++ * coeff) >> 32; - *pOut++ = (q31_t) (out); - - out = *pOut; - out += ((q63_t) * px++ * coeff) >> 32; - *pOut++ = (q31_t) (out); - - out = *pOut; - out += ((q63_t) * px++ * coeff) >> 32; - *pOut++ = (q31_t) (out); - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, - * compute the remaining samples */ - blkCnt = blockSize % 0x4U; - - while (blkCnt > 0U) - { - /* Perform Multiply-Accumulate */ - out = *pOut; - out += ((q63_t) * px++ * coeff) >> 32; - *pOut++ = (q31_t) (out); - - /* Decrement the loop counter */ - blkCnt--; - } - - /* Working output pointer is updated */ - pOut = pDst; - - /* Output is converted into 1.31 format. */ - /* Loop over the blockSize. Unroll by a factor of 4. - * process 4 output samples at a time. */ - blkCnt = blockSize >> 2; - - while (blkCnt > 0U) - { - in = *pOut << 1; - *pOut++ = in; - in = *pOut << 1; - *pOut++ = in; - in = *pOut << 1; - *pOut++ = in; - in = *pOut << 1; - *pOut++ = in; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, - * process the remaining output samples */ - blkCnt = blockSize % 0x4U; - - while (blkCnt > 0U) - { - in = *pOut << 1; - *pOut++ = in; - - /* Decrement the loop counter */ - blkCnt--; - } - -#else - - /* Run the below code for Cortex-M0 */ - blkCnt = blockSize; - - while (blkCnt > 0U) - { - /* Perform Multiplications and store in the destination buffer */ - *pOut++ = (q31_t) (((q63_t) * px++ * coeff) >> 32); - - /* Decrement the loop counter */ - blkCnt--; - } - - /* Load the coefficient value and - * increment the coefficient buffer for the next set of state values */ - coeff = *pCoeffs++; - - /* Read Index, from where the state buffer should be read, is calculated. */ - readIndex = (int32_t) (S->stateIndex - blockSize) - *pTapDelay++; - - /* Wraparound of readIndex */ - if (readIndex < 0) - { - readIndex += (int32_t) delaySize; - } - - /* Loop over the number of taps. */ - tapCnt = (uint32_t) numTaps - 2U; - - while (tapCnt > 0U) - { - /* Working pointer for state buffer is updated */ - py = pState; - - /* blockSize samples are read from the state buffer */ - arm_circularRead_f32((int32_t *) py, delaySize, &readIndex, 1, - (int32_t *) pb, (int32_t *) pb, blockSize, 1, - blockSize); - - /* Working pointer for the scratch buffer of state values */ - px = pb; - - /* Working pointer for scratch buffer of output values */ - pOut = pDst; - - blkCnt = blockSize; - - while (blkCnt > 0U) - { - /* Perform Multiply-Accumulate */ - out = *pOut; - out += ((q63_t) * px++ * coeff) >> 32; - *pOut++ = (q31_t) (out); - - /* Decrement the loop counter */ - blkCnt--; - } - - /* Load the coefficient value and - * increment the coefficient buffer for the next set of state values */ - coeff = *pCoeffs++; - - /* Read Index, from where the state buffer should be read, is calculated. */ - readIndex = (int32_t) (S->stateIndex - blockSize) - *pTapDelay++; - - /* Wraparound of readIndex */ - if (readIndex < 0) - { - readIndex += (int32_t) delaySize; - } - - /* Decrement the tap loop counter */ - tapCnt--; - } - - /* Compute last tap without the final read of pTapDelay */ - - /* Working pointer for state buffer is updated */ - py = pState; - - /* blockSize samples are read from the state buffer */ - arm_circularRead_f32((int32_t *) py, delaySize, &readIndex, 1, - (int32_t *) pb, (int32_t *) pb, blockSize, 1, - blockSize); - - /* Working pointer for the scratch buffer of state values */ - px = pb; - - /* Working pointer for scratch buffer of output values */ - pOut = pDst; - - blkCnt = blockSize; - - while (blkCnt > 0U) - { - /* Perform Multiply-Accumulate */ - out = *pOut; - out += ((q63_t) * px++ * coeff) >> 32; - *pOut++ = (q31_t) (out); - - /* Decrement the loop counter */ - blkCnt--; - } - - /* Working output pointer is updated */ - pOut = pDst; - - /* Output is converted into 1.31 format. */ - blkCnt = blockSize; - - while (blkCnt > 0U) - { - in = *pOut << 1; - *pOut++ = in; - - /* Decrement the loop counter */ - blkCnt--; - } - -#endif /* #if defined (ARM_MATH_DSP) */ - -} - -/** - * @} end of FIR_Sparse group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_q7.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_q7.c deleted file mode 100644 index c1b4ce3..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_q7.c +++ /dev/null @@ -1,469 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_fir_sparse_q7.c - * Description: Q7 sparse FIR filter processing function - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - - -/** - * @ingroup groupFilters - */ - -/** - * @addtogroup FIR_Sparse - * @{ - */ - - -/** - * @brief Processing function for the Q7 sparse FIR filter. - * @param[in] *S points to an instance of the Q7 sparse FIR structure. - * @param[in] *pSrc points to the block of input data. - * @param[out] *pDst points to the block of output data - * @param[in] *pScratchIn points to a temporary buffer of size blockSize. - * @param[in] *pScratchOut points to a temporary buffer of size blockSize. - * @param[in] blockSize number of input samples to process per call. - * @return none. - * - * Scaling and Overflow Behavior: - * \par - * The function is implemented using a 32-bit internal accumulator. - * Both coefficients and state variables are represented in 1.7 format and multiplications yield a 2.14 result. - * The 2.14 intermediate results are accumulated in a 32-bit accumulator in 18.14 format. - * There is no risk of internal overflow with this approach and the full precision of intermediate multiplications is preserved. - * The accumulator is then converted to 18.7 format by discarding the low 7 bits. - * Finally, the result is truncated to 1.7 format. - */ - -void arm_fir_sparse_q7( - arm_fir_sparse_instance_q7 * S, - q7_t * pSrc, - q7_t * pDst, - q7_t * pScratchIn, - q31_t * pScratchOut, - uint32_t blockSize) -{ - - q7_t *pState = S->pState; /* State pointer */ - q7_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ - q7_t *px; /* Scratch buffer pointer */ - q7_t *py = pState; /* Temporary pointers for state buffer */ - q7_t *pb = pScratchIn; /* Temporary pointers for scratch buffer */ - q7_t *pOut = pDst; /* Destination pointer */ - int32_t *pTapDelay = S->pTapDelay; /* Pointer to the array containing offset of the non-zero tap values. */ - uint32_t delaySize = S->maxDelay + blockSize; /* state length */ - uint16_t numTaps = S->numTaps; /* Filter order */ - int32_t readIndex; /* Read index of the state buffer */ - uint32_t tapCnt, blkCnt; /* loop counters */ - q7_t coeff = *pCoeffs++; /* Read the coefficient value */ - q31_t *pScr2 = pScratchOut; /* Working pointer for scratch buffer of output values */ - q31_t in; - - -#if defined (ARM_MATH_DSP) - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - q7_t in1, in2, in3, in4; - - /* BlockSize of Input samples are copied into the state buffer */ - /* StateIndex points to the starting position to write in the state buffer */ - arm_circularWrite_q7(py, (int32_t) delaySize, &S->stateIndex, 1, pSrc, 1, - blockSize); - - /* Loop over the number of taps. */ - tapCnt = numTaps; - - /* Read Index, from where the state buffer should be read, is calculated. */ - readIndex = ((int32_t) S->stateIndex - (int32_t) blockSize) - *pTapDelay++; - - /* Wraparound of readIndex */ - if (readIndex < 0) - { - readIndex += (int32_t) delaySize; - } - - /* Working pointer for state buffer is updated */ - py = pState; - - /* blockSize samples are read from the state buffer */ - arm_circularRead_q7(py, (int32_t) delaySize, &readIndex, 1, pb, pb, - (int32_t) blockSize, 1, blockSize); - - /* Working pointer for the scratch buffer of state values */ - px = pb; - - /* Working pointer for scratch buffer of output values */ - pScratchOut = pScr2; - - /* Loop over the blockSize. Unroll by a factor of 4. - * Compute 4 multiplications at a time. */ - blkCnt = blockSize >> 2; - - while (blkCnt > 0U) - { - /* Perform multiplication and store in the scratch buffer */ - *pScratchOut++ = ((q31_t) * px++ * coeff); - *pScratchOut++ = ((q31_t) * px++ * coeff); - *pScratchOut++ = ((q31_t) * px++ * coeff); - *pScratchOut++ = ((q31_t) * px++ * coeff); - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, - * compute the remaining samples */ - blkCnt = blockSize % 0x4U; - - while (blkCnt > 0U) - { - /* Perform multiplication and store in the scratch buffer */ - *pScratchOut++ = ((q31_t) * px++ * coeff); - - /* Decrement the loop counter */ - blkCnt--; - } - - /* Load the coefficient value and - * increment the coefficient buffer for the next set of state values */ - coeff = *pCoeffs++; - - /* Read Index, from where the state buffer should be read, is calculated. */ - readIndex = ((int32_t) S->stateIndex - (int32_t) blockSize) - *pTapDelay++; - - /* Wraparound of readIndex */ - if (readIndex < 0) - { - readIndex += (int32_t) delaySize; - } - - /* Loop over the number of taps. */ - tapCnt = (uint32_t) numTaps - 2U; - - while (tapCnt > 0U) - { - /* Working pointer for state buffer is updated */ - py = pState; - - /* blockSize samples are read from the state buffer */ - arm_circularRead_q7(py, (int32_t) delaySize, &readIndex, 1, pb, pb, - (int32_t) blockSize, 1, blockSize); - - /* Working pointer for the scratch buffer of state values */ - px = pb; - - /* Working pointer for scratch buffer of output values */ - pScratchOut = pScr2; - - /* Loop over the blockSize. Unroll by a factor of 4. - * Compute 4 MACS at a time. */ - blkCnt = blockSize >> 2; - - while (blkCnt > 0U) - { - /* Perform Multiply-Accumulate */ - in = *pScratchOut + ((q31_t) * px++ * coeff); - *pScratchOut++ = in; - in = *pScratchOut + ((q31_t) * px++ * coeff); - *pScratchOut++ = in; - in = *pScratchOut + ((q31_t) * px++ * coeff); - *pScratchOut++ = in; - in = *pScratchOut + ((q31_t) * px++ * coeff); - *pScratchOut++ = in; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, - * compute the remaining samples */ - blkCnt = blockSize % 0x4U; - - while (blkCnt > 0U) - { - /* Perform Multiply-Accumulate */ - in = *pScratchOut + ((q31_t) * px++ * coeff); - *pScratchOut++ = in; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* Load the coefficient value and - * increment the coefficient buffer for the next set of state values */ - coeff = *pCoeffs++; - - /* Read Index, from where the state buffer should be read, is calculated. */ - readIndex = ((int32_t) S->stateIndex - - (int32_t) blockSize) - *pTapDelay++; - - /* Wraparound of readIndex */ - if (readIndex < 0) - { - readIndex += (int32_t) delaySize; - } - - /* Decrement the tap loop counter */ - tapCnt--; - } - - /* Compute last tap without the final read of pTapDelay */ - - /* Working pointer for state buffer is updated */ - py = pState; - - /* blockSize samples are read from the state buffer */ - arm_circularRead_q7(py, (int32_t) delaySize, &readIndex, 1, pb, pb, - (int32_t) blockSize, 1, blockSize); - - /* Working pointer for the scratch buffer of state values */ - px = pb; - - /* Working pointer for scratch buffer of output values */ - pScratchOut = pScr2; - - /* Loop over the blockSize. Unroll by a factor of 4. - * Compute 4 MACS at a time. */ - blkCnt = blockSize >> 2; - - while (blkCnt > 0U) - { - /* Perform Multiply-Accumulate */ - in = *pScratchOut + ((q31_t) * px++ * coeff); - *pScratchOut++ = in; - in = *pScratchOut + ((q31_t) * px++ * coeff); - *pScratchOut++ = in; - in = *pScratchOut + ((q31_t) * px++ * coeff); - *pScratchOut++ = in; - in = *pScratchOut + ((q31_t) * px++ * coeff); - *pScratchOut++ = in; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, - * compute the remaining samples */ - blkCnt = blockSize % 0x4U; - - while (blkCnt > 0U) - { - /* Perform Multiply-Accumulate */ - in = *pScratchOut + ((q31_t) * px++ * coeff); - *pScratchOut++ = in; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* All the output values are in pScratchOut buffer. - Convert them into 1.15 format, saturate and store in the destination buffer. */ - /* Loop over the blockSize. */ - blkCnt = blockSize >> 2; - - while (blkCnt > 0U) - { - in1 = (q7_t) __SSAT(*pScr2++ >> 7, 8); - in2 = (q7_t) __SSAT(*pScr2++ >> 7, 8); - in3 = (q7_t) __SSAT(*pScr2++ >> 7, 8); - in4 = (q7_t) __SSAT(*pScr2++ >> 7, 8); - - *__SIMD32(pOut)++ = __PACKq7(in1, in2, in3, in4); - - /* Decrement the blockSize loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, - remaining samples are processed in the below loop */ - blkCnt = blockSize % 0x4U; - - while (blkCnt > 0U) - { - *pOut++ = (q7_t) __SSAT(*pScr2++ >> 7, 8); - - /* Decrement the blockSize loop counter */ - blkCnt--; - } - -#else - - /* Run the below code for Cortex-M0 */ - - /* BlockSize of Input samples are copied into the state buffer */ - /* StateIndex points to the starting position to write in the state buffer */ - arm_circularWrite_q7(py, (int32_t) delaySize, &S->stateIndex, 1, pSrc, 1, - blockSize); - - /* Loop over the number of taps. */ - tapCnt = numTaps; - - /* Read Index, from where the state buffer should be read, is calculated. */ - readIndex = ((int32_t) S->stateIndex - (int32_t) blockSize) - *pTapDelay++; - - /* Wraparound of readIndex */ - if (readIndex < 0) - { - readIndex += (int32_t) delaySize; - } - - /* Working pointer for state buffer is updated */ - py = pState; - - /* blockSize samples are read from the state buffer */ - arm_circularRead_q7(py, (int32_t) delaySize, &readIndex, 1, pb, pb, - (int32_t) blockSize, 1, blockSize); - - /* Working pointer for the scratch buffer of state values */ - px = pb; - - /* Working pointer for scratch buffer of output values */ - pScratchOut = pScr2; - - /* Loop over the blockSize */ - blkCnt = blockSize; - - while (blkCnt > 0U) - { - /* Perform multiplication and store in the scratch buffer */ - *pScratchOut++ = ((q31_t) * px++ * coeff); - - /* Decrement the loop counter */ - blkCnt--; - } - - /* Load the coefficient value and - * increment the coefficient buffer for the next set of state values */ - coeff = *pCoeffs++; - - /* Read Index, from where the state buffer should be read, is calculated. */ - readIndex = ((int32_t) S->stateIndex - (int32_t) blockSize) - *pTapDelay++; - - /* Wraparound of readIndex */ - if (readIndex < 0) - { - readIndex += (int32_t) delaySize; - } - - /* Loop over the number of taps. */ - tapCnt = (uint32_t) numTaps - 2U; - - while (tapCnt > 0U) - { - /* Working pointer for state buffer is updated */ - py = pState; - - /* blockSize samples are read from the state buffer */ - arm_circularRead_q7(py, (int32_t) delaySize, &readIndex, 1, pb, pb, - (int32_t) blockSize, 1, blockSize); - - /* Working pointer for the scratch buffer of state values */ - px = pb; - - /* Working pointer for scratch buffer of output values */ - pScratchOut = pScr2; - - /* Loop over the blockSize */ - blkCnt = blockSize; - - while (blkCnt > 0U) - { - /* Perform Multiply-Accumulate */ - in = *pScratchOut + ((q31_t) * px++ * coeff); - *pScratchOut++ = in; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* Load the coefficient value and - * increment the coefficient buffer for the next set of state values */ - coeff = *pCoeffs++; - - /* Read Index, from where the state buffer should be read, is calculated. */ - readIndex = - ((int32_t) S->stateIndex - (int32_t) blockSize) - *pTapDelay++; - - /* Wraparound of readIndex */ - if (readIndex < 0) - { - readIndex += (int32_t) delaySize; - } - - /* Decrement the tap loop counter */ - tapCnt--; - } - - /* Compute last tap without the final read of pTapDelay */ - - /* Working pointer for state buffer is updated */ - py = pState; - - /* blockSize samples are read from the state buffer */ - arm_circularRead_q7(py, (int32_t) delaySize, &readIndex, 1, pb, pb, - (int32_t) blockSize, 1, blockSize); - - /* Working pointer for the scratch buffer of state values */ - px = pb; - - /* Working pointer for scratch buffer of output values */ - pScratchOut = pScr2; - - /* Loop over the blockSize */ - blkCnt = blockSize; - - while (blkCnt > 0U) - { - /* Perform Multiply-Accumulate */ - in = *pScratchOut + ((q31_t) * px++ * coeff); - *pScratchOut++ = in; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* All the output values are in pScratchOut buffer. - Convert them into 1.15 format, saturate and store in the destination buffer. */ - /* Loop over the blockSize. */ - blkCnt = blockSize; - - while (blkCnt > 0U) - { - *pOut++ = (q7_t) __SSAT(*pScr2++ >> 7, 8); - - /* Decrement the blockSize loop counter */ - blkCnt--; - } - -#endif /* #if defined (ARM_MATH_DSP) */ - -} - -/** - * @} end of FIR_Sparse group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_iir_lattice_f32.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_iir_lattice_f32.c deleted file mode 100644 index 424be38..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_iir_lattice_f32.c +++ /dev/null @@ -1,435 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_iir_lattice_f32.c - * Description: Floating-point IIR Lattice filter processing function - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupFilters - */ - -/** - * @defgroup IIR_Lattice Infinite Impulse Response (IIR) Lattice Filters - * - * This set of functions implements lattice filters - * for Q15, Q31 and floating-point data types. Lattice filters are used in a - * variety of adaptive filter applications. The filter structure has feedforward and - * feedback components and the net impulse response is infinite length. - * The functions operate on blocks - * of input and output data and each call to the function processes - * blockSize samples through the filter. pSrc and - * pDst point to input and output arrays containing blockSize values. - - * \par Algorithm: - * \image html IIRLattice.gif "Infinite Impulse Response Lattice filter" - *
- *    fN(n)   =  x(n)
- *    fm-1(n) = fm(n) - km * gm-1(n-1)   for m = N, N-1, ...1
- *    gm(n)   = km * fm-1(n) + gm-1(n-1) for m = N, N-1, ...1
- *    y(n)    = vN * gN(n) + vN-1 * gN-1(n) + ...+ v0 * g0(n)
- * 
- * \par - * pkCoeffs points to array of reflection coefficients of size numStages. - * Reflection coefficients are stored in time-reversed order. - * \par - *
- *    {kN, kN-1, ....k1}
- * 
- * pvCoeffs points to the array of ladder coefficients of size (numStages+1). - * Ladder coefficients are stored in time-reversed order. - * \par - *
- *    {vN, vN-1, ...v0}
- * 
- * pState points to a state array of size numStages + blockSize. - * The state variables shown in the figure above (the g values) are stored in the pState array. - * The state variables are updated after each block of data is processed; the coefficients are untouched. - * \par Instance Structure - * The coefficients and state variables for a filter are stored together in an instance data structure. - * A separate instance structure must be defined for each filter. - * Coefficient arrays may be shared among several instances while state variable arrays cannot be shared. - * There are separate instance structure declarations for each of the 3 supported data types. - * - * \par Initialization Functions - * There is also an associated initialization function for each data type. - * The initialization function performs the following operations: - * - Sets the values of the internal structure fields. - * - Zeros out the values in the state buffer. - * To do this manually without calling the init function, assign the follow subfields of the instance structure: - * numStages, pkCoeffs, pvCoeffs, pState. Also set all of the values in pState to zero. - * - * \par - * Use of the initialization function is optional. - * However, if the initialization function is used, then the instance structure cannot be placed into a const data section. - * To place an instance structure into a const data section, the instance structure must be manually initialized. - * Set the values in the state buffer to zeros and then manually initialize the instance structure as follows: - *
- *arm_iir_lattice_instance_f32 S = {numStages, pState, pkCoeffs, pvCoeffs};
- *arm_iir_lattice_instance_q31 S = {numStages, pState, pkCoeffs, pvCoeffs};
- *arm_iir_lattice_instance_q15 S = {numStages, pState, pkCoeffs, pvCoeffs};
- * 
- * \par - * where numStages is the number of stages in the filter; pState points to the state buffer array; - * pkCoeffs points to array of the reflection coefficients; pvCoeffs points to the array of ladder coefficients. - * \par Fixed-Point Behavior - * Care must be taken when using the fixed-point versions of the IIR lattice filter functions. - * In particular, the overflow and saturation behavior of the accumulator used in each function must be considered. - * Refer to the function specific documentation below for usage guidelines. - */ - -/** - * @addtogroup IIR_Lattice - * @{ - */ - -/** - * @brief Processing function for the floating-point IIR lattice filter. - * @param[in] *S points to an instance of the floating-point IIR lattice structure. - * @param[in] *pSrc points to the block of input data. - * @param[out] *pDst points to the block of output data. - * @param[in] blockSize number of samples to process. - * @return none. - */ - -#if defined (ARM_MATH_DSP) - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - -void arm_iir_lattice_f32( - const arm_iir_lattice_instance_f32 * S, - float32_t * pSrc, - float32_t * pDst, - uint32_t blockSize) -{ - float32_t fnext1, gcurr1, gnext; /* Temporary variables for lattice stages */ - float32_t acc; /* Accumlator */ - uint32_t blkCnt, tapCnt; /* temporary variables for counts */ - float32_t *px1, *px2, *pk, *pv; /* temporary pointers for state and coef */ - uint32_t numStages = S->numStages; /* number of stages */ - float32_t *pState; /* State pointer */ - float32_t *pStateCurnt; /* State current pointer */ - float32_t k1, k2; - float32_t v1, v2, v3, v4; - float32_t gcurr2; - float32_t fnext2; - - /* initialise loop count */ - blkCnt = blockSize; - - /* initialise state pointer */ - pState = &S->pState[0]; - - /* Sample processing */ - while (blkCnt > 0U) - { - /* Read Sample from input buffer */ - /* fN(n) = x(n) */ - fnext2 = *pSrc++; - - /* Initialize Ladder coeff pointer */ - pv = &S->pvCoeffs[0]; - /* Initialize Reflection coeff pointer */ - pk = &S->pkCoeffs[0]; - - /* Initialize state read pointer */ - px1 = pState; - /* Initialize state write pointer */ - px2 = pState; - - /* Set accumulator to zero */ - acc = 0.0; - - /* Loop unrolling. Process 4 taps at a time. */ - tapCnt = (numStages) >> 2; - - while (tapCnt > 0U) - { - /* Read gN-1(n-1) from state buffer */ - gcurr1 = *px1; - - /* read reflection coefficient kN */ - k1 = *pk; - - /* fN-1(n) = fN(n) - kN * gN-1(n-1) */ - fnext1 = fnext2 - (k1 * gcurr1); - - /* read ladder coefficient vN */ - v1 = *pv; - - /* read next reflection coefficient kN-1 */ - k2 = *(pk + 1U); - - /* Read gN-2(n-1) from state buffer */ - gcurr2 = *(px1 + 1U); - - /* read next ladder coefficient vN-1 */ - v2 = *(pv + 1U); - - /* fN-2(n) = fN-1(n) - kN-1 * gN-2(n-1) */ - fnext2 = fnext1 - (k2 * gcurr2); - - /* gN(n) = kN * fN-1(n) + gN-1(n-1) */ - gnext = gcurr1 + (k1 * fnext1); - - /* read reflection coefficient kN-2 */ - k1 = *(pk + 2U); - - /* write gN(n) into state for next sample processing */ - *px2++ = gnext; - - /* Read gN-3(n-1) from state buffer */ - gcurr1 = *(px1 + 2U); - - /* y(n) += gN(n) * vN */ - acc += (gnext * v1); - - /* fN-3(n) = fN-2(n) - kN-2 * gN-3(n-1) */ - fnext1 = fnext2 - (k1 * gcurr1); - - /* gN-1(n) = kN-1 * fN-2(n) + gN-2(n-1) */ - gnext = gcurr2 + (k2 * fnext2); - - /* Read gN-4(n-1) from state buffer */ - gcurr2 = *(px1 + 3U); - - /* y(n) += gN-1(n) * vN-1 */ - acc += (gnext * v2); - - /* read reflection coefficient kN-3 */ - k2 = *(pk + 3U); - - /* write gN-1(n) into state for next sample processing */ - *px2++ = gnext; - - /* fN-4(n) = fN-3(n) - kN-3 * gN-4(n-1) */ - fnext2 = fnext1 - (k2 * gcurr2); - - /* gN-2(n) = kN-2 * fN-3(n) + gN-3(n-1) */ - gnext = gcurr1 + (k1 * fnext1); - - /* read ladder coefficient vN-2 */ - v3 = *(pv + 2U); - - /* y(n) += gN-2(n) * vN-2 */ - acc += (gnext * v3); - - /* write gN-2(n) into state for next sample processing */ - *px2++ = gnext; - - /* update pointer */ - pk += 4U; - - /* gN-3(n) = kN-3 * fN-4(n) + gN-4(n-1) */ - gnext = (fnext2 * k2) + gcurr2; - - /* read next ladder coefficient vN-3 */ - v4 = *(pv + 3U); - - /* y(n) += gN-4(n) * vN-4 */ - acc += (gnext * v4); - - /* write gN-3(n) into state for next sample processing */ - *px2++ = gnext; - - /* update pointers */ - px1 += 4U; - pv += 4U; - - tapCnt--; - - } - - /* If the filter length is not a multiple of 4, compute the remaining filter taps */ - tapCnt = (numStages) % 0x4U; - - while (tapCnt > 0U) - { - gcurr1 = *px1++; - /* Process sample for last taps */ - fnext1 = fnext2 - ((*pk) * gcurr1); - gnext = (fnext1 * (*pk++)) + gcurr1; - /* Output samples for last taps */ - acc += (gnext * (*pv++)); - *px2++ = gnext; - fnext2 = fnext1; - - tapCnt--; - - } - - /* y(n) += g0(n) * v0 */ - acc += (fnext2 * (*pv)); - - *px2++ = fnext2; - - /* write out into pDst */ - *pDst++ = acc; - - /* Advance the state pointer by 4 to process the next group of 4 samples */ - pState = pState + 1U; - - blkCnt--; - - } - - /* Processing is complete. Now copy last S->numStages samples to start of the buffer - for the preperation of next frame process */ - - /* Points to the start of the state buffer */ - pStateCurnt = &S->pState[0]; - pState = &S->pState[blockSize]; - - tapCnt = numStages >> 2U; - - /* copy data */ - while (tapCnt > 0U) - { - *pStateCurnt++ = *pState++; - *pStateCurnt++ = *pState++; - *pStateCurnt++ = *pState++; - *pStateCurnt++ = *pState++; - - /* Decrement the loop counter */ - tapCnt--; - - } - - /* Calculate remaining number of copies */ - tapCnt = (numStages) % 0x4U; - - /* Copy the remaining q31_t data */ - while (tapCnt > 0U) - { - *pStateCurnt++ = *pState++; - - /* Decrement the loop counter */ - tapCnt--; - } -} - -#else - -void arm_iir_lattice_f32( - const arm_iir_lattice_instance_f32 * S, - float32_t * pSrc, - float32_t * pDst, - uint32_t blockSize) -{ - float32_t fcurr, fnext = 0, gcurr, gnext; /* Temporary variables for lattice stages */ - float32_t acc; /* Accumlator */ - uint32_t blkCnt, tapCnt; /* temporary variables for counts */ - float32_t *px1, *px2, *pk, *pv; /* temporary pointers for state and coef */ - uint32_t numStages = S->numStages; /* number of stages */ - float32_t *pState; /* State pointer */ - float32_t *pStateCurnt; /* State current pointer */ - - - /* Run the below code for Cortex-M0 */ - - blkCnt = blockSize; - - pState = &S->pState[0]; - - /* Sample processing */ - while (blkCnt > 0U) - { - /* Read Sample from input buffer */ - /* fN(n) = x(n) */ - fcurr = *pSrc++; - - /* Initialize state read pointer */ - px1 = pState; - /* Initialize state write pointer */ - px2 = pState; - /* Set accumulator to zero */ - acc = 0.0f; - /* Initialize Ladder coeff pointer */ - pv = &S->pvCoeffs[0]; - /* Initialize Reflection coeff pointer */ - pk = &S->pkCoeffs[0]; - - - /* Process sample for numStages */ - tapCnt = numStages; - - while (tapCnt > 0U) - { - gcurr = *px1++; - /* Process sample for last taps */ - fnext = fcurr - ((*pk) * gcurr); - gnext = (fnext * (*pk++)) + gcurr; - - /* Output samples for last taps */ - acc += (gnext * (*pv++)); - *px2++ = gnext; - fcurr = fnext; - - /* Decrementing loop counter */ - tapCnt--; - - } - - /* y(n) += g0(n) * v0 */ - acc += (fnext * (*pv)); - - *px2++ = fnext; - - /* write out into pDst */ - *pDst++ = acc; - - /* Advance the state pointer by 1 to process the next group of samples */ - pState = pState + 1U; - blkCnt--; - - } - - /* Processing is complete. Now copy last S->numStages samples to start of the buffer - for the preperation of next frame process */ - - /* Points to the start of the state buffer */ - pStateCurnt = &S->pState[0]; - pState = &S->pState[blockSize]; - - tapCnt = numStages; - - /* Copy the data */ - while (tapCnt > 0U) - { - *pStateCurnt++ = *pState++; - - /* Decrement the loop counter */ - tapCnt--; - } - -} - -#endif /* #if defined (ARM_MATH_DSP) */ - - -/** - * @} end of IIR_Lattice group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_iir_lattice_init_f32.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_iir_lattice_init_f32.c deleted file mode 100644 index 530c7ff..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_iir_lattice_init_f32.c +++ /dev/null @@ -1,79 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_iir_lattice_init_f32.c - * Description: Floating-point IIR lattice filter initialization function - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupFilters - */ - -/** - * @addtogroup IIR_Lattice - * @{ - */ - -/** - * @brief Initialization function for the floating-point IIR lattice filter. - * @param[in] *S points to an instance of the floating-point IIR lattice structure. - * @param[in] numStages number of stages in the filter. - * @param[in] *pkCoeffs points to the reflection coefficient buffer. The array is of length numStages. - * @param[in] *pvCoeffs points to the ladder coefficient buffer. The array is of length numStages+1. - * @param[in] *pState points to the state buffer. The array is of length numStages+blockSize. - * @param[in] blockSize number of samples to process. - * @return none. - */ - -void arm_iir_lattice_init_f32( - arm_iir_lattice_instance_f32 * S, - uint16_t numStages, - float32_t * pkCoeffs, - float32_t * pvCoeffs, - float32_t * pState, - uint32_t blockSize) -{ - /* Assign filter taps */ - S->numStages = numStages; - - /* Assign reflection coefficient pointer */ - S->pkCoeffs = pkCoeffs; - - /* Assign ladder coefficient pointer */ - S->pvCoeffs = pvCoeffs; - - /* Clear state buffer and size is always blockSize + numStages */ - memset(pState, 0, (numStages + blockSize) * sizeof(float32_t)); - - /* Assign state pointer */ - S->pState = pState; - - -} - - /** - * @} end of IIR_Lattice group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_iir_lattice_init_q15.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_iir_lattice_init_q15.c deleted file mode 100644 index 9b991f8..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_iir_lattice_init_q15.c +++ /dev/null @@ -1,79 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_iir_lattice_init_q15.c - * Description: Q15 IIR lattice filter initialization function - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupFilters - */ - -/** - * @addtogroup IIR_Lattice - * @{ - */ - - /** - * @brief Initialization function for the Q15 IIR lattice filter. - * @param[in] *S points to an instance of the Q15 IIR lattice structure. - * @param[in] numStages number of stages in the filter. - * @param[in] *pkCoeffs points to reflection coefficient buffer. The array is of length numStages. - * @param[in] *pvCoeffs points to ladder coefficient buffer. The array is of length numStages+1. - * @param[in] *pState points to state buffer. The array is of length numStages+blockSize. - * @param[in] blockSize number of samples to process per call. - * @return none. - */ - -void arm_iir_lattice_init_q15( - arm_iir_lattice_instance_q15 * S, - uint16_t numStages, - q15_t * pkCoeffs, - q15_t * pvCoeffs, - q15_t * pState, - uint32_t blockSize) -{ - /* Assign filter taps */ - S->numStages = numStages; - - /* Assign reflection coefficient pointer */ - S->pkCoeffs = pkCoeffs; - - /* Assign ladder coefficient pointer */ - S->pvCoeffs = pvCoeffs; - - /* Clear state buffer and size is always blockSize + numStages */ - memset(pState, 0, (numStages + blockSize) * sizeof(q15_t)); - - /* Assign state pointer */ - S->pState = pState; - - -} - -/** - * @} end of IIR_Lattice group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_iir_lattice_init_q31.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_iir_lattice_init_q31.c deleted file mode 100644 index 1543206..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_iir_lattice_init_q31.c +++ /dev/null @@ -1,79 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_iir_lattice_init_q31.c - * Description: Initialization function for the Q31 IIR lattice filter - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupFilters - */ - -/** - * @addtogroup IIR_Lattice - * @{ - */ - - /** - * @brief Initialization function for the Q31 IIR lattice filter. - * @param[in] *S points to an instance of the Q31 IIR lattice structure. - * @param[in] numStages number of stages in the filter. - * @param[in] *pkCoeffs points to the reflection coefficient buffer. The array is of length numStages. - * @param[in] *pvCoeffs points to the ladder coefficient buffer. The array is of length numStages+1. - * @param[in] *pState points to the state buffer. The array is of length numStages+blockSize. - * @param[in] blockSize number of samples to process. - * @return none. - */ - -void arm_iir_lattice_init_q31( - arm_iir_lattice_instance_q31 * S, - uint16_t numStages, - q31_t * pkCoeffs, - q31_t * pvCoeffs, - q31_t * pState, - uint32_t blockSize) -{ - /* Assign filter taps */ - S->numStages = numStages; - - /* Assign reflection coefficient pointer */ - S->pkCoeffs = pkCoeffs; - - /* Assign ladder coefficient pointer */ - S->pvCoeffs = pvCoeffs; - - /* Clear state buffer and size is always blockSize + numStages */ - memset(pState, 0, (numStages + blockSize) * sizeof(q31_t)); - - /* Assign state pointer */ - S->pState = pState; - - -} - -/** - * @} end of IIR_Lattice group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_iir_lattice_q15.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_iir_lattice_q15.c deleted file mode 100644 index 8f68068..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_iir_lattice_q15.c +++ /dev/null @@ -1,452 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_iir_lattice_q15.c - * Description: Q15 IIR lattice filter processing function - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupFilters - */ - -/** - * @addtogroup IIR_Lattice - * @{ - */ - -/** - * @brief Processing function for the Q15 IIR lattice filter. - * @param[in] *S points to an instance of the Q15 IIR lattice structure. - * @param[in] *pSrc points to the block of input data. - * @param[out] *pDst points to the block of output data. - * @param[in] blockSize number of samples to process. - * @return none. - * - * @details - * Scaling and Overflow Behavior: - * \par - * The function is implemented using a 64-bit internal accumulator. - * Both coefficients and state variables are represented in 1.15 format and multiplications yield a 2.30 result. - * The 2.30 intermediate results are accumulated in a 64-bit accumulator in 34.30 format. - * There is no risk of internal overflow with this approach and the full precision of intermediate multiplications is preserved. - * After all additions have been performed, the accumulator is truncated to 34.15 format by discarding low 15 bits. - * Lastly, the accumulator is saturated to yield a result in 1.15 format. - */ - -void arm_iir_lattice_q15( - const arm_iir_lattice_instance_q15 * S, - q15_t * pSrc, - q15_t * pDst, - uint32_t blockSize) -{ - - -#if defined (ARM_MATH_DSP) - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - q31_t fcurr, fnext, gcurr = 0, gnext; /* Temporary variables for lattice stages */ - q15_t gnext1, gnext2; /* Temporary variables for lattice stages */ - uint32_t stgCnt; /* Temporary variables for counts */ - q63_t acc; /* Accumlator */ - uint32_t blkCnt, tapCnt; /* Temporary variables for counts */ - q15_t *px1, *px2, *pk, *pv; /* temporary pointers for state and coef */ - uint32_t numStages = S->numStages; /* number of stages */ - q15_t *pState; /* State pointer */ - q15_t *pStateCurnt; /* State current pointer */ - q15_t out; /* Temporary variable for output */ - q31_t v; /* Temporary variable for ladder coefficient */ -#ifdef UNALIGNED_SUPPORT_DISABLE - q15_t v1, v2; -#endif - - - blkCnt = blockSize; - - pState = &S->pState[0]; - - /* Sample processing */ - while (blkCnt > 0U) - { - /* Read Sample from input buffer */ - /* fN(n) = x(n) */ - fcurr = *pSrc++; - - /* Initialize state read pointer */ - px1 = pState; - /* Initialize state write pointer */ - px2 = pState; - /* Set accumulator to zero */ - acc = 0; - /* Initialize Ladder coeff pointer */ - pv = &S->pvCoeffs[0]; - /* Initialize Reflection coeff pointer */ - pk = &S->pkCoeffs[0]; - - - /* Process sample for first tap */ - gcurr = *px1++; - /* fN-1(n) = fN(n) - kN * gN-1(n-1) */ - fnext = fcurr - (((q31_t) gcurr * (*pk)) >> 15); - fnext = __SSAT(fnext, 16); - /* gN(n) = kN * fN-1(n) + gN-1(n-1) */ - gnext = (((q31_t) fnext * (*pk++)) >> 15) + gcurr; - gnext = __SSAT(gnext, 16); - /* write gN(n) into state for next sample processing */ - *px2++ = (q15_t) gnext; - /* y(n) += gN(n) * vN */ - acc += (q31_t) ((gnext * (*pv++))); - - - /* Update f values for next coefficient processing */ - fcurr = fnext; - - /* Loop unrolling. Process 4 taps at a time. */ - tapCnt = (numStages - 1U) >> 2; - - while (tapCnt > 0U) - { - - /* Process sample for 2nd, 6th ...taps */ - /* Read gN-2(n-1) from state buffer */ - gcurr = *px1++; - /* Process sample for 2nd, 6th .. taps */ - /* fN-2(n) = fN-1(n) - kN-1 * gN-2(n-1) */ - fnext = fcurr - (((q31_t) gcurr * (*pk)) >> 15); - fnext = __SSAT(fnext, 16); - /* gN-1(n) = kN-1 * fN-2(n) + gN-2(n-1) */ - gnext = (((q31_t) fnext * (*pk++)) >> 15) + gcurr; - gnext1 = (q15_t) __SSAT(gnext, 16); - /* write gN-1(n) into state */ - *px2++ = (q15_t) gnext1; - - - /* Process sample for 3nd, 7th ...taps */ - /* Read gN-3(n-1) from state */ - gcurr = *px1++; - /* Process sample for 3rd, 7th .. taps */ - /* fN-3(n) = fN-2(n) - kN-2 * gN-3(n-1) */ - fcurr = fnext - (((q31_t) gcurr * (*pk)) >> 15); - fcurr = __SSAT(fcurr, 16); - /* gN-2(n) = kN-2 * fN-3(n) + gN-3(n-1) */ - gnext = (((q31_t) fcurr * (*pk++)) >> 15) + gcurr; - gnext2 = (q15_t) __SSAT(gnext, 16); - /* write gN-2(n) into state */ - *px2++ = (q15_t) gnext2; - - /* Read vN-1 and vN-2 at a time */ -#ifndef UNALIGNED_SUPPORT_DISABLE - - v = *__SIMD32(pv)++; - -#else - - v1 = *pv++; - v2 = *pv++; - -#ifndef ARM_MATH_BIG_ENDIAN - - v = __PKHBT(v1, v2, 16); - -#else - - v = __PKHBT(v2, v1, 16); - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - -#endif /* #ifndef UNALIGNED_SUPPORT_DISABLE */ - - - /* Pack gN-1(n) and gN-2(n) */ - -#ifndef ARM_MATH_BIG_ENDIAN - - gnext = __PKHBT(gnext1, gnext2, 16); - -#else - - gnext = __PKHBT(gnext2, gnext1, 16); - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - /* y(n) += gN-1(n) * vN-1 */ - /* process for gN-5(n) * vN-5, gN-9(n) * vN-9 ... */ - /* y(n) += gN-2(n) * vN-2 */ - /* process for gN-6(n) * vN-6, gN-10(n) * vN-10 ... */ - acc = __SMLALD(gnext, v, acc); - - - /* Process sample for 4th, 8th ...taps */ - /* Read gN-4(n-1) from state */ - gcurr = *px1++; - /* Process sample for 4th, 8th .. taps */ - /* fN-4(n) = fN-3(n) - kN-3 * gN-4(n-1) */ - fnext = fcurr - (((q31_t) gcurr * (*pk)) >> 15); - fnext = __SSAT(fnext, 16); - /* gN-3(n) = kN-3 * fN-1(n) + gN-1(n-1) */ - gnext = (((q31_t) fnext * (*pk++)) >> 15) + gcurr; - gnext1 = (q15_t) __SSAT(gnext, 16); - /* write gN-3(n) for the next sample process */ - *px2++ = (q15_t) gnext1; - - - /* Process sample for 5th, 9th ...taps */ - /* Read gN-5(n-1) from state */ - gcurr = *px1++; - /* Process sample for 5th, 9th .. taps */ - /* fN-5(n) = fN-4(n) - kN-4 * gN-5(n-1) */ - fcurr = fnext - (((q31_t) gcurr * (*pk)) >> 15); - fcurr = __SSAT(fcurr, 16); - /* gN-4(n) = kN-4 * fN-5(n) + gN-5(n-1) */ - gnext = (((q31_t) fcurr * (*pk++)) >> 15) + gcurr; - gnext2 = (q15_t) __SSAT(gnext, 16); - /* write gN-4(n) for the next sample process */ - *px2++ = (q15_t) gnext2; - - /* Read vN-3 and vN-4 at a time */ -#ifndef UNALIGNED_SUPPORT_DISABLE - - v = *__SIMD32(pv)++; - -#else - - v1 = *pv++; - v2 = *pv++; - -#ifndef ARM_MATH_BIG_ENDIAN - - v = __PKHBT(v1, v2, 16); - -#else - - v = __PKHBT(v2, v1, 16); - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - -#endif /* #ifndef UNALIGNED_SUPPORT_DISABLE */ - - - /* Pack gN-3(n) and gN-4(n) */ -#ifndef ARM_MATH_BIG_ENDIAN - - gnext = __PKHBT(gnext1, gnext2, 16); - -#else - - gnext = __PKHBT(gnext2, gnext1, 16); - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - /* y(n) += gN-4(n) * vN-4 */ - /* process for gN-8(n) * vN-8, gN-12(n) * vN-12 ... */ - /* y(n) += gN-3(n) * vN-3 */ - /* process for gN-7(n) * vN-7, gN-11(n) * vN-11 ... */ - acc = __SMLALD(gnext, v, acc); - - tapCnt--; - - } - - fnext = fcurr; - - /* If the filter length is not a multiple of 4, compute the remaining filter taps */ - tapCnt = (numStages - 1U) % 0x4U; - - while (tapCnt > 0U) - { - gcurr = *px1++; - /* Process sample for last taps */ - fnext = fcurr - (((q31_t) gcurr * (*pk)) >> 15); - fnext = __SSAT(fnext, 16); - gnext = (((q31_t) fnext * (*pk++)) >> 15) + gcurr; - gnext = __SSAT(gnext, 16); - /* Output samples for last taps */ - acc += (q31_t) (((q31_t) gnext * (*pv++))); - *px2++ = (q15_t) gnext; - fcurr = fnext; - - tapCnt--; - } - - /* y(n) += g0(n) * v0 */ - acc += (q31_t) (((q31_t) fnext * (*pv++))); - - out = (q15_t) __SSAT(acc >> 15, 16); - *px2++ = (q15_t) fnext; - - /* write out into pDst */ - *pDst++ = out; - - /* Advance the state pointer by 4 to process the next group of 4 samples */ - pState = pState + 1U; - blkCnt--; - - } - - /* Processing is complete. Now copy last S->numStages samples to start of the buffer - for the preperation of next frame process */ - /* Points to the start of the state buffer */ - pStateCurnt = &S->pState[0]; - pState = &S->pState[blockSize]; - - stgCnt = (numStages >> 2U); - - /* copy data */ - while (stgCnt > 0U) - { -#ifndef UNALIGNED_SUPPORT_DISABLE - - *__SIMD32(pStateCurnt)++ = *__SIMD32(pState)++; - *__SIMD32(pStateCurnt)++ = *__SIMD32(pState)++; - -#else - - *pStateCurnt++ = *pState++; - *pStateCurnt++ = *pState++; - *pStateCurnt++ = *pState++; - *pStateCurnt++ = *pState++; - -#endif /* #ifndef UNALIGNED_SUPPORT_DISABLE */ - - /* Decrement the loop counter */ - stgCnt--; - - } - - /* Calculation of count for remaining q15_t data */ - stgCnt = (numStages) % 0x4U; - - /* copy data */ - while (stgCnt > 0U) - { - *pStateCurnt++ = *pState++; - - /* Decrement the loop counter */ - stgCnt--; - } - -#else - - /* Run the below code for Cortex-M0 */ - - q31_t fcurr, fnext = 0, gcurr = 0, gnext; /* Temporary variables for lattice stages */ - uint32_t stgCnt; /* Temporary variables for counts */ - q63_t acc; /* Accumlator */ - uint32_t blkCnt, tapCnt; /* Temporary variables for counts */ - q15_t *px1, *px2, *pk, *pv; /* temporary pointers for state and coef */ - uint32_t numStages = S->numStages; /* number of stages */ - q15_t *pState; /* State pointer */ - q15_t *pStateCurnt; /* State current pointer */ - q15_t out; /* Temporary variable for output */ - - - blkCnt = blockSize; - - pState = &S->pState[0]; - - /* Sample processing */ - while (blkCnt > 0U) - { - /* Read Sample from input buffer */ - /* fN(n) = x(n) */ - fcurr = *pSrc++; - - /* Initialize state read pointer */ - px1 = pState; - /* Initialize state write pointer */ - px2 = pState; - /* Set accumulator to zero */ - acc = 0; - /* Initialize Ladder coeff pointer */ - pv = &S->pvCoeffs[0]; - /* Initialize Reflection coeff pointer */ - pk = &S->pkCoeffs[0]; - - tapCnt = numStages; - - while (tapCnt > 0U) - { - gcurr = *px1++; - /* Process sample */ - /* fN-1(n) = fN(n) - kN * gN-1(n-1) */ - fnext = fcurr - ((gcurr * (*pk)) >> 15); - fnext = __SSAT(fnext, 16); - /* gN(n) = kN * fN-1(n) + gN-1(n-1) */ - gnext = ((fnext * (*pk++)) >> 15) + gcurr; - gnext = __SSAT(gnext, 16); - /* Output samples */ - /* y(n) += gN(n) * vN */ - acc += (q31_t) ((gnext * (*pv++))); - /* write gN(n) into state for next sample processing */ - *px2++ = (q15_t) gnext; - /* Update f values for next coefficient processing */ - fcurr = fnext; - - tapCnt--; - } - - /* y(n) += g0(n) * v0 */ - acc += (q31_t) ((fnext * (*pv++))); - - out = (q15_t) __SSAT(acc >> 15, 16); - *px2++ = (q15_t) fnext; - - /* write out into pDst */ - *pDst++ = out; - - /* Advance the state pointer by 1 to process the next group of samples */ - pState = pState + 1U; - blkCnt--; - - } - - /* Processing is complete. Now copy last S->numStages samples to start of the buffer - for the preperation of next frame process */ - /* Points to the start of the state buffer */ - pStateCurnt = &S->pState[0]; - pState = &S->pState[blockSize]; - - stgCnt = numStages; - - /* copy data */ - while (stgCnt > 0U) - { - *pStateCurnt++ = *pState++; - - /* Decrement the loop counter */ - stgCnt--; - } - -#endif /* #if defined (ARM_MATH_DSP) */ - -} - - - - -/** - * @} end of IIR_Lattice group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_iir_lattice_q31.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_iir_lattice_q31.c deleted file mode 100644 index a14dd7a..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_iir_lattice_q31.c +++ /dev/null @@ -1,338 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_iir_lattice_q31.c - * Description: Q31 IIR lattice filter processing function - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupFilters - */ - -/** - * @addtogroup IIR_Lattice - * @{ - */ - -/** - * @brief Processing function for the Q31 IIR lattice filter. - * @param[in] *S points to an instance of the Q31 IIR lattice structure. - * @param[in] *pSrc points to the block of input data. - * @param[out] *pDst points to the block of output data. - * @param[in] blockSize number of samples to process. - * @return none. - * - * @details - * Scaling and Overflow Behavior: - * \par - * The function is implemented using an internal 64-bit accumulator. - * The accumulator has a 2.62 format and maintains full precision of the intermediate multiplication results but provides only a single guard bit. - * Thus, if the accumulator result overflows it wraps around rather than clip. - * In order to avoid overflows completely the input signal must be scaled down by 2*log2(numStages) bits. - * After all multiply-accumulates are performed, the 2.62 accumulator is saturated to 1.32 format and then truncated to 1.31 format. - */ - -void arm_iir_lattice_q31( - const arm_iir_lattice_instance_q31 * S, - q31_t * pSrc, - q31_t * pDst, - uint32_t blockSize) -{ - q31_t fcurr, fnext = 0, gcurr = 0, gnext; /* Temporary variables for lattice stages */ - q63_t acc; /* Accumlator */ - uint32_t blkCnt, tapCnt; /* Temporary variables for counts */ - q31_t *px1, *px2, *pk, *pv; /* Temporary pointers for state and coef */ - uint32_t numStages = S->numStages; /* number of stages */ - q31_t *pState; /* State pointer */ - q31_t *pStateCurnt; /* State current pointer */ - - blkCnt = blockSize; - - pState = &S->pState[0]; - - -#if defined (ARM_MATH_DSP) - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - /* Sample processing */ - while (blkCnt > 0U) - { - /* Read Sample from input buffer */ - /* fN(n) = x(n) */ - fcurr = *pSrc++; - - /* Initialize state read pointer */ - px1 = pState; - /* Initialize state write pointer */ - px2 = pState; - /* Set accumulator to zero */ - acc = 0; - /* Initialize Ladder coeff pointer */ - pv = &S->pvCoeffs[0]; - /* Initialize Reflection coeff pointer */ - pk = &S->pkCoeffs[0]; - - - /* Process sample for first tap */ - gcurr = *px1++; - /* fN-1(n) = fN(n) - kN * gN-1(n-1) */ - fnext = __QSUB(fcurr, (q31_t) (((q63_t) gcurr * (*pk)) >> 31)); - /* gN(n) = kN * fN-1(n) + gN-1(n-1) */ - gnext = __QADD(gcurr, (q31_t) (((q63_t) fnext * (*pk++)) >> 31)); - /* write gN-1(n-1) into state for next sample processing */ - *px2++ = gnext; - /* y(n) += gN(n) * vN */ - acc += ((q63_t) gnext * *pv++); - - /* Update f values for next coefficient processing */ - fcurr = fnext; - - /* Loop unrolling. Process 4 taps at a time. */ - tapCnt = (numStages - 1U) >> 2; - - while (tapCnt > 0U) - { - - /* Process sample for 2nd, 6th .. taps */ - /* Read gN-2(n-1) from state buffer */ - gcurr = *px1++; - /* fN-2(n) = fN-1(n) - kN-1 * gN-2(n-1) */ - fnext = __QSUB(fcurr, (q31_t) (((q63_t) gcurr * (*pk)) >> 31)); - /* gN-1(n) = kN-1 * fN-2(n) + gN-2(n-1) */ - gnext = __QADD(gcurr, (q31_t) (((q63_t) fnext * (*pk++)) >> 31)); - /* y(n) += gN-1(n) * vN-1 */ - /* process for gN-5(n) * vN-5, gN-9(n) * vN-9 ... */ - acc += ((q63_t) gnext * *pv++); - /* write gN-1(n) into state for next sample processing */ - *px2++ = gnext; - - /* Process sample for 3nd, 7th ...taps */ - /* Read gN-3(n-1) from state buffer */ - gcurr = *px1++; - /* Process sample for 3rd, 7th .. taps */ - /* fN-3(n) = fN-2(n) - kN-2 * gN-3(n-1) */ - fcurr = __QSUB(fnext, (q31_t) (((q63_t) gcurr * (*pk)) >> 31)); - /* gN-2(n) = kN-2 * fN-3(n) + gN-3(n-1) */ - gnext = __QADD(gcurr, (q31_t) (((q63_t) fcurr * (*pk++)) >> 31)); - /* y(n) += gN-2(n) * vN-2 */ - /* process for gN-6(n) * vN-6, gN-10(n) * vN-10 ... */ - acc += ((q63_t) gnext * *pv++); - /* write gN-2(n) into state for next sample processing */ - *px2++ = gnext; - - - /* Process sample for 4th, 8th ...taps */ - /* Read gN-4(n-1) from state buffer */ - gcurr = *px1++; - /* Process sample for 4th, 8th .. taps */ - /* fN-4(n) = fN-3(n) - kN-3 * gN-4(n-1) */ - fnext = __QSUB(fcurr, (q31_t) (((q63_t) gcurr * (*pk)) >> 31)); - /* gN-3(n) = kN-3 * fN-4(n) + gN-4(n-1) */ - gnext = __QADD(gcurr, (q31_t) (((q63_t) fnext * (*pk++)) >> 31)); - /* y(n) += gN-3(n) * vN-3 */ - /* process for gN-7(n) * vN-7, gN-11(n) * vN-11 ... */ - acc += ((q63_t) gnext * *pv++); - /* write gN-3(n) into state for next sample processing */ - *px2++ = gnext; - - - /* Process sample for 5th, 9th ...taps */ - /* Read gN-5(n-1) from state buffer */ - gcurr = *px1++; - /* Process sample for 5th, 9th .. taps */ - /* fN-5(n) = fN-4(n) - kN-4 * gN-1(n-1) */ - fcurr = __QSUB(fnext, (q31_t) (((q63_t) gcurr * (*pk)) >> 31)); - /* gN-4(n) = kN-4 * fN-5(n) + gN-5(n-1) */ - gnext = __QADD(gcurr, (q31_t) (((q63_t) fcurr * (*pk++)) >> 31)); - /* y(n) += gN-4(n) * vN-4 */ - /* process for gN-8(n) * vN-8, gN-12(n) * vN-12 ... */ - acc += ((q63_t) gnext * *pv++); - /* write gN-4(n) into state for next sample processing */ - *px2++ = gnext; - - tapCnt--; - - } - - fnext = fcurr; - - /* If the filter length is not a multiple of 4, compute the remaining filter taps */ - tapCnt = (numStages - 1U) % 0x4U; - - while (tapCnt > 0U) - { - gcurr = *px1++; - /* Process sample for last taps */ - fnext = __QSUB(fcurr, (q31_t) (((q63_t) gcurr * (*pk)) >> 31)); - gnext = __QADD(gcurr, (q31_t) (((q63_t) fnext * (*pk++)) >> 31)); - /* Output samples for last taps */ - acc += ((q63_t) gnext * *pv++); - *px2++ = gnext; - fcurr = fnext; - - tapCnt--; - - } - - /* y(n) += g0(n) * v0 */ - acc += (q63_t) fnext *( - *pv++); - - *px2++ = fnext; - - /* write out into pDst */ - *pDst++ = (q31_t) (acc >> 31U); - - /* Advance the state pointer by 4 to process the next group of 4 samples */ - pState = pState + 1U; - blkCnt--; - - } - - /* Processing is complete. Now copy last S->numStages samples to start of the buffer - for the preperation of next frame process */ - - /* Points to the start of the state buffer */ - pStateCurnt = &S->pState[0]; - pState = &S->pState[blockSize]; - - tapCnt = numStages >> 2U; - - /* copy data */ - while (tapCnt > 0U) - { - *pStateCurnt++ = *pState++; - *pStateCurnt++ = *pState++; - *pStateCurnt++ = *pState++; - *pStateCurnt++ = *pState++; - - /* Decrement the loop counter */ - tapCnt--; - - } - - /* Calculate remaining number of copies */ - tapCnt = (numStages) % 0x4U; - - /* Copy the remaining q31_t data */ - while (tapCnt > 0U) - { - *pStateCurnt++ = *pState++; - - /* Decrement the loop counter */ - tapCnt--; - }; - -#else - - /* Run the below code for Cortex-M0 */ - /* Sample processing */ - while (blkCnt > 0U) - { - /* Read Sample from input buffer */ - /* fN(n) = x(n) */ - fcurr = *pSrc++; - - /* Initialize state read pointer */ - px1 = pState; - /* Initialize state write pointer */ - px2 = pState; - /* Set accumulator to zero */ - acc = 0; - /* Initialize Ladder coeff pointer */ - pv = &S->pvCoeffs[0]; - /* Initialize Reflection coeff pointer */ - pk = &S->pkCoeffs[0]; - - tapCnt = numStages; - - while (tapCnt > 0U) - { - gcurr = *px1++; - /* Process sample */ - /* fN-1(n) = fN(n) - kN * gN-1(n-1) */ - fnext = - clip_q63_to_q31(((q63_t) fcurr - - ((q31_t) (((q63_t) gcurr * (*pk)) >> 31)))); - /* gN(n) = kN * fN-1(n) + gN-1(n-1) */ - gnext = - clip_q63_to_q31(((q63_t) gcurr + - ((q31_t) (((q63_t) fnext * (*pk++)) >> 31)))); - /* Output samples */ - /* y(n) += gN(n) * vN */ - acc += ((q63_t) gnext * *pv++); - /* write gN-1(n-1) into state for next sample processing */ - *px2++ = gnext; - /* Update f values for next coefficient processing */ - fcurr = fnext; - - tapCnt--; - } - - /* y(n) += g0(n) * v0 */ - acc += (q63_t) fnext *( - *pv++); - - *px2++ = fnext; - - /* write out into pDst */ - *pDst++ = (q31_t) (acc >> 31U); - - /* Advance the state pointer by 1 to process the next group of samples */ - pState = pState + 1U; - blkCnt--; - - } - - /* Processing is complete. Now copy last S->numStages samples to start of the buffer - for the preperation of next frame process */ - - /* Points to the start of the state buffer */ - pStateCurnt = &S->pState[0]; - pState = &S->pState[blockSize]; - - tapCnt = numStages; - - /* Copy the remaining q31_t data */ - while (tapCnt > 0U) - { - *pStateCurnt++ = *pState++; - - /* Decrement the loop counter */ - tapCnt--; - } - -#endif /* #if defined (ARM_MATH_DSP) */ - -} - - - - -/** - * @} end of IIR_Lattice group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_f32.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_f32.c deleted file mode 100644 index e5728b4..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_f32.c +++ /dev/null @@ -1,430 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_lms_f32.c - * Description: Processing function for the floating-point LMS filter - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupFilters - */ - -/** - * @defgroup LMS Least Mean Square (LMS) Filters - * - * LMS filters are a class of adaptive filters that are able to "learn" an unknown transfer functions. - * LMS filters use a gradient descent method in which the filter coefficients are updated based on the instantaneous error signal. - * Adaptive filters are often used in communication systems, equalizers, and noise removal. - * The CMSIS DSP Library contains LMS filter functions that operate on Q15, Q31, and floating-point data types. - * The library also contains normalized LMS filters in which the filter coefficient adaptation is indepedent of the level of the input signal. - * - * An LMS filter consists of two components as shown below. - * The first component is a standard transversal or FIR filter. - * The second component is a coefficient update mechanism. - * The LMS filter has two input signals. - * The "input" feeds the FIR filter while the "reference input" corresponds to the desired output of the FIR filter. - * That is, the FIR filter coefficients are updated so that the output of the FIR filter matches the reference input. - * The filter coefficient update mechanism is based on the difference between the FIR filter output and the reference input. - * This "error signal" tends towards zero as the filter adapts. - * The LMS processing functions accept the input and reference input signals and generate the filter output and error signal. - * \image html LMS.gif "Internal structure of the Least Mean Square filter" - * - * The functions operate on blocks of data and each call to the function processes - * blockSize samples through the filter. - * pSrc points to input signal, pRef points to reference signal, - * pOut points to output signal and pErr points to error signal. - * All arrays contain blockSize values. - * - * The functions operate on a block-by-block basis. - * Internally, the filter coefficients b[n] are updated on a sample-by-sample basis. - * The convergence of the LMS filter is slower compared to the normalized LMS algorithm. - * - * \par Algorithm: - * The output signal y[n] is computed by a standard FIR filter: - *
- *     y[n] = b[0] * x[n] + b[1] * x[n-1] + b[2] * x[n-2] + ...+ b[numTaps-1] * x[n-numTaps+1]
- * 
- * - * \par - * The error signal equals the difference between the reference signal d[n] and the filter output: - *
- *     e[n] = d[n] - y[n].
- * 
- * - * \par - * After each sample of the error signal is computed, the filter coefficients b[k] are updated on a sample-by-sample basis: - *
- *     b[k] = b[k] + e[n] * mu * x[n-k],  for k=0, 1, ..., numTaps-1
- * 
- * where mu is the step size and controls the rate of coefficient convergence. - *\par - * In the APIs, pCoeffs points to a coefficient array of size numTaps. - * Coefficients are stored in time reversed order. - * \par - *
- *    {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}
- * 
- * \par - * pState points to a state array of size numTaps + blockSize - 1. - * Samples in the state buffer are stored in the order: - * \par - *
- *    {x[n-numTaps+1], x[n-numTaps], x[n-numTaps-1], x[n-numTaps-2]....x[0], x[1], ..., x[blockSize-1]}
- * 
- * \par - * Note that the length of the state buffer exceeds the length of the coefficient array by blockSize-1 samples. - * The increased state buffer length allows circular addressing, which is traditionally used in FIR filters, - * to be avoided and yields a significant speed improvement. - * The state variables are updated after each block of data is processed. - * \par Instance Structure - * The coefficients and state variables for a filter are stored together in an instance data structure. - * A separate instance structure must be defined for each filter and - * coefficient and state arrays cannot be shared among instances. - * There are separate instance structure declarations for each of the 3 supported data types. - * - * \par Initialization Functions - * There is also an associated initialization function for each data type. - * The initialization function performs the following operations: - * - Sets the values of the internal structure fields. - * - Zeros out the values in the state buffer. - * To do this manually without calling the init function, assign the follow subfields of the instance structure: - * numTaps, pCoeffs, mu, postShift (not for f32), pState. Also set all of the values in pState to zero. - * - * \par - * Use of the initialization function is optional. - * However, if the initialization function is used, then the instance structure cannot be placed into a const data section. - * To place an instance structure into a const data section, the instance structure must be manually initialized. - * Set the values in the state buffer to zeros before static initialization. - * The code below statically initializes each of the 3 different data type filter instance structures - *
- *    arm_lms_instance_f32 S = {numTaps, pState, pCoeffs, mu};
- *    arm_lms_instance_q31 S = {numTaps, pState, pCoeffs, mu, postShift};
- *    arm_lms_instance_q15 S = {numTaps, pState, pCoeffs, mu, postShift};
- * 
- * where numTaps is the number of filter coefficients in the filter; pState is the address of the state buffer; - * pCoeffs is the address of the coefficient buffer; mu is the step size parameter; and postShift is the shift applied to coefficients. - * - * \par Fixed-Point Behavior: - * Care must be taken when using the Q15 and Q31 versions of the LMS filter. - * The following issues must be considered: - * - Scaling of coefficients - * - Overflow and saturation - * - * \par Scaling of Coefficients: - * Filter coefficients are represented as fractional values and - * coefficients are restricted to lie in the range [-1 +1). - * The fixed-point functions have an additional scaling parameter postShift. - * At the output of the filter's accumulator is a shift register which shifts the result by postShift bits. - * This essentially scales the filter coefficients by 2^postShift and - * allows the filter coefficients to exceed the range [+1 -1). - * The value of postShift is set by the user based on the expected gain through the system being modeled. - * - * \par Overflow and Saturation: - * Overflow and saturation behavior of the fixed-point Q15 and Q31 versions are - * described separately as part of the function specific documentation below. - */ - -/** - * @addtogroup LMS - * @{ - */ - -/** - * @details - * This function operates on floating-point data types. - * - * @brief Processing function for floating-point LMS filter. - * @param[in] *S points to an instance of the floating-point LMS filter structure. - * @param[in] *pSrc points to the block of input data. - * @param[in] *pRef points to the block of reference data. - * @param[out] *pOut points to the block of output data. - * @param[out] *pErr points to the block of error data. - * @param[in] blockSize number of samples to process. - * @return none. - */ - -void arm_lms_f32( - const arm_lms_instance_f32 * S, - float32_t * pSrc, - float32_t * pRef, - float32_t * pOut, - float32_t * pErr, - uint32_t blockSize) -{ - float32_t *pState = S->pState; /* State pointer */ - float32_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ - float32_t *pStateCurnt; /* Points to the current sample of the state */ - float32_t *px, *pb; /* Temporary pointers for state and coefficient buffers */ - float32_t mu = S->mu; /* Adaptive factor */ - uint32_t numTaps = S->numTaps; /* Number of filter coefficients in the filter */ - uint32_t tapCnt, blkCnt; /* Loop counters */ - float32_t sum, e, d; /* accumulator, error, reference data sample */ - float32_t w = 0.0f; /* weight factor */ - - e = 0.0f; - d = 0.0f; - - /* S->pState points to state array which contains previous frame (numTaps - 1) samples */ - /* pStateCurnt points to the location where the new input data should be written */ - pStateCurnt = &(S->pState[(numTaps - 1U)]); - - blkCnt = blockSize; - - -#if defined (ARM_MATH_DSP) - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - while (blkCnt > 0U) - { - /* Copy the new input sample into the state buffer */ - *pStateCurnt++ = *pSrc++; - - /* Initialize pState pointer */ - px = pState; - - /* Initialize coeff pointer */ - pb = (pCoeffs); - - /* Set the accumulator to zero */ - sum = 0.0f; - - /* Loop unrolling. Process 4 taps at a time. */ - tapCnt = numTaps >> 2; - - while (tapCnt > 0U) - { - /* Perform the multiply-accumulate */ - sum += (*px++) * (*pb++); - sum += (*px++) * (*pb++); - sum += (*px++) * (*pb++); - sum += (*px++) * (*pb++); - - /* Decrement the loop counter */ - tapCnt--; - } - - /* If the filter length is not a multiple of 4, compute the remaining filter taps */ - tapCnt = numTaps % 0x4U; - - while (tapCnt > 0U) - { - /* Perform the multiply-accumulate */ - sum += (*px++) * (*pb++); - - /* Decrement the loop counter */ - tapCnt--; - } - - /* The result in the accumulator, store in the destination buffer. */ - *pOut++ = sum; - - /* Compute and store error */ - d = (float32_t) (*pRef++); - e = d - sum; - *pErr++ = e; - - /* Calculation of Weighting factor for the updating filter coefficients */ - w = e * mu; - - /* Initialize pState pointer */ - px = pState; - - /* Initialize coeff pointer */ - pb = (pCoeffs); - - /* Loop unrolling. Process 4 taps at a time. */ - tapCnt = numTaps >> 2; - - /* Update filter coefficients */ - while (tapCnt > 0U) - { - /* Perform the multiply-accumulate */ - *pb = *pb + (w * (*px++)); - pb++; - - *pb = *pb + (w * (*px++)); - pb++; - - *pb = *pb + (w * (*px++)); - pb++; - - *pb = *pb + (w * (*px++)); - pb++; - - /* Decrement the loop counter */ - tapCnt--; - } - - /* If the filter length is not a multiple of 4, compute the remaining filter taps */ - tapCnt = numTaps % 0x4U; - - while (tapCnt > 0U) - { - /* Perform the multiply-accumulate */ - *pb = *pb + (w * (*px++)); - pb++; - - /* Decrement the loop counter */ - tapCnt--; - } - - /* Advance state pointer by 1 for the next sample */ - pState = pState + 1; - - /* Decrement the loop counter */ - blkCnt--; - } - - - /* Processing is complete. Now copy the last numTaps - 1 samples to the - satrt of the state buffer. This prepares the state buffer for the - next function call. */ - - /* Points to the start of the pState buffer */ - pStateCurnt = S->pState; - - /* Loop unrolling for (numTaps - 1U) samples copy */ - tapCnt = (numTaps - 1U) >> 2U; - - /* copy data */ - while (tapCnt > 0U) - { - *pStateCurnt++ = *pState++; - *pStateCurnt++ = *pState++; - *pStateCurnt++ = *pState++; - *pStateCurnt++ = *pState++; - - /* Decrement the loop counter */ - tapCnt--; - } - - /* Calculate remaining number of copies */ - tapCnt = (numTaps - 1U) % 0x4U; - - /* Copy the remaining q31_t data */ - while (tapCnt > 0U) - { - *pStateCurnt++ = *pState++; - - /* Decrement the loop counter */ - tapCnt--; - } - -#else - - /* Run the below code for Cortex-M0 */ - - while (blkCnt > 0U) - { - /* Copy the new input sample into the state buffer */ - *pStateCurnt++ = *pSrc++; - - /* Initialize pState pointer */ - px = pState; - - /* Initialize pCoeffs pointer */ - pb = pCoeffs; - - /* Set the accumulator to zero */ - sum = 0.0f; - - /* Loop over numTaps number of values */ - tapCnt = numTaps; - - while (tapCnt > 0U) - { - /* Perform the multiply-accumulate */ - sum += (*px++) * (*pb++); - - /* Decrement the loop counter */ - tapCnt--; - } - - /* The result is stored in the destination buffer. */ - *pOut++ = sum; - - /* Compute and store error */ - d = (float32_t) (*pRef++); - e = d - sum; - *pErr++ = e; - - /* Weighting factor for the LMS version */ - w = e * mu; - - /* Initialize pState pointer */ - px = pState; - - /* Initialize pCoeffs pointer */ - pb = pCoeffs; - - /* Loop over numTaps number of values */ - tapCnt = numTaps; - - while (tapCnt > 0U) - { - /* Perform the multiply-accumulate */ - *pb = *pb + (w * (*px++)); - pb++; - - /* Decrement the loop counter */ - tapCnt--; - } - - /* Advance state pointer by 1 for the next sample */ - pState = pState + 1; - - /* Decrement the loop counter */ - blkCnt--; - } - - - /* Processing is complete. Now copy the last numTaps - 1 samples to the - * start of the state buffer. This prepares the state buffer for the - * next function call. */ - - /* Points to the start of the pState buffer */ - pStateCurnt = S->pState; - - /* Copy (numTaps - 1U) samples */ - tapCnt = (numTaps - 1U); - - /* Copy the data */ - while (tapCnt > 0U) - { - *pStateCurnt++ = *pState++; - - /* Decrement the loop counter */ - tapCnt--; - } - -#endif /* #if defined (ARM_MATH_DSP) */ - -} - -/** - * @} end of LMS group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_init_f32.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_init_f32.c deleted file mode 100644 index 9fc87f1..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_init_f32.c +++ /dev/null @@ -1,83 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_lms_init_f32.c - * Description: Floating-point LMS filter initialization function - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @addtogroup LMS - * @{ - */ - - /** - * @brief Initialization function for floating-point LMS filter. - * @param[in] *S points to an instance of the floating-point LMS filter structure. - * @param[in] numTaps number of filter coefficients. - * @param[in] *pCoeffs points to the coefficient buffer. - * @param[in] *pState points to state buffer. - * @param[in] mu step size that controls filter coefficient updates. - * @param[in] blockSize number of samples to process. - * @return none. - */ - -/** - * \par Description: - * pCoeffs points to the array of filter coefficients stored in time reversed order: - *
- *    {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}
- * 
- * The initial filter coefficients serve as a starting point for the adaptive filter. - * pState points to an array of length numTaps+blockSize-1 samples, where blockSize is the number of input samples processed by each call to arm_lms_f32(). - */ - -void arm_lms_init_f32( - arm_lms_instance_f32 * S, - uint16_t numTaps, - float32_t * pCoeffs, - float32_t * pState, - float32_t mu, - uint32_t blockSize) -{ - /* Assign filter taps */ - S->numTaps = numTaps; - - /* Assign coefficient pointer */ - S->pCoeffs = pCoeffs; - - /* Clear state buffer and size is always blockSize + numTaps */ - memset(pState, 0, (numTaps + (blockSize - 1)) * sizeof(float32_t)); - - /* Assign state pointer */ - S->pState = pState; - - /* Assign Step size value */ - S->mu = mu; -} - -/** - * @} end of LMS group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_init_q15.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_init_q15.c deleted file mode 100644 index 3a13f26..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_init_q15.c +++ /dev/null @@ -1,93 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_lms_init_q15.c - * Description: Q15 LMS filter initialization function - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupFilters - */ - -/** - * @addtogroup LMS - * @{ - */ - -/** -* @brief Initialization function for the Q15 LMS filter. -* @param[in] *S points to an instance of the Q15 LMS filter structure. -* @param[in] numTaps number of filter coefficients. -* @param[in] *pCoeffs points to the coefficient buffer. -* @param[in] *pState points to the state buffer. -* @param[in] mu step size that controls filter coefficient updates. -* @param[in] blockSize number of samples to process. -* @param[in] postShift bit shift applied to coefficients. -* @return none. -* -* \par Description: -* pCoeffs points to the array of filter coefficients stored in time reversed order: -*
-*    {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}
-* 
-* The initial filter coefficients serve as a starting point for the adaptive filter. -* pState points to the array of state variables and size of array is -* numTaps+blockSize-1 samples, where blockSize is the number of -* input samples processed by each call to arm_lms_q15(). -*/ - -void arm_lms_init_q15( - arm_lms_instance_q15 * S, - uint16_t numTaps, - q15_t * pCoeffs, - q15_t * pState, - q15_t mu, - uint32_t blockSize, - uint32_t postShift) -{ - /* Assign filter taps */ - S->numTaps = numTaps; - - /* Assign coefficient pointer */ - S->pCoeffs = pCoeffs; - - /* Clear state buffer and size is always blockSize + numTaps - 1 */ - memset(pState, 0, (numTaps + (blockSize - 1U)) * sizeof(q15_t)); - - /* Assign state pointer */ - S->pState = pState; - - /* Assign Step size value */ - S->mu = mu; - - /* Assign postShift value to be applied */ - S->postShift = postShift; - -} - -/** - * @} end of LMS group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_init_q31.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_init_q31.c deleted file mode 100644 index 5859c84..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_init_q31.c +++ /dev/null @@ -1,93 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_lms_init_q31.c - * Description: Q31 LMS filter initialization function - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupFilters - */ - -/** - * @addtogroup LMS - * @{ - */ - - /** - * @brief Initialization function for Q31 LMS filter. - * @param[in] *S points to an instance of the Q31 LMS filter structure. - * @param[in] numTaps number of filter coefficients. - * @param[in] *pCoeffs points to coefficient buffer. - * @param[in] *pState points to state buffer. - * @param[in] mu step size that controls filter coefficient updates. - * @param[in] blockSize number of samples to process. - * @param[in] postShift bit shift applied to coefficients. - * @return none. - * - * \par Description: - * pCoeffs points to the array of filter coefficients stored in time reversed order: - *
- *    {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}
- * 
- * The initial filter coefficients serve as a starting point for the adaptive filter. - * pState points to an array of length numTaps+blockSize-1 samples, - * where blockSize is the number of input samples processed by each call to - * arm_lms_q31(). - */ - -void arm_lms_init_q31( - arm_lms_instance_q31 * S, - uint16_t numTaps, - q31_t * pCoeffs, - q31_t * pState, - q31_t mu, - uint32_t blockSize, - uint32_t postShift) -{ - /* Assign filter taps */ - S->numTaps = numTaps; - - /* Assign coefficient pointer */ - S->pCoeffs = pCoeffs; - - /* Clear state buffer and size is always blockSize + numTaps - 1 */ - memset(pState, 0, ((uint32_t) numTaps + (blockSize - 1U)) * sizeof(q31_t)); - - /* Assign state pointer */ - S->pState = pState; - - /* Assign Step size value */ - S->mu = mu; - - /* Assign postShift value to be applied */ - S->postShift = postShift; - -} - -/** - * @} end of LMS group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_norm_f32.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_norm_f32.c deleted file mode 100644 index 3fdc5a1..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_norm_f32.c +++ /dev/null @@ -1,454 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_lms_norm_f32.c - * Description: Processing function for the floating-point Normalised LMS - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupFilters - */ - -/** - * @defgroup LMS_NORM Normalized LMS Filters - * - * This set of functions implements a commonly used adaptive filter. - * It is related to the Least Mean Square (LMS) adaptive filter and includes an additional normalization - * factor which increases the adaptation rate of the filter. - * The CMSIS DSP Library contains normalized LMS filter functions that operate on Q15, Q31, and floating-point data types. - * - * A normalized least mean square (NLMS) filter consists of two components as shown below. - * The first component is a standard transversal or FIR filter. - * The second component is a coefficient update mechanism. - * The NLMS filter has two input signals. - * The "input" feeds the FIR filter while the "reference input" corresponds to the desired output of the FIR filter. - * That is, the FIR filter coefficients are updated so that the output of the FIR filter matches the reference input. - * The filter coefficient update mechanism is based on the difference between the FIR filter output and the reference input. - * This "error signal" tends towards zero as the filter adapts. - * The NLMS processing functions accept the input and reference input signals and generate the filter output and error signal. - * \image html LMS.gif "Internal structure of the NLMS adaptive filter" - * - * The functions operate on blocks of data and each call to the function processes - * blockSize samples through the filter. - * pSrc points to input signal, pRef points to reference signal, - * pOut points to output signal and pErr points to error signal. - * All arrays contain blockSize values. - * - * The functions operate on a block-by-block basis. - * Internally, the filter coefficients b[n] are updated on a sample-by-sample basis. - * The convergence of the LMS filter is slower compared to the normalized LMS algorithm. - * - * \par Algorithm: - * The output signal y[n] is computed by a standard FIR filter: - *
- *     y[n] = b[0] * x[n] + b[1] * x[n-1] + b[2] * x[n-2] + ...+ b[numTaps-1] * x[n-numTaps+1]
- * 
- * - * \par - * The error signal equals the difference between the reference signal d[n] and the filter output: - *
- *     e[n] = d[n] - y[n].
- * 
- * - * \par - * After each sample of the error signal is computed the instanteous energy of the filter state variables is calculated: - *
- *    E = x[n]^2 + x[n-1]^2 + ... + x[n-numTaps+1]^2.
- * 
- * The filter coefficients b[k] are then updated on a sample-by-sample basis: - *
- *     b[k] = b[k] + e[n] * (mu/E) * x[n-k],  for k=0, 1, ..., numTaps-1
- * 
- * where mu is the step size and controls the rate of coefficient convergence. - *\par - * In the APIs, pCoeffs points to a coefficient array of size numTaps. - * Coefficients are stored in time reversed order. - * \par - *
- *    {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}
- * 
- * \par - * pState points to a state array of size numTaps + blockSize - 1. - * Samples in the state buffer are stored in the order: - * \par - *
- *    {x[n-numTaps+1], x[n-numTaps], x[n-numTaps-1], x[n-numTaps-2]....x[0], x[1], ..., x[blockSize-1]}
- * 
- * \par - * Note that the length of the state buffer exceeds the length of the coefficient array by blockSize-1 samples. - * The increased state buffer length allows circular addressing, which is traditionally used in FIR filters, - * to be avoided and yields a significant speed improvement. - * The state variables are updated after each block of data is processed. - * \par Instance Structure - * The coefficients and state variables for a filter are stored together in an instance data structure. - * A separate instance structure must be defined for each filter and - * coefficient and state arrays cannot be shared among instances. - * There are separate instance structure declarations for each of the 3 supported data types. - * - * \par Initialization Functions - * There is also an associated initialization function for each data type. - * The initialization function performs the following operations: - * - Sets the values of the internal structure fields. - * - Zeros out the values in the state buffer. - * To do this manually without calling the init function, assign the follow subfields of the instance structure: - * numTaps, pCoeffs, mu, energy, x0, pState. Also set all of the values in pState to zero. - * For Q7, Q15, and Q31 the following fields must also be initialized; - * recipTable, postShift - * - * \par - * Instance structure cannot be placed into a const data section and it is recommended to use the initialization function. - * \par Fixed-Point Behavior: - * Care must be taken when using the Q15 and Q31 versions of the normalised LMS filter. - * The following issues must be considered: - * - Scaling of coefficients - * - Overflow and saturation - * - * \par Scaling of Coefficients: - * Filter coefficients are represented as fractional values and - * coefficients are restricted to lie in the range [-1 +1). - * The fixed-point functions have an additional scaling parameter postShift. - * At the output of the filter's accumulator is a shift register which shifts the result by postShift bits. - * This essentially scales the filter coefficients by 2^postShift and - * allows the filter coefficients to exceed the range [+1 -1). - * The value of postShift is set by the user based on the expected gain through the system being modeled. - * - * \par Overflow and Saturation: - * Overflow and saturation behavior of the fixed-point Q15 and Q31 versions are - * described separately as part of the function specific documentation below. - */ - - -/** - * @addtogroup LMS_NORM - * @{ - */ - - - /** - * @brief Processing function for floating-point normalized LMS filter. - * @param[in] *S points to an instance of the floating-point normalized LMS filter structure. - * @param[in] *pSrc points to the block of input data. - * @param[in] *pRef points to the block of reference data. - * @param[out] *pOut points to the block of output data. - * @param[out] *pErr points to the block of error data. - * @param[in] blockSize number of samples to process. - * @return none. - */ - -void arm_lms_norm_f32( - arm_lms_norm_instance_f32 * S, - float32_t * pSrc, - float32_t * pRef, - float32_t * pOut, - float32_t * pErr, - uint32_t blockSize) -{ - float32_t *pState = S->pState; /* State pointer */ - float32_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ - float32_t *pStateCurnt; /* Points to the current sample of the state */ - float32_t *px, *pb; /* Temporary pointers for state and coefficient buffers */ - float32_t mu = S->mu; /* Adaptive factor */ - uint32_t numTaps = S->numTaps; /* Number of filter coefficients in the filter */ - uint32_t tapCnt, blkCnt; /* Loop counters */ - float32_t energy; /* Energy of the input */ - float32_t sum, e, d; /* accumulator, error, reference data sample */ - float32_t w, x0, in; /* weight factor, temporary variable to hold input sample and state */ - - /* Initializations of error, difference, Coefficient update */ - e = 0.0f; - d = 0.0f; - w = 0.0f; - - energy = S->energy; - x0 = S->x0; - - /* S->pState points to buffer which contains previous frame (numTaps - 1) samples */ - /* pStateCurnt points to the location where the new input data should be written */ - pStateCurnt = &(S->pState[(numTaps - 1U)]); - - /* Loop over blockSize number of values */ - blkCnt = blockSize; - - -#if defined (ARM_MATH_DSP) - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - while (blkCnt > 0U) - { - /* Copy the new input sample into the state buffer */ - *pStateCurnt++ = *pSrc; - - /* Initialize pState pointer */ - px = pState; - - /* Initialize coeff pointer */ - pb = (pCoeffs); - - /* Read the sample from input buffer */ - in = *pSrc++; - - /* Update the energy calculation */ - energy -= x0 * x0; - energy += in * in; - - /* Set the accumulator to zero */ - sum = 0.0f; - - /* Loop unrolling. Process 4 taps at a time. */ - tapCnt = numTaps >> 2; - - while (tapCnt > 0U) - { - /* Perform the multiply-accumulate */ - sum += (*px++) * (*pb++); - sum += (*px++) * (*pb++); - sum += (*px++) * (*pb++); - sum += (*px++) * (*pb++); - - /* Decrement the loop counter */ - tapCnt--; - } - - /* If the filter length is not a multiple of 4, compute the remaining filter taps */ - tapCnt = numTaps % 0x4U; - - while (tapCnt > 0U) - { - /* Perform the multiply-accumulate */ - sum += (*px++) * (*pb++); - - /* Decrement the loop counter */ - tapCnt--; - } - - /* The result in the accumulator, store in the destination buffer. */ - *pOut++ = sum; - - /* Compute and store error */ - d = (float32_t) (*pRef++); - e = d - sum; - *pErr++ = e; - - /* Calculation of Weighting factor for updating filter coefficients */ - /* epsilon value 0.000000119209289f */ - w = (e * mu) / (energy + 0.000000119209289f); - - /* Initialize pState pointer */ - px = pState; - - /* Initialize coeff pointer */ - pb = (pCoeffs); - - /* Loop unrolling. Process 4 taps at a time. */ - tapCnt = numTaps >> 2; - - /* Update filter coefficients */ - while (tapCnt > 0U) - { - /* Perform the multiply-accumulate */ - *pb += w * (*px++); - pb++; - - *pb += w * (*px++); - pb++; - - *pb += w * (*px++); - pb++; - - *pb += w * (*px++); - pb++; - - - /* Decrement the loop counter */ - tapCnt--; - } - - /* If the filter length is not a multiple of 4, compute the remaining filter taps */ - tapCnt = numTaps % 0x4U; - - while (tapCnt > 0U) - { - /* Perform the multiply-accumulate */ - *pb += w * (*px++); - pb++; - - /* Decrement the loop counter */ - tapCnt--; - } - - x0 = *pState; - - /* Advance state pointer by 1 for the next sample */ - pState = pState + 1; - - /* Decrement the loop counter */ - blkCnt--; - } - - S->energy = energy; - S->x0 = x0; - - /* Processing is complete. Now copy the last numTaps - 1 samples to the - satrt of the state buffer. This prepares the state buffer for the - next function call. */ - - /* Points to the start of the pState buffer */ - pStateCurnt = S->pState; - - /* Loop unrolling for (numTaps - 1U)/4 samples copy */ - tapCnt = (numTaps - 1U) >> 2U; - - /* copy data */ - while (tapCnt > 0U) - { - *pStateCurnt++ = *pState++; - *pStateCurnt++ = *pState++; - *pStateCurnt++ = *pState++; - *pStateCurnt++ = *pState++; - - /* Decrement the loop counter */ - tapCnt--; - } - - /* Calculate remaining number of copies */ - tapCnt = (numTaps - 1U) % 0x4U; - - /* Copy the remaining q31_t data */ - while (tapCnt > 0U) - { - *pStateCurnt++ = *pState++; - - /* Decrement the loop counter */ - tapCnt--; - } - -#else - - /* Run the below code for Cortex-M0 */ - - while (blkCnt > 0U) - { - /* Copy the new input sample into the state buffer */ - *pStateCurnt++ = *pSrc; - - /* Initialize pState pointer */ - px = pState; - - /* Initialize pCoeffs pointer */ - pb = pCoeffs; - - /* Read the sample from input buffer */ - in = *pSrc++; - - /* Update the energy calculation */ - energy -= x0 * x0; - energy += in * in; - - /* Set the accumulator to zero */ - sum = 0.0f; - - /* Loop over numTaps number of values */ - tapCnt = numTaps; - - while (tapCnt > 0U) - { - /* Perform the multiply-accumulate */ - sum += (*px++) * (*pb++); - - /* Decrement the loop counter */ - tapCnt--; - } - - /* The result in the accumulator is stored in the destination buffer. */ - *pOut++ = sum; - - /* Compute and store error */ - d = (float32_t) (*pRef++); - e = d - sum; - *pErr++ = e; - - /* Calculation of Weighting factor for updating filter coefficients */ - /* epsilon value 0.000000119209289f */ - w = (e * mu) / (energy + 0.000000119209289f); - - /* Initialize pState pointer */ - px = pState; - - /* Initialize pCcoeffs pointer */ - pb = pCoeffs; - - /* Loop over numTaps number of values */ - tapCnt = numTaps; - - while (tapCnt > 0U) - { - /* Perform the multiply-accumulate */ - *pb += w * (*px++); - pb++; - - /* Decrement the loop counter */ - tapCnt--; - } - - x0 = *pState; - - /* Advance state pointer by 1 for the next sample */ - pState = pState + 1; - - /* Decrement the loop counter */ - blkCnt--; - } - - S->energy = energy; - S->x0 = x0; - - /* Processing is complete. Now copy the last numTaps - 1 samples to the - satrt of the state buffer. This prepares the state buffer for the - next function call. */ - - /* Points to the start of the pState buffer */ - pStateCurnt = S->pState; - - /* Copy (numTaps - 1U) samples */ - tapCnt = (numTaps - 1U); - - /* Copy the remaining q31_t data */ - while (tapCnt > 0U) - { - *pStateCurnt++ = *pState++; - - /* Decrement the loop counter */ - tapCnt--; - } - -#endif /* #if defined (ARM_MATH_DSP) */ - -} - -/** - * @} end of LMS_NORM group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_norm_init_f32.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_norm_init_f32.c deleted file mode 100644 index 820c5c8..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_norm_init_f32.c +++ /dev/null @@ -1,93 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_lms_norm_init_f32.c - * Description: Floating-point NLMS filter initialization function - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupFilters - */ - -/** - * @addtogroup LMS_NORM - * @{ - */ - - /** - * @brief Initialization function for floating-point normalized LMS filter. - * @param[in] *S points to an instance of the floating-point LMS filter structure. - * @param[in] numTaps number of filter coefficients. - * @param[in] *pCoeffs points to coefficient buffer. - * @param[in] *pState points to state buffer. - * @param[in] mu step size that controls filter coefficient updates. - * @param[in] blockSize number of samples to process. - * @return none. - * - * \par Description: - * pCoeffs points to the array of filter coefficients stored in time reversed order: - *
- *    {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}
- * 
- * The initial filter coefficients serve as a starting point for the adaptive filter. - * pState points to an array of length numTaps+blockSize-1 samples, - * where blockSize is the number of input samples processed by each call to arm_lms_norm_f32(). - */ - -void arm_lms_norm_init_f32( - arm_lms_norm_instance_f32 * S, - uint16_t numTaps, - float32_t * pCoeffs, - float32_t * pState, - float32_t mu, - uint32_t blockSize) -{ - /* Assign filter taps */ - S->numTaps = numTaps; - - /* Assign coefficient pointer */ - S->pCoeffs = pCoeffs; - - /* Clear state buffer and size is always blockSize + numTaps - 1 */ - memset(pState, 0, (numTaps + (blockSize - 1U)) * sizeof(float32_t)); - - /* Assign state pointer */ - S->pState = pState; - - /* Assign Step size value */ - S->mu = mu; - - /* Initialise Energy to zero */ - S->energy = 0.0f; - - /* Initialise x0 to zero */ - S->x0 = 0.0f; - -} - -/** - * @} end of LMS_NORM group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_norm_init_q15.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_norm_init_q15.c deleted file mode 100644 index 4bedbd9..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_norm_init_q15.c +++ /dev/null @@ -1,100 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_lms_norm_init_q15.c - * Description: Q15 NLMS initialization function - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" -#include "arm_common_tables.h" - -/** - * @addtogroup LMS_NORM - * @{ - */ - - /** - * @brief Initialization function for Q15 normalized LMS filter. - * @param[in] *S points to an instance of the Q15 normalized LMS filter structure. - * @param[in] numTaps number of filter coefficients. - * @param[in] *pCoeffs points to coefficient buffer. - * @param[in] *pState points to state buffer. - * @param[in] mu step size that controls filter coefficient updates. - * @param[in] blockSize number of samples to process. - * @param[in] postShift bit shift applied to coefficients. - * @return none. - * - * Description: - * \par - * pCoeffs points to the array of filter coefficients stored in time reversed order: - *
- *    {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}
- * 
- * The initial filter coefficients serve as a starting point for the adaptive filter. - * pState points to the array of state variables and size of array is - * numTaps+blockSize-1 samples, where blockSize is the number of input samples processed - * by each call to arm_lms_norm_q15(). - */ - -void arm_lms_norm_init_q15( - arm_lms_norm_instance_q15 * S, - uint16_t numTaps, - q15_t * pCoeffs, - q15_t * pState, - q15_t mu, - uint32_t blockSize, - uint8_t postShift) -{ - /* Assign filter taps */ - S->numTaps = numTaps; - - /* Assign coefficient pointer */ - S->pCoeffs = pCoeffs; - - /* Clear state buffer and size is always blockSize + numTaps - 1 */ - memset(pState, 0, (numTaps + (blockSize - 1U)) * sizeof(q15_t)); - - /* Assign post Shift value applied to coefficients */ - S->postShift = postShift; - - /* Assign state pointer */ - S->pState = pState; - - /* Assign Step size value */ - S->mu = mu; - - /* Initialize reciprocal pointer table */ - S->recipTable = (q15_t *) armRecipTableQ15; - - /* Initialise Energy to zero */ - S->energy = 0; - - /* Initialise x0 to zero */ - S->x0 = 0; - -} - -/** - * @} end of LMS_NORM group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_norm_init_q31.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_norm_init_q31.c deleted file mode 100644 index a2402d1..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_norm_init_q31.c +++ /dev/null @@ -1,99 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_lms_norm_init_q31.c - * Description: Q31 NLMS initialization function - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" -#include "arm_common_tables.h" - -/** - * @addtogroup LMS_NORM - * @{ - */ - - /** - * @brief Initialization function for Q31 normalized LMS filter. - * @param[in] *S points to an instance of the Q31 normalized LMS filter structure. - * @param[in] numTaps number of filter coefficients. - * @param[in] *pCoeffs points to coefficient buffer. - * @param[in] *pState points to state buffer. - * @param[in] mu step size that controls filter coefficient updates. - * @param[in] blockSize number of samples to process. - * @param[in] postShift bit shift applied to coefficients. - * @return none. - * - * Description: - * \par - * pCoeffs points to the array of filter coefficients stored in time reversed order: - *
- *    {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}
- * 
- * The initial filter coefficients serve as a starting point for the adaptive filter. - * pState points to an array of length numTaps+blockSize-1 samples, - * where blockSize is the number of input samples processed by each call to arm_lms_norm_q31(). - */ - -void arm_lms_norm_init_q31( - arm_lms_norm_instance_q31 * S, - uint16_t numTaps, - q31_t * pCoeffs, - q31_t * pState, - q31_t mu, - uint32_t blockSize, - uint8_t postShift) -{ - /* Assign filter taps */ - S->numTaps = numTaps; - - /* Assign coefficient pointer */ - S->pCoeffs = pCoeffs; - - /* Clear state buffer and size is always blockSize + numTaps - 1 */ - memset(pState, 0, (numTaps + (blockSize - 1U)) * sizeof(q31_t)); - - /* Assign post Shift value applied to coefficients */ - S->postShift = postShift; - - /* Assign state pointer */ - S->pState = pState; - - /* Assign Step size value */ - S->mu = mu; - - /* Initialize reciprocal pointer table */ - S->recipTable = (q31_t *) armRecipTableQ31; - - /* Initialise Energy to zero */ - S->energy = 0; - - /* Initialise x0 to zero */ - S->x0 = 0; - -} - -/** - * @} end of LMS_NORM group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_norm_q15.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_norm_q15.c deleted file mode 100644 index 70012ea..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_norm_q15.c +++ /dev/null @@ -1,428 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_lms_norm_q15.c - * Description: Q15 NLMS filter - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupFilters - */ - -/** - * @addtogroup LMS_NORM - * @{ - */ - -/** -* @brief Processing function for Q15 normalized LMS filter. -* @param[in] *S points to an instance of the Q15 normalized LMS filter structure. -* @param[in] *pSrc points to the block of input data. -* @param[in] *pRef points to the block of reference data. -* @param[out] *pOut points to the block of output data. -* @param[out] *pErr points to the block of error data. -* @param[in] blockSize number of samples to process. -* @return none. -* -* Scaling and Overflow Behavior: -* \par -* The function is implemented using a 64-bit internal accumulator. -* Both coefficients and state variables are represented in 1.15 format and -* multiplications yield a 2.30 result. The 2.30 intermediate results are -* accumulated in a 64-bit accumulator in 34.30 format. -* There is no risk of internal overflow with this approach and the full -* precision of intermediate multiplications is preserved. After all additions -* have been performed, the accumulator is truncated to 34.15 format by -* discarding low 15 bits. Lastly, the accumulator is saturated to yield a -* result in 1.15 format. -* -* \par -* In this filter, filter coefficients are updated for each sample and the updation of filter cofficients are saturted. -* - */ - -void arm_lms_norm_q15( - arm_lms_norm_instance_q15 * S, - q15_t * pSrc, - q15_t * pRef, - q15_t * pOut, - q15_t * pErr, - uint32_t blockSize) -{ - q15_t *pState = S->pState; /* State pointer */ - q15_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ - q15_t *pStateCurnt; /* Points to the current sample of the state */ - q15_t *px, *pb; /* Temporary pointers for state and coefficient buffers */ - q15_t mu = S->mu; /* Adaptive factor */ - uint32_t numTaps = S->numTaps; /* Number of filter coefficients in the filter */ - uint32_t tapCnt, blkCnt; /* Loop counters */ - q31_t energy; /* Energy of the input */ - q63_t acc; /* Accumulator */ - q15_t e = 0, d = 0; /* error, reference data sample */ - q15_t w = 0, in; /* weight factor and state */ - q15_t x0; /* temporary variable to hold input sample */ - //uint32_t shift = (uint32_t) S->postShift + 1U; /* Shift to be applied to the output */ - q15_t errorXmu, oneByEnergy; /* Temporary variables to store error and mu product and reciprocal of energy */ - q15_t postShift; /* Post shift to be applied to weight after reciprocal calculation */ - q31_t coef; /* Teporary variable for coefficient */ - q31_t acc_l, acc_h; - int32_t lShift = (15 - (int32_t) S->postShift); /* Post shift */ - int32_t uShift = (32 - lShift); - - energy = S->energy; - x0 = S->x0; - - /* S->pState points to buffer which contains previous frame (numTaps - 1) samples */ - /* pStateCurnt points to the location where the new input data should be written */ - pStateCurnt = &(S->pState[(numTaps - 1U)]); - - /* Loop over blockSize number of values */ - blkCnt = blockSize; - - -#if defined (ARM_MATH_DSP) - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - while (blkCnt > 0U) - { - /* Copy the new input sample into the state buffer */ - *pStateCurnt++ = *pSrc; - - /* Initialize pState pointer */ - px = pState; - - /* Initialize coeff pointer */ - pb = (pCoeffs); - - /* Read the sample from input buffer */ - in = *pSrc++; - - /* Update the energy calculation */ - energy -= (((q31_t) x0 * (x0)) >> 15); - energy += (((q31_t) in * (in)) >> 15); - - /* Set the accumulator to zero */ - acc = 0; - - /* Loop unrolling. Process 4 taps at a time. */ - tapCnt = numTaps >> 2; - - while (tapCnt > 0U) - { - - /* Perform the multiply-accumulate */ -#ifndef UNALIGNED_SUPPORT_DISABLE - - acc = __SMLALD(*__SIMD32(px)++, (*__SIMD32(pb)++), acc); - acc = __SMLALD(*__SIMD32(px)++, (*__SIMD32(pb)++), acc); - -#else - - acc += (((q31_t) * px++ * (*pb++))); - acc += (((q31_t) * px++ * (*pb++))); - acc += (((q31_t) * px++ * (*pb++))); - acc += (((q31_t) * px++ * (*pb++))); - -#endif /* #ifndef UNALIGNED_SUPPORT_DISABLE */ - - /* Decrement the loop counter */ - tapCnt--; - } - - /* If the filter length is not a multiple of 4, compute the remaining filter taps */ - tapCnt = numTaps % 0x4U; - - while (tapCnt > 0U) - { - /* Perform the multiply-accumulate */ - acc += (((q31_t) * px++ * (*pb++))); - - /* Decrement the loop counter */ - tapCnt--; - } - - /* Calc lower part of acc */ - acc_l = acc & 0xffffffff; - - /* Calc upper part of acc */ - acc_h = (acc >> 32) & 0xffffffff; - - /* Apply shift for lower part of acc and upper part of acc */ - acc = (uint32_t) acc_l >> lShift | acc_h << uShift; - - /* Converting the result to 1.15 format and saturate the output */ - acc = __SSAT(acc, 16U); - - /* Store the result from accumulator into the destination buffer. */ - *pOut++ = (q15_t) acc; - - /* Compute and store error */ - d = *pRef++; - e = d - (q15_t) acc; - *pErr++ = e; - - /* Calculation of 1/energy */ - postShift = arm_recip_q15((q15_t) energy + DELTA_Q15, - &oneByEnergy, S->recipTable); - - /* Calculation of e * mu value */ - errorXmu = (q15_t) (((q31_t) e * mu) >> 15); - - /* Calculation of (e * mu) * (1/energy) value */ - acc = (((q31_t) errorXmu * oneByEnergy) >> (15 - postShift)); - - /* Weighting factor for the normalized version */ - w = (q15_t) __SSAT((q31_t) acc, 16); - - /* Initialize pState pointer */ - px = pState; - - /* Initialize coeff pointer */ - pb = (pCoeffs); - - /* Loop unrolling. Process 4 taps at a time. */ - tapCnt = numTaps >> 2; - - /* Update filter coefficients */ - while (tapCnt > 0U) - { - coef = *pb + (((q31_t) w * (*px++)) >> 15); - *pb++ = (q15_t) __SSAT((coef), 16); - coef = *pb + (((q31_t) w * (*px++)) >> 15); - *pb++ = (q15_t) __SSAT((coef), 16); - coef = *pb + (((q31_t) w * (*px++)) >> 15); - *pb++ = (q15_t) __SSAT((coef), 16); - coef = *pb + (((q31_t) w * (*px++)) >> 15); - *pb++ = (q15_t) __SSAT((coef), 16); - - /* Decrement the loop counter */ - tapCnt--; - } - - /* If the filter length is not a multiple of 4, compute the remaining filter taps */ - tapCnt = numTaps % 0x4U; - - while (tapCnt > 0U) - { - /* Perform the multiply-accumulate */ - coef = *pb + (((q31_t) w * (*px++)) >> 15); - *pb++ = (q15_t) __SSAT((coef), 16); - - /* Decrement the loop counter */ - tapCnt--; - } - - /* Read the sample from state buffer */ - x0 = *pState; - - /* Advance state pointer by 1 for the next sample */ - pState = pState + 1U; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* Save energy and x0 values for the next frame */ - S->energy = (q15_t) energy; - S->x0 = x0; - - /* Processing is complete. Now copy the last numTaps - 1 samples to the - satrt of the state buffer. This prepares the state buffer for the - next function call. */ - - /* Points to the start of the pState buffer */ - pStateCurnt = S->pState; - - /* Calculation of count for copying integer writes */ - tapCnt = (numTaps - 1U) >> 2; - - while (tapCnt > 0U) - { - -#ifndef UNALIGNED_SUPPORT_DISABLE - - *__SIMD32(pStateCurnt)++ = *__SIMD32(pState)++; - *__SIMD32(pStateCurnt)++ = *__SIMD32(pState)++; - -#else - - *pStateCurnt++ = *pState++; - *pStateCurnt++ = *pState++; - *pStateCurnt++ = *pState++; - *pStateCurnt++ = *pState++; - -#endif - - tapCnt--; - - } - - /* Calculation of count for remaining q15_t data */ - tapCnt = (numTaps - 1U) % 0x4U; - - /* copy data */ - while (tapCnt > 0U) - { - *pStateCurnt++ = *pState++; - - /* Decrement the loop counter */ - tapCnt--; - } - -#else - - /* Run the below code for Cortex-M0 */ - - while (blkCnt > 0U) - { - /* Copy the new input sample into the state buffer */ - *pStateCurnt++ = *pSrc; - - /* Initialize pState pointer */ - px = pState; - - /* Initialize pCoeffs pointer */ - pb = pCoeffs; - - /* Read the sample from input buffer */ - in = *pSrc++; - - /* Update the energy calculation */ - energy -= (((q31_t) x0 * (x0)) >> 15); - energy += (((q31_t) in * (in)) >> 15); - - /* Set the accumulator to zero */ - acc = 0; - - /* Loop over numTaps number of values */ - tapCnt = numTaps; - - while (tapCnt > 0U) - { - /* Perform the multiply-accumulate */ - acc += (((q31_t) * px++ * (*pb++))); - - /* Decrement the loop counter */ - tapCnt--; - } - - /* Calc lower part of acc */ - acc_l = acc & 0xffffffff; - - /* Calc upper part of acc */ - acc_h = (acc >> 32) & 0xffffffff; - - /* Apply shift for lower part of acc and upper part of acc */ - acc = (uint32_t) acc_l >> lShift | acc_h << uShift; - - /* Converting the result to 1.15 format and saturate the output */ - acc = __SSAT(acc, 16U); - - /* Converting the result to 1.15 format */ - //acc = __SSAT((acc >> (16U - shift)), 16U); - - /* Store the result from accumulator into the destination buffer. */ - *pOut++ = (q15_t) acc; - - /* Compute and store error */ - d = *pRef++; - e = d - (q15_t) acc; - *pErr++ = e; - - /* Calculation of 1/energy */ - postShift = arm_recip_q15((q15_t) energy + DELTA_Q15, - &oneByEnergy, S->recipTable); - - /* Calculation of e * mu value */ - errorXmu = (q15_t) (((q31_t) e * mu) >> 15); - - /* Calculation of (e * mu) * (1/energy) value */ - acc = (((q31_t) errorXmu * oneByEnergy) >> (15 - postShift)); - - /* Weighting factor for the normalized version */ - w = (q15_t) __SSAT((q31_t) acc, 16); - - /* Initialize pState pointer */ - px = pState; - - /* Initialize coeff pointer */ - pb = (pCoeffs); - - /* Loop over numTaps number of values */ - tapCnt = numTaps; - - while (tapCnt > 0U) - { - /* Perform the multiply-accumulate */ - coef = *pb + (((q31_t) w * (*px++)) >> 15); - *pb++ = (q15_t) __SSAT((coef), 16); - - /* Decrement the loop counter */ - tapCnt--; - } - - /* Read the sample from state buffer */ - x0 = *pState; - - /* Advance state pointer by 1 for the next sample */ - pState = pState + 1U; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* Save energy and x0 values for the next frame */ - S->energy = (q15_t) energy; - S->x0 = x0; - - /* Processing is complete. Now copy the last numTaps - 1 samples to the - satrt of the state buffer. This prepares the state buffer for the - next function call. */ - - /* Points to the start of the pState buffer */ - pStateCurnt = S->pState; - - /* copy (numTaps - 1U) data */ - tapCnt = (numTaps - 1U); - - /* copy data */ - while (tapCnt > 0U) - { - *pStateCurnt++ = *pState++; - - /* Decrement the loop counter */ - tapCnt--; - } - -#endif /* #if defined (ARM_MATH_DSP) */ - -} - - -/** - * @} end of LMS_NORM group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_norm_q31.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_norm_q31.c deleted file mode 100644 index 9711738..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_norm_q31.c +++ /dev/null @@ -1,419 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_lms_norm_q31.c - * Description: Processing function for the Q31 NLMS filter - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupFilters - */ - -/** - * @addtogroup LMS_NORM - * @{ - */ - -/** -* @brief Processing function for Q31 normalized LMS filter. -* @param[in] *S points to an instance of the Q31 normalized LMS filter structure. -* @param[in] *pSrc points to the block of input data. -* @param[in] *pRef points to the block of reference data. -* @param[out] *pOut points to the block of output data. -* @param[out] *pErr points to the block of error data. -* @param[in] blockSize number of samples to process. -* @return none. -* -* Scaling and Overflow Behavior: -* \par -* The function is implemented using an internal 64-bit accumulator. -* The accumulator has a 2.62 format and maintains full precision of the intermediate -* multiplication results but provides only a single guard bit. -* Thus, if the accumulator result overflows it wraps around rather than clip. -* In order to avoid overflows completely the input signal must be scaled down by -* log2(numTaps) bits. The reference signal should not be scaled down. -* After all multiply-accumulates are performed, the 2.62 accumulator is shifted -* and saturated to 1.31 format to yield the final result. -* The output signal and error signal are in 1.31 format. -* -* \par -* In this filter, filter coefficients are updated for each sample and the -* updation of filter cofficients are saturted. -* -*/ - -void arm_lms_norm_q31( - arm_lms_norm_instance_q31 * S, - q31_t * pSrc, - q31_t * pRef, - q31_t * pOut, - q31_t * pErr, - uint32_t blockSize) -{ - q31_t *pState = S->pState; /* State pointer */ - q31_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ - q31_t *pStateCurnt; /* Points to the current sample of the state */ - q31_t *px, *pb; /* Temporary pointers for state and coefficient buffers */ - q31_t mu = S->mu; /* Adaptive factor */ - uint32_t numTaps = S->numTaps; /* Number of filter coefficients in the filter */ - uint32_t tapCnt, blkCnt; /* Loop counters */ - q63_t energy; /* Energy of the input */ - q63_t acc; /* Accumulator */ - q31_t e = 0, d = 0; /* error, reference data sample */ - q31_t w = 0, in; /* weight factor and state */ - q31_t x0; /* temporary variable to hold input sample */ -// uint32_t shift = 32U - ((uint32_t) S->postShift + 1U); /* Shift to be applied to the output */ - q31_t errorXmu, oneByEnergy; /* Temporary variables to store error and mu product and reciprocal of energy */ - q31_t postShift; /* Post shift to be applied to weight after reciprocal calculation */ - q31_t coef; /* Temporary variable for coef */ - q31_t acc_l, acc_h; /* temporary input */ - uint32_t uShift = ((uint32_t) S->postShift + 1U); - uint32_t lShift = 32U - uShift; /* Shift to be applied to the output */ - - energy = S->energy; - x0 = S->x0; - - /* S->pState points to buffer which contains previous frame (numTaps - 1) samples */ - /* pStateCurnt points to the location where the new input data should be written */ - pStateCurnt = &(S->pState[(numTaps - 1U)]); - - /* Loop over blockSize number of values */ - blkCnt = blockSize; - - -#if defined (ARM_MATH_DSP) - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - while (blkCnt > 0U) - { - - /* Copy the new input sample into the state buffer */ - *pStateCurnt++ = *pSrc; - - /* Initialize pState pointer */ - px = pState; - - /* Initialize coeff pointer */ - pb = (pCoeffs); - - /* Read the sample from input buffer */ - in = *pSrc++; - - /* Update the energy calculation */ - energy = (q31_t) ((((q63_t) energy << 32) - - (((q63_t) x0 * x0) << 1)) >> 32); - energy = (q31_t) (((((q63_t) in * in) << 1) + (energy << 32)) >> 32); - - /* Set the accumulator to zero */ - acc = 0; - - /* Loop unrolling. Process 4 taps at a time. */ - tapCnt = numTaps >> 2; - - while (tapCnt > 0U) - { - /* Perform the multiply-accumulate */ - acc += ((q63_t) (*px++)) * (*pb++); - acc += ((q63_t) (*px++)) * (*pb++); - acc += ((q63_t) (*px++)) * (*pb++); - acc += ((q63_t) (*px++)) * (*pb++); - - /* Decrement the loop counter */ - tapCnt--; - } - - /* If the filter length is not a multiple of 4, compute the remaining filter taps */ - tapCnt = numTaps % 0x4U; - - while (tapCnt > 0U) - { - /* Perform the multiply-accumulate */ - acc += ((q63_t) (*px++)) * (*pb++); - - /* Decrement the loop counter */ - tapCnt--; - } - - /* Converting the result to 1.31 format */ - /* Calc lower part of acc */ - acc_l = acc & 0xffffffff; - - /* Calc upper part of acc */ - acc_h = (acc >> 32) & 0xffffffff; - - acc = (uint32_t) acc_l >> lShift | acc_h << uShift; - - /* Store the result from accumulator into the destination buffer. */ - *pOut++ = (q31_t) acc; - - /* Compute and store error */ - d = *pRef++; - e = d - (q31_t) acc; - *pErr++ = e; - - /* Calculates the reciprocal of energy */ - postShift = arm_recip_q31(energy + DELTA_Q31, - &oneByEnergy, &S->recipTable[0]); - - /* Calculation of product of (e * mu) */ - errorXmu = (q31_t) (((q63_t) e * mu) >> 31); - - /* Weighting factor for the normalized version */ - w = clip_q63_to_q31(((q63_t) errorXmu * oneByEnergy) >> (31 - postShift)); - - /* Initialize pState pointer */ - px = pState; - - /* Initialize coeff pointer */ - pb = (pCoeffs); - - /* Loop unrolling. Process 4 taps at a time. */ - tapCnt = numTaps >> 2; - - /* Update filter coefficients */ - while (tapCnt > 0U) - { - /* Perform the multiply-accumulate */ - - /* coef is in 2.30 format */ - coef = (q31_t) (((q63_t) w * (*px++)) >> (32)); - /* get coef in 1.31 format by left shifting */ - *pb = clip_q63_to_q31((q63_t) * pb + (coef << 1U)); - /* update coefficient buffer to next coefficient */ - pb++; - - coef = (q31_t) (((q63_t) w * (*px++)) >> (32)); - *pb = clip_q63_to_q31((q63_t) * pb + (coef << 1U)); - pb++; - - coef = (q31_t) (((q63_t) w * (*px++)) >> (32)); - *pb = clip_q63_to_q31((q63_t) * pb + (coef << 1U)); - pb++; - - coef = (q31_t) (((q63_t) w * (*px++)) >> (32)); - *pb = clip_q63_to_q31((q63_t) * pb + (coef << 1U)); - pb++; - - /* Decrement the loop counter */ - tapCnt--; - } - - /* If the filter length is not a multiple of 4, compute the remaining filter taps */ - tapCnt = numTaps % 0x4U; - - while (tapCnt > 0U) - { - /* Perform the multiply-accumulate */ - coef = (q31_t) (((q63_t) w * (*px++)) >> (32)); - *pb = clip_q63_to_q31((q63_t) * pb + (coef << 1U)); - pb++; - - /* Decrement the loop counter */ - tapCnt--; - } - - /* Read the sample from state buffer */ - x0 = *pState; - - /* Advance state pointer by 1 for the next sample */ - pState = pState + 1; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* Save energy and x0 values for the next frame */ - S->energy = (q31_t) energy; - S->x0 = x0; - - /* Processing is complete. Now copy the last numTaps - 1 samples to the - satrt of the state buffer. This prepares the state buffer for the - next function call. */ - - /* Points to the start of the pState buffer */ - pStateCurnt = S->pState; - - /* Loop unrolling for (numTaps - 1U) samples copy */ - tapCnt = (numTaps - 1U) >> 2U; - - /* copy data */ - while (tapCnt > 0U) - { - *pStateCurnt++ = *pState++; - *pStateCurnt++ = *pState++; - *pStateCurnt++ = *pState++; - *pStateCurnt++ = *pState++; - - /* Decrement the loop counter */ - tapCnt--; - } - - /* Calculate remaining number of copies */ - tapCnt = (numTaps - 1U) % 0x4U; - - /* Copy the remaining q31_t data */ - while (tapCnt > 0U) - { - *pStateCurnt++ = *pState++; - - /* Decrement the loop counter */ - tapCnt--; - } - -#else - - /* Run the below code for Cortex-M0 */ - - while (blkCnt > 0U) - { - - /* Copy the new input sample into the state buffer */ - *pStateCurnt++ = *pSrc; - - /* Initialize pState pointer */ - px = pState; - - /* Initialize pCoeffs pointer */ - pb = pCoeffs; - - /* Read the sample from input buffer */ - in = *pSrc++; - - /* Update the energy calculation */ - energy = - (q31_t) ((((q63_t) energy << 32) - (((q63_t) x0 * x0) << 1)) >> 32); - energy = (q31_t) (((((q63_t) in * in) << 1) + (energy << 32)) >> 32); - - /* Set the accumulator to zero */ - acc = 0; - - /* Loop over numTaps number of values */ - tapCnt = numTaps; - - while (tapCnt > 0U) - { - /* Perform the multiply-accumulate */ - acc += ((q63_t) (*px++)) * (*pb++); - - /* Decrement the loop counter */ - tapCnt--; - } - - /* Converting the result to 1.31 format */ - /* Converting the result to 1.31 format */ - /* Calc lower part of acc */ - acc_l = acc & 0xffffffff; - - /* Calc upper part of acc */ - acc_h = (acc >> 32) & 0xffffffff; - - acc = (uint32_t) acc_l >> lShift | acc_h << uShift; - - - //acc = (q31_t) (acc >> shift); - - /* Store the result from accumulator into the destination buffer. */ - *pOut++ = (q31_t) acc; - - /* Compute and store error */ - d = *pRef++; - e = d - (q31_t) acc; - *pErr++ = e; - - /* Calculates the reciprocal of energy */ - postShift = - arm_recip_q31(energy + DELTA_Q31, &oneByEnergy, &S->recipTable[0]); - - /* Calculation of product of (e * mu) */ - errorXmu = (q31_t) (((q63_t) e * mu) >> 31); - - /* Weighting factor for the normalized version */ - w = clip_q63_to_q31(((q63_t) errorXmu * oneByEnergy) >> (31 - postShift)); - - /* Initialize pState pointer */ - px = pState; - - /* Initialize coeff pointer */ - pb = (pCoeffs); - - /* Loop over numTaps number of values */ - tapCnt = numTaps; - - while (tapCnt > 0U) - { - /* Perform the multiply-accumulate */ - /* coef is in 2.30 format */ - coef = (q31_t) (((q63_t) w * (*px++)) >> (32)); - /* get coef in 1.31 format by left shifting */ - *pb = clip_q63_to_q31((q63_t) * pb + (coef << 1U)); - /* update coefficient buffer to next coefficient */ - pb++; - - /* Decrement the loop counter */ - tapCnt--; - } - - /* Read the sample from state buffer */ - x0 = *pState; - - /* Advance state pointer by 1 for the next sample */ - pState = pState + 1; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* Save energy and x0 values for the next frame */ - S->energy = (q31_t) energy; - S->x0 = x0; - - /* Processing is complete. Now copy the last numTaps - 1 samples to the - start of the state buffer. This prepares the state buffer for the - next function call. */ - - /* Points to the start of the pState buffer */ - pStateCurnt = S->pState; - - /* Loop for (numTaps - 1U) samples copy */ - tapCnt = (numTaps - 1U); - - /* Copy the remaining q31_t data */ - while (tapCnt > 0U) - { - *pStateCurnt++ = *pState++; - - /* Decrement the loop counter */ - tapCnt--; - } - -#endif /* #if defined (ARM_MATH_DSP) */ - -} - -/** - * @} end of LMS_NORM group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_q15.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_q15.c deleted file mode 100644 index 6690294..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_q15.c +++ /dev/null @@ -1,368 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_lms_q15.c - * Description: Processing function for the Q15 LMS filter - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" -/** - * @ingroup groupFilters - */ - -/** - * @addtogroup LMS - * @{ - */ - - /** - * @brief Processing function for Q15 LMS filter. - * @param[in] *S points to an instance of the Q15 LMS filter structure. - * @param[in] *pSrc points to the block of input data. - * @param[in] *pRef points to the block of reference data. - * @param[out] *pOut points to the block of output data. - * @param[out] *pErr points to the block of error data. - * @param[in] blockSize number of samples to process. - * @return none. - * - * \par Scaling and Overflow Behavior: - * The function is implemented using a 64-bit internal accumulator. - * Both coefficients and state variables are represented in 1.15 format and multiplications yield a 2.30 result. - * The 2.30 intermediate results are accumulated in a 64-bit accumulator in 34.30 format. - * There is no risk of internal overflow with this approach and the full precision of intermediate multiplications is preserved. - * After all additions have been performed, the accumulator is truncated to 34.15 format by discarding low 15 bits. - * Lastly, the accumulator is saturated to yield a result in 1.15 format. - * - * \par - * In this filter, filter coefficients are updated for each sample and the updation of filter cofficients are saturted. - * - */ - -void arm_lms_q15( - const arm_lms_instance_q15 * S, - q15_t * pSrc, - q15_t * pRef, - q15_t * pOut, - q15_t * pErr, - uint32_t blockSize) -{ - q15_t *pState = S->pState; /* State pointer */ - uint32_t numTaps = S->numTaps; /* Number of filter coefficients in the filter */ - q15_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ - q15_t *pStateCurnt; /* Points to the current sample of the state */ - q15_t mu = S->mu; /* Adaptive factor */ - q15_t *px; /* Temporary pointer for state */ - q15_t *pb; /* Temporary pointer for coefficient buffer */ - uint32_t tapCnt, blkCnt; /* Loop counters */ - q63_t acc; /* Accumulator */ - q15_t e = 0; /* error of data sample */ - q15_t alpha; /* Intermediate constant for taps update */ - q31_t coef; /* Teporary variable for coefficient */ - q31_t acc_l, acc_h; - int32_t lShift = (15 - (int32_t) S->postShift); /* Post shift */ - int32_t uShift = (32 - lShift); - - -#if defined (ARM_MATH_DSP) - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - - /* S->pState points to buffer which contains previous frame (numTaps - 1) samples */ - /* pStateCurnt points to the location where the new input data should be written */ - pStateCurnt = &(S->pState[(numTaps - 1U)]); - - /* Initializing blkCnt with blockSize */ - blkCnt = blockSize; - - while (blkCnt > 0U) - { - /* Copy the new input sample into the state buffer */ - *pStateCurnt++ = *pSrc++; - - /* Initialize state pointer */ - px = pState; - - /* Initialize coefficient pointer */ - pb = pCoeffs; - - /* Set the accumulator to zero */ - acc = 0; - - /* Loop unrolling. Process 4 taps at a time. */ - tapCnt = numTaps >> 2U; - - while (tapCnt > 0U) - { - /* acc += b[N] * x[n-N] + b[N-1] * x[n-N-1] */ - /* Perform the multiply-accumulate */ -#ifndef UNALIGNED_SUPPORT_DISABLE - - acc = __SMLALD(*__SIMD32(px)++, (*__SIMD32(pb)++), acc); - acc = __SMLALD(*__SIMD32(px)++, (*__SIMD32(pb)++), acc); - -#else - - acc += (q63_t) (((q31_t) (*px++) * (*pb++))); - acc += (q63_t) (((q31_t) (*px++) * (*pb++))); - acc += (q63_t) (((q31_t) (*px++) * (*pb++))); - acc += (q63_t) (((q31_t) (*px++) * (*pb++))); - - -#endif /* #ifndef UNALIGNED_SUPPORT_DISABLE */ - - /* Decrement the loop counter */ - tapCnt--; - } - - /* If the filter length is not a multiple of 4, compute the remaining filter taps */ - tapCnt = numTaps % 0x4U; - - while (tapCnt > 0U) - { - /* Perform the multiply-accumulate */ - acc += (q63_t) (((q31_t) (*px++) * (*pb++))); - - /* Decrement the loop counter */ - tapCnt--; - } - - /* Calc lower part of acc */ - acc_l = acc & 0xffffffff; - - /* Calc upper part of acc */ - acc_h = (acc >> 32) & 0xffffffff; - - /* Apply shift for lower part of acc and upper part of acc */ - acc = (uint32_t) acc_l >> lShift | acc_h << uShift; - - /* Converting the result to 1.15 format and saturate the output */ - acc = __SSAT(acc, 16); - - /* Store the result from accumulator into the destination buffer. */ - *pOut++ = (q15_t) acc; - - /* Compute and store error */ - e = *pRef++ - (q15_t) acc; - - *pErr++ = (q15_t) e; - - /* Compute alpha i.e. intermediate constant for taps update */ - alpha = (q15_t) (((q31_t) e * (mu)) >> 15); - - /* Initialize state pointer */ - /* Advance state pointer by 1 for the next sample */ - px = pState++; - - /* Initialize coefficient pointer */ - pb = pCoeffs; - - /* Loop unrolling. Process 4 taps at a time. */ - tapCnt = numTaps >> 2U; - - /* Update filter coefficients */ - while (tapCnt > 0U) - { - coef = (q31_t) * pb + (((q31_t) alpha * (*px++)) >> 15); - *pb++ = (q15_t) __SSAT((coef), 16); - coef = (q31_t) * pb + (((q31_t) alpha * (*px++)) >> 15); - *pb++ = (q15_t) __SSAT((coef), 16); - coef = (q31_t) * pb + (((q31_t) alpha * (*px++)) >> 15); - *pb++ = (q15_t) __SSAT((coef), 16); - coef = (q31_t) * pb + (((q31_t) alpha * (*px++)) >> 15); - *pb++ = (q15_t) __SSAT((coef), 16); - - /* Decrement the loop counter */ - tapCnt--; - } - - /* If the filter length is not a multiple of 4, compute the remaining filter taps */ - tapCnt = numTaps % 0x4U; - - while (tapCnt > 0U) - { - /* Perform the multiply-accumulate */ - coef = (q31_t) * pb + (((q31_t) alpha * (*px++)) >> 15); - *pb++ = (q15_t) __SSAT((coef), 16); - - /* Decrement the loop counter */ - tapCnt--; - } - - /* Decrement the loop counter */ - blkCnt--; - - } - - /* Processing is complete. Now copy the last numTaps - 1 samples to the - satrt of the state buffer. This prepares the state buffer for the - next function call. */ - - /* Points to the start of the pState buffer */ - pStateCurnt = S->pState; - - /* Calculation of count for copying integer writes */ - tapCnt = (numTaps - 1U) >> 2; - - while (tapCnt > 0U) - { - -#ifndef UNALIGNED_SUPPORT_DISABLE - - *__SIMD32(pStateCurnt)++ = *__SIMD32(pState)++; - *__SIMD32(pStateCurnt)++ = *__SIMD32(pState)++; -#else - *pStateCurnt++ = *pState++; - *pStateCurnt++ = *pState++; - *pStateCurnt++ = *pState++; - *pStateCurnt++ = *pState++; -#endif - - tapCnt--; - - } - - /* Calculation of count for remaining q15_t data */ - tapCnt = (numTaps - 1U) % 0x4U; - - /* copy data */ - while (tapCnt > 0U) - { - *pStateCurnt++ = *pState++; - - /* Decrement the loop counter */ - tapCnt--; - } - -#else - - /* Run the below code for Cortex-M0 */ - - /* S->pState points to buffer which contains previous frame (numTaps - 1) samples */ - /* pStateCurnt points to the location where the new input data should be written */ - pStateCurnt = &(S->pState[(numTaps - 1U)]); - - /* Loop over blockSize number of values */ - blkCnt = blockSize; - - while (blkCnt > 0U) - { - /* Copy the new input sample into the state buffer */ - *pStateCurnt++ = *pSrc++; - - /* Initialize pState pointer */ - px = pState; - - /* Initialize pCoeffs pointer */ - pb = pCoeffs; - - /* Set the accumulator to zero */ - acc = 0; - - /* Loop over numTaps number of values */ - tapCnt = numTaps; - - while (tapCnt > 0U) - { - /* Perform the multiply-accumulate */ - acc += (q63_t) ((q31_t) (*px++) * (*pb++)); - - /* Decrement the loop counter */ - tapCnt--; - } - - /* Calc lower part of acc */ - acc_l = acc & 0xffffffff; - - /* Calc upper part of acc */ - acc_h = (acc >> 32) & 0xffffffff; - - /* Apply shift for lower part of acc and upper part of acc */ - acc = (uint32_t) acc_l >> lShift | acc_h << uShift; - - /* Converting the result to 1.15 format and saturate the output */ - acc = __SSAT(acc, 16); - - /* Store the result from accumulator into the destination buffer. */ - *pOut++ = (q15_t) acc; - - /* Compute and store error */ - e = *pRef++ - (q15_t) acc; - - *pErr++ = (q15_t) e; - - /* Compute alpha i.e. intermediate constant for taps update */ - alpha = (q15_t) (((q31_t) e * (mu)) >> 15); - - /* Initialize pState pointer */ - /* Advance state pointer by 1 for the next sample */ - px = pState++; - - /* Initialize pCoeffs pointer */ - pb = pCoeffs; - - /* Loop over numTaps number of values */ - tapCnt = numTaps; - - while (tapCnt > 0U) - { - /* Perform the multiply-accumulate */ - coef = (q31_t) * pb + (((q31_t) alpha * (*px++)) >> 15); - *pb++ = (q15_t) __SSAT((coef), 16); - - /* Decrement the loop counter */ - tapCnt--; - } - - /* Decrement the loop counter */ - blkCnt--; - - } - - /* Processing is complete. Now copy the last numTaps - 1 samples to the - start of the state buffer. This prepares the state buffer for the - next function call. */ - - /* Points to the start of the pState buffer */ - pStateCurnt = S->pState; - - /* Copy (numTaps - 1U) samples */ - tapCnt = (numTaps - 1U); - - /* Copy the data */ - while (tapCnt > 0U) - { - *pStateCurnt++ = *pState++; - - /* Decrement the loop counter */ - tapCnt--; - } - -#endif /* #if defined (ARM_MATH_DSP) */ - -} - -/** - * @} end of LMS group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_q31.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_q31.c deleted file mode 100644 index 816e589..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_q31.c +++ /dev/null @@ -1,357 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_lms_q31.c - * Description: Processing function for the Q31 LMS filter - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" -/** - * @ingroup groupFilters - */ - -/** - * @addtogroup LMS - * @{ - */ - - /** - * @brief Processing function for Q31 LMS filter. - * @param[in] *S points to an instance of the Q15 LMS filter structure. - * @param[in] *pSrc points to the block of input data. - * @param[in] *pRef points to the block of reference data. - * @param[out] *pOut points to the block of output data. - * @param[out] *pErr points to the block of error data. - * @param[in] blockSize number of samples to process. - * @return none. - * - * \par Scaling and Overflow Behavior: - * The function is implemented using an internal 64-bit accumulator. - * The accumulator has a 2.62 format and maintains full precision of the intermediate - * multiplication results but provides only a single guard bit. - * Thus, if the accumulator result overflows it wraps around rather than clips. - * In order to avoid overflows completely the input signal must be scaled down by - * log2(numTaps) bits. - * The reference signal should not be scaled down. - * After all multiply-accumulates are performed, the 2.62 accumulator is shifted - * and saturated to 1.31 format to yield the final result. - * The output signal and error signal are in 1.31 format. - * - * \par - * In this filter, filter coefficients are updated for each sample and the updation of filter cofficients are saturted. - */ - -void arm_lms_q31( - const arm_lms_instance_q31 * S, - q31_t * pSrc, - q31_t * pRef, - q31_t * pOut, - q31_t * pErr, - uint32_t blockSize) -{ - q31_t *pState = S->pState; /* State pointer */ - uint32_t numTaps = S->numTaps; /* Number of filter coefficients in the filter */ - q31_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ - q31_t *pStateCurnt; /* Points to the current sample of the state */ - q31_t mu = S->mu; /* Adaptive factor */ - q31_t *px; /* Temporary pointer for state */ - q31_t *pb; /* Temporary pointer for coefficient buffer */ - uint32_t tapCnt, blkCnt; /* Loop counters */ - q63_t acc; /* Accumulator */ - q31_t e = 0; /* error of data sample */ - q31_t alpha; /* Intermediate constant for taps update */ - q31_t coef; /* Temporary variable for coef */ - q31_t acc_l, acc_h; /* temporary input */ - uint32_t uShift = ((uint32_t) S->postShift + 1U); - uint32_t lShift = 32U - uShift; /* Shift to be applied to the output */ - - /* S->pState points to buffer which contains previous frame (numTaps - 1) samples */ - /* pStateCurnt points to the location where the new input data should be written */ - pStateCurnt = &(S->pState[(numTaps - 1U)]); - - /* Initializing blkCnt with blockSize */ - blkCnt = blockSize; - - -#if defined (ARM_MATH_DSP) - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - while (blkCnt > 0U) - { - /* Copy the new input sample into the state buffer */ - *pStateCurnt++ = *pSrc++; - - /* Initialize state pointer */ - px = pState; - - /* Initialize coefficient pointer */ - pb = pCoeffs; - - /* Set the accumulator to zero */ - acc = 0; - - /* Loop unrolling. Process 4 taps at a time. */ - tapCnt = numTaps >> 2; - - while (tapCnt > 0U) - { - /* Perform the multiply-accumulate */ - /* acc += b[N] * x[n-N] */ - acc += ((q63_t) (*px++)) * (*pb++); - - /* acc += b[N-1] * x[n-N-1] */ - acc += ((q63_t) (*px++)) * (*pb++); - - /* acc += b[N-2] * x[n-N-2] */ - acc += ((q63_t) (*px++)) * (*pb++); - - /* acc += b[N-3] * x[n-N-3] */ - acc += ((q63_t) (*px++)) * (*pb++); - - /* Decrement the loop counter */ - tapCnt--; - } - - /* If the filter length is not a multiple of 4, compute the remaining filter taps */ - tapCnt = numTaps % 0x4U; - - while (tapCnt > 0U) - { - /* Perform the multiply-accumulate */ - acc += ((q63_t) (*px++)) * (*pb++); - - /* Decrement the loop counter */ - tapCnt--; - } - - /* Converting the result to 1.31 format */ - /* Calc lower part of acc */ - acc_l = acc & 0xffffffff; - - /* Calc upper part of acc */ - acc_h = (acc >> 32) & 0xffffffff; - - acc = (uint32_t) acc_l >> lShift | acc_h << uShift; - - /* Store the result from accumulator into the destination buffer. */ - *pOut++ = (q31_t) acc; - - /* Compute and store error */ - e = *pRef++ - (q31_t) acc; - - *pErr++ = (q31_t) e; - - /* Compute alpha i.e. intermediate constant for taps update */ - alpha = (q31_t) (((q63_t) e * mu) >> 31); - - /* Initialize state pointer */ - /* Advance state pointer by 1 for the next sample */ - px = pState++; - - /* Initialize coefficient pointer */ - pb = pCoeffs; - - /* Loop unrolling. Process 4 taps at a time. */ - tapCnt = numTaps >> 2; - - /* Update filter coefficients */ - while (tapCnt > 0U) - { - /* coef is in 2.30 format */ - coef = (q31_t) (((q63_t) alpha * (*px++)) >> (32)); - /* get coef in 1.31 format by left shifting */ - *pb = clip_q63_to_q31((q63_t) * pb + (coef << 1U)); - /* update coefficient buffer to next coefficient */ - pb++; - - coef = (q31_t) (((q63_t) alpha * (*px++)) >> (32)); - *pb = clip_q63_to_q31((q63_t) * pb + (coef << 1U)); - pb++; - - coef = (q31_t) (((q63_t) alpha * (*px++)) >> (32)); - *pb = clip_q63_to_q31((q63_t) * pb + (coef << 1U)); - pb++; - - coef = (q31_t) (((q63_t) alpha * (*px++)) >> (32)); - *pb = clip_q63_to_q31((q63_t) * pb + (coef << 1U)); - pb++; - - /* Decrement the loop counter */ - tapCnt--; - } - - /* If the filter length is not a multiple of 4, compute the remaining filter taps */ - tapCnt = numTaps % 0x4U; - - while (tapCnt > 0U) - { - /* Perform the multiply-accumulate */ - coef = (q31_t) (((q63_t) alpha * (*px++)) >> (32)); - *pb = clip_q63_to_q31((q63_t) * pb + (coef << 1U)); - pb++; - - /* Decrement the loop counter */ - tapCnt--; - } - - /* Decrement the loop counter */ - blkCnt--; - } - - /* Processing is complete. Now copy the last numTaps - 1 samples to the - satrt of the state buffer. This prepares the state buffer for the - next function call. */ - - /* Points to the start of the pState buffer */ - pStateCurnt = S->pState; - - /* Loop unrolling for (numTaps - 1U) samples copy */ - tapCnt = (numTaps - 1U) >> 2U; - - /* copy data */ - while (tapCnt > 0U) - { - *pStateCurnt++ = *pState++; - *pStateCurnt++ = *pState++; - *pStateCurnt++ = *pState++; - *pStateCurnt++ = *pState++; - - /* Decrement the loop counter */ - tapCnt--; - } - - /* Calculate remaining number of copies */ - tapCnt = (numTaps - 1U) % 0x4U; - - /* Copy the remaining q31_t data */ - while (tapCnt > 0U) - { - *pStateCurnt++ = *pState++; - - /* Decrement the loop counter */ - tapCnt--; - } - -#else - - /* Run the below code for Cortex-M0 */ - - while (blkCnt > 0U) - { - /* Copy the new input sample into the state buffer */ - *pStateCurnt++ = *pSrc++; - - /* Initialize pState pointer */ - px = pState; - - /* Initialize pCoeffs pointer */ - pb = pCoeffs; - - /* Set the accumulator to zero */ - acc = 0; - - /* Loop over numTaps number of values */ - tapCnt = numTaps; - - while (tapCnt > 0U) - { - /* Perform the multiply-accumulate */ - acc += ((q63_t) (*px++)) * (*pb++); - - /* Decrement the loop counter */ - tapCnt--; - } - - /* Converting the result to 1.31 format */ - /* Store the result from accumulator into the destination buffer. */ - /* Calc lower part of acc */ - acc_l = acc & 0xffffffff; - - /* Calc upper part of acc */ - acc_h = (acc >> 32) & 0xffffffff; - - acc = (uint32_t) acc_l >> lShift | acc_h << uShift; - - *pOut++ = (q31_t) acc; - - /* Compute and store error */ - e = *pRef++ - (q31_t) acc; - - *pErr++ = (q31_t) e; - - /* Weighting factor for the LMS version */ - alpha = (q31_t) (((q63_t) e * mu) >> 31); - - /* Initialize pState pointer */ - /* Advance state pointer by 1 for the next sample */ - px = pState++; - - /* Initialize pCoeffs pointer */ - pb = pCoeffs; - - /* Loop over numTaps number of values */ - tapCnt = numTaps; - - while (tapCnt > 0U) - { - /* Perform the multiply-accumulate */ - coef = (q31_t) (((q63_t) alpha * (*px++)) >> (32)); - *pb = clip_q63_to_q31((q63_t) * pb + (coef << 1U)); - pb++; - - /* Decrement the loop counter */ - tapCnt--; - } - - /* Decrement the loop counter */ - blkCnt--; - } - - /* Processing is complete. Now copy the last numTaps - 1 samples to the - start of the state buffer. This prepares the state buffer for the - next function call. */ - - /* Points to the start of the pState buffer */ - pStateCurnt = S->pState; - - /* Copy (numTaps - 1U) samples */ - tapCnt = (numTaps - 1U); - - /* Copy the data */ - while (tapCnt > 0U) - { - *pStateCurnt++ = *pState++; - - /* Decrement the loop counter */ - tapCnt--; - } - -#endif /* #if defined (ARM_MATH_DSP) */ - -} - -/** - * @} end of LMS group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_add_f32.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_add_f32.c deleted file mode 100644 index 4a54049..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_add_f32.c +++ /dev/null @@ -1,196 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_mat_add_f32.c - * Description: Floating-point matrix addition - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupMatrix - */ - -/** - * @defgroup MatrixAdd Matrix Addition - * - * Adds two matrices. - * \image html MatrixAddition.gif "Addition of two 3 x 3 matrices" - * - * The functions check to make sure that - * pSrcA, pSrcB, and pDst have the same - * number of rows and columns. - */ - -/** - * @addtogroup MatrixAdd - * @{ - */ - - -/** - * @brief Floating-point matrix addition. - * @param[in] *pSrcA points to the first input matrix structure - * @param[in] *pSrcB points to the second input matrix structure - * @param[out] *pDst points to output matrix structure - * @return The function returns either - * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. - */ - -arm_status arm_mat_add_f32( - const arm_matrix_instance_f32 * pSrcA, - const arm_matrix_instance_f32 * pSrcB, - arm_matrix_instance_f32 * pDst) -{ - float32_t *pIn1 = pSrcA->pData; /* input data matrix pointer A */ - float32_t *pIn2 = pSrcB->pData; /* input data matrix pointer B */ - float32_t *pOut = pDst->pData; /* output data matrix pointer */ - -#if defined (ARM_MATH_DSP) - - float32_t inA1, inA2, inB1, inB2, out1, out2; /* temporary variables */ - -#endif // #if defined (ARM_MATH_DSP) - - uint32_t numSamples; /* total number of elements in the matrix */ - uint32_t blkCnt; /* loop counters */ - arm_status status; /* status of matrix addition */ - -#ifdef ARM_MATH_MATRIX_CHECK - /* Check for matrix mismatch condition */ - if ((pSrcA->numRows != pSrcB->numRows) || - (pSrcA->numCols != pSrcB->numCols) || - (pSrcA->numRows != pDst->numRows) || (pSrcA->numCols != pDst->numCols)) - { - /* Set status as ARM_MATH_SIZE_MISMATCH */ - status = ARM_MATH_SIZE_MISMATCH; - } - else -#endif - { - - /* Total number of samples in the input matrix */ - numSamples = (uint32_t) pSrcA->numRows * pSrcA->numCols; - -#if defined (ARM_MATH_DSP) - - /* Loop unrolling */ - blkCnt = numSamples >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - /* C(m,n) = A(m,n) + B(m,n) */ - /* Add and then store the results in the destination buffer. */ - /* Read values from source A */ - inA1 = pIn1[0]; - - /* Read values from source B */ - inB1 = pIn2[0]; - - /* Read values from source A */ - inA2 = pIn1[1]; - - /* out = sourceA + sourceB */ - out1 = inA1 + inB1; - - /* Read values from source B */ - inB2 = pIn2[1]; - - /* Read values from source A */ - inA1 = pIn1[2]; - - /* out = sourceA + sourceB */ - out2 = inA2 + inB2; - - /* Read values from source B */ - inB1 = pIn2[2]; - - /* Store result in destination */ - pOut[0] = out1; - pOut[1] = out2; - - /* Read values from source A */ - inA2 = pIn1[3]; - - /* Read values from source B */ - inB2 = pIn2[3]; - - /* out = sourceA + sourceB */ - out1 = inA1 + inB1; - - /* out = sourceA + sourceB */ - out2 = inA2 + inB2; - - /* Store result in destination */ - pOut[2] = out1; - - /* Store result in destination */ - pOut[3] = out2; - - - /* update pointers to process next sampels */ - pIn1 += 4U; - pIn2 += 4U; - pOut += 4U; - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the numSamples is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = numSamples % 0x4U; - -#else - - /* Run the below code for Cortex-M0 */ - - /* Initialize blkCnt with number of samples */ - blkCnt = numSamples; - -#endif /* #if defined (ARM_MATH_DSP) */ - - while (blkCnt > 0U) - { - /* C(m,n) = A(m,n) + B(m,n) */ - /* Add and then store the results in the destination buffer. */ - *pOut++ = (*pIn1++) + (*pIn2++); - - /* Decrement the loop counter */ - blkCnt--; - } - - /* set status as ARM_MATH_SUCCESS */ - status = ARM_MATH_SUCCESS; - - } - - /* Return to application */ - return (status); -} - -/** - * @} end of MatrixAdd group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_add_q15.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_add_q15.c deleted file mode 100644 index 896e60c..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_add_q15.c +++ /dev/null @@ -1,151 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_mat_add_q15.c - * Description: Q15 matrix addition - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupMatrix - */ - -/** - * @addtogroup MatrixAdd - * @{ - */ - -/** - * @brief Q15 matrix addition. - * @param[in] *pSrcA points to the first input matrix structure - * @param[in] *pSrcB points to the second input matrix structure - * @param[out] *pDst points to output matrix structure - * @return The function returns either - * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. - * - * Scaling and Overflow Behavior: - * \par - * The function uses saturating arithmetic. - * Results outside of the allowable Q15 range [0x8000 0x7FFF] will be saturated. - */ - -arm_status arm_mat_add_q15( - const arm_matrix_instance_q15 * pSrcA, - const arm_matrix_instance_q15 * pSrcB, - arm_matrix_instance_q15 * pDst) -{ - q15_t *pInA = pSrcA->pData; /* input data matrix pointer A */ - q15_t *pInB = pSrcB->pData; /* input data matrix pointer B */ - q15_t *pOut = pDst->pData; /* output data matrix pointer */ - uint16_t numSamples; /* total number of elements in the matrix */ - uint32_t blkCnt; /* loop counters */ - arm_status status; /* status of matrix addition */ - -#ifdef ARM_MATH_MATRIX_CHECK - - - /* Check for matrix mismatch condition */ - if ((pSrcA->numRows != pSrcB->numRows) || - (pSrcA->numCols != pSrcB->numCols) || - (pSrcA->numRows != pDst->numRows) || (pSrcA->numCols != pDst->numCols)) - { - /* Set status as ARM_MATH_SIZE_MISMATCH */ - status = ARM_MATH_SIZE_MISMATCH; - } - else -#endif /* #ifdef ARM_MATH_MATRIX_CHECK */ - - { - /* Total number of samples in the input matrix */ - numSamples = (uint16_t) (pSrcA->numRows * pSrcA->numCols); - -#if defined (ARM_MATH_DSP) - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - /* Loop unrolling */ - blkCnt = (uint32_t) numSamples >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - /* C(m,n) = A(m,n) + B(m,n) */ - /* Add, Saturate and then store the results in the destination buffer. */ - *__SIMD32(pOut)++ = __QADD16(*__SIMD32(pInA)++, *__SIMD32(pInB)++); - *__SIMD32(pOut)++ = __QADD16(*__SIMD32(pInA)++, *__SIMD32(pInB)++); - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = (uint32_t) numSamples % 0x4U; - - /* q15 pointers of input and output are initialized */ - - while (blkCnt > 0U) - { - /* C(m,n) = A(m,n) + B(m,n) */ - /* Add, Saturate and then store the results in the destination buffer. */ - *pOut++ = (q15_t) __QADD16(*pInA++, *pInB++); - - /* Decrement the loop counter */ - blkCnt--; - } - -#else - - /* Run the below code for Cortex-M0 */ - - /* Initialize blkCnt with number of samples */ - blkCnt = (uint32_t) numSamples; - - - /* q15 pointers of input and output are initialized */ - while (blkCnt > 0U) - { - /* C(m,n) = A(m,n) + B(m,n) */ - /* Add, Saturate and then store the results in the destination buffer. */ - *pOut++ = (q15_t) __SSAT(((q31_t) * pInA++ + *pInB++), 16); - - /* Decrement the loop counter */ - blkCnt--; - } - -#endif /* #if defined (ARM_MATH_DSP) */ - - /* set status as ARM_MATH_SUCCESS */ - status = ARM_MATH_SUCCESS; - } - - /* Return to application */ - return (status); -} - -/** - * @} end of MatrixAdd group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_add_q31.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_add_q31.c deleted file mode 100644 index f230ad2..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_add_q31.c +++ /dev/null @@ -1,195 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_mat_add_q31.c - * Description: Q31 matrix addition - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupMatrix - */ - -/** - * @addtogroup MatrixAdd - * @{ - */ - -/** - * @brief Q31 matrix addition. - * @param[in] *pSrcA points to the first input matrix structure - * @param[in] *pSrcB points to the second input matrix structure - * @param[out] *pDst points to output matrix structure - * @return The function returns either - * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. - * - * Scaling and Overflow Behavior: - * \par - * The function uses saturating arithmetic. - * Results outside of the allowable Q31 range [0x80000000 0x7FFFFFFF] will be saturated. - */ - -arm_status arm_mat_add_q31( - const arm_matrix_instance_q31 * pSrcA, - const arm_matrix_instance_q31 * pSrcB, - arm_matrix_instance_q31 * pDst) -{ - q31_t *pIn1 = pSrcA->pData; /* input data matrix pointer A */ - q31_t *pIn2 = pSrcB->pData; /* input data matrix pointer B */ - q31_t *pOut = pDst->pData; /* output data matrix pointer */ - q31_t inA1, inB1; /* temporary variables */ - -#if defined (ARM_MATH_DSP) - - q31_t inA2, inB2; /* temporary variables */ - q31_t out1, out2; /* temporary variables */ - -#endif // #if defined (ARM_MATH_DSP) - - uint32_t numSamples; /* total number of elements in the matrix */ - uint32_t blkCnt; /* loop counters */ - arm_status status; /* status of matrix addition */ - -#ifdef ARM_MATH_MATRIX_CHECK - /* Check for matrix mismatch condition */ - if ((pSrcA->numRows != pSrcB->numRows) || - (pSrcA->numCols != pSrcB->numCols) || - (pSrcA->numRows != pDst->numRows) || (pSrcA->numCols != pDst->numCols)) - { - /* Set status as ARM_MATH_SIZE_MISMATCH */ - status = ARM_MATH_SIZE_MISMATCH; - } - else -#endif - { - /* Total number of samples in the input matrix */ - numSamples = (uint32_t) pSrcA->numRows * pSrcA->numCols; - -#if defined (ARM_MATH_DSP) - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - /* Loop Unrolling */ - blkCnt = numSamples >> 2U; - - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - /* C(m,n) = A(m,n) + B(m,n) */ - /* Add, saturate and then store the results in the destination buffer. */ - /* Read values from source A */ - inA1 = pIn1[0]; - - /* Read values from source B */ - inB1 = pIn2[0]; - - /* Read values from source A */ - inA2 = pIn1[1]; - - /* Add and saturate */ - out1 = __QADD(inA1, inB1); - - /* Read values from source B */ - inB2 = pIn2[1]; - - /* Read values from source A */ - inA1 = pIn1[2]; - - /* Add and saturate */ - out2 = __QADD(inA2, inB2); - - /* Read values from source B */ - inB1 = pIn2[2]; - - /* Store result in destination */ - pOut[0] = out1; - pOut[1] = out2; - - /* Read values from source A */ - inA2 = pIn1[3]; - - /* Read values from source B */ - inB2 = pIn2[3]; - - /* Add and saturate */ - out1 = __QADD(inA1, inB1); - out2 = __QADD(inA2, inB2); - - /* Store result in destination */ - pOut[2] = out1; - pOut[3] = out2; - - /* update pointers to process next sampels */ - pIn1 += 4U; - pIn2 += 4U; - pOut += 4U; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the numSamples is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = numSamples % 0x4U; - -#else - - /* Run the below code for Cortex-M0 */ - - /* Initialize blkCnt with number of samples */ - blkCnt = numSamples; - - -#endif /* #if defined (ARM_MATH_DSP) */ - - while (blkCnt > 0U) - { - /* C(m,n) = A(m,n) + B(m,n) */ - /* Add, saturate and then store the results in the destination buffer. */ - inA1 = *pIn1++; - inB1 = *pIn2++; - - inA1 = __QADD(inA1, inB1); - - /* Decrement the loop counter */ - blkCnt--; - - *pOut++ = inA1; - - } - - /* set status as ARM_MATH_SUCCESS */ - status = ARM_MATH_SUCCESS; - } - - /* Return to application */ - return (status); -} - -/** - * @} end of MatrixAdd group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_cmplx_mult_f32.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_cmplx_mult_f32.c deleted file mode 100644 index bb8341e..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_cmplx_mult_f32.c +++ /dev/null @@ -1,272 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_mat_cmplx_mult_f32.c - * Description: Floating-point matrix multiplication - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupMatrix - */ - -/** - * @defgroup CmplxMatrixMult Complex Matrix Multiplication - * - * Complex Matrix multiplication is only defined if the number of columns of the - * first matrix equals the number of rows of the second matrix. - * Multiplying an M x N matrix with an N x P matrix results - * in an M x P matrix. - * When matrix size checking is enabled, the functions check: (1) that the inner dimensions of - * pSrcA and pSrcB are equal; and (2) that the size of the output - * matrix equals the outer dimensions of pSrcA and pSrcB. - */ - - -/** - * @addtogroup CmplxMatrixMult - * @{ - */ - -/** - * @brief Floating-point Complex matrix multiplication. - * @param[in] *pSrcA points to the first input complex matrix structure - * @param[in] *pSrcB points to the second input complex matrix structure - * @param[out] *pDst points to output complex matrix structure - * @return The function returns either - * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. - */ - -arm_status arm_mat_cmplx_mult_f32( - const arm_matrix_instance_f32 * pSrcA, - const arm_matrix_instance_f32 * pSrcB, - arm_matrix_instance_f32 * pDst) -{ - float32_t *pIn1 = pSrcA->pData; /* input data matrix pointer A */ - float32_t *pIn2 = pSrcB->pData; /* input data matrix pointer B */ - float32_t *pInA = pSrcA->pData; /* input data matrix pointer A */ - float32_t *pOut = pDst->pData; /* output data matrix pointer */ - float32_t *px; /* Temporary output data matrix pointer */ - uint16_t numRowsA = pSrcA->numRows; /* number of rows of input matrix A */ - uint16_t numColsB = pSrcB->numCols; /* number of columns of input matrix B */ - uint16_t numColsA = pSrcA->numCols; /* number of columns of input matrix A */ - float32_t sumReal1, sumImag1; /* accumulator */ - float32_t a0, b0, c0, d0; - float32_t a1, b1, c1, d1; - float32_t sumReal2, sumImag2; /* accumulator */ - - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - uint16_t col, i = 0U, j, row = numRowsA, colCnt; /* loop counters */ - arm_status status; /* status of matrix multiplication */ - -#ifdef ARM_MATH_MATRIX_CHECK - - - /* Check for matrix mismatch condition */ - if ((pSrcA->numCols != pSrcB->numRows) || - (pSrcA->numRows != pDst->numRows) || (pSrcB->numCols != pDst->numCols)) - { - - /* Set status as ARM_MATH_SIZE_MISMATCH */ - status = ARM_MATH_SIZE_MISMATCH; - } - else -#endif /* #ifdef ARM_MATH_MATRIX_CHECK */ - - { - /* The following loop performs the dot-product of each row in pSrcA with each column in pSrcB */ - /* row loop */ - do - { - /* Output pointer is set to starting address of the row being processed */ - px = pOut + 2 * i; - - /* For every row wise process, the column loop counter is to be initiated */ - col = numColsB; - - /* For every row wise process, the pIn2 pointer is set - ** to the starting address of the pSrcB data */ - pIn2 = pSrcB->pData; - - j = 0U; - - /* column loop */ - do - { - /* Set the variable sum, that acts as accumulator, to zero */ - sumReal1 = 0.0f; - sumImag1 = 0.0f; - - sumReal2 = 0.0f; - sumImag2 = 0.0f; - - /* Initiate the pointer pIn1 to point to the starting address of the column being processed */ - pIn1 = pInA; - - /* Apply loop unrolling and compute 4 MACs simultaneously. */ - colCnt = numColsA >> 2; - - /* matrix multiplication */ - while (colCnt > 0U) - { - - /* Reading real part of complex matrix A */ - a0 = *pIn1; - - /* Reading real part of complex matrix B */ - c0 = *pIn2; - - /* Reading imaginary part of complex matrix A */ - b0 = *(pIn1 + 1U); - - /* Reading imaginary part of complex matrix B */ - d0 = *(pIn2 + 1U); - - sumReal1 += a0 * c0; - sumImag1 += b0 * c0; - - pIn1 += 2U; - pIn2 += 2 * numColsB; - - sumReal2 -= b0 * d0; - sumImag2 += a0 * d0; - - /* c(m,n) = a(1,1)*b(1,1) + a(1,2) * b(2,1) + .... + a(m,p)*b(p,n) */ - - a1 = *pIn1; - c1 = *pIn2; - - b1 = *(pIn1 + 1U); - d1 = *(pIn2 + 1U); - - sumReal1 += a1 * c1; - sumImag1 += b1 * c1; - - pIn1 += 2U; - pIn2 += 2 * numColsB; - - sumReal2 -= b1 * d1; - sumImag2 += a1 * d1; - - a0 = *pIn1; - c0 = *pIn2; - - b0 = *(pIn1 + 1U); - d0 = *(pIn2 + 1U); - - sumReal1 += a0 * c0; - sumImag1 += b0 * c0; - - pIn1 += 2U; - pIn2 += 2 * numColsB; - - sumReal2 -= b0 * d0; - sumImag2 += a0 * d0; - - /* c(m,n) = a(1,1)*b(1,1) + a(1,2) * b(2,1) + .... + a(m,p)*b(p,n) */ - - a1 = *pIn1; - c1 = *pIn2; - - b1 = *(pIn1 + 1U); - d1 = *(pIn2 + 1U); - - sumReal1 += a1 * c1; - sumImag1 += b1 * c1; - - pIn1 += 2U; - pIn2 += 2 * numColsB; - - sumReal2 -= b1 * d1; - sumImag2 += a1 * d1; - - /* Decrement the loop count */ - colCnt--; - } - - /* If the columns of pSrcA is not a multiple of 4, compute any remaining MACs here. - ** No loop unrolling is used. */ - colCnt = numColsA % 0x4U; - - while (colCnt > 0U) - { - /* c(m,n) = a(1,1)*b(1,1) + a(1,2) * b(2,1) + .... + a(m,p)*b(p,n) */ - a1 = *pIn1; - c1 = *pIn2; - - b1 = *(pIn1 + 1U); - d1 = *(pIn2 + 1U); - - sumReal1 += a1 * c1; - sumImag1 += b1 * c1; - - pIn1 += 2U; - pIn2 += 2 * numColsB; - - sumReal2 -= b1 * d1; - sumImag2 += a1 * d1; - - /* Decrement the loop counter */ - colCnt--; - } - - sumReal1 += sumReal2; - sumImag1 += sumImag2; - - /* Store the result in the destination buffer */ - *px++ = sumReal1; - *px++ = sumImag1; - - /* Update the pointer pIn2 to point to the starting address of the next column */ - j++; - pIn2 = pSrcB->pData + 2U * j; - - /* Decrement the column loop counter */ - col--; - - } while (col > 0U); - - /* Update the pointer pInA to point to the starting address of the next row */ - i = i + numColsB; - pInA = pInA + 2 * numColsA; - - /* Decrement the row loop counter */ - row--; - - } while (row > 0U); - - /* Set status as ARM_MATH_SUCCESS */ - status = ARM_MATH_SUCCESS; - } - - /* Return to application */ - return (status); -} - -/** - * @} end of MatrixMult group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_cmplx_mult_q15.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_cmplx_mult_q15.c deleted file mode 100644 index 5dee79c..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_cmplx_mult_q15.c +++ /dev/null @@ -1,413 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_cmplx_mat_mult_q15.c - * Description: Q15 complex matrix multiplication - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupMatrix - */ - -/** - * @addtogroup CmplxMatrixMult - * @{ - */ - - -/** - * @brief Q15 Complex matrix multiplication - * @param[in] *pSrcA points to the first input complex matrix structure - * @param[in] *pSrcB points to the second input complex matrix structure - * @param[out] *pDst points to output complex matrix structure - * @param[in] *pScratch points to the array for storing intermediate results - * @return The function returns either - * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. - * - * \par Conditions for optimum performance - * Input, output and state buffers should be aligned by 32-bit - * - * \par Restrictions - * If the silicon does not support unaligned memory access enable the macro UNALIGNED_SUPPORT_DISABLE - * In this case input, output, scratch buffers should be aligned by 32-bit - * - * @details - * Scaling and Overflow Behavior: - * - * \par - * The function is implemented using a 64-bit internal accumulator. The inputs to the - * multiplications are in 1.15 format and multiplications yield a 2.30 result. - * The 2.30 intermediate - * results are accumulated in a 64-bit accumulator in 34.30 format. This approach - * provides 33 guard bits and there is no risk of overflow. The 34.30 result is then - * truncated to 34.15 format by discarding the low 15 bits and then saturated to - * 1.15 format. - * - * \par - * Refer to arm_mat_mult_fast_q15() for a faster but less precise version of this function. - * - */ - - - - -arm_status arm_mat_cmplx_mult_q15( - const arm_matrix_instance_q15 * pSrcA, - const arm_matrix_instance_q15 * pSrcB, - arm_matrix_instance_q15 * pDst, - q15_t * pScratch) -{ - /* accumulator */ - q15_t *pSrcBT = pScratch; /* input data matrix pointer for transpose */ - q15_t *pInA = pSrcA->pData; /* input data matrix pointer A of Q15 type */ - q15_t *pInB = pSrcB->pData; /* input data matrix pointer B of Q15 type */ - q15_t *px; /* Temporary output data matrix pointer */ - uint16_t numRowsA = pSrcA->numRows; /* number of rows of input matrix A */ - uint16_t numColsB = pSrcB->numCols; /* number of columns of input matrix B */ - uint16_t numColsA = pSrcA->numCols; /* number of columns of input matrix A */ - uint16_t numRowsB = pSrcB->numRows; /* number of rows of input matrix A */ - uint16_t col, i = 0U, row = numRowsB, colCnt; /* loop counters */ - arm_status status; /* status of matrix multiplication */ - q63_t sumReal, sumImag; - -#ifdef UNALIGNED_SUPPORT_DISABLE - q15_t in; /* Temporary variable to hold the input value */ - q15_t a, b, c, d; -#else - q31_t in; /* Temporary variable to hold the input value */ - q31_t prod1, prod2; - q31_t pSourceA, pSourceB; -#endif - -#ifdef ARM_MATH_MATRIX_CHECK - /* Check for matrix mismatch condition */ - if ((pSrcA->numCols != pSrcB->numRows) || - (pSrcA->numRows != pDst->numRows) || (pSrcB->numCols != pDst->numCols)) - { - /* Set status as ARM_MATH_SIZE_MISMATCH */ - status = ARM_MATH_SIZE_MISMATCH; - } - else -#endif - { - /* Matrix transpose */ - do - { - /* Apply loop unrolling and exchange the columns with row elements */ - col = numColsB >> 2; - - /* The pointer px is set to starting address of the column being processed */ - px = pSrcBT + i; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (col > 0U) - { -#ifdef UNALIGNED_SUPPORT_DISABLE - /* Read two elements from the row */ - in = *pInB++; - *px = in; - in = *pInB++; - px[1] = in; - - /* Update the pointer px to point to the next row of the transposed matrix */ - px += numRowsB * 2; - - /* Read two elements from the row */ - in = *pInB++; - *px = in; - in = *pInB++; - px[1] = in; - - /* Update the pointer px to point to the next row of the transposed matrix */ - px += numRowsB * 2; - - /* Read two elements from the row */ - in = *pInB++; - *px = in; - in = *pInB++; - px[1] = in; - - /* Update the pointer px to point to the next row of the transposed matrix */ - px += numRowsB * 2; - - /* Read two elements from the row */ - in = *pInB++; - *px = in; - in = *pInB++; - px[1] = in; - - /* Update the pointer px to point to the next row of the transposed matrix */ - px += numRowsB * 2; - - /* Decrement the column loop counter */ - col--; - } - - /* If the columns of pSrcB is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - col = numColsB % 0x4U; - - while (col > 0U) - { - /* Read two elements from the row */ - in = *pInB++; - *px = in; - in = *pInB++; - px[1] = in; -#else - - /* Read two elements from the row */ - in = *__SIMD32(pInB)++; - - *__SIMD32(px) = in; - - /* Update the pointer px to point to the next row of the transposed matrix */ - px += numRowsB * 2; - - - /* Read two elements from the row */ - in = *__SIMD32(pInB)++; - - *__SIMD32(px) = in; - - /* Update the pointer px to point to the next row of the transposed matrix */ - px += numRowsB * 2; - - /* Read two elements from the row */ - in = *__SIMD32(pInB)++; - - *__SIMD32(px) = in; - - /* Update the pointer px to point to the next row of the transposed matrix */ - px += numRowsB * 2; - - /* Read two elements from the row */ - in = *__SIMD32(pInB)++; - - *__SIMD32(px) = in; - - /* Update the pointer px to point to the next row of the transposed matrix */ - px += numRowsB * 2; - - /* Decrement the column loop counter */ - col--; - } - - /* If the columns of pSrcB is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - col = numColsB % 0x4U; - - while (col > 0U) - { - /* Read two elements from the row */ - in = *__SIMD32(pInB)++; - - *__SIMD32(px) = in; -#endif - - /* Update the pointer px to point to the next row of the transposed matrix */ - px += numRowsB * 2; - - /* Decrement the column loop counter */ - col--; - } - - i = i + 2U; - - /* Decrement the row loop counter */ - row--; - - } while (row > 0U); - - /* Reset the variables for the usage in the following multiplication process */ - row = numRowsA; - i = 0U; - px = pDst->pData; - - /* The following loop performs the dot-product of each row in pSrcA with each column in pSrcB */ - /* row loop */ - do - { - /* For every row wise process, the column loop counter is to be initiated */ - col = numColsB; - - /* For every row wise process, the pIn2 pointer is set - ** to the starting address of the transposed pSrcB data */ - pInB = pSrcBT; - - /* column loop */ - do - { - /* Set the variable sum, that acts as accumulator, to zero */ - sumReal = 0; - sumImag = 0; - - /* Apply loop unrolling and compute 2 MACs simultaneously. */ - colCnt = numColsA >> 1; - - /* Initiate the pointer pIn1 to point to the starting address of the column being processed */ - pInA = pSrcA->pData + i * 2; - - - /* matrix multiplication */ - while (colCnt > 0U) - { - /* c(m,n) = a(1,1)*b(1,1) + a(1,2) * b(2,1) + .... + a(m,p)*b(p,n) */ - -#ifdef UNALIGNED_SUPPORT_DISABLE - - /* read real and imag values from pSrcA buffer */ - a = *pInA; - b = *(pInA + 1U); - /* read real and imag values from pSrcB buffer */ - c = *pInB; - d = *(pInB + 1U); - - /* Multiply and Accumlates */ - sumReal += (q31_t) a *c; - sumImag += (q31_t) a *d; - sumReal -= (q31_t) b *d; - sumImag += (q31_t) b *c; - - /* read next real and imag values from pSrcA buffer */ - a = *(pInA + 2U); - b = *(pInA + 3U); - /* read next real and imag values from pSrcB buffer */ - c = *(pInB + 2U); - d = *(pInB + 3U); - - /* update pointer */ - pInA += 4U; - - /* Multiply and Accumlates */ - sumReal += (q31_t) a *c; - sumImag += (q31_t) a *d; - sumReal -= (q31_t) b *d; - sumImag += (q31_t) b *c; - /* update pointer */ - pInB += 4U; -#else - /* read real and imag values from pSrcA and pSrcB buffer */ - pSourceA = *__SIMD32(pInA)++; - pSourceB = *__SIMD32(pInB)++; - - /* Multiply and Accumlates */ -#ifdef ARM_MATH_BIG_ENDIAN - prod1 = -__SMUSD(pSourceA, pSourceB); -#else - prod1 = __SMUSD(pSourceA, pSourceB); -#endif - prod2 = __SMUADX(pSourceA, pSourceB); - sumReal += (q63_t) prod1; - sumImag += (q63_t) prod2; - - /* read real and imag values from pSrcA and pSrcB buffer */ - pSourceA = *__SIMD32(pInA)++; - pSourceB = *__SIMD32(pInB)++; - - /* Multiply and Accumlates */ -#ifdef ARM_MATH_BIG_ENDIAN - prod1 = -__SMUSD(pSourceA, pSourceB); -#else - prod1 = __SMUSD(pSourceA, pSourceB); -#endif - prod2 = __SMUADX(pSourceA, pSourceB); - sumReal += (q63_t) prod1; - sumImag += (q63_t) prod2; - -#endif /* #ifdef UNALIGNED_SUPPORT_DISABLE */ - - /* Decrement the loop counter */ - colCnt--; - } - - /* process odd column samples */ - if ((numColsA & 0x1U) > 0U) - { - /* c(m,n) = a(1,1)*b(1,1) + a(1,2) * b(2,1) + .... + a(m,p)*b(p,n) */ - -#ifdef UNALIGNED_SUPPORT_DISABLE - - /* read real and imag values from pSrcA and pSrcB buffer */ - a = *pInA++; - b = *pInA++; - c = *pInB++; - d = *pInB++; - - /* Multiply and Accumlates */ - sumReal += (q31_t) a *c; - sumImag += (q31_t) a *d; - sumReal -= (q31_t) b *d; - sumImag += (q31_t) b *c; - -#else - /* read real and imag values from pSrcA and pSrcB buffer */ - pSourceA = *__SIMD32(pInA)++; - pSourceB = *__SIMD32(pInB)++; - - /* Multiply and Accumlates */ -#ifdef ARM_MATH_BIG_ENDIAN - prod1 = -__SMUSD(pSourceA, pSourceB); -#else - prod1 = __SMUSD(pSourceA, pSourceB); -#endif - prod2 = __SMUADX(pSourceA, pSourceB); - sumReal += (q63_t) prod1; - sumImag += (q63_t) prod2; - -#endif /* #ifdef UNALIGNED_SUPPORT_DISABLE */ - - } - - /* Saturate and store the result in the destination buffer */ - - *px++ = (q15_t) (__SSAT(sumReal >> 15, 16)); - *px++ = (q15_t) (__SSAT(sumImag >> 15, 16)); - - /* Decrement the column loop counter */ - col--; - - } while (col > 0U); - - i = i + numColsA; - - /* Decrement the row loop counter */ - row--; - - } while (row > 0U); - - /* set status as ARM_MATH_SUCCESS */ - status = ARM_MATH_SUCCESS; - } - - /* Return to application */ - return (status); -} - -/** - * @} end of MatrixMult group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_cmplx_mult_q31.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_cmplx_mult_q31.c deleted file mode 100644 index 65cbb66..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_cmplx_mult_q31.c +++ /dev/null @@ -1,282 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_mat_cmplx_mult_q31.c - * Description: Floating-point matrix multiplication - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupMatrix - */ - -/** - * @addtogroup CmplxMatrixMult - * @{ - */ - -/** - * @brief Q31 Complex matrix multiplication - * @param[in] *pSrcA points to the first input complex matrix structure - * @param[in] *pSrcB points to the second input complex matrix structure - * @param[out] *pDst points to output complex matrix structure - * @return The function returns either - * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. - * - * @details - * Scaling and Overflow Behavior: - * - * \par - * The function is implemented using an internal 64-bit accumulator. - * The accumulator has a 2.62 format and maintains full precision of the intermediate - * multiplication results but provides only a single guard bit. There is no saturation - * on intermediate additions. Thus, if the accumulator overflows it wraps around and - * distorts the result. The input signals should be scaled down to avoid intermediate - * overflows. The input is thus scaled down by log2(numColsA) bits - * to avoid overflows, as a total of numColsA additions are performed internally. - * The 2.62 accumulator is right shifted by 31 bits and saturated to 1.31 format to yield the final result. - * - * - */ - -arm_status arm_mat_cmplx_mult_q31( - const arm_matrix_instance_q31 * pSrcA, - const arm_matrix_instance_q31 * pSrcB, - arm_matrix_instance_q31 * pDst) -{ - q31_t *pIn1 = pSrcA->pData; /* input data matrix pointer A */ - q31_t *pIn2 = pSrcB->pData; /* input data matrix pointer B */ - q31_t *pInA = pSrcA->pData; /* input data matrix pointer A */ - q31_t *pOut = pDst->pData; /* output data matrix pointer */ - q31_t *px; /* Temporary output data matrix pointer */ - uint16_t numRowsA = pSrcA->numRows; /* number of rows of input matrix A */ - uint16_t numColsB = pSrcB->numCols; /* number of columns of input matrix B */ - uint16_t numColsA = pSrcA->numCols; /* number of columns of input matrix A */ - q63_t sumReal1, sumImag1; /* accumulator */ - q31_t a0, b0, c0, d0; - q31_t a1, b1, c1, d1; - - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - uint16_t col, i = 0U, j, row = numRowsA, colCnt; /* loop counters */ - arm_status status; /* status of matrix multiplication */ - -#ifdef ARM_MATH_MATRIX_CHECK - - - /* Check for matrix mismatch condition */ - if ((pSrcA->numCols != pSrcB->numRows) || - (pSrcA->numRows != pDst->numRows) || (pSrcB->numCols != pDst->numCols)) - { - - /* Set status as ARM_MATH_SIZE_MISMATCH */ - status = ARM_MATH_SIZE_MISMATCH; - } - else -#endif /* #ifdef ARM_MATH_MATRIX_CHECK */ - - { - /* The following loop performs the dot-product of each row in pSrcA with each column in pSrcB */ - /* row loop */ - do - { - /* Output pointer is set to starting address of the row being processed */ - px = pOut + 2 * i; - - /* For every row wise process, the column loop counter is to be initiated */ - col = numColsB; - - /* For every row wise process, the pIn2 pointer is set - ** to the starting address of the pSrcB data */ - pIn2 = pSrcB->pData; - - j = 0U; - - /* column loop */ - do - { - /* Set the variable sum, that acts as accumulator, to zero */ - sumReal1 = 0.0; - sumImag1 = 0.0; - - /* Initiate the pointer pIn1 to point to the starting address of the column being processed */ - pIn1 = pInA; - - /* Apply loop unrolling and compute 4 MACs simultaneously. */ - colCnt = numColsA >> 2; - - /* matrix multiplication */ - while (colCnt > 0U) - { - - /* Reading real part of complex matrix A */ - a0 = *pIn1; - - /* Reading real part of complex matrix B */ - c0 = *pIn2; - - /* Reading imaginary part of complex matrix A */ - b0 = *(pIn1 + 1U); - - /* Reading imaginary part of complex matrix B */ - d0 = *(pIn2 + 1U); - - /* Multiply and Accumlates */ - sumReal1 += (q63_t) a0 *c0; - sumImag1 += (q63_t) b0 *c0; - - /* update pointers */ - pIn1 += 2U; - pIn2 += 2 * numColsB; - - /* Multiply and Accumlates */ - sumReal1 -= (q63_t) b0 *d0; - sumImag1 += (q63_t) a0 *d0; - - /* c(m,n) = a(1,1)*b(1,1) + a(1,2) * b(2,1) + .... + a(m,p)*b(p,n) */ - - /* read real and imag values from pSrcA and pSrcB buffer */ - a1 = *pIn1; - c1 = *pIn2; - b1 = *(pIn1 + 1U); - d1 = *(pIn2 + 1U); - - /* Multiply and Accumlates */ - sumReal1 += (q63_t) a1 *c1; - sumImag1 += (q63_t) b1 *c1; - - /* update pointers */ - pIn1 += 2U; - pIn2 += 2 * numColsB; - - /* Multiply and Accumlates */ - sumReal1 -= (q63_t) b1 *d1; - sumImag1 += (q63_t) a1 *d1; - - a0 = *pIn1; - c0 = *pIn2; - - b0 = *(pIn1 + 1U); - d0 = *(pIn2 + 1U); - - /* Multiply and Accumlates */ - sumReal1 += (q63_t) a0 *c0; - sumImag1 += (q63_t) b0 *c0; - - /* update pointers */ - pIn1 += 2U; - pIn2 += 2 * numColsB; - - /* Multiply and Accumlates */ - sumReal1 -= (q63_t) b0 *d0; - sumImag1 += (q63_t) a0 *d0; - - /* c(m,n) = a(1,1)*b(1,1) + a(1,2) * b(2,1) + .... + a(m,p)*b(p,n) */ - - a1 = *pIn1; - c1 = *pIn2; - - b1 = *(pIn1 + 1U); - d1 = *(pIn2 + 1U); - - /* Multiply and Accumlates */ - sumReal1 += (q63_t) a1 *c1; - sumImag1 += (q63_t) b1 *c1; - - /* update pointers */ - pIn1 += 2U; - pIn2 += 2 * numColsB; - - /* Multiply and Accumlates */ - sumReal1 -= (q63_t) b1 *d1; - sumImag1 += (q63_t) a1 *d1; - - /* Decrement the loop count */ - colCnt--; - } - - /* If the columns of pSrcA is not a multiple of 4, compute any remaining MACs here. - ** No loop unrolling is used. */ - colCnt = numColsA % 0x4U; - - while (colCnt > 0U) - { - /* c(m,n) = a(1,1)*b(1,1) + a(1,2) * b(2,1) + .... + a(m,p)*b(p,n) */ - a1 = *pIn1; - c1 = *pIn2; - - b1 = *(pIn1 + 1U); - d1 = *(pIn2 + 1U); - - /* Multiply and Accumlates */ - sumReal1 += (q63_t) a1 *c1; - sumImag1 += (q63_t) b1 *c1; - - /* update pointers */ - pIn1 += 2U; - pIn2 += 2 * numColsB; - - /* Multiply and Accumlates */ - sumReal1 -= (q63_t) b1 *d1; - sumImag1 += (q63_t) a1 *d1; - - /* Decrement the loop counter */ - colCnt--; - } - - /* Store the result in the destination buffer */ - *px++ = (q31_t) clip_q63_to_q31(sumReal1 >> 31); - *px++ = (q31_t) clip_q63_to_q31(sumImag1 >> 31); - - /* Update the pointer pIn2 to point to the starting address of the next column */ - j++; - pIn2 = pSrcB->pData + 2U * j; - - /* Decrement the column loop counter */ - col--; - - } while (col > 0U); - - /* Update the pointer pInA to point to the starting address of the next row */ - i = i + numColsB; - pInA = pInA + 2 * numColsA; - - /* Decrement the row loop counter */ - row--; - - } while (row > 0U); - - /* Set status as ARM_MATH_SUCCESS */ - status = ARM_MATH_SUCCESS; - } - - /* Return to application */ - return (status); -} - -/** - * @} end of MatrixMult group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_init_f32.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_init_f32.c deleted file mode 100644 index 783f7be..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_init_f32.c +++ /dev/null @@ -1,76 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_mat_init_f32.c - * Description: Floating-point matrix initialization - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupMatrix - */ - -/** - * @defgroup MatrixInit Matrix Initialization - * - * Initializes the underlying matrix data structure. - * The functions set the numRows, - * numCols, and pData fields - * of the matrix data structure. - */ - -/** - * @addtogroup MatrixInit - * @{ - */ - -/** - * @brief Floating-point matrix initialization. - * @param[in,out] *S points to an instance of the floating-point matrix structure. - * @param[in] nRows number of rows in the matrix. - * @param[in] nColumns number of columns in the matrix. - * @param[in] *pData points to the matrix data array. - * @return none - */ - -void arm_mat_init_f32( - arm_matrix_instance_f32 * S, - uint16_t nRows, - uint16_t nColumns, - float32_t * pData) -{ - /* Assign Number of Rows */ - S->numRows = nRows; - - /* Assign Number of Columns */ - S->numCols = nColumns; - - /* Assign Data pointer */ - S->pData = pData; -} - -/** - * @} end of MatrixInit group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_init_q15.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_init_q15.c deleted file mode 100644 index 08da19f..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_init_q15.c +++ /dev/null @@ -1,67 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_mat_init_q15.c - * Description: Q15 matrix initialization - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupMatrix - */ - -/** - * @addtogroup MatrixInit - * @{ - */ - - /** - * @brief Q15 matrix initialization. - * @param[in,out] *S points to an instance of the floating-point matrix structure. - * @param[in] nRows number of rows in the matrix. - * @param[in] nColumns number of columns in the matrix. - * @param[in] *pData points to the matrix data array. - * @return none - */ - -void arm_mat_init_q15( - arm_matrix_instance_q15 * S, - uint16_t nRows, - uint16_t nColumns, - q15_t * pData) -{ - /* Assign Number of Rows */ - S->numRows = nRows; - - /* Assign Number of Columns */ - S->numCols = nColumns; - - /* Assign Data pointer */ - S->pData = pData; -} - -/** - * @} end of MatrixInit group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_init_q31.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_init_q31.c deleted file mode 100644 index 22e6f6d..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_init_q31.c +++ /dev/null @@ -1,72 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_mat_init_q31.c - * Description: Q31 matrix initialization - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupMatrix - */ - -/** - * @defgroup MatrixInit Matrix Initialization - * - */ - -/** - * @addtogroup MatrixInit - * @{ - */ - - /** - * @brief Q31 matrix initialization. - * @param[in,out] *S points to an instance of the floating-point matrix structure. - * @param[in] nRows number of rows in the matrix. - * @param[in] nColumns number of columns in the matrix. - * @param[in] *pData points to the matrix data array. - * @return none - */ - -void arm_mat_init_q31( - arm_matrix_instance_q31 * S, - uint16_t nRows, - uint16_t nColumns, - q31_t * pData) -{ - /* Assign Number of Rows */ - S->numRows = nRows; - - /* Assign Number of Columns */ - S->numCols = nColumns; - - /* Assign Data pointer */ - S->pData = pData; -} - -/** - * @} end of MatrixInit group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_inverse_f32.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_inverse_f32.c deleted file mode 100644 index b82373a..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_inverse_f32.c +++ /dev/null @@ -1,691 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_mat_inverse_f32.c - * Description: Floating-point matrix inverse - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupMatrix - */ - -/** - * @defgroup MatrixInv Matrix Inverse - * - * Computes the inverse of a matrix. - * - * The inverse is defined only if the input matrix is square and non-singular (the determinant - * is non-zero). The function checks that the input and output matrices are square and of the - * same size. - * - * Matrix inversion is numerically sensitive and the CMSIS DSP library only supports matrix - * inversion of floating-point matrices. - * - * \par Algorithm - * The Gauss-Jordan method is used to find the inverse. - * The algorithm performs a sequence of elementary row-operations until it - * reduces the input matrix to an identity matrix. Applying the same sequence - * of elementary row-operations to an identity matrix yields the inverse matrix. - * If the input matrix is singular, then the algorithm terminates and returns error status - * ARM_MATH_SINGULAR. - * \image html MatrixInverse.gif "Matrix Inverse of a 3 x 3 matrix using Gauss-Jordan Method" - */ - -/** - * @addtogroup MatrixInv - * @{ - */ - -/** - * @brief Floating-point matrix inverse. - * @param[in] *pSrc points to input matrix structure - * @param[out] *pDst points to output matrix structure - * @return The function returns - * ARM_MATH_SIZE_MISMATCH if the input matrix is not square or if the size - * of the output matrix does not match the size of the input matrix. - * If the input matrix is found to be singular (non-invertible), then the function returns - * ARM_MATH_SINGULAR. Otherwise, the function returns ARM_MATH_SUCCESS. - */ - -arm_status arm_mat_inverse_f32( - const arm_matrix_instance_f32 * pSrc, - arm_matrix_instance_f32 * pDst) -{ - float32_t *pIn = pSrc->pData; /* input data matrix pointer */ - float32_t *pOut = pDst->pData; /* output data matrix pointer */ - float32_t *pInT1, *pInT2; /* Temporary input data matrix pointer */ - float32_t *pOutT1, *pOutT2; /* Temporary output data matrix pointer */ - float32_t *pPivotRowIn, *pPRT_in, *pPivotRowDst, *pPRT_pDst; /* Temporary input and output data matrix pointer */ - uint32_t numRows = pSrc->numRows; /* Number of rows in the matrix */ - uint32_t numCols = pSrc->numCols; /* Number of Cols in the matrix */ - -#if defined (ARM_MATH_DSP) - float32_t maxC; /* maximum value in the column */ - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - float32_t Xchg, in = 0.0f, in1; /* Temporary input values */ - uint32_t i, rowCnt, flag = 0U, j, loopCnt, k, l; /* loop counters */ - arm_status status; /* status of matrix inverse */ - -#ifdef ARM_MATH_MATRIX_CHECK - - - /* Check for matrix mismatch condition */ - if ((pSrc->numRows != pSrc->numCols) || (pDst->numRows != pDst->numCols) - || (pSrc->numRows != pDst->numRows)) - { - /* Set status as ARM_MATH_SIZE_MISMATCH */ - status = ARM_MATH_SIZE_MISMATCH; - } - else -#endif /* #ifdef ARM_MATH_MATRIX_CHECK */ - - { - - /*-------------------------------------------------------------------------------------------------------------- - * Matrix Inverse can be solved using elementary row operations. - * - * Gauss-Jordan Method: - * - * 1. First combine the identity matrix and the input matrix separated by a bar to form an - * augmented matrix as follows: - * _ _ _ _ - * | a11 a12 | 1 0 | | X11 X12 | - * | | | = | | - * |_ a21 a22 | 0 1 _| |_ X21 X21 _| - * - * 2. In our implementation, pDst Matrix is used as identity matrix. - * - * 3. Begin with the first row. Let i = 1. - * - * 4. Check to see if the pivot for column i is the greatest of the column. - * The pivot is the element of the main diagonal that is on the current row. - * For instance, if working with row i, then the pivot element is aii. - * If the pivot is not the most significant of the columns, exchange that row with a row - * below it that does contain the most significant value in column i. If the most - * significant value of the column is zero, then an inverse to that matrix does not exist. - * The most significant value of the column is the absolute maximum. - * - * 5. Divide every element of row i by the pivot. - * - * 6. For every row below and row i, replace that row with the sum of that row and - * a multiple of row i so that each new element in column i below row i is zero. - * - * 7. Move to the next row and column and repeat steps 2 through 5 until you have zeros - * for every element below and above the main diagonal. - * - * 8. Now an identical matrix is formed to the left of the bar(input matrix, pSrc). - * Therefore, the matrix to the right of the bar is our solution(pDst matrix, pDst). - *----------------------------------------------------------------------------------------------------------------*/ - - /* Working pointer for destination matrix */ - pOutT1 = pOut; - - /* Loop over the number of rows */ - rowCnt = numRows; - - /* Making the destination matrix as identity matrix */ - while (rowCnt > 0U) - { - /* Writing all zeroes in lower triangle of the destination matrix */ - j = numRows - rowCnt; - while (j > 0U) - { - *pOutT1++ = 0.0f; - j--; - } - - /* Writing all ones in the diagonal of the destination matrix */ - *pOutT1++ = 1.0f; - - /* Writing all zeroes in upper triangle of the destination matrix */ - j = rowCnt - 1U; - while (j > 0U) - { - *pOutT1++ = 0.0f; - j--; - } - - /* Decrement the loop counter */ - rowCnt--; - } - - /* Loop over the number of columns of the input matrix. - All the elements in each column are processed by the row operations */ - loopCnt = numCols; - - /* Index modifier to navigate through the columns */ - l = 0U; - - while (loopCnt > 0U) - { - /* Check if the pivot element is zero.. - * If it is zero then interchange the row with non zero row below. - * If there is no non zero element to replace in the rows below, - * then the matrix is Singular. */ - - /* Working pointer for the input matrix that points - * to the pivot element of the particular row */ - pInT1 = pIn + (l * numCols); - - /* Working pointer for the destination matrix that points - * to the pivot element of the particular row */ - pOutT1 = pOut + (l * numCols); - - /* Temporary variable to hold the pivot value */ - in = *pInT1; - - /* Grab the most significant value from column l */ - maxC = 0; - for (i = l; i < numRows; i++) - { - maxC = *pInT1 > 0 ? (*pInT1 > maxC ? *pInT1 : maxC) : (-*pInT1 > maxC ? -*pInT1 : maxC); - pInT1 += numCols; - } - - /* Update the status if the matrix is singular */ - if (maxC == 0.0f) - { - return ARM_MATH_SINGULAR; - } - - /* Restore pInT1 */ - pInT1 = pIn; - - /* Destination pointer modifier */ - k = 1U; - - /* Check if the pivot element is the most significant of the column */ - if ( (in > 0.0f ? in : -in) != maxC) - { - /* Loop over the number rows present below */ - i = numRows - (l + 1U); - - while (i > 0U) - { - /* Update the input and destination pointers */ - pInT2 = pInT1 + (numCols * l); - pOutT2 = pOutT1 + (numCols * k); - - /* Look for the most significant element to - * replace in the rows below */ - if ((*pInT2 > 0.0f ? *pInT2: -*pInT2) == maxC) - { - /* Loop over number of columns - * to the right of the pilot element */ - j = numCols - l; - - while (j > 0U) - { - /* Exchange the row elements of the input matrix */ - Xchg = *pInT2; - *pInT2++ = *pInT1; - *pInT1++ = Xchg; - - /* Decrement the loop counter */ - j--; - } - - /* Loop over number of columns of the destination matrix */ - j = numCols; - - while (j > 0U) - { - /* Exchange the row elements of the destination matrix */ - Xchg = *pOutT2; - *pOutT2++ = *pOutT1; - *pOutT1++ = Xchg; - - /* Decrement the loop counter */ - j--; - } - - /* Flag to indicate whether exchange is done or not */ - flag = 1U; - - /* Break after exchange is done */ - break; - } - - /* Update the destination pointer modifier */ - k++; - - /* Decrement the loop counter */ - i--; - } - } - - /* Update the status if the matrix is singular */ - if ((flag != 1U) && (in == 0.0f)) - { - return ARM_MATH_SINGULAR; - } - - /* Points to the pivot row of input and destination matrices */ - pPivotRowIn = pIn + (l * numCols); - pPivotRowDst = pOut + (l * numCols); - - /* Temporary pointers to the pivot row pointers */ - pInT1 = pPivotRowIn; - pInT2 = pPivotRowDst; - - /* Pivot element of the row */ - in = *pPivotRowIn; - - /* Loop over number of columns - * to the right of the pilot element */ - j = (numCols - l); - - while (j > 0U) - { - /* Divide each element of the row of the input matrix - * by the pivot element */ - in1 = *pInT1; - *pInT1++ = in1 / in; - - /* Decrement the loop counter */ - j--; - } - - /* Loop over number of columns of the destination matrix */ - j = numCols; - - while (j > 0U) - { - /* Divide each element of the row of the destination matrix - * by the pivot element */ - in1 = *pInT2; - *pInT2++ = in1 / in; - - /* Decrement the loop counter */ - j--; - } - - /* Replace the rows with the sum of that row and a multiple of row i - * so that each new element in column i above row i is zero.*/ - - /* Temporary pointers for input and destination matrices */ - pInT1 = pIn; - pInT2 = pOut; - - /* index used to check for pivot element */ - i = 0U; - - /* Loop over number of rows */ - /* to be replaced by the sum of that row and a multiple of row i */ - k = numRows; - - while (k > 0U) - { - /* Check for the pivot element */ - if (i == l) - { - /* If the processing element is the pivot element, - only the columns to the right are to be processed */ - pInT1 += numCols - l; - - pInT2 += numCols; - } - else - { - /* Element of the reference row */ - in = *pInT1; - - /* Working pointers for input and destination pivot rows */ - pPRT_in = pPivotRowIn; - pPRT_pDst = pPivotRowDst; - - /* Loop over the number of columns to the right of the pivot element, - to replace the elements in the input matrix */ - j = (numCols - l); - - while (j > 0U) - { - /* Replace the element by the sum of that row - and a multiple of the reference row */ - in1 = *pInT1; - *pInT1++ = in1 - (in * *pPRT_in++); - - /* Decrement the loop counter */ - j--; - } - - /* Loop over the number of columns to - replace the elements in the destination matrix */ - j = numCols; - - while (j > 0U) - { - /* Replace the element by the sum of that row - and a multiple of the reference row */ - in1 = *pInT2; - *pInT2++ = in1 - (in * *pPRT_pDst++); - - /* Decrement the loop counter */ - j--; - } - - } - - /* Increment the temporary input pointer */ - pInT1 = pInT1 + l; - - /* Decrement the loop counter */ - k--; - - /* Increment the pivot index */ - i++; - } - - /* Increment the input pointer */ - pIn++; - - /* Decrement the loop counter */ - loopCnt--; - - /* Increment the index modifier */ - l++; - } - - -#else - - /* Run the below code for Cortex-M0 */ - - float32_t Xchg, in = 0.0f; /* Temporary input values */ - uint32_t i, rowCnt, flag = 0U, j, loopCnt, k, l; /* loop counters */ - arm_status status; /* status of matrix inverse */ - -#ifdef ARM_MATH_MATRIX_CHECK - - /* Check for matrix mismatch condition */ - if ((pSrc->numRows != pSrc->numCols) || (pDst->numRows != pDst->numCols) - || (pSrc->numRows != pDst->numRows)) - { - /* Set status as ARM_MATH_SIZE_MISMATCH */ - status = ARM_MATH_SIZE_MISMATCH; - } - else -#endif /* #ifdef ARM_MATH_MATRIX_CHECK */ - { - - /*-------------------------------------------------------------------------------------------------------------- - * Matrix Inverse can be solved using elementary row operations. - * - * Gauss-Jordan Method: - * - * 1. First combine the identity matrix and the input matrix separated by a bar to form an - * augmented matrix as follows: - * _ _ _ _ _ _ _ _ - * | | a11 a12 | | | 1 0 | | | X11 X12 | - * | | | | | | | = | | - * |_ |_ a21 a22 _| | |_0 1 _| _| |_ X21 X21 _| - * - * 2. In our implementation, pDst Matrix is used as identity matrix. - * - * 3. Begin with the first row. Let i = 1. - * - * 4. Check to see if the pivot for row i is zero. - * The pivot is the element of the main diagonal that is on the current row. - * For instance, if working with row i, then the pivot element is aii. - * If the pivot is zero, exchange that row with a row below it that does not - * contain a zero in column i. If this is not possible, then an inverse - * to that matrix does not exist. - * - * 5. Divide every element of row i by the pivot. - * - * 6. For every row below and row i, replace that row with the sum of that row and - * a multiple of row i so that each new element in column i below row i is zero. - * - * 7. Move to the next row and column and repeat steps 2 through 5 until you have zeros - * for every element below and above the main diagonal. - * - * 8. Now an identical matrix is formed to the left of the bar(input matrix, src). - * Therefore, the matrix to the right of the bar is our solution(dst matrix, dst). - *----------------------------------------------------------------------------------------------------------------*/ - - /* Working pointer for destination matrix */ - pOutT1 = pOut; - - /* Loop over the number of rows */ - rowCnt = numRows; - - /* Making the destination matrix as identity matrix */ - while (rowCnt > 0U) - { - /* Writing all zeroes in lower triangle of the destination matrix */ - j = numRows - rowCnt; - while (j > 0U) - { - *pOutT1++ = 0.0f; - j--; - } - - /* Writing all ones in the diagonal of the destination matrix */ - *pOutT1++ = 1.0f; - - /* Writing all zeroes in upper triangle of the destination matrix */ - j = rowCnt - 1U; - while (j > 0U) - { - *pOutT1++ = 0.0f; - j--; - } - - /* Decrement the loop counter */ - rowCnt--; - } - - /* Loop over the number of columns of the input matrix. - All the elements in each column are processed by the row operations */ - loopCnt = numCols; - - /* Index modifier to navigate through the columns */ - l = 0U; - //for(loopCnt = 0U; loopCnt < numCols; loopCnt++) - while (loopCnt > 0U) - { - /* Check if the pivot element is zero.. - * If it is zero then interchange the row with non zero row below. - * If there is no non zero element to replace in the rows below, - * then the matrix is Singular. */ - - /* Working pointer for the input matrix that points - * to the pivot element of the particular row */ - pInT1 = pIn + (l * numCols); - - /* Working pointer for the destination matrix that points - * to the pivot element of the particular row */ - pOutT1 = pOut + (l * numCols); - - /* Temporary variable to hold the pivot value */ - in = *pInT1; - - /* Destination pointer modifier */ - k = 1U; - - /* Check if the pivot element is zero */ - if (*pInT1 == 0.0f) - { - /* Loop over the number rows present below */ - for (i = (l + 1U); i < numRows; i++) - { - /* Update the input and destination pointers */ - pInT2 = pInT1 + (numCols * l); - pOutT2 = pOutT1 + (numCols * k); - - /* Check if there is a non zero pivot element to - * replace in the rows below */ - if (*pInT2 != 0.0f) - { - /* Loop over number of columns - * to the right of the pilot element */ - for (j = 0U; j < (numCols - l); j++) - { - /* Exchange the row elements of the input matrix */ - Xchg = *pInT2; - *pInT2++ = *pInT1; - *pInT1++ = Xchg; - } - - for (j = 0U; j < numCols; j++) - { - Xchg = *pOutT2; - *pOutT2++ = *pOutT1; - *pOutT1++ = Xchg; - } - - /* Flag to indicate whether exchange is done or not */ - flag = 1U; - - /* Break after exchange is done */ - break; - } - - /* Update the destination pointer modifier */ - k++; - } - } - - /* Update the status if the matrix is singular */ - if ((flag != 1U) && (in == 0.0f)) - { - return ARM_MATH_SINGULAR; - } - - /* Points to the pivot row of input and destination matrices */ - pPivotRowIn = pIn + (l * numCols); - pPivotRowDst = pOut + (l * numCols); - - /* Temporary pointers to the pivot row pointers */ - pInT1 = pPivotRowIn; - pOutT1 = pPivotRowDst; - - /* Pivot element of the row */ - in = *(pIn + (l * numCols)); - - /* Loop over number of columns - * to the right of the pilot element */ - for (j = 0U; j < (numCols - l); j++) - { - /* Divide each element of the row of the input matrix - * by the pivot element */ - *pInT1 = *pInT1 / in; - pInT1++; - } - for (j = 0U; j < numCols; j++) - { - /* Divide each element of the row of the destination matrix - * by the pivot element */ - *pOutT1 = *pOutT1 / in; - pOutT1++; - } - - /* Replace the rows with the sum of that row and a multiple of row i - * so that each new element in column i above row i is zero.*/ - - /* Temporary pointers for input and destination matrices */ - pInT1 = pIn; - pOutT1 = pOut; - - for (i = 0U; i < numRows; i++) - { - /* Check for the pivot element */ - if (i == l) - { - /* If the processing element is the pivot element, - only the columns to the right are to be processed */ - pInT1 += numCols - l; - pOutT1 += numCols; - } - else - { - /* Element of the reference row */ - in = *pInT1; - - /* Working pointers for input and destination pivot rows */ - pPRT_in = pPivotRowIn; - pPRT_pDst = pPivotRowDst; - - /* Loop over the number of columns to the right of the pivot element, - to replace the elements in the input matrix */ - for (j = 0U; j < (numCols - l); j++) - { - /* Replace the element by the sum of that row - and a multiple of the reference row */ - *pInT1 = *pInT1 - (in * *pPRT_in++); - pInT1++; - } - /* Loop over the number of columns to - replace the elements in the destination matrix */ - for (j = 0U; j < numCols; j++) - { - /* Replace the element by the sum of that row - and a multiple of the reference row */ - *pOutT1 = *pOutT1 - (in * *pPRT_pDst++); - pOutT1++; - } - - } - /* Increment the temporary input pointer */ - pInT1 = pInT1 + l; - } - /* Increment the input pointer */ - pIn++; - - /* Decrement the loop counter */ - loopCnt--; - /* Increment the index modifier */ - l++; - } - - -#endif /* #if defined (ARM_MATH_DSP) */ - - /* Set status as ARM_MATH_SUCCESS */ - status = ARM_MATH_SUCCESS; - - if ((flag != 1U) && (in == 0.0f)) - { - pIn = pSrc->pData; - for (i = 0; i < numRows * numCols; i++) - { - if (pIn[i] != 0.0f) - break; - } - - if (i == numRows * numCols) - status = ARM_MATH_SINGULAR; - } - } - /* Return to application */ - return (status); -} - -/** - * @} end of MatrixInv group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_inverse_f64.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_inverse_f64.c deleted file mode 100644 index 54e5982..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_inverse_f64.c +++ /dev/null @@ -1,691 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_mat_inverse_f64.c - * Description: Floating-point matrix inverse - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupMatrix - */ - -/** - * @defgroup MatrixInv Matrix Inverse - * - * Computes the inverse of a matrix. - * - * The inverse is defined only if the input matrix is square and non-singular (the determinant - * is non-zero). The function checks that the input and output matrices are square and of the - * same size. - * - * Matrix inversion is numerically sensitive and the CMSIS DSP library only supports matrix - * inversion of floating-point matrices. - * - * \par Algorithm - * The Gauss-Jordan method is used to find the inverse. - * The algorithm performs a sequence of elementary row-operations until it - * reduces the input matrix to an identity matrix. Applying the same sequence - * of elementary row-operations to an identity matrix yields the inverse matrix. - * If the input matrix is singular, then the algorithm terminates and returns error status - * ARM_MATH_SINGULAR. - * \image html MatrixInverse.gif "Matrix Inverse of a 3 x 3 matrix using Gauss-Jordan Method" - */ - -/** - * @addtogroup MatrixInv - * @{ - */ - -/** - * @brief Floating-point matrix inverse. - * @param[in] *pSrc points to input matrix structure - * @param[out] *pDst points to output matrix structure - * @return The function returns - * ARM_MATH_SIZE_MISMATCH if the input matrix is not square or if the size - * of the output matrix does not match the size of the input matrix. - * If the input matrix is found to be singular (non-invertible), then the function returns - * ARM_MATH_SINGULAR. Otherwise, the function returns ARM_MATH_SUCCESS. - */ - -arm_status arm_mat_inverse_f64( - const arm_matrix_instance_f64 * pSrc, - arm_matrix_instance_f64 * pDst) -{ - float64_t *pIn = pSrc->pData; /* input data matrix pointer */ - float64_t *pOut = pDst->pData; /* output data matrix pointer */ - float64_t *pInT1, *pInT2; /* Temporary input data matrix pointer */ - float64_t *pOutT1, *pOutT2; /* Temporary output data matrix pointer */ - float64_t *pPivotRowIn, *pPRT_in, *pPivotRowDst, *pPRT_pDst; /* Temporary input and output data matrix pointer */ - uint32_t numRows = pSrc->numRows; /* Number of rows in the matrix */ - uint32_t numCols = pSrc->numCols; /* Number of Cols in the matrix */ - -#if defined (ARM_MATH_DSP) - float64_t maxC; /* maximum value in the column */ - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - float64_t Xchg, in = 0.0f, in1; /* Temporary input values */ - uint32_t i, rowCnt, flag = 0U, j, loopCnt, k, l; /* loop counters */ - arm_status status; /* status of matrix inverse */ - -#ifdef ARM_MATH_MATRIX_CHECK - - - /* Check for matrix mismatch condition */ - if ((pSrc->numRows != pSrc->numCols) || (pDst->numRows != pDst->numCols) - || (pSrc->numRows != pDst->numRows)) - { - /* Set status as ARM_MATH_SIZE_MISMATCH */ - status = ARM_MATH_SIZE_MISMATCH; - } - else -#endif /* #ifdef ARM_MATH_MATRIX_CHECK */ - - { - - /*-------------------------------------------------------------------------------------------------------------- - * Matrix Inverse can be solved using elementary row operations. - * - * Gauss-Jordan Method: - * - * 1. First combine the identity matrix and the input matrix separated by a bar to form an - * augmented matrix as follows: - * _ _ _ _ - * | a11 a12 | 1 0 | | X11 X12 | - * | | | = | | - * |_ a21 a22 | 0 1 _| |_ X21 X21 _| - * - * 2. In our implementation, pDst Matrix is used as identity matrix. - * - * 3. Begin with the first row. Let i = 1. - * - * 4. Check to see if the pivot for column i is the greatest of the column. - * The pivot is the element of the main diagonal that is on the current row. - * For instance, if working with row i, then the pivot element is aii. - * If the pivot is not the most significant of the columns, exchange that row with a row - * below it that does contain the most significant value in column i. If the most - * significant value of the column is zero, then an inverse to that matrix does not exist. - * The most significant value of the column is the absolute maximum. - * - * 5. Divide every element of row i by the pivot. - * - * 6. For every row below and row i, replace that row with the sum of that row and - * a multiple of row i so that each new element in column i below row i is zero. - * - * 7. Move to the next row and column and repeat steps 2 through 5 until you have zeros - * for every element below and above the main diagonal. - * - * 8. Now an identical matrix is formed to the left of the bar(input matrix, pSrc). - * Therefore, the matrix to the right of the bar is our solution(pDst matrix, pDst). - *----------------------------------------------------------------------------------------------------------------*/ - - /* Working pointer for destination matrix */ - pOutT1 = pOut; - - /* Loop over the number of rows */ - rowCnt = numRows; - - /* Making the destination matrix as identity matrix */ - while (rowCnt > 0U) - { - /* Writing all zeroes in lower triangle of the destination matrix */ - j = numRows - rowCnt; - while (j > 0U) - { - *pOutT1++ = 0.0f; - j--; - } - - /* Writing all ones in the diagonal of the destination matrix */ - *pOutT1++ = 1.0f; - - /* Writing all zeroes in upper triangle of the destination matrix */ - j = rowCnt - 1U; - while (j > 0U) - { - *pOutT1++ = 0.0f; - j--; - } - - /* Decrement the loop counter */ - rowCnt--; - } - - /* Loop over the number of columns of the input matrix. - All the elements in each column are processed by the row operations */ - loopCnt = numCols; - - /* Index modifier to navigate through the columns */ - l = 0U; - - while (loopCnt > 0U) - { - /* Check if the pivot element is zero.. - * If it is zero then interchange the row with non zero row below. - * If there is no non zero element to replace in the rows below, - * then the matrix is Singular. */ - - /* Working pointer for the input matrix that points - * to the pivot element of the particular row */ - pInT1 = pIn + (l * numCols); - - /* Working pointer for the destination matrix that points - * to the pivot element of the particular row */ - pOutT1 = pOut + (l * numCols); - - /* Temporary variable to hold the pivot value */ - in = *pInT1; - - /* Grab the most significant value from column l */ - maxC = 0; - for (i = l; i < numRows; i++) - { - maxC = *pInT1 > 0 ? (*pInT1 > maxC ? *pInT1 : maxC) : (-*pInT1 > maxC ? -*pInT1 : maxC); - pInT1 += numCols; - } - - /* Update the status if the matrix is singular */ - if (maxC == 0.0f) - { - return ARM_MATH_SINGULAR; - } - - /* Restore pInT1 */ - pInT1 = pIn; - - /* Destination pointer modifier */ - k = 1U; - - /* Check if the pivot element is the most significant of the column */ - if ( (in > 0.0f ? in : -in) != maxC) - { - /* Loop over the number rows present below */ - i = numRows - (l + 1U); - - while (i > 0U) - { - /* Update the input and destination pointers */ - pInT2 = pInT1 + (numCols * l); - pOutT2 = pOutT1 + (numCols * k); - - /* Look for the most significant element to - * replace in the rows below */ - if ((*pInT2 > 0.0f ? *pInT2: -*pInT2) == maxC) - { - /* Loop over number of columns - * to the right of the pilot element */ - j = numCols - l; - - while (j > 0U) - { - /* Exchange the row elements of the input matrix */ - Xchg = *pInT2; - *pInT2++ = *pInT1; - *pInT1++ = Xchg; - - /* Decrement the loop counter */ - j--; - } - - /* Loop over number of columns of the destination matrix */ - j = numCols; - - while (j > 0U) - { - /* Exchange the row elements of the destination matrix */ - Xchg = *pOutT2; - *pOutT2++ = *pOutT1; - *pOutT1++ = Xchg; - - /* Decrement the loop counter */ - j--; - } - - /* Flag to indicate whether exchange is done or not */ - flag = 1U; - - /* Break after exchange is done */ - break; - } - - /* Update the destination pointer modifier */ - k++; - - /* Decrement the loop counter */ - i--; - } - } - - /* Update the status if the matrix is singular */ - if ((flag != 1U) && (in == 0.0f)) - { - return ARM_MATH_SINGULAR; - } - - /* Points to the pivot row of input and destination matrices */ - pPivotRowIn = pIn + (l * numCols); - pPivotRowDst = pOut + (l * numCols); - - /* Temporary pointers to the pivot row pointers */ - pInT1 = pPivotRowIn; - pInT2 = pPivotRowDst; - - /* Pivot element of the row */ - in = *pPivotRowIn; - - /* Loop over number of columns - * to the right of the pilot element */ - j = (numCols - l); - - while (j > 0U) - { - /* Divide each element of the row of the input matrix - * by the pivot element */ - in1 = *pInT1; - *pInT1++ = in1 / in; - - /* Decrement the loop counter */ - j--; - } - - /* Loop over number of columns of the destination matrix */ - j = numCols; - - while (j > 0U) - { - /* Divide each element of the row of the destination matrix - * by the pivot element */ - in1 = *pInT2; - *pInT2++ = in1 / in; - - /* Decrement the loop counter */ - j--; - } - - /* Replace the rows with the sum of that row and a multiple of row i - * so that each new element in column i above row i is zero.*/ - - /* Temporary pointers for input and destination matrices */ - pInT1 = pIn; - pInT2 = pOut; - - /* index used to check for pivot element */ - i = 0U; - - /* Loop over number of rows */ - /* to be replaced by the sum of that row and a multiple of row i */ - k = numRows; - - while (k > 0U) - { - /* Check for the pivot element */ - if (i == l) - { - /* If the processing element is the pivot element, - only the columns to the right are to be processed */ - pInT1 += numCols - l; - - pInT2 += numCols; - } - else - { - /* Element of the reference row */ - in = *pInT1; - - /* Working pointers for input and destination pivot rows */ - pPRT_in = pPivotRowIn; - pPRT_pDst = pPivotRowDst; - - /* Loop over the number of columns to the right of the pivot element, - to replace the elements in the input matrix */ - j = (numCols - l); - - while (j > 0U) - { - /* Replace the element by the sum of that row - and a multiple of the reference row */ - in1 = *pInT1; - *pInT1++ = in1 - (in * *pPRT_in++); - - /* Decrement the loop counter */ - j--; - } - - /* Loop over the number of columns to - replace the elements in the destination matrix */ - j = numCols; - - while (j > 0U) - { - /* Replace the element by the sum of that row - and a multiple of the reference row */ - in1 = *pInT2; - *pInT2++ = in1 - (in * *pPRT_pDst++); - - /* Decrement the loop counter */ - j--; - } - - } - - /* Increment the temporary input pointer */ - pInT1 = pInT1 + l; - - /* Decrement the loop counter */ - k--; - - /* Increment the pivot index */ - i++; - } - - /* Increment the input pointer */ - pIn++; - - /* Decrement the loop counter */ - loopCnt--; - - /* Increment the index modifier */ - l++; - } - - -#else - - /* Run the below code for Cortex-M0 */ - - float64_t Xchg, in = 0.0f; /* Temporary input values */ - uint32_t i, rowCnt, flag = 0U, j, loopCnt, k, l; /* loop counters */ - arm_status status; /* status of matrix inverse */ - -#ifdef ARM_MATH_MATRIX_CHECK - - /* Check for matrix mismatch condition */ - if ((pSrc->numRows != pSrc->numCols) || (pDst->numRows != pDst->numCols) - || (pSrc->numRows != pDst->numRows)) - { - /* Set status as ARM_MATH_SIZE_MISMATCH */ - status = ARM_MATH_SIZE_MISMATCH; - } - else -#endif /* #ifdef ARM_MATH_MATRIX_CHECK */ - { - - /*-------------------------------------------------------------------------------------------------------------- - * Matrix Inverse can be solved using elementary row operations. - * - * Gauss-Jordan Method: - * - * 1. First combine the identity matrix and the input matrix separated by a bar to form an - * augmented matrix as follows: - * _ _ _ _ _ _ _ _ - * | | a11 a12 | | | 1 0 | | | X11 X12 | - * | | | | | | | = | | - * |_ |_ a21 a22 _| | |_0 1 _| _| |_ X21 X21 _| - * - * 2. In our implementation, pDst Matrix is used as identity matrix. - * - * 3. Begin with the first row. Let i = 1. - * - * 4. Check to see if the pivot for row i is zero. - * The pivot is the element of the main diagonal that is on the current row. - * For instance, if working with row i, then the pivot element is aii. - * If the pivot is zero, exchange that row with a row below it that does not - * contain a zero in column i. If this is not possible, then an inverse - * to that matrix does not exist. - * - * 5. Divide every element of row i by the pivot. - * - * 6. For every row below and row i, replace that row with the sum of that row and - * a multiple of row i so that each new element in column i below row i is zero. - * - * 7. Move to the next row and column and repeat steps 2 through 5 until you have zeros - * for every element below and above the main diagonal. - * - * 8. Now an identical matrix is formed to the left of the bar(input matrix, src). - * Therefore, the matrix to the right of the bar is our solution(dst matrix, dst). - *----------------------------------------------------------------------------------------------------------------*/ - - /* Working pointer for destination matrix */ - pOutT1 = pOut; - - /* Loop over the number of rows */ - rowCnt = numRows; - - /* Making the destination matrix as identity matrix */ - while (rowCnt > 0U) - { - /* Writing all zeroes in lower triangle of the destination matrix */ - j = numRows - rowCnt; - while (j > 0U) - { - *pOutT1++ = 0.0f; - j--; - } - - /* Writing all ones in the diagonal of the destination matrix */ - *pOutT1++ = 1.0f; - - /* Writing all zeroes in upper triangle of the destination matrix */ - j = rowCnt - 1U; - while (j > 0U) - { - *pOutT1++ = 0.0f; - j--; - } - - /* Decrement the loop counter */ - rowCnt--; - } - - /* Loop over the number of columns of the input matrix. - All the elements in each column are processed by the row operations */ - loopCnt = numCols; - - /* Index modifier to navigate through the columns */ - l = 0U; - //for(loopCnt = 0U; loopCnt < numCols; loopCnt++) - while (loopCnt > 0U) - { - /* Check if the pivot element is zero.. - * If it is zero then interchange the row with non zero row below. - * If there is no non zero element to replace in the rows below, - * then the matrix is Singular. */ - - /* Working pointer for the input matrix that points - * to the pivot element of the particular row */ - pInT1 = pIn + (l * numCols); - - /* Working pointer for the destination matrix that points - * to the pivot element of the particular row */ - pOutT1 = pOut + (l * numCols); - - /* Temporary variable to hold the pivot value */ - in = *pInT1; - - /* Destination pointer modifier */ - k = 1U; - - /* Check if the pivot element is zero */ - if (*pInT1 == 0.0f) - { - /* Loop over the number rows present below */ - for (i = (l + 1U); i < numRows; i++) - { - /* Update the input and destination pointers */ - pInT2 = pInT1 + (numCols * l); - pOutT2 = pOutT1 + (numCols * k); - - /* Check if there is a non zero pivot element to - * replace in the rows below */ - if (*pInT2 != 0.0f) - { - /* Loop over number of columns - * to the right of the pilot element */ - for (j = 0U; j < (numCols - l); j++) - { - /* Exchange the row elements of the input matrix */ - Xchg = *pInT2; - *pInT2++ = *pInT1; - *pInT1++ = Xchg; - } - - for (j = 0U; j < numCols; j++) - { - Xchg = *pOutT2; - *pOutT2++ = *pOutT1; - *pOutT1++ = Xchg; - } - - /* Flag to indicate whether exchange is done or not */ - flag = 1U; - - /* Break after exchange is done */ - break; - } - - /* Update the destination pointer modifier */ - k++; - } - } - - /* Update the status if the matrix is singular */ - if ((flag != 1U) && (in == 0.0f)) - { - return ARM_MATH_SINGULAR; - } - - /* Points to the pivot row of input and destination matrices */ - pPivotRowIn = pIn + (l * numCols); - pPivotRowDst = pOut + (l * numCols); - - /* Temporary pointers to the pivot row pointers */ - pInT1 = pPivotRowIn; - pOutT1 = pPivotRowDst; - - /* Pivot element of the row */ - in = *(pIn + (l * numCols)); - - /* Loop over number of columns - * to the right of the pilot element */ - for (j = 0U; j < (numCols - l); j++) - { - /* Divide each element of the row of the input matrix - * by the pivot element */ - *pInT1 = *pInT1 / in; - pInT1++; - } - for (j = 0U; j < numCols; j++) - { - /* Divide each element of the row of the destination matrix - * by the pivot element */ - *pOutT1 = *pOutT1 / in; - pOutT1++; - } - - /* Replace the rows with the sum of that row and a multiple of row i - * so that each new element in column i above row i is zero.*/ - - /* Temporary pointers for input and destination matrices */ - pInT1 = pIn; - pOutT1 = pOut; - - for (i = 0U; i < numRows; i++) - { - /* Check for the pivot element */ - if (i == l) - { - /* If the processing element is the pivot element, - only the columns to the right are to be processed */ - pInT1 += numCols - l; - pOutT1 += numCols; - } - else - { - /* Element of the reference row */ - in = *pInT1; - - /* Working pointers for input and destination pivot rows */ - pPRT_in = pPivotRowIn; - pPRT_pDst = pPivotRowDst; - - /* Loop over the number of columns to the right of the pivot element, - to replace the elements in the input matrix */ - for (j = 0U; j < (numCols - l); j++) - { - /* Replace the element by the sum of that row - and a multiple of the reference row */ - *pInT1 = *pInT1 - (in * *pPRT_in++); - pInT1++; - } - /* Loop over the number of columns to - replace the elements in the destination matrix */ - for (j = 0U; j < numCols; j++) - { - /* Replace the element by the sum of that row - and a multiple of the reference row */ - *pOutT1 = *pOutT1 - (in * *pPRT_pDst++); - pOutT1++; - } - - } - /* Increment the temporary input pointer */ - pInT1 = pInT1 + l; - } - /* Increment the input pointer */ - pIn++; - - /* Decrement the loop counter */ - loopCnt--; - /* Increment the index modifier */ - l++; - } - - -#endif /* #if defined (ARM_MATH_DSP) */ - - /* Set status as ARM_MATH_SUCCESS */ - status = ARM_MATH_SUCCESS; - - if ((flag != 1U) && (in == 0.0f)) - { - pIn = pSrc->pData; - for (i = 0; i < numRows * numCols; i++) - { - if (pIn[i] != 0.0f) - break; - } - - if (i == numRows * numCols) - status = ARM_MATH_SINGULAR; - } - } - /* Return to application */ - return (status); -} - -/** - * @} end of MatrixInv group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_mult_f32.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_mult_f32.c deleted file mode 100644 index a038f2f..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_mult_f32.c +++ /dev/null @@ -1,274 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_mat_mult_f32.c - * Description: Floating-point matrix multiplication - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupMatrix - */ - -/** - * @defgroup MatrixMult Matrix Multiplication - * - * Multiplies two matrices. - * - * \image html MatrixMultiplication.gif "Multiplication of two 3 x 3 matrices" - - * Matrix multiplication is only defined if the number of columns of the - * first matrix equals the number of rows of the second matrix. - * Multiplying an M x N matrix with an N x P matrix results - * in an M x P matrix. - * When matrix size checking is enabled, the functions check: (1) that the inner dimensions of - * pSrcA and pSrcB are equal; and (2) that the size of the output - * matrix equals the outer dimensions of pSrcA and pSrcB. - */ - - -/** - * @addtogroup MatrixMult - * @{ - */ - -/** - * @brief Floating-point matrix multiplication. - * @param[in] *pSrcA points to the first input matrix structure - * @param[in] *pSrcB points to the second input matrix structure - * @param[out] *pDst points to output matrix structure - * @return The function returns either - * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. - */ - -arm_status arm_mat_mult_f32( - const arm_matrix_instance_f32 * pSrcA, - const arm_matrix_instance_f32 * pSrcB, - arm_matrix_instance_f32 * pDst) -{ - float32_t *pIn1 = pSrcA->pData; /* input data matrix pointer A */ - float32_t *pIn2 = pSrcB->pData; /* input data matrix pointer B */ - float32_t *pInA = pSrcA->pData; /* input data matrix pointer A */ - float32_t *pOut = pDst->pData; /* output data matrix pointer */ - float32_t *px; /* Temporary output data matrix pointer */ - float32_t sum; /* Accumulator */ - uint16_t numRowsA = pSrcA->numRows; /* number of rows of input matrix A */ - uint16_t numColsB = pSrcB->numCols; /* number of columns of input matrix B */ - uint16_t numColsA = pSrcA->numCols; /* number of columns of input matrix A */ - -#if defined (ARM_MATH_DSP) - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - float32_t in1, in2, in3, in4; - uint16_t col, i = 0U, j, row = numRowsA, colCnt; /* loop counters */ - arm_status status; /* status of matrix multiplication */ - -#ifdef ARM_MATH_MATRIX_CHECK - - - /* Check for matrix mismatch condition */ - if ((pSrcA->numCols != pSrcB->numRows) || - (pSrcA->numRows != pDst->numRows) || (pSrcB->numCols != pDst->numCols)) - { - - /* Set status as ARM_MATH_SIZE_MISMATCH */ - status = ARM_MATH_SIZE_MISMATCH; - } - else -#endif /* #ifdef ARM_MATH_MATRIX_CHECK */ - - { - /* The following loop performs the dot-product of each row in pSrcA with each column in pSrcB */ - /* row loop */ - do - { - /* Output pointer is set to starting address of the row being processed */ - px = pOut + i; - - /* For every row wise process, the column loop counter is to be initiated */ - col = numColsB; - - /* For every row wise process, the pIn2 pointer is set - ** to the starting address of the pSrcB data */ - pIn2 = pSrcB->pData; - - j = 0U; - - /* column loop */ - do - { - /* Set the variable sum, that acts as accumulator, to zero */ - sum = 0.0f; - - /* Initiate the pointer pIn1 to point to the starting address of the column being processed */ - pIn1 = pInA; - - /* Apply loop unrolling and compute 4 MACs simultaneously. */ - colCnt = numColsA >> 2U; - - /* matrix multiplication */ - while (colCnt > 0U) - { - /* c(m,n) = a(1,1)*b(1,1) + a(1,2) * b(2,1) + .... + a(m,p)*b(p,n) */ - in3 = *pIn2; - pIn2 += numColsB; - in1 = pIn1[0]; - in2 = pIn1[1]; - sum += in1 * in3; - in4 = *pIn2; - pIn2 += numColsB; - sum += in2 * in4; - - in3 = *pIn2; - pIn2 += numColsB; - in1 = pIn1[2]; - in2 = pIn1[3]; - sum += in1 * in3; - in4 = *pIn2; - pIn2 += numColsB; - sum += in2 * in4; - pIn1 += 4U; - - /* Decrement the loop count */ - colCnt--; - } - - /* If the columns of pSrcA is not a multiple of 4, compute any remaining MACs here. - ** No loop unrolling is used. */ - colCnt = numColsA % 0x4U; - - while (colCnt > 0U) - { - /* c(m,n) = a(1,1)*b(1,1) + a(1,2) * b(2,1) + .... + a(m,p)*b(p,n) */ - sum += *pIn1++ * (*pIn2); - pIn2 += numColsB; - - /* Decrement the loop counter */ - colCnt--; - } - - /* Store the result in the destination buffer */ - *px++ = sum; - - /* Update the pointer pIn2 to point to the starting address of the next column */ - j++; - pIn2 = pSrcB->pData + j; - - /* Decrement the column loop counter */ - col--; - - } while (col > 0U); - -#else - - /* Run the below code for Cortex-M0 */ - - float32_t *pInB = pSrcB->pData; /* input data matrix pointer B */ - uint16_t col, i = 0U, row = numRowsA, colCnt; /* loop counters */ - arm_status status; /* status of matrix multiplication */ - -#ifdef ARM_MATH_MATRIX_CHECK - - /* Check for matrix mismatch condition */ - if ((pSrcA->numCols != pSrcB->numRows) || - (pSrcA->numRows != pDst->numRows) || (pSrcB->numCols != pDst->numCols)) - { - - /* Set status as ARM_MATH_SIZE_MISMATCH */ - status = ARM_MATH_SIZE_MISMATCH; - } - else -#endif /* #ifdef ARM_MATH_MATRIX_CHECK */ - - { - /* The following loop performs the dot-product of each row in pInA with each column in pInB */ - /* row loop */ - do - { - /* Output pointer is set to starting address of the row being processed */ - px = pOut + i; - - /* For every row wise process, the column loop counter is to be initiated */ - col = numColsB; - - /* For every row wise process, the pIn2 pointer is set - ** to the starting address of the pSrcB data */ - pIn2 = pSrcB->pData; - - /* column loop */ - do - { - /* Set the variable sum, that acts as accumulator, to zero */ - sum = 0.0f; - - /* Initialize the pointer pIn1 to point to the starting address of the row being processed */ - pIn1 = pInA; - - /* Matrix A columns number of MAC operations are to be performed */ - colCnt = numColsA; - - while (colCnt > 0U) - { - /* c(m,n) = a(1,1)*b(1,1) + a(1,2) * b(2,1) + .... + a(m,p)*b(p,n) */ - sum += *pIn1++ * (*pIn2); - pIn2 += numColsB; - - /* Decrement the loop counter */ - colCnt--; - } - - /* Store the result in the destination buffer */ - *px++ = sum; - - /* Decrement the column loop counter */ - col--; - - /* Update the pointer pIn2 to point to the starting address of the next column */ - pIn2 = pInB + (numColsB - col); - - } while (col > 0U); - -#endif /* #if defined (ARM_MATH_DSP) */ - - /* Update the pointer pInA to point to the starting address of the next row */ - i = i + numColsB; - pInA = pInA + numColsA; - - /* Decrement the row loop counter */ - row--; - - } while (row > 0U); - /* Set status as ARM_MATH_SUCCESS */ - status = ARM_MATH_SUCCESS; - } - - /* Return to application */ - return (status); -} - -/** - * @} end of MatrixMult group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_mult_fast_q15.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_mult_fast_q15.c deleted file mode 100644 index 8d720c7..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_mult_fast_q15.c +++ /dev/null @@ -1,525 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_mat_mult_fast_q15.c - * Description: Q15 matrix multiplication (fast variant) - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupMatrix - */ - -/** - * @addtogroup MatrixMult - * @{ - */ - - -/** - * @brief Q15 matrix multiplication (fast variant) for Cortex-M3 and Cortex-M4 - * @param[in] *pSrcA points to the first input matrix structure - * @param[in] *pSrcB points to the second input matrix structure - * @param[out] *pDst points to output matrix structure - * @param[in] *pState points to the array for storing intermediate results - * @return The function returns either - * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. - * - * @details - * Scaling and Overflow Behavior: - * - * \par - * The difference between the function arm_mat_mult_q15() and this fast variant is that - * the fast variant use a 32-bit rather than a 64-bit accumulator. - * The result of each 1.15 x 1.15 multiplication is truncated to - * 2.30 format. These intermediate results are accumulated in a 32-bit register in 2.30 - * format. Finally, the accumulator is saturated and converted to a 1.15 result. - * - * \par - * The fast version has the same overflow behavior as the standard version but provides - * less precision since it discards the low 16 bits of each multiplication result. - * In order to avoid overflows completely the input signals must be scaled down. - * Scale down one of the input matrices by log2(numColsA) bits to - * avoid overflows, as a total of numColsA additions are computed internally for each - * output element. - * - * \par - * See arm_mat_mult_q15() for a slower implementation of this function - * which uses 64-bit accumulation to provide higher precision. - */ - -arm_status arm_mat_mult_fast_q15( - const arm_matrix_instance_q15 * pSrcA, - const arm_matrix_instance_q15 * pSrcB, - arm_matrix_instance_q15 * pDst, - q15_t * pState) -{ - q31_t sum; /* accumulator */ - q15_t *pSrcBT = pState; /* input data matrix pointer for transpose */ - q15_t *pInA = pSrcA->pData; /* input data matrix pointer A of Q15 type */ - q15_t *pInB = pSrcB->pData; /* input data matrix pointer B of Q15 type */ - q15_t *px; /* Temporary output data matrix pointer */ - uint16_t numRowsA = pSrcA->numRows; /* number of rows of input matrix A */ - uint16_t numColsB = pSrcB->numCols; /* number of columns of input matrix B */ - uint16_t numColsA = pSrcA->numCols; /* number of columns of input matrix A */ - uint16_t numRowsB = pSrcB->numRows; /* number of rows of input matrix A */ - uint32_t col, i = 0U, row = numRowsB, colCnt; /* loop counters */ - arm_status status; /* status of matrix multiplication */ - -#ifndef UNALIGNED_SUPPORT_DISABLE - - q31_t in; /* Temporary variable to hold the input value */ - q31_t inA1, inA2, inB1, inB2; - q31_t sum2, sum3, sum4; - q15_t *pInA2, *pInB2, *px2; - uint32_t j = 0; - -#else - - q15_t in; /* Temporary variable to hold the input value */ - q15_t inA1, inA2, inB1, inB2; - -#endif /* #ifndef UNALIGNED_SUPPORT_DISABLE */ - -#ifdef ARM_MATH_MATRIX_CHECK - /* Check for matrix mismatch condition */ - if ((pSrcA->numCols != pSrcB->numRows) || - (pSrcA->numRows != pDst->numRows) || (pSrcB->numCols != pDst->numCols)) - { - /* Set status as ARM_MATH_SIZE_MISMATCH */ - status = ARM_MATH_SIZE_MISMATCH; - } - else -#endif - { - /* Matrix transpose */ - do - { - /* Apply loop unrolling and exchange the columns with row elements */ - col = numColsB >> 2; - - /* The pointer px is set to starting address of the column being processed */ - px = pSrcBT + i; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (col > 0U) - { -#ifndef UNALIGNED_SUPPORT_DISABLE - /* Read two elements from the row */ - in = *__SIMD32(pInB)++; - - /* Unpack and store one element in the destination */ -#ifndef ARM_MATH_BIG_ENDIAN - - *px = (q15_t) in; - -#else - - *px = (q15_t) ((in & (q31_t) 0xffff0000) >> 16); - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - /* Update the pointer px to point to the next row of the transposed matrix */ - px += numRowsB; - - /* Unpack and store the second element in the destination */ -#ifndef ARM_MATH_BIG_ENDIAN - - *px = (q15_t) ((in & (q31_t) 0xffff0000) >> 16); - -#else - - *px = (q15_t) in; - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - /* Update the pointer px to point to the next row of the transposed matrix */ - px += numRowsB; - - /* Read two elements from the row */ - in = *__SIMD32(pInB)++; - - /* Unpack and store one element in the destination */ -#ifndef ARM_MATH_BIG_ENDIAN - - *px = (q15_t) in; - -#else - - *px = (q15_t) ((in & (q31_t) 0xffff0000) >> 16); - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - /* Update the pointer px to point to the next row of the transposed matrix */ - px += numRowsB; - - /* Unpack and store the second element in the destination */ - -#ifndef ARM_MATH_BIG_ENDIAN - - *px = (q15_t) ((in & (q31_t) 0xffff0000) >> 16); - -#else - - *px = (q15_t) in; - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - -#else - - /* Read one element from the row */ - in = *pInB++; - - /* Store one element in the destination */ - *px = in; - - /* Update the pointer px to point to the next row of the transposed matrix */ - px += numRowsB; - - /* Read one element from the row */ - in = *pInB++; - - /* Store one element in the destination */ - *px = in; - - /* Update the pointer px to point to the next row of the transposed matrix */ - px += numRowsB; - - /* Read one element from the row */ - in = *pInB++; - - /* Store one element in the destination */ - *px = in; - - /* Update the pointer px to point to the next row of the transposed matrix */ - px += numRowsB; - - /* Read one element from the row */ - in = *pInB++; - - /* Store one element in the destination */ - *px = in; - -#endif /* #ifndef UNALIGNED_SUPPORT_DISABLE */ - - /* Update the pointer px to point to the next row of the transposed matrix */ - px += numRowsB; - - /* Decrement the column loop counter */ - col--; - } - - /* If the columns of pSrcB is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - col = numColsB % 0x4U; - - while (col > 0U) - { - /* Read and store the input element in the destination */ - *px = *pInB++; - - /* Update the pointer px to point to the next row of the transposed matrix */ - px += numRowsB; - - /* Decrement the column loop counter */ - col--; - } - - i++; - - /* Decrement the row loop counter */ - row--; - - } while (row > 0U); - - /* Reset the variables for the usage in the following multiplication process */ - row = numRowsA; - i = 0U; - px = pDst->pData; - -#ifndef UNALIGNED_SUPPORT_DISABLE - /* Process two rows from matrix A at a time and output two rows at a time */ - row = row >> 1; - px2 = px + numColsB; -#endif - - /* The following loop performs the dot-product of each row in pSrcA with each column in pSrcB */ - /* row loop */ - while (row > 0U) - { - /* For every row wise process, the column loop counter is to be initiated */ - col = numColsB; - - /* For every row wise process, the pIn2 pointer is set - ** to the starting address of the transposed pSrcB data */ - pInB = pSrcBT; - -#ifndef UNALIGNED_SUPPORT_DISABLE - /* Process two (transposed) columns from matrix B at a time */ - col = col >> 1; - j = 0; -#endif - - /* column loop */ - while (col > 0U) - { - /* Set the variable sum, that acts as accumulator, to zero */ - sum = 0; - - /* Initiate the pointer pInA to point to the starting address of the column being processed */ - pInA = pSrcA->pData + i; - -#ifndef UNALIGNED_SUPPORT_DISABLE - sum2 = 0; - sum3 = 0; - sum4 = 0; - pInB = pSrcBT + j; - pInA2 = pInA + numColsA; - pInB2 = pInB + numRowsB; - - /* Read in two elements at once - alows dual MAC instruction */ - colCnt = numColsA >> 1; -#else - colCnt = numColsA >> 2; -#endif - - /* matrix multiplication */ - while (colCnt > 0U) - { - /* c(m,n) = a(1,1)*b(1,1) + a(1,2) * b(2,1) + .... + a(m,p)*b(p,n) */ -#ifndef UNALIGNED_SUPPORT_DISABLE - - inA1 = *__SIMD32(pInA)++; - inB1 = *__SIMD32(pInB)++; - inA2 = *__SIMD32(pInA2)++; - inB2 = *__SIMD32(pInB2)++; - - sum = __SMLAD(inA1, inB1, sum); - sum2 = __SMLAD(inA1, inB2, sum2); - sum3 = __SMLAD(inA2, inB1, sum3); - sum4 = __SMLAD(inA2, inB2, sum4); - -#else - - inA1 = *pInA; - inB1 = *pInB; - sum += inA1 * inB1; - - inA2 = pInA[1]; - inB2 = pInB[1]; - sum += inA2 * inB2; - - inA1 = pInA[2]; - inB1 = pInB[2]; - sum += inA1 * inB1; - - inA2 = pInA[3]; - inB2 = pInB[3]; - sum += inA2 * inB2; - - pInA += 4; - pInB += 4; - -#endif /* #ifndef UNALIGNED_SUPPORT_DISABLE */ - - /* Decrement the loop counter */ - colCnt--; - } - - /* process odd column samples */ -#ifndef UNALIGNED_SUPPORT_DISABLE - if (numColsA & 1U) { - inA1 = *pInA++; - inB1 = *pInB++; - inA2 = *pInA2++; - inB2 = *pInB2++; - sum += inA1 * inB1; - sum2 += inA1 * inB2; - sum3 += inA2 * inB1; - sum4 += inA2 * inB2; - } -#else - colCnt = numColsA % 0x4U; - - while (colCnt > 0U) - { - /* c(m,n) = a(1,1)*b(1,1) + a(1,2) * b(2,1) + .... + a(m,p)*b(p,n) */ - sum += (q31_t) (*pInA++) * (*pInB++); - - colCnt--; - } -#endif - - /* Saturate and store the result in the destination buffer */ - *px++ = (q15_t) (sum >> 15); - -#ifndef UNALIGNED_SUPPORT_DISABLE - *px++ = (q15_t) (sum2 >> 15); - *px2++ = (q15_t) (sum3 >> 15); - *px2++ = (q15_t) (sum4 >> 15); - j += numRowsB * 2; -#endif - - /* Decrement the column loop counter */ - col--; - - } - - i = i + numColsA; - -#ifndef UNALIGNED_SUPPORT_DISABLE - i = i + numColsA; - px = px2 + (numColsB & 1U); - px2 = px + numColsB; -#endif - - /* Decrement the row loop counter */ - row--; - - } - - /* Compute any remaining odd row/column below */ - -#ifndef UNALIGNED_SUPPORT_DISABLE - - /* Compute remaining output column */ - if (numColsB & 1U) { - - /* Avoid redundant computation of last element */ - row = numRowsA & (~0x1); - - /* Point to remaining unfilled column in output matrix */ - px = pDst->pData+numColsB-1; - pInA = pSrcA->pData; - - /* row loop */ - while (row > 0) - { - - /* point to last column in matrix B */ - pInB = pSrcBT + numRowsB*(numColsB-1); - - /* Set the variable sum, that acts as accumulator, to zero */ - sum = 0; - - /* Compute 4 columns at once */ - colCnt = numColsA >> 2; - - /* matrix multiplication */ - while (colCnt > 0U) - { - inA1 = *__SIMD32(pInA)++; - inA2 = *__SIMD32(pInA)++; - inB1 = *__SIMD32(pInB)++; - inB2 = *__SIMD32(pInB)++; - - sum = __SMLAD(inA1, inB1, sum); - sum = __SMLAD(inA2, inB2, sum); - - /* Decrement the loop counter */ - colCnt--; - } - - colCnt = numColsA & 3U; - while (colCnt > 0U) { - sum += (q31_t) (*pInA++) * (*pInB++); - colCnt--; - } - - /* Store the result in the destination buffer */ - *px = (q15_t) (sum >> 15); - px += numColsB; - - /* Decrement the row loop counter */ - row--; - } - } - - /* Compute remaining output row */ - if (numRowsA & 1U) { - - /* point to last row in output matrix */ - px = pDst->pData+(numColsB)*(numRowsA-1); - - pInB = pSrcBT; - col = numColsB; - i = 0U; - - /* col loop */ - while (col > 0) - { - - /* point to last row in matrix A */ - pInA = pSrcA->pData + (numRowsA-1)*numColsA; - - /* Set the variable sum, that acts as accumulator, to zero */ - sum = 0; - - /* Compute 4 columns at once */ - colCnt = numColsA >> 2; - - /* matrix multiplication */ - while (colCnt > 0U) - { - inA1 = *__SIMD32(pInA)++; - inA2 = *__SIMD32(pInA)++; - inB1 = *__SIMD32(pInB)++; - inB2 = *__SIMD32(pInB)++; - - sum = __SMLAD(inA1, inB1, sum); - sum = __SMLAD(inA2, inB2, sum); - - /* Decrement the loop counter */ - colCnt--; - } - - colCnt = numColsA & 3U; - while (colCnt > 0U) { - sum += (q31_t) (*pInA++) * (*pInB++); - colCnt--; - } - - /* Store the result in the destination buffer */ - *px++ = (q15_t) (sum >> 15); - - /* Decrement the col loop counter */ - col--; - } - } - -#endif /* #ifndef UNALIGNED_SUPPORT_DISABLE */ - - /* set status as ARM_MATH_SUCCESS */ - status = ARM_MATH_SUCCESS; - } - - /* Return to application */ - return (status); -} - -/** - * @} end of MatrixMult group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_mult_fast_q31.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_mult_fast_q31.c deleted file mode 100644 index 78b33ef..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_mult_fast_q31.c +++ /dev/null @@ -1,384 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_mat_mult_fast_q31.c - * Description: Q31 matrix multiplication (fast variant) - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupMatrix - */ - -/** - * @addtogroup MatrixMult - * @{ - */ - -/** - * @brief Q31 matrix multiplication (fast variant) for Cortex-M3 and Cortex-M4 - * @param[in] *pSrcA points to the first input matrix structure - * @param[in] *pSrcB points to the second input matrix structure - * @param[out] *pDst points to output matrix structure - * @return The function returns either - * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. - * - * @details - * Scaling and Overflow Behavior: - * - * \par - * The difference between the function arm_mat_mult_q31() and this fast variant is that - * the fast variant use a 32-bit rather than a 64-bit accumulator. - * The result of each 1.31 x 1.31 multiplication is truncated to - * 2.30 format. These intermediate results are accumulated in a 32-bit register in 2.30 - * format. Finally, the accumulator is saturated and converted to a 1.31 result. - * - * \par - * The fast version has the same overflow behavior as the standard version but provides - * less precision since it discards the low 32 bits of each multiplication result. - * In order to avoid overflows completely the input signals must be scaled down. - * Scale down one of the input matrices by log2(numColsA) bits to - * avoid overflows, as a total of numColsA additions are computed internally for each - * output element. - * - * \par - * See arm_mat_mult_q31() for a slower implementation of this function - * which uses 64-bit accumulation to provide higher precision. - */ - -arm_status arm_mat_mult_fast_q31( - const arm_matrix_instance_q31 * pSrcA, - const arm_matrix_instance_q31 * pSrcB, - arm_matrix_instance_q31 * pDst) -{ - q31_t *pInA = pSrcA->pData; /* input data matrix pointer A */ - q31_t *pInB = pSrcB->pData; /* input data matrix pointer B */ - q31_t *px; /* Temporary output data matrix pointer */ - q31_t sum; /* Accumulator */ - uint16_t numRowsA = pSrcA->numRows; /* number of rows of input matrix A */ - uint16_t numColsB = pSrcB->numCols; /* number of columns of input matrix B */ - uint16_t numColsA = pSrcA->numCols; /* number of columns of input matrix A */ - uint32_t col, i = 0U, j, row = numRowsA, colCnt; /* loop counters */ - arm_status status; /* status of matrix multiplication */ - q31_t inA1, inB1; - -#if defined (ARM_MATH_DSP) - - q31_t sum2, sum3, sum4; - q31_t inA2, inB2; - q31_t *pInA2; - q31_t *px2; - -#endif - -#ifdef ARM_MATH_MATRIX_CHECK - - /* Check for matrix mismatch condition */ - if ((pSrcA->numCols != pSrcB->numRows) || - (pSrcA->numRows != pDst->numRows) || (pSrcB->numCols != pDst->numCols)) - { - /* Set status as ARM_MATH_SIZE_MISMATCH */ - status = ARM_MATH_SIZE_MISMATCH; - } - else -#endif /* #ifdef ARM_MATH_MATRIX_CHECK */ - - { - - px = pDst->pData; - -#if defined (ARM_MATH_DSP) - row = row >> 1; - px2 = px + numColsB; -#endif - - /* The following loop performs the dot-product of each row in pSrcA with each column in pSrcB */ - /* row loop */ - while (row > 0U) - { - - /* For every row wise process, the column loop counter is to be initiated */ - col = numColsB; - - /* For every row wise process, the pIn2 pointer is set - ** to the starting address of the pSrcB data */ - pInB = pSrcB->pData; - - j = 0U; - -#if defined (ARM_MATH_DSP) - col = col >> 1; -#endif - - /* column loop */ - while (col > 0U) - { - /* Set the variable sum, that acts as accumulator, to zero */ - sum = 0; - - /* Initiate data pointers */ - pInA = pSrcA->pData + i; - pInB = pSrcB->pData + j; - -#if defined (ARM_MATH_DSP) - sum2 = 0; - sum3 = 0; - sum4 = 0; - pInA2 = pInA + numColsA; - colCnt = numColsA; -#else - colCnt = numColsA >> 2; -#endif - - /* matrix multiplication */ - while (colCnt > 0U) - { - -#if defined (ARM_MATH_DSP) - inA1 = *pInA++; - inB1 = pInB[0]; - inA2 = *pInA2++; - inB2 = pInB[1]; - pInB += numColsB; - - sum = __SMMLA(inA1, inB1, sum); - sum2 = __SMMLA(inA1, inB2, sum2); - sum3 = __SMMLA(inA2, inB1, sum3); - sum4 = __SMMLA(inA2, inB2, sum4); -#else - /* c(m,n) = a(1,1)*b(1,1) + a(1,2) * b(2,1) + .... + a(m,p)*b(p,n) */ - /* Perform the multiply-accumulates */ - inB1 = *pInB; - pInB += numColsB; - inA1 = pInA[0]; - sum = __SMMLA(inA1, inB1, sum); - - inB1 = *pInB; - pInB += numColsB; - inA1 = pInA[1]; - sum = __SMMLA(inA1, inB1, sum); - - inB1 = *pInB; - pInB += numColsB; - inA1 = pInA[2]; - sum = __SMMLA(inA1, inB1, sum); - - inB1 = *pInB; - pInB += numColsB; - inA1 = pInA[3]; - sum = __SMMLA(inA1, inB1, sum); - - pInA += 4U; -#endif - - /* Decrement the loop counter */ - colCnt--; - } - -#ifdef ARM_MATH_CM0_FAMILY - /* If the columns of pSrcA is not a multiple of 4, compute any remaining output samples here. */ - colCnt = numColsA % 0x4U; - while (colCnt > 0U) - { - sum = __SMMLA(*pInA++, *pInB, sum); - pInB += numColsB; - colCnt--; - } - j++; -#endif - - /* Convert the result from 2.30 to 1.31 format and store in destination buffer */ - *px++ = sum << 1; - -#if defined (ARM_MATH_DSP) - *px++ = sum2 << 1; - *px2++ = sum3 << 1; - *px2++ = sum4 << 1; - j += 2; -#endif - - /* Decrement the column loop counter */ - col--; - - } - - i = i + numColsA; - -#if defined (ARM_MATH_DSP) - i = i + numColsA; - px = px2 + (numColsB & 1U); - px2 = px + numColsB; -#endif - - /* Decrement the row loop counter */ - row--; - - } - - /* Compute any remaining odd row/column below */ - -#if defined (ARM_MATH_DSP) - - /* Compute remaining output column */ - if (numColsB & 1U) { - - /* Avoid redundant computation of last element */ - row = numRowsA & (~0x1); - - /* Point to remaining unfilled column in output matrix */ - px = pDst->pData+numColsB-1; - pInA = pSrcA->pData; - - /* row loop */ - while (row > 0) - { - - /* point to last column in matrix B */ - pInB = pSrcB->pData + numColsB-1; - - /* Set the variable sum, that acts as accumulator, to zero */ - sum = 0; - - /* Compute 4 columns at once */ - colCnt = numColsA >> 2; - - /* matrix multiplication */ - while (colCnt > 0U) - { - inA1 = *pInA++; - inA2 = *pInA++; - inB1 = *pInB; - pInB += numColsB; - inB2 = *pInB; - pInB += numColsB; - sum = __SMMLA(inA1, inB1, sum); - sum = __SMMLA(inA2, inB2, sum); - - inA1 = *pInA++; - inA2 = *pInA++; - inB1 = *pInB; - pInB += numColsB; - inB2 = *pInB; - pInB += numColsB; - sum = __SMMLA(inA1, inB1, sum); - sum = __SMMLA(inA2, inB2, sum); - - /* Decrement the loop counter */ - colCnt--; - } - - colCnt = numColsA & 3U; - while (colCnt > 0U) { - sum = __SMMLA(*pInA++, *pInB, sum); - pInB += numColsB; - colCnt--; - } - - /* Convert the result from 2.30 to 1.31 format and store in destination buffer */ - *px = sum << 1; - px += numColsB; - - /* Decrement the row loop counter */ - row--; - } - } - - /* Compute remaining output row */ - if (numRowsA & 1U) { - - /* point to last row in output matrix */ - px = pDst->pData+(numColsB)*(numRowsA-1); - - col = numColsB; - i = 0U; - - /* col loop */ - while (col > 0) - { - - /* point to last row in matrix A */ - pInA = pSrcA->pData + (numRowsA-1)*numColsA; - pInB = pSrcB->pData + i; - - /* Set the variable sum, that acts as accumulator, to zero */ - sum = 0; - - /* Compute 4 columns at once */ - colCnt = numColsA >> 2; - - /* matrix multiplication */ - while (colCnt > 0U) - { - inA1 = *pInA++; - inA2 = *pInA++; - inB1 = *pInB; - pInB += numColsB; - inB2 = *pInB; - pInB += numColsB; - sum = __SMMLA(inA1, inB1, sum); - sum = __SMMLA(inA2, inB2, sum); - - inA1 = *pInA++; - inA2 = *pInA++; - inB1 = *pInB; - pInB += numColsB; - inB2 = *pInB; - pInB += numColsB; - sum = __SMMLA(inA1, inB1, sum); - sum = __SMMLA(inA2, inB2, sum); - - /* Decrement the loop counter */ - colCnt--; - } - - colCnt = numColsA & 3U; - while (colCnt > 0U) { - sum = __SMMLA(*pInA++, *pInB, sum); - pInB += numColsB; - colCnt--; - } - - /* Saturate and store the result in the destination buffer */ - *px++ = sum << 1; - i++; - - /* Decrement the col loop counter */ - col--; - } - } - -#endif /* #if defined (ARM_MATH_DSP) */ - - /* set status as ARM_MATH_SUCCESS */ - status = ARM_MATH_SUCCESS; - } - - /* Return to application */ - return (status); -} - -/** - * @} end of MatrixMult group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_mult_q15.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_mult_q15.c deleted file mode 100644 index 3244f47..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_mult_q15.c +++ /dev/null @@ -1,457 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_mat_mult_q15.c - * Description: Q15 matrix multiplication - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupMatrix - */ - -/** - * @addtogroup MatrixMult - * @{ - */ - - -/** - * @brief Q15 matrix multiplication - * @param[in] *pSrcA points to the first input matrix structure - * @param[in] *pSrcB points to the second input matrix structure - * @param[out] *pDst points to output matrix structure - * @param[in] *pState points to the array for storing intermediate results (Unused) - * @return The function returns either - * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. - * - * @details - * Scaling and Overflow Behavior: - * - * \par - * The function is implemented using a 64-bit internal accumulator. The inputs to the - * multiplications are in 1.15 format and multiplications yield a 2.30 result. - * The 2.30 intermediate - * results are accumulated in a 64-bit accumulator in 34.30 format. This approach - * provides 33 guard bits and there is no risk of overflow. The 34.30 result is then - * truncated to 34.15 format by discarding the low 15 bits and then saturated to - * 1.15 format. - * - * \par - * Refer to arm_mat_mult_fast_q15() for a faster but less precise version of this function for Cortex-M3 and Cortex-M4. - * - */ - -arm_status arm_mat_mult_q15( - const arm_matrix_instance_q15 * pSrcA, - const arm_matrix_instance_q15 * pSrcB, - arm_matrix_instance_q15 * pDst, - q15_t * pState) -{ - q63_t sum; /* accumulator */ - -#if defined (ARM_MATH_DSP) - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - q15_t *pSrcBT = pState; /* input data matrix pointer for transpose */ - q15_t *pInA = pSrcA->pData; /* input data matrix pointer A of Q15 type */ - q15_t *pInB = pSrcB->pData; /* input data matrix pointer B of Q15 type */ - q15_t *px; /* Temporary output data matrix pointer */ - uint16_t numRowsA = pSrcA->numRows; /* number of rows of input matrix A */ - uint16_t numColsB = pSrcB->numCols; /* number of columns of input matrix B */ - uint16_t numColsA = pSrcA->numCols; /* number of columns of input matrix A */ - uint16_t numRowsB = pSrcB->numRows; /* number of rows of input matrix A */ - uint16_t col, i = 0U, row = numRowsB, colCnt; /* loop counters */ - arm_status status; /* status of matrix multiplication */ - -#ifndef UNALIGNED_SUPPORT_DISABLE - - q31_t in; /* Temporary variable to hold the input value */ - q31_t pSourceA1, pSourceB1, pSourceA2, pSourceB2; - -#else - - q15_t in; /* Temporary variable to hold the input value */ - q15_t inA1, inB1, inA2, inB2; - -#endif /* #ifndef UNALIGNED_SUPPORT_DISABLE */ - -#ifdef ARM_MATH_MATRIX_CHECK - /* Check for matrix mismatch condition */ - if ((pSrcA->numCols != pSrcB->numRows) || - (pSrcA->numRows != pDst->numRows) || (pSrcB->numCols != pDst->numCols)) - { - /* Set status as ARM_MATH_SIZE_MISMATCH */ - status = ARM_MATH_SIZE_MISMATCH; - } - else -#endif /* #ifdef ARM_MATH_MATRIX_CHECK */ - { - /* Matrix transpose */ - do - { - /* Apply loop unrolling and exchange the columns with row elements */ - col = numColsB >> 2; - - /* The pointer px is set to starting address of the column being processed */ - px = pSrcBT + i; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (col > 0U) - { -#ifndef UNALIGNED_SUPPORT_DISABLE - - /* Read two elements from the row */ - in = *__SIMD32(pInB)++; - - /* Unpack and store one element in the destination */ -#ifndef ARM_MATH_BIG_ENDIAN - - *px = (q15_t) in; - -#else - - *px = (q15_t) ((in & (q31_t) 0xffff0000) >> 16); - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - /* Update the pointer px to point to the next row of the transposed matrix */ - px += numRowsB; - - /* Unpack and store the second element in the destination */ -#ifndef ARM_MATH_BIG_ENDIAN - - *px = (q15_t) ((in & (q31_t) 0xffff0000) >> 16); - -#else - - *px = (q15_t) in; - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - /* Update the pointer px to point to the next row of the transposed matrix */ - px += numRowsB; - - /* Read two elements from the row */ - in = *__SIMD32(pInB)++; - - /* Unpack and store one element in the destination */ -#ifndef ARM_MATH_BIG_ENDIAN - - *px = (q15_t) in; - -#else - - *px = (q15_t) ((in & (q31_t) 0xffff0000) >> 16); - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - /* Update the pointer px to point to the next row of the transposed matrix */ - px += numRowsB; - - /* Unpack and store the second element in the destination */ - -#ifndef ARM_MATH_BIG_ENDIAN - - *px = (q15_t) ((in & (q31_t) 0xffff0000) >> 16); - -#else - - *px = (q15_t) in; - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - /* Update the pointer px to point to the next row of the transposed matrix */ - px += numRowsB; - -#else - - /* Read one element from the row */ - in = *pInB++; - - /* Store one element in the destination */ - *px = in; - - /* Update the pointer px to point to the next row of the transposed matrix */ - px += numRowsB; - - /* Read one element from the row */ - in = *pInB++; - - /* Store one element in the destination */ - *px = in; - - /* Update the pointer px to point to the next row of the transposed matrix */ - px += numRowsB; - - /* Read one element from the row */ - in = *pInB++; - - /* Store one element in the destination */ - *px = in; - - /* Update the pointer px to point to the next row of the transposed matrix */ - px += numRowsB; - - /* Read one element from the row */ - in = *pInB++; - - /* Store one element in the destination */ - *px = in; - - /* Update the pointer px to point to the next row of the transposed matrix */ - px += numRowsB; - -#endif /* #ifndef UNALIGNED_SUPPORT_DISABLE */ - - /* Decrement the column loop counter */ - col--; - } - - /* If the columns of pSrcB is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - col = numColsB % 0x4U; - - while (col > 0U) - { - /* Read and store the input element in the destination */ - *px = *pInB++; - - /* Update the pointer px to point to the next row of the transposed matrix */ - px += numRowsB; - - /* Decrement the column loop counter */ - col--; - } - - i++; - - /* Decrement the row loop counter */ - row--; - - } while (row > 0U); - - /* Reset the variables for the usage in the following multiplication process */ - row = numRowsA; - i = 0U; - px = pDst->pData; - - /* The following loop performs the dot-product of each row in pSrcA with each column in pSrcB */ - /* row loop */ - do - { - /* For every row wise process, the column loop counter is to be initiated */ - col = numColsB; - - /* For every row wise process, the pIn2 pointer is set - ** to the starting address of the transposed pSrcB data */ - pInB = pSrcBT; - - /* column loop */ - do - { - /* Set the variable sum, that acts as accumulator, to zero */ - sum = 0; - - /* Apply loop unrolling and compute 2 MACs simultaneously. */ - colCnt = numColsA >> 2; - - /* Initiate the pointer pIn1 to point to the starting address of the column being processed */ - pInA = pSrcA->pData + i; - - - /* matrix multiplication */ - while (colCnt > 0U) - { - /* c(m,n) = a(1,1)*b(1,1) + a(1,2) * b(2,1) + .... + a(m,p)*b(p,n) */ -#ifndef UNALIGNED_SUPPORT_DISABLE - - /* read real and imag values from pSrcA and pSrcB buffer */ - pSourceA1 = *__SIMD32(pInA)++; - pSourceB1 = *__SIMD32(pInB)++; - - pSourceA2 = *__SIMD32(pInA)++; - pSourceB2 = *__SIMD32(pInB)++; - - /* Multiply and Accumlates */ - sum = __SMLALD(pSourceA1, pSourceB1, sum); - sum = __SMLALD(pSourceA2, pSourceB2, sum); - -#else - /* read real and imag values from pSrcA and pSrcB buffer */ - inA1 = *pInA++; - inB1 = *pInB++; - inA2 = *pInA++; - /* Multiply and Accumlates */ - sum += inA1 * inB1; - inB2 = *pInB++; - - inA1 = *pInA++; - inB1 = *pInB++; - /* Multiply and Accumlates */ - sum += inA2 * inB2; - inA2 = *pInA++; - inB2 = *pInB++; - - /* Multiply and Accumlates */ - sum += inA1 * inB1; - sum += inA2 * inB2; - -#endif /* #ifndef UNALIGNED_SUPPORT_DISABLE */ - - /* Decrement the loop counter */ - colCnt--; - } - - /* process remaining column samples */ - colCnt = numColsA & 3U; - - while (colCnt > 0U) - { - /* c(m,n) = a(1,1)*b(1,1) + a(1,2) * b(2,1) + .... + a(m,p)*b(p,n) */ - sum += *pInA++ * *pInB++; - - /* Decrement the loop counter */ - colCnt--; - } - - /* Saturate and store the result in the destination buffer */ - *px = (q15_t) (__SSAT((sum >> 15), 16)); - px++; - - /* Decrement the column loop counter */ - col--; - - } while (col > 0U); - - i = i + numColsA; - - /* Decrement the row loop counter */ - row--; - - } while (row > 0U); - -#else - - /* Run the below code for Cortex-M0 */ - - q15_t *pIn1 = pSrcA->pData; /* input data matrix pointer A */ - q15_t *pIn2 = pSrcB->pData; /* input data matrix pointer B */ - q15_t *pInA = pSrcA->pData; /* input data matrix pointer A of Q15 type */ - q15_t *pInB = pSrcB->pData; /* input data matrix pointer B of Q15 type */ - q15_t *pOut = pDst->pData; /* output data matrix pointer */ - q15_t *px; /* Temporary output data matrix pointer */ - uint16_t numColsB = pSrcB->numCols; /* number of columns of input matrix B */ - uint16_t numColsA = pSrcA->numCols; /* number of columns of input matrix A */ - uint16_t numRowsA = pSrcA->numRows; /* number of rows of input matrix A */ - uint16_t col, i = 0U, row = numRowsA, colCnt; /* loop counters */ - arm_status status; /* status of matrix multiplication */ - -#ifdef ARM_MATH_MATRIX_CHECK - - /* Check for matrix mismatch condition */ - if ((pSrcA->numCols != pSrcB->numRows) || - (pSrcA->numRows != pDst->numRows) || (pSrcB->numCols != pDst->numCols)) - { - /* Set status as ARM_MATH_SIZE_MISMATCH */ - status = ARM_MATH_SIZE_MISMATCH; - } - else -#endif /* #ifdef ARM_MATH_MATRIX_CHECK */ - - { - /* The following loop performs the dot-product of each row in pSrcA with each column in pSrcB */ - /* row loop */ - do - { - /* Output pointer is set to starting address of the row being processed */ - px = pOut + i; - - /* For every row wise process, the column loop counter is to be initiated */ - col = numColsB; - - /* For every row wise process, the pIn2 pointer is set - ** to the starting address of the pSrcB data */ - pIn2 = pSrcB->pData; - - /* column loop */ - do - { - /* Set the variable sum, that acts as accumulator, to zero */ - sum = 0; - - /* Initiate the pointer pIn1 to point to the starting address of pSrcA */ - pIn1 = pInA; - - /* Matrix A columns number of MAC operations are to be performed */ - colCnt = numColsA; - - /* matrix multiplication */ - while (colCnt > 0U) - { - /* c(m,n) = a(1,1)*b(1,1) + a(1,2) * b(2,1) + .... + a(m,p)*b(p,n) */ - /* Perform the multiply-accumulates */ - sum += (q31_t) * pIn1++ * *pIn2; - pIn2 += numColsB; - - /* Decrement the loop counter */ - colCnt--; - } - - /* Convert the result from 34.30 to 1.15 format and store the saturated value in destination buffer */ - /* Saturate and store the result in the destination buffer */ - *px++ = (q15_t) __SSAT((sum >> 15), 16); - - /* Decrement the column loop counter */ - col--; - - /* Update the pointer pIn2 to point to the starting address of the next column */ - pIn2 = pInB + (numColsB - col); - - } while (col > 0U); - - /* Update the pointer pSrcA to point to the starting address of the next row */ - i = i + numColsB; - pInA = pInA + numColsA; - - /* Decrement the row loop counter */ - row--; - - } while (row > 0U); - -#endif /* #if defined (ARM_MATH_DSP) */ - /* set status as ARM_MATH_SUCCESS */ - status = ARM_MATH_SUCCESS; - } - - /* Return to application */ - return (status); -} - -/** - * @} end of MatrixMult group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_mult_q31.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_mult_q31.c deleted file mode 100644 index 9bd2b97..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_mult_q31.c +++ /dev/null @@ -1,282 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_mat_mult_q31.c - * Description: Q31 matrix multiplication - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupMatrix - */ - -/** - * @addtogroup MatrixMult - * @{ - */ - -/** - * @brief Q31 matrix multiplication - * @param[in] *pSrcA points to the first input matrix structure - * @param[in] *pSrcB points to the second input matrix structure - * @param[out] *pDst points to output matrix structure - * @return The function returns either - * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. - * - * @details - * Scaling and Overflow Behavior: - * - * \par - * The function is implemented using an internal 64-bit accumulator. - * The accumulator has a 2.62 format and maintains full precision of the intermediate - * multiplication results but provides only a single guard bit. There is no saturation - * on intermediate additions. Thus, if the accumulator overflows it wraps around and - * distorts the result. The input signals should be scaled down to avoid intermediate - * overflows. The input is thus scaled down by log2(numColsA) bits - * to avoid overflows, as a total of numColsA additions are performed internally. - * The 2.62 accumulator is right shifted by 31 bits and saturated to 1.31 format to yield the final result. - * - * \par - * See arm_mat_mult_fast_q31() for a faster but less precise implementation of this function for Cortex-M3 and Cortex-M4. - * - */ - -arm_status arm_mat_mult_q31( - const arm_matrix_instance_q31 * pSrcA, - const arm_matrix_instance_q31 * pSrcB, - arm_matrix_instance_q31 * pDst) -{ - q31_t *pIn1 = pSrcA->pData; /* input data matrix pointer A */ - q31_t *pIn2 = pSrcB->pData; /* input data matrix pointer B */ - q31_t *pInA = pSrcA->pData; /* input data matrix pointer A */ - q31_t *pOut = pDst->pData; /* output data matrix pointer */ - q31_t *px; /* Temporary output data matrix pointer */ - q63_t sum; /* Accumulator */ - uint16_t numRowsA = pSrcA->numRows; /* number of rows of input matrix A */ - uint16_t numColsB = pSrcB->numCols; /* number of columns of input matrix B */ - uint16_t numColsA = pSrcA->numCols; /* number of columns of input matrix A */ - -#if defined (ARM_MATH_DSP) - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - uint16_t col, i = 0U, j, row = numRowsA, colCnt; /* loop counters */ - arm_status status; /* status of matrix multiplication */ - q31_t a0, a1, a2, a3, b0, b1, b2, b3; - -#ifdef ARM_MATH_MATRIX_CHECK - - - /* Check for matrix mismatch condition */ - if ((pSrcA->numCols != pSrcB->numRows) || - (pSrcA->numRows != pDst->numRows) || (pSrcB->numCols != pDst->numCols)) - { - /* Set status as ARM_MATH_SIZE_MISMATCH */ - status = ARM_MATH_SIZE_MISMATCH; - } - else -#endif /* #ifdef ARM_MATH_MATRIX_CHECK */ - - { - /* The following loop performs the dot-product of each row in pSrcA with each column in pSrcB */ - /* row loop */ - do - { - /* Output pointer is set to starting address of the row being processed */ - px = pOut + i; - - /* For every row wise process, the column loop counter is to be initiated */ - col = numColsB; - - /* For every row wise process, the pIn2 pointer is set - ** to the starting address of the pSrcB data */ - pIn2 = pSrcB->pData; - - j = 0U; - - /* column loop */ - do - { - /* Set the variable sum, that acts as accumulator, to zero */ - sum = 0; - - /* Initiate the pointer pIn1 to point to the starting address of pInA */ - pIn1 = pInA; - - /* Apply loop unrolling and compute 4 MACs simultaneously. */ - colCnt = numColsA >> 2; - - - /* matrix multiplication */ - while (colCnt > 0U) - { - /* c(m,n) = a(1,1)*b(1,1) + a(1,2) * b(2,1) + .... + a(m,p)*b(p,n) */ - /* Perform the multiply-accumulates */ - b0 = *pIn2; - pIn2 += numColsB; - - a0 = *pIn1++; - a1 = *pIn1++; - - b1 = *pIn2; - pIn2 += numColsB; - b2 = *pIn2; - pIn2 += numColsB; - - sum += (q63_t) a0 *b0; - sum += (q63_t) a1 *b1; - - a2 = *pIn1++; - a3 = *pIn1++; - - b3 = *pIn2; - pIn2 += numColsB; - - sum += (q63_t) a2 *b2; - sum += (q63_t) a3 *b3; - - /* Decrement the loop counter */ - colCnt--; - } - - /* If the columns of pSrcA is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - colCnt = numColsA % 0x4U; - - while (colCnt > 0U) - { - /* c(m,n) = a(1,1)*b(1,1) + a(1,2) * b(2,1) + .... + a(m,p)*b(p,n) */ - /* Perform the multiply-accumulates */ - sum += (q63_t) * pIn1++ * *pIn2; - pIn2 += numColsB; - - /* Decrement the loop counter */ - colCnt--; - } - - /* Convert the result from 2.62 to 1.31 format and store in destination buffer */ - *px++ = (q31_t) (sum >> 31); - - /* Update the pointer pIn2 to point to the starting address of the next column */ - j++; - pIn2 = (pSrcB->pData) + j; - - /* Decrement the column loop counter */ - col--; - - } while (col > 0U); - -#else - - /* Run the below code for Cortex-M0 */ - - q31_t *pInB = pSrcB->pData; /* input data matrix pointer B */ - uint16_t col, i = 0U, row = numRowsA, colCnt; /* loop counters */ - arm_status status; /* status of matrix multiplication */ - - -#ifdef ARM_MATH_MATRIX_CHECK - - /* Check for matrix mismatch condition */ - if ((pSrcA->numCols != pSrcB->numRows) || - (pSrcA->numRows != pDst->numRows) || (pSrcB->numCols != pDst->numCols)) - { - /* Set status as ARM_MATH_SIZE_MISMATCH */ - status = ARM_MATH_SIZE_MISMATCH; - } - else -#endif /* #ifdef ARM_MATH_MATRIX_CHECK */ - - { - /* The following loop performs the dot-product of each row in pSrcA with each column in pSrcB */ - /* row loop */ - do - { - /* Output pointer is set to starting address of the row being processed */ - px = pOut + i; - - /* For every row wise process, the column loop counter is to be initiated */ - col = numColsB; - - /* For every row wise process, the pIn2 pointer is set - ** to the starting address of the pSrcB data */ - pIn2 = pSrcB->pData; - - /* column loop */ - do - { - /* Set the variable sum, that acts as accumulator, to zero */ - sum = 0; - - /* Initiate the pointer pIn1 to point to the starting address of pInA */ - pIn1 = pInA; - - /* Matrix A columns number of MAC operations are to be performed */ - colCnt = numColsA; - - /* matrix multiplication */ - while (colCnt > 0U) - { - /* c(m,n) = a(1,1)*b(1,1) + a(1,2) * b(2,1) + .... + a(m,p)*b(p,n) */ - /* Perform the multiply-accumulates */ - sum += (q63_t) * pIn1++ * *pIn2; - pIn2 += numColsB; - - /* Decrement the loop counter */ - colCnt--; - } - - /* Convert the result from 2.62 to 1.31 format and store in destination buffer */ - *px++ = (q31_t) clip_q63_to_q31(sum >> 31); - - /* Decrement the column loop counter */ - col--; - - /* Update the pointer pIn2 to point to the starting address of the next column */ - pIn2 = pInB + (numColsB - col); - - } while (col > 0U); - -#endif - - /* Update the pointer pInA to point to the starting address of the next row */ - i = i + numColsB; - pInA = pInA + numColsA; - - /* Decrement the row loop counter */ - row--; - - } while (row > 0U); - - /* set status as ARM_MATH_SUCCESS */ - status = ARM_MATH_SUCCESS; - } - /* Return to application */ - return (status); -} - -/** - * @} end of MatrixMult group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_scale_f32.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_scale_f32.c deleted file mode 100644 index dbc385a..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_scale_f32.c +++ /dev/null @@ -1,169 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_mat_scale_f32.c - * Description: Multiplies a floating-point matrix by a scalar - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupMatrix - */ - -/** - * @defgroup MatrixScale Matrix Scale - * - * Multiplies a matrix by a scalar. This is accomplished by multiplying each element in the - * matrix by the scalar. For example: - * \image html MatrixScale.gif "Matrix Scaling of a 3 x 3 matrix" - * - * The function checks to make sure that the input and output matrices are of the same size. - * - * In the fixed-point Q15 and Q31 functions, scale is represented by - * a fractional multiplication scaleFract and an arithmetic shift shift. - * The shift allows the gain of the scaling operation to exceed 1.0. - * The overall scale factor applied to the fixed-point data is - *
- *     scale = scaleFract * 2^shift.
- * 
- */ - -/** - * @addtogroup MatrixScale - * @{ - */ - -/** - * @brief Floating-point matrix scaling. - * @param[in] *pSrc points to input matrix structure - * @param[in] scale scale factor to be applied - * @param[out] *pDst points to output matrix structure - * @return The function returns either ARM_MATH_SIZE_MISMATCH - * or ARM_MATH_SUCCESS based on the outcome of size checking. - * - */ - -arm_status arm_mat_scale_f32( - const arm_matrix_instance_f32 * pSrc, - float32_t scale, - arm_matrix_instance_f32 * pDst) -{ - float32_t *pIn = pSrc->pData; /* input data matrix pointer */ - float32_t *pOut = pDst->pData; /* output data matrix pointer */ - uint32_t numSamples; /* total number of elements in the matrix */ - uint32_t blkCnt; /* loop counters */ - arm_status status; /* status of matrix scaling */ - -#if defined (ARM_MATH_DSP) - - float32_t in1, in2, in3, in4; /* temporary variables */ - float32_t out1, out2, out3, out4; /* temporary variables */ - -#endif // #if defined (ARM_MATH_DSP) - -#ifdef ARM_MATH_MATRIX_CHECK - /* Check for matrix mismatch condition */ - if ((pSrc->numRows != pDst->numRows) || (pSrc->numCols != pDst->numCols)) - { - /* Set status as ARM_MATH_SIZE_MISMATCH */ - status = ARM_MATH_SIZE_MISMATCH; - } - else -#endif /* #ifdef ARM_MATH_MATRIX_CHECK */ - { - /* Total number of samples in the input matrix */ - numSamples = (uint32_t) pSrc->numRows * pSrc->numCols; - -#if defined (ARM_MATH_DSP) - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - /* Loop Unrolling */ - blkCnt = numSamples >> 2; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - /* C(m,n) = A(m,n) * scale */ - /* Scaling and results are stored in the destination buffer. */ - in1 = pIn[0]; - in2 = pIn[1]; - in3 = pIn[2]; - in4 = pIn[3]; - - out1 = in1 * scale; - out2 = in2 * scale; - out3 = in3 * scale; - out4 = in4 * scale; - - - pOut[0] = out1; - pOut[1] = out2; - pOut[2] = out3; - pOut[3] = out4; - - /* update pointers to process next sampels */ - pIn += 4U; - pOut += 4U; - - /* Decrement the numSamples loop counter */ - blkCnt--; - } - - /* If the numSamples is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = numSamples % 0x4U; - -#else - - /* Run the below code for Cortex-M0 */ - - /* Initialize blkCnt with number of samples */ - blkCnt = numSamples; - -#endif /* #if defined (ARM_MATH_DSP) */ - - while (blkCnt > 0U) - { - /* C(m,n) = A(m,n) * scale */ - /* The results are stored in the destination buffer. */ - *pOut++ = (*pIn++) * scale; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* Set status as ARM_MATH_SUCCESS */ - status = ARM_MATH_SUCCESS; - } - - /* Return to application */ - return (status); -} - -/** - * @} end of MatrixScale group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_scale_q15.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_scale_q15.c deleted file mode 100644 index af664ca..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_scale_q15.c +++ /dev/null @@ -1,171 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_mat_scale_q15.c - * Description: Multiplies a Q15 matrix by a scalar - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupMatrix - */ - -/** - * @addtogroup MatrixScale - * @{ - */ - -/** - * @brief Q15 matrix scaling. - * @param[in] *pSrc points to input matrix - * @param[in] scaleFract fractional portion of the scale factor - * @param[in] shift number of bits to shift the result by - * @param[out] *pDst points to output matrix structure - * @return The function returns either - * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. - * - * @details - * Scaling and Overflow Behavior: - * \par - * The input data *pSrc and scaleFract are in 1.15 format. - * These are multiplied to yield a 2.30 intermediate result and this is shifted with saturation to 1.15 format. - */ - -arm_status arm_mat_scale_q15( - const arm_matrix_instance_q15 * pSrc, - q15_t scaleFract, - int32_t shift, - arm_matrix_instance_q15 * pDst) -{ - q15_t *pIn = pSrc->pData; /* input data matrix pointer */ - q15_t *pOut = pDst->pData; /* output data matrix pointer */ - uint32_t numSamples; /* total number of elements in the matrix */ - int32_t totShift = 15 - shift; /* total shift to apply after scaling */ - uint32_t blkCnt; /* loop counters */ - arm_status status; /* status of matrix scaling */ - -#if defined (ARM_MATH_DSP) - - q15_t in1, in2, in3, in4; - q31_t out1, out2, out3, out4; - q31_t inA1, inA2; - -#endif // #if defined (ARM_MATH_DSP) - -#ifdef ARM_MATH_MATRIX_CHECK - /* Check for matrix mismatch */ - if ((pSrc->numRows != pDst->numRows) || (pSrc->numCols != pDst->numCols)) - { - /* Set status as ARM_MATH_SIZE_MISMATCH */ - status = ARM_MATH_SIZE_MISMATCH; - } - else -#endif // #ifdef ARM_MATH_MATRIX_CHECK - { - /* Total number of samples in the input matrix */ - numSamples = (uint32_t) pSrc->numRows * pSrc->numCols; - -#if defined (ARM_MATH_DSP) - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - /* Loop Unrolling */ - blkCnt = numSamples >> 2; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - /* C(m,n) = A(m,n) * k */ - /* Scale, saturate and then store the results in the destination buffer. */ - /* Reading 2 inputs from memory */ - inA1 = _SIMD32_OFFSET(pIn); - inA2 = _SIMD32_OFFSET(pIn + 2); - - /* C = A * scale */ - /* Scale the inputs and then store the 2 results in the destination buffer - * in single cycle by packing the outputs */ - out1 = (q31_t) ((q15_t) (inA1 >> 16) * scaleFract); - out2 = (q31_t) ((q15_t) inA1 * scaleFract); - out3 = (q31_t) ((q15_t) (inA2 >> 16) * scaleFract); - out4 = (q31_t) ((q15_t) inA2 * scaleFract); - - out1 = out1 >> totShift; - inA1 = _SIMD32_OFFSET(pIn + 4); - out2 = out2 >> totShift; - inA2 = _SIMD32_OFFSET(pIn + 6); - out3 = out3 >> totShift; - out4 = out4 >> totShift; - - in1 = (q15_t) (__SSAT(out1, 16)); - in2 = (q15_t) (__SSAT(out2, 16)); - in3 = (q15_t) (__SSAT(out3, 16)); - in4 = (q15_t) (__SSAT(out4, 16)); - - _SIMD32_OFFSET(pOut) = __PKHBT(in2, in1, 16); - _SIMD32_OFFSET(pOut + 2) = __PKHBT(in4, in3, 16); - - /* update pointers to process next sampels */ - pIn += 4U; - pOut += 4U; - - - /* Decrement the numSamples loop counter */ - blkCnt--; - } - - /* If the numSamples is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = numSamples % 0x4U; - -#else - - /* Run the below code for Cortex-M0 */ - - /* Initialize blkCnt with number of samples */ - blkCnt = numSamples; - -#endif /* #if defined (ARM_MATH_DSP) */ - - while (blkCnt > 0U) - { - /* C(m,n) = A(m,n) * k */ - /* Scale, saturate and then store the results in the destination buffer. */ - *pOut++ = - (q15_t) (__SSAT(((q31_t) (*pIn++) * scaleFract) >> totShift, 16)); - - /* Decrement the numSamples loop counter */ - blkCnt--; - } - /* Set status as ARM_MATH_SUCCESS */ - status = ARM_MATH_SUCCESS; - } - - /* Return to application */ - return (status); -} - -/** - * @} end of MatrixScale group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_scale_q31.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_scale_q31.c deleted file mode 100644 index d190cf1..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_scale_q31.c +++ /dev/null @@ -1,191 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_mat_scale_q31.c - * Description: Multiplies a Q31 matrix by a scalar - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupMatrix - */ - -/** - * @addtogroup MatrixScale - * @{ - */ - -/** - * @brief Q31 matrix scaling. - * @param[in] *pSrc points to input matrix - * @param[in] scaleFract fractional portion of the scale factor - * @param[in] shift number of bits to shift the result by - * @param[out] *pDst points to output matrix structure - * @return The function returns either - * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. - * - * @details - * Scaling and Overflow Behavior: - * \par - * The input data *pSrc and scaleFract are in 1.31 format. - * These are multiplied to yield a 2.62 intermediate result and this is shifted with saturation to 1.31 format. - */ - -arm_status arm_mat_scale_q31( - const arm_matrix_instance_q31 * pSrc, - q31_t scaleFract, - int32_t shift, - arm_matrix_instance_q31 * pDst) -{ - q31_t *pIn = pSrc->pData; /* input data matrix pointer */ - q31_t *pOut = pDst->pData; /* output data matrix pointer */ - uint32_t numSamples; /* total number of elements in the matrix */ - int32_t totShift = shift + 1; /* shift to apply after scaling */ - uint32_t blkCnt; /* loop counters */ - arm_status status; /* status of matrix scaling */ - q31_t in1, in2, out1; /* temporary variabels */ - -#if defined (ARM_MATH_DSP) - - q31_t in3, in4, out2, out3, out4; /* temporary variables */ - -#endif // #ifndef ARM_MAT_CM0 - -#ifdef ARM_MATH_MATRIX_CHECK - /* Check for matrix mismatch */ - if ((pSrc->numRows != pDst->numRows) || (pSrc->numCols != pDst->numCols)) - { - /* Set status as ARM_MATH_SIZE_MISMATCH */ - status = ARM_MATH_SIZE_MISMATCH; - } - else -#endif // #ifdef ARM_MATH_MATRIX_CHECK - { - /* Total number of samples in the input matrix */ - numSamples = (uint32_t) pSrc->numRows * pSrc->numCols; - -#if defined (ARM_MATH_DSP) - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - /* Loop Unrolling */ - blkCnt = numSamples >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - /* C(m,n) = A(m,n) * k */ - /* Read values from input */ - in1 = *pIn; - in2 = *(pIn + 1); - in3 = *(pIn + 2); - in4 = *(pIn + 3); - - /* multiply input with scaler value */ - in1 = ((q63_t) in1 * scaleFract) >> 32; - in2 = ((q63_t) in2 * scaleFract) >> 32; - in3 = ((q63_t) in3 * scaleFract) >> 32; - in4 = ((q63_t) in4 * scaleFract) >> 32; - - /* apply shifting */ - out1 = in1 << totShift; - out2 = in2 << totShift; - - /* saturate the results. */ - if (in1 != (out1 >> totShift)) - out1 = 0x7FFFFFFF ^ (in1 >> 31); - - if (in2 != (out2 >> totShift)) - out2 = 0x7FFFFFFF ^ (in2 >> 31); - - out3 = in3 << totShift; - out4 = in4 << totShift; - - *pOut = out1; - *(pOut + 1) = out2; - - if (in3 != (out3 >> totShift)) - out3 = 0x7FFFFFFF ^ (in3 >> 31); - - if (in4 != (out4 >> totShift)) - out4 = 0x7FFFFFFF ^ (in4 >> 31); - - - *(pOut + 2) = out3; - *(pOut + 3) = out4; - - /* update pointers to process next sampels */ - pIn += 4U; - pOut += 4U; - - - /* Decrement the numSamples loop counter */ - blkCnt--; - } - - /* If the numSamples is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = numSamples % 0x4U; - -#else - - /* Run the below code for Cortex-M0 */ - - /* Initialize blkCnt with number of samples */ - blkCnt = numSamples; - -#endif /* #if defined (ARM_MATH_DSP) */ - - while (blkCnt > 0U) - { - /* C(m,n) = A(m,n) * k */ - /* Scale, saturate and then store the results in the destination buffer. */ - in1 = *pIn++; - - in2 = ((q63_t) in1 * scaleFract) >> 32; - - out1 = in2 << totShift; - - if (in2 != (out1 >> totShift)) - out1 = 0x7FFFFFFF ^ (in2 >> 31); - - *pOut++ = out1; - - /* Decrement the numSamples loop counter */ - blkCnt--; - } - - /* Set status as ARM_MATH_SUCCESS */ - status = ARM_MATH_SUCCESS; - } - - /* Return to application */ - return (status); -} - -/** - * @} end of MatrixScale group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_sub_f32.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_sub_f32.c deleted file mode 100644 index 7c0b54e..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_sub_f32.c +++ /dev/null @@ -1,197 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_mat_sub_f32.c - * Description: Floating-point matrix subtraction - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupMatrix - */ - -/** - * @defgroup MatrixSub Matrix Subtraction - * - * Subtract two matrices. - * \image html MatrixSubtraction.gif "Subraction of two 3 x 3 matrices" - * - * The functions check to make sure that - * pSrcA, pSrcB, and pDst have the same - * number of rows and columns. - */ - -/** - * @addtogroup MatrixSub - * @{ - */ - -/** - * @brief Floating-point matrix subtraction - * @param[in] *pSrcA points to the first input matrix structure - * @param[in] *pSrcB points to the second input matrix structure - * @param[out] *pDst points to output matrix structure - * @return The function returns either - * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. - */ - -arm_status arm_mat_sub_f32( - const arm_matrix_instance_f32 * pSrcA, - const arm_matrix_instance_f32 * pSrcB, - arm_matrix_instance_f32 * pDst) -{ - float32_t *pIn1 = pSrcA->pData; /* input data matrix pointer A */ - float32_t *pIn2 = pSrcB->pData; /* input data matrix pointer B */ - float32_t *pOut = pDst->pData; /* output data matrix pointer */ - -#if defined (ARM_MATH_DSP) - - float32_t inA1, inA2, inB1, inB2, out1, out2; /* temporary variables */ - -#endif // #if defined (ARM_MATH_DSP) - - uint32_t numSamples; /* total number of elements in the matrix */ - uint32_t blkCnt; /* loop counters */ - arm_status status; /* status of matrix subtraction */ - -#ifdef ARM_MATH_MATRIX_CHECK - /* Check for matrix mismatch condition */ - if ((pSrcA->numRows != pSrcB->numRows) || - (pSrcA->numCols != pSrcB->numCols) || - (pSrcA->numRows != pDst->numRows) || (pSrcA->numCols != pDst->numCols)) - { - /* Set status as ARM_MATH_SIZE_MISMATCH */ - status = ARM_MATH_SIZE_MISMATCH; - } - else -#endif /* #ifdef ARM_MATH_MATRIX_CHECK */ - { - /* Total number of samples in the input matrix */ - numSamples = (uint32_t) pSrcA->numRows * pSrcA->numCols; - -#if defined (ARM_MATH_DSP) - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - /* Loop Unrolling */ - blkCnt = numSamples >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - /* C(m,n) = A(m,n) - B(m,n) */ - /* Subtract and then store the results in the destination buffer. */ - /* Read values from source A */ - inA1 = pIn1[0]; - - /* Read values from source B */ - inB1 = pIn2[0]; - - /* Read values from source A */ - inA2 = pIn1[1]; - - /* out = sourceA - sourceB */ - out1 = inA1 - inB1; - - /* Read values from source B */ - inB2 = pIn2[1]; - - /* Read values from source A */ - inA1 = pIn1[2]; - - /* out = sourceA - sourceB */ - out2 = inA2 - inB2; - - /* Read values from source B */ - inB1 = pIn2[2]; - - /* Store result in destination */ - pOut[0] = out1; - pOut[1] = out2; - - /* Read values from source A */ - inA2 = pIn1[3]; - - /* Read values from source B */ - inB2 = pIn2[3]; - - /* out = sourceA - sourceB */ - out1 = inA1 - inB1; - - - /* out = sourceA - sourceB */ - out2 = inA2 - inB2; - - /* Store result in destination */ - pOut[2] = out1; - - /* Store result in destination */ - pOut[3] = out2; - - - /* update pointers to process next sampels */ - pIn1 += 4U; - pIn2 += 4U; - pOut += 4U; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the numSamples is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = numSamples % 0x4U; - -#else - - /* Run the below code for Cortex-M0 */ - - /* Initialize blkCnt with number of samples */ - blkCnt = numSamples; - -#endif /* #if defined (ARM_MATH_DSP) */ - - while (blkCnt > 0U) - { - /* C(m,n) = A(m,n) - B(m,n) */ - /* Subtract and then store the results in the destination buffer. */ - *pOut++ = (*pIn1++) - (*pIn2++); - - /* Decrement the loop counter */ - blkCnt--; - } - - /* Set status as ARM_MATH_SUCCESS */ - status = ARM_MATH_SUCCESS; - } - - /* Return to application */ - return (status); -} - -/** - * @} end of MatrixSub group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_sub_q15.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_sub_q15.c deleted file mode 100644 index 28e659f..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_sub_q15.c +++ /dev/null @@ -1,148 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_mat_sub_q15.c - * Description: Q15 Matrix subtraction - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupMatrix - */ - -/** - * @addtogroup MatrixSub - * @{ - */ - -/** - * @brief Q15 matrix subtraction. - * @param[in] *pSrcA points to the first input matrix structure - * @param[in] *pSrcB points to the second input matrix structure - * @param[out] *pDst points to output matrix structure - * @return The function returns either - * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. - * - * Scaling and Overflow Behavior: - * \par - * The function uses saturating arithmetic. - * Results outside of the allowable Q15 range [0x8000 0x7FFF] will be saturated. - */ - -arm_status arm_mat_sub_q15( - const arm_matrix_instance_q15 * pSrcA, - const arm_matrix_instance_q15 * pSrcB, - arm_matrix_instance_q15 * pDst) -{ - q15_t *pInA = pSrcA->pData; /* input data matrix pointer A */ - q15_t *pInB = pSrcB->pData; /* input data matrix pointer B */ - q15_t *pOut = pDst->pData; /* output data matrix pointer */ - uint32_t numSamples; /* total number of elements in the matrix */ - uint32_t blkCnt; /* loop counters */ - arm_status status; /* status of matrix subtraction */ - - -#ifdef ARM_MATH_MATRIX_CHECK - - - /* Check for matrix mismatch condition */ - if ((pSrcA->numRows != pSrcB->numRows) || - (pSrcA->numCols != pSrcB->numCols) || - (pSrcA->numRows != pDst->numRows) || (pSrcA->numCols != pDst->numCols)) - { - /* Set status as ARM_MATH_SIZE_MISMATCH */ - status = ARM_MATH_SIZE_MISMATCH; - } - else -#endif /* #ifdef ARM_MATH_MATRIX_CHECK */ - - { - /* Total number of samples in the input matrix */ - numSamples = (uint32_t) pSrcA->numRows * pSrcA->numCols; - -#if defined (ARM_MATH_DSP) - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - /* Apply loop unrolling */ - blkCnt = numSamples >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - /* C(m,n) = A(m,n) - B(m,n) */ - /* Subtract, Saturate and then store the results in the destination buffer. */ - *__SIMD32(pOut)++ = __QSUB16(*__SIMD32(pInA)++, *__SIMD32(pInB)++); - *__SIMD32(pOut)++ = __QSUB16(*__SIMD32(pInA)++, *__SIMD32(pInB)++); - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = numSamples % 0x4U; - - while (blkCnt > 0U) - { - /* C(m,n) = A(m,n) - B(m,n) */ - /* Subtract and then store the results in the destination buffer. */ - *pOut++ = (q15_t) __QSUB16(*pInA++, *pInB++); - - /* Decrement the loop counter */ - blkCnt--; - } - -#else - - /* Run the below code for Cortex-M0 */ - - /* Initialize blkCnt with number of samples */ - blkCnt = numSamples; - - while (blkCnt > 0U) - { - /* C(m,n) = A(m,n) - B(m,n) */ - /* Subtract and then store the results in the destination buffer. */ - *pOut++ = (q15_t) __SSAT(((q31_t) * pInA++ - *pInB++), 16); - - /* Decrement the loop counter */ - blkCnt--; - } - -#endif /* #if defined (ARM_MATH_DSP) */ - - /* Set status as ARM_MATH_SUCCESS */ - status = ARM_MATH_SUCCESS; - } - - /* Return to application */ - return (status); -} - -/** - * @} end of MatrixSub group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_sub_q31.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_sub_q31.c deleted file mode 100644 index 3bf5508..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_sub_q31.c +++ /dev/null @@ -1,196 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_mat_sub_q31.c - * Description: Q31 matrix subtraction - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupMatrix - */ - -/** - * @addtogroup MatrixSub - * @{ - */ - -/** - * @brief Q31 matrix subtraction. - * @param[in] *pSrcA points to the first input matrix structure - * @param[in] *pSrcB points to the second input matrix structure - * @param[out] *pDst points to output matrix structure - * @return The function returns either - * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. - * - * Scaling and Overflow Behavior: - * \par - * The function uses saturating arithmetic. - * Results outside of the allowable Q31 range [0x80000000 0x7FFFFFFF] will be saturated. - */ - - -arm_status arm_mat_sub_q31( - const arm_matrix_instance_q31 * pSrcA, - const arm_matrix_instance_q31 * pSrcB, - arm_matrix_instance_q31 * pDst) -{ - q31_t *pIn1 = pSrcA->pData; /* input data matrix pointer A */ - q31_t *pIn2 = pSrcB->pData; /* input data matrix pointer B */ - q31_t *pOut = pDst->pData; /* output data matrix pointer */ - q31_t inA1, inB1; /* temporary variables */ - -#if defined (ARM_MATH_DSP) - - q31_t inA2, inB2; /* temporary variables */ - q31_t out1, out2; /* temporary variables */ - -#endif // #if defined (ARM_MATH_DSP) - - uint32_t numSamples; /* total number of elements in the matrix */ - uint32_t blkCnt; /* loop counters */ - arm_status status; /* status of matrix subtraction */ - - -#ifdef ARM_MATH_MATRIX_CHECK - /* Check for matrix mismatch condition */ - if ((pSrcA->numRows != pSrcB->numRows) || - (pSrcA->numCols != pSrcB->numCols) || - (pSrcA->numRows != pDst->numRows) || (pSrcA->numCols != pDst->numCols)) - { - /* Set status as ARM_MATH_SIZE_MISMATCH */ - status = ARM_MATH_SIZE_MISMATCH; - } - else -#endif - { - /* Total number of samples in the input matrix */ - numSamples = (uint32_t) pSrcA->numRows * pSrcA->numCols; - -#if defined (ARM_MATH_DSP) - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - /* Loop Unrolling */ - blkCnt = numSamples >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - /* C(m,n) = A(m,n) - B(m,n) */ - /* Subtract, saturate and then store the results in the destination buffer. */ - /* Read values from source A */ - inA1 = pIn1[0]; - - /* Read values from source B */ - inB1 = pIn2[0]; - - /* Read values from source A */ - inA2 = pIn1[1]; - - /* Subtract and saturate */ - out1 = __QSUB(inA1, inB1); - - /* Read values from source B */ - inB2 = pIn2[1]; - - /* Read values from source A */ - inA1 = pIn1[2]; - - /* Subtract and saturate */ - out2 = __QSUB(inA2, inB2); - - /* Read values from source B */ - inB1 = pIn2[2]; - - /* Store result in destination */ - pOut[0] = out1; - pOut[1] = out2; - - /* Read values from source A */ - inA2 = pIn1[3]; - - /* Read values from source B */ - inB2 = pIn2[3]; - - /* Subtract and saturate */ - out1 = __QSUB(inA1, inB1); - - /* Subtract and saturate */ - out2 = __QSUB(inA2, inB2); - - /* Store result in destination */ - pOut[2] = out1; - pOut[3] = out2; - - /* update pointers to process next samples */ - pIn1 += 4U; - pIn2 += 4U; - pOut += 4U; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the numSamples is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = numSamples % 0x4U; - -#else - - /* Run the below code for Cortex-M0 */ - - /* Initialize blkCnt with number of samples */ - blkCnt = numSamples; - -#endif /* #if defined (ARM_MATH_DSP) */ - - while (blkCnt > 0U) - { - /* C(m,n) = A(m,n) - B(m,n) */ - /* Subtract, saturate and then store the results in the destination buffer. */ - inA1 = *pIn1++; - inB1 = *pIn2++; - - inA1 = __QSUB(inA1, inB1); - - *pOut++ = inA1; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* Set status as ARM_MATH_SUCCESS */ - status = ARM_MATH_SUCCESS; - } - - /* Return to application */ - return (status); -} - -/** - * @} end of MatrixSub group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_trans_f32.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_trans_f32.c deleted file mode 100644 index 84165ce..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_trans_f32.c +++ /dev/null @@ -1,206 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_mat_trans_f32.c - * Description: Floating-point matrix transpose - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * @defgroup MatrixTrans Matrix Transpose - * - * Tranposes a matrix. - * Transposing an M x N matrix flips it around the center diagonal and results in an N x M matrix. - * \image html MatrixTranspose.gif "Transpose of a 3 x 3 matrix" - */ - -#include "arm_math.h" - -/** - * @ingroup groupMatrix - */ - -/** - * @addtogroup MatrixTrans - * @{ - */ - -/** - * @brief Floating-point matrix transpose. - * @param[in] *pSrc points to the input matrix - * @param[out] *pDst points to the output matrix - * @return The function returns either ARM_MATH_SIZE_MISMATCH - * or ARM_MATH_SUCCESS based on the outcome of size checking. - */ - - -arm_status arm_mat_trans_f32( - const arm_matrix_instance_f32 * pSrc, - arm_matrix_instance_f32 * pDst) -{ - float32_t *pIn = pSrc->pData; /* input data matrix pointer */ - float32_t *pOut = pDst->pData; /* output data matrix pointer */ - float32_t *px; /* Temporary output data matrix pointer */ - uint16_t nRows = pSrc->numRows; /* number of rows */ - uint16_t nColumns = pSrc->numCols; /* number of columns */ - -#if defined (ARM_MATH_DSP) - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - uint16_t blkCnt, i = 0U, row = nRows; /* loop counters */ - arm_status status; /* status of matrix transpose */ - - -#ifdef ARM_MATH_MATRIX_CHECK - - - /* Check for matrix mismatch condition */ - if ((pSrc->numRows != pDst->numCols) || (pSrc->numCols != pDst->numRows)) - { - /* Set status as ARM_MATH_SIZE_MISMATCH */ - status = ARM_MATH_SIZE_MISMATCH; - } - else -#endif /* #ifdef ARM_MATH_MATRIX_CHECK */ - - { - /* Matrix transpose by exchanging the rows with columns */ - /* row loop */ - do - { - /* Loop Unrolling */ - blkCnt = nColumns >> 2; - - /* The pointer px is set to starting address of the column being processed */ - px = pOut + i; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) /* column loop */ - { - /* Read and store the input element in the destination */ - *px = *pIn++; - - /* Update the pointer px to point to the next row of the transposed matrix */ - px += nRows; - - /* Read and store the input element in the destination */ - *px = *pIn++; - - /* Update the pointer px to point to the next row of the transposed matrix */ - px += nRows; - - /* Read and store the input element in the destination */ - *px = *pIn++; - - /* Update the pointer px to point to the next row of the transposed matrix */ - px += nRows; - - /* Read and store the input element in the destination */ - *px = *pIn++; - - /* Update the pointer px to point to the next row of the transposed matrix */ - px += nRows; - - /* Decrement the column loop counter */ - blkCnt--; - } - - /* Perform matrix transpose for last 3 samples here. */ - blkCnt = nColumns % 0x4U; - - while (blkCnt > 0U) - { - /* Read and store the input element in the destination */ - *px = *pIn++; - - /* Update the pointer px to point to the next row of the transposed matrix */ - px += nRows; - - /* Decrement the column loop counter */ - blkCnt--; - } - -#else - - /* Run the below code for Cortex-M0 */ - - uint16_t col, i = 0U, row = nRows; /* loop counters */ - arm_status status; /* status of matrix transpose */ - - -#ifdef ARM_MATH_MATRIX_CHECK - - /* Check for matrix mismatch condition */ - if ((pSrc->numRows != pDst->numCols) || (pSrc->numCols != pDst->numRows)) - { - /* Set status as ARM_MATH_SIZE_MISMATCH */ - status = ARM_MATH_SIZE_MISMATCH; - } - else -#endif /* #ifdef ARM_MATH_MATRIX_CHECK */ - - { - /* Matrix transpose by exchanging the rows with columns */ - /* row loop */ - do - { - /* The pointer px is set to starting address of the column being processed */ - px = pOut + i; - - /* Initialize column loop counter */ - col = nColumns; - - while (col > 0U) - { - /* Read and store the input element in the destination */ - *px = *pIn++; - - /* Update the pointer px to point to the next row of the transposed matrix */ - px += nRows; - - /* Decrement the column loop counter */ - col--; - } - -#endif /* #if defined (ARM_MATH_DSP) */ - - i++; - - /* Decrement the row loop counter */ - row--; - - } while (row > 0U); /* row loop end */ - - /* Set status as ARM_MATH_SUCCESS */ - status = ARM_MATH_SUCCESS; - } - - /* Return to application */ - return (status); -} - -/** - * @} end of MatrixTrans group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_trans_q15.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_trans_q15.c deleted file mode 100644 index 6ba0904..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_trans_q15.c +++ /dev/null @@ -1,272 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_mat_trans_q15.c - * Description: Q15 matrix transpose - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupMatrix - */ - -/** - * @addtogroup MatrixTrans - * @{ - */ - -/* - * @brief Q15 matrix transpose. - * @param[in] *pSrc points to the input matrix - * @param[out] *pDst points to the output matrix - * @return The function returns either ARM_MATH_SIZE_MISMATCH - * or ARM_MATH_SUCCESS based on the outcome of size checking. - */ - -arm_status arm_mat_trans_q15( - const arm_matrix_instance_q15 * pSrc, - arm_matrix_instance_q15 * pDst) -{ - q15_t *pSrcA = pSrc->pData; /* input data matrix pointer */ - q15_t *pOut = pDst->pData; /* output data matrix pointer */ - uint16_t nRows = pSrc->numRows; /* number of nRows */ - uint16_t nColumns = pSrc->numCols; /* number of nColumns */ - uint16_t col, row = nRows, i = 0U; /* row and column loop counters */ - arm_status status; /* status of matrix transpose */ - -#if defined (ARM_MATH_DSP) - - /* Run the below code for Cortex-M4 and Cortex-M3 */ -#ifndef UNALIGNED_SUPPORT_DISABLE - - q31_t in; /* variable to hold temporary output */ - -#else - - q15_t in; - -#endif /* #ifndef UNALIGNED_SUPPORT_DISABLE */ - -#ifdef ARM_MATH_MATRIX_CHECK - - - /* Check for matrix mismatch condition */ - if ((pSrc->numRows != pDst->numCols) || (pSrc->numCols != pDst->numRows)) - { - /* Set status as ARM_MATH_SIZE_MISMATCH */ - status = ARM_MATH_SIZE_MISMATCH; - } - else -#endif /* #ifdef ARM_MATH_MATRIX_CHECK */ - - { - /* Matrix transpose by exchanging the rows with columns */ - /* row loop */ - do - { - - /* Apply loop unrolling and exchange the columns with row elements */ - col = nColumns >> 2U; - - /* The pointer pOut is set to starting address of the column being processed */ - pOut = pDst->pData + i; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (col > 0U) - { -#ifndef UNALIGNED_SUPPORT_DISABLE - - /* Read two elements from the row */ - in = *__SIMD32(pSrcA)++; - - /* Unpack and store one element in the destination */ -#ifndef ARM_MATH_BIG_ENDIAN - - *pOut = (q15_t) in; - -#else - - *pOut = (q15_t) ((in & (q31_t) 0xffff0000) >> 16); - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - /* Update the pointer pOut to point to the next row of the transposed matrix */ - pOut += nRows; - - /* Unpack and store the second element in the destination */ - -#ifndef ARM_MATH_BIG_ENDIAN - - *pOut = (q15_t) ((in & (q31_t) 0xffff0000) >> 16); - -#else - - *pOut = (q15_t) in; - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - /* Update the pointer pOut to point to the next row of the transposed matrix */ - pOut += nRows; - - /* Read two elements from the row */ -#ifndef ARM_MATH_BIG_ENDIAN - - in = *__SIMD32(pSrcA)++; - -#else - - in = *__SIMD32(pSrcA)++; - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - /* Unpack and store one element in the destination */ -#ifndef ARM_MATH_BIG_ENDIAN - - *pOut = (q15_t) in; - -#else - - *pOut = (q15_t) ((in & (q31_t) 0xffff0000) >> 16); - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - /* Update the pointer pOut to point to the next row of the transposed matrix */ - pOut += nRows; - - /* Unpack and store the second element in the destination */ -#ifndef ARM_MATH_BIG_ENDIAN - - *pOut = (q15_t) ((in & (q31_t) 0xffff0000) >> 16); - -#else - - *pOut = (q15_t) in; - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - -#else - /* Read one element from the row */ - in = *pSrcA++; - - /* Store one element in the destination */ - *pOut = in; - - /* Update the pointer px to point to the next row of the transposed matrix */ - pOut += nRows; - - /* Read one element from the row */ - in = *pSrcA++; - - /* Store one element in the destination */ - *pOut = in; - - /* Update the pointer px to point to the next row of the transposed matrix */ - pOut += nRows; - - /* Read one element from the row */ - in = *pSrcA++; - - /* Store one element in the destination */ - *pOut = in; - - /* Update the pointer px to point to the next row of the transposed matrix */ - pOut += nRows; - - /* Read one element from the row */ - in = *pSrcA++; - - /* Store one element in the destination */ - *pOut = in; - -#endif /* #ifndef UNALIGNED_SUPPORT_DISABLE */ - - /* Update the pointer pOut to point to the next row of the transposed matrix */ - pOut += nRows; - - /* Decrement the column loop counter */ - col--; - } - - /* Perform matrix transpose for last 3 samples here. */ - col = nColumns % 0x4U; - -#else - - /* Run the below code for Cortex-M0 */ - -#ifdef ARM_MATH_MATRIX_CHECK - - /* Check for matrix mismatch condition */ - if ((pSrc->numRows != pDst->numCols) || (pSrc->numCols != pDst->numRows)) - { - /* Set status as ARM_MATH_SIZE_MISMATCH */ - status = ARM_MATH_SIZE_MISMATCH; - } - else -#endif /* #ifdef ARM_MATH_MATRIX_CHECK */ - - { - /* Matrix transpose by exchanging the rows with columns */ - /* row loop */ - do - { - /* The pointer pOut is set to starting address of the column being processed */ - pOut = pDst->pData + i; - - /* Initialize column loop counter */ - col = nColumns; - -#endif /* #if defined (ARM_MATH_DSP) */ - - while (col > 0U) - { - /* Read and store the input element in the destination */ - *pOut = *pSrcA++; - - /* Update the pointer pOut to point to the next row of the transposed matrix */ - pOut += nRows; - - /* Decrement the column loop counter */ - col--; - } - - i++; - - /* Decrement the row loop counter */ - row--; - - } while (row > 0U); - - /* set status as ARM_MATH_SUCCESS */ - status = ARM_MATH_SUCCESS; - } - /* Return to application */ - return (status); -} - -/** - * @} end of MatrixTrans group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_trans_q31.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_trans_q31.c deleted file mode 100644 index 6f698e0..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_trans_q31.c +++ /dev/null @@ -1,198 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_mat_trans_q31.c - * Description: Q31 matrix transpose - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupMatrix - */ - -/** - * @addtogroup MatrixTrans - * @{ - */ - -/* - * @brief Q31 matrix transpose. - * @param[in] *pSrc points to the input matrix - * @param[out] *pDst points to the output matrix - * @return The function returns either ARM_MATH_SIZE_MISMATCH - * or ARM_MATH_SUCCESS based on the outcome of size checking. - */ - -arm_status arm_mat_trans_q31( - const arm_matrix_instance_q31 * pSrc, - arm_matrix_instance_q31 * pDst) -{ - q31_t *pIn = pSrc->pData; /* input data matrix pointer */ - q31_t *pOut = pDst->pData; /* output data matrix pointer */ - q31_t *px; /* Temporary output data matrix pointer */ - uint16_t nRows = pSrc->numRows; /* number of nRows */ - uint16_t nColumns = pSrc->numCols; /* number of nColumns */ - -#if defined (ARM_MATH_DSP) - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - uint16_t blkCnt, i = 0U, row = nRows; /* loop counters */ - arm_status status; /* status of matrix transpose */ - - -#ifdef ARM_MATH_MATRIX_CHECK - - - /* Check for matrix mismatch condition */ - if ((pSrc->numRows != pDst->numCols) || (pSrc->numCols != pDst->numRows)) - { - /* Set status as ARM_MATH_SIZE_MISMATCH */ - status = ARM_MATH_SIZE_MISMATCH; - } - else -#endif /* #ifdef ARM_MATH_MATRIX_CHECK */ - - { - /* Matrix transpose by exchanging the rows with columns */ - /* row loop */ - do - { - /* Apply loop unrolling and exchange the columns with row elements */ - blkCnt = nColumns >> 2U; - - /* The pointer px is set to starting address of the column being processed */ - px = pOut + i; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - /* Read and store the input element in the destination */ - *px = *pIn++; - - /* Update the pointer px to point to the next row of the transposed matrix */ - px += nRows; - - /* Read and store the input element in the destination */ - *px = *pIn++; - - /* Update the pointer px to point to the next row of the transposed matrix */ - px += nRows; - - /* Read and store the input element in the destination */ - *px = *pIn++; - - /* Update the pointer px to point to the next row of the transposed matrix */ - px += nRows; - - /* Read and store the input element in the destination */ - *px = *pIn++; - - /* Update the pointer px to point to the next row of the transposed matrix */ - px += nRows; - - /* Decrement the column loop counter */ - blkCnt--; - } - - /* Perform matrix transpose for last 3 samples here. */ - blkCnt = nColumns % 0x4U; - - while (blkCnt > 0U) - { - /* Read and store the input element in the destination */ - *px = *pIn++; - - /* Update the pointer px to point to the next row of the transposed matrix */ - px += nRows; - - /* Decrement the column loop counter */ - blkCnt--; - } - -#else - - /* Run the below code for Cortex-M0 */ - - uint16_t col, i = 0U, row = nRows; /* loop counters */ - arm_status status; /* status of matrix transpose */ - - -#ifdef ARM_MATH_MATRIX_CHECK - - /* Check for matrix mismatch condition */ - if ((pSrc->numRows != pDst->numCols) || (pSrc->numCols != pDst->numRows)) - { - /* Set status as ARM_MATH_SIZE_MISMATCH */ - status = ARM_MATH_SIZE_MISMATCH; - } - else -#endif /* #ifdef ARM_MATH_MATRIX_CHECK */ - - { - /* Matrix transpose by exchanging the rows with columns */ - /* row loop */ - do - { - /* The pointer px is set to starting address of the column being processed */ - px = pOut + i; - - /* Initialize column loop counter */ - col = nColumns; - - while (col > 0U) - { - /* Read and store the input element in the destination */ - *px = *pIn++; - - /* Update the pointer px to point to the next row of the transposed matrix */ - px += nRows; - - /* Decrement the column loop counter */ - col--; - } - -#endif /* #if defined (ARM_MATH_DSP) */ - - i++; - - /* Decrement the row loop counter */ - row--; - - } - while (row > 0U); /* row loop end */ - - /* set status as ARM_MATH_SUCCESS */ - status = ARM_MATH_SUCCESS; - } - - /* Return to application */ - return (status); -} - -/** - * @} end of MatrixTrans group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_max_f32.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_max_f32.c deleted file mode 100644 index a0a68ac..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_max_f32.c +++ /dev/null @@ -1,170 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_max_f32.c - * Description: Maximum value of a floating-point vector - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupStats - */ - -/** - * @defgroup Max Maximum - * - * Computes the maximum value of an array of data. - * The function returns both the maximum value and its position within the array. - * There are separate functions for floating-point, Q31, Q15, and Q7 data types. - */ - -/** - * @addtogroup Max - * @{ - */ - - -/** - * @brief Maximum value of a floating-point vector. - * @param[in] *pSrc points to the input vector - * @param[in] blockSize length of the input vector - * @param[out] *pResult maximum value returned here - * @param[out] *pIndex index of maximum value returned here - * @return none. - */ - -void arm_max_f32( - float32_t * pSrc, - uint32_t blockSize, - float32_t * pResult, - uint32_t * pIndex) -{ -#if defined (ARM_MATH_DSP) - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - float32_t maxVal1, maxVal2, out; /* Temporary variables to store the output value. */ - uint32_t blkCnt, outIndex, count; /* loop counter */ - - /* Initialise the count value. */ - count = 0U; - /* Initialise the index value to zero. */ - outIndex = 0U; - /* Load first input value that act as reference value for comparision */ - out = *pSrc++; - - /* Loop unrolling */ - blkCnt = (blockSize - 1U) >> 2U; - - while (blkCnt > 0U) - { - /* Initialize maxVal to the next consecutive values one by one */ - maxVal1 = *pSrc++; - maxVal2 = *pSrc++; - - /* compare for the maximum value */ - if (out < maxVal1) - { - /* Update the maximum value and its index */ - out = maxVal1; - outIndex = count + 1U; - } - - /* compare for the maximum value */ - if (out < maxVal2) - { - /* Update the maximum value and its index */ - out = maxVal2; - outIndex = count + 2U; - } - - /* Initialize maxVal to the next consecutive values one by one */ - maxVal1 = *pSrc++; - maxVal2 = *pSrc++; - - /* compare for the maximum value */ - if (out < maxVal1) - { - /* Update the maximum value and its index */ - out = maxVal1; - outIndex = count + 3U; - } - - /* compare for the maximum value */ - if (out < maxVal2) - { - /* Update the maximum value and its index */ - out = maxVal2; - outIndex = count + 4U; - } - - count += 4U; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* if (blockSize - 1U) is not multiple of 4 */ - blkCnt = (blockSize - 1U) % 4U; - -#else - /* Run the below code for Cortex-M0 */ - - float32_t maxVal1, out; /* Temporary variables to store the output value. */ - uint32_t blkCnt, outIndex; /* loop counter */ - - /* Initialise the index value to zero. */ - outIndex = 0U; - /* Load first input value that act as reference value for comparision */ - out = *pSrc++; - - blkCnt = (blockSize - 1U); - -#endif /* #if defined (ARM_MATH_DSP) */ - - while (blkCnt > 0U) - { - /* Initialize maxVal to the next consecutive values one by one */ - maxVal1 = *pSrc++; - - /* compare for the maximum value */ - if (out < maxVal1) - { - /* Update the maximum value and it's index */ - out = maxVal1; - outIndex = blockSize - blkCnt; - } - - /* Decrement the loop counter */ - blkCnt--; - } - - /* Store the maximum value and it's index into destination pointers */ - *pResult = out; - *pIndex = outIndex; -} - -/** - * @} end of Max group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_max_q15.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_max_q15.c deleted file mode 100644 index 67d5e34..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_max_q15.c +++ /dev/null @@ -1,162 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_max_q15.c - * Description: Maximum value of a Q15 vector - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupStats - */ - -/** - * @addtogroup Max - * @{ - */ - - -/** - * @brief Maximum value of a Q15 vector. - * @param[in] *pSrc points to the input vector - * @param[in] blockSize length of the input vector - * @param[out] *pResult maximum value returned here - * @param[out] *pIndex index of maximum value returned here - * @return none. - */ - -void arm_max_q15( - q15_t * pSrc, - uint32_t blockSize, - q15_t * pResult, - uint32_t * pIndex) -{ -#if defined (ARM_MATH_DSP) - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - q15_t maxVal1, maxVal2, out; /* Temporary variables to store the output value. */ - uint32_t blkCnt, outIndex, count; /* loop counter */ - - /* Initialise the count value. */ - count = 0U; - /* Initialise the index value to zero. */ - outIndex = 0U; - /* Load first input value that act as reference value for comparision */ - out = *pSrc++; - - /* Loop unrolling */ - blkCnt = (blockSize - 1U) >> 2U; - - while (blkCnt > 0U) - { - /* Initialize maxVal to the next consecutive values one by one */ - maxVal1 = *pSrc++; - maxVal2 = *pSrc++; - - /* compare for the maximum value */ - if (out < maxVal1) - { - /* Update the maximum value and its index */ - out = maxVal1; - outIndex = count + 1U; - } - - /* compare for the maximum value */ - if (out < maxVal2) - { - /* Update the maximum value and its index */ - out = maxVal2; - outIndex = count + 2U; - } - - /* Initialize maxVal to the next consecutive values one by one */ - maxVal1 = *pSrc++; - maxVal2 = *pSrc++; - - /* compare for the maximum value */ - if (out < maxVal1) - { - /* Update the maximum value and its index */ - out = maxVal1; - outIndex = count + 3U; - } - - /* compare for the maximum value */ - if (out < maxVal2) - { - /* Update the maximum value and its index */ - out = maxVal2; - outIndex = count + 4U; - } - - count += 4U; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* if (blockSize - 1U) is not multiple of 4 */ - blkCnt = (blockSize - 1U) % 4U; - -#else - /* Run the below code for Cortex-M0 */ - - q15_t maxVal1, out; /* Temporary variables to store the output value. */ - uint32_t blkCnt, outIndex; /* loop counter */ - - /* Initialise the index value to zero. */ - outIndex = 0U; - /* Load first input value that act as reference value for comparision */ - out = *pSrc++; - - blkCnt = (blockSize - 1U); - -#endif /* #if defined (ARM_MATH_DSP) */ - - while (blkCnt > 0U) - { - /* Initialize maxVal to the next consecutive values one by one */ - maxVal1 = *pSrc++; - - /* compare for the maximum value */ - if (out < maxVal1) - { - /* Update the maximum value and it's index */ - out = maxVal1; - outIndex = blockSize - blkCnt; - } - - /* Decrement the loop counter */ - blkCnt--; - } - - /* Store the maximum value and it's index into destination pointers */ - *pResult = out; - *pIndex = outIndex; -} - -/** - * @} end of Max group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_max_q31.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_max_q31.c deleted file mode 100644 index 5d34bbd..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_max_q31.c +++ /dev/null @@ -1,162 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_max_q31.c - * Description: Maximum value of a Q31 vector - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupStats - */ - -/** - * @addtogroup Max - * @{ - */ - - -/** - * @brief Maximum value of a Q31 vector. - * @param[in] *pSrc points to the input vector - * @param[in] blockSize length of the input vector - * @param[out] *pResult maximum value returned here - * @param[out] *pIndex index of maximum value returned here - * @return none. - */ - -void arm_max_q31( - q31_t * pSrc, - uint32_t blockSize, - q31_t * pResult, - uint32_t * pIndex) -{ -#if defined (ARM_MATH_DSP) - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - q31_t maxVal1, maxVal2, out; /* Temporary variables to store the output value. */ - uint32_t blkCnt, outIndex, count; /* loop counter */ - - /* Initialise the count value. */ - count = 0U; - /* Initialise the index value to zero. */ - outIndex = 0U; - /* Load first input value that act as reference value for comparision */ - out = *pSrc++; - - /* Loop unrolling */ - blkCnt = (blockSize - 1U) >> 2U; - - while (blkCnt > 0U) - { - /* Initialize maxVal to the next consecutive values one by one */ - maxVal1 = *pSrc++; - maxVal2 = *pSrc++; - - /* compare for the maximum value */ - if (out < maxVal1) - { - /* Update the maximum value and its index */ - out = maxVal1; - outIndex = count + 1U; - } - - /* compare for the maximum value */ - if (out < maxVal2) - { - /* Update the maximum value and its index */ - out = maxVal2; - outIndex = count + 2U; - } - - /* Initialize maxVal to the next consecutive values one by one */ - maxVal1 = *pSrc++; - maxVal2 = *pSrc++; - - /* compare for the maximum value */ - if (out < maxVal1) - { - /* Update the maximum value and its index */ - out = maxVal1; - outIndex = count + 3U; - } - - /* compare for the maximum value */ - if (out < maxVal2) - { - /* Update the maximum value and its index */ - out = maxVal2; - outIndex = count + 4U; - } - - count += 4U; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* if (blockSize - 1U) is not multiple of 4 */ - blkCnt = (blockSize - 1U) % 4U; - -#else - /* Run the below code for Cortex-M0 */ - - q31_t maxVal1, out; /* Temporary variables to store the output value. */ - uint32_t blkCnt, outIndex; /* loop counter */ - - /* Initialise the index value to zero. */ - outIndex = 0U; - /* Load first input value that act as reference value for comparision */ - out = *pSrc++; - - blkCnt = (blockSize - 1U); - -#endif /* #if defined (ARM_MATH_DSP) */ - - while (blkCnt > 0U) - { - /* Initialize maxVal to the next consecutive values one by one */ - maxVal1 = *pSrc++; - - /* compare for the maximum value */ - if (out < maxVal1) - { - /* Update the maximum value and it's index */ - out = maxVal1; - outIndex = blockSize - blkCnt; - } - - /* Decrement the loop counter */ - blkCnt--; - } - - /* Store the maximum value and it's index into destination pointers */ - *pResult = out; - *pIndex = outIndex; -} - -/** - * @} end of Max group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_max_q7.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_max_q7.c deleted file mode 100644 index 72f6e5e..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_max_q7.c +++ /dev/null @@ -1,162 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_max_q7.c - * Description: Maximum value of a Q7 vector - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupStats - */ - -/** - * @addtogroup Max - * @{ - */ - - -/** - * @brief Maximum value of a Q7 vector. - * @param[in] *pSrc points to the input vector - * @param[in] blockSize length of the input vector - * @param[out] *pResult maximum value returned here - * @param[out] *pIndex index of maximum value returned here - * @return none. - */ - -void arm_max_q7( - q7_t * pSrc, - uint32_t blockSize, - q7_t * pResult, - uint32_t * pIndex) -{ -#if defined (ARM_MATH_DSP) - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - q7_t maxVal1, maxVal2, out; /* Temporary variables to store the output value. */ - uint32_t blkCnt, outIndex, count; /* loop counter */ - - /* Initialise the count value. */ - count = 0U; - /* Initialise the index value to zero. */ - outIndex = 0U; - /* Load first input value that act as reference value for comparision */ - out = *pSrc++; - - /* Loop unrolling */ - blkCnt = (blockSize - 1U) >> 2U; - - while (blkCnt > 0U) - { - /* Initialize maxVal to the next consecutive values one by one */ - maxVal1 = *pSrc++; - maxVal2 = *pSrc++; - - /* compare for the maximum value */ - if (out < maxVal1) - { - /* Update the maximum value and its index */ - out = maxVal1; - outIndex = count + 1U; - } - - /* compare for the maximum value */ - if (out < maxVal2) - { - /* Update the maximum value and its index */ - out = maxVal2; - outIndex = count + 2U; - } - - /* Initialize maxVal to the next consecutive values one by one */ - maxVal1 = *pSrc++; - maxVal2 = *pSrc++; - - /* compare for the maximum value */ - if (out < maxVal1) - { - /* Update the maximum value and its index */ - out = maxVal1; - outIndex = count + 3U; - } - - /* compare for the maximum value */ - if (out < maxVal2) - { - /* Update the maximum value and its index */ - out = maxVal2; - outIndex = count + 4U; - } - - count += 4U; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* if (blockSize - 1U) is not multiple of 4 */ - blkCnt = (blockSize - 1U) % 4U; - -#else - /* Run the below code for Cortex-M0 */ - - q7_t maxVal1, out; /* Temporary variables to store the output value. */ - uint32_t blkCnt, outIndex; /* loop counter */ - - /* Initialise the index value to zero. */ - outIndex = 0U; - /* Load first input value that act as reference value for comparision */ - out = *pSrc++; - - blkCnt = (blockSize - 1U); - -#endif /* #if defined (ARM_MATH_DSP) */ - - while (blkCnt > 0U) - { - /* Initialize maxVal to the next consecutive values one by one */ - maxVal1 = *pSrc++; - - /* compare for the maximum value */ - if (out < maxVal1) - { - /* Update the maximum value and it's index */ - out = maxVal1; - outIndex = blockSize - blkCnt; - } - - /* Decrement the loop counter */ - blkCnt--; - } - - /* Store the maximum value and it's index into destination pointers */ - *pResult = out; - *pIndex = outIndex; -} - -/** - * @} end of Max group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_mean_f32.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_mean_f32.c deleted file mode 100644 index 85a3b16..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_mean_f32.c +++ /dev/null @@ -1,125 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_mean_f32.c - * Description: Mean value of a floating-point vector - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupStats - */ - -/** - * @defgroup mean Mean - * - * Calculates the mean of the input vector. Mean is defined as the average of the elements in the vector. - * The underlying algorithm is used: - * - *
- * 	Result = (pSrc[0] + pSrc[1] + pSrc[2] + ... + pSrc[blockSize-1]) / blockSize;
- * 
- * - * There are separate functions for floating-point, Q31, Q15, and Q7 data types. - */ - -/** - * @addtogroup mean - * @{ - */ - - -/** - * @brief Mean value of a floating-point vector. - * @param[in] *pSrc points to the input vector - * @param[in] blockSize length of the input vector - * @param[out] *pResult mean value returned here - * @return none. - */ - -void arm_mean_f32( - float32_t * pSrc, - uint32_t blockSize, - float32_t * pResult) -{ - float32_t sum = 0.0f; /* Temporary result storage */ - uint32_t blkCnt; /* loop counter */ - -#if defined (ARM_MATH_DSP) - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - float32_t in1, in2, in3, in4; - - /*loop Unrolling */ - blkCnt = blockSize >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) */ - in1 = *pSrc++; - in2 = *pSrc++; - in3 = *pSrc++; - in4 = *pSrc++; - - sum += in1; - sum += in2; - sum += in3; - sum += in4; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize % 0x4U; - -#else - /* Run the below code for Cortex-M0 */ - - /* Loop over blockSize number of values */ - blkCnt = blockSize; - -#endif /* #if defined (ARM_MATH_DSP) */ - - while (blkCnt > 0U) - { - /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) */ - sum += *pSrc++; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) / blockSize */ - /* Store the result to the destination */ - *pResult = sum / (float32_t) blockSize; -} - -/** - * @} end of mean group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_mean_q15.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_mean_q15.c deleted file mode 100644 index 7bf55c2..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_mean_q15.c +++ /dev/null @@ -1,120 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_mean_q15.c - * Description: Mean value of a Q15 vector - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupStats - */ - -/** - * @addtogroup mean - * @{ - */ - - -/** - * @brief Mean value of a Q15 vector. - * @param[in] *pSrc points to the input vector - * @param[in] blockSize length of the input vector - * @param[out] *pResult mean value returned here - * @return none. - * - * @details - * Scaling and Overflow Behavior: - * \par - * The function is implemented using a 32-bit internal accumulator. - * The input is represented in 1.15 format and is accumulated in a 32-bit - * accumulator in 17.15 format. - * There is no risk of internal overflow with this approach, and the - * full precision of intermediate result is preserved. - * Finally, the accumulator is saturated and truncated to yield a result of 1.15 format. - * - */ - -void arm_mean_q15( - q15_t * pSrc, - uint32_t blockSize, - q15_t * pResult) -{ - q31_t sum = 0; /* Temporary result storage */ - uint32_t blkCnt; /* loop counter */ - -#if defined (ARM_MATH_DSP) - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - q31_t in; - - /*loop Unrolling */ - blkCnt = blockSize >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) */ - in = *__SIMD32(pSrc)++; - sum += ((in << 16U) >> 16U); - sum += (in >> 16U); - in = *__SIMD32(pSrc)++; - sum += ((in << 16U) >> 16U); - sum += (in >> 16U); - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize % 0x4U; - -#else - /* Run the below code for Cortex-M0 */ - - /* Loop over blockSize number of values */ - blkCnt = blockSize; - -#endif /* #if defined (ARM_MATH_DSP) */ - - while (blkCnt > 0U) - { - /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) */ - sum += *pSrc++; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) / blockSize */ - /* Store the result to the destination */ - *pResult = (q15_t) (sum / (q31_t)blockSize); -} - -/** - * @} end of mean group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_mean_q31.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_mean_q31.c deleted file mode 100644 index ea83ced..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_mean_q31.c +++ /dev/null @@ -1,123 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_mean_q31.c - * Description: Mean value of a Q31 vector - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupStats - */ - -/** - * @addtogroup mean - * @{ - */ - - -/** - * @brief Mean value of a Q31 vector. - * @param[in] *pSrc points to the input vector - * @param[in] blockSize length of the input vector - * @param[out] *pResult mean value returned here - * @return none. - * - * @details - * Scaling and Overflow Behavior: - *\par - * The function is implemented using a 64-bit internal accumulator. - * The input is represented in 1.31 format and is accumulated in a 64-bit - * accumulator in 33.31 format. - * There is no risk of internal overflow with this approach, and the - * full precision of intermediate result is preserved. - * Finally, the accumulator is truncated to yield a result of 1.31 format. - * - */ - -void arm_mean_q31( - q31_t * pSrc, - uint32_t blockSize, - q31_t * pResult) -{ - q63_t sum = 0; /* Temporary result storage */ - uint32_t blkCnt; /* loop counter */ - -#if defined (ARM_MATH_DSP) - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - q31_t in1, in2, in3, in4; - - /*loop Unrolling */ - blkCnt = blockSize >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) */ - in1 = *pSrc++; - in2 = *pSrc++; - in3 = *pSrc++; - in4 = *pSrc++; - - sum += in1; - sum += in2; - sum += in3; - sum += in4; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize % 0x4U; - -#else - /* Run the below code for Cortex-M0 */ - - /* Loop over blockSize number of values */ - blkCnt = blockSize; - -#endif /* #if defined (ARM_MATH_DSP) */ - - while (blkCnt > 0U) - { - /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) */ - sum += *pSrc++; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) / blockSize */ - /* Store the result to the destination */ - *pResult = (q31_t) (sum / (int32_t) blockSize); -} - -/** - * @} end of mean group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_mean_q7.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_mean_q7.c deleted file mode 100644 index a7bdfb8..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_mean_q7.c +++ /dev/null @@ -1,120 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_mean_q7.c - * Description: Mean value of a Q7 vector - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupStats - */ - -/** - * @addtogroup mean - * @{ - */ - - -/** - * @brief Mean value of a Q7 vector. - * @param[in] *pSrc points to the input vector - * @param[in] blockSize length of the input vector - * @param[out] *pResult mean value returned here - * @return none. - * - * @details - * Scaling and Overflow Behavior: - * \par - * The function is implemented using a 32-bit internal accumulator. - * The input is represented in 1.7 format and is accumulated in a 32-bit - * accumulator in 25.7 format. - * There is no risk of internal overflow with this approach, and the - * full precision of intermediate result is preserved. - * Finally, the accumulator is truncated to yield a result of 1.7 format. - * - */ - -void arm_mean_q7( - q7_t * pSrc, - uint32_t blockSize, - q7_t * pResult) -{ - q31_t sum = 0; /* Temporary result storage */ - uint32_t blkCnt; /* loop counter */ - -#if defined (ARM_MATH_DSP) - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - q31_t in; - - /*loop Unrolling */ - blkCnt = blockSize >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) */ - in = *__SIMD32(pSrc)++; - - sum += ((in << 24U) >> 24U); - sum += ((in << 16U) >> 24U); - sum += ((in << 8U) >> 24U); - sum += (in >> 24U); - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize % 0x4U; - -#else - /* Run the below code for Cortex-M0 */ - - /* Loop over blockSize number of values */ - blkCnt = blockSize; - -#endif /* #if defined (ARM_MATH_DSP) */ - - while (blkCnt > 0U) - { - /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) */ - sum += *pSrc++; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) / blockSize */ - /* Store the result to the destination */ - *pResult = (q7_t) (sum / (int32_t) blockSize); -} - -/** - * @} end of mean group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_min_f32.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_min_f32.c deleted file mode 100644 index 858b0a2..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_min_f32.c +++ /dev/null @@ -1,170 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_min_f32.c - * Description: Minimum value of a floating-point vector - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupStats - */ - -/** - * @defgroup Min Minimum - * - * Computes the minimum value of an array of data. - * The function returns both the minimum value and its position within the array. - * There are separate functions for floating-point, Q31, Q15, and Q7 data types. - */ - -/** - * @addtogroup Min - * @{ - */ - - -/** - * @brief Minimum value of a floating-point vector. - * @param[in] *pSrc points to the input vector - * @param[in] blockSize length of the input vector - * @param[out] *pResult minimum value returned here - * @param[out] *pIndex index of minimum value returned here - * @return none. - */ - -void arm_min_f32( - float32_t * pSrc, - uint32_t blockSize, - float32_t * pResult, - uint32_t * pIndex) -{ -#if defined (ARM_MATH_DSP) - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - float32_t minVal1, minVal2, out; /* Temporary variables to store the output value. */ - uint32_t blkCnt, outIndex, count; /* loop counter */ - - /* Initialise the count value. */ - count = 0U; - /* Initialise the index value to zero. */ - outIndex = 0U; - /* Load first input value that act as reference value for comparision */ - out = *pSrc++; - - /* Loop unrolling */ - blkCnt = (blockSize - 1U) >> 2U; - - while (blkCnt > 0U) - { - /* Initialize minVal to the next consecutive values one by one */ - minVal1 = *pSrc++; - minVal2 = *pSrc++; - - /* compare for the minimum value */ - if (out > minVal1) - { - /* Update the minimum value and its index */ - out = minVal1; - outIndex = count + 1U; - } - - /* compare for the minimum value */ - if (out > minVal2) - { - /* Update the minimum value and its index */ - out = minVal2; - outIndex = count + 2U; - } - - /* Initialize minVal to the next consecutive values one by one */ - minVal1 = *pSrc++; - minVal2 = *pSrc++; - - /* compare for the minimum value */ - if (out > minVal1) - { - /* Update the minimum value and its index */ - out = minVal1; - outIndex = count + 3U; - } - - /* compare for the minimum value */ - if (out > minVal2) - { - /* Update the minimum value and its index */ - out = minVal2; - outIndex = count + 4U; - } - - count += 4U; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* if (blockSize - 1U) is not multiple of 4 */ - blkCnt = (blockSize - 1U) % 4U; - -#else - /* Run the below code for Cortex-M0 */ - - float32_t minVal1, out; /* Temporary variables to store the output value. */ - uint32_t blkCnt, outIndex; /* loop counter */ - - /* Initialise the index value to zero. */ - outIndex = 0U; - /* Load first input value that act as reference value for comparision */ - out = *pSrc++; - - blkCnt = (blockSize - 1U); - -#endif /* #if defined (ARM_MATH_DSP) */ - - while (blkCnt > 0U) - { - /* Initialize minVal to the next consecutive values one by one */ - minVal1 = *pSrc++; - - /* compare for the minimum value */ - if (out > minVal1) - { - /* Update the minimum value and it's index */ - out = minVal1; - outIndex = blockSize - blkCnt; - } - - /* Decrement the loop counter */ - blkCnt--; - } - - /* Store the minimum value and it's index into destination pointers */ - *pResult = out; - *pIndex = outIndex; -} - -/** - * @} end of Min group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_min_q15.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_min_q15.c deleted file mode 100644 index fdc32b7..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_min_q15.c +++ /dev/null @@ -1,163 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_min_q15.c - * Description: Minimum value of a Q15 vector - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupStats - */ - - -/** - * @addtogroup Min - * @{ - */ - - -/** - * @brief Minimum value of a Q15 vector. - * @param[in] *pSrc points to the input vector - * @param[in] blockSize length of the input vector - * @param[out] *pResult minimum value returned here - * @param[out] *pIndex index of minimum value returned here - * @return none. - */ - -void arm_min_q15( - q15_t * pSrc, - uint32_t blockSize, - q15_t * pResult, - uint32_t * pIndex) -{ -#if defined (ARM_MATH_DSP) - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - q15_t minVal1, minVal2, out; /* Temporary variables to store the output value. */ - uint32_t blkCnt, outIndex, count; /* loop counter */ - - /* Initialise the count value. */ - count = 0U; - /* Initialise the index value to zero. */ - outIndex = 0U; - /* Load first input value that act as reference value for comparision */ - out = *pSrc++; - - /* Loop unrolling */ - blkCnt = (blockSize - 1U) >> 2U; - - while (blkCnt > 0U) - { - /* Initialize minVal to the next consecutive values one by one */ - minVal1 = *pSrc++; - minVal2 = *pSrc++; - - /* compare for the minimum value */ - if (out > minVal1) - { - /* Update the minimum value and its index */ - out = minVal1; - outIndex = count + 1U; - } - - /* compare for the minimum value */ - if (out > minVal2) - { - /* Update the minimum value and its index */ - out = minVal2; - outIndex = count + 2U; - } - - /* Initialize minVal to the next consecutive values one by one */ - minVal1 = *pSrc++; - minVal2 = *pSrc++; - - /* compare for the minimum value */ - if (out > minVal1) - { - /* Update the minimum value and its index */ - out = minVal1; - outIndex = count + 3U; - } - - /* compare for the minimum value */ - if (out > minVal2) - { - /* Update the minimum value and its index */ - out = minVal2; - outIndex = count + 4U; - } - - count += 4U; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* if (blockSize - 1U) is not multiple of 4 */ - blkCnt = (blockSize - 1U) % 4U; - -#else - /* Run the below code for Cortex-M0 */ - - q15_t minVal1, out; /* Temporary variables to store the output value. */ - uint32_t blkCnt, outIndex; /* loop counter */ - - /* Initialise the index value to zero. */ - outIndex = 0U; - /* Load first input value that act as reference value for comparision */ - out = *pSrc++; - - blkCnt = (blockSize - 1U); - -#endif /* #if defined (ARM_MATH_DSP) */ - - while (blkCnt > 0U) - { - /* Initialize minVal to the next consecutive values one by one */ - minVal1 = *pSrc++; - - /* compare for the minimum value */ - if (out > minVal1) - { - /* Update the minimum value and it's index */ - out = minVal1; - outIndex = blockSize - blkCnt; - } - - /* Decrement the loop counter */ - blkCnt--; - } - - /* Store the minimum value and it's index into destination pointers */ - *pResult = out; - *pIndex = outIndex; -} - -/** - * @} end of Min group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_min_q31.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_min_q31.c deleted file mode 100644 index fc4c155..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_min_q31.c +++ /dev/null @@ -1,163 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_min_q31.c - * Description: Minimum value of a Q31 vector - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupStats - */ - - -/** - * @addtogroup Min - * @{ - */ - - -/** - * @brief Minimum value of a Q31 vector. - * @param[in] *pSrc points to the input vector - * @param[in] blockSize length of the input vector - * @param[out] *pResult minimum value returned here - * @param[out] *pIndex index of minimum value returned here - * @return none. - */ - -void arm_min_q31( - q31_t * pSrc, - uint32_t blockSize, - q31_t * pResult, - uint32_t * pIndex) -{ -#if defined (ARM_MATH_DSP) - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - q31_t minVal1, minVal2, out; /* Temporary variables to store the output value. */ - uint32_t blkCnt, outIndex, count; /* loop counter */ - - /* Initialise the count value. */ - count = 0U; - /* Initialise the index value to zero. */ - outIndex = 0U; - /* Load first input value that act as reference value for comparision */ - out = *pSrc++; - - /* Loop unrolling */ - blkCnt = (blockSize - 1U) >> 2U; - - while (blkCnt > 0U) - { - /* Initialize minVal to the next consecutive values one by one */ - minVal1 = *pSrc++; - minVal2 = *pSrc++; - - /* compare for the minimum value */ - if (out > minVal1) - { - /* Update the minimum value and its index */ - out = minVal1; - outIndex = count + 1U; - } - - /* compare for the minimum value */ - if (out > minVal2) - { - /* Update the minimum value and its index */ - out = minVal2; - outIndex = count + 2U; - } - - /* Initialize minVal to the next consecutive values one by one */ - minVal1 = *pSrc++; - minVal2 = *pSrc++; - - /* compare for the minimum value */ - if (out > minVal1) - { - /* Update the minimum value and its index */ - out = minVal1; - outIndex = count + 3U; - } - - /* compare for the minimum value */ - if (out > minVal2) - { - /* Update the minimum value and its index */ - out = minVal2; - outIndex = count + 4U; - } - - count += 4U; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* if (blockSize - 1U) is not multiple of 4 */ - blkCnt = (blockSize - 1U) % 4U; - -#else - /* Run the below code for Cortex-M0 */ - - q31_t minVal1, out; /* Temporary variables to store the output value. */ - uint32_t blkCnt, outIndex; /* loop counter */ - - /* Initialise the index value to zero. */ - outIndex = 0U; - /* Load first input value that act as reference value for comparision */ - out = *pSrc++; - - blkCnt = (blockSize - 1U); - -#endif /* #if defined (ARM_MATH_DSP) */ - - while (blkCnt > 0U) - { - /* Initialize minVal to the next consecutive values one by one */ - minVal1 = *pSrc++; - - /* compare for the minimum value */ - if (out > minVal1) - { - /* Update the minimum value and it's index */ - out = minVal1; - outIndex = blockSize - blkCnt; - } - - /* Decrement the loop counter */ - blkCnt--; - } - - /* Store the minimum value and it's index into destination pointers */ - *pResult = out; - *pIndex = outIndex; -} - -/** - * @} end of Min group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_min_q7.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_min_q7.c deleted file mode 100644 index 50362e6..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_min_q7.c +++ /dev/null @@ -1,163 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_min_q7.c - * Description: Minimum value of a Q7 vector - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupStats - */ - - -/** - * @addtogroup Min - * @{ - */ - - -/** - * @brief Minimum value of a Q7 vector. - * @param[in] *pSrc points to the input vector - * @param[in] blockSize length of the input vector - * @param[out] *pResult minimum value returned here - * @param[out] *pIndex index of minimum value returned here - * @return none. - */ - -void arm_min_q7( - q7_t * pSrc, - uint32_t blockSize, - q7_t * pResult, - uint32_t * pIndex) -{ -#if defined (ARM_MATH_DSP) - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - q7_t minVal1, minVal2, out; /* Temporary variables to store the output value. */ - uint32_t blkCnt, outIndex, count; /* loop counter */ - - /* Initialise the count value. */ - count = 0U; - /* Initialise the index value to zero. */ - outIndex = 0U; - /* Load first input value that act as reference value for comparision */ - out = *pSrc++; - - /* Loop unrolling */ - blkCnt = (blockSize - 1U) >> 2U; - - while (blkCnt > 0U) - { - /* Initialize minVal to the next consecutive values one by one */ - minVal1 = *pSrc++; - minVal2 = *pSrc++; - - /* compare for the minimum value */ - if (out > minVal1) - { - /* Update the minimum value and its index */ - out = minVal1; - outIndex = count + 1U; - } - - /* compare for the minimum value */ - if (out > minVal2) - { - /* Update the minimum value and its index */ - out = minVal2; - outIndex = count + 2U; - } - - /* Initialize minVal to the next consecutive values one by one */ - minVal1 = *pSrc++; - minVal2 = *pSrc++; - - /* compare for the minimum value */ - if (out > minVal1) - { - /* Update the minimum value and its index */ - out = minVal1; - outIndex = count + 3U; - } - - /* compare for the minimum value */ - if (out > minVal2) - { - /* Update the minimum value and its index */ - out = minVal2; - outIndex = count + 4U; - } - - count += 4U; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* if (blockSize - 1U) is not multiple of 4 */ - blkCnt = (blockSize - 1U) % 4U; - -#else - /* Run the below code for Cortex-M0 */ - - q7_t minVal1, out; /* Temporary variables to store the output value. */ - uint32_t blkCnt, outIndex; /* loop counter */ - - /* Initialise the index value to zero. */ - outIndex = 0U; - /* Load first input value that act as reference value for comparision */ - out = *pSrc++; - - blkCnt = (blockSize - 1U); - -#endif /* #if defined (ARM_MATH_DSP) */ - - while (blkCnt > 0U) - { - /* Initialize minVal to the next consecutive values one by one */ - minVal1 = *pSrc++; - - /* compare for the minimum value */ - if (out > minVal1) - { - /* Update the minimum value and it's index */ - out = minVal1; - outIndex = blockSize - blkCnt; - } - - /* Decrement the loop counter */ - blkCnt--; - } - - /* Store the minimum value and it's index into destination pointers */ - *pResult = out; - *pIndex = outIndex; -} - -/** - * @} end of Min group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_power_f32.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_power_f32.c deleted file mode 100644 index 1426735..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_power_f32.c +++ /dev/null @@ -1,129 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_power_f32.c - * Description: Sum of the squares of the elements of a floating-point vector - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupStats - */ - -/** - * @defgroup power Power - * - * Calculates the sum of the squares of the elements in the input vector. - * The underlying algorithm is used: - * - *
- * 	Result = pSrc[0] * pSrc[0] + pSrc[1] * pSrc[1] + pSrc[2] * pSrc[2] + ... + pSrc[blockSize-1] * pSrc[blockSize-1];
- * 
- * - * There are separate functions for floating point, Q31, Q15, and Q7 data types. - */ - -/** - * @addtogroup power - * @{ - */ - - -/** - * @brief Sum of the squares of the elements of a floating-point vector. - * @param[in] *pSrc points to the input vector - * @param[in] blockSize length of the input vector - * @param[out] *pResult sum of the squares value returned here - * @return none. - * - */ - - -void arm_power_f32( - float32_t * pSrc, - uint32_t blockSize, - float32_t * pResult) -{ - float32_t sum = 0.0f; /* accumulator */ - float32_t in; /* Temporary variable to store input value */ - uint32_t blkCnt; /* loop counter */ - -#if defined (ARM_MATH_DSP) - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - /*loop Unrolling */ - blkCnt = blockSize >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - /* C = A[0] * A[0] + A[1] * A[1] + A[2] * A[2] + ... + A[blockSize-1] * A[blockSize-1] */ - /* Compute Power and then store the result in a temporary variable, sum. */ - in = *pSrc++; - sum += in * in; - in = *pSrc++; - sum += in * in; - in = *pSrc++; - sum += in * in; - in = *pSrc++; - sum += in * in; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize % 0x4U; - - -#else - /* Run the below code for Cortex-M0 */ - - /* Loop over blockSize number of values */ - blkCnt = blockSize; - -#endif /* #if defined (ARM_MATH_DSP) */ - - - while (blkCnt > 0U) - { - /* C = A[0] * A[0] + A[1] * A[1] + A[2] * A[2] + ... + A[blockSize-1] * A[blockSize-1] */ - /* compute power and then store the result in a temporary variable, sum. */ - in = *pSrc++; - sum += in * in; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* Store the result to the destination */ - *pResult = sum; -} - -/** - * @} end of power group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_power_q15.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_power_q15.c deleted file mode 100644 index 6d95f4d..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_power_q15.c +++ /dev/null @@ -1,138 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_power_q15.c - * Description: Sum of the squares of the elements of a Q15 vector - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupStats - */ - -/** - * @addtogroup power - * @{ - */ - -/** - * @brief Sum of the squares of the elements of a Q15 vector. - * @param[in] *pSrc points to the input vector - * @param[in] blockSize length of the input vector - * @param[out] *pResult sum of the squares value returned here - * @return none. - * - * @details - * Scaling and Overflow Behavior: - * - * \par - * The function is implemented using a 64-bit internal accumulator. - * The input is represented in 1.15 format. - * Intermediate multiplication yields a 2.30 format, and this - * result is added without saturation to a 64-bit accumulator in 34.30 format. - * With 33 guard bits in the accumulator, there is no risk of overflow, and the - * full precision of the intermediate multiplication is preserved. - * Finally, the return result is in 34.30 format. - * - */ - -void arm_power_q15( - q15_t * pSrc, - uint32_t blockSize, - q63_t * pResult) -{ - q63_t sum = 0; /* Temporary result storage */ - -#if defined (ARM_MATH_DSP) - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - q31_t in32; /* Temporary variable to store input value */ - q15_t in16; /* Temporary variable to store input value */ - uint32_t blkCnt; /* loop counter */ - - - /* loop Unrolling */ - blkCnt = blockSize >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - /* C = A[0] * A[0] + A[1] * A[1] + A[2] * A[2] + ... + A[blockSize-1] * A[blockSize-1] */ - /* Compute Power and then store the result in a temporary variable, sum. */ - in32 = *__SIMD32(pSrc)++; - sum = __SMLALD(in32, in32, sum); - in32 = *__SIMD32(pSrc)++; - sum = __SMLALD(in32, in32, sum); - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize % 0x4U; - - while (blkCnt > 0U) - { - /* C = A[0] * A[0] + A[1] * A[1] + A[2] * A[2] + ... + A[blockSize-1] * A[blockSize-1] */ - /* Compute Power and then store the result in a temporary variable, sum. */ - in16 = *pSrc++; - sum = __SMLALD(in16, in16, sum); - - /* Decrement the loop counter */ - blkCnt--; - } - -#else - /* Run the below code for Cortex-M0 */ - - q15_t in; /* Temporary variable to store input value */ - uint32_t blkCnt; /* loop counter */ - - - /* Loop over blockSize number of values */ - blkCnt = blockSize; - - while (blkCnt > 0U) - { - /* C = A[0] * A[0] + A[1] * A[1] + A[2] * A[2] + ... + A[blockSize-1] * A[blockSize-1] */ - /* Compute Power and then store the result in a temporary variable, sum. */ - in = *pSrc++; - sum += ((q31_t) in * in); - - /* Decrement the loop counter */ - blkCnt--; - } - -#endif /* #if defined (ARM_MATH_DSP) */ - - /* Store the results in 34.30 format */ - *pResult = sum; -} - -/** - * @} end of power group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_power_q31.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_power_q31.c deleted file mode 100644 index 16be249..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_power_q31.c +++ /dev/null @@ -1,129 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_power_q31.c - * Description: Sum of the squares of the elements of a Q31 vector - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupStats - */ - -/** - * @addtogroup power - * @{ - */ - -/** - * @brief Sum of the squares of the elements of a Q31 vector. - * @param[in] *pSrc points to the input vector - * @param[in] blockSize length of the input vector - * @param[out] *pResult sum of the squares value returned here - * @return none. - * - * @details - * Scaling and Overflow Behavior: - * - * \par - * The function is implemented using a 64-bit internal accumulator. - * The input is represented in 1.31 format. - * Intermediate multiplication yields a 2.62 format, and this - * result is truncated to 2.48 format by discarding the lower 14 bits. - * The 2.48 result is then added without saturation to a 64-bit accumulator in 16.48 format. - * With 15 guard bits in the accumulator, there is no risk of overflow, and the - * full precision of the intermediate multiplication is preserved. - * Finally, the return result is in 16.48 format. - * - */ - -void arm_power_q31( - q31_t * pSrc, - uint32_t blockSize, - q63_t * pResult) -{ - q63_t sum = 0; /* Temporary result storage */ - q31_t in; - uint32_t blkCnt; /* loop counter */ - - -#if defined (ARM_MATH_DSP) - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - /*loop Unrolling */ - blkCnt = blockSize >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - /* C = A[0] * A[0] + A[1] * A[1] + A[2] * A[2] + ... + A[blockSize-1] * A[blockSize-1] */ - /* Compute Power then shift intermediate results by 14 bits to maintain 16.48 format and then store the result in a temporary variable sum, providing 15 guard bits. */ - in = *pSrc++; - sum += ((q63_t) in * in) >> 14U; - - in = *pSrc++; - sum += ((q63_t) in * in) >> 14U; - - in = *pSrc++; - sum += ((q63_t) in * in) >> 14U; - - in = *pSrc++; - sum += ((q63_t) in * in) >> 14U; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize % 0x4U; - -#else - /* Run the below code for Cortex-M0 */ - - /* Loop over blockSize number of values */ - blkCnt = blockSize; - -#endif /* #if defined (ARM_MATH_DSP) */ - - while (blkCnt > 0U) - { - /* C = A[0] * A[0] + A[1] * A[1] + A[2] * A[2] + ... + A[blockSize-1] * A[blockSize-1] */ - /* Compute Power and then store the result in a temporary variable, sum. */ - in = *pSrc++; - sum += ((q63_t) in * in) >> 14U; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* Store the results in 16.48 format */ - *pResult = sum; -} - -/** - * @} end of power group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_power_q7.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_power_q7.c deleted file mode 100644 index 24306cd..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_power_q7.c +++ /dev/null @@ -1,127 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_power_q7.c - * Description: Sum of the squares of the elements of a Q7 vector - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupStats - */ - -/** - * @addtogroup power - * @{ - */ - -/** - * @brief Sum of the squares of the elements of a Q7 vector. - * @param[in] *pSrc points to the input vector - * @param[in] blockSize length of the input vector - * @param[out] *pResult sum of the squares value returned here - * @return none. - * - * @details - * Scaling and Overflow Behavior: - * - * \par - * The function is implemented using a 32-bit internal accumulator. - * The input is represented in 1.7 format. - * Intermediate multiplication yields a 2.14 format, and this - * result is added without saturation to an accumulator in 18.14 format. - * With 17 guard bits in the accumulator, there is no risk of overflow, and the - * full precision of the intermediate multiplication is preserved. - * Finally, the return result is in 18.14 format. - * - */ - -void arm_power_q7( - q7_t * pSrc, - uint32_t blockSize, - q31_t * pResult) -{ - q31_t sum = 0; /* Temporary result storage */ - q7_t in; /* Temporary variable to store input */ - uint32_t blkCnt; /* loop counter */ - -#if defined (ARM_MATH_DSP) - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - q31_t input1; /* Temporary variable to store packed input */ - q31_t in1, in2; /* Temporary variables to store input */ - - /*loop Unrolling */ - blkCnt = blockSize >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - /* Reading two inputs of pSrc vector and packing */ - input1 = *__SIMD32(pSrc)++; - - in1 = __SXTB16(__ROR(input1, 8)); - in2 = __SXTB16(input1); - - /* C = A[0] * A[0] + A[1] * A[1] + A[2] * A[2] + ... + A[blockSize-1] * A[blockSize-1] */ - /* calculate power and accumulate to accumulator */ - sum = __SMLAD(in1, in1, sum); - sum = __SMLAD(in2, in2, sum); - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize % 0x4U; - -#else - /* Run the below code for Cortex-M0 */ - - /* Loop over blockSize number of values */ - blkCnt = blockSize; - -#endif /* #if defined (ARM_MATH_DSP) */ - - while (blkCnt > 0U) - { - /* C = A[0] * A[0] + A[1] * A[1] + A[2] * A[2] + ... + A[blockSize-1] * A[blockSize-1] */ - /* Compute Power and then store the result in a temporary variable, sum. */ - in = *pSrc++; - sum += ((q15_t) in * in); - - /* Decrement the loop counter */ - blkCnt--; - } - - /* Store the result in 18.14 format */ - *pResult = sum; -} - -/** - * @} end of power group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_rms_f32.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_rms_f32.c deleted file mode 100644 index 8d1b708..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_rms_f32.c +++ /dev/null @@ -1,127 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_rms_f32.c - * Description: Root mean square value of an array of F32 type - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupStats - */ - -/** - * @defgroup RMS Root mean square (RMS) - * - * - * Calculates the Root Mean Sqaure of the elements in the input vector. - * The underlying algorithm is used: - * - *
- * 	Result = sqrt(((pSrc[0] * pSrc[0] + pSrc[1] * pSrc[1] + ... + pSrc[blockSize-1] * pSrc[blockSize-1]) / blockSize));
- * 
- * - * There are separate functions for floating point, Q31, and Q15 data types. - */ - -/** - * @addtogroup RMS - * @{ - */ - - -/** - * @brief Root Mean Square of the elements of a floating-point vector. - * @param[in] *pSrc points to the input vector - * @param[in] blockSize length of the input vector - * @param[out] *pResult rms value returned here - * @return none. - * - */ - -void arm_rms_f32( - float32_t * pSrc, - uint32_t blockSize, - float32_t * pResult) -{ - float32_t sum = 0.0f; /* Accumulator */ - float32_t in; /* Tempoprary variable to store input value */ - uint32_t blkCnt; /* loop counter */ - -#if defined (ARM_MATH_DSP) - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - /* loop Unrolling */ - blkCnt = blockSize >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - /* C = A[0] * A[0] + A[1] * A[1] + A[2] * A[2] + ... + A[blockSize-1] * A[blockSize-1] */ - /* Compute sum of the squares and then store the result in a temporary variable, sum */ - in = *pSrc++; - sum += in * in; - in = *pSrc++; - sum += in * in; - in = *pSrc++; - sum += in * in; - in = *pSrc++; - sum += in * in; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize % 0x4U; - -#else - /* Run the below code for Cortex-M0 */ - - /* Loop over blockSize number of values */ - blkCnt = blockSize; - -#endif /* #if defined (ARM_MATH_DSP) */ - - while (blkCnt > 0U) - { - /* C = A[0] * A[0] + A[1] * A[1] + A[2] * A[2] + ... + A[blockSize-1] * A[blockSize-1] */ - /* Compute sum of the squares and then store the results in a temporary variable, sum */ - in = *pSrc++; - sum += in * in; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* Compute Rms and store the result in the destination */ - arm_sqrt_f32(sum / (float32_t) blockSize, pResult); -} - -/** - * @} end of RMS group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_rms_q15.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_rms_q15.c deleted file mode 100644 index d0e61ca..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_rms_q15.c +++ /dev/null @@ -1,139 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_rms_q15.c - * Description: Root Mean Square of the elements of a Q15 vector - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @addtogroup RMS - * @{ - */ - -/** - * @brief Root Mean Square of the elements of a Q15 vector. - * @param[in] *pSrc points to the input vector - * @param[in] blockSize length of the input vector - * @param[out] *pResult rms value returned here - * @return none. - * - * @details - * Scaling and Overflow Behavior: - * - * \par - * The function is implemented using a 64-bit internal accumulator. - * The input is represented in 1.15 format. - * Intermediate multiplication yields a 2.30 format, and this - * result is added without saturation to a 64-bit accumulator in 34.30 format. - * With 33 guard bits in the accumulator, there is no risk of overflow, and the - * full precision of the intermediate multiplication is preserved. - * Finally, the 34.30 result is truncated to 34.15 format by discarding the lower - * 15 bits, and then saturated to yield a result in 1.15 format. - * - */ - -void arm_rms_q15( - q15_t * pSrc, - uint32_t blockSize, - q15_t * pResult) -{ - q63_t sum = 0; /* accumulator */ - -#if defined (ARM_MATH_DSP) - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - q31_t in; /* temporary variable to store the input value */ - q15_t in1; /* temporary variable to store the input value */ - uint32_t blkCnt; /* loop counter */ - - /* loop Unrolling */ - blkCnt = blockSize >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - /* C = (A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1]) */ - /* Compute sum of the squares and then store the results in a temporary variable, sum */ - in = *__SIMD32(pSrc)++; - sum = __SMLALD(in, in, sum); - in = *__SIMD32(pSrc)++; - sum = __SMLALD(in, in, sum); - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize % 0x4U; - - while (blkCnt > 0U) - { - /* C = (A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1]) */ - /* Compute sum of the squares and then store the results in a temporary variable, sum */ - in1 = *pSrc++; - sum = __SMLALD(in1, in1, sum); - - /* Decrement the loop counter */ - blkCnt--; - } - - /* Truncating and saturating the accumulator to 1.15 format */ - /* Store the result in the destination */ - arm_sqrt_q15(__SSAT((sum / (q63_t)blockSize) >> 15, 16), pResult); - -#else - /* Run the below code for Cortex-M0 */ - - q15_t in; /* temporary variable to store the input value */ - uint32_t blkCnt; /* loop counter */ - - /* Loop over blockSize number of values */ - blkCnt = blockSize; - - while (blkCnt > 0U) - { - /* C = (A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1]) */ - /* Compute sum of the squares and then store the results in a temporary variable, sum */ - in = *pSrc++; - sum += ((q31_t) in * in); - - /* Decrement the loop counter */ - blkCnt--; - } - - /* Truncating and saturating the accumulator to 1.15 format */ - /* Store the result in the destination */ - arm_sqrt_q15(__SSAT((sum / (q63_t)blockSize) >> 15, 16), pResult); - -#endif /* #if defined (ARM_MATH_DSP) */ - -} - -/** - * @} end of RMS group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_rms_q31.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_rms_q31.c deleted file mode 100644 index cb3c58e..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_rms_q31.c +++ /dev/null @@ -1,137 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_rms_q31.c - * Description: Root Mean Square of the elements of a Q31 vector - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @addtogroup RMS - * @{ - */ - - -/** - * @brief Root Mean Square of the elements of a Q31 vector. - * @param[in] *pSrc points to the input vector - * @param[in] blockSize length of the input vector - * @param[out] *pResult rms value returned here - * @return none. - * - * @details - * Scaling and Overflow Behavior: - * - *\par - * The function is implemented using an internal 64-bit accumulator. - * The input is represented in 1.31 format, and intermediate multiplication - * yields a 2.62 format. - * The accumulator maintains full precision of the intermediate multiplication results, - * but provides only a single guard bit. - * There is no saturation on intermediate additions. - * If the accumulator overflows, it wraps around and distorts the result. - * In order to avoid overflows completely, the input signal must be scaled down by - * log2(blockSize) bits, as a total of blockSize additions are performed internally. - * Finally, the 2.62 accumulator is right shifted by 31 bits to yield a 1.31 format value. - * - */ - -void arm_rms_q31( - q31_t * pSrc, - uint32_t blockSize, - q31_t * pResult) -{ - q63_t sum = 0; /* accumulator */ - q31_t in; /* Temporary variable to store the input */ - uint32_t blkCnt; /* loop counter */ - -#if defined (ARM_MATH_DSP) - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - q31_t in1, in2, in3, in4; /* Temporary input variables */ - - /*loop Unrolling */ - blkCnt = blockSize >> 2U; - - /* First part of the processing with loop unrolling. Compute 8 outputs at a time. - ** a second loop below computes the remaining 1 to 7 samples. */ - while (blkCnt > 0U) - { - /* C = A[0] * A[0] + A[1] * A[1] + A[2] * A[2] + ... + A[blockSize-1] * A[blockSize-1] */ - /* Compute sum of the squares and then store the result in a temporary variable, sum */ - /* read two samples from source buffer */ - in1 = pSrc[0]; - in2 = pSrc[1]; - - /* calculate power and accumulate to accumulator */ - sum += (q63_t) in1 *in1; - sum += (q63_t) in2 *in2; - - /* read two samples from source buffer */ - in3 = pSrc[2]; - in4 = pSrc[3]; - - /* calculate power and accumulate to accumulator */ - sum += (q63_t) in3 *in3; - sum += (q63_t) in4 *in4; - - - /* update source buffer to process next samples */ - pSrc += 4U; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 8, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize % 0x4U; - -#else - /* Run the below code for Cortex-M0 */ - - blkCnt = blockSize; - -#endif /* #if defined (ARM_MATH_DSP) */ - - while (blkCnt > 0U) - { - /* C = A[0] * A[0] + A[1] * A[1] + A[2] * A[2] + ... + A[blockSize-1] * A[blockSize-1] */ - /* Compute sum of the squares and then store the results in a temporary variable, sum */ - in = *pSrc++; - sum += (q63_t) in *in; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* Convert data in 2.62 to 1.31 by 31 right shifts and saturate */ - /* Compute Rms and store the result in the destination vector */ - arm_sqrt_q31(clip_q63_to_q31((sum / (q63_t) blockSize) >> 31), pResult); -} - -/** - * @} end of RMS group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_std_f32.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_std_f32.c deleted file mode 100644 index 9750b88..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_std_f32.c +++ /dev/null @@ -1,186 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_std_f32.c - * Description: Standard deviation of the elements of a floating-point vector - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupStats - */ - -/** - * @defgroup STD Standard deviation - * - * Calculates the standard deviation of the elements in the input vector. - * The underlying algorithm is used: - * - *
- *   Result = sqrt((sumOfSquares - sum2 / blockSize) / (blockSize - 1))
- *
- *     where, sumOfSquares = pSrc[0] * pSrc[0] + pSrc[1] * pSrc[1] + ... + pSrc[blockSize-1] * pSrc[blockSize-1]
- *
- *                     sum = pSrc[0] + pSrc[1] + pSrc[2] + ... + pSrc[blockSize-1]
- * 
- * - * There are separate functions for floating point, Q31, and Q15 data types. - */ - -/** - * @addtogroup STD - * @{ - */ - - -/** - * @brief Standard deviation of the elements of a floating-point vector. - * @param[in] *pSrc points to the input vector - * @param[in] blockSize length of the input vector - * @param[out] *pResult standard deviation value returned here - * @return none. - */ - -void arm_std_f32( - float32_t * pSrc, - uint32_t blockSize, - float32_t * pResult) -{ - float32_t sum = 0.0f; /* Temporary result storage */ - float32_t sumOfSquares = 0.0f; /* Sum of squares */ - float32_t in; /* input value */ - uint32_t blkCnt; /* loop counter */ -#if defined (ARM_MATH_DSP) - float32_t meanOfSquares, mean, squareOfMean; /* Temporary variables */ -#else - float32_t squareOfSum; /* Square of Sum */ - float32_t var; /* Temporary varaince storage */ -#endif - - if (blockSize == 1U) - { - *pResult = 0; - return; - } - -#if defined (ARM_MATH_DSP) - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - /*loop Unrolling */ - blkCnt = blockSize >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - /* C = (A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1]) */ - /* Compute Sum of squares of the input samples - * and then store the result in a temporary variable, sum. */ - in = *pSrc++; - sum += in; - sumOfSquares += in * in; - in = *pSrc++; - sum += in; - sumOfSquares += in * in; - in = *pSrc++; - sum += in; - sumOfSquares += in * in; - in = *pSrc++; - sum += in; - sumOfSquares += in * in; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize % 0x4U; - - while (blkCnt > 0U) - { - /* C = (A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1]) */ - /* Compute Sum of squares of the input samples - * and then store the result in a temporary variable, sum. */ - in = *pSrc++; - sum += in; - sumOfSquares += in * in; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* Compute Mean of squares of the input samples - * and then store the result in a temporary variable, meanOfSquares. */ - meanOfSquares = sumOfSquares / ((float32_t) blockSize - 1.0f); - - /* Compute mean of all input values */ - mean = sum / (float32_t) blockSize; - - /* Compute square of mean */ - squareOfMean = (mean * mean) * (((float32_t) blockSize) / - ((float32_t) blockSize - 1.0f)); - - /* Compute standard deviation and then store the result to the destination */ - arm_sqrt_f32((meanOfSquares - squareOfMean), pResult); - -#else - /* Run the below code for Cortex-M0 */ - - /* Loop over blockSize number of values */ - blkCnt = blockSize; - - while (blkCnt > 0U) - { - /* C = (A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1]) */ - /* Compute Sum of squares of the input samples - * and then store the result in a temporary variable, sumOfSquares. */ - in = *pSrc++; - sumOfSquares += in * in; - - /* C = (A[0] + A[1] + ... + A[blockSize-1]) */ - /* Compute Sum of the input samples - * and then store the result in a temporary variable, sum. */ - sum += in; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* Compute the square of sum */ - squareOfSum = ((sum * sum) / (float32_t) blockSize); - - /* Compute the variance */ - var = ((sumOfSquares - squareOfSum) / (float32_t) (blockSize - 1.0f)); - - /* Compute standard deviation and then store the result to the destination */ - arm_sqrt_f32(var, pResult); - -#endif /* #if defined (ARM_MATH_DSP) */ -} - -/** - * @} end of STD group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_std_q15.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_std_q15.c deleted file mode 100644 index 2f2f52e..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_std_q15.c +++ /dev/null @@ -1,174 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_std_q15.c - * Description: Standard deviation of an array of Q15 vector - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupStats - */ - -/** - * @addtogroup STD - * @{ - */ - -/** - * @brief Standard deviation of the elements of a Q15 vector. - * @param[in] *pSrc points to the input vector - * @param[in] blockSize length of the input vector - * @param[out] *pResult standard deviation value returned here - * @return none. - * @details - * Scaling and Overflow Behavior: - * - * \par - * The function is implemented using a 64-bit internal accumulator. - * The input is represented in 1.15 format. - * Intermediate multiplication yields a 2.30 format, and this - * result is added without saturation to a 64-bit accumulator in 34.30 format. - * With 33 guard bits in the accumulator, there is no risk of overflow, and the - * full precision of the intermediate multiplication is preserved. - * Finally, the 34.30 result is truncated to 34.15 format by discarding the lower - * 15 bits, and then saturated to yield a result in 1.15 format. - */ - -void arm_std_q15( - q15_t * pSrc, - uint32_t blockSize, - q15_t * pResult) -{ - q31_t sum = 0; /* Accumulator */ - q31_t meanOfSquares, squareOfMean; /* square of mean and mean of square */ - uint32_t blkCnt; /* loop counter */ - q63_t sumOfSquares = 0; /* Accumulator */ -#if defined (ARM_MATH_DSP) - q31_t in; /* input value */ - q15_t in1; /* input value */ -#else - q15_t in; /* input value */ -#endif - - if (blockSize == 1U) - { - *pResult = 0; - return; - } - -#if defined (ARM_MATH_DSP) - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - /*loop Unrolling */ - blkCnt = blockSize >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - /* C = (A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1]) */ - /* Compute Sum of squares of the input samples - * and then store the result in a temporary variable, sum. */ - in = *__SIMD32(pSrc)++; - sum += ((in << 16U) >> 16U); - sum += (in >> 16U); - sumOfSquares = __SMLALD(in, in, sumOfSquares); - in = *__SIMD32(pSrc)++; - sum += ((in << 16U) >> 16U); - sum += (in >> 16U); - sumOfSquares = __SMLALD(in, in, sumOfSquares); - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize % 0x4U; - - while (blkCnt > 0U) - { - /* C = (A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1]) */ - /* Compute Sum of squares of the input samples - * and then store the result in a temporary variable, sum. */ - in1 = *pSrc++; - sumOfSquares = __SMLALD(in1, in1, sumOfSquares); - sum += in1; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* Compute Mean of squares of the input samples - * and then store the result in a temporary variable, meanOfSquares. */ - meanOfSquares = (q31_t)(sumOfSquares / (q63_t)(blockSize - 1U)); - - /* Compute square of mean */ - squareOfMean = (q31_t)((q63_t)sum * sum / (q63_t)(blockSize * (blockSize - 1U))); - - /* mean of the squares minus the square of the mean. */ - /* Compute standard deviation and store the result to the destination */ - arm_sqrt_q15(__SSAT((meanOfSquares - squareOfMean) >> 15U, 16U), pResult); - -#else - /* Run the below code for Cortex-M0 */ - - /* Loop over blockSize number of values */ - blkCnt = blockSize; - - while (blkCnt > 0U) - { - /* C = (A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1]) */ - /* Compute Sum of squares of the input samples - * and then store the result in a temporary variable, sumOfSquares. */ - in = *pSrc++; - sumOfSquares += (in * in); - - /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) */ - /* Compute sum of all input values and then store the result in a temporary variable, sum. */ - sum += in; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* Compute Mean of squares of the input samples - * and then store the result in a temporary variable, meanOfSquares. */ - meanOfSquares = (q31_t)(sumOfSquares / (q63_t)(blockSize - 1U)); - - /* Compute square of mean */ - squareOfMean = (q31_t)((q63_t)sum * sum / (q63_t)(blockSize * (blockSize - 1U))); - - /* mean of the squares minus the square of the mean. */ - /* Compute standard deviation and store the result to the destination */ - arm_sqrt_q15(__SSAT((meanOfSquares - squareOfMean) >> 15U, 16U), pResult); - -#endif /* #if defined (ARM_MATH_DSP) */ -} - -/** - * @} end of STD group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_std_q31.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_std_q31.c deleted file mode 100644 index f02cbdd..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_std_q31.c +++ /dev/null @@ -1,169 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_std_q31.c - * Description: Standard deviation of an array of Q31 type. - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupStats - */ - -/** - * @addtogroup STD - * @{ - */ - -/** - * @brief Standard deviation of the elements of a Q31 vector. - * @param[in] *pSrc points to the input vector - * @param[in] blockSize length of the input vector - * @param[out] *pResult standard deviation value returned here - * @return none. - * @details - * Scaling and Overflow Behavior: - * - *\par - * The function is implemented using an internal 64-bit accumulator. - * The input is represented in 1.31 format, which is then downshifted by 8 bits - * which yields 1.23, and intermediate multiplication yields a 2.46 format. - * The accumulator maintains full precision of the intermediate multiplication results, - * but provides only a 16 guard bits. - * There is no saturation on intermediate additions. - * If the accumulator overflows it wraps around and distorts the result. - * In order to avoid overflows completely the input signal must be scaled down by - * log2(blockSize)-8 bits, as a total of blockSize additions are performed internally. - * After division, internal variables should be Q18.46 - * Finally, the 18.46 accumulator is right shifted by 15 bits to yield a 1.31 format value. - * - */ - -void arm_std_q31( - q31_t * pSrc, - uint32_t blockSize, - q31_t * pResult) -{ - q63_t sum = 0; /* Accumulator */ - q63_t meanOfSquares, squareOfMean; /* square of mean and mean of square */ - q31_t in; /* input value */ - uint32_t blkCnt; /* loop counter */ - q63_t sumOfSquares = 0; /* Accumulator */ - - if (blockSize == 1U) - { - *pResult = 0; - return; - } - -#if defined (ARM_MATH_DSP) - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - /*loop Unrolling */ - blkCnt = blockSize >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - /* C = (A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1]) */ - /* Compute Sum of squares of the input samples - * and then store the result in a temporary variable, sum. */ - in = *pSrc++ >> 8U; - sum += in; - sumOfSquares += ((q63_t) (in) * (in)); - in = *pSrc++ >> 8U; - sum += in; - sumOfSquares += ((q63_t) (in) * (in)); - in = *pSrc++ >> 8U; - sum += in; - sumOfSquares += ((q63_t) (in) * (in)); - in = *pSrc++ >> 8U; - sum += in; - sumOfSquares += ((q63_t) (in) * (in)); - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize % 0x4U; - - while (blkCnt > 0U) - { - /* C = (A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1]) */ - /* Compute Sum of squares of the input samples - * and then store the result in a temporary variable, sum. */ - in = *pSrc++ >> 8U; - sum += in; - sumOfSquares += ((q63_t) (in) * (in)); - - /* Decrement the loop counter */ - blkCnt--; - } - - /* Compute Mean of squares of the input samples - * and then store the result in a temporary variable, meanOfSquares. */ - meanOfSquares = sumOfSquares / (q63_t)(blockSize - 1U); - -#else - /* Run the below code for Cortex-M0 */ - - /* Loop over blockSize number of values */ - blkCnt = blockSize; - - while (blkCnt > 0U) - { - /* C = (A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1]) */ - /* Compute Sum of squares of the input samples - * and then store the result in a temporary variable, sumOfSquares. */ - in = *pSrc++ >> 8U; - sumOfSquares += ((q63_t) (in) * (in)); - - /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) */ - /* Compute sum of all input values and then store the result in a temporary variable, sum. */ - sum += in; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* Compute Mean of squares of the input samples - * and then store the result in a temporary variable, meanOfSquares. */ - meanOfSquares = sumOfSquares / (q63_t)(blockSize - 1U); - -#endif /* #if defined (ARM_MATH_DSP) */ - - /* Compute square of mean */ - squareOfMean = sum * sum / (q63_t)(blockSize * (blockSize - 1U)); - - /* Compute standard deviation and then store the result to the destination */ - arm_sqrt_q31((meanOfSquares - squareOfMean) >> 15U, pResult); -} - -/** - * @} end of STD group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_var_f32.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_var_f32.c deleted file mode 100644 index c0f731d..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_var_f32.c +++ /dev/null @@ -1,181 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_var_f32.c - * Description: Variance of the elements of a floating-point vector - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupStats - */ - -/** - * @defgroup variance Variance - * - * Calculates the variance of the elements in the input vector. - * The underlying algorithm used is the direct method sometimes referred to as the two-pass method: - * - *
- *   Result = sum(element - meanOfElements)^2) / numElement - 1
- *
- *     where, meanOfElements = ( pSrc[0] * pSrc[0] + pSrc[1] * pSrc[1] + ... + pSrc[blockSize-1] ) / blockSize
- *
- * 
- * - * There are separate functions for floating point, Q31, and Q15 data types. - */ - -/** - * @addtogroup variance - * @{ - */ - - -/** - * @brief Variance of the elements of a floating-point vector. - * @param[in] *pSrc points to the input vector - * @param[in] blockSize length of the input vector - * @param[out] *pResult variance value returned here - * @return none. - */ - -void arm_var_f32( - float32_t * pSrc, - uint32_t blockSize, - float32_t * pResult) -{ - float32_t fMean, fValue; - uint32_t blkCnt; /* loop counter */ - float32_t * pInput = pSrc; - float32_t sum = 0.0f; - float32_t fSum = 0.0f; - #if defined(ARM_MATH_DSP) - float32_t in1, in2, in3, in4; - #endif - - if (blockSize <= 1U) - { - *pResult = 0; - return; - } - - #if defined(ARM_MATH_DSP) - /* Run the below code for Cortex-M4 and Cortex-M7 */ - - /*loop Unrolling */ - blkCnt = blockSize >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) */ - in1 = *pInput++; - in2 = *pInput++; - in3 = *pInput++; - in4 = *pInput++; - - sum += in1; - sum += in2; - sum += in3; - sum += in4; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize % 0x4U; - - #else - /* Run the below code for Cortex-M0 or Cortex-M3 */ - - /* Loop over blockSize number of values */ - blkCnt = blockSize; - - #endif - - while (blkCnt > 0U) - { - /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) */ - sum += *pInput++; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) / blockSize */ - fMean = sum / (float32_t) blockSize; - - pInput = pSrc; - - #if defined(ARM_MATH_DSP) - - /*loop Unrolling */ - blkCnt = blockSize >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - fValue = *pInput++ - fMean; - fSum += fValue * fValue; - fValue = *pInput++ - fMean; - fSum += fValue * fValue; - fValue = *pInput++ - fMean; - fSum += fValue * fValue; - fValue = *pInput++ - fMean; - fSum += fValue * fValue; - - /* Decrement the loop counter */ - blkCnt--; - } - - blkCnt = blockSize % 0x4U; - #else - /* Run the below code for Cortex-M0 or Cortex-M3 */ - - /* Loop over blockSize number of values */ - blkCnt = blockSize; - #endif - - while (blkCnt > 0U) - { - fValue = *pInput++ - fMean; - fSum += fValue * fValue; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* Variance */ - *pResult = fSum / (float32_t)(blockSize - 1.0f); -} - -/** - * @} end of variance group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_var_q15.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_var_q15.c deleted file mode 100644 index 5ba61f7..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_var_q15.c +++ /dev/null @@ -1,172 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_var_q15.c - * Description: Variance of an array of Q15 type - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupStats - */ - -/** - * @addtogroup variance - * @{ - */ - -/** - * @brief Variance of the elements of a Q15 vector. - * @param[in] *pSrc points to the input vector - * @param[in] blockSize length of the input vector - * @param[out] *pResult variance value returned here - * @return none. - * @details - * Scaling and Overflow Behavior: - * - * \par - * The function is implemented using a 64-bit internal accumulator. - * The input is represented in 1.15 format. - * Intermediate multiplication yields a 2.30 format, and this - * result is added without saturation to a 64-bit accumulator in 34.30 format. - * With 33 guard bits in the accumulator, there is no risk of overflow, and the - * full precision of the intermediate multiplication is preserved. - * Finally, the 34.30 result is truncated to 34.15 format by discarding the lower - * 15 bits, and then saturated to yield a result in 1.15 format. - */ - -void arm_var_q15( - q15_t * pSrc, - uint32_t blockSize, - q15_t * pResult) -{ - q31_t sum = 0; /* Accumulator */ - q31_t meanOfSquares, squareOfMean; /* square of mean and mean of square */ - uint32_t blkCnt; /* loop counter */ - q63_t sumOfSquares = 0; /* Accumulator */ -#if defined (ARM_MATH_DSP) - q31_t in; /* input value */ - q15_t in1; /* input value */ -#else - q15_t in; /* input value */ -#endif - - if (blockSize == 1U) - { - *pResult = 0; - return; - } - -#if defined (ARM_MATH_DSP) - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - /*loop Unrolling */ - blkCnt = blockSize >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - /* C = (A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1]) */ - /* Compute Sum of squares of the input samples - * and then store the result in a temporary variable, sum. */ - in = *__SIMD32(pSrc)++; - sum += ((in << 16U) >> 16U); - sum += (in >> 16U); - sumOfSquares = __SMLALD(in, in, sumOfSquares); - in = *__SIMD32(pSrc)++; - sum += ((in << 16U) >> 16U); - sum += (in >> 16U); - sumOfSquares = __SMLALD(in, in, sumOfSquares); - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize % 0x4U; - - while (blkCnt > 0U) - { - /* C = (A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1]) */ - /* Compute Sum of squares of the input samples - * and then store the result in a temporary variable, sum. */ - in1 = *pSrc++; - sumOfSquares = __SMLALD(in1, in1, sumOfSquares); - sum += in1; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* Compute Mean of squares of the input samples - * and then store the result in a temporary variable, meanOfSquares. */ - meanOfSquares = (q31_t)(sumOfSquares / (q63_t)(blockSize - 1U)); - - /* Compute square of mean */ - squareOfMean = (q31_t)((q63_t)sum * sum / (q63_t)(blockSize * (blockSize - 1U))); - - /* mean of the squares minus the square of the mean. */ - *pResult = (meanOfSquares - squareOfMean) >> 15U; - -#else - /* Run the below code for Cortex-M0 */ - - /* Loop over blockSize number of values */ - blkCnt = blockSize; - - while (blkCnt > 0U) - { - /* C = (A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1]) */ - /* Compute Sum of squares of the input samples - * and then store the result in a temporary variable, sumOfSquares. */ - in = *pSrc++; - sumOfSquares += (in * in); - - /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) */ - /* Compute sum of all input values and then store the result in a temporary variable, sum. */ - sum += in; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* Compute Mean of squares of the input samples - * and then store the result in a temporary variable, meanOfSquares. */ - meanOfSquares = (q31_t)(sumOfSquares / (q63_t)(blockSize - 1U)); - - /* Compute square of mean */ - squareOfMean = (q31_t)((q63_t)sum * sum / (q63_t)(blockSize * (blockSize - 1U))); - - /* mean of the squares minus the square of the mean. */ - *pResult = (meanOfSquares - squareOfMean) >> 15; - -#endif /* #if defined (ARM_MATH_DSP) */ -} - -/** - * @} end of variance group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_var_q31.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_var_q31.c deleted file mode 100644 index 526c6cd..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_var_q31.c +++ /dev/null @@ -1,169 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_var_q31.c - * Description: Variance of an array of Q31 type - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupStats - */ - -/** - * @addtogroup variance - * @{ - */ - -/** - * @brief Variance of the elements of a Q31 vector. - * @param[in] *pSrc points to the input vector - * @param[in] blockSize length of the input vector - * @param[out] *pResult variance value returned here - * @return none. - * @details - * Scaling and Overflow Behavior: - * - *\par - * The function is implemented using an internal 64-bit accumulator. - * The input is represented in 1.31 format, which is then downshifted by 8 bits - * which yields 1.23, and intermediate multiplication yields a 2.46 format. - * The accumulator maintains full precision of the intermediate multiplication results, - * but provides only a 16 guard bits. - * There is no saturation on intermediate additions. - * If the accumulator overflows it wraps around and distorts the result. - * In order to avoid overflows completely the input signal must be scaled down by - * log2(blockSize)-8 bits, as a total of blockSize additions are performed internally. - * After division, internal variables should be Q18.46 - * Finally, the 18.46 accumulator is right shifted by 15 bits to yield a 1.31 format value. - * - */ - -void arm_var_q31( - q31_t * pSrc, - uint32_t blockSize, - q31_t * pResult) -{ - q63_t sum = 0; /* Accumulator */ - q63_t meanOfSquares, squareOfMean; /* square of mean and mean of square */ - q31_t in; /* input value */ - uint32_t blkCnt; /* loop counter */ - q63_t sumOfSquares = 0; /* Accumulator */ - - if (blockSize == 1U) - { - *pResult = 0; - return; - } - -#if defined (ARM_MATH_DSP) - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - /*loop Unrolling */ - blkCnt = blockSize >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - /* C = (A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1]) */ - /* Compute Sum of squares of the input samples - * and then store the result in a temporary variable, sum. */ - in = *pSrc++ >> 8U; - sum += in; - sumOfSquares += ((q63_t) (in) * (in)); - in = *pSrc++ >> 8U; - sum += in; - sumOfSquares += ((q63_t) (in) * (in)); - in = *pSrc++ >> 8U; - sum += in; - sumOfSquares += ((q63_t) (in) * (in)); - in = *pSrc++ >> 8U; - sum += in; - sumOfSquares += ((q63_t) (in) * (in)); - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize % 0x4U; - - while (blkCnt > 0U) - { - /* C = (A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1]) */ - /* Compute Sum of squares of the input samples - * and then store the result in a temporary variable, sum. */ - in = *pSrc++ >> 8U; - sum += in; - sumOfSquares += ((q63_t) (in) * (in)); - - /* Decrement the loop counter */ - blkCnt--; - } - - /* Compute Mean of squares of the input samples - * and then store the result in a temporary variable, meanOfSquares. */ - meanOfSquares = sumOfSquares / (q63_t)(blockSize - 1U); - -#else - /* Run the below code for Cortex-M0 */ - - /* Loop over blockSize number of values */ - blkCnt = blockSize; - - while (blkCnt > 0U) - { - /* C = (A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1]) */ - /* Compute Sum of squares of the input samples - * and then store the result in a temporary variable, sumOfSquares. */ - in = *pSrc++ >> 8U; - sumOfSquares += ((q63_t) (in) * (in)); - - /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) */ - /* Compute sum of all input values and then store the result in a temporary variable, sum. */ - sum += in; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* Compute Mean of squares of the input samples - * and then store the result in a temporary variable, meanOfSquares. */ - meanOfSquares = sumOfSquares / (q63_t)(blockSize - 1U); - -#endif /* #if defined (ARM_MATH_DSP) */ - - /* Compute square of mean */ - squareOfMean = sum * sum / (q63_t)(blockSize * (blockSize - 1U)); - - /* Compute standard deviation and then store the result to the destination */ - *pResult = (meanOfSquares - squareOfMean) >> 15U; -} - -/** - * @} end of variance group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_copy_f32.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_copy_f32.c deleted file mode 100644 index 1e2b5cf..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_copy_f32.c +++ /dev/null @@ -1,123 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_copy_f32.c - * Description: Copies the elements of a floating-point vector - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupSupport - */ - -/** - * @defgroup copy Vector Copy - * - * Copies sample by sample from source vector to destination vector. - * - *
- * 	pDst[n] = pSrc[n];   0 <= n < blockSize.
- * 
- * - * There are separate functions for floating point, Q31, Q15, and Q7 data types. - */ - -/** - * @addtogroup copy - * @{ - */ - -/** - * @brief Copies the elements of a floating-point vector. - * @param[in] *pSrc points to input vector - * @param[out] *pDst points to output vector - * @param[in] blockSize length of the input vector - * @return none. - * - */ - - -void arm_copy_f32( - float32_t * pSrc, - float32_t * pDst, - uint32_t blockSize) -{ - uint32_t blkCnt; /* loop counter */ - -#if defined (ARM_MATH_DSP) - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - float32_t in1, in2, in3, in4; - - /*loop Unrolling */ - blkCnt = blockSize >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - /* C = A */ - /* Copy and then store the results in the destination buffer */ - in1 = *pSrc++; - in2 = *pSrc++; - in3 = *pSrc++; - in4 = *pSrc++; - - *pDst++ = in1; - *pDst++ = in2; - *pDst++ = in3; - *pDst++ = in4; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize % 0x4U; - -#else - - /* Run the below code for Cortex-M0 */ - - /* Loop over blockSize number of values */ - blkCnt = blockSize; - -#endif /* #if defined (ARM_MATH_DSP) */ - - while (blkCnt > 0U) - { - /* C = A */ - /* Copy and then store the results in the destination buffer */ - *pDst++ = *pSrc++; - - /* Decrement the loop counter */ - blkCnt--; - } -} - -/** - * @} end of BasicCopy group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_copy_q15.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_copy_q15.c deleted file mode 100644 index 0d2fffb..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_copy_q15.c +++ /dev/null @@ -1,102 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_copy_q15.c - * Description: Copies the elements of a Q15 vector - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupSupport - */ - -/** - * @addtogroup copy - * @{ - */ -/** - * @brief Copies the elements of a Q15 vector. - * @param[in] *pSrc points to input vector - * @param[out] *pDst points to output vector - * @param[in] blockSize length of the input vector - * @return none. - * - */ - -void arm_copy_q15( - q15_t * pSrc, - q15_t * pDst, - uint32_t blockSize) -{ - uint32_t blkCnt; /* loop counter */ - -#if defined (ARM_MATH_DSP) - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - /*loop Unrolling */ - blkCnt = blockSize >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - /* C = A */ - /* Read two inputs */ - *__SIMD32(pDst)++ = *__SIMD32(pSrc)++; - *__SIMD32(pDst)++ = *__SIMD32(pSrc)++; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize % 0x4U; - - -#else - - /* Run the below code for Cortex-M0 */ - - /* Loop over blockSize number of values */ - blkCnt = blockSize; - -#endif /* #if defined (ARM_MATH_DSP) */ - - while (blkCnt > 0U) - { - /* C = A */ - /* Copy and then store the value in the destination buffer */ - *pDst++ = *pSrc++; - - /* Decrement the loop counter */ - blkCnt--; - } -} - -/** - * @} end of BasicCopy group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_copy_q31.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_copy_q31.c deleted file mode 100644 index 5bf8934..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_copy_q31.c +++ /dev/null @@ -1,111 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_copy_q31.c - * Description: Copies the elements of a Q31 vector - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupSupport - */ - -/** - * @addtogroup copy - * @{ - */ - -/** - * @brief Copies the elements of a Q31 vector. - * @param[in] *pSrc points to input vector - * @param[out] *pDst points to output vector - * @param[in] blockSize length of the input vector - * @return none. - * - */ - -void arm_copy_q31( - q31_t * pSrc, - q31_t * pDst, - uint32_t blockSize) -{ - uint32_t blkCnt; /* loop counter */ - - -#if defined (ARM_MATH_DSP) - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - q31_t in1, in2, in3, in4; - - /*loop Unrolling */ - blkCnt = blockSize >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - /* C = A */ - /* Copy and then store the values in the destination buffer */ - in1 = *pSrc++; - in2 = *pSrc++; - in3 = *pSrc++; - in4 = *pSrc++; - - *pDst++ = in1; - *pDst++ = in2; - *pDst++ = in3; - *pDst++ = in4; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize % 0x4U; - -#else - - /* Run the below code for Cortex-M0 */ - - /* Loop over blockSize number of values */ - blkCnt = blockSize; - -#endif /* #if defined (ARM_MATH_DSP) */ - - while (blkCnt > 0U) - { - /* C = A */ - /* Copy and then store the value in the destination buffer */ - *pDst++ = *pSrc++; - - /* Decrement the loop counter */ - blkCnt--; - } -} - -/** - * @} end of BasicCopy group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_copy_q7.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_copy_q7.c deleted file mode 100644 index 5c737cd..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_copy_q7.c +++ /dev/null @@ -1,103 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_copy_q7.c - * Description: Copies the elements of a Q7 vector - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupSupport - */ - -/** - * @addtogroup copy - * @{ - */ - -/** - * @brief Copies the elements of a Q7 vector. - * @param[in] *pSrc points to input vector - * @param[out] *pDst points to output vector - * @param[in] blockSize length of the input vector - * @return none. - * - */ - -void arm_copy_q7( - q7_t * pSrc, - q7_t * pDst, - uint32_t blockSize) -{ - uint32_t blkCnt; /* loop counter */ - -#if defined (ARM_MATH_DSP) - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - /*loop Unrolling */ - blkCnt = blockSize >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - /* C = A */ - /* Copy and then store the results in the destination buffer */ - /* 4 samples are copied and stored at a time using SIMD */ - *__SIMD32(pDst)++ = *__SIMD32(pSrc)++; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize % 0x4U; - -#else - - /* Run the below code for Cortex-M0 */ - - /* Loop over blockSize number of values */ - blkCnt = blockSize; - -#endif /* #if defined (ARM_MATH_DSP) */ - - - while (blkCnt > 0U) - { - /* C = A */ - /* Copy and then store the results in the destination buffer */ - *pDst++ = *pSrc++; - - /* Decrement the loop counter */ - blkCnt--; - } -} - -/** - * @} end of BasicCopy group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_fill_f32.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_fill_f32.c deleted file mode 100644 index be749c8..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_fill_f32.c +++ /dev/null @@ -1,122 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_fill_f32.c - * Description: Fills a constant value into a floating-point vector - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupSupport - */ - -/** - * @defgroup Fill Vector Fill - * - * Fills the destination vector with a constant value. - * - *
- * 	pDst[n] = value;   0 <= n < blockSize.
- * 
- * - * There are separate functions for floating point, Q31, Q15, and Q7 data types. - */ - -/** - * @addtogroup Fill - * @{ - */ - -/** - * @brief Fills a constant value into a floating-point vector. - * @param[in] value input value to be filled - * @param[out] *pDst points to output vector - * @param[in] blockSize length of the output vector - * @return none. - * - */ - - -void arm_fill_f32( - float32_t value, - float32_t * pDst, - uint32_t blockSize) -{ - uint32_t blkCnt; /* loop counter */ - -#if defined (ARM_MATH_DSP) - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - float32_t in1 = value; - float32_t in2 = value; - float32_t in3 = value; - float32_t in4 = value; - - /*loop Unrolling */ - blkCnt = blockSize >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - /* C = value */ - /* Fill the value in the destination buffer */ - *pDst++ = in1; - *pDst++ = in2; - *pDst++ = in3; - *pDst++ = in4; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize % 0x4U; - -#else - - /* Run the below code for Cortex-M0 */ - - /* Loop over blockSize number of values */ - blkCnt = blockSize; - -#endif /* #if defined (ARM_MATH_DSP) */ - - - while (blkCnt > 0U) - { - /* C = value */ - /* Fill the value in the destination buffer */ - *pDst++ = value; - - /* Decrement the loop counter */ - blkCnt--; - } -} - -/** - * @} end of Fill group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_fill_q15.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_fill_q15.c deleted file mode 100644 index 27eb42c..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_fill_q15.c +++ /dev/null @@ -1,108 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_fill_q15.c - * Description: Fills a constant value into a Q15 vector - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupSupport - */ - -/** - * @addtogroup Fill - * @{ - */ - -/** - * @brief Fills a constant value into a Q15 vector. - * @param[in] value input value to be filled - * @param[out] *pDst points to output vector - * @param[in] blockSize length of the output vector - * @return none. - * - */ - -void arm_fill_q15( - q15_t value, - q15_t * pDst, - uint32_t blockSize) -{ - uint32_t blkCnt; /* loop counter */ - -#if defined (ARM_MATH_DSP) - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - q31_t packedValue; /* value packed to 32 bits */ - - - /*loop Unrolling */ - blkCnt = blockSize >> 2U; - - /* Packing two 16 bit values to 32 bit value in order to use SIMD */ - packedValue = __PKHBT(value, value, 16U); - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - /* C = value */ - /* Fill the value in the destination buffer */ - *__SIMD32(pDst)++ = packedValue; - *__SIMD32(pDst)++ = packedValue; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize % 0x4U; - -#else - - /* Run the below code for Cortex-M0 */ - - /* Loop over blockSize number of values */ - blkCnt = blockSize; - -#endif /* #if defined (ARM_MATH_DSP) */ - - while (blkCnt > 0U) - { - /* C = value */ - /* Fill the value in the destination buffer */ - *pDst++ = value; - - /* Decrement the loop counter */ - blkCnt--; - } -} - -/** - * @} end of Fill group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_fill_q31.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_fill_q31.c deleted file mode 100644 index 397a7b5..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_fill_q31.c +++ /dev/null @@ -1,109 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_fill_q31.c - * Description: Fills a constant value into a Q31 vector - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupSupport - */ - -/** - * @addtogroup Fill - * @{ - */ - -/** - * @brief Fills a constant value into a Q31 vector. - * @param[in] value input value to be filled - * @param[out] *pDst points to output vector - * @param[in] blockSize length of the output vector - * @return none. - * - */ - -void arm_fill_q31( - q31_t value, - q31_t * pDst, - uint32_t blockSize) -{ - uint32_t blkCnt; /* loop counter */ - - -#if defined (ARM_MATH_DSP) - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - q31_t in1 = value; - q31_t in2 = value; - q31_t in3 = value; - q31_t in4 = value; - - /*loop Unrolling */ - blkCnt = blockSize >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - /* C = value */ - /* Fill the value in the destination buffer */ - *pDst++ = in1; - *pDst++ = in2; - *pDst++ = in3; - *pDst++ = in4; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize % 0x4U; - -#else - - /* Run the below code for Cortex-M0 */ - - /* Loop over blockSize number of values */ - blkCnt = blockSize; - -#endif /* #if defined (ARM_MATH_DSP) */ - - while (blkCnt > 0U) - { - /* C = value */ - /* Fill the value in the destination buffer */ - *pDst++ = value; - - /* Decrement the loop counter */ - blkCnt--; - } -} - -/** - * @} end of Fill group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_fill_q7.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_fill_q7.c deleted file mode 100644 index dffdf97..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_fill_q7.c +++ /dev/null @@ -1,106 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_fill_q7.c - * Description: Fills a constant value into a Q7 vector - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupSupport - */ - -/** - * @addtogroup Fill - * @{ - */ - -/** - * @brief Fills a constant value into a Q7 vector. - * @param[in] value input value to be filled - * @param[out] *pDst points to output vector - * @param[in] blockSize length of the output vector - * @return none. - * - */ - -void arm_fill_q7( - q7_t value, - q7_t * pDst, - uint32_t blockSize) -{ - uint32_t blkCnt; /* loop counter */ - -#if defined (ARM_MATH_DSP) - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - q31_t packedValue; /* value packed to 32 bits */ - - /*loop Unrolling */ - blkCnt = blockSize >> 2U; - - /* Packing four 8 bit values to 32 bit value in order to use SIMD */ - packedValue = __PACKq7(value, value, value, value); - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - /* C = value */ - /* Fill the value in the destination buffer */ - *__SIMD32(pDst)++ = packedValue; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize % 0x4U; - -#else - - /* Run the below code for Cortex-M0 */ - - /* Loop over blockSize number of values */ - blkCnt = blockSize; - -#endif /* #if defined (ARM_MATH_DSP) */ - - while (blkCnt > 0U) - { - /* C = value */ - /* Fill the value in the destination buffer */ - *pDst++ = value; - - /* Decrement the loop counter */ - blkCnt--; - } -} - -/** - * @} end of Fill group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_float_to_q15.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_float_to_q15.c deleted file mode 100644 index 0aa20f1..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_float_to_q15.c +++ /dev/null @@ -1,192 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_float_to_q15.c - * Description: Converts the elements of the floating-point vector to Q15 vector - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupSupport - */ - -/** - * @addtogroup float_to_x - * @{ - */ - -/** - * @brief Converts the elements of the floating-point vector to Q15 vector. - * @param[in] *pSrc points to the floating-point input vector - * @param[out] *pDst points to the Q15 output vector - * @param[in] blockSize length of the input vector - * @return none. - * - * \par Description: - * \par - * The equation used for the conversion process is: - *
- * 	pDst[n] = (q15_t)(pSrc[n] * 32768);   0 <= n < blockSize.
- * 
- * \par Scaling and Overflow Behavior: - * \par - * The function uses saturating arithmetic. - * Results outside of the allowable Q15 range [0x8000 0x7FFF] will be saturated. - * \note - * In order to apply rounding, the library should be rebuilt with the ROUNDING macro - * defined in the preprocessor section of project options. - * - */ - - -void arm_float_to_q15( - float32_t * pSrc, - q15_t * pDst, - uint32_t blockSize) -{ - float32_t *pIn = pSrc; /* Src pointer */ - uint32_t blkCnt; /* loop counter */ - -#ifdef ARM_MATH_ROUNDING - - float32_t in; - -#endif /* #ifdef ARM_MATH_ROUNDING */ - -#if defined (ARM_MATH_DSP) - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - /*loop Unrolling */ - blkCnt = blockSize >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - -#ifdef ARM_MATH_ROUNDING - /* C = A * 32768 */ - /* convert from float to q15 and then store the results in the destination buffer */ - in = *pIn++; - in = (in * 32768.0f); - in += in > 0.0f ? 0.5f : -0.5f; - *pDst++ = (q15_t) (__SSAT((q31_t) (in), 16)); - - in = *pIn++; - in = (in * 32768.0f); - in += in > 0.0f ? 0.5f : -0.5f; - *pDst++ = (q15_t) (__SSAT((q31_t) (in), 16)); - - in = *pIn++; - in = (in * 32768.0f); - in += in > 0.0f ? 0.5f : -0.5f; - *pDst++ = (q15_t) (__SSAT((q31_t) (in), 16)); - - in = *pIn++; - in = (in * 32768.0f); - in += in > 0.0f ? 0.5f : -0.5f; - *pDst++ = (q15_t) (__SSAT((q31_t) (in), 16)); - -#else - - /* C = A * 32768 */ - /* convert from float to q15 and then store the results in the destination buffer */ - *pDst++ = (q15_t) __SSAT((q31_t) (*pIn++ * 32768.0f), 16); - *pDst++ = (q15_t) __SSAT((q31_t) (*pIn++ * 32768.0f), 16); - *pDst++ = (q15_t) __SSAT((q31_t) (*pIn++ * 32768.0f), 16); - *pDst++ = (q15_t) __SSAT((q31_t) (*pIn++ * 32768.0f), 16); - -#endif /* #ifdef ARM_MATH_ROUNDING */ - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize % 0x4U; - - while (blkCnt > 0U) - { - -#ifdef ARM_MATH_ROUNDING - /* C = A * 32768 */ - /* convert from float to q15 and then store the results in the destination buffer */ - in = *pIn++; - in = (in * 32768.0f); - in += in > 0.0f ? 0.5f : -0.5f; - *pDst++ = (q15_t) (__SSAT((q31_t) (in), 16)); - -#else - - /* C = A * 32768 */ - /* convert from float to q15 and then store the results in the destination buffer */ - *pDst++ = (q15_t) __SSAT((q31_t) (*pIn++ * 32768.0f), 16); - -#endif /* #ifdef ARM_MATH_ROUNDING */ - - /* Decrement the loop counter */ - blkCnt--; - } - - -#else - - /* Run the below code for Cortex-M0 */ - - /* Loop over blockSize number of values */ - blkCnt = blockSize; - - while (blkCnt > 0U) - { - -#ifdef ARM_MATH_ROUNDING - /* C = A * 32768 */ - /* convert from float to q15 and then store the results in the destination buffer */ - in = *pIn++; - in = (in * 32768.0f); - in += in > 0 ? 0.5f : -0.5f; - *pDst++ = (q15_t) (__SSAT((q31_t) (in), 16)); - -#else - - /* C = A * 32768 */ - /* convert from float to q15 and then store the results in the destination buffer */ - *pDst++ = (q15_t) __SSAT((q31_t) (*pIn++ * 32768.0f), 16); - -#endif /* #ifdef ARM_MATH_ROUNDING */ - - /* Decrement the loop counter */ - blkCnt--; - } - -#endif /* #if defined (ARM_MATH_DSP) */ - -} - -/** - * @} end of float_to_x group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_float_to_q31.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_float_to_q31.c deleted file mode 100644 index d17cc3a..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_float_to_q31.c +++ /dev/null @@ -1,199 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_float_to_q31.c - * Description: Converts the elements of the floating-point vector to Q31 vector - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupSupport - */ - -/** - * @defgroup float_to_x Convert 32-bit floating point value - */ - -/** - * @addtogroup float_to_x - * @{ - */ - -/** - * @brief Converts the elements of the floating-point vector to Q31 vector. - * @param[in] *pSrc points to the floating-point input vector - * @param[out] *pDst points to the Q31 output vector - * @param[in] blockSize length of the input vector - * @return none. - * - *\par Description: - * \par - * The equation used for the conversion process is: - * - *
- * 	pDst[n] = (q31_t)(pSrc[n] * 2147483648);   0 <= n < blockSize.
- * 
- * Scaling and Overflow Behavior: - * \par - * The function uses saturating arithmetic. - * Results outside of the allowable Q31 range[0x80000000 0x7FFFFFFF] will be saturated. - * - * \note In order to apply rounding, the library should be rebuilt with the ROUNDING macro - * defined in the preprocessor section of project options. - */ - - -void arm_float_to_q31( - float32_t * pSrc, - q31_t * pDst, - uint32_t blockSize) -{ - float32_t *pIn = pSrc; /* Src pointer */ - uint32_t blkCnt; /* loop counter */ - -#ifdef ARM_MATH_ROUNDING - - float32_t in; - -#endif /* #ifdef ARM_MATH_ROUNDING */ - -#if defined (ARM_MATH_DSP) - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - /*loop Unrolling */ - blkCnt = blockSize >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - -#ifdef ARM_MATH_ROUNDING - - /* C = A * 32768 */ - /* convert from float to Q31 and then store the results in the destination buffer */ - in = *pIn++; - in = (in * 2147483648.0f); - in += in > 0.0f ? 0.5f : -0.5f; - *pDst++ = clip_q63_to_q31((q63_t) (in)); - - in = *pIn++; - in = (in * 2147483648.0f); - in += in > 0.0f ? 0.5f : -0.5f; - *pDst++ = clip_q63_to_q31((q63_t) (in)); - - in = *pIn++; - in = (in * 2147483648.0f); - in += in > 0.0f ? 0.5f : -0.5f; - *pDst++ = clip_q63_to_q31((q63_t) (in)); - - in = *pIn++; - in = (in * 2147483648.0f); - in += in > 0.0f ? 0.5f : -0.5f; - *pDst++ = clip_q63_to_q31((q63_t) (in)); - -#else - - /* C = A * 2147483648 */ - /* convert from float to Q31 and then store the results in the destination buffer */ - *pDst++ = clip_q63_to_q31((q63_t) (*pIn++ * 2147483648.0f)); - *pDst++ = clip_q63_to_q31((q63_t) (*pIn++ * 2147483648.0f)); - *pDst++ = clip_q63_to_q31((q63_t) (*pIn++ * 2147483648.0f)); - *pDst++ = clip_q63_to_q31((q63_t) (*pIn++ * 2147483648.0f)); - -#endif /* #ifdef ARM_MATH_ROUNDING */ - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize % 0x4U; - - while (blkCnt > 0U) - { - -#ifdef ARM_MATH_ROUNDING - - /* C = A * 2147483648 */ - /* convert from float to Q31 and then store the results in the destination buffer */ - in = *pIn++; - in = (in * 2147483648.0f); - in += in > 0.0f ? 0.5f : -0.5f; - *pDst++ = clip_q63_to_q31((q63_t) (in)); - -#else - - /* C = A * 2147483648 */ - /* convert from float to Q31 and then store the results in the destination buffer */ - *pDst++ = clip_q63_to_q31((q63_t) (*pIn++ * 2147483648.0f)); - -#endif /* #ifdef ARM_MATH_ROUNDING */ - - /* Decrement the loop counter */ - blkCnt--; - } - - -#else - - /* Run the below code for Cortex-M0 */ - - /* Loop over blockSize number of values */ - blkCnt = blockSize; - - while (blkCnt > 0U) - { - -#ifdef ARM_MATH_ROUNDING - - /* C = A * 2147483648 */ - /* convert from float to Q31 and then store the results in the destination buffer */ - in = *pIn++; - in = (in * 2147483648.0f); - in += in > 0 ? 0.5f : -0.5f; - *pDst++ = clip_q63_to_q31((q63_t) (in)); - -#else - - /* C = A * 2147483648 */ - /* convert from float to Q31 and then store the results in the destination buffer */ - *pDst++ = clip_q63_to_q31((q63_t) (*pIn++ * 2147483648.0f)); - -#endif /* #ifdef ARM_MATH_ROUNDING */ - - /* Decrement the loop counter */ - blkCnt--; - } - -#endif /* #if defined (ARM_MATH_DSP) */ - -} - -/** - * @} end of float_to_x group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_float_to_q7.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_float_to_q7.c deleted file mode 100644 index 6629a69..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_float_to_q7.c +++ /dev/null @@ -1,191 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_float_to_q7.c - * Description: Converts the elements of the floating-point vector to Q7 vector - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupSupport - */ - -/** - * @addtogroup float_to_x - * @{ - */ - -/** - * @brief Converts the elements of the floating-point vector to Q7 vector. - * @param[in] *pSrc points to the floating-point input vector - * @param[out] *pDst points to the Q7 output vector - * @param[in] blockSize length of the input vector - * @return none. - * - *\par Description: - * \par - * The equation used for the conversion process is: - *
- * 	pDst[n] = (q7_t)(pSrc[n] * 128);   0 <= n < blockSize.
- * 
- * \par Scaling and Overflow Behavior: - * \par - * The function uses saturating arithmetic. - * Results outside of the allowable Q7 range [0x80 0x7F] will be saturated. - * \note - * In order to apply rounding, the library should be rebuilt with the ROUNDING macro - * defined in the preprocessor section of project options. - */ - - -void arm_float_to_q7( - float32_t * pSrc, - q7_t * pDst, - uint32_t blockSize) -{ - float32_t *pIn = pSrc; /* Src pointer */ - uint32_t blkCnt; /* loop counter */ - -#ifdef ARM_MATH_ROUNDING - - float32_t in; - -#endif /* #ifdef ARM_MATH_ROUNDING */ - -#if defined (ARM_MATH_DSP) - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - /*loop Unrolling */ - blkCnt = blockSize >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - -#ifdef ARM_MATH_ROUNDING - /* C = A * 128 */ - /* convert from float to q7 and then store the results in the destination buffer */ - in = *pIn++; - in = (in * 128); - in += in > 0.0f ? 0.5f : -0.5f; - *pDst++ = (q7_t) (__SSAT((q15_t) (in), 8)); - - in = *pIn++; - in = (in * 128); - in += in > 0.0f ? 0.5f : -0.5f; - *pDst++ = (q7_t) (__SSAT((q15_t) (in), 8)); - - in = *pIn++; - in = (in * 128); - in += in > 0.0f ? 0.5f : -0.5f; - *pDst++ = (q7_t) (__SSAT((q15_t) (in), 8)); - - in = *pIn++; - in = (in * 128); - in += in > 0.0f ? 0.5f : -0.5f; - *pDst++ = (q7_t) (__SSAT((q15_t) (in), 8)); - -#else - - /* C = A * 128 */ - /* convert from float to q7 and then store the results in the destination buffer */ - *pDst++ = __SSAT((q31_t) (*pIn++ * 128.0f), 8); - *pDst++ = __SSAT((q31_t) (*pIn++ * 128.0f), 8); - *pDst++ = __SSAT((q31_t) (*pIn++ * 128.0f), 8); - *pDst++ = __SSAT((q31_t) (*pIn++ * 128.0f), 8); - -#endif /* #ifdef ARM_MATH_ROUNDING */ - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize % 0x4U; - - while (blkCnt > 0U) - { - -#ifdef ARM_MATH_ROUNDING - /* C = A * 128 */ - /* convert from float to q7 and then store the results in the destination buffer */ - in = *pIn++; - in = (in * 128); - in += in > 0.0f ? 0.5f : -0.5f; - *pDst++ = (q7_t) (__SSAT((q15_t) (in), 8)); - -#else - - /* C = A * 128 */ - /* convert from float to q7 and then store the results in the destination buffer */ - *pDst++ = __SSAT((q31_t) (*pIn++ * 128.0f), 8); - -#endif /* #ifdef ARM_MATH_ROUNDING */ - - /* Decrement the loop counter */ - blkCnt--; - } - - -#else - - /* Run the below code for Cortex-M0 */ - - - /* Loop over blockSize number of values */ - blkCnt = blockSize; - - while (blkCnt > 0U) - { -#ifdef ARM_MATH_ROUNDING - /* C = A * 128 */ - /* convert from float to q7 and then store the results in the destination buffer */ - in = *pIn++; - in = (in * 128.0f); - in += in > 0 ? 0.5f : -0.5f; - *pDst++ = (q7_t) (__SSAT((q31_t) (in), 8)); - -#else - - /* C = A * 128 */ - /* convert from float to q7 and then store the results in the destination buffer */ - *pDst++ = (q7_t) __SSAT((q31_t) (*pIn++ * 128.0f), 8); - -#endif /* #ifdef ARM_MATH_ROUNDING */ - - /* Decrement the loop counter */ - blkCnt--; - } - -#endif /* #if defined (ARM_MATH_DSP) */ - -} - -/** - * @} end of float_to_x group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_q15_to_float.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_q15_to_float.c deleted file mode 100644 index 48ef947..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_q15_to_float.c +++ /dev/null @@ -1,122 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_q15_to_float.c - * Description: Converts the elements of the Q15 vector to floating-point vector - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupSupport - */ - -/** - * @defgroup q15_to_x Convert 16-bit Integer value - */ - -/** - * @addtogroup q15_to_x - * @{ - */ - - - - -/** - * @brief Converts the elements of the Q15 vector to floating-point vector. - * @param[in] *pSrc points to the Q15 input vector - * @param[out] *pDst points to the floating-point output vector - * @param[in] blockSize length of the input vector - * @return none. - * - * \par Description: - * - * The equation used for the conversion process is: - * - *
- * 	pDst[n] = (float32_t) pSrc[n] / 32768;   0 <= n < blockSize.
- * 
- * - */ - - -void arm_q15_to_float( - q15_t * pSrc, - float32_t * pDst, - uint32_t blockSize) -{ - q15_t *pIn = pSrc; /* Src pointer */ - uint32_t blkCnt; /* loop counter */ - - -#if defined (ARM_MATH_DSP) - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - /*loop Unrolling */ - blkCnt = blockSize >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - /* C = (float32_t) A / 32768 */ - /* convert from q15 to float and then store the results in the destination buffer */ - *pDst++ = ((float32_t) * pIn++ / 32768.0f); - *pDst++ = ((float32_t) * pIn++ / 32768.0f); - *pDst++ = ((float32_t) * pIn++ / 32768.0f); - *pDst++ = ((float32_t) * pIn++ / 32768.0f); - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize % 0x4U; - -#else - - /* Run the below code for Cortex-M0 */ - - /* Loop over blockSize number of values */ - blkCnt = blockSize; - -#endif /* #if defined (ARM_MATH_DSP) */ - - while (blkCnt > 0U) - { - /* C = (float32_t) A / 32768 */ - /* convert from q15 to float and then store the results in the destination buffer */ - *pDst++ = ((float32_t) * pIn++ / 32768.0f); - - /* Decrement the loop counter */ - blkCnt--; - } -} - -/** - * @} end of q15_to_x group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_q15_to_q31.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_q15_to_q31.c deleted file mode 100644 index bf139a8..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_q15_to_q31.c +++ /dev/null @@ -1,144 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_q15_to_q31.c - * Description: Converts the elements of the Q15 vector to Q31 vector - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupSupport - */ - -/** - * @addtogroup q15_to_x - * @{ - */ - -/** - * @brief Converts the elements of the Q15 vector to Q31 vector. - * @param[in] *pSrc points to the Q15 input vector - * @param[out] *pDst points to the Q31 output vector - * @param[in] blockSize length of the input vector - * @return none. - * - * \par Description: - * - * The equation used for the conversion process is: - * - *
- * 	pDst[n] = (q31_t) pSrc[n] << 16;   0 <= n < blockSize.
- * 
- * - */ - - -void arm_q15_to_q31( - q15_t * pSrc, - q31_t * pDst, - uint32_t blockSize) -{ - q15_t *pIn = pSrc; /* Src pointer */ - uint32_t blkCnt; /* loop counter */ - -#if defined (ARM_MATH_DSP) - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - q31_t in1, in2; - q31_t out1, out2, out3, out4; - - /*loop Unrolling */ - blkCnt = blockSize >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - /* C = (q31_t)A << 16 */ - /* convert from q15 to q31 and then store the results in the destination buffer */ - in1 = *__SIMD32(pIn)++; - in2 = *__SIMD32(pIn)++; - -#ifndef ARM_MATH_BIG_ENDIAN - - /* extract lower 16 bits to 32 bit result */ - out1 = in1 << 16U; - /* extract upper 16 bits to 32 bit result */ - out2 = in1 & 0xFFFF0000; - /* extract lower 16 bits to 32 bit result */ - out3 = in2 << 16U; - /* extract upper 16 bits to 32 bit result */ - out4 = in2 & 0xFFFF0000; - -#else - - /* extract upper 16 bits to 32 bit result */ - out1 = in1 & 0xFFFF0000; - /* extract lower 16 bits to 32 bit result */ - out2 = in1 << 16U; - /* extract upper 16 bits to 32 bit result */ - out3 = in2 & 0xFFFF0000; - /* extract lower 16 bits to 32 bit result */ - out4 = in2 << 16U; - -#endif // #ifndef ARM_MATH_BIG_ENDIAN - - *pDst++ = out1; - *pDst++ = out2; - *pDst++ = out3; - *pDst++ = out4; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize % 0x4U; - -#else - - /* Run the below code for Cortex-M0 */ - - /* Loop over blockSize number of values */ - blkCnt = blockSize; - -#endif /* #if defined (ARM_MATH_DSP) */ - - while (blkCnt > 0U) - { - /* C = (q31_t)A << 16 */ - /* convert from q15 to q31 and then store the results in the destination buffer */ - *pDst++ = (q31_t) * pIn++ << 16; - - /* Decrement the loop counter */ - blkCnt--; - } - -} - -/** - * @} end of q15_to_x group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_q15_to_q7.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_q15_to_q7.c deleted file mode 100644 index 7a45e58..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_q15_to_q7.c +++ /dev/null @@ -1,142 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_q15_to_q7.c - * Description: Converts the elements of the Q15 vector to Q7 vector - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupSupport - */ - -/** - * @addtogroup q15_to_x - * @{ - */ - - -/** - * @brief Converts the elements of the Q15 vector to Q7 vector. - * @param[in] *pSrc points to the Q15 input vector - * @param[out] *pDst points to the Q7 output vector - * @param[in] blockSize length of the input vector - * @return none. - * - * \par Description: - * - * The equation used for the conversion process is: - * - *
- * 	pDst[n] = (q7_t) pSrc[n] >> 8;   0 <= n < blockSize.
- * 
- * - */ - - -void arm_q15_to_q7( - q15_t * pSrc, - q7_t * pDst, - uint32_t blockSize) -{ - q15_t *pIn = pSrc; /* Src pointer */ - uint32_t blkCnt; /* loop counter */ - -#if defined (ARM_MATH_DSP) - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - q31_t in1, in2; - q31_t out1, out2; - - /*loop Unrolling */ - blkCnt = blockSize >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - /* C = (q7_t) A >> 8 */ - /* convert from q15 to q7 and then store the results in the destination buffer */ - in1 = *__SIMD32(pIn)++; - in2 = *__SIMD32(pIn)++; - -#ifndef ARM_MATH_BIG_ENDIAN - - out1 = __PKHTB(in2, in1, 16); - out2 = __PKHBT(in2, in1, 16); - -#else - - out1 = __PKHTB(in1, in2, 16); - out2 = __PKHBT(in1, in2, 16); - -#endif // #ifndef ARM_MATH_BIG_ENDIAN - - /* rotate packed value by 24 */ - out2 = ((uint32_t) out2 << 8) | ((uint32_t) out2 >> 24); - - /* anding with 0xff00ff00 to get two 8 bit values */ - out1 = out1 & 0xFF00FF00; - /* anding with 0x00ff00ff to get two 8 bit values */ - out2 = out2 & 0x00FF00FF; - - /* oring two values(contains two 8 bit values) to get four packed 8 bit values */ - out1 = out1 | out2; - - /* store 4 samples at a time to destiantion buffer */ - *__SIMD32(pDst)++ = out1; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize % 0x4U; - -#else - - /* Run the below code for Cortex-M0 */ - - /* Loop over blockSize number of values */ - blkCnt = blockSize; - -#endif /* #if defined (ARM_MATH_DSP) */ - - while (blkCnt > 0U) - { - /* C = (q7_t) A >> 8 */ - /* convert from q15 to q7 and then store the results in the destination buffer */ - *pDst++ = (q7_t) (*pIn++ >> 8); - - /* Decrement the loop counter */ - blkCnt--; - } - -} - -/** - * @} end of q15_to_x group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_q31_to_float.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_q31_to_float.c deleted file mode 100644 index d2d7505..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_q31_to_float.c +++ /dev/null @@ -1,119 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_q31_to_float.c - * Description: Converts the elements of the Q31 vector to floating-point vector - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupSupport - */ - -/** - * @defgroup q31_to_x Convert 32-bit Integer value - */ - -/** - * @addtogroup q31_to_x - * @{ - */ - -/** - * @brief Converts the elements of the Q31 vector to floating-point vector. - * @param[in] *pSrc points to the Q31 input vector - * @param[out] *pDst points to the floating-point output vector - * @param[in] blockSize length of the input vector - * @return none. - * - * \par Description: - * - * The equation used for the conversion process is: - * - *
- * 	pDst[n] = (float32_t) pSrc[n] / 2147483648;   0 <= n < blockSize.
- * 
- * - */ - - -void arm_q31_to_float( - q31_t * pSrc, - float32_t * pDst, - uint32_t blockSize) -{ - q31_t *pIn = pSrc; /* Src pointer */ - uint32_t blkCnt; /* loop counter */ - - -#if defined (ARM_MATH_DSP) - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - /*loop Unrolling */ - blkCnt = blockSize >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - /* C = (float32_t) A / 2147483648 */ - /* convert from q31 to float and then store the results in the destination buffer */ - *pDst++ = ((float32_t) * pIn++ / 2147483648.0f); - *pDst++ = ((float32_t) * pIn++ / 2147483648.0f); - *pDst++ = ((float32_t) * pIn++ / 2147483648.0f); - *pDst++ = ((float32_t) * pIn++ / 2147483648.0f); - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize % 0x4U; - -#else - - /* Run the below code for Cortex-M0 */ - - /* Loop over blockSize number of values */ - blkCnt = blockSize; - -#endif /* #if defined (ARM_MATH_DSP) */ - - while (blkCnt > 0U) - { - /* C = (float32_t) A / 2147483648 */ - /* convert from q31 to float and then store the results in the destination buffer */ - *pDst++ = ((float32_t) * pIn++ / 2147483648.0f); - - /* Decrement the loop counter */ - blkCnt--; - } -} - -/** - * @} end of q31_to_x group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_q31_to_q15.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_q31_to_q15.c deleted file mode 100644 index c460fe7..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_q31_to_q15.c +++ /dev/null @@ -1,133 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_q31_to_q15.c - * Description: Converts the elements of the Q31 vector to Q15 vector - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupSupport - */ - -/** - * @addtogroup q31_to_x - * @{ - */ - -/** - * @brief Converts the elements of the Q31 vector to Q15 vector. - * @param[in] *pSrc points to the Q31 input vector - * @param[out] *pDst points to the Q15 output vector - * @param[in] blockSize length of the input vector - * @return none. - * - * \par Description: - * - * The equation used for the conversion process is: - * - *
- * 	pDst[n] = (q15_t) pSrc[n] >> 16;   0 <= n < blockSize.
- * 
- * - */ - - -void arm_q31_to_q15( - q31_t * pSrc, - q15_t * pDst, - uint32_t blockSize) -{ - q31_t *pIn = pSrc; /* Src pointer */ - uint32_t blkCnt; /* loop counter */ - -#if defined (ARM_MATH_DSP) - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - q31_t in1, in2, in3, in4; - q31_t out1, out2; - - /*loop Unrolling */ - blkCnt = blockSize >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - /* C = (q15_t) A >> 16 */ - /* convert from q31 to q15 and then store the results in the destination buffer */ - in1 = *pIn++; - in2 = *pIn++; - in3 = *pIn++; - in4 = *pIn++; - - /* pack two higher 16-bit values from two 32-bit values */ -#ifndef ARM_MATH_BIG_ENDIAN - - out1 = __PKHTB(in2, in1, 16); - out2 = __PKHTB(in4, in3, 16); - -#else - - out1 = __PKHTB(in1, in2, 16); - out2 = __PKHTB(in3, in4, 16); - -#endif // #ifdef ARM_MATH_BIG_ENDIAN - - *__SIMD32(pDst)++ = out1; - *__SIMD32(pDst)++ = out2; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize % 0x4U; - -#else - - /* Run the below code for Cortex-M0 */ - - /* Loop over blockSize number of values */ - blkCnt = blockSize; - -#endif /* #if defined (ARM_MATH_DSP) */ - - while (blkCnt > 0U) - { - /* C = (q15_t) A >> 16 */ - /* convert from q31 to q15 and then store the results in the destination buffer */ - *pDst++ = (q15_t) (*pIn++ >> 16); - - /* Decrement the loop counter */ - blkCnt--; - } - -} - -/** - * @} end of q31_to_x group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_q31_to_q7.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_q31_to_q7.c deleted file mode 100644 index f092bed..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_q31_to_q7.c +++ /dev/null @@ -1,124 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_q31_to_q7.c - * Description: Converts the elements of the Q31 vector to Q7 vector - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupSupport - */ - -/** - * @addtogroup q31_to_x - * @{ - */ - -/** - * @brief Converts the elements of the Q31 vector to Q7 vector. - * @param[in] *pSrc points to the Q31 input vector - * @param[out] *pDst points to the Q7 output vector - * @param[in] blockSize length of the input vector - * @return none. - * - * \par Description: - * - * The equation used for the conversion process is: - * - *
- * 	pDst[n] = (q7_t) pSrc[n] >> 24;   0 <= n < blockSize.
- * 
- * - */ - - -void arm_q31_to_q7( - q31_t * pSrc, - q7_t * pDst, - uint32_t blockSize) -{ - q31_t *pIn = pSrc; /* Src pointer */ - uint32_t blkCnt; /* loop counter */ - -#if defined (ARM_MATH_DSP) - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - q31_t in1, in2, in3, in4; - q7_t out1, out2, out3, out4; - - /*loop Unrolling */ - blkCnt = blockSize >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - /* C = (q7_t) A >> 24 */ - /* convert from q31 to q7 and then store the results in the destination buffer */ - in1 = *pIn++; - in2 = *pIn++; - in3 = *pIn++; - in4 = *pIn++; - - out1 = (q7_t) (in1 >> 24); - out2 = (q7_t) (in2 >> 24); - out3 = (q7_t) (in3 >> 24); - out4 = (q7_t) (in4 >> 24); - - *__SIMD32(pDst)++ = __PACKq7(out1, out2, out3, out4); - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize % 0x4U; - -#else - - /* Run the below code for Cortex-M0 */ - - /* Loop over blockSize number of values */ - blkCnt = blockSize; - -#endif /* #if defined (ARM_MATH_DSP) */ - - while (blkCnt > 0U) - { - /* C = (q7_t) A >> 24 */ - /* convert from q31 to q7 and then store the results in the destination buffer */ - *pDst++ = (q7_t) (*pIn++ >> 24); - - /* Decrement the loop counter */ - blkCnt--; - } - -} - -/** - * @} end of q31_to_x group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_q7_to_float.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_q7_to_float.c deleted file mode 100644 index ace437f..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_q7_to_float.c +++ /dev/null @@ -1,119 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_q7_to_float.c - * Description: Converts the elements of the Q7 vector to floating-point vector - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupSupport - */ - -/** - * @defgroup q7_to_x Convert 8-bit Integer value - */ - -/** - * @addtogroup q7_to_x - * @{ - */ - -/** - * @brief Converts the elements of the Q7 vector to floating-point vector. - * @param[in] *pSrc points to the Q7 input vector - * @param[out] *pDst points to the floating-point output vector - * @param[in] blockSize length of the input vector - * @return none. - * - * \par Description: - * - * The equation used for the conversion process is: - * - *
- * 	pDst[n] = (float32_t) pSrc[n] / 128;   0 <= n < blockSize.
- * 
- * - */ - - -void arm_q7_to_float( - q7_t * pSrc, - float32_t * pDst, - uint32_t blockSize) -{ - q7_t *pIn = pSrc; /* Src pointer */ - uint32_t blkCnt; /* loop counter */ - - -#if defined (ARM_MATH_DSP) - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - /*loop Unrolling */ - blkCnt = blockSize >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - /* C = (float32_t) A / 128 */ - /* convert from q7 to float and then store the results in the destination buffer */ - *pDst++ = ((float32_t) * pIn++ / 128.0f); - *pDst++ = ((float32_t) * pIn++ / 128.0f); - *pDst++ = ((float32_t) * pIn++ / 128.0f); - *pDst++ = ((float32_t) * pIn++ / 128.0f); - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize % 0x4U; - -#else - - /* Run the below code for Cortex-M0 */ - - /* Loop over blockSize number of values */ - blkCnt = blockSize; - -#endif /* #if defined (ARM_MATH_DSP) */ - - while (blkCnt > 0U) - { - /* C = (float32_t) A / 128 */ - /* convert from q7 to float and then store the results in the destination buffer */ - *pDst++ = ((float32_t) * pIn++ / 128.0f); - - /* Decrement the loop counter */ - blkCnt--; - } -} - -/** - * @} end of q7_to_x group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_q7_to_q15.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_q7_to_q15.c deleted file mode 100644 index 5348194..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_q7_to_q15.c +++ /dev/null @@ -1,145 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_q7_to_q15.c - * Description: Converts the elements of the Q7 vector to Q15 vector - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupSupport - */ - -/** - * @addtogroup q7_to_x - * @{ - */ - - - - -/** - * @brief Converts the elements of the Q7 vector to Q15 vector. - * @param[in] *pSrc points to the Q7 input vector - * @param[out] *pDst points to the Q15 output vector - * @param[in] blockSize length of the input vector - * @return none. - * - * \par Description: - * - * The equation used for the conversion process is: - * - *
- * 	pDst[n] = (q15_t) pSrc[n] << 8;   0 <= n < blockSize.
- * 
- * - */ - - -void arm_q7_to_q15( - q7_t * pSrc, - q15_t * pDst, - uint32_t blockSize) -{ - q7_t *pIn = pSrc; /* Src pointer */ - uint32_t blkCnt; /* loop counter */ - -#if defined (ARM_MATH_DSP) - q31_t in; - q31_t in1, in2; - q31_t out1, out2; - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - /*loop Unrolling */ - blkCnt = blockSize >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - /* C = (q15_t) A << 8 */ - /* convert from q7 to q15 and then store the results in the destination buffer */ - in = *__SIMD32(pIn)++; - - /* rotatate in by 8 and extend two q7_t values to q15_t values */ - in1 = __SXTB16(__ROR(in, 8)); - - /* extend remainig two q7_t values to q15_t values */ - in2 = __SXTB16(in); - - in1 = in1 << 8U; - in2 = in2 << 8U; - - in1 = in1 & 0xFF00FF00; - in2 = in2 & 0xFF00FF00; - -#ifndef ARM_MATH_BIG_ENDIAN - - out2 = __PKHTB(in1, in2, 16); - out1 = __PKHBT(in2, in1, 16); - -#else - - out1 = __PKHTB(in1, in2, 16); - out2 = __PKHBT(in2, in1, 16); - -#endif - - *__SIMD32(pDst)++ = out1; - *__SIMD32(pDst)++ = out2; - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize % 0x4U; - -#else - - /* Run the below code for Cortex-M0 */ - - /* Loop over blockSize number of values */ - blkCnt = blockSize; - -#endif /* #if defined (ARM_MATH_DSP) */ - - while (blkCnt > 0U) - { - /* C = (q15_t) A << 8 */ - /* convert from q7 to q15 and then store the results in the destination buffer */ - *pDst++ = (q15_t) * pIn++ << 8; - - /* Decrement the loop counter */ - blkCnt--; - } - -} - -/** - * @} end of q7_to_x group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_q7_to_q31.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_q7_to_q31.c deleted file mode 100644 index 27d0952..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_q7_to_q31.c +++ /dev/null @@ -1,130 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_q7_to_q31.c - * Description: Converts the elements of the Q7 vector to Q31 vector - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupSupport - */ - -/** - * @addtogroup q7_to_x - * @{ - */ - -/** - * @brief Converts the elements of the Q7 vector to Q31 vector. - * @param[in] *pSrc points to the Q7 input vector - * @param[out] *pDst points to the Q31 output vector - * @param[in] blockSize length of the input vector - * @return none. - * - * \par Description: - * - * The equation used for the conversion process is: - * - *
- * 	pDst[n] = (q31_t) pSrc[n] << 24;   0 <= n < blockSize.
- * 
- * - */ - - -void arm_q7_to_q31( - q7_t * pSrc, - q31_t * pDst, - uint32_t blockSize) -{ - q7_t *pIn = pSrc; /* Src pointer */ - uint32_t blkCnt; /* loop counter */ - -#if defined (ARM_MATH_DSP) - - q31_t in; - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - /*loop Unrolling */ - blkCnt = blockSize >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - while (blkCnt > 0U) - { - /* C = (q31_t) A << 24 */ - /* convert from q7 to q31 and then store the results in the destination buffer */ - in = *__SIMD32(pIn)++; - -#ifndef ARM_MATH_BIG_ENDIAN - - *pDst++ = (__ROR(in, 8)) & 0xFF000000; - *pDst++ = (__ROR(in, 16)) & 0xFF000000; - *pDst++ = (__ROR(in, 24)) & 0xFF000000; - *pDst++ = (in & 0xFF000000); - -#else - - *pDst++ = (in & 0xFF000000); - *pDst++ = (__ROR(in, 24)) & 0xFF000000; - *pDst++ = (__ROR(in, 16)) & 0xFF000000; - *pDst++ = (__ROR(in, 8)) & 0xFF000000; - -#endif // #ifndef ARM_MATH_BIG_ENDIAN - - /* Decrement the loop counter */ - blkCnt--; - } - - /* If the blockSize is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - blkCnt = blockSize % 0x4U; - -#else - - /* Run the below code for Cortex-M0 */ - - /* Loop over blockSize number of values */ - blkCnt = blockSize; - -#endif /* #if defined (ARM_MATH_DSP) */ - - while (blkCnt > 0U) - { - /* C = (q31_t) A << 24 */ - /* convert from q7 to q31 and then store the results in the destination buffer */ - *pDst++ = (q31_t) * pIn++ << 24; - - /* Decrement the loop counter */ - blkCnt--; - } - -} - -/** - * @} end of q7_to_x group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_bitreversal.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_bitreversal.c deleted file mode 100644 index cea4821..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_bitreversal.c +++ /dev/null @@ -1,230 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_bitreversal.c - * Description: Bitreversal functions - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" -#include "arm_common_tables.h" - -/* -* @brief In-place bit reversal function. -* @param[in, out] *pSrc points to the in-place buffer of floating-point data type. -* @param[in] fftSize length of the FFT. -* @param[in] bitRevFactor bit reversal modifier that supports different size FFTs with the same bit reversal table. -* @param[in] *pBitRevTab points to the bit reversal table. -* @return none. -*/ - -void arm_bitreversal_f32( -float32_t * pSrc, -uint16_t fftSize, -uint16_t bitRevFactor, -uint16_t * pBitRevTab) -{ - uint16_t fftLenBy2, fftLenBy2p1; - uint16_t i, j; - float32_t in; - - /* Initializations */ - j = 0U; - fftLenBy2 = fftSize >> 1U; - fftLenBy2p1 = (fftSize >> 1U) + 1U; - - /* Bit Reversal Implementation */ - for (i = 0U; i <= (fftLenBy2 - 2U); i += 2U) - { - if (i < j) - { - /* pSrc[i] <-> pSrc[j]; */ - in = pSrc[2U * i]; - pSrc[2U * i] = pSrc[2U * j]; - pSrc[2U * j] = in; - - /* pSrc[i+1U] <-> pSrc[j+1U] */ - in = pSrc[(2U * i) + 1U]; - pSrc[(2U * i) + 1U] = pSrc[(2U * j) + 1U]; - pSrc[(2U * j) + 1U] = in; - - /* pSrc[i+fftLenBy2p1] <-> pSrc[j+fftLenBy2p1] */ - in = pSrc[2U * (i + fftLenBy2p1)]; - pSrc[2U * (i + fftLenBy2p1)] = pSrc[2U * (j + fftLenBy2p1)]; - pSrc[2U * (j + fftLenBy2p1)] = in; - - /* pSrc[i+fftLenBy2p1+1U] <-> pSrc[j+fftLenBy2p1+1U] */ - in = pSrc[(2U * (i + fftLenBy2p1)) + 1U]; - pSrc[(2U * (i + fftLenBy2p1)) + 1U] = - pSrc[(2U * (j + fftLenBy2p1)) + 1U]; - pSrc[(2U * (j + fftLenBy2p1)) + 1U] = in; - - } - - /* pSrc[i+1U] <-> pSrc[j+1U] */ - in = pSrc[2U * (i + 1U)]; - pSrc[2U * (i + 1U)] = pSrc[2U * (j + fftLenBy2)]; - pSrc[2U * (j + fftLenBy2)] = in; - - /* pSrc[i+2U] <-> pSrc[j+2U] */ - in = pSrc[(2U * (i + 1U)) + 1U]; - pSrc[(2U * (i + 1U)) + 1U] = pSrc[(2U * (j + fftLenBy2)) + 1U]; - pSrc[(2U * (j + fftLenBy2)) + 1U] = in; - - /* Reading the index for the bit reversal */ - j = *pBitRevTab; - - /* Updating the bit reversal index depending on the fft length */ - pBitRevTab += bitRevFactor; - } -} - - - -/* -* @brief In-place bit reversal function. -* @param[in, out] *pSrc points to the in-place buffer of Q31 data type. -* @param[in] fftLen length of the FFT. -* @param[in] bitRevFactor bit reversal modifier that supports different size FFTs with the same bit reversal table -* @param[in] *pBitRevTab points to bit reversal table. -* @return none. -*/ - -void arm_bitreversal_q31( -q31_t * pSrc, -uint32_t fftLen, -uint16_t bitRevFactor, -uint16_t * pBitRevTable) -{ - uint32_t fftLenBy2, fftLenBy2p1, i, j; - q31_t in; - - /* Initializations */ - j = 0U; - fftLenBy2 = fftLen / 2U; - fftLenBy2p1 = (fftLen / 2U) + 1U; - - /* Bit Reversal Implementation */ - for (i = 0U; i <= (fftLenBy2 - 2U); i += 2U) - { - if (i < j) - { - /* pSrc[i] <-> pSrc[j]; */ - in = pSrc[2U * i]; - pSrc[2U * i] = pSrc[2U * j]; - pSrc[2U * j] = in; - - /* pSrc[i+1U] <-> pSrc[j+1U] */ - in = pSrc[(2U * i) + 1U]; - pSrc[(2U * i) + 1U] = pSrc[(2U * j) + 1U]; - pSrc[(2U * j) + 1U] = in; - - /* pSrc[i+fftLenBy2p1] <-> pSrc[j+fftLenBy2p1] */ - in = pSrc[2U * (i + fftLenBy2p1)]; - pSrc[2U * (i + fftLenBy2p1)] = pSrc[2U * (j + fftLenBy2p1)]; - pSrc[2U * (j + fftLenBy2p1)] = in; - - /* pSrc[i+fftLenBy2p1+1U] <-> pSrc[j+fftLenBy2p1+1U] */ - in = pSrc[(2U * (i + fftLenBy2p1)) + 1U]; - pSrc[(2U * (i + fftLenBy2p1)) + 1U] = - pSrc[(2U * (j + fftLenBy2p1)) + 1U]; - pSrc[(2U * (j + fftLenBy2p1)) + 1U] = in; - - } - - /* pSrc[i+1U] <-> pSrc[j+1U] */ - in = pSrc[2U * (i + 1U)]; - pSrc[2U * (i + 1U)] = pSrc[2U * (j + fftLenBy2)]; - pSrc[2U * (j + fftLenBy2)] = in; - - /* pSrc[i+2U] <-> pSrc[j+2U] */ - in = pSrc[(2U * (i + 1U)) + 1U]; - pSrc[(2U * (i + 1U)) + 1U] = pSrc[(2U * (j + fftLenBy2)) + 1U]; - pSrc[(2U * (j + fftLenBy2)) + 1U] = in; - - /* Reading the index for the bit reversal */ - j = *pBitRevTable; - - /* Updating the bit reversal index depending on the fft length */ - pBitRevTable += bitRevFactor; - } -} - - - -/* - * @brief In-place bit reversal function. - * @param[in, out] *pSrc points to the in-place buffer of Q15 data type. - * @param[in] fftLen length of the FFT. - * @param[in] bitRevFactor bit reversal modifier that supports different size FFTs with the same bit reversal table - * @param[in] *pBitRevTab points to bit reversal table. - * @return none. -*/ - -void arm_bitreversal_q15( -q15_t * pSrc16, -uint32_t fftLen, -uint16_t bitRevFactor, -uint16_t * pBitRevTab) -{ - q31_t *pSrc = (q31_t *) pSrc16; - q31_t in; - uint32_t fftLenBy2, fftLenBy2p1; - uint32_t i, j; - - /* Initializations */ - j = 0U; - fftLenBy2 = fftLen / 2U; - fftLenBy2p1 = (fftLen / 2U) + 1U; - - /* Bit Reversal Implementation */ - for (i = 0U; i <= (fftLenBy2 - 2U); i += 2U) - { - if (i < j) - { - /* pSrc[i] <-> pSrc[j]; */ - /* pSrc[i+1U] <-> pSrc[j+1U] */ - in = pSrc[i]; - pSrc[i] = pSrc[j]; - pSrc[j] = in; - - /* pSrc[i + fftLenBy2p1] <-> pSrc[j + fftLenBy2p1]; */ - /* pSrc[i + fftLenBy2p1+1U] <-> pSrc[j + fftLenBy2p1+1U] */ - in = pSrc[i + fftLenBy2p1]; - pSrc[i + fftLenBy2p1] = pSrc[j + fftLenBy2p1]; - pSrc[j + fftLenBy2p1] = in; - } - - /* pSrc[i+1U] <-> pSrc[j+fftLenBy2]; */ - /* pSrc[i+2] <-> pSrc[j+fftLenBy2+1U] */ - in = pSrc[i + 1U]; - pSrc[i + 1U] = pSrc[j + fftLenBy2]; - pSrc[j + fftLenBy2] = in; - - /* Reading the index for the bit reversal */ - j = *pBitRevTab; - - /* Updating the bit reversal index depending on the fft length */ - pBitRevTab += bitRevFactor; - } -} diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_bitreversal2.S b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_bitreversal2.S deleted file mode 100644 index e0a82db..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_bitreversal2.S +++ /dev/null @@ -1,216 +0,0 @@ -;/* ---------------------------------------------------------------------- -; * Project: CMSIS DSP Library -; * Title: arm_bitreversal2.S -; * Description: arm_bitreversal_32 function done in assembly for maximum speed. -; * Called after doing an fft to reorder the output. -; * The function is loop unrolled by 2. arm_bitreversal_16 as well. -; * -; * $Date: 27. January 2017 -; * $Revision: V.1.5.1 -; * -; * Target Processor: Cortex-M cores -; * -------------------------------------------------------------------- */ -;/* -; * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. -; * -; * SPDX-License-Identifier: Apache-2.0 -; * -; * Licensed under the Apache License, Version 2.0 (the License); you may -; * not use this file except in compliance with the License. -; * You may obtain a copy of the License at -; * -; * www.apache.org/licenses/LICENSE-2.0 -; * -; * Unless required by applicable law or agreed to in writing, software -; * distributed under the License is distributed on an AS IS BASIS, WITHOUT -; * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -; * See the License for the specific language governing permissions and -; * limitations under the License. -; */ - -#if defined ( __CC_ARM ) /* Keil */ - #define CODESECT AREA ||.text||, CODE, READONLY, ALIGN=2 - #define LABEL -#elif defined ( __IASMARM__ ) /* IAR */ - #define CODESECT SECTION `.text`:CODE - #define PROC - #define LABEL - #define ENDP - #define EXPORT PUBLIC -#elif defined ( __CSMC__ ) /* Cosmic */ - #define CODESECT switch .text - #define THUMB - #define EXPORT xdef - #define PROC : - #define LABEL : - #define ENDP - #define arm_bitreversal_32 _arm_bitreversal_32 -#elif defined ( __TI_ARM__ ) /* TI ARM */ - #define THUMB .thumb - #define CODESECT .text - #define EXPORT .global - #define PROC : .asmfunc - #define LABEL : - #define ENDP .endasmfunc - #define END -#elif defined ( __GNUC__ ) /* GCC */ - #define THUMB .thumb - #define CODESECT .section .text - #define EXPORT .global - #define PROC : - #define LABEL : - #define ENDP - #define END - - .syntax unified -#endif - - CODESECT - THUMB - -;/* -;* @brief In-place bit reversal function. -;* @param[in, out] *pSrc points to the in-place buffer of unknown 32-bit data type. -;* @param[in] bitRevLen bit reversal table length -;* @param[in] *pBitRevTab points to bit reversal table. -;* @return none. -;*/ - EXPORT arm_bitreversal_32 - EXPORT arm_bitreversal_16 - -#if defined ( __CC_ARM ) /* Keil */ -#elif defined ( __IASMARM__ ) /* IAR */ -#elif defined ( __CSMC__ ) /* Cosmic */ -#elif defined ( __TI_ARM__ ) /* TI ARM */ -#elif defined ( __GNUC__ ) /* GCC */ - .type arm_bitreversal_16, %function - .type arm_bitreversal_32, %function -#endif - -#if defined(ARM_MATH_CM0) || defined(ARM_MATH_CM0PLUS) || defined(ARM_MATH_ARMV8MBL) - -arm_bitreversal_32 PROC - ADDS r3,r1,#1 - PUSH {r4-r6} - ADDS r1,r2,#0 - LSRS r3,r3,#1 -arm_bitreversal_32_0 LABEL - LDRH r2,[r1,#2] - LDRH r6,[r1,#0] - ADD r2,r0,r2 - ADD r6,r0,r6 - LDR r5,[r2,#0] - LDR r4,[r6,#0] - STR r5,[r6,#0] - STR r4,[r2,#0] - LDR r5,[r2,#4] - LDR r4,[r6,#4] - STR r5,[r6,#4] - STR r4,[r2,#4] - ADDS r1,r1,#4 - SUBS r3,r3,#1 - BNE arm_bitreversal_32_0 - POP {r4-r6} - BX lr - ENDP - -arm_bitreversal_16 PROC - ADDS r3,r1,#1 - PUSH {r4-r6} - ADDS r1,r2,#0 - LSRS r3,r3,#1 -arm_bitreversal_16_0 LABEL - LDRH r2,[r1,#2] - LDRH r6,[r1,#0] - LSRS r2,r2,#1 - LSRS r6,r6,#1 - ADD r2,r0,r2 - ADD r6,r0,r6 - LDR r5,[r2,#0] - LDR r4,[r6,#0] - STR r5,[r6,#0] - STR r4,[r2,#0] - ADDS r1,r1,#4 - SUBS r3,r3,#1 - BNE arm_bitreversal_16_0 - POP {r4-r6} - BX lr - ENDP - -#else - -arm_bitreversal_32 PROC - ADDS r3,r1,#1 - CMP r3,#1 - IT LS - BXLS lr - PUSH {r4-r9} - ADDS r1,r2,#2 - LSRS r3,r3,#2 -arm_bitreversal_32_0 LABEL ;/* loop unrolled by 2 */ - LDRH r8,[r1,#4] - LDRH r9,[r1,#2] - LDRH r2,[r1,#0] - LDRH r12,[r1,#-2] - ADD r8,r0,r8 - ADD r9,r0,r9 - ADD r2,r0,r2 - ADD r12,r0,r12 - LDR r7,[r9,#0] - LDR r6,[r8,#0] - LDR r5,[r2,#0] - LDR r4,[r12,#0] - STR r6,[r9,#0] - STR r7,[r8,#0] - STR r5,[r12,#0] - STR r4,[r2,#0] - LDR r7,[r9,#4] - LDR r6,[r8,#4] - LDR r5,[r2,#4] - LDR r4,[r12,#4] - STR r6,[r9,#4] - STR r7,[r8,#4] - STR r5,[r12,#4] - STR r4,[r2,#4] - ADDS r1,r1,#8 - SUBS r3,r3,#1 - BNE arm_bitreversal_32_0 - POP {r4-r9} - BX lr - ENDP - -arm_bitreversal_16 PROC - ADDS r3,r1,#1 - CMP r3,#1 - IT LS - BXLS lr - PUSH {r4-r9} - ADDS r1,r2,#2 - LSRS r3,r3,#2 -arm_bitreversal_16_0 LABEL ;/* loop unrolled by 2 */ - LDRH r8,[r1,#4] - LDRH r9,[r1,#2] - LDRH r2,[r1,#0] - LDRH r12,[r1,#-2] - ADD r8,r0,r8,LSR #1 - ADD r9,r0,r9,LSR #1 - ADD r2,r0,r2,LSR #1 - ADD r12,r0,r12,LSR #1 - LDR r7,[r9,#0] - LDR r6,[r8,#0] - LDR r5,[r2,#0] - LDR r4,[r12,#0] - STR r6,[r9,#0] - STR r7,[r8,#0] - STR r5,[r12,#0] - STR r4,[r2,#0] - ADDS r1,r1,#8 - SUBS r3,r3,#1 - BNE arm_bitreversal_16_0 - POP {r4-r9} - BX lr - ENDP - -#endif - - END diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_f32.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_f32.c deleted file mode 100644 index 4abb6f5..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_f32.c +++ /dev/null @@ -1,620 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_cfft_f32.c - * Description: Combined Radix Decimation in Frequency CFFT Floating point processing function - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" -#include "arm_common_tables.h" - -extern void arm_radix8_butterfly_f32( - float32_t * pSrc, - uint16_t fftLen, - const float32_t * pCoef, - uint16_t twidCoefModifier); - -extern void arm_bitreversal_32( - uint32_t * pSrc, - const uint16_t bitRevLen, - const uint16_t * pBitRevTable); - -/** -* @ingroup groupTransforms -*/ - -/** -* @defgroup ComplexFFT Complex FFT Functions -* -* \par -* The Fast Fourier Transform (FFT) is an efficient algorithm for computing the -* Discrete Fourier Transform (DFT). The FFT can be orders of magnitude faster -* than the DFT, especially for long lengths. -* The algorithms described in this section -* operate on complex data. A separate set of functions is devoted to handling -* of real sequences. -* \par -* There are separate algorithms for handling floating-point, Q15, and Q31 data -* types. The algorithms available for each data type are described next. -* \par -* The FFT functions operate in-place. That is, the array holding the input data -* will also be used to hold the corresponding result. The input data is complex -* and contains 2*fftLen interleaved values as shown below. -*
 {real[0], imag[0], real[1], imag[1],..} 
-* The FFT result will be contained in the same array and the frequency domain -* values will have the same interleaving. -* -* \par Floating-point -* The floating-point complex FFT uses a mixed-radix algorithm. Multiple radix-8 -* stages are performed along with a single radix-2 or radix-4 stage, as needed. -* The algorithm supports lengths of [16, 32, 64, ..., 4096] and each length uses -* a different twiddle factor table. -* \par -* The function uses the standard FFT definition and output values may grow by a -* factor of fftLen when computing the forward transform. The -* inverse transform includes a scale of 1/fftLen as part of the -* calculation and this matches the textbook definition of the inverse FFT. -* \par -* Pre-initialized data structures containing twiddle factors and bit reversal -* tables are provided and defined in arm_const_structs.h. Include -* this header in your function and then pass one of the constant structures as -* an argument to arm_cfft_f32. For example: -* \par -* arm_cfft_f32(arm_cfft_sR_f32_len64, pSrc, 1, 1) -* \par -* computes a 64-point inverse complex FFT including bit reversal. -* The data structures are treated as constant data and not modified during the -* calculation. The same data structure can be reused for multiple transforms -* including mixing forward and inverse transforms. -* \par -* Earlier releases of the library provided separate radix-2 and radix-4 -* algorithms that operated on floating-point data. These functions are still -* provided but are deprecated. The older functions are slower and less general -* than the new functions. -* \par -* An example of initialization of the constants for the arm_cfft_f32 function follows: -* \code -* const static arm_cfft_instance_f32 *S; -* ... -* switch (length) { -* case 16: -* S = &arm_cfft_sR_f32_len16; -* break; -* case 32: -* S = &arm_cfft_sR_f32_len32; -* break; -* case 64: -* S = &arm_cfft_sR_f32_len64; -* break; -* case 128: -* S = &arm_cfft_sR_f32_len128; -* break; -* case 256: -* S = &arm_cfft_sR_f32_len256; -* break; -* case 512: -* S = &arm_cfft_sR_f32_len512; -* break; -* case 1024: -* S = &arm_cfft_sR_f32_len1024; -* break; -* case 2048: -* S = &arm_cfft_sR_f32_len2048; -* break; -* case 4096: -* S = &arm_cfft_sR_f32_len4096; -* break; -* } -* \endcode -* \par Q15 and Q31 -* The floating-point complex FFT uses a mixed-radix algorithm. Multiple radix-4 -* stages are performed along with a single radix-2 stage, as needed. -* The algorithm supports lengths of [16, 32, 64, ..., 4096] and each length uses -* a different twiddle factor table. -* \par -* The function uses the standard FFT definition and output values may grow by a -* factor of fftLen when computing the forward transform. The -* inverse transform includes a scale of 1/fftLen as part of the -* calculation and this matches the textbook definition of the inverse FFT. -* \par -* Pre-initialized data structures containing twiddle factors and bit reversal -* tables are provided and defined in arm_const_structs.h. Include -* this header in your function and then pass one of the constant structures as -* an argument to arm_cfft_q31. For example: -* \par -* arm_cfft_q31(arm_cfft_sR_q31_len64, pSrc, 1, 1) -* \par -* computes a 64-point inverse complex FFT including bit reversal. -* The data structures are treated as constant data and not modified during the -* calculation. The same data structure can be reused for multiple transforms -* including mixing forward and inverse transforms. -* \par -* Earlier releases of the library provided separate radix-2 and radix-4 -* algorithms that operated on floating-point data. These functions are still -* provided but are deprecated. The older functions are slower and less general -* than the new functions. -* \par -* An example of initialization of the constants for the arm_cfft_q31 function follows: -* \code -* const static arm_cfft_instance_q31 *S; -* ... -* switch (length) { -* case 16: -* S = &arm_cfft_sR_q31_len16; -* break; -* case 32: -* S = &arm_cfft_sR_q31_len32; -* break; -* case 64: -* S = &arm_cfft_sR_q31_len64; -* break; -* case 128: -* S = &arm_cfft_sR_q31_len128; -* break; -* case 256: -* S = &arm_cfft_sR_q31_len256; -* break; -* case 512: -* S = &arm_cfft_sR_q31_len512; -* break; -* case 1024: -* S = &arm_cfft_sR_q31_len1024; -* break; -* case 2048: -* S = &arm_cfft_sR_q31_len2048; -* break; -* case 4096: -* S = &arm_cfft_sR_q31_len4096; -* break; -* } -* \endcode -* -*/ - -void arm_cfft_radix8by2_f32( arm_cfft_instance_f32 * S, float32_t * p1) -{ - uint32_t L = S->fftLen; - float32_t * pCol1, * pCol2, * pMid1, * pMid2; - float32_t * p2 = p1 + L; - const float32_t * tw = (float32_t *) S->pTwiddle; - float32_t t1[4], t2[4], t3[4], t4[4], twR, twI; - float32_t m0, m1, m2, m3; - uint32_t l; - - pCol1 = p1; - pCol2 = p2; - - // Define new length - L >>= 1; - // Initialize mid pointers - pMid1 = p1 + L; - pMid2 = p2 + L; - - // do two dot Fourier transform - for ( l = L >> 2; l > 0; l-- ) - { - t1[0] = p1[0]; - t1[1] = p1[1]; - t1[2] = p1[2]; - t1[3] = p1[3]; - - t2[0] = p2[0]; - t2[1] = p2[1]; - t2[2] = p2[2]; - t2[3] = p2[3]; - - t3[0] = pMid1[0]; - t3[1] = pMid1[1]; - t3[2] = pMid1[2]; - t3[3] = pMid1[3]; - - t4[0] = pMid2[0]; - t4[1] = pMid2[1]; - t4[2] = pMid2[2]; - t4[3] = pMid2[3]; - - *p1++ = t1[0] + t2[0]; - *p1++ = t1[1] + t2[1]; - *p1++ = t1[2] + t2[2]; - *p1++ = t1[3] + t2[3]; // col 1 - - t2[0] = t1[0] - t2[0]; - t2[1] = t1[1] - t2[1]; - t2[2] = t1[2] - t2[2]; - t2[3] = t1[3] - t2[3]; // for col 2 - - *pMid1++ = t3[0] + t4[0]; - *pMid1++ = t3[1] + t4[1]; - *pMid1++ = t3[2] + t4[2]; - *pMid1++ = t3[3] + t4[3]; // col 1 - - t4[0] = t4[0] - t3[0]; - t4[1] = t4[1] - t3[1]; - t4[2] = t4[2] - t3[2]; - t4[3] = t4[3] - t3[3]; // for col 2 - - twR = *tw++; - twI = *tw++; - - // multiply by twiddle factors - m0 = t2[0] * twR; - m1 = t2[1] * twI; - m2 = t2[1] * twR; - m3 = t2[0] * twI; - - // R = R * Tr - I * Ti - *p2++ = m0 + m1; - // I = I * Tr + R * Ti - *p2++ = m2 - m3; - - // use vertical symmetry - // 0.9988 - 0.0491i <==> -0.0491 - 0.9988i - m0 = t4[0] * twI; - m1 = t4[1] * twR; - m2 = t4[1] * twI; - m3 = t4[0] * twR; - - *pMid2++ = m0 - m1; - *pMid2++ = m2 + m3; - - twR = *tw++; - twI = *tw++; - - m0 = t2[2] * twR; - m1 = t2[3] * twI; - m2 = t2[3] * twR; - m3 = t2[2] * twI; - - *p2++ = m0 + m1; - *p2++ = m2 - m3; - - m0 = t4[2] * twI; - m1 = t4[3] * twR; - m2 = t4[3] * twI; - m3 = t4[2] * twR; - - *pMid2++ = m0 - m1; - *pMid2++ = m2 + m3; - } - - // first col - arm_radix8_butterfly_f32( pCol1, L, (float32_t *) S->pTwiddle, 2U); - // second col - arm_radix8_butterfly_f32( pCol2, L, (float32_t *) S->pTwiddle, 2U); -} - -void arm_cfft_radix8by4_f32( arm_cfft_instance_f32 * S, float32_t * p1) -{ - uint32_t L = S->fftLen >> 1; - float32_t * pCol1, *pCol2, *pCol3, *pCol4, *pEnd1, *pEnd2, *pEnd3, *pEnd4; - const float32_t *tw2, *tw3, *tw4; - float32_t * p2 = p1 + L; - float32_t * p3 = p2 + L; - float32_t * p4 = p3 + L; - float32_t t2[4], t3[4], t4[4], twR, twI; - float32_t p1ap3_0, p1sp3_0, p1ap3_1, p1sp3_1; - float32_t m0, m1, m2, m3; - uint32_t l, twMod2, twMod3, twMod4; - - pCol1 = p1; // points to real values by default - pCol2 = p2; - pCol3 = p3; - pCol4 = p4; - pEnd1 = p2 - 1; // points to imaginary values by default - pEnd2 = p3 - 1; - pEnd3 = p4 - 1; - pEnd4 = pEnd3 + L; - - tw2 = tw3 = tw4 = (float32_t *) S->pTwiddle; - - L >>= 1; - - // do four dot Fourier transform - - twMod2 = 2; - twMod3 = 4; - twMod4 = 6; - - // TOP - p1ap3_0 = p1[0] + p3[0]; - p1sp3_0 = p1[0] - p3[0]; - p1ap3_1 = p1[1] + p3[1]; - p1sp3_1 = p1[1] - p3[1]; - - // col 2 - t2[0] = p1sp3_0 + p2[1] - p4[1]; - t2[1] = p1sp3_1 - p2[0] + p4[0]; - // col 3 - t3[0] = p1ap3_0 - p2[0] - p4[0]; - t3[1] = p1ap3_1 - p2[1] - p4[1]; - // col 4 - t4[0] = p1sp3_0 - p2[1] + p4[1]; - t4[1] = p1sp3_1 + p2[0] - p4[0]; - // col 1 - *p1++ = p1ap3_0 + p2[0] + p4[0]; - *p1++ = p1ap3_1 + p2[1] + p4[1]; - - // Twiddle factors are ones - *p2++ = t2[0]; - *p2++ = t2[1]; - *p3++ = t3[0]; - *p3++ = t3[1]; - *p4++ = t4[0]; - *p4++ = t4[1]; - - tw2 += twMod2; - tw3 += twMod3; - tw4 += twMod4; - - for (l = (L - 2) >> 1; l > 0; l-- ) - { - // TOP - p1ap3_0 = p1[0] + p3[0]; - p1sp3_0 = p1[0] - p3[0]; - p1ap3_1 = p1[1] + p3[1]; - p1sp3_1 = p1[1] - p3[1]; - // col 2 - t2[0] = p1sp3_0 + p2[1] - p4[1]; - t2[1] = p1sp3_1 - p2[0] + p4[0]; - // col 3 - t3[0] = p1ap3_0 - p2[0] - p4[0]; - t3[1] = p1ap3_1 - p2[1] - p4[1]; - // col 4 - t4[0] = p1sp3_0 - p2[1] + p4[1]; - t4[1] = p1sp3_1 + p2[0] - p4[0]; - // col 1 - top - *p1++ = p1ap3_0 + p2[0] + p4[0]; - *p1++ = p1ap3_1 + p2[1] + p4[1]; - - // BOTTOM - p1ap3_1 = pEnd1[-1] + pEnd3[-1]; - p1sp3_1 = pEnd1[-1] - pEnd3[-1]; - p1ap3_0 = pEnd1[0] + pEnd3[0]; - p1sp3_0 = pEnd1[0] - pEnd3[0]; - // col 2 - t2[2] = pEnd2[0] - pEnd4[0] + p1sp3_1; - t2[3] = pEnd1[0] - pEnd3[0] - pEnd2[-1] + pEnd4[-1]; - // col 3 - t3[2] = p1ap3_1 - pEnd2[-1] - pEnd4[-1]; - t3[3] = p1ap3_0 - pEnd2[0] - pEnd4[0]; - // col 4 - t4[2] = pEnd2[0] - pEnd4[0] - p1sp3_1; - t4[3] = pEnd4[-1] - pEnd2[-1] - p1sp3_0; - // col 1 - Bottom - *pEnd1-- = p1ap3_0 + pEnd2[0] + pEnd4[0]; - *pEnd1-- = p1ap3_1 + pEnd2[-1] + pEnd4[-1]; - - // COL 2 - // read twiddle factors - twR = *tw2++; - twI = *tw2++; - // multiply by twiddle factors - // let Z1 = a + i(b), Z2 = c + i(d) - // => Z1 * Z2 = (a*c - b*d) + i(b*c + a*d) - - // Top - m0 = t2[0] * twR; - m1 = t2[1] * twI; - m2 = t2[1] * twR; - m3 = t2[0] * twI; - - *p2++ = m0 + m1; - *p2++ = m2 - m3; - // use vertical symmetry col 2 - // 0.9997 - 0.0245i <==> 0.0245 - 0.9997i - // Bottom - m0 = t2[3] * twI; - m1 = t2[2] * twR; - m2 = t2[2] * twI; - m3 = t2[3] * twR; - - *pEnd2-- = m0 - m1; - *pEnd2-- = m2 + m3; - - // COL 3 - twR = tw3[0]; - twI = tw3[1]; - tw3 += twMod3; - // Top - m0 = t3[0] * twR; - m1 = t3[1] * twI; - m2 = t3[1] * twR; - m3 = t3[0] * twI; - - *p3++ = m0 + m1; - *p3++ = m2 - m3; - // use vertical symmetry col 3 - // 0.9988 - 0.0491i <==> -0.9988 - 0.0491i - // Bottom - m0 = -t3[3] * twR; - m1 = t3[2] * twI; - m2 = t3[2] * twR; - m3 = t3[3] * twI; - - *pEnd3-- = m0 - m1; - *pEnd3-- = m3 - m2; - - // COL 4 - twR = tw4[0]; - twI = tw4[1]; - tw4 += twMod4; - // Top - m0 = t4[0] * twR; - m1 = t4[1] * twI; - m2 = t4[1] * twR; - m3 = t4[0] * twI; - - *p4++ = m0 + m1; - *p4++ = m2 - m3; - // use vertical symmetry col 4 - // 0.9973 - 0.0736i <==> -0.0736 + 0.9973i - // Bottom - m0 = t4[3] * twI; - m1 = t4[2] * twR; - m2 = t4[2] * twI; - m3 = t4[3] * twR; - - *pEnd4-- = m0 - m1; - *pEnd4-- = m2 + m3; - } - - //MIDDLE - // Twiddle factors are - // 1.0000 0.7071-0.7071i -1.0000i -0.7071-0.7071i - p1ap3_0 = p1[0] + p3[0]; - p1sp3_0 = p1[0] - p3[0]; - p1ap3_1 = p1[1] + p3[1]; - p1sp3_1 = p1[1] - p3[1]; - - // col 2 - t2[0] = p1sp3_0 + p2[1] - p4[1]; - t2[1] = p1sp3_1 - p2[0] + p4[0]; - // col 3 - t3[0] = p1ap3_0 - p2[0] - p4[0]; - t3[1] = p1ap3_1 - p2[1] - p4[1]; - // col 4 - t4[0] = p1sp3_0 - p2[1] + p4[1]; - t4[1] = p1sp3_1 + p2[0] - p4[0]; - // col 1 - Top - *p1++ = p1ap3_0 + p2[0] + p4[0]; - *p1++ = p1ap3_1 + p2[1] + p4[1]; - - // COL 2 - twR = tw2[0]; - twI = tw2[1]; - - m0 = t2[0] * twR; - m1 = t2[1] * twI; - m2 = t2[1] * twR; - m3 = t2[0] * twI; - - *p2++ = m0 + m1; - *p2++ = m2 - m3; - // COL 3 - twR = tw3[0]; - twI = tw3[1]; - - m0 = t3[0] * twR; - m1 = t3[1] * twI; - m2 = t3[1] * twR; - m3 = t3[0] * twI; - - *p3++ = m0 + m1; - *p3++ = m2 - m3; - // COL 4 - twR = tw4[0]; - twI = tw4[1]; - - m0 = t4[0] * twR; - m1 = t4[1] * twI; - m2 = t4[1] * twR; - m3 = t4[0] * twI; - - *p4++ = m0 + m1; - *p4++ = m2 - m3; - - // first col - arm_radix8_butterfly_f32( pCol1, L, (float32_t *) S->pTwiddle, 4U); - // second col - arm_radix8_butterfly_f32( pCol2, L, (float32_t *) S->pTwiddle, 4U); - // third col - arm_radix8_butterfly_f32( pCol3, L, (float32_t *) S->pTwiddle, 4U); - // fourth col - arm_radix8_butterfly_f32( pCol4, L, (float32_t *) S->pTwiddle, 4U); -} - -/** -* @addtogroup ComplexFFT -* @{ -*/ - -/** -* @details -* @brief Processing function for the floating-point complex FFT. -* @param[in] *S points to an instance of the floating-point CFFT structure. -* @param[in, out] *p1 points to the complex data buffer of size 2*fftLen. Processing occurs in-place. -* @param[in] ifftFlag flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. -* @param[in] bitReverseFlag flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. -* @return none. -*/ - -void arm_cfft_f32( - const arm_cfft_instance_f32 * S, - float32_t * p1, - uint8_t ifftFlag, - uint8_t bitReverseFlag) -{ - uint32_t L = S->fftLen, l; - float32_t invL, * pSrc; - - if (ifftFlag == 1U) - { - /* Conjugate input data */ - pSrc = p1 + 1; - for(l=0; lpTwiddle, 1); - break; - } - - if ( bitReverseFlag ) - arm_bitreversal_32((uint32_t*)p1,S->bitRevLength,S->pBitRevTable); - - if (ifftFlag == 1U) - { - invL = 1.0f/(float32_t)L; - /* Conjugate and scale output data */ - pSrc = p1; - for(l=0; l2*fftLen. Processing occurs in-place. -* @param[in] ifftFlag flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. -* @param[in] bitReverseFlag flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. -* @return none. -*/ - -void arm_cfft_q15( - const arm_cfft_instance_q15 * S, - q15_t * p1, - uint8_t ifftFlag, - uint8_t bitReverseFlag) -{ - uint32_t L = S->fftLen; - - if (ifftFlag == 1U) - { - switch (L) - { - case 16: - case 64: - case 256: - case 1024: - case 4096: - arm_radix4_butterfly_inverse_q15 ( p1, L, (q15_t*)S->pTwiddle, 1 ); - break; - - case 32: - case 128: - case 512: - case 2048: - arm_cfft_radix4by2_inverse_q15 ( p1, L, S->pTwiddle ); - break; - } - } - else - { - switch (L) - { - case 16: - case 64: - case 256: - case 1024: - case 4096: - arm_radix4_butterfly_q15 ( p1, L, (q15_t*)S->pTwiddle, 1 ); - break; - - case 32: - case 128: - case 512: - case 2048: - arm_cfft_radix4by2_q15 ( p1, L, S->pTwiddle ); - break; - } - } - - if ( bitReverseFlag ) - arm_bitreversal_16((uint16_t*)p1,S->bitRevLength,S->pBitRevTable); -} - -/** -* @} end of ComplexFFT group -*/ - -void arm_cfft_radix4by2_q15( - q15_t * pSrc, - uint32_t fftLen, - const q15_t * pCoef) -{ - uint32_t i; - uint32_t n2; - q15_t p0, p1, p2, p3; -#if defined (ARM_MATH_DSP) - q31_t T, S, R; - q31_t coeff, out1, out2; - const q15_t *pC = pCoef; - q15_t *pSi = pSrc; - q15_t *pSl = pSrc + fftLen; -#else - uint32_t ia, l; - q15_t xt, yt, cosVal, sinVal; -#endif - - n2 = fftLen >> 1; - -#if defined (ARM_MATH_DSP) - - for (i = n2; i > 0; i--) - { - coeff = _SIMD32_OFFSET(pC); - pC += 2; - - T = _SIMD32_OFFSET(pSi); - T = __SHADD16(T, 0); // this is just a SIMD arithmetic shift right by 1 - - S = _SIMD32_OFFSET(pSl); - S = __SHADD16(S, 0); // this is just a SIMD arithmetic shift right by 1 - - R = __QSUB16(T, S); - - _SIMD32_OFFSET(pSi) = __SHADD16(T, S); - pSi += 2; - - #ifndef ARM_MATH_BIG_ENDIAN - - out1 = __SMUAD(coeff, R) >> 16; - out2 = __SMUSDX(coeff, R); - - #else - - out1 = __SMUSDX(R, coeff) >> 16U; - out2 = __SMUAD(coeff, R); - - #endif // #ifndef ARM_MATH_BIG_ENDIAN - - _SIMD32_OFFSET(pSl) = - (q31_t) ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF); - pSl += 2; - } - -#else // #if defined (ARM_MATH_DSP) - - ia = 0; - for (i = 0; i < n2; i++) - { - cosVal = pCoef[ia * 2]; - sinVal = pCoef[(ia * 2) + 1]; - ia++; - - l = i + n2; - - xt = (pSrc[2 * i] >> 1U) - (pSrc[2 * l] >> 1U); - pSrc[2 * i] = ((pSrc[2 * i] >> 1U) + (pSrc[2 * l] >> 1U)) >> 1U; - - yt = (pSrc[2 * i + 1] >> 1U) - (pSrc[2 * l + 1] >> 1U); - pSrc[2 * i + 1] = - ((pSrc[2 * l + 1] >> 1U) + (pSrc[2 * i + 1] >> 1U)) >> 1U; - - pSrc[2U * l] = (((int16_t) (((q31_t) xt * cosVal) >> 16)) + - ((int16_t) (((q31_t) yt * sinVal) >> 16))); - - pSrc[2U * l + 1U] = (((int16_t) (((q31_t) yt * cosVal) >> 16)) - - ((int16_t) (((q31_t) xt * sinVal) >> 16))); - } - -#endif // #if defined (ARM_MATH_DSP) - - // first col - arm_radix4_butterfly_q15( pSrc, n2, (q15_t*)pCoef, 2U); - // second col - arm_radix4_butterfly_q15( pSrc + fftLen, n2, (q15_t*)pCoef, 2U); - - for (i = 0; i < fftLen >> 1; i++) - { - p0 = pSrc[4*i+0]; - p1 = pSrc[4*i+1]; - p2 = pSrc[4*i+2]; - p3 = pSrc[4*i+3]; - - p0 <<= 1; - p1 <<= 1; - p2 <<= 1; - p3 <<= 1; - - pSrc[4*i+0] = p0; - pSrc[4*i+1] = p1; - pSrc[4*i+2] = p2; - pSrc[4*i+3] = p3; - } -} - -void arm_cfft_radix4by2_inverse_q15( - q15_t * pSrc, - uint32_t fftLen, - const q15_t * pCoef) -{ - uint32_t i; - uint32_t n2; - q15_t p0, p1, p2, p3; -#if defined (ARM_MATH_DSP) - q31_t T, S, R; - q31_t coeff, out1, out2; - const q15_t *pC = pCoef; - q15_t *pSi = pSrc; - q15_t *pSl = pSrc + fftLen; -#else - uint32_t ia, l; - q15_t xt, yt, cosVal, sinVal; -#endif - - n2 = fftLen >> 1; - -#if defined (ARM_MATH_DSP) - - for (i = n2; i > 0; i--) - { - coeff = _SIMD32_OFFSET(pC); - pC += 2; - - T = _SIMD32_OFFSET(pSi); - T = __SHADD16(T, 0); // this is just a SIMD arithmetic shift right by 1 - - S = _SIMD32_OFFSET(pSl); - S = __SHADD16(S, 0); // this is just a SIMD arithmetic shift right by 1 - - R = __QSUB16(T, S); - - _SIMD32_OFFSET(pSi) = __SHADD16(T, S); - pSi += 2; - - #ifndef ARM_MATH_BIG_ENDIAN - - out1 = __SMUSD(coeff, R) >> 16; - out2 = __SMUADX(coeff, R); - #else - - out1 = __SMUADX(R, coeff) >> 16U; - out2 = __SMUSD(__QSUB(0, coeff), R); - - #endif // #ifndef ARM_MATH_BIG_ENDIAN - - _SIMD32_OFFSET(pSl) = - (q31_t) ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF); - pSl += 2; - } - -#else // #if defined (ARM_MATH_DSP) - - ia = 0; - for (i = 0; i < n2; i++) - { - cosVal = pCoef[ia * 2]; - sinVal = pCoef[(ia * 2) + 1]; - ia++; - - l = i + n2; - xt = (pSrc[2 * i] >> 1U) - (pSrc[2 * l] >> 1U); - pSrc[2 * i] = ((pSrc[2 * i] >> 1U) + (pSrc[2 * l] >> 1U)) >> 1U; - - yt = (pSrc[2 * i + 1] >> 1U) - (pSrc[2 * l + 1] >> 1U); - pSrc[2 * i + 1] = - ((pSrc[2 * l + 1] >> 1U) + (pSrc[2 * i + 1] >> 1U)) >> 1U; - - pSrc[2U * l] = (((int16_t) (((q31_t) xt * cosVal) >> 16)) - - ((int16_t) (((q31_t) yt * sinVal) >> 16))); - - pSrc[2U * l + 1U] = (((int16_t) (((q31_t) yt * cosVal) >> 16)) + - ((int16_t) (((q31_t) xt * sinVal) >> 16))); - } - -#endif // #if defined (ARM_MATH_DSP) - - // first col - arm_radix4_butterfly_inverse_q15( pSrc, n2, (q15_t*)pCoef, 2U); - // second col - arm_radix4_butterfly_inverse_q15( pSrc + fftLen, n2, (q15_t*)pCoef, 2U); - - for (i = 0; i < fftLen >> 1; i++) - { - p0 = pSrc[4*i+0]; - p1 = pSrc[4*i+1]; - p2 = pSrc[4*i+2]; - p3 = pSrc[4*i+3]; - - p0 <<= 1; - p1 <<= 1; - p2 <<= 1; - p3 <<= 1; - - pSrc[4*i+0] = p0; - pSrc[4*i+1] = p1; - pSrc[4*i+2] = p2; - pSrc[4*i+3] = p3; - } -} - diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_q31.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_q31.c deleted file mode 100644 index ff4ff94..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_q31.c +++ /dev/null @@ -1,252 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_cfft_q31.c - * Description: Combined Radix Decimation in Frequency CFFT fixed point processing function - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -extern void arm_radix4_butterfly_q31( - q31_t * pSrc, - uint32_t fftLen, - q31_t * pCoef, - uint32_t twidCoefModifier); - -extern void arm_radix4_butterfly_inverse_q31( - q31_t * pSrc, - uint32_t fftLen, - q31_t * pCoef, - uint32_t twidCoefModifier); - -extern void arm_bitreversal_32( - uint32_t * pSrc, - const uint16_t bitRevLen, - const uint16_t * pBitRevTable); - -void arm_cfft_radix4by2_q31( - q31_t * pSrc, - uint32_t fftLen, - const q31_t * pCoef); - -void arm_cfft_radix4by2_inverse_q31( - q31_t * pSrc, - uint32_t fftLen, - const q31_t * pCoef); - -/** -* @ingroup groupTransforms -*/ - -/** -* @addtogroup ComplexFFT -* @{ -*/ - -/** -* @details -* @brief Processing function for the fixed-point complex FFT in Q31 format. -* @param[in] *S points to an instance of the fixed-point CFFT structure. -* @param[in, out] *p1 points to the complex data buffer of size 2*fftLen. Processing occurs in-place. -* @param[in] ifftFlag flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. -* @param[in] bitReverseFlag flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. -* @return none. -*/ - -void arm_cfft_q31( - const arm_cfft_instance_q31 * S, - q31_t * p1, - uint8_t ifftFlag, - uint8_t bitReverseFlag) -{ - uint32_t L = S->fftLen; - - if (ifftFlag == 1U) - { - switch (L) - { - case 16: - case 64: - case 256: - case 1024: - case 4096: - arm_radix4_butterfly_inverse_q31 ( p1, L, (q31_t*)S->pTwiddle, 1 ); - break; - - case 32: - case 128: - case 512: - case 2048: - arm_cfft_radix4by2_inverse_q31 ( p1, L, S->pTwiddle ); - break; - } - } - else - { - switch (L) - { - case 16: - case 64: - case 256: - case 1024: - case 4096: - arm_radix4_butterfly_q31 ( p1, L, (q31_t*)S->pTwiddle, 1 ); - break; - - case 32: - case 128: - case 512: - case 2048: - arm_cfft_radix4by2_q31 ( p1, L, S->pTwiddle ); - break; - } - } - - if ( bitReverseFlag ) - arm_bitreversal_32((uint32_t*)p1,S->bitRevLength,S->pBitRevTable); -} - -/** -* @} end of ComplexFFT group -*/ - -void arm_cfft_radix4by2_q31( - q31_t * pSrc, - uint32_t fftLen, - const q31_t * pCoef) -{ - uint32_t i, l; - uint32_t n2, ia; - q31_t xt, yt, cosVal, sinVal; - q31_t p0, p1; - - n2 = fftLen >> 1; - ia = 0; - for (i = 0; i < n2; i++) - { - cosVal = pCoef[2*ia]; - sinVal = pCoef[2*ia + 1]; - ia++; - - l = i + n2; - xt = (pSrc[2 * i] >> 2) - (pSrc[2 * l] >> 2); - pSrc[2 * i] = (pSrc[2 * i] >> 2) + (pSrc[2 * l] >> 2); - - yt = (pSrc[2 * i + 1] >> 2) - (pSrc[2 * l + 1] >> 2); - pSrc[2 * i + 1] = (pSrc[2 * l + 1] >> 2) + (pSrc[2 * i + 1] >> 2); - - mult_32x32_keep32_R(p0, xt, cosVal); - mult_32x32_keep32_R(p1, yt, cosVal); - multAcc_32x32_keep32_R(p0, yt, sinVal); - multSub_32x32_keep32_R(p1, xt, sinVal); - - pSrc[2U * l] = p0 << 1; - pSrc[2U * l + 1U] = p1 << 1; - - } - - // first col - arm_radix4_butterfly_q31( pSrc, n2, (q31_t*)pCoef, 2U); - // second col - arm_radix4_butterfly_q31( pSrc + fftLen, n2, (q31_t*)pCoef, 2U); - - for (i = 0; i < fftLen >> 1; i++) - { - p0 = pSrc[4*i+0]; - p1 = pSrc[4*i+1]; - xt = pSrc[4*i+2]; - yt = pSrc[4*i+3]; - - p0 <<= 1; - p1 <<= 1; - xt <<= 1; - yt <<= 1; - - pSrc[4*i+0] = p0; - pSrc[4*i+1] = p1; - pSrc[4*i+2] = xt; - pSrc[4*i+3] = yt; - } - -} - -void arm_cfft_radix4by2_inverse_q31( - q31_t * pSrc, - uint32_t fftLen, - const q31_t * pCoef) -{ - uint32_t i, l; - uint32_t n2, ia; - q31_t xt, yt, cosVal, sinVal; - q31_t p0, p1; - - n2 = fftLen >> 1; - ia = 0; - for (i = 0; i < n2; i++) - { - cosVal = pCoef[2*ia]; - sinVal = pCoef[2*ia + 1]; - ia++; - - l = i + n2; - xt = (pSrc[2 * i] >> 2) - (pSrc[2 * l] >> 2); - pSrc[2 * i] = (pSrc[2 * i] >> 2) + (pSrc[2 * l] >> 2); - - yt = (pSrc[2 * i + 1] >> 2) - (pSrc[2 * l + 1] >> 2); - pSrc[2 * i + 1] = (pSrc[2 * l + 1] >> 2) + (pSrc[2 * i + 1] >> 2); - - mult_32x32_keep32_R(p0, xt, cosVal); - mult_32x32_keep32_R(p1, yt, cosVal); - multSub_32x32_keep32_R(p0, yt, sinVal); - multAcc_32x32_keep32_R(p1, xt, sinVal); - - pSrc[2U * l] = p0 << 1; - pSrc[2U * l + 1U] = p1 << 1; - - } - - // first col - arm_radix4_butterfly_inverse_q31( pSrc, n2, (q31_t*)pCoef, 2U); - // second col - arm_radix4_butterfly_inverse_q31( pSrc + fftLen, n2, (q31_t*)pCoef, 2U); - - for (i = 0; i < fftLen >> 1; i++) - { - p0 = pSrc[4*i+0]; - p1 = pSrc[4*i+1]; - xt = pSrc[4*i+2]; - yt = pSrc[4*i+3]; - - p0 <<= 1; - p1 <<= 1; - xt <<= 1; - yt <<= 1; - - pSrc[4*i+0] = p0; - pSrc[4*i+1] = p1; - pSrc[4*i+2] = xt; - pSrc[4*i+3] = yt; - } -} - diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix2_f32.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix2_f32.c deleted file mode 100644 index d35988d..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix2_f32.c +++ /dev/null @@ -1,472 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_cfft_radix2_f32.c - * Description: Radix-2 Decimation in Frequency CFFT & CIFFT Floating point processing function - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -void arm_radix2_butterfly_f32( - float32_t * pSrc, - uint32_t fftLen, - float32_t * pCoef, - uint16_t twidCoefModifier); - -void arm_radix2_butterfly_inverse_f32( - float32_t * pSrc, - uint32_t fftLen, - float32_t * pCoef, - uint16_t twidCoefModifier, - float32_t onebyfftLen); - -extern void arm_bitreversal_f32( - float32_t * pSrc, - uint16_t fftSize, - uint16_t bitRevFactor, - uint16_t * pBitRevTab); - -/** -* @ingroup groupTransforms -*/ - -/** -* @addtogroup ComplexFFT -* @{ -*/ - -/** -* @details -* @brief Radix-2 CFFT/CIFFT. -* @deprecated Do not use this function. It has been superseded by \ref arm_cfft_f32 and will be removed -* in the future. -* @param[in] *S points to an instance of the floating-point Radix-2 CFFT/CIFFT structure. -* @param[in, out] *pSrc points to the complex data buffer of size 2*fftLen. Processing occurs in-place. -* @return none. -*/ - -void arm_cfft_radix2_f32( -const arm_cfft_radix2_instance_f32 * S, -float32_t * pSrc) -{ - - if (S->ifftFlag == 1U) - { - /* Complex IFFT radix-2 */ - arm_radix2_butterfly_inverse_f32(pSrc, S->fftLen, S->pTwiddle, - S->twidCoefModifier, S->onebyfftLen); - } - else - { - /* Complex FFT radix-2 */ - arm_radix2_butterfly_f32(pSrc, S->fftLen, S->pTwiddle, - S->twidCoefModifier); - } - - if (S->bitReverseFlag == 1U) - { - /* Bit Reversal */ - arm_bitreversal_f32(pSrc, S->fftLen, S->bitRevFactor, S->pBitRevTable); - } - -} - - -/** -* @} end of ComplexFFT group -*/ - - - -/* ---------------------------------------------------------------------- -** Internal helper function used by the FFTs -** ------------------------------------------------------------------- */ - -/* -* @brief Core function for the floating-point CFFT butterfly process. -* @param[in, out] *pSrc points to the in-place buffer of floating-point data type. -* @param[in] fftLen length of the FFT. -* @param[in] *pCoef points to the twiddle coefficient buffer. -* @param[in] twidCoefModifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. -* @return none. -*/ - -void arm_radix2_butterfly_f32( -float32_t * pSrc, -uint32_t fftLen, -float32_t * pCoef, -uint16_t twidCoefModifier) -{ - - uint32_t i, j, k, l; - uint32_t n1, n2, ia; - float32_t xt, yt, cosVal, sinVal; - float32_t p0, p1, p2, p3; - float32_t a0, a1; - -#if defined (ARM_MATH_DSP) - - /* Initializations for the first stage */ - n2 = fftLen >> 1; - ia = 0; - i = 0; - - // loop for groups - for (k = n2; k > 0; k--) - { - cosVal = pCoef[ia * 2]; - sinVal = pCoef[(ia * 2) + 1]; - - /* Twiddle coefficients index modifier */ - ia += twidCoefModifier; - - /* index calculation for the input as, */ - /* pSrc[i + 0], pSrc[i + fftLen/1] */ - l = i + n2; - - /* Butterfly implementation */ - a0 = pSrc[2 * i] + pSrc[2 * l]; - xt = pSrc[2 * i] - pSrc[2 * l]; - - yt = pSrc[2 * i + 1] - pSrc[2 * l + 1]; - a1 = pSrc[2 * l + 1] + pSrc[2 * i + 1]; - - p0 = xt * cosVal; - p1 = yt * sinVal; - p2 = yt * cosVal; - p3 = xt * sinVal; - - pSrc[2 * i] = a0; - pSrc[2 * i + 1] = a1; - - pSrc[2 * l] = p0 + p1; - pSrc[2 * l + 1] = p2 - p3; - - i++; - } // groups loop end - - twidCoefModifier <<= 1U; - - // loop for stage - for (k = n2; k > 2; k = k >> 1) - { - n1 = n2; - n2 = n2 >> 1; - ia = 0; - - // loop for groups - j = 0; - do - { - cosVal = pCoef[ia * 2]; - sinVal = pCoef[(ia * 2) + 1]; - ia += twidCoefModifier; - - // loop for butterfly - i = j; - do - { - l = i + n2; - a0 = pSrc[2 * i] + pSrc[2 * l]; - xt = pSrc[2 * i] - pSrc[2 * l]; - - yt = pSrc[2 * i + 1] - pSrc[2 * l + 1]; - a1 = pSrc[2 * l + 1] + pSrc[2 * i + 1]; - - p0 = xt * cosVal; - p1 = yt * sinVal; - p2 = yt * cosVal; - p3 = xt * sinVal; - - pSrc[2 * i] = a0; - pSrc[2 * i + 1] = a1; - - pSrc[2 * l] = p0 + p1; - pSrc[2 * l + 1] = p2 - p3; - - i += n1; - } while ( i < fftLen ); // butterfly loop end - j++; - } while ( j < n2); // groups loop end - twidCoefModifier <<= 1U; - } // stages loop end - - // loop for butterfly - for (i = 0; i < fftLen; i += 2) - { - a0 = pSrc[2 * i] + pSrc[2 * i + 2]; - xt = pSrc[2 * i] - pSrc[2 * i + 2]; - - yt = pSrc[2 * i + 1] - pSrc[2 * i + 3]; - a1 = pSrc[2 * i + 3] + pSrc[2 * i + 1]; - - pSrc[2 * i] = a0; - pSrc[2 * i + 1] = a1; - pSrc[2 * i + 2] = xt; - pSrc[2 * i + 3] = yt; - } // groups loop end - -#else - - n2 = fftLen; - - // loop for stage - for (k = fftLen; k > 1; k = k >> 1) - { - n1 = n2; - n2 = n2 >> 1; - ia = 0; - - // loop for groups - j = 0; - do - { - cosVal = pCoef[ia * 2]; - sinVal = pCoef[(ia * 2) + 1]; - ia += twidCoefModifier; - - // loop for butterfly - i = j; - do - { - l = i + n2; - a0 = pSrc[2 * i] + pSrc[2 * l]; - xt = pSrc[2 * i] - pSrc[2 * l]; - - yt = pSrc[2 * i + 1] - pSrc[2 * l + 1]; - a1 = pSrc[2 * l + 1] + pSrc[2 * i + 1]; - - p0 = xt * cosVal; - p1 = yt * sinVal; - p2 = yt * cosVal; - p3 = xt * sinVal; - - pSrc[2 * i] = a0; - pSrc[2 * i + 1] = a1; - - pSrc[2 * l] = p0 + p1; - pSrc[2 * l + 1] = p2 - p3; - - i += n1; - } while (i < fftLen); - j++; - } while (j < n2); - twidCoefModifier <<= 1U; - } - -#endif // #if defined (ARM_MATH_DSP) - -} - - -void arm_radix2_butterfly_inverse_f32( -float32_t * pSrc, -uint32_t fftLen, -float32_t * pCoef, -uint16_t twidCoefModifier, -float32_t onebyfftLen) -{ - - uint32_t i, j, k, l; - uint32_t n1, n2, ia; - float32_t xt, yt, cosVal, sinVal; - float32_t p0, p1, p2, p3; - float32_t a0, a1; - -#if defined (ARM_MATH_DSP) - - n2 = fftLen >> 1; - ia = 0; - - // loop for groups - for (i = 0; i < n2; i++) - { - cosVal = pCoef[ia * 2]; - sinVal = pCoef[(ia * 2) + 1]; - ia += twidCoefModifier; - - l = i + n2; - a0 = pSrc[2 * i] + pSrc[2 * l]; - xt = pSrc[2 * i] - pSrc[2 * l]; - - yt = pSrc[2 * i + 1] - pSrc[2 * l + 1]; - a1 = pSrc[2 * l + 1] + pSrc[2 * i + 1]; - - p0 = xt * cosVal; - p1 = yt * sinVal; - p2 = yt * cosVal; - p3 = xt * sinVal; - - pSrc[2 * i] = a0; - pSrc[2 * i + 1] = a1; - - pSrc[2 * l] = p0 - p1; - pSrc[2 * l + 1] = p2 + p3; - } // groups loop end - - twidCoefModifier <<= 1U; - - // loop for stage - for (k = fftLen / 2; k > 2; k = k >> 1) - { - n1 = n2; - n2 = n2 >> 1; - ia = 0; - - // loop for groups - j = 0; - do - { - cosVal = pCoef[ia * 2]; - sinVal = pCoef[(ia * 2) + 1]; - ia += twidCoefModifier; - - // loop for butterfly - i = j; - do - { - l = i + n2; - a0 = pSrc[2 * i] + pSrc[2 * l]; - xt = pSrc[2 * i] - pSrc[2 * l]; - - yt = pSrc[2 * i + 1] - pSrc[2 * l + 1]; - a1 = pSrc[2 * l + 1] + pSrc[2 * i + 1]; - - p0 = xt * cosVal; - p1 = yt * sinVal; - p2 = yt * cosVal; - p3 = xt * sinVal; - - pSrc[2 * i] = a0; - pSrc[2 * i + 1] = a1; - - pSrc[2 * l] = p0 - p1; - pSrc[2 * l + 1] = p2 + p3; - - i += n1; - } while ( i < fftLen ); // butterfly loop end - j++; - } while (j < n2); // groups loop end - - twidCoefModifier <<= 1U; - } // stages loop end - - // loop for butterfly - for (i = 0; i < fftLen; i += 2) - { - a0 = pSrc[2 * i] + pSrc[2 * i + 2]; - xt = pSrc[2 * i] - pSrc[2 * i + 2]; - - a1 = pSrc[2 * i + 3] + pSrc[2 * i + 1]; - yt = pSrc[2 * i + 1] - pSrc[2 * i + 3]; - - p0 = a0 * onebyfftLen; - p2 = xt * onebyfftLen; - p1 = a1 * onebyfftLen; - p3 = yt * onebyfftLen; - - pSrc[2 * i] = p0; - pSrc[2 * i + 1] = p1; - pSrc[2 * i + 2] = p2; - pSrc[2 * i + 3] = p3; - } // butterfly loop end - -#else - - n2 = fftLen; - - // loop for stage - for (k = fftLen; k > 2; k = k >> 1) - { - n1 = n2; - n2 = n2 >> 1; - ia = 0; - - // loop for groups - j = 0; - do - { - cosVal = pCoef[ia * 2]; - sinVal = pCoef[(ia * 2) + 1]; - ia = ia + twidCoefModifier; - - // loop for butterfly - i = j; - do - { - l = i + n2; - a0 = pSrc[2 * i] + pSrc[2 * l]; - xt = pSrc[2 * i] - pSrc[2 * l]; - - yt = pSrc[2 * i + 1] - pSrc[2 * l + 1]; - a1 = pSrc[2 * l + 1] + pSrc[2 * i + 1]; - - p0 = xt * cosVal; - p1 = yt * sinVal; - p2 = yt * cosVal; - p3 = xt * sinVal; - - pSrc[2 * i] = a0; - pSrc[2 * i + 1] = a1; - - pSrc[2 * l] = p0 - p1; - pSrc[2 * l + 1] = p2 + p3; - - i += n1; - } while ( i < fftLen ); // butterfly loop end - j++; - } while ( j < n2 ); // groups loop end - - twidCoefModifier = twidCoefModifier << 1U; - } // stages loop end - - n1 = n2; - n2 = n2 >> 1; - - // loop for butterfly - for (i = 0; i < fftLen; i += n1) - { - l = i + n2; - - a0 = pSrc[2 * i] + pSrc[2 * l]; - xt = pSrc[2 * i] - pSrc[2 * l]; - - a1 = pSrc[2 * l + 1] + pSrc[2 * i + 1]; - yt = pSrc[2 * i + 1] - pSrc[2 * l + 1]; - - p0 = a0 * onebyfftLen; - p2 = xt * onebyfftLen; - p1 = a1 * onebyfftLen; - p3 = yt * onebyfftLen; - - pSrc[2 * i] = p0; - pSrc[2U * l] = p2; - - pSrc[2 * i + 1] = p1; - pSrc[2U * l + 1U] = p3; - } // butterfly loop end - -#endif // #if defined (ARM_MATH_DSP) - -} diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix2_init_f32.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix2_init_f32.c deleted file mode 100644 index fdfa63e..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix2_init_f32.c +++ /dev/null @@ -1,192 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_cfft_radix2_init_f32.c - * Description: Radix-2 Decimation in Frequency Floating-point CFFT & CIFFT Initialization function - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" -#include "arm_common_tables.h" - -/** - * @ingroup groupTransforms - */ - -/** - * @addtogroup ComplexFFT - * @{ - */ - -/** -* @brief Initialization function for the floating-point CFFT/CIFFT. -* @deprecated Do not use this function. It has been superseded by \ref arm_cfft_f32 and will be removed -* in the future. -* @param[in,out] *S points to an instance of the floating-point CFFT/CIFFT structure. -* @param[in] fftLen length of the FFT. -* @param[in] ifftFlag flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. -* @param[in] bitReverseFlag flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. -* @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if fftLen is not a supported value. -* -* \par Description: -* \par -* The parameter ifftFlag controls whether a forward or inverse transform is computed. -* Set(=1) ifftFlag for calculation of CIFFT otherwise CFFT is calculated -* \par -* The parameter bitReverseFlag controls whether output is in normal order or bit reversed order. -* Set(=1) bitReverseFlag for output to be in normal order otherwise output is in bit reversed order. -* \par -* The parameter fftLen Specifies length of CFFT/CIFFT process. Supported FFT Lengths are 16, 64, 256, 1024. -* \par -* This Function also initializes Twiddle factor table pointer and Bit reversal table pointer. -*/ -arm_status arm_cfft_radix2_init_f32( - arm_cfft_radix2_instance_f32 * S, - uint16_t fftLen, - uint8_t ifftFlag, - uint8_t bitReverseFlag) -{ - /* Initialise the default arm status */ - arm_status status = ARM_MATH_SUCCESS; - - /* Initialise the FFT length */ - S->fftLen = fftLen; - - /* Initialise the Twiddle coefficient pointer */ - S->pTwiddle = (float32_t *) twiddleCoef; - - /* Initialise the Flag for selection of CFFT or CIFFT */ - S->ifftFlag = ifftFlag; - - /* Initialise the Flag for calculation Bit reversal or not */ - S->bitReverseFlag = bitReverseFlag; - - /* Initializations of structure parameters depending on the FFT length */ - switch (S->fftLen) - { - - case 4096U: - /* Initializations of structure parameters for 4096 point FFT */ - - /* Initialise the twiddle coef modifier value */ - S->twidCoefModifier = 1U; - /* Initialise the bit reversal table modifier */ - S->bitRevFactor = 1U; - /* Initialise the bit reversal table pointer */ - S->pBitRevTable = (uint16_t *) armBitRevTable; - /* Initialise the 1/fftLen Value */ - S->onebyfftLen = 0.000244140625; - break; - - case 2048U: - /* Initializations of structure parameters for 2048 point FFT */ - - /* Initialise the twiddle coef modifier value */ - S->twidCoefModifier = 2U; - /* Initialise the bit reversal table modifier */ - S->bitRevFactor = 2U; - /* Initialise the bit reversal table pointer */ - S->pBitRevTable = (uint16_t *) & armBitRevTable[1]; - /* Initialise the 1/fftLen Value */ - S->onebyfftLen = 0.00048828125; - break; - - case 1024U: - /* Initializations of structure parameters for 1024 point FFT */ - - /* Initialise the twiddle coef modifier value */ - S->twidCoefModifier = 4U; - /* Initialise the bit reversal table modifier */ - S->bitRevFactor = 4U; - /* Initialise the bit reversal table pointer */ - S->pBitRevTable = (uint16_t *) & armBitRevTable[3]; - /* Initialise the 1/fftLen Value */ - S->onebyfftLen = 0.0009765625f; - break; - - case 512U: - /* Initializations of structure parameters for 512 point FFT */ - - /* Initialise the twiddle coef modifier value */ - S->twidCoefModifier = 8U; - /* Initialise the bit reversal table modifier */ - S->bitRevFactor = 8U; - /* Initialise the bit reversal table pointer */ - S->pBitRevTable = (uint16_t *) & armBitRevTable[7]; - /* Initialise the 1/fftLen Value */ - S->onebyfftLen = 0.001953125; - break; - - case 256U: - /* Initializations of structure parameters for 256 point FFT */ - S->twidCoefModifier = 16U; - S->bitRevFactor = 16U; - S->pBitRevTable = (uint16_t *) & armBitRevTable[15]; - S->onebyfftLen = 0.00390625f; - break; - - case 128U: - /* Initializations of structure parameters for 128 point FFT */ - S->twidCoefModifier = 32U; - S->bitRevFactor = 32U; - S->pBitRevTable = (uint16_t *) & armBitRevTable[31]; - S->onebyfftLen = 0.0078125; - break; - - case 64U: - /* Initializations of structure parameters for 64 point FFT */ - S->twidCoefModifier = 64U; - S->bitRevFactor = 64U; - S->pBitRevTable = (uint16_t *) & armBitRevTable[63]; - S->onebyfftLen = 0.015625f; - break; - - case 32U: - /* Initializations of structure parameters for 64 point FFT */ - S->twidCoefModifier = 128U; - S->bitRevFactor = 128U; - S->pBitRevTable = (uint16_t *) & armBitRevTable[127]; - S->onebyfftLen = 0.03125; - break; - - case 16U: - /* Initializations of structure parameters for 16 point FFT */ - S->twidCoefModifier = 256U; - S->bitRevFactor = 256U; - S->pBitRevTable = (uint16_t *) & armBitRevTable[255]; - S->onebyfftLen = 0.0625f; - break; - - - default: - /* Reporting argument error if fftSize is not valid value */ - status = ARM_MATH_ARGUMENT_ERROR; - break; - } - - return (status); -} - -/** - * @} end of ComplexFFT group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix2_init_q15.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix2_init_q15.c deleted file mode 100644 index 2646374..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix2_init_q15.c +++ /dev/null @@ -1,177 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_cfft_radix2_init_q15.c - * Description: Radix-2 Decimation in Frequency Q15 FFT & IFFT initialization function - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" -#include "arm_common_tables.h" - -/** - * @ingroup groupTransforms - */ - - -/** - * @addtogroup ComplexFFT - * @{ - */ - -/** -* @brief Initialization function for the Q15 CFFT/CIFFT. -* @deprecated Do not use this function. It has been superseded by \ref arm_cfft_q15 and will be removed -* @param[in,out] *S points to an instance of the Q15 CFFT/CIFFT structure. -* @param[in] fftLen length of the FFT. -* @param[in] ifftFlag flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. -* @param[in] bitReverseFlag flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. -* @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if fftLen is not a supported value. -* -* \par Description: -* \par -* The parameter ifftFlag controls whether a forward or inverse transform is computed. -* Set(=1) ifftFlag for calculation of CIFFT otherwise CFFT is calculated -* \par -* The parameter bitReverseFlag controls whether output is in normal order or bit reversed order. -* Set(=1) bitReverseFlag for output to be in normal order otherwise output is in bit reversed order. -* \par -* The parameter fftLen Specifies length of CFFT/CIFFT process. Supported FFT Lengths are 16, 64, 256, 1024. -* \par -* This Function also initializes Twiddle factor table pointer and Bit reversal table pointer. -*/ - -arm_status arm_cfft_radix2_init_q15( - arm_cfft_radix2_instance_q15 * S, - uint16_t fftLen, - uint8_t ifftFlag, - uint8_t bitReverseFlag) -{ - /* Initialise the default arm status */ - arm_status status = ARM_MATH_SUCCESS; - - /* Initialise the FFT length */ - S->fftLen = fftLen; - - /* Initialise the Twiddle coefficient pointer */ - S->pTwiddle = (q15_t *) twiddleCoef_4096_q15; - /* Initialise the Flag for selection of CFFT or CIFFT */ - S->ifftFlag = ifftFlag; - /* Initialise the Flag for calculation Bit reversal or not */ - S->bitReverseFlag = bitReverseFlag; - - /* Initializations of structure parameters depending on the FFT length */ - switch (S->fftLen) - { - case 4096U: - /* Initializations of structure parameters for 4096 point FFT */ - - /* Initialise the twiddle coef modifier value */ - S->twidCoefModifier = 1U; - /* Initialise the bit reversal table modifier */ - S->bitRevFactor = 1U; - /* Initialise the bit reversal table pointer */ - S->pBitRevTable = (uint16_t *) armBitRevTable; - - break; - - case 2048U: - /* Initializations of structure parameters for 2048 point FFT */ - - /* Initialise the twiddle coef modifier value */ - S->twidCoefModifier = 2U; - /* Initialise the bit reversal table modifier */ - S->bitRevFactor = 2U; - /* Initialise the bit reversal table pointer */ - S->pBitRevTable = (uint16_t *) & armBitRevTable[1]; - - break; - - case 1024U: - /* Initializations of structure parameters for 1024 point FFT */ - S->twidCoefModifier = 4U; - S->bitRevFactor = 4U; - S->pBitRevTable = (uint16_t *) & armBitRevTable[3]; - - break; - - case 512U: - /* Initializations of structure parameters for 512 point FFT */ - S->twidCoefModifier = 8U; - S->bitRevFactor = 8U; - S->pBitRevTable = (uint16_t *) & armBitRevTable[7]; - - break; - - case 256U: - /* Initializations of structure parameters for 256 point FFT */ - S->twidCoefModifier = 16U; - S->bitRevFactor = 16U; - S->pBitRevTable = (uint16_t *) & armBitRevTable[15]; - - break; - - case 128U: - /* Initializations of structure parameters for 128 point FFT */ - S->twidCoefModifier = 32U; - S->bitRevFactor = 32U; - S->pBitRevTable = (uint16_t *) & armBitRevTable[31]; - - break; - - case 64U: - /* Initializations of structure parameters for 64 point FFT */ - S->twidCoefModifier = 64U; - S->bitRevFactor = 64U; - S->pBitRevTable = (uint16_t *) & armBitRevTable[63]; - - break; - - case 32U: - /* Initializations of structure parameters for 32 point FFT */ - S->twidCoefModifier = 128U; - S->bitRevFactor = 128U; - S->pBitRevTable = (uint16_t *) & armBitRevTable[127]; - - break; - - case 16U: - /* Initializations of structure parameters for 16 point FFT */ - S->twidCoefModifier = 256U; - S->bitRevFactor = 256U; - S->pBitRevTable = (uint16_t *) & armBitRevTable[255]; - - break; - - default: - /* Reporting argument error if fftSize is not valid value */ - status = ARM_MATH_ARGUMENT_ERROR; - break; - } - - return (status); -} - -/** - * @} end of ComplexFFT group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix2_init_q31.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix2_init_q31.c deleted file mode 100644 index 56fff4b..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix2_init_q31.c +++ /dev/null @@ -1,174 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_cfft_radix2_init_q31.c - * Description: Radix-2 Decimation in Frequency Fixed-point CFFT & CIFFT Initialization function - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" -#include "arm_common_tables.h" - -/** - * @ingroup groupTransforms - */ - -/** - * @addtogroup ComplexFFT - * @{ - */ - - -/** -* -* @brief Initialization function for the Q31 CFFT/CIFFT. -* @deprecated Do not use this function. It has been superseded by \ref arm_cfft_q31 and will be removed -* @param[in,out] *S points to an instance of the Q31 CFFT/CIFFT structure. -* @param[in] fftLen length of the FFT. -* @param[in] ifftFlag flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. -* @param[in] bitReverseFlag flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. -* @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if fftLen is not a supported value. -* -* \par Description: -* \par -* The parameter ifftFlag controls whether a forward or inverse transform is computed. -* Set(=1) ifftFlag for calculation of CIFFT otherwise CFFT is calculated -* \par -* The parameter bitReverseFlag controls whether output is in normal order or bit reversed order. -* Set(=1) bitReverseFlag for output to be in normal order otherwise output is in bit reversed order. -* \par -* The parameter fftLen Specifies length of CFFT/CIFFT process. Supported FFT Lengths are 16, 64, 256, 1024. -* \par -* This Function also initializes Twiddle factor table pointer and Bit reversal table pointer. -*/ - -arm_status arm_cfft_radix2_init_q31( - arm_cfft_radix2_instance_q31 * S, - uint16_t fftLen, - uint8_t ifftFlag, - uint8_t bitReverseFlag) -{ - /* Initialise the default arm status */ - arm_status status = ARM_MATH_SUCCESS; - - /* Initialise the FFT length */ - S->fftLen = fftLen; - - /* Initialise the Twiddle coefficient pointer */ - S->pTwiddle = (q31_t *) twiddleCoef_4096_q31; - /* Initialise the Flag for selection of CFFT or CIFFT */ - S->ifftFlag = ifftFlag; - /* Initialise the Flag for calculation Bit reversal or not */ - S->bitReverseFlag = bitReverseFlag; - - /* Initializations of Instance structure depending on the FFT length */ - switch (S->fftLen) - { - /* Initializations of structure parameters for 4096 point FFT */ - case 4096U: - /* Initialise the twiddle coef modifier value */ - S->twidCoefModifier = 1U; - /* Initialise the bit reversal table modifier */ - S->bitRevFactor = 1U; - /* Initialise the bit reversal table pointer */ - S->pBitRevTable = (uint16_t *) armBitRevTable; - break; - - /* Initializations of structure parameters for 2048 point FFT */ - case 2048U: - /* Initialise the twiddle coef modifier value */ - S->twidCoefModifier = 2U; - /* Initialise the bit reversal table modifier */ - S->bitRevFactor = 2U; - /* Initialise the bit reversal table pointer */ - S->pBitRevTable = (uint16_t *) & armBitRevTable[1]; - break; - - /* Initializations of structure parameters for 1024 point FFT */ - case 1024U: - /* Initialise the twiddle coef modifier value */ - S->twidCoefModifier = 4U; - /* Initialise the bit reversal table modifier */ - S->bitRevFactor = 4U; - /* Initialise the bit reversal table pointer */ - S->pBitRevTable = (uint16_t *) & armBitRevTable[3]; - break; - - /* Initializations of structure parameters for 512 point FFT */ - case 512U: - /* Initialise the twiddle coef modifier value */ - S->twidCoefModifier = 8U; - /* Initialise the bit reversal table modifier */ - S->bitRevFactor = 8U; - /* Initialise the bit reversal table pointer */ - S->pBitRevTable = (uint16_t *) & armBitRevTable[7]; - break; - - case 256U: - /* Initializations of structure parameters for 256 point FFT */ - S->twidCoefModifier = 16U; - S->bitRevFactor = 16U; - S->pBitRevTable = (uint16_t *) & armBitRevTable[15]; - break; - - case 128U: - /* Initializations of structure parameters for 128 point FFT */ - S->twidCoefModifier = 32U; - S->bitRevFactor = 32U; - S->pBitRevTable = (uint16_t *) & armBitRevTable[31]; - break; - - case 64U: - /* Initializations of structure parameters for 64 point FFT */ - S->twidCoefModifier = 64U; - S->bitRevFactor = 64U; - S->pBitRevTable = (uint16_t *) & armBitRevTable[63]; - break; - - case 32U: - /* Initializations of structure parameters for 32 point FFT */ - S->twidCoefModifier = 128U; - S->bitRevFactor = 128U; - S->pBitRevTable = (uint16_t *) & armBitRevTable[127]; - break; - - case 16U: - /* Initializations of structure parameters for 16 point FFT */ - S->twidCoefModifier = 256U; - S->bitRevFactor = 256U; - S->pBitRevTable = (uint16_t *) & armBitRevTable[255]; - break; - - - default: - /* Reporting argument error if fftSize is not valid value */ - status = ARM_MATH_ARGUMENT_ERROR; - break; - } - - return (status); -} - -/** - * @} end of ComplexFFT group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix2_q15.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix2_q15.c deleted file mode 100644 index 8880ab9..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix2_q15.c +++ /dev/null @@ -1,729 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_cfft_radix2_q15.c - * Description: Radix-2 Decimation in Frequency CFFT & CIFFT Fixed point processing function - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -void arm_radix2_butterfly_q15( - q15_t * pSrc, - uint32_t fftLen, - q15_t * pCoef, - uint16_t twidCoefModifier); - -void arm_radix2_butterfly_inverse_q15( - q15_t * pSrc, - uint32_t fftLen, - q15_t * pCoef, - uint16_t twidCoefModifier); - -void arm_bitreversal_q15( - q15_t * pSrc, - uint32_t fftLen, - uint16_t bitRevFactor, - uint16_t * pBitRevTab); - -/** - * @ingroup groupTransforms - */ - -/** - * @addtogroup ComplexFFT - * @{ - */ - -/** - * @details - * @brief Processing function for the fixed-point CFFT/CIFFT. - * @deprecated Do not use this function. It has been superseded by \ref arm_cfft_q15 and will be removed - * @param[in] *S points to an instance of the fixed-point CFFT/CIFFT structure. - * @param[in, out] *pSrc points to the complex data buffer of size 2*fftLen. Processing occurs in-place. - * @return none. - */ - -void arm_cfft_radix2_q15( - const arm_cfft_radix2_instance_q15 * S, - q15_t * pSrc) -{ - - if (S->ifftFlag == 1U) - { - arm_radix2_butterfly_inverse_q15(pSrc, S->fftLen, - S->pTwiddle, S->twidCoefModifier); - } - else - { - arm_radix2_butterfly_q15(pSrc, S->fftLen, - S->pTwiddle, S->twidCoefModifier); - } - - arm_bitreversal_q15(pSrc, S->fftLen, S->bitRevFactor, S->pBitRevTable); -} - -/** - * @} end of ComplexFFT group - */ - -void arm_radix2_butterfly_q15( - q15_t * pSrc, - uint32_t fftLen, - q15_t * pCoef, - uint16_t twidCoefModifier) -{ -#if defined (ARM_MATH_DSP) - - unsigned i, j, k, l; - unsigned n1, n2, ia; - q15_t in; - q31_t T, S, R; - q31_t coeff, out1, out2; - - //N = fftLen; - n2 = fftLen; - - n1 = n2; - n2 = n2 >> 1; - ia = 0; - - // loop for groups - for (i = 0; i < n2; i++) - { - coeff = _SIMD32_OFFSET(pCoef + (ia * 2U)); - - ia = ia + twidCoefModifier; - - l = i + n2; - - T = _SIMD32_OFFSET(pSrc + (2 * i)); - in = ((int16_t) (T & 0xFFFF)) >> 1; - T = ((T >> 1) & 0xFFFF0000) | (in & 0xFFFF); - - S = _SIMD32_OFFSET(pSrc + (2 * l)); - in = ((int16_t) (S & 0xFFFF)) >> 1; - S = ((S >> 1) & 0xFFFF0000) | (in & 0xFFFF); - - R = __QSUB16(T, S); - - _SIMD32_OFFSET(pSrc + (2 * i)) = __SHADD16(T, S); - -#ifndef ARM_MATH_BIG_ENDIAN - - out1 = __SMUAD(coeff, R) >> 16; - out2 = __SMUSDX(coeff, R); - -#else - - out1 = __SMUSDX(R, coeff) >> 16U; - out2 = __SMUAD(coeff, R); - -#endif // #ifndef ARM_MATH_BIG_ENDIAN - - _SIMD32_OFFSET(pSrc + (2U * l)) = - (q31_t) ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF); - - coeff = _SIMD32_OFFSET(pCoef + (ia * 2U)); - - ia = ia + twidCoefModifier; - - // loop for butterfly - i++; - l++; - - T = _SIMD32_OFFSET(pSrc + (2 * i)); - in = ((int16_t) (T & 0xFFFF)) >> 1; - T = ((T >> 1) & 0xFFFF0000) | (in & 0xFFFF); - - S = _SIMD32_OFFSET(pSrc + (2 * l)); - in = ((int16_t) (S & 0xFFFF)) >> 1; - S = ((S >> 1) & 0xFFFF0000) | (in & 0xFFFF); - - R = __QSUB16(T, S); - - _SIMD32_OFFSET(pSrc + (2 * i)) = __SHADD16(T, S); - -#ifndef ARM_MATH_BIG_ENDIAN - - out1 = __SMUAD(coeff, R) >> 16; - out2 = __SMUSDX(coeff, R); - -#else - - out1 = __SMUSDX(R, coeff) >> 16U; - out2 = __SMUAD(coeff, R); - -#endif // #ifndef ARM_MATH_BIG_ENDIAN - - _SIMD32_OFFSET(pSrc + (2U * l)) = - (q31_t) ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF); - - } // groups loop end - - twidCoefModifier = twidCoefModifier << 1U; - - // loop for stage - for (k = fftLen / 2; k > 2; k = k >> 1) - { - n1 = n2; - n2 = n2 >> 1; - ia = 0; - - // loop for groups - for (j = 0; j < n2; j++) - { - coeff = _SIMD32_OFFSET(pCoef + (ia * 2U)); - - ia = ia + twidCoefModifier; - - // loop for butterfly - for (i = j; i < fftLen; i += n1) - { - l = i + n2; - - T = _SIMD32_OFFSET(pSrc + (2 * i)); - - S = _SIMD32_OFFSET(pSrc + (2 * l)); - - R = __QSUB16(T, S); - - _SIMD32_OFFSET(pSrc + (2 * i)) = __SHADD16(T, S); - -#ifndef ARM_MATH_BIG_ENDIAN - - out1 = __SMUAD(coeff, R) >> 16; - out2 = __SMUSDX(coeff, R); - -#else - - out1 = __SMUSDX(R, coeff) >> 16U; - out2 = __SMUAD(coeff, R); - -#endif // #ifndef ARM_MATH_BIG_ENDIAN - - _SIMD32_OFFSET(pSrc + (2U * l)) = - (q31_t) ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF); - - i += n1; - - l = i + n2; - - T = _SIMD32_OFFSET(pSrc + (2 * i)); - - S = _SIMD32_OFFSET(pSrc + (2 * l)); - - R = __QSUB16(T, S); - - _SIMD32_OFFSET(pSrc + (2 * i)) = __SHADD16(T, S); - -#ifndef ARM_MATH_BIG_ENDIAN - - out1 = __SMUAD(coeff, R) >> 16; - out2 = __SMUSDX(coeff, R); - -#else - - out1 = __SMUSDX(R, coeff) >> 16U; - out2 = __SMUAD(coeff, R); - -#endif // #ifndef ARM_MATH_BIG_ENDIAN - - _SIMD32_OFFSET(pSrc + (2U * l)) = - (q31_t) ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF); - - } // butterfly loop end - - } // groups loop end - - twidCoefModifier = twidCoefModifier << 1U; - } // stages loop end - - n1 = n2; - n2 = n2 >> 1; - ia = 0; - - coeff = _SIMD32_OFFSET(pCoef + (ia * 2U)); - - ia = ia + twidCoefModifier; - - // loop for butterfly - for (i = 0; i < fftLen; i += n1) - { - l = i + n2; - - T = _SIMD32_OFFSET(pSrc + (2 * i)); - - S = _SIMD32_OFFSET(pSrc + (2 * l)); - - R = __QSUB16(T, S); - - _SIMD32_OFFSET(pSrc + (2 * i)) = __QADD16(T, S); - - _SIMD32_OFFSET(pSrc + (2U * l)) = R; - - i += n1; - l = i + n2; - - T = _SIMD32_OFFSET(pSrc + (2 * i)); - - S = _SIMD32_OFFSET(pSrc + (2 * l)); - - R = __QSUB16(T, S); - - _SIMD32_OFFSET(pSrc + (2 * i)) = __QADD16(T, S); - - _SIMD32_OFFSET(pSrc + (2U * l)) = R; - - } // groups loop end - - -#else - - unsigned i, j, k, l; - unsigned n1, n2, ia; - q15_t xt, yt, cosVal, sinVal; - - - //N = fftLen; - n2 = fftLen; - - n1 = n2; - n2 = n2 >> 1; - ia = 0; - - // loop for groups - for (j = 0; j < n2; j++) - { - cosVal = pCoef[ia * 2]; - sinVal = pCoef[(ia * 2) + 1]; - ia = ia + twidCoefModifier; - - // loop for butterfly - for (i = j; i < fftLen; i += n1) - { - l = i + n2; - xt = (pSrc[2 * i] >> 1U) - (pSrc[2 * l] >> 1U); - pSrc[2 * i] = ((pSrc[2 * i] >> 1U) + (pSrc[2 * l] >> 1U)) >> 1U; - - yt = (pSrc[2 * i + 1] >> 1U) - (pSrc[2 * l + 1] >> 1U); - pSrc[2 * i + 1] = - ((pSrc[2 * l + 1] >> 1U) + (pSrc[2 * i + 1] >> 1U)) >> 1U; - - pSrc[2U * l] = (((int16_t) (((q31_t) xt * cosVal) >> 16)) + - ((int16_t) (((q31_t) yt * sinVal) >> 16))); - - pSrc[2U * l + 1U] = (((int16_t) (((q31_t) yt * cosVal) >> 16)) - - ((int16_t) (((q31_t) xt * sinVal) >> 16))); - - } // butterfly loop end - - } // groups loop end - - twidCoefModifier = twidCoefModifier << 1U; - - // loop for stage - for (k = fftLen / 2; k > 2; k = k >> 1) - { - n1 = n2; - n2 = n2 >> 1; - ia = 0; - - // loop for groups - for (j = 0; j < n2; j++) - { - cosVal = pCoef[ia * 2]; - sinVal = pCoef[(ia * 2) + 1]; - ia = ia + twidCoefModifier; - - // loop for butterfly - for (i = j; i < fftLen; i += n1) - { - l = i + n2; - xt = pSrc[2 * i] - pSrc[2 * l]; - pSrc[2 * i] = (pSrc[2 * i] + pSrc[2 * l]) >> 1U; - - yt = pSrc[2 * i + 1] - pSrc[2 * l + 1]; - pSrc[2 * i + 1] = (pSrc[2 * l + 1] + pSrc[2 * i + 1]) >> 1U; - - pSrc[2U * l] = (((int16_t) (((q31_t) xt * cosVal) >> 16)) + - ((int16_t) (((q31_t) yt * sinVal) >> 16))); - - pSrc[2U * l + 1U] = (((int16_t) (((q31_t) yt * cosVal) >> 16)) - - ((int16_t) (((q31_t) xt * sinVal) >> 16))); - - } // butterfly loop end - - } // groups loop end - - twidCoefModifier = twidCoefModifier << 1U; - } // stages loop end - - n1 = n2; - n2 = n2 >> 1; - ia = 0; - - // loop for groups - for (j = 0; j < n2; j++) - { - cosVal = pCoef[ia * 2]; - sinVal = pCoef[(ia * 2) + 1]; - - ia = ia + twidCoefModifier; - - // loop for butterfly - for (i = j; i < fftLen; i += n1) - { - l = i + n2; - xt = pSrc[2 * i] - pSrc[2 * l]; - pSrc[2 * i] = (pSrc[2 * i] + pSrc[2 * l]); - - yt = pSrc[2 * i + 1] - pSrc[2 * l + 1]; - pSrc[2 * i + 1] = (pSrc[2 * l + 1] + pSrc[2 * i + 1]); - - pSrc[2U * l] = xt; - - pSrc[2U * l + 1U] = yt; - - } // butterfly loop end - - } // groups loop end - - twidCoefModifier = twidCoefModifier << 1U; - -#endif // #if defined (ARM_MATH_DSP) - -} - - -void arm_radix2_butterfly_inverse_q15( - q15_t * pSrc, - uint32_t fftLen, - q15_t * pCoef, - uint16_t twidCoefModifier) -{ -#if defined (ARM_MATH_DSP) - - unsigned i, j, k, l; - unsigned n1, n2, ia; - q15_t in; - q31_t T, S, R; - q31_t coeff, out1, out2; - - //N = fftLen; - n2 = fftLen; - - n1 = n2; - n2 = n2 >> 1; - ia = 0; - - // loop for groups - for (i = 0; i < n2; i++) - { - coeff = _SIMD32_OFFSET(pCoef + (ia * 2U)); - - ia = ia + twidCoefModifier; - - l = i + n2; - - T = _SIMD32_OFFSET(pSrc + (2 * i)); - in = ((int16_t) (T & 0xFFFF)) >> 1; - T = ((T >> 1) & 0xFFFF0000) | (in & 0xFFFF); - - S = _SIMD32_OFFSET(pSrc + (2 * l)); - in = ((int16_t) (S & 0xFFFF)) >> 1; - S = ((S >> 1) & 0xFFFF0000) | (in & 0xFFFF); - - R = __QSUB16(T, S); - - _SIMD32_OFFSET(pSrc + (2 * i)) = __SHADD16(T, S); - -#ifndef ARM_MATH_BIG_ENDIAN - - out1 = __SMUSD(coeff, R) >> 16; - out2 = __SMUADX(coeff, R); -#else - - out1 = __SMUADX(R, coeff) >> 16U; - out2 = __SMUSD(__QSUB(0, coeff), R); - -#endif // #ifndef ARM_MATH_BIG_ENDIAN - - _SIMD32_OFFSET(pSrc + (2U * l)) = - (q31_t) ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF); - - coeff = _SIMD32_OFFSET(pCoef + (ia * 2U)); - - ia = ia + twidCoefModifier; - - // loop for butterfly - i++; - l++; - - T = _SIMD32_OFFSET(pSrc + (2 * i)); - in = ((int16_t) (T & 0xFFFF)) >> 1; - T = ((T >> 1) & 0xFFFF0000) | (in & 0xFFFF); - - S = _SIMD32_OFFSET(pSrc + (2 * l)); - in = ((int16_t) (S & 0xFFFF)) >> 1; - S = ((S >> 1) & 0xFFFF0000) | (in & 0xFFFF); - - R = __QSUB16(T, S); - - _SIMD32_OFFSET(pSrc + (2 * i)) = __SHADD16(T, S); - -#ifndef ARM_MATH_BIG_ENDIAN - - out1 = __SMUSD(coeff, R) >> 16; - out2 = __SMUADX(coeff, R); -#else - - out1 = __SMUADX(R, coeff) >> 16U; - out2 = __SMUSD(__QSUB(0, coeff), R); - -#endif // #ifndef ARM_MATH_BIG_ENDIAN - - _SIMD32_OFFSET(pSrc + (2U * l)) = - (q31_t) ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF); - - } // groups loop end - - twidCoefModifier = twidCoefModifier << 1U; - - // loop for stage - for (k = fftLen / 2; k > 2; k = k >> 1) - { - n1 = n2; - n2 = n2 >> 1; - ia = 0; - - // loop for groups - for (j = 0; j < n2; j++) - { - coeff = _SIMD32_OFFSET(pCoef + (ia * 2U)); - - ia = ia + twidCoefModifier; - - // loop for butterfly - for (i = j; i < fftLen; i += n1) - { - l = i + n2; - - T = _SIMD32_OFFSET(pSrc + (2 * i)); - - S = _SIMD32_OFFSET(pSrc + (2 * l)); - - R = __QSUB16(T, S); - - _SIMD32_OFFSET(pSrc + (2 * i)) = __SHADD16(T, S); - -#ifndef ARM_MATH_BIG_ENDIAN - - out1 = __SMUSD(coeff, R) >> 16; - out2 = __SMUADX(coeff, R); - -#else - - out1 = __SMUADX(R, coeff) >> 16U; - out2 = __SMUSD(__QSUB(0, coeff), R); - -#endif // #ifndef ARM_MATH_BIG_ENDIAN - - _SIMD32_OFFSET(pSrc + (2U * l)) = - (q31_t) ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF); - - i += n1; - - l = i + n2; - - T = _SIMD32_OFFSET(pSrc + (2 * i)); - - S = _SIMD32_OFFSET(pSrc + (2 * l)); - - R = __QSUB16(T, S); - - _SIMD32_OFFSET(pSrc + (2 * i)) = __SHADD16(T, S); - -#ifndef ARM_MATH_BIG_ENDIAN - - out1 = __SMUSD(coeff, R) >> 16; - out2 = __SMUADX(coeff, R); -#else - - out1 = __SMUADX(R, coeff) >> 16U; - out2 = __SMUSD(__QSUB(0, coeff), R); - -#endif // #ifndef ARM_MATH_BIG_ENDIAN - - _SIMD32_OFFSET(pSrc + (2U * l)) = - (q31_t) ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF); - - } // butterfly loop end - - } // groups loop end - - twidCoefModifier = twidCoefModifier << 1U; - } // stages loop end - - n1 = n2; - n2 = n2 >> 1; - ia = 0; - - // loop for groups - for (j = 0; j < n2; j++) - { - coeff = _SIMD32_OFFSET(pCoef + (ia * 2U)); - - ia = ia + twidCoefModifier; - - // loop for butterfly - for (i = j; i < fftLen; i += n1) - { - l = i + n2; - - T = _SIMD32_OFFSET(pSrc + (2 * i)); - - S = _SIMD32_OFFSET(pSrc + (2 * l)); - - R = __QSUB16(T, S); - - _SIMD32_OFFSET(pSrc + (2 * i)) = __QADD16(T, S); - - _SIMD32_OFFSET(pSrc + (2U * l)) = R; - - } // butterfly loop end - - } // groups loop end - - twidCoefModifier = twidCoefModifier << 1U; - -#else - - - unsigned i, j, k, l; - unsigned n1, n2, ia; - q15_t xt, yt, cosVal, sinVal; - - //N = fftLen; - n2 = fftLen; - - n1 = n2; - n2 = n2 >> 1; - ia = 0; - - // loop for groups - for (j = 0; j < n2; j++) - { - cosVal = pCoef[ia * 2]; - sinVal = pCoef[(ia * 2) + 1]; - ia = ia + twidCoefModifier; - - // loop for butterfly - for (i = j; i < fftLen; i += n1) - { - l = i + n2; - xt = (pSrc[2 * i] >> 1U) - (pSrc[2 * l] >> 1U); - pSrc[2 * i] = ((pSrc[2 * i] >> 1U) + (pSrc[2 * l] >> 1U)) >> 1U; - - yt = (pSrc[2 * i + 1] >> 1U) - (pSrc[2 * l + 1] >> 1U); - pSrc[2 * i + 1] = - ((pSrc[2 * l + 1] >> 1U) + (pSrc[2 * i + 1] >> 1U)) >> 1U; - - pSrc[2U * l] = (((int16_t) (((q31_t) xt * cosVal) >> 16)) - - ((int16_t) (((q31_t) yt * sinVal) >> 16))); - - pSrc[2U * l + 1U] = (((int16_t) (((q31_t) yt * cosVal) >> 16)) + - ((int16_t) (((q31_t) xt * sinVal) >> 16))); - - } // butterfly loop end - - } // groups loop end - - twidCoefModifier = twidCoefModifier << 1U; - - // loop for stage - for (k = fftLen / 2; k > 2; k = k >> 1) - { - n1 = n2; - n2 = n2 >> 1; - ia = 0; - - // loop for groups - for (j = 0; j < n2; j++) - { - cosVal = pCoef[ia * 2]; - sinVal = pCoef[(ia * 2) + 1]; - ia = ia + twidCoefModifier; - - // loop for butterfly - for (i = j; i < fftLen; i += n1) - { - l = i + n2; - xt = pSrc[2 * i] - pSrc[2 * l]; - pSrc[2 * i] = (pSrc[2 * i] + pSrc[2 * l]) >> 1U; - - yt = pSrc[2 * i + 1] - pSrc[2 * l + 1]; - pSrc[2 * i + 1] = (pSrc[2 * l + 1] + pSrc[2 * i + 1]) >> 1U; - - pSrc[2U * l] = (((int16_t) (((q31_t) xt * cosVal) >> 16)) - - ((int16_t) (((q31_t) yt * sinVal) >> 16))); - - pSrc[2U * l + 1U] = (((int16_t) (((q31_t) yt * cosVal) >> 16)) + - ((int16_t) (((q31_t) xt * sinVal) >> 16))); - - } // butterfly loop end - - } // groups loop end - - twidCoefModifier = twidCoefModifier << 1U; - } // stages loop end - - n1 = n2; - n2 = n2 >> 1; - ia = 0; - - cosVal = pCoef[ia * 2]; - sinVal = pCoef[(ia * 2) + 1]; - - ia = ia + twidCoefModifier; - - // loop for butterfly - for (i = 0; i < fftLen; i += n1) - { - l = i + n2; - xt = pSrc[2 * i] - pSrc[2 * l]; - pSrc[2 * i] = (pSrc[2 * i] + pSrc[2 * l]); - - yt = pSrc[2 * i + 1] - pSrc[2 * l + 1]; - pSrc[2 * i + 1] = (pSrc[2 * l + 1] + pSrc[2 * i + 1]); - - pSrc[2U * l] = xt; - - pSrc[2U * l + 1U] = yt; - - } // groups loop end - - -#endif // #if defined (ARM_MATH_DSP) - -} diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix2_q31.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix2_q31.c deleted file mode 100644 index c9b1537..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix2_q31.c +++ /dev/null @@ -1,338 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_cfft_radix2_q31.c - * Description: Radix-2 Decimation in Frequency CFFT & CIFFT Fixed point processing function - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -void arm_radix2_butterfly_q31( - q31_t * pSrc, - uint32_t fftLen, - q31_t * pCoef, - uint16_t twidCoefModifier); - -void arm_radix2_butterfly_inverse_q31( - q31_t * pSrc, - uint32_t fftLen, - q31_t * pCoef, - uint16_t twidCoefModifier); - -void arm_bitreversal_q31( - q31_t * pSrc, - uint32_t fftLen, - uint16_t bitRevFactor, - uint16_t * pBitRevTab); - -/** -* @ingroup groupTransforms -*/ - -/** -* @addtogroup ComplexFFT -* @{ -*/ - -/** -* @details -* @brief Processing function for the fixed-point CFFT/CIFFT. -* @deprecated Do not use this function. It has been superseded by \ref arm_cfft_q31 and will be removed -* @param[in] *S points to an instance of the fixed-point CFFT/CIFFT structure. -* @param[in, out] *pSrc points to the complex data buffer of size 2*fftLen. Processing occurs in-place. -* @return none. -*/ - -void arm_cfft_radix2_q31( -const arm_cfft_radix2_instance_q31 * S, -q31_t * pSrc) -{ - - if (S->ifftFlag == 1U) - { - arm_radix2_butterfly_inverse_q31(pSrc, S->fftLen, - S->pTwiddle, S->twidCoefModifier); - } - else - { - arm_radix2_butterfly_q31(pSrc, S->fftLen, - S->pTwiddle, S->twidCoefModifier); - } - - arm_bitreversal_q31(pSrc, S->fftLen, S->bitRevFactor, S->pBitRevTable); -} - -/** -* @} end of ComplexFFT group -*/ - -void arm_radix2_butterfly_q31( -q31_t * pSrc, -uint32_t fftLen, -q31_t * pCoef, -uint16_t twidCoefModifier) -{ - - unsigned i, j, k, l, m; - unsigned n1, n2, ia; - q31_t xt, yt, cosVal, sinVal; - q31_t p0, p1; - - //N = fftLen; - n2 = fftLen; - - n1 = n2; - n2 = n2 >> 1; - ia = 0; - - // loop for groups - for (i = 0; i < n2; i++) - { - cosVal = pCoef[ia * 2]; - sinVal = pCoef[(ia * 2) + 1]; - ia = ia + twidCoefModifier; - - l = i + n2; - xt = (pSrc[2 * i] >> 1U) - (pSrc[2 * l] >> 1U); - pSrc[2 * i] = ((pSrc[2 * i] >> 1U) + (pSrc[2 * l] >> 1U)) >> 1U; - - yt = (pSrc[2 * i + 1] >> 1U) - (pSrc[2 * l + 1] >> 1U); - pSrc[2 * i + 1] = - ((pSrc[2 * l + 1] >> 1U) + (pSrc[2 * i + 1] >> 1U)) >> 1U; - - mult_32x32_keep32_R(p0, xt, cosVal); - mult_32x32_keep32_R(p1, yt, cosVal); - multAcc_32x32_keep32_R(p0, yt, sinVal); - multSub_32x32_keep32_R(p1, xt, sinVal); - - pSrc[2U * l] = p0; - pSrc[2U * l + 1U] = p1; - - } // groups loop end - - twidCoefModifier <<= 1U; - - // loop for stage - for (k = fftLen / 2; k > 2; k = k >> 1) - { - n1 = n2; - n2 = n2 >> 1; - ia = 0; - - // loop for groups - for (j = 0; j < n2; j++) - { - cosVal = pCoef[ia * 2]; - sinVal = pCoef[(ia * 2) + 1]; - ia = ia + twidCoefModifier; - - // loop for butterfly - i = j; - m = fftLen / n1; - do - { - l = i + n2; - xt = pSrc[2 * i] - pSrc[2 * l]; - pSrc[2 * i] = (pSrc[2 * i] + pSrc[2 * l]) >> 1U; - - yt = pSrc[2 * i + 1] - pSrc[2 * l + 1]; - pSrc[2 * i + 1] = (pSrc[2 * l + 1] + pSrc[2 * i + 1]) >> 1U; - - mult_32x32_keep32_R(p0, xt, cosVal); - mult_32x32_keep32_R(p1, yt, cosVal); - multAcc_32x32_keep32_R(p0, yt, sinVal); - multSub_32x32_keep32_R(p1, xt, sinVal); - - pSrc[2U * l] = p0; - pSrc[2U * l + 1U] = p1; - i += n1; - m--; - } while ( m > 0); // butterfly loop end - - } // groups loop end - - twidCoefModifier <<= 1U; - } // stages loop end - - n1 = n2; - n2 = n2 >> 1; - ia = 0; - - cosVal = pCoef[ia * 2]; - sinVal = pCoef[(ia * 2) + 1]; - ia = ia + twidCoefModifier; - - // loop for butterfly - for (i = 0; i < fftLen; i += n1) - { - l = i + n2; - xt = pSrc[2 * i] - pSrc[2 * l]; - pSrc[2 * i] = (pSrc[2 * i] + pSrc[2 * l]); - - yt = pSrc[2 * i + 1] - pSrc[2 * l + 1]; - pSrc[2 * i + 1] = (pSrc[2 * l + 1] + pSrc[2 * i + 1]); - - pSrc[2U * l] = xt; - - pSrc[2U * l + 1U] = yt; - - i += n1; - l = i + n2; - - xt = pSrc[2 * i] - pSrc[2 * l]; - pSrc[2 * i] = (pSrc[2 * i] + pSrc[2 * l]); - - yt = pSrc[2 * i + 1] - pSrc[2 * l + 1]; - pSrc[2 * i + 1] = (pSrc[2 * l + 1] + pSrc[2 * i + 1]); - - pSrc[2U * l] = xt; - - pSrc[2U * l + 1U] = yt; - - } // butterfly loop end - -} - - -void arm_radix2_butterfly_inverse_q31( -q31_t * pSrc, -uint32_t fftLen, -q31_t * pCoef, -uint16_t twidCoefModifier) -{ - - unsigned i, j, k, l; - unsigned n1, n2, ia; - q31_t xt, yt, cosVal, sinVal; - q31_t p0, p1; - - //N = fftLen; - n2 = fftLen; - - n1 = n2; - n2 = n2 >> 1; - ia = 0; - - // loop for groups - for (i = 0; i < n2; i++) - { - cosVal = pCoef[ia * 2]; - sinVal = pCoef[(ia * 2) + 1]; - ia = ia + twidCoefModifier; - - l = i + n2; - xt = (pSrc[2 * i] >> 1U) - (pSrc[2 * l] >> 1U); - pSrc[2 * i] = ((pSrc[2 * i] >> 1U) + (pSrc[2 * l] >> 1U)) >> 1U; - - yt = (pSrc[2 * i + 1] >> 1U) - (pSrc[2 * l + 1] >> 1U); - pSrc[2 * i + 1] = - ((pSrc[2 * l + 1] >> 1U) + (pSrc[2 * i + 1] >> 1U)) >> 1U; - - mult_32x32_keep32_R(p0, xt, cosVal); - mult_32x32_keep32_R(p1, yt, cosVal); - multSub_32x32_keep32_R(p0, yt, sinVal); - multAcc_32x32_keep32_R(p1, xt, sinVal); - - pSrc[2U * l] = p0; - pSrc[2U * l + 1U] = p1; - } // groups loop end - - twidCoefModifier = twidCoefModifier << 1U; - - // loop for stage - for (k = fftLen / 2; k > 2; k = k >> 1) - { - n1 = n2; - n2 = n2 >> 1; - ia = 0; - - // loop for groups - for (j = 0; j < n2; j++) - { - cosVal = pCoef[ia * 2]; - sinVal = pCoef[(ia * 2) + 1]; - ia = ia + twidCoefModifier; - - // loop for butterfly - for (i = j; i < fftLen; i += n1) - { - l = i + n2; - xt = pSrc[2 * i] - pSrc[2 * l]; - pSrc[2 * i] = (pSrc[2 * i] + pSrc[2 * l]) >> 1U; - - yt = pSrc[2 * i + 1] - pSrc[2 * l + 1]; - pSrc[2 * i + 1] = (pSrc[2 * l + 1] + pSrc[2 * i + 1]) >> 1U; - - mult_32x32_keep32_R(p0, xt, cosVal); - mult_32x32_keep32_R(p1, yt, cosVal); - multSub_32x32_keep32_R(p0, yt, sinVal); - multAcc_32x32_keep32_R(p1, xt, sinVal); - - pSrc[2U * l] = p0; - pSrc[2U * l + 1U] = p1; - } // butterfly loop end - - } // groups loop end - - twidCoefModifier = twidCoefModifier << 1U; - } // stages loop end - - n1 = n2; - n2 = n2 >> 1; - ia = 0; - - cosVal = pCoef[ia * 2]; - sinVal = pCoef[(ia * 2) + 1]; - ia = ia + twidCoefModifier; - - // loop for butterfly - for (i = 0; i < fftLen; i += n1) - { - l = i + n2; - xt = pSrc[2 * i] - pSrc[2 * l]; - pSrc[2 * i] = (pSrc[2 * i] + pSrc[2 * l]); - - yt = pSrc[2 * i + 1] - pSrc[2 * l + 1]; - pSrc[2 * i + 1] = (pSrc[2 * l + 1] + pSrc[2 * i + 1]); - - pSrc[2U * l] = xt; - - pSrc[2U * l + 1U] = yt; - - i += n1; - l = i + n2; - - xt = pSrc[2 * i] - pSrc[2 * l]; - pSrc[2 * i] = (pSrc[2 * i] + pSrc[2 * l]); - - yt = pSrc[2 * i + 1] - pSrc[2 * l + 1]; - pSrc[2 * i + 1] = (pSrc[2 * l + 1] + pSrc[2 * i + 1]); - - pSrc[2U * l] = xt; - - pSrc[2U * l + 1U] = yt; - - } // butterfly loop end - -} diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix4_f32.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix4_f32.c deleted file mode 100644 index d6f66ae..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix4_f32.c +++ /dev/null @@ -1,1209 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_cfft_radix4_f32.c - * Description: Radix-4 Decimation in Frequency CFFT & CIFFT Floating point processing function - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -extern void arm_bitreversal_f32( -float32_t * pSrc, -uint16_t fftSize, -uint16_t bitRevFactor, -uint16_t * pBitRevTab); - -void arm_radix4_butterfly_f32( -float32_t * pSrc, -uint16_t fftLen, -float32_t * pCoef, -uint16_t twidCoefModifier); - -void arm_radix4_butterfly_inverse_f32( -float32_t * pSrc, -uint16_t fftLen, -float32_t * pCoef, -uint16_t twidCoefModifier, -float32_t onebyfftLen); - - -/** -* @ingroup groupTransforms -*/ - -/** -* @addtogroup ComplexFFT -* @{ -*/ - -/** -* @details -* @brief Processing function for the floating-point Radix-4 CFFT/CIFFT. -* @deprecated Do not use this function. It has been superseded by \ref arm_cfft_f32 and will be removed -* in the future. -* @param[in] *S points to an instance of the floating-point Radix-4 CFFT/CIFFT structure. -* @param[in, out] *pSrc points to the complex data buffer of size 2*fftLen. Processing occurs in-place. -* @return none. -*/ - -void arm_cfft_radix4_f32( - const arm_cfft_radix4_instance_f32 * S, - float32_t * pSrc) -{ - if (S->ifftFlag == 1U) - { - /* Complex IFFT radix-4 */ - arm_radix4_butterfly_inverse_f32(pSrc, S->fftLen, S->pTwiddle, S->twidCoefModifier, S->onebyfftLen); - } - else - { - /* Complex FFT radix-4 */ - arm_radix4_butterfly_f32(pSrc, S->fftLen, S->pTwiddle, S->twidCoefModifier); - } - - if (S->bitReverseFlag == 1U) - { - /* Bit Reversal */ - arm_bitreversal_f32(pSrc, S->fftLen, S->bitRevFactor, S->pBitRevTable); - } - -} - -/** -* @} end of ComplexFFT group -*/ - -/* ---------------------------------------------------------------------- - * Internal helper function used by the FFTs - * ---------------------------------------------------------------------- */ - -/* -* @brief Core function for the floating-point CFFT butterfly process. -* @param[in, out] *pSrc points to the in-place buffer of floating-point data type. -* @param[in] fftLen length of the FFT. -* @param[in] *pCoef points to the twiddle coefficient buffer. -* @param[in] twidCoefModifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. -* @return none. -*/ - -void arm_radix4_butterfly_f32( -float32_t * pSrc, -uint16_t fftLen, -float32_t * pCoef, -uint16_t twidCoefModifier) -{ - - float32_t co1, co2, co3, si1, si2, si3; - uint32_t ia1, ia2, ia3; - uint32_t i0, i1, i2, i3; - uint32_t n1, n2, j, k; - -#if defined (ARM_MATH_DSP) - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - float32_t xaIn, yaIn, xbIn, ybIn, xcIn, ycIn, xdIn, ydIn; - float32_t Xaplusc, Xbplusd, Yaplusc, Ybplusd, Xaminusc, Xbminusd, Yaminusc, - Ybminusd; - float32_t Xb12C_out, Yb12C_out, Xc12C_out, Yc12C_out, Xd12C_out, Yd12C_out; - float32_t Xb12_out, Yb12_out, Xc12_out, Yc12_out, Xd12_out, Yd12_out; - float32_t *ptr1; - float32_t p0,p1,p2,p3,p4,p5; - float32_t a0,a1,a2,a3,a4,a5,a6,a7; - - /* Initializations for the first stage */ - n2 = fftLen; - n1 = n2; - - /* n2 = fftLen/4 */ - n2 >>= 2U; - i0 = 0U; - ia1 = 0U; - - j = n2; - - /* Calculation of first stage */ - do - { - /* index calculation for the input as, */ - /* pSrc[i0 + 0], pSrc[i0 + fftLen/4], pSrc[i0 + fftLen/2], pSrc[i0 + 3fftLen/4] */ - i1 = i0 + n2; - i2 = i1 + n2; - i3 = i2 + n2; - - xaIn = pSrc[(2U * i0)]; - yaIn = pSrc[(2U * i0) + 1U]; - - xbIn = pSrc[(2U * i1)]; - ybIn = pSrc[(2U * i1) + 1U]; - - xcIn = pSrc[(2U * i2)]; - ycIn = pSrc[(2U * i2) + 1U]; - - xdIn = pSrc[(2U * i3)]; - ydIn = pSrc[(2U * i3) + 1U]; - - /* xa + xc */ - Xaplusc = xaIn + xcIn; - /* xb + xd */ - Xbplusd = xbIn + xdIn; - /* ya + yc */ - Yaplusc = yaIn + ycIn; - /* yb + yd */ - Ybplusd = ybIn + ydIn; - - /* index calculation for the coefficients */ - ia2 = ia1 + ia1; - co2 = pCoef[ia2 * 2U]; - si2 = pCoef[(ia2 * 2U) + 1U]; - - /* xa - xc */ - Xaminusc = xaIn - xcIn; - /* xb - xd */ - Xbminusd = xbIn - xdIn; - /* ya - yc */ - Yaminusc = yaIn - ycIn; - /* yb - yd */ - Ybminusd = ybIn - ydIn; - - /* xa' = xa + xb + xc + xd */ - pSrc[(2U * i0)] = Xaplusc + Xbplusd; - /* ya' = ya + yb + yc + yd */ - pSrc[(2U * i0) + 1U] = Yaplusc + Ybplusd; - - /* (xa - xc) + (yb - yd) */ - Xb12C_out = (Xaminusc + Ybminusd); - /* (ya - yc) + (xb - xd) */ - Yb12C_out = (Yaminusc - Xbminusd); - /* (xa + xc) - (xb + xd) */ - Xc12C_out = (Xaplusc - Xbplusd); - /* (ya + yc) - (yb + yd) */ - Yc12C_out = (Yaplusc - Ybplusd); - /* (xa - xc) - (yb - yd) */ - Xd12C_out = (Xaminusc - Ybminusd); - /* (ya - yc) + (xb - xd) */ - Yd12C_out = (Xbminusd + Yaminusc); - - co1 = pCoef[ia1 * 2U]; - si1 = pCoef[(ia1 * 2U) + 1U]; - - /* index calculation for the coefficients */ - ia3 = ia2 + ia1; - co3 = pCoef[ia3 * 2U]; - si3 = pCoef[(ia3 * 2U) + 1U]; - - Xb12_out = Xb12C_out * co1; - Yb12_out = Yb12C_out * co1; - Xc12_out = Xc12C_out * co2; - Yc12_out = Yc12C_out * co2; - Xd12_out = Xd12C_out * co3; - Yd12_out = Yd12C_out * co3; - - /* xb' = (xa+yb-xc-yd)co1 - (ya-xb-yc+xd)(si1) */ - //Xb12_out -= Yb12C_out * si1; - p0 = Yb12C_out * si1; - /* yb' = (ya-xb-yc+xd)co1 + (xa+yb-xc-yd)(si1) */ - //Yb12_out += Xb12C_out * si1; - p1 = Xb12C_out * si1; - /* xc' = (xa-xb+xc-xd)co2 - (ya-yb+yc-yd)(si2) */ - //Xc12_out -= Yc12C_out * si2; - p2 = Yc12C_out * si2; - /* yc' = (ya-yb+yc-yd)co2 + (xa-xb+xc-xd)(si2) */ - //Yc12_out += Xc12C_out * si2; - p3 = Xc12C_out * si2; - /* xd' = (xa-yb-xc+yd)co3 - (ya+xb-yc-xd)(si3) */ - //Xd12_out -= Yd12C_out * si3; - p4 = Yd12C_out * si3; - /* yd' = (ya+xb-yc-xd)co3 + (xa-yb-xc+yd)(si3) */ - //Yd12_out += Xd12C_out * si3; - p5 = Xd12C_out * si3; - - Xb12_out += p0; - Yb12_out -= p1; - Xc12_out += p2; - Yc12_out -= p3; - Xd12_out += p4; - Yd12_out -= p5; - - /* xc' = (xa-xb+xc-xd)co2 + (ya-yb+yc-yd)(si2) */ - pSrc[2U * i1] = Xc12_out; - - /* yc' = (ya-yb+yc-yd)co2 - (xa-xb+xc-xd)(si2) */ - pSrc[(2U * i1) + 1U] = Yc12_out; - - /* xb' = (xa+yb-xc-yd)co1 + (ya-xb-yc+xd)(si1) */ - pSrc[2U * i2] = Xb12_out; - - /* yb' = (ya-xb-yc+xd)co1 - (xa+yb-xc-yd)(si1) */ - pSrc[(2U * i2) + 1U] = Yb12_out; - - /* xd' = (xa-yb-xc+yd)co3 + (ya+xb-yc-xd)(si3) */ - pSrc[2U * i3] = Xd12_out; - - /* yd' = (ya+xb-yc-xd)co3 - (xa-yb-xc+yd)(si3) */ - pSrc[(2U * i3) + 1U] = Yd12_out; - - /* Twiddle coefficients index modifier */ - ia1 += twidCoefModifier; - - /* Updating input index */ - i0++; - - } - while (--j); - - twidCoefModifier <<= 2U; - - /* Calculation of second stage to excluding last stage */ - for (k = fftLen >> 2U; k > 4U; k >>= 2U) - { - /* Initializations for the first stage */ - n1 = n2; - n2 >>= 2U; - ia1 = 0U; - - /* Calculation of first stage */ - j = 0; - do - { - /* index calculation for the coefficients */ - ia2 = ia1 + ia1; - ia3 = ia2 + ia1; - co1 = pCoef[ia1 * 2U]; - si1 = pCoef[(ia1 * 2U) + 1U]; - co2 = pCoef[ia2 * 2U]; - si2 = pCoef[(ia2 * 2U) + 1U]; - co3 = pCoef[ia3 * 2U]; - si3 = pCoef[(ia3 * 2U) + 1U]; - - /* Twiddle coefficients index modifier */ - ia1 += twidCoefModifier; - - i0 = j; - do - { - /* index calculation for the input as, */ - /* pSrc[i0 + 0], pSrc[i0 + fftLen/4], pSrc[i0 + fftLen/2], pSrc[i0 + 3fftLen/4] */ - i1 = i0 + n2; - i2 = i1 + n2; - i3 = i2 + n2; - - xaIn = pSrc[(2U * i0)]; - yaIn = pSrc[(2U * i0) + 1U]; - - xbIn = pSrc[(2U * i1)]; - ybIn = pSrc[(2U * i1) + 1U]; - - xcIn = pSrc[(2U * i2)]; - ycIn = pSrc[(2U * i2) + 1U]; - - xdIn = pSrc[(2U * i3)]; - ydIn = pSrc[(2U * i3) + 1U]; - - /* xa - xc */ - Xaminusc = xaIn - xcIn; - /* (xb - xd) */ - Xbminusd = xbIn - xdIn; - /* ya - yc */ - Yaminusc = yaIn - ycIn; - /* (yb - yd) */ - Ybminusd = ybIn - ydIn; - - /* xa + xc */ - Xaplusc = xaIn + xcIn; - /* xb + xd */ - Xbplusd = xbIn + xdIn; - /* ya + yc */ - Yaplusc = yaIn + ycIn; - /* yb + yd */ - Ybplusd = ybIn + ydIn; - - /* (xa - xc) + (yb - yd) */ - Xb12C_out = (Xaminusc + Ybminusd); - /* (ya - yc) - (xb - xd) */ - Yb12C_out = (Yaminusc - Xbminusd); - /* xa + xc -(xb + xd) */ - Xc12C_out = (Xaplusc - Xbplusd); - /* (ya + yc) - (yb + yd) */ - Yc12C_out = (Yaplusc - Ybplusd); - /* (xa - xc) - (yb - yd) */ - Xd12C_out = (Xaminusc - Ybminusd); - /* (ya - yc) + (xb - xd) */ - Yd12C_out = (Xbminusd + Yaminusc); - - pSrc[(2U * i0)] = Xaplusc + Xbplusd; - pSrc[(2U * i0) + 1U] = Yaplusc + Ybplusd; - - Xb12_out = Xb12C_out * co1; - Yb12_out = Yb12C_out * co1; - Xc12_out = Xc12C_out * co2; - Yc12_out = Yc12C_out * co2; - Xd12_out = Xd12C_out * co3; - Yd12_out = Yd12C_out * co3; - - /* xb' = (xa+yb-xc-yd)co1 - (ya-xb-yc+xd)(si1) */ - //Xb12_out -= Yb12C_out * si1; - p0 = Yb12C_out * si1; - /* yb' = (ya-xb-yc+xd)co1 + (xa+yb-xc-yd)(si1) */ - //Yb12_out += Xb12C_out * si1; - p1 = Xb12C_out * si1; - /* xc' = (xa-xb+xc-xd)co2 - (ya-yb+yc-yd)(si2) */ - //Xc12_out -= Yc12C_out * si2; - p2 = Yc12C_out * si2; - /* yc' = (ya-yb+yc-yd)co2 + (xa-xb+xc-xd)(si2) */ - //Yc12_out += Xc12C_out * si2; - p3 = Xc12C_out * si2; - /* xd' = (xa-yb-xc+yd)co3 - (ya+xb-yc-xd)(si3) */ - //Xd12_out -= Yd12C_out * si3; - p4 = Yd12C_out * si3; - /* yd' = (ya+xb-yc-xd)co3 + (xa-yb-xc+yd)(si3) */ - //Yd12_out += Xd12C_out * si3; - p5 = Xd12C_out * si3; - - Xb12_out += p0; - Yb12_out -= p1; - Xc12_out += p2; - Yc12_out -= p3; - Xd12_out += p4; - Yd12_out -= p5; - - /* xc' = (xa-xb+xc-xd)co2 + (ya-yb+yc-yd)(si2) */ - pSrc[2U * i1] = Xc12_out; - - /* yc' = (ya-yb+yc-yd)co2 - (xa-xb+xc-xd)(si2) */ - pSrc[(2U * i1) + 1U] = Yc12_out; - - /* xb' = (xa+yb-xc-yd)co1 + (ya-xb-yc+xd)(si1) */ - pSrc[2U * i2] = Xb12_out; - - /* yb' = (ya-xb-yc+xd)co1 - (xa+yb-xc-yd)(si1) */ - pSrc[(2U * i2) + 1U] = Yb12_out; - - /* xd' = (xa-yb-xc+yd)co3 + (ya+xb-yc-xd)(si3) */ - pSrc[2U * i3] = Xd12_out; - - /* yd' = (ya+xb-yc-xd)co3 - (xa-yb-xc+yd)(si3) */ - pSrc[(2U * i3) + 1U] = Yd12_out; - - i0 += n1; - } while (i0 < fftLen); - j++; - } while (j <= (n2 - 1U)); - twidCoefModifier <<= 2U; - } - - j = fftLen >> 2; - ptr1 = &pSrc[0]; - - /* Calculations of last stage */ - do - { - xaIn = ptr1[0]; - yaIn = ptr1[1]; - xbIn = ptr1[2]; - ybIn = ptr1[3]; - xcIn = ptr1[4]; - ycIn = ptr1[5]; - xdIn = ptr1[6]; - ydIn = ptr1[7]; - - /* xa + xc */ - Xaplusc = xaIn + xcIn; - - /* xa - xc */ - Xaminusc = xaIn - xcIn; - - /* ya + yc */ - Yaplusc = yaIn + ycIn; - - /* ya - yc */ - Yaminusc = yaIn - ycIn; - - /* xb + xd */ - Xbplusd = xbIn + xdIn; - - /* yb + yd */ - Ybplusd = ybIn + ydIn; - - /* (xb-xd) */ - Xbminusd = xbIn - xdIn; - - /* (yb-yd) */ - Ybminusd = ybIn - ydIn; - - /* xa' = xa + xb + xc + xd */ - a0 = (Xaplusc + Xbplusd); - /* ya' = ya + yb + yc + yd */ - a1 = (Yaplusc + Ybplusd); - /* xc' = (xa-xb+xc-xd) */ - a2 = (Xaplusc - Xbplusd); - /* yc' = (ya-yb+yc-yd) */ - a3 = (Yaplusc - Ybplusd); - /* xb' = (xa+yb-xc-yd) */ - a4 = (Xaminusc + Ybminusd); - /* yb' = (ya-xb-yc+xd) */ - a5 = (Yaminusc - Xbminusd); - /* xd' = (xa-yb-xc+yd)) */ - a6 = (Xaminusc - Ybminusd); - /* yd' = (ya+xb-yc-xd) */ - a7 = (Xbminusd + Yaminusc); - - ptr1[0] = a0; - ptr1[1] = a1; - ptr1[2] = a2; - ptr1[3] = a3; - ptr1[4] = a4; - ptr1[5] = a5; - ptr1[6] = a6; - ptr1[7] = a7; - - /* increment pointer by 8 */ - ptr1 += 8U; - } while (--j); - -#else - - float32_t t1, t2, r1, r2, s1, s2; - - /* Run the below code for Cortex-M0 */ - - /* Initializations for the fft calculation */ - n2 = fftLen; - n1 = n2; - for (k = fftLen; k > 1U; k >>= 2U) - { - /* Initializations for the fft calculation */ - n1 = n2; - n2 >>= 2U; - ia1 = 0U; - - /* FFT Calculation */ - j = 0; - do - { - /* index calculation for the coefficients */ - ia2 = ia1 + ia1; - ia3 = ia2 + ia1; - co1 = pCoef[ia1 * 2U]; - si1 = pCoef[(ia1 * 2U) + 1U]; - co2 = pCoef[ia2 * 2U]; - si2 = pCoef[(ia2 * 2U) + 1U]; - co3 = pCoef[ia3 * 2U]; - si3 = pCoef[(ia3 * 2U) + 1U]; - - /* Twiddle coefficients index modifier */ - ia1 = ia1 + twidCoefModifier; - - i0 = j; - do - { - /* index calculation for the input as, */ - /* pSrc[i0 + 0], pSrc[i0 + fftLen/4], pSrc[i0 + fftLen/2], pSrc[i0 + 3fftLen/4] */ - i1 = i0 + n2; - i2 = i1 + n2; - i3 = i2 + n2; - - /* xa + xc */ - r1 = pSrc[(2U * i0)] + pSrc[(2U * i2)]; - - /* xa - xc */ - r2 = pSrc[(2U * i0)] - pSrc[(2U * i2)]; - - /* ya + yc */ - s1 = pSrc[(2U * i0) + 1U] + pSrc[(2U * i2) + 1U]; - - /* ya - yc */ - s2 = pSrc[(2U * i0) + 1U] - pSrc[(2U * i2) + 1U]; - - /* xb + xd */ - t1 = pSrc[2U * i1] + pSrc[2U * i3]; - - /* xa' = xa + xb + xc + xd */ - pSrc[2U * i0] = r1 + t1; - - /* xa + xc -(xb + xd) */ - r1 = r1 - t1; - - /* yb + yd */ - t2 = pSrc[(2U * i1) + 1U] + pSrc[(2U * i3) + 1U]; - - /* ya' = ya + yb + yc + yd */ - pSrc[(2U * i0) + 1U] = s1 + t2; - - /* (ya + yc) - (yb + yd) */ - s1 = s1 - t2; - - /* (yb - yd) */ - t1 = pSrc[(2U * i1) + 1U] - pSrc[(2U * i3) + 1U]; - - /* (xb - xd) */ - t2 = pSrc[2U * i1] - pSrc[2U * i3]; - - /* xc' = (xa-xb+xc-xd)co2 + (ya-yb+yc-yd)(si2) */ - pSrc[2U * i1] = (r1 * co2) + (s1 * si2); - - /* yc' = (ya-yb+yc-yd)co2 - (xa-xb+xc-xd)(si2) */ - pSrc[(2U * i1) + 1U] = (s1 * co2) - (r1 * si2); - - /* (xa - xc) + (yb - yd) */ - r1 = r2 + t1; - - /* (xa - xc) - (yb - yd) */ - r2 = r2 - t1; - - /* (ya - yc) - (xb - xd) */ - s1 = s2 - t2; - - /* (ya - yc) + (xb - xd) */ - s2 = s2 + t2; - - /* xb' = (xa+yb-xc-yd)co1 + (ya-xb-yc+xd)(si1) */ - pSrc[2U * i2] = (r1 * co1) + (s1 * si1); - - /* yb' = (ya-xb-yc+xd)co1 - (xa+yb-xc-yd)(si1) */ - pSrc[(2U * i2) + 1U] = (s1 * co1) - (r1 * si1); - - /* xd' = (xa-yb-xc+yd)co3 + (ya+xb-yc-xd)(si3) */ - pSrc[2U * i3] = (r2 * co3) + (s2 * si3); - - /* yd' = (ya+xb-yc-xd)co3 - (xa-yb-xc+yd)(si3) */ - pSrc[(2U * i3) + 1U] = (s2 * co3) - (r2 * si3); - - i0 += n1; - } while ( i0 < fftLen); - j++; - } while (j <= (n2 - 1U)); - twidCoefModifier <<= 2U; - } - -#endif /* #if defined (ARM_MATH_DSP) */ - -} - -/* -* @brief Core function for the floating-point CIFFT butterfly process. -* @param[in, out] *pSrc points to the in-place buffer of floating-point data type. -* @param[in] fftLen length of the FFT. -* @param[in] *pCoef points to twiddle coefficient buffer. -* @param[in] twidCoefModifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. -* @param[in] onebyfftLen value of 1/fftLen. -* @return none. -*/ - -void arm_radix4_butterfly_inverse_f32( -float32_t * pSrc, -uint16_t fftLen, -float32_t * pCoef, -uint16_t twidCoefModifier, -float32_t onebyfftLen) -{ - float32_t co1, co2, co3, si1, si2, si3; - uint32_t ia1, ia2, ia3; - uint32_t i0, i1, i2, i3; - uint32_t n1, n2, j, k; - -#if defined (ARM_MATH_DSP) - - float32_t xaIn, yaIn, xbIn, ybIn, xcIn, ycIn, xdIn, ydIn; - float32_t Xaplusc, Xbplusd, Yaplusc, Ybplusd, Xaminusc, Xbminusd, Yaminusc, - Ybminusd; - float32_t Xb12C_out, Yb12C_out, Xc12C_out, Yc12C_out, Xd12C_out, Yd12C_out; - float32_t Xb12_out, Yb12_out, Xc12_out, Yc12_out, Xd12_out, Yd12_out; - float32_t *ptr1; - float32_t p0,p1,p2,p3,p4,p5,p6,p7; - float32_t a0,a1,a2,a3,a4,a5,a6,a7; - - - /* Initializations for the first stage */ - n2 = fftLen; - n1 = n2; - - /* n2 = fftLen/4 */ - n2 >>= 2U; - i0 = 0U; - ia1 = 0U; - - j = n2; - - /* Calculation of first stage */ - do - { - /* index calculation for the input as, */ - /* pSrc[i0 + 0], pSrc[i0 + fftLen/4], pSrc[i0 + fftLen/2], pSrc[i0 + 3fftLen/4] */ - i1 = i0 + n2; - i2 = i1 + n2; - i3 = i2 + n2; - - /* Butterfly implementation */ - xaIn = pSrc[(2U * i0)]; - yaIn = pSrc[(2U * i0) + 1U]; - - xcIn = pSrc[(2U * i2)]; - ycIn = pSrc[(2U * i2) + 1U]; - - xbIn = pSrc[(2U * i1)]; - ybIn = pSrc[(2U * i1) + 1U]; - - xdIn = pSrc[(2U * i3)]; - ydIn = pSrc[(2U * i3) + 1U]; - - /* xa + xc */ - Xaplusc = xaIn + xcIn; - /* xb + xd */ - Xbplusd = xbIn + xdIn; - /* ya + yc */ - Yaplusc = yaIn + ycIn; - /* yb + yd */ - Ybplusd = ybIn + ydIn; - - /* index calculation for the coefficients */ - ia2 = ia1 + ia1; - co2 = pCoef[ia2 * 2U]; - si2 = pCoef[(ia2 * 2U) + 1U]; - - /* xa - xc */ - Xaminusc = xaIn - xcIn; - /* xb - xd */ - Xbminusd = xbIn - xdIn; - /* ya - yc */ - Yaminusc = yaIn - ycIn; - /* yb - yd */ - Ybminusd = ybIn - ydIn; - - /* xa' = xa + xb + xc + xd */ - pSrc[(2U * i0)] = Xaplusc + Xbplusd; - - /* ya' = ya + yb + yc + yd */ - pSrc[(2U * i0) + 1U] = Yaplusc + Ybplusd; - - /* (xa - xc) - (yb - yd) */ - Xb12C_out = (Xaminusc - Ybminusd); - /* (ya - yc) + (xb - xd) */ - Yb12C_out = (Yaminusc + Xbminusd); - /* (xa + xc) - (xb + xd) */ - Xc12C_out = (Xaplusc - Xbplusd); - /* (ya + yc) - (yb + yd) */ - Yc12C_out = (Yaplusc - Ybplusd); - /* (xa - xc) + (yb - yd) */ - Xd12C_out = (Xaminusc + Ybminusd); - /* (ya - yc) - (xb - xd) */ - Yd12C_out = (Yaminusc - Xbminusd); - - co1 = pCoef[ia1 * 2U]; - si1 = pCoef[(ia1 * 2U) + 1U]; - - /* index calculation for the coefficients */ - ia3 = ia2 + ia1; - co3 = pCoef[ia3 * 2U]; - si3 = pCoef[(ia3 * 2U) + 1U]; - - Xb12_out = Xb12C_out * co1; - Yb12_out = Yb12C_out * co1; - Xc12_out = Xc12C_out * co2; - Yc12_out = Yc12C_out * co2; - Xd12_out = Xd12C_out * co3; - Yd12_out = Yd12C_out * co3; - - /* xb' = (xa+yb-xc-yd)co1 - (ya-xb-yc+xd)(si1) */ - //Xb12_out -= Yb12C_out * si1; - p0 = Yb12C_out * si1; - /* yb' = (ya-xb-yc+xd)co1 + (xa+yb-xc-yd)(si1) */ - //Yb12_out += Xb12C_out * si1; - p1 = Xb12C_out * si1; - /* xc' = (xa-xb+xc-xd)co2 - (ya-yb+yc-yd)(si2) */ - //Xc12_out -= Yc12C_out * si2; - p2 = Yc12C_out * si2; - /* yc' = (ya-yb+yc-yd)co2 + (xa-xb+xc-xd)(si2) */ - //Yc12_out += Xc12C_out * si2; - p3 = Xc12C_out * si2; - /* xd' = (xa-yb-xc+yd)co3 - (ya+xb-yc-xd)(si3) */ - //Xd12_out -= Yd12C_out * si3; - p4 = Yd12C_out * si3; - /* yd' = (ya+xb-yc-xd)co3 + (xa-yb-xc+yd)(si3) */ - //Yd12_out += Xd12C_out * si3; - p5 = Xd12C_out * si3; - - Xb12_out -= p0; - Yb12_out += p1; - Xc12_out -= p2; - Yc12_out += p3; - Xd12_out -= p4; - Yd12_out += p5; - - /* xc' = (xa-xb+xc-xd)co2 - (ya-yb+yc-yd)(si2) */ - pSrc[2U * i1] = Xc12_out; - - /* yc' = (ya-yb+yc-yd)co2 + (xa-xb+xc-xd)(si2) */ - pSrc[(2U * i1) + 1U] = Yc12_out; - - /* xb' = (xa+yb-xc-yd)co1 - (ya-xb-yc+xd)(si1) */ - pSrc[2U * i2] = Xb12_out; - - /* yb' = (ya-xb-yc+xd)co1 + (xa+yb-xc-yd)(si1) */ - pSrc[(2U * i2) + 1U] = Yb12_out; - - /* xd' = (xa-yb-xc+yd)co3 - (ya+xb-yc-xd)(si3) */ - pSrc[2U * i3] = Xd12_out; - - /* yd' = (ya+xb-yc-xd)co3 + (xa-yb-xc+yd)(si3) */ - pSrc[(2U * i3) + 1U] = Yd12_out; - - /* Twiddle coefficients index modifier */ - ia1 = ia1 + twidCoefModifier; - - /* Updating input index */ - i0 = i0 + 1U; - - } while (--j); - - twidCoefModifier <<= 2U; - - /* Calculation of second stage to excluding last stage */ - for (k = fftLen >> 2U; k > 4U; k >>= 2U) - { - /* Initializations for the first stage */ - n1 = n2; - n2 >>= 2U; - ia1 = 0U; - - /* Calculation of first stage */ - j = 0; - do - { - /* index calculation for the coefficients */ - ia2 = ia1 + ia1; - ia3 = ia2 + ia1; - co1 = pCoef[ia1 * 2U]; - si1 = pCoef[(ia1 * 2U) + 1U]; - co2 = pCoef[ia2 * 2U]; - si2 = pCoef[(ia2 * 2U) + 1U]; - co3 = pCoef[ia3 * 2U]; - si3 = pCoef[(ia3 * 2U) + 1U]; - - /* Twiddle coefficients index modifier */ - ia1 = ia1 + twidCoefModifier; - - i0 = j; - do - { - /* index calculation for the input as, */ - /* pSrc[i0 + 0], pSrc[i0 + fftLen/4], pSrc[i0 + fftLen/2], pSrc[i0 + 3fftLen/4] */ - i1 = i0 + n2; - i2 = i1 + n2; - i3 = i2 + n2; - - xaIn = pSrc[(2U * i0)]; - yaIn = pSrc[(2U * i0) + 1U]; - - xbIn = pSrc[(2U * i1)]; - ybIn = pSrc[(2U * i1) + 1U]; - - xcIn = pSrc[(2U * i2)]; - ycIn = pSrc[(2U * i2) + 1U]; - - xdIn = pSrc[(2U * i3)]; - ydIn = pSrc[(2U * i3) + 1U]; - - /* xa - xc */ - Xaminusc = xaIn - xcIn; - /* (xb - xd) */ - Xbminusd = xbIn - xdIn; - /* ya - yc */ - Yaminusc = yaIn - ycIn; - /* (yb - yd) */ - Ybminusd = ybIn - ydIn; - - /* xa + xc */ - Xaplusc = xaIn + xcIn; - /* xb + xd */ - Xbplusd = xbIn + xdIn; - /* ya + yc */ - Yaplusc = yaIn + ycIn; - /* yb + yd */ - Ybplusd = ybIn + ydIn; - - /* (xa - xc) - (yb - yd) */ - Xb12C_out = (Xaminusc - Ybminusd); - /* (ya - yc) + (xb - xd) */ - Yb12C_out = (Yaminusc + Xbminusd); - /* xa + xc -(xb + xd) */ - Xc12C_out = (Xaplusc - Xbplusd); - /* (ya + yc) - (yb + yd) */ - Yc12C_out = (Yaplusc - Ybplusd); - /* (xa - xc) + (yb - yd) */ - Xd12C_out = (Xaminusc + Ybminusd); - /* (ya - yc) - (xb - xd) */ - Yd12C_out = (Yaminusc - Xbminusd); - - pSrc[(2U * i0)] = Xaplusc + Xbplusd; - pSrc[(2U * i0) + 1U] = Yaplusc + Ybplusd; - - Xb12_out = Xb12C_out * co1; - Yb12_out = Yb12C_out * co1; - Xc12_out = Xc12C_out * co2; - Yc12_out = Yc12C_out * co2; - Xd12_out = Xd12C_out * co3; - Yd12_out = Yd12C_out * co3; - - /* xb' = (xa+yb-xc-yd)co1 - (ya-xb-yc+xd)(si1) */ - //Xb12_out -= Yb12C_out * si1; - p0 = Yb12C_out * si1; - /* yb' = (ya-xb-yc+xd)co1 + (xa+yb-xc-yd)(si1) */ - //Yb12_out += Xb12C_out * si1; - p1 = Xb12C_out * si1; - /* xc' = (xa-xb+xc-xd)co2 - (ya-yb+yc-yd)(si2) */ - //Xc12_out -= Yc12C_out * si2; - p2 = Yc12C_out * si2; - /* yc' = (ya-yb+yc-yd)co2 + (xa-xb+xc-xd)(si2) */ - //Yc12_out += Xc12C_out * si2; - p3 = Xc12C_out * si2; - /* xd' = (xa-yb-xc+yd)co3 - (ya+xb-yc-xd)(si3) */ - //Xd12_out -= Yd12C_out * si3; - p4 = Yd12C_out * si3; - /* yd' = (ya+xb-yc-xd)co3 + (xa-yb-xc+yd)(si3) */ - //Yd12_out += Xd12C_out * si3; - p5 = Xd12C_out * si3; - - Xb12_out -= p0; - Yb12_out += p1; - Xc12_out -= p2; - Yc12_out += p3; - Xd12_out -= p4; - Yd12_out += p5; - - /* xc' = (xa-xb+xc-xd)co2 - (ya-yb+yc-yd)(si2) */ - pSrc[2U * i1] = Xc12_out; - - /* yc' = (ya-yb+yc-yd)co2 + (xa-xb+xc-xd)(si2) */ - pSrc[(2U * i1) + 1U] = Yc12_out; - - /* xb' = (xa+yb-xc-yd)co1 - (ya-xb-yc+xd)(si1) */ - pSrc[2U * i2] = Xb12_out; - - /* yb' = (ya-xb-yc+xd)co1 + (xa+yb-xc-yd)(si1) */ - pSrc[(2U * i2) + 1U] = Yb12_out; - - /* xd' = (xa-yb-xc+yd)co3 - (ya+xb-yc-xd)(si3) */ - pSrc[2U * i3] = Xd12_out; - - /* yd' = (ya+xb-yc-xd)co3 + (xa-yb-xc+yd)(si3) */ - pSrc[(2U * i3) + 1U] = Yd12_out; - - i0 += n1; - } while (i0 < fftLen); - j++; - } while (j <= (n2 - 1U)); - twidCoefModifier <<= 2U; - } - /* Initializations of last stage */ - - j = fftLen >> 2; - ptr1 = &pSrc[0]; - - /* Calculations of last stage */ - do - { - xaIn = ptr1[0]; - yaIn = ptr1[1]; - xbIn = ptr1[2]; - ybIn = ptr1[3]; - xcIn = ptr1[4]; - ycIn = ptr1[5]; - xdIn = ptr1[6]; - ydIn = ptr1[7]; - - /* Butterfly implementation */ - /* xa + xc */ - Xaplusc = xaIn + xcIn; - - /* xa - xc */ - Xaminusc = xaIn - xcIn; - - /* ya + yc */ - Yaplusc = yaIn + ycIn; - - /* ya - yc */ - Yaminusc = yaIn - ycIn; - - /* xb + xd */ - Xbplusd = xbIn + xdIn; - - /* yb + yd */ - Ybplusd = ybIn + ydIn; - - /* (xb-xd) */ - Xbminusd = xbIn - xdIn; - - /* (yb-yd) */ - Ybminusd = ybIn - ydIn; - - /* xa' = (xa+xb+xc+xd) * onebyfftLen */ - a0 = (Xaplusc + Xbplusd); - /* ya' = (ya+yb+yc+yd) * onebyfftLen */ - a1 = (Yaplusc + Ybplusd); - /* xc' = (xa-xb+xc-xd) * onebyfftLen */ - a2 = (Xaplusc - Xbplusd); - /* yc' = (ya-yb+yc-yd) * onebyfftLen */ - a3 = (Yaplusc - Ybplusd); - /* xb' = (xa-yb-xc+yd) * onebyfftLen */ - a4 = (Xaminusc - Ybminusd); - /* yb' = (ya+xb-yc-xd) * onebyfftLen */ - a5 = (Yaminusc + Xbminusd); - /* xd' = (xa-yb-xc+yd) * onebyfftLen */ - a6 = (Xaminusc + Ybminusd); - /* yd' = (ya-xb-yc+xd) * onebyfftLen */ - a7 = (Yaminusc - Xbminusd); - - p0 = a0 * onebyfftLen; - p1 = a1 * onebyfftLen; - p2 = a2 * onebyfftLen; - p3 = a3 * onebyfftLen; - p4 = a4 * onebyfftLen; - p5 = a5 * onebyfftLen; - p6 = a6 * onebyfftLen; - p7 = a7 * onebyfftLen; - - /* xa' = (xa+xb+xc+xd) * onebyfftLen */ - ptr1[0] = p0; - /* ya' = (ya+yb+yc+yd) * onebyfftLen */ - ptr1[1] = p1; - /* xc' = (xa-xb+xc-xd) * onebyfftLen */ - ptr1[2] = p2; - /* yc' = (ya-yb+yc-yd) * onebyfftLen */ - ptr1[3] = p3; - /* xb' = (xa-yb-xc+yd) * onebyfftLen */ - ptr1[4] = p4; - /* yb' = (ya+xb-yc-xd) * onebyfftLen */ - ptr1[5] = p5; - /* xd' = (xa-yb-xc+yd) * onebyfftLen */ - ptr1[6] = p6; - /* yd' = (ya-xb-yc+xd) * onebyfftLen */ - ptr1[7] = p7; - - /* increment source pointer by 8 for next calculations */ - ptr1 = ptr1 + 8U; - - } while (--j); - -#else - - float32_t t1, t2, r1, r2, s1, s2; - - /* Run the below code for Cortex-M0 */ - - /* Initializations for the first stage */ - n2 = fftLen; - n1 = n2; - - /* Calculation of first stage */ - for (k = fftLen; k > 4U; k >>= 2U) - { - /* Initializations for the first stage */ - n1 = n2; - n2 >>= 2U; - ia1 = 0U; - - /* Calculation of first stage */ - j = 0; - do - { - /* index calculation for the coefficients */ - ia2 = ia1 + ia1; - ia3 = ia2 + ia1; - co1 = pCoef[ia1 * 2U]; - si1 = pCoef[(ia1 * 2U) + 1U]; - co2 = pCoef[ia2 * 2U]; - si2 = pCoef[(ia2 * 2U) + 1U]; - co3 = pCoef[ia3 * 2U]; - si3 = pCoef[(ia3 * 2U) + 1U]; - - /* Twiddle coefficients index modifier */ - ia1 = ia1 + twidCoefModifier; - - i0 = j; - do - { - /* index calculation for the input as, */ - /* pSrc[i0 + 0], pSrc[i0 + fftLen/4], pSrc[i0 + fftLen/2], pSrc[i0 + 3fftLen/4] */ - i1 = i0 + n2; - i2 = i1 + n2; - i3 = i2 + n2; - - /* xa + xc */ - r1 = pSrc[(2U * i0)] + pSrc[(2U * i2)]; - - /* xa - xc */ - r2 = pSrc[(2U * i0)] - pSrc[(2U * i2)]; - - /* ya + yc */ - s1 = pSrc[(2U * i0) + 1U] + pSrc[(2U * i2) + 1U]; - - /* ya - yc */ - s2 = pSrc[(2U * i0) + 1U] - pSrc[(2U * i2) + 1U]; - - /* xb + xd */ - t1 = pSrc[2U * i1] + pSrc[2U * i3]; - - /* xa' = xa + xb + xc + xd */ - pSrc[2U * i0] = r1 + t1; - - /* xa + xc -(xb + xd) */ - r1 = r1 - t1; - - /* yb + yd */ - t2 = pSrc[(2U * i1) + 1U] + pSrc[(2U * i3) + 1U]; - - /* ya' = ya + yb + yc + yd */ - pSrc[(2U * i0) + 1U] = s1 + t2; - - /* (ya + yc) - (yb + yd) */ - s1 = s1 - t2; - - /* (yb - yd) */ - t1 = pSrc[(2U * i1) + 1U] - pSrc[(2U * i3) + 1U]; - - /* (xb - xd) */ - t2 = pSrc[2U * i1] - pSrc[2U * i3]; - - /* xc' = (xa-xb+xc-xd)co2 - (ya-yb+yc-yd)(si2) */ - pSrc[2U * i1] = (r1 * co2) - (s1 * si2); - - /* yc' = (ya-yb+yc-yd)co2 + (xa-xb+xc-xd)(si2) */ - pSrc[(2U * i1) + 1U] = (s1 * co2) + (r1 * si2); - - /* (xa - xc) - (yb - yd) */ - r1 = r2 - t1; - - /* (xa - xc) + (yb - yd) */ - r2 = r2 + t1; - - /* (ya - yc) + (xb - xd) */ - s1 = s2 + t2; - - /* (ya - yc) - (xb - xd) */ - s2 = s2 - t2; - - /* xb' = (xa+yb-xc-yd)co1 - (ya-xb-yc+xd)(si1) */ - pSrc[2U * i2] = (r1 * co1) - (s1 * si1); - - /* yb' = (ya-xb-yc+xd)co1 + (xa+yb-xc-yd)(si1) */ - pSrc[(2U * i2) + 1U] = (s1 * co1) + (r1 * si1); - - /* xd' = (xa-yb-xc+yd)co3 - (ya+xb-yc-xd)(si3) */ - pSrc[2U * i3] = (r2 * co3) - (s2 * si3); - - /* yd' = (ya+xb-yc-xd)co3 + (xa-yb-xc+yd)(si3) */ - pSrc[(2U * i3) + 1U] = (s2 * co3) + (r2 * si3); - - i0 += n1; - } while ( i0 < fftLen); - j++; - } while (j <= (n2 - 1U)); - twidCoefModifier <<= 2U; - } - /* Initializations of last stage */ - n1 = n2; - n2 >>= 2U; - - /* Calculations of last stage */ - for (i0 = 0U; i0 <= (fftLen - n1); i0 += n1) - { - /* index calculation for the input as, */ - /* pSrc[i0 + 0], pSrc[i0 + fftLen/4], pSrc[i0 + fftLen/2], pSrc[i0 + 3fftLen/4] */ - i1 = i0 + n2; - i2 = i1 + n2; - i3 = i2 + n2; - - /* Butterfly implementation */ - /* xa + xc */ - r1 = pSrc[2U * i0] + pSrc[2U * i2]; - - /* xa - xc */ - r2 = pSrc[2U * i0] - pSrc[2U * i2]; - - /* ya + yc */ - s1 = pSrc[(2U * i0) + 1U] + pSrc[(2U * i2) + 1U]; - - /* ya - yc */ - s2 = pSrc[(2U * i0) + 1U] - pSrc[(2U * i2) + 1U]; - - /* xc + xd */ - t1 = pSrc[2U * i1] + pSrc[2U * i3]; - - /* xa' = xa + xb + xc + xd */ - pSrc[2U * i0] = (r1 + t1) * onebyfftLen; - - /* (xa + xb) - (xc + xd) */ - r1 = r1 - t1; - - /* yb + yd */ - t2 = pSrc[(2U * i1) + 1U] + pSrc[(2U * i3) + 1U]; - - /* ya' = ya + yb + yc + yd */ - pSrc[(2U * i0) + 1U] = (s1 + t2) * onebyfftLen; - - /* (ya + yc) - (yb + yd) */ - s1 = s1 - t2; - - /* (yb-yd) */ - t1 = pSrc[(2U * i1) + 1U] - pSrc[(2U * i3) + 1U]; - - /* (xb-xd) */ - t2 = pSrc[2U * i1] - pSrc[2U * i3]; - - /* xc' = (xa-xb+xc-xd)co2 - (ya-yb+yc-yd)(si2) */ - pSrc[2U * i1] = r1 * onebyfftLen; - - /* yc' = (ya-yb+yc-yd)co2 + (xa-xb+xc-xd)(si2) */ - pSrc[(2U * i1) + 1U] = s1 * onebyfftLen; - - /* (xa - xc) - (yb-yd) */ - r1 = r2 - t1; - - /* (xa - xc) + (yb-yd) */ - r2 = r2 + t1; - - /* (ya - yc) + (xb-xd) */ - s1 = s2 + t2; - - /* (ya - yc) - (xb-xd) */ - s2 = s2 - t2; - - /* xb' = (xa+yb-xc-yd)co1 - (ya-xb-yc+xd)(si1) */ - pSrc[2U * i2] = r1 * onebyfftLen; - - /* yb' = (ya-xb-yc+xd)co1 + (xa+yb-xc-yd)(si1) */ - pSrc[(2U * i2) + 1U] = s1 * onebyfftLen; - - /* xd' = (xa-yb-xc+yd)co3 - (ya+xb-yc-xd)(si3) */ - pSrc[2U * i3] = r2 * onebyfftLen; - - /* yd' = (ya+xb-yc-xd)co3 + (xa-yb-xc+yd)(si3) */ - pSrc[(2U * i3) + 1U] = s2 * onebyfftLen; - } - -#endif /* #if defined (ARM_MATH_DSP) */ -} - - diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix4_init_f32.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix4_init_f32.c deleted file mode 100644 index 14ea487..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix4_init_f32.c +++ /dev/null @@ -1,152 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_cfft_radix4_init_f32.c - * Description: Radix-4 Decimation in Frequency Floating-point CFFT & CIFFT Initialization function - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" -#include "arm_common_tables.h" - -/** - * @ingroup groupTransforms - */ - -/** - * @addtogroup ComplexFFT - * @{ - */ - -/** -* @brief Initialization function for the floating-point CFFT/CIFFT. -* @deprecated Do not use this function. It has been superceded by \ref arm_cfft_f32 and will be removed -* in the future. -* @param[in,out] *S points to an instance of the floating-point CFFT/CIFFT structure. -* @param[in] fftLen length of the FFT. -* @param[in] ifftFlag flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. -* @param[in] bitReverseFlag flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. -* @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if fftLen is not a supported value. -* -* \par Description: -* \par -* The parameter ifftFlag controls whether a forward or inverse transform is computed. -* Set(=1) ifftFlag for calculation of CIFFT otherwise CFFT is calculated -* \par -* The parameter bitReverseFlag controls whether output is in normal order or bit reversed order. -* Set(=1) bitReverseFlag for output to be in normal order otherwise output is in bit reversed order. -* \par -* The parameter fftLen Specifies length of CFFT/CIFFT process. Supported FFT Lengths are 16, 64, 256, 1024. -* \par -* This Function also initializes Twiddle factor table pointer and Bit reversal table pointer. -*/ - -arm_status arm_cfft_radix4_init_f32( - arm_cfft_radix4_instance_f32 * S, - uint16_t fftLen, - uint8_t ifftFlag, - uint8_t bitReverseFlag) -{ - /* Initialise the default arm status */ - arm_status status = ARM_MATH_SUCCESS; - - /* Initialise the FFT length */ - S->fftLen = fftLen; - - /* Initialise the Twiddle coefficient pointer */ - S->pTwiddle = (float32_t *) twiddleCoef; - - /* Initialise the Flag for selection of CFFT or CIFFT */ - S->ifftFlag = ifftFlag; - - /* Initialise the Flag for calculation Bit reversal or not */ - S->bitReverseFlag = bitReverseFlag; - - /* Initializations of structure parameters depending on the FFT length */ - switch (S->fftLen) - { - - case 4096U: - /* Initializations of structure parameters for 4096 point FFT */ - - /* Initialise the twiddle coef modifier value */ - S->twidCoefModifier = 1U; - /* Initialise the bit reversal table modifier */ - S->bitRevFactor = 1U; - /* Initialise the bit reversal table pointer */ - S->pBitRevTable = (uint16_t *) armBitRevTable; - /* Initialise the 1/fftLen Value */ - S->onebyfftLen = 0.000244140625; - break; - - case 1024U: - /* Initializations of structure parameters for 1024 point FFT */ - - /* Initialise the twiddle coef modifier value */ - S->twidCoefModifier = 4U; - /* Initialise the bit reversal table modifier */ - S->bitRevFactor = 4U; - /* Initialise the bit reversal table pointer */ - S->pBitRevTable = (uint16_t *) & armBitRevTable[3]; - /* Initialise the 1/fftLen Value */ - S->onebyfftLen = 0.0009765625f; - break; - - - case 256U: - /* Initializations of structure parameters for 256 point FFT */ - S->twidCoefModifier = 16U; - S->bitRevFactor = 16U; - S->pBitRevTable = (uint16_t *) & armBitRevTable[15]; - S->onebyfftLen = 0.00390625f; - break; - - case 64U: - /* Initializations of structure parameters for 64 point FFT */ - S->twidCoefModifier = 64U; - S->bitRevFactor = 64U; - S->pBitRevTable = (uint16_t *) & armBitRevTable[63]; - S->onebyfftLen = 0.015625f; - break; - - case 16U: - /* Initializations of structure parameters for 16 point FFT */ - S->twidCoefModifier = 256U; - S->bitRevFactor = 256U; - S->pBitRevTable = (uint16_t *) & armBitRevTable[255]; - S->onebyfftLen = 0.0625f; - break; - - - default: - /* Reporting argument error if fftSize is not valid value */ - status = ARM_MATH_ARGUMENT_ERROR; - break; - } - - return (status); -} - -/** - * @} end of ComplexFFT group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix4_init_q15.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix4_init_q15.c deleted file mode 100644 index ed78236..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix4_init_q15.c +++ /dev/null @@ -1,140 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_cfft_radix4_init_q15.c - * Description: Radix-4 Decimation in Frequency Q15 FFT & IFFT initialization function - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" -#include "arm_common_tables.h" - -/** - * @ingroup groupTransforms - */ - - -/** - * @addtogroup ComplexFFT - * @{ - */ - - -/** -* @brief Initialization function for the Q15 CFFT/CIFFT. -* @deprecated Do not use this function. It has been superseded by \ref arm_cfft_q15 and will be removed -* @param[in,out] *S points to an instance of the Q15 CFFT/CIFFT structure. -* @param[in] fftLen length of the FFT. -* @param[in] ifftFlag flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. -* @param[in] bitReverseFlag flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. -* @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if fftLen is not a supported value. -* -* \par Description: -* \par -* The parameter ifftFlag controls whether a forward or inverse transform is computed. -* Set(=1) ifftFlag for calculation of CIFFT otherwise CFFT is calculated -* \par -* The parameter bitReverseFlag controls whether output is in normal order or bit reversed order. -* Set(=1) bitReverseFlag for output to be in normal order otherwise output is in bit reversed order. -* \par -* The parameter fftLen Specifies length of CFFT/CIFFT process. Supported FFT Lengths are 16, 64, 256, 1024. -* \par -* This Function also initializes Twiddle factor table pointer and Bit reversal table pointer. -*/ - -arm_status arm_cfft_radix4_init_q15( - arm_cfft_radix4_instance_q15 * S, - uint16_t fftLen, - uint8_t ifftFlag, - uint8_t bitReverseFlag) -{ - /* Initialise the default arm status */ - arm_status status = ARM_MATH_SUCCESS; - /* Initialise the FFT length */ - S->fftLen = fftLen; - /* Initialise the Twiddle coefficient pointer */ - S->pTwiddle = (q15_t *) twiddleCoef_4096_q15; - /* Initialise the Flag for selection of CFFT or CIFFT */ - S->ifftFlag = ifftFlag; - /* Initialise the Flag for calculation Bit reversal or not */ - S->bitReverseFlag = bitReverseFlag; - - /* Initializations of structure parameters depending on the FFT length */ - switch (S->fftLen) - { - case 4096U: - /* Initializations of structure parameters for 4096 point FFT */ - - /* Initialise the twiddle coef modifier value */ - S->twidCoefModifier = 1U; - /* Initialise the bit reversal table modifier */ - S->bitRevFactor = 1U; - /* Initialise the bit reversal table pointer */ - S->pBitRevTable = (uint16_t *) armBitRevTable; - - break; - - case 1024U: - /* Initializations of structure parameters for 1024 point FFT */ - S->twidCoefModifier = 4U; - S->bitRevFactor = 4U; - S->pBitRevTable = (uint16_t *) & armBitRevTable[3]; - - break; - - case 256U: - /* Initializations of structure parameters for 256 point FFT */ - S->twidCoefModifier = 16U; - S->bitRevFactor = 16U; - S->pBitRevTable = (uint16_t *) & armBitRevTable[15]; - - break; - - case 64U: - /* Initializations of structure parameters for 64 point FFT */ - S->twidCoefModifier = 64U; - S->bitRevFactor = 64U; - S->pBitRevTable = (uint16_t *) & armBitRevTable[63]; - - break; - - case 16U: - /* Initializations of structure parameters for 16 point FFT */ - S->twidCoefModifier = 256U; - S->bitRevFactor = 256U; - S->pBitRevTable = (uint16_t *) & armBitRevTable[255]; - - break; - - default: - /* Reporting argument error if fftSize is not valid value */ - status = ARM_MATH_ARGUMENT_ERROR; - break; - } - - return (status); -} - -/** - * @} end of ComplexFFT group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix4_init_q31.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix4_init_q31.c deleted file mode 100644 index 6f11763..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix4_init_q31.c +++ /dev/null @@ -1,136 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_cfft_radix4_init_q31.c - * Description: Radix-4 Decimation in Frequency Q31 FFT & IFFT initialization function - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" -#include "arm_common_tables.h" - -/** - * @ingroup groupTransforms - */ - -/** - * @addtogroup ComplexFFT - * @{ - */ - -/** -* -* @brief Initialization function for the Q31 CFFT/CIFFT. -* @deprecated Do not use this function. It has been superseded by \ref arm_cfft_q31 and will be removed -* @param[in,out] *S points to an instance of the Q31 CFFT/CIFFT structure. -* @param[in] fftLen length of the FFT. -* @param[in] ifftFlag flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. -* @param[in] bitReverseFlag flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. -* @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if fftLen is not a supported value. -* -* \par Description: -* \par -* The parameter ifftFlag controls whether a forward or inverse transform is computed. -* Set(=1) ifftFlag for calculation of CIFFT otherwise CFFT is calculated -* \par -* The parameter bitReverseFlag controls whether output is in normal order or bit reversed order. -* Set(=1) bitReverseFlag for output to be in normal order otherwise output is in bit reversed order. -* \par -* The parameter fftLen Specifies length of CFFT/CIFFT process. Supported FFT Lengths are 16, 64, 256, 1024. -* \par -* This Function also initializes Twiddle factor table pointer and Bit reversal table pointer. -*/ - -arm_status arm_cfft_radix4_init_q31( - arm_cfft_radix4_instance_q31 * S, - uint16_t fftLen, - uint8_t ifftFlag, - uint8_t bitReverseFlag) -{ - /* Initialise the default arm status */ - arm_status status = ARM_MATH_SUCCESS; - /* Initialise the FFT length */ - S->fftLen = fftLen; - /* Initialise the Twiddle coefficient pointer */ - S->pTwiddle = (q31_t *) twiddleCoef_4096_q31; - /* Initialise the Flag for selection of CFFT or CIFFT */ - S->ifftFlag = ifftFlag; - /* Initialise the Flag for calculation Bit reversal or not */ - S->bitReverseFlag = bitReverseFlag; - - /* Initializations of Instance structure depending on the FFT length */ - switch (S->fftLen) - { - /* Initializations of structure parameters for 4096 point FFT */ - case 4096U: - /* Initialise the twiddle coef modifier value */ - S->twidCoefModifier = 1U; - /* Initialise the bit reversal table modifier */ - S->bitRevFactor = 1U; - /* Initialise the bit reversal table pointer */ - S->pBitRevTable = (uint16_t *) armBitRevTable; - break; - - /* Initializations of structure parameters for 1024 point FFT */ - case 1024U: - /* Initialise the twiddle coef modifier value */ - S->twidCoefModifier = 4U; - /* Initialise the bit reversal table modifier */ - S->bitRevFactor = 4U; - /* Initialise the bit reversal table pointer */ - S->pBitRevTable = (uint16_t *) & armBitRevTable[3]; - break; - - case 256U: - /* Initializations of structure parameters for 256 point FFT */ - S->twidCoefModifier = 16U; - S->bitRevFactor = 16U; - S->pBitRevTable = (uint16_t *) & armBitRevTable[15]; - break; - - case 64U: - /* Initializations of structure parameters for 64 point FFT */ - S->twidCoefModifier = 64U; - S->bitRevFactor = 64U; - S->pBitRevTable = (uint16_t *) & armBitRevTable[63]; - break; - - case 16U: - /* Initializations of structure parameters for 16 point FFT */ - S->twidCoefModifier = 256U; - S->bitRevFactor = 256U; - S->pBitRevTable = (uint16_t *) & armBitRevTable[255]; - break; - - default: - /* Reporting argument error if fftSize is not valid value */ - status = ARM_MATH_ARGUMENT_ERROR; - break; - } - - return (status); -} - -/** - * @} end of ComplexFFT group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix4_q15.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix4_q15.c deleted file mode 100644 index f3451f7..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix4_q15.c +++ /dev/null @@ -1,1910 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_cfft_radix4_q15.c - * Description: This file has function definition of Radix-4 FFT & IFFT function and - * In-place bit reversal using bit reversal table - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - - -void arm_radix4_butterfly_q15( - q15_t * pSrc16, - uint32_t fftLen, - q15_t * pCoef16, - uint32_t twidCoefModifier); - -void arm_radix4_butterfly_inverse_q15( - q15_t * pSrc16, - uint32_t fftLen, - q15_t * pCoef16, - uint32_t twidCoefModifier); - -void arm_bitreversal_q15( - q15_t * pSrc, - uint32_t fftLen, - uint16_t bitRevFactor, - uint16_t * pBitRevTab); - -/** - * @ingroup groupTransforms - */ - -/** - * @addtogroup ComplexFFT - * @{ - */ - - -/** - * @details - * @brief Processing function for the Q15 CFFT/CIFFT. - * @deprecated Do not use this function. It has been superseded by \ref arm_cfft_q15 and will be removed - * @param[in] *S points to an instance of the Q15 CFFT/CIFFT structure. - * @param[in, out] *pSrc points to the complex data buffer. Processing occurs in-place. - * @return none. - * - * \par Input and output formats: - * \par - * Internally input is downscaled by 2 for every stage to avoid saturations inside CFFT/CIFFT process. - * Hence the output format is different for different FFT sizes. - * The input and output formats for different FFT sizes and number of bits to upscale are mentioned in the tables below for CFFT and CIFFT: - * \par - * \image html CFFTQ15.gif "Input and Output Formats for Q15 CFFT" - * \image html CIFFTQ15.gif "Input and Output Formats for Q15 CIFFT" - */ - -void arm_cfft_radix4_q15( - const arm_cfft_radix4_instance_q15 * S, - q15_t * pSrc) -{ - if (S->ifftFlag == 1U) - { - /* Complex IFFT radix-4 */ - arm_radix4_butterfly_inverse_q15(pSrc, S->fftLen, S->pTwiddle, S->twidCoefModifier); - } - else - { - /* Complex FFT radix-4 */ - arm_radix4_butterfly_q15(pSrc, S->fftLen, S->pTwiddle, S->twidCoefModifier); - } - - if (S->bitReverseFlag == 1U) - { - /* Bit Reversal */ - arm_bitreversal_q15(pSrc, S->fftLen, S->bitRevFactor, S->pBitRevTable); - } - -} - -/** - * @} end of ComplexFFT group - */ - -/* -* Radix-4 FFT algorithm used is : -* -* Input real and imaginary data: -* x(n) = xa + j * ya -* x(n+N/4 ) = xb + j * yb -* x(n+N/2 ) = xc + j * yc -* x(n+3N 4) = xd + j * yd -* -* -* Output real and imaginary data: -* x(4r) = xa'+ j * ya' -* x(4r+1) = xb'+ j * yb' -* x(4r+2) = xc'+ j * yc' -* x(4r+3) = xd'+ j * yd' -* -* -* Twiddle factors for radix-4 FFT: -* Wn = co1 + j * (- si1) -* W2n = co2 + j * (- si2) -* W3n = co3 + j * (- si3) - -* The real and imaginary output values for the radix-4 butterfly are -* xa' = xa + xb + xc + xd -* ya' = ya + yb + yc + yd -* xb' = (xa+yb-xc-yd)* co1 + (ya-xb-yc+xd)* (si1) -* yb' = (ya-xb-yc+xd)* co1 - (xa+yb-xc-yd)* (si1) -* xc' = (xa-xb+xc-xd)* co2 + (ya-yb+yc-yd)* (si2) -* yc' = (ya-yb+yc-yd)* co2 - (xa-xb+xc-xd)* (si2) -* xd' = (xa-yb-xc+yd)* co3 + (ya+xb-yc-xd)* (si3) -* yd' = (ya+xb-yc-xd)* co3 - (xa-yb-xc+yd)* (si3) -* -*/ - -/** - * @brief Core function for the Q15 CFFT butterfly process. - * @param[in, out] *pSrc16 points to the in-place buffer of Q15 data type. - * @param[in] fftLen length of the FFT. - * @param[in] *pCoef16 points to twiddle coefficient buffer. - * @param[in] twidCoefModifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. - * @return none. - */ - -void arm_radix4_butterfly_q15( - q15_t * pSrc16, - uint32_t fftLen, - q15_t * pCoef16, - uint32_t twidCoefModifier) -{ - -#if defined (ARM_MATH_DSP) - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - q31_t R, S, T, U; - q31_t C1, C2, C3, out1, out2; - uint32_t n1, n2, ic, i0, j, k; - - q15_t *ptr1; - q15_t *pSi0; - q15_t *pSi1; - q15_t *pSi2; - q15_t *pSi3; - - q31_t xaya, xbyb, xcyc, xdyd; - - /* Total process is divided into three stages */ - - /* process first stage, middle stages, & last stage */ - - /* Initializations for the first stage */ - n2 = fftLen; - n1 = n2; - - /* n2 = fftLen/4 */ - n2 >>= 2U; - - /* Index for twiddle coefficient */ - ic = 0U; - - /* Index for input read and output write */ - j = n2; - - pSi0 = pSrc16; - pSi1 = pSi0 + 2 * n2; - pSi2 = pSi1 + 2 * n2; - pSi3 = pSi2 + 2 * n2; - - /* Input is in 1.15(q15) format */ - - /* start of first stage process */ - do - { - /* Butterfly implementation */ - - /* Reading i0, i0+fftLen/2 inputs */ - /* Read ya (real), xa(imag) input */ - T = _SIMD32_OFFSET(pSi0); - T = __SHADD16(T, 0); // this is just a SIMD arithmetic shift right by 1 - T = __SHADD16(T, 0); // it turns out doing this twice is 2 cycles, the alternative takes 3 cycles - //in = ((int16_t) (T & 0xFFFF)) >> 2; // alternative code that takes 3 cycles - //T = ((T >> 2) & 0xFFFF0000) | (in & 0xFFFF); - - /* Read yc (real), xc(imag) input */ - S = _SIMD32_OFFSET(pSi2); - S = __SHADD16(S, 0); - S = __SHADD16(S, 0); - - /* R = packed((ya + yc), (xa + xc) ) */ - R = __QADD16(T, S); - - /* S = packed((ya - yc), (xa - xc) ) */ - S = __QSUB16(T, S); - - /* Reading i0+fftLen/4 , i0+3fftLen/4 inputs */ - /* Read yb (real), xb(imag) input */ - T = _SIMD32_OFFSET(pSi1); - T = __SHADD16(T, 0); - T = __SHADD16(T, 0); - - /* Read yd (real), xd(imag) input */ - U = _SIMD32_OFFSET(pSi3); - U = __SHADD16(U, 0); - U = __SHADD16(U, 0); - - /* T = packed((yb + yd), (xb + xd) ) */ - T = __QADD16(T, U); - - /* writing the butterfly processed i0 sample */ - /* xa' = xa + xb + xc + xd */ - /* ya' = ya + yb + yc + yd */ - _SIMD32_OFFSET(pSi0) = __SHADD16(R, T); - pSi0 += 2; - - /* R = packed((ya + yc) - (yb + yd), (xa + xc)- (xb + xd)) */ - R = __QSUB16(R, T); - - /* co2 & si2 are read from SIMD Coefficient pointer */ - C2 = _SIMD32_OFFSET(pCoef16 + (4U * ic)); - -#ifndef ARM_MATH_BIG_ENDIAN - - /* xc' = (xa-xb+xc-xd)* co2 + (ya-yb+yc-yd)* (si2) */ - out1 = __SMUAD(C2, R) >> 16U; - /* yc' = (ya-yb+yc-yd)* co2 - (xa-xb+xc-xd)* (si2) */ - out2 = __SMUSDX(C2, R); - -#else - - /* xc' = (ya-yb+yc-yd)* co2 - (xa-xb+xc-xd)* (si2) */ - out1 = __SMUSDX(R, C2) >> 16U; - /* yc' = (xa-xb+xc-xd)* co2 + (ya-yb+yc-yd)* (si2) */ - out2 = __SMUAD(C2, R); - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - /* Reading i0+fftLen/4 */ - /* T = packed(yb, xb) */ - T = _SIMD32_OFFSET(pSi1); - T = __SHADD16(T, 0); - T = __SHADD16(T, 0); - - /* writing the butterfly processed i0 + fftLen/4 sample */ - /* writing output(xc', yc') in little endian format */ - _SIMD32_OFFSET(pSi1) = - (q31_t) ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF); - pSi1 += 2; - - /* Butterfly calculations */ - /* U = packed(yd, xd) */ - U = _SIMD32_OFFSET(pSi3); - U = __SHADD16(U, 0); - U = __SHADD16(U, 0); - - /* T = packed(yb-yd, xb-xd) */ - T = __QSUB16(T, U); - -#ifndef ARM_MATH_BIG_ENDIAN - - /* R = packed((ya-yc) + (xb- xd) , (xa-xc) - (yb-yd)) */ - R = __QASX(S, T); - /* S = packed((ya-yc) - (xb- xd), (xa-xc) + (yb-yd)) */ - S = __QSAX(S, T); - -#else - - /* R = packed((ya-yc) + (xb- xd) , (xa-xc) - (yb-yd)) */ - R = __QSAX(S, T); - /* S = packed((ya-yc) - (xb- xd), (xa-xc) + (yb-yd)) */ - S = __QASX(S, T); - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - /* co1 & si1 are read from SIMD Coefficient pointer */ - C1 = _SIMD32_OFFSET(pCoef16 + (2U * ic)); - /* Butterfly process for the i0+fftLen/2 sample */ - -#ifndef ARM_MATH_BIG_ENDIAN - - /* xb' = (xa+yb-xc-yd)* co1 + (ya-xb-yc+xd)* (si1) */ - out1 = __SMUAD(C1, S) >> 16U; - /* yb' = (ya-xb-yc+xd)* co1 - (xa+yb-xc-yd)* (si1) */ - out2 = __SMUSDX(C1, S); - -#else - - /* xb' = (ya-xb-yc+xd)* co1 - (xa+yb-xc-yd)* (si1) */ - out1 = __SMUSDX(S, C1) >> 16U; - /* yb' = (xa+yb-xc-yd)* co1 + (ya-xb-yc+xd)* (si1) */ - out2 = __SMUAD(C1, S); - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - /* writing output(xb', yb') in little endian format */ - _SIMD32_OFFSET(pSi2) = - ((out2) & 0xFFFF0000) | ((out1) & 0x0000FFFF); - pSi2 += 2; - - - /* co3 & si3 are read from SIMD Coefficient pointer */ - C3 = _SIMD32_OFFSET(pCoef16 + (6U * ic)); - /* Butterfly process for the i0+3fftLen/4 sample */ - -#ifndef ARM_MATH_BIG_ENDIAN - - /* xd' = (xa-yb-xc+yd)* co3 + (ya+xb-yc-xd)* (si3) */ - out1 = __SMUAD(C3, R) >> 16U; - /* yd' = (ya+xb-yc-xd)* co3 - (xa-yb-xc+yd)* (si3) */ - out2 = __SMUSDX(C3, R); - -#else - - /* xd' = (ya+xb-yc-xd)* co3 - (xa-yb-xc+yd)* (si3) */ - out1 = __SMUSDX(R, C3) >> 16U; - /* yd' = (xa-yb-xc+yd)* co3 + (ya+xb-yc-xd)* (si3) */ - out2 = __SMUAD(C3, R); - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - /* writing output(xd', yd') in little endian format */ - _SIMD32_OFFSET(pSi3) = - ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF); - pSi3 += 2; - - /* Twiddle coefficients index modifier */ - ic = ic + twidCoefModifier; - - } while (--j); - /* data is in 4.11(q11) format */ - - /* end of first stage process */ - - - /* start of middle stage process */ - - /* Twiddle coefficients index modifier */ - twidCoefModifier <<= 2U; - - /* Calculation of Middle stage */ - for (k = fftLen / 4U; k > 4U; k >>= 2U) - { - /* Initializations for the middle stage */ - n1 = n2; - n2 >>= 2U; - ic = 0U; - - for (j = 0U; j <= (n2 - 1U); j++) - { - /* index calculation for the coefficients */ - C1 = _SIMD32_OFFSET(pCoef16 + (2U * ic)); - C2 = _SIMD32_OFFSET(pCoef16 + (4U * ic)); - C3 = _SIMD32_OFFSET(pCoef16 + (6U * ic)); - - /* Twiddle coefficients index modifier */ - ic = ic + twidCoefModifier; - - pSi0 = pSrc16 + 2 * j; - pSi1 = pSi0 + 2 * n2; - pSi2 = pSi1 + 2 * n2; - pSi3 = pSi2 + 2 * n2; - - /* Butterfly implementation */ - for (i0 = j; i0 < fftLen; i0 += n1) - { - /* Reading i0, i0+fftLen/2 inputs */ - /* Read ya (real), xa(imag) input */ - T = _SIMD32_OFFSET(pSi0); - - /* Read yc (real), xc(imag) input */ - S = _SIMD32_OFFSET(pSi2); - - /* R = packed( (ya + yc), (xa + xc)) */ - R = __QADD16(T, S); - - /* S = packed((ya - yc), (xa - xc)) */ - S = __QSUB16(T, S); - - /* Reading i0+fftLen/4 , i0+3fftLen/4 inputs */ - /* Read yb (real), xb(imag) input */ - T = _SIMD32_OFFSET(pSi1); - - /* Read yd (real), xd(imag) input */ - U = _SIMD32_OFFSET(pSi3); - - /* T = packed( (yb + yd), (xb + xd)) */ - T = __QADD16(T, U); - - /* writing the butterfly processed i0 sample */ - - /* xa' = xa + xb + xc + xd */ - /* ya' = ya + yb + yc + yd */ - out1 = __SHADD16(R, T); - out1 = __SHADD16(out1, 0); - _SIMD32_OFFSET(pSi0) = out1; - pSi0 += 2 * n1; - - /* R = packed( (ya + yc) - (yb + yd), (xa + xc) - (xb + xd)) */ - R = __SHSUB16(R, T); - -#ifndef ARM_MATH_BIG_ENDIAN - - /* (ya-yb+yc-yd)* (si2) + (xa-xb+xc-xd)* co2 */ - out1 = __SMUAD(C2, R) >> 16U; - - /* (ya-yb+yc-yd)* co2 - (xa-xb+xc-xd)* (si2) */ - out2 = __SMUSDX(C2, R); - -#else - - /* (ya-yb+yc-yd)* co2 - (xa-xb+xc-xd)* (si2) */ - out1 = __SMUSDX(R, C2) >> 16U; - - /* (ya-yb+yc-yd)* (si2) + (xa-xb+xc-xd)* co2 */ - out2 = __SMUAD(C2, R); - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - /* Reading i0+3fftLen/4 */ - /* Read yb (real), xb(imag) input */ - T = _SIMD32_OFFSET(pSi1); - - /* writing the butterfly processed i0 + fftLen/4 sample */ - /* xc' = (xa-xb+xc-xd)* co2 + (ya-yb+yc-yd)* (si2) */ - /* yc' = (ya-yb+yc-yd)* co2 - (xa-xb+xc-xd)* (si2) */ - _SIMD32_OFFSET(pSi1) = - ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF); - pSi1 += 2 * n1; - - /* Butterfly calculations */ - - /* Read yd (real), xd(imag) input */ - U = _SIMD32_OFFSET(pSi3); - - /* T = packed(yb-yd, xb-xd) */ - T = __QSUB16(T, U); - -#ifndef ARM_MATH_BIG_ENDIAN - - /* R = packed((ya-yc) + (xb- xd) , (xa-xc) - (yb-yd)) */ - R = __SHASX(S, T); - - /* S = packed((ya-yc) - (xb- xd), (xa-xc) + (yb-yd)) */ - S = __SHSAX(S, T); - - - /* Butterfly process for the i0+fftLen/2 sample */ - out1 = __SMUAD(C1, S) >> 16U; - out2 = __SMUSDX(C1, S); - -#else - - /* R = packed((ya-yc) + (xb- xd) , (xa-xc) - (yb-yd)) */ - R = __SHSAX(S, T); - - /* S = packed((ya-yc) - (xb- xd), (xa-xc) + (yb-yd)) */ - S = __SHASX(S, T); - - - /* Butterfly process for the i0+fftLen/2 sample */ - out1 = __SMUSDX(S, C1) >> 16U; - out2 = __SMUAD(C1, S); - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - /* xb' = (xa+yb-xc-yd)* co1 + (ya-xb-yc+xd)* (si1) */ - /* yb' = (ya-xb-yc+xd)* co1 - (xa+yb-xc-yd)* (si1) */ - _SIMD32_OFFSET(pSi2) = - ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF); - pSi2 += 2 * n1; - - /* Butterfly process for the i0+3fftLen/4 sample */ - -#ifndef ARM_MATH_BIG_ENDIAN - - out1 = __SMUAD(C3, R) >> 16U; - out2 = __SMUSDX(C3, R); - -#else - - out1 = __SMUSDX(R, C3) >> 16U; - out2 = __SMUAD(C3, R); - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - /* xd' = (xa-yb-xc+yd)* co3 + (ya+xb-yc-xd)* (si3) */ - /* yd' = (ya+xb-yc-xd)* co3 - (xa-yb-xc+yd)* (si3) */ - _SIMD32_OFFSET(pSi3) = - ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF); - pSi3 += 2 * n1; - } - } - /* Twiddle coefficients index modifier */ - twidCoefModifier <<= 2U; - } - /* end of middle stage process */ - - - /* data is in 10.6(q6) format for the 1024 point */ - /* data is in 8.8(q8) format for the 256 point */ - /* data is in 6.10(q10) format for the 64 point */ - /* data is in 4.12(q12) format for the 16 point */ - - /* Initializations for the last stage */ - j = fftLen >> 2; - - ptr1 = &pSrc16[0]; - - /* start of last stage process */ - - /* Butterfly implementation */ - do - { - /* Read xa (real), ya(imag) input */ - xaya = *__SIMD32(ptr1)++; - - /* Read xb (real), yb(imag) input */ - xbyb = *__SIMD32(ptr1)++; - - /* Read xc (real), yc(imag) input */ - xcyc = *__SIMD32(ptr1)++; - - /* Read xd (real), yd(imag) input */ - xdyd = *__SIMD32(ptr1)++; - - /* R = packed((ya + yc), (xa + xc)) */ - R = __QADD16(xaya, xcyc); - - /* T = packed((yb + yd), (xb + xd)) */ - T = __QADD16(xbyb, xdyd); - - /* pointer updation for writing */ - ptr1 = ptr1 - 8U; - - - /* xa' = xa + xb + xc + xd */ - /* ya' = ya + yb + yc + yd */ - *__SIMD32(ptr1)++ = __SHADD16(R, T); - - /* T = packed((yb + yd), (xb + xd)) */ - T = __QADD16(xbyb, xdyd); - - /* xc' = (xa-xb+xc-xd) */ - /* yc' = (ya-yb+yc-yd) */ - *__SIMD32(ptr1)++ = __SHSUB16(R, T); - - /* S = packed((ya - yc), (xa - xc)) */ - S = __QSUB16(xaya, xcyc); - - /* Read yd (real), xd(imag) input */ - /* T = packed( (yb - yd), (xb - xd)) */ - U = __QSUB16(xbyb, xdyd); - -#ifndef ARM_MATH_BIG_ENDIAN - - /* xb' = (xa+yb-xc-yd) */ - /* yb' = (ya-xb-yc+xd) */ - *__SIMD32(ptr1)++ = __SHSAX(S, U); - - - /* xd' = (xa-yb-xc+yd) */ - /* yd' = (ya+xb-yc-xd) */ - *__SIMD32(ptr1)++ = __SHASX(S, U); - -#else - - /* xb' = (xa+yb-xc-yd) */ - /* yb' = (ya-xb-yc+xd) */ - *__SIMD32(ptr1)++ = __SHASX(S, U); - - - /* xd' = (xa-yb-xc+yd) */ - /* yd' = (ya+xb-yc-xd) */ - *__SIMD32(ptr1)++ = __SHSAX(S, U); - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - } while (--j); - - /* end of last stage process */ - - /* output is in 11.5(q5) format for the 1024 point */ - /* output is in 9.7(q7) format for the 256 point */ - /* output is in 7.9(q9) format for the 64 point */ - /* output is in 5.11(q11) format for the 16 point */ - - -#else - - /* Run the below code for Cortex-M0 */ - - q15_t R0, R1, S0, S1, T0, T1, U0, U1; - q15_t Co1, Si1, Co2, Si2, Co3, Si3, out1, out2; - uint32_t n1, n2, ic, i0, i1, i2, i3, j, k; - - /* Total process is divided into three stages */ - - /* process first stage, middle stages, & last stage */ - - /* Initializations for the first stage */ - n2 = fftLen; - n1 = n2; - - /* n2 = fftLen/4 */ - n2 >>= 2U; - - /* Index for twiddle coefficient */ - ic = 0U; - - /* Index for input read and output write */ - i0 = 0U; - j = n2; - - /* Input is in 1.15(q15) format */ - - /* start of first stage process */ - do - { - /* Butterfly implementation */ - - /* index calculation for the input as, */ - /* pSrc16[i0 + 0], pSrc16[i0 + fftLen/4], pSrc16[i0 + fftLen/2], pSrc16[i0 + 3fftLen/4] */ - i1 = i0 + n2; - i2 = i1 + n2; - i3 = i2 + n2; - - /* Reading i0, i0+fftLen/2 inputs */ - - /* input is down scale by 4 to avoid overflow */ - /* Read ya (real), xa(imag) input */ - T0 = pSrc16[i0 * 2U] >> 2U; - T1 = pSrc16[(i0 * 2U) + 1U] >> 2U; - - /* input is down scale by 4 to avoid overflow */ - /* Read yc (real), xc(imag) input */ - S0 = pSrc16[i2 * 2U] >> 2U; - S1 = pSrc16[(i2 * 2U) + 1U] >> 2U; - - /* R0 = (ya + yc) */ - R0 = __SSAT(T0 + S0, 16U); - /* R1 = (xa + xc) */ - R1 = __SSAT(T1 + S1, 16U); - - /* S0 = (ya - yc) */ - S0 = __SSAT(T0 - S0, 16); - /* S1 = (xa - xc) */ - S1 = __SSAT(T1 - S1, 16); - - /* Reading i0+fftLen/4 , i0+3fftLen/4 inputs */ - /* input is down scale by 4 to avoid overflow */ - /* Read yb (real), xb(imag) input */ - T0 = pSrc16[i1 * 2U] >> 2U; - T1 = pSrc16[(i1 * 2U) + 1U] >> 2U; - - /* input is down scale by 4 to avoid overflow */ - /* Read yd (real), xd(imag) input */ - U0 = pSrc16[i3 * 2U] >> 2U; - U1 = pSrc16[(i3 * 2U) + 1] >> 2U; - - /* T0 = (yb + yd) */ - T0 = __SSAT(T0 + U0, 16U); - /* T1 = (xb + xd) */ - T1 = __SSAT(T1 + U1, 16U); - - /* writing the butterfly processed i0 sample */ - /* ya' = ya + yb + yc + yd */ - /* xa' = xa + xb + xc + xd */ - pSrc16[i0 * 2U] = (R0 >> 1U) + (T0 >> 1U); - pSrc16[(i0 * 2U) + 1U] = (R1 >> 1U) + (T1 >> 1U); - - /* R0 = (ya + yc) - (yb + yd) */ - /* R1 = (xa + xc) - (xb + xd) */ - R0 = __SSAT(R0 - T0, 16U); - R1 = __SSAT(R1 - T1, 16U); - - /* co2 & si2 are read from Coefficient pointer */ - Co2 = pCoef16[2U * ic * 2U]; - Si2 = pCoef16[(2U * ic * 2U) + 1]; - - /* xc' = (xa-xb+xc-xd)* co2 + (ya-yb+yc-yd)* (si2) */ - out1 = (q15_t) ((Co2 * R0 + Si2 * R1) >> 16U); - /* yc' = (ya-yb+yc-yd)* co2 - (xa-xb+xc-xd)* (si2) */ - out2 = (q15_t) ((-Si2 * R0 + Co2 * R1) >> 16U); - - /* Reading i0+fftLen/4 */ - /* input is down scale by 4 to avoid overflow */ - /* T0 = yb, T1 = xb */ - T0 = pSrc16[i1 * 2U] >> 2; - T1 = pSrc16[(i1 * 2U) + 1] >> 2; - - /* writing the butterfly processed i0 + fftLen/4 sample */ - /* writing output(xc', yc') in little endian format */ - pSrc16[i1 * 2U] = out1; - pSrc16[(i1 * 2U) + 1] = out2; - - /* Butterfly calculations */ - /* input is down scale by 4 to avoid overflow */ - /* U0 = yd, U1 = xd */ - U0 = pSrc16[i3 * 2U] >> 2; - U1 = pSrc16[(i3 * 2U) + 1] >> 2; - /* T0 = yb-yd */ - T0 = __SSAT(T0 - U0, 16); - /* T1 = xb-xd */ - T1 = __SSAT(T1 - U1, 16); - - /* R1 = (ya-yc) + (xb- xd), R0 = (xa-xc) - (yb-yd)) */ - R0 = (q15_t) __SSAT((q31_t) (S0 - T1), 16); - R1 = (q15_t) __SSAT((q31_t) (S1 + T0), 16); - - /* S1 = (ya-yc) - (xb- xd), S0 = (xa-xc) + (yb-yd)) */ - S0 = (q15_t) __SSAT(((q31_t) S0 + T1), 16U); - S1 = (q15_t) __SSAT(((q31_t) S1 - T0), 16U); - - /* co1 & si1 are read from Coefficient pointer */ - Co1 = pCoef16[ic * 2U]; - Si1 = pCoef16[(ic * 2U) + 1]; - /* Butterfly process for the i0+fftLen/2 sample */ - /* xb' = (xa+yb-xc-yd)* co1 + (ya-xb-yc+xd)* (si1) */ - out1 = (q15_t) ((Si1 * S1 + Co1 * S0) >> 16); - /* yb' = (ya-xb-yc+xd)* co1 - (xa+yb-xc-yd)* (si1) */ - out2 = (q15_t) ((-Si1 * S0 + Co1 * S1) >> 16); - - /* writing output(xb', yb') in little endian format */ - pSrc16[i2 * 2U] = out1; - pSrc16[(i2 * 2U) + 1] = out2; - - /* Co3 & si3 are read from Coefficient pointer */ - Co3 = pCoef16[3U * (ic * 2U)]; - Si3 = pCoef16[(3U * (ic * 2U)) + 1]; - /* Butterfly process for the i0+3fftLen/4 sample */ - /* xd' = (xa-yb-xc+yd)* Co3 + (ya+xb-yc-xd)* (si3) */ - out1 = (q15_t) ((Si3 * R1 + Co3 * R0) >> 16U); - /* yd' = (ya+xb-yc-xd)* Co3 - (xa-yb-xc+yd)* (si3) */ - out2 = (q15_t) ((-Si3 * R0 + Co3 * R1) >> 16U); - /* writing output(xd', yd') in little endian format */ - pSrc16[i3 * 2U] = out1; - pSrc16[(i3 * 2U) + 1] = out2; - - /* Twiddle coefficients index modifier */ - ic = ic + twidCoefModifier; - - /* Updating input index */ - i0 = i0 + 1U; - - } while (--j); - /* data is in 4.11(q11) format */ - - /* end of first stage process */ - - - /* start of middle stage process */ - - /* Twiddle coefficients index modifier */ - twidCoefModifier <<= 2U; - - /* Calculation of Middle stage */ - for (k = fftLen / 4U; k > 4U; k >>= 2U) - { - /* Initializations for the middle stage */ - n1 = n2; - n2 >>= 2U; - ic = 0U; - - for (j = 0U; j <= (n2 - 1U); j++) - { - /* index calculation for the coefficients */ - Co1 = pCoef16[ic * 2U]; - Si1 = pCoef16[(ic * 2U) + 1U]; - Co2 = pCoef16[2U * (ic * 2U)]; - Si2 = pCoef16[(2U * (ic * 2U)) + 1U]; - Co3 = pCoef16[3U * (ic * 2U)]; - Si3 = pCoef16[(3U * (ic * 2U)) + 1U]; - - /* Twiddle coefficients index modifier */ - ic = ic + twidCoefModifier; - - /* Butterfly implementation */ - for (i0 = j; i0 < fftLen; i0 += n1) - { - /* index calculation for the input as, */ - /* pSrc16[i0 + 0], pSrc16[i0 + fftLen/4], pSrc16[i0 + fftLen/2], pSrc16[i0 + 3fftLen/4] */ - i1 = i0 + n2; - i2 = i1 + n2; - i3 = i2 + n2; - - /* Reading i0, i0+fftLen/2 inputs */ - /* Read ya (real), xa(imag) input */ - T0 = pSrc16[i0 * 2U]; - T1 = pSrc16[(i0 * 2U) + 1U]; - - /* Read yc (real), xc(imag) input */ - S0 = pSrc16[i2 * 2U]; - S1 = pSrc16[(i2 * 2U) + 1U]; - - /* R0 = (ya + yc), R1 = (xa + xc) */ - R0 = __SSAT(T0 + S0, 16); - R1 = __SSAT(T1 + S1, 16); - - /* S0 = (ya - yc), S1 =(xa - xc) */ - S0 = __SSAT(T0 - S0, 16); - S1 = __SSAT(T1 - S1, 16); - - /* Reading i0+fftLen/4 , i0+3fftLen/4 inputs */ - /* Read yb (real), xb(imag) input */ - T0 = pSrc16[i1 * 2U]; - T1 = pSrc16[(i1 * 2U) + 1U]; - - /* Read yd (real), xd(imag) input */ - U0 = pSrc16[i3 * 2U]; - U1 = pSrc16[(i3 * 2U) + 1U]; - - - /* T0 = (yb + yd), T1 = (xb + xd) */ - T0 = __SSAT(T0 + U0, 16); - T1 = __SSAT(T1 + U1, 16); - - /* writing the butterfly processed i0 sample */ - - /* xa' = xa + xb + xc + xd */ - /* ya' = ya + yb + yc + yd */ - out1 = ((R0 >> 1U) + (T0 >> 1U)) >> 1U; - out2 = ((R1 >> 1U) + (T1 >> 1U)) >> 1U; - - pSrc16[i0 * 2U] = out1; - pSrc16[(2U * i0) + 1U] = out2; - - /* R0 = (ya + yc) - (yb + yd), R1 = (xa + xc) - (xb + xd) */ - R0 = (R0 >> 1U) - (T0 >> 1U); - R1 = (R1 >> 1U) - (T1 >> 1U); - - /* (ya-yb+yc-yd)* (si2) + (xa-xb+xc-xd)* co2 */ - out1 = (q15_t) ((Co2 * R0 + Si2 * R1) >> 16U); - - /* (ya-yb+yc-yd)* co2 - (xa-xb+xc-xd)* (si2) */ - out2 = (q15_t) ((-Si2 * R0 + Co2 * R1) >> 16U); - - /* Reading i0+3fftLen/4 */ - /* Read yb (real), xb(imag) input */ - T0 = pSrc16[i1 * 2U]; - T1 = pSrc16[(i1 * 2U) + 1U]; - - /* writing the butterfly processed i0 + fftLen/4 sample */ - /* xc' = (xa-xb+xc-xd)* co2 + (ya-yb+yc-yd)* (si2) */ - /* yc' = (ya-yb+yc-yd)* co2 - (xa-xb+xc-xd)* (si2) */ - pSrc16[i1 * 2U] = out1; - pSrc16[(i1 * 2U) + 1U] = out2; - - /* Butterfly calculations */ - - /* Read yd (real), xd(imag) input */ - U0 = pSrc16[i3 * 2U]; - U1 = pSrc16[(i3 * 2U) + 1U]; - - /* T0 = yb-yd, T1 = xb-xd */ - T0 = __SSAT(T0 - U0, 16); - T1 = __SSAT(T1 - U1, 16); - - /* R0 = (ya-yc) + (xb- xd), R1 = (xa-xc) - (yb-yd)) */ - R0 = (S0 >> 1U) - (T1 >> 1U); - R1 = (S1 >> 1U) + (T0 >> 1U); - - /* S0 = (ya-yc) - (xb- xd), S1 = (xa-xc) + (yb-yd)) */ - S0 = (S0 >> 1U) + (T1 >> 1U); - S1 = (S1 >> 1U) - (T0 >> 1U); - - /* Butterfly process for the i0+fftLen/2 sample */ - out1 = (q15_t) ((Co1 * S0 + Si1 * S1) >> 16U); - - out2 = (q15_t) ((-Si1 * S0 + Co1 * S1) >> 16U); - - /* xb' = (xa+yb-xc-yd)* co1 + (ya-xb-yc+xd)* (si1) */ - /* yb' = (ya-xb-yc+xd)* co1 - (xa+yb-xc-yd)* (si1) */ - pSrc16[i2 * 2U] = out1; - pSrc16[(i2 * 2U) + 1U] = out2; - - /* Butterfly process for the i0+3fftLen/4 sample */ - out1 = (q15_t) ((Si3 * R1 + Co3 * R0) >> 16U); - - out2 = (q15_t) ((-Si3 * R0 + Co3 * R1) >> 16U); - /* xd' = (xa-yb-xc+yd)* Co3 + (ya+xb-yc-xd)* (si3) */ - /* yd' = (ya+xb-yc-xd)* Co3 - (xa-yb-xc+yd)* (si3) */ - pSrc16[i3 * 2U] = out1; - pSrc16[(i3 * 2U) + 1U] = out2; - } - } - /* Twiddle coefficients index modifier */ - twidCoefModifier <<= 2U; - } - /* end of middle stage process */ - - - /* data is in 10.6(q6) format for the 1024 point */ - /* data is in 8.8(q8) format for the 256 point */ - /* data is in 6.10(q10) format for the 64 point */ - /* data is in 4.12(q12) format for the 16 point */ - - /* Initializations for the last stage */ - n1 = n2; - n2 >>= 2U; - - /* start of last stage process */ - - /* Butterfly implementation */ - for (i0 = 0U; i0 <= (fftLen - n1); i0 += n1) - { - /* index calculation for the input as, */ - /* pSrc16[i0 + 0], pSrc16[i0 + fftLen/4], pSrc16[i0 + fftLen/2], pSrc16[i0 + 3fftLen/4] */ - i1 = i0 + n2; - i2 = i1 + n2; - i3 = i2 + n2; - - /* Reading i0, i0+fftLen/2 inputs */ - /* Read ya (real), xa(imag) input */ - T0 = pSrc16[i0 * 2U]; - T1 = pSrc16[(i0 * 2U) + 1U]; - - /* Read yc (real), xc(imag) input */ - S0 = pSrc16[i2 * 2U]; - S1 = pSrc16[(i2 * 2U) + 1U]; - - /* R0 = (ya + yc), R1 = (xa + xc) */ - R0 = __SSAT(T0 + S0, 16U); - R1 = __SSAT(T1 + S1, 16U); - - /* S0 = (ya - yc), S1 = (xa - xc) */ - S0 = __SSAT(T0 - S0, 16U); - S1 = __SSAT(T1 - S1, 16U); - - /* Reading i0+fftLen/4 , i0+3fftLen/4 inputs */ - /* Read yb (real), xb(imag) input */ - T0 = pSrc16[i1 * 2U]; - T1 = pSrc16[(i1 * 2U) + 1U]; - /* Read yd (real), xd(imag) input */ - U0 = pSrc16[i3 * 2U]; - U1 = pSrc16[(i3 * 2U) + 1U]; - - /* T0 = (yb + yd), T1 = (xb + xd)) */ - T0 = __SSAT(T0 + U0, 16U); - T1 = __SSAT(T1 + U1, 16U); - - /* writing the butterfly processed i0 sample */ - /* xa' = xa + xb + xc + xd */ - /* ya' = ya + yb + yc + yd */ - pSrc16[i0 * 2U] = (R0 >> 1U) + (T0 >> 1U); - pSrc16[(i0 * 2U) + 1U] = (R1 >> 1U) + (T1 >> 1U); - - /* R0 = (ya + yc) - (yb + yd), R1 = (xa + xc) - (xb + xd) */ - R0 = (R0 >> 1U) - (T0 >> 1U); - R1 = (R1 >> 1U) - (T1 >> 1U); - /* Read yb (real), xb(imag) input */ - T0 = pSrc16[i1 * 2U]; - T1 = pSrc16[(i1 * 2U) + 1U]; - - /* writing the butterfly processed i0 + fftLen/4 sample */ - /* xc' = (xa-xb+xc-xd) */ - /* yc' = (ya-yb+yc-yd) */ - pSrc16[i1 * 2U] = R0; - pSrc16[(i1 * 2U) + 1U] = R1; - - /* Read yd (real), xd(imag) input */ - U0 = pSrc16[i3 * 2U]; - U1 = pSrc16[(i3 * 2U) + 1U]; - /* T0 = (yb - yd), T1 = (xb - xd) */ - T0 = __SSAT(T0 - U0, 16U); - T1 = __SSAT(T1 - U1, 16U); - - /* writing the butterfly processed i0 + fftLen/2 sample */ - /* xb' = (xa+yb-xc-yd) */ - /* yb' = (ya-xb-yc+xd) */ - pSrc16[i2 * 2U] = (S0 >> 1U) + (T1 >> 1U); - pSrc16[(i2 * 2U) + 1U] = (S1 >> 1U) - (T0 >> 1U); - - /* writing the butterfly processed i0 + 3fftLen/4 sample */ - /* xd' = (xa-yb-xc+yd) */ - /* yd' = (ya+xb-yc-xd) */ - pSrc16[i3 * 2U] = (S0 >> 1U) - (T1 >> 1U); - pSrc16[(i3 * 2U) + 1U] = (S1 >> 1U) + (T0 >> 1U); - - } - - /* end of last stage process */ - - /* output is in 11.5(q5) format for the 1024 point */ - /* output is in 9.7(q7) format for the 256 point */ - /* output is in 7.9(q9) format for the 64 point */ - /* output is in 5.11(q11) format for the 16 point */ - -#endif /* #if defined (ARM_MATH_DSP) */ - -} - - -/** - * @brief Core function for the Q15 CIFFT butterfly process. - * @param[in, out] *pSrc16 points to the in-place buffer of Q15 data type. - * @param[in] fftLen length of the FFT. - * @param[in] *pCoef16 points to twiddle coefficient buffer. - * @param[in] twidCoefModifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. - * @return none. - */ - -/* -* Radix-4 IFFT algorithm used is : -* -* CIFFT uses same twiddle coefficients as CFFT function -* x[k] = x[n] + (j)k * x[n + fftLen/4] + (-1)k * x[n+fftLen/2] + (-j)k * x[n+3*fftLen/4] -* -* -* IFFT is implemented with following changes in equations from FFT -* -* Input real and imaginary data: -* x(n) = xa + j * ya -* x(n+N/4 ) = xb + j * yb -* x(n+N/2 ) = xc + j * yc -* x(n+3N 4) = xd + j * yd -* -* -* Output real and imaginary data: -* x(4r) = xa'+ j * ya' -* x(4r+1) = xb'+ j * yb' -* x(4r+2) = xc'+ j * yc' -* x(4r+3) = xd'+ j * yd' -* -* -* Twiddle factors for radix-4 IFFT: -* Wn = co1 + j * (si1) -* W2n = co2 + j * (si2) -* W3n = co3 + j * (si3) - -* The real and imaginary output values for the radix-4 butterfly are -* xa' = xa + xb + xc + xd -* ya' = ya + yb + yc + yd -* xb' = (xa-yb-xc+yd)* co1 - (ya+xb-yc-xd)* (si1) -* yb' = (ya+xb-yc-xd)* co1 + (xa-yb-xc+yd)* (si1) -* xc' = (xa-xb+xc-xd)* co2 - (ya-yb+yc-yd)* (si2) -* yc' = (ya-yb+yc-yd)* co2 + (xa-xb+xc-xd)* (si2) -* xd' = (xa+yb-xc-yd)* co3 - (ya-xb-yc+xd)* (si3) -* yd' = (ya-xb-yc+xd)* co3 + (xa+yb-xc-yd)* (si3) -* -*/ - -void arm_radix4_butterfly_inverse_q15( - q15_t * pSrc16, - uint32_t fftLen, - q15_t * pCoef16, - uint32_t twidCoefModifier) -{ - -#if defined (ARM_MATH_DSP) - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - q31_t R, S, T, U; - q31_t C1, C2, C3, out1, out2; - uint32_t n1, n2, ic, i0, j, k; - - q15_t *ptr1; - q15_t *pSi0; - q15_t *pSi1; - q15_t *pSi2; - q15_t *pSi3; - - q31_t xaya, xbyb, xcyc, xdyd; - - /* Total process is divided into three stages */ - - /* process first stage, middle stages, & last stage */ - - /* Initializations for the first stage */ - n2 = fftLen; - n1 = n2; - - /* n2 = fftLen/4 */ - n2 >>= 2U; - - /* Index for twiddle coefficient */ - ic = 0U; - - /* Index for input read and output write */ - j = n2; - - pSi0 = pSrc16; - pSi1 = pSi0 + 2 * n2; - pSi2 = pSi1 + 2 * n2; - pSi3 = pSi2 + 2 * n2; - - /* Input is in 1.15(q15) format */ - - /* start of first stage process */ - do - { - /* Butterfly implementation */ - - /* Reading i0, i0+fftLen/2 inputs */ - /* Read ya (real), xa(imag) input */ - T = _SIMD32_OFFSET(pSi0); - T = __SHADD16(T, 0); - T = __SHADD16(T, 0); - - /* Read yc (real), xc(imag) input */ - S = _SIMD32_OFFSET(pSi2); - S = __SHADD16(S, 0); - S = __SHADD16(S, 0); - - /* R = packed((ya + yc), (xa + xc) ) */ - R = __QADD16(T, S); - - /* S = packed((ya - yc), (xa - xc) ) */ - S = __QSUB16(T, S); - - /* Reading i0+fftLen/4 , i0+3fftLen/4 inputs */ - /* Read yb (real), xb(imag) input */ - T = _SIMD32_OFFSET(pSi1); - T = __SHADD16(T, 0); - T = __SHADD16(T, 0); - - /* Read yd (real), xd(imag) input */ - U = _SIMD32_OFFSET(pSi3); - U = __SHADD16(U, 0); - U = __SHADD16(U, 0); - - /* T = packed((yb + yd), (xb + xd) ) */ - T = __QADD16(T, U); - - /* writing the butterfly processed i0 sample */ - /* xa' = xa + xb + xc + xd */ - /* ya' = ya + yb + yc + yd */ - _SIMD32_OFFSET(pSi0) = __SHADD16(R, T); - pSi0 += 2; - - /* R = packed((ya + yc) - (yb + yd), (xa + xc)- (xb + xd)) */ - R = __QSUB16(R, T); - - /* co2 & si2 are read from SIMD Coefficient pointer */ - C2 = _SIMD32_OFFSET(pCoef16 + (4U * ic)); - -#ifndef ARM_MATH_BIG_ENDIAN - - /* xc' = (xa-xb+xc-xd)* co2 + (ya-yb+yc-yd)* (si2) */ - out1 = __SMUSD(C2, R) >> 16U; - /* yc' = (ya-yb+yc-yd)* co2 - (xa-xb+xc-xd)* (si2) */ - out2 = __SMUADX(C2, R); - -#else - - /* xc' = (ya-yb+yc-yd)* co2 - (xa-xb+xc-xd)* (si2) */ - out1 = __SMUADX(C2, R) >> 16U; - /* yc' = (xa-xb+xc-xd)* co2 + (ya-yb+yc-yd)* (si2) */ - out2 = __SMUSD(__QSUB16(0, C2), R); - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - /* Reading i0+fftLen/4 */ - /* T = packed(yb, xb) */ - T = _SIMD32_OFFSET(pSi1); - T = __SHADD16(T, 0); - T = __SHADD16(T, 0); - - /* writing the butterfly processed i0 + fftLen/4 sample */ - /* writing output(xc', yc') in little endian format */ - _SIMD32_OFFSET(pSi1) = - (q31_t) ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF); - pSi1 += 2; - - /* Butterfly calculations */ - /* U = packed(yd, xd) */ - U = _SIMD32_OFFSET(pSi3); - U = __SHADD16(U, 0); - U = __SHADD16(U, 0); - - /* T = packed(yb-yd, xb-xd) */ - T = __QSUB16(T, U); - -#ifndef ARM_MATH_BIG_ENDIAN - - /* R = packed((ya-yc) + (xb- xd) , (xa-xc) - (yb-yd)) */ - R = __QSAX(S, T); - /* S = packed((ya-yc) + (xb- xd), (xa-xc) - (yb-yd)) */ - S = __QASX(S, T); - -#else - - /* R = packed((ya-yc) + (xb- xd) , (xa-xc) - (yb-yd)) */ - R = __QASX(S, T); - /* S = packed((ya-yc) - (xb- xd), (xa-xc) + (yb-yd)) */ - S = __QSAX(S, T); - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - /* co1 & si1 are read from SIMD Coefficient pointer */ - C1 = _SIMD32_OFFSET(pCoef16 + (2U * ic)); - /* Butterfly process for the i0+fftLen/2 sample */ - -#ifndef ARM_MATH_BIG_ENDIAN - - /* xb' = (xa+yb-xc-yd)* co1 + (ya-xb-yc+xd)* (si1) */ - out1 = __SMUSD(C1, S) >> 16U; - /* yb' = (ya-xb-yc+xd)* co1 - (xa+yb-xc-yd)* (si1) */ - out2 = __SMUADX(C1, S); - -#else - - /* xb' = (ya-xb-yc+xd)* co1 - (xa+yb-xc-yd)* (si1) */ - out1 = __SMUADX(C1, S) >> 16U; - /* yb' = (xa+yb-xc-yd)* co1 + (ya-xb-yc+xd)* (si1) */ - out2 = __SMUSD(__QSUB16(0, C1), S); - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - /* writing output(xb', yb') in little endian format */ - _SIMD32_OFFSET(pSi2) = - ((out2) & 0xFFFF0000) | ((out1) & 0x0000FFFF); - pSi2 += 2; - - - /* co3 & si3 are read from SIMD Coefficient pointer */ - C3 = _SIMD32_OFFSET(pCoef16 + (6U * ic)); - /* Butterfly process for the i0+3fftLen/4 sample */ - -#ifndef ARM_MATH_BIG_ENDIAN - - /* xd' = (xa-yb-xc+yd)* co3 + (ya+xb-yc-xd)* (si3) */ - out1 = __SMUSD(C3, R) >> 16U; - /* yd' = (ya+xb-yc-xd)* co3 - (xa-yb-xc+yd)* (si3) */ - out2 = __SMUADX(C3, R); - -#else - - /* xd' = (ya+xb-yc-xd)* co3 - (xa-yb-xc+yd)* (si3) */ - out1 = __SMUADX(C3, R) >> 16U; - /* yd' = (xa-yb-xc+yd)* co3 + (ya+xb-yc-xd)* (si3) */ - out2 = __SMUSD(__QSUB16(0, C3), R); - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - /* writing output(xd', yd') in little endian format */ - _SIMD32_OFFSET(pSi3) = - ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF); - pSi3 += 2; - - /* Twiddle coefficients index modifier */ - ic = ic + twidCoefModifier; - - } while (--j); - /* data is in 4.11(q11) format */ - - /* end of first stage process */ - - - /* start of middle stage process */ - - /* Twiddle coefficients index modifier */ - twidCoefModifier <<= 2U; - - /* Calculation of Middle stage */ - for (k = fftLen / 4U; k > 4U; k >>= 2U) - { - /* Initializations for the middle stage */ - n1 = n2; - n2 >>= 2U; - ic = 0U; - - for (j = 0U; j <= (n2 - 1U); j++) - { - /* index calculation for the coefficients */ - C1 = _SIMD32_OFFSET(pCoef16 + (2U * ic)); - C2 = _SIMD32_OFFSET(pCoef16 + (4U * ic)); - C3 = _SIMD32_OFFSET(pCoef16 + (6U * ic)); - - /* Twiddle coefficients index modifier */ - ic = ic + twidCoefModifier; - - pSi0 = pSrc16 + 2 * j; - pSi1 = pSi0 + 2 * n2; - pSi2 = pSi1 + 2 * n2; - pSi3 = pSi2 + 2 * n2; - - /* Butterfly implementation */ - for (i0 = j; i0 < fftLen; i0 += n1) - { - /* Reading i0, i0+fftLen/2 inputs */ - /* Read ya (real), xa(imag) input */ - T = _SIMD32_OFFSET(pSi0); - - /* Read yc (real), xc(imag) input */ - S = _SIMD32_OFFSET(pSi2); - - /* R = packed( (ya + yc), (xa + xc)) */ - R = __QADD16(T, S); - - /* S = packed((ya - yc), (xa - xc)) */ - S = __QSUB16(T, S); - - /* Reading i0+fftLen/4 , i0+3fftLen/4 inputs */ - /* Read yb (real), xb(imag) input */ - T = _SIMD32_OFFSET(pSi1); - - /* Read yd (real), xd(imag) input */ - U = _SIMD32_OFFSET(pSi3); - - /* T = packed( (yb + yd), (xb + xd)) */ - T = __QADD16(T, U); - - /* writing the butterfly processed i0 sample */ - - /* xa' = xa + xb + xc + xd */ - /* ya' = ya + yb + yc + yd */ - out1 = __SHADD16(R, T); - out1 = __SHADD16(out1, 0); - _SIMD32_OFFSET(pSi0) = out1; - pSi0 += 2 * n1; - - /* R = packed( (ya + yc) - (yb + yd), (xa + xc) - (xb + xd)) */ - R = __SHSUB16(R, T); - -#ifndef ARM_MATH_BIG_ENDIAN - - /* (ya-yb+yc-yd)* (si2) + (xa-xb+xc-xd)* co2 */ - out1 = __SMUSD(C2, R) >> 16U; - - /* (ya-yb+yc-yd)* co2 - (xa-xb+xc-xd)* (si2) */ - out2 = __SMUADX(C2, R); - -#else - - /* (ya-yb+yc-yd)* co2 - (xa-xb+xc-xd)* (si2) */ - out1 = __SMUADX(R, C2) >> 16U; - - /* (ya-yb+yc-yd)* (si2) + (xa-xb+xc-xd)* co2 */ - out2 = __SMUSD(__QSUB16(0, C2), R); - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - /* Reading i0+3fftLen/4 */ - /* Read yb (real), xb(imag) input */ - T = _SIMD32_OFFSET(pSi1); - - /* writing the butterfly processed i0 + fftLen/4 sample */ - /* xc' = (xa-xb+xc-xd)* co2 + (ya-yb+yc-yd)* (si2) */ - /* yc' = (ya-yb+yc-yd)* co2 - (xa-xb+xc-xd)* (si2) */ - _SIMD32_OFFSET(pSi1) = - ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF); - pSi1 += 2 * n1; - - /* Butterfly calculations */ - - /* Read yd (real), xd(imag) input */ - U = _SIMD32_OFFSET(pSi3); - - /* T = packed(yb-yd, xb-xd) */ - T = __QSUB16(T, U); - -#ifndef ARM_MATH_BIG_ENDIAN - - /* R = packed((ya-yc) + (xb- xd) , (xa-xc) - (yb-yd)) */ - R = __SHSAX(S, T); - - /* S = packed((ya-yc) - (xb- xd), (xa-xc) + (yb-yd)) */ - S = __SHASX(S, T); - - - /* Butterfly process for the i0+fftLen/2 sample */ - out1 = __SMUSD(C1, S) >> 16U; - out2 = __SMUADX(C1, S); - -#else - - /* R = packed((ya-yc) + (xb- xd) , (xa-xc) - (yb-yd)) */ - R = __SHASX(S, T); - - /* S = packed((ya-yc) - (xb- xd), (xa-xc) + (yb-yd)) */ - S = __SHSAX(S, T); - - - /* Butterfly process for the i0+fftLen/2 sample */ - out1 = __SMUADX(S, C1) >> 16U; - out2 = __SMUSD(__QSUB16(0, C1), S); - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - /* xb' = (xa+yb-xc-yd)* co1 + (ya-xb-yc+xd)* (si1) */ - /* yb' = (ya-xb-yc+xd)* co1 - (xa+yb-xc-yd)* (si1) */ - _SIMD32_OFFSET(pSi2) = - ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF); - pSi2 += 2 * n1; - - /* Butterfly process for the i0+3fftLen/4 sample */ - -#ifndef ARM_MATH_BIG_ENDIAN - - out1 = __SMUSD(C3, R) >> 16U; - out2 = __SMUADX(C3, R); - -#else - - out1 = __SMUADX(C3, R) >> 16U; - out2 = __SMUSD(__QSUB16(0, C3), R); - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - /* xd' = (xa-yb-xc+yd)* co3 + (ya+xb-yc-xd)* (si3) */ - /* yd' = (ya+xb-yc-xd)* co3 - (xa-yb-xc+yd)* (si3) */ - _SIMD32_OFFSET(pSi3) = - ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF); - pSi3 += 2 * n1; - } - } - /* Twiddle coefficients index modifier */ - twidCoefModifier <<= 2U; - } - /* end of middle stage process */ - - /* data is in 10.6(q6) format for the 1024 point */ - /* data is in 8.8(q8) format for the 256 point */ - /* data is in 6.10(q10) format for the 64 point */ - /* data is in 4.12(q12) format for the 16 point */ - - /* Initializations for the last stage */ - j = fftLen >> 2; - - ptr1 = &pSrc16[0]; - - /* start of last stage process */ - - /* Butterfly implementation */ - do - { - /* Read xa (real), ya(imag) input */ - xaya = *__SIMD32(ptr1)++; - - /* Read xb (real), yb(imag) input */ - xbyb = *__SIMD32(ptr1)++; - - /* Read xc (real), yc(imag) input */ - xcyc = *__SIMD32(ptr1)++; - - /* Read xd (real), yd(imag) input */ - xdyd = *__SIMD32(ptr1)++; - - /* R = packed((ya + yc), (xa + xc)) */ - R = __QADD16(xaya, xcyc); - - /* T = packed((yb + yd), (xb + xd)) */ - T = __QADD16(xbyb, xdyd); - - /* pointer updation for writing */ - ptr1 = ptr1 - 8U; - - - /* xa' = xa + xb + xc + xd */ - /* ya' = ya + yb + yc + yd */ - *__SIMD32(ptr1)++ = __SHADD16(R, T); - - /* T = packed((yb + yd), (xb + xd)) */ - T = __QADD16(xbyb, xdyd); - - /* xc' = (xa-xb+xc-xd) */ - /* yc' = (ya-yb+yc-yd) */ - *__SIMD32(ptr1)++ = __SHSUB16(R, T); - - /* S = packed((ya - yc), (xa - xc)) */ - S = __QSUB16(xaya, xcyc); - - /* Read yd (real), xd(imag) input */ - /* T = packed( (yb - yd), (xb - xd)) */ - U = __QSUB16(xbyb, xdyd); - -#ifndef ARM_MATH_BIG_ENDIAN - - /* xb' = (xa+yb-xc-yd) */ - /* yb' = (ya-xb-yc+xd) */ - *__SIMD32(ptr1)++ = __SHASX(S, U); - - - /* xd' = (xa-yb-xc+yd) */ - /* yd' = (ya+xb-yc-xd) */ - *__SIMD32(ptr1)++ = __SHSAX(S, U); - -#else - - /* xb' = (xa+yb-xc-yd) */ - /* yb' = (ya-xb-yc+xd) */ - *__SIMD32(ptr1)++ = __SHSAX(S, U); - - - /* xd' = (xa-yb-xc+yd) */ - /* yd' = (ya+xb-yc-xd) */ - *__SIMD32(ptr1)++ = __SHASX(S, U); - - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - } while (--j); - - /* end of last stage process */ - - /* output is in 11.5(q5) format for the 1024 point */ - /* output is in 9.7(q7) format for the 256 point */ - /* output is in 7.9(q9) format for the 64 point */ - /* output is in 5.11(q11) format for the 16 point */ - - -#else - - /* Run the below code for Cortex-M0 */ - - q15_t R0, R1, S0, S1, T0, T1, U0, U1; - q15_t Co1, Si1, Co2, Si2, Co3, Si3, out1, out2; - uint32_t n1, n2, ic, i0, i1, i2, i3, j, k; - - /* Total process is divided into three stages */ - - /* process first stage, middle stages, & last stage */ - - /* Initializations for the first stage */ - n2 = fftLen; - n1 = n2; - - /* n2 = fftLen/4 */ - n2 >>= 2U; - - /* Index for twiddle coefficient */ - ic = 0U; - - /* Index for input read and output write */ - i0 = 0U; - - j = n2; - - /* Input is in 1.15(q15) format */ - - /* Start of first stage process */ - do - { - /* Butterfly implementation */ - - /* index calculation for the input as, */ - /* pSrc16[i0 + 0], pSrc16[i0 + fftLen/4], pSrc16[i0 + fftLen/2], pSrc16[i0 + 3fftLen/4] */ - i1 = i0 + n2; - i2 = i1 + n2; - i3 = i2 + n2; - - /* Reading i0, i0+fftLen/2 inputs */ - /* input is down scale by 4 to avoid overflow */ - /* Read ya (real), xa(imag) input */ - T0 = pSrc16[i0 * 2U] >> 2U; - T1 = pSrc16[(i0 * 2U) + 1U] >> 2U; - /* input is down scale by 4 to avoid overflow */ - /* Read yc (real), xc(imag) input */ - S0 = pSrc16[i2 * 2U] >> 2U; - S1 = pSrc16[(i2 * 2U) + 1U] >> 2U; - - /* R0 = (ya + yc), R1 = (xa + xc) */ - R0 = __SSAT(T0 + S0, 16U); - R1 = __SSAT(T1 + S1, 16U); - /* S0 = (ya - yc), S1 = (xa - xc) */ - S0 = __SSAT(T0 - S0, 16U); - S1 = __SSAT(T1 - S1, 16U); - - /* Reading i0+fftLen/4 , i0+3fftLen/4 inputs */ - /* input is down scale by 4 to avoid overflow */ - /* Read yb (real), xb(imag) input */ - T0 = pSrc16[i1 * 2U] >> 2U; - T1 = pSrc16[(i1 * 2U) + 1U] >> 2U; - /* Read yd (real), xd(imag) input */ - /* input is down scale by 4 to avoid overflow */ - U0 = pSrc16[i3 * 2U] >> 2U; - U1 = pSrc16[(i3 * 2U) + 1U] >> 2U; - - /* T0 = (yb + yd), T1 = (xb + xd) */ - T0 = __SSAT(T0 + U0, 16U); - T1 = __SSAT(T1 + U1, 16U); - - /* writing the butterfly processed i0 sample */ - /* xa' = xa + xb + xc + xd */ - /* ya' = ya + yb + yc + yd */ - pSrc16[i0 * 2U] = (R0 >> 1U) + (T0 >> 1U); - pSrc16[(i0 * 2U) + 1U] = (R1 >> 1U) + (T1 >> 1U); - - /* R0 = (ya + yc) - (yb + yd), R1 = (xa + xc)- (xb + xd) */ - R0 = __SSAT(R0 - T0, 16U); - R1 = __SSAT(R1 - T1, 16U); - /* co2 & si2 are read from Coefficient pointer */ - Co2 = pCoef16[2U * ic * 2U]; - Si2 = pCoef16[(2U * ic * 2U) + 1U]; - /* xc' = (xa-xb+xc-xd)* co2 - (ya-yb+yc-yd)* (si2) */ - out1 = (q15_t) ((Co2 * R0 - Si2 * R1) >> 16U); - /* yc' = (ya-yb+yc-yd)* co2 + (xa-xb+xc-xd)* (si2) */ - out2 = (q15_t) ((Si2 * R0 + Co2 * R1) >> 16U); - - /* Reading i0+fftLen/4 */ - /* input is down scale by 4 to avoid overflow */ - /* T0 = yb, T1 = xb */ - T0 = pSrc16[i1 * 2U] >> 2U; - T1 = pSrc16[(i1 * 2U) + 1U] >> 2U; - - /* writing the butterfly processed i0 + fftLen/4 sample */ - /* writing output(xc', yc') in little endian format */ - pSrc16[i1 * 2U] = out1; - pSrc16[(i1 * 2U) + 1U] = out2; - - /* Butterfly calculations */ - /* input is down scale by 4 to avoid overflow */ - /* U0 = yd, U1 = xd) */ - U0 = pSrc16[i3 * 2U] >> 2U; - U1 = pSrc16[(i3 * 2U) + 1U] >> 2U; - - /* T0 = yb-yd, T1 = xb-xd) */ - T0 = __SSAT(T0 - U0, 16U); - T1 = __SSAT(T1 - U1, 16U); - /* R0 = (ya-yc) - (xb- xd) , R1 = (xa-xc) + (yb-yd) */ - R0 = (q15_t) __SSAT((q31_t) (S0 + T1), 16); - R1 = (q15_t) __SSAT((q31_t) (S1 - T0), 16); - /* S = (ya-yc) + (xb- xd), S1 = (xa-xc) - (yb-yd) */ - S0 = (q15_t) __SSAT((q31_t) (S0 - T1), 16); - S1 = (q15_t) __SSAT((q31_t) (S1 + T0), 16); - - /* co1 & si1 are read from Coefficient pointer */ - Co1 = pCoef16[ic * 2U]; - Si1 = pCoef16[(ic * 2U) + 1U]; - /* Butterfly process for the i0+fftLen/2 sample */ - /* xb' = (xa-yb-xc+yd)* co1 - (ya+xb-yc-xd)* (si1) */ - out1 = (q15_t) ((Co1 * S0 - Si1 * S1) >> 16U); - /* yb' = (ya+xb-yc-xd)* co1 + (xa-yb-xc+yd)* (si1) */ - out2 = (q15_t) ((Si1 * S0 + Co1 * S1) >> 16U); - /* writing output(xb', yb') in little endian format */ - pSrc16[i2 * 2U] = out1; - pSrc16[(i2 * 2U) + 1U] = out2; - - /* Co3 & si3 are read from Coefficient pointer */ - Co3 = pCoef16[3U * ic * 2U]; - Si3 = pCoef16[(3U * ic * 2U) + 1U]; - /* Butterfly process for the i0+3fftLen/4 sample */ - /* xd' = (xa+yb-xc-yd)* Co3 - (ya-xb-yc+xd)* (si3) */ - out1 = (q15_t) ((Co3 * R0 - Si3 * R1) >> 16U); - /* yd' = (ya-xb-yc+xd)* Co3 + (xa+yb-xc-yd)* (si3) */ - out2 = (q15_t) ((Si3 * R0 + Co3 * R1) >> 16U); - /* writing output(xd', yd') in little endian format */ - pSrc16[i3 * 2U] = out1; - pSrc16[(i3 * 2U) + 1U] = out2; - - /* Twiddle coefficients index modifier */ - ic = ic + twidCoefModifier; - - /* Updating input index */ - i0 = i0 + 1U; - - } while (--j); - - /* End of first stage process */ - - /* data is in 4.11(q11) format */ - - - /* Start of Middle stage process */ - - /* Twiddle coefficients index modifier */ - twidCoefModifier <<= 2U; - - /* Calculation of Middle stage */ - for (k = fftLen / 4U; k > 4U; k >>= 2U) - { - /* Initializations for the middle stage */ - n1 = n2; - n2 >>= 2U; - ic = 0U; - - for (j = 0U; j <= (n2 - 1U); j++) - { - /* index calculation for the coefficients */ - Co1 = pCoef16[ic * 2U]; - Si1 = pCoef16[(ic * 2U) + 1U]; - Co2 = pCoef16[2U * ic * 2U]; - Si2 = pCoef16[2U * ic * 2U + 1U]; - Co3 = pCoef16[3U * ic * 2U]; - Si3 = pCoef16[(3U * ic * 2U) + 1U]; - - /* Twiddle coefficients index modifier */ - ic = ic + twidCoefModifier; - - /* Butterfly implementation */ - for (i0 = j; i0 < fftLen; i0 += n1) - { - /* index calculation for the input as, */ - /* pSrc16[i0 + 0], pSrc16[i0 + fftLen/4], pSrc16[i0 + fftLen/2], pSrc16[i0 + 3fftLen/4] */ - i1 = i0 + n2; - i2 = i1 + n2; - i3 = i2 + n2; - - /* Reading i0, i0+fftLen/2 inputs */ - /* Read ya (real), xa(imag) input */ - T0 = pSrc16[i0 * 2U]; - T1 = pSrc16[(i0 * 2U) + 1U]; - - /* Read yc (real), xc(imag) input */ - S0 = pSrc16[i2 * 2U]; - S1 = pSrc16[(i2 * 2U) + 1U]; - - - /* R0 = (ya + yc), R1 = (xa + xc) */ - R0 = __SSAT(T0 + S0, 16U); - R1 = __SSAT(T1 + S1, 16U); - /* S0 = (ya - yc), S1 = (xa - xc) */ - S0 = __SSAT(T0 - S0, 16U); - S1 = __SSAT(T1 - S1, 16U); - - /* Reading i0+fftLen/4 , i0+3fftLen/4 inputs */ - /* Read yb (real), xb(imag) input */ - T0 = pSrc16[i1 * 2U]; - T1 = pSrc16[(i1 * 2U) + 1U]; - - /* Read yd (real), xd(imag) input */ - U0 = pSrc16[i3 * 2U]; - U1 = pSrc16[(i3 * 2U) + 1U]; - - /* T0 = (yb + yd), T1 = (xb + xd) */ - T0 = __SSAT(T0 + U0, 16U); - T1 = __SSAT(T1 + U1, 16U); - - /* writing the butterfly processed i0 sample */ - /* xa' = xa + xb + xc + xd */ - /* ya' = ya + yb + yc + yd */ - pSrc16[i0 * 2U] = ((R0 >> 1U) + (T0 >> 1U)) >> 1U; - pSrc16[(i0 * 2U) + 1U] = ((R1 >> 1U) + (T1 >> 1U)) >> 1U; - - /* R0 = (ya + yc) - (yb + yd), R1 = (xa + xc) - (xb + xd) */ - R0 = (R0 >> 1U) - (T0 >> 1U); - R1 = (R1 >> 1U) - (T1 >> 1U); - - /* (ya-yb+yc-yd)* (si2) - (xa-xb+xc-xd)* co2 */ - out1 = (q15_t) ((Co2 * R0 - Si2 * R1) >> 16); - /* (ya-yb+yc-yd)* co2 + (xa-xb+xc-xd)* (si2) */ - out2 = (q15_t) ((Si2 * R0 + Co2 * R1) >> 16); - - /* Reading i0+3fftLen/4 */ - /* Read yb (real), xb(imag) input */ - T0 = pSrc16[i1 * 2U]; - T1 = pSrc16[(i1 * 2U) + 1U]; - - /* writing the butterfly processed i0 + fftLen/4 sample */ - /* xc' = (xa-xb+xc-xd)* co2 - (ya-yb+yc-yd)* (si2) */ - /* yc' = (ya-yb+yc-yd)* co2 + (xa-xb+xc-xd)* (si2) */ - pSrc16[i1 * 2U] = out1; - pSrc16[(i1 * 2U) + 1U] = out2; - - /* Butterfly calculations */ - /* Read yd (real), xd(imag) input */ - U0 = pSrc16[i3 * 2U]; - U1 = pSrc16[(i3 * 2U) + 1U]; - - /* T0 = yb-yd, T1 = xb-xd) */ - T0 = __SSAT(T0 - U0, 16U); - T1 = __SSAT(T1 - U1, 16U); - - /* R0 = (ya-yc) - (xb- xd) , R1 = (xa-xc) + (yb-yd) */ - R0 = (S0 >> 1U) + (T1 >> 1U); - R1 = (S1 >> 1U) - (T0 >> 1U); - - /* S1 = (ya-yc) + (xb- xd), S1 = (xa-xc) - (yb-yd) */ - S0 = (S0 >> 1U) - (T1 >> 1U); - S1 = (S1 >> 1U) + (T0 >> 1U); - - /* Butterfly process for the i0+fftLen/2 sample */ - out1 = (q15_t) ((Co1 * S0 - Si1 * S1) >> 16U); - out2 = (q15_t) ((Si1 * S0 + Co1 * S1) >> 16U); - /* xb' = (xa-yb-xc+yd)* co1 - (ya+xb-yc-xd)* (si1) */ - /* yb' = (ya+xb-yc-xd)* co1 + (xa-yb-xc+yd)* (si1) */ - pSrc16[i2 * 2U] = out1; - pSrc16[(i2 * 2U) + 1U] = out2; - - /* Butterfly process for the i0+3fftLen/4 sample */ - out1 = (q15_t) ((Co3 * R0 - Si3 * R1) >> 16U); - - out2 = (q15_t) ((Si3 * R0 + Co3 * R1) >> 16U); - /* xd' = (xa+yb-xc-yd)* Co3 - (ya-xb-yc+xd)* (si3) */ - /* yd' = (ya-xb-yc+xd)* Co3 + (xa+yb-xc-yd)* (si3) */ - pSrc16[i3 * 2U] = out1; - pSrc16[(i3 * 2U) + 1U] = out2; - - - } - } - /* Twiddle coefficients index modifier */ - twidCoefModifier <<= 2U; - } - /* End of Middle stages process */ - - - /* data is in 10.6(q6) format for the 1024 point */ - /* data is in 8.8(q8) format for the 256 point */ - /* data is in 6.10(q10) format for the 64 point */ - /* data is in 4.12(q12) format for the 16 point */ - - /* start of last stage process */ - - - /* Initializations for the last stage */ - n1 = n2; - n2 >>= 2U; - - /* Butterfly implementation */ - for (i0 = 0U; i0 <= (fftLen - n1); i0 += n1) - { - /* index calculation for the input as, */ - /* pSrc16[i0 + 0], pSrc16[i0 + fftLen/4], pSrc16[i0 + fftLen/2], pSrc16[i0 + 3fftLen/4] */ - i1 = i0 + n2; - i2 = i1 + n2; - i3 = i2 + n2; - - /* Reading i0, i0+fftLen/2 inputs */ - /* Read ya (real), xa(imag) input */ - T0 = pSrc16[i0 * 2U]; - T1 = pSrc16[(i0 * 2U) + 1U]; - /* Read yc (real), xc(imag) input */ - S0 = pSrc16[i2 * 2U]; - S1 = pSrc16[(i2 * 2U) + 1U]; - - /* R0 = (ya + yc), R1 = (xa + xc) */ - R0 = __SSAT(T0 + S0, 16U); - R1 = __SSAT(T1 + S1, 16U); - /* S0 = (ya - yc), S1 = (xa - xc) */ - S0 = __SSAT(T0 - S0, 16U); - S1 = __SSAT(T1 - S1, 16U); - - /* Reading i0+fftLen/4 , i0+3fftLen/4 inputs */ - /* Read yb (real), xb(imag) input */ - T0 = pSrc16[i1 * 2U]; - T1 = pSrc16[(i1 * 2U) + 1U]; - /* Read yd (real), xd(imag) input */ - U0 = pSrc16[i3 * 2U]; - U1 = pSrc16[(i3 * 2U) + 1U]; - - /* T0 = (yb + yd), T1 = (xb + xd) */ - T0 = __SSAT(T0 + U0, 16U); - T1 = __SSAT(T1 + U1, 16U); - - /* writing the butterfly processed i0 sample */ - /* xa' = xa + xb + xc + xd */ - /* ya' = ya + yb + yc + yd */ - pSrc16[i0 * 2U] = (R0 >> 1U) + (T0 >> 1U); - pSrc16[(i0 * 2U) + 1U] = (R1 >> 1U) + (T1 >> 1U); - - /* R0 = (ya + yc) - (yb + yd), R1 = (xa + xc) - (xb + xd) */ - R0 = (R0 >> 1U) - (T0 >> 1U); - R1 = (R1 >> 1U) - (T1 >> 1U); - - /* Read yb (real), xb(imag) input */ - T0 = pSrc16[i1 * 2U]; - T1 = pSrc16[(i1 * 2U) + 1U]; - - /* writing the butterfly processed i0 + fftLen/4 sample */ - /* xc' = (xa-xb+xc-xd) */ - /* yc' = (ya-yb+yc-yd) */ - pSrc16[i1 * 2U] = R0; - pSrc16[(i1 * 2U) + 1U] = R1; - - /* Read yd (real), xd(imag) input */ - U0 = pSrc16[i3 * 2U]; - U1 = pSrc16[(i3 * 2U) + 1U]; - /* T0 = (yb - yd), T1 = (xb - xd) */ - T0 = __SSAT(T0 - U0, 16U); - T1 = __SSAT(T1 - U1, 16U); - - /* writing the butterfly processed i0 + fftLen/2 sample */ - /* xb' = (xa-yb-xc+yd) */ - /* yb' = (ya+xb-yc-xd) */ - pSrc16[i2 * 2U] = (S0 >> 1U) - (T1 >> 1U); - pSrc16[(i2 * 2U) + 1U] = (S1 >> 1U) + (T0 >> 1U); - - - /* writing the butterfly processed i0 + 3fftLen/4 sample */ - /* xd' = (xa+yb-xc-yd) */ - /* yd' = (ya-xb-yc+xd) */ - pSrc16[i3 * 2U] = (S0 >> 1U) + (T1 >> 1U); - pSrc16[(i3 * 2U) + 1U] = (S1 >> 1U) - (T0 >> 1U); - } - /* end of last stage process */ - - /* output is in 11.5(q5) format for the 1024 point */ - /* output is in 9.7(q7) format for the 256 point */ - /* output is in 7.9(q9) format for the 64 point */ - /* output is in 5.11(q11) format for the 16 point */ - -#endif /* #if defined (ARM_MATH_DSP) */ - -} diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix4_q31.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix4_q31.c deleted file mode 100644 index 95292e4..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix4_q31.c +++ /dev/null @@ -1,1389 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_cfft_radix4_q31.c - * Description: This file has function definition of Radix-4 FFT & IFFT function and - * In-place bit reversal using bit reversal table - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -void arm_radix4_butterfly_inverse_q31( -q31_t * pSrc, -uint32_t fftLen, -q31_t * pCoef, -uint32_t twidCoefModifier); - -void arm_radix4_butterfly_q31( -q31_t * pSrc, -uint32_t fftLen, -q31_t * pCoef, -uint32_t twidCoefModifier); - -void arm_bitreversal_q31( -q31_t * pSrc, -uint32_t fftLen, -uint16_t bitRevFactor, -uint16_t * pBitRevTab); - -/** - * @ingroup groupTransforms - */ - -/** - * @addtogroup ComplexFFT - * @{ - */ - -/** - * @details - * @brief Processing function for the Q31 CFFT/CIFFT. - * @deprecated Do not use this function. It has been superseded by \ref arm_cfft_q31 and will be removed - * @param[in] *S points to an instance of the Q31 CFFT/CIFFT structure. - * @param[in, out] *pSrc points to the complex data buffer of size 2*fftLen. Processing occurs in-place. - * @return none. - * - * \par Input and output formats: - * \par - * Internally input is downscaled by 2 for every stage to avoid saturations inside CFFT/CIFFT process. - * Hence the output format is different for different FFT sizes. - * The input and output formats for different FFT sizes and number of bits to upscale are mentioned in the tables below for CFFT and CIFFT: - * \par - * \image html CFFTQ31.gif "Input and Output Formats for Q31 CFFT" - * \image html CIFFTQ31.gif "Input and Output Formats for Q31 CIFFT" - * - */ - -void arm_cfft_radix4_q31( - const arm_cfft_radix4_instance_q31 * S, - q31_t * pSrc) -{ - if (S->ifftFlag == 1U) - { - /* Complex IFFT radix-4 */ - arm_radix4_butterfly_inverse_q31(pSrc, S->fftLen, S->pTwiddle, S->twidCoefModifier); - } - else - { - /* Complex FFT radix-4 */ - arm_radix4_butterfly_q31(pSrc, S->fftLen, S->pTwiddle, S->twidCoefModifier); - } - - if (S->bitReverseFlag == 1U) - { - /* Bit Reversal */ - arm_bitreversal_q31(pSrc, S->fftLen, S->bitRevFactor, S->pBitRevTable); - } - -} - -/** - * @} end of ComplexFFT group - */ - -/* -* Radix-4 FFT algorithm used is : -* -* Input real and imaginary data: -* x(n) = xa + j * ya -* x(n+N/4 ) = xb + j * yb -* x(n+N/2 ) = xc + j * yc -* x(n+3N 4) = xd + j * yd -* -* -* Output real and imaginary data: -* x(4r) = xa'+ j * ya' -* x(4r+1) = xb'+ j * yb' -* x(4r+2) = xc'+ j * yc' -* x(4r+3) = xd'+ j * yd' -* -* -* Twiddle factors for radix-4 FFT: -* Wn = co1 + j * (- si1) -* W2n = co2 + j * (- si2) -* W3n = co3 + j * (- si3) -* -* Butterfly implementation: -* xa' = xa + xb + xc + xd -* ya' = ya + yb + yc + yd -* xb' = (xa+yb-xc-yd)* co1 + (ya-xb-yc+xd)* (si1) -* yb' = (ya-xb-yc+xd)* co1 - (xa+yb-xc-yd)* (si1) -* xc' = (xa-xb+xc-xd)* co2 + (ya-yb+yc-yd)* (si2) -* yc' = (ya-yb+yc-yd)* co2 - (xa-xb+xc-xd)* (si2) -* xd' = (xa-yb-xc+yd)* co3 + (ya+xb-yc-xd)* (si3) -* yd' = (ya+xb-yc-xd)* co3 - (xa-yb-xc+yd)* (si3) -* -*/ - -/** - * @brief Core function for the Q31 CFFT butterfly process. - * @param[in, out] *pSrc points to the in-place buffer of Q31 data type. - * @param[in] fftLen length of the FFT. - * @param[in] *pCoef points to twiddle coefficient buffer. - * @param[in] twidCoefModifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. - * @return none. - */ - -void arm_radix4_butterfly_q31( - q31_t * pSrc, - uint32_t fftLen, - q31_t * pCoef, - uint32_t twidCoefModifier) -{ -#if defined(ARM_MATH_CM7) - uint32_t n1, n2, ia1, ia2, ia3, i0, i1, i2, i3, j, k; - q31_t t1, t2, r1, r2, s1, s2, co1, co2, co3, si1, si2, si3; - - q31_t xa, xb, xc, xd; - q31_t ya, yb, yc, yd; - q31_t xa_out, xb_out, xc_out, xd_out; - q31_t ya_out, yb_out, yc_out, yd_out; - - q31_t *ptr1; - q63_t xaya, xbyb, xcyc, xdyd; - /* Total process is divided into three stages */ - - /* process first stage, middle stages, & last stage */ - - - /* start of first stage process */ - - /* Initializations for the first stage */ - n2 = fftLen; - n1 = n2; - /* n2 = fftLen/4 */ - n2 >>= 2U; - i0 = 0U; - ia1 = 0U; - - j = n2; - - /* Calculation of first stage */ - do - { - /* index calculation for the input as, */ - /* pSrc[i0 + 0], pSrc[i0 + fftLen/4], pSrc[i0 + fftLen/2U], pSrc[i0 + 3fftLen/4] */ - i1 = i0 + n2; - i2 = i1 + n2; - i3 = i2 + n2; - - /* input is in 1.31(q31) format and provide 4 guard bits for the input */ - - /* Butterfly implementation */ - /* xa + xc */ - r1 = (pSrc[(2U * i0)] >> 4U) + (pSrc[(2U * i2)] >> 4U); - /* xa - xc */ - r2 = (pSrc[2U * i0] >> 4U) - (pSrc[2U * i2] >> 4U); - - /* xb + xd */ - t1 = (pSrc[2U * i1] >> 4U) + (pSrc[2U * i3] >> 4U); - - /* ya + yc */ - s1 = (pSrc[(2U * i0) + 1U] >> 4U) + (pSrc[(2U * i2) + 1U] >> 4U); - /* ya - yc */ - s2 = (pSrc[(2U * i0) + 1U] >> 4U) - (pSrc[(2U * i2) + 1U] >> 4U); - - /* xa' = xa + xb + xc + xd */ - pSrc[2U * i0] = (r1 + t1); - /* (xa + xc) - (xb + xd) */ - r1 = r1 - t1; - /* yb + yd */ - t2 = (pSrc[(2U * i1) + 1U] >> 4U) + (pSrc[(2U * i3) + 1U] >> 4U); - - /* ya' = ya + yb + yc + yd */ - pSrc[(2U * i0) + 1U] = (s1 + t2); - - /* (ya + yc) - (yb + yd) */ - s1 = s1 - t2; - - /* yb - yd */ - t1 = (pSrc[(2U * i1) + 1U] >> 4U) - (pSrc[(2U * i3) + 1U] >> 4U); - /* xb - xd */ - t2 = (pSrc[2U * i1] >> 4U) - (pSrc[2U * i3] >> 4U); - - /* index calculation for the coefficients */ - ia2 = 2U * ia1; - co2 = pCoef[ia2 * 2U]; - si2 = pCoef[(ia2 * 2U) + 1U]; - - /* xc' = (xa-xb+xc-xd)co2 + (ya-yb+yc-yd)(si2) */ - pSrc[2U * i1] = (((int32_t) (((q63_t) r1 * co2) >> 32)) + - ((int32_t) (((q63_t) s1 * si2) >> 32))) << 1U; - - /* yc' = (ya-yb+yc-yd)co2 - (xa-xb+xc-xd)(si2) */ - pSrc[(2U * i1) + 1U] = (((int32_t) (((q63_t) s1 * co2) >> 32)) - - ((int32_t) (((q63_t) r1 * si2) >> 32))) << 1U; - - /* (xa - xc) + (yb - yd) */ - r1 = r2 + t1; - /* (xa - xc) - (yb - yd) */ - r2 = r2 - t1; - - /* (ya - yc) - (xb - xd) */ - s1 = s2 - t2; - /* (ya - yc) + (xb - xd) */ - s2 = s2 + t2; - - co1 = pCoef[ia1 * 2U]; - si1 = pCoef[(ia1 * 2U) + 1U]; - - /* xb' = (xa+yb-xc-yd)co1 + (ya-xb-yc+xd)(si1) */ - pSrc[2U * i2] = (((int32_t) (((q63_t) r1 * co1) >> 32)) + - ((int32_t) (((q63_t) s1 * si1) >> 32))) << 1U; - - /* yb' = (ya-xb-yc+xd)co1 - (xa+yb-xc-yd)(si1) */ - pSrc[(2U * i2) + 1U] = (((int32_t) (((q63_t) s1 * co1) >> 32)) - - ((int32_t) (((q63_t) r1 * si1) >> 32))) << 1U; - - /* index calculation for the coefficients */ - ia3 = 3U * ia1; - co3 = pCoef[ia3 * 2U]; - si3 = pCoef[(ia3 * 2U) + 1U]; - - /* xd' = (xa-yb-xc+yd)co3 + (ya+xb-yc-xd)(si3) */ - pSrc[2U * i3] = (((int32_t) (((q63_t) r2 * co3) >> 32)) + - ((int32_t) (((q63_t) s2 * si3) >> 32))) << 1U; - - /* yd' = (ya+xb-yc-xd)co3 - (xa-yb-xc+yd)(si3) */ - pSrc[(2U * i3) + 1U] = (((int32_t) (((q63_t) s2 * co3) >> 32)) - - ((int32_t) (((q63_t) r2 * si3) >> 32))) << 1U; - - /* Twiddle coefficients index modifier */ - ia1 = ia1 + twidCoefModifier; - - /* Updating input index */ - i0 = i0 + 1U; - - } while (--j); - - /* end of first stage process */ - - /* data is in 5.27(q27) format */ - - - /* start of Middle stages process */ - - - /* each stage in middle stages provides two down scaling of the input */ - - twidCoefModifier <<= 2U; - - - for (k = fftLen / 4U; k > 4U; k >>= 2U) - { - /* Initializations for the first stage */ - n1 = n2; - n2 >>= 2U; - ia1 = 0U; - - /* Calculation of first stage */ - for (j = 0U; j <= (n2 - 1U); j++) - { - /* index calculation for the coefficients */ - ia2 = ia1 + ia1; - ia3 = ia2 + ia1; - co1 = pCoef[ia1 * 2U]; - si1 = pCoef[(ia1 * 2U) + 1U]; - co2 = pCoef[ia2 * 2U]; - si2 = pCoef[(ia2 * 2U) + 1U]; - co3 = pCoef[ia3 * 2U]; - si3 = pCoef[(ia3 * 2U) + 1U]; - /* Twiddle coefficients index modifier */ - ia1 = ia1 + twidCoefModifier; - - for (i0 = j; i0 < fftLen; i0 += n1) - { - /* index calculation for the input as, */ - /* pSrc[i0 + 0], pSrc[i0 + fftLen/4], pSrc[i0 + fftLen/2U], pSrc[i0 + 3fftLen/4] */ - i1 = i0 + n2; - i2 = i1 + n2; - i3 = i2 + n2; - - /* Butterfly implementation */ - /* xa + xc */ - r1 = pSrc[2U * i0] + pSrc[2U * i2]; - /* xa - xc */ - r2 = pSrc[2U * i0] - pSrc[2U * i2]; - - /* ya + yc */ - s1 = pSrc[(2U * i0) + 1U] + pSrc[(2U * i2) + 1U]; - /* ya - yc */ - s2 = pSrc[(2U * i0) + 1U] - pSrc[(2U * i2) + 1U]; - - /* xb + xd */ - t1 = pSrc[2U * i1] + pSrc[2U * i3]; - - /* xa' = xa + xb + xc + xd */ - pSrc[2U * i0] = (r1 + t1) >> 2U; - /* xa + xc -(xb + xd) */ - r1 = r1 - t1; - - /* yb + yd */ - t2 = pSrc[(2U * i1) + 1U] + pSrc[(2U * i3) + 1U]; - /* ya' = ya + yb + yc + yd */ - pSrc[(2U * i0) + 1U] = (s1 + t2) >> 2U; - - /* (ya + yc) - (yb + yd) */ - s1 = s1 - t2; - - /* (yb - yd) */ - t1 = pSrc[(2U * i1) + 1U] - pSrc[(2U * i3) + 1U]; - /* (xb - xd) */ - t2 = pSrc[2U * i1] - pSrc[2U * i3]; - - /* xc' = (xa-xb+xc-xd)co2 + (ya-yb+yc-yd)(si2) */ - pSrc[2U * i1] = (((int32_t) (((q63_t) r1 * co2) >> 32)) + - ((int32_t) (((q63_t) s1 * si2) >> 32))) >> 1U; - - /* yc' = (ya-yb+yc-yd)co2 - (xa-xb+xc-xd)(si2) */ - pSrc[(2U * i1) + 1U] = (((int32_t) (((q63_t) s1 * co2) >> 32)) - - ((int32_t) (((q63_t) r1 * si2) >> 32))) >> 1U; - - /* (xa - xc) + (yb - yd) */ - r1 = r2 + t1; - /* (xa - xc) - (yb - yd) */ - r2 = r2 - t1; - - /* (ya - yc) - (xb - xd) */ - s1 = s2 - t2; - /* (ya - yc) + (xb - xd) */ - s2 = s2 + t2; - - /* xb' = (xa+yb-xc-yd)co1 + (ya-xb-yc+xd)(si1) */ - pSrc[2U * i2] = (((int32_t) (((q63_t) r1 * co1) >> 32)) + - ((int32_t) (((q63_t) s1 * si1) >> 32))) >> 1U; - - /* yb' = (ya-xb-yc+xd)co1 - (xa+yb-xc-yd)(si1) */ - pSrc[(2U * i2) + 1U] = (((int32_t) (((q63_t) s1 * co1) >> 32)) - - ((int32_t) (((q63_t) r1 * si1) >> 32))) >> 1U; - - /* xd' = (xa-yb-xc+yd)co3 + (ya+xb-yc-xd)(si3) */ - pSrc[2U * i3] = (((int32_t) (((q63_t) r2 * co3) >> 32)) + - ((int32_t) (((q63_t) s2 * si3) >> 32))) >> 1U; - - /* yd' = (ya+xb-yc-xd)co3 - (xa-yb-xc+yd)(si3) */ - pSrc[(2U * i3) + 1U] = (((int32_t) (((q63_t) s2 * co3) >> 32)) - - ((int32_t) (((q63_t) r2 * si3) >> 32))) >> 1U; - } - } - twidCoefModifier <<= 2U; - } -#else - uint32_t n1, n2, ia1, ia2, ia3, i0, j, k; - q31_t t1, t2, r1, r2, s1, s2, co1, co2, co3, si1, si2, si3; - - q31_t xa, xb, xc, xd; - q31_t ya, yb, yc, yd; - q31_t xa_out, xb_out, xc_out, xd_out; - q31_t ya_out, yb_out, yc_out, yd_out; - - q31_t *ptr1; - q31_t *pSi0; - q31_t *pSi1; - q31_t *pSi2; - q31_t *pSi3; - q63_t xaya, xbyb, xcyc, xdyd; - /* Total process is divided into three stages */ - - /* process first stage, middle stages, & last stage */ - - - /* start of first stage process */ - - /* Initializations for the first stage */ - n2 = fftLen; - n1 = n2; - /* n2 = fftLen/4 */ - n2 >>= 2U; - - ia1 = 0U; - - j = n2; - - pSi0 = pSrc; - pSi1 = pSi0 + 2 * n2; - pSi2 = pSi1 + 2 * n2; - pSi3 = pSi2 + 2 * n2; - - /* Calculation of first stage */ - do - { - /* input is in 1.31(q31) format and provide 4 guard bits for the input */ - - /* Butterfly implementation */ - /* xa + xc */ - r1 = (pSi0[0] >> 4U) + (pSi2[0] >> 4U); - /* xa - xc */ - r2 = (pSi0[0] >> 4U) - (pSi2[0] >> 4U); - - /* xb + xd */ - t1 = (pSi1[0] >> 4U) + (pSi3[0] >> 4U); - - /* ya + yc */ - s1 = (pSi0[1] >> 4U) + (pSi2[1] >> 4U); - /* ya - yc */ - s2 = (pSi0[1] >> 4U) - (pSi2[1] >> 4U); - - /* xa' = xa + xb + xc + xd */ - *pSi0++ = (r1 + t1); - /* (xa + xc) - (xb + xd) */ - r1 = r1 - t1; - /* yb + yd */ - t2 = (pSi1[1] >> 4U) + (pSi3[1] >> 4U); - - /* ya' = ya + yb + yc + yd */ - *pSi0++ = (s1 + t2); - - /* (ya + yc) - (yb + yd) */ - s1 = s1 - t2; - - /* yb - yd */ - t1 = (pSi1[1] >> 4U) - (pSi3[1] >> 4U); - /* xb - xd */ - t2 = (pSi1[0] >> 4U) - (pSi3[0] >> 4U); - - /* index calculation for the coefficients */ - ia2 = 2U * ia1; - co2 = pCoef[ia2 * 2U]; - si2 = pCoef[(ia2 * 2U) + 1U]; - - /* xc' = (xa-xb+xc-xd)co2 + (ya-yb+yc-yd)(si2) */ - *pSi1++ = (((int32_t) (((q63_t) r1 * co2) >> 32)) + - ((int32_t) (((q63_t) s1 * si2) >> 32))) << 1U; - - /* yc' = (ya-yb+yc-yd)co2 - (xa-xb+xc-xd)(si2) */ - *pSi1++ = (((int32_t) (((q63_t) s1 * co2) >> 32)) - - ((int32_t) (((q63_t) r1 * si2) >> 32))) << 1U; - - /* (xa - xc) + (yb - yd) */ - r1 = r2 + t1; - /* (xa - xc) - (yb - yd) */ - r2 = r2 - t1; - - /* (ya - yc) - (xb - xd) */ - s1 = s2 - t2; - /* (ya - yc) + (xb - xd) */ - s2 = s2 + t2; - - co1 = pCoef[ia1 * 2U]; - si1 = pCoef[(ia1 * 2U) + 1U]; - - /* xb' = (xa+yb-xc-yd)co1 + (ya-xb-yc+xd)(si1) */ - *pSi2++ = (((int32_t) (((q63_t) r1 * co1) >> 32)) + - ((int32_t) (((q63_t) s1 * si1) >> 32))) << 1U; - - /* yb' = (ya-xb-yc+xd)co1 - (xa+yb-xc-yd)(si1) */ - *pSi2++ = (((int32_t) (((q63_t) s1 * co1) >> 32)) - - ((int32_t) (((q63_t) r1 * si1) >> 32))) << 1U; - - /* index calculation for the coefficients */ - ia3 = 3U * ia1; - co3 = pCoef[ia3 * 2U]; - si3 = pCoef[(ia3 * 2U) + 1U]; - - /* xd' = (xa-yb-xc+yd)co3 + (ya+xb-yc-xd)(si3) */ - *pSi3++ = (((int32_t) (((q63_t) r2 * co3) >> 32)) + - ((int32_t) (((q63_t) s2 * si3) >> 32))) << 1U; - - /* yd' = (ya+xb-yc-xd)co3 - (xa-yb-xc+yd)(si3) */ - *pSi3++ = (((int32_t) (((q63_t) s2 * co3) >> 32)) - - ((int32_t) (((q63_t) r2 * si3) >> 32))) << 1U; - - /* Twiddle coefficients index modifier */ - ia1 = ia1 + twidCoefModifier; - - } while (--j); - - /* end of first stage process */ - - /* data is in 5.27(q27) format */ - - - /* start of Middle stages process */ - - - /* each stage in middle stages provides two down scaling of the input */ - - twidCoefModifier <<= 2U; - - - for (k = fftLen / 4U; k > 4U; k >>= 2U) - { - /* Initializations for the first stage */ - n1 = n2; - n2 >>= 2U; - ia1 = 0U; - - /* Calculation of first stage */ - for (j = 0U; j <= (n2 - 1U); j++) - { - /* index calculation for the coefficients */ - ia2 = ia1 + ia1; - ia3 = ia2 + ia1; - co1 = pCoef[ia1 * 2U]; - si1 = pCoef[(ia1 * 2U) + 1U]; - co2 = pCoef[ia2 * 2U]; - si2 = pCoef[(ia2 * 2U) + 1U]; - co3 = pCoef[ia3 * 2U]; - si3 = pCoef[(ia3 * 2U) + 1U]; - /* Twiddle coefficients index modifier */ - ia1 = ia1 + twidCoefModifier; - - pSi0 = pSrc + 2 * j; - pSi1 = pSi0 + 2 * n2; - pSi2 = pSi1 + 2 * n2; - pSi3 = pSi2 + 2 * n2; - - for (i0 = j; i0 < fftLen; i0 += n1) - { - /* Butterfly implementation */ - /* xa + xc */ - r1 = pSi0[0] + pSi2[0]; - - /* xa - xc */ - r2 = pSi0[0] - pSi2[0]; - - - /* ya + yc */ - s1 = pSi0[1] + pSi2[1]; - - /* ya - yc */ - s2 = pSi0[1] - pSi2[1]; - - - /* xb + xd */ - t1 = pSi1[0] + pSi3[0]; - - - /* xa' = xa + xb + xc + xd */ - pSi0[0] = (r1 + t1) >> 2U; - /* xa + xc -(xb + xd) */ - r1 = r1 - t1; - - /* yb + yd */ - t2 = pSi1[1] + pSi3[1]; - - /* ya' = ya + yb + yc + yd */ - pSi0[1] = (s1 + t2) >> 2U; - pSi0 += 2 * n1; - - /* (ya + yc) - (yb + yd) */ - s1 = s1 - t2; - - /* (yb - yd) */ - t1 = pSi1[1] - pSi3[1]; - - /* (xb - xd) */ - t2 = pSi1[0] - pSi3[0]; - - - /* xc' = (xa-xb+xc-xd)co2 + (ya-yb+yc-yd)(si2) */ - pSi1[0] = (((int32_t) (((q63_t) r1 * co2) >> 32)) + - ((int32_t) (((q63_t) s1 * si2) >> 32))) >> 1U; - - /* yc' = (ya-yb+yc-yd)co2 - (xa-xb+xc-xd)(si2) */ - pSi1[1] = (((int32_t) (((q63_t) s1 * co2) >> 32)) - - ((int32_t) (((q63_t) r1 * si2) >> 32))) >> 1U; - pSi1 += 2 * n1; - - /* (xa - xc) + (yb - yd) */ - r1 = r2 + t1; - /* (xa - xc) - (yb - yd) */ - r2 = r2 - t1; - - /* (ya - yc) - (xb - xd) */ - s1 = s2 - t2; - /* (ya - yc) + (xb - xd) */ - s2 = s2 + t2; - - /* xb' = (xa+yb-xc-yd)co1 + (ya-xb-yc+xd)(si1) */ - pSi2[0] = (((int32_t) (((q63_t) r1 * co1) >> 32)) + - ((int32_t) (((q63_t) s1 * si1) >> 32))) >> 1U; - - /* yb' = (ya-xb-yc+xd)co1 - (xa+yb-xc-yd)(si1) */ - pSi2[1] = (((int32_t) (((q63_t) s1 * co1) >> 32)) - - ((int32_t) (((q63_t) r1 * si1) >> 32))) >> 1U; - pSi2 += 2 * n1; - - /* xd' = (xa-yb-xc+yd)co3 + (ya+xb-yc-xd)(si3) */ - pSi3[0] = (((int32_t) (((q63_t) r2 * co3) >> 32)) + - ((int32_t) (((q63_t) s2 * si3) >> 32))) >> 1U; - - /* yd' = (ya+xb-yc-xd)co3 - (xa-yb-xc+yd)(si3) */ - pSi3[1] = (((int32_t) (((q63_t) s2 * co3) >> 32)) - - ((int32_t) (((q63_t) r2 * si3) >> 32))) >> 1U; - pSi3 += 2 * n1; - } - } - twidCoefModifier <<= 2U; - } -#endif - - /* End of Middle stages process */ - - /* data is in 11.21(q21) format for the 1024 point as there are 3 middle stages */ - /* data is in 9.23(q23) format for the 256 point as there are 2 middle stages */ - /* data is in 7.25(q25) format for the 64 point as there are 1 middle stage */ - /* data is in 5.27(q27) format for the 16 point as there are no middle stages */ - - - /* start of Last stage process */ - /* Initializations for the last stage */ - j = fftLen >> 2; - ptr1 = &pSrc[0]; - - /* Calculations of last stage */ - do - { - -#ifndef ARM_MATH_BIG_ENDIAN - - /* Read xa (real), ya(imag) input */ - xaya = *__SIMD64(ptr1)++; - xa = (q31_t) xaya; - ya = (q31_t) (xaya >> 32); - - /* Read xb (real), yb(imag) input */ - xbyb = *__SIMD64(ptr1)++; - xb = (q31_t) xbyb; - yb = (q31_t) (xbyb >> 32); - - /* Read xc (real), yc(imag) input */ - xcyc = *__SIMD64(ptr1)++; - xc = (q31_t) xcyc; - yc = (q31_t) (xcyc >> 32); - - /* Read xc (real), yc(imag) input */ - xdyd = *__SIMD64(ptr1)++; - xd = (q31_t) xdyd; - yd = (q31_t) (xdyd >> 32); - -#else - - /* Read xa (real), ya(imag) input */ - xaya = *__SIMD64(ptr1)++; - ya = (q31_t) xaya; - xa = (q31_t) (xaya >> 32); - - /* Read xb (real), yb(imag) input */ - xbyb = *__SIMD64(ptr1)++; - yb = (q31_t) xbyb; - xb = (q31_t) (xbyb >> 32); - - /* Read xc (real), yc(imag) input */ - xcyc = *__SIMD64(ptr1)++; - yc = (q31_t) xcyc; - xc = (q31_t) (xcyc >> 32); - - /* Read xc (real), yc(imag) input */ - xdyd = *__SIMD64(ptr1)++; - yd = (q31_t) xdyd; - xd = (q31_t) (xdyd >> 32); - - -#endif - - /* xa' = xa + xb + xc + xd */ - xa_out = xa + xb + xc + xd; - - /* ya' = ya + yb + yc + yd */ - ya_out = ya + yb + yc + yd; - - /* pointer updation for writing */ - ptr1 = ptr1 - 8U; - - /* writing xa' and ya' */ - *ptr1++ = xa_out; - *ptr1++ = ya_out; - - xc_out = (xa - xb + xc - xd); - yc_out = (ya - yb + yc - yd); - - /* writing xc' and yc' */ - *ptr1++ = xc_out; - *ptr1++ = yc_out; - - xb_out = (xa + yb - xc - yd); - yb_out = (ya - xb - yc + xd); - - /* writing xb' and yb' */ - *ptr1++ = xb_out; - *ptr1++ = yb_out; - - xd_out = (xa - yb - xc + yd); - yd_out = (ya + xb - yc - xd); - - /* writing xd' and yd' */ - *ptr1++ = xd_out; - *ptr1++ = yd_out; - - - } while (--j); - - /* output is in 11.21(q21) format for the 1024 point */ - /* output is in 9.23(q23) format for the 256 point */ - /* output is in 7.25(q25) format for the 64 point */ - /* output is in 5.27(q27) format for the 16 point */ - - /* End of last stage process */ - -} - - -/** - * @brief Core function for the Q31 CIFFT butterfly process. - * @param[in, out] *pSrc points to the in-place buffer of Q31 data type. - * @param[in] fftLen length of the FFT. - * @param[in] *pCoef points to twiddle coefficient buffer. - * @param[in] twidCoefModifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. - * @return none. - */ - - -/* -* Radix-4 IFFT algorithm used is : -* -* CIFFT uses same twiddle coefficients as CFFT Function -* x[k] = x[n] + (j)k * x[n + fftLen/4] + (-1)k * x[n+fftLen/2] + (-j)k * x[n+3*fftLen/4] -* -* -* IFFT is implemented with following changes in equations from FFT -* -* Input real and imaginary data: -* x(n) = xa + j * ya -* x(n+N/4 ) = xb + j * yb -* x(n+N/2 ) = xc + j * yc -* x(n+3N 4) = xd + j * yd -* -* -* Output real and imaginary data: -* x(4r) = xa'+ j * ya' -* x(4r+1) = xb'+ j * yb' -* x(4r+2) = xc'+ j * yc' -* x(4r+3) = xd'+ j * yd' -* -* -* Twiddle factors for radix-4 IFFT: -* Wn = co1 + j * (si1) -* W2n = co2 + j * (si2) -* W3n = co3 + j * (si3) - -* The real and imaginary output values for the radix-4 butterfly are -* xa' = xa + xb + xc + xd -* ya' = ya + yb + yc + yd -* xb' = (xa-yb-xc+yd)* co1 - (ya+xb-yc-xd)* (si1) -* yb' = (ya+xb-yc-xd)* co1 + (xa-yb-xc+yd)* (si1) -* xc' = (xa-xb+xc-xd)* co2 - (ya-yb+yc-yd)* (si2) -* yc' = (ya-yb+yc-yd)* co2 + (xa-xb+xc-xd)* (si2) -* xd' = (xa+yb-xc-yd)* co3 - (ya-xb-yc+xd)* (si3) -* yd' = (ya-xb-yc+xd)* co3 + (xa+yb-xc-yd)* (si3) -* -*/ - -void arm_radix4_butterfly_inverse_q31( - q31_t * pSrc, - uint32_t fftLen, - q31_t * pCoef, - uint32_t twidCoefModifier) -{ -#if defined(ARM_MATH_CM7) - uint32_t n1, n2, ia1, ia2, ia3, i0, i1, i2, i3, j, k; - q31_t t1, t2, r1, r2, s1, s2, co1, co2, co3, si1, si2, si3; - q31_t xa, xb, xc, xd; - q31_t ya, yb, yc, yd; - q31_t xa_out, xb_out, xc_out, xd_out; - q31_t ya_out, yb_out, yc_out, yd_out; - - q31_t *ptr1; - q63_t xaya, xbyb, xcyc, xdyd; - - /* input is be 1.31(q31) format for all FFT sizes */ - /* Total process is divided into three stages */ - /* process first stage, middle stages, & last stage */ - - /* Start of first stage process */ - - /* Initializations for the first stage */ - n2 = fftLen; - n1 = n2; - /* n2 = fftLen/4 */ - n2 >>= 2U; - i0 = 0U; - ia1 = 0U; - - j = n2; - - do - { - - /* input is in 1.31(q31) format and provide 4 guard bits for the input */ - - /* index calculation for the input as, */ - /* pSrc[i0 + 0], pSrc[i0 + fftLen/4], pSrc[i0 + fftLen/2U], pSrc[i0 + 3fftLen/4] */ - i1 = i0 + n2; - i2 = i1 + n2; - i3 = i2 + n2; - - /* Butterfly implementation */ - /* xa + xc */ - r1 = (pSrc[2U * i0] >> 4U) + (pSrc[2U * i2] >> 4U); - /* xa - xc */ - r2 = (pSrc[2U * i0] >> 4U) - (pSrc[2U * i2] >> 4U); - - /* xb + xd */ - t1 = (pSrc[2U * i1] >> 4U) + (pSrc[2U * i3] >> 4U); - - /* ya + yc */ - s1 = (pSrc[(2U * i0) + 1U] >> 4U) + (pSrc[(2U * i2) + 1U] >> 4U); - /* ya - yc */ - s2 = (pSrc[(2U * i0) + 1U] >> 4U) - (pSrc[(2U * i2) + 1U] >> 4U); - - /* xa' = xa + xb + xc + xd */ - pSrc[2U * i0] = (r1 + t1); - /* (xa + xc) - (xb + xd) */ - r1 = r1 - t1; - /* yb + yd */ - t2 = (pSrc[(2U * i1) + 1U] >> 4U) + (pSrc[(2U * i3) + 1U] >> 4U); - /* ya' = ya + yb + yc + yd */ - pSrc[(2U * i0) + 1U] = (s1 + t2); - - /* (ya + yc) - (yb + yd) */ - s1 = s1 - t2; - - /* yb - yd */ - t1 = (pSrc[(2U * i1) + 1U] >> 4U) - (pSrc[(2U * i3) + 1U] >> 4U); - /* xb - xd */ - t2 = (pSrc[2U * i1] >> 4U) - (pSrc[2U * i3] >> 4U); - - /* index calculation for the coefficients */ - ia2 = 2U * ia1; - co2 = pCoef[ia2 * 2U]; - si2 = pCoef[(ia2 * 2U) + 1U]; - - /* xc' = (xa-xb+xc-xd)co2 - (ya-yb+yc-yd)(si2) */ - pSrc[2U * i1] = (((int32_t) (((q63_t) r1 * co2) >> 32)) - - ((int32_t) (((q63_t) s1 * si2) >> 32))) << 1U; - - /* yc' = (ya-yb+yc-yd)co2 + (xa-xb+xc-xd)(si2) */ - pSrc[2U * i1 + 1U] = (((int32_t) (((q63_t) s1 * co2) >> 32)) + - ((int32_t) (((q63_t) r1 * si2) >> 32))) << 1U; - - /* (xa - xc) - (yb - yd) */ - r1 = r2 - t1; - /* (xa - xc) + (yb - yd) */ - r2 = r2 + t1; - - /* (ya - yc) + (xb - xd) */ - s1 = s2 + t2; - /* (ya - yc) - (xb - xd) */ - s2 = s2 - t2; - - co1 = pCoef[ia1 * 2U]; - si1 = pCoef[(ia1 * 2U) + 1U]; - - /* xb' = (xa+yb-xc-yd)co1 - (ya-xb-yc+xd)(si1) */ - pSrc[2U * i2] = (((int32_t) (((q63_t) r1 * co1) >> 32)) - - ((int32_t) (((q63_t) s1 * si1) >> 32))) << 1U; - - /* yb' = (ya-xb-yc+xd)co1 + (xa+yb-xc-yd)(si1) */ - pSrc[(2U * i2) + 1U] = (((int32_t) (((q63_t) s1 * co1) >> 32)) + - ((int32_t) (((q63_t) r1 * si1) >> 32))) << 1U; - - /* index calculation for the coefficients */ - ia3 = 3U * ia1; - co3 = pCoef[ia3 * 2U]; - si3 = pCoef[(ia3 * 2U) + 1U]; - - /* xd' = (xa-yb-xc+yd)co3 - (ya+xb-yc-xd)(si3) */ - pSrc[2U * i3] = (((int32_t) (((q63_t) r2 * co3) >> 32)) - - ((int32_t) (((q63_t) s2 * si3) >> 32))) << 1U; - - /* yd' = (ya+xb-yc-xd)co3 + (xa-yb-xc+yd)(si3) */ - pSrc[(2U * i3) + 1U] = (((int32_t) (((q63_t) s2 * co3) >> 32)) + - ((int32_t) (((q63_t) r2 * si3) >> 32))) << 1U; - - /* Twiddle coefficients index modifier */ - ia1 = ia1 + twidCoefModifier; - - /* Updating input index */ - i0 = i0 + 1U; - - } while (--j); - - /* data is in 5.27(q27) format */ - /* each stage provides two down scaling of the input */ - - - /* Start of Middle stages process */ - - twidCoefModifier <<= 2U; - - /* Calculation of second stage to excluding last stage */ - for (k = fftLen / 4U; k > 4U; k >>= 2U) - { - /* Initializations for the first stage */ - n1 = n2; - n2 >>= 2U; - ia1 = 0U; - - for (j = 0; j <= (n2 - 1U); j++) - { - /* index calculation for the coefficients */ - ia2 = ia1 + ia1; - ia3 = ia2 + ia1; - co1 = pCoef[ia1 * 2U]; - si1 = pCoef[(ia1 * 2U) + 1U]; - co2 = pCoef[ia2 * 2U]; - si2 = pCoef[(ia2 * 2U) + 1U]; - co3 = pCoef[ia3 * 2U]; - si3 = pCoef[(ia3 * 2U) + 1U]; - /* Twiddle coefficients index modifier */ - ia1 = ia1 + twidCoefModifier; - - for (i0 = j; i0 < fftLen; i0 += n1) - { - /* index calculation for the input as, */ - /* pSrc[i0 + 0], pSrc[i0 + fftLen/4], pSrc[i0 + fftLen/2U], pSrc[i0 + 3fftLen/4] */ - i1 = i0 + n2; - i2 = i1 + n2; - i3 = i2 + n2; - - /* Butterfly implementation */ - /* xa + xc */ - r1 = pSrc[2U * i0] + pSrc[2U * i2]; - /* xa - xc */ - r2 = pSrc[2U * i0] - pSrc[2U * i2]; - - /* ya + yc */ - s1 = pSrc[(2U * i0) + 1U] + pSrc[(2U * i2) + 1U]; - /* ya - yc */ - s2 = pSrc[(2U * i0) + 1U] - pSrc[(2U * i2) + 1U]; - - /* xb + xd */ - t1 = pSrc[2U * i1] + pSrc[2U * i3]; - - /* xa' = xa + xb + xc + xd */ - pSrc[2U * i0] = (r1 + t1) >> 2U; - /* xa + xc -(xb + xd) */ - r1 = r1 - t1; - /* yb + yd */ - t2 = pSrc[(2U * i1) + 1U] + pSrc[(2U * i3) + 1U]; - /* ya' = ya + yb + yc + yd */ - pSrc[(2U * i0) + 1U] = (s1 + t2) >> 2U; - - /* (ya + yc) - (yb + yd) */ - s1 = s1 - t2; - - /* (yb - yd) */ - t1 = pSrc[(2U * i1) + 1U] - pSrc[(2U * i3) + 1U]; - /* (xb - xd) */ - t2 = pSrc[2U * i1] - pSrc[2U * i3]; - - /* xc' = (xa-xb+xc-xd)co2 - (ya-yb+yc-yd)(si2) */ - pSrc[2U * i1] = (((int32_t) (((q63_t) r1 * co2) >> 32U)) - - ((int32_t) (((q63_t) s1 * si2) >> 32U))) >> 1U; - - /* yc' = (ya-yb+yc-yd)co2 + (xa-xb+xc-xd)(si2) */ - pSrc[(2U * i1) + 1U] = - (((int32_t) (((q63_t) s1 * co2) >> 32U)) + - ((int32_t) (((q63_t) r1 * si2) >> 32U))) >> 1U; - - /* (xa - xc) - (yb - yd) */ - r1 = r2 - t1; - /* (xa - xc) + (yb - yd) */ - r2 = r2 + t1; - - /* (ya - yc) + (xb - xd) */ - s1 = s2 + t2; - /* (ya - yc) - (xb - xd) */ - s2 = s2 - t2; - - /* xb' = (xa+yb-xc-yd)co1 - (ya-xb-yc+xd)(si1) */ - pSrc[2U * i2] = (((int32_t) (((q63_t) r1 * co1) >> 32)) - - ((int32_t) (((q63_t) s1 * si1) >> 32))) >> 1U; - - /* yb' = (ya-xb-yc+xd)co1 + (xa+yb-xc-yd)(si1) */ - pSrc[(2U * i2) + 1U] = (((int32_t) (((q63_t) s1 * co1) >> 32)) + - ((int32_t) (((q63_t) r1 * si1) >> 32))) >> 1U; - - /* xd' = (xa-yb-xc+yd)co3 - (ya+xb-yc-xd)(si3) */ - pSrc[(2U * i3)] = (((int32_t) (((q63_t) r2 * co3) >> 32)) - - ((int32_t) (((q63_t) s2 * si3) >> 32))) >> 1U; - - /* yd' = (ya+xb-yc-xd)co3 + (xa-yb-xc+yd)(si3) */ - pSrc[(2U * i3) + 1U] = (((int32_t) (((q63_t) s2 * co3) >> 32)) + - ((int32_t) (((q63_t) r2 * si3) >> 32))) >> 1U; - } - } - twidCoefModifier <<= 2U; - } -#else - uint32_t n1, n2, ia1, ia2, ia3, i0, j, k; - q31_t t1, t2, r1, r2, s1, s2, co1, co2, co3, si1, si2, si3; - q31_t xa, xb, xc, xd; - q31_t ya, yb, yc, yd; - q31_t xa_out, xb_out, xc_out, xd_out; - q31_t ya_out, yb_out, yc_out, yd_out; - - q31_t *ptr1; - q31_t *pSi0; - q31_t *pSi1; - q31_t *pSi2; - q31_t *pSi3; - q63_t xaya, xbyb, xcyc, xdyd; - - /* input is be 1.31(q31) format for all FFT sizes */ - /* Total process is divided into three stages */ - /* process first stage, middle stages, & last stage */ - - /* Start of first stage process */ - - /* Initializations for the first stage */ - n2 = fftLen; - n1 = n2; - /* n2 = fftLen/4 */ - n2 >>= 2U; - - ia1 = 0U; - - j = n2; - - pSi0 = pSrc; - pSi1 = pSi0 + 2 * n2; - pSi2 = pSi1 + 2 * n2; - pSi3 = pSi2 + 2 * n2; - - do - { - /* Butterfly implementation */ - /* xa + xc */ - r1 = (pSi0[0] >> 4U) + (pSi2[0] >> 4U); - /* xa - xc */ - r2 = (pSi0[0] >> 4U) - (pSi2[0] >> 4U); - - /* xb + xd */ - t1 = (pSi1[0] >> 4U) + (pSi3[0] >> 4U); - - /* ya + yc */ - s1 = (pSi0[1] >> 4U) + (pSi2[1] >> 4U); - /* ya - yc */ - s2 = (pSi0[1] >> 4U) - (pSi2[1] >> 4U); - - /* xa' = xa + xb + xc + xd */ - *pSi0++ = (r1 + t1); - /* (xa + xc) - (xb + xd) */ - r1 = r1 - t1; - /* yb + yd */ - t2 = (pSi1[1] >> 4U) + (pSi3[1] >> 4U); - /* ya' = ya + yb + yc + yd */ - *pSi0++ = (s1 + t2); - - /* (ya + yc) - (yb + yd) */ - s1 = s1 - t2; - - /* yb - yd */ - t1 = (pSi1[1] >> 4U) - (pSi3[1] >> 4U); - /* xb - xd */ - t2 = (pSi1[0] >> 4U) - (pSi3[0] >> 4U); - - /* index calculation for the coefficients */ - ia2 = 2U * ia1; - co2 = pCoef[ia2 * 2U]; - si2 = pCoef[(ia2 * 2U) + 1U]; - - /* xc' = (xa-xb+xc-xd)co2 - (ya-yb+yc-yd)(si2) */ - *pSi1++ = (((int32_t) (((q63_t) r1 * co2) >> 32)) - - ((int32_t) (((q63_t) s1 * si2) >> 32))) << 1U; - - /* yc' = (ya-yb+yc-yd)co2 + (xa-xb+xc-xd)(si2) */ - *pSi1++ = (((int32_t) (((q63_t) s1 * co2) >> 32)) + - ((int32_t) (((q63_t) r1 * si2) >> 32))) << 1U; - - /* (xa - xc) - (yb - yd) */ - r1 = r2 - t1; - /* (xa - xc) + (yb - yd) */ - r2 = r2 + t1; - - /* (ya - yc) + (xb - xd) */ - s1 = s2 + t2; - /* (ya - yc) - (xb - xd) */ - s2 = s2 - t2; - - co1 = pCoef[ia1 * 2U]; - si1 = pCoef[(ia1 * 2U) + 1U]; - - /* xb' = (xa+yb-xc-yd)co1 - (ya-xb-yc+xd)(si1) */ - *pSi2++ = (((int32_t) (((q63_t) r1 * co1) >> 32)) - - ((int32_t) (((q63_t) s1 * si1) >> 32))) << 1U; - - /* yb' = (ya-xb-yc+xd)co1 + (xa+yb-xc-yd)(si1) */ - *pSi2++ = (((int32_t) (((q63_t) s1 * co1) >> 32)) + - ((int32_t) (((q63_t) r1 * si1) >> 32))) << 1U; - - /* index calculation for the coefficients */ - ia3 = 3U * ia1; - co3 = pCoef[ia3 * 2U]; - si3 = pCoef[(ia3 * 2U) + 1U]; - - /* xd' = (xa-yb-xc+yd)co3 - (ya+xb-yc-xd)(si3) */ - *pSi3++ = (((int32_t) (((q63_t) r2 * co3) >> 32)) - - ((int32_t) (((q63_t) s2 * si3) >> 32))) << 1U; - - /* yd' = (ya+xb-yc-xd)co3 + (xa-yb-xc+yd)(si3) */ - *pSi3++ = (((int32_t) (((q63_t) s2 * co3) >> 32)) + - ((int32_t) (((q63_t) r2 * si3) >> 32))) << 1U; - - /* Twiddle coefficients index modifier */ - ia1 = ia1 + twidCoefModifier; - - } while (--j); - - /* data is in 5.27(q27) format */ - /* each stage provides two down scaling of the input */ - - - /* Start of Middle stages process */ - - twidCoefModifier <<= 2U; - - /* Calculation of second stage to excluding last stage */ - for (k = fftLen / 4U; k > 4U; k >>= 2U) - { - /* Initializations for the first stage */ - n1 = n2; - n2 >>= 2U; - ia1 = 0U; - - for (j = 0; j <= (n2 - 1U); j++) - { - /* index calculation for the coefficients */ - ia2 = ia1 + ia1; - ia3 = ia2 + ia1; - co1 = pCoef[ia1 * 2U]; - si1 = pCoef[(ia1 * 2U) + 1U]; - co2 = pCoef[ia2 * 2U]; - si2 = pCoef[(ia2 * 2U) + 1U]; - co3 = pCoef[ia3 * 2U]; - si3 = pCoef[(ia3 * 2U) + 1U]; - /* Twiddle coefficients index modifier */ - ia1 = ia1 + twidCoefModifier; - - pSi0 = pSrc + 2 * j; - pSi1 = pSi0 + 2 * n2; - pSi2 = pSi1 + 2 * n2; - pSi3 = pSi2 + 2 * n2; - - for (i0 = j; i0 < fftLen; i0 += n1) - { - /* Butterfly implementation */ - /* xa + xc */ - r1 = pSi0[0] + pSi2[0]; - - /* xa - xc */ - r2 = pSi0[0] - pSi2[0]; - - - /* ya + yc */ - s1 = pSi0[1] + pSi2[1]; - - /* ya - yc */ - s2 = pSi0[1] - pSi2[1]; - - - /* xb + xd */ - t1 = pSi1[0] + pSi3[0]; - - - /* xa' = xa + xb + xc + xd */ - pSi0[0] = (r1 + t1) >> 2U; - /* xa + xc -(xb + xd) */ - r1 = r1 - t1; - /* yb + yd */ - t2 = pSi1[1] + pSi3[1]; - - /* ya' = ya + yb + yc + yd */ - pSi0[1] = (s1 + t2) >> 2U; - pSi0 += 2 * n1; - - /* (ya + yc) - (yb + yd) */ - s1 = s1 - t2; - - /* (yb - yd) */ - t1 = pSi1[1] - pSi3[1]; - - /* (xb - xd) */ - t2 = pSi1[0] - pSi3[0]; - - - /* xc' = (xa-xb+xc-xd)co2 - (ya-yb+yc-yd)(si2) */ - pSi1[0] = (((int32_t) (((q63_t) r1 * co2) >> 32U)) - - ((int32_t) (((q63_t) s1 * si2) >> 32U))) >> 1U; - - /* yc' = (ya-yb+yc-yd)co2 + (xa-xb+xc-xd)(si2) */ - pSi1[1] = - - (((int32_t) (((q63_t) s1 * co2) >> 32U)) + - ((int32_t) (((q63_t) r1 * si2) >> 32U))) >> 1U; - pSi1 += 2 * n1; - - /* (xa - xc) - (yb - yd) */ - r1 = r2 - t1; - /* (xa - xc) + (yb - yd) */ - r2 = r2 + t1; - - /* (ya - yc) + (xb - xd) */ - s1 = s2 + t2; - /* (ya - yc) - (xb - xd) */ - s2 = s2 - t2; - - /* xb' = (xa+yb-xc-yd)co1 - (ya-xb-yc+xd)(si1) */ - pSi2[0] = (((int32_t) (((q63_t) r1 * co1) >> 32)) - - ((int32_t) (((q63_t) s1 * si1) >> 32))) >> 1U; - - /* yb' = (ya-xb-yc+xd)co1 + (xa+yb-xc-yd)(si1) */ - pSi2[1] = (((int32_t) (((q63_t) s1 * co1) >> 32)) + - ((int32_t) (((q63_t) r1 * si1) >> 32))) >> 1U; - pSi2 += 2 * n1; - - /* xd' = (xa-yb-xc+yd)co3 - (ya+xb-yc-xd)(si3) */ - pSi3[0] = (((int32_t) (((q63_t) r2 * co3) >> 32)) - - ((int32_t) (((q63_t) s2 * si3) >> 32))) >> 1U; - - /* yd' = (ya+xb-yc-xd)co3 + (xa-yb-xc+yd)(si3) */ - pSi3[1] = (((int32_t) (((q63_t) s2 * co3) >> 32)) + - ((int32_t) (((q63_t) r2 * si3) >> 32))) >> 1U; - pSi3 += 2 * n1; - } - } - twidCoefModifier <<= 2U; - } -#endif - - /* End of Middle stages process */ - - /* data is in 11.21(q21) format for the 1024 point as there are 3 middle stages */ - /* data is in 9.23(q23) format for the 256 point as there are 2 middle stages */ - /* data is in 7.25(q25) format for the 64 point as there are 1 middle stage */ - /* data is in 5.27(q27) format for the 16 point as there are no middle stages */ - - - /* Start of last stage process */ - - - /* Initializations for the last stage */ - j = fftLen >> 2; - ptr1 = &pSrc[0]; - - /* Calculations of last stage */ - do - { -#ifndef ARM_MATH_BIG_ENDIAN - /* Read xa (real), ya(imag) input */ - xaya = *__SIMD64(ptr1)++; - xa = (q31_t) xaya; - ya = (q31_t) (xaya >> 32); - - /* Read xb (real), yb(imag) input */ - xbyb = *__SIMD64(ptr1)++; - xb = (q31_t) xbyb; - yb = (q31_t) (xbyb >> 32); - - /* Read xc (real), yc(imag) input */ - xcyc = *__SIMD64(ptr1)++; - xc = (q31_t) xcyc; - yc = (q31_t) (xcyc >> 32); - - /* Read xc (real), yc(imag) input */ - xdyd = *__SIMD64(ptr1)++; - xd = (q31_t) xdyd; - yd = (q31_t) (xdyd >> 32); - -#else - - /* Read xa (real), ya(imag) input */ - xaya = *__SIMD64(ptr1)++; - ya = (q31_t) xaya; - xa = (q31_t) (xaya >> 32); - - /* Read xb (real), yb(imag) input */ - xbyb = *__SIMD64(ptr1)++; - yb = (q31_t) xbyb; - xb = (q31_t) (xbyb >> 32); - - /* Read xc (real), yc(imag) input */ - xcyc = *__SIMD64(ptr1)++; - yc = (q31_t) xcyc; - xc = (q31_t) (xcyc >> 32); - - /* Read xc (real), yc(imag) input */ - xdyd = *__SIMD64(ptr1)++; - yd = (q31_t) xdyd; - xd = (q31_t) (xdyd >> 32); - - -#endif - - /* xa' = xa + xb + xc + xd */ - xa_out = xa + xb + xc + xd; - - /* ya' = ya + yb + yc + yd */ - ya_out = ya + yb + yc + yd; - - /* pointer updation for writing */ - ptr1 = ptr1 - 8U; - - /* writing xa' and ya' */ - *ptr1++ = xa_out; - *ptr1++ = ya_out; - - xc_out = (xa - xb + xc - xd); - yc_out = (ya - yb + yc - yd); - - /* writing xc' and yc' */ - *ptr1++ = xc_out; - *ptr1++ = yc_out; - - xb_out = (xa - yb - xc + yd); - yb_out = (ya + xb - yc - xd); - - /* writing xb' and yb' */ - *ptr1++ = xb_out; - *ptr1++ = yb_out; - - xd_out = (xa + yb - xc - yd); - yd_out = (ya - xb - yc + xd); - - /* writing xd' and yd' */ - *ptr1++ = xd_out; - *ptr1++ = yd_out; - - } while (--j); - - /* output is in 11.21(q21) format for the 1024 point */ - /* output is in 9.23(q23) format for the 256 point */ - /* output is in 7.25(q25) format for the 64 point */ - /* output is in 5.27(q27) format for the 16 point */ - - /* End of last stage process */ -} diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix8_f32.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix8_f32.c deleted file mode 100644 index b70ab38..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix8_f32.c +++ /dev/null @@ -1,285 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_cfft_radix8_f32.c - * Description: Radix-8 Decimation in Frequency CFFT & CIFFT Floating point processing function - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - - -/* ---------------------------------------------------------------------- - * Internal helper function used by the FFTs - * -------------------------------------------------------------------- */ - -/* -* @brief Core function for the floating-point CFFT butterfly process. -* @param[in, out] *pSrc points to the in-place buffer of floating-point data type. -* @param[in] fftLen length of the FFT. -* @param[in] *pCoef points to the twiddle coefficient buffer. -* @param[in] twidCoefModifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. -* @return none. -*/ - -void arm_radix8_butterfly_f32( -float32_t * pSrc, -uint16_t fftLen, -const float32_t * pCoef, -uint16_t twidCoefModifier) -{ - uint32_t ia1, ia2, ia3, ia4, ia5, ia6, ia7; - uint32_t i1, i2, i3, i4, i5, i6, i7, i8; - uint32_t id; - uint32_t n1, n2, j; - - float32_t r1, r2, r3, r4, r5, r6, r7, r8; - float32_t t1, t2; - float32_t s1, s2, s3, s4, s5, s6, s7, s8; - float32_t p1, p2, p3, p4; - float32_t co2, co3, co4, co5, co6, co7, co8; - float32_t si2, si3, si4, si5, si6, si7, si8; - const float32_t C81 = 0.70710678118f; - - n2 = fftLen; - - do - { - n1 = n2; - n2 = n2 >> 3; - i1 = 0; - - do - { - i2 = i1 + n2; - i3 = i2 + n2; - i4 = i3 + n2; - i5 = i4 + n2; - i6 = i5 + n2; - i7 = i6 + n2; - i8 = i7 + n2; - r1 = pSrc[2 * i1] + pSrc[2 * i5]; - r5 = pSrc[2 * i1] - pSrc[2 * i5]; - r2 = pSrc[2 * i2] + pSrc[2 * i6]; - r6 = pSrc[2 * i2] - pSrc[2 * i6]; - r3 = pSrc[2 * i3] + pSrc[2 * i7]; - r7 = pSrc[2 * i3] - pSrc[2 * i7]; - r4 = pSrc[2 * i4] + pSrc[2 * i8]; - r8 = pSrc[2 * i4] - pSrc[2 * i8]; - t1 = r1 - r3; - r1 = r1 + r3; - r3 = r2 - r4; - r2 = r2 + r4; - pSrc[2 * i1] = r1 + r2; - pSrc[2 * i5] = r1 - r2; - r1 = pSrc[2 * i1 + 1] + pSrc[2 * i5 + 1]; - s5 = pSrc[2 * i1 + 1] - pSrc[2 * i5 + 1]; - r2 = pSrc[2 * i2 + 1] + pSrc[2 * i6 + 1]; - s6 = pSrc[2 * i2 + 1] - pSrc[2 * i6 + 1]; - s3 = pSrc[2 * i3 + 1] + pSrc[2 * i7 + 1]; - s7 = pSrc[2 * i3 + 1] - pSrc[2 * i7 + 1]; - r4 = pSrc[2 * i4 + 1] + pSrc[2 * i8 + 1]; - s8 = pSrc[2 * i4 + 1] - pSrc[2 * i8 + 1]; - t2 = r1 - s3; - r1 = r1 + s3; - s3 = r2 - r4; - r2 = r2 + r4; - pSrc[2 * i1 + 1] = r1 + r2; - pSrc[2 * i5 + 1] = r1 - r2; - pSrc[2 * i3] = t1 + s3; - pSrc[2 * i7] = t1 - s3; - pSrc[2 * i3 + 1] = t2 - r3; - pSrc[2 * i7 + 1] = t2 + r3; - r1 = (r6 - r8) * C81; - r6 = (r6 + r8) * C81; - r2 = (s6 - s8) * C81; - s6 = (s6 + s8) * C81; - t1 = r5 - r1; - r5 = r5 + r1; - r8 = r7 - r6; - r7 = r7 + r6; - t2 = s5 - r2; - s5 = s5 + r2; - s8 = s7 - s6; - s7 = s7 + s6; - pSrc[2 * i2] = r5 + s7; - pSrc[2 * i8] = r5 - s7; - pSrc[2 * i6] = t1 + s8; - pSrc[2 * i4] = t1 - s8; - pSrc[2 * i2 + 1] = s5 - r7; - pSrc[2 * i8 + 1] = s5 + r7; - pSrc[2 * i6 + 1] = t2 - r8; - pSrc[2 * i4 + 1] = t2 + r8; - - i1 += n1; - } while (i1 < fftLen); - - if (n2 < 8) - break; - - ia1 = 0; - j = 1; - - do - { - /* index calculation for the coefficients */ - id = ia1 + twidCoefModifier; - ia1 = id; - ia2 = ia1 + id; - ia3 = ia2 + id; - ia4 = ia3 + id; - ia5 = ia4 + id; - ia6 = ia5 + id; - ia7 = ia6 + id; - - co2 = pCoef[2 * ia1]; - co3 = pCoef[2 * ia2]; - co4 = pCoef[2 * ia3]; - co5 = pCoef[2 * ia4]; - co6 = pCoef[2 * ia5]; - co7 = pCoef[2 * ia6]; - co8 = pCoef[2 * ia7]; - si2 = pCoef[2 * ia1 + 1]; - si3 = pCoef[2 * ia2 + 1]; - si4 = pCoef[2 * ia3 + 1]; - si5 = pCoef[2 * ia4 + 1]; - si6 = pCoef[2 * ia5 + 1]; - si7 = pCoef[2 * ia6 + 1]; - si8 = pCoef[2 * ia7 + 1]; - - i1 = j; - - do - { - /* index calculation for the input */ - i2 = i1 + n2; - i3 = i2 + n2; - i4 = i3 + n2; - i5 = i4 + n2; - i6 = i5 + n2; - i7 = i6 + n2; - i8 = i7 + n2; - r1 = pSrc[2 * i1] + pSrc[2 * i5]; - r5 = pSrc[2 * i1] - pSrc[2 * i5]; - r2 = pSrc[2 * i2] + pSrc[2 * i6]; - r6 = pSrc[2 * i2] - pSrc[2 * i6]; - r3 = pSrc[2 * i3] + pSrc[2 * i7]; - r7 = pSrc[2 * i3] - pSrc[2 * i7]; - r4 = pSrc[2 * i4] + pSrc[2 * i8]; - r8 = pSrc[2 * i4] - pSrc[2 * i8]; - t1 = r1 - r3; - r1 = r1 + r3; - r3 = r2 - r4; - r2 = r2 + r4; - pSrc[2 * i1] = r1 + r2; - r2 = r1 - r2; - s1 = pSrc[2 * i1 + 1] + pSrc[2 * i5 + 1]; - s5 = pSrc[2 * i1 + 1] - pSrc[2 * i5 + 1]; - s2 = pSrc[2 * i2 + 1] + pSrc[2 * i6 + 1]; - s6 = pSrc[2 * i2 + 1] - pSrc[2 * i6 + 1]; - s3 = pSrc[2 * i3 + 1] + pSrc[2 * i7 + 1]; - s7 = pSrc[2 * i3 + 1] - pSrc[2 * i7 + 1]; - s4 = pSrc[2 * i4 + 1] + pSrc[2 * i8 + 1]; - s8 = pSrc[2 * i4 + 1] - pSrc[2 * i8 + 1]; - t2 = s1 - s3; - s1 = s1 + s3; - s3 = s2 - s4; - s2 = s2 + s4; - r1 = t1 + s3; - t1 = t1 - s3; - pSrc[2 * i1 + 1] = s1 + s2; - s2 = s1 - s2; - s1 = t2 - r3; - t2 = t2 + r3; - p1 = co5 * r2; - p2 = si5 * s2; - p3 = co5 * s2; - p4 = si5 * r2; - pSrc[2 * i5] = p1 + p2; - pSrc[2 * i5 + 1] = p3 - p4; - p1 = co3 * r1; - p2 = si3 * s1; - p3 = co3 * s1; - p4 = si3 * r1; - pSrc[2 * i3] = p1 + p2; - pSrc[2 * i3 + 1] = p3 - p4; - p1 = co7 * t1; - p2 = si7 * t2; - p3 = co7 * t2; - p4 = si7 * t1; - pSrc[2 * i7] = p1 + p2; - pSrc[2 * i7 + 1] = p3 - p4; - r1 = (r6 - r8) * C81; - r6 = (r6 + r8) * C81; - s1 = (s6 - s8) * C81; - s6 = (s6 + s8) * C81; - t1 = r5 - r1; - r5 = r5 + r1; - r8 = r7 - r6; - r7 = r7 + r6; - t2 = s5 - s1; - s5 = s5 + s1; - s8 = s7 - s6; - s7 = s7 + s6; - r1 = r5 + s7; - r5 = r5 - s7; - r6 = t1 + s8; - t1 = t1 - s8; - s1 = s5 - r7; - s5 = s5 + r7; - s6 = t2 - r8; - t2 = t2 + r8; - p1 = co2 * r1; - p2 = si2 * s1; - p3 = co2 * s1; - p4 = si2 * r1; - pSrc[2 * i2] = p1 + p2; - pSrc[2 * i2 + 1] = p3 - p4; - p1 = co8 * r5; - p2 = si8 * s5; - p3 = co8 * s5; - p4 = si8 * r5; - pSrc[2 * i8] = p1 + p2; - pSrc[2 * i8 + 1] = p3 - p4; - p1 = co6 * r6; - p2 = si6 * s6; - p3 = co6 * s6; - p4 = si6 * r6; - pSrc[2 * i6] = p1 + p2; - pSrc[2 * i6 + 1] = p3 - p4; - p1 = co4 * t1; - p2 = si4 * t2; - p3 = co4 * t2; - p4 = si4 * t1; - pSrc[2 * i4] = p1 + p2; - pSrc[2 * i4 + 1] = p3 - p4; - - i1 += n1; - } while (i1 < fftLen); - - j++; - } while (j < n2); - - twidCoefModifier <<= 3; - } while (n2 > 7); -} diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_dct4_f32.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_dct4_f32.c deleted file mode 100644 index 231c79a..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_dct4_f32.c +++ /dev/null @@ -1,449 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_dct4_f32.c - * Description: Processing function of DCT4 & IDCT4 F32 - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup groupTransforms - */ - -/** - * @defgroup DCT4_IDCT4 DCT Type IV Functions - * Representation of signals by minimum number of values is important for storage and transmission. - * The possibility of large discontinuity between the beginning and end of a period of a signal - * in DFT can be avoided by extending the signal so that it is even-symmetric. - * Discrete Cosine Transform (DCT) is constructed such that its energy is heavily concentrated in the lower part of the - * spectrum and is very widely used in signal and image coding applications. - * The family of DCTs (DCT type- 1,2,3,4) is the outcome of different combinations of homogeneous boundary conditions. - * DCT has an excellent energy-packing capability, hence has many applications and in data compression in particular. - * - * DCT is essentially the Discrete Fourier Transform(DFT) of an even-extended real signal. - * Reordering of the input data makes the computation of DCT just a problem of - * computing the DFT of a real signal with a few additional operations. - * This approach provides regular, simple, and very efficient DCT algorithms for practical hardware and software implementations. - * - * DCT type-II can be implemented using Fast fourier transform (FFT) internally, as the transform is applied on real values, Real FFT can be used. - * DCT4 is implemented using DCT2 as their implementations are similar except with some added pre-processing and post-processing. - * DCT2 implementation can be described in the following steps: - * - Re-ordering input - * - Calculating Real FFT - * - Multiplication of weights and Real FFT output and getting real part from the product. - * - * This process is explained by the block diagram below: - * \image html DCT4.gif "Discrete Cosine Transform - type-IV" - * - * \par Algorithm: - * The N-point type-IV DCT is defined as a real, linear transformation by the formula: - * \image html DCT4Equation.gif - * where k = 0,1,2,.....N-1 - *\par - * Its inverse is defined as follows: - * \image html IDCT4Equation.gif - * where n = 0,1,2,.....N-1 - *\par - * The DCT4 matrices become involutory (i.e. they are self-inverse) by multiplying with an overall scale factor of sqrt(2/N). - * The symmetry of the transform matrix indicates that the fast algorithms for the forward - * and inverse transform computation are identical. - * Note that the implementation of Inverse DCT4 and DCT4 is same, hence same process function can be used for both. - * - * \par Lengths supported by the transform: - * As DCT4 internally uses Real FFT, it supports all the lengths 128, 512, 2048 and 8192. - * The library provides separate functions for Q15, Q31, and floating-point data types. - * \par Instance Structure - * The instances for Real FFT and FFT, cosine values table and twiddle factor table are stored in an instance data structure. - * A separate instance structure must be defined for each transform. - * There are separate instance structure declarations for each of the 3 supported data types. - * - * \par Initialization Functions - * There is also an associated initialization function for each data type. - * The initialization function performs the following operations: - * - Sets the values of the internal structure fields. - * - Initializes Real FFT as its process function is used internally in DCT4, by calling arm_rfft_init_f32(). - * \par - * Use of the initialization function is optional. - * However, if the initialization function is used, then the instance structure cannot be placed into a const data section. - * To place an instance structure into a const data section, the instance structure must be manually initialized. - * Manually initialize the instance structure as follows: - *
- *arm_dct4_instance_f32 S = {N, Nby2, normalize, pTwiddle, pCosFactor, pRfft, pCfft};
- *arm_dct4_instance_q31 S = {N, Nby2, normalize, pTwiddle, pCosFactor, pRfft, pCfft};
- *arm_dct4_instance_q15 S = {N, Nby2, normalize, pTwiddle, pCosFactor, pRfft, pCfft};
- * 
- * where \c N is the length of the DCT4; \c Nby2 is half of the length of the DCT4; - * \c normalize is normalizing factor used and is equal to sqrt(2/N); - * \c pTwiddle points to the twiddle factor table; - * \c pCosFactor points to the cosFactor table; - * \c pRfft points to the real FFT instance; - * \c pCfft points to the complex FFT instance; - * The CFFT and RFFT structures also needs to be initialized, refer to arm_cfft_radix4_f32() - * and arm_rfft_f32() respectively for details regarding static initialization. - * - * \par Fixed-Point Behavior - * Care must be taken when using the fixed-point versions of the DCT4 transform functions. - * In particular, the overflow and saturation behavior of the accumulator used in each function must be considered. - * Refer to the function specific documentation below for usage guidelines. - */ - - /** - * @addtogroup DCT4_IDCT4 - * @{ - */ - -/** - * @brief Processing function for the floating-point DCT4/IDCT4. - * @param[in] *S points to an instance of the floating-point DCT4/IDCT4 structure. - * @param[in] *pState points to state buffer. - * @param[in,out] *pInlineBuffer points to the in-place input and output buffer. - * @return none. - */ - -void arm_dct4_f32( - const arm_dct4_instance_f32 * S, - float32_t * pState, - float32_t * pInlineBuffer) -{ - uint32_t i; /* Loop counter */ - float32_t *weights = S->pTwiddle; /* Pointer to the Weights table */ - float32_t *cosFact = S->pCosFactor; /* Pointer to the cos factors table */ - float32_t *pS1, *pS2, *pbuff; /* Temporary pointers for input buffer and pState buffer */ - float32_t in; /* Temporary variable */ - - - /* DCT4 computation involves DCT2 (which is calculated using RFFT) - * along with some pre-processing and post-processing. - * Computational procedure is explained as follows: - * (a) Pre-processing involves multiplying input with cos factor, - * r(n) = 2 * u(n) * cos(pi*(2*n+1)/(4*n)) - * where, - * r(n) -- output of preprocessing - * u(n) -- input to preprocessing(actual Source buffer) - * (b) Calculation of DCT2 using FFT is divided into three steps: - * Step1: Re-ordering of even and odd elements of input. - * Step2: Calculating FFT of the re-ordered input. - * Step3: Taking the real part of the product of FFT output and weights. - * (c) Post-processing - DCT4 can be obtained from DCT2 output using the following equation: - * Y4(k) = Y2(k) - Y4(k-1) and Y4(-1) = Y4(0) - * where, - * Y4 -- DCT4 output, Y2 -- DCT2 output - * (d) Multiplying the output with the normalizing factor sqrt(2/N). - */ - - /*-------- Pre-processing ------------*/ - /* Multiplying input with cos factor i.e. r(n) = 2 * x(n) * cos(pi*(2*n+1)/(4*n)) */ - arm_scale_f32(pInlineBuffer, 2.0f, pInlineBuffer, S->N); - arm_mult_f32(pInlineBuffer, cosFact, pInlineBuffer, S->N); - - /* ---------------------------------------------------------------- - * Step1: Re-ordering of even and odd elements as, - * pState[i] = pInlineBuffer[2*i] and - * pState[N-i-1] = pInlineBuffer[2*i+1] where i = 0 to N/2 - ---------------------------------------------------------------------*/ - - /* pS1 initialized to pState */ - pS1 = pState; - - /* pS2 initialized to pState+N-1, so that it points to the end of the state buffer */ - pS2 = pState + (S->N - 1U); - - /* pbuff initialized to input buffer */ - pbuff = pInlineBuffer; - -#if defined (ARM_MATH_DSP) - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - /* Initializing the loop counter to N/2 >> 2 for loop unrolling by 4 */ - i = (uint32_t) S->Nby2 >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - do - { - /* Re-ordering of even and odd elements */ - /* pState[i] = pInlineBuffer[2*i] */ - *pS1++ = *pbuff++; - /* pState[N-i-1] = pInlineBuffer[2*i+1] */ - *pS2-- = *pbuff++; - - *pS1++ = *pbuff++; - *pS2-- = *pbuff++; - - *pS1++ = *pbuff++; - *pS2-- = *pbuff++; - - *pS1++ = *pbuff++; - *pS2-- = *pbuff++; - - /* Decrement the loop counter */ - i--; - } while (i > 0U); - - /* pbuff initialized to input buffer */ - pbuff = pInlineBuffer; - - /* pS1 initialized to pState */ - pS1 = pState; - - /* Initializing the loop counter to N/4 instead of N for loop unrolling */ - i = (uint32_t) S->N >> 2U; - - /* Processing with loop unrolling 4 times as N is always multiple of 4. - * Compute 4 outputs at a time */ - do - { - /* Writing the re-ordered output back to inplace input buffer */ - *pbuff++ = *pS1++; - *pbuff++ = *pS1++; - *pbuff++ = *pS1++; - *pbuff++ = *pS1++; - - /* Decrement the loop counter */ - i--; - } while (i > 0U); - - - /* --------------------------------------------------------- - * Step2: Calculate RFFT for N-point input - * ---------------------------------------------------------- */ - /* pInlineBuffer is real input of length N , pState is the complex output of length 2N */ - arm_rfft_f32(S->pRfft, pInlineBuffer, pState); - - /*---------------------------------------------------------------------- - * Step3: Multiply the FFT output with the weights. - *----------------------------------------------------------------------*/ - arm_cmplx_mult_cmplx_f32(pState, weights, pState, S->N); - - /* ----------- Post-processing ---------- */ - /* DCT-IV can be obtained from DCT-II by the equation, - * Y4(k) = Y2(k) - Y4(k-1) and Y4(-1) = Y4(0) - * Hence, Y4(0) = Y2(0)/2 */ - /* Getting only real part from the output and Converting to DCT-IV */ - - /* Initializing the loop counter to N >> 2 for loop unrolling by 4 */ - i = ((uint32_t) S->N - 1U) >> 2U; - - /* pbuff initialized to input buffer. */ - pbuff = pInlineBuffer; - - /* pS1 initialized to pState */ - pS1 = pState; - - /* Calculating Y4(0) from Y2(0) using Y4(0) = Y2(0)/2 */ - in = *pS1++ * (float32_t) 0.5; - /* input buffer acts as inplace, so output values are stored in the input itself. */ - *pbuff++ = in; - - /* pState pointer is incremented twice as the real values are located alternatively in the array */ - pS1++; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - do - { - /* Calculating Y4(1) to Y4(N-1) from Y2 using equation Y4(k) = Y2(k) - Y4(k-1) */ - /* pState pointer (pS1) is incremented twice as the real values are located alternatively in the array */ - in = *pS1++ - in; - *pbuff++ = in; - /* points to the next real value */ - pS1++; - - in = *pS1++ - in; - *pbuff++ = in; - pS1++; - - in = *pS1++ - in; - *pbuff++ = in; - pS1++; - - in = *pS1++ - in; - *pbuff++ = in; - pS1++; - - /* Decrement the loop counter */ - i--; - } while (i > 0U); - - /* If the blockSize is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - i = ((uint32_t) S->N - 1U) % 0x4U; - - while (i > 0U) - { - /* Calculating Y4(1) to Y4(N-1) from Y2 using equation Y4(k) = Y2(k) - Y4(k-1) */ - /* pState pointer (pS1) is incremented twice as the real values are located alternatively in the array */ - in = *pS1++ - in; - *pbuff++ = in; - /* points to the next real value */ - pS1++; - - /* Decrement the loop counter */ - i--; - } - - - /*------------ Normalizing the output by multiplying with the normalizing factor ----------*/ - - /* Initializing the loop counter to N/4 instead of N for loop unrolling */ - i = (uint32_t) S->N >> 2U; - - /* pbuff initialized to the pInlineBuffer(now contains the output values) */ - pbuff = pInlineBuffer; - - /* Processing with loop unrolling 4 times as N is always multiple of 4. Compute 4 outputs at a time */ - do - { - /* Multiplying pInlineBuffer with the normalizing factor sqrt(2/N) */ - in = *pbuff; - *pbuff++ = in * S->normalize; - - in = *pbuff; - *pbuff++ = in * S->normalize; - - in = *pbuff; - *pbuff++ = in * S->normalize; - - in = *pbuff; - *pbuff++ = in * S->normalize; - - /* Decrement the loop counter */ - i--; - } while (i > 0U); - - -#else - - /* Run the below code for Cortex-M0 */ - - /* Initializing the loop counter to N/2 */ - i = (uint32_t) S->Nby2; - - do - { - /* Re-ordering of even and odd elements */ - /* pState[i] = pInlineBuffer[2*i] */ - *pS1++ = *pbuff++; - /* pState[N-i-1] = pInlineBuffer[2*i+1] */ - *pS2-- = *pbuff++; - - /* Decrement the loop counter */ - i--; - } while (i > 0U); - - /* pbuff initialized to input buffer */ - pbuff = pInlineBuffer; - - /* pS1 initialized to pState */ - pS1 = pState; - - /* Initializing the loop counter */ - i = (uint32_t) S->N; - - do - { - /* Writing the re-ordered output back to inplace input buffer */ - *pbuff++ = *pS1++; - - /* Decrement the loop counter */ - i--; - } while (i > 0U); - - - /* --------------------------------------------------------- - * Step2: Calculate RFFT for N-point input - * ---------------------------------------------------------- */ - /* pInlineBuffer is real input of length N , pState is the complex output of length 2N */ - arm_rfft_f32(S->pRfft, pInlineBuffer, pState); - - /*---------------------------------------------------------------------- - * Step3: Multiply the FFT output with the weights. - *----------------------------------------------------------------------*/ - arm_cmplx_mult_cmplx_f32(pState, weights, pState, S->N); - - /* ----------- Post-processing ---------- */ - /* DCT-IV can be obtained from DCT-II by the equation, - * Y4(k) = Y2(k) - Y4(k-1) and Y4(-1) = Y4(0) - * Hence, Y4(0) = Y2(0)/2 */ - /* Getting only real part from the output and Converting to DCT-IV */ - - /* pbuff initialized to input buffer. */ - pbuff = pInlineBuffer; - - /* pS1 initialized to pState */ - pS1 = pState; - - /* Calculating Y4(0) from Y2(0) using Y4(0) = Y2(0)/2 */ - in = *pS1++ * (float32_t) 0.5; - /* input buffer acts as inplace, so output values are stored in the input itself. */ - *pbuff++ = in; - - /* pState pointer is incremented twice as the real values are located alternatively in the array */ - pS1++; - - /* Initializing the loop counter */ - i = ((uint32_t) S->N - 1U); - - do - { - /* Calculating Y4(1) to Y4(N-1) from Y2 using equation Y4(k) = Y2(k) - Y4(k-1) */ - /* pState pointer (pS1) is incremented twice as the real values are located alternatively in the array */ - in = *pS1++ - in; - *pbuff++ = in; - /* points to the next real value */ - pS1++; - - - /* Decrement the loop counter */ - i--; - } while (i > 0U); - - - /*------------ Normalizing the output by multiplying with the normalizing factor ----------*/ - - /* Initializing the loop counter */ - i = (uint32_t) S->N; - - /* pbuff initialized to the pInlineBuffer(now contains the output values) */ - pbuff = pInlineBuffer; - - do - { - /* Multiplying pInlineBuffer with the normalizing factor sqrt(2/N) */ - in = *pbuff; - *pbuff++ = in * S->normalize; - - /* Decrement the loop counter */ - i--; - } while (i > 0U); - -#endif /* #if defined (ARM_MATH_DSP) */ - -} - -/** - * @} end of DCT4_IDCT4 group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_dct4_init_f32.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_dct4_init_f32.c deleted file mode 100644 index 9b39cd4..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_dct4_init_f32.c +++ /dev/null @@ -1,16513 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_dct4_init_f32.c - * Description: Initialization function of DCT-4 & IDCT4 F32 - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup DCT4_IDCT4 - */ - -/** - * @addtogroup DCT4_IDCT4_Table DCT Type IV Tables - * @{ - */ - -/* -* @brief Weights Table -*/ - -/** - * \par - * Weights tables are generated using the formula :
weights[n] = e^(-j*n*pi/(2*N))
- * \par - * C command to generate the table - *
- * for(i = 0; i< N; i++)
- * {
- *    weights[2*i]= cos(i*c);
- *    weights[(2*i)+1]= -sin(i * c);
- * } 
- * \par - * Where N is the Number of weights to be calculated and c is pi/(2*N) - * \par - * In the tables below the real and imaginary values are placed alternatively, hence the - * array length is 2*N. - */ - -static const float32_t Weights_128[256] = { - 1.000000000000000000f, 0.000000000000000000f, 0.999924701839144500f, - -0.012271538285719925f, - 0.999698818696204250f, -0.024541228522912288f, 0.999322384588349540f, - -0.036807222941358832f, - 0.998795456205172410f, -0.049067674327418015f, 0.998118112900149180f, - -0.061320736302208578f, - 0.997290456678690210f, -0.073564563599667426f, 0.996312612182778000f, - -0.085797312344439894f, - 0.995184726672196930f, -0.098017140329560604f, 0.993906970002356060f, - -0.110222207293883060f, - 0.992479534598709970f, -0.122410675199216200f, 0.990902635427780010f, - -0.134580708507126170f, - 0.989176509964781010f, -0.146730474455361750f, 0.987301418157858430f, - -0.158858143333861450f, - 0.985277642388941220f, -0.170961888760301220f, 0.983105487431216290f, - -0.183039887955140950f, - 0.980785280403230430f, -0.195090322016128250f, 0.978317370719627650f, - -0.207111376192218560f, - 0.975702130038528570f, -0.219101240156869800f, 0.972939952205560180f, - -0.231058108280671110f, - 0.970031253194543970f, -0.242980179903263870f, 0.966976471044852070f, - -0.254865659604514570f, - 0.963776065795439840f, -0.266712757474898370f, 0.960430519415565790f, - -0.278519689385053060f, - 0.956940335732208820f, -0.290284677254462330f, 0.953306040354193860f, - -0.302005949319228080f, - 0.949528180593036670f, -0.313681740398891520f, 0.945607325380521280f, - -0.325310292162262930f, - 0.941544065183020810f, -0.336889853392220050f, 0.937339011912574960f, - -0.348418680249434560f, - 0.932992798834738960f, -0.359895036534988110f, 0.928506080473215590f, - -0.371317193951837540f, - 0.923879532511286740f, -0.382683432365089780f, 0.919113851690057770f, - -0.393992040061048100f, - 0.914209755703530690f, -0.405241314004989860f, 0.909167983090522380f, - -0.416429560097637150f, - 0.903989293123443340f, -0.427555093430282080f, 0.898674465693953820f, - -0.438616238538527660f, - 0.893224301195515320f, -0.449611329654606540f, 0.887639620402853930f, - -0.460538710958240010f, - 0.881921264348355050f, -0.471396736825997640f, 0.876070094195406600f, - -0.482183772079122720f, - 0.870086991108711460f, -0.492898192229784040f, 0.863972856121586810f, - -0.503538383725717580f, - 0.857728610000272120f, -0.514102744193221660f, 0.851355193105265200f, - -0.524589682678468950f, - 0.844853565249707120f, -0.534997619887097150f, 0.838224705554838080f, - -0.545324988422046460f, - 0.831469612302545240f, -0.555570233019602180f, 0.824589302785025290f, - -0.565731810783613120f, - 0.817584813151583710f, -0.575808191417845340f, 0.810457198252594770f, - -0.585797857456438860f, - 0.803207531480644940f, -0.595699304492433360f, 0.795836904608883570f, - -0.605511041404325550f, - 0.788346427626606340f, -0.615231590580626820f, 0.780737228572094490f, - -0.624859488142386340f, - 0.773010453362736990f, -0.634393284163645490f, 0.765167265622458960f, - -0.643831542889791390f, - 0.757208846506484570f, -0.653172842953776760f, 0.749136394523459370f, - -0.662415777590171780f, - 0.740951125354959110f, -0.671558954847018330f, 0.732654271672412820f, - -0.680600997795453020f, - 0.724247082951467000f, -0.689540544737066830f, 0.715730825283818590f, - -0.698376249408972920f, - 0.707106781186547570f, -0.707106781186547460f, 0.698376249408972920f, - -0.715730825283818590f, - 0.689540544737066940f, -0.724247082951466890f, 0.680600997795453130f, - -0.732654271672412820f, - 0.671558954847018330f, -0.740951125354959110f, 0.662415777590171780f, - -0.749136394523459260f, - 0.653172842953776760f, -0.757208846506484460f, 0.643831542889791500f, - -0.765167265622458960f, - 0.634393284163645490f, -0.773010453362736990f, 0.624859488142386450f, - -0.780737228572094380f, - 0.615231590580626820f, -0.788346427626606230f, 0.605511041404325550f, - -0.795836904608883460f, - 0.595699304492433470f, -0.803207531480644830f, 0.585797857456438860f, - -0.810457198252594770f, - 0.575808191417845340f, -0.817584813151583710f, 0.565731810783613230f, - -0.824589302785025290f, - 0.555570233019602290f, -0.831469612302545240f, 0.545324988422046460f, - -0.838224705554837970f, - 0.534997619887097260f, -0.844853565249707010f, 0.524589682678468840f, - -0.851355193105265200f, - 0.514102744193221660f, -0.857728610000272120f, 0.503538383725717580f, - -0.863972856121586700f, - 0.492898192229784090f, -0.870086991108711350f, 0.482183772079122830f, - -0.876070094195406600f, - 0.471396736825997810f, -0.881921264348354940f, 0.460538710958240010f, - -0.887639620402853930f, - 0.449611329654606600f, -0.893224301195515320f, 0.438616238538527710f, - -0.898674465693953820f, - 0.427555093430282200f, -0.903989293123443340f, 0.416429560097637320f, - -0.909167983090522270f, - 0.405241314004989860f, -0.914209755703530690f, 0.393992040061048100f, - -0.919113851690057770f, - 0.382683432365089840f, -0.923879532511286740f, 0.371317193951837600f, - -0.928506080473215480f, - 0.359895036534988280f, -0.932992798834738850f, 0.348418680249434510f, - -0.937339011912574960f, - 0.336889853392220050f, -0.941544065183020810f, 0.325310292162262980f, - -0.945607325380521280f, - 0.313681740398891570f, -0.949528180593036670f, 0.302005949319228200f, - -0.953306040354193750f, - 0.290284677254462330f, -0.956940335732208940f, 0.278519689385053060f, - -0.960430519415565790f, - 0.266712757474898420f, -0.963776065795439840f, 0.254865659604514630f, - -0.966976471044852070f, - 0.242980179903263980f, -0.970031253194543970f, 0.231058108280671280f, - -0.972939952205560070f, - 0.219101240156869770f, -0.975702130038528570f, 0.207111376192218560f, - -0.978317370719627650f, - 0.195090322016128330f, -0.980785280403230430f, 0.183039887955141060f, - -0.983105487431216290f, - 0.170961888760301360f, -0.985277642388941220f, 0.158858143333861390f, - -0.987301418157858430f, - 0.146730474455361750f, -0.989176509964781010f, 0.134580708507126220f, - -0.990902635427780010f, - 0.122410675199216280f, -0.992479534598709970f, 0.110222207293883180f, - -0.993906970002356060f, - 0.098017140329560770f, -0.995184726672196820f, 0.085797312344439880f, - -0.996312612182778000f, - 0.073564563599667454f, -0.997290456678690210f, 0.061320736302208648f, - -0.998118112900149180f, - 0.049067674327418126f, -0.998795456205172410f, 0.036807222941358991f, - -0.999322384588349540f, - 0.024541228522912264f, -0.999698818696204250f, 0.012271538285719944f, - -0.999924701839144500f -}; - -static const float32_t Weights_512[1024] = { - 1.000000000000000000f, 0.000000000000000000f, 0.999995293809576190f, - -0.003067956762965976f, - 0.999981175282601110f, -0.006135884649154475f, 0.999957644551963900f, - -0.009203754782059819f, - 0.999924701839144500f, -0.012271538285719925f, 0.999882347454212560f, - -0.015339206284988100f, - 0.999830581795823400f, -0.018406729905804820f, 0.999769405351215280f, - -0.021474080275469508f, - 0.999698818696204250f, -0.024541228522912288f, 0.999618822495178640f, - -0.027608145778965740f, - 0.999529417501093140f, -0.030674803176636626f, 0.999430604555461730f, - -0.033741171851377580f, - 0.999322384588349540f, -0.036807222941358832f, 0.999204758618363890f, - -0.039872927587739811f, - 0.999077727752645360f, -0.042938256934940820f, 0.998941293186856870f, - -0.046003182130914623f, - 0.998795456205172410f, -0.049067674327418015f, 0.998640218180265270f, - -0.052131704680283324f, - 0.998475580573294770f, -0.055195244349689934f, 0.998301544933892890f, - -0.058258264500435752f, - 0.998118112900149180f, -0.061320736302208578f, 0.997925286198596000f, - -0.064382630929857465f, - 0.997723066644191640f, -0.067443919563664051f, 0.997511456140303450f, - -0.070504573389613856f, - 0.997290456678690210f, -0.073564563599667426f, 0.997060070339482960f, - -0.076623861392031492f, - 0.996820299291165670f, -0.079682437971430126f, 0.996571145790554840f, - -0.082740264549375692f, - 0.996312612182778000f, -0.085797312344439894f, 0.996044700901251970f, - -0.088853552582524600f, - 0.995767414467659820f, -0.091908956497132724f, 0.995480755491926940f, - -0.094963495329638992f, - 0.995184726672196930f, -0.098017140329560604f, 0.994879330794805620f, - -0.101069862754827820f, - 0.994564570734255420f, -0.104121633872054590f, 0.994240449453187900f, - -0.107172424956808840f, - 0.993906970002356060f, -0.110222207293883060f, 0.993564135520595300f, - -0.113270952177564350f, - 0.993211949234794500f, -0.116318630911904750f, 0.992850414459865100f, - -0.119365214810991350f, - 0.992479534598709970f, -0.122410675199216200f, 0.992099313142191800f, - -0.125454983411546230f, - 0.991709753669099530f, -0.128498110793793170f, 0.991310859846115440f, - -0.131540028702883120f, - 0.990902635427780010f, -0.134580708507126170f, 0.990485084256457090f, - -0.137620121586486040f, - 0.990058210262297120f, -0.140658239332849210f, 0.989622017463200890f, - -0.143695033150294470f, - 0.989176509964781010f, -0.146730474455361750f, 0.988721691960323780f, - -0.149764534677321510f, - 0.988257567730749460f, -0.152797185258443440f, 0.987784141644572180f, - -0.155828397654265230f, - 0.987301418157858430f, -0.158858143333861450f, 0.986809401814185530f, - -0.161886393780111830f, - 0.986308097244598670f, -0.164913120489969890f, 0.985797509167567480f, - -0.167938294974731170f, - 0.985277642388941220f, -0.170961888760301220f, 0.984748501801904210f, - -0.173983873387463820f, - 0.984210092386929030f, -0.177004220412148750f, 0.983662419211730250f, - -0.180022901405699510f, - 0.983105487431216290f, -0.183039887955140950f, 0.982539302287441240f, - -0.186055151663446630f, - 0.981963869109555240f, -0.189068664149806190f, 0.981379193313754560f, - -0.192080397049892440f, - 0.980785280403230430f, -0.195090322016128250f, 0.980182135968117430f, - -0.198098410717953560f, - 0.979569765685440520f, -0.201104634842091900f, 0.978948175319062200f, - -0.204108966092816870f, - 0.978317370719627650f, -0.207111376192218560f, 0.977677357824509930f, - -0.210111836880469610f, - 0.977028142657754390f, -0.213110319916091360f, 0.976369731330021140f, - -0.216106797076219520f, - 0.975702130038528570f, -0.219101240156869800f, 0.975025345066994120f, - -0.222093620973203510f, - 0.974339382785575860f, -0.225083911359792830f, 0.973644249650811980f, - -0.228072083170885730f, - 0.972939952205560180f, -0.231058108280671110f, 0.972226497078936270f, - -0.234041958583543430f, - 0.971503890986251780f, -0.237023605994367200f, 0.970772140728950350f, - -0.240003022448741500f, - 0.970031253194543970f, -0.242980179903263870f, 0.969281235356548530f, - -0.245955050335794590f, - 0.968522094274417380f, -0.248927605745720150f, 0.967753837093475510f, - -0.251897818154216970f, - 0.966976471044852070f, -0.254865659604514570f, 0.966190003445412500f, - -0.257831102162158990f, - 0.965394441697689400f, -0.260794117915275510f, 0.964589793289812760f, - -0.263754678974831350f, - 0.963776065795439840f, -0.266712757474898370f, 0.962953266873683880f, - -0.269668325572915090f, - 0.962121404269041580f, -0.272621355449948980f, 0.961280485811320640f, - -0.275571819310958140f, - 0.960430519415565790f, -0.278519689385053060f, 0.959571513081984520f, - -0.281464937925757940f, - 0.958703474895871600f, -0.284407537211271880f, 0.957826413027532910f, - -0.287347459544729510f, - 0.956940335732208820f, -0.290284677254462330f, 0.956045251349996410f, - -0.293219162694258630f, - 0.955141168305770780f, -0.296150888243623790f, 0.954228095109105670f, - -0.299079826308040480f, - 0.953306040354193860f, -0.302005949319228080f, 0.952375012719765880f, - -0.304929229735402370f, - 0.951435020969008340f, -0.307849640041534870f, 0.950486073949481700f, - -0.310767152749611470f, - 0.949528180593036670f, -0.313681740398891520f, 0.948561349915730270f, - -0.316593375556165850f, - 0.947585591017741090f, -0.319502030816015690f, 0.946600913083283530f, - -0.322407678801069850f, - 0.945607325380521280f, -0.325310292162262930f, 0.944604837261480260f, - -0.328209843579092500f, - 0.943593458161960390f, -0.331106305759876430f, 0.942573197601446870f, - -0.333999651442009380f, - 0.941544065183020810f, -0.336889853392220050f, 0.940506070593268300f, - -0.339776884406826850f, - 0.939459223602189920f, -0.342660717311994380f, 0.938403534063108060f, - -0.345541324963989090f, - 0.937339011912574960f, -0.348418680249434560f, 0.936265667170278260f, - -0.351292756085567090f, - 0.935183509938947610f, -0.354163525420490340f, 0.934092550404258980f, - -0.357030961233429980f, - 0.932992798834738960f, -0.359895036534988110f, 0.931884265581668150f, - -0.362755724367397230f, - 0.930766961078983710f, -0.365612997804773850f, 0.929640895843181330f, - -0.368466829953372320f, - 0.928506080473215590f, -0.371317193951837540f, 0.927362525650401110f, - -0.374164062971457930f, - 0.926210242138311380f, -0.377007410216418260f, 0.925049240782677580f, - -0.379847208924051160f, - 0.923879532511286740f, -0.382683432365089780f, 0.922701128333878630f, - -0.385516053843918850f, - 0.921514039342042010f, -0.388345046698826250f, 0.920318276709110590f, - -0.391170384302253870f, - 0.919113851690057770f, -0.393992040061048100f, 0.917900775621390500f, - -0.396809987416710310f, - 0.916679059921042700f, -0.399624199845646790f, 0.915448716088267830f, - -0.402434650859418430f, - 0.914209755703530690f, -0.405241314004989860f, 0.912962190428398210f, - -0.408044162864978690f, - 0.911706032005429880f, -0.410843171057903910f, 0.910441292258067250f, - -0.413638312238434500f, - 0.909167983090522380f, -0.416429560097637150f, 0.907886116487666260f, - -0.419216888363223910f, - 0.906595704514915330f, -0.422000270799799680f, 0.905296759318118820f, - -0.424779681209108810f, - 0.903989293123443340f, -0.427555093430282080f, 0.902673318237258830f, - -0.430326481340082610f, - 0.901348847046022030f, -0.433093818853151960f, 0.900015892016160280f, - -0.435857079922255470f, - 0.898674465693953820f, -0.438616238538527660f, 0.897324580705418320f, - -0.441371268731716670f, - 0.895966249756185220f, -0.444122144570429200f, 0.894599485631382700f, - -0.446868840162374160f, - 0.893224301195515320f, -0.449611329654606540f, 0.891840709392342720f, - -0.452349587233770890f, - 0.890448723244757880f, -0.455083587126343840f, 0.889048355854664570f, - -0.457813303598877170f, - 0.887639620402853930f, -0.460538710958240010f, 0.886222530148880640f, - -0.463259783551860150f, - 0.884797098430937790f, -0.465976495767966180f, 0.883363338665731580f, - -0.468688822035827900f, - 0.881921264348355050f, -0.471396736825997640f, 0.880470889052160750f, - -0.474100214650549970f, - 0.879012226428633530f, -0.476799230063322090f, 0.877545290207261350f, - -0.479493757660153010f, - 0.876070094195406600f, -0.482183772079122720f, 0.874586652278176110f, - -0.484869248000791060f, - 0.873094978418290090f, -0.487550160148436000f, 0.871595086655950980f, - -0.490226483288291160f, - 0.870086991108711460f, -0.492898192229784040f, 0.868570705971340900f, - -0.495565261825772540f, - 0.867046245515692650f, -0.498227666972781870f, 0.865513624090569090f, - -0.500885382611240710f, - 0.863972856121586810f, -0.503538383725717580f, 0.862423956111040610f, - -0.506186645345155230f, - 0.860866938637767310f, -0.508830142543106990f, 0.859301818357008470f, - -0.511468850437970300f, - 0.857728610000272120f, -0.514102744193221660f, 0.856147328375194470f, - -0.516731799017649870f, - 0.854557988365400530f, -0.519355990165589640f, 0.852960604930363630f, - -0.521975292937154390f, - 0.851355193105265200f, -0.524589682678468950f, 0.849741768000852550f, - -0.527199134781901280f, - 0.848120344803297230f, -0.529803624686294610f, 0.846490938774052130f, - -0.532403127877197900f, - 0.844853565249707120f, -0.534997619887097150f, 0.843208239641845440f, - -0.537587076295645390f, - 0.841554977436898440f, -0.540171472729892850f, 0.839893794195999520f, - -0.542750784864515890f, - 0.838224705554838080f, -0.545324988422046460f, 0.836547727223512010f, - -0.547894059173100190f, - 0.834862874986380010f, -0.550457972936604810f, 0.833170164701913190f, - -0.553016705580027470f, - 0.831469612302545240f, -0.555570233019602180f, 0.829761233794523050f, - -0.558118531220556100f, - 0.828045045257755800f, -0.560661576197336030f, 0.826321062845663530f, - -0.563199344013834090f, - 0.824589302785025290f, -0.565731810783613120f, 0.822849781375826430f, - -0.568258952670131490f, - 0.821102514991104650f, -0.570780745886967260f, 0.819347520076796900f, - -0.573297166698042200f, - 0.817584813151583710f, -0.575808191417845340f, 0.815814410806733780f, - -0.578313796411655590f, - 0.814036329705948410f, -0.580813958095764530f, 0.812250586585203880f, - -0.583308652937698290f, - 0.810457198252594770f, -0.585797857456438860f, 0.808656181588174980f, - -0.588281548222645220f, - 0.806847553543799330f, -0.590759701858874160f, 0.805031331142963660f, - -0.593232295039799800f, - 0.803207531480644940f, -0.595699304492433360f, 0.801376171723140240f, - -0.598160706996342270f, - 0.799537269107905010f, -0.600616479383868970f, 0.797690840943391160f, - -0.603066598540348160f, - 0.795836904608883570f, -0.605511041404325550f, 0.793975477554337170f, - -0.607949784967773630f, - 0.792106577300212390f, -0.610382806276309480f, 0.790230221437310030f, - -0.612810082429409710f, - 0.788346427626606340f, -0.615231590580626820f, 0.786455213599085770f, - -0.617647307937803870f, - 0.784556597155575240f, -0.620057211763289100f, 0.782650596166575730f, - -0.622461279374149970f, - 0.780737228572094490f, -0.624859488142386340f, 0.778816512381475980f, - -0.627251815495144080f, - 0.776888465673232440f, -0.629638238914926980f, 0.774953106594873930f, - -0.632018735939809060f, - 0.773010453362736990f, -0.634393284163645490f, 0.771060524261813820f, - -0.636761861236284200f, - 0.769103337645579700f, -0.639124444863775730f, 0.767138911935820400f, - -0.641481012808583160f, - 0.765167265622458960f, -0.643831542889791390f, 0.763188417263381270f, - -0.646176012983316280f, - 0.761202385484261780f, -0.648514401022112440f, 0.759209188978388070f, - -0.650846684996380880f, - 0.757208846506484570f, -0.653172842953776760f, 0.755201376896536550f, - -0.655492852999615350f, - 0.753186799043612520f, -0.657806693297078640f, 0.751165131909686480f, - -0.660114342067420480f, - 0.749136394523459370f, -0.662415777590171780f, 0.747100605980180130f, - -0.664710978203344790f, - 0.745057785441466060f, -0.666999922303637470f, 0.743007952135121720f, - -0.669282588346636010f, - 0.740951125354959110f, -0.671558954847018330f, 0.738887324460615110f, - -0.673829000378756040f, - 0.736816568877369900f, -0.676092703575315920f, 0.734738878095963500f, - -0.678350043129861470f, - 0.732654271672412820f, -0.680600997795453020f, 0.730562769227827590f, - -0.682845546385248080f, - 0.728464390448225200f, -0.685083667772700360f, 0.726359155084346010f, - -0.687315340891759050f, - 0.724247082951467000f, -0.689540544737066830f, 0.722128193929215350f, - -0.691759258364157750f, - 0.720002507961381650f, -0.693971460889654000f, 0.717870045055731710f, - -0.696177131491462990f, - 0.715730825283818590f, -0.698376249408972920f, 0.713584868780793640f, - -0.700568793943248340f, - 0.711432195745216430f, -0.702754744457225300f, 0.709272826438865690f, - -0.704934080375904880f, - 0.707106781186547570f, -0.707106781186547460f, 0.704934080375904990f, - -0.709272826438865580f, - 0.702754744457225300f, -0.711432195745216430f, 0.700568793943248450f, - -0.713584868780793520f, - 0.698376249408972920f, -0.715730825283818590f, 0.696177131491462990f, - -0.717870045055731710f, - 0.693971460889654000f, -0.720002507961381650f, 0.691759258364157750f, - -0.722128193929215350f, - 0.689540544737066940f, -0.724247082951466890f, 0.687315340891759160f, - -0.726359155084346010f, - 0.685083667772700360f, -0.728464390448225200f, 0.682845546385248080f, - -0.730562769227827590f, - 0.680600997795453130f, -0.732654271672412820f, 0.678350043129861580f, - -0.734738878095963390f, - 0.676092703575316030f, -0.736816568877369790f, 0.673829000378756150f, - -0.738887324460615110f, - 0.671558954847018330f, -0.740951125354959110f, 0.669282588346636010f, - -0.743007952135121720f, - 0.666999922303637470f, -0.745057785441465950f, 0.664710978203344900f, - -0.747100605980180130f, - 0.662415777590171780f, -0.749136394523459260f, 0.660114342067420480f, - -0.751165131909686370f, - 0.657806693297078640f, -0.753186799043612410f, 0.655492852999615460f, - -0.755201376896536550f, - 0.653172842953776760f, -0.757208846506484460f, 0.650846684996380990f, - -0.759209188978387960f, - 0.648514401022112550f, -0.761202385484261780f, 0.646176012983316390f, - -0.763188417263381270f, - 0.643831542889791500f, -0.765167265622458960f, 0.641481012808583160f, - -0.767138911935820400f, - 0.639124444863775730f, -0.769103337645579590f, 0.636761861236284200f, - -0.771060524261813710f, - 0.634393284163645490f, -0.773010453362736990f, 0.632018735939809060f, - -0.774953106594873820f, - 0.629638238914927100f, -0.776888465673232440f, 0.627251815495144190f, - -0.778816512381475870f, - 0.624859488142386450f, -0.780737228572094380f, 0.622461279374150080f, - -0.782650596166575730f, - 0.620057211763289210f, -0.784556597155575240f, 0.617647307937803980f, - -0.786455213599085770f, - 0.615231590580626820f, -0.788346427626606230f, 0.612810082429409710f, - -0.790230221437310030f, - 0.610382806276309480f, -0.792106577300212390f, 0.607949784967773740f, - -0.793975477554337170f, - 0.605511041404325550f, -0.795836904608883460f, 0.603066598540348280f, - -0.797690840943391040f, - 0.600616479383868970f, -0.799537269107905010f, 0.598160706996342380f, - -0.801376171723140130f, - 0.595699304492433470f, -0.803207531480644830f, 0.593232295039799800f, - -0.805031331142963660f, - 0.590759701858874280f, -0.806847553543799220f, 0.588281548222645330f, - -0.808656181588174980f, - 0.585797857456438860f, -0.810457198252594770f, 0.583308652937698290f, - -0.812250586585203880f, - 0.580813958095764530f, -0.814036329705948300f, 0.578313796411655590f, - -0.815814410806733780f, - 0.575808191417845340f, -0.817584813151583710f, 0.573297166698042320f, - -0.819347520076796900f, - 0.570780745886967370f, -0.821102514991104650f, 0.568258952670131490f, - -0.822849781375826320f, - 0.565731810783613230f, -0.824589302785025290f, 0.563199344013834090f, - -0.826321062845663420f, - 0.560661576197336030f, -0.828045045257755800f, 0.558118531220556100f, - -0.829761233794523050f, - 0.555570233019602290f, -0.831469612302545240f, 0.553016705580027580f, - -0.833170164701913190f, - 0.550457972936604810f, -0.834862874986380010f, 0.547894059173100190f, - -0.836547727223511890f, - 0.545324988422046460f, -0.838224705554837970f, 0.542750784864516000f, - -0.839893794195999410f, - 0.540171472729892970f, -0.841554977436898330f, 0.537587076295645510f, - -0.843208239641845440f, - 0.534997619887097260f, -0.844853565249707010f, 0.532403127877198010f, - -0.846490938774052020f, - 0.529803624686294830f, -0.848120344803297120f, 0.527199134781901390f, - -0.849741768000852440f, - 0.524589682678468840f, -0.851355193105265200f, 0.521975292937154390f, - -0.852960604930363630f, - 0.519355990165589530f, -0.854557988365400530f, 0.516731799017649980f, - -0.856147328375194470f, - 0.514102744193221660f, -0.857728610000272120f, 0.511468850437970520f, - -0.859301818357008360f, - 0.508830142543106990f, -0.860866938637767310f, 0.506186645345155450f, - -0.862423956111040500f, - 0.503538383725717580f, -0.863972856121586700f, 0.500885382611240940f, - -0.865513624090568980f, - 0.498227666972781870f, -0.867046245515692650f, 0.495565261825772490f, - -0.868570705971340900f, - 0.492898192229784090f, -0.870086991108711350f, 0.490226483288291100f, - -0.871595086655951090f, - 0.487550160148436050f, -0.873094978418290090f, 0.484869248000791120f, - -0.874586652278176110f, - 0.482183772079122830f, -0.876070094195406600f, 0.479493757660153010f, - -0.877545290207261240f, - 0.476799230063322250f, -0.879012226428633410f, 0.474100214650550020f, - -0.880470889052160750f, - 0.471396736825997810f, -0.881921264348354940f, 0.468688822035827960f, - -0.883363338665731580f, - 0.465976495767966130f, -0.884797098430937790f, 0.463259783551860260f, - -0.886222530148880640f, - 0.460538710958240010f, -0.887639620402853930f, 0.457813303598877290f, - -0.889048355854664570f, - 0.455083587126343840f, -0.890448723244757880f, 0.452349587233771000f, - -0.891840709392342720f, - 0.449611329654606600f, -0.893224301195515320f, 0.446868840162374330f, - -0.894599485631382580f, - 0.444122144570429260f, -0.895966249756185110f, 0.441371268731716620f, - -0.897324580705418320f, - 0.438616238538527710f, -0.898674465693953820f, 0.435857079922255470f, - -0.900015892016160280f, - 0.433093818853152010f, -0.901348847046022030f, 0.430326481340082610f, - -0.902673318237258830f, - 0.427555093430282200f, -0.903989293123443340f, 0.424779681209108810f, - -0.905296759318118820f, - 0.422000270799799790f, -0.906595704514915330f, 0.419216888363223960f, - -0.907886116487666150f, - 0.416429560097637320f, -0.909167983090522270f, 0.413638312238434560f, - -0.910441292258067140f, - 0.410843171057903910f, -0.911706032005429880f, 0.408044162864978740f, - -0.912962190428398100f, - 0.405241314004989860f, -0.914209755703530690f, 0.402434650859418540f, - -0.915448716088267830f, - 0.399624199845646790f, -0.916679059921042700f, 0.396809987416710420f, - -0.917900775621390390f, - 0.393992040061048100f, -0.919113851690057770f, 0.391170384302253980f, - -0.920318276709110480f, - 0.388345046698826300f, -0.921514039342041900f, 0.385516053843919020f, - -0.922701128333878520f, - 0.382683432365089840f, -0.923879532511286740f, 0.379847208924051110f, - -0.925049240782677580f, - 0.377007410216418310f, -0.926210242138311270f, 0.374164062971457990f, - -0.927362525650401110f, - 0.371317193951837600f, -0.928506080473215480f, 0.368466829953372320f, - -0.929640895843181330f, - 0.365612997804773960f, -0.930766961078983710f, 0.362755724367397230f, - -0.931884265581668150f, - 0.359895036534988280f, -0.932992798834738850f, 0.357030961233430030f, - -0.934092550404258870f, - 0.354163525420490510f, -0.935183509938947500f, 0.351292756085567150f, - -0.936265667170278260f, - 0.348418680249434510f, -0.937339011912574960f, 0.345541324963989150f, - -0.938403534063108060f, - 0.342660717311994380f, -0.939459223602189920f, 0.339776884406826960f, - -0.940506070593268300f, - 0.336889853392220050f, -0.941544065183020810f, 0.333999651442009490f, - -0.942573197601446870f, - 0.331106305759876430f, -0.943593458161960390f, 0.328209843579092660f, - -0.944604837261480260f, - 0.325310292162262980f, -0.945607325380521280f, 0.322407678801070020f, - -0.946600913083283530f, - 0.319502030816015750f, -0.947585591017741090f, 0.316593375556165850f, - -0.948561349915730270f, - 0.313681740398891570f, -0.949528180593036670f, 0.310767152749611470f, - -0.950486073949481700f, - 0.307849640041534980f, -0.951435020969008340f, 0.304929229735402430f, - -0.952375012719765880f, - 0.302005949319228200f, -0.953306040354193750f, 0.299079826308040480f, - -0.954228095109105670f, - 0.296150888243623960f, -0.955141168305770670f, 0.293219162694258680f, - -0.956045251349996410f, - 0.290284677254462330f, -0.956940335732208940f, 0.287347459544729570f, - -0.957826413027532910f, - 0.284407537211271820f, -0.958703474895871600f, 0.281464937925758050f, - -0.959571513081984520f, - 0.278519689385053060f, -0.960430519415565790f, 0.275571819310958250f, - -0.961280485811320640f, - 0.272621355449948980f, -0.962121404269041580f, 0.269668325572915200f, - -0.962953266873683880f, - 0.266712757474898420f, -0.963776065795439840f, 0.263754678974831510f, - -0.964589793289812650f, - 0.260794117915275570f, -0.965394441697689400f, 0.257831102162158930f, - -0.966190003445412620f, - 0.254865659604514630f, -0.966976471044852070f, 0.251897818154216910f, - -0.967753837093475510f, - 0.248927605745720260f, -0.968522094274417270f, 0.245955050335794590f, - -0.969281235356548530f, - 0.242980179903263980f, -0.970031253194543970f, 0.240003022448741500f, - -0.970772140728950350f, - 0.237023605994367340f, -0.971503890986251780f, 0.234041958583543460f, - -0.972226497078936270f, - 0.231058108280671280f, -0.972939952205560070f, 0.228072083170885790f, - -0.973644249650811870f, - 0.225083911359792780f, -0.974339382785575860f, 0.222093620973203590f, - -0.975025345066994120f, - 0.219101240156869770f, -0.975702130038528570f, 0.216106797076219600f, - -0.976369731330021140f, - 0.213110319916091360f, -0.977028142657754390f, 0.210111836880469720f, - -0.977677357824509930f, - 0.207111376192218560f, -0.978317370719627650f, 0.204108966092817010f, - -0.978948175319062200f, - 0.201104634842091960f, -0.979569765685440520f, 0.198098410717953730f, - -0.980182135968117320f, - 0.195090322016128330f, -0.980785280403230430f, 0.192080397049892380f, - -0.981379193313754560f, - 0.189068664149806280f, -0.981963869109555240f, 0.186055151663446630f, - -0.982539302287441240f, - 0.183039887955141060f, -0.983105487431216290f, 0.180022901405699510f, - -0.983662419211730250f, - 0.177004220412148860f, -0.984210092386929030f, 0.173983873387463850f, - -0.984748501801904210f, - 0.170961888760301360f, -0.985277642388941220f, 0.167938294974731230f, - -0.985797509167567370f, - 0.164913120489970090f, -0.986308097244598670f, 0.161886393780111910f, - -0.986809401814185420f, - 0.158858143333861390f, -0.987301418157858430f, 0.155828397654265320f, - -0.987784141644572180f, - 0.152797185258443410f, -0.988257567730749460f, 0.149764534677321620f, - -0.988721691960323780f, - 0.146730474455361750f, -0.989176509964781010f, 0.143695033150294580f, - -0.989622017463200780f, - 0.140658239332849240f, -0.990058210262297120f, 0.137620121586486180f, - -0.990485084256456980f, - 0.134580708507126220f, -0.990902635427780010f, 0.131540028702883280f, - -0.991310859846115440f, - 0.128498110793793220f, -0.991709753669099530f, 0.125454983411546210f, - -0.992099313142191800f, - 0.122410675199216280f, -0.992479534598709970f, 0.119365214810991350f, - -0.992850414459865100f, - 0.116318630911904880f, -0.993211949234794500f, 0.113270952177564360f, - -0.993564135520595300f, - 0.110222207293883180f, -0.993906970002356060f, 0.107172424956808870f, - -0.994240449453187900f, - 0.104121633872054730f, -0.994564570734255420f, 0.101069862754827880f, - -0.994879330794805620f, - 0.098017140329560770f, -0.995184726672196820f, 0.094963495329639061f, - -0.995480755491926940f, - 0.091908956497132696f, -0.995767414467659820f, 0.088853552582524684f, - -0.996044700901251970f, - 0.085797312344439880f, -0.996312612182778000f, 0.082740264549375803f, - -0.996571145790554840f, - 0.079682437971430126f, -0.996820299291165670f, 0.076623861392031617f, - -0.997060070339482960f, - 0.073564563599667454f, -0.997290456678690210f, 0.070504573389614009f, - -0.997511456140303450f, - 0.067443919563664106f, -0.997723066644191640f, 0.064382630929857410f, - -0.997925286198596000f, - 0.061320736302208648f, -0.998118112900149180f, 0.058258264500435732f, - -0.998301544933892890f, - 0.055195244349690031f, -0.998475580573294770f, 0.052131704680283317f, - -0.998640218180265270f, - 0.049067674327418126f, -0.998795456205172410f, 0.046003182130914644f, - -0.998941293186856870f, - 0.042938256934940959f, -0.999077727752645360f, 0.039872927587739845f, - -0.999204758618363890f, - 0.036807222941358991f, -0.999322384588349540f, 0.033741171851377642f, - -0.999430604555461730f, - 0.030674803176636581f, -0.999529417501093140f, 0.027608145778965820f, - -0.999618822495178640f, - 0.024541228522912264f, -0.999698818696204250f, 0.021474080275469605f, - -0.999769405351215280f, - 0.018406729905804820f, -0.999830581795823400f, 0.015339206284988220f, - -0.999882347454212560f, - 0.012271538285719944f, -0.999924701839144500f, 0.009203754782059960f, - -0.999957644551963900f, - 0.006135884649154515f, -0.999981175282601110f, 0.003067956762966138f, - -0.999995293809576190f -}; - -static const float32_t Weights_2048[4096] = { - 1.000000000000000000f, 0.000000000000000000f, 0.999999705862882230f, - -0.000766990318742704f, - 0.999998823451701880f, -0.001533980186284766f, 0.999997352766978210f, - -0.002300969151425805f, - 0.999995293809576190f, -0.003067956762965976f, 0.999992646580707190f, - -0.003834942569706228f, - 0.999989411081928400f, -0.004601926120448571f, 0.999985587315143200f, - -0.005368906963996343f, - 0.999981175282601110f, -0.006135884649154475f, 0.999976174986897610f, - -0.006902858724729756f, - 0.999970586430974140f, -0.007669828739531097f, 0.999964409618118280f, - -0.008436794242369799f, - 0.999957644551963900f, -0.009203754782059819f, 0.999950291236490480f, - -0.009970709907418031f, - 0.999942349676023910f, -0.010737659167264491f, 0.999933819875236000f, - -0.011504602110422714f, - 0.999924701839144500f, -0.012271538285719925f, 0.999914995573113470f, - -0.013038467241987334f, - 0.999904701082852900f, -0.013805388528060391f, 0.999893818374418490f, - -0.014572301692779064f, - 0.999882347454212560f, -0.015339206284988100f, 0.999870288328982950f, - -0.016106101853537287f, - 0.999857641005823860f, -0.016872987947281710f, 0.999844405492175240f, - -0.017639864115082053f, - 0.999830581795823400f, -0.018406729905804820f, 0.999816169924900410f, - -0.019173584868322623f, - 0.999801169887884260f, -0.019940428551514441f, 0.999785581693599210f, - -0.020707260504265895f, - 0.999769405351215280f, -0.021474080275469508f, 0.999752640870248840f, - -0.022240887414024961f, - 0.999735288260561680f, -0.023007681468839369f, 0.999717347532362190f, - -0.023774461988827555f, - 0.999698818696204250f, -0.024541228522912288f, 0.999679701762987930f, - -0.025307980620024571f, - 0.999659996743959220f, -0.026074717829103901f, 0.999639703650710200f, - -0.026841439699098531f, - 0.999618822495178640f, -0.027608145778965740f, 0.999597353289648380f, - -0.028374835617672099f, - 0.999575296046749220f, -0.029141508764193722f, 0.999552650779456990f, - -0.029908164767516555f, - 0.999529417501093140f, -0.030674803176636626f, 0.999505596225325310f, - -0.031441423540560301f, - 0.999481186966166950f, -0.032208025408304586f, 0.999456189737977340f, - -0.032974608328897335f, - 0.999430604555461730f, -0.033741171851377580f, 0.999404431433671300f, - -0.034507715524795750f, - 0.999377670388002850f, -0.035274238898213947f, 0.999350321434199440f, - -0.036040741520706229f, - 0.999322384588349540f, -0.036807222941358832f, 0.999293859866887790f, - -0.037573682709270494f, - 0.999264747286594420f, -0.038340120373552694f, 0.999235046864595850f, - -0.039106535483329888f, - 0.999204758618363890f, -0.039872927587739811f, 0.999173882565716380f, - -0.040639296235933736f, - 0.999142418724816910f, -0.041405640977076739f, 0.999110367114174890f, - -0.042171961360347947f, - 0.999077727752645360f, -0.042938256934940820f, 0.999044500659429290f, - -0.043704527250063421f, - 0.999010685854073380f, -0.044470771854938668f, 0.998976283356469820f, - -0.045236990298804590f, - 0.998941293186856870f, -0.046003182130914623f, 0.998905715365818290f, - -0.046769346900537863f, - 0.998869549914283560f, -0.047535484156959303f, 0.998832796853527990f, - -0.048301593449480144f, - 0.998795456205172410f, -0.049067674327418015f, 0.998757527991183340f, - -0.049833726340107277f, - 0.998719012233872940f, -0.050599749036899282f, 0.998679908955899090f, - -0.051365741967162593f, - 0.998640218180265270f, -0.052131704680283324f, 0.998599939930320370f, - -0.052897636725665324f, - 0.998559074229759310f, -0.053663537652730520f, 0.998517621102622210f, - -0.054429407010919133f, - 0.998475580573294770f, -0.055195244349689934f, 0.998432952666508440f, - -0.055961049218520569f, - 0.998389737407340160f, -0.056726821166907748f, 0.998345934821212370f, - -0.057492559744367566f, - 0.998301544933892890f, -0.058258264500435752f, 0.998256567771495180f, - -0.059023934984667931f, - 0.998211003360478190f, -0.059789570746639868f, 0.998164851727646240f, - -0.060555171335947788f, - 0.998118112900149180f, -0.061320736302208578f, 0.998070786905482340f, - -0.062086265195060088f, - 0.998022873771486240f, -0.062851757564161406f, 0.997974373526346990f, - -0.063617212959193106f, - 0.997925286198596000f, -0.064382630929857465f, 0.997875611817110150f, - -0.065148011025878833f, - 0.997825350411111640f, -0.065913352797003805f, 0.997774502010167820f, - -0.066678655793001557f, - 0.997723066644191640f, -0.067443919563664051f, 0.997671044343441000f, - -0.068209143658806329f, - 0.997618435138519550f, -0.068974327628266746f, 0.997565239060375750f, - -0.069739471021907307f, - 0.997511456140303450f, -0.070504573389613856f, 0.997457086409941910f, - -0.071269634281296401f, - 0.997402129901275300f, -0.072034653246889332f, 0.997346586646633230f, - -0.072799629836351673f, - 0.997290456678690210f, -0.073564563599667426f, 0.997233740030466280f, - -0.074329454086845756f, - 0.997176436735326190f, -0.075094300847921305f, 0.997118546826979980f, - -0.075859103432954447f, - 0.997060070339482960f, -0.076623861392031492f, 0.997001007307235290f, - -0.077388574275265049f, - 0.996941357764982160f, -0.078153241632794232f, 0.996881121747813850f, - -0.078917863014784942f, - 0.996820299291165670f, -0.079682437971430126f, 0.996758890430818000f, - -0.080446966052950014f, - 0.996696895202896060f, -0.081211446809592441f, 0.996634313643869900f, - -0.081975879791633066f, - 0.996571145790554840f, -0.082740264549375692f, 0.996507391680110820f, - -0.083504600633152432f, - 0.996443051350042630f, -0.084268887593324071f, 0.996378124838200210f, - -0.085033124980280275f, - 0.996312612182778000f, -0.085797312344439894f, 0.996246513422315520f, - -0.086561449236251170f, - 0.996179828595696980f, -0.087325535206192059f, 0.996112557742151130f, - -0.088089569804770507f, - 0.996044700901251970f, -0.088853552582524600f, 0.995976258112917790f, - -0.089617483090022959f, - 0.995907229417411720f, -0.090381360877864983f, 0.995837614855341610f, - -0.091145185496681005f, - 0.995767414467659820f, -0.091908956497132724f, 0.995696628295663520f, - -0.092672673429913310f, - 0.995625256380994310f, -0.093436335845747787f, 0.995553298765638470f, - -0.094199943295393204f, - 0.995480755491926940f, -0.094963495329638992f, 0.995407626602534900f, - -0.095726991499307162f, - 0.995333912140482280f, -0.096490431355252593f, 0.995259612149133390f, - -0.097253814448363271f, - 0.995184726672196930f, -0.098017140329560604f, 0.995109255753726110f, - -0.098780408549799623f, - 0.995033199438118630f, -0.099543618660069319f, 0.994956557770116380f, - -0.100306770211392860f, - 0.994879330794805620f, -0.101069862754827820f, 0.994801518557617110f, - -0.101832895841466530f, - 0.994723121104325700f, -0.102595869022436280f, 0.994644138481050710f, - -0.103358781848899610f, - 0.994564570734255420f, -0.104121633872054590f, 0.994484417910747600f, - -0.104884424643134970f, - 0.994403680057679100f, -0.105647153713410620f, 0.994322357222545810f, - -0.106409820634187680f, - 0.994240449453187900f, -0.107172424956808840f, 0.994157956797789730f, - -0.107934966232653650f, - 0.994074879304879370f, -0.108697444013138720f, 0.993991217023329380f, - -0.109459857849717980f, - 0.993906970002356060f, -0.110222207293883060f, 0.993822138291519660f, - -0.110984491897163390f, - 0.993736721940724600f, -0.111746711211126590f, 0.993650721000219120f, - -0.112508864787378690f, - 0.993564135520595300f, -0.113270952177564350f, 0.993476965552789190f, - -0.114032972933367200f, - 0.993389211148080650f, -0.114794926606510080f, 0.993300872358093280f, - -0.115556812748755260f, - 0.993211949234794500f, -0.116318630911904750f, 0.993122441830495580f, - -0.117080380647800590f, - 0.993032350197851410f, -0.117842061508324980f, 0.992941674389860470f, - -0.118603673045400720f, - 0.992850414459865100f, -0.119365214810991350f, 0.992758570461551140f, - -0.120126686357101500f, - 0.992666142448948020f, -0.120888087235777080f, 0.992573130476428810f, - -0.121649416999105530f, - 0.992479534598709970f, -0.122410675199216200f, 0.992385354870851670f, - -0.123171861388280480f, - 0.992290591348257370f, -0.123932975118512160f, 0.992195244086673920f, - -0.124694015942167640f, - 0.992099313142191800f, -0.125454983411546230f, 0.992002798571244520f, - -0.126215877078990350f, - 0.991905700430609330f, -0.126976696496885870f, 0.991808018777406430f, - -0.127737441217662310f, - 0.991709753669099530f, -0.128498110793793170f, 0.991610905163495370f, - -0.129258704777796140f, - 0.991511473318743900f, -0.130019222722233350f, 0.991411458193338540f, - -0.130779664179711710f, - 0.991310859846115440f, -0.131540028702883120f, 0.991209678336254060f, - -0.132300315844444650f, - 0.991107913723276890f, -0.133060525157139060f, 0.991005566067049370f, - -0.133820656193754720f, - 0.990902635427780010f, -0.134580708507126170f, 0.990799121866020370f, - -0.135340681650134210f, - 0.990695025442664630f, -0.136100575175706200f, 0.990590346218950150f, - -0.136860388636816380f, - 0.990485084256457090f, -0.137620121586486040f, 0.990379239617108160f, - -0.138379773577783890f, - 0.990272812363169110f, -0.139139344163826200f, 0.990165802557248400f, - -0.139898832897777210f, - 0.990058210262297120f, -0.140658239332849210f, 0.989950035541608990f, - -0.141417563022303020f, - 0.989841278458820530f, -0.142176803519448030f, 0.989731939077910570f, - -0.142935960377642670f, - 0.989622017463200890f, -0.143695033150294470f, 0.989511513679355190f, - -0.144454021390860470f, - 0.989400427791380380f, -0.145212924652847460f, 0.989288759864625170f, - -0.145971742489812210f, - 0.989176509964781010f, -0.146730474455361750f, 0.989063678157881540f, - -0.147489120103153570f, - 0.988950264510302990f, -0.148247678986896030f, 0.988836269088763540f, - -0.149006150660348450f, - 0.988721691960323780f, -0.149764534677321510f, 0.988606533192386450f, - -0.150522830591677400f, - 0.988490792852696590f, -0.151281037957330220f, 0.988374471009341280f, - -0.152039156328246050f, - 0.988257567730749460f, -0.152797185258443440f, 0.988140083085692570f, - -0.153555124301993450f, - 0.988022017143283530f, -0.154312973013020100f, 0.987903369972977790f, - -0.155070730945700510f, - 0.987784141644572180f, -0.155828397654265230f, 0.987664332228205710f, - -0.156585972692998430f, - 0.987543941794359230f, -0.157343455616238250f, 0.987422970413855410f, - -0.158100845978376980f, - 0.987301418157858430f, -0.158858143333861450f, 0.987179285097874340f, - -0.159615347237193060f, - 0.987056571305750970f, -0.160372457242928280f, 0.986933276853677710f, - -0.161129472905678810f, - 0.986809401814185530f, -0.161886393780111830f, 0.986684946260146690f, - -0.162643219420950310f, - 0.986559910264775410f, -0.163399949382973230f, 0.986434293901627180f, - -0.164156583221015810f, - 0.986308097244598670f, -0.164913120489969890f, 0.986181320367928270f, - -0.165669560744784120f, - 0.986053963346195440f, -0.166425903540464100f, 0.985926026254321130f, - -0.167182148432072940f, - 0.985797509167567480f, -0.167938294974731170f, 0.985668412161537550f, - -0.168694342723617330f, - 0.985538735312176060f, -0.169450291233967960f, 0.985408478695768420f, - -0.170206140061078070f, - 0.985277642388941220f, -0.170961888760301220f, 0.985146226468662230f, - -0.171717536887049970f, - 0.985014231012239840f, -0.172473083996795950f, 0.984881656097323700f, - -0.173228529645070320f, - 0.984748501801904210f, -0.173983873387463820f, 0.984614768204312600f, - -0.174739114779627200f, - 0.984480455383220930f, -0.175494253377271430f, 0.984345563417641900f, - -0.176249288736167880f, - 0.984210092386929030f, -0.177004220412148750f, 0.984074042370776450f, - -0.177759047961107170f, - 0.983937413449218920f, -0.178513770938997510f, 0.983800205702631600f, - -0.179268388901835750f, - 0.983662419211730250f, -0.180022901405699510f, 0.983524054057571260f, - -0.180777308006728590f, - 0.983385110321551180f, -0.181531608261124970f, 0.983245588085407070f, - -0.182285801725153300f, - 0.983105487431216290f, -0.183039887955140950f, 0.982964808441396440f, - -0.183793866507478450f, - 0.982823551198705240f, -0.184547736938619620f, 0.982681715786240860f, - -0.185301498805081900f, - 0.982539302287441240f, -0.186055151663446630f, 0.982396310786084690f, - -0.186808695070359270f, - 0.982252741366289370f, -0.187562128582529600f, 0.982108594112513610f, - -0.188315451756732120f, - 0.981963869109555240f, -0.189068664149806190f, 0.981818566442552500f, - -0.189821765318656410f, - 0.981672686196983110f, -0.190574754820252740f, 0.981526228458664770f, - -0.191327632211630900f, - 0.981379193313754560f, -0.192080397049892440f, 0.981231580848749730f, - -0.192833048892205230f, - 0.981083391150486710f, -0.193585587295803610f, 0.980934624306141640f, - -0.194338011817988600f, - 0.980785280403230430f, -0.195090322016128250f, 0.980635359529608120f, - -0.195842517447657850f, - 0.980484861773469380f, -0.196594597670080220f, 0.980333787223347960f, - -0.197346562240965920f, - 0.980182135968117430f, -0.198098410717953560f, 0.980029908096990090f, - -0.198850142658750090f, - 0.979877103699517640f, -0.199601757621130970f, 0.979723722865591170f, - -0.200353255162940450f, - 0.979569765685440520f, -0.201104634842091900f, 0.979415232249634780f, - -0.201855896216568050f, - 0.979260122649082020f, -0.202607038844421130f, 0.979104436975029250f, - -0.203358062283773320f, - 0.978948175319062200f, -0.204108966092816870f, 0.978791337773105670f, - -0.204859749829814420f, - 0.978633924429423210f, -0.205610413053099240f, 0.978475935380616830f, - -0.206360955321075510f, - 0.978317370719627650f, -0.207111376192218560f, 0.978158230539735050f, - -0.207861675225075070f, - 0.977998514934557140f, -0.208611851978263490f, 0.977838223998050430f, - -0.209361906010474160f, - 0.977677357824509930f, -0.210111836880469610f, 0.977515916508569280f, - -0.210861644147084860f, - 0.977353900145199960f, -0.211611327369227550f, 0.977191308829712280f, - -0.212360886105878420f, - 0.977028142657754390f, -0.213110319916091360f, 0.976864401725312640f, - -0.213859628358993750f, - 0.976700086128711840f, -0.214608810993786760f, 0.976535195964614470f, - -0.215357867379745550f, - 0.976369731330021140f, -0.216106797076219520f, 0.976203692322270560f, - -0.216855599642632620f, - 0.976037079039039020f, -0.217604274638483640f, 0.975869891578341030f, - -0.218352821623346320f, - 0.975702130038528570f, -0.219101240156869800f, 0.975533794518291360f, - -0.219849529798778700f, - 0.975364885116656980f, -0.220597690108873510f, 0.975195401932990370f, - -0.221345720647030810f, - 0.975025345066994120f, -0.222093620973203510f, 0.974854714618708430f, - -0.222841390647421120f, - 0.974683510688510670f, -0.223589029229789990f, 0.974511733377115720f, - -0.224336536280493600f, - 0.974339382785575860f, -0.225083911359792830f, 0.974166459015280320f, - -0.225831154028026170f, - 0.973992962167955830f, -0.226578263845610000f, 0.973818892345666100f, - -0.227325240373038860f, - 0.973644249650811980f, -0.228072083170885730f, 0.973469034186131070f, - -0.228818791799802220f, - 0.973293246054698250f, -0.229565365820518870f, 0.973116885359925130f, - -0.230311804793845440f, - 0.972939952205560180f, -0.231058108280671110f, 0.972762446695688570f, - -0.231804275841964780f, - 0.972584368934732210f, -0.232550307038775240f, 0.972405719027449770f, - -0.233296201432231590f, - 0.972226497078936270f, -0.234041958583543430f, 0.972046703194623500f, - -0.234787578054000970f, - 0.971866337480279400f, -0.235533059404975490f, 0.971685400042008540f, - -0.236278402197919570f, - 0.971503890986251780f, -0.237023605994367200f, 0.971321810419786160f, - -0.237768670355934190f, - 0.971139158449725090f, -0.238513594844318420f, 0.970955935183517970f, - -0.239258379021299980f, - 0.970772140728950350f, -0.240003022448741500f, 0.970587775194143630f, - -0.240747524688588430f, - 0.970402838687555500f, -0.241491885302869330f, 0.970217331317979160f, - -0.242236103853696010f, - 0.970031253194543970f, -0.242980179903263870f, 0.969844604426714830f, - -0.243724113013852160f, - 0.969657385124292450f, -0.244467902747824150f, 0.969469595397413060f, - -0.245211548667627540f, - 0.969281235356548530f, -0.245955050335794590f, 0.969092305112506210f, - -0.246698407314942410f, - 0.968902804776428870f, -0.247441619167773270f, 0.968712734459794780f, - -0.248184685457074780f, - 0.968522094274417380f, -0.248927605745720150f, 0.968330884332445190f, - -0.249670379596668570f, - 0.968139104746362440f, -0.250413006572965220f, 0.967946755628987800f, - -0.251155486237741920f, - 0.967753837093475510f, -0.251897818154216970f, 0.967560349253314360f, - -0.252640001885695520f, - 0.967366292222328510f, -0.253382036995570160f, 0.967171666114676640f, - -0.254123923047320620f, - 0.966976471044852070f, -0.254865659604514570f, 0.966780707127683270f, - -0.255607246230807380f, - 0.966584374478333120f, -0.256348682489942910f, 0.966387473212298900f, - -0.257089967945753120f, - 0.966190003445412500f, -0.257831102162158990f, 0.965991965293840570f, - -0.258572084703170340f, - 0.965793358874083680f, -0.259312915132886230f, 0.965594184302976830f, - -0.260053593015495190f, - 0.965394441697689400f, -0.260794117915275510f, 0.965194131175724720f, - -0.261534489396595520f, - 0.964993252854920320f, -0.262274707023913590f, 0.964791806853447900f, - -0.263014770361779000f, - 0.964589793289812760f, -0.263754678974831350f, 0.964387212282854290f, - -0.264494432427801630f, - 0.964184063951745830f, -0.265234030285511790f, 0.963980348415994110f, - -0.265973472112875590f, - 0.963776065795439840f, -0.266712757474898370f, 0.963571216210257320f, - -0.267451885936677620f, - 0.963365799780954050f, -0.268190857063403180f, 0.963159816628371360f, - -0.268929670420357260f, - 0.962953266873683880f, -0.269668325572915090f, 0.962746150638399410f, - -0.270406822086544820f, - 0.962538468044359160f, -0.271145159526808010f, 0.962330219213737400f, - -0.271883337459359720f, - 0.962121404269041580f, -0.272621355449948980f, 0.961912023333112210f, - -0.273359213064418680f, - 0.961702076529122540f, -0.274096909868706380f, 0.961491563980579000f, - -0.274834445428843940f, - 0.961280485811320640f, -0.275571819310958140f, 0.961068842145519350f, - -0.276309031081271080f, - 0.960856633107679660f, -0.277046080306099900f, 0.960643858822638590f, - -0.277782966551857690f, - 0.960430519415565790f, -0.278519689385053060f, 0.960216615011963430f, - -0.279256248372291180f, - 0.960002145737665960f, -0.279992643080273220f, 0.959787111718839900f, - -0.280728873075797190f, - 0.959571513081984520f, -0.281464937925757940f, 0.959355349953930790f, - -0.282200837197147560f, - 0.959138622461841890f, -0.282936570457055390f, 0.958921330733213170f, - -0.283672137272668430f, - 0.958703474895871600f, -0.284407537211271880f, 0.958485055077976100f, - -0.285142769840248670f, - 0.958266071408017670f, -0.285877834727080620f, 0.958046524014818600f, - -0.286612731439347790f, - 0.957826413027532910f, -0.287347459544729510f, 0.957605738575646350f, - -0.288082018611004130f, - 0.957384500788975860f, -0.288816408206049480f, 0.957162699797670210f, - -0.289550627897843030f, - 0.956940335732208820f, -0.290284677254462330f, 0.956717408723403050f, - -0.291018555844085090f, - 0.956493918902395100f, -0.291752263234989260f, 0.956269866400658030f, - -0.292485798995553880f, - 0.956045251349996410f, -0.293219162694258630f, 0.955820073882545420f, - -0.293952353899684660f, - 0.955594334130771110f, -0.294685372180514330f, 0.955368032227470350f, - -0.295418217105532010f, - 0.955141168305770780f, -0.296150888243623790f, 0.954913742499130520f, - -0.296883385163778270f, - 0.954685754941338340f, -0.297615707435086200f, 0.954457205766513490f, - -0.298347854626741400f, - 0.954228095109105670f, -0.299079826308040480f, 0.953998423103894490f, - -0.299811622048383350f, - 0.953768189885990330f, -0.300543241417273450f, 0.953537395590833280f, - -0.301274683984317950f, - 0.953306040354193860f, -0.302005949319228080f, 0.953074124312172200f, - -0.302737036991819140f, - 0.952841647601198720f, -0.303467946572011320f, 0.952608610358033350f, - -0.304198677629829110f, - 0.952375012719765880f, -0.304929229735402370f, 0.952140854823815830f, - -0.305659602458966120f, - 0.951906136807932350f, -0.306389795370860920f, 0.951670858810193860f, - -0.307119808041533100f, - 0.951435020969008340f, -0.307849640041534870f, 0.951198623423113230f, - -0.308579290941525090f, - 0.950961666311575080f, -0.309308760312268730f, 0.950724149773789610f, - -0.310038047724637890f, - 0.950486073949481700f, -0.310767152749611470f, 0.950247438978705230f, - -0.311496074958275910f, - 0.950008245001843000f, -0.312224813921824880f, 0.949768492159606680f, - -0.312953369211560200f, - 0.949528180593036670f, -0.313681740398891520f, 0.949287310443502120f, - -0.314409927055336660f, - 0.949045881852700560f, -0.315137928752522440f, 0.948803894962658490f, - -0.315865745062183960f, - 0.948561349915730270f, -0.316593375556165850f, 0.948318246854599090f, - -0.317320819806421740f, - 0.948074585922276230f, -0.318048077385014950f, 0.947830367262101010f, - -0.318775147864118480f, - 0.947585591017741090f, -0.319502030816015690f, 0.947340257333192050f, - -0.320228725813099860f, - 0.947094366352777220f, -0.320955232427875210f, 0.946847918221148000f, - -0.321681550232956580f, - 0.946600913083283530f, -0.322407678801069850f, 0.946353351084490590f, - -0.323133617705052330f, - 0.946105232370403450f, -0.323859366517852850f, 0.945856557086983910f, - -0.324584924812532150f, - 0.945607325380521280f, -0.325310292162262930f, 0.945357537397632290f, - -0.326035468140330240f, - 0.945107193285260610f, -0.326760452320131730f, 0.944856293190677210f, - -0.327485244275178000f, - 0.944604837261480260f, -0.328209843579092500f, 0.944352825645594750f, - -0.328934249805612200f, - 0.944100258491272660f, -0.329658462528587490f, 0.943847135947092690f, - -0.330382481321982780f, - 0.943593458161960390f, -0.331106305759876430f, 0.943339225285107720f, - -0.331829935416461110f, - 0.943084437466093490f, -0.332553369866044220f, 0.942829094854802710f, - -0.333276608683047930f, - 0.942573197601446870f, -0.333999651442009380f, 0.942316745856563780f, - -0.334722497717581220f, - 0.942059739771017310f, -0.335445147084531600f, 0.941802179495997650f, - -0.336167599117744520f, - 0.941544065183020810f, -0.336889853392220050f, 0.941285396983928660f, - -0.337611909483074620f, - 0.941026175050889260f, -0.338333766965541130f, 0.940766399536396070f, - -0.339055425414969640f, - 0.940506070593268300f, -0.339776884406826850f, 0.940245188374650880f, - -0.340498143516697160f, - 0.939983753034014050f, -0.341219202320282360f, 0.939721764725153340f, - -0.341940060393402190f, - 0.939459223602189920f, -0.342660717311994380f, 0.939196129819569900f, - -0.343381172652115040f, - 0.938932483532064600f, -0.344101425989938810f, 0.938668284894770170f, - -0.344821476901759290f, - 0.938403534063108060f, -0.345541324963989090f, 0.938138231192824360f, - -0.346260969753160010f, - 0.937872376439989890f, -0.346980410845923680f, 0.937605969960999990f, - -0.347699647819051380f, - 0.937339011912574960f, -0.348418680249434560f, 0.937071502451759190f, - -0.349137507714084970f, - 0.936803441735921560f, -0.349856129790134920f, 0.936534829922755500f, - -0.350574546054837510f, - 0.936265667170278260f, -0.351292756085567090f, 0.935995953636831410f, - -0.352010759459819080f, - 0.935725689481080370f, -0.352728555755210730f, 0.935454874862014620f, - -0.353446144549480810f, - 0.935183509938947610f, -0.354163525420490340f, 0.934911594871516090f, - -0.354880697946222790f, - 0.934639129819680780f, -0.355597661704783850f, 0.934366114943725790f, - -0.356314416274402410f, - 0.934092550404258980f, -0.357030961233429980f, 0.933818436362210960f, - -0.357747296160341900f, - 0.933543772978836170f, -0.358463420633736540f, 0.933268560415712050f, - -0.359179334232336500f, - 0.932992798834738960f, -0.359895036534988110f, 0.932716488398140250f, - -0.360610527120662270f, - 0.932439629268462360f, -0.361325805568454280f, 0.932162221608574430f, - -0.362040871457584180f, - 0.931884265581668150f, -0.362755724367397230f, 0.931605761351257830f, - -0.363470363877363760f, - 0.931326709081180430f, -0.364184789567079890f, 0.931047108935595280f, - -0.364899001016267320f, - 0.930766961078983710f, -0.365612997804773850f, 0.930486265676149780f, - -0.366326779512573590f, - 0.930205022892219070f, -0.367040345719767180f, 0.929923232892639670f, - -0.367753696006581980f, - 0.929640895843181330f, -0.368466829953372320f, 0.929358011909935500f, - -0.369179747140620020f, - 0.929074581259315860f, -0.369892447148934100f, 0.928790604058057020f, - -0.370604929559051670f, - 0.928506080473215590f, -0.371317193951837540f, 0.928221010672169440f, - -0.372029239908285010f, - 0.927935394822617890f, -0.372741067009515760f, 0.927649233092581180f, - -0.373452674836780300f, - 0.927362525650401110f, -0.374164062971457930f, 0.927075272664740100f, - -0.374875230995057540f, - 0.926787474304581750f, -0.375586178489217220f, 0.926499130739230510f, - -0.376296905035704790f, - 0.926210242138311380f, -0.377007410216418260f, 0.925920808671770070f, - -0.377717693613385640f, - 0.925630830509872720f, -0.378427754808765560f, 0.925340307823206310f, - -0.379137593384847320f, - 0.925049240782677580f, -0.379847208924051160f, 0.924757629559513910f, - -0.380556601008928520f, - 0.924465474325262600f, -0.381265769222162380f, 0.924172775251791200f, - -0.381974713146567220f, - 0.923879532511286740f, -0.382683432365089780f, 0.923585746276256670f, - -0.383391926460808660f, - 0.923291416719527640f, -0.384100195016935040f, 0.922996544014246250f, - -0.384808237616812880f, - 0.922701128333878630f, -0.385516053843918850f, 0.922405169852209880f, - -0.386223643281862980f, - 0.922108668743345180f, -0.386931005514388580f, 0.921811625181708120f, - -0.387638140125372730f, - 0.921514039342042010f, -0.388345046698826250f, 0.921215911399408730f, - -0.389051724818894380f, - 0.920917241529189520f, -0.389758174069856410f, 0.920618029907083970f, - -0.390464394036126590f, - 0.920318276709110590f, -0.391170384302253870f, 0.920017982111606570f, - -0.391876144452922350f, - 0.919717146291227360f, -0.392581674072951470f, 0.919415769424947070f, - -0.393286972747296400f, - 0.919113851690057770f, -0.393992040061048100f, 0.918811393264170050f, - -0.394696875599433560f, - 0.918508394325212250f, -0.395401478947816350f, 0.918204855051430900f, - -0.396105849691696270f, - 0.917900775621390500f, -0.396809987416710310f, 0.917596156213972950f, - -0.397513891708632330f, - 0.917290997008377910f, -0.398217562153373560f, 0.916985298184123000f, - -0.398920998336982910f, - 0.916679059921042700f, -0.399624199845646790f, 0.916372282399289140f, - -0.400327166265690090f, - 0.916064965799331720f, -0.401029897183575620f, 0.915757110301956720f, - -0.401732392185905010f, - 0.915448716088267830f, -0.402434650859418430f, 0.915139783339685260f, - -0.403136672790995300f, - 0.914830312237946200f, -0.403838457567654070f, 0.914520302965104450f, - -0.404540004776553000f, - 0.914209755703530690f, -0.405241314004989860f, 0.913898670635911680f, - -0.405942384840402510f, - 0.913587047945250810f, -0.406643216870369030f, 0.913274887814867760f, - -0.407343809682607970f, - 0.912962190428398210f, -0.408044162864978690f, 0.912648955969793900f, - -0.408744276005481360f, - 0.912335184623322750f, -0.409444148692257590f, 0.912020876573568340f, - -0.410143780513590240f, - 0.911706032005429880f, -0.410843171057903910f, 0.911390651104122430f, - -0.411542319913765220f, - 0.911074734055176360f, -0.412241226669882890f, 0.910758281044437570f, - -0.412939890915108080f, - 0.910441292258067250f, -0.413638312238434500f, 0.910123767882541680f, - -0.414336490228999100f, - 0.909805708104652220f, -0.415034424476081630f, 0.909487113111505430f, - -0.415732114569105360f, - 0.909167983090522380f, -0.416429560097637150f, 0.908848318229439120f, - -0.417126760651387870f, - 0.908528118716306120f, -0.417823715820212270f, 0.908207384739488700f, - -0.418520425194109700f, - 0.907886116487666260f, -0.419216888363223910f, 0.907564314149832630f, - -0.419913104917843620f, - 0.907241977915295820f, -0.420609074448402510f, 0.906919107973678140f, - -0.421304796545479640f, - 0.906595704514915330f, -0.422000270799799680f, 0.906271767729257660f, - -0.422695496802232950f, - 0.905947297807268460f, -0.423390474143796050f, 0.905622294939825270f, - -0.424085202415651560f, - 0.905296759318118820f, -0.424779681209108810f, 0.904970691133653250f, - -0.425473910115623800f, - 0.904644090578246240f, -0.426167888726799620f, 0.904316957844028320f, - -0.426861616634386430f, - 0.903989293123443340f, -0.427555093430282080f, 0.903661096609247980f, - -0.428248318706531960f, - 0.903332368494511820f, -0.428941292055329490f, 0.903003108972617150f, - -0.429634013069016380f, - 0.902673318237258830f, -0.430326481340082610f, 0.902342996482444200f, - -0.431018696461167030f, - 0.902012143902493180f, -0.431710658025057260f, 0.901680760692037730f, - -0.432402365624690140f, - 0.901348847046022030f, -0.433093818853151960f, 0.901016403159702330f, - -0.433785017303678520f, - 0.900683429228646970f, -0.434475960569655650f, 0.900349925448735600f, - -0.435166648244619260f, - 0.900015892016160280f, -0.435857079922255470f, 0.899681329127423930f, - -0.436547255196401200f, - 0.899346236979341570f, -0.437237173661044090f, 0.899010615769039070f, - -0.437926834910322860f, - 0.898674465693953820f, -0.438616238538527660f, 0.898337786951834310f, - -0.439305384140099950f, - 0.898000579740739880f, -0.439994271309633260f, 0.897662844259040860f, - -0.440682899641872900f, - 0.897324580705418320f, -0.441371268731716670f, 0.896985789278863970f, - -0.442059378174214700f, - 0.896646470178680150f, -0.442747227564570020f, 0.896306623604479550f, - -0.443434816498138480f, - 0.895966249756185220f, -0.444122144570429200f, 0.895625348834030110f, - -0.444809211377104880f, - 0.895283921038557580f, -0.445496016513981740f, 0.894941966570620750f, - -0.446182559577030070f, - 0.894599485631382700f, -0.446868840162374160f, 0.894256478422316040f, - -0.447554857866293010f, - 0.893912945145203250f, -0.448240612285219890f, 0.893568886002135910f, - -0.448926103015743260f, - 0.893224301195515320f, -0.449611329654606540f, 0.892879190928051680f, - -0.450296291798708610f, - 0.892533555402764580f, -0.450980989045103860f, 0.892187394822982480f, - -0.451665420991002490f, - 0.891840709392342720f, -0.452349587233770890f, 0.891493499314791380f, - -0.453033487370931580f, - 0.891145764794583180f, -0.453717121000163870f, 0.890797506036281490f, - -0.454400487719303580f, - 0.890448723244757880f, -0.455083587126343840f, 0.890099416625192320f, - -0.455766418819434640f, - 0.889749586383072780f, -0.456448982396883920f, 0.889399232724195520f, - -0.457131277457156980f, - 0.889048355854664570f, -0.457813303598877170f, 0.888696955980891600f, - -0.458495060420826270f, - 0.888345033309596350f, -0.459176547521944090f, 0.887992588047805560f, - -0.459857764501329540f, - 0.887639620402853930f, -0.460538710958240010f, 0.887286130582383150f, - -0.461219386492092380f, - 0.886932118794342190f, -0.461899790702462730f, 0.886577585246987040f, - -0.462579923189086810f, - 0.886222530148880640f, -0.463259783551860150f, 0.885866953708892790f, - -0.463939371390838520f, - 0.885510856136199950f, -0.464618686306237820f, 0.885154237640285110f, - -0.465297727898434600f, - 0.884797098430937790f, -0.465976495767966180f, 0.884439438718253810f, - -0.466654989515530920f, - 0.884081258712634990f, -0.467333208741988420f, 0.883722558624789660f, - -0.468011153048359830f, - 0.883363338665731580f, -0.468688822035827900f, 0.883003599046780830f, - -0.469366215305737520f, - 0.882643339979562790f, -0.470043332459595620f, 0.882282561676008710f, - -0.470720173099071600f, - 0.881921264348355050f, -0.471396736825997640f, 0.881559448209143780f, - -0.472073023242368660f, - 0.881197113471222090f, -0.472749031950342790f, 0.880834260347742040f, - -0.473424762552241530f, - 0.880470889052160750f, -0.474100214650549970f, 0.880106999798240360f, - -0.474775387847917120f, - 0.879742592800047410f, -0.475450281747155870f, 0.879377668271953290f, - -0.476124895951243580f, - 0.879012226428633530f, -0.476799230063322090f, 0.878646267485068130f, - -0.477473283686698060f, - 0.878279791656541580f, -0.478147056424843010f, 0.877912799158641840f, - -0.478820547881393890f, - 0.877545290207261350f, -0.479493757660153010f, 0.877177265018595940f, - -0.480166685365088390f, - 0.876808723809145650f, -0.480839330600333960f, 0.876439666795713610f, - -0.481511692970189860f, - 0.876070094195406600f, -0.482183772079122720f, 0.875700006225634600f, - -0.482855567531765670f, - 0.875329403104110890f, -0.483527078932918740f, 0.874958285048851650f, - -0.484198305887549030f, - 0.874586652278176110f, -0.484869248000791060f, 0.874214505010706300f, - -0.485539904877946960f, - 0.873841843465366860f, -0.486210276124486420f, 0.873468667861384880f, - -0.486880361346047340f, - 0.873094978418290090f, -0.487550160148436000f, 0.872720775355914300f, - -0.488219672137626790f, - 0.872346058894391540f, -0.488888896919763170f, 0.871970829254157810f, - -0.489557834101157440f, - 0.871595086655950980f, -0.490226483288291160f, 0.871218831320811020f, - -0.490894844087815090f, - 0.870842063470078980f, -0.491562916106549900f, 0.870464783325397670f, - -0.492230698951486020f, - 0.870086991108711460f, -0.492898192229784040f, 0.869708687042265670f, - -0.493565395548774770f, - 0.869329871348606840f, -0.494232308515959670f, 0.868950544250582380f, - -0.494898930739011260f, - 0.868570705971340900f, -0.495565261825772540f, 0.868190356734331310f, - -0.496231301384258250f, - 0.867809496763303320f, -0.496897049022654470f, 0.867428126282306920f, - -0.497562504349319150f, - 0.867046245515692650f, -0.498227666972781870f, 0.866663854688111130f, - -0.498892536501744590f, - 0.866280954024512990f, -0.499557112545081840f, 0.865897543750148820f, - -0.500221394711840680f, - 0.865513624090569090f, -0.500885382611240710f, 0.865129195271623800f, - -0.501549075852675390f, - 0.864744257519462380f, -0.502212474045710790f, 0.864358811060534030f, - -0.502875576800086990f, - 0.863972856121586810f, -0.503538383725717580f, 0.863586392929668100f, - -0.504200894432690340f, - 0.863199421712124160f, -0.504863108531267590f, 0.862811942696600330f, - -0.505525025631885390f, - 0.862423956111040610f, -0.506186645345155230f, 0.862035462183687210f, - -0.506847967281863210f, - 0.861646461143081300f, -0.507508991052970870f, 0.861256953218062170f, - -0.508169716269614600f, - 0.860866938637767310f, -0.508830142543106990f, 0.860476417631632070f, - -0.509490269484936360f, - 0.860085390429390140f, -0.510150096706766810f, 0.859693857261072610f, - -0.510809623820439040f, - 0.859301818357008470f, -0.511468850437970300f, 0.858909273947823900f, - -0.512127776171554690f, - 0.858516224264442740f, -0.512786400633562960f, 0.858122669538086140f, - -0.513444723436543460f, - 0.857728610000272120f, -0.514102744193221660f, 0.857334045882815590f, - -0.514760462516501200f, - 0.856938977417828760f, -0.515417878019462930f, 0.856543404837719960f, - -0.516074990315366630f, - 0.856147328375194470f, -0.516731799017649870f, 0.855750748263253920f, - -0.517388303739929060f, - 0.855353664735196030f, -0.518044504095999340f, 0.854956078024614930f, - -0.518700399699834950f, - 0.854557988365400530f, -0.519355990165589640f, 0.854159395991738850f, - -0.520011275107596040f, - 0.853760301138111410f, -0.520666254140367160f, 0.853360704039295430f, - -0.521320926878595660f, - 0.852960604930363630f, -0.521975292937154390f, 0.852560004046684080f, - -0.522629351931096610f, - 0.852158901623919830f, -0.523283103475656430f, 0.851757297898029120f, - -0.523936547186248600f, - 0.851355193105265200f, -0.524589682678468950f, 0.850952587482175730f, - -0.525242509568094710f, - 0.850549481265603480f, -0.525895027471084630f, 0.850145874692685210f, - -0.526547236003579440f, - 0.849741768000852550f, -0.527199134781901280f, 0.849337161427830780f, - -0.527850723422555230f, - 0.848932055211639610f, -0.528502001542228480f, 0.848526449590592650f, - -0.529152968757790610f, - 0.848120344803297230f, -0.529803624686294610f, 0.847713741088654380f, - -0.530453968944976320f, - 0.847306638685858320f, -0.531104001151255000f, 0.846899037834397240f, - -0.531753720922733320f, - 0.846490938774052130f, -0.532403127877197900f, 0.846082341744897050f, - -0.533052221632619450f, - 0.845673246987299070f, -0.533701001807152960f, 0.845263654741918220f, - -0.534349468019137520f, - 0.844853565249707120f, -0.534997619887097150f, 0.844442978751910660f, - -0.535645457029741090f, - 0.844031895490066410f, -0.536292979065963180f, 0.843620315706004150f, - -0.536940185614842910f, - 0.843208239641845440f, -0.537587076295645390f, 0.842795667540004120f, - -0.538233650727821700f, - 0.842382599643185850f, -0.538879908531008420f, 0.841969036194387680f, - -0.539525849325028890f, - 0.841554977436898440f, -0.540171472729892850f, 0.841140423614298080f, - -0.540816778365796670f, - 0.840725374970458070f, -0.541461765853123440f, 0.840309831749540770f, - -0.542106434812443920f, - 0.839893794195999520f, -0.542750784864515890f, 0.839477262554578550f, - -0.543394815630284800f, - 0.839060237070312740f, -0.544038526730883820f, 0.838642717988527300f, - -0.544681917787634530f, - 0.838224705554838080f, -0.545324988422046460f, 0.837806200015150940f, - -0.545967738255817570f, - 0.837387201615661940f, -0.546610166910834860f, 0.836967710602857020f, - -0.547252274009174090f, - 0.836547727223512010f, -0.547894059173100190f, 0.836127251724692270f, - -0.548535522025067390f, - 0.835706284353752600f, -0.549176662187719660f, 0.835284825358337370f, - -0.549817479283890910f, - 0.834862874986380010f, -0.550457972936604810f, 0.834440433486103190f, - -0.551098142769075430f, - 0.834017501106018130f, -0.551737988404707340f, 0.833594078094925140f, - -0.552377509467096070f, - 0.833170164701913190f, -0.553016705580027470f, 0.832745761176359460f, - -0.553655576367479310f, - 0.832320867767929680f, -0.554294121453620000f, 0.831895484726577590f, - -0.554932340462810370f, - 0.831469612302545240f, -0.555570233019602180f, 0.831043250746362320f, - -0.556207798748739930f, - 0.830616400308846310f, -0.556845037275160100f, 0.830189061241102370f, - -0.557481948223991550f, - 0.829761233794523050f, -0.558118531220556100f, 0.829332918220788250f, - -0.558754785890368310f, - 0.828904114771864870f, -0.559390711859136140f, 0.828474823700007130f, - -0.560026308752760380f, - 0.828045045257755800f, -0.560661576197336030f, 0.827614779697938400f, - -0.561296513819151470f, - 0.827184027273669130f, -0.561931121244689470f, 0.826752788238348520f, - -0.562565398100626560f, - 0.826321062845663530f, -0.563199344013834090f, 0.825888851349586780f, - -0.563832958611378170f, - 0.825456154004377550f, -0.564466241520519500f, 0.825022971064580220f, - -0.565099192368713980f, - 0.824589302785025290f, -0.565731810783613120f, 0.824155149420828570f, - -0.566364096393063840f, - 0.823720511227391430f, -0.566996048825108680f, 0.823285388460400110f, - -0.567627667707986230f, - 0.822849781375826430f, -0.568258952670131490f, 0.822413690229926390f, - -0.568889903340175860f, - 0.821977115279241550f, -0.569520519346947140f, 0.821540056780597610f, - -0.570150800319470300f, - 0.821102514991104650f, -0.570780745886967260f, 0.820664490168157460f, - -0.571410355678857230f, - 0.820225982569434690f, -0.572039629324757050f, 0.819786992452898990f, - -0.572668566454481160f, - 0.819347520076796900f, -0.573297166698042200f, 0.818907565699658950f, - -0.573925429685650750f, - 0.818467129580298660f, -0.574553355047715760f, 0.818026211977813440f, - -0.575180942414845080f, - 0.817584813151583710f, -0.575808191417845340f, 0.817142933361272970f, - -0.576435101687721830f, - 0.816700572866827850f, -0.577061672855679440f, 0.816257731928477390f, - -0.577687904553122800f, - 0.815814410806733780f, -0.578313796411655590f, 0.815370609762391290f, - -0.578939348063081780f, - 0.814926329056526620f, -0.579564559139405630f, 0.814481568950498610f, - -0.580189429272831680f, - 0.814036329705948410f, -0.580813958095764530f, 0.813590611584798510f, - -0.581438145240810170f, - 0.813144414849253590f, -0.582061990340775440f, 0.812697739761799490f, - -0.582685493028668460f, - 0.812250586585203880f, -0.583308652937698290f, 0.811802955582515470f, - -0.583931469701276180f, - 0.811354847017063730f, -0.584553942953015330f, 0.810906261152459670f, - -0.585176072326730410f, - 0.810457198252594770f, -0.585797857456438860f, 0.810007658581641140f, - -0.586419297976360500f, - 0.809557642404051260f, -0.587040393520917970f, 0.809107149984558240f, - -0.587661143724736660f, - 0.808656181588174980f, -0.588281548222645220f, 0.808204737480194720f, - -0.588901606649675720f, - 0.807752817926190360f, -0.589521318641063940f, 0.807300423192014450f, - -0.590140683832248820f, - 0.806847553543799330f, -0.590759701858874160f, 0.806394209247956240f, - -0.591378372356787580f, - 0.805940390571176280f, -0.591996694962040990f, 0.805486097780429230f, - -0.592614669310891130f, - 0.805031331142963660f, -0.593232295039799800f, 0.804576090926307110f, - -0.593849571785433630f, - 0.804120377398265810f, -0.594466499184664430f, 0.803664190826924090f, - -0.595083076874569960f, - 0.803207531480644940f, -0.595699304492433360f, 0.802750399628069160f, - -0.596315181675743710f, - 0.802292795538115720f, -0.596930708062196500f, 0.801834719479981310f, - -0.597545883289693160f, - 0.801376171723140240f, -0.598160706996342270f, 0.800917152537344300f, - -0.598775178820458720f, - 0.800457662192622820f, -0.599389298400564540f, 0.799997700959281910f, - -0.600003065375388940f, - 0.799537269107905010f, -0.600616479383868970f, 0.799076366909352350f, - -0.601229540065148500f, - 0.798614994634760820f, -0.601842247058580030f, 0.798153152555543750f, - -0.602454600003723750f, - 0.797690840943391160f, -0.603066598540348160f, 0.797228060070268810f, - -0.603678242308430370f, - 0.796764810208418830f, -0.604289530948155960f, 0.796301091630359110f, - -0.604900464099919820f, - 0.795836904608883570f, -0.605511041404325550f, 0.795372249417061310f, - -0.606121262502186120f, - 0.794907126328237010f, -0.606731127034524480f, 0.794441535616030590f, - -0.607340634642572930f, - 0.793975477554337170f, -0.607949784967773630f, 0.793508952417326660f, - -0.608558577651779450f, - 0.793041960479443640f, -0.609167012336453210f, 0.792574502015407690f, - -0.609775088663868430f, - 0.792106577300212390f, -0.610382806276309480f, 0.791638186609125880f, - -0.610990164816271660f, - 0.791169330217690200f, -0.611597163926461910f, 0.790700008401721610f, - -0.612203803249797950f, - 0.790230221437310030f, -0.612810082429409710f, 0.789759969600819070f, - -0.613416001108638590f, - 0.789289253168885650f, -0.614021558931038380f, 0.788818072418420280f, - -0.614626755540375050f, - 0.788346427626606340f, -0.615231590580626820f, 0.787874319070900220f, - -0.615836063695985090f, - 0.787401747029031430f, -0.616440174530853650f, 0.786928711779001810f, - -0.617043922729849760f, - 0.786455213599085770f, -0.617647307937803870f, 0.785981252767830150f, - -0.618250329799760250f, - 0.785506829564053930f, -0.618852987960976320f, 0.785031944266848080f, - -0.619455282066924020f, - 0.784556597155575240f, -0.620057211763289100f, 0.784080788509869950f, - -0.620658776695972140f, - 0.783604518609638200f, -0.621259976511087550f, 0.783127787735057310f, - -0.621860810854965360f, - 0.782650596166575730f, -0.622461279374149970f, 0.782172944184913010f, - -0.623061381715401260f, - 0.781694832071059390f, -0.623661117525694530f, 0.781216260106276090f, - -0.624260486452220650f, - 0.780737228572094490f, -0.624859488142386340f, 0.780257737750316590f, - -0.625458122243814360f, - 0.779777787923014550f, -0.626056388404343520f, 0.779297379372530300f, - -0.626654286272029350f, - 0.778816512381475980f, -0.627251815495144080f, 0.778335187232733210f, - -0.627848975722176460f, - 0.777853404209453150f, -0.628445766601832710f, 0.777371163595056310f, - -0.629042187783036000f, - 0.776888465673232440f, -0.629638238914926980f, 0.776405310727940390f, - -0.630233919646864370f, - 0.775921699043407690f, -0.630829229628424470f, 0.775437630904130540f, - -0.631424168509401860f, - 0.774953106594873930f, -0.632018735939809060f, 0.774468126400670860f, - -0.632612931569877410f, - 0.773982690606822900f, -0.633206755050057190f, 0.773496799498899050f, - -0.633800206031017280f, - 0.773010453362736990f, -0.634393284163645490f, 0.772523652484441330f, - -0.634985989099049460f, - 0.772036397150384520f, -0.635578320488556110f, 0.771548687647206300f, - -0.636170277983712170f, - 0.771060524261813820f, -0.636761861236284200f, 0.770571907281380810f, - -0.637353069898259130f, - 0.770082836993347900f, -0.637943903621844060f, 0.769593313685422940f, - -0.638534362059466790f, - 0.769103337645579700f, -0.639124444863775730f, 0.768612909162058380f, - -0.639714151687640450f, - 0.768122028523365420f, -0.640303482184151670f, 0.767630696018273380f, - -0.640892436006621380f, - 0.767138911935820400f, -0.641481012808583160f, 0.766646676565310380f, - -0.642069212243792540f, - 0.766153990196312920f, -0.642657033966226860f, 0.765660853118662500f, - -0.643244477630085850f, - 0.765167265622458960f, -0.643831542889791390f, 0.764673227998067140f, - -0.644418229399988380f, - 0.764178740536116670f, -0.645004536815543930f, 0.763683803527501870f, - -0.645590464791548690f, - 0.763188417263381270f, -0.646176012983316280f, 0.762692582035177980f, - -0.646761181046383920f, - 0.762196298134578900f, -0.647345968636512060f, 0.761699565853535380f, - -0.647930375409685340f, - 0.761202385484261780f, -0.648514401022112440f, 0.760704757319236920f, - -0.649098045130225950f, - 0.760206681651202420f, -0.649681307390683190f, 0.759708158773163440f, - -0.650264187460365850f, - 0.759209188978388070f, -0.650846684996380880f, 0.758709772560407390f, - -0.651428799656059820f, - 0.758209909813015280f, -0.652010531096959500f, 0.757709601030268080f, - -0.652591878976862440f, - 0.757208846506484570f, -0.653172842953776760f, 0.756707646536245670f, - -0.653753422685936060f, - 0.756206001414394540f, -0.654333617831800440f, 0.755703911436035880f, - -0.654913428050056030f, - 0.755201376896536550f, -0.655492852999615350f, 0.754698398091524500f, - -0.656071892339617600f, - 0.754194975316889170f, -0.656650545729428940f, 0.753691108868781210f, - -0.657228812828642540f, - 0.753186799043612520f, -0.657806693297078640f, 0.752682046138055340f, - -0.658384186794785050f, - 0.752176850449042810f, -0.658961292982037320f, 0.751671212273768430f, - -0.659538011519338660f, - 0.751165131909686480f, -0.660114342067420480f, 0.750658609654510700f, - -0.660690284287242300f, - 0.750151645806215070f, -0.661265837839992270f, 0.749644240663033480f, - -0.661841002387086870f, - 0.749136394523459370f, -0.662415777590171780f, 0.748628107686245440f, - -0.662990163111121470f, - 0.748119380450403600f, -0.663564158612039770f, 0.747610213115205150f, - -0.664137763755260010f, - 0.747100605980180130f, -0.664710978203344790f, 0.746590559345117310f, - -0.665283801619087180f, - 0.746080073510063780f, -0.665856233665509720f, 0.745569148775325430f, - -0.666428274005865240f, - 0.745057785441466060f, -0.666999922303637470f, 0.744545983809307370f, - -0.667571178222540310f, - 0.744033744179929290f, -0.668142041426518450f, 0.743521066854669120f, - -0.668712511579747980f, - 0.743007952135121720f, -0.669282588346636010f, 0.742494400323139180f, - -0.669852271391821020f, - 0.741980411720831070f, -0.670421560380173090f, 0.741465986630563290f, - -0.670990454976794220f, - 0.740951125354959110f, -0.671558954847018330f, 0.740435828196898020f, - -0.672127059656411730f, - 0.739920095459516200f, -0.672694769070772860f, 0.739403927446205760f, - -0.673262082756132970f, - 0.738887324460615110f, -0.673829000378756040f, 0.738370286806648620f, - -0.674395521605139050f, - 0.737852814788465980f, -0.674961646102011930f, 0.737334908710482910f, - -0.675527373536338520f, - 0.736816568877369900f, -0.676092703575315920f, 0.736297795594053170f, - -0.676657635886374950f, - 0.735778589165713590f, -0.677222170137180330f, 0.735258949897786840f, - -0.677786305995631500f, - 0.734738878095963500f, -0.678350043129861470f, 0.734218374066188280f, - -0.678913381208238410f, - 0.733697438114660370f, -0.679476319899364970f, 0.733176070547832740f, - -0.680038858872078930f, - 0.732654271672412820f, -0.680600997795453020f, 0.732132041795361290f, - -0.681162736338795430f, - 0.731609381223892630f, -0.681724074171649710f, 0.731086290265474340f, - -0.682285010963795570f, - 0.730562769227827590f, -0.682845546385248080f, 0.730038818418926260f, - -0.683405680106258680f, - 0.729514438146997010f, -0.683965411797315400f, 0.728989628720519420f, - -0.684524741129142300f, - 0.728464390448225200f, -0.685083667772700360f, 0.727938723639098620f, - -0.685642191399187470f, - 0.727412628602375770f, -0.686200311680038590f, 0.726886105647544970f, - -0.686758028286925890f, - 0.726359155084346010f, -0.687315340891759050f, 0.725831777222770370f, - -0.687872249166685550f, - 0.725303972373060770f, -0.688428752784090440f, 0.724775740845711280f, - -0.688984851416597040f, - 0.724247082951467000f, -0.689540544737066830f, 0.723717999001323500f, - -0.690095832418599950f, - 0.723188489306527460f, -0.690650714134534600f, 0.722658554178575610f, - -0.691205189558448450f, - 0.722128193929215350f, -0.691759258364157750f, 0.721597408870443770f, - -0.692312920225718220f, - 0.721066199314508110f, -0.692866174817424630f, 0.720534565573905270f, - -0.693419021813811760f, - 0.720002507961381650f, -0.693971460889654000f, 0.719470026789932990f, - -0.694523491719965520f, - 0.718937122372804490f, -0.695075113980000880f, 0.718403795023489830f, - -0.695626327345254870f, - 0.717870045055731710f, -0.696177131491462990f, 0.717335872783521730f, - -0.696727526094601200f, - 0.716801278521099540f, -0.697277510830886520f, 0.716266262582953120f, - -0.697827085376777290f, - 0.715730825283818590f, -0.698376249408972920f, 0.715194966938680120f, - -0.698925002604414150f, - 0.714658687862769090f, -0.699473344640283770f, 0.714121988371564820f, - -0.700021275194006250f, - 0.713584868780793640f, -0.700568793943248340f, 0.713047329406429340f, - -0.701115900565918660f, - 0.712509370564692320f, -0.701662594740168450f, 0.711970992572050100f, - -0.702208876144391870f, - 0.711432195745216430f, -0.702754744457225300f, 0.710892980401151680f, - -0.703300199357548730f, - 0.710353346857062420f, -0.703845240524484940f, 0.709813295430400840f, - -0.704389867637400410f, - 0.709272826438865690f, -0.704934080375904880f, 0.708731940200400650f, - -0.705477878419852100f, - 0.708190637033195400f, -0.706021261449339740f, 0.707648917255684350f, - -0.706564229144709510f, - 0.707106781186547570f, -0.707106781186547460f, 0.706564229144709620f, - -0.707648917255684350f, - 0.706021261449339740f, -0.708190637033195290f, 0.705477878419852210f, - -0.708731940200400650f, - 0.704934080375904990f, -0.709272826438865580f, 0.704389867637400410f, - -0.709813295430400840f, - 0.703845240524484940f, -0.710353346857062310f, 0.703300199357548730f, - -0.710892980401151680f, - 0.702754744457225300f, -0.711432195745216430f, 0.702208876144391870f, - -0.711970992572049990f, - 0.701662594740168570f, -0.712509370564692320f, 0.701115900565918660f, - -0.713047329406429230f, - 0.700568793943248450f, -0.713584868780793520f, 0.700021275194006360f, - -0.714121988371564710f, - 0.699473344640283770f, -0.714658687862768980f, 0.698925002604414150f, - -0.715194966938680010f, - 0.698376249408972920f, -0.715730825283818590f, 0.697827085376777290f, - -0.716266262582953120f, - 0.697277510830886630f, -0.716801278521099540f, 0.696727526094601200f, - -0.717335872783521730f, - 0.696177131491462990f, -0.717870045055731710f, 0.695626327345254870f, - -0.718403795023489720f, - 0.695075113980000880f, -0.718937122372804380f, 0.694523491719965520f, - -0.719470026789932990f, - 0.693971460889654000f, -0.720002507961381650f, 0.693419021813811880f, - -0.720534565573905270f, - 0.692866174817424740f, -0.721066199314508110f, 0.692312920225718220f, - -0.721597408870443660f, - 0.691759258364157750f, -0.722128193929215350f, 0.691205189558448450f, - -0.722658554178575610f, - 0.690650714134534720f, -0.723188489306527350f, 0.690095832418599950f, - -0.723717999001323390f, - 0.689540544737066940f, -0.724247082951466890f, 0.688984851416597150f, - -0.724775740845711280f, - 0.688428752784090550f, -0.725303972373060660f, 0.687872249166685550f, - -0.725831777222770370f, - 0.687315340891759160f, -0.726359155084346010f, 0.686758028286925890f, - -0.726886105647544970f, - 0.686200311680038700f, -0.727412628602375770f, 0.685642191399187470f, - -0.727938723639098620f, - 0.685083667772700360f, -0.728464390448225200f, 0.684524741129142300f, - -0.728989628720519310f, - 0.683965411797315510f, -0.729514438146996900f, 0.683405680106258790f, - -0.730038818418926150f, - 0.682845546385248080f, -0.730562769227827590f, 0.682285010963795570f, - -0.731086290265474230f, - 0.681724074171649820f, -0.731609381223892520f, 0.681162736338795430f, - -0.732132041795361290f, - 0.680600997795453130f, -0.732654271672412820f, 0.680038858872079040f, - -0.733176070547832740f, - 0.679476319899365080f, -0.733697438114660260f, 0.678913381208238410f, - -0.734218374066188170f, - 0.678350043129861580f, -0.734738878095963390f, 0.677786305995631500f, - -0.735258949897786730f, - 0.677222170137180450f, -0.735778589165713480f, 0.676657635886374950f, - -0.736297795594053060f, - 0.676092703575316030f, -0.736816568877369790f, 0.675527373536338630f, - -0.737334908710482790f, - 0.674961646102012040f, -0.737852814788465980f, 0.674395521605139050f, - -0.738370286806648510f, - 0.673829000378756150f, -0.738887324460615110f, 0.673262082756132970f, - -0.739403927446205760f, - 0.672694769070772970f, -0.739920095459516090f, 0.672127059656411840f, - -0.740435828196898020f, - 0.671558954847018330f, -0.740951125354959110f, 0.670990454976794220f, - -0.741465986630563290f, - 0.670421560380173090f, -0.741980411720830960f, 0.669852271391821130f, - -0.742494400323139180f, - 0.669282588346636010f, -0.743007952135121720f, 0.668712511579748090f, - -0.743521066854669120f, - 0.668142041426518560f, -0.744033744179929180f, 0.667571178222540310f, - -0.744545983809307250f, - 0.666999922303637470f, -0.745057785441465950f, 0.666428274005865350f, - -0.745569148775325430f, - 0.665856233665509720f, -0.746080073510063780f, 0.665283801619087180f, - -0.746590559345117310f, - 0.664710978203344900f, -0.747100605980180130f, 0.664137763755260010f, - -0.747610213115205150f, - 0.663564158612039880f, -0.748119380450403490f, 0.662990163111121470f, - -0.748628107686245330f, - 0.662415777590171780f, -0.749136394523459260f, 0.661841002387086870f, - -0.749644240663033480f, - 0.661265837839992270f, -0.750151645806214960f, 0.660690284287242300f, - -0.750658609654510590f, - 0.660114342067420480f, -0.751165131909686370f, 0.659538011519338770f, - -0.751671212273768430f, - 0.658961292982037320f, -0.752176850449042700f, 0.658384186794785050f, - -0.752682046138055230f, - 0.657806693297078640f, -0.753186799043612410f, 0.657228812828642650f, - -0.753691108868781210f, - 0.656650545729429050f, -0.754194975316889170f, 0.656071892339617710f, - -0.754698398091524390f, - 0.655492852999615460f, -0.755201376896536550f, 0.654913428050056150f, - -0.755703911436035880f, - 0.654333617831800550f, -0.756206001414394540f, 0.653753422685936170f, - -0.756707646536245670f, - 0.653172842953776760f, -0.757208846506484460f, 0.652591878976862550f, - -0.757709601030268080f, - 0.652010531096959500f, -0.758209909813015280f, 0.651428799656059820f, - -0.758709772560407390f, - 0.650846684996380990f, -0.759209188978387960f, 0.650264187460365960f, - -0.759708158773163440f, - 0.649681307390683190f, -0.760206681651202420f, 0.649098045130226060f, - -0.760704757319236920f, - 0.648514401022112550f, -0.761202385484261780f, 0.647930375409685460f, - -0.761699565853535270f, - 0.647345968636512060f, -0.762196298134578900f, 0.646761181046383920f, - -0.762692582035177870f, - 0.646176012983316390f, -0.763188417263381270f, 0.645590464791548800f, - -0.763683803527501870f, - 0.645004536815544040f, -0.764178740536116670f, 0.644418229399988380f, - -0.764673227998067140f, - 0.643831542889791500f, -0.765167265622458960f, 0.643244477630085850f, - -0.765660853118662390f, - 0.642657033966226860f, -0.766153990196312810f, 0.642069212243792540f, - -0.766646676565310380f, - 0.641481012808583160f, -0.767138911935820400f, 0.640892436006621380f, - -0.767630696018273270f, - 0.640303482184151670f, -0.768122028523365310f, 0.639714151687640450f, - -0.768612909162058270f, - 0.639124444863775730f, -0.769103337645579590f, 0.638534362059466790f, - -0.769593313685422940f, - 0.637943903621844170f, -0.770082836993347900f, 0.637353069898259130f, - -0.770571907281380700f, - 0.636761861236284200f, -0.771060524261813710f, 0.636170277983712170f, - -0.771548687647206300f, - 0.635578320488556230f, -0.772036397150384410f, 0.634985989099049460f, - -0.772523652484441330f, - 0.634393284163645490f, -0.773010453362736990f, 0.633800206031017280f, - -0.773496799498899050f, - 0.633206755050057190f, -0.773982690606822790f, 0.632612931569877520f, - -0.774468126400670860f, - 0.632018735939809060f, -0.774953106594873820f, 0.631424168509401860f, - -0.775437630904130430f, - 0.630829229628424470f, -0.775921699043407580f, 0.630233919646864480f, - -0.776405310727940390f, - 0.629638238914927100f, -0.776888465673232440f, 0.629042187783036000f, - -0.777371163595056200f, - 0.628445766601832710f, -0.777853404209453040f, 0.627848975722176570f, - -0.778335187232733090f, - 0.627251815495144190f, -0.778816512381475870f, 0.626654286272029460f, - -0.779297379372530300f, - 0.626056388404343520f, -0.779777787923014440f, 0.625458122243814360f, - -0.780257737750316590f, - 0.624859488142386450f, -0.780737228572094380f, 0.624260486452220650f, - -0.781216260106276090f, - 0.623661117525694640f, -0.781694832071059390f, 0.623061381715401370f, - -0.782172944184912900f, - 0.622461279374150080f, -0.782650596166575730f, 0.621860810854965360f, - -0.783127787735057310f, - 0.621259976511087660f, -0.783604518609638200f, 0.620658776695972140f, - -0.784080788509869950f, - 0.620057211763289210f, -0.784556597155575240f, 0.619455282066924020f, - -0.785031944266848080f, - 0.618852987960976320f, -0.785506829564053930f, 0.618250329799760250f, - -0.785981252767830150f, - 0.617647307937803980f, -0.786455213599085770f, 0.617043922729849760f, - -0.786928711779001700f, - 0.616440174530853650f, -0.787401747029031320f, 0.615836063695985090f, - -0.787874319070900110f, - 0.615231590580626820f, -0.788346427626606230f, 0.614626755540375050f, - -0.788818072418420170f, - 0.614021558931038490f, -0.789289253168885650f, 0.613416001108638590f, - -0.789759969600819070f, - 0.612810082429409710f, -0.790230221437310030f, 0.612203803249798060f, - -0.790700008401721610f, - 0.611597163926462020f, -0.791169330217690090f, 0.610990164816271770f, - -0.791638186609125770f, - 0.610382806276309480f, -0.792106577300212390f, 0.609775088663868430f, - -0.792574502015407580f, - 0.609167012336453210f, -0.793041960479443640f, 0.608558577651779450f, - -0.793508952417326660f, - 0.607949784967773740f, -0.793975477554337170f, 0.607340634642572930f, - -0.794441535616030590f, - 0.606731127034524480f, -0.794907126328237010f, 0.606121262502186230f, - -0.795372249417061190f, - 0.605511041404325550f, -0.795836904608883460f, 0.604900464099919930f, - -0.796301091630359110f, - 0.604289530948156070f, -0.796764810208418720f, 0.603678242308430370f, - -0.797228060070268700f, - 0.603066598540348280f, -0.797690840943391040f, 0.602454600003723860f, - -0.798153152555543750f, - 0.601842247058580030f, -0.798614994634760820f, 0.601229540065148620f, - -0.799076366909352350f, - 0.600616479383868970f, -0.799537269107905010f, 0.600003065375389060f, - -0.799997700959281910f, - 0.599389298400564540f, -0.800457662192622710f, 0.598775178820458720f, - -0.800917152537344300f, - 0.598160706996342380f, -0.801376171723140130f, 0.597545883289693270f, - -0.801834719479981310f, - 0.596930708062196500f, -0.802292795538115720f, 0.596315181675743820f, - -0.802750399628069160f, - 0.595699304492433470f, -0.803207531480644830f, 0.595083076874569960f, - -0.803664190826924090f, - 0.594466499184664540f, -0.804120377398265700f, 0.593849571785433630f, - -0.804576090926307000f, - 0.593232295039799800f, -0.805031331142963660f, 0.592614669310891130f, - -0.805486097780429120f, - 0.591996694962040990f, -0.805940390571176280f, 0.591378372356787580f, - -0.806394209247956240f, - 0.590759701858874280f, -0.806847553543799220f, 0.590140683832248940f, - -0.807300423192014450f, - 0.589521318641063940f, -0.807752817926190360f, 0.588901606649675840f, - -0.808204737480194720f, - 0.588281548222645330f, -0.808656181588174980f, 0.587661143724736770f, - -0.809107149984558130f, - 0.587040393520918080f, -0.809557642404051260f, 0.586419297976360500f, - -0.810007658581641140f, - 0.585797857456438860f, -0.810457198252594770f, 0.585176072326730410f, - -0.810906261152459670f, - 0.584553942953015330f, -0.811354847017063730f, 0.583931469701276300f, - -0.811802955582515360f, - 0.583308652937698290f, -0.812250586585203880f, 0.582685493028668460f, - -0.812697739761799490f, - 0.582061990340775550f, -0.813144414849253590f, 0.581438145240810280f, - -0.813590611584798510f, - 0.580813958095764530f, -0.814036329705948300f, 0.580189429272831680f, - -0.814481568950498610f, - 0.579564559139405740f, -0.814926329056526620f, 0.578939348063081890f, - -0.815370609762391290f, - 0.578313796411655590f, -0.815814410806733780f, 0.577687904553122800f, - -0.816257731928477390f, - 0.577061672855679550f, -0.816700572866827850f, 0.576435101687721830f, - -0.817142933361272970f, - 0.575808191417845340f, -0.817584813151583710f, 0.575180942414845190f, - -0.818026211977813440f, - 0.574553355047715760f, -0.818467129580298660f, 0.573925429685650750f, - -0.818907565699658950f, - 0.573297166698042320f, -0.819347520076796900f, 0.572668566454481160f, - -0.819786992452898990f, - 0.572039629324757050f, -0.820225982569434690f, 0.571410355678857340f, - -0.820664490168157460f, - 0.570780745886967370f, -0.821102514991104650f, 0.570150800319470300f, - -0.821540056780597610f, - 0.569520519346947250f, -0.821977115279241550f, 0.568889903340175970f, - -0.822413690229926390f, - 0.568258952670131490f, -0.822849781375826320f, 0.567627667707986230f, - -0.823285388460400110f, - 0.566996048825108680f, -0.823720511227391320f, 0.566364096393063950f, - -0.824155149420828570f, - 0.565731810783613230f, -0.824589302785025290f, 0.565099192368714090f, - -0.825022971064580220f, - 0.564466241520519500f, -0.825456154004377440f, 0.563832958611378170f, - -0.825888851349586780f, - 0.563199344013834090f, -0.826321062845663420f, 0.562565398100626560f, - -0.826752788238348520f, - 0.561931121244689470f, -0.827184027273669020f, 0.561296513819151470f, - -0.827614779697938400f, - 0.560661576197336030f, -0.828045045257755800f, 0.560026308752760380f, - -0.828474823700007130f, - 0.559390711859136140f, -0.828904114771864870f, 0.558754785890368310f, - -0.829332918220788250f, - 0.558118531220556100f, -0.829761233794523050f, 0.557481948223991660f, - -0.830189061241102370f, - 0.556845037275160100f, -0.830616400308846200f, 0.556207798748739930f, - -0.831043250746362320f, - 0.555570233019602290f, -0.831469612302545240f, 0.554932340462810370f, - -0.831895484726577590f, - 0.554294121453620110f, -0.832320867767929680f, 0.553655576367479310f, - -0.832745761176359460f, - 0.553016705580027580f, -0.833170164701913190f, 0.552377509467096070f, - -0.833594078094925140f, - 0.551737988404707450f, -0.834017501106018130f, 0.551098142769075430f, - -0.834440433486103190f, - 0.550457972936604810f, -0.834862874986380010f, 0.549817479283891020f, - -0.835284825358337370f, - 0.549176662187719770f, -0.835706284353752600f, 0.548535522025067390f, - -0.836127251724692160f, - 0.547894059173100190f, -0.836547727223511890f, 0.547252274009174090f, - -0.836967710602857020f, - 0.546610166910834860f, -0.837387201615661940f, 0.545967738255817680f, - -0.837806200015150940f, - 0.545324988422046460f, -0.838224705554837970f, 0.544681917787634530f, - -0.838642717988527300f, - 0.544038526730883930f, -0.839060237070312630f, 0.543394815630284800f, - -0.839477262554578550f, - 0.542750784864516000f, -0.839893794195999410f, 0.542106434812444030f, - -0.840309831749540770f, - 0.541461765853123560f, -0.840725374970458070f, 0.540816778365796670f, - -0.841140423614298080f, - 0.540171472729892970f, -0.841554977436898330f, 0.539525849325029010f, - -0.841969036194387680f, - 0.538879908531008420f, -0.842382599643185960f, 0.538233650727821700f, - -0.842795667540004120f, - 0.537587076295645510f, -0.843208239641845440f, 0.536940185614843020f, - -0.843620315706004040f, - 0.536292979065963180f, -0.844031895490066410f, 0.535645457029741090f, - -0.844442978751910660f, - 0.534997619887097260f, -0.844853565249707010f, 0.534349468019137520f, - -0.845263654741918220f, - 0.533701001807152960f, -0.845673246987299070f, 0.533052221632619670f, - -0.846082341744896940f, - 0.532403127877198010f, -0.846490938774052020f, 0.531753720922733320f, - -0.846899037834397350f, - 0.531104001151255000f, -0.847306638685858320f, 0.530453968944976320f, - -0.847713741088654270f, - 0.529803624686294830f, -0.848120344803297120f, 0.529152968757790720f, - -0.848526449590592650f, - 0.528502001542228480f, -0.848932055211639610f, 0.527850723422555460f, - -0.849337161427830670f, - 0.527199134781901390f, -0.849741768000852440f, 0.526547236003579330f, - -0.850145874692685210f, - 0.525895027471084740f, -0.850549481265603370f, 0.525242509568094710f, - -0.850952587482175730f, - 0.524589682678468840f, -0.851355193105265200f, 0.523936547186248600f, - -0.851757297898029120f, - 0.523283103475656430f, -0.852158901623919830f, 0.522629351931096720f, - -0.852560004046683970f, - 0.521975292937154390f, -0.852960604930363630f, 0.521320926878595550f, - -0.853360704039295430f, - 0.520666254140367270f, -0.853760301138111300f, 0.520011275107596040f, - -0.854159395991738730f, - 0.519355990165589530f, -0.854557988365400530f, 0.518700399699835170f, - -0.854956078024614820f, - 0.518044504095999340f, -0.855353664735196030f, 0.517388303739929060f, - -0.855750748263253920f, - 0.516731799017649980f, -0.856147328375194470f, 0.516074990315366630f, - -0.856543404837719960f, - 0.515417878019463150f, -0.856938977417828650f, 0.514760462516501200f, - -0.857334045882815590f, - 0.514102744193221660f, -0.857728610000272120f, 0.513444723436543570f, - -0.858122669538086020f, - 0.512786400633563070f, -0.858516224264442740f, 0.512127776171554690f, - -0.858909273947823900f, - 0.511468850437970520f, -0.859301818357008360f, 0.510809623820439040f, - -0.859693857261072610f, - 0.510150096706766700f, -0.860085390429390140f, 0.509490269484936360f, - -0.860476417631632070f, - 0.508830142543106990f, -0.860866938637767310f, 0.508169716269614710f, - -0.861256953218062060f, - 0.507508991052970870f, -0.861646461143081300f, 0.506847967281863320f, - -0.862035462183687210f, - 0.506186645345155450f, -0.862423956111040500f, 0.505525025631885510f, - -0.862811942696600330f, - 0.504863108531267480f, -0.863199421712124160f, 0.504200894432690560f, - -0.863586392929667990f, - 0.503538383725717580f, -0.863972856121586700f, 0.502875576800086880f, - -0.864358811060534030f, - 0.502212474045710900f, -0.864744257519462380f, 0.501549075852675390f, - -0.865129195271623690f, - 0.500885382611240940f, -0.865513624090568980f, 0.500221394711840680f, - -0.865897543750148820f, - 0.499557112545081890f, -0.866280954024512990f, 0.498892536501744750f, - -0.866663854688111020f, - 0.498227666972781870f, -0.867046245515692650f, 0.497562504349319090f, - -0.867428126282306920f, - 0.496897049022654640f, -0.867809496763303210f, 0.496231301384258310f, - -0.868190356734331310f, - 0.495565261825772490f, -0.868570705971340900f, 0.494898930739011310f, - -0.868950544250582380f, - 0.494232308515959730f, -0.869329871348606730f, 0.493565395548774880f, - -0.869708687042265560f, - 0.492898192229784090f, -0.870086991108711350f, 0.492230698951486080f, - -0.870464783325397670f, - 0.491562916106550060f, -0.870842063470078860f, 0.490894844087815140f, - -0.871218831320810900f, - 0.490226483288291100f, -0.871595086655951090f, 0.489557834101157550f, - -0.871970829254157700f, - 0.488888896919763230f, -0.872346058894391540f, 0.488219672137626740f, - -0.872720775355914300f, - 0.487550160148436050f, -0.873094978418290090f, 0.486880361346047400f, - -0.873468667861384880f, - 0.486210276124486530f, -0.873841843465366750f, 0.485539904877947020f, - -0.874214505010706300f, - 0.484869248000791120f, -0.874586652278176110f, 0.484198305887549140f, - -0.874958285048851540f, - 0.483527078932918740f, -0.875329403104110780f, 0.482855567531765670f, - -0.875700006225634600f, - 0.482183772079122830f, -0.876070094195406600f, 0.481511692970189920f, - -0.876439666795713610f, - 0.480839330600333900f, -0.876808723809145760f, 0.480166685365088440f, - -0.877177265018595940f, - 0.479493757660153010f, -0.877545290207261240f, 0.478820547881394050f, - -0.877912799158641730f, - 0.478147056424843120f, -0.878279791656541460f, 0.477473283686698060f, - -0.878646267485068130f, - 0.476799230063322250f, -0.879012226428633410f, 0.476124895951243630f, - -0.879377668271953180f, - 0.475450281747155870f, -0.879742592800047410f, 0.474775387847917230f, - -0.880106999798240360f, - 0.474100214650550020f, -0.880470889052160750f, 0.473424762552241530f, - -0.880834260347742040f, - 0.472749031950342900f, -0.881197113471221980f, 0.472073023242368660f, - -0.881559448209143780f, - 0.471396736825997810f, -0.881921264348354940f, 0.470720173099071710f, - -0.882282561676008600f, - 0.470043332459595620f, -0.882643339979562790f, 0.469366215305737630f, - -0.883003599046780720f, - 0.468688822035827960f, -0.883363338665731580f, 0.468011153048359830f, - -0.883722558624789660f, - 0.467333208741988530f, -0.884081258712634990f, 0.466654989515530970f, - -0.884439438718253700f, - 0.465976495767966130f, -0.884797098430937790f, 0.465297727898434650f, - -0.885154237640285110f, - 0.464618686306237820f, -0.885510856136199950f, 0.463939371390838460f, - -0.885866953708892790f, - 0.463259783551860260f, -0.886222530148880640f, 0.462579923189086810f, - -0.886577585246987040f, - 0.461899790702462840f, -0.886932118794342080f, 0.461219386492092430f, - -0.887286130582383150f, - 0.460538710958240010f, -0.887639620402853930f, 0.459857764501329650f, - -0.887992588047805560f, - 0.459176547521944150f, -0.888345033309596240f, 0.458495060420826220f, - -0.888696955980891710f, - 0.457813303598877290f, -0.889048355854664570f, 0.457131277457156980f, - -0.889399232724195520f, - 0.456448982396883860f, -0.889749586383072890f, 0.455766418819434750f, - -0.890099416625192210f, - 0.455083587126343840f, -0.890448723244757880f, 0.454400487719303750f, - -0.890797506036281490f, - 0.453717121000163930f, -0.891145764794583180f, 0.453033487370931580f, - -0.891493499314791380f, - 0.452349587233771000f, -0.891840709392342720f, 0.451665420991002540f, - -0.892187394822982480f, - 0.450980989045103810f, -0.892533555402764690f, 0.450296291798708730f, - -0.892879190928051680f, - 0.449611329654606600f, -0.893224301195515320f, 0.448926103015743260f, - -0.893568886002136020f, - 0.448240612285220000f, -0.893912945145203250f, 0.447554857866293010f, - -0.894256478422316040f, - 0.446868840162374330f, -0.894599485631382580f, 0.446182559577030120f, - -0.894941966570620750f, - 0.445496016513981740f, -0.895283921038557580f, 0.444809211377105000f, - -0.895625348834030000f, - 0.444122144570429260f, -0.895966249756185110f, 0.443434816498138430f, - -0.896306623604479660f, - 0.442747227564570130f, -0.896646470178680150f, 0.442059378174214760f, - -0.896985789278863970f, - 0.441371268731716620f, -0.897324580705418320f, 0.440682899641873020f, - -0.897662844259040750f, - 0.439994271309633260f, -0.898000579740739880f, 0.439305384140100060f, - -0.898337786951834190f, - 0.438616238538527710f, -0.898674465693953820f, 0.437926834910322860f, - -0.899010615769039070f, - 0.437237173661044200f, -0.899346236979341460f, 0.436547255196401250f, - -0.899681329127423930f, - 0.435857079922255470f, -0.900015892016160280f, 0.435166648244619370f, - -0.900349925448735600f, - 0.434475960569655710f, -0.900683429228646860f, 0.433785017303678520f, - -0.901016403159702330f, - 0.433093818853152010f, -0.901348847046022030f, 0.432402365624690140f, - -0.901680760692037730f, - 0.431710658025057370f, -0.902012143902493070f, 0.431018696461167080f, - -0.902342996482444200f, - 0.430326481340082610f, -0.902673318237258830f, 0.429634013069016500f, - -0.903003108972617040f, - 0.428941292055329550f, -0.903332368494511820f, 0.428248318706531910f, - -0.903661096609247980f, - 0.427555093430282200f, -0.903989293123443340f, 0.426861616634386490f, - -0.904316957844028320f, - 0.426167888726799620f, -0.904644090578246240f, 0.425473910115623910f, - -0.904970691133653250f, - 0.424779681209108810f, -0.905296759318118820f, 0.424085202415651670f, - -0.905622294939825160f, - 0.423390474143796100f, -0.905947297807268460f, 0.422695496802232950f, - -0.906271767729257660f, - 0.422000270799799790f, -0.906595704514915330f, 0.421304796545479700f, - -0.906919107973678030f, - 0.420609074448402510f, -0.907241977915295930f, 0.419913104917843730f, - -0.907564314149832520f, - 0.419216888363223960f, -0.907886116487666150f, 0.418520425194109700f, - -0.908207384739488700f, - 0.417823715820212380f, -0.908528118716306120f, 0.417126760651387870f, - -0.908848318229439120f, - 0.416429560097637320f, -0.909167983090522270f, 0.415732114569105420f, - -0.909487113111505430f, - 0.415034424476081630f, -0.909805708104652220f, 0.414336490228999210f, - -0.910123767882541570f, - 0.413638312238434560f, -0.910441292258067140f, 0.412939890915108020f, - -0.910758281044437570f, - 0.412241226669883000f, -0.911074734055176250f, 0.411542319913765280f, - -0.911390651104122320f, - 0.410843171057903910f, -0.911706032005429880f, 0.410143780513590350f, - -0.912020876573568230f, - 0.409444148692257590f, -0.912335184623322750f, 0.408744276005481520f, - -0.912648955969793900f, - 0.408044162864978740f, -0.912962190428398100f, 0.407343809682607970f, - -0.913274887814867760f, - 0.406643216870369140f, -0.913587047945250810f, 0.405942384840402570f, - -0.913898670635911680f, - 0.405241314004989860f, -0.914209755703530690f, 0.404540004776553110f, - -0.914520302965104450f, - 0.403838457567654130f, -0.914830312237946090f, 0.403136672790995240f, - -0.915139783339685260f, - 0.402434650859418540f, -0.915448716088267830f, 0.401732392185905010f, - -0.915757110301956720f, - 0.401029897183575790f, -0.916064965799331610f, 0.400327166265690150f, - -0.916372282399289140f, - 0.399624199845646790f, -0.916679059921042700f, 0.398920998336983020f, - -0.916985298184122890f, - 0.398217562153373620f, -0.917290997008377910f, 0.397513891708632330f, - -0.917596156213972950f, - 0.396809987416710420f, -0.917900775621390390f, 0.396105849691696320f, - -0.918204855051430900f, - 0.395401478947816300f, -0.918508394325212250f, 0.394696875599433670f, - -0.918811393264169940f, - 0.393992040061048100f, -0.919113851690057770f, 0.393286972747296570f, - -0.919415769424946960f, - 0.392581674072951530f, -0.919717146291227360f, 0.391876144452922350f, - -0.920017982111606570f, - 0.391170384302253980f, -0.920318276709110480f, 0.390464394036126650f, - -0.920618029907083860f, - 0.389758174069856410f, -0.920917241529189520f, 0.389051724818894500f, - -0.921215911399408730f, - 0.388345046698826300f, -0.921514039342041900f, 0.387638140125372680f, - -0.921811625181708120f, - 0.386931005514388690f, -0.922108668743345070f, 0.386223643281862980f, - -0.922405169852209880f, - 0.385516053843919020f, -0.922701128333878520f, 0.384808237616812930f, - -0.922996544014246250f, - 0.384100195016935040f, -0.923291416719527640f, 0.383391926460808770f, - -0.923585746276256560f, - 0.382683432365089840f, -0.923879532511286740f, 0.381974713146567220f, - -0.924172775251791200f, - 0.381265769222162490f, -0.924465474325262600f, 0.380556601008928570f, - -0.924757629559513910f, - 0.379847208924051110f, -0.925049240782677580f, 0.379137593384847430f, - -0.925340307823206200f, - 0.378427754808765620f, -0.925630830509872720f, 0.377717693613385810f, - -0.925920808671769960f, - 0.377007410216418310f, -0.926210242138311270f, 0.376296905035704790f, - -0.926499130739230510f, - 0.375586178489217330f, -0.926787474304581750f, 0.374875230995057600f, - -0.927075272664740100f, - 0.374164062971457990f, -0.927362525650401110f, 0.373452674836780410f, - -0.927649233092581180f, - 0.372741067009515810f, -0.927935394822617890f, 0.372029239908284960f, - -0.928221010672169440f, - 0.371317193951837600f, -0.928506080473215480f, 0.370604929559051670f, - -0.928790604058057020f, - 0.369892447148934270f, -0.929074581259315750f, 0.369179747140620070f, - -0.929358011909935500f, - 0.368466829953372320f, -0.929640895843181330f, 0.367753696006582090f, - -0.929923232892639560f, - 0.367040345719767240f, -0.930205022892219070f, 0.366326779512573590f, - -0.930486265676149780f, - 0.365612997804773960f, -0.930766961078983710f, 0.364899001016267380f, - -0.931047108935595170f, - 0.364184789567079840f, -0.931326709081180430f, 0.363470363877363870f, - -0.931605761351257830f, - 0.362755724367397230f, -0.931884265581668150f, 0.362040871457584350f, - -0.932162221608574320f, - 0.361325805568454340f, -0.932439629268462360f, 0.360610527120662270f, - -0.932716488398140250f, - 0.359895036534988280f, -0.932992798834738850f, 0.359179334232336560f, - -0.933268560415712050f, - 0.358463420633736540f, -0.933543772978836170f, 0.357747296160342010f, - -0.933818436362210960f, - 0.357030961233430030f, -0.934092550404258870f, 0.356314416274402360f, - -0.934366114943725900f, - 0.355597661704783960f, -0.934639129819680780f, 0.354880697946222790f, - -0.934911594871516090f, - 0.354163525420490510f, -0.935183509938947500f, 0.353446144549480870f, - -0.935454874862014620f, - 0.352728555755210730f, -0.935725689481080370f, 0.352010759459819240f, - -0.935995953636831300f, - 0.351292756085567150f, -0.936265667170278260f, 0.350574546054837570f, - -0.936534829922755500f, - 0.349856129790135030f, -0.936803441735921560f, 0.349137507714085030f, - -0.937071502451759190f, - 0.348418680249434510f, -0.937339011912574960f, 0.347699647819051490f, - -0.937605969960999990f, - 0.346980410845923680f, -0.937872376439989890f, 0.346260969753160170f, - -0.938138231192824360f, - 0.345541324963989150f, -0.938403534063108060f, 0.344821476901759290f, - -0.938668284894770170f, - 0.344101425989938980f, -0.938932483532064490f, 0.343381172652115100f, - -0.939196129819569900f, - 0.342660717311994380f, -0.939459223602189920f, 0.341940060393402300f, - -0.939721764725153340f, - 0.341219202320282410f, -0.939983753034013940f, 0.340498143516697100f, - -0.940245188374650880f, - 0.339776884406826960f, -0.940506070593268300f, 0.339055425414969640f, - -0.940766399536396070f, - 0.338333766965541290f, -0.941026175050889260f, 0.337611909483074680f, - -0.941285396983928660f, - 0.336889853392220050f, -0.941544065183020810f, 0.336167599117744690f, - -0.941802179495997650f, - 0.335445147084531660f, -0.942059739771017310f, 0.334722497717581220f, - -0.942316745856563780f, - 0.333999651442009490f, -0.942573197601446870f, 0.333276608683047980f, - -0.942829094854802710f, - 0.332553369866044220f, -0.943084437466093490f, 0.331829935416461220f, - -0.943339225285107720f, - 0.331106305759876430f, -0.943593458161960390f, 0.330382481321982950f, - -0.943847135947092690f, - 0.329658462528587550f, -0.944100258491272660f, 0.328934249805612200f, - -0.944352825645594750f, - 0.328209843579092660f, -0.944604837261480260f, 0.327485244275178060f, - -0.944856293190677210f, - 0.326760452320131790f, -0.945107193285260610f, 0.326035468140330350f, - -0.945357537397632290f, - 0.325310292162262980f, -0.945607325380521280f, 0.324584924812532150f, - -0.945856557086983910f, - 0.323859366517852960f, -0.946105232370403340f, 0.323133617705052330f, - -0.946353351084490590f, - 0.322407678801070020f, -0.946600913083283530f, 0.321681550232956640f, - -0.946847918221148000f, - 0.320955232427875210f, -0.947094366352777220f, 0.320228725813100020f, - -0.947340257333191940f, - 0.319502030816015750f, -0.947585591017741090f, 0.318775147864118480f, - -0.947830367262101010f, - 0.318048077385015060f, -0.948074585922276230f, 0.317320819806421790f, - -0.948318246854599090f, - 0.316593375556165850f, -0.948561349915730270f, 0.315865745062184070f, - -0.948803894962658380f, - 0.315137928752522440f, -0.949045881852700560f, 0.314409927055336820f, - -0.949287310443502010f, - 0.313681740398891570f, -0.949528180593036670f, 0.312953369211560200f, - -0.949768492159606680f, - 0.312224813921825050f, -0.950008245001843000f, 0.311496074958275970f, - -0.950247438978705230f, - 0.310767152749611470f, -0.950486073949481700f, 0.310038047724638000f, - -0.950724149773789610f, - 0.309308760312268780f, -0.950961666311575080f, 0.308579290941525030f, - -0.951198623423113230f, - 0.307849640041534980f, -0.951435020969008340f, 0.307119808041533100f, - -0.951670858810193860f, - 0.306389795370861080f, -0.951906136807932230f, 0.305659602458966230f, - -0.952140854823815830f, - 0.304929229735402430f, -0.952375012719765880f, 0.304198677629829270f, - -0.952608610358033240f, - 0.303467946572011370f, -0.952841647601198720f, 0.302737036991819140f, - -0.953074124312172200f, - 0.302005949319228200f, -0.953306040354193750f, 0.301274683984318000f, - -0.953537395590833280f, - 0.300543241417273400f, -0.953768189885990330f, 0.299811622048383460f, - -0.953998423103894490f, - 0.299079826308040480f, -0.954228095109105670f, 0.298347854626741570f, - -0.954457205766513490f, - 0.297615707435086310f, -0.954685754941338340f, 0.296883385163778270f, - -0.954913742499130520f, - 0.296150888243623960f, -0.955141168305770670f, 0.295418217105532070f, - -0.955368032227470240f, - 0.294685372180514330f, -0.955594334130771110f, 0.293952353899684770f, - -0.955820073882545420f, - 0.293219162694258680f, -0.956045251349996410f, 0.292485798995553830f, - -0.956269866400658140f, - 0.291752263234989370f, -0.956493918902394990f, 0.291018555844085090f, - -0.956717408723403050f, - 0.290284677254462330f, -0.956940335732208940f, 0.289550627897843140f, - -0.957162699797670100f, - 0.288816408206049480f, -0.957384500788975860f, 0.288082018611004300f, - -0.957605738575646240f, - 0.287347459544729570f, -0.957826413027532910f, 0.286612731439347790f, - -0.958046524014818600f, - 0.285877834727080730f, -0.958266071408017670f, 0.285142769840248720f, - -0.958485055077976100f, - 0.284407537211271820f, -0.958703474895871600f, 0.283672137272668550f, - -0.958921330733213060f, - 0.282936570457055390f, -0.959138622461841890f, 0.282200837197147500f, - -0.959355349953930790f, - 0.281464937925758050f, -0.959571513081984520f, 0.280728873075797190f, - -0.959787111718839900f, - 0.279992643080273380f, -0.960002145737665850f, 0.279256248372291240f, - -0.960216615011963430f, - 0.278519689385053060f, -0.960430519415565790f, 0.277782966551857800f, - -0.960643858822638470f, - 0.277046080306099950f, -0.960856633107679660f, 0.276309031081271030f, - -0.961068842145519350f, - 0.275571819310958250f, -0.961280485811320640f, 0.274834445428843940f, - -0.961491563980579000f, - 0.274096909868706330f, -0.961702076529122540f, 0.273359213064418790f, - -0.961912023333112100f, - 0.272621355449948980f, -0.962121404269041580f, 0.271883337459359890f, - -0.962330219213737400f, - 0.271145159526808070f, -0.962538468044359160f, 0.270406822086544820f, - -0.962746150638399410f, - 0.269668325572915200f, -0.962953266873683880f, 0.268929670420357310f, - -0.963159816628371360f, - 0.268190857063403180f, -0.963365799780954050f, 0.267451885936677740f, - -0.963571216210257210f, - 0.266712757474898420f, -0.963776065795439840f, 0.265973472112875530f, - -0.963980348415994110f, - 0.265234030285511900f, -0.964184063951745720f, 0.264494432427801630f, - -0.964387212282854290f, - 0.263754678974831510f, -0.964589793289812650f, 0.263014770361779060f, - -0.964791806853447900f, - 0.262274707023913590f, -0.964993252854920320f, 0.261534489396595630f, - -0.965194131175724720f, - 0.260794117915275570f, -0.965394441697689400f, 0.260053593015495130f, - -0.965594184302976830f, - 0.259312915132886350f, -0.965793358874083570f, 0.258572084703170390f, - -0.965991965293840570f, - 0.257831102162158930f, -0.966190003445412620f, 0.257089967945753230f, - -0.966387473212298790f, - 0.256348682489942910f, -0.966584374478333120f, 0.255607246230807550f, - -0.966780707127683270f, - 0.254865659604514630f, -0.966976471044852070f, 0.254123923047320620f, - -0.967171666114676640f, - 0.253382036995570270f, -0.967366292222328510f, 0.252640001885695580f, - -0.967560349253314360f, - 0.251897818154216910f, -0.967753837093475510f, 0.251155486237742030f, - -0.967946755628987800f, - 0.250413006572965280f, -0.968139104746362330f, 0.249670379596668520f, - -0.968330884332445300f, - 0.248927605745720260f, -0.968522094274417270f, 0.248184685457074780f, - -0.968712734459794780f, - 0.247441619167773440f, -0.968902804776428870f, 0.246698407314942500f, - -0.969092305112506100f, - 0.245955050335794590f, -0.969281235356548530f, 0.245211548667627680f, - -0.969469595397412950f, - 0.244467902747824210f, -0.969657385124292450f, 0.243724113013852130f, - -0.969844604426714830f, - 0.242980179903263980f, -0.970031253194543970f, 0.242236103853696070f, - -0.970217331317979160f, - 0.241491885302869300f, -0.970402838687555500f, 0.240747524688588540f, - -0.970587775194143630f, - 0.240003022448741500f, -0.970772140728950350f, 0.239258379021300120f, - -0.970955935183517970f, - 0.238513594844318500f, -0.971139158449725090f, 0.237768670355934210f, - -0.971321810419786160f, - 0.237023605994367340f, -0.971503890986251780f, 0.236278402197919620f, - -0.971685400042008540f, - 0.235533059404975460f, -0.971866337480279400f, 0.234787578054001080f, - -0.972046703194623500f, - 0.234041958583543460f, -0.972226497078936270f, 0.233296201432231560f, - -0.972405719027449770f, - 0.232550307038775330f, -0.972584368934732210f, 0.231804275841964780f, - -0.972762446695688570f, - 0.231058108280671280f, -0.972939952205560070f, 0.230311804793845530f, - -0.973116885359925130f, - 0.229565365820518870f, -0.973293246054698250f, 0.228818791799802360f, - -0.973469034186130950f, - 0.228072083170885790f, -0.973644249650811870f, 0.227325240373038830f, - -0.973818892345666100f, - 0.226578263845610110f, -0.973992962167955830f, 0.225831154028026200f, - -0.974166459015280320f, - 0.225083911359792780f, -0.974339382785575860f, 0.224336536280493690f, - -0.974511733377115720f, - 0.223589029229790020f, -0.974683510688510670f, 0.222841390647421280f, - -0.974854714618708430f, - 0.222093620973203590f, -0.975025345066994120f, 0.221345720647030810f, - -0.975195401932990370f, - 0.220597690108873650f, -0.975364885116656870f, 0.219849529798778750f, - -0.975533794518291360f, - 0.219101240156869770f, -0.975702130038528570f, 0.218352821623346430f, - -0.975869891578341030f, - 0.217604274638483670f, -0.976037079039039020f, 0.216855599642632570f, - -0.976203692322270560f, - 0.216106797076219600f, -0.976369731330021140f, 0.215357867379745550f, - -0.976535195964614470f, - 0.214608810993786920f, -0.976700086128711840f, 0.213859628358993830f, - -0.976864401725312640f, - 0.213110319916091360f, -0.977028142657754390f, 0.212360886105878580f, - -0.977191308829712280f, - 0.211611327369227610f, -0.977353900145199960f, 0.210861644147084830f, - -0.977515916508569280f, - 0.210111836880469720f, -0.977677357824509930f, 0.209361906010474190f, - -0.977838223998050430f, - 0.208611851978263460f, -0.977998514934557140f, 0.207861675225075150f, - -0.978158230539735050f, - 0.207111376192218560f, -0.978317370719627650f, 0.206360955321075680f, - -0.978475935380616830f, - 0.205610413053099320f, -0.978633924429423100f, 0.204859749829814420f, - -0.978791337773105670f, - 0.204108966092817010f, -0.978948175319062200f, 0.203358062283773370f, - -0.979104436975029250f, - 0.202607038844421110f, -0.979260122649082020f, 0.201855896216568160f, - -0.979415232249634780f, - 0.201104634842091960f, -0.979569765685440520f, 0.200353255162940420f, - -0.979723722865591170f, - 0.199601757621131050f, -0.979877103699517640f, 0.198850142658750120f, - -0.980029908096989980f, - 0.198098410717953730f, -0.980182135968117320f, 0.197346562240966000f, - -0.980333787223347960f, - 0.196594597670080220f, -0.980484861773469380f, 0.195842517447657990f, - -0.980635359529608120f, - 0.195090322016128330f, -0.980785280403230430f, 0.194338011817988600f, - -0.980934624306141640f, - 0.193585587295803750f, -0.981083391150486590f, 0.192833048892205290f, - -0.981231580848749730f, - 0.192080397049892380f, -0.981379193313754560f, 0.191327632211630990f, - -0.981526228458664660f, - 0.190574754820252800f, -0.981672686196983110f, 0.189821765318656580f, - -0.981818566442552500f, - 0.189068664149806280f, -0.981963869109555240f, 0.188315451756732120f, - -0.982108594112513610f, - 0.187562128582529740f, -0.982252741366289370f, 0.186808695070359330f, - -0.982396310786084690f, - 0.186055151663446630f, -0.982539302287441240f, 0.185301498805082040f, - -0.982681715786240860f, - 0.184547736938619640f, -0.982823551198705240f, 0.183793866507478390f, - -0.982964808441396440f, - 0.183039887955141060f, -0.983105487431216290f, 0.182285801725153320f, - -0.983245588085407070f, - 0.181531608261125130f, -0.983385110321551180f, 0.180777308006728670f, - -0.983524054057571260f, - 0.180022901405699510f, -0.983662419211730250f, 0.179268388901835880f, - -0.983800205702631490f, - 0.178513770938997590f, -0.983937413449218920f, 0.177759047961107140f, - -0.984074042370776450f, - 0.177004220412148860f, -0.984210092386929030f, 0.176249288736167940f, - -0.984345563417641900f, - 0.175494253377271400f, -0.984480455383220930f, 0.174739114779627310f, - -0.984614768204312600f, - 0.173983873387463850f, -0.984748501801904210f, 0.173228529645070490f, - -0.984881656097323700f, - 0.172473083996796030f, -0.985014231012239840f, 0.171717536887049970f, - -0.985146226468662230f, - 0.170961888760301360f, -0.985277642388941220f, 0.170206140061078120f, - -0.985408478695768420f, - 0.169450291233967930f, -0.985538735312176060f, 0.168694342723617440f, - -0.985668412161537550f, - 0.167938294974731230f, -0.985797509167567370f, 0.167182148432072880f, - -0.985926026254321130f, - 0.166425903540464220f, -0.986053963346195440f, 0.165669560744784140f, - -0.986181320367928270f, - 0.164913120489970090f, -0.986308097244598670f, 0.164156583221015890f, - -0.986434293901627070f, - 0.163399949382973230f, -0.986559910264775410f, 0.162643219420950450f, - -0.986684946260146690f, - 0.161886393780111910f, -0.986809401814185420f, 0.161129472905678780f, - -0.986933276853677710f, - 0.160372457242928400f, -0.987056571305750970f, 0.159615347237193090f, - -0.987179285097874340f, - 0.158858143333861390f, -0.987301418157858430f, 0.158100845978377090f, - -0.987422970413855410f, - 0.157343455616238280f, -0.987543941794359230f, 0.156585972692998590f, - -0.987664332228205710f, - 0.155828397654265320f, -0.987784141644572180f, 0.155070730945700510f, - -0.987903369972977790f, - 0.154312973013020240f, -0.988022017143283530f, 0.153555124301993500f, - -0.988140083085692570f, - 0.152797185258443410f, -0.988257567730749460f, 0.152039156328246160f, - -0.988374471009341280f, - 0.151281037957330250f, -0.988490792852696590f, 0.150522830591677370f, - -0.988606533192386450f, - 0.149764534677321620f, -0.988721691960323780f, 0.149006150660348470f, - -0.988836269088763540f, - 0.148247678986896200f, -0.988950264510302990f, 0.147489120103153680f, - -0.989063678157881540f, - 0.146730474455361750f, -0.989176509964781010f, 0.145971742489812370f, - -0.989288759864625170f, - 0.145212924652847520f, -0.989400427791380380f, 0.144454021390860440f, - -0.989511513679355190f, - 0.143695033150294580f, -0.989622017463200780f, 0.142935960377642700f, - -0.989731939077910570f, - 0.142176803519448000f, -0.989841278458820530f, 0.141417563022303130f, - -0.989950035541608990f, - 0.140658239332849240f, -0.990058210262297120f, 0.139898832897777380f, - -0.990165802557248400f, - 0.139139344163826280f, -0.990272812363169110f, 0.138379773577783890f, - -0.990379239617108160f, - 0.137620121586486180f, -0.990485084256456980f, 0.136860388636816430f, - -0.990590346218950150f, - 0.136100575175706200f, -0.990695025442664630f, 0.135340681650134330f, - -0.990799121866020370f, - 0.134580708507126220f, -0.990902635427780010f, 0.133820656193754690f, - -0.991005566067049370f, - 0.133060525157139180f, -0.991107913723276780f, 0.132300315844444680f, - -0.991209678336254060f, - 0.131540028702883280f, -0.991310859846115440f, 0.130779664179711790f, - -0.991411458193338540f, - 0.130019222722233350f, -0.991511473318743900f, 0.129258704777796270f, - -0.991610905163495370f, - 0.128498110793793220f, -0.991709753669099530f, 0.127737441217662280f, - -0.991808018777406430f, - 0.126976696496885980f, -0.991905700430609330f, 0.126215877078990400f, - -0.992002798571244520f, - 0.125454983411546210f, -0.992099313142191800f, 0.124694015942167770f, - -0.992195244086673920f, - 0.123932975118512200f, -0.992290591348257370f, 0.123171861388280650f, - -0.992385354870851670f, - 0.122410675199216280f, -0.992479534598709970f, 0.121649416999105540f, - -0.992573130476428810f, - 0.120888087235777220f, -0.992666142448948020f, 0.120126686357101580f, - -0.992758570461551140f, - 0.119365214810991350f, -0.992850414459865100f, 0.118603673045400840f, - -0.992941674389860470f, - 0.117842061508325020f, -0.993032350197851410f, 0.117080380647800550f, - -0.993122441830495580f, - 0.116318630911904880f, -0.993211949234794500f, 0.115556812748755290f, - -0.993300872358093280f, - 0.114794926606510250f, -0.993389211148080650f, 0.114032972933367300f, - -0.993476965552789190f, - 0.113270952177564360f, -0.993564135520595300f, 0.112508864787378830f, - -0.993650721000219120f, - 0.111746711211126660f, -0.993736721940724600f, 0.110984491897163380f, - -0.993822138291519660f, - 0.110222207293883180f, -0.993906970002356060f, 0.109459857849718030f, - -0.993991217023329380f, - 0.108697444013138670f, -0.994074879304879370f, 0.107934966232653760f, - -0.994157956797789730f, - 0.107172424956808870f, -0.994240449453187900f, 0.106409820634187840f, - -0.994322357222545810f, - 0.105647153713410700f, -0.994403680057679100f, 0.104884424643134970f, - -0.994484417910747600f, - 0.104121633872054730f, -0.994564570734255420f, 0.103358781848899700f, - -0.994644138481050710f, - 0.102595869022436280f, -0.994723121104325700f, 0.101832895841466670f, - -0.994801518557617110f, - 0.101069862754827880f, -0.994879330794805620f, 0.100306770211392820f, - -0.994956557770116380f, - 0.099543618660069444f, -0.995033199438118630f, 0.098780408549799664f, - -0.995109255753726110f, - 0.098017140329560770f, -0.995184726672196820f, 0.097253814448363354f, - -0.995259612149133390f, - 0.096490431355252607f, -0.995333912140482280f, 0.095726991499307315f, - -0.995407626602534900f, - 0.094963495329639061f, -0.995480755491926940f, 0.094199943295393190f, - -0.995553298765638470f, - 0.093436335845747912f, -0.995625256380994310f, 0.092672673429913366f, - -0.995696628295663520f, - 0.091908956497132696f, -0.995767414467659820f, 0.091145185496681130f, - -0.995837614855341610f, - 0.090381360877865011f, -0.995907229417411720f, 0.089617483090022917f, - -0.995976258112917790f, - 0.088853552582524684f, -0.996044700901251970f, 0.088089569804770507f, - -0.996112557742151130f, - 0.087325535206192226f, -0.996179828595696870f, 0.086561449236251239f, - -0.996246513422315520f, - 0.085797312344439880f, -0.996312612182778000f, 0.085033124980280414f, - -0.996378124838200210f, - 0.084268887593324127f, -0.996443051350042630f, 0.083504600633152404f, - -0.996507391680110820f, - 0.082740264549375803f, -0.996571145790554840f, 0.081975879791633108f, - -0.996634313643869900f, - 0.081211446809592386f, -0.996696895202896060f, 0.080446966052950097f, - -0.996758890430818000f, - 0.079682437971430126f, -0.996820299291165670f, 0.078917863014785095f, - -0.996881121747813850f, - 0.078153241632794315f, -0.996941357764982160f, 0.077388574275265049f, - -0.997001007307235290f, - 0.076623861392031617f, -0.997060070339482960f, 0.075859103432954503f, - -0.997118546826979980f, - 0.075094300847921291f, -0.997176436735326190f, 0.074329454086845867f, - -0.997233740030466160f, - 0.073564563599667454f, -0.997290456678690210f, 0.072799629836351618f, - -0.997346586646633230f, - 0.072034653246889416f, -0.997402129901275300f, 0.071269634281296415f, - -0.997457086409941910f, - 0.070504573389614009f, -0.997511456140303450f, 0.069739471021907376f, - -0.997565239060375750f, - 0.068974327628266732f, -0.997618435138519550f, 0.068209143658806454f, - -0.997671044343441000f, - 0.067443919563664106f, -0.997723066644191640f, 0.066678655793001543f, - -0.997774502010167820f, - 0.065913352797003930f, -0.997825350411111640f, 0.065148011025878860f, - -0.997875611817110150f, - 0.064382630929857410f, -0.997925286198596000f, 0.063617212959193190f, - -0.997974373526346990f, - 0.062851757564161420f, -0.998022873771486240f, 0.062086265195060247f, - -0.998070786905482340f, - 0.061320736302208648f, -0.998118112900149180f, 0.060555171335947781f, - -0.998164851727646240f, - 0.059789570746640007f, -0.998211003360478190f, 0.059023934984667986f, - -0.998256567771495180f, - 0.058258264500435732f, -0.998301544933892890f, 0.057492559744367684f, - -0.998345934821212370f, - 0.056726821166907783f, -0.998389737407340160f, 0.055961049218520520f, - -0.998432952666508440f, - 0.055195244349690031f, -0.998475580573294770f, 0.054429407010919147f, - -0.998517621102622210f, - 0.053663537652730679f, -0.998559074229759310f, 0.052897636725665401f, - -0.998599939930320370f, - 0.052131704680283317f, -0.998640218180265270f, 0.051365741967162731f, - -0.998679908955899090f, - 0.050599749036899337f, -0.998719012233872940f, 0.049833726340107257f, - -0.998757527991183340f, - 0.049067674327418126f, -0.998795456205172410f, 0.048301593449480172f, - -0.998832796853527990f, - 0.047535484156959261f, -0.998869549914283560f, 0.046769346900537960f, - -0.998905715365818290f, - 0.046003182130914644f, -0.998941293186856870f, 0.045236990298804750f, - -0.998976283356469820f, - 0.044470771854938744f, -0.999010685854073380f, 0.043704527250063421f, - -0.999044500659429290f, - 0.042938256934940959f, -0.999077727752645360f, 0.042171961360348002f, - -0.999110367114174890f, - 0.041405640977076712f, -0.999142418724816910f, 0.040639296235933854f, - -0.999173882565716380f, - 0.039872927587739845f, -0.999204758618363890f, 0.039106535483329839f, - -0.999235046864595850f, - 0.038340120373552791f, -0.999264747286594420f, 0.037573682709270514f, - -0.999293859866887790f, - 0.036807222941358991f, -0.999322384588349540f, 0.036040741520706299f, - -0.999350321434199440f, - 0.035274238898213947f, -0.999377670388002850f, 0.034507715524795889f, - -0.999404431433671300f, - 0.033741171851377642f, -0.999430604555461730f, 0.032974608328897315f, - -0.999456189737977340f, - 0.032208025408304704f, -0.999481186966166950f, 0.031441423540560343f, - -0.999505596225325310f, - 0.030674803176636581f, -0.999529417501093140f, 0.029908164767516655f, - -0.999552650779456990f, - 0.029141508764193740f, -0.999575296046749220f, 0.028374835617672258f, - -0.999597353289648380f, - 0.027608145778965820f, -0.999618822495178640f, 0.026841439699098527f, - -0.999639703650710200f, - 0.026074717829104040f, -0.999659996743959220f, 0.025307980620024630f, - -0.999679701762987930f, - 0.024541228522912264f, -0.999698818696204250f, 0.023774461988827676f, - -0.999717347532362190f, - 0.023007681468839410f, -0.999735288260561680f, 0.022240887414024919f, - -0.999752640870248840f, - 0.021474080275469605f, -0.999769405351215280f, 0.020707260504265912f, - -0.999785581693599210f, - 0.019940428551514598f, -0.999801169887884260f, 0.019173584868322699f, - -0.999816169924900410f, - 0.018406729905804820f, -0.999830581795823400f, 0.017639864115082195f, - -0.999844405492175240f, - 0.016872987947281773f, -0.999857641005823860f, 0.016106101853537263f, - -0.999870288328982950f, - 0.015339206284988220f, -0.999882347454212560f, 0.014572301692779104f, - -0.999893818374418490f, - 0.013805388528060349f, -0.999904701082852900f, 0.013038467241987433f, - -0.999914995573113470f, - 0.012271538285719944f, -0.999924701839144500f, 0.011504602110422875f, - -0.999933819875236000f, - 0.010737659167264572f, -0.999942349676023910f, 0.009970709907418029f, - -0.999950291236490480f, - 0.009203754782059960f, -0.999957644551963900f, 0.008436794242369860f, - -0.999964409618118280f, - 0.007669828739531077f, -0.999970586430974140f, 0.006902858724729877f, - -0.999976174986897610f, - 0.006135884649154515f, -0.999981175282601110f, 0.005368906963996303f, - -0.999985587315143200f, - 0.004601926120448672f, -0.999989411081928400f, 0.003834942569706248f, - -0.999992646580707190f, - 0.003067956762966138f, -0.999995293809576190f, 0.002300969151425887f, - -0.999997352766978210f, - 0.001533980186284766f, -0.999998823451701880f, 0.000766990318742846f, - -0.999999705862882230f -}; - -static const float32_t Weights_8192[16384] = { - 1.000000000000000000f, -0.000000000000000000f, 0.999999981616429330f, - -0.000191747597310703f, - 0.999999926465717890f, -0.000383495187571396f, 0.999999834547867670f, - -0.000575242763732066f, - 0.999999705862882230f, -0.000766990318742704f, 0.999999540410766110f, - -0.000958737845553301f, - 0.999999338191525530f, -0.001150485337113849f, 0.999999099205167830f, - -0.001342232786374338f, - 0.999998823451701880f, -0.001533980186284766f, 0.999998510931137790f, - -0.001725727529795126f, - 0.999998161643486980f, -0.001917474809855419f, 0.999997775588762350f, - -0.002109222019415644f, - 0.999997352766978210f, -0.002300969151425805f, 0.999996893178149880f, - -0.002492716198835908f, - 0.999996396822294350f, -0.002684463154595962f, 0.999995863699429940f, - -0.002876210011655979f, - 0.999995293809576190f, -0.003067956762965976f, 0.999994687152754080f, - -0.003259703401475973f, - 0.999994043728985820f, -0.003451449920135994f, 0.999993363538295150f, - -0.003643196311896068f, - 0.999992646580707190f, -0.003834942569706228f, 0.999991892856248010f, - -0.004026688686516512f, - 0.999991102364945590f, -0.004218434655276963f, 0.999990275106828920f, - -0.004410180468937631f, - 0.999989411081928400f, -0.004601926120448571f, 0.999988510290275690f, - -0.004793671602759841f, - 0.999987572731904080f, -0.004985416908821511f, 0.999986598406848000f, - -0.005177162031583651f, - 0.999985587315143200f, -0.005368906963996343f, 0.999984539456826970f, - -0.005560651699009674f, - 0.999983454831937730f, -0.005752396229573736f, 0.999982333440515350f, - -0.005944140548638633f, - 0.999981175282601110f, -0.006135884649154475f, 0.999979980358237650f, - -0.006327628524071378f, - 0.999978748667468830f, -0.006519372166339468f, 0.999977480210339940f, - -0.006711115568908879f, - 0.999976174986897610f, -0.006902858724729756f, 0.999974832997189810f, - -0.007094601626752250f, - 0.999973454241265940f, -0.007286344267926521f, 0.999972038719176730f, - -0.007478086641202744f, - 0.999970586430974140f, -0.007669828739531097f, 0.999969097376711580f, - -0.007861570555861772f, - 0.999967571556443780f, -0.008053312083144972f, 0.999966008970226920f, - -0.008245053314330906f, - 0.999964409618118280f, -0.008436794242369799f, 0.999962773500176930f, - -0.008628534860211886f, - 0.999961100616462820f, -0.008820275160807412f, 0.999959390967037450f, - -0.009012015137106633f, - 0.999957644551963900f, -0.009203754782059819f, 0.999955861371306100f, - -0.009395494088617252f, - 0.999954041425129780f, -0.009587233049729225f, 0.999952184713501780f, - -0.009778971658346044f, - 0.999950291236490480f, -0.009970709907418031f, 0.999948360994165400f, - -0.010162447789895513f, - 0.999946393986597460f, -0.010354185298728842f, 0.999944390213859060f, - -0.010545922426868378f, - 0.999942349676023910f, -0.010737659167264491f, 0.999940272373166960f, - -0.010929395512867571f, - 0.999938158305364590f, -0.011121131456628021f, 0.999936007472694620f, - -0.011312866991496258f, - 0.999933819875236000f, -0.011504602110422714f, 0.999931595513069200f, - -0.011696336806357838f, - 0.999929334386276070f, -0.011888071072252092f, 0.999927036494939640f, - -0.012079804901055957f, - 0.999924701839144500f, -0.012271538285719925f, 0.999922330418976490f, - -0.012463271219194511f, - 0.999919922234522750f, -0.012655003694430242f, 0.999917477285871770f, - -0.012846735704377662f, - 0.999914995573113470f, -0.013038467241987334f, 0.999912477096339240f, - -0.013230198300209835f, - 0.999909921855641540f, -0.013421928871995765f, 0.999907329851114300f, - -0.013613658950295740f, - 0.999904701082852900f, -0.013805388528060391f, 0.999902035550953920f, - -0.013997117598240367f, - 0.999899333255515390f, -0.014188846153786345f, 0.999896594196636680f, - -0.014380574187649006f, - 0.999893818374418490f, -0.014572301692779064f, 0.999891005788962950f, - -0.014764028662127246f, - 0.999888156440373320f, -0.014955755088644296f, 0.999885270328754520f, - -0.015147480965280987f, - 0.999882347454212560f, -0.015339206284988100f, 0.999879387816854930f, - -0.015530931040716447f, - 0.999876391416790410f, -0.015722655225416857f, 0.999873358254129260f, - -0.015914378832040183f, - 0.999870288328982950f, -0.016106101853537287f, 0.999867181641464380f, - -0.016297824282859065f, - 0.999864038191687680f, -0.016489546112956437f, 0.999860857979768540f, - -0.016681267336780332f, - 0.999857641005823860f, -0.016872987947281710f, 0.999854387269971890f, - -0.017064707937411563f, - 0.999851096772332190f, -0.017256427300120877f, 0.999847769513025900f, - -0.017448146028360693f, - 0.999844405492175240f, -0.017639864115082053f, 0.999841004709904000f, - -0.017831581553236039f, - 0.999837567166337090f, -0.018023298335773746f, 0.999834092861600960f, - -0.018215014455646290f, - 0.999830581795823400f, -0.018406729905804820f, 0.999827033969133420f, - -0.018598444679200511f, - 0.999823449381661570f, -0.018790158768784555f, 0.999819828033539420f, - -0.018981872167508178f, - 0.999816169924900410f, -0.019173584868322623f, 0.999812475055878780f, - -0.019365296864179156f, - 0.999808743426610520f, -0.019557008148029083f, 0.999804975037232870f, - -0.019748718712823729f, - 0.999801169887884260f, -0.019940428551514441f, 0.999797327978704690f, - -0.020132137657052594f, - 0.999793449309835270f, -0.020323846022389593f, 0.999789533881418780f, - -0.020515553640476875f, - 0.999785581693599210f, -0.020707260504265895f, 0.999781592746521670f, - -0.020898966606708137f, - 0.999777567040332940f, -0.021090671940755121f, 0.999773504575180990f, - -0.021282376499358387f, - 0.999769405351215280f, -0.021474080275469508f, 0.999765269368586450f, - -0.021665783262040078f, - 0.999761096627446610f, -0.021857485452021735f, 0.999756887127949080f, - -0.022049186838366135f, - 0.999752640870248840f, -0.022240887414024961f, 0.999748357854501780f, - -0.022432587171949934f, - 0.999744038080865430f, -0.022624286105092803f, 0.999739681549498660f, - -0.022815984206405345f, - 0.999735288260561680f, -0.023007681468839369f, 0.999730858214216030f, - -0.023199377885346720f, - 0.999726391410624470f, -0.023391073448879258f, 0.999721887849951310f, - -0.023582768152388894f, - 0.999717347532362190f, -0.023774461988827555f, 0.999712770458023870f, - -0.023966154951147210f, - 0.999708156627104880f, -0.024157847032299864f, 0.999703506039774650f, - -0.024349538225237534f, - 0.999698818696204250f, -0.024541228522912288f, 0.999694094596566000f, - -0.024732917918276223f, - 0.999689333741033640f, -0.024924606404281468f, 0.999684536129782140f, - -0.025116293973880186f, - 0.999679701762987930f, -0.025307980620024571f, 0.999674830640828740f, - -0.025499666335666853f, - 0.999669922763483760f, -0.025691351113759295f, 0.999664978131133310f, - -0.025883034947254198f, - 0.999659996743959220f, -0.026074717829103901f, 0.999654978602144690f, - -0.026266399752260760f, - 0.999649923705874240f, -0.026458080709677187f, 0.999644832055333610f, - -0.026649760694305618f, - 0.999639703650710200f, -0.026841439699098531f, 0.999634538492192300f, - -0.027033117717008431f, - 0.999629336579970110f, -0.027224794740987875f, 0.999624097914234570f, - -0.027416470763989436f, - 0.999618822495178640f, -0.027608145778965740f, 0.999613510322995950f, - -0.027799819778869445f, - 0.999608161397882110f, -0.027991492756653243f, 0.999602775720033530f, - -0.028183164705269874f, - 0.999597353289648380f, -0.028374835617672099f, 0.999591894106925950f, - -0.028566505486812728f, - 0.999586398172067070f, -0.028758174305644615f, 0.999580865485273700f, - -0.028949842067120635f, - 0.999575296046749220f, -0.029141508764193722f, 0.999569689856698580f, - -0.029333174389816835f, - 0.999564046915327740f, -0.029524838936942976f, 0.999558367222844300f, - -0.029716502398525191f, - 0.999552650779456990f, -0.029908164767516555f, 0.999546897585375960f, - -0.030099826036870198f, - 0.999541107640812940f, -0.030291486199539284f, 0.999535280945980540f, - -0.030483145248477009f, - 0.999529417501093140f, -0.030674803176636626f, 0.999523517306366350f, - -0.030866459976971412f, - 0.999517580362016990f, -0.031058115642434700f, 0.999511606668263440f, - -0.031249770165979861f, - 0.999505596225325310f, -0.031441423540560301f, 0.999499549033423640f, - -0.031633075759129478f, - 0.999493465092780590f, -0.031824726814640887f, 0.999487344403620080f, - -0.032016376700048060f, - 0.999481186966166950f, -0.032208025408304586f, 0.999474992780647780f, - -0.032399672932364086f, - 0.999468761847290050f, -0.032591319265180226f, 0.999462494166323160f, - -0.032782964399706724f, - 0.999456189737977340f, -0.032974608328897335f, 0.999449848562484530f, - -0.033166251045705857f, - 0.999443470640077770f, -0.033357892543086139f, 0.999437055970991530f, - -0.033549532813992068f, - 0.999430604555461730f, -0.033741171851377580f, 0.999424116393725640f, - -0.033932809648196664f, - 0.999417591486021720f, -0.034124446197403326f, 0.999411029832589780f, - -0.034316081491951651f, - 0.999404431433671300f, -0.034507715524795750f, 0.999397796289508640f, - -0.034699348288889799f, - 0.999391124400346050f, -0.034890979777188004f, 0.999384415766428560f, - -0.035082609982644619f, - 0.999377670388002850f, -0.035274238898213947f, 0.999370888265317170f, - -0.035465866516850353f, - 0.999364069398620550f, -0.035657492831508222f, 0.999357213788164000f, - -0.035849117835142018f, - 0.999350321434199440f, -0.036040741520706229f, 0.999343392336980220f, - -0.036232363881155395f, - 0.999336426496761240f, -0.036423984909444110f, 0.999329423913798420f, - -0.036615604598527030f, - 0.999322384588349540f, -0.036807222941358832f, 0.999315308520673070f, - -0.036998839930894263f, - 0.999308195711029470f, -0.037190455560088119f, 0.999301046159680070f, - -0.037382069821895229f, - 0.999293859866887790f, -0.037573682709270494f, 0.999286636832916740f, - -0.037765294215168860f, - 0.999279377058032710f, -0.037956904332545310f, 0.999272080542502610f, - -0.038148513054354891f, - 0.999264747286594420f, -0.038340120373552694f, 0.999257377290578060f, - -0.038531726283093870f, - 0.999249970554724420f, -0.038723330775933623f, 0.999242527079305830f, - -0.038914933845027193f, - 0.999235046864595850f, -0.039106535483329888f, 0.999227529910869610f, - -0.039298135683797059f, - 0.999219976218403530f, -0.039489734439384118f, 0.999212385787475290f, - -0.039681331743046527f, - 0.999204758618363890f, -0.039872927587739811f, 0.999197094711349880f, - -0.040064521966419520f, - 0.999189394066714920f, -0.040256114872041282f, 0.999181656684742350f, - -0.040447706297560782f, - 0.999173882565716380f, -0.040639296235933736f, 0.999166071709923000f, - -0.040830884680115948f, - 0.999158224117649430f, -0.041022471623063238f, 0.999150339789184110f, - -0.041214057057731519f, - 0.999142418724816910f, -0.041405640977076739f, 0.999134460924839150f, - -0.041597223374054894f, - 0.999126466389543390f, -0.041788804241622061f, 0.999118435119223490f, - -0.041980383572734356f, - 0.999110367114174890f, -0.042171961360347947f, 0.999102262374694130f, - -0.042363537597419072f, - 0.999094120901079070f, -0.042555112276904020f, 0.999085942693629270f, - -0.042746685391759132f, - 0.999077727752645360f, -0.042938256934940820f, 0.999069476078429330f, - -0.043129826899405546f, - 0.999061187671284600f, -0.043321395278109825f, 0.999052862531515930f, - -0.043512962064010237f, - 0.999044500659429290f, -0.043704527250063421f, 0.999036102055332330f, - -0.043896090829226068f, - 0.999027666719533690f, -0.044087652794454944f, 0.999019194652343460f, - -0.044279213138706849f, - 0.999010685854073380f, -0.044470771854938668f, 0.999002140325035980f, - -0.044662328936107325f, - 0.998993558065545680f, -0.044853884375169815f, 0.998984939075918010f, - -0.045045438165083197f, - 0.998976283356469820f, -0.045236990298804590f, 0.998967590907519300f, - -0.045428540769291155f, - 0.998958861729386080f, -0.045620089569500144f, 0.998950095822391250f, - -0.045811636692388844f, - 0.998941293186856870f, -0.046003182130914623f, 0.998932453823106690f, - -0.046194725878034908f, - 0.998923577731465780f, -0.046386267926707157f, 0.998914664912260440f, - -0.046577808269888943f, - 0.998905715365818290f, -0.046769346900537863f, 0.998896729092468410f, - -0.046960883811611592f, - 0.998887706092541290f, -0.047152418996067869f, 0.998878646366368690f, - -0.047343952446864478f, - 0.998869549914283560f, -0.047535484156959303f, 0.998860416736620520f, - -0.047727014119310254f, - 0.998851246833715180f, -0.047918542326875327f, 0.998842040205904840f, - -0.048110068772612591f, - 0.998832796853527990f, -0.048301593449480144f, 0.998823516776924490f, - -0.048493116350436176f, - 0.998814199976435390f, -0.048684637468438943f, 0.998804846452403420f, - -0.048876156796446760f, - 0.998795456205172410f, -0.049067674327418015f, 0.998786029235087640f, - -0.049259190054311140f, - 0.998776565542495610f, -0.049450703970084664f, 0.998767065127744380f, - -0.049642216067697156f, - 0.998757527991183340f, -0.049833726340107277f, 0.998747954133162860f, - -0.050025234780273729f, - 0.998738343554035230f, -0.050216741381155311f, 0.998728696254153720f, - -0.050408246135710856f, - 0.998719012233872940f, -0.050599749036899282f, 0.998709291493549030f, - -0.050791250077679581f, - 0.998699534033539280f, -0.050982749251010803f, 0.998689739854202620f, - -0.051174246549852080f, - 0.998679908955899090f, -0.051365741967162593f, 0.998670041338990070f, - -0.051557235495901611f, - 0.998660137003838490f, -0.051748727129028456f, 0.998650195950808280f, - -0.051940216859502536f, - 0.998640218180265270f, -0.052131704680283324f, 0.998630203692576050f, - -0.052323190584330347f, - 0.998620152488108870f, -0.052514674564603223f, 0.998610064567233340f, - -0.052706156614061632f, - 0.998599939930320370f, -0.052897636725665324f, 0.998589778577742230f, - -0.053089114892374133f, - 0.998579580509872500f, -0.053280591107147945f, 0.998569345727086110f, - -0.053472065362946727f, - 0.998559074229759310f, -0.053663537652730520f, 0.998548766018269920f, - -0.053855007969459440f, - 0.998538421092996730f, -0.054046476306093660f, 0.998528039454320230f, - -0.054237942655593452f, - 0.998517621102622210f, -0.054429407010919133f, 0.998507166038285490f, - -0.054620869365031105f, - 0.998496674261694640f, -0.054812329710889854f, 0.998486145773235360f, - -0.055003788041455920f, - 0.998475580573294770f, -0.055195244349689934f, 0.998464978662261250f, - -0.055386698628552597f, - 0.998454340040524800f, -0.055578150871004678f, 0.998443664708476340f, - -0.055769601070007030f, - 0.998432952666508440f, -0.055961049218520569f, 0.998422203915015020f, - -0.056152495309506292f, - 0.998411418454391300f, -0.056343939335925290f, 0.998400596285033640f, - -0.056535381290738700f, - 0.998389737407340160f, -0.056726821166907748f, 0.998378841821709990f, - -0.056918258957393740f, - 0.998367909528543820f, -0.057109694655158062f, 0.998356940528243420f, - -0.057301128253162158f, - 0.998345934821212370f, -0.057492559744367566f, 0.998334892407855000f, - -0.057683989121735904f, - 0.998323813288577560f, -0.057875416378228857f, 0.998312697463787260f, - -0.058066841506808194f, - 0.998301544933892890f, -0.058258264500435752f, 0.998290355699304350f, - -0.058449685352073476f, - 0.998279129760433200f, -0.058641104054683341f, 0.998267867117692110f, - -0.058832520601227435f, - 0.998256567771495180f, -0.059023934984667931f, 0.998245231722257880f, - -0.059215347197967061f, - 0.998233858970396850f, -0.059406757234087150f, 0.998222449516330550f, - -0.059598165085990591f, - 0.998211003360478190f, -0.059789570746639868f, 0.998199520503260660f, - -0.059980974208997548f, - 0.998188000945100300f, -0.060172375466026259f, 0.998176444686420530f, - -0.060363774510688743f, - 0.998164851727646240f, -0.060555171335947788f, 0.998153222069203760f, - -0.060746565934766288f, - 0.998141555711520520f, -0.060937958300107203f, 0.998129852655025630f, - -0.061129348424933588f, - 0.998118112900149180f, -0.061320736302208578f, 0.998106336447323050f, - -0.061512121924895378f, - 0.998094523296980010f, -0.061703505285957298f, 0.998082673449554590f, - -0.061894886378357716f, - 0.998070786905482340f, -0.062086265195060088f, 0.998058863665200250f, - -0.062277641729027972f, - 0.998046903729146840f, -0.062469015973224996f, 0.998034907097761770f, - -0.062660387920614874f, - 0.998022873771486240f, -0.062851757564161406f, 0.998010803750762450f, - -0.063043124896828492f, - 0.997998697036034390f, -0.063234489911580066f, 0.997986553627747020f, - -0.063425852601380228f, - 0.997974373526346990f, -0.063617212959193106f, 0.997962156732281950f, - -0.063808570977982898f, - 0.997949903246001190f, -0.063999926650713940f, 0.997937613067955250f, - -0.064191279970350637f, - 0.997925286198596000f, -0.064382630929857465f, 0.997912922638376610f, - -0.064573979522198982f, - 0.997900522387751620f, -0.064765325740339885f, 0.997888085447177110f, - -0.064956669577244872f, - 0.997875611817110150f, -0.065148011025878833f, 0.997863101498009500f, - -0.065339350079206632f, - 0.997850554490335110f, -0.065530686730193327f, 0.997837970794548280f, - -0.065722020971803990f, - 0.997825350411111640f, -0.065913352797003805f, 0.997812693340489280f, - -0.066104682198758077f, - 0.997799999583146470f, -0.066296009170032130f, 0.997787269139549960f, - -0.066487333703791451f, - 0.997774502010167820f, -0.066678655793001557f, 0.997761698195469560f, - -0.066869975430628115f, - 0.997748857695925690f, -0.067061292609636822f, 0.997735980512008620f, - -0.067252607322993499f, - 0.997723066644191640f, -0.067443919563664051f, 0.997710116092949570f, - -0.067635229324614479f, - 0.997697128858758500f, -0.067826536598810869f, 0.997684104942096030f, - -0.068017841379219388f, - 0.997671044343441000f, -0.068209143658806329f, 0.997657947063273710f, - -0.068400443430538013f, - 0.997644813102075420f, -0.068591740687380942f, 0.997631642460329320f, - -0.068783035422301630f, - 0.997618435138519550f, -0.068974327628266746f, 0.997605191137131640f, - -0.069165617298242985f, - 0.997591910456652630f, -0.069356904425197208f, 0.997578593097570800f, - -0.069548189002096306f, - 0.997565239060375750f, -0.069739471021907307f, 0.997551848345558430f, - -0.069930750477597309f, - 0.997538420953611340f, -0.070122027362133521f, 0.997524956885027960f, - -0.070313301668483250f, - 0.997511456140303450f, -0.070504573389613856f, 0.997497918719934210f, - -0.070695842518492855f, - 0.997484344624417930f, -0.070887109048087801f, 0.997470733854253670f, - -0.071078372971366405f, - 0.997457086409941910f, -0.071269634281296401f, 0.997443402291984360f, - -0.071460892970845680f, - 0.997429681500884180f, -0.071652149032982212f, 0.997415924037145960f, - -0.071843402460674027f, - 0.997402129901275300f, -0.072034653246889332f, 0.997388299093779460f, - -0.072225901384596322f, - 0.997374431615167150f, -0.072417146866763413f, 0.997360527465947940f, - -0.072608389686358993f, - 0.997346586646633230f, -0.072799629836351673f, 0.997332609157735470f, - -0.072990867309710036f, - 0.997318594999768600f, -0.073182102099402888f, 0.997304544173247990f, - -0.073373334198399032f, - 0.997290456678690210f, -0.073564563599667426f, 0.997276332516613180f, - -0.073755790296177098f, - 0.997262171687536170f, -0.073947014280897200f, 0.997247974191979860f, - -0.074138235546796979f, - 0.997233740030466280f, -0.074329454086845756f, 0.997219469203518670f, - -0.074520669894013000f, - 0.997205161711661850f, -0.074711882961268211f, 0.997190817555421940f, - -0.074903093281581082f, - 0.997176436735326190f, -0.075094300847921305f, 0.997162019251903290f, - -0.075285505653258769f, - 0.997147565105683480f, -0.075476707690563388f, 0.997133074297198110f, - -0.075667906952805231f, - 0.997118546826979980f, -0.075859103432954447f, 0.997103982695563330f, - -0.076050297123981259f, - 0.997089381903483400f, -0.076241488018856066f, 0.997074744451277310f, - -0.076432676110549283f, - 0.997060070339482960f, -0.076623861392031492f, 0.997045359568640040f, - -0.076815043856273343f, - 0.997030612139289450f, -0.077006223496245640f, 0.997015828051973310f, - -0.077197400304919200f, - 0.997001007307235290f, -0.077388574275265049f, 0.996986149905620180f, - -0.077579745400254224f, - 0.996971255847674320f, -0.077770913672857947f, 0.996956325133945280f, - -0.077962079086047492f, - 0.996941357764982160f, -0.078153241632794232f, 0.996926353741335090f, - -0.078344401306069705f, - 0.996911313063555740f, -0.078535558098845479f, 0.996896235732197210f, - -0.078726712004093299f, - 0.996881121747813850f, -0.078917863014784942f, 0.996865971110961310f, - -0.079109011123892375f, - 0.996850783822196610f, -0.079300156324387597f, 0.996835559882078170f, - -0.079491298609242769f, - 0.996820299291165670f, -0.079682437971430126f, 0.996805002050020430f, - -0.079873574403921996f, - 0.996789668159204560f, -0.080064707899690890f, 0.996774297619282050f, - -0.080255838451709319f, - 0.996758890430818000f, -0.080446966052950014f, 0.996743446594378860f, - -0.080638090696385709f, - 0.996727966110532490f, -0.080829212374989329f, 0.996712448979848010f, - -0.081020331081733857f, - 0.996696895202896060f, -0.081211446809592441f, 0.996681304780248300f, - -0.081402559551538245f, - 0.996665677712478160f, -0.081593669300544652f, 0.996650014000160070f, - -0.081784776049585076f, - 0.996634313643869900f, -0.081975879791633066f, 0.996618576644185070f, - -0.082166980519662314f, - 0.996602803001684130f, -0.082358078226646536f, 0.996586992716946950f, - -0.082549172905559673f, - 0.996571145790554840f, -0.082740264549375692f, 0.996555262223090540f, - -0.082931353151068699f, - 0.996539342015137940f, -0.083122438703612911f, 0.996523385167282450f, - -0.083313521199982685f, - 0.996507391680110820f, -0.083504600633152432f, 0.996491361554210920f, - -0.083695676996096716f, - 0.996475294790172160f, -0.083886750281790226f, 0.996459191388585410f, - -0.084077820483207694f, - 0.996443051350042630f, -0.084268887593324071f, 0.996426874675137240f, - -0.084459951605114325f, - 0.996410661364464100f, -0.084651012511553617f, 0.996394411418619290f, - -0.084842070305617134f, - 0.996378124838200210f, -0.085033124980280275f, 0.996361801623805720f, - -0.085224176528518478f, - 0.996345441776035900f, -0.085415224943307333f, 0.996329045295492380f, - -0.085606270217622529f, - 0.996312612182778000f, -0.085797312344439894f, 0.996296142438496850f, - -0.085988351316735337f, - 0.996279636063254650f, -0.086179387127484894f, 0.996263093057658140f, - -0.086370419769664752f, - 0.996246513422315520f, -0.086561449236251170f, 0.996229897157836500f, - -0.086752475520220543f, - 0.996213244264832040f, -0.086943498614549378f, 0.996196554743914220f, - -0.087134518512214307f, - 0.996179828595696980f, -0.087325535206192059f, 0.996163065820794950f, - -0.087516548689459531f, - 0.996146266419824620f, -0.087707558954993659f, 0.996129430393403740f, - -0.087898565995771588f, - 0.996112557742151130f, -0.088089569804770507f, 0.996095648466687300f, - -0.088280570374967740f, - 0.996078702567633980f, -0.088471567699340767f, 0.996061720045614000f, - -0.088662561770867149f, - 0.996044700901251970f, -0.088853552582524600f, 0.996027645135173610f, - -0.089044540127290892f, - 0.996010552748005870f, -0.089235524398144014f, 0.995993423740377360f, - -0.089426505388061961f, - 0.995976258112917790f, -0.089617483090022959f, 0.995959055866258320f, - -0.089808457497005278f, - 0.995941817001031350f, -0.089999428601987341f, 0.995924541517870800f, - -0.090190396397947695f, - 0.995907229417411720f, -0.090381360877864983f, 0.995889880700290720f, - -0.090572322034717989f, - 0.995872495367145730f, -0.090763279861485621f, 0.995855073418615790f, - -0.090954234351146926f, - 0.995837614855341610f, -0.091145185496681005f, 0.995820119677964910f, - -0.091336133291067184f, - 0.995802587887129160f, -0.091527077727284828f, 0.995785019483478750f, - -0.091718018798313455f, - 0.995767414467659820f, -0.091908956497132724f, 0.995749772840319510f, - -0.092099890816722388f, - 0.995732094602106430f, -0.092290821750062355f, 0.995714379753670610f, - -0.092481749290132600f, - 0.995696628295663520f, -0.092672673429913310f, 0.995678840228737540f, - -0.092863594162384724f, - 0.995661015553546910f, -0.093054511480527249f, 0.995643154270746900f, - -0.093245425377321375f, - 0.995625256380994310f, -0.093436335845747787f, 0.995607321884947050f, - -0.093627242878787195f, - 0.995589350783264600f, -0.093818146469420549f, 0.995571343076607770f, - -0.094009046610628838f, - 0.995553298765638470f, -0.094199943295393204f, 0.995535217851020390f, - -0.094390836516694943f, - 0.995517100333418110f, -0.094581726267515445f, 0.995498946213497770f, - -0.094772612540836243f, - 0.995480755491926940f, -0.094963495329638992f, 0.995462528169374420f, - -0.095154374626905486f, - 0.995444264246510340f, -0.095345250425617617f, 0.995425963724006160f, - -0.095536122718757471f, - 0.995407626602534900f, -0.095726991499307162f, 0.995389252882770690f, - -0.095917856760249040f, - 0.995370842565388990f, -0.096108718494565509f, 0.995352395651066810f, - -0.096299576695239128f, - 0.995333912140482280f, -0.096490431355252593f, 0.995315392034315070f, - -0.096681282467588725f, - 0.995296835333246090f, -0.096872130025230471f, 0.995278242037957670f, - -0.097062974021160917f, - 0.995259612149133390f, -0.097253814448363271f, 0.995240945667458130f, - -0.097444651299820870f, - 0.995222242593618360f, -0.097635484568517200f, 0.995203502928301510f, - -0.097826314247435861f, - 0.995184726672196930f, -0.098017140329560604f, 0.995165913825994620f, - -0.098207962807875276f, - 0.995147064390386470f, -0.098398781675363881f, 0.995128178366065490f, - -0.098589596925010584f, - 0.995109255753726110f, -0.098780408549799623f, 0.995090296554064000f, - -0.098971216542715429f, - 0.995071300767776170f, -0.099162020896742503f, 0.995052268395561050f, - -0.099352821604865540f, - 0.995033199438118630f, -0.099543618660069319f, 0.995014093896149700f, - -0.099734412055338825f, - 0.994994951770357020f, -0.099925201783659073f, 0.994975773061444140f, - -0.100115987838015310f, - 0.994956557770116380f, -0.100306770211392860f, 0.994937305897080070f, - -0.100497548896777200f, - 0.994918017443043200f, -0.100688323887153960f, 0.994898692408714870f, - -0.100879095175508860f, - 0.994879330794805620f, -0.101069862754827820f, 0.994859932602027320f, - -0.101260626618096830f, - 0.994840497831093180f, -0.101451386758302080f, 0.994821026482717860f, - -0.101642143168429830f, - 0.994801518557617110f, -0.101832895841466530f, 0.994781974056508260f, - -0.102023644770398740f, - 0.994762392980109930f, -0.102214389948213210f, 0.994742775329142010f, - -0.102405131367896720f, - 0.994723121104325700f, -0.102595869022436280f, 0.994703430306383860f, - -0.102786602904819040f, - 0.994683702936040250f, -0.102977333008032220f, 0.994663938994020390f, - -0.103168059325063230f, - 0.994644138481050710f, -0.103358781848899610f, 0.994624301397859400f, - -0.103549500572529070f, - 0.994604427745175660f, -0.103740215488939370f, 0.994584517523730340f, - -0.103930926591118510f, - 0.994564570734255420f, -0.104121633872054590f, 0.994544587377484300f, - -0.104312337324735800f, - 0.994524567454151740f, -0.104503036942150570f, 0.994504510964993700f, - -0.104693732717287390f, - 0.994484417910747600f, -0.104884424643134970f, 0.994464288292152390f, - -0.105075112712682040f, - 0.994444122109948040f, -0.105265796918917600f, 0.994423919364875950f, - -0.105456477254830710f, - 0.994403680057679100f, -0.105647153713410620f, 0.994383404189101430f, - -0.105837826287646670f, - 0.994363091759888570f, -0.106028494970528410f, 0.994342742770787270f, - -0.106219159755045480f, - 0.994322357222545810f, -0.106409820634187680f, 0.994301935115913580f, - -0.106600477600944960f, - 0.994281476451641550f, -0.106791130648307390f, 0.994260981230481790f, - -0.106981779769265230f, - 0.994240449453187900f, -0.107172424956808840f, 0.994219881120514960f, - -0.107363066203928760f, - 0.994199276233218910f, -0.107553703503615620f, 0.994178634792057590f, - -0.107744336848860280f, - 0.994157956797789730f, -0.107934966232653650f, 0.994137242251175720f, - -0.108125591647986870f, - 0.994116491152977070f, -0.108316213087851170f, 0.994095703503956930f, - -0.108506830545237920f, - 0.994074879304879370f, -0.108697444013138720f, 0.994054018556510210f, - -0.108888053484545190f, - 0.994033121259616400f, -0.109078658952449240f, 0.994012187414966220f, - -0.109269260409842780f, - 0.993991217023329380f, -0.109459857849717980f, 0.993970210085476920f, - -0.109650451265067100f, - 0.993949166602181130f, -0.109841040648882600f, 0.993928086574215830f, - -0.110031625994157000f, - 0.993906970002356060f, -0.110222207293883060f, 0.993885816887378090f, - -0.110412784541053630f, - 0.993864627230059750f, -0.110603357728661730f, 0.993843401031180180f, - -0.110793926849700560f, - 0.993822138291519660f, -0.110984491897163390f, 0.993800839011860120f, - -0.111175052864043720f, - 0.993779503192984580f, -0.111365609743335160f, 0.993758130835677430f, - -0.111556162528031480f, - 0.993736721940724600f, -0.111746711211126590f, 0.993715276508913230f, - -0.111937255785614570f, - 0.993693794541031790f, -0.112127796244489640f, 0.993672276037870010f, - -0.112318332580746170f, - 0.993650721000219120f, -0.112508864787378690f, 0.993629129428871720f, - -0.112699392857381860f, - 0.993607501324621610f, -0.112889916783750520f, 0.993585836688263950f, - -0.113080436559479620f, - 0.993564135520595300f, -0.113270952177564350f, 0.993542397822413600f, - -0.113461463630999950f, - 0.993520623594518090f, -0.113651970912781870f, 0.993498812837709360f, - -0.113842474015905710f, - 0.993476965552789190f, -0.114032972933367200f, 0.993455081740560960f, - -0.114223467658162260f, - 0.993433161401829360f, -0.114413958183286920f, 0.993411204537400060f, - -0.114604444501737420f, - 0.993389211148080650f, -0.114794926606510080f, 0.993367181234679600f, - -0.114985404490601460f, - 0.993345114798006910f, -0.115175878147008190f, 0.993323011838873950f, - -0.115366347568727140f, - 0.993300872358093280f, -0.115556812748755260f, 0.993278696356479030f, - -0.115747273680089720f, - 0.993256483834846440f, -0.115937730355727780f, 0.993234234794012290f, - -0.116128182768666930f, - 0.993211949234794500f, -0.116318630911904750f, 0.993189627158012620f, - -0.116509074778439040f, - 0.993167268564487230f, -0.116699514361267690f, 0.993144873455040430f, - -0.116889949653388780f, - 0.993122441830495580f, -0.117080380647800590f, 0.993099973691677570f, - -0.117270807337501460f, - 0.993077469039412300f, -0.117461229715489990f, 0.993054927874527320f, - -0.117651647774764860f, - 0.993032350197851410f, -0.117842061508324980f, 0.993009736010214580f, - -0.118032470909169340f, - 0.992987085312448390f, -0.118222875970297170f, 0.992964398105385610f, - -0.118413276684707790f, - 0.992941674389860470f, -0.118603673045400720f, 0.992918914166708300f, - -0.118794065045375640f, - 0.992896117436765980f, -0.118984452677632340f, 0.992873284200871730f, - -0.119174835935170880f, - 0.992850414459865100f, -0.119365214810991350f, 0.992827508214586760f, - -0.119555589298094110f, - 0.992804565465879140f, -0.119745959389479600f, 0.992781586214585570f, - -0.119936325078148470f, - 0.992758570461551140f, -0.120126686357101500f, 0.992735518207621850f, - -0.120317043219339680f, - 0.992712429453645460f, -0.120507395657864130f, 0.992689304200470750f, - -0.120697743665676110f, - 0.992666142448948020f, -0.120888087235777080f, 0.992642944199928820f, - -0.121078426361168640f, - 0.992619709454266140f, -0.121268761034852600f, 0.992596438212814290f, - -0.121459091249830840f, - 0.992573130476428810f, -0.121649416999105530f, 0.992549786245966680f, - -0.121839738275678890f, - 0.992526405522286100f, -0.122030055072553360f, 0.992502988306246950f, - -0.122220367382731540f, - 0.992479534598709970f, -0.122410675199216200f, 0.992456044400537700f, - -0.122600978515010240f, - 0.992432517712593660f, -0.122791277323116770f, 0.992408954535742850f, - -0.122981571616539050f, - 0.992385354870851670f, -0.123171861388280480f, 0.992361718718787870f, - -0.123362146631344680f, - 0.992338046080420420f, -0.123552427338735370f, 0.992314336956619640f, - -0.123742703503456510f, - 0.992290591348257370f, -0.123932975118512160f, 0.992266809256206580f, - -0.124123242176906600f, - 0.992242990681341700f, -0.124313504671644230f, 0.992219135624538450f, - -0.124503762595729660f, - 0.992195244086673920f, -0.124694015942167640f, 0.992171316068626520f, - -0.124884264703963130f, - 0.992147351571276090f, -0.125074508874121170f, 0.992123350595503720f, - -0.125264748445647060f, - 0.992099313142191800f, -0.125454983411546230f, 0.992075239212224070f, - -0.125645213764824290f, - 0.992051128806485720f, -0.125835439498487000f, 0.992026981925863360f, - -0.126025660605540320f, - 0.992002798571244520f, -0.126215877078990350f, 0.991978578743518580f, - -0.126406088911843380f, - 0.991954322443575950f, -0.126596296097105850f, 0.991930029672308480f, - -0.126786498627784410f, - 0.991905700430609330f, -0.126976696496885870f, 0.991881334719373010f, - -0.127166889697417160f, - 0.991856932539495470f, -0.127357078222385400f, 0.991832493891873780f, - -0.127547262064797970f, - 0.991808018777406430f, -0.127737441217662310f, 0.991783507196993490f, - -0.127927615673986080f, - 0.991758959151536110f, -0.128117785426777130f, 0.991734374641936810f, - -0.128307950469043420f, - 0.991709753669099530f, -0.128498110793793170f, 0.991685096233929420f, - -0.128688266394034690f, - 0.991660402337333210f, -0.128878417262776550f, 0.991635671980218740f, - -0.129068563393027410f, - 0.991610905163495370f, -0.129258704777796140f, 0.991586101888073500f, - -0.129448841410091780f, - 0.991561262154865290f, -0.129638973282923560f, 0.991536385964783880f, - -0.129829100389300930f, - 0.991511473318743900f, -0.130019222722233350f, 0.991486524217661480f, - -0.130209340274730630f, - 0.991461538662453790f, -0.130399453039802690f, 0.991436516654039420f, - -0.130589561010459650f, - 0.991411458193338540f, -0.130779664179711710f, 0.991386363281272280f, - -0.130969762540569380f, - 0.991361231918763460f, -0.131159856086043270f, 0.991336064106736140f, - -0.131349944809144190f, - 0.991310859846115440f, -0.131540028702883120f, 0.991285619137828200f, - -0.131730107760271160f, - 0.991260341982802440f, -0.131920181974319790f, 0.991235028381967420f, - -0.132110251338040360f, - 0.991209678336254060f, -0.132300315844444650f, 0.991184291846594180f, - -0.132490375486544550f, - 0.991158868913921350f, -0.132680430257352070f, 0.991133409539170170f, - -0.132870480149879430f, - 0.991107913723276890f, -0.133060525157139060f, 0.991082381467178640f, - -0.133250565272143570f, - 0.991056812771814340f, -0.133440600487905680f, 0.991031207638124130f, - -0.133630630797438340f, - 0.991005566067049370f, -0.133820656193754720f, 0.990979888059532740f, - -0.134010676669868130f, - 0.990954173616518500f, -0.134200692218792020f, 0.990928422738951990f, - -0.134390702833540070f, - 0.990902635427780010f, -0.134580708507126170f, 0.990876811683950700f, - -0.134770709232564350f, - 0.990850951508413620f, -0.134960705002868750f, 0.990825054902119470f, - -0.135150695811053850f, - 0.990799121866020370f, -0.135340681650134210f, 0.990773152401069780f, - -0.135530662513124590f, - 0.990747146508222710f, -0.135720638393039910f, 0.990721104188435180f, - -0.135910609282895330f, - 0.990695025442664630f, -0.136100575175706200f, 0.990668910271870100f, - -0.136290536064487960f, - 0.990642758677011570f, -0.136480491942256280f, 0.990616570659050620f, - -0.136670442802027090f, - 0.990590346218950150f, -0.136860388636816380f, 0.990564085357674370f, - -0.137050329439640410f, - 0.990537788076188750f, -0.137240265203515590f, 0.990511454375460290f, - -0.137430195921458550f, - 0.990485084256457090f, -0.137620121586486040f, 0.990458677720148620f, - -0.137810042191615080f, - 0.990432234767505970f, -0.137999957729862790f, 0.990405755399501260f, - -0.138189868194246560f, - 0.990379239617108160f, -0.138379773577783890f, 0.990352687421301450f, - -0.138569673873492500f, - 0.990326098813057330f, -0.138759569074390350f, 0.990299473793353590f, - -0.138949459173495490f, - 0.990272812363169110f, -0.139139344163826200f, 0.990246114523483990f, - -0.139329224038400980f, - 0.990219380275280000f, -0.139519098790238490f, 0.990192609619540030f, - -0.139708968412357550f, - 0.990165802557248400f, -0.139898832897777210f, 0.990138959089390650f, - -0.140088692239516670f, - 0.990112079216953770f, -0.140278546430595420f, 0.990085162940925970f, - -0.140468395464033000f, - 0.990058210262297120f, -0.140658239332849210f, 0.990031221182058000f, - -0.140848078030064080f, - 0.990004195701200910f, -0.141037911548697710f, 0.989977133820719610f, - -0.141227739881770510f, - 0.989950035541608990f, -0.141417563022303020f, 0.989922900864865450f, - -0.141607380963316020f, - 0.989895729791486660f, -0.141797193697830390f, 0.989868522322471580f, - -0.141987001218867290f, - 0.989841278458820530f, -0.142176803519448030f, 0.989813998201535260f, - -0.142366600592594180f, - 0.989786681551618640f, -0.142556392431327340f, 0.989759328510075200f, - -0.142746179028669460f, - 0.989731939077910570f, -0.142935960377642670f, 0.989704513256131850f, - -0.143125736471269190f, - 0.989677051045747210f, -0.143315507302571500f, 0.989649552447766530f, - -0.143505272864572290f, - 0.989622017463200890f, -0.143695033150294470f, 0.989594446093062460f, - -0.143884788152760980f, - 0.989566838338365120f, -0.144074537864995160f, 0.989539194200123930f, - -0.144264282280020440f, - 0.989511513679355190f, -0.144454021390860470f, 0.989483796777076760f, - -0.144643755190539040f, - 0.989456043494307710f, -0.144833483672080210f, 0.989428253832068230f, - -0.145023206828508220f, - 0.989400427791380380f, -0.145212924652847460f, 0.989372565373267010f, - -0.145402637138122570f, - 0.989344666578752640f, -0.145592344277358340f, 0.989316731408863000f, - -0.145782046063579860f, - 0.989288759864625170f, -0.145971742489812210f, 0.989260751947067640f, - -0.146161433549080900f, - 0.989232707657220050f, -0.146351119234411460f, 0.989204626996113780f, - -0.146540799538829760f, - 0.989176509964781010f, -0.146730474455361750f, 0.989148356564255590f, - -0.146920143977033620f, - 0.989120166795572690f, -0.147109808096871820f, 0.989091940659768800f, - -0.147299466807902850f, - 0.989063678157881540f, -0.147489120103153570f, 0.989035379290950310f, - -0.147678767975650970f, - 0.989007044060015270f, -0.147868410418422220f, 0.988978672466118480f, - -0.148058047424494720f, - 0.988950264510302990f, -0.148247678986896030f, 0.988921820193613190f, - -0.148437305098653970f, - 0.988893339517095130f, -0.148626925752796540f, 0.988864822481795640f, - -0.148816540942351920f, - 0.988836269088763540f, -0.149006150660348450f, 0.988807679339048450f, - -0.149195754899814820f, - 0.988779053233701520f, -0.149385353653779720f, 0.988750390773775360f, - -0.149574946915272230f, - 0.988721691960323780f, -0.149764534677321510f, 0.988692956794401940f, - -0.149954116932956960f, - 0.988664185277066230f, -0.150143693675208190f, 0.988635377409374790f, - -0.150333264897105000f, - 0.988606533192386450f, -0.150522830591677400f, 0.988577652627162020f, - -0.150712390751955610f, - 0.988548735714763200f, -0.150901945370970040f, 0.988519782456253270f, - -0.151091494441751300f, - 0.988490792852696590f, -0.151281037957330220f, 0.988461766905159300f, - -0.151470575910737810f, - 0.988432704614708340f, -0.151660108295005310f, 0.988403605982412390f, - -0.151849635103164180f, - 0.988374471009341280f, -0.152039156328246050f, 0.988345299696566150f, - -0.152228671963282740f, - 0.988316092045159690f, -0.152418182001306330f, 0.988286848056195820f, - -0.152607686435349050f, - 0.988257567730749460f, -0.152797185258443440f, 0.988228251069897420f, - -0.152986678463622040f, - 0.988198898074717610f, -0.153176166043917840f, 0.988169508746289060f, - -0.153365647992363880f, - 0.988140083085692570f, -0.153555124301993450f, 0.988110621094009820f, - -0.153744594965840030f, - 0.988081122772324070f, -0.153934059976937350f, 0.988051588121720110f, - -0.154123519328319360f, - 0.988022017143283530f, -0.154312973013020100f, 0.987992409838101880f, - -0.154502421024073940f, - 0.987962766207263420f, -0.154691863354515430f, 0.987933086251858380f, - -0.154881299997379320f, - 0.987903369972977790f, -0.155070730945700510f, 0.987873617371714200f, - -0.155260156192514240f, - 0.987843828449161740f, -0.155449575730855850f, 0.987814003206415550f, - -0.155638989553760900f, - 0.987784141644572180f, -0.155828397654265230f, 0.987754243764729530f, - -0.156017800025404800f, - 0.987724309567986960f, -0.156207196660215900f, 0.987694339055445130f, - -0.156396587551734880f, - 0.987664332228205710f, -0.156585972692998430f, 0.987634289087372160f, - -0.156775352077043350f, - 0.987604209634049160f, -0.156964725696906780f, 0.987574093869342360f, - -0.157154093545625900f, - 0.987543941794359230f, -0.157343455616238250f, 0.987513753410208420f, - -0.157532811901781530f, - 0.987483528717999710f, -0.157722162395293630f, 0.987453267718844560f, - -0.157911507089812660f, - 0.987422970413855410f, -0.158100845978376980f, 0.987392636804146240f, - -0.158290179054025180f, - 0.987362266890832400f, -0.158479506309795960f, 0.987331860675030430f, - -0.158668827738728310f, - 0.987301418157858430f, -0.158858143333861450f, 0.987270939340435420f, - -0.159047453088234760f, - 0.987240424223882250f, -0.159236756994887850f, 0.987209872809320820f, - -0.159426055046860580f, - 0.987179285097874340f, -0.159615347237193060f, 0.987148661090667570f, - -0.159804633558925440f, - 0.987118000788826280f, -0.159993914005098270f, 0.987087304193477900f, - -0.160183188568752220f, - 0.987056571305750970f, -0.160372457242928280f, 0.987025802126775600f, - -0.160561720020667490f, - 0.986994996657682980f, -0.160750976895011220f, 0.986964154899605650f, - -0.160940227859001080f, - 0.986933276853677710f, -0.161129472905678810f, 0.986902362521034470f, - -0.161318712028086400f, - 0.986871411902812470f, -0.161507945219266120f, 0.986840425000149680f, - -0.161697172472260400f, - 0.986809401814185530f, -0.161886393780111830f, 0.986778342346060430f, - -0.162075609135863330f, - 0.986747246596916590f, -0.162264818532558000f, 0.986716114567897100f, - -0.162454021963239190f, - 0.986684946260146690f, -0.162643219420950310f, 0.986653741674811350f, - -0.162832410898735210f, - 0.986622500813038480f, -0.163021596389637840f, 0.986591223675976400f, - -0.163210775886702380f, - 0.986559910264775410f, -0.163399949382973230f, 0.986528560580586690f, - -0.163589116871495020f, - 0.986497174624562880f, -0.163778278345312670f, 0.986465752397857940f, - -0.163967433797471170f, - 0.986434293901627180f, -0.164156583221015810f, 0.986402799137027220f, - -0.164345726608992190f, - 0.986371268105216030f, -0.164534863954446000f, 0.986339700807353000f, - -0.164723995250423170f, - 0.986308097244598670f, -0.164913120489969890f, 0.986276457418115090f, - -0.165102239666132660f, - 0.986244781329065460f, -0.165291352771958000f, 0.986213068978614490f, - -0.165480459800492780f, - 0.986181320367928270f, -0.165669560744784120f, 0.986149535498173860f, - -0.165858655597879300f, - 0.986117714370520090f, -0.166047744352825790f, 0.986085856986136820f, - -0.166236827002671420f, - 0.986053963346195440f, -0.166425903540464100f, 0.986022033451868560f, - -0.166614973959252090f, - 0.985990067304330140f, -0.166804038252083730f, 0.985958064904755460f, - -0.166993096412007710f, - 0.985926026254321130f, -0.167182148432072940f, 0.985893951354205210f, - -0.167371194305328430f, - 0.985861840205586980f, -0.167560234024823560f, 0.985829692809647050f, - -0.167749267583607890f, - 0.985797509167567480f, -0.167938294974731170f, 0.985765289280531310f, - -0.168127316191243410f, - 0.985733033149723490f, -0.168316331226194830f, 0.985700740776329850f, - -0.168505340072635900f, - 0.985668412161537550f, -0.168694342723617330f, 0.985636047306535420f, - -0.168883339172189980f, - 0.985603646212513400f, -0.169072329411405010f, 0.985571208880662740f, - -0.169261313434313830f, - 0.985538735312176060f, -0.169450291233967960f, 0.985506225508247290f, - -0.169639262803419290f, - 0.985473679470071810f, -0.169828228135719850f, 0.985441097198846210f, - -0.170017187223921950f, - 0.985408478695768420f, -0.170206140061078070f, 0.985375823962037710f, - -0.170395086640240940f, - 0.985343132998854790f, -0.170584026954463590f, 0.985310405807421570f, - -0.170772960996799230f, - 0.985277642388941220f, -0.170961888760301220f, 0.985244842744618540f, - -0.171150810238023280f, - 0.985212006875659350f, -0.171339725423019310f, 0.985179134783271130f, - -0.171528634308343420f, - 0.985146226468662230f, -0.171717536887049970f, 0.985113281933042710f, - -0.171906433152193530f, - 0.985080301177623800f, -0.172095323096829010f, 0.985047284203618200f, - -0.172284206714011370f, - 0.985014231012239840f, -0.172473083996795950f, 0.984981141604703960f, - -0.172661954938238270f, - 0.984948015982227030f, -0.172850819531394080f, 0.984914854146027200f, - -0.173039677769319360f, - 0.984881656097323700f, -0.173228529645070320f, 0.984848421837337010f, - -0.173417375151703470f, - 0.984815151367289140f, -0.173606214282275410f, 0.984781844688403350f, - -0.173795047029843160f, - 0.984748501801904210f, -0.173983873387463820f, 0.984715122709017620f, - -0.174172693348194820f, - 0.984681707410970940f, -0.174361506905093750f, 0.984648255908992630f, - -0.174550314051218510f, - 0.984614768204312600f, -0.174739114779627200f, 0.984581244298162180f, - -0.174927909083378160f, - 0.984547684191773960f, -0.175116696955529920f, 0.984514087886381840f, - -0.175305478389141320f, - 0.984480455383220930f, -0.175494253377271430f, 0.984446786683527920f, - -0.175683021912979490f, - 0.984413081788540700f, -0.175871783989325040f, 0.984379340699498510f, - -0.176060539599367820f, - 0.984345563417641900f, -0.176249288736167880f, 0.984311749944212780f, - -0.176438031392785410f, - 0.984277900280454370f, -0.176626767562280880f, 0.984244014427611110f, - -0.176815497237715000f, - 0.984210092386929030f, -0.177004220412148750f, 0.984176134159655320f, - -0.177192937078643280f, - 0.984142139747038570f, -0.177381647230260040f, 0.984108109150328540f, - -0.177570350860060710f, - 0.984074042370776450f, -0.177759047961107170f, 0.984039939409634970f, - -0.177947738526461560f, - 0.984005800268157870f, -0.178136422549186300f, 0.983971624947600270f, - -0.178325100022344000f, - 0.983937413449218920f, -0.178513770938997510f, 0.983903165774271500f, - -0.178702435292209970f, - 0.983868881924017220f, -0.178891093075044720f, 0.983834561899716630f, - -0.179079744280565390f, - 0.983800205702631600f, -0.179268388901835750f, 0.983765813334025240f, - -0.179457026931919890f, - 0.983731384795162090f, -0.179645658363882160f, 0.983696920087308140f, - -0.179834283190787090f, - 0.983662419211730250f, -0.180022901405699510f, 0.983627882169697210f, - -0.180211513001684450f, - 0.983593308962478650f, -0.180400117971807240f, 0.983558699591345900f, - -0.180588716309133340f, - 0.983524054057571260f, -0.180777308006728590f, 0.983489372362428730f, - -0.180965893057658980f, - 0.983454654507193270f, -0.181154471454990810f, 0.983419900493141540f, - -0.181343043191790540f, - 0.983385110321551180f, -0.181531608261124970f, 0.983350283993701500f, - -0.181720166656061110f, - 0.983315421510872810f, -0.181908718369666160f, 0.983280522874346970f, - -0.182097263395007650f, - 0.983245588085407070f, -0.182285801725153300f, 0.983210617145337640f, - -0.182474333353171120f, - 0.983175610055424420f, -0.182662858272129270f, 0.983140566816954500f, - -0.182851376475096330f, - 0.983105487431216290f, -0.183039887955140950f, 0.983070371899499640f, - -0.183228392705332140f, - 0.983035220223095640f, -0.183416890718739100f, 0.983000032403296590f, - -0.183605381988431270f, - 0.982964808441396440f, -0.183793866507478450f, 0.982929548338690170f, - -0.183982344268950520f, - 0.982894252096474070f, -0.184170815265917720f, 0.982858919716046110f, - -0.184359279491450510f, - 0.982823551198705240f, -0.184547736938619620f, 0.982788146545751970f, - -0.184736187600495950f, - 0.982752705758487830f, -0.184924631470150790f, 0.982717228838215990f, - -0.185113068540655540f, - 0.982681715786240860f, -0.185301498805081900f, 0.982646166603868050f, - -0.185489922256501880f, - 0.982610581292404750f, -0.185678338887987630f, 0.982574959853159240f, - -0.185866748692611660f, - 0.982539302287441240f, -0.186055151663446630f, 0.982503608596561830f, - -0.186243547793565560f, - 0.982467878781833170f, -0.186431937076041610f, 0.982432112844569110f, - -0.186620319503948280f, - 0.982396310786084690f, -0.186808695070359270f, 0.982360472607696210f, - -0.186997063768348540f, - 0.982324598310721280f, -0.187185425590990330f, 0.982288687896478830f, - -0.187373780531359110f, - 0.982252741366289370f, -0.187562128582529600f, 0.982216758721474510f, - -0.187750469737576780f, - 0.982180739963357090f, -0.187938803989575910f, 0.982144685093261580f, - -0.188127131331602420f, - 0.982108594112513610f, -0.188315451756732120f, 0.982072467022440000f, - -0.188503765258040940f, - 0.982036303824369020f, -0.188692071828605230f, 0.982000104519630490f, - -0.188880371461501380f, - 0.981963869109555240f, -0.189068664149806190f, 0.981927597595475540f, - -0.189256949886596750f, - 0.981891289978725100f, -0.189445228664950230f, 0.981854946260638630f, - -0.189633500477944190f, - 0.981818566442552500f, -0.189821765318656410f, 0.981782150525804310f, - -0.190010023180164990f, - 0.981745698511732990f, -0.190198274055548150f, 0.981709210401678800f, - -0.190386517937884470f, - 0.981672686196983110f, -0.190574754820252740f, 0.981636125898989080f, - -0.190762984695732110f, - 0.981599529509040720f, -0.190951207557401800f, 0.981562897028483650f, - -0.191139423398341450f, - 0.981526228458664770f, -0.191327632211630900f, 0.981489523800932130f, - -0.191515833990350210f, - 0.981452783056635520f, -0.191704028727579800f, 0.981416006227125550f, - -0.191892216416400220f, - 0.981379193313754560f, -0.192080397049892440f, 0.981342344317876040f, - -0.192268570621137500f, - 0.981305459240844670f, -0.192456737123216840f, 0.981268538084016710f, - -0.192644896549212100f, - 0.981231580848749730f, -0.192833048892205230f, 0.981194587536402320f, - -0.193021194145278380f, - 0.981157558148334830f, -0.193209332301513960f, 0.981120492685908730f, - -0.193397463353994740f, - 0.981083391150486710f, -0.193585587295803610f, 0.981046253543432780f, - -0.193773704120023820f, - 0.981009079866112630f, -0.193961813819738840f, 0.980971870119892840f, - -0.194149916388032450f, - 0.980934624306141640f, -0.194338011817988600f, 0.980897342426228390f, - -0.194526100102691610f, - 0.980860024481523870f, -0.194714181235225960f, 0.980822670473400100f, - -0.194902255208676520f, - 0.980785280403230430f, -0.195090322016128250f, 0.980747854272389750f, - -0.195278381650666550f, - 0.980710392082253970f, -0.195466434105376980f, 0.980672893834200530f, - -0.195654479373345370f, - 0.980635359529608120f, -0.195842517447657850f, 0.980597789169856850f, - -0.196030548321400790f, - 0.980560182756327840f, -0.196218571987660880f, 0.980522540290404090f, - -0.196406588439524970f, - 0.980484861773469380f, -0.196594597670080220f, 0.980447147206909060f, - -0.196782599672414100f, - 0.980409396592109910f, -0.196970594439614340f, 0.980371609930459800f, - -0.197158581964768880f, - 0.980333787223347960f, -0.197346562240965920f, 0.980295928472165290f, - -0.197534535261294030f, - 0.980258033678303550f, -0.197722501018841920f, 0.980220102843156080f, - -0.197910459506698670f, - 0.980182135968117430f, -0.198098410717953560f, 0.980144133054583590f, - -0.198286354645696220f, - 0.980106094103951770f, -0.198474291283016390f, 0.980068019117620650f, - -0.198662220623004200f, - 0.980029908096990090f, -0.198850142658750090f, 0.979991761043461200f, - -0.199038057383344680f, - 0.979953577958436740f, -0.199225964789878830f, 0.979915358843320480f, - -0.199413864871443770f, - 0.979877103699517640f, -0.199601757621130970f, 0.979838812528434740f, - -0.199789643032032090f, - 0.979800485331479790f, -0.199977521097239150f, 0.979762122110061750f, - -0.200165391809844440f, - 0.979723722865591170f, -0.200353255162940450f, 0.979685287599479930f, - -0.200541111149619980f, - 0.979646816313141210f, -0.200728959762976140f, 0.979608309007989450f, - -0.200916800996102230f, - 0.979569765685440520f, -0.201104634842091900f, 0.979531186346911500f, - -0.201292461294039020f, - 0.979492570993820810f, -0.201480280345037730f, 0.979453919627588210f, - -0.201668091988182530f, - 0.979415232249634780f, -0.201855896216568050f, 0.979376508861383170f, - -0.202043693023289260f, - 0.979337749464256780f, -0.202231482401441450f, 0.979298954059681040f, - -0.202419264344120160f, - 0.979260122649082020f, -0.202607038844421130f, 0.979221255233887700f, - -0.202794805895440440f, - 0.979182351815526930f, -0.202982565490274440f, 0.979143412395430230f, - -0.203170317622019790f, - 0.979104436975029250f, -0.203358062283773320f, 0.979065425555756930f, - -0.203545799468632190f, - 0.979026378139047580f, -0.203733529169693920f, 0.978987294726337050f, - -0.203921251380056120f, - 0.978948175319062200f, -0.204108966092816870f, 0.978909019918661310f, - -0.204296673301074370f, - 0.978869828526574120f, -0.204484372997927240f, 0.978830601144241470f, - -0.204672065176474210f, - 0.978791337773105670f, -0.204859749829814420f, 0.978752038414610340f, - -0.205047426951047250f, - 0.978712703070200420f, -0.205235096533272350f, 0.978673331741322210f, - -0.205422758569589610f, - 0.978633924429423210f, -0.205610413053099240f, 0.978594481135952270f, - -0.205798059976901790f, - 0.978555001862359550f, -0.205985699334097910f, 0.978515486610096910f, - -0.206173331117788710f, - 0.978475935380616830f, -0.206360955321075510f, 0.978436348175373730f, - -0.206548571937059890f, - 0.978396724995823090f, -0.206736180958843690f, 0.978357065843421640f, - -0.206923782379529100f, - 0.978317370719627650f, -0.207111376192218560f, 0.978277639625900530f, - -0.207298962390014750f, - 0.978237872563701090f, -0.207486540966020650f, 0.978198069534491400f, - -0.207674111913339570f, - 0.978158230539735050f, -0.207861675225075070f, 0.978118355580896660f, - -0.208049230894330940f, - 0.978078444659442380f, -0.208236778914211330f, 0.978038497776839600f, - -0.208424319277820600f, - 0.977998514934557140f, -0.208611851978263490f, 0.977958496134064830f, - -0.208799377008644900f, - 0.977918441376834370f, -0.208986894362070070f, 0.977878350664338150f, - -0.209174404031644580f, - 0.977838223998050430f, -0.209361906010474160f, 0.977798061379446360f, - -0.209549400291664940f, - 0.977757862810002760f, -0.209736886868323290f, 0.977717628291197460f, - -0.209924365733555880f, - 0.977677357824509930f, -0.210111836880469610f, 0.977637051411420770f, - -0.210299300302171730f, - 0.977596709053411890f, -0.210486755991769720f, 0.977556330751966460f, - -0.210674203942371440f, - 0.977515916508569280f, -0.210861644147084860f, 0.977475466324706170f, - -0.211049076599018390f, - 0.977434980201864260f, -0.211236501291280710f, 0.977394458141532250f, - -0.211423918216980670f, - 0.977353900145199960f, -0.211611327369227550f, 0.977313306214358750f, - -0.211798728741130840f, - 0.977272676350500860f, -0.211986122325800330f, 0.977232010555120320f, - -0.212173508116346080f, - 0.977191308829712280f, -0.212360886105878420f, 0.977150571175773200f, - -0.212548256287508060f, - 0.977109797594800880f, -0.212735618654345930f, 0.977068988088294450f, - -0.212922973199503180f, - 0.977028142657754390f, -0.213110319916091360f, 0.976987261304682390f, - -0.213297658797222320f, - 0.976946344030581670f, -0.213484989836008050f, 0.976905390836956490f, - -0.213672313025560970f, - 0.976864401725312640f, -0.213859628358993750f, 0.976823376697157240f, - -0.214046935829419360f, - 0.976782315753998650f, -0.214234235429950990f, 0.976741218897346550f, - -0.214421527153702160f, - 0.976700086128711840f, -0.214608810993786760f, 0.976658917449606980f, - -0.214796086943318860f, - 0.976617712861545640f, -0.214983354995412820f, 0.976576472366042610f, - -0.215170615143183390f, - 0.976535195964614470f, -0.215357867379745550f, 0.976493883658778650f, - -0.215545111698214500f, - 0.976452535450054060f, -0.215732348091705880f, 0.976411151339961040f, - -0.215919576553335490f, - 0.976369731330021140f, -0.216106797076219520f, 0.976328275421757260f, - -0.216294009653474340f, - 0.976286783616693630f, -0.216481214278216730f, 0.976245255916355800f, - -0.216668410943563730f, - 0.976203692322270560f, -0.216855599642632620f, 0.976162092835966110f, - -0.217042780368540990f, - 0.976120457458971910f, -0.217229953114406790f, 0.976078786192818850f, - -0.217417117873348190f, - 0.976037079039039020f, -0.217604274638483640f, 0.975995335999165990f, - -0.217791423402931950f, - 0.975953557074734300f, -0.217978564159812200f, 0.975911742267280170f, - -0.218165696902243800f, - 0.975869891578341030f, -0.218352821623346320f, 0.975828005009455660f, - -0.218539938316239770f, - 0.975786082562163930f, -0.218727046974044440f, 0.975744124238007270f, - -0.218914147589880840f, - 0.975702130038528570f, -0.219101240156869800f, 0.975660099965271590f, - -0.219288324668132470f, - 0.975618034019781750f, -0.219475401116790310f, 0.975575932203605720f, - -0.219662469495965050f, - 0.975533794518291360f, -0.219849529798778700f, 0.975491620965388110f, - -0.220036582018353580f, - 0.975449411546446380f, -0.220223626147812380f, 0.975407166263018270f, - -0.220410662180277940f, - 0.975364885116656980f, -0.220597690108873510f, 0.975322568108916930f, - -0.220784709926722610f, - 0.975280215241354220f, -0.220971721626949110f, 0.975237826515525820f, - -0.221158725202677010f, - 0.975195401932990370f, -0.221345720647030810f, 0.975152941495307620f, - -0.221532707953135230f, - 0.975110445204038890f, -0.221719687114115220f, 0.975067913060746470f, - -0.221906658123096100f, - 0.975025345066994120f, -0.222093620973203510f, 0.974982741224347140f, - -0.222280575657563370f, - 0.974940101534371830f, -0.222467522169301880f, 0.974897425998635820f, - -0.222654460501545500f, - 0.974854714618708430f, -0.222841390647421120f, 0.974811967396159830f, - -0.223028312600055820f, - 0.974769184332561770f, -0.223215226352576980f, 0.974726365429487320f, - -0.223402131898112370f, - 0.974683510688510670f, -0.223589029229789990f, 0.974640620111207560f, - -0.223775918340738150f, - 0.974597693699155050f, -0.223962799224085460f, 0.974554731453931230f, - -0.224149671872960870f, - 0.974511733377115720f, -0.224336536280493600f, 0.974468699470289580f, - -0.224523392439813170f, - 0.974425629735034990f, -0.224710240344049430f, 0.974382524172935470f, - -0.224897079986332490f, - 0.974339382785575860f, -0.225083911359792830f, 0.974296205574542440f, - -0.225270734457561160f, - 0.974252992541422500f, -0.225457549272768540f, 0.974209743687805220f, - -0.225644355798546330f, - 0.974166459015280320f, -0.225831154028026170f, 0.974123138525439640f, - -0.226017943954340020f, - 0.974079782219875680f, -0.226204725570620190f, 0.974036390100182610f, - -0.226391498869999240f, - 0.973992962167955830f, -0.226578263845610000f, 0.973949498424792170f, - -0.226765020490585690f, - 0.973905998872289570f, -0.226951768798059810f, 0.973862463512047300f, - -0.227138508761166170f, - 0.973818892345666100f, -0.227325240373038860f, 0.973775285374748110f, - -0.227511963626812280f, - 0.973731642600896400f, -0.227698678515621170f, 0.973687964025715670f, - -0.227885385032600530f, - 0.973644249650811980f, -0.228072083170885730f, 0.973600499477792370f, - -0.228258772923612380f, - 0.973556713508265560f, -0.228445454283916470f, 0.973512891743841370f, - -0.228632127244934230f, - 0.973469034186131070f, -0.228818791799802220f, 0.973425140836747030f, - -0.229005447941657340f, - 0.973381211697303290f, -0.229192095663636770f, 0.973337246769414910f, - -0.229378734958878010f, - 0.973293246054698250f, -0.229565365820518870f, 0.973249209554771230f, - -0.229751988241697490f, - 0.973205137271252800f, -0.229938602215552210f, 0.973161029205763530f, - -0.230125207735221850f, - 0.973116885359925130f, -0.230311804793845440f, 0.973072705735360530f, - -0.230498393384562350f, - 0.973028490333694210f, -0.230684973500512200f, 0.972984239156551740f, - -0.230871545134835020f, - 0.972939952205560180f, -0.231058108280671110f, 0.972895629482347760f, - -0.231244662931161050f, - 0.972851270988544180f, -0.231431209079445750f, 0.972806876725780370f, - -0.231617746718666470f, - 0.972762446695688570f, -0.231804275841964780f, 0.972717980899902250f, - -0.231990796442482440f, - 0.972673479340056430f, -0.232177308513361710f, 0.972628942017787270f, - -0.232363812047745030f, - 0.972584368934732210f, -0.232550307038775240f, 0.972539760092530180f, - -0.232736793479595390f, - 0.972495115492821190f, -0.232923271363348980f, 0.972450435137246830f, - -0.233109740683179690f, - 0.972405719027449770f, -0.233296201432231590f, 0.972360967165074140f, - -0.233482653603649090f, - 0.972316179551765300f, -0.233669097190576820f, 0.972271356189170040f, - -0.233855532186159840f, - 0.972226497078936270f, -0.234041958583543430f, 0.972181602222713440f, - -0.234228376375873210f, - 0.972136671622152230f, -0.234414785556295160f, 0.972091705278904430f, - -0.234601186117955550f, - 0.972046703194623500f, -0.234787578054000970f, 0.972001665370963890f, - -0.234973961357578250f, - 0.971956591809581720f, -0.235160336021834730f, 0.971911482512134000f, - -0.235346702039917840f, - 0.971866337480279400f, -0.235533059404975490f, 0.971821156715677700f, - -0.235719408110155820f, - 0.971775940219990140f, -0.235905748148607370f, 0.971730687994879160f, - -0.236092079513478910f, - 0.971685400042008540f, -0.236278402197919570f, 0.971640076363043390f, - -0.236464716195078780f, - 0.971594716959650160f, -0.236651021498106380f, 0.971549321833496630f, - -0.236837318100152380f, - 0.971503890986251780f, -0.237023605994367200f, 0.971458424419585960f, - -0.237209885173901600f, - 0.971412922135170940f, -0.237396155631906610f, 0.971367384134679490f, - -0.237582417361533570f, - 0.971321810419786160f, -0.237768670355934190f, 0.971276200992166490f, - -0.237954914608260540f, - 0.971230555853497380f, -0.238141150111664840f, 0.971184875005457030f, - -0.238327376859299810f, - 0.971139158449725090f, -0.238513594844318420f, 0.971093406187982460f, - -0.238699804059873980f, - 0.971047618221911100f, -0.238886004499120040f, 0.971001794553194690f, - -0.239072196155210610f, - 0.970955935183517970f, -0.239258379021299980f, 0.970910040114567050f, - -0.239444553090542630f, - 0.970864109348029470f, -0.239630718356093560f, 0.970818142885593870f, - -0.239816874811108000f, - 0.970772140728950350f, -0.240003022448741500f, 0.970726102879790110f, - -0.240189161262149900f, - 0.970680029339806130f, -0.240375291244489450f, 0.970633920110692160f, - -0.240561412388916650f, - 0.970587775194143630f, -0.240747524688588430f, 0.970541594591857070f, - -0.240933628136661910f, - 0.970495378305530560f, -0.241119722726294590f, 0.970449126336863090f, - -0.241305808450644370f, - 0.970402838687555500f, -0.241491885302869330f, 0.970356515359309450f, - -0.241677953276128010f, - 0.970310156353828110f, -0.241864012363579180f, 0.970263761672816140f, - -0.242050062558382070f, - 0.970217331317979160f, -0.242236103853696010f, 0.970170865291024480f, - -0.242422136242680890f, - 0.970124363593660280f, -0.242608159718496810f, 0.970077826227596420f, - -0.242794174274304220f, - 0.970031253194543970f, -0.242980179903263870f, 0.969984644496215240f, - -0.243166176598536900f, - 0.969938000134323960f, -0.243352164353284740f, 0.969891320110585100f, - -0.243538143160669130f, - 0.969844604426714830f, -0.243724113013852160f, 0.969797853084430890f, - -0.243910073905996260f, - 0.969751066085452140f, -0.244096025830264210f, 0.969704243431498860f, - -0.244281968779819030f, - 0.969657385124292450f, -0.244467902747824150f, 0.969610491165555870f, - -0.244653827727443320f, - 0.969563561557013180f, -0.244839743711840670f, 0.969516596300390000f, - -0.245025650694180470f, - 0.969469595397413060f, -0.245211548667627540f, 0.969422558849810320f, - -0.245397437625346960f, - 0.969375486659311280f, -0.245583317560504060f, 0.969328378827646660f, - -0.245769188466264580f, - 0.969281235356548530f, -0.245955050335794590f, 0.969234056247750050f, - -0.246140903162260530f, - 0.969186841502985950f, -0.246326746938829030f, 0.969139591123992280f, - -0.246512581658667210f, - 0.969092305112506210f, -0.246698407314942410f, 0.969044983470266240f, - -0.246884223900822430f, - 0.968997626199012420f, -0.247070031409475250f, 0.968950233300485800f, - -0.247255829834069300f, - 0.968902804776428870f, -0.247441619167773270f, 0.968855340628585580f, - -0.247627399403756280f, - 0.968807840858700970f, -0.247813170535187670f, 0.968760305468521430f, - -0.247998932555237110f, - 0.968712734459794780f, -0.248184685457074780f, 0.968665127834270060f, - -0.248370429233870980f, - 0.968617485593697540f, -0.248556163878796560f, 0.968569807739828930f, - -0.248741889385022480f, - 0.968522094274417380f, -0.248927605745720150f, 0.968474345199216820f, - -0.249113312954061360f, - 0.968426560515983190f, -0.249299011003218190f, 0.968378740226473300f, - -0.249484699886362960f, - 0.968330884332445190f, -0.249670379596668550f, 0.968282992835658660f, - -0.249856050127307990f, - 0.968235065737874320f, -0.250041711471454650f, 0.968187103040854420f, - -0.250227363622282370f, - 0.968139104746362440f, -0.250413006572965220f, 0.968091070856162970f, - -0.250598640316677670f, - 0.968043001372022260f, -0.250784264846594500f, 0.967994896295707670f, - -0.250969880155890720f, - 0.967946755628987800f, -0.251155486237741920f, 0.967898579373632660f, - -0.251341083085323880f, - 0.967850367531413620f, -0.251526670691812610f, 0.967802120104103270f, - -0.251712249050384700f, - 0.967753837093475510f, -0.251897818154216970f, 0.967705518501305480f, - -0.252083377996486450f, - 0.967657164329369880f, -0.252268928570370810f, 0.967608774579446500f, - -0.252454469869047740f, - 0.967560349253314360f, -0.252640001885695520f, 0.967511888352754150f, - -0.252825524613492610f, - 0.967463391879547550f, -0.253011038045617860f, 0.967414859835477480f, - -0.253196542175250560f, - 0.967366292222328510f, -0.253382036995570160f, 0.967317689041886310f, - -0.253567522499756560f, - 0.967269050295937790f, -0.253752998680989990f, 0.967220375986271420f, - -0.253938465532451090f, - 0.967171666114676640f, -0.254123923047320620f, 0.967122920682944360f, - -0.254309371218780000f, - 0.967074139692867040f, -0.254494810040010730f, 0.967025323146238010f, - -0.254680239504194830f, - 0.966976471044852070f, -0.254865659604514570f, 0.966927583390505660f, - -0.255051070334152470f, - 0.966878660184995910f, -0.255236471686291710f, 0.966829701430121810f, - -0.255421863654115460f, - 0.966780707127683270f, -0.255607246230807380f, 0.966731677279481840f, - -0.255792619409551610f, - 0.966682611887320080f, -0.255977983183532430f, 0.966633510953002100f, - -0.256163337545934460f, - 0.966584374478333120f, -0.256348682489942910f, 0.966535202465119700f, - -0.256534018008743040f, - 0.966485994915169840f, -0.256719344095520660f, 0.966436751830292650f, - -0.256904660743461910f, - 0.966387473212298900f, -0.257089967945753120f, 0.966338159063000130f, - -0.257275265695581120f, - 0.966288809384209690f, -0.257460553986133100f, 0.966239424177741890f, - -0.257645832810596390f, - 0.966190003445412500f, -0.257831102162158990f, 0.966140547189038750f, - -0.258016362034009020f, - 0.966091055410438830f, -0.258201612419334870f, 0.966041528111432400f, - -0.258386853311325600f, - 0.965991965293840570f, -0.258572084703170340f, 0.965942366959485540f, - -0.258757306588058680f, - 0.965892733110190860f, -0.258942518959180520f, 0.965843063747781510f, - -0.259127721809726150f, - 0.965793358874083680f, -0.259312915132886230f, 0.965743618490924830f, - -0.259498098921851660f, - 0.965693842600133690f, -0.259683273169813770f, 0.965644031203540590f, - -0.259868437869964270f, - 0.965594184302976830f, -0.260053593015495190f, 0.965544301900275180f, - -0.260238738599598840f, - 0.965494383997269500f, -0.260423874615468010f, 0.965444430595795430f, - -0.260609001056295750f, - 0.965394441697689400f, -0.260794117915275510f, 0.965344417304789370f, - -0.260979225185601070f, - 0.965294357418934660f, -0.261164322860466480f, 0.965244262041965780f, - -0.261349410933066350f, - 0.965194131175724720f, -0.261534489396595520f, 0.965143964822054450f, - -0.261719558244249030f, - 0.965093762982799590f, -0.261904617469222610f, 0.965043525659805890f, - -0.262089667064712040f, - 0.964993252854920320f, -0.262274707023913590f, 0.964942944569991410f, - -0.262459737340023980f, - 0.964892600806868890f, -0.262644758006240040f, 0.964842221567403620f, - -0.262829769015759160f, - 0.964791806853447900f, -0.263014770361779000f, 0.964741356666855340f, - -0.263199762037497560f, - 0.964690871009481030f, -0.263384744036113280f, 0.964640349883180930f, - -0.263569716350824880f, - 0.964589793289812760f, -0.263754678974831350f, 0.964539201231235150f, - -0.263939631901332350f, - 0.964488573709308410f, -0.264124575123527550f, 0.964437910725893910f, - -0.264309508634617110f, - 0.964387212282854290f, -0.264494432427801630f, 0.964336478382053720f, - -0.264679346496281890f, - 0.964285709025357480f, -0.264864250833259260f, 0.964234904214632200f, - -0.265049145431935250f, - 0.964184063951745830f, -0.265234030285511790f, 0.964133188238567640f, - -0.265418905387191260f, - 0.964082277076968140f, -0.265603770730176330f, 0.964031330468819280f, - -0.265788626307669920f, - 0.963980348415994110f, -0.265973472112875590f, 0.963929330920367140f, - -0.266158308138996990f, - 0.963878277983814200f, -0.266343134379238180f, 0.963827189608212340f, - -0.266527950826803690f, - 0.963776065795439840f, -0.266712757474898370f, 0.963724906547376530f, - -0.266897554316727350f, - 0.963673711865903230f, -0.267082341345496300f, 0.963622481752902220f, - -0.267267118554410930f, - 0.963571216210257320f, -0.267451885936677620f, 0.963519915239853140f, - -0.267636643485503090f, - 0.963468578843575950f, -0.267821391194094150f, 0.963417207023313350f, - -0.268006129055658290f, - 0.963365799780954050f, -0.268190857063403180f, 0.963314357118388200f, - -0.268375575210536900f, - 0.963262879037507070f, -0.268560283490267890f, 0.963211365540203480f, - -0.268744981895804980f, - 0.963159816628371360f, -0.268929670420357260f, 0.963108232303906190f, - -0.269114349057134380f, - 0.963056612568704340f, -0.269299017799346120f, 0.963004957424663850f, - -0.269483676640202840f, - 0.962953266873683880f, -0.269668325572915090f, 0.962901540917665000f, - -0.269852964590693860f, - 0.962849779558509030f, -0.270037593686750570f, 0.962797982798119010f, - -0.270222212854296870f, - 0.962746150638399410f, -0.270406822086544820f, 0.962694283081255930f, - -0.270591421376706940f, - 0.962642380128595710f, -0.270776010717996010f, 0.962590441782326890f, - -0.270960590103625170f, - 0.962538468044359160f, -0.271145159526808010f, 0.962486458916603450f, - -0.271329718980758420f, - 0.962434414400972100f, -0.271514268458690700f, 0.962382334499378380f, - -0.271698807953819510f, - 0.962330219213737400f, -0.271883337459359720f, 0.962278068545965090f, - -0.272067856968526920f, - 0.962225882497979020f, -0.272252366474536710f, 0.962173661071697880f, - -0.272436865970605240f, - 0.962121404269041580f, -0.272621355449948980f, 0.962069112091931580f, - -0.272805834905784810f, - 0.962016784542290560f, -0.272990304331329920f, 0.961964421622042320f, - -0.273174763719801930f, - 0.961912023333112210f, -0.273359213064418680f, 0.961859589677426570f, - -0.273543652358398730f, - 0.961807120656913540f, -0.273728081594960540f, 0.961754616273502010f, - -0.273912500767323260f, - 0.961702076529122540f, -0.274096909868706380f, 0.961649501425706820f, - -0.274281308892329660f, - 0.961596890965187860f, -0.274465697831413220f, 0.961544245149499990f, - -0.274650076679177680f, - 0.961491563980579000f, -0.274834445428843940f, 0.961438847460361680f, - -0.275018804073633220f, - 0.961386095590786250f, -0.275203152606767310f, 0.961333308373792270f, - -0.275387491021468140f, - 0.961280485811320640f, -0.275571819310958140f, 0.961227627905313460f, - -0.275756137468460120f, - 0.961174734657714080f, -0.275940445487197150f, 0.961121806070467380f, - -0.276124743360392830f, - 0.961068842145519350f, -0.276309031081271080f, 0.961015842884817230f, - -0.276493308643055990f, - 0.960962808290309780f, -0.276677576038972420f, 0.960909738363946770f, - -0.276861833262245280f, - 0.960856633107679660f, -0.277046080306099900f, 0.960803492523460760f, - -0.277230317163762170f, - 0.960750316613243950f, -0.277414543828458090f, 0.960697105378984450f, - -0.277598760293414290f, - 0.960643858822638590f, -0.277782966551857690f, 0.960590576946164120f, - -0.277967162597015370f, - 0.960537259751520050f, -0.278151348422115090f, 0.960483907240666790f, - -0.278335524020384920f, - 0.960430519415565790f, -0.278519689385053060f, 0.960377096278180130f, - -0.278703844509348490f, - 0.960323637830473920f, -0.278887989386500280f, 0.960270144074412800f, - -0.279072124009737800f, - 0.960216615011963430f, -0.279256248372291180f, 0.960163050645094000f, - -0.279440362467390510f, - 0.960109450975773940f, -0.279624466288266590f, 0.960055816005973890f, - -0.279808559828150390f, - 0.960002145737665960f, -0.279992643080273220f, 0.959948440172823210f, - -0.280176716037866980f, - 0.959894699313420530f, -0.280360778694163810f, 0.959840923161433770f, - -0.280544831042396250f, - 0.959787111718839900f, -0.280728873075797190f, 0.959733264987617680f, - -0.280912904787600000f, - 0.959679382969746750f, -0.281096926171038260f, 0.959625465667208190f, - -0.281280937219346110f, - 0.959571513081984520f, -0.281464937925757940f, 0.959517525216059260f, - -0.281648928283508630f, - 0.959463502071417510f, -0.281832908285833350f, 0.959409443650045550f, - -0.282016877925967640f, - 0.959355349953930790f, -0.282200837197147560f, 0.959301220985062210f, - -0.282384786092609360f, - 0.959247056745430090f, -0.282568724605589740f, 0.959192857237025740f, - -0.282752652729325930f, - 0.959138622461841890f, -0.282936570457055390f, 0.959084352421872730f, - -0.283120477782015820f, - 0.959030047119113660f, -0.283304374697445740f, 0.958975706555561080f, - -0.283488261196583550f, - 0.958921330733213170f, -0.283672137272668430f, 0.958866919654069010f, - -0.283856002918939750f, - 0.958812473320129310f, -0.284039858128637190f, 0.958757991733395710f, - -0.284223702895001040f, - 0.958703474895871600f, -0.284407537211271880f, 0.958648922809561150f, - -0.284591361070690440f, - 0.958594335476470220f, -0.284775174466498300f, 0.958539712898605730f, - -0.284958977391937040f, - 0.958485055077976100f, -0.285142769840248670f, 0.958430362016590930f, - -0.285326551804675870f, - 0.958375633716461170f, -0.285510323278461260f, 0.958320870179598880f, - -0.285694084254848320f, - 0.958266071408017670f, -0.285877834727080620f, 0.958211237403732260f, - -0.286061574688402040f, - 0.958156368168758820f, -0.286245304132057120f, 0.958101463705114730f, - -0.286429023051290700f, - 0.958046524014818600f, -0.286612731439347790f, 0.957991549099890370f, - -0.286796429289474080f, - 0.957936538962351420f, -0.286980116594915570f, 0.957881493604224370f, - -0.287163793348918390f, - 0.957826413027532910f, -0.287347459544729510f, 0.957771297234302320f, - -0.287531115175595930f, - 0.957716146226558870f, -0.287714760234765170f, 0.957660960006330610f, - -0.287898394715485170f, - 0.957605738575646350f, -0.288082018611004130f, 0.957550481936536470f, - -0.288265631914570770f, - 0.957495190091032570f, -0.288449234619434220f, 0.957439863041167680f, - -0.288632826718843830f, - 0.957384500788975860f, -0.288816408206049480f, 0.957329103336492790f, - -0.288999979074301420f, - 0.957273670685755200f, -0.289183539316850200f, 0.957218202838801210f, - -0.289367088926947010f, - 0.957162699797670210f, -0.289550627897843030f, 0.957107161564402790f, - -0.289734156222790250f, - 0.957051588141040970f, -0.289917673895040750f, 0.956995979529628230f, - -0.290101180907847090f, - 0.956940335732208820f, -0.290284677254462330f, 0.956884656750828900f, - -0.290468162928139820f, - 0.956828942587535370f, -0.290651637922133220f, 0.956773193244376930f, - -0.290835102229696830f, - 0.956717408723403050f, -0.291018555844085090f, 0.956661589026665090f, - -0.291201998758552900f, - 0.956605734156215080f, -0.291385430966355660f, 0.956549844114106820f, - -0.291568852460749040f, - 0.956493918902395100f, -0.291752263234989260f, 0.956437958523136180f, - -0.291935663282332780f, - 0.956381962978387730f, -0.292119052596036380f, 0.956325932270208230f, - -0.292302431169357560f, - 0.956269866400658030f, -0.292485798995553880f, 0.956213765371798470f, - -0.292669156067883460f, - 0.956157629185692140f, -0.292852502379604810f, 0.956101457844403040f, - -0.293035837923976810f, - 0.956045251349996410f, -0.293219162694258630f, 0.955989009704538930f, - -0.293402476683710110f, - 0.955932732910098280f, -0.293585779885591200f, 0.955876420968743590f, - -0.293769072293162400f, - 0.955820073882545420f, -0.293952353899684660f, 0.955763691653575440f, - -0.294135624698419030f, - 0.955707274283906560f, -0.294318884682627400f, 0.955650821775613330f, - -0.294502133845571670f, - 0.955594334130771110f, -0.294685372180514330f, 0.955537811351456880f, - -0.294868599680718270f, - 0.955481253439748770f, -0.295051816339446720f, 0.955424660397726330f, - -0.295235022149963220f, - 0.955368032227470350f, -0.295418217105532010f, 0.955311368931062720f, - -0.295601401199417360f, - 0.955254670510586990f, -0.295784574424884260f, 0.955197936968127710f, - -0.295967736775197890f, - 0.955141168305770780f, -0.296150888243623790f, 0.955084364525603410f, - -0.296334028823428190f, - 0.955027525629714160f, -0.296517158507877470f, 0.954970651620192790f, - -0.296700277290238350f, - 0.954913742499130520f, -0.296883385163778270f, 0.954856798268619580f, - -0.297066482121764730f, - 0.954799818930753720f, -0.297249568157465840f, 0.954742804487627940f, - -0.297432643264150030f, - 0.954685754941338340f, -0.297615707435086200f, 0.954628670293982680f, - -0.297798760663543550f, - 0.954571550547659630f, -0.297981802942791810f, 0.954514395704469500f, - -0.298164834266100850f, - 0.954457205766513490f, -0.298347854626741400f, 0.954399980735894490f, - -0.298530864017984120f, - 0.954342720614716480f, -0.298713862433100330f, 0.954285425405084650f, - -0.298896849865361800f, - 0.954228095109105670f, -0.299079826308040480f, 0.954170729728887280f, - -0.299262791754408840f, - 0.954113329266538800f, -0.299445746197739890f, 0.954055893724170660f, - -0.299628689631306790f, - 0.953998423103894490f, -0.299811622048383350f, 0.953940917407823500f, - -0.299994543442243580f, - 0.953883376638071770f, -0.300177453806161950f, 0.953825800796755050f, - -0.300360353133413530f, - 0.953768189885990330f, -0.300543241417273450f, 0.953710543907895670f, - -0.300726118651017500f, - 0.953652862864590500f, -0.300908984827921890f, 0.953595146758195680f, - -0.301091839941263100f, - 0.953537395590833280f, -0.301274683984317950f, 0.953479609364626610f, - -0.301457516950363940f, - 0.953421788081700310f, -0.301640338832678770f, 0.953363931744180330f, - -0.301823149624540650f, - 0.953306040354193860f, -0.302005949319228080f, 0.953248113913869320f, - -0.302188737910019990f, - 0.953190152425336670f, -0.302371515390195970f, 0.953132155890726750f, - -0.302554281753035610f, - 0.953074124312172200f, -0.302737036991819140f, 0.953016057691806530f, - -0.302919781099827310f, - 0.952957956031764700f, -0.303102514070341060f, 0.952899819334182880f, - -0.303285235896641750f, - 0.952841647601198720f, -0.303467946572011320f, 0.952783440834950920f, - -0.303650646089731910f, - 0.952725199037579570f, -0.303833334443086360f, 0.952666922211226170f, - -0.304016011625357570f, - 0.952608610358033350f, -0.304198677629829110f, 0.952550263480144930f, - -0.304381332449784880f, - 0.952491881579706320f, -0.304563976078509100f, 0.952433464658864030f, - -0.304746608509286530f, - 0.952375012719765880f, -0.304929229735402370f, 0.952316525764560940f, - -0.305111839750142110f, - 0.952258003795399600f, -0.305294438546791670f, 0.952199446814433580f, - -0.305477026118637420f, - 0.952140854823815830f, -0.305659602458966120f, 0.952082227825700620f, - -0.305842167561065080f, - 0.952023565822243570f, -0.306024721418221790f, 0.951964868815601380f, - -0.306207264023724220f, - 0.951906136807932350f, -0.306389795370860920f, 0.951847369801395620f, - -0.306572315452920740f, - 0.951788567798152130f, -0.306754824263192780f, 0.951729730800363830f, - -0.306937321794966910f, - 0.951670858810193860f, -0.307119808041533100f, 0.951611951829806850f, - -0.307302282996181790f, - 0.951553009861368590f, -0.307484746652204100f, 0.951494032907046370f, - -0.307667199002891190f, - 0.951435020969008340f, -0.307849640041534870f, 0.951375974049424420f, - -0.308032069761427330f, - 0.951316892150465550f, -0.308214488155861050f, 0.951257775274304000f, - -0.308396895218129190f, - 0.951198623423113230f, -0.308579290941525090f, 0.951139436599068190f, - -0.308761675319342450f, - 0.951080214804345010f, -0.308944048344875710f, 0.951020958041121080f, - -0.309126410011419440f, - 0.950961666311575080f, -0.309308760312268730f, 0.950902339617887060f, - -0.309491099240719100f, - 0.950842977962238160f, -0.309673426790066380f, 0.950783581346811070f, - -0.309855742953607070f, - 0.950724149773789610f, -0.310038047724637890f, 0.950664683245358910f, - -0.310220341096455850f, - 0.950605181763705340f, -0.310402623062358720f, 0.950545645331016600f, - -0.310584893615644450f, - 0.950486073949481700f, -0.310767152749611470f, 0.950426467621290900f, - -0.310949400457558640f, - 0.950366826348635780f, -0.311131636732785270f, 0.950307150133709260f, - -0.311313861568590920f, - 0.950247438978705230f, -0.311496074958275910f, 0.950187692885819280f, - -0.311678276895140550f, - 0.950127911857248100f, -0.311860467372486020f, 0.950068095895189590f, - -0.312042646383613510f, - 0.950008245001843000f, -0.312224813921824880f, 0.949948359179409010f, - -0.312406969980422440f, - 0.949888438430089300f, -0.312589114552708710f, 0.949828482756087110f, - -0.312771247631986770f, - 0.949768492159606680f, -0.312953369211560200f, 0.949708466642853800f, - -0.313135479284732840f, - 0.949648406208035480f, -0.313317577844809010f, 0.949588310857359950f, - -0.313499664885093510f, - 0.949528180593036670f, -0.313681740398891520f, 0.949468015417276550f, - -0.313863804379508500f, - 0.949407815332291570f, -0.314045856820250710f, 0.949347580340295210f, - -0.314227897714424440f, - 0.949287310443502120f, -0.314409927055336660f, 0.949227005644128210f, - -0.314591944836294660f, - 0.949166665944390700f, -0.314773951050606070f, 0.949106291346508260f, - -0.314955945691579140f, - 0.949045881852700560f, -0.315137928752522440f, 0.948985437465188710f, - -0.315319900226744890f, - 0.948924958186195160f, -0.315501860107555990f, 0.948864444017943340f, - -0.315683808388265650f, - 0.948803894962658490f, -0.315865745062183960f, 0.948743311022566480f, - -0.316047670122621860f, - 0.948682692199895090f, -0.316229583562890330f, 0.948622038496872990f, - -0.316411485376300980f, - 0.948561349915730270f, -0.316593375556165850f, 0.948500626458698260f, - -0.316775254095797270f, - 0.948439868128009620f, -0.316957120988508150f, 0.948379074925898120f, - -0.317138976227611780f, - 0.948318246854599090f, -0.317320819806421740f, 0.948257383916349060f, - -0.317502651718252260f, - 0.948196486113385580f, -0.317684471956417970f, 0.948135553447947980f, - -0.317866280514233660f, - 0.948074585922276230f, -0.318048077385014950f, 0.948013583538612200f, - -0.318229862562077530f, - 0.947952546299198670f, -0.318411636038737790f, 0.947891474206279840f, - -0.318593397808312420f, - 0.947830367262101010f, -0.318775147864118480f, 0.947769225468909180f, - -0.318956886199473650f, - 0.947708048828952100f, -0.319138612807695900f, 0.947646837344479300f, - -0.319320327682103610f, - 0.947585591017741090f, -0.319502030816015690f, 0.947524309850989570f, - -0.319683722202751430f, - 0.947462993846477700f, -0.319865401835630500f, 0.947401643006459900f, - -0.320047069707973140f, - 0.947340257333192050f, -0.320228725813099860f, 0.947278836828930880f, - -0.320410370144331820f, - 0.947217381495934820f, -0.320592002694990330f, 0.947155891336463270f, - -0.320773623458397330f, - 0.947094366352777220f, -0.320955232427875210f, 0.947032806547138620f, - -0.321136829596746660f, - 0.946971211921810880f, -0.321318414958334850f, 0.946909582479058760f, - -0.321499988505963510f, - 0.946847918221148000f, -0.321681550232956580f, 0.946786219150346000f, - -0.321863100132638580f, - 0.946724485268921170f, -0.322044638198334510f, 0.946662716579143360f, - -0.322226164423369600f, - 0.946600913083283530f, -0.322407678801069850f, 0.946539074783614100f, - -0.322589181324761330f, - 0.946477201682408680f, -0.322770671987770710f, 0.946415293781942110f, - -0.322952150783425260f, - 0.946353351084490590f, -0.323133617705052330f, 0.946291373592331620f, - -0.323315072745979980f, - 0.946229361307743820f, -0.323496515899536710f, 0.946167314233007370f, - -0.323677947159051240f, - 0.946105232370403450f, -0.323859366517852850f, 0.946043115722214560f, - -0.324040773969271450f, - 0.945980964290724760f, -0.324222169506636960f, 0.945918778078219110f, - -0.324403553123280230f, - 0.945856557086983910f, -0.324584924812532150f, 0.945794301319306970f, - -0.324766284567724220f, - 0.945732010777477150f, -0.324947632382188430f, 0.945669685463784710f, - -0.325128968249257080f, - 0.945607325380521280f, -0.325310292162262930f, 0.945544930529979680f, - -0.325491604114539310f, - 0.945482500914453740f, -0.325672904099419850f, 0.945420036536239070f, - -0.325854192110238580f, - 0.945357537397632290f, -0.326035468140330240f, 0.945295003500931210f, - -0.326216732183029710f, - 0.945232434848435000f, -0.326397984231672490f, 0.945169831442444150f, - -0.326579224279594400f, - 0.945107193285260610f, -0.326760452320131730f, 0.945044520379187070f, - -0.326941668346621420f, - 0.944981812726528150f, -0.327122872352400510f, 0.944919070329589220f, - -0.327304064330806670f, - 0.944856293190677210f, -0.327485244275178000f, 0.944793481312100280f, - -0.327666412178853120f, - 0.944730634696167800f, -0.327847568035170840f, 0.944667753345190490f, - -0.328028711837470680f, - 0.944604837261480260f, -0.328209843579092500f, 0.944541886447350490f, - -0.328390963253376580f, - 0.944478900905115550f, -0.328572070853663740f, 0.944415880637091250f, - -0.328753166373294990f, - 0.944352825645594750f, -0.328934249805612200f, 0.944289735932944410f, - -0.329115321143957250f, - 0.944226611501459810f, -0.329296380381672750f, 0.944163452353461770f, - -0.329477427512101740f, - 0.944100258491272660f, -0.329658462528587490f, 0.944037029917215830f, - -0.329839485424473940f, - 0.943973766633615980f, -0.330020496193105420f, 0.943910468642799150f, - -0.330201494827826570f, - 0.943847135947092690f, -0.330382481321982780f, 0.943783768548825060f, - -0.330563455668919540f, - 0.943720366450326200f, -0.330744417861982890f, 0.943656929653927220f, - -0.330925367894519540f, - 0.943593458161960390f, -0.331106305759876430f, 0.943529951976759480f, - -0.331287231451400820f, - 0.943466411100659320f, -0.331468144962440870f, 0.943402835535996240f, - -0.331649046286344670f, - 0.943339225285107720f, -0.331829935416461110f, 0.943275580350332540f, - -0.332010812346139380f, - 0.943211900734010620f, -0.332191677068729150f, 0.943148186438483420f, - -0.332372529577580620f, - 0.943084437466093490f, -0.332553369866044220f, 0.943020653819184650f, - -0.332734197927471050f, - 0.942956835500102120f, -0.332915013755212650f, 0.942892982511192250f, - -0.333095817342620780f, - 0.942829094854802710f, -0.333276608683047930f, 0.942765172533282510f, - -0.333457387769846850f, - 0.942701215548981900f, -0.333638154596370860f, 0.942637223904252530f, - -0.333818909155973620f, - 0.942573197601446870f, -0.333999651442009380f, 0.942509136642919240f, - -0.334180381447832690f, - 0.942445041031024890f, -0.334361099166798740f, 0.942380910768120470f, - -0.334541804592262900f, - 0.942316745856563780f, -0.334722497717581220f, 0.942252546298714020f, - -0.334903178536110180f, - 0.942188312096931770f, -0.335083847041206580f, 0.942124043253578570f, - -0.335264503226227810f, - 0.942059739771017310f, -0.335445147084531600f, 0.941995401651612550f, - -0.335625778609476290f, - 0.941931028897729620f, -0.335806397794420450f, 0.941866621511735280f, - -0.335987004632723350f, - 0.941802179495997650f, -0.336167599117744520f, 0.941737702852886160f, - -0.336348181242844050f, - 0.941673191584771360f, -0.336528751001382410f, 0.941608645694025250f, - -0.336709308386720580f, - 0.941544065183020810f, -0.336889853392220050f, 0.941479450054132580f, - -0.337070386011242620f, - 0.941414800309736340f, -0.337250906237150590f, 0.941350115952208970f, - -0.337431414063306840f, - 0.941285396983928660f, -0.337611909483074620f, 0.941220643407275180f, - -0.337792392489817460f, - 0.941155855224629190f, -0.337972863076899720f, 0.941091032438372780f, - -0.338153321237685930f, - 0.941026175050889260f, -0.338333766965541130f, 0.940961283064563280f, - -0.338514200253830940f, - 0.940896356481780830f, -0.338694621095921190f, 0.940831395304928870f, - -0.338875029485178450f, - 0.940766399536396070f, -0.339055425414969640f, 0.940701369178571940f, - -0.339235808878661950f, - 0.940636304233847590f, -0.339416179869623360f, 0.940571204704615190f, - -0.339596538381222110f, - 0.940506070593268300f, -0.339776884406826850f, 0.940440901902201750f, - -0.339957217939806880f, - 0.940375698633811540f, -0.340137538973531720f, 0.940310460790495070f, - -0.340317847501371670f, - 0.940245188374650880f, -0.340498143516697160f, 0.940179881388678920f, - -0.340678427012879200f, - 0.940114539834980280f, -0.340858697983289440f, 0.940049163715957370f, - -0.341038956421299720f, - 0.939983753034014050f, -0.341219202320282360f, 0.939918307791555050f, - -0.341399435673610420f, - 0.939852827990986680f, -0.341579656474657160f, 0.939787313634716570f, - -0.341759864716796310f, - 0.939721764725153340f, -0.341940060393402190f, 0.939656181264707180f, - -0.342120243497849530f, - 0.939590563255789270f, -0.342300414023513520f, 0.939524910700812230f, - -0.342480571963769800f, - 0.939459223602189920f, -0.342660717311994380f, 0.939393501962337510f, - -0.342840850061563950f, - 0.939327745783671400f, -0.343020970205855540f, 0.939261955068609210f, - -0.343201077738246540f, - 0.939196129819569900f, -0.343381172652115040f, 0.939130270038973650f, - -0.343561254940839390f, - 0.939064375729241950f, -0.343741324597798490f, 0.938998446892797540f, - -0.343921381616371700f, - 0.938932483532064600f, -0.344101425989938810f, 0.938866485649468060f, - -0.344281457711880180f, - 0.938800453247434770f, -0.344461476775576540f, 0.938734386328392460f, - -0.344641483174408960f, - 0.938668284894770170f, -0.344821476901759290f, 0.938602148948998400f, - -0.345001457951009670f, - 0.938535978493508560f, -0.345181426315542550f, 0.938469773530733800f, - -0.345361381988741220f, - 0.938403534063108060f, -0.345541324963989090f, 0.938337260093066950f, - -0.345721255234670120f, - 0.938270951623047190f, -0.345901172794168990f, 0.938204608655486490f, - -0.346081077635870430f, - 0.938138231192824360f, -0.346260969753160010f, 0.938071819237501270f, - -0.346440849139423520f, - 0.938005372791958840f, -0.346620715788047320f, 0.937938891858640320f, - -0.346800569692418290f, - 0.937872376439989890f, -0.346980410845923680f, 0.937805826538453120f, - -0.347160239241951160f, - 0.937739242156476970f, -0.347340054873889140f, 0.937672623296509470f, - -0.347519857735126110f, - 0.937605969960999990f, -0.347699647819051380f, 0.937539282152399230f, - -0.347879425119054510f, - 0.937472559873159250f, -0.348059189628525610f, 0.937405803125732960f, - -0.348238941340855260f, - 0.937339011912574960f, -0.348418680249434560f, 0.937272186236140950f, - -0.348598406347654930f, - 0.937205326098887960f, -0.348778119628908420f, 0.937138431503274140f, - -0.348957820086587490f, - 0.937071502451759190f, -0.349137507714084970f, 0.937004538946803690f, - -0.349317182504794380f, - 0.936937540990869900f, -0.349496844452109550f, 0.936870508586420960f, - -0.349676493549424760f, - 0.936803441735921560f, -0.349856129790134920f, 0.936736340441837620f, - -0.350035753167635240f, - 0.936669204706636170f, -0.350215363675321580f, 0.936602034532785570f, - -0.350394961306590150f, - 0.936534829922755500f, -0.350574546054837510f, 0.936467590879016990f, - -0.350754117913461060f, - 0.936400317404042060f, -0.350933676875858360f, 0.936333009500304180f, - -0.351113222935427460f, - 0.936265667170278260f, -0.351292756085567090f, 0.936198290416440090f, - -0.351472276319676310f, - 0.936130879241267030f, -0.351651783631154570f, 0.936063433647237540f, - -0.351831278013402030f, - 0.935995953636831410f, -0.352010759459819080f, 0.935928439212529660f, - -0.352190227963806830f, - 0.935860890376814640f, -0.352369683518766630f, 0.935793307132169900f, - -0.352549126118100460f, - 0.935725689481080370f, -0.352728555755210730f, 0.935658037426032040f, - -0.352907972423500250f, - 0.935590350969512370f, -0.353087376116372480f, 0.935522630114009930f, - -0.353266766827231240f, - 0.935454874862014620f, -0.353446144549480810f, 0.935387085216017770f, - -0.353625509276525970f, - 0.935319261178511610f, -0.353804861001772050f, 0.935251402751989920f, - -0.353984199718624770f, - 0.935183509938947610f, -0.354163525420490340f, 0.935115582741880890f, - -0.354342838100775550f, - 0.935047621163287430f, -0.354522137752887430f, 0.934979625205665800f, - -0.354701424370233830f, - 0.934911594871516090f, -0.354880697946222790f, 0.934843530163339540f, - -0.355059958474262860f, - 0.934775431083638700f, -0.355239205947763310f, 0.934707297634917440f, - -0.355418440360133650f, - 0.934639129819680780f, -0.355597661704783850f, 0.934570927640435030f, - -0.355776869975124640f, - 0.934502691099687870f, -0.355956065164566850f, 0.934434420199948050f, - -0.356135247266522130f, - 0.934366114943725790f, -0.356314416274402410f, 0.934297775333532530f, - -0.356493572181620090f, - 0.934229401371880820f, -0.356672714981588260f, 0.934160993061284530f, - -0.356851844667720300f, - 0.934092550404258980f, -0.357030961233429980f, 0.934024073403320390f, - -0.357210064672131960f, - 0.933955562060986730f, -0.357389154977240940f, 0.933887016379776890f, - -0.357568232142172260f, - 0.933818436362210960f, -0.357747296160341900f, 0.933749822010810580f, - -0.357926347025166010f, - 0.933681173328098410f, -0.358105384730061590f, 0.933612490316598540f, - -0.358284409268445850f, - 0.933543772978836170f, -0.358463420633736540f, 0.933475021317337950f, - -0.358642418819351990f, - 0.933406235334631520f, -0.358821403818710860f, 0.933337415033246190f, - -0.359000375625232460f, - 0.933268560415712050f, -0.359179334232336500f, 0.933199671484560730f, - -0.359358279633443130f, - 0.933130748242325230f, -0.359537211821973070f, 0.933061790691539380f, - -0.359716130791347570f, - 0.932992798834738960f, -0.359895036534988110f, 0.932923772674460140f, - -0.360073929046317020f, - 0.932854712213241120f, -0.360252808318756890f, 0.932785617453621100f, - -0.360431674345730700f, - 0.932716488398140250f, -0.360610527120662270f, 0.932647325049340450f, - -0.360789366636975580f, - 0.932578127409764420f, -0.360968192888095230f, 0.932508895481956590f, - -0.361147005867446250f, - 0.932439629268462360f, -0.361325805568454280f, 0.932370328771828460f, - -0.361504591984545260f, - 0.932300993994602760f, -0.361683365109145840f, 0.932231624939334540f, - -0.361862124935682980f, - 0.932162221608574430f, -0.362040871457584180f, 0.932092784004874050f, - -0.362219604668277460f, - 0.932023312130786490f, -0.362398324561191310f, 0.931953805988866010f, - -0.362577031129754760f, - 0.931884265581668150f, -0.362755724367397230f, 0.931814690911749730f, - -0.362934404267548640f, - 0.931745081981668720f, -0.363113070823639470f, 0.931675438793984620f, - -0.363291724029100760f, - 0.931605761351257830f, -0.363470363877363760f, 0.931536049656050300f, - -0.363648990361860550f, - 0.931466303710925090f, -0.363827603476023500f, 0.931396523518446600f, - -0.364006203213285470f, - 0.931326709081180430f, -0.364184789567079890f, 0.931256860401693420f, - -0.364363362530840620f, - 0.931186977482553750f, -0.364541922098002120f, 0.931117060326330790f, - -0.364720468261999280f, - 0.931047108935595280f, -0.364899001016267320f, 0.930977123312918930f, - -0.365077520354242180f, - 0.930907103460875130f, -0.365256026269360320f, 0.930837049382038150f, - -0.365434518755058390f, - 0.930766961078983710f, -0.365612997804773850f, 0.930696838554288860f, - -0.365791463411944570f, - 0.930626681810531760f, -0.365969915570008740f, 0.930556490850291800f, - -0.366148354272405330f, - 0.930486265676149780f, -0.366326779512573590f, 0.930416006290687550f, - -0.366505191283953370f, - 0.930345712696488470f, -0.366683589579984930f, 0.930275384896137150f, - -0.366861974394109060f, - 0.930205022892219070f, -0.367040345719767180f, 0.930134626687321390f, - -0.367218703550400980f, - 0.930064196284032360f, -0.367397047879452710f, 0.929993731684941480f, - -0.367575378700365330f, - 0.929923232892639670f, -0.367753696006581980f, 0.929852699909718750f, - -0.367931999791546450f, - 0.929782132738772190f, -0.368110290048703050f, 0.929711531382394370f, - -0.368288566771496570f, - 0.929640895843181330f, -0.368466829953372320f, 0.929570226123729860f, - -0.368645079587776040f, - 0.929499522226638560f, -0.368823315668153910f, 0.929428784154506800f, - -0.369001538187952780f, - 0.929358011909935500f, -0.369179747140620020f, 0.929287205495526790f, - -0.369357942519603130f, - 0.929216364913884040f, -0.369536124318350650f, 0.929145490167611720f, - -0.369714292530311240f, - 0.929074581259315860f, -0.369892447148934100f, 0.929003638191603360f, - -0.370070588167669080f, - 0.928932660967082820f, -0.370248715579966360f, 0.928861649588363700f, - -0.370426829379276790f, - 0.928790604058057020f, -0.370604929559051670f, 0.928719524378774810f, - -0.370783016112742560f, - 0.928648410553130520f, -0.370961089033801980f, 0.928577262583738850f, - -0.371139148315682570f, - 0.928506080473215590f, -0.371317193951837540f, 0.928434864224177980f, - -0.371495225935720760f, - 0.928363613839244370f, -0.371673244260786520f, 0.928292329321034670f, - -0.371851248920489490f, - 0.928221010672169440f, -0.372029239908285010f, 0.928149657895271150f, - -0.372207217217628840f, - 0.928078270992963140f, -0.372385180841977360f, 0.928006849967869970f, - -0.372563130774787250f, - 0.927935394822617890f, -0.372741067009515760f, 0.927863905559833780f, - -0.372918989539620830f, - 0.927792382182146320f, -0.373096898358560640f, 0.927720824692185200f, - -0.373274793459793970f, - 0.927649233092581180f, -0.373452674836780300f, 0.927577607385966730f, - -0.373630542482979280f, - 0.927505947574975180f, -0.373808396391851210f, 0.927434253662241300f, - -0.373986236556857030f, - 0.927362525650401110f, -0.374164062971457930f, 0.927290763542091720f, - -0.374341875629115920f, - 0.927218967339951790f, -0.374519674523293210f, 0.927147137046620880f, - -0.374697459647452600f, - 0.927075272664740100f, -0.374875230995057540f, 0.927003374196951670f, - -0.375052988559571920f, - 0.926931441645899130f, -0.375230732334459920f, 0.926859475014227160f, - -0.375408462313186590f, - 0.926787474304581750f, -0.375586178489217220f, 0.926715439519610330f, - -0.375763880856017700f, - 0.926643370661961230f, -0.375941569407054420f, 0.926571267734284330f, - -0.376119244135794340f, - 0.926499130739230510f, -0.376296905035704790f, 0.926426959679452210f, - -0.376474552100253770f, - 0.926354754557602860f, -0.376652185322909560f, 0.926282515376337210f, - -0.376829804697141280f, - 0.926210242138311380f, -0.377007410216418260f, 0.926137934846182560f, - -0.377185001874210450f, - 0.926065593502609310f, -0.377362579663988340f, 0.925993218110251480f, - -0.377540143579222940f, - 0.925920808671770070f, -0.377717693613385640f, 0.925848365189827270f, - -0.377895229759948490f, - 0.925775887667086740f, -0.378072752012383990f, 0.925703376106213230f, - -0.378250260364165200f, - 0.925630830509872720f, -0.378427754808765560f, 0.925558250880732740f, - -0.378605235339659120f, - 0.925485637221461490f, -0.378782701950320540f, 0.925412989534729060f, - -0.378960154634224720f, - 0.925340307823206310f, -0.379137593384847320f, 0.925267592089565660f, - -0.379315018195664430f, - 0.925194842336480530f, -0.379492429060152630f, 0.925122058566625880f, - -0.379669825971788940f, - 0.925049240782677580f, -0.379847208924051160f, 0.924976388987313160f, - -0.380024577910417270f, - 0.924903503183210910f, -0.380201932924366050f, 0.924830583373050800f, - -0.380379273959376600f, - 0.924757629559513910f, -0.380556601008928520f, 0.924684641745282420f, - -0.380733914066502140f, - 0.924611619933039970f, -0.380911213125578070f, 0.924538564125471420f, - -0.381088498179637520f, - 0.924465474325262600f, -0.381265769222162380f, 0.924392350535101050f, - -0.381443026246634730f, - 0.924319192757675160f, -0.381620269246537360f, 0.924246000995674890f, - -0.381797498215353640f, - 0.924172775251791200f, -0.381974713146567220f, 0.924099515528716280f, - -0.382151914033662610f, - 0.924026221829143850f, -0.382329100870124510f, 0.923952894155768640f, - -0.382506273649438230f, - 0.923879532511286740f, -0.382683432365089780f, 0.923806136898395410f, - -0.382860577010565420f, - 0.923732707319793290f, -0.383037707579352020f, 0.923659243778179980f, - -0.383214824064937180f, - 0.923585746276256670f, -0.383391926460808660f, 0.923512214816725630f, - -0.383569014760454910f, - 0.923438649402290370f, -0.383746088957365010f, 0.923365050035655720f, - -0.383923149045028390f, - 0.923291416719527640f, -0.384100195016935040f, 0.923217749456613500f, - -0.384277226866575510f, - 0.923144048249621930f, -0.384454244587440820f, 0.923070313101262420f, - -0.384631248173022580f, - 0.922996544014246250f, -0.384808237616812880f, 0.922922740991285680f, - -0.384985212912304200f, - 0.922848904035094120f, -0.385162174052989860f, 0.922775033148386380f, - -0.385339121032363340f, - 0.922701128333878630f, -0.385516053843918850f, 0.922627189594287910f, - -0.385692972481151140f, - 0.922553216932332830f, -0.385869876937555310f, 0.922479210350733210f, - -0.386046767206627170f, - 0.922405169852209880f, -0.386223643281862980f, 0.922331095439485440f, - -0.386400505156759440f, - 0.922256987115283030f, -0.386577352824813920f, 0.922182844882327600f, - -0.386754186279524180f, - 0.922108668743345180f, -0.386931005514388580f, 0.922034458701062820f, - -0.387107810522905990f, - 0.921960214758209220f, -0.387284601298575840f, 0.921885936917513970f, - -0.387461377834897870f, - 0.921811625181708120f, -0.387638140125372730f, 0.921737279553523910f, - -0.387814888163501180f, - 0.921662900035694730f, -0.387991621942784860f, 0.921588486630955490f, - -0.388168341456725740f, - 0.921514039342042010f, -0.388345046698826250f, 0.921439558171691430f, - -0.388521737662589570f, - 0.921365043122642340f, -0.388698414341519190f, 0.921290494197634540f, - -0.388875076729119250f, - 0.921215911399408730f, -0.389051724818894380f, 0.921141294730707270f, - -0.389228358604349730f, - 0.921066644194273640f, -0.389404978078990940f, 0.920991959792852310f, - -0.389581583236324300f, - 0.920917241529189520f, -0.389758174069856410f, 0.920842489406032190f, - -0.389934750573094730f, - 0.920767703426128790f, -0.390111312739546910f, 0.920692883592229120f, - -0.390287860562721190f, - 0.920618029907083970f, -0.390464394036126590f, 0.920543142373445480f, - -0.390640913153272430f, - 0.920468220994067110f, -0.390817417907668500f, 0.920393265771703550f, - -0.390993908292825380f, - 0.920318276709110590f, -0.391170384302253870f, 0.920243253809045370f, - -0.391346845929465560f, - 0.920168197074266340f, -0.391523293167972410f, 0.920093106507533180f, - -0.391699726011286940f, - 0.920017982111606570f, -0.391876144452922350f, 0.919942823889248640f, - -0.392052548486392090f, - 0.919867631843222950f, -0.392228938105210310f, 0.919792405976293860f, - -0.392405313302891690f, - 0.919717146291227360f, -0.392581674072951470f, 0.919641852790790470f, - -0.392758020408905280f, - 0.919566525477751530f, -0.392934352304269490f, 0.919491164354880100f, - -0.393110669752560760f, - 0.919415769424947070f, -0.393286972747296400f, 0.919340340690724340f, - -0.393463261281994330f, - 0.919264878154985370f, -0.393639535350172880f, 0.919189381820504470f, - -0.393815794945351020f, - 0.919113851690057770f, -0.393992040061048100f, 0.919038287766422050f, - -0.394168270690784080f, - 0.918962690052375630f, -0.394344486828079600f, 0.918887058550697970f, - -0.394520688466455600f, - 0.918811393264170050f, -0.394696875599433560f, 0.918735694195573550f, - -0.394873048220535760f, - 0.918659961347691900f, -0.395049206323284770f, 0.918584194723309540f, - -0.395225349901203670f, - 0.918508394325212250f, -0.395401478947816350f, 0.918432560156186910f, - -0.395577593456646840f, - 0.918356692219021720f, -0.395753693421220080f, 0.918280790516506130f, - -0.395929778835061250f, - 0.918204855051430900f, -0.396105849691696270f, 0.918128885826588030f, - -0.396281905984651520f, - 0.918052882844770380f, -0.396457947707453910f, 0.917976846108772730f, - -0.396633974853630830f, - 0.917900775621390500f, -0.396809987416710310f, 0.917824671385420570f, - -0.396985985390220900f, - 0.917748533403661250f, -0.397161968767691610f, 0.917672361678911860f, - -0.397337937542652060f, - 0.917596156213972950f, -0.397513891708632330f, 0.917519917011646260f, - -0.397689831259163180f, - 0.917443644074735220f, -0.397865756187775750f, 0.917367337406043930f, - -0.398041666488001770f, - 0.917290997008377910f, -0.398217562153373560f, 0.917214622884544250f, - -0.398393443177423980f, - 0.917138215037350710f, -0.398569309553686300f, 0.917061773469606820f, - -0.398745161275694430f, - 0.916985298184123000f, -0.398920998336982910f, 0.916908789183710990f, - -0.399096820731086540f, - 0.916832246471183890f, -0.399272628451540990f, 0.916755670049355990f, - -0.399448421491882140f, - 0.916679059921042700f, -0.399624199845646790f, 0.916602416089060790f, - -0.399799963506371980f, - 0.916525738556228210f, -0.399975712467595330f, 0.916449027325364150f, - -0.400151446722855130f, - 0.916372282399289140f, -0.400327166265690090f, 0.916295503780824800f, - -0.400502871089639500f, - 0.916218691472794220f, -0.400678561188243240f, 0.916141845478021350f, - -0.400854236555041650f, - 0.916064965799331720f, -0.401029897183575620f, 0.915988052439551950f, - -0.401205543067386710f, - 0.915911105401509880f, -0.401381174200016790f, 0.915834124688034710f, - -0.401556790575008540f, - 0.915757110301956720f, -0.401732392185905010f, 0.915680062246107650f, - -0.401907979026249700f, - 0.915602980523320230f, -0.402083551089586990f, 0.915525865136428530f, - -0.402259108369461490f, - 0.915448716088267830f, -0.402434650859418430f, 0.915371533381674760f, - -0.402610178553003680f, - 0.915294317019487050f, -0.402785691443763530f, 0.915217067004543860f, - -0.402961189525244900f, - 0.915139783339685260f, -0.403136672790995300f, 0.915062466027752760f, - -0.403312141234562550f, - 0.914985115071589310f, -0.403487594849495310f, 0.914907730474038730f, - -0.403663033629342640f, - 0.914830312237946200f, -0.403838457567654070f, 0.914752860366158220f, - -0.404013866657979890f, - 0.914675374861522390f, -0.404189260893870690f, 0.914597855726887790f, - -0.404364640268877810f, - 0.914520302965104450f, -0.404540004776553000f, 0.914442716579023870f, - -0.404715354410448650f, - 0.914365096571498560f, -0.404890689164117580f, 0.914287442945382440f, - -0.405066009031113340f, - 0.914209755703530690f, -0.405241314004989860f, 0.914132034848799460f, - -0.405416604079301630f, - 0.914054280384046570f, -0.405591879247603870f, 0.913976492312130630f, - -0.405767139503452060f, - 0.913898670635911680f, -0.405942384840402510f, 0.913820815358251100f, - -0.406117615252011840f, - 0.913742926482011390f, -0.406292830731837360f, 0.913665004010056350f, - -0.406468031273437000f, - 0.913587047945250810f, -0.406643216870369030f, 0.913509058290461140f, - -0.406818387516192310f, - 0.913431035048554720f, -0.406993543204466510f, 0.913352978222400250f, - -0.407168683928751550f, - 0.913274887814867760f, -0.407343809682607970f, 0.913196763828828200f, - -0.407518920459596920f, - 0.913118606267154240f, -0.407694016253280110f, 0.913040415132719160f, - -0.407869097057219800f, - 0.912962190428398210f, -0.408044162864978690f, 0.912883932157067200f, - -0.408219213670120100f, - 0.912805640321603500f, -0.408394249466208000f, 0.912727314924885900f, - -0.408569270246806780f, - 0.912648955969793900f, -0.408744276005481360f, 0.912570563459208730f, - -0.408919266735797430f, - 0.912492137396012650f, -0.409094242431320980f, 0.912413677783089020f, - -0.409269203085618590f, - 0.912335184623322750f, -0.409444148692257590f, 0.912256657919599760f, - -0.409619079244805670f, - 0.912178097674807180f, -0.409793994736831150f, 0.912099503891833470f, - -0.409968895161902880f, - 0.912020876573568340f, -0.410143780513590240f, 0.911942215722902570f, - -0.410318650785463260f, - 0.911863521342728520f, -0.410493505971092410f, 0.911784793435939430f, - -0.410668346064048730f, - 0.911706032005429880f, -0.410843171057903910f, 0.911627237054095650f, - -0.411017980946230210f, - 0.911548408584833990f, -0.411192775722600160f, 0.911469546600543020f, - -0.411367555380587220f, - 0.911390651104122430f, -0.411542319913765220f, 0.911311722098472780f, - -0.411717069315708560f, - 0.911232759586496190f, -0.411891803579992170f, 0.911153763571095900f, - -0.412066522700191560f, - 0.911074734055176360f, -0.412241226669882890f, 0.910995671041643140f, - -0.412415915482642730f, - 0.910916574533403360f, -0.412590589132048210f, 0.910837444533365010f, - -0.412765247611677270f, - 0.910758281044437570f, -0.412939890915108080f, 0.910679084069531570f, - -0.413114519035919450f, - 0.910599853611558930f, -0.413289131967690960f, 0.910520589673432750f, - -0.413463729704002410f, - 0.910441292258067250f, -0.413638312238434500f, 0.910361961368377990f, - -0.413812879564568300f, - 0.910282597007281760f, -0.413987431675985400f, 0.910203199177696540f, - -0.414161968566268080f, - 0.910123767882541680f, -0.414336490228999100f, 0.910044303124737500f, - -0.414510996657761750f, - 0.909964804907205660f, -0.414685487846140010f, 0.909885273232869160f, - -0.414859963787718330f, - 0.909805708104652220f, -0.415034424476081630f, 0.909726109525480160f, - -0.415208869904815590f, - 0.909646477498279540f, -0.415383300067506230f, 0.909566812025978330f, - -0.415557714957740410f, - 0.909487113111505430f, -0.415732114569105360f, 0.909407380757791260f, - -0.415906498895188770f, - 0.909327614967767260f, -0.416080867929579210f, 0.909247815744366310f, - -0.416255221665865480f, - 0.909167983090522380f, -0.416429560097637150f, 0.909088117009170580f, - -0.416603883218484350f, - 0.909008217503247450f, -0.416778191021997650f, 0.908928284575690640f, - -0.416952483501768170f, - 0.908848318229439120f, -0.417126760651387870f, 0.908768318467432890f, - -0.417301022464448890f, - 0.908688285292613360f, -0.417475268934544290f, 0.908608218707923190f, - -0.417649500055267410f, - 0.908528118716306120f, -0.417823715820212270f, 0.908447985320707250f, - -0.417997916222973550f, - 0.908367818524072890f, -0.418172101257146320f, 0.908287618329350450f, - -0.418346270916326260f, - 0.908207384739488700f, -0.418520425194109700f, 0.908127117757437600f, - -0.418694564084093560f, - 0.908046817386148340f, -0.418868687579875050f, 0.907966483628573350f, - -0.419042795675052370f, - 0.907886116487666260f, -0.419216888363223910f, 0.907805715966381930f, - -0.419390965637988890f, - 0.907725282067676440f, -0.419565027492946880f, 0.907644814794507200f, - -0.419739073921698180f, - 0.907564314149832630f, -0.419913104917843620f, 0.907483780136612570f, - -0.420087120474984530f, - 0.907403212757808110f, -0.420261120586722880f, 0.907322612016381420f, - -0.420435105246661170f, - 0.907241977915295820f, -0.420609074448402510f, 0.907161310457516250f, - -0.420783028185550520f, - 0.907080609646008450f, -0.420956966451709440f, 0.906999875483739610f, - -0.421130889240483970f, - 0.906919107973678140f, -0.421304796545479640f, 0.906838307118793430f, - -0.421478688360302280f, - 0.906757472922056550f, -0.421652564678558330f, 0.906676605386439460f, - -0.421826425493854910f, - 0.906595704514915330f, -0.422000270799799680f, 0.906514770310458800f, - -0.422174100590000770f, - 0.906433802776045460f, -0.422347914858067050f, 0.906352801914652400f, - -0.422521713597607820f, - 0.906271767729257660f, -0.422695496802232950f, 0.906190700222840650f, - -0.422869264465553060f, - 0.906109599398381980f, -0.423043016581179040f, 0.906028465258863600f, - -0.423216753142722610f, - 0.905947297807268460f, -0.423390474143796050f, 0.905866097046580940f, - -0.423564179578011960f, - 0.905784862979786550f, -0.423737869438983840f, 0.905703595609872010f, - -0.423911543720325580f, - 0.905622294939825270f, -0.424085202415651560f, 0.905540960972635590f, - -0.424258845518576950f, - 0.905459593711293250f, -0.424432473022717420f, 0.905378193158790090f, - -0.424606084921689110f, - 0.905296759318118820f, -0.424779681209108810f, 0.905215292192273590f, - -0.424953261878593890f, - 0.905133791784249690f, -0.425126826923762360f, 0.905052258097043590f, - -0.425300376338232640f, - 0.904970691133653250f, -0.425473910115623800f, 0.904889090897077470f, - -0.425647428249555590f, - 0.904807457390316540f, -0.425820930733648240f, 0.904725790616371930f, - -0.425994417561522400f, - 0.904644090578246240f, -0.426167888726799620f, 0.904562357278943300f, - -0.426341344223101830f, - 0.904480590721468250f, -0.426514784044051520f, 0.904398790908827350f, - -0.426688208183271860f, - 0.904316957844028320f, -0.426861616634386430f, 0.904235091530079750f, - -0.427035009391019680f, - 0.904153191969991780f, -0.427208386446796320f, 0.904071259166775440f, - -0.427381747795341770f, - 0.903989293123443340f, -0.427555093430282080f, 0.903907293843009050f, - -0.427728423345243800f, - 0.903825261328487510f, -0.427901737533854080f, 0.903743195582894620f, - -0.428075035989740730f, - 0.903661096609247980f, -0.428248318706531960f, 0.903578964410566070f, - -0.428421585677856650f, - 0.903496798989868450f, -0.428594836897344400f, 0.903414600350176290f, - -0.428768072358625070f, - 0.903332368494511820f, -0.428941292055329490f, 0.903250103425898400f, - -0.429114495981088750f, - 0.903167805147360720f, -0.429287684129534610f, 0.903085473661924600f, - -0.429460856494299490f, - 0.903003108972617150f, -0.429634013069016380f, 0.902920711082466740f, - -0.429807153847318710f, - 0.902838279994502830f, -0.429980278822840620f, 0.902755815711756120f, - -0.430153387989216870f, - 0.902673318237258830f, -0.430326481340082610f, 0.902590787574043870f, - -0.430499558869073820f, - 0.902508223725145940f, -0.430672620569826800f, 0.902425626693600380f, - -0.430845666435978660f, - 0.902342996482444200f, -0.431018696461167030f, 0.902260333094715540f, - -0.431191710639029950f, - 0.902177636533453620f, -0.431364708963206330f, 0.902094906801698900f, - -0.431537691427335500f, - 0.902012143902493180f, -0.431710658025057260f, 0.901929347838879460f, - -0.431883608750012250f, - 0.901846518613901750f, -0.432056543595841500f, 0.901763656230605730f, - -0.432229462556186720f, - 0.901680760692037730f, -0.432402365624690140f, 0.901597832001245660f, - -0.432575252794994650f, - 0.901514870161278740f, -0.432748124060743700f, 0.901431875175186970f, - -0.432920979415581280f, - 0.901348847046022030f, -0.433093818853151960f, 0.901265785776836580f, - -0.433266642367100940f, - 0.901182691370684520f, -0.433439449951074090f, 0.901099563830620950f, - -0.433612241598717580f, - 0.901016403159702330f, -0.433785017303678520f, 0.900933209360986200f, - -0.433957777059604420f, - 0.900849982437531450f, -0.434130520860143310f, 0.900766722392397860f, - -0.434303248698943990f, - 0.900683429228646970f, -0.434475960569655650f, 0.900600102949340900f, - -0.434648656465928320f, - 0.900516743557543520f, -0.434821336381412290f, 0.900433351056319830f, - -0.434994000309758710f, - 0.900349925448735600f, -0.435166648244619260f, 0.900266466737858480f, - -0.435339280179646070f, - 0.900182974926756810f, -0.435511896108492000f, 0.900099450018500450f, - -0.435684496024810460f, - 0.900015892016160280f, -0.435857079922255470f, 0.899932300922808510f, - -0.436029647794481560f, - 0.899848676741518580f, -0.436202199635143950f, 0.899765019475365140f, - -0.436374735437898340f, - 0.899681329127423930f, -0.436547255196401200f, 0.899597605700772180f, - -0.436719758904309360f, - 0.899513849198487980f, -0.436892246555280360f, 0.899430059623650860f, - -0.437064718142972370f, - 0.899346236979341570f, -0.437237173661044090f, 0.899262381268642000f, - -0.437409613103154790f, - 0.899178492494635330f, -0.437582036462964400f, 0.899094570660405770f, - -0.437754443734133410f, - 0.899010615769039070f, -0.437926834910322860f, 0.898926627823621870f, - -0.438099209985194470f, - 0.898842606827242370f, -0.438271568952410430f, 0.898758552782989440f, - -0.438443911805633690f, - 0.898674465693953820f, -0.438616238538527660f, 0.898590345563227030f, - -0.438788549144756290f, - 0.898506192393901950f, -0.438960843617984320f, 0.898422006189072530f, - -0.439133121951876930f, - 0.898337786951834310f, -0.439305384140099950f, 0.898253534685283570f, - -0.439477630176319800f, - 0.898169249392518080f, -0.439649860054203480f, 0.898084931076636780f, - -0.439822073767418500f, - 0.898000579740739880f, -0.439994271309633260f, 0.897916195387928660f, - -0.440166452674516320f, - 0.897831778021305650f, -0.440338617855737250f, 0.897747327643974690f, - -0.440510766846965940f, - 0.897662844259040860f, -0.440682899641872900f, 0.897578327869610230f, - -0.440855016234129430f, - 0.897493778478790310f, -0.441027116617407230f, 0.897409196089689720f, - -0.441199200785378660f, - 0.897324580705418320f, -0.441371268731716670f, 0.897239932329087160f, - -0.441543320450094870f, - 0.897155250963808550f, -0.441715355934187310f, 0.897070536612695870f, - -0.441887375177668850f, - 0.896985789278863970f, -0.442059378174214700f, 0.896901008965428790f, - -0.442231364917500980f, - 0.896816195675507300f, -0.442403335401204080f, 0.896731349412217880f, - -0.442575289619001170f, - 0.896646470178680150f, -0.442747227564570020f, 0.896561557978014960f, - -0.442919149231588980f, - 0.896476612813344120f, -0.443091054613736880f, 0.896391634687790820f, - -0.443262943704693320f, - 0.896306623604479550f, -0.443434816498138480f, 0.896221579566536030f, - -0.443606672987752970f, - 0.896136502577086770f, -0.443778513167218220f, 0.896051392639260150f, - -0.443950337030216140f, - 0.895966249756185220f, -0.444122144570429200f, 0.895881073930992370f, - -0.444293935781540580f, - 0.895795865166813530f, -0.444465710657234000f, 0.895710623466781320f, - -0.444637469191193790f, - 0.895625348834030110f, -0.444809211377104880f, 0.895540041271694950f, - -0.444980937208652730f, - 0.895454700782912450f, -0.445152646679523640f, 0.895369327370820310f, - -0.445324339783404190f, - 0.895283921038557580f, -0.445496016513981740f, 0.895198481789264200f, - -0.445667676864944300f, - 0.895113009626081760f, -0.445839320829980290f, 0.895027504552152630f, - -0.446010948402778940f, - 0.894941966570620750f, -0.446182559577030070f, 0.894856395684631050f, - -0.446354154346423840f, - 0.894770791897329550f, -0.446525732704651350f, 0.894685155211863980f, - -0.446697294645404090f, - 0.894599485631382700f, -0.446868840162374160f, 0.894513783159035620f, - -0.447040369249254440f, - 0.894428047797973800f, -0.447211881899738320f, 0.894342279551349480f, - -0.447383378107519600f, - 0.894256478422316040f, -0.447554857866293010f, 0.894170644414028270f, - -0.447726321169753580f, - 0.894084777529641990f, -0.447897768011597310f, 0.893998877772314240f, - -0.448069198385520400f, - 0.893912945145203250f, -0.448240612285219890f, 0.893826979651468620f, - -0.448412009704393430f, - 0.893740981294271040f, -0.448583390636739240f, 0.893654950076772540f, - -0.448754755075955970f, - 0.893568886002135910f, -0.448926103015743260f, 0.893482789073525850f, - -0.449097434449801050f, - 0.893396659294107720f, -0.449268749371829920f, 0.893310496667048200f, - -0.449440047775531150f, - 0.893224301195515320f, -0.449611329654606540f, 0.893138072882678320f, - -0.449782595002758690f, - 0.893051811731707450f, -0.449953843813690520f, 0.892965517745774370f, - -0.450125076081105690f, - 0.892879190928051680f, -0.450296291798708610f, 0.892792831281713610f, - -0.450467490960204110f, - 0.892706438809935390f, -0.450638673559297600f, 0.892620013515893150f, - -0.450809839589695280f, - 0.892533555402764580f, -0.450980989045103860f, 0.892447064473728680f, - -0.451152121919230600f, - 0.892360540731965360f, -0.451323238205783520f, 0.892273984180655840f, - -0.451494337898471100f, - 0.892187394822982480f, -0.451665420991002490f, 0.892100772662129060f, - -0.451836487477087490f, - 0.892014117701280470f, -0.452007537350436420f, 0.891927429943622510f, - -0.452178570604760350f, - 0.891840709392342720f, -0.452349587233770890f, 0.891753956050629460f, - -0.452520587231180050f, - 0.891667169921672280f, -0.452691570590700920f, 0.891580351008662290f, - -0.452862537306046750f, - 0.891493499314791380f, -0.453033487370931580f, 0.891406614843252900f, - -0.453204420779070190f, - 0.891319697597241390f, -0.453375337524177750f, 0.891232747579952520f, - -0.453546237599970090f, - 0.891145764794583180f, -0.453717121000163870f, 0.891058749244331590f, - -0.453887987718476050f, - 0.890971700932396860f, -0.454058837748624430f, 0.890884619861979530f, - -0.454229671084327320f, - 0.890797506036281490f, -0.454400487719303580f, 0.890710359458505630f, - -0.454571287647272950f, - 0.890623180131855930f, -0.454742070861955450f, 0.890535968059537830f, - -0.454912837357071940f, - 0.890448723244757880f, -0.455083587126343840f, 0.890361445690723840f, - -0.455254320163493100f, - 0.890274135400644600f, -0.455425036462242360f, 0.890186792377730240f, - -0.455595736016314980f, - 0.890099416625192320f, -0.455766418819434640f, 0.890012008146243260f, - -0.455937084865326030f, - 0.889924566944096720f, -0.456107734147714110f, 0.889837093021967900f, - -0.456278366660324620f, - 0.889749586383072780f, -0.456448982396883920f, 0.889662047030628900f, - -0.456619581351118910f, - 0.889574474967854580f, -0.456790163516757160f, 0.889486870197969900f, - -0.456960728887526980f, - 0.889399232724195520f, -0.457131277457156980f, 0.889311562549753850f, - -0.457301809219376630f, - 0.889223859677868210f, -0.457472324167916060f, 0.889136124111763240f, - -0.457642822296505770f, - 0.889048355854664570f, -0.457813303598877170f, 0.888960554909799310f, - -0.457983768068762120f, - 0.888872721280395630f, -0.458154215699893060f, 0.888784854969682850f, - -0.458324646486003240f, - 0.888696955980891600f, -0.458495060420826270f, 0.888609024317253860f, - -0.458665457498096560f, - 0.888521059982002260f, -0.458835837711549120f, 0.888433062978371320f, - -0.459006201054919630f, - 0.888345033309596350f, -0.459176547521944090f, 0.888256970978913870f, - -0.459346877106359630f, - 0.888168875989561730f, -0.459517189801903480f, 0.888080748344778900f, - -0.459687485602313870f, - 0.887992588047805560f, -0.459857764501329540f, 0.887904395101883240f, - -0.460028026492689650f, - 0.887816169510254440f, -0.460198271570134320f, 0.887727911276163020f, - -0.460368499727404010f, - 0.887639620402853930f, -0.460538710958240010f, 0.887551296893573370f, - -0.460708905256384080f, - 0.887462940751568840f, -0.460879082615578690f, 0.887374551980088850f, - -0.461049243029566900f, - 0.887286130582383150f, -0.461219386492092380f, 0.887197676561702900f, - -0.461389512996899450f, - 0.887109189921300170f, -0.461559622537733080f, 0.887020670664428360f, - -0.461729715108338770f, - 0.886932118794342190f, -0.461899790702462730f, 0.886843534314297410f, - -0.462069849313851750f, - 0.886754917227550840f, -0.462239890936253340f, 0.886666267537361000f, - -0.462409915563415430f, - 0.886577585246987040f, -0.462579923189086810f, 0.886488870359689600f, - -0.462749913807016740f, - 0.886400122878730600f, -0.462919887410955080f, 0.886311342807372780f, - -0.463089843994652530f, - 0.886222530148880640f, -0.463259783551860150f, 0.886133684906519340f, - -0.463429706076329830f, - 0.886044807083555600f, -0.463599611561814010f, 0.885955896683257030f, - -0.463769500002065630f, - 0.885866953708892790f, -0.463939371390838520f, 0.885777978163732940f, - -0.464109225721886950f, - 0.885688970051048960f, -0.464279062988965760f, 0.885599929374113360f, - -0.464448883185830660f, - 0.885510856136199950f, -0.464618686306237820f, 0.885421750340583680f, - -0.464788472343943990f, - 0.885332611990540590f, -0.464958241292706690f, 0.885243441089348270f, - -0.465127993146283950f, - 0.885154237640285110f, -0.465297727898434600f, 0.885065001646630930f, - -0.465467445542917800f, - 0.884975733111666660f, -0.465637146073493660f, 0.884886432038674560f, - -0.465806829483922710f, - 0.884797098430937790f, -0.465976495767966180f, 0.884707732291741040f, - -0.466146144919385890f, - 0.884618333624369920f, -0.466315776931944430f, 0.884528902432111460f, - -0.466485391799404900f, - 0.884439438718253810f, -0.466654989515530920f, 0.884349942486086120f, - -0.466824570074086950f, - 0.884260413738899190f, -0.466994133468838000f, 0.884170852479984500f, - -0.467163679693549770f, - 0.884081258712634990f, -0.467333208741988420f, 0.883991632440144890f, - -0.467502720607920920f, - 0.883901973665809470f, -0.467672215285114770f, 0.883812282392925090f, - -0.467841692767338170f, - 0.883722558624789660f, -0.468011153048359830f, 0.883632802364701870f, - -0.468180596121949290f, - 0.883543013615961880f, -0.468350021981876530f, 0.883453192381870920f, - -0.468519430621912310f, - 0.883363338665731580f, -0.468688822035827900f, 0.883273452470847430f, - -0.468858196217395330f, - 0.883183533800523390f, -0.469027553160387130f, 0.883093582658065370f, - -0.469196892858576580f, - 0.883003599046780830f, -0.469366215305737520f, 0.882913582969978020f, - -0.469535520495644450f, - 0.882823534430966620f, -0.469704808422072460f, 0.882733453433057650f, - -0.469874079078797360f, - 0.882643339979562790f, -0.470043332459595620f, 0.882553194073795510f, - -0.470212568558244170f, - 0.882463015719070150f, -0.470381787368520650f, 0.882372804918702290f, - -0.470550988884203550f, - 0.882282561676008710f, -0.470720173099071600f, 0.882192285994307430f, - -0.470889340006904520f, - 0.882101977876917580f, -0.471058489601482500f, 0.882011637327159590f, - -0.471227621876586340f, - 0.881921264348355050f, -0.471396736825997640f, 0.881830858943826620f, - -0.471565834443498420f, - 0.881740421116898320f, -0.471734914722871430f, 0.881649950870895260f, - -0.471903977657900210f, - 0.881559448209143780f, -0.472073023242368660f, 0.881468913134971440f, - -0.472242051470061490f, - 0.881378345651706920f, -0.472411062334764040f, 0.881287745762680100f, - -0.472580055830262250f, - 0.881197113471222090f, -0.472749031950342790f, 0.881106448780665130f, - -0.472917990688792760f, - 0.881015751694342870f, -0.473086932039400050f, 0.880925022215589880f, - -0.473255855995953320f, - 0.880834260347742040f, -0.473424762552241530f, 0.880743466094136340f, - -0.473593651702054530f, - 0.880652639458111010f, -0.473762523439182850f, 0.880561780443005700f, - -0.473931377757417450f, - 0.880470889052160750f, -0.474100214650549970f, 0.880379965288918150f, - -0.474269034112372980f, - 0.880289009156621010f, -0.474437836136679230f, 0.880198020658613190f, - -0.474606620717262560f, - 0.880106999798240360f, -0.474775387847917120f, 0.880015946578849070f, - -0.474944137522437800f, - 0.879924861003786860f, -0.475112869734620300f, 0.879833743076402940f, - -0.475281584478260740f, - 0.879742592800047410f, -0.475450281747155870f, 0.879651410178071580f, - -0.475618961535103300f, - 0.879560195213827890f, -0.475787623835901120f, 0.879468947910670210f, - -0.475956268643348060f, - 0.879377668271953290f, -0.476124895951243580f, 0.879286356301033250f, - -0.476293505753387690f, - 0.879195012001267480f, -0.476462098043581190f, 0.879103635376014330f, - -0.476630672815625320f, - 0.879012226428633530f, -0.476799230063322090f, 0.878920785162485840f, - -0.476967769780474170f, - 0.878829311580933360f, -0.477136291960884810f, 0.878737805687339390f, - -0.477304796598357890f, - 0.878646267485068130f, -0.477473283686698060f, 0.878554696977485450f, - -0.477641753219710470f, - 0.878463094167957870f, -0.477810205191200990f, 0.878371459059853480f, - -0.477978639594976160f, - 0.878279791656541580f, -0.478147056424843010f, 0.878188091961392250f, - -0.478315455674609480f, - 0.878096359977777130f, -0.478483837338083970f, 0.878004595709069080f, - -0.478652201409075500f, - 0.877912799158641840f, -0.478820547881393890f, 0.877820970329870500f, - -0.478988876748849490f, - 0.877729109226131570f, -0.479157188005253310f, 0.877637215850802230f, - -0.479325481644417070f, - 0.877545290207261350f, -0.479493757660153010f, 0.877453332298888560f, - -0.479662016046274180f, - 0.877361342129065140f, -0.479830256796594190f, 0.877269319701173170f, - -0.479998479904927280f, - 0.877177265018595940f, -0.480166685365088390f, 0.877085178084718420f, - -0.480334873170893020f, - 0.876993058902925890f, -0.480503043316157510f, 0.876900907476605650f, - -0.480671195794698640f, - 0.876808723809145650f, -0.480839330600333960f, 0.876716507903935400f, - -0.481007447726881590f, - 0.876624259764365310f, -0.481175547168160300f, 0.876531979393827100f, - -0.481343628917989710f, - 0.876439666795713610f, -0.481511692970189860f, 0.876347321973419020f, - -0.481679739318581490f, - 0.876254944930338510f, -0.481847767956986030f, 0.876162535669868460f, - -0.482015778879225590f, - 0.876070094195406600f, -0.482183772079122720f, 0.875977620510351770f, - -0.482351747550500980f, - 0.875885114618103810f, -0.482519705287184350f, 0.875792576522063880f, - -0.482687645282997460f, - 0.875700006225634600f, -0.482855567531765670f, 0.875607403732219350f, - -0.483023472027314880f, - 0.875514769045222850f, -0.483191358763471860f, 0.875422102168050940f, - -0.483359227734063810f, - 0.875329403104110890f, -0.483527078932918740f, 0.875236671856810870f, - -0.483694912353865140f, - 0.875143908429560360f, -0.483862727990732270f, 0.875051112825769970f, - -0.484030525837350010f, - 0.874958285048851650f, -0.484198305887549030f, 0.874865425102218320f, - -0.484366068135160420f, - 0.874772532989284150f, -0.484533812574016180f, 0.874679608713464510f, - -0.484701539197948670f, - 0.874586652278176110f, -0.484869248000791060f, 0.874493663686836560f, - -0.485036938976377290f, - 0.874400642942864790f, -0.485204612118541820f, 0.874307590049680950f, - -0.485372267421119770f, - 0.874214505010706300f, -0.485539904877946960f, 0.874121387829363330f, - -0.485707524482859750f, - 0.874028238509075740f, -0.485875126229695250f, 0.873935057053268240f, - -0.486042710112291330f, - 0.873841843465366860f, -0.486210276124486420f, 0.873748597748798870f, - -0.486377824260119440f, - 0.873655319906992630f, -0.486545354513030270f, 0.873562009943377850f, - -0.486712866877059170f, - 0.873468667861384880f, -0.486880361346047340f, 0.873375293664446000f, - -0.487047837913836380f, - 0.873281887355994210f, -0.487215296574268760f, 0.873188448939463790f, - -0.487382737321187360f, - 0.873094978418290090f, -0.487550160148436000f, 0.873001475795909920f, - -0.487717565049858800f, - 0.872907941075761080f, -0.487884952019301040f, 0.872814374261282390f, - -0.488052321050608250f, - 0.872720775355914300f, -0.488219672137626790f, 0.872627144363097960f, - -0.488387005274203530f, - 0.872533481286276170f, -0.488554320454186180f, 0.872439786128892280f, - -0.488721617671423080f, - 0.872346058894391540f, -0.488888896919763170f, 0.872252299586219860f, - -0.489056158193056030f, - 0.872158508207824480f, -0.489223401485151980f, 0.872064684762653860f, - -0.489390626789901920f, - 0.871970829254157810f, -0.489557834101157440f, 0.871876941685786890f, - -0.489725023412770910f, - 0.871783022060993120f, -0.489892194718595190f, 0.871689070383229740f, - -0.490059348012483850f, - 0.871595086655950980f, -0.490226483288291160f, 0.871501070882612530f, - -0.490393600539871970f, - 0.871407023066670950f, -0.490560699761082020f, 0.871312943211584030f, - -0.490727780945777400f, - 0.871218831320811020f, -0.490894844087815090f, 0.871124687397811900f, - -0.491061889181052650f, - 0.871030511446048260f, -0.491228916219348280f, 0.870936303468982760f, - -0.491395925196560780f, - 0.870842063470078980f, -0.491562916106549900f, 0.870747791452801790f, - -0.491729888943175760f, - 0.870653487420617430f, -0.491896843700299290f, 0.870559151376993250f, - -0.492063780371782000f, - 0.870464783325397670f, -0.492230698951486020f, 0.870370383269300270f, - -0.492397599433274380f, - 0.870275951212171940f, -0.492564481811010590f, 0.870181487157484560f, - -0.492731346078558840f, - 0.870086991108711460f, -0.492898192229784040f, 0.869992463069326870f, - -0.493065020258551700f, - 0.869897903042806340f, -0.493231830158727900f, 0.869803311032626650f, - -0.493398621924179770f, - 0.869708687042265670f, -0.493565395548774770f, 0.869614031075202300f, - -0.493732151026381020f, - 0.869519343134916860f, -0.493898888350867480f, 0.869424623224890890f, - -0.494065607516103570f, - 0.869329871348606840f, -0.494232308515959670f, 0.869235087509548370f, - -0.494398991344306650f, - 0.869140271711200560f, -0.494565655995015950f, 0.869045423957049530f, - -0.494732302461959870f, - 0.868950544250582380f, -0.494898930739011260f, 0.868855632595287860f, - -0.495065540820043560f, - 0.868760688994655310f, -0.495232132698931180f, 0.868665713452175690f, - -0.495398706369549020f, - 0.868570705971340900f, -0.495565261825772540f, 0.868475666555644120f, - -0.495731799061477960f, - 0.868380595208579800f, -0.495898318070542190f, 0.868285491933643350f, - -0.496064818846842890f, - 0.868190356734331310f, -0.496231301384258250f, 0.868095189614141670f, - -0.496397765676667160f, - 0.867999990576573510f, -0.496564211717949290f, 0.867904759625126920f, - -0.496730639501984760f, - 0.867809496763303320f, -0.496897049022654470f, 0.867714201994605140f, - -0.497063440273840250f, - 0.867618875322536230f, -0.497229813249424220f, 0.867523516750601460f, - -0.497396167943289280f, - 0.867428126282306920f, -0.497562504349319150f, 0.867332703921159800f, - -0.497728822461397940f, - 0.867237249670668400f, -0.497895122273410870f, 0.867141763534342470f, - -0.498061403779243410f, - 0.867046245515692650f, -0.498227666972781870f, 0.866950695618230900f, - -0.498393911847913210f, - 0.866855113845470430f, -0.498560138398525140f, 0.866759500200925400f, - -0.498726346618505900f, - 0.866663854688111130f, -0.498892536501744590f, 0.866568177310544470f, - -0.499058708042130870f, - 0.866472468071743050f, -0.499224861233555080f, 0.866376726975225830f, - -0.499390996069908170f, - 0.866280954024512990f, -0.499557112545081840f, 0.866185149223125840f, - -0.499723210652968540f, - 0.866089312574586770f, -0.499889290387461330f, 0.865993444082419520f, - -0.500055351742453860f, - 0.865897543750148820f, -0.500221394711840680f, 0.865801611581300760f, - -0.500387419289516580f, - 0.865705647579402380f, -0.500553425469377420f, 0.865609651747981990f, - -0.500719413245319880f, - 0.865513624090569090f, -0.500885382611240710f, 0.865417564610694410f, - -0.501051333561038040f, - 0.865321473311889800f, -0.501217266088609950f, 0.865225350197688200f, - -0.501383180187855770f, - 0.865129195271623800f, -0.501549075852675390f, 0.865033008537231860f, - -0.501714953076969120f, - 0.864936789998049020f, -0.501880811854638290f, 0.864840539657612870f, - -0.502046652179584660f, - 0.864744257519462380f, -0.502212474045710790f, 0.864647943587137480f, - -0.502378277446919760f, - 0.864551597864179340f, -0.502544062377115690f, 0.864455220354130360f, - -0.502709828830202990f, - 0.864358811060534030f, -0.502875576800086990f, 0.864262369986934950f, - -0.503041306280673450f, - 0.864165897136879300f, -0.503207017265868920f, 0.864069392513913790f, - -0.503372709749581040f, - 0.863972856121586810f, -0.503538383725717580f, 0.863876287963447510f, - -0.503704039188187070f, - 0.863779688043046720f, -0.503869676130898950f, 0.863683056363935830f, - -0.504035294547763190f, - 0.863586392929668100f, -0.504200894432690340f, 0.863489697743797140f, - -0.504366475779592040f, - 0.863392970809878420f, -0.504532038582380270f, 0.863296212131468230f, - -0.504697582834967570f, - 0.863199421712124160f, -0.504863108531267590f, 0.863102599555404910f, - -0.505028615665194080f, - 0.863005745664870320f, -0.505194104230662240f, 0.862908860044081400f, - -0.505359574221587280f, - 0.862811942696600330f, -0.505525025631885390f, 0.862714993625990690f, - -0.505690458455473450f, - 0.862618012835816740f, -0.505855872686268860f, 0.862521000329644520f, - -0.506021268318189720f, - 0.862423956111040610f, -0.506186645345155230f, 0.862326880183573060f, - -0.506352003761084800f, - 0.862229772550811240f, -0.506517343559898530f, 0.862132633216325380f, - -0.506682664735517600f, - 0.862035462183687210f, -0.506847967281863210f, 0.861938259456469290f, - -0.507013251192858230f, - 0.861841025038245330f, -0.507178516462425180f, 0.861743758932590700f, - -0.507343763084487920f, - 0.861646461143081300f, -0.507508991052970870f, 0.861549131673294720f, - -0.507674200361798890f, - 0.861451770526809320f, -0.507839391004897720f, 0.861354377707204910f, - -0.508004562976194010f, - 0.861256953218062170f, -0.508169716269614600f, 0.861159497062963350f, - -0.508334850879087360f, - 0.861062009245491480f, -0.508499966798540930f, 0.860964489769231010f, - -0.508665064021904030f, - 0.860866938637767310f, -0.508830142543106990f, 0.860769355854687170f, - -0.508995202356080090f, - 0.860671741423578380f, -0.509160243454754640f, 0.860574095348029980f, - -0.509325265833062480f, - 0.860476417631632070f, -0.509490269484936360f, 0.860378708277976130f, - -0.509655254404309250f, - 0.860280967290654510f, -0.509820220585115450f, 0.860183194673260990f, - -0.509985168021289460f, - 0.860085390429390140f, -0.510150096706766810f, 0.859987554562638200f, - -0.510315006635483240f, - 0.859889687076602290f, -0.510479897801375700f, 0.859791787974880650f, - -0.510644770198381610f, - 0.859693857261072610f, -0.510809623820439040f, 0.859595894938779080f, - -0.510974458661486830f, - 0.859497901011601730f, -0.511139274715464390f, 0.859399875483143450f, - -0.511304071976312000f, - 0.859301818357008470f, -0.511468850437970300f, 0.859203729636801920f, - -0.511633610094381240f, - 0.859105609326130450f, -0.511798350939486890f, 0.859007457428601520f, - -0.511963072967230200f, - 0.858909273947823900f, -0.512127776171554690f, 0.858811058887407610f, - -0.512292460546404870f, - 0.858712812250963520f, -0.512457126085725690f, 0.858614534042104190f, - -0.512621772783462990f, - 0.858516224264442740f, -0.512786400633562960f, 0.858417882921593930f, - -0.512951009629972980f, - 0.858319510017173440f, -0.513115599766640560f, 0.858221105554798250f, - -0.513280171037514220f, - 0.858122669538086140f, -0.513444723436543460f, 0.858024201970656540f, - -0.513609256957677780f, - 0.857925702856129790f, -0.513773771594868030f, 0.857827172198127430f, - -0.513938267342065380f, - 0.857728610000272120f, -0.514102744193221660f, 0.857630016266187620f, - -0.514267202142289710f, - 0.857531390999499150f, -0.514431641183222820f, 0.857432734203832700f, - -0.514596061309975040f, - 0.857334045882815590f, -0.514760462516501200f, 0.857235326040076460f, - -0.514924844796756490f, - 0.857136574679244980f, -0.515089208144697160f, 0.857037791803951680f, - -0.515253552554280180f, - 0.856938977417828760f, -0.515417878019462930f, 0.856840131524509220f, - -0.515582184534203790f, - 0.856741254127627470f, -0.515746472092461380f, 0.856642345230818840f, - -0.515910740688195650f, - 0.856543404837719960f, -0.516074990315366630f, 0.856444432951968590f, - -0.516239220967935510f, - 0.856345429577203610f, -0.516403432639863990f, 0.856246394717065210f, - -0.516567625325114350f, - 0.856147328375194470f, -0.516731799017649870f, 0.856048230555233940f, - -0.516895953711434150f, - 0.855949101260826910f, -0.517060089400431910f, 0.855849940495618240f, - -0.517224206078608310f, - 0.855750748263253920f, -0.517388303739929060f, 0.855651524567380690f, - -0.517552382378360880f, - 0.855552269411646860f, -0.517716441987871150f, 0.855452982799701830f, - -0.517880482562427690f, - 0.855353664735196030f, -0.518044504095999340f, 0.855254315221780970f, - -0.518208506582555460f, - 0.855154934263109620f, -0.518372490016066110f, 0.855055521862835950f, - -0.518536454390502220f, - 0.854956078024614930f, -0.518700399699834950f, 0.854856602752102850f, - -0.518864325938036890f, - 0.854757096048957220f, -0.519028233099080860f, 0.854657557918836460f, - -0.519192121176940250f, - 0.854557988365400530f, -0.519355990165589640f, 0.854458387392310170f, - -0.519519840059003760f, - 0.854358755003227440f, -0.519683670851158410f, 0.854259091201815530f, - -0.519847482536030190f, - 0.854159395991738850f, -0.520011275107596040f, 0.854059669376662780f, - -0.520175048559833760f, - 0.853959911360254180f, -0.520338802886721960f, 0.853860121946180770f, - -0.520502538082239670f, - 0.853760301138111410f, -0.520666254140367160f, 0.853660448939716380f, - -0.520829951055084670f, - 0.853560565354666840f, -0.520993628820373920f, 0.853460650386635320f, - -0.521157287430216610f, - 0.853360704039295430f, -0.521320926878595660f, 0.853260726316321880f, - -0.521484547159494330f, - 0.853160717221390420f, -0.521648148266897090f, 0.853060676758178320f, - -0.521811730194788550f, - 0.852960604930363630f, -0.521975292937154390f, 0.852860501741625750f, - -0.522138836487980760f, - 0.852760367195645300f, -0.522302360841254590f, 0.852660201296103760f, - -0.522465865990963780f, - 0.852560004046684080f, -0.522629351931096610f, 0.852459775451070100f, - -0.522792818655642090f, - 0.852359515512947090f, -0.522956266158590140f, 0.852259224236001090f, - -0.523119694433931250f, - 0.852158901623919830f, -0.523283103475656430f, 0.852058547680391690f, - -0.523446493277757830f, - 0.851958162409106380f, -0.523609863834227920f, 0.851857745813754840f, - -0.523773215139060170f, - 0.851757297898029120f, -0.523936547186248600f, 0.851656818665622370f, - -0.524099859969787700f, - 0.851556308120228980f, -0.524263153483673360f, 0.851455766265544310f, - -0.524426427721901400f, - 0.851355193105265200f, -0.524589682678468950f, 0.851254588643089120f, - -0.524752918347373360f, - 0.851153952882715340f, -0.524916134722613000f, 0.851053285827843790f, - -0.525079331798186780f, - 0.850952587482175730f, -0.525242509568094710f, 0.850851857849413530f, - -0.525405668026336930f, - 0.850751096933260790f, -0.525568807166914680f, 0.850650304737422090f, - -0.525731926983829760f, - 0.850549481265603480f, -0.525895027471084630f, 0.850448626521511760f, - -0.526058108622682760f, - 0.850347740508854980f, -0.526221170432628060f, 0.850246823231342710f, - -0.526384212894925100f, - 0.850145874692685210f, -0.526547236003579440f, 0.850044894896594180f, - -0.526710239752597010f, - 0.849943883846782210f, -0.526873224135984590f, 0.849842841546963320f, - -0.527036189147750080f, - 0.849741768000852550f, -0.527199134781901280f, 0.849640663212165910f, - -0.527362061032447540f, - 0.849539527184620890f, -0.527524967893398200f, 0.849438359921936060f, - -0.527687855358763720f, - 0.849337161427830780f, -0.527850723422555230f, 0.849235931706025960f, - -0.528013572078784630f, - 0.849134670760243630f, -0.528176401321464370f, 0.849033378594206800f, - -0.528339211144607690f, - 0.848932055211639610f, -0.528502001542228480f, 0.848830700616267530f, - -0.528664772508341320f, - 0.848729314811817130f, -0.528827524036961870f, 0.848627897802015860f, - -0.528990256122106040f, - 0.848526449590592650f, -0.529152968757790610f, 0.848424970181277600f, - -0.529315661938033260f, - 0.848323459577801640f, -0.529478335656851980f, 0.848221917783896990f, - -0.529640989908265910f, - 0.848120344803297230f, -0.529803624686294610f, 0.848018740639736810f, - -0.529966239984958620f, - 0.847917105296951410f, -0.530128835798278960f, 0.847815438778677930f, - -0.530291412120277310f, - 0.847713741088654380f, -0.530453968944976320f, 0.847612012230619660f, - -0.530616506266399330f, - 0.847510252208314330f, -0.530779024078570140f, 0.847408461025479730f, - -0.530941522375513620f, - 0.847306638685858320f, -0.531104001151255000f, 0.847204785193194090f, - -0.531266460399820390f, - 0.847102900551231500f, -0.531428900115236800f, 0.847000984763716880f, - -0.531591320291531670f, - 0.846899037834397240f, -0.531753720922733320f, 0.846797059767020910f, - -0.531916102002870650f, - 0.846695050565337450f, -0.532078463525973540f, 0.846593010233097190f, - -0.532240805486072220f, - 0.846490938774052130f, -0.532403127877197900f, 0.846388836191954930f, - -0.532565430693382580f, - 0.846286702490559710f, -0.532727713928658810f, 0.846184537673621560f, - -0.532889977577059800f, - 0.846082341744897050f, -0.533052221632619450f, 0.845980114708143270f, - -0.533214446089372960f, - 0.845877856567119000f, -0.533376650941355330f, 0.845775567325584010f, - -0.533538836182603120f, - 0.845673246987299070f, -0.533701001807152960f, 0.845570895556026270f, - -0.533863147809042650f, - 0.845468513035528830f, -0.534025274182310380f, 0.845366099429570970f, - -0.534187380920995380f, - 0.845263654741918220f, -0.534349468019137520f, 0.845161178976337140f, - -0.534511535470777120f, - 0.845058672136595470f, -0.534673583269955510f, 0.844956134226462210f, - -0.534835611410714560f, - 0.844853565249707120f, -0.534997619887097150f, 0.844750965210101510f, - -0.535159608693146600f, - 0.844648334111417820f, -0.535321577822907120f, 0.844545671957429240f, - -0.535483527270423370f, - 0.844442978751910660f, -0.535645457029741090f, 0.844340254498637590f, - -0.535807367094906390f, - 0.844237499201387020f, -0.535969257459966710f, 0.844134712863936930f, - -0.536131128118969460f, - 0.844031895490066410f, -0.536292979065963180f, 0.843929047083555870f, - -0.536454810294997090f, - 0.843826167648186740f, -0.536616621800121040f, 0.843723257187741660f, - -0.536778413575385920f, - 0.843620315706004150f, -0.536940185614842910f, 0.843517343206759200f, - -0.537101937912544130f, - 0.843414339693792760f, -0.537263670462542530f, 0.843311305170892140f, - -0.537425383258891550f, - 0.843208239641845440f, -0.537587076295645390f, 0.843105143110442160f, - -0.537748749566859360f, - 0.843002015580472940f, -0.537910403066588880f, 0.842898857055729310f, - -0.538072036788890600f, - 0.842795667540004120f, -0.538233650727821700f, 0.842692447037091670f, - -0.538395244877439950f, - 0.842589195550786710f, -0.538556819231804100f, 0.842485913084885630f, - -0.538718373784973560f, - 0.842382599643185850f, -0.538879908531008420f, 0.842279255229485990f, - -0.539041423463969440f, - 0.842175879847585570f, -0.539202918577918240f, 0.842072473501285560f, - -0.539364393866917040f, - 0.841969036194387680f, -0.539525849325028890f, 0.841865567930695340f, - -0.539687284946317570f, - 0.841762068714012490f, -0.539848700724847590f, 0.841658538548144760f, - -0.540010096654684020f, - 0.841554977436898440f, -0.540171472729892850f, 0.841451385384081260f, - -0.540332828944540710f, - 0.841347762393501950f, -0.540494165292695230f, 0.841244108468970580f, - -0.540655481768424150f, - 0.841140423614298080f, -0.540816778365796670f, 0.841036707833296650f, - -0.540978055078882080f, - 0.840932961129779780f, -0.541139311901750800f, 0.840829183507561640f, - -0.541300548828474120f, - 0.840725374970458070f, -0.541461765853123440f, 0.840621535522285690f, - -0.541622962969771530f, - 0.840517665166862550f, -0.541784140172491550f, 0.840413763908007480f, - -0.541945297455357360f, - 0.840309831749540770f, -0.542106434812443920f, 0.840205868695283580f, - -0.542267552237826520f, - 0.840101874749058400f, -0.542428649725581250f, 0.839997849914688840f, - -0.542589727269785270f, - 0.839893794195999520f, -0.542750784864515890f, 0.839789707596816370f, - -0.542911822503851730f, - 0.839685590120966110f, -0.543072840181871740f, 0.839581441772277120f, - -0.543233837892655890f, - 0.839477262554578550f, -0.543394815630284800f, 0.839373052471700690f, - -0.543555773388839540f, - 0.839268811527475230f, -0.543716711162402280f, 0.839164539725734680f, - -0.543877628945055980f, - 0.839060237070312740f, -0.544038526730883820f, 0.838955903565044460f, - -0.544199404513970310f, - 0.838851539213765760f, -0.544360262288400400f, 0.838747144020313920f, - -0.544521100048259600f, - 0.838642717988527300f, -0.544681917787634530f, 0.838538261122245280f, - -0.544842715500612360f, - 0.838433773425308340f, -0.545003493181281160f, 0.838329254901558300f, - -0.545164250823729320f, - 0.838224705554838080f, -0.545324988422046460f, 0.838120125388991500f, - -0.545485705970322530f, - 0.838015514407863820f, -0.545646403462648590f, 0.837910872615301170f, - -0.545807080893116140f, - 0.837806200015150940f, -0.545967738255817570f, 0.837701496611261700f, - -0.546128375544845950f, - 0.837596762407483040f, -0.546288992754295210f, 0.837491997407665890f, - -0.546449589878259650f, - 0.837387201615661940f, -0.546610166910834860f, 0.837282375035324320f, - -0.546770723846116800f, - 0.837177517670507300f, -0.546931260678202190f, 0.837072629525066000f, - -0.547091777401188530f, - 0.836967710602857020f, -0.547252274009174090f, 0.836862760907737920f, - -0.547412750496257930f, - 0.836757780443567190f, -0.547573206856539760f, 0.836652769214204950f, - -0.547733643084120090f, - 0.836547727223512010f, -0.547894059173100190f, 0.836442654475350380f, - -0.548054455117581880f, - 0.836337550973583530f, -0.548214830911667780f, 0.836232416722075600f, - -0.548375186549461600f, - 0.836127251724692270f, -0.548535522025067390f, 0.836022055985299880f, - -0.548695837332590090f, - 0.835916829507766360f, -0.548856132466135290f, 0.835811572295960700f, - -0.549016407419809390f, - 0.835706284353752600f, -0.549176662187719660f, 0.835600965685013410f, - -0.549336896763974010f, - 0.835495616293615350f, -0.549497111142680960f, 0.835390236183431890f, - -0.549657305317949870f, - 0.835284825358337370f, -0.549817479283890910f, 0.835179383822207690f, - -0.549977633034614890f, - 0.835073911578919410f, -0.550137766564233630f, 0.834968408632350450f, - -0.550297879866859190f, - 0.834862874986380010f, -0.550457972936604810f, 0.834757310644888230f, - -0.550618045767584330f, - 0.834651715611756440f, -0.550778098353912120f, 0.834546089890866870f, - -0.550938130689703880f, - 0.834440433486103190f, -0.551098142769075430f, 0.834334746401350080f, - -0.551258134586143590f, - 0.834229028640493420f, -0.551418106135026060f, 0.834123280207420100f, - -0.551578057409841000f, - 0.834017501106018130f, -0.551737988404707340f, 0.833911691340176840f, - -0.551897899113745210f, - 0.833805850913786340f, -0.552057789531074980f, 0.833699979830738290f, - -0.552217659650817930f, - 0.833594078094925140f, -0.552377509467096070f, 0.833488145710240770f, - -0.552537338974032120f, - 0.833382182680579730f, -0.552697148165749770f, 0.833276189009838240f, - -0.552856937036373290f, - 0.833170164701913190f, -0.553016705580027470f, 0.833064109760702890f, - -0.553176453790838350f, - 0.832958024190106670f, -0.553336181662932300f, 0.832851907994025090f, - -0.553495889190436570f, - 0.832745761176359460f, -0.553655576367479310f, 0.832639583741012770f, - -0.553815243188189090f, - 0.832533375691888680f, -0.553974889646695500f, 0.832427137032892280f, - -0.554134515737128910f, - 0.832320867767929680f, -0.554294121453620000f, 0.832214567900907980f, - -0.554453706790300930f, - 0.832108237435735590f, -0.554613271741304040f, 0.832001876376321950f, - -0.554772816300762470f, - 0.831895484726577590f, -0.554932340462810370f, 0.831789062490414400f, - -0.555091844221582420f, - 0.831682609671745120f, -0.555251327571213980f, 0.831576126274483740f, - -0.555410790505841630f, - 0.831469612302545240f, -0.555570233019602180f, 0.831363067759845920f, - -0.555729655106633410f, - 0.831256492650303210f, -0.555889056761073810f, 0.831149886977835540f, - -0.556048437977062600f, - 0.831043250746362320f, -0.556207798748739930f, 0.830936583959804410f, - -0.556367139070246370f, - 0.830829886622083570f, -0.556526458935723610f, 0.830723158737122880f, - -0.556685758339313890f, - 0.830616400308846310f, -0.556845037275160100f, 0.830509611341179070f, - -0.557004295737405950f, - 0.830402791838047550f, -0.557163533720196220f, 0.830295941803379070f, - -0.557322751217676160f, - 0.830189061241102370f, -0.557481948223991550f, 0.830082150155146970f, - -0.557641124733289420f, - 0.829975208549443950f, -0.557800280739716990f, 0.829868236427924840f, - -0.557959416237422960f, - 0.829761233794523050f, -0.558118531220556100f, 0.829654200653172640f, - -0.558277625683266330f, - 0.829547137007808910f, -0.558436699619704100f, 0.829440042862368170f, - -0.558595753024020760f, - 0.829332918220788250f, -0.558754785890368310f, 0.829225763087007570f, - -0.558913798212899770f, - 0.829118577464965980f, -0.559072789985768480f, 0.829011361358604430f, - -0.559231761203128900f, - 0.828904114771864870f, -0.559390711859136140f, 0.828796837708690610f, - -0.559549641947945760f, - 0.828689530173025820f, -0.559708551463714680f, 0.828582192168815790f, - -0.559867440400600210f, - 0.828474823700007130f, -0.560026308752760380f, 0.828367424770547480f, - -0.560185156514354080f, - 0.828259995384385660f, -0.560343983679540860f, 0.828152535545471410f, - -0.560502790242481060f, - 0.828045045257755800f, -0.560661576197336030f, 0.827937524525190870f, - -0.560820341538267430f, - 0.827829973351729920f, -0.560979086259438150f, 0.827722391741327220f, - -0.561137810355011420f, - 0.827614779697938400f, -0.561296513819151470f, 0.827507137225519830f, - -0.561455196646023280f, - 0.827399464328029470f, -0.561613858829792420f, 0.827291761009425810f, - -0.561772500364625340f, - 0.827184027273669130f, -0.561931121244689470f, 0.827076263124720270f, - -0.562089721464152480f, - 0.826968468566541600f, -0.562248301017183150f, 0.826860643603096190f, - -0.562406859897951140f, - 0.826752788238348520f, -0.562565398100626560f, 0.826644902476264320f, - -0.562723915619380400f, - 0.826536986320809960f, -0.562882412448384440f, 0.826429039775953500f, - -0.563040888581811230f, - 0.826321062845663530f, -0.563199344013834090f, 0.826213055533910220f, - -0.563357778738627020f, - 0.826105017844664610f, -0.563516192750364800f, 0.825996949781899080f, - -0.563674586043223070f, - 0.825888851349586780f, -0.563832958611378170f, 0.825780722551702430f, - -0.563991310449006970f, - 0.825672563392221390f, -0.564149641550287680f, 0.825564373875120490f, - -0.564307951909398640f, - 0.825456154004377550f, -0.564466241520519500f, 0.825347903783971380f, - -0.564624510377830120f, - 0.825239623217882250f, -0.564782758475511400f, 0.825131312310091070f, - -0.564940985807745210f, - 0.825022971064580220f, -0.565099192368713980f, 0.824914599485333190f, - -0.565257378152600800f, - 0.824806197576334330f, -0.565415543153589660f, 0.824697765341569470f, - -0.565573687365865330f, - 0.824589302785025290f, -0.565731810783613120f, 0.824480809910689500f, - -0.565889913401019570f, - 0.824372286722551250f, -0.566047995212271450f, 0.824263733224600560f, - -0.566206056211556730f, - 0.824155149420828570f, -0.566364096393063840f, 0.824046535315227760f, - -0.566522115750982100f, - 0.823937890911791370f, -0.566680114279501600f, 0.823829216214513990f, - -0.566838091972813320f, - 0.823720511227391430f, -0.566996048825108680f, 0.823611775954420260f, - -0.567153984830580100f, - 0.823503010399598500f, -0.567311899983420800f, 0.823394214566925080f, - -0.567469794277824510f, - 0.823285388460400110f, -0.567627667707986230f, 0.823176532084024860f, - -0.567785520268101140f, - 0.823067645441801670f, -0.567943351952365560f, 0.822958728537734000f, - -0.568101162754976460f, - 0.822849781375826430f, -0.568258952670131490f, 0.822740803960084420f, - -0.568416721692029280f, - 0.822631796294514990f, -0.568574469814869140f, 0.822522758383125940f, - -0.568732197032851050f, - 0.822413690229926390f, -0.568889903340175860f, 0.822304591838926350f, - -0.569047588731045110f, - 0.822195463214137170f, -0.569205253199661200f, 0.822086304359571090f, - -0.569362896740227220f, - 0.821977115279241550f, -0.569520519346947140f, 0.821867895977163250f, - -0.569678121014025600f, - 0.821758646457351750f, -0.569835701735668000f, 0.821649366723823940f, - -0.569993261506080540f, - 0.821540056780597610f, -0.570150800319470300f, 0.821430716631691870f, - -0.570308318170044900f, - 0.821321346281126740f, -0.570465815052012990f, 0.821211945732923550f, - -0.570623290959583750f, - 0.821102514991104650f, -0.570780745886967260f, 0.820993054059693580f, - -0.570938179828374360f, - 0.820883562942714580f, -0.571095592778016690f, 0.820774041644193650f, - -0.571252984730106660f, - 0.820664490168157460f, -0.571410355678857230f, 0.820554908518633890f, - -0.571567705618482580f, - 0.820445296699652050f, -0.571725034543197120f, 0.820335654715241840f, - -0.571882342447216590f, - 0.820225982569434690f, -0.572039629324757050f, 0.820116280266262820f, - -0.572196895170035580f, - 0.820006547809759680f, -0.572354139977269920f, 0.819896785203959810f, - -0.572511363740678790f, - 0.819786992452898990f, -0.572668566454481160f, 0.819677169560613870f, - -0.572825748112897550f, - 0.819567316531142230f, -0.572982908710148560f, 0.819457433368523280f, - -0.573140048240455950f, - 0.819347520076796900f, -0.573297166698042200f, 0.819237576660004520f, - -0.573454264077130400f, - 0.819127603122188240f, -0.573611340371944610f, 0.819017599467391500f, - -0.573768395576709560f, - 0.818907565699658950f, -0.573925429685650750f, 0.818797501823036010f, - -0.574082442692994470f, - 0.818687407841569680f, -0.574239434592967890f, 0.818577283759307610f, - -0.574396405379798750f, - 0.818467129580298660f, -0.574553355047715760f, 0.818356945308593150f, - -0.574710283590948330f, - 0.818246730948242070f, -0.574867191003726740f, 0.818136486503297730f, - -0.575024077280281710f, - 0.818026211977813440f, -0.575180942414845080f, 0.817915907375843850f, - -0.575337786401649450f, - 0.817805572701444270f, -0.575494609234928120f, 0.817695207958671680f, - -0.575651410908915140f, - 0.817584813151583710f, -0.575808191417845340f, 0.817474388284239240f, - -0.575964950755954220f, - 0.817363933360698460f, -0.576121688917478280f, 0.817253448385022340f, - -0.576278405896654910f, - 0.817142933361272970f, -0.576435101687721830f, 0.817032388293513880f, - -0.576591776284917760f, - 0.816921813185809480f, -0.576748429682482410f, 0.816811208042225290f, - -0.576905061874655960f, - 0.816700572866827850f, -0.577061672855679440f, 0.816589907663684890f, - -0.577218262619794920f, - 0.816479212436865390f, -0.577374831161244880f, 0.816368487190439200f, - -0.577531378474272720f, - 0.816257731928477390f, -0.577687904553122800f, 0.816146946655052270f, - -0.577844409392039850f, - 0.816036131374236810f, -0.578000892985269910f, 0.815925286090105510f, - -0.578157355327059360f, - 0.815814410806733780f, -0.578313796411655590f, 0.815703505528198260f, - -0.578470216233306630f, - 0.815592570258576790f, -0.578626614786261430f, 0.815481605001947770f, - -0.578782992064769690f, - 0.815370609762391290f, -0.578939348063081780f, 0.815259584543988280f, - -0.579095682775449090f, - 0.815148529350820830f, -0.579251996196123550f, 0.815037444186972220f, - -0.579408288319357870f, - 0.814926329056526620f, -0.579564559139405630f, 0.814815183963569440f, - -0.579720808650521450f, - 0.814704008912187080f, -0.579877036846960350f, 0.814592803906467270f, - -0.580033243722978150f, - 0.814481568950498610f, -0.580189429272831680f, 0.814370304048371070f, - -0.580345593490778300f, - 0.814259009204175270f, -0.580501736371076490f, 0.814147684422003360f, - -0.580657857907985300f, - 0.814036329705948410f, -0.580813958095764530f, 0.813924945060104600f, - -0.580970036928674770f, - 0.813813530488567190f, -0.581126094400977620f, 0.813702085995432700f, - -0.581282130506935000f, - 0.813590611584798510f, -0.581438145240810170f, 0.813479107260763220f, - -0.581594138596866930f, - 0.813367573027426570f, -0.581750110569369650f, 0.813256008888889380f, - -0.581906061152583810f, - 0.813144414849253590f, -0.582061990340775440f, 0.813032790912622040f, - -0.582217898128211670f, - 0.812921137083098770f, -0.582373784509160110f, 0.812809453364789270f, - -0.582529649477889320f, - 0.812697739761799490f, -0.582685493028668460f, 0.812585996278237130f, - -0.582841315155767650f, - 0.812474222918210480f, -0.582997115853457700f, 0.812362419685829230f, - -0.583152895116010430f, - 0.812250586585203880f, -0.583308652937698290f, 0.812138723620446480f, - -0.583464389312794320f, - 0.812026830795669730f, -0.583620104235572760f, 0.811914908114987790f, - -0.583775797700308070f, - 0.811802955582515470f, -0.583931469701276180f, 0.811690973202369050f, - -0.584087120232753440f, - 0.811578960978665890f, -0.584242749289016980f, 0.811466918915524250f, - -0.584398356864344600f, - 0.811354847017063730f, -0.584553942953015330f, 0.811242745287404810f, - -0.584709507549308390f, - 0.811130613730669190f, -0.584865050647504490f, 0.811018452350979470f, - -0.585020572241884530f, - 0.810906261152459670f, -0.585176072326730410f, 0.810794040139234730f, - -0.585331550896324940f, - 0.810681789315430780f, -0.585487007944951340f, 0.810569508685174630f, - -0.585642443466894420f, - 0.810457198252594770f, -0.585797857456438860f, 0.810344858021820550f, - -0.585953249907870570f, - 0.810232487996982330f, -0.586108620815476430f, 0.810120088182211600f, - -0.586263970173543590f, - 0.810007658581641140f, -0.586419297976360500f, 0.809895199199404450f, - -0.586574604218216170f, - 0.809782710039636530f, -0.586729888893400390f, 0.809670191106473090f, - -0.586885151996203950f, - 0.809557642404051260f, -0.587040393520917970f, 0.809445063936509170f, - -0.587195613461834800f, - 0.809332455707985950f, -0.587350811813247660f, 0.809219817722621750f, - -0.587505988569450020f, - 0.809107149984558240f, -0.587661143724736660f, 0.808994452497937670f, - -0.587816277273402910f, - 0.808881725266903610f, -0.587971389209745010f, 0.808768968295600850f, - -0.588126479528059850f, - 0.808656181588174980f, -0.588281548222645220f, 0.808543365148773010f, - -0.588436595287799790f, - 0.808430518981542720f, -0.588591620717822890f, 0.808317643090633250f, - -0.588746624507014540f, - 0.808204737480194720f, -0.588901606649675720f, 0.808091802154378370f, - -0.589056567140108460f, - 0.807978837117336310f, -0.589211505972614960f, 0.807865842373222120f, - -0.589366423141498790f, - 0.807752817926190360f, -0.589521318641063940f, 0.807639763780396480f, - -0.589676192465615420f, - 0.807526679939997160f, -0.589831044609458790f, 0.807413566409150190f, - -0.589985875066900920f, - 0.807300423192014450f, -0.590140683832248820f, 0.807187250292749960f, - -0.590295470899810830f, - 0.807074047715517610f, -0.590450236263895810f, 0.806960815464479730f, - -0.590604979918813330f, - 0.806847553543799330f, -0.590759701858874160f, 0.806734261957640860f, - -0.590914402078389520f, - 0.806620940710169650f, -0.591069080571671400f, 0.806507589805552260f, - -0.591223737333032910f, - 0.806394209247956240f, -0.591378372356787580f, 0.806280799041550480f, - -0.591532985637249990f, - 0.806167359190504420f, -0.591687577168735430f, 0.806053889698989060f, - -0.591842146945560140f, - 0.805940390571176280f, -0.591996694962040990f, 0.805826861811239300f, - -0.592151221212495530f, - 0.805713303423352230f, -0.592305725691242290f, 0.805599715411690060f, - -0.592460208392600830f, - 0.805486097780429230f, -0.592614669310891130f, 0.805372450533747060f, - -0.592769108440434070f, - 0.805258773675822210f, -0.592923525775551300f, 0.805145067210834230f, - -0.593077921310565470f, - 0.805031331142963660f, -0.593232295039799800f, 0.804917565476392260f, - -0.593386646957578480f, - 0.804803770215302920f, -0.593540977058226390f, 0.804689945363879500f, - -0.593695285336069190f, - 0.804576090926307110f, -0.593849571785433630f, 0.804462206906771840f, - -0.594003836400646690f, - 0.804348293309460780f, -0.594158079176036800f, 0.804234350138562260f, - -0.594312300105932830f, - 0.804120377398265810f, -0.594466499184664430f, 0.804006375092761520f, - -0.594620676406562240f, - 0.803892343226241260f, -0.594774831765957580f, 0.803778281802897570f, - -0.594928965257182420f, - 0.803664190826924090f, -0.595083076874569960f, 0.803550070302515680f, - -0.595237166612453850f, - 0.803435920233868120f, -0.595391234465168730f, 0.803321740625178580f, - -0.595545280427049790f, - 0.803207531480644940f, -0.595699304492433360f, 0.803093292804466400f, - -0.595853306655656280f, - 0.802979024600843250f, -0.596007286911056530f, 0.802864726873976700f, - -0.596161245252972540f, - 0.802750399628069160f, -0.596315181675743710f, 0.802636042867324150f, - -0.596469096173710360f, - 0.802521656595946430f, -0.596622988741213220f, 0.802407240818141300f, - -0.596776859372594390f, - 0.802292795538115720f, -0.596930708062196500f, 0.802178320760077450f, - -0.597084534804362740f, - 0.802063816488235440f, -0.597238339593437420f, 0.801949282726799770f, - -0.597392122423765710f, - 0.801834719479981310f, -0.597545883289693160f, 0.801720126751992330f, - -0.597699622185566830f, - 0.801605504547046150f, -0.597853339105733910f, 0.801490852869356950f, - -0.598007034044542700f, - 0.801376171723140240f, -0.598160706996342270f, 0.801261461112612540f, - -0.598314357955482600f, - 0.801146721041991360f, -0.598467986916314310f, 0.801031951515495330f, - -0.598621593873188920f, - 0.800917152537344300f, -0.598775178820458720f, 0.800802324111759110f, - -0.598928741752476900f, - 0.800687466242961610f, -0.599082282663597310f, 0.800572578935174860f, - -0.599235801548174570f, - 0.800457662192622820f, -0.599389298400564540f, 0.800342716019530660f, - -0.599542773215123390f, - 0.800227740420124790f, -0.599696225986208310f, 0.800112735398632370f, - -0.599849656708177250f, - 0.799997700959281910f, -0.600003065375388940f, 0.799882637106302810f, - -0.600156451982203240f, - 0.799767543843925680f, -0.600309816522980430f, 0.799652421176382240f, - -0.600463158992081580f, - 0.799537269107905010f, -0.600616479383868970f, 0.799422087642728040f, - -0.600769777692705230f, - 0.799306876785086160f, -0.600923053912954090f, 0.799191636539215210f, - -0.601076308038980160f, - 0.799076366909352350f, -0.601229540065148500f, 0.798961067899735760f, - -0.601382749985825420f, - 0.798845739514604580f, -0.601535937795377730f, 0.798730381758199210f, - -0.601689103488172950f, - 0.798614994634760820f, -0.601842247058580030f, 0.798499578148532120f, - -0.601995368500968020f, - 0.798384132303756380f, -0.602148467809707210f, 0.798268657104678430f, - -0.602301544979168550f, - 0.798153152555543750f, -0.602454600003723750f, 0.798037618660599410f, - -0.602607632877745440f, - 0.797922055424093000f, -0.602760643595607220f, 0.797806462850273570f, - -0.602913632151683030f, - 0.797690840943391160f, -0.603066598540348160f, 0.797575189707696700f, - -0.603219542755978440f, - 0.797459509147442460f, -0.603372464792950260f, 0.797343799266881700f, - -0.603525364645641550f, - 0.797228060070268700f, -0.603678242308430370f, 0.797112291561858920f, - -0.603831097775695880f, - 0.796996493745908750f, -0.603983931041818020f, 0.796880666626675780f, - -0.604136742101177520f, - 0.796764810208418830f, -0.604289530948155960f, 0.796648924495397260f, - -0.604442297577135860f, - 0.796533009491872000f, -0.604595041982500360f, 0.796417065202104980f, - -0.604747764158633410f, - 0.796301091630359110f, -0.604900464099919820f, 0.796185088780898440f, - -0.605053141800745320f, - 0.796069056657987990f, -0.605205797255496500f, 0.795952995265893910f, - -0.605358430458560530f, - 0.795836904608883570f, -0.605511041404325550f, 0.795720784691225090f, - -0.605663630087180380f, - 0.795604635517188070f, -0.605816196501514970f, 0.795488457091042990f, - -0.605968740641719680f, - 0.795372249417061310f, -0.606121262502186120f, 0.795256012499515610f, - -0.606273762077306430f, - 0.795139746342679590f, -0.606426239361473550f, 0.795023450950828050f, - -0.606578694349081290f, - 0.794907126328237010f, -0.606731127034524480f, 0.794790772479183170f, - -0.606883537412198470f, - 0.794674389407944550f, -0.607035925476499650f, 0.794557977118800380f, - -0.607188291221825160f, - 0.794441535616030590f, -0.607340634642572930f, 0.794325064903916520f, - -0.607492955733141550f, - 0.794208564986740640f, -0.607645254487930830f, 0.794092035868785960f, - -0.607797530901341140f, - 0.793975477554337170f, -0.607949784967773630f, 0.793858890047679730f, - -0.608102016681630440f, - 0.793742273353100210f, -0.608254226037314490f, 0.793625627474886300f, - -0.608406413029229150f, - 0.793508952417326660f, -0.608558577651779450f, 0.793392248184711100f, - -0.608710719899370310f, - 0.793275514781330630f, -0.608862839766408200f, 0.793158752211477140f, - -0.609014937247299830f, - 0.793041960479443640f, -0.609167012336453210f, 0.792925139589524260f, - -0.609319065028276820f, - 0.792808289546014120f, -0.609471095317180240f, 0.792691410353209450f, - -0.609623103197573730f, - 0.792574502015407690f, -0.609775088663868430f, 0.792457564536907080f, - -0.609927051710476120f, - 0.792340597922007170f, -0.610078992331809620f, 0.792223602175008310f, - -0.610230910522282620f, - 0.792106577300212390f, -0.610382806276309480f, 0.791989523301921850f, - -0.610534679588305320f, - 0.791872440184440470f, -0.610686530452686280f, 0.791755327952073150f, - -0.610838358863869170f, - 0.791638186609125880f, -0.610990164816271660f, 0.791521016159905220f, - -0.611141948304312570f, - 0.791403816608719500f, -0.611293709322410890f, 0.791286587959877830f, - -0.611445447864987000f, - 0.791169330217690200f, -0.611597163926461910f, 0.791052043386467950f, - -0.611748857501257290f, - 0.790934727470523290f, -0.611900528583796070f, 0.790817382474169770f, - -0.612052177168501470f, - 0.790700008401721610f, -0.612203803249797950f, 0.790582605257494460f, - -0.612355406822110650f, - 0.790465173045804880f, -0.612506987879865570f, 0.790347711770970520f, - -0.612658546417489290f, - 0.790230221437310030f, -0.612810082429409710f, 0.790112702049143300f, - -0.612961595910055170f, - 0.789995153610791090f, -0.613113086853854910f, 0.789877576126575280f, - -0.613264555255239040f, - 0.789759969600819070f, -0.613416001108638590f, 0.789642334037846340f, - -0.613567424408485330f, - 0.789524669441982190f, -0.613718825149211720f, 0.789406975817552930f, - -0.613870203325251330f, - 0.789289253168885650f, -0.614021558931038380f, 0.789171501500308900f, - -0.614172891961007990f, - 0.789053720816151880f, -0.614324202409595950f, 0.788935911120745240f, - -0.614475490271239040f, - 0.788818072418420280f, -0.614626755540375050f, 0.788700204713509660f, - -0.614777998211442080f, - 0.788582308010347120f, -0.614929218278879590f, 0.788464382313267540f, - -0.615080415737127460f, - 0.788346427626606340f, -0.615231590580626820f, 0.788228443954700490f, - -0.615382742803819220f, - 0.788110431301888070f, -0.615533872401147320f, 0.787992389672507950f, - -0.615684979367054570f, - 0.787874319070900220f, -0.615836063695985090f, 0.787756219501406060f, - -0.615987125382383760f, - 0.787638090968367450f, -0.616138164420696910f, 0.787519933476127810f, - -0.616289180805370980f, - 0.787401747029031430f, -0.616440174530853650f, 0.787283531631423620f, - -0.616591145591593110f, - 0.787165287287651010f, -0.616742093982038720f, 0.787047014002060790f, - -0.616893019696640680f, - 0.786928711779001810f, -0.617043922729849760f, 0.786810380622823490f, - -0.617194803076117630f, - 0.786692020537876790f, -0.617345660729896830f, 0.786573631528513230f, - -0.617496495685640910f, - 0.786455213599085770f, -0.617647307937803870f, 0.786336766753948260f, - -0.617798097480841020f, - 0.786218290997455660f, -0.617948864309208150f, 0.786099786333963930f, - -0.618099608417362000f, - 0.785981252767830150f, -0.618250329799760250f, 0.785862690303412600f, - -0.618401028450860980f, - 0.785744098945070360f, -0.618551704365123740f, 0.785625478697163700f, - -0.618702357537008530f, - 0.785506829564053930f, -0.618852987960976320f, 0.785388151550103550f, - -0.619003595631488660f, - 0.785269444659675850f, -0.619154180543008410f, 0.785150708897135560f, - -0.619304742689998690f, - 0.785031944266848080f, -0.619455282066924020f, 0.784913150773180020f, - -0.619605798668249270f, - 0.784794328420499230f, -0.619756292488440660f, 0.784675477213174320f, - -0.619906763521964720f, - 0.784556597155575240f, -0.620057211763289100f, 0.784437688252072830f, - -0.620207637206882430f, - 0.784318750507038920f, -0.620358039847213720f, 0.784199783924846570f, - -0.620508419678753360f, - 0.784080788509869950f, -0.620658776695972140f, 0.783961764266484120f, - -0.620809110893341900f, - 0.783842711199065230f, -0.620959422265335180f, 0.783723629311990470f, - -0.621109710806425630f, - 0.783604518609638200f, -0.621259976511087550f, 0.783485379096387820f, - -0.621410219373796150f, - 0.783366210776619720f, -0.621560439389027160f, 0.783247013654715380f, - -0.621710636551257690f, - 0.783127787735057310f, -0.621860810854965360f, 0.783008533022029110f, - -0.622010962294628600f, - 0.782889249520015480f, -0.622161090864726820f, 0.782769937233402050f, - -0.622311196559740320f, - 0.782650596166575730f, -0.622461279374149970f, 0.782531226323924240f, - -0.622611339302437730f, - 0.782411827709836530f, -0.622761376339086350f, 0.782292400328702400f, - -0.622911390478579460f, - 0.782172944184913010f, -0.623061381715401260f, 0.782053459282860300f, - -0.623211350044037270f, - 0.781933945626937630f, -0.623361295458973230f, 0.781814403221538830f, - -0.623511217954696440f, - 0.781694832071059390f, -0.623661117525694530f, 0.781575232179895550f, - -0.623810994166456130f, - 0.781455603552444590f, -0.623960847871470660f, 0.781335946193104870f, - -0.624110678635228510f, - 0.781216260106276090f, -0.624260486452220650f, 0.781096545296358520f, - -0.624410271316939270f, - 0.780976801767753750f, -0.624560033223877210f, 0.780857029524864580f, - -0.624709772167528100f, - 0.780737228572094490f, -0.624859488142386340f, 0.780617398913848400f, - -0.625009181142947460f, - 0.780497540554531910f, -0.625158851163707620f, 0.780377653498552040f, - -0.625308498199164010f, - 0.780257737750316590f, -0.625458122243814360f, 0.780137793314234610f, - -0.625607723292157410f, - 0.780017820194715990f, -0.625757301338692900f, 0.779897818396172000f, - -0.625906856377921090f, - 0.779777787923014550f, -0.626056388404343520f, 0.779657728779656890f, - -0.626205897412462130f, - 0.779537640970513260f, -0.626355383396779990f, 0.779417524499998900f, - -0.626504846351800810f, - 0.779297379372530300f, -0.626654286272029350f, 0.779177205592524680f, - -0.626803703151971200f, - 0.779057003164400630f, -0.626953096986132660f, 0.778936772092577500f, - -0.627102467769020900f, - 0.778816512381475980f, -0.627251815495144080f, 0.778696224035517530f, - -0.627401140159011050f, - 0.778575907059125050f, -0.627550441755131530f, 0.778455561456721900f, - -0.627699720278016240f, - 0.778335187232733210f, -0.627848975722176460f, 0.778214784391584540f, - -0.627998208082124700f, - 0.778094352937702790f, -0.628147417352374000f, 0.777973892875516100f, - -0.628296603527438320f, - 0.777853404209453150f, -0.628445766601832710f, 0.777732886943944050f, - -0.628594906570072550f, - 0.777612341083420030f, -0.628744023426674680f, 0.777491766632313010f, - -0.628893117166156480f, - 0.777371163595056310f, -0.629042187783036000f, 0.777250531976084070f, - -0.629191235271832290f, - 0.777129871779831620f, -0.629340259627065630f, 0.777009183010735290f, - -0.629489260843256630f, - 0.776888465673232440f, -0.629638238914926980f, 0.776767719771761510f, - -0.629787193836599200f, - 0.776646945310762060f, -0.629936125602796440f, 0.776526142294674430f, - -0.630085034208043180f, - 0.776405310727940390f, -0.630233919646864370f, 0.776284450615002510f, - -0.630382781913785940f, - 0.776163561960304340f, -0.630531621003334600f, 0.776042644768290770f, - -0.630680436910037940f, - 0.775921699043407690f, -0.630829229628424470f, 0.775800724790101650f, - -0.630977999153023550f, - 0.775679722012820650f, -0.631126745478365340f, 0.775558690716013580f, - -0.631275468598980760f, - 0.775437630904130540f, -0.631424168509401860f, 0.775316542581622530f, - -0.631572845204161020f, - 0.775195425752941420f, -0.631721498677792260f, 0.775074280422540450f, - -0.631870128924829850f, - 0.774953106594873930f, -0.632018735939809060f, 0.774831904274396850f, - -0.632167319717265920f, - 0.774710673465565550f, -0.632315880251737570f, 0.774589414172837550f, - -0.632464417537761840f, - 0.774468126400670860f, -0.632612931569877410f, 0.774346810153525130f, - -0.632761422342624000f, - 0.774225465435860680f, -0.632909889850541750f, 0.774104092252139050f, - -0.633058334088172140f, - 0.773982690606822900f, -0.633206755050057190f, 0.773861260504375540f, - -0.633355152730739950f, - 0.773739801949261840f, -0.633503527124764320f, 0.773618314945947460f, - -0.633651878226674900f, - 0.773496799498899050f, -0.633800206031017280f, 0.773375255612584470f, - -0.633948510532337810f, - 0.773253683291472590f, -0.634096791725183740f, 0.773132082540033070f, - -0.634245049604103330f, - 0.773010453362736990f, -0.634393284163645490f, 0.772888795764056220f, - -0.634541495398360020f, - 0.772767109748463850f, -0.634689683302797740f, 0.772645395320433860f, - -0.634837847871509990f, - 0.772523652484441330f, -0.634985989099049460f, 0.772401881244962450f, - -0.635134106979969190f, - 0.772280081606474320f, -0.635282201508823420f, 0.772158253573455240f, - -0.635430272680167160f, - 0.772036397150384520f, -0.635578320488556110f, 0.771914512341742350f, - -0.635726344928547070f, - 0.771792599152010150f, -0.635874345994697720f, 0.771670657585670330f, - -0.636022323681566300f, - 0.771548687647206300f, -0.636170277983712170f, 0.771426689341102590f, - -0.636318208895695460f, - 0.771304662671844830f, -0.636466116412077180f, 0.771182607643919330f, - -0.636614000527419120f, - 0.771060524261813820f, -0.636761861236284200f, 0.770938412530016940f, - -0.636909698533235870f, - 0.770816272453018540f, -0.637057512412838590f, 0.770694104035309140f, - -0.637205302869657600f, - 0.770571907281380810f, -0.637353069898259130f, 0.770449682195725960f, - -0.637500813493210190f, - 0.770327428782838890f, -0.637648533649078810f, 0.770205147047214210f, - -0.637796230360433540f, - 0.770082836993347900f, -0.637943903621844060f, 0.769960498625737230f, - -0.638091553427880820f, - 0.769838131948879840f, -0.638239179773115280f, 0.769715736967275130f, - -0.638386782652119570f, - 0.769593313685422940f, -0.638534362059466790f, 0.769470862107824670f, - -0.638681917989730730f, - 0.769348382238982280f, -0.638829450437486290f, 0.769225874083399260f, - -0.638976959397309140f, - 0.769103337645579700f, -0.639124444863775730f, 0.768980772930028870f, - -0.639271906831463510f, - 0.768858179941253270f, -0.639419345294950700f, 0.768735558683760310f, - -0.639566760248816310f, - 0.768612909162058380f, -0.639714151687640450f, 0.768490231380656860f, - -0.639861519606003900f, - 0.768367525344066270f, -0.640008863998488440f, 0.768244791056798330f, - -0.640156184859676510f, - 0.768122028523365420f, -0.640303482184151670f, 0.767999237748281270f, - -0.640450755966498140f, - 0.767876418736060610f, -0.640598006201301030f, 0.767753571491219030f, - -0.640745232883146440f, - 0.767630696018273380f, -0.640892436006621380f, 0.767507792321741270f, - -0.641039615566313390f, - 0.767384860406141730f, -0.641186771556811250f, 0.767261900275994500f, - -0.641333903972704290f, - 0.767138911935820400f, -0.641481012808583160f, 0.767015895390141480f, - -0.641628098059038750f, - 0.766892850643480670f, -0.641775159718663500f, 0.766769777700361920f, - -0.641922197782050170f, - 0.766646676565310380f, -0.642069212243792540f, 0.766523547242852210f, - -0.642216203098485370f, - 0.766400389737514230f, -0.642363170340724320f, 0.766277204053824710f, - -0.642510113965105710f, - 0.766153990196312920f, -0.642657033966226860f, 0.766030748169509000f, - -0.642803930338685990f, - 0.765907477977944340f, -0.642950803077082080f, 0.765784179626150970f, - -0.643097652176015110f, - 0.765660853118662500f, -0.643244477630085850f, 0.765537498460013070f, - -0.643391279433895850f, - 0.765414115654738270f, -0.643538057582047740f, 0.765290704707374370f, - -0.643684812069144850f, - 0.765167265622458960f, -0.643831542889791390f, 0.765043798404530520f, - -0.643978250038592660f, - 0.764920303058128410f, -0.644124933510154540f, 0.764796779587793460f, - -0.644271593299083790f, - 0.764673227998067140f, -0.644418229399988380f, 0.764549648293492150f, - -0.644564841807476640f, - 0.764426040478612070f, -0.644711430516158310f, 0.764302404557971720f, - -0.644857995520643710f, - 0.764178740536116670f, -0.645004536815543930f, 0.764055048417593970f, - -0.645151054395471160f, - 0.763931328206951090f, -0.645297548255038380f, 0.763807579908737160f, - -0.645444018388859230f, - 0.763683803527501870f, -0.645590464791548690f, 0.763559999067796150f, - -0.645736887457722290f, - 0.763436166534172010f, -0.645883286381996320f, 0.763312305931182380f, - -0.646029661558988330f, - 0.763188417263381270f, -0.646176012983316280f, 0.763064500535323710f, - -0.646322340649599480f, - 0.762940555751565720f, -0.646468644552457780f, 0.762816582916664430f, - -0.646614924686512050f, - 0.762692582035177980f, -0.646761181046383920f, 0.762568553111665380f, - -0.646907413626696020f, - 0.762444496150687210f, -0.647053622422071540f, 0.762320411156804270f, - -0.647199807427135230f, - 0.762196298134578900f, -0.647345968636512060f, 0.762072157088574560f, - -0.647492106044828100f, - 0.761947988023355390f, -0.647638219646710310f, 0.761823790943486960f, - -0.647784309436786440f, - 0.761699565853535380f, -0.647930375409685340f, 0.761575312758068000f, - -0.648076417560036530f, - 0.761451031661653620f, -0.648222435882470420f, 0.761326722568861360f, - -0.648368430371618290f, - 0.761202385484261780f, -0.648514401022112440f, 0.761078020412426560f, - -0.648660347828585840f, - 0.760953627357928150f, -0.648806270785672550f, 0.760829206325340010f, - -0.648952169888007300f, - 0.760704757319236920f, -0.649098045130225950f, 0.760580280344194450f, - -0.649243896506964900f, - 0.760455775404789260f, -0.649389724012861660f, 0.760331242505599030f, - -0.649535527642554730f, - 0.760206681651202420f, -0.649681307390683190f, 0.760082092846179340f, - -0.649827063251887100f, - 0.759957476095110330f, -0.649972795220807530f, 0.759832831402577400f, - -0.650118503292086200f, - 0.759708158773163440f, -0.650264187460365850f, 0.759583458211452010f, - -0.650409847720290310f, - 0.759458729722028210f, -0.650555484066503880f, 0.759333973309477940f, - -0.650701096493652040f, - 0.759209188978388070f, -0.650846684996380880f, 0.759084376733346610f, - -0.650992249569337660f, - 0.758959536578942440f, -0.651137790207170330f, 0.758834668519765660f, - -0.651283306904527740f, - 0.758709772560407390f, -0.651428799656059820f, 0.758584848705459610f, - -0.651574268456416970f, - 0.758459896959515430f, -0.651719713300250910f, 0.758334917327168960f, - -0.651865134182213920f, - 0.758209909813015280f, -0.652010531096959500f, 0.758084874421650730f, - -0.652155904039141590f, - 0.757959811157672300f, -0.652301253003415460f, 0.757834720025678310f, - -0.652446577984436730f, - 0.757709601030268080f, -0.652591878976862440f, 0.757584454176041810f, - -0.652737155975350310f, - 0.757459279467600720f, -0.652882408974558850f, 0.757334076909547130f, - -0.653027637969147530f, - 0.757208846506484570f, -0.653172842953776760f, 0.757083588263017140f, - -0.653318023923107670f, - 0.756958302183750490f, -0.653463180871802330f, 0.756832988273290820f, - -0.653608313794523890f, - 0.756707646536245670f, -0.653753422685936060f, 0.756582276977223470f, - -0.653898507540703780f, - 0.756456879600833740f, -0.654043568353492640f, 0.756331454411686920f, - -0.654188605118969040f, - 0.756206001414394540f, -0.654333617831800440f, 0.756080520613569120f, - -0.654478606486655350f, - 0.755955012013824420f, -0.654623571078202680f, 0.755829475619774760f, - -0.654768511601112600f, - 0.755703911436035880f, -0.654913428050056030f, 0.755578319467224540f, - -0.655058320419704910f, - 0.755452699717958250f, -0.655203188704731820f, 0.755327052192855670f, - -0.655348032899810470f, - 0.755201376896536550f, -0.655492852999615350f, 0.755075673833621620f, - -0.655637648998821820f, - 0.754949943008732640f, -0.655782420892106030f, 0.754824184426492350f, - -0.655927168674145360f, - 0.754698398091524500f, -0.656071892339617600f, 0.754572584008453840f, - -0.656216591883201920f, - 0.754446742181906440f, -0.656361267299578000f, 0.754320872616508820f, - -0.656505918583426550f, - 0.754194975316889170f, -0.656650545729428940f, 0.754069050287676120f, - -0.656795148732268070f, - 0.753943097533499640f, -0.656939727586627110f, 0.753817117058990790f, - -0.657084282287190180f, - 0.753691108868781210f, -0.657228812828642540f, 0.753565072967504300f, - -0.657373319205670210f, - 0.753439009359793580f, -0.657517801412960120f, 0.753312918050284330f, - -0.657662259445200070f, - 0.753186799043612520f, -0.657806693297078640f, 0.753060652344415100f, - -0.657951102963285520f, - 0.752934477957330150f, -0.658095488438511180f, 0.752808275886996950f, - -0.658239849717446870f, - 0.752682046138055340f, -0.658384186794785050f, 0.752555788715146390f, - -0.658528499665218650f, - 0.752429503622912390f, -0.658672788323441890f, 0.752303190865996400f, - -0.658817052764149480f, - 0.752176850449042810f, -0.658961292982037320f, 0.752050482376696360f, - -0.659105508971802090f, - 0.751924086653603550f, -0.659249700728141490f, 0.751797663284411550f, - -0.659393868245753860f, - 0.751671212273768430f, -0.659538011519338660f, 0.751544733626323680f, - -0.659682130543596150f, - 0.751418227346727470f, -0.659826225313227320f, 0.751291693439630870f, - -0.659970295822934540f, - 0.751165131909686480f, -0.660114342067420480f, 0.751038542761547360f, - -0.660258364041389050f, - 0.750911925999867890f, -0.660402361739545030f, 0.750785281629303690f, - -0.660546335156593890f, - 0.750658609654510700f, -0.660690284287242300f, 0.750531910080146410f, - -0.660834209126197610f, - 0.750405182910869330f, -0.660978109668168060f, 0.750278428151338720f, - -0.661121985907862860f, - 0.750151645806215070f, -0.661265837839992270f, 0.750024835880159780f, - -0.661409665459266940f, - 0.749897998377835330f, -0.661553468760398890f, 0.749771133303905100f, - -0.661697247738101010f, - 0.749644240663033480f, -0.661841002387086870f, 0.749517320459886170f, - -0.661984732702070920f, - 0.749390372699129560f, -0.662128438677768720f, 0.749263397385431130f, - -0.662272120308896590f, - 0.749136394523459370f, -0.662415777590171780f, 0.749009364117883880f, - -0.662559410516312290f, - 0.748882306173375150f, -0.662703019082037440f, 0.748755220694604760f, - -0.662846603282066900f, - 0.748628107686245440f, -0.662990163111121470f, 0.748500967152970430f, - -0.663133698563923010f, - 0.748373799099454560f, -0.663277209635194100f, 0.748246603530373420f, - -0.663420696319658280f, - 0.748119380450403600f, -0.663564158612039770f, 0.747992129864222700f, - -0.663707596507064010f, - 0.747864851776509410f, -0.663851009999457340f, 0.747737546191943330f, - -0.663994399083946640f, - 0.747610213115205150f, -0.664137763755260010f, 0.747482852550976570f, - -0.664281104008126230f, - 0.747355464503940190f, -0.664424419837275180f, 0.747228048978779920f, - -0.664567711237437520f, - 0.747100605980180130f, -0.664710978203344790f, 0.746973135512826850f, - -0.664854220729729660f, - 0.746845637581406540f, -0.664997438811325340f, 0.746718112190607130f, - -0.665140632442866140f, - 0.746590559345117310f, -0.665283801619087180f, 0.746462979049626770f, - -0.665426946334724660f, - 0.746335371308826320f, -0.665570066584515450f, 0.746207736127407760f, - -0.665713162363197550f, - 0.746080073510063780f, -0.665856233665509720f, 0.745952383461488290f, - -0.665999280486191500f, - 0.745824665986376090f, -0.666142302819983540f, 0.745696921089422760f, - -0.666285300661627280f, - 0.745569148775325430f, -0.666428274005865240f, 0.745441349048781680f, - -0.666571222847440640f, - 0.745313521914490520f, -0.666714147181097670f, 0.745185667377151640f, - -0.666857047001581220f, - 0.745057785441466060f, -0.666999922303637470f, 0.744929876112135350f, - -0.667142773082013310f, - 0.744801939393862630f, -0.667285599331456370f, 0.744673975291351710f, - -0.667428401046715520f, - 0.744545983809307370f, -0.667571178222540310f, 0.744417964952435620f, - -0.667713930853681030f, - 0.744289918725443260f, -0.667856658934889320f, 0.744161845133038180f, - -0.667999362460917400f, - 0.744033744179929290f, -0.668142041426518450f, 0.743905615870826490f, - -0.668284695826446670f, - 0.743777460210440890f, -0.668427325655456820f, 0.743649277203484060f, - -0.668569930908304970f, - 0.743521066854669120f, -0.668712511579747980f, 0.743392829168709970f, - -0.668855067664543610f, - 0.743264564150321600f, -0.668997599157450270f, 0.743136271804219820f, - -0.669140106053227600f, - 0.743007952135121720f, -0.669282588346636010f, 0.742879605147745200f, - -0.669425046032436910f, - 0.742751230846809050f, -0.669567479105392490f, 0.742622829237033490f, - -0.669709887560265840f, - 0.742494400323139180f, -0.669852271391821020f, 0.742365944109848460f, - -0.669994630594823000f, - 0.742237460601884000f, -0.670136965164037650f, 0.742108949803969910f, - -0.670279275094231800f, - 0.741980411720831070f, -0.670421560380173090f, 0.741851846357193480f, - -0.670563821016630040f, - 0.741723253717784140f, -0.670706056998372160f, 0.741594633807331150f, - -0.670848268320169640f, - 0.741465986630563290f, -0.670990454976794220f, 0.741337312192210660f, - -0.671132616963017740f, - 0.741208610497004260f, -0.671274754273613490f, 0.741079881549676080f, - -0.671416866903355450f, - 0.740951125354959110f, -0.671558954847018330f, 0.740822341917587330f, - -0.671701018099378320f, - 0.740693531242295760f, -0.671843056655211930f, 0.740564693333820250f, - -0.671985070509296900f, - 0.740435828196898020f, -0.672127059656411730f, 0.740306935836266940f, - -0.672269024091335930f, - 0.740178016256666240f, -0.672410963808849790f, 0.740049069462835550f, - -0.672552878803734710f, - 0.739920095459516200f, -0.672694769070772860f, 0.739791094251449950f, - -0.672836634604747300f, - 0.739662065843380010f, -0.672978475400442090f, 0.739533010240050250f, - -0.673120291452642070f, - 0.739403927446205760f, -0.673262082756132970f, 0.739274817466592520f, - -0.673403849305701740f, - 0.739145680305957510f, -0.673545591096136100f, 0.739016515969048720f, - -0.673687308122224330f, - 0.738887324460615110f, -0.673829000378756040f, 0.738758105785406900f, - -0.673970667860521620f, - 0.738628859948174840f, -0.674112310562312360f, 0.738499586953671130f, - -0.674253928478920410f, - 0.738370286806648620f, -0.674395521605139050f, 0.738240959511861310f, - -0.674537089935762000f, - 0.738111605074064260f, -0.674678633465584540f, 0.737982223498013570f, - -0.674820152189402170f, - 0.737852814788465980f, -0.674961646102011930f, 0.737723378950179700f, - -0.675103115198211420f, - 0.737593915987913570f, -0.675244559472799270f, 0.737464425906427580f, - -0.675385978920574840f, - 0.737334908710482910f, -0.675527373536338520f, 0.737205364404841190f, - -0.675668743314891910f, - 0.737075792994265730f, -0.675810088251036940f, 0.736946194483520280f, - -0.675951408339577010f, - 0.736816568877369900f, -0.676092703575315920f, 0.736686916180580460f, - -0.676233973953058950f, - 0.736557236397919150f, -0.676375219467611590f, 0.736427529534153690f, - -0.676516440113781090f, - 0.736297795594053170f, -0.676657635886374950f, 0.736168034582387330f, - -0.676798806780201770f, - 0.736038246503927350f, -0.676939952790071130f, 0.735908431363445190f, - -0.677081073910793530f, - 0.735778589165713590f, -0.677222170137180330f, 0.735648719915506510f, - -0.677363241464043920f, - 0.735518823617598900f, -0.677504287886197430f, 0.735388900276766730f, - -0.677645309398454910f, - 0.735258949897786840f, -0.677786305995631500f, 0.735128972485437180f, - -0.677927277672543020f, - 0.734998968044496710f, -0.678068224424006600f, 0.734868936579745170f, - -0.678209146244839860f, - 0.734738878095963500f, -0.678350043129861470f, 0.734608792597933550f, - -0.678490915073891140f, - 0.734478680090438370f, -0.678631762071749360f, 0.734348540578261600f, - -0.678772584118257690f, - 0.734218374066188280f, -0.678913381208238410f, 0.734088180559004040f, - -0.679054153336514870f, - 0.733957960061495940f, -0.679194900497911200f, 0.733827712578451700f, - -0.679335622687252560f, - 0.733697438114660370f, -0.679476319899364970f, 0.733567136674911360f, - -0.679616992129075560f, - 0.733436808263995710f, -0.679757639371212030f, 0.733306452886705260f, - -0.679898261620603290f, - 0.733176070547832740f, -0.680038858872078930f, 0.733045661252172080f, - -0.680179431120469750f, - 0.732915225004517780f, -0.680319978360607200f, 0.732784761809665790f, - -0.680460500587323880f, - 0.732654271672412820f, -0.680600997795453020f, 0.732523754597556700f, - -0.680741469979829090f, - 0.732393210589896040f, -0.680881917135287230f, 0.732262639654230770f, - -0.681022339256663670f, - 0.732132041795361290f, -0.681162736338795430f, 0.732001417018089630f, - -0.681303108376520530f, - 0.731870765327218290f, -0.681443455364677870f, 0.731740086727550980f, - -0.681583777298107480f, - 0.731609381223892630f, -0.681724074171649710f, 0.731478648821048520f, - -0.681864345980146670f, - 0.731347889523825570f, -0.682004592718440830f, 0.731217103337031270f, - -0.682144814381375640f, - 0.731086290265474340f, -0.682285010963795570f, 0.730955450313964360f, - -0.682425182460546060f, - 0.730824583487312160f, -0.682565328866473250f, 0.730693689790329000f, - -0.682705450176424590f, - 0.730562769227827590f, -0.682845546385248080f, 0.730431821804621520f, - -0.682985617487792740f, - 0.730300847525525490f, -0.683125663478908680f, 0.730169846395354870f, - -0.683265684353446700f, - 0.730038818418926260f, -0.683405680106258680f, 0.729907763601057140f, - -0.683545650732197530f, - 0.729776681946566090f, -0.683685596226116580f, 0.729645573460272480f, - -0.683825516582870720f, - 0.729514438146997010f, -0.683965411797315400f, 0.729383276011561050f, - -0.684105281864307080f, - 0.729252087058786970f, -0.684245126778703080f, 0.729120871293498230f, - -0.684384946535361750f, - 0.728989628720519420f, -0.684524741129142300f, 0.728858359344675800f, - -0.684664510554904960f, - 0.728727063170793830f, -0.684804254807510620f, 0.728595740203700770f, - -0.684943973881821490f, - 0.728464390448225200f, -0.685083667772700360f, 0.728333013909196360f, - -0.685223336475011210f, - 0.728201610591444610f, -0.685362979983618730f, 0.728070180499801210f, - -0.685502598293388550f, - 0.727938723639098620f, -0.685642191399187470f, 0.727807240014169960f, - -0.685781759295883030f, - 0.727675729629849610f, -0.685921301978343560f, 0.727544192490972800f, - -0.686060819441438710f, - 0.727412628602375770f, -0.686200311680038590f, 0.727281037968895870f, - -0.686339778689014520f, - 0.727149420595371020f, -0.686479220463238950f, 0.727017776486640680f, - -0.686618636997584630f, - 0.726886105647544970f, -0.686758028286925890f, 0.726754408082925020f, - -0.686897394326137610f, - 0.726622683797622850f, -0.687036735110095660f, 0.726490932796481910f, - -0.687176050633676820f, - 0.726359155084346010f, -0.687315340891759050f, 0.726227350666060370f, - -0.687454605879221030f, - 0.726095519546471000f, -0.687593845590942170f, 0.725963661730424930f, - -0.687733060021803230f, - 0.725831777222770370f, -0.687872249166685550f, 0.725699866028356120f, - -0.688011413020471640f, - 0.725567928152032300f, -0.688150551578044830f, 0.725435963598649810f, - -0.688289664834289330f, - 0.725303972373060770f, -0.688428752784090440f, 0.725171954480117950f, - -0.688567815422334250f, - 0.725039909924675370f, -0.688706852743907750f, 0.724907838711587820f, - -0.688845864743699020f, - 0.724775740845711280f, -0.688984851416597040f, 0.724643616331902550f, - -0.689123812757491570f, - 0.724511465175019630f, -0.689262748761273470f, 0.724379287379921190f, - -0.689401659422834270f, - 0.724247082951467000f, -0.689540544737066830f, 0.724114851894517850f, - -0.689679404698864800f, - 0.723982594213935520f, -0.689818239303122470f, 0.723850309914582880f, - -0.689957048544735390f, - 0.723717999001323500f, -0.690095832418599950f, 0.723585661479022150f, - -0.690234590919613370f, - 0.723453297352544380f, -0.690373324042674040f, 0.723320906626756970f, - -0.690512031782681060f, - 0.723188489306527460f, -0.690650714134534600f, 0.723056045396724410f, - -0.690789371093135650f, - 0.722923574902217700f, -0.690928002653386160f, 0.722791077827877550f, - -0.691066608810189220f, - 0.722658554178575610f, -0.691205189558448450f, 0.722526003959184540f, - -0.691343744893068710f, - 0.722393427174577550f, -0.691482274808955850f, 0.722260823829629310f, - -0.691620779301016290f, - 0.722128193929215350f, -0.691759258364157750f, 0.721995537478211880f, - -0.691897711993288760f, - 0.721862854481496340f, -0.692036140183318720f, 0.721730144943947160f, - -0.692174542929158140f, - 0.721597408870443770f, -0.692312920225718220f, 0.721464646265866370f, - -0.692451272067911130f, - 0.721331857135096290f, -0.692589598450650380f, 0.721199041483015720f, - -0.692727899368849820f, - 0.721066199314508110f, -0.692866174817424630f, 0.720933330634457530f, - -0.693004424791290870f, - 0.720800435447749190f, -0.693142649285365400f, 0.720667513759269520f, - -0.693280848294566040f, - 0.720534565573905270f, -0.693419021813811760f, 0.720401590896544760f, - -0.693557169838022290f, - 0.720268589732077190f, -0.693695292362118240f, 0.720135562085392420f, - -0.693833389381021350f, - 0.720002507961381650f, -0.693971460889654000f, 0.719869427364936860f, - -0.694109506882939820f, - 0.719736320300951030f, -0.694247527355803310f, 0.719603186774318120f, - -0.694385522303169740f, - 0.719470026789932990f, -0.694523491719965520f, 0.719336840352691740f, - -0.694661435601117820f, - 0.719203627467491220f, -0.694799353941554900f, 0.719070388139229190f, - -0.694937246736205830f, - 0.718937122372804490f, -0.695075113980000880f, 0.718803830173116890f, - -0.695212955667870780f, - 0.718670511545067230f, -0.695350771794747690f, 0.718537166493557370f, - -0.695488562355564440f, - 0.718403795023489830f, -0.695626327345254870f, 0.718270397139768260f, - -0.695764066758753690f, - 0.718136972847297490f, -0.695901780590996830f, 0.718003522150983180f, - -0.696039468836920690f, - 0.717870045055731710f, -0.696177131491462990f, 0.717736541566450950f, - -0.696314768549562090f, - 0.717603011688049080f, -0.696452380006157830f, 0.717469455425435830f, - -0.696589965856190370f, - 0.717335872783521730f, -0.696727526094601200f, 0.717202263767218070f, - -0.696865060716332470f, - 0.717068628381437480f, -0.697002569716327460f, 0.716934966631093130f, - -0.697140053089530420f, - 0.716801278521099540f, -0.697277510830886520f, 0.716667564056371890f, - -0.697414942935341790f, - 0.716533823241826680f, -0.697552349397843160f, 0.716400056082381000f, - -0.697689730213338800f, - 0.716266262582953120f, -0.697827085376777290f, 0.716132442748462330f, - -0.697964414883108670f, - 0.715998596583828690f, -0.698101718727283770f, 0.715864724093973500f, - -0.698238996904254280f, - 0.715730825283818590f, -0.698376249408972920f, 0.715596900158287470f, - -0.698513476236393040f, - 0.715462948722303760f, -0.698650677381469460f, 0.715328970980792620f, - -0.698787852839157670f, - 0.715194966938680120f, -0.698925002604414150f, 0.715060936600893090f, - -0.699062126672196140f, - 0.714926879972359490f, -0.699199225037462120f, 0.714792797058008240f, - -0.699336297695171140f, - 0.714658687862769090f, -0.699473344640283770f, 0.714524552391572860f, - -0.699610365867761040f, - 0.714390390649351390f, -0.699747361372564990f, 0.714256202641037510f, - -0.699884331149658760f, - 0.714121988371564820f, -0.700021275194006250f, 0.713987747845867830f, - -0.700158193500572730f, - 0.713853481068882470f, -0.700295086064323780f, 0.713719188045545240f, - -0.700431952880226420f, - 0.713584868780793640f, -0.700568793943248340f, 0.713450523279566260f, - -0.700705609248358450f, - 0.713316151546802610f, -0.700842398790526120f, 0.713181753587443180f, - -0.700979162564722370f, - 0.713047329406429340f, -0.701115900565918660f, 0.712912879008703480f, - -0.701252612789087460f, - 0.712778402399208980f, -0.701389299229202230f, 0.712643899582890210f, - -0.701525959881237340f, - 0.712509370564692320f, -0.701662594740168450f, 0.712374815349561710f, - -0.701799203800971720f, - 0.712240233942445510f, -0.701935787058624360f, 0.712105626348291890f, - -0.702072344508104630f, - 0.711970992572050100f, -0.702208876144391870f, 0.711836332618670080f, - -0.702345381962465880f, - 0.711701646493102970f, -0.702481861957308000f, 0.711566934200300700f, - -0.702618316123900130f, - 0.711432195745216430f, -0.702754744457225300f, 0.711297431132803970f, - -0.702891146952267400f, - 0.711162640368018350f, -0.703027523604011220f, 0.711027823455815280f, - -0.703163874407442770f, - 0.710892980401151680f, -0.703300199357548730f, 0.710758111208985350f, - -0.703436498449316660f, - 0.710623215884275020f, -0.703572771677735580f, 0.710488294431980470f, - -0.703709019037794810f, - 0.710353346857062420f, -0.703845240524484940f, 0.710218373164482220f, - -0.703981436132797620f, - 0.710083373359202800f, -0.704117605857725310f, 0.709948347446187400f, - -0.704253749694261470f, - 0.709813295430400840f, -0.704389867637400410f, 0.709678217316808580f, - -0.704525959682137380f, - 0.709543113110376770f, -0.704662025823468820f, 0.709407982816072980f, - -0.704798066056391950f, - 0.709272826438865690f, -0.704934080375904880f, 0.709137643983724030f, - -0.705070068777006840f, - 0.709002435455618250f, -0.705206031254697830f, 0.708867200859519820f, - -0.705341967803978840f, - 0.708731940200400650f, -0.705477878419852100f, 0.708596653483234080f, - -0.705613763097320490f, - 0.708461340712994160f, -0.705749621831387790f, 0.708326001894655890f, - -0.705885454617058980f, - 0.708190637033195400f, -0.706021261449339740f, 0.708055246133589500f, - -0.706157042323237060f, - 0.707919829200816310f, -0.706292797233758480f, 0.707784386239854620f, - -0.706428526175912790f, - 0.707648917255684350f, -0.706564229144709510f, 0.707513422253286280f, - -0.706699906135159430f, - 0.707377901237642100f, -0.706835557142273750f, 0.707242354213734710f, - -0.706971182161065360f, - 0.707106781186547570f, -0.707106781186547460f, 0.706971182161065360f, - -0.707242354213734600f, - 0.706835557142273860f, -0.707377901237642100f, 0.706699906135159430f, - -0.707513422253286170f, - 0.706564229144709620f, -0.707648917255684350f, 0.706428526175912790f, - -0.707784386239854620f, - 0.706292797233758480f, -0.707919829200816310f, 0.706157042323237060f, - -0.708055246133589500f, - 0.706021261449339740f, -0.708190637033195290f, 0.705885454617058980f, - -0.708326001894655780f, - 0.705749621831387790f, -0.708461340712994050f, 0.705613763097320490f, - -0.708596653483234080f, - 0.705477878419852210f, -0.708731940200400650f, 0.705341967803978950f, - -0.708867200859519820f, - 0.705206031254697830f, -0.709002435455618250f, 0.705070068777006840f, - -0.709137643983723920f, - 0.704934080375904990f, -0.709272826438865580f, 0.704798066056391950f, - -0.709407982816072980f, - 0.704662025823468930f, -0.709543113110376770f, 0.704525959682137380f, - -0.709678217316808470f, - 0.704389867637400410f, -0.709813295430400840f, 0.704253749694261580f, - -0.709948347446187400f, - 0.704117605857725430f, -0.710083373359202690f, 0.703981436132797730f, - -0.710218373164482220f, - 0.703845240524484940f, -0.710353346857062310f, 0.703709019037794810f, - -0.710488294431980470f, - 0.703572771677735580f, -0.710623215884275020f, 0.703436498449316770f, - -0.710758111208985350f, - 0.703300199357548730f, -0.710892980401151680f, 0.703163874407442770f, - -0.711027823455815280f, - 0.703027523604011220f, -0.711162640368018350f, 0.702891146952267400f, - -0.711297431132803970f, - 0.702754744457225300f, -0.711432195745216430f, 0.702618316123900130f, - -0.711566934200300700f, - 0.702481861957308000f, -0.711701646493102970f, 0.702345381962465880f, - -0.711836332618670080f, - 0.702208876144391870f, -0.711970992572049990f, 0.702072344508104740f, - -0.712105626348291890f, - 0.701935787058624360f, -0.712240233942445510f, 0.701799203800971720f, - -0.712374815349561710f, - 0.701662594740168570f, -0.712509370564692320f, 0.701525959881237450f, - -0.712643899582890210f, - 0.701389299229202230f, -0.712778402399208870f, 0.701252612789087460f, - -0.712912879008703370f, - 0.701115900565918660f, -0.713047329406429230f, 0.700979162564722480f, - -0.713181753587443070f, - 0.700842398790526230f, -0.713316151546802610f, 0.700705609248358450f, - -0.713450523279566150f, - 0.700568793943248450f, -0.713584868780793520f, 0.700431952880226420f, - -0.713719188045545130f, - 0.700295086064323780f, -0.713853481068882470f, 0.700158193500572730f, - -0.713987747845867830f, - 0.700021275194006360f, -0.714121988371564710f, 0.699884331149658760f, - -0.714256202641037400f, - 0.699747361372564990f, -0.714390390649351390f, 0.699610365867761040f, - -0.714524552391572860f, - 0.699473344640283770f, -0.714658687862768980f, 0.699336297695171250f, - -0.714792797058008130f, - 0.699199225037462120f, -0.714926879972359370f, 0.699062126672196140f, - -0.715060936600892980f, - 0.698925002604414150f, -0.715194966938680010f, 0.698787852839157790f, - -0.715328970980792620f, - 0.698650677381469580f, -0.715462948722303650f, 0.698513476236393040f, - -0.715596900158287360f, - 0.698376249408972920f, -0.715730825283818590f, 0.698238996904254390f, - -0.715864724093973390f, - 0.698101718727283880f, -0.715998596583828690f, 0.697964414883108790f, - -0.716132442748462330f, - 0.697827085376777290f, -0.716266262582953120f, 0.697689730213338800f, - -0.716400056082380890f, - 0.697552349397843270f, -0.716533823241826570f, 0.697414942935341790f, - -0.716667564056371890f, - 0.697277510830886630f, -0.716801278521099540f, 0.697140053089530530f, - -0.716934966631093130f, - 0.697002569716327460f, -0.717068628381437480f, 0.696865060716332470f, - -0.717202263767218070f, - 0.696727526094601200f, -0.717335872783521730f, 0.696589965856190370f, - -0.717469455425435830f, - 0.696452380006157830f, -0.717603011688049080f, 0.696314768549562200f, - -0.717736541566450840f, - 0.696177131491462990f, -0.717870045055731710f, 0.696039468836920690f, - -0.718003522150983060f, - 0.695901780590996830f, -0.718136972847297490f, 0.695764066758753800f, - -0.718270397139768260f, - 0.695626327345254870f, -0.718403795023489720f, 0.695488562355564440f, - -0.718537166493557370f, - 0.695350771794747800f, -0.718670511545067230f, 0.695212955667870890f, - -0.718803830173116890f, - 0.695075113980000880f, -0.718937122372804380f, 0.694937246736205940f, - -0.719070388139229190f, - 0.694799353941554900f, -0.719203627467491220f, 0.694661435601117930f, - -0.719336840352691740f, - 0.694523491719965520f, -0.719470026789932990f, 0.694385522303169860f, - -0.719603186774318000f, - 0.694247527355803310f, -0.719736320300951030f, 0.694109506882939820f, - -0.719869427364936860f, - 0.693971460889654000f, -0.720002507961381650f, 0.693833389381021350f, - -0.720135562085392310f, - 0.693695292362118350f, -0.720268589732077080f, 0.693557169838022400f, - -0.720401590896544760f, - 0.693419021813811880f, -0.720534565573905270f, 0.693280848294566150f, - -0.720667513759269410f, - 0.693142649285365510f, -0.720800435447749190f, 0.693004424791290870f, - -0.720933330634457530f, - 0.692866174817424740f, -0.721066199314508110f, 0.692727899368849820f, - -0.721199041483015720f, - 0.692589598450650380f, -0.721331857135096180f, 0.692451272067911240f, - -0.721464646265866370f, - 0.692312920225718220f, -0.721597408870443660f, 0.692174542929158140f, - -0.721730144943947160f, - 0.692036140183318830f, -0.721862854481496340f, 0.691897711993288760f, - -0.721995537478211880f, - 0.691759258364157750f, -0.722128193929215350f, 0.691620779301016400f, - -0.722260823829629310f, - 0.691482274808955850f, -0.722393427174577550f, 0.691343744893068820f, - -0.722526003959184430f, - 0.691205189558448450f, -0.722658554178575610f, 0.691066608810189220f, - -0.722791077827877550f, - 0.690928002653386280f, -0.722923574902217700f, 0.690789371093135760f, - -0.723056045396724410f, - 0.690650714134534720f, -0.723188489306527350f, 0.690512031782681170f, - -0.723320906626756850f, - 0.690373324042674040f, -0.723453297352544380f, 0.690234590919613370f, - -0.723585661479022040f, - 0.690095832418599950f, -0.723717999001323390f, 0.689957048544735390f, - -0.723850309914582880f, - 0.689818239303122470f, -0.723982594213935520f, 0.689679404698864800f, - -0.724114851894517850f, - 0.689540544737066940f, -0.724247082951466890f, 0.689401659422834380f, - -0.724379287379921080f, - 0.689262748761273470f, -0.724511465175019520f, 0.689123812757491680f, - -0.724643616331902550f, - 0.688984851416597150f, -0.724775740845711280f, 0.688845864743699130f, - -0.724907838711587820f, - 0.688706852743907750f, -0.725039909924675370f, 0.688567815422334360f, - -0.725171954480117840f, - 0.688428752784090550f, -0.725303972373060660f, 0.688289664834289440f, - -0.725435963598649810f, - 0.688150551578044830f, -0.725567928152032300f, 0.688011413020471640f, - -0.725699866028356120f, - 0.687872249166685550f, -0.725831777222770370f, 0.687733060021803230f, - -0.725963661730424930f, - 0.687593845590942170f, -0.726095519546470890f, 0.687454605879221030f, - -0.726227350666060260f, - 0.687315340891759160f, -0.726359155084346010f, 0.687176050633676930f, - -0.726490932796481910f, - 0.687036735110095660f, -0.726622683797622850f, 0.686897394326137610f, - -0.726754408082924910f, - 0.686758028286925890f, -0.726886105647544970f, 0.686618636997584740f, - -0.727017776486640680f, - 0.686479220463238950f, -0.727149420595371020f, 0.686339778689014630f, - -0.727281037968895760f, - 0.686200311680038700f, -0.727412628602375770f, 0.686060819441438710f, - -0.727544192490972800f, - 0.685921301978343670f, -0.727675729629849610f, 0.685781759295883030f, - -0.727807240014169960f, - 0.685642191399187470f, -0.727938723639098620f, 0.685502598293388670f, - -0.728070180499801210f, - 0.685362979983618730f, -0.728201610591444500f, 0.685223336475011210f, - -0.728333013909196360f, - 0.685083667772700360f, -0.728464390448225200f, 0.684943973881821490f, - -0.728595740203700770f, - 0.684804254807510620f, -0.728727063170793720f, 0.684664510554904960f, - -0.728858359344675690f, - 0.684524741129142300f, -0.728989628720519310f, 0.684384946535361750f, - -0.729120871293498230f, - 0.684245126778703080f, -0.729252087058786970f, 0.684105281864307080f, - -0.729383276011561050f, - 0.683965411797315510f, -0.729514438146996900f, 0.683825516582870830f, - -0.729645573460272480f, - 0.683685596226116690f, -0.729776681946565970f, 0.683545650732197530f, - -0.729907763601057140f, - 0.683405680106258790f, -0.730038818418926150f, 0.683265684353446700f, - -0.730169846395354870f, - 0.683125663478908800f, -0.730300847525525380f, 0.682985617487792850f, - -0.730431821804621520f, - 0.682845546385248080f, -0.730562769227827590f, 0.682705450176424590f, - -0.730693689790328890f, - 0.682565328866473250f, -0.730824583487312050f, 0.682425182460546060f, - -0.730955450313964360f, - 0.682285010963795570f, -0.731086290265474230f, 0.682144814381375640f, - -0.731217103337031160f, - 0.682004592718440830f, -0.731347889523825460f, 0.681864345980146780f, - -0.731478648821048520f, - 0.681724074171649820f, -0.731609381223892520f, 0.681583777298107480f, - -0.731740086727550980f, - 0.681443455364677990f, -0.731870765327218290f, 0.681303108376520530f, - -0.732001417018089520f, - 0.681162736338795430f, -0.732132041795361290f, 0.681022339256663670f, - -0.732262639654230660f, - 0.680881917135287340f, -0.732393210589896040f, 0.680741469979829090f, - -0.732523754597556590f, - 0.680600997795453130f, -0.732654271672412820f, 0.680460500587323880f, - -0.732784761809665790f, - 0.680319978360607200f, -0.732915225004517780f, 0.680179431120469750f, - -0.733045661252171970f, - 0.680038858872079040f, -0.733176070547832740f, 0.679898261620603290f, - -0.733306452886705260f, - 0.679757639371212030f, -0.733436808263995710f, 0.679616992129075560f, - -0.733567136674911360f, - 0.679476319899365080f, -0.733697438114660260f, 0.679335622687252670f, - -0.733827712578451700f, - 0.679194900497911200f, -0.733957960061495940f, 0.679054153336514870f, - -0.734088180559004040f, - 0.678913381208238410f, -0.734218374066188170f, 0.678772584118257690f, - -0.734348540578261600f, - 0.678631762071749470f, -0.734478680090438370f, 0.678490915073891250f, - -0.734608792597933550f, - 0.678350043129861580f, -0.734738878095963390f, 0.678209146244839860f, - -0.734868936579745060f, - 0.678068224424006600f, -0.734998968044496600f, 0.677927277672543130f, - -0.735128972485437180f, - 0.677786305995631500f, -0.735258949897786730f, 0.677645309398454910f, - -0.735388900276766620f, - 0.677504287886197430f, -0.735518823617598900f, 0.677363241464044030f, - -0.735648719915506400f, - 0.677222170137180450f, -0.735778589165713480f, 0.677081073910793530f, - -0.735908431363445190f, - 0.676939952790071240f, -0.736038246503927350f, 0.676798806780201770f, - -0.736168034582387330f, - 0.676657635886374950f, -0.736297795594053060f, 0.676516440113781090f, - -0.736427529534153690f, - 0.676375219467611700f, -0.736557236397919150f, 0.676233973953058950f, - -0.736686916180580460f, - 0.676092703575316030f, -0.736816568877369790f, 0.675951408339577010f, - -0.736946194483520170f, - 0.675810088251037060f, -0.737075792994265620f, 0.675668743314891910f, - -0.737205364404841190f, - 0.675527373536338630f, -0.737334908710482790f, 0.675385978920574950f, - -0.737464425906427580f, - 0.675244559472799270f, -0.737593915987913460f, 0.675103115198211530f, - -0.737723378950179590f, - 0.674961646102012040f, -0.737852814788465980f, 0.674820152189402280f, - -0.737982223498013570f, - 0.674678633465584540f, -0.738111605074064260f, 0.674537089935762110f, - -0.738240959511861310f, - 0.674395521605139050f, -0.738370286806648510f, 0.674253928478920520f, - -0.738499586953671130f, - 0.674112310562312360f, -0.738628859948174840f, 0.673970667860521620f, - -0.738758105785406900f, - 0.673829000378756150f, -0.738887324460615110f, 0.673687308122224330f, - -0.739016515969048600f, - 0.673545591096136100f, -0.739145680305957400f, 0.673403849305701850f, - -0.739274817466592520f, - 0.673262082756132970f, -0.739403927446205760f, 0.673120291452642070f, - -0.739533010240050250f, - 0.672978475400442090f, -0.739662065843379900f, 0.672836634604747410f, - -0.739791094251449950f, - 0.672694769070772970f, -0.739920095459516090f, 0.672552878803734820f, - -0.740049069462835550f, - 0.672410963808849900f, -0.740178016256666240f, 0.672269024091336040f, - -0.740306935836266940f, - 0.672127059656411840f, -0.740435828196898020f, 0.671985070509296900f, - -0.740564693333820250f, - 0.671843056655211930f, -0.740693531242295640f, 0.671701018099378320f, - -0.740822341917587330f, - 0.671558954847018330f, -0.740951125354959110f, 0.671416866903355450f, - -0.741079881549676080f, - 0.671274754273613490f, -0.741208610497004260f, 0.671132616963017850f, - -0.741337312192210660f, - 0.670990454976794220f, -0.741465986630563290f, 0.670848268320169750f, - -0.741594633807331150f, - 0.670706056998372160f, -0.741723253717784140f, 0.670563821016630040f, - -0.741851846357193480f, - 0.670421560380173090f, -0.741980411720830960f, 0.670279275094231910f, - -0.742108949803969800f, - 0.670136965164037760f, -0.742237460601884000f, 0.669994630594823000f, - -0.742365944109848460f, - 0.669852271391821130f, -0.742494400323139180f, 0.669709887560265840f, - -0.742622829237033380f, - 0.669567479105392490f, -0.742751230846809050f, 0.669425046032436910f, - -0.742879605147745090f, - 0.669282588346636010f, -0.743007952135121720f, 0.669140106053227710f, - -0.743136271804219820f, - 0.668997599157450270f, -0.743264564150321490f, 0.668855067664543610f, - -0.743392829168709970f, - 0.668712511579748090f, -0.743521066854669120f, 0.668569930908305080f, - -0.743649277203484060f, - 0.668427325655456820f, -0.743777460210440780f, 0.668284695826446670f, - -0.743905615870826490f, - 0.668142041426518560f, -0.744033744179929180f, 0.667999362460917510f, - -0.744161845133038070f, - 0.667856658934889440f, -0.744289918725443140f, 0.667713930853681140f, - -0.744417964952435620f, - 0.667571178222540310f, -0.744545983809307250f, 0.667428401046715640f, - -0.744673975291351600f, - 0.667285599331456480f, -0.744801939393862630f, 0.667142773082013310f, - -0.744929876112135350f, - 0.666999922303637470f, -0.745057785441465950f, 0.666857047001581220f, - -0.745185667377151640f, - 0.666714147181097670f, -0.745313521914490410f, 0.666571222847440750f, - -0.745441349048781680f, - 0.666428274005865350f, -0.745569148775325430f, 0.666285300661627390f, - -0.745696921089422760f, - 0.666142302819983540f, -0.745824665986375980f, 0.665999280486191500f, - -0.745952383461488180f, - 0.665856233665509720f, -0.746080073510063780f, 0.665713162363197660f, - -0.746207736127407650f, - 0.665570066584515560f, -0.746335371308826320f, 0.665426946334724660f, - -0.746462979049626770f, - 0.665283801619087180f, -0.746590559345117310f, 0.665140632442866140f, - -0.746718112190607020f, - 0.664997438811325340f, -0.746845637581406540f, 0.664854220729729660f, - -0.746973135512826740f, - 0.664710978203344900f, -0.747100605980180130f, 0.664567711237437520f, - -0.747228048978779920f, - 0.664424419837275180f, -0.747355464503940190f, 0.664281104008126230f, - -0.747482852550976570f, - 0.664137763755260010f, -0.747610213115205150f, 0.663994399083946640f, - -0.747737546191943330f, - 0.663851009999457340f, -0.747864851776509410f, 0.663707596507064120f, - -0.747992129864222700f, - 0.663564158612039880f, -0.748119380450403490f, 0.663420696319658280f, - -0.748246603530373420f, - 0.663277209635194100f, -0.748373799099454560f, 0.663133698563923010f, - -0.748500967152970430f, - 0.662990163111121470f, -0.748628107686245330f, 0.662846603282066900f, - -0.748755220694604760f, - 0.662703019082037440f, -0.748882306173375030f, 0.662559410516312400f, - -0.749009364117883770f, - 0.662415777590171780f, -0.749136394523459260f, 0.662272120308896590f, - -0.749263397385431020f, - 0.662128438677768720f, -0.749390372699129560f, 0.661984732702071030f, - -0.749517320459886170f, - 0.661841002387086870f, -0.749644240663033480f, 0.661697247738101120f, - -0.749771133303904990f, - 0.661553468760399000f, -0.749897998377835220f, 0.661409665459266940f, - -0.750024835880159780f, - 0.661265837839992270f, -0.750151645806214960f, 0.661121985907862970f, - -0.750278428151338610f, - 0.660978109668168060f, -0.750405182910869220f, 0.660834209126197610f, - -0.750531910080146410f, - 0.660690284287242300f, -0.750658609654510590f, 0.660546335156593890f, - -0.750785281629303580f, - 0.660402361739545030f, -0.750911925999867890f, 0.660258364041389050f, - -0.751038542761547250f, - 0.660114342067420480f, -0.751165131909686370f, 0.659970295822934540f, - -0.751291693439630870f, - 0.659826225313227430f, -0.751418227346727360f, 0.659682130543596150f, - -0.751544733626323570f, - 0.659538011519338770f, -0.751671212273768430f, 0.659393868245753970f, - -0.751797663284411440f, - 0.659249700728141490f, -0.751924086653603550f, 0.659105508971802200f, - -0.752050482376696360f, - 0.658961292982037320f, -0.752176850449042700f, 0.658817052764149480f, - -0.752303190865996400f, - 0.658672788323441890f, -0.752429503622912390f, 0.658528499665218760f, - -0.752555788715146390f, - 0.658384186794785050f, -0.752682046138055230f, 0.658239849717446980f, - -0.752808275886996950f, - 0.658095488438511290f, -0.752934477957330150f, 0.657951102963285630f, - -0.753060652344415100f, - 0.657806693297078640f, -0.753186799043612410f, 0.657662259445200070f, - -0.753312918050284330f, - 0.657517801412960120f, -0.753439009359793580f, 0.657373319205670210f, - -0.753565072967504190f, - 0.657228812828642650f, -0.753691108868781210f, 0.657084282287190180f, - -0.753817117058990680f, - 0.656939727586627110f, -0.753943097533499640f, 0.656795148732268070f, - -0.754069050287676120f, - 0.656650545729429050f, -0.754194975316889170f, 0.656505918583426550f, - -0.754320872616508820f, - 0.656361267299578000f, -0.754446742181906330f, 0.656216591883202030f, - -0.754572584008453840f, - 0.656071892339617710f, -0.754698398091524390f, 0.655927168674145360f, - -0.754824184426492240f, - 0.655782420892106030f, -0.754949943008732640f, 0.655637648998821820f, - -0.755075673833621510f, - 0.655492852999615460f, -0.755201376896536550f, 0.655348032899810580f, - -0.755327052192855560f, - 0.655203188704731930f, -0.755452699717958140f, 0.655058320419704910f, - -0.755578319467224540f, - 0.654913428050056150f, -0.755703911436035880f, 0.654768511601112600f, - -0.755829475619774760f, - 0.654623571078202680f, -0.755955012013824310f, 0.654478606486655350f, - -0.756080520613569120f, - 0.654333617831800550f, -0.756206001414394540f, 0.654188605118969040f, - -0.756331454411686920f, - 0.654043568353492640f, -0.756456879600833630f, 0.653898507540703890f, - -0.756582276977223470f, - 0.653753422685936170f, -0.756707646536245670f, 0.653608313794523890f, - -0.756832988273290820f, - 0.653463180871802330f, -0.756958302183750490f, 0.653318023923107670f, - -0.757083588263017140f, - 0.653172842953776760f, -0.757208846506484460f, 0.653027637969147650f, - -0.757334076909547130f, - 0.652882408974558960f, -0.757459279467600720f, 0.652737155975350420f, - -0.757584454176041810f, - 0.652591878976862550f, -0.757709601030268080f, 0.652446577984436840f, - -0.757834720025678310f, - 0.652301253003415460f, -0.757959811157672300f, 0.652155904039141700f, - -0.758084874421650620f, - 0.652010531096959500f, -0.758209909813015280f, 0.651865134182214030f, - -0.758334917327168960f, - 0.651719713300251020f, -0.758459896959515320f, 0.651574268456417080f, - -0.758584848705459500f, - 0.651428799656059820f, -0.758709772560407390f, 0.651283306904527850f, - -0.758834668519765660f, - 0.651137790207170330f, -0.758959536578942440f, 0.650992249569337660f, - -0.759084376733346500f, - 0.650846684996380990f, -0.759209188978387960f, 0.650701096493652040f, - -0.759333973309477940f, - 0.650555484066503990f, -0.759458729722028210f, 0.650409847720290420f, - -0.759583458211452010f, - 0.650264187460365960f, -0.759708158773163440f, 0.650118503292086200f, - -0.759832831402577400f, - 0.649972795220807530f, -0.759957476095110330f, 0.649827063251887100f, - -0.760082092846179220f, - 0.649681307390683190f, -0.760206681651202420f, 0.649535527642554730f, - -0.760331242505599030f, - 0.649389724012861770f, -0.760455775404789260f, 0.649243896506965010f, - -0.760580280344194340f, - 0.649098045130226060f, -0.760704757319236920f, 0.648952169888007410f, - -0.760829206325340010f, - 0.648806270785672550f, -0.760953627357928040f, 0.648660347828585840f, - -0.761078020412426560f, - 0.648514401022112550f, -0.761202385484261780f, 0.648368430371618400f, - -0.761326722568861250f, - 0.648222435882470420f, -0.761451031661653510f, 0.648076417560036530f, - -0.761575312758068000f, - 0.647930375409685460f, -0.761699565853535270f, 0.647784309436786550f, - -0.761823790943486840f, - 0.647638219646710420f, -0.761947988023355390f, 0.647492106044828100f, - -0.762072157088574560f, - 0.647345968636512060f, -0.762196298134578900f, 0.647199807427135230f, - -0.762320411156804160f, - 0.647053622422071650f, -0.762444496150687100f, 0.646907413626696020f, - -0.762568553111665380f, - 0.646761181046383920f, -0.762692582035177870f, 0.646614924686512050f, - -0.762816582916664320f, - 0.646468644552457890f, -0.762940555751565720f, 0.646322340649599590f, - -0.763064500535323710f, - 0.646176012983316390f, -0.763188417263381270f, 0.646029661558988330f, - -0.763312305931182380f, - 0.645883286381996440f, -0.763436166534172010f, 0.645736887457722290f, - -0.763559999067796150f, - 0.645590464791548800f, -0.763683803527501870f, 0.645444018388859230f, - -0.763807579908737160f, - 0.645297548255038380f, -0.763931328206951090f, 0.645151054395471270f, - -0.764055048417593860f, - 0.645004536815544040f, -0.764178740536116670f, 0.644857995520643710f, - -0.764302404557971720f, - 0.644711430516158420f, -0.764426040478612070f, 0.644564841807476750f, - -0.764549648293492150f, - 0.644418229399988380f, -0.764673227998067140f, 0.644271593299083900f, - -0.764796779587793460f, - 0.644124933510154540f, -0.764920303058128410f, 0.643978250038592660f, - -0.765043798404530410f, - 0.643831542889791500f, -0.765167265622458960f, 0.643684812069144960f, - -0.765290704707374260f, - 0.643538057582047850f, -0.765414115654738160f, 0.643391279433895960f, - -0.765537498460013070f, - 0.643244477630085850f, -0.765660853118662390f, 0.643097652176015110f, - -0.765784179626150970f, - 0.642950803077082080f, -0.765907477977944230f, 0.642803930338686100f, - -0.766030748169509000f, - 0.642657033966226860f, -0.766153990196312810f, 0.642510113965105710f, - -0.766277204053824710f, - 0.642363170340724320f, -0.766400389737514120f, 0.642216203098485370f, - -0.766523547242852100f, - 0.642069212243792540f, -0.766646676565310380f, 0.641922197782050170f, - -0.766769777700361920f, - 0.641775159718663500f, -0.766892850643480670f, 0.641628098059038860f, - -0.767015895390141480f, - 0.641481012808583160f, -0.767138911935820400f, 0.641333903972704290f, - -0.767261900275994390f, - 0.641186771556811250f, -0.767384860406141620f, 0.641039615566313390f, - -0.767507792321741270f, - 0.640892436006621380f, -0.767630696018273270f, 0.640745232883146440f, - -0.767753571491219030f, - 0.640598006201301030f, -0.767876418736060610f, 0.640450755966498140f, - -0.767999237748281270f, - 0.640303482184151670f, -0.768122028523365310f, 0.640156184859676620f, - -0.768244791056798220f, - 0.640008863998488440f, -0.768367525344066270f, 0.639861519606004010f, - -0.768490231380656750f, - 0.639714151687640450f, -0.768612909162058270f, 0.639566760248816420f, - -0.768735558683760310f, - 0.639419345294950700f, -0.768858179941253270f, 0.639271906831463510f, - -0.768980772930028870f, - 0.639124444863775730f, -0.769103337645579590f, 0.638976959397309140f, - -0.769225874083399260f, - 0.638829450437486400f, -0.769348382238982280f, 0.638681917989730840f, - -0.769470862107824560f, - 0.638534362059466790f, -0.769593313685422940f, 0.638386782652119680f, - -0.769715736967275020f, - 0.638239179773115390f, -0.769838131948879840f, 0.638091553427880930f, - -0.769960498625737230f, - 0.637943903621844170f, -0.770082836993347900f, 0.637796230360433540f, - -0.770205147047214100f, - 0.637648533649078810f, -0.770327428782838770f, 0.637500813493210310f, - -0.770449682195725960f, - 0.637353069898259130f, -0.770571907281380700f, 0.637205302869657600f, - -0.770694104035309140f, - 0.637057512412838590f, -0.770816272453018430f, 0.636909698533235870f, - -0.770938412530016940f, - 0.636761861236284200f, -0.771060524261813710f, 0.636614000527419230f, - -0.771182607643919220f, - 0.636466116412077180f, -0.771304662671844720f, 0.636318208895695570f, - -0.771426689341102590f, - 0.636170277983712170f, -0.771548687647206300f, 0.636022323681566300f, - -0.771670657585670330f, - 0.635874345994697720f, -0.771792599152010150f, 0.635726344928547180f, - -0.771914512341742350f, - 0.635578320488556230f, -0.772036397150384410f, 0.635430272680167160f, - -0.772158253573455240f, - 0.635282201508823530f, -0.772280081606474320f, 0.635134106979969300f, - -0.772401881244962340f, - 0.634985989099049460f, -0.772523652484441330f, 0.634837847871510100f, - -0.772645395320433860f, - 0.634689683302797850f, -0.772767109748463740f, 0.634541495398360130f, - -0.772888795764056220f, - 0.634393284163645490f, -0.773010453362736990f, 0.634245049604103330f, - -0.773132082540033070f, - 0.634096791725183740f, -0.773253683291472590f, 0.633948510532337810f, - -0.773375255612584470f, - 0.633800206031017280f, -0.773496799498899050f, 0.633651878226674900f, - -0.773618314945947460f, - 0.633503527124764320f, -0.773739801949261840f, 0.633355152730740060f, - -0.773861260504375540f, - 0.633206755050057190f, -0.773982690606822790f, 0.633058334088172250f, - -0.774104092252138940f, - 0.632909889850541860f, -0.774225465435860570f, 0.632761422342624000f, - -0.774346810153525020f, - 0.632612931569877520f, -0.774468126400670860f, 0.632464417537761840f, - -0.774589414172837550f, - 0.632315880251737680f, -0.774710673465565550f, 0.632167319717266030f, - -0.774831904274396850f, - 0.632018735939809060f, -0.774953106594873820f, 0.631870128924829850f, - -0.775074280422540450f, - 0.631721498677792370f, -0.775195425752941310f, 0.631572845204161130f, - -0.775316542581622410f, - 0.631424168509401860f, -0.775437630904130430f, 0.631275468598980870f, - -0.775558690716013580f, - 0.631126745478365340f, -0.775679722012820540f, 0.630977999153023660f, - -0.775800724790101540f, - 0.630829229628424470f, -0.775921699043407580f, 0.630680436910038060f, - -0.776042644768290770f, - 0.630531621003334600f, -0.776163561960304340f, 0.630382781913785940f, - -0.776284450615002400f, - 0.630233919646864480f, -0.776405310727940390f, 0.630085034208043290f, - -0.776526142294674430f, - 0.629936125602796550f, -0.776646945310762060f, 0.629787193836599200f, - -0.776767719771761510f, - 0.629638238914927100f, -0.776888465673232440f, 0.629489260843256740f, - -0.777009183010735290f, - 0.629340259627065750f, -0.777129871779831620f, 0.629191235271832410f, - -0.777250531976084070f, - 0.629042187783036000f, -0.777371163595056200f, 0.628893117166156480f, - -0.777491766632312900f, - 0.628744023426674790f, -0.777612341083419920f, 0.628594906570072660f, - -0.777732886943944050f, - 0.628445766601832710f, -0.777853404209453040f, 0.628296603527438440f, - -0.777973892875515990f, - 0.628147417352374120f, -0.778094352937702790f, 0.627998208082124810f, - -0.778214784391584420f, - 0.627848975722176570f, -0.778335187232733090f, 0.627699720278016240f, - -0.778455561456721900f, - 0.627550441755131530f, -0.778575907059124940f, 0.627401140159011160f, - -0.778696224035517530f, - 0.627251815495144190f, -0.778816512381475870f, 0.627102467769021010f, - -0.778936772092577500f, - 0.626953096986132770f, -0.779057003164400630f, 0.626803703151971310f, - -0.779177205592524680f, - 0.626654286272029460f, -0.779297379372530300f, 0.626504846351800930f, - -0.779417524499998900f, - 0.626355383396779990f, -0.779537640970513150f, 0.626205897412462130f, - -0.779657728779656780f, - 0.626056388404343520f, -0.779777787923014440f, 0.625906856377921210f, - -0.779897818396171890f, - 0.625757301338692900f, -0.780017820194715990f, 0.625607723292157410f, - -0.780137793314234500f, - 0.625458122243814360f, -0.780257737750316590f, 0.625308498199164010f, - -0.780377653498552040f, - 0.625158851163707730f, -0.780497540554531910f, 0.625009181142947460f, - -0.780617398913848290f, - 0.624859488142386450f, -0.780737228572094380f, 0.624709772167528100f, - -0.780857029524864470f, - 0.624560033223877320f, -0.780976801767753750f, 0.624410271316939380f, - -0.781096545296358410f, - 0.624260486452220650f, -0.781216260106276090f, 0.624110678635228510f, - -0.781335946193104870f, - 0.623960847871470770f, -0.781455603552444480f, 0.623810994166456130f, - -0.781575232179895550f, - 0.623661117525694640f, -0.781694832071059390f, 0.623511217954696550f, - -0.781814403221538830f, - 0.623361295458973340f, -0.781933945626937630f, 0.623211350044037270f, - -0.782053459282860300f, - 0.623061381715401370f, -0.782172944184912900f, 0.622911390478579460f, - -0.782292400328702400f, - 0.622761376339086460f, -0.782411827709836420f, 0.622611339302437730f, - -0.782531226323924240f, - 0.622461279374150080f, -0.782650596166575730f, 0.622311196559740320f, - -0.782769937233402050f, - 0.622161090864726930f, -0.782889249520015480f, 0.622010962294628600f, - -0.783008533022029110f, - 0.621860810854965360f, -0.783127787735057310f, 0.621710636551257690f, - -0.783247013654715380f, - 0.621560439389027270f, -0.783366210776619720f, 0.621410219373796150f, - -0.783485379096387820f, - 0.621259976511087660f, -0.783604518609638200f, 0.621109710806425740f, - -0.783723629311990470f, - 0.620959422265335180f, -0.783842711199065230f, 0.620809110893341900f, - -0.783961764266484010f, - 0.620658776695972140f, -0.784080788509869950f, 0.620508419678753360f, - -0.784199783924846570f, - 0.620358039847213830f, -0.784318750507038920f, 0.620207637206882430f, - -0.784437688252072720f, - 0.620057211763289210f, -0.784556597155575240f, 0.619906763521964830f, - -0.784675477213174320f, - 0.619756292488440660f, -0.784794328420499230f, 0.619605798668249390f, - -0.784913150773180020f, - 0.619455282066924020f, -0.785031944266848080f, 0.619304742689998690f, - -0.785150708897135560f, - 0.619154180543008410f, -0.785269444659675850f, 0.619003595631488770f, - -0.785388151550103550f, - 0.618852987960976320f, -0.785506829564053930f, 0.618702357537008640f, - -0.785625478697163700f, - 0.618551704365123860f, -0.785744098945070360f, 0.618401028450860980f, - -0.785862690303412600f, - 0.618250329799760250f, -0.785981252767830150f, 0.618099608417362110f, - -0.786099786333963820f, - 0.617948864309208260f, -0.786218290997455550f, 0.617798097480841140f, - -0.786336766753948260f, - 0.617647307937803980f, -0.786455213599085770f, 0.617496495685640910f, - -0.786573631528513230f, - 0.617345660729896940f, -0.786692020537876680f, 0.617194803076117630f, - -0.786810380622823490f, - 0.617043922729849760f, -0.786928711779001700f, 0.616893019696640790f, - -0.787047014002060790f, - 0.616742093982038830f, -0.787165287287650890f, 0.616591145591593230f, - -0.787283531631423620f, - 0.616440174530853650f, -0.787401747029031320f, 0.616289180805370980f, - -0.787519933476127810f, - 0.616138164420696910f, -0.787638090968367450f, 0.615987125382383870f, - -0.787756219501405950f, - 0.615836063695985090f, -0.787874319070900110f, 0.615684979367054570f, - -0.787992389672507950f, - 0.615533872401147430f, -0.788110431301888070f, 0.615382742803819330f, - -0.788228443954700490f, - 0.615231590580626820f, -0.788346427626606230f, 0.615080415737127460f, - -0.788464382313267430f, - 0.614929218278879590f, -0.788582308010347120f, 0.614777998211442190f, - -0.788700204713509660f, - 0.614626755540375050f, -0.788818072418420170f, 0.614475490271239160f, - -0.788935911120745130f, - 0.614324202409595950f, -0.789053720816151880f, 0.614172891961007990f, - -0.789171501500308790f, - 0.614021558931038490f, -0.789289253168885650f, 0.613870203325251440f, - -0.789406975817552810f, - 0.613718825149211830f, -0.789524669441982190f, 0.613567424408485330f, - -0.789642334037846340f, - 0.613416001108638590f, -0.789759969600819070f, 0.613264555255239150f, - -0.789877576126575280f, - 0.613113086853854910f, -0.789995153610791090f, 0.612961595910055170f, - -0.790112702049143300f, - 0.612810082429409710f, -0.790230221437310030f, 0.612658546417489290f, - -0.790347711770970520f, - 0.612506987879865570f, -0.790465173045804880f, 0.612355406822110760f, - -0.790582605257494460f, - 0.612203803249798060f, -0.790700008401721610f, 0.612052177168501580f, - -0.790817382474169660f, - 0.611900528583796070f, -0.790934727470523290f, 0.611748857501257400f, - -0.791052043386467950f, - 0.611597163926462020f, -0.791169330217690090f, 0.611445447864987110f, - -0.791286587959877720f, - 0.611293709322411010f, -0.791403816608719500f, 0.611141948304312570f, - -0.791521016159905220f, - 0.610990164816271770f, -0.791638186609125770f, 0.610838358863869280f, - -0.791755327952073150f, - 0.610686530452686280f, -0.791872440184440470f, 0.610534679588305320f, - -0.791989523301921850f, - 0.610382806276309480f, -0.792106577300212390f, 0.610230910522282620f, - -0.792223602175008310f, - 0.610078992331809620f, -0.792340597922007060f, 0.609927051710476230f, - -0.792457564536906970f, - 0.609775088663868430f, -0.792574502015407580f, 0.609623103197573730f, - -0.792691410353209450f, - 0.609471095317180240f, -0.792808289546014120f, 0.609319065028276820f, - -0.792925139589524260f, - 0.609167012336453210f, -0.793041960479443640f, 0.609014937247299940f, - -0.793158752211477140f, - 0.608862839766408200f, -0.793275514781330630f, 0.608710719899370420f, - -0.793392248184711100f, - 0.608558577651779450f, -0.793508952417326660f, 0.608406413029229260f, - -0.793625627474886190f, - 0.608254226037314490f, -0.793742273353100100f, 0.608102016681630550f, - -0.793858890047679620f, - 0.607949784967773740f, -0.793975477554337170f, 0.607797530901341140f, - -0.794092035868785960f, - 0.607645254487930830f, -0.794208564986740640f, 0.607492955733141660f, - -0.794325064903916520f, - 0.607340634642572930f, -0.794441535616030590f, 0.607188291221825160f, - -0.794557977118800270f, - 0.607035925476499760f, -0.794674389407944550f, 0.606883537412198580f, - -0.794790772479183170f, - 0.606731127034524480f, -0.794907126328237010f, 0.606578694349081400f, - -0.795023450950828050f, - 0.606426239361473550f, -0.795139746342679590f, 0.606273762077306430f, - -0.795256012499515500f, - 0.606121262502186230f, -0.795372249417061190f, 0.605968740641719790f, - -0.795488457091042990f, - 0.605816196501515080f, -0.795604635517188070f, 0.605663630087180490f, - -0.795720784691225090f, - 0.605511041404325550f, -0.795836904608883460f, 0.605358430458560530f, - -0.795952995265893910f, - 0.605205797255496500f, -0.796069056657987990f, 0.605053141800745430f, - -0.796185088780898440f, - 0.604900464099919930f, -0.796301091630359110f, 0.604747764158633410f, - -0.796417065202104980f, - 0.604595041982500360f, -0.796533009491872000f, 0.604442297577135970f, - -0.796648924495397150f, - 0.604289530948156070f, -0.796764810208418720f, 0.604136742101177630f, - -0.796880666626675780f, - 0.603983931041818020f, -0.796996493745908750f, 0.603831097775695880f, - -0.797112291561858920f, - 0.603678242308430370f, -0.797228060070268700f, 0.603525364645641550f, - -0.797343799266881700f, - 0.603372464792950370f, -0.797459509147442460f, 0.603219542755978440f, - -0.797575189707696590f, - 0.603066598540348280f, -0.797690840943391040f, 0.602913632151683140f, - -0.797806462850273570f, - 0.602760643595607220f, -0.797922055424093000f, 0.602607632877745550f, - -0.798037618660599410f, - 0.602454600003723860f, -0.798153152555543750f, 0.602301544979168550f, - -0.798268657104678310f, - 0.602148467809707320f, -0.798384132303756380f, 0.601995368500968130f, - -0.798499578148532010f, - 0.601842247058580030f, -0.798614994634760820f, 0.601689103488173060f, - -0.798730381758199210f, - 0.601535937795377730f, -0.798845739514604580f, 0.601382749985825420f, - -0.798961067899735760f, - 0.601229540065148620f, -0.799076366909352350f, 0.601076308038980160f, - -0.799191636539215210f, - 0.600923053912954090f, -0.799306876785086160f, 0.600769777692705230f, - -0.799422087642728040f, - 0.600616479383868970f, -0.799537269107905010f, 0.600463158992081690f, - -0.799652421176382130f, - 0.600309816522980430f, -0.799767543843925680f, 0.600156451982203350f, - -0.799882637106302810f, - 0.600003065375389060f, -0.799997700959281910f, 0.599849656708177360f, - -0.800112735398632370f, - 0.599696225986208310f, -0.800227740420124790f, 0.599542773215123390f, - -0.800342716019530660f, - 0.599389298400564540f, -0.800457662192622710f, 0.599235801548174570f, - -0.800572578935174750f, - 0.599082282663597310f, -0.800687466242961500f, 0.598928741752476900f, - -0.800802324111759110f, - 0.598775178820458720f, -0.800917152537344300f, 0.598621593873188920f, - -0.801031951515495330f, - 0.598467986916314310f, -0.801146721041991250f, 0.598314357955482600f, - -0.801261461112612540f, - 0.598160706996342380f, -0.801376171723140130f, 0.598007034044542700f, - -0.801490852869356840f, - 0.597853339105733910f, -0.801605504547046040f, 0.597699622185566830f, - -0.801720126751992330f, - 0.597545883289693270f, -0.801834719479981310f, 0.597392122423765710f, - -0.801949282726799660f, - 0.597238339593437530f, -0.802063816488235440f, 0.597084534804362740f, - -0.802178320760077450f, - 0.596930708062196500f, -0.802292795538115720f, 0.596776859372594500f, - -0.802407240818141300f, - 0.596622988741213330f, -0.802521656595946320f, 0.596469096173710360f, - -0.802636042867324150f, - 0.596315181675743820f, -0.802750399628069160f, 0.596161245252972540f, - -0.802864726873976590f, - 0.596007286911056530f, -0.802979024600843140f, 0.595853306655656390f, - -0.803093292804466400f, - 0.595699304492433470f, -0.803207531480644830f, 0.595545280427049790f, - -0.803321740625178470f, - 0.595391234465168730f, -0.803435920233868120f, 0.595237166612453850f, - -0.803550070302515570f, - 0.595083076874569960f, -0.803664190826924090f, 0.594928965257182420f, - -0.803778281802897570f, - 0.594774831765957580f, -0.803892343226241260f, 0.594620676406562240f, - -0.804006375092761520f, - 0.594466499184664540f, -0.804120377398265700f, 0.594312300105932830f, - -0.804234350138562260f, - 0.594158079176036800f, -0.804348293309460780f, 0.594003836400646690f, - -0.804462206906771840f, - 0.593849571785433630f, -0.804576090926307000f, 0.593695285336069300f, - -0.804689945363879500f, - 0.593540977058226390f, -0.804803770215302810f, 0.593386646957578480f, - -0.804917565476392150f, - 0.593232295039799800f, -0.805031331142963660f, 0.593077921310565580f, - -0.805145067210834120f, - 0.592923525775551410f, -0.805258773675822210f, 0.592769108440434070f, - -0.805372450533747060f, - 0.592614669310891130f, -0.805486097780429120f, 0.592460208392600940f, - -0.805599715411689950f, - 0.592305725691242400f, -0.805713303423352120f, 0.592151221212495640f, - -0.805826861811239300f, - 0.591996694962040990f, -0.805940390571176280f, 0.591842146945560250f, - -0.806053889698988950f, - 0.591687577168735550f, -0.806167359190504310f, 0.591532985637249990f, - -0.806280799041550370f, - 0.591378372356787580f, -0.806394209247956240f, 0.591223737333032910f, - -0.806507589805552260f, - 0.591069080571671510f, -0.806620940710169650f, 0.590914402078389520f, - -0.806734261957640750f, - 0.590759701858874280f, -0.806847553543799220f, 0.590604979918813440f, - -0.806960815464479620f, - 0.590450236263895920f, -0.807074047715517610f, 0.590295470899810940f, - -0.807187250292749850f, - 0.590140683832248940f, -0.807300423192014450f, 0.589985875066900920f, - -0.807413566409150190f, - 0.589831044609458900f, -0.807526679939997160f, 0.589676192465615420f, - -0.807639763780396370f, - 0.589521318641063940f, -0.807752817926190360f, 0.589366423141498790f, - -0.807865842373222120f, - 0.589211505972615070f, -0.807978837117336310f, 0.589056567140108460f, - -0.808091802154378260f, - 0.588901606649675840f, -0.808204737480194720f, 0.588746624507014650f, - -0.808317643090633250f, - 0.588591620717822890f, -0.808430518981542720f, 0.588436595287799900f, - -0.808543365148773010f, - 0.588281548222645330f, -0.808656181588174980f, 0.588126479528059850f, - -0.808768968295600850f, - 0.587971389209745120f, -0.808881725266903610f, 0.587816277273403020f, - -0.808994452497937560f, - 0.587661143724736770f, -0.809107149984558130f, 0.587505988569450020f, - -0.809219817722621750f, - 0.587350811813247660f, -0.809332455707985840f, 0.587195613461834910f, - -0.809445063936509170f, - 0.587040393520918080f, -0.809557642404051260f, 0.586885151996203950f, - -0.809670191106473090f, - 0.586729888893400500f, -0.809782710039636420f, 0.586574604218216280f, - -0.809895199199404450f, - 0.586419297976360500f, -0.810007658581641140f, 0.586263970173543700f, - -0.810120088182211600f, - 0.586108620815476430f, -0.810232487996982330f, 0.585953249907870680f, - -0.810344858021820550f, - 0.585797857456438860f, -0.810457198252594770f, 0.585642443466894420f, - -0.810569508685174630f, - 0.585487007944951450f, -0.810681789315430670f, 0.585331550896324940f, - -0.810794040139234730f, - 0.585176072326730410f, -0.810906261152459670f, 0.585020572241884530f, - -0.811018452350979470f, - 0.584865050647504490f, -0.811130613730669190f, 0.584709507549308500f, - -0.811242745287404810f, - 0.584553942953015330f, -0.811354847017063730f, 0.584398356864344710f, - -0.811466918915524250f, - 0.584242749289016980f, -0.811578960978665890f, 0.584087120232753550f, - -0.811690973202369050f, - 0.583931469701276300f, -0.811802955582515360f, 0.583775797700308070f, - -0.811914908114987680f, - 0.583620104235572760f, -0.812026830795669730f, 0.583464389312794430f, - -0.812138723620446480f, - 0.583308652937698290f, -0.812250586585203880f, 0.583152895116010540f, - -0.812362419685829120f, - 0.582997115853457700f, -0.812474222918210480f, 0.582841315155767650f, - -0.812585996278237020f, - 0.582685493028668460f, -0.812697739761799490f, 0.582529649477889320f, - -0.812809453364789160f, - 0.582373784509160220f, -0.812921137083098770f, 0.582217898128211790f, - -0.813032790912621930f, - 0.582061990340775550f, -0.813144414849253590f, 0.581906061152583920f, - -0.813256008888889380f, - 0.581750110569369760f, -0.813367573027426570f, 0.581594138596866930f, - -0.813479107260763220f, - 0.581438145240810280f, -0.813590611584798510f, 0.581282130506935110f, - -0.813702085995432700f, - 0.581126094400977620f, -0.813813530488567190f, 0.580970036928674880f, - -0.813924945060104490f, - 0.580813958095764530f, -0.814036329705948300f, 0.580657857907985410f, - -0.814147684422003360f, - 0.580501736371076600f, -0.814259009204175270f, 0.580345593490778300f, - -0.814370304048371070f, - 0.580189429272831680f, -0.814481568950498610f, 0.580033243722978150f, - -0.814592803906467270f, - 0.579877036846960350f, -0.814704008912187080f, 0.579720808650521560f, - -0.814815183963569330f, - 0.579564559139405740f, -0.814926329056526620f, 0.579408288319357980f, - -0.815037444186972220f, - 0.579251996196123550f, -0.815148529350820830f, 0.579095682775449210f, - -0.815259584543988280f, - 0.578939348063081890f, -0.815370609762391290f, 0.578782992064769690f, - -0.815481605001947770f, - 0.578626614786261430f, -0.815592570258576680f, 0.578470216233306740f, - -0.815703505528198260f, - 0.578313796411655590f, -0.815814410806733780f, 0.578157355327059360f, - -0.815925286090105390f, - 0.578000892985269910f, -0.816036131374236700f, 0.577844409392039850f, - -0.816146946655052160f, - 0.577687904553122800f, -0.816257731928477390f, 0.577531378474272830f, - -0.816368487190439200f, - 0.577374831161244880f, -0.816479212436865390f, 0.577218262619794920f, - -0.816589907663684890f, - 0.577061672855679550f, -0.816700572866827850f, 0.576905061874655960f, - -0.816811208042225290f, - 0.576748429682482520f, -0.816921813185809480f, 0.576591776284917870f, - -0.817032388293513880f, - 0.576435101687721830f, -0.817142933361272970f, 0.576278405896654910f, - -0.817253448385022230f, - 0.576121688917478390f, -0.817363933360698460f, 0.575964950755954330f, - -0.817474388284239240f, - 0.575808191417845340f, -0.817584813151583710f, 0.575651410908915250f, - -0.817695207958671680f, - 0.575494609234928230f, -0.817805572701444270f, 0.575337786401649560f, - -0.817915907375843740f, - 0.575180942414845190f, -0.818026211977813440f, 0.575024077280281820f, - -0.818136486503297620f, - 0.574867191003726740f, -0.818246730948241960f, 0.574710283590948450f, - -0.818356945308593150f, - 0.574553355047715760f, -0.818467129580298660f, 0.574396405379798750f, - -0.818577283759307490f, - 0.574239434592967890f, -0.818687407841569570f, 0.574082442692994470f, - -0.818797501823036010f, - 0.573925429685650750f, -0.818907565699658950f, 0.573768395576709560f, - -0.819017599467391500f, - 0.573611340371944610f, -0.819127603122188240f, 0.573454264077130400f, - -0.819237576660004520f, - 0.573297166698042320f, -0.819347520076796900f, 0.573140048240456060f, - -0.819457433368523280f, - 0.572982908710148680f, -0.819567316531142230f, 0.572825748112897550f, - -0.819677169560613760f, - 0.572668566454481160f, -0.819786992452898990f, 0.572511363740678790f, - -0.819896785203959810f, - 0.572354139977270030f, -0.820006547809759680f, 0.572196895170035580f, - -0.820116280266262710f, - 0.572039629324757050f, -0.820225982569434690f, 0.571882342447216590f, - -0.820335654715241840f, - 0.571725034543197120f, -0.820445296699652050f, 0.571567705618482580f, - -0.820554908518633890f, - 0.571410355678857340f, -0.820664490168157460f, 0.571252984730106660f, - -0.820774041644193650f, - 0.571095592778016690f, -0.820883562942714580f, 0.570938179828374360f, - -0.820993054059693470f, - 0.570780745886967370f, -0.821102514991104650f, 0.570623290959583860f, - -0.821211945732923550f, - 0.570465815052012990f, -0.821321346281126740f, 0.570308318170045010f, - -0.821430716631691760f, - 0.570150800319470300f, -0.821540056780597610f, 0.569993261506080650f, - -0.821649366723823830f, - 0.569835701735668110f, -0.821758646457351640f, 0.569678121014025710f, - -0.821867895977163140f, - 0.569520519346947250f, -0.821977115279241550f, 0.569362896740227330f, - -0.822086304359571090f, - 0.569205253199661200f, -0.822195463214137170f, 0.569047588731045220f, - -0.822304591838926350f, - 0.568889903340175970f, -0.822413690229926390f, 0.568732197032851160f, - -0.822522758383125940f, - 0.568574469814869250f, -0.822631796294514990f, 0.568416721692029390f, - -0.822740803960084420f, - 0.568258952670131490f, -0.822849781375826320f, 0.568101162754976570f, - -0.822958728537734000f, - 0.567943351952365670f, -0.823067645441801670f, 0.567785520268101250f, - -0.823176532084024860f, - 0.567627667707986230f, -0.823285388460400110f, 0.567469794277824620f, - -0.823394214566925080f, - 0.567311899983420800f, -0.823503010399598390f, 0.567153984830580100f, - -0.823611775954420260f, - 0.566996048825108680f, -0.823720511227391320f, 0.566838091972813320f, - -0.823829216214513990f, - 0.566680114279501710f, -0.823937890911791370f, 0.566522115750982100f, - -0.824046535315227760f, - 0.566364096393063950f, -0.824155149420828570f, 0.566206056211556840f, - -0.824263733224600450f, - 0.566047995212271560f, -0.824372286722551250f, 0.565889913401019570f, - -0.824480809910689500f, - 0.565731810783613230f, -0.824589302785025290f, 0.565573687365865440f, - -0.824697765341569470f, - 0.565415543153589770f, -0.824806197576334330f, 0.565257378152600910f, - -0.824914599485333080f, - 0.565099192368714090f, -0.825022971064580220f, 0.564940985807745320f, - -0.825131312310090960f, - 0.564782758475511400f, -0.825239623217882130f, 0.564624510377830120f, - -0.825347903783971380f, - 0.564466241520519500f, -0.825456154004377440f, 0.564307951909398750f, - -0.825564373875120490f, - 0.564149641550287680f, -0.825672563392221390f, 0.563991310449007080f, - -0.825780722551702430f, - 0.563832958611378170f, -0.825888851349586780f, 0.563674586043223180f, - -0.825996949781898970f, - 0.563516192750364910f, -0.826105017844664610f, 0.563357778738627020f, - -0.826213055533910110f, - 0.563199344013834090f, -0.826321062845663420f, 0.563040888581811230f, - -0.826429039775953390f, - 0.562882412448384550f, -0.826536986320809960f, 0.562723915619380400f, - -0.826644902476264210f, - 0.562565398100626560f, -0.826752788238348520f, 0.562406859897951140f, - -0.826860643603096080f, - 0.562248301017183150f, -0.826968468566541490f, 0.562089721464152480f, - -0.827076263124720270f, - 0.561931121244689470f, -0.827184027273669020f, 0.561772500364625450f, - -0.827291761009425810f, - 0.561613858829792420f, -0.827399464328029350f, 0.561455196646023280f, - -0.827507137225519830f, - 0.561296513819151470f, -0.827614779697938400f, 0.561137810355011530f, - -0.827722391741327220f, - 0.560979086259438260f, -0.827829973351729810f, 0.560820341538267540f, - -0.827937524525190870f, - 0.560661576197336030f, -0.828045045257755800f, 0.560502790242481060f, - -0.828152535545471410f, - 0.560343983679540860f, -0.828259995384385550f, 0.560185156514354080f, - -0.828367424770547480f, - 0.560026308752760380f, -0.828474823700007130f, 0.559867440400600320f, - -0.828582192168815790f, - 0.559708551463714790f, -0.828689530173025710f, 0.559549641947945870f, - -0.828796837708690610f, - 0.559390711859136140f, -0.828904114771864870f, 0.559231761203129010f, - -0.829011361358604430f, - 0.559072789985768480f, -0.829118577464965980f, 0.558913798212899770f, - -0.829225763087007570f, - 0.558754785890368310f, -0.829332918220788250f, 0.558595753024020760f, - -0.829440042862368170f, - 0.558436699619704100f, -0.829547137007808800f, 0.558277625683266330f, - -0.829654200653172640f, - 0.558118531220556100f, -0.829761233794523050f, 0.557959416237422960f, - -0.829868236427924840f, - 0.557800280739717100f, -0.829975208549443840f, 0.557641124733289420f, - -0.830082150155146970f, - 0.557481948223991660f, -0.830189061241102370f, 0.557322751217676160f, - -0.830295941803379070f, - 0.557163533720196340f, -0.830402791838047550f, 0.557004295737406060f, - -0.830509611341179070f, - 0.556845037275160100f, -0.830616400308846200f, 0.556685758339313890f, - -0.830723158737122880f, - 0.556526458935723720f, -0.830829886622083570f, 0.556367139070246490f, - -0.830936583959804410f, - 0.556207798748739930f, -0.831043250746362320f, 0.556048437977062720f, - -0.831149886977835430f, - 0.555889056761073920f, -0.831256492650303210f, 0.555729655106633520f, - -0.831363067759845920f, - 0.555570233019602290f, -0.831469612302545240f, 0.555410790505841740f, - -0.831576126274483630f, - 0.555251327571214090f, -0.831682609671745120f, 0.555091844221582420f, - -0.831789062490414400f, - 0.554932340462810370f, -0.831895484726577590f, 0.554772816300762580f, - -0.832001876376321840f, - 0.554613271741304040f, -0.832108237435735480f, 0.554453706790301040f, - -0.832214567900907980f, - 0.554294121453620110f, -0.832320867767929680f, 0.554134515737128910f, - -0.832427137032892280f, - 0.553974889646695610f, -0.832533375691888680f, 0.553815243188189090f, - -0.832639583741012770f, - 0.553655576367479310f, -0.832745761176359460f, 0.553495889190436570f, - -0.832851907994024980f, - 0.553336181662932410f, -0.832958024190106670f, 0.553176453790838460f, - -0.833064109760702890f, - 0.553016705580027580f, -0.833170164701913190f, 0.552856937036373290f, - -0.833276189009838240f, - 0.552697148165749770f, -0.833382182680579730f, 0.552537338974032120f, - -0.833488145710240770f, - 0.552377509467096070f, -0.833594078094925140f, 0.552217659650817930f, - -0.833699979830738290f, - 0.552057789531074980f, -0.833805850913786340f, 0.551897899113745320f, - -0.833911691340176730f, - 0.551737988404707450f, -0.834017501106018130f, 0.551578057409841000f, - -0.834123280207419990f, - 0.551418106135026060f, -0.834229028640493420f, 0.551258134586143700f, - -0.834334746401350080f, - 0.551098142769075430f, -0.834440433486103190f, 0.550938130689703880f, - -0.834546089890866760f, - 0.550778098353912230f, -0.834651715611756330f, 0.550618045767584330f, - -0.834757310644888230f, - 0.550457972936604810f, -0.834862874986380010f, 0.550297879866859190f, - -0.834968408632350450f, - 0.550137766564233630f, -0.835073911578919300f, 0.549977633034615000f, - -0.835179383822207580f, - 0.549817479283891020f, -0.835284825358337370f, 0.549657305317949980f, - -0.835390236183431780f, - 0.549497111142680960f, -0.835495616293615350f, 0.549336896763974010f, - -0.835600965685013410f, - 0.549176662187719770f, -0.835706284353752600f, 0.549016407419809390f, - -0.835811572295960590f, - 0.548856132466135290f, -0.835916829507766360f, 0.548695837332590090f, - -0.836022055985299880f, - 0.548535522025067390f, -0.836127251724692160f, 0.548375186549461600f, - -0.836232416722075600f, - 0.548214830911667780f, -0.836337550973583530f, 0.548054455117581880f, - -0.836442654475350380f, - 0.547894059173100190f, -0.836547727223511890f, 0.547733643084120200f, - -0.836652769214204950f, - 0.547573206856539870f, -0.836757780443567190f, 0.547412750496257930f, - -0.836862760907737810f, - 0.547252274009174090f, -0.836967710602857020f, 0.547091777401188530f, - -0.837072629525066000f, - 0.546931260678202190f, -0.837177517670507190f, 0.546770723846116800f, - -0.837282375035324320f, - 0.546610166910834860f, -0.837387201615661940f, 0.546449589878259760f, - -0.837491997407665890f, - 0.546288992754295210f, -0.837596762407483040f, 0.546128375544846060f, - -0.837701496611261700f, - 0.545967738255817680f, -0.837806200015150940f, 0.545807080893116140f, - -0.837910872615301060f, - 0.545646403462648590f, -0.838015514407863700f, 0.545485705970322530f, - -0.838120125388991500f, - 0.545324988422046460f, -0.838224705554837970f, 0.545164250823729320f, - -0.838329254901558300f, - 0.545003493181281160f, -0.838433773425308340f, 0.544842715500612470f, - -0.838538261122245170f, - 0.544681917787634530f, -0.838642717988527300f, 0.544521100048259710f, - -0.838747144020313920f, - 0.544360262288400400f, -0.838851539213765760f, 0.544199404513970420f, - -0.838955903565044350f, - 0.544038526730883930f, -0.839060237070312630f, 0.543877628945055980f, - -0.839164539725734570f, - 0.543716711162402390f, -0.839268811527475230f, 0.543555773388839650f, - -0.839373052471700690f, - 0.543394815630284800f, -0.839477262554578550f, 0.543233837892656000f, - -0.839581441772277120f, - 0.543072840181871850f, -0.839685590120966110f, 0.542911822503851730f, - -0.839789707596816260f, - 0.542750784864516000f, -0.839893794195999410f, 0.542589727269785270f, - -0.839997849914688730f, - 0.542428649725581360f, -0.840101874749058400f, 0.542267552237826520f, - -0.840205868695283580f, - 0.542106434812444030f, -0.840309831749540770f, 0.541945297455357470f, - -0.840413763908007480f, - 0.541784140172491660f, -0.840517665166862440f, 0.541622962969771640f, - -0.840621535522285690f, - 0.541461765853123560f, -0.840725374970458070f, 0.541300548828474120f, - -0.840829183507561640f, - 0.541139311901750910f, -0.840932961129779670f, 0.540978055078882190f, - -0.841036707833296650f, - 0.540816778365796670f, -0.841140423614298080f, 0.540655481768424260f, - -0.841244108468970580f, - 0.540494165292695230f, -0.841347762393501950f, 0.540332828944540820f, - -0.841451385384081260f, - 0.540171472729892970f, -0.841554977436898330f, 0.540010096654684020f, - -0.841658538548144760f, - 0.539848700724847700f, -0.841762068714012490f, 0.539687284946317570f, - -0.841865567930695340f, - 0.539525849325029010f, -0.841969036194387680f, 0.539364393866917150f, - -0.842072473501285450f, - 0.539202918577918240f, -0.842175879847585570f, 0.539041423463969550f, - -0.842279255229485880f, - 0.538879908531008420f, -0.842382599643185960f, 0.538718373784973670f, - -0.842485913084885630f, - 0.538556819231804210f, -0.842589195550786600f, 0.538395244877439950f, - -0.842692447037091560f, - 0.538233650727821700f, -0.842795667540004120f, 0.538072036788890600f, - -0.842898857055729310f, - 0.537910403066588990f, -0.843002015580472830f, 0.537748749566859470f, - -0.843105143110442050f, - 0.537587076295645510f, -0.843208239641845440f, 0.537425383258891660f, - -0.843311305170892030f, - 0.537263670462542530f, -0.843414339693792760f, 0.537101937912544240f, - -0.843517343206759080f, - 0.536940185614843020f, -0.843620315706004040f, 0.536778413575385920f, - -0.843723257187741550f, - 0.536616621800121150f, -0.843826167648186740f, 0.536454810294997090f, - -0.843929047083555870f, - 0.536292979065963180f, -0.844031895490066410f, 0.536131128118969350f, - -0.844134712863936930f, - 0.535969257459966710f, -0.844237499201387020f, 0.535807367094906620f, - -0.844340254498637590f, - 0.535645457029741090f, -0.844442978751910660f, 0.535483527270423370f, - -0.844545671957429240f, - 0.535321577822907010f, -0.844648334111417820f, 0.535159608693146720f, - -0.844750965210101510f, - 0.534997619887097260f, -0.844853565249707010f, 0.534835611410714670f, - -0.844956134226462100f, - 0.534673583269955510f, -0.845058672136595470f, 0.534511535470777010f, - -0.845161178976337140f, - 0.534349468019137520f, -0.845263654741918220f, 0.534187380920995600f, - -0.845366099429570970f, - 0.534025274182310380f, -0.845468513035528830f, 0.533863147809042650f, - -0.845570895556026270f, - 0.533701001807152960f, -0.845673246987299070f, 0.533538836182603120f, - -0.845775567325583900f, - 0.533376650941355560f, -0.845877856567118890f, 0.533214446089372960f, - -0.845980114708143270f, - 0.533052221632619670f, -0.846082341744896940f, 0.532889977577059690f, - -0.846184537673621670f, - 0.532727713928658810f, -0.846286702490559710f, 0.532565430693382580f, - -0.846388836191954930f, - 0.532403127877198010f, -0.846490938774052020f, 0.532240805486072330f, - -0.846593010233097190f, - 0.532078463525973540f, -0.846695050565337450f, 0.531916102002870760f, - -0.846797059767020910f, - 0.531753720922733320f, -0.846899037834397350f, 0.531591320291531780f, - -0.847000984763716880f, - 0.531428900115236910f, -0.847102900551231500f, 0.531266460399820390f, - -0.847204785193193980f, - 0.531104001151255000f, -0.847306638685858320f, 0.530941522375513510f, - -0.847408461025479730f, - 0.530779024078570250f, -0.847510252208314330f, 0.530616506266399450f, - -0.847612012230619660f, - 0.530453968944976320f, -0.847713741088654270f, 0.530291412120277420f, - -0.847815438778677930f, - 0.530128835798278850f, -0.847917105296951410f, 0.529966239984958620f, - -0.848018740639736810f, - 0.529803624686294830f, -0.848120344803297120f, 0.529640989908265910f, - -0.848221917783896990f, - 0.529478335656852090f, -0.848323459577801530f, 0.529315661938033140f, - -0.848424970181277600f, - 0.529152968757790720f, -0.848526449590592650f, 0.528990256122106040f, - -0.848627897802015860f, - 0.528827524036961980f, -0.848729314811817010f, 0.528664772508341540f, - -0.848830700616267530f, - 0.528502001542228480f, -0.848932055211639610f, 0.528339211144607690f, - -0.849033378594206690f, - 0.528176401321464370f, -0.849134670760243630f, 0.528013572078784740f, - -0.849235931706025960f, - 0.527850723422555460f, -0.849337161427830670f, 0.527687855358763720f, - -0.849438359921935950f, - 0.527524967893398200f, -0.849539527184620890f, 0.527362061032447430f, - -0.849640663212165910f, - 0.527199134781901390f, -0.849741768000852440f, 0.527036189147750190f, - -0.849842841546963210f, - 0.526873224135984700f, -0.849943883846782210f, 0.526710239752597010f, - -0.850044894896594070f, - 0.526547236003579330f, -0.850145874692685210f, 0.526384212894925210f, - -0.850246823231342710f, - 0.526221170432628170f, -0.850347740508854980f, 0.526058108622682760f, - -0.850448626521511650f, - 0.525895027471084740f, -0.850549481265603370f, 0.525731926983829640f, - -0.850650304737422200f, - 0.525568807166914680f, -0.850751096933260790f, 0.525405668026336810f, - -0.850851857849413640f, - 0.525242509568094710f, -0.850952587482175730f, 0.525079331798186890f, - -0.851053285827843790f, - 0.524916134722612890f, -0.851153952882715340f, 0.524752918347373360f, - -0.851254588643089120f, - 0.524589682678468840f, -0.851355193105265200f, 0.524426427721901510f, - -0.851455766265544310f, - 0.524263153483673470f, -0.851556308120228870f, 0.524099859969787810f, - -0.851656818665622370f, - 0.523936547186248600f, -0.851757297898029120f, 0.523773215139060170f, - -0.851857745813754840f, - 0.523609863834228030f, -0.851958162409106380f, 0.523446493277757940f, - -0.852058547680391580f, - 0.523283103475656430f, -0.852158901623919830f, 0.523119694433931250f, - -0.852259224236001090f, - 0.522956266158590140f, -0.852359515512947090f, 0.522792818655642200f, - -0.852459775451070100f, - 0.522629351931096720f, -0.852560004046683970f, 0.522465865990963900f, - -0.852660201296103760f, - 0.522302360841254700f, -0.852760367195645300f, 0.522138836487980650f, - -0.852860501741625860f, - 0.521975292937154390f, -0.852960604930363630f, 0.521811730194788550f, - -0.853060676758178320f, - 0.521648148266897090f, -0.853160717221390420f, 0.521484547159494550f, - -0.853260726316321770f, - 0.521320926878595550f, -0.853360704039295430f, 0.521157287430216610f, - -0.853460650386635320f, - 0.520993628820373810f, -0.853560565354666840f, 0.520829951055084780f, - -0.853660448939716270f, - 0.520666254140367270f, -0.853760301138111300f, 0.520502538082239790f, - -0.853860121946180660f, - 0.520338802886721960f, -0.853959911360254060f, 0.520175048559833760f, - -0.854059669376662780f, - 0.520011275107596040f, -0.854159395991738730f, 0.519847482536030300f, - -0.854259091201815420f, - 0.519683670851158520f, -0.854358755003227440f, 0.519519840059003870f, - -0.854458387392310060f, - 0.519355990165589530f, -0.854557988365400530f, 0.519192121176940360f, - -0.854657557918836460f, - 0.519028233099080970f, -0.854757096048957110f, 0.518864325938037000f, - -0.854856602752102850f, - 0.518700399699835170f, -0.854956078024614820f, 0.518536454390502110f, - -0.855055521862835950f, - 0.518372490016066220f, -0.855154934263109620f, 0.518208506582555460f, - -0.855254315221781080f, - 0.518044504095999340f, -0.855353664735196030f, 0.517880482562427800f, - -0.855452982799701830f, - 0.517716441987871150f, -0.855552269411646970f, 0.517552382378360990f, - -0.855651524567380690f, - 0.517388303739929060f, -0.855750748263253920f, 0.517224206078608310f, - -0.855849940495618240f, - 0.517060089400432130f, -0.855949101260826790f, 0.516895953711434260f, - -0.856048230555233820f, - 0.516731799017649980f, -0.856147328375194470f, 0.516567625325114350f, - -0.856246394717065210f, - 0.516403432639863990f, -0.856345429577203610f, 0.516239220967935620f, - -0.856444432951968480f, - 0.516074990315366630f, -0.856543404837719960f, 0.515910740688195650f, - -0.856642345230818720f, - 0.515746472092461380f, -0.856741254127627470f, 0.515582184534203790f, - -0.856840131524509220f, - 0.515417878019463150f, -0.856938977417828650f, 0.515253552554280290f, - -0.857037791803951680f, - 0.515089208144697270f, -0.857136574679244870f, 0.514924844796756490f, - -0.857235326040076460f, - 0.514760462516501200f, -0.857334045882815590f, 0.514596061309975040f, - -0.857432734203832700f, - 0.514431641183222930f, -0.857531390999499040f, 0.514267202142289830f, - -0.857630016266187620f, - 0.514102744193221660f, -0.857728610000272120f, 0.513938267342065490f, - -0.857827172198127320f, - 0.513773771594868030f, -0.857925702856129790f, 0.513609256957677900f, - -0.858024201970656540f, - 0.513444723436543570f, -0.858122669538086020f, 0.513280171037514330f, - -0.858221105554798250f, - 0.513115599766640560f, -0.858319510017173440f, 0.512951009629972860f, - -0.858417882921594040f, - 0.512786400633563070f, -0.858516224264442740f, 0.512621772783463100f, - -0.858614534042104080f, - 0.512457126085725800f, -0.858712812250963520f, 0.512292460546404980f, - -0.858811058887407500f, - 0.512127776171554690f, -0.858909273947823900f, 0.511963072967230200f, - -0.859007457428601410f, - 0.511798350939487000f, -0.859105609326130340f, 0.511633610094381350f, - -0.859203729636801920f, - 0.511468850437970520f, -0.859301818357008360f, 0.511304071976311890f, - -0.859399875483143450f, - 0.511139274715464390f, -0.859497901011601620f, 0.510974458661486720f, - -0.859595894938779080f, - 0.510809623820439040f, -0.859693857261072610f, 0.510644770198381730f, - -0.859791787974880540f, - 0.510479897801375700f, -0.859889687076602290f, 0.510315006635483350f, - -0.859987554562638200f, - 0.510150096706766700f, -0.860085390429390140f, 0.509985168021289570f, - -0.860183194673260880f, - 0.509820220585115560f, -0.860280967290654510f, 0.509655254404309250f, - -0.860378708277976130f, - 0.509490269484936360f, -0.860476417631632070f, 0.509325265833062480f, - -0.860574095348029980f, - 0.509160243454754750f, -0.860671741423578380f, 0.508995202356080310f, - -0.860769355854687060f, - 0.508830142543106990f, -0.860866938637767310f, 0.508665064021904260f, - -0.860964489769230900f, - 0.508499966798540810f, -0.861062009245491480f, 0.508334850879087470f, - -0.861159497062963350f, - 0.508169716269614710f, -0.861256953218062060f, 0.508004562976194010f, - -0.861354377707204800f, - 0.507839391004897940f, -0.861451770526809210f, 0.507674200361798890f, - -0.861549131673294720f, - 0.507508991052970870f, -0.861646461143081300f, 0.507343763084487920f, - -0.861743758932590700f, - 0.507178516462425290f, -0.861841025038245330f, 0.507013251192858340f, - -0.861938259456469180f, - 0.506847967281863320f, -0.862035462183687210f, 0.506682664735517600f, - -0.862132633216325380f, - 0.506517343559898530f, -0.862229772550811240f, 0.506352003761084800f, - -0.862326880183573060f, - 0.506186645345155450f, -0.862423956111040500f, 0.506021268318189830f, - -0.862521000329644520f, - 0.505855872686268860f, -0.862618012835816740f, 0.505690458455473340f, - -0.862714993625990690f, - 0.505525025631885510f, -0.862811942696600330f, 0.505359574221587390f, - -0.862908860044081290f, - 0.505194104230662240f, -0.863005745664870210f, 0.505028615665194300f, - -0.863102599555404800f, - 0.504863108531267480f, -0.863199421712124160f, 0.504697582834967680f, - -0.863296212131468230f, - 0.504532038582380380f, -0.863392970809878310f, 0.504366475779592150f, - -0.863489697743797140f, - 0.504200894432690560f, -0.863586392929667990f, 0.504035294547763080f, - -0.863683056363935940f, - 0.503869676130898950f, -0.863779688043046610f, 0.503704039188186960f, - -0.863876287963447510f, - 0.503538383725717580f, -0.863972856121586700f, 0.503372709749581150f, - -0.864069392513913680f, - 0.503207017265869030f, -0.864165897136879300f, 0.503041306280673450f, - -0.864262369986934950f, - 0.502875576800086880f, -0.864358811060534030f, 0.502709828830203100f, - -0.864455220354130250f, - 0.502544062377115800f, -0.864551597864179230f, 0.502378277446919870f, - -0.864647943587137480f, - 0.502212474045710900f, -0.864744257519462380f, 0.502046652179584660f, - -0.864840539657612980f, - 0.501880811854638400f, -0.864936789998049020f, 0.501714953076969230f, - -0.865033008537231750f, - 0.501549075852675390f, -0.865129195271623690f, 0.501383180187855880f, - -0.865225350197688090f, - 0.501217266088609950f, -0.865321473311889800f, 0.501051333561038040f, - -0.865417564610694410f, - 0.500885382611240940f, -0.865513624090568980f, 0.500719413245319880f, - -0.865609651747981880f, - 0.500553425469377640f, -0.865705647579402270f, 0.500387419289516580f, - -0.865801611581300760f, - 0.500221394711840680f, -0.865897543750148820f, 0.500055351742453860f, - -0.865993444082419520f, - 0.499889290387461380f, -0.866089312574586770f, 0.499723210652968710f, - -0.866185149223125730f, - 0.499557112545081890f, -0.866280954024512990f, 0.499390996069908220f, - -0.866376726975225830f, - 0.499224861233555030f, -0.866472468071743050f, 0.499058708042130930f, - -0.866568177310544360f, - 0.498892536501744750f, -0.866663854688111020f, 0.498726346618505960f, - -0.866759500200925290f, - 0.498560138398525200f, -0.866855113845470320f, 0.498393911847913150f, - -0.866950695618231020f, - 0.498227666972781870f, -0.867046245515692650f, 0.498061403779243520f, - -0.867141763534342360f, - 0.497895122273410930f, -0.867237249670668400f, 0.497728822461398100f, - -0.867332703921159690f, - 0.497562504349319090f, -0.867428126282306920f, 0.497396167943289340f, - -0.867523516750601460f, - 0.497229813249424340f, -0.867618875322536230f, 0.497063440273840310f, - -0.867714201994605140f, - 0.496897049022654640f, -0.867809496763303210f, 0.496730639501984710f, - -0.867904759625126920f, - 0.496564211717949340f, -0.867999990576573400f, 0.496397765676667160f, - -0.868095189614141670f, - 0.496231301384258310f, -0.868190356734331310f, 0.496064818846843060f, - -0.868285491933643240f, - 0.495898318070542240f, -0.868380595208579800f, 0.495731799061478020f, - -0.868475666555644120f, - 0.495565261825772490f, -0.868570705971340900f, 0.495398706369549080f, - -0.868665713452175580f, - 0.495232132698931350f, -0.868760688994655190f, 0.495065540820043610f, - -0.868855632595287750f, - 0.494898930739011310f, -0.868950544250582380f, 0.494732302461959820f, - -0.869045423957049530f, - 0.494565655995016010f, -0.869140271711200560f, 0.494398991344306760f, - -0.869235087509548250f, - 0.494232308515959730f, -0.869329871348606730f, 0.494065607516103730f, - -0.869424623224890780f, - 0.493898888350867430f, -0.869519343134916970f, 0.493732151026381070f, - -0.869614031075202300f, - 0.493565395548774880f, -0.869708687042265560f, 0.493398621924179830f, - -0.869803311032626650f, - 0.493231830158728070f, -0.869897903042806340f, 0.493065020258551650f, - -0.869992463069326870f, - 0.492898192229784090f, -0.870086991108711350f, 0.492731346078558840f, - -0.870181487157484560f, - 0.492564481811010650f, -0.870275951212171830f, 0.492397599433274550f, - -0.870370383269300160f, - 0.492230698951486080f, -0.870464783325397670f, 0.492063780371782060f, - -0.870559151376993250f, - 0.491896843700299240f, -0.870653487420617540f, 0.491729888943175820f, - -0.870747791452801790f, - 0.491562916106550060f, -0.870842063470078860f, 0.491395925196560830f, - -0.870936303468982760f, - 0.491228916219348330f, -0.871030511446048260f, 0.491061889181052590f, - -0.871124687397811900f, - 0.490894844087815140f, -0.871218831320810900f, 0.490727780945777570f, - -0.871312943211583920f, - 0.490560699761082080f, -0.871407023066670950f, 0.490393600539872130f, - -0.871501070882612530f, - 0.490226483288291100f, -0.871595086655951090f, 0.490059348012483910f, - -0.871689070383229740f, - 0.489892194718595300f, -0.871783022060993010f, 0.489725023412770970f, - -0.871876941685786890f, - 0.489557834101157550f, -0.871970829254157700f, 0.489390626789901920f, - -0.872064684762653970f, - 0.489223401485152030f, -0.872158508207824480f, 0.489056158193055980f, - -0.872252299586219860f, - 0.488888896919763230f, -0.872346058894391540f, 0.488721617671423250f, - -0.872439786128892280f, - 0.488554320454186230f, -0.872533481286276060f, 0.488387005274203590f, - -0.872627144363097960f, - 0.488219672137626740f, -0.872720775355914300f, 0.488052321050608310f, - -0.872814374261282390f, - 0.487884952019301210f, -0.872907941075760970f, 0.487717565049858860f, - -0.873001475795909920f, - 0.487550160148436050f, -0.873094978418290090f, 0.487382737321187310f, - -0.873188448939463790f, - 0.487215296574268820f, -0.873281887355994210f, 0.487047837913836550f, - -0.873375293664446000f, - 0.486880361346047400f, -0.873468667861384880f, 0.486712866877059340f, - -0.873562009943377740f, - 0.486545354513030270f, -0.873655319906992630f, 0.486377824260119500f, - -0.873748597748798870f, - 0.486210276124486530f, -0.873841843465366750f, 0.486042710112291390f, - -0.873935057053268130f, - 0.485875126229695420f, -0.874028238509075630f, 0.485707524482859750f, - -0.874121387829363330f, - 0.485539904877947020f, -0.874214505010706300f, 0.485372267421119770f, - -0.874307590049680950f, - 0.485204612118541880f, -0.874400642942864790f, 0.485036938976377450f, - -0.874493663686836450f, - 0.484869248000791120f, -0.874586652278176110f, 0.484701539197948730f, - -0.874679608713464510f, - 0.484533812574016120f, -0.874772532989284150f, 0.484366068135160480f, - -0.874865425102218210f, - 0.484198305887549140f, -0.874958285048851540f, 0.484030525837350010f, - -0.875051112825769970f, - 0.483862727990732320f, -0.875143908429560250f, 0.483694912353865080f, - -0.875236671856810870f, - 0.483527078932918740f, -0.875329403104110780f, 0.483359227734063980f, - -0.875422102168050830f, - 0.483191358763471910f, -0.875514769045222740f, 0.483023472027315050f, - -0.875607403732219240f, - 0.482855567531765670f, -0.875700006225634600f, 0.482687645282997510f, - -0.875792576522063880f, - 0.482519705287184520f, -0.875885114618103700f, 0.482351747550501030f, - -0.875977620510351660f, - 0.482183772079122830f, -0.876070094195406600f, 0.482015778879225530f, - -0.876162535669868460f, - 0.481847767956986080f, -0.876254944930338400f, 0.481679739318581490f, - -0.876347321973419020f, - 0.481511692970189920f, -0.876439666795713610f, 0.481343628917989870f, - -0.876531979393827100f, - 0.481175547168160360f, -0.876624259764365310f, 0.481007447726881640f, - -0.876716507903935400f, - 0.480839330600333900f, -0.876808723809145760f, 0.480671195794698690f, - -0.876900907476605650f, - 0.480503043316157670f, -0.876993058902925780f, 0.480334873170893070f, - -0.877085178084718310f, - 0.480166685365088440f, -0.877177265018595940f, 0.479998479904927220f, - -0.877269319701173170f, - 0.479830256796594250f, -0.877361342129065140f, 0.479662016046274340f, - -0.877453332298888560f, - 0.479493757660153060f, -0.877545290207261240f, 0.479325481644417130f, - -0.877637215850802120f, - 0.479157188005253310f, -0.877729109226131570f, 0.478988876748849550f, - -0.877820970329870500f, - 0.478820547881394050f, -0.877912799158641730f, 0.478652201409075550f, - -0.878004595709069080f, - 0.478483837338084080f, -0.878096359977777130f, 0.478315455674609480f, - -0.878188091961392250f, - 0.478147056424843120f, -0.878279791656541460f, 0.477978639594976110f, - -0.878371459059853590f, - 0.477810205191201040f, -0.878463094167957870f, 0.477641753219710590f, - -0.878554696977485340f, - 0.477473283686698060f, -0.878646267485068130f, 0.477304796598358010f, - -0.878737805687339280f, - 0.477136291960884750f, -0.878829311580933360f, 0.476967769780474230f, - -0.878920785162485840f, - 0.476799230063322250f, -0.879012226428633410f, 0.476630672815625380f, - -0.879103635376014330f, - 0.476462098043581310f, -0.879195012001267370f, 0.476293505753387750f, - -0.879286356301033250f, - 0.476124895951243630f, -0.879377668271953180f, 0.475956268643348220f, - -0.879468947910670100f, - 0.475787623835901120f, -0.879560195213827890f, 0.475618961535103410f, - -0.879651410178071470f, - 0.475450281747155870f, -0.879742592800047410f, 0.475281584478260800f, - -0.879833743076402940f, - 0.475112869734620470f, -0.879924861003786860f, 0.474944137522437860f, - -0.880015946578848960f, - 0.474775387847917230f, -0.880106999798240360f, 0.474606620717262560f, - -0.880198020658613190f, - 0.474437836136679340f, -0.880289009156620890f, 0.474269034112372920f, - -0.880379965288918260f, - 0.474100214650550020f, -0.880470889052160750f, 0.473931377757417560f, - -0.880561780443005590f, - 0.473762523439182850f, -0.880652639458111010f, 0.473593651702054640f, - -0.880743466094136230f, - 0.473424762552241530f, -0.880834260347742040f, 0.473255855995953380f, - -0.880925022215589880f, - 0.473086932039400220f, -0.881015751694342760f, 0.472917990688792760f, - -0.881106448780665130f, - 0.472749031950342900f, -0.881197113471221980f, 0.472580055830262250f, - -0.881287745762680100f, - 0.472411062334764100f, -0.881378345651706810f, 0.472242051470061650f, - -0.881468913134971330f, - 0.472073023242368660f, -0.881559448209143780f, 0.471903977657900320f, - -0.881649950870895260f, - 0.471734914722871430f, -0.881740421116898320f, 0.471565834443498480f, - -0.881830858943826620f, - 0.471396736825997810f, -0.881921264348354940f, 0.471227621876586400f, - -0.882011637327159590f, - 0.471058489601482610f, -0.882101977876917580f, 0.470889340006904520f, - -0.882192285994307430f, - 0.470720173099071710f, -0.882282561676008600f, 0.470550988884203490f, - -0.882372804918702290f, - 0.470381787368520710f, -0.882463015719070040f, 0.470212568558244280f, - -0.882553194073795400f, - 0.470043332459595620f, -0.882643339979562790f, 0.469874079078797470f, - -0.882733453433057540f, - 0.469704808422072460f, -0.882823534430966730f, 0.469535520495644510f, - -0.882913582969978020f, - 0.469366215305737630f, -0.883003599046780720f, 0.469196892858576630f, - -0.883093582658065370f, - 0.469027553160387240f, -0.883183533800523280f, 0.468858196217395330f, - -0.883273452470847430f, - 0.468688822035827960f, -0.883363338665731580f, 0.468519430621912420f, - -0.883453192381870920f, - 0.468350021981876530f, -0.883543013615961880f, 0.468180596121949400f, - -0.883632802364701760f, - 0.468011153048359830f, -0.883722558624789660f, 0.467841692767338220f, - -0.883812282392925090f, - 0.467672215285114710f, -0.883901973665809470f, 0.467502720607920920f, - -0.883991632440144890f, - 0.467333208741988530f, -0.884081258712634990f, 0.467163679693549770f, - -0.884170852479984500f, - 0.466994133468838110f, -0.884260413738899080f, 0.466824570074086950f, - -0.884349942486086120f, - 0.466654989515530970f, -0.884439438718253700f, 0.466485391799405010f, - -0.884528902432111350f, - 0.466315776931944480f, -0.884618333624369920f, 0.466146144919386000f, - -0.884707732291740930f, - 0.465976495767966130f, -0.884797098430937790f, 0.465806829483922770f, - -0.884886432038674560f, - 0.465637146073493770f, -0.884975733111666660f, 0.465467445542917800f, - -0.885065001646630930f, - 0.465297727898434650f, -0.885154237640285110f, 0.465127993146283950f, - -0.885243441089348270f, - 0.464958241292706740f, -0.885332611990540590f, 0.464788472343944160f, - -0.885421750340583570f, - 0.464618686306237820f, -0.885510856136199950f, 0.464448883185830770f, - -0.885599929374113360f, - 0.464279062988965760f, -0.885688970051048960f, 0.464109225721887010f, - -0.885777978163732940f, - 0.463939371390838460f, -0.885866953708892790f, 0.463769500002065680f, - -0.885955896683257030f, - 0.463599611561814120f, -0.886044807083555490f, 0.463429706076329880f, - -0.886133684906519340f, - 0.463259783551860260f, -0.886222530148880640f, 0.463089843994652470f, - -0.886311342807372890f, - 0.462919887410955130f, -0.886400122878730490f, 0.462749913807016850f, - -0.886488870359689600f, - 0.462579923189086810f, -0.886577585246987040f, 0.462409915563415540f, - -0.886666267537360890f, - 0.462239890936253280f, -0.886754917227550950f, 0.462069849313851810f, - -0.886843534314297300f, - 0.461899790702462840f, -0.886932118794342080f, 0.461729715108338770f, - -0.887020670664428360f, - 0.461559622537733190f, -0.887109189921300060f, 0.461389512996899450f, - -0.887197676561702900f, - 0.461219386492092430f, -0.887286130582383150f, 0.461049243029567010f, - -0.887374551980088740f, - 0.460879082615578690f, -0.887462940751568840f, 0.460708905256384190f, - -0.887551296893573370f, - 0.460538710958240010f, -0.887639620402853930f, 0.460368499727404070f, - -0.887727911276163020f, - 0.460198271570134270f, -0.887816169510254550f, 0.460028026492689700f, - -0.887904395101883240f, - 0.459857764501329650f, -0.887992588047805560f, 0.459687485602313870f, - -0.888080748344778900f, - 0.459517189801903590f, -0.888168875989561620f, 0.459346877106359570f, - -0.888256970978913870f, - 0.459176547521944150f, -0.888345033309596240f, 0.459006201054919680f, - -0.888433062978371320f, - 0.458835837711549120f, -0.888521059982002260f, 0.458665457498096670f, - -0.888609024317253750f, - 0.458495060420826220f, -0.888696955980891710f, 0.458324646486003300f, - -0.888784854969682850f, - 0.458154215699893230f, -0.888872721280395520f, 0.457983768068762180f, - -0.888960554909799310f, - 0.457813303598877290f, -0.889048355854664570f, 0.457642822296505770f, - -0.889136124111763240f, - 0.457472324167916110f, -0.889223859677868210f, 0.457301809219376800f, - -0.889311562549753850f, - 0.457131277457156980f, -0.889399232724195520f, 0.456960728887527030f, - -0.889486870197969790f, - 0.456790163516757220f, -0.889574474967854580f, 0.456619581351118960f, - -0.889662047030628790f, - 0.456448982396883860f, -0.889749586383072890f, 0.456278366660324670f, - -0.889837093021967900f, - 0.456107734147714220f, -0.889924566944096720f, 0.455937084865326030f, - -0.890012008146243260f, - 0.455766418819434750f, -0.890099416625192210f, 0.455595736016314920f, - -0.890186792377730240f, - 0.455425036462242420f, -0.890274135400644480f, 0.455254320163493210f, - -0.890361445690723730f, - 0.455083587126343840f, -0.890448723244757880f, 0.454912837357072050f, - -0.890535968059537830f, - 0.454742070861955450f, -0.890623180131855930f, 0.454571287647273000f, - -0.890710359458505520f, - 0.454400487719303750f, -0.890797506036281490f, 0.454229671084327320f, - -0.890884619861979530f, - 0.454058837748624540f, -0.890971700932396750f, 0.453887987718476050f, - -0.891058749244331590f, - 0.453717121000163930f, -0.891145764794583180f, 0.453546237599970260f, - -0.891232747579952520f, - 0.453375337524177750f, -0.891319697597241390f, 0.453204420779070300f, - -0.891406614843252900f, - 0.453033487370931580f, -0.891493499314791380f, 0.452862537306046810f, - -0.891580351008662290f, - 0.452691570590700860f, -0.891667169921672390f, 0.452520587231180100f, - -0.891753956050629460f, - 0.452349587233771000f, -0.891840709392342720f, 0.452178570604760410f, - -0.891927429943622510f, - 0.452007537350436530f, -0.892014117701280360f, 0.451836487477087430f, - -0.892100772662129170f, - 0.451665420991002540f, -0.892187394822982480f, 0.451494337898471210f, - -0.892273984180655730f, - 0.451323238205783520f, -0.892360540731965360f, 0.451152121919230710f, - -0.892447064473728680f, - 0.450980989045103810f, -0.892533555402764690f, 0.450809839589695340f, - -0.892620013515893040f, - 0.450638673559297760f, -0.892706438809935280f, 0.450467490960204110f, - -0.892792831281713610f, - 0.450296291798708730f, -0.892879190928051680f, 0.450125076081105750f, - -0.892965517745774260f, - 0.449953843813690580f, -0.893051811731707450f, 0.449782595002758860f, - -0.893138072882678210f, - 0.449611329654606600f, -0.893224301195515320f, 0.449440047775531260f, - -0.893310496667048090f, - 0.449268749371829920f, -0.893396659294107610f, 0.449097434449801100f, - -0.893482789073525850f, - 0.448926103015743260f, -0.893568886002136020f, 0.448754755075956020f, - -0.893654950076772430f, - 0.448583390636739300f, -0.893740981294271040f, 0.448412009704393430f, - -0.893826979651468620f, - 0.448240612285220000f, -0.893912945145203250f, 0.448069198385520340f, - -0.893998877772314240f, - 0.447897768011597310f, -0.894084777529641990f, 0.447726321169753750f, - -0.894170644414028270f, - 0.447554857866293010f, -0.894256478422316040f, 0.447383378107519710f, - -0.894342279551349480f, - 0.447211881899738260f, -0.894428047797973800f, 0.447040369249254500f, - -0.894513783159035620f, - 0.446868840162374330f, -0.894599485631382580f, 0.446697294645404090f, - -0.894685155211863980f, - 0.446525732704651400f, -0.894770791897329550f, 0.446354154346423840f, - -0.894856395684630930f, - 0.446182559577030120f, -0.894941966570620750f, 0.446010948402779110f, - -0.895027504552152630f, - 0.445839320829980350f, -0.895113009626081760f, 0.445667676864944350f, - -0.895198481789264200f, - 0.445496016513981740f, -0.895283921038557580f, 0.445324339783404240f, - -0.895369327370820310f, - 0.445152646679523590f, -0.895454700782912450f, 0.444980937208652780f, - -0.895540041271694840f, - 0.444809211377105000f, -0.895625348834030000f, 0.444637469191193790f, - -0.895710623466781320f, - 0.444465710657234110f, -0.895795865166813420f, 0.444293935781540580f, - -0.895881073930992370f, - 0.444122144570429260f, -0.895966249756185110f, 0.443950337030216250f, - -0.896051392639260040f, - 0.443778513167218220f, -0.896136502577086770f, 0.443606672987753080f, - -0.896221579566535920f, - 0.443434816498138430f, -0.896306623604479660f, 0.443262943704693380f, - -0.896391634687790820f, - 0.443091054613736990f, -0.896476612813344010f, 0.442919149231588980f, - -0.896561557978014960f, - 0.442747227564570130f, -0.896646470178680150f, 0.442575289619001170f, - -0.896731349412217880f, - 0.442403335401204130f, -0.896816195675507190f, 0.442231364917501090f, - -0.896901008965428680f, - 0.442059378174214760f, -0.896985789278863970f, 0.441887375177668960f, - -0.897070536612695870f, - 0.441715355934187310f, -0.897155250963808550f, 0.441543320450094920f, - -0.897239932329087050f, - 0.441371268731716620f, -0.897324580705418320f, 0.441199200785378660f, - -0.897409196089689720f, - 0.441027116617407340f, -0.897493778478790190f, 0.440855016234129430f, - -0.897578327869610230f, - 0.440682899641873020f, -0.897662844259040750f, 0.440510766846965880f, - -0.897747327643974690f, - 0.440338617855737300f, -0.897831778021305650f, 0.440166452674516480f, - -0.897916195387928550f, - 0.439994271309633260f, -0.898000579740739880f, 0.439822073767418610f, - -0.898084931076636780f, - 0.439649860054203420f, -0.898169249392518080f, 0.439477630176319860f, - -0.898253534685283570f, - 0.439305384140100060f, -0.898337786951834190f, 0.439133121951876930f, - -0.898422006189072530f, - 0.438960843617984430f, -0.898506192393901840f, 0.438788549144756290f, - -0.898590345563227030f, - 0.438616238538527710f, -0.898674465693953820f, 0.438443911805633860f, - -0.898758552782989440f, - 0.438271568952410480f, -0.898842606827242260f, 0.438099209985194580f, - -0.898926627823621870f, - 0.437926834910322860f, -0.899010615769039070f, 0.437754443734133470f, - -0.899094570660405770f, - 0.437582036462964340f, -0.899178492494635330f, 0.437409613103154850f, - -0.899262381268642000f, - 0.437237173661044200f, -0.899346236979341460f, 0.437064718142972370f, - -0.899430059623650860f, - 0.436892246555280470f, -0.899513849198487870f, 0.436719758904309310f, - -0.899597605700772180f, - 0.436547255196401250f, -0.899681329127423930f, 0.436374735437898510f, - -0.899765019475365020f, - 0.436202199635143950f, -0.899848676741518580f, 0.436029647794481670f, - -0.899932300922808400f, - 0.435857079922255470f, -0.900015892016160280f, 0.435684496024810520f, - -0.900099450018500340f, - 0.435511896108492170f, -0.900182974926756700f, 0.435339280179646070f, - -0.900266466737858480f, - 0.435166648244619370f, -0.900349925448735600f, 0.434994000309758710f, - -0.900433351056319830f, - 0.434821336381412350f, -0.900516743557543520f, 0.434648656465928430f, - -0.900600102949340790f, - 0.434475960569655710f, -0.900683429228646860f, 0.434303248698944100f, - -0.900766722392397860f, - 0.434130520860143310f, -0.900849982437531450f, 0.433957777059604480f, - -0.900933209360986200f, - 0.433785017303678520f, -0.901016403159702330f, 0.433612241598717640f, - -0.901099563830620950f, - 0.433439449951074200f, -0.901182691370684410f, 0.433266642367100940f, - -0.901265785776836580f, - 0.433093818853152010f, -0.901348847046022030f, 0.432920979415581220f, - -0.901431875175186970f, - 0.432748124060743760f, -0.901514870161278630f, 0.432575252794994810f, - -0.901597832001245660f, - 0.432402365624690140f, -0.901680760692037730f, 0.432229462556186770f, - -0.901763656230605610f, - 0.432056543595841450f, -0.901846518613901860f, 0.431883608750012300f, - -0.901929347838879350f, - 0.431710658025057370f, -0.902012143902493070f, 0.431537691427335500f, - -0.902094906801698900f, - 0.431364708963206440f, -0.902177636533453510f, 0.431191710639030000f, - -0.902260333094715540f, - 0.431018696461167080f, -0.902342996482444200f, 0.430845666435978820f, - -0.902425626693600270f, - 0.430672620569826860f, -0.902508223725145830f, 0.430499558869073930f, - -0.902590787574043870f, - 0.430326481340082610f, -0.902673318237258830f, 0.430153387989216930f, - -0.902755815711756120f, - 0.429980278822840570f, -0.902838279994502830f, 0.429807153847318770f, - -0.902920711082466630f, - 0.429634013069016500f, -0.903003108972617040f, 0.429460856494299490f, - -0.903085473661924600f, - 0.429287684129534720f, -0.903167805147360610f, 0.429114495981088690f, - -0.903250103425898400f, - 0.428941292055329550f, -0.903332368494511820f, 0.428768072358625240f, - -0.903414600350176290f, - 0.428594836897344400f, -0.903496798989868450f, 0.428421585677856760f, - -0.903578964410565950f, - 0.428248318706531910f, -0.903661096609247980f, 0.428075035989740780f, - -0.903743195582894620f, - 0.427901737533854240f, -0.903825261328487390f, 0.427728423345243860f, - -0.903907293843009050f, - 0.427555093430282200f, -0.903989293123443340f, 0.427381747795341770f, - -0.904071259166775440f, - 0.427208386446796370f, -0.904153191969991670f, 0.427035009391019790f, - -0.904235091530079750f, - 0.426861616634386490f, -0.904316957844028320f, 0.426688208183271970f, - -0.904398790908827350f, - 0.426514784044051520f, -0.904480590721468250f, 0.426341344223101880f, - -0.904562357278943190f, - 0.426167888726799620f, -0.904644090578246240f, 0.425994417561522450f, - -0.904725790616371930f, - 0.425820930733648300f, -0.904807457390316540f, 0.425647428249555590f, - -0.904889090897077470f, - 0.425473910115623910f, -0.904970691133653250f, 0.425300376338232590f, - -0.905052258097043590f, - 0.425126826923762410f, -0.905133791784249580f, 0.424953261878594060f, - -0.905215292192273480f, - 0.424779681209108810f, -0.905296759318118820f, 0.424606084921689220f, - -0.905378193158789980f, - 0.424432473022717420f, -0.905459593711293250f, 0.424258845518577010f, - -0.905540960972635480f, - 0.424085202415651670f, -0.905622294939825160f, 0.423911543720325580f, - -0.905703595609872010f, - 0.423737869438983950f, -0.905784862979786440f, 0.423564179578011960f, - -0.905866097046580940f, - 0.423390474143796100f, -0.905947297807268460f, 0.423216753142722780f, - -0.906028465258863490f, - 0.423043016581179100f, -0.906109599398381980f, 0.422869264465553170f, - -0.906190700222840540f, - 0.422695496802232950f, -0.906271767729257660f, 0.422521713597607870f, - -0.906352801914652280f, - 0.422347914858067000f, -0.906433802776045460f, 0.422174100590000820f, - -0.906514770310458800f, - 0.422000270799799790f, -0.906595704514915330f, 0.421826425493854910f, - -0.906676605386439460f, - 0.421652564678558380f, -0.906757472922056550f, 0.421478688360302220f, - -0.906838307118793540f, - 0.421304796545479700f, -0.906919107973678030f, 0.421130889240484140f, - -0.906999875483739610f, - 0.420956966451709440f, -0.907080609646008450f, 0.420783028185550630f, - -0.907161310457516250f, - 0.420609074448402510f, -0.907241977915295930f, 0.420435105246661220f, - -0.907322612016381310f, - 0.420261120586723050f, -0.907403212757808000f, 0.420087120474984590f, - -0.907483780136612570f, - 0.419913104917843730f, -0.907564314149832520f, 0.419739073921698180f, - -0.907644814794507090f, - 0.419565027492946940f, -0.907725282067676330f, 0.419390965637989050f, - -0.907805715966381820f, - 0.419216888363223960f, -0.907886116487666150f, 0.419042795675052480f, - -0.907966483628573240f, - 0.418868687579875110f, -0.908046817386148340f, 0.418694564084093610f, - -0.908127117757437600f, - 0.418520425194109700f, -0.908207384739488700f, 0.418346270916326310f, - -0.908287618329350450f, - 0.418172101257146430f, -0.908367818524072780f, 0.417997916222973550f, - -0.908447985320707250f, - 0.417823715820212380f, -0.908528118716306120f, 0.417649500055267410f, - -0.908608218707923190f, - 0.417475268934544340f, -0.908688285292613360f, 0.417301022464449060f, - -0.908768318467432780f, - 0.417126760651387870f, -0.908848318229439120f, 0.416952483501768280f, - -0.908928284575690640f, - 0.416778191021997590f, -0.909008217503247450f, 0.416603883218484410f, - -0.909088117009170580f, - 0.416429560097637320f, -0.909167983090522270f, 0.416255221665865480f, - -0.909247815744366310f, - 0.416080867929579320f, -0.909327614967767260f, 0.415906498895188770f, - -0.909407380757791260f, - 0.415732114569105420f, -0.909487113111505430f, 0.415557714957740580f, - -0.909566812025978220f, - 0.415383300067506290f, -0.909646477498279540f, 0.415208869904815650f, - -0.909726109525480160f, - 0.415034424476081630f, -0.909805708104652220f, 0.414859963787718390f, - -0.909885273232869160f, - 0.414685487846140010f, -0.909964804907205660f, 0.414510996657761810f, - -0.910044303124737390f, - 0.414336490228999210f, -0.910123767882541570f, 0.414161968566268080f, - -0.910203199177696540f, - 0.413987431675985510f, -0.910282597007281760f, 0.413812879564568300f, - -0.910361961368377990f, - 0.413638312238434560f, -0.910441292258067140f, 0.413463729704002580f, - -0.910520589673432630f, - 0.413289131967690960f, -0.910599853611558930f, 0.413114519035919560f, - -0.910679084069531570f, - 0.412939890915108020f, -0.910758281044437570f, 0.412765247611677320f, - -0.910837444533365010f, - 0.412590589132048380f, -0.910916574533403240f, 0.412415915482642730f, - -0.910995671041643140f, - 0.412241226669883000f, -0.911074734055176250f, 0.412066522700191560f, - -0.911153763571095900f, - 0.411891803579992220f, -0.911232759586496190f, 0.411717069315708670f, - -0.911311722098472670f, - 0.411542319913765280f, -0.911390651104122320f, 0.411367555380587340f, - -0.911469546600543020f, - 0.411192775722600160f, -0.911548408584833990f, 0.411017980946230270f, - -0.911627237054095650f, - 0.410843171057903910f, -0.911706032005429880f, 0.410668346064048780f, - -0.911784793435939430f, - 0.410493505971092520f, -0.911863521342728520f, 0.410318650785463260f, - -0.911942215722902570f, - 0.410143780513590350f, -0.912020876573568230f, 0.409968895161902820f, - -0.912099503891833470f, - 0.409793994736831200f, -0.912178097674807060f, 0.409619079244805840f, - -0.912256657919599650f, - 0.409444148692257590f, -0.912335184623322750f, 0.409269203085618700f, - -0.912413677783089020f, - 0.409094242431320920f, -0.912492137396012650f, 0.408919266735797480f, - -0.912570563459208730f, - 0.408744276005481520f, -0.912648955969793900f, 0.408569270246806780f, - -0.912727314924885900f, - 0.408394249466208110f, -0.912805640321603500f, 0.408219213670120100f, - -0.912883932157067200f, - 0.408044162864978740f, -0.912962190428398100f, 0.407869097057219960f, - -0.913040415132719160f, - 0.407694016253280170f, -0.913118606267154130f, 0.407518920459597030f, - -0.913196763828828200f, - 0.407343809682607970f, -0.913274887814867760f, 0.407168683928751610f, - -0.913352978222400250f, - 0.406993543204466460f, -0.913431035048554720f, 0.406818387516192370f, - -0.913509058290461140f, - 0.406643216870369140f, -0.913587047945250810f, 0.406468031273437000f, - -0.913665004010056350f, - 0.406292830731837470f, -0.913742926482011390f, 0.406117615252011790f, - -0.913820815358251100f, - 0.405942384840402570f, -0.913898670635911680f, 0.405767139503452220f, - -0.913976492312130520f, - 0.405591879247603870f, -0.914054280384046460f, 0.405416604079301750f, - -0.914132034848799460f, - 0.405241314004989860f, -0.914209755703530690f, 0.405066009031113390f, - -0.914287442945382440f, - 0.404890689164117750f, -0.914365096571498450f, 0.404715354410448650f, - -0.914442716579023870f, - 0.404540004776553110f, -0.914520302965104450f, 0.404364640268877810f, - -0.914597855726887790f, - 0.404189260893870750f, -0.914675374861522390f, 0.404013866657980060f, - -0.914752860366158100f, - 0.403838457567654130f, -0.914830312237946090f, 0.403663033629342750f, - -0.914907730474038620f, - 0.403487594849495310f, -0.914985115071589310f, 0.403312141234562660f, - -0.915062466027752760f, - 0.403136672790995240f, -0.915139783339685260f, 0.402961189525244960f, - -0.915217067004543750f, - 0.402785691443763640f, -0.915294317019487050f, 0.402610178553003680f, - -0.915371533381674760f, - 0.402434650859418540f, -0.915448716088267830f, 0.402259108369461440f, - -0.915525865136428530f, - 0.402083551089587040f, -0.915602980523320230f, 0.401907979026249860f, - -0.915680062246107650f, - 0.401732392185905010f, -0.915757110301956720f, 0.401556790575008650f, - -0.915834124688034710f, - 0.401381174200016790f, -0.915911105401509880f, 0.401205543067386760f, - -0.915988052439551840f, - 0.401029897183575790f, -0.916064965799331610f, 0.400854236555041650f, - -0.916141845478021350f, - 0.400678561188243350f, -0.916218691472794110f, 0.400502871089639500f, - -0.916295503780824800f, - 0.400327166265690150f, -0.916372282399289140f, 0.400151446722855300f, - -0.916449027325364040f, - 0.399975712467595390f, -0.916525738556228100f, 0.399799963506372090f, - -0.916602416089060680f, - 0.399624199845646790f, -0.916679059921042700f, 0.399448421491882260f, - -0.916755670049355990f, - 0.399272628451540930f, -0.916832246471183890f, 0.399096820731086600f, - -0.916908789183710990f, - 0.398920998336983020f, -0.916985298184122890f, 0.398745161275694480f, - -0.917061773469606820f, - 0.398569309553686360f, -0.917138215037350710f, 0.398393443177423920f, - -0.917214622884544250f, - 0.398217562153373620f, -0.917290997008377910f, 0.398041666488001930f, - -0.917367337406043810f, - 0.397865756187775750f, -0.917443644074735220f, 0.397689831259163240f, - -0.917519917011646260f, - 0.397513891708632330f, -0.917596156213972950f, 0.397337937542652120f, - -0.917672361678911750f, - 0.397161968767691720f, -0.917748533403661250f, 0.396985985390220900f, - -0.917824671385420570f, - 0.396809987416710420f, -0.917900775621390390f, 0.396633974853630830f, - -0.917976846108772730f, - 0.396457947707453960f, -0.918052882844770380f, 0.396281905984651680f, - -0.918128885826587910f, - 0.396105849691696320f, -0.918204855051430900f, 0.395929778835061360f, - -0.918280790516506130f, - 0.395753693421220080f, -0.918356692219021720f, 0.395577593456646950f, - -0.918432560156186790f, - 0.395401478947816300f, -0.918508394325212250f, 0.395225349901203730f, - -0.918584194723309540f, - 0.395049206323284880f, -0.918659961347691900f, 0.394873048220535760f, - -0.918735694195573550f, - 0.394696875599433670f, -0.918811393264169940f, 0.394520688466455550f, - -0.918887058550697970f, - 0.394344486828079650f, -0.918962690052375630f, 0.394168270690784250f, - -0.919038287766421940f, - 0.393992040061048100f, -0.919113851690057770f, 0.393815794945351130f, - -0.919189381820504470f, - 0.393639535350172880f, -0.919264878154985250f, 0.393463261281994380f, - -0.919340340690724230f, - 0.393286972747296570f, -0.919415769424946960f, 0.393110669752560760f, - -0.919491164354880100f, - 0.392934352304269600f, -0.919566525477751530f, 0.392758020408905280f, - -0.919641852790790470f, - 0.392581674072951530f, -0.919717146291227360f, 0.392405313302891860f, - -0.919792405976293750f, - 0.392228938105210370f, -0.919867631843222950f, 0.392052548486392200f, - -0.919942823889248640f, - 0.391876144452922350f, -0.920017982111606570f, 0.391699726011287050f, - -0.920093106507533070f, - 0.391523293167972350f, -0.920168197074266450f, 0.391346845929465610f, - -0.920243253809045370f, - 0.391170384302253980f, -0.920318276709110480f, 0.390993908292825380f, - -0.920393265771703550f, - 0.390817417907668610f, -0.920468220994067110f, 0.390640913153272370f, - -0.920543142373445480f, - 0.390464394036126650f, -0.920618029907083860f, 0.390287860562721360f, - -0.920692883592229010f, - 0.390111312739546910f, -0.920767703426128790f, 0.389934750573094790f, - -0.920842489406032080f, - 0.389758174069856410f, -0.920917241529189520f, 0.389581583236324360f, - -0.920991959792852310f, - 0.389404978078991100f, -0.921066644194273530f, 0.389228358604349730f, - -0.921141294730707270f, - 0.389051724818894500f, -0.921215911399408730f, 0.388875076729119250f, - -0.921290494197634540f, - 0.388698414341519250f, -0.921365043122642340f, 0.388521737662589740f, - -0.921439558171691320f, - 0.388345046698826300f, -0.921514039342041900f, 0.388168341456725850f, - -0.921588486630955380f, - 0.387991621942784910f, -0.921662900035694730f, 0.387814888163501290f, - -0.921737279553523800f, - 0.387638140125372680f, -0.921811625181708120f, 0.387461377834897920f, - -0.921885936917513970f, - 0.387284601298575890f, -0.921960214758209110f, 0.387107810522905990f, - -0.922034458701062820f, - 0.386931005514388690f, -0.922108668743345070f, 0.386754186279524130f, - -0.922182844882327600f, - 0.386577352824813980f, -0.922256987115283030f, 0.386400505156759610f, - -0.922331095439485330f, - 0.386223643281862980f, -0.922405169852209880f, 0.386046767206627280f, - -0.922479210350733100f, - 0.385869876937555310f, -0.922553216932332830f, 0.385692972481151200f, - -0.922627189594287800f, - 0.385516053843919020f, -0.922701128333878520f, 0.385339121032363340f, - -0.922775033148386380f, - 0.385162174052989970f, -0.922848904035094120f, 0.384985212912304200f, - -0.922922740991285680f, - 0.384808237616812930f, -0.922996544014246250f, 0.384631248173022740f, - -0.923070313101262420f, - 0.384454244587440870f, -0.923144048249621820f, 0.384277226866575620f, - -0.923217749456613500f, - 0.384100195016935040f, -0.923291416719527640f, 0.383923149045028500f, - -0.923365050035655610f, - 0.383746088957365010f, -0.923438649402290370f, 0.383569014760454960f, - -0.923512214816725520f, - 0.383391926460808770f, -0.923585746276256560f, 0.383214824064937180f, - -0.923659243778179980f, - 0.383037707579352130f, -0.923732707319793180f, 0.382860577010565360f, - -0.923806136898395410f, - 0.382683432365089840f, -0.923879532511286740f, 0.382506273649438400f, - -0.923952894155768640f, - 0.382329100870124510f, -0.924026221829143850f, 0.382151914033662720f, - -0.924099515528716280f, - 0.381974713146567220f, -0.924172775251791200f, 0.381797498215353690f, - -0.924246000995674890f, - 0.381620269246537520f, -0.924319192757675160f, 0.381443026246634730f, - -0.924392350535101050f, - 0.381265769222162490f, -0.924465474325262600f, 0.381088498179637520f, - -0.924538564125471420f, - 0.380911213125578130f, -0.924611619933039970f, 0.380733914066502090f, - -0.924684641745282530f, - 0.380556601008928570f, -0.924757629559513910f, 0.380379273959376710f, - -0.924830583373050800f, - 0.380201932924366050f, -0.924903503183210910f, 0.380024577910417380f, - -0.924976388987313050f, - 0.379847208924051110f, -0.925049240782677580f, 0.379669825971789000f, - -0.925122058566625770f, - 0.379492429060152740f, -0.925194842336480420f, 0.379315018195664430f, - -0.925267592089565550f, - 0.379137593384847430f, -0.925340307823206200f, 0.378960154634224720f, - -0.925412989534729060f, - 0.378782701950320600f, -0.925485637221461490f, 0.378605235339659290f, - -0.925558250880732620f, - 0.378427754808765620f, -0.925630830509872720f, 0.378250260364165310f, - -0.925703376106213120f, - 0.378072752012383990f, -0.925775887667086740f, 0.377895229759948550f, - -0.925848365189827270f, - 0.377717693613385810f, -0.925920808671769960f, 0.377540143579222940f, - -0.925993218110251480f, - 0.377362579663988450f, -0.926065593502609310f, 0.377185001874210450f, - -0.926137934846182560f, - 0.377007410216418310f, -0.926210242138311270f, 0.376829804697141220f, - -0.926282515376337210f, - 0.376652185322909620f, -0.926354754557602860f, 0.376474552100253880f, - -0.926426959679452100f, - 0.376296905035704790f, -0.926499130739230510f, 0.376119244135794390f, - -0.926571267734284220f, - 0.375941569407054420f, -0.926643370661961230f, 0.375763880856017750f, - -0.926715439519610330f, - 0.375586178489217330f, -0.926787474304581750f, 0.375408462313186590f, - -0.926859475014227160f, - 0.375230732334460030f, -0.926931441645899130f, 0.375052988559571860f, - -0.927003374196951670f, - 0.374875230995057600f, -0.927075272664740100f, 0.374697459647452770f, - -0.927147137046620880f, - 0.374519674523293210f, -0.927218967339951790f, 0.374341875629116030f, - -0.927290763542091720f, - 0.374164062971457990f, -0.927362525650401110f, 0.373986236556857090f, - -0.927434253662241300f, - 0.373808396391851370f, -0.927505947574975180f, 0.373630542482979280f, - -0.927577607385966730f, - 0.373452674836780410f, -0.927649233092581180f, 0.373274793459794030f, - -0.927720824692185200f, - 0.373096898358560690f, -0.927792382182146320f, 0.372918989539620770f, - -0.927863905559833780f, - 0.372741067009515810f, -0.927935394822617890f, 0.372563130774787370f, - -0.928006849967869970f, - 0.372385180841977360f, -0.928078270992963140f, 0.372207217217628950f, - -0.928149657895271150f, - 0.372029239908284960f, -0.928221010672169440f, 0.371851248920489540f, - -0.928292329321034560f, - 0.371673244260786630f, -0.928363613839244370f, 0.371495225935720760f, - -0.928434864224177980f, - 0.371317193951837600f, -0.928506080473215480f, 0.371139148315682510f, - -0.928577262583738850f, - 0.370961089033802040f, -0.928648410553130520f, 0.370783016112742720f, - -0.928719524378774700f, - 0.370604929559051670f, -0.928790604058057020f, 0.370426829379276900f, - -0.928861649588363700f, - 0.370248715579966360f, -0.928932660967082820f, 0.370070588167669130f, - -0.929003638191603360f, - 0.369892447148934270f, -0.929074581259315750f, 0.369714292530311240f, - -0.929145490167611720f, - 0.369536124318350760f, -0.929216364913883930f, 0.369357942519603190f, - -0.929287205495526790f, - 0.369179747140620070f, -0.929358011909935500f, 0.369001538187952780f, - -0.929428784154506800f, - 0.368823315668153960f, -0.929499522226638560f, 0.368645079587776150f, - -0.929570226123729860f, - 0.368466829953372320f, -0.929640895843181330f, 0.368288566771496680f, - -0.929711531382394370f, - 0.368110290048703050f, -0.929782132738772190f, 0.367931999791546500f, - -0.929852699909718750f, - 0.367753696006582090f, -0.929923232892639560f, 0.367575378700365330f, - -0.929993731684941480f, - 0.367397047879452820f, -0.930064196284032360f, 0.367218703550400930f, - -0.930134626687321390f, - 0.367040345719767240f, -0.930205022892219070f, 0.366861974394109220f, - -0.930275384896137040f, - 0.366683589579984930f, -0.930345712696488470f, 0.366505191283953480f, - -0.930416006290687550f, - 0.366326779512573590f, -0.930486265676149780f, 0.366148354272405390f, - -0.930556490850291800f, - 0.365969915570008910f, -0.930626681810531650f, 0.365791463411944570f, - -0.930696838554288860f, - 0.365612997804773960f, -0.930766961078983710f, 0.365434518755058390f, - -0.930837049382038150f, - 0.365256026269360380f, -0.930907103460875020f, 0.365077520354242180f, - -0.930977123312918930f, - 0.364899001016267380f, -0.931047108935595170f, 0.364720468261999390f, - -0.931117060326330790f, - 0.364541922098002180f, -0.931186977482553750f, 0.364363362530840730f, - -0.931256860401693420f, - 0.364184789567079840f, -0.931326709081180430f, 0.364006203213285530f, - -0.931396523518446600f, - 0.363827603476023610f, -0.931466303710925090f, 0.363648990361860550f, - -0.931536049656050300f, - 0.363470363877363870f, -0.931605761351257830f, 0.363291724029100700f, - -0.931675438793984620f, - 0.363113070823639530f, -0.931745081981668720f, 0.362934404267548750f, - -0.931814690911749620f, - 0.362755724367397230f, -0.931884265581668150f, 0.362577031129754870f, - -0.931953805988865900f, - 0.362398324561191310f, -0.932023312130786490f, 0.362219604668277570f, - -0.932092784004874050f, - 0.362040871457584350f, -0.932162221608574320f, 0.361862124935682980f, - -0.932231624939334540f, - 0.361683365109145950f, -0.932300993994602640f, 0.361504591984545260f, - -0.932370328771828460f, - 0.361325805568454340f, -0.932439629268462360f, 0.361147005867446190f, - -0.932508895481956700f, - 0.360968192888095290f, -0.932578127409764420f, 0.360789366636975690f, - -0.932647325049340340f, - 0.360610527120662270f, -0.932716488398140250f, 0.360431674345730810f, - -0.932785617453620990f, - 0.360252808318756830f, -0.932854712213241230f, 0.360073929046317080f, - -0.932923772674460140f, - 0.359895036534988280f, -0.932992798834738850f, 0.359716130791347570f, - -0.933061790691539380f, - 0.359537211821973180f, -0.933130748242325110f, 0.359358279633443080f, - -0.933199671484560730f, - 0.359179334232336560f, -0.933268560415712050f, 0.359000375625232630f, - -0.933337415033246080f, - 0.358821403818710920f, -0.933406235334631520f, 0.358642418819352100f, - -0.933475021317337950f, - 0.358463420633736540f, -0.933543772978836170f, 0.358284409268445900f, - -0.933612490316598540f, - 0.358105384730061760f, -0.933681173328098300f, 0.357926347025166070f, - -0.933749822010810580f, - 0.357747296160342010f, -0.933818436362210960f, 0.357568232142172260f, - -0.933887016379776890f, - 0.357389154977241000f, -0.933955562060986730f, 0.357210064672131900f, - -0.934024073403320500f, - 0.357030961233430030f, -0.934092550404258870f, 0.356851844667720410f, - -0.934160993061284420f, - 0.356672714981588260f, -0.934229401371880820f, 0.356493572181620200f, - -0.934297775333532530f, - 0.356314416274402360f, -0.934366114943725900f, 0.356135247266522180f, - -0.934434420199948050f, - 0.355956065164567010f, -0.934502691099687870f, 0.355776869975124640f, - -0.934570927640435030f, - 0.355597661704783960f, -0.934639129819680780f, 0.355418440360133590f, - -0.934707297634917440f, - 0.355239205947763370f, -0.934775431083638700f, 0.355059958474263030f, - -0.934843530163339430f, - 0.354880697946222790f, -0.934911594871516090f, 0.354701424370233940f, - -0.934979625205665800f, - 0.354522137752887430f, -0.935047621163287430f, 0.354342838100775600f, - -0.935115582741880890f, - 0.354163525420490510f, -0.935183509938947500f, 0.353984199718624830f, - -0.935251402751989810f, - 0.353804861001772160f, -0.935319261178511500f, 0.353625509276525970f, - -0.935387085216017770f, - 0.353446144549480870f, -0.935454874862014620f, 0.353266766827231180f, - -0.935522630114009930f, - 0.353087376116372530f, -0.935590350969512370f, 0.352907972423500360f, - -0.935658037426032040f, - 0.352728555755210730f, -0.935725689481080370f, 0.352549126118100580f, - -0.935793307132169900f, - 0.352369683518766630f, -0.935860890376814640f, 0.352190227963806890f, - -0.935928439212529660f, - 0.352010759459819240f, -0.935995953636831300f, 0.351831278013402030f, - -0.936063433647237540f, - 0.351651783631154680f, -0.936130879241266920f, 0.351472276319676260f, - -0.936198290416440090f, - 0.351292756085567150f, -0.936265667170278260f, 0.351113222935427630f, - -0.936333009500304180f, - 0.350933676875858360f, -0.936400317404042060f, 0.350754117913461170f, - -0.936467590879016880f, - 0.350574546054837570f, -0.936534829922755500f, 0.350394961306590200f, - -0.936602034532785570f, - 0.350215363675321740f, -0.936669204706636060f, 0.350035753167635300f, - -0.936736340441837620f, - 0.349856129790135030f, -0.936803441735921560f, 0.349676493549424760f, - -0.936870508586420960f, - 0.349496844452109600f, -0.936937540990869900f, 0.349317182504794320f, - -0.937004538946803690f, - 0.349137507714085030f, -0.937071502451759190f, 0.348957820086587600f, - -0.937138431503274140f, - 0.348778119628908420f, -0.937205326098887960f, 0.348598406347655040f, - -0.937272186236140950f, - 0.348418680249434510f, -0.937339011912574960f, 0.348238941340855310f, - -0.937405803125732850f, - 0.348059189628525780f, -0.937472559873159140f, 0.347879425119054510f, - -0.937539282152399230f, - 0.347699647819051490f, -0.937605969960999990f, 0.347519857735126110f, - -0.937672623296509470f, - 0.347340054873889190f, -0.937739242156476970f, 0.347160239241951330f, - -0.937805826538453010f, - 0.346980410845923680f, -0.937872376439989890f, 0.346800569692418400f, - -0.937938891858640210f, - 0.346620715788047320f, -0.938005372791958840f, 0.346440849139423580f, - -0.938071819237501160f, - 0.346260969753160170f, -0.938138231192824360f, 0.346081077635870480f, - -0.938204608655486490f, - 0.345901172794169100f, -0.938270951623047080f, 0.345721255234670120f, - -0.938337260093066950f, - 0.345541324963989150f, -0.938403534063108060f, 0.345361381988741170f, - -0.938469773530733800f, - 0.345181426315542610f, -0.938535978493508560f, 0.345001457951009780f, - -0.938602148948998290f, - 0.344821476901759290f, -0.938668284894770170f, 0.344641483174409070f, - -0.938734386328392460f, - 0.344461476775576480f, -0.938800453247434770f, 0.344281457711880230f, - -0.938866485649468060f, - 0.344101425989938980f, -0.938932483532064490f, 0.343921381616371700f, - -0.938998446892797540f, - 0.343741324597798600f, -0.939064375729241950f, 0.343561254940839330f, - -0.939130270038973650f, - 0.343381172652115100f, -0.939196129819569900f, 0.343201077738246710f, - -0.939261955068609100f, - 0.343020970205855540f, -0.939327745783671400f, 0.342840850061564060f, - -0.939393501962337510f, - 0.342660717311994380f, -0.939459223602189920f, 0.342480571963769850f, - -0.939524910700812120f, - 0.342300414023513690f, -0.939590563255789160f, 0.342120243497849590f, - -0.939656181264707070f, - 0.341940060393402300f, -0.939721764725153340f, 0.341759864716796310f, - -0.939787313634716570f, - 0.341579656474657210f, -0.939852827990986680f, 0.341399435673610360f, - -0.939918307791555050f, - 0.341219202320282410f, -0.939983753034013940f, 0.341038956421299830f, - -0.940049163715957370f, - 0.340858697983289440f, -0.940114539834980280f, 0.340678427012879310f, - -0.940179881388678810f, - 0.340498143516697100f, -0.940245188374650880f, 0.340317847501371730f, - -0.940310460790495070f, - 0.340137538973531880f, -0.940375698633811540f, 0.339957217939806880f, - -0.940440901902201750f, - 0.339776884406826960f, -0.940506070593268300f, 0.339596538381222060f, - -0.940571204704615190f, - 0.339416179869623410f, -0.940636304233847590f, 0.339235808878662120f, - -0.940701369178571940f, - 0.339055425414969640f, -0.940766399536396070f, 0.338875029485178560f, - -0.940831395304928870f, - 0.338694621095921190f, -0.940896356481780830f, 0.338514200253831000f, - -0.940961283064563280f, - 0.338333766965541290f, -0.941026175050889260f, 0.338153321237685990f, - -0.941091032438372780f, - 0.337972863076899830f, -0.941155855224629190f, 0.337792392489817460f, - -0.941220643407275180f, - 0.337611909483074680f, -0.941285396983928660f, 0.337431414063306790f, - -0.941350115952208970f, - 0.337250906237150650f, -0.941414800309736230f, 0.337070386011242730f, - -0.941479450054132580f, - 0.336889853392220050f, -0.941544065183020810f, 0.336709308386720700f, - -0.941608645694025140f, - 0.336528751001382350f, -0.941673191584771360f, 0.336348181242844100f, - -0.941737702852886160f, - 0.336167599117744690f, -0.941802179495997650f, 0.335987004632723350f, - -0.941866621511735280f, - 0.335806397794420560f, -0.941931028897729510f, 0.335625778609476230f, - -0.941995401651612550f, - 0.335445147084531660f, -0.942059739771017310f, 0.335264503226227970f, - -0.942124043253578460f, - 0.335083847041206580f, -0.942188312096931770f, 0.334903178536110290f, - -0.942252546298714020f, - 0.334722497717581220f, -0.942316745856563780f, 0.334541804592262960f, - -0.942380910768120470f, - 0.334361099166798900f, -0.942445041031024890f, 0.334180381447832740f, - -0.942509136642919240f, - 0.333999651442009490f, -0.942573197601446870f, 0.333818909155973620f, - -0.942637223904252530f, - 0.333638154596370920f, -0.942701215548981900f, 0.333457387769846790f, - -0.942765172533282510f, - 0.333276608683047980f, -0.942829094854802710f, 0.333095817342620890f, - -0.942892982511192130f, - 0.332915013755212650f, -0.942956835500102120f, 0.332734197927471160f, - -0.943020653819184650f, - 0.332553369866044220f, -0.943084437466093490f, 0.332372529577580680f, - -0.943148186438483420f, - 0.332191677068729320f, -0.943211900734010620f, 0.332010812346139380f, - -0.943275580350332540f, - 0.331829935416461220f, -0.943339225285107720f, 0.331649046286344620f, - -0.943402835535996240f, - 0.331468144962440920f, -0.943466411100659320f, 0.331287231451400990f, - -0.943529951976759370f, - 0.331106305759876430f, -0.943593458161960390f, 0.330925367894519650f, - -0.943656929653927110f, - 0.330744417861982890f, -0.943720366450326200f, 0.330563455668919590f, - -0.943783768548825060f, - 0.330382481321982950f, -0.943847135947092690f, 0.330201494827826620f, - -0.943910468642799150f, - 0.330020496193105530f, -0.943973766633615980f, 0.329839485424473940f, - -0.944037029917215830f, - 0.329658462528587550f, -0.944100258491272660f, 0.329477427512101680f, - -0.944163452353461770f, - 0.329296380381672800f, -0.944226611501459810f, 0.329115321143957360f, - -0.944289735932944410f, - 0.328934249805612200f, -0.944352825645594750f, 0.328753166373295100f, - -0.944415880637091250f, - 0.328572070853663690f, -0.944478900905115550f, 0.328390963253376630f, - -0.944541886447350380f, - 0.328209843579092660f, -0.944604837261480260f, 0.328028711837470730f, - -0.944667753345190490f, - 0.327847568035170960f, -0.944730634696167800f, 0.327666412178853060f, - -0.944793481312100280f, - 0.327485244275178060f, -0.944856293190677210f, 0.327304064330806830f, - -0.944919070329589220f, - 0.327122872352400510f, -0.944981812726528150f, 0.326941668346621530f, - -0.945044520379187070f, - 0.326760452320131790f, -0.945107193285260610f, 0.326579224279594460f, - -0.945169831442444150f, - 0.326397984231672660f, -0.945232434848434890f, 0.326216732183029770f, - -0.945295003500931100f, - 0.326035468140330350f, -0.945357537397632290f, 0.325854192110238580f, - -0.945420036536239070f, - 0.325672904099419900f, -0.945482500914453740f, 0.325491604114539260f, - -0.945544930529979680f, - 0.325310292162262980f, -0.945607325380521280f, 0.325128968249257190f, - -0.945669685463784710f, - 0.324947632382188430f, -0.945732010777477150f, 0.324766284567724330f, - -0.945794301319306860f, - 0.324584924812532150f, -0.945856557086983910f, 0.324403553123280290f, - -0.945918778078219110f, - 0.324222169506637130f, -0.945980964290724760f, 0.324040773969271450f, - -0.946043115722214560f, - 0.323859366517852960f, -0.946105232370403340f, 0.323677947159051180f, - -0.946167314233007370f, - 0.323496515899536760f, -0.946229361307743820f, 0.323315072745980150f, - -0.946291373592331510f, - 0.323133617705052330f, -0.946353351084490590f, 0.322952150783425370f, - -0.946415293781942110f, - 0.322770671987770710f, -0.946477201682408680f, 0.322589181324761390f, - -0.946539074783614100f, - 0.322407678801070020f, -0.946600913083283530f, 0.322226164423369650f, - -0.946662716579143360f, - 0.322044638198334620f, -0.946724485268921170f, 0.321863100132638580f, - -0.946786219150346000f, - 0.321681550232956640f, -0.946847918221148000f, 0.321499988505963450f, - -0.946909582479058760f, - 0.321318414958334910f, -0.946971211921810880f, 0.321136829596746780f, - -0.947032806547138620f, - 0.320955232427875210f, -0.947094366352777220f, 0.320773623458397440f, - -0.947155891336463270f, - 0.320592002694990330f, -0.947217381495934820f, 0.320410370144331880f, - -0.947278836828930880f, - 0.320228725813100020f, -0.947340257333191940f, 0.320047069707973140f, - -0.947401643006459900f, - 0.319865401835630610f, -0.947462993846477700f, 0.319683722202751370f, - -0.947524309850989570f, - 0.319502030816015750f, -0.947585591017741090f, 0.319320327682103720f, - -0.947646837344479190f, - 0.319138612807695900f, -0.947708048828952100f, 0.318956886199473770f, - -0.947769225468909180f, - 0.318775147864118480f, -0.947830367262101010f, 0.318593397808312470f, - -0.947891474206279730f, - 0.318411636038737960f, -0.947952546299198560f, 0.318229862562077580f, - -0.948013583538612200f, - 0.318048077385015060f, -0.948074585922276230f, 0.317866280514233660f, - -0.948135553447947980f, - 0.317684471956418020f, -0.948196486113385580f, 0.317502651718252260f, - -0.948257383916349060f, - 0.317320819806421790f, -0.948318246854599090f, 0.317138976227611890f, - -0.948379074925898120f, - 0.316957120988508150f, -0.948439868128009620f, 0.316775254095797380f, - -0.948500626458698260f, - 0.316593375556165850f, -0.948561349915730270f, 0.316411485376301090f, - -0.948622038496872990f, - 0.316229583562890490f, -0.948682692199895090f, 0.316047670122621860f, - -0.948743311022566480f, - 0.315865745062184070f, -0.948803894962658380f, 0.315683808388265600f, - -0.948864444017943340f, - 0.315501860107556040f, -0.948924958186195160f, 0.315319900226745050f, - -0.948985437465188710f, - 0.315137928752522440f, -0.949045881852700560f, 0.314955945691579250f, - -0.949106291346508260f, - 0.314773951050606070f, -0.949166665944390700f, 0.314591944836294710f, - -0.949227005644128210f, - 0.314409927055336820f, -0.949287310443502010f, 0.314227897714424500f, - -0.949347580340295210f, - 0.314045856820250820f, -0.949407815332291460f, 0.313863804379508500f, - -0.949468015417276550f, - 0.313681740398891570f, -0.949528180593036670f, 0.313499664885093450f, - -0.949588310857359950f, - 0.313317577844809070f, -0.949648406208035480f, 0.313135479284732950f, - -0.949708466642853800f, - 0.312953369211560200f, -0.949768492159606680f, 0.312771247631986880f, - -0.949828482756087000f, - 0.312589114552708660f, -0.949888438430089300f, 0.312406969980422500f, - -0.949948359179409010f, - 0.312224813921825050f, -0.950008245001843000f, 0.312042646383613510f, - -0.950068095895189590f, - 0.311860467372486130f, -0.950127911857248100f, 0.311678276895140550f, - -0.950187692885819280f, - 0.311496074958275970f, -0.950247438978705230f, 0.311313861568591090f, - -0.950307150133709140f, - 0.311131636732785270f, -0.950366826348635780f, 0.310949400457558760f, - -0.950426467621290900f, - 0.310767152749611470f, -0.950486073949481700f, 0.310584893615644560f, - -0.950545645331016600f, - 0.310402623062358880f, -0.950605181763705230f, 0.310220341096455910f, - -0.950664683245358910f, - 0.310038047724638000f, -0.950724149773789610f, 0.309855742953607130f, - -0.950783581346811070f, - 0.309673426790066490f, -0.950842977962238160f, 0.309491099240719050f, - -0.950902339617887060f, - 0.309308760312268780f, -0.950961666311575080f, 0.309126410011419550f, - -0.951020958041121080f, - 0.308944048344875710f, -0.951080214804345010f, 0.308761675319342570f, - -0.951139436599068190f, - 0.308579290941525030f, -0.951198623423113230f, 0.308396895218129240f, - -0.951257775274304000f, - 0.308214488155861220f, -0.951316892150465550f, 0.308032069761427330f, - -0.951375974049424420f, - 0.307849640041534980f, -0.951435020969008340f, 0.307667199002891190f, - -0.951494032907046370f, - 0.307484746652204160f, -0.951553009861368590f, 0.307302282996181950f, - -0.951611951829806730f, - 0.307119808041533100f, -0.951670858810193860f, 0.306937321794967020f, - -0.951729730800363720f, - 0.306754824263192780f, -0.951788567798152130f, 0.306572315452920800f, - -0.951847369801395620f, - 0.306389795370861080f, -0.951906136807932230f, 0.306207264023724280f, - -0.951964868815601380f, - 0.306024721418221900f, -0.952023565822243570f, 0.305842167561065080f, - -0.952082227825700620f, - 0.305659602458966230f, -0.952140854823815830f, 0.305477026118637360f, - -0.952199446814433580f, - 0.305294438546791720f, -0.952258003795399600f, 0.305111839750142220f, - -0.952316525764560830f, - 0.304929229735402430f, -0.952375012719765880f, 0.304746608509286640f, - -0.952433464658864030f, - 0.304563976078509050f, -0.952491881579706320f, 0.304381332449784940f, - -0.952550263480144930f, - 0.304198677629829270f, -0.952608610358033240f, 0.304016011625357570f, - -0.952666922211226170f, - 0.303833334443086470f, -0.952725199037579570f, 0.303650646089731910f, - -0.952783440834950920f, - 0.303467946572011370f, -0.952841647601198720f, 0.303285235896641910f, - -0.952899819334182880f, - 0.303102514070341060f, -0.952957956031764700f, 0.302919781099827420f, - -0.953016057691806530f, - 0.302737036991819140f, -0.953074124312172200f, 0.302554281753035670f, - -0.953132155890726750f, - 0.302371515390196130f, -0.953190152425336560f, 0.302188737910020040f, - -0.953248113913869320f, - 0.302005949319228200f, -0.953306040354193750f, 0.301823149624540650f, - -0.953363931744180330f, - 0.301640338832678880f, -0.953421788081700310f, 0.301457516950363940f, - -0.953479609364626610f, - 0.301274683984318000f, -0.953537395590833280f, 0.301091839941263210f, - -0.953595146758195680f, - 0.300908984827921890f, -0.953652862864590500f, 0.300726118651017620f, - -0.953710543907895560f, - 0.300543241417273400f, -0.953768189885990330f, 0.300360353133413580f, - -0.953825800796755050f, - 0.300177453806162120f, -0.953883376638071770f, 0.299994543442243580f, - -0.953940917407823500f, - 0.299811622048383460f, -0.953998423103894490f, 0.299628689631306790f, - -0.954055893724170660f, - 0.299445746197739950f, -0.954113329266538800f, 0.299262791754409010f, - -0.954170729728887280f, - 0.299079826308040480f, -0.954228095109105670f, 0.298896849865361910f, - -0.954285425405084650f, - 0.298713862433100390f, -0.954342720614716480f, 0.298530864017984230f, - -0.954399980735894490f, - 0.298347854626741570f, -0.954457205766513490f, 0.298164834266100910f, - -0.954514395704469500f, - 0.297981802942791920f, -0.954571550547659630f, 0.297798760663543550f, - -0.954628670293982680f, - 0.297615707435086310f, -0.954685754941338340f, 0.297432643264150030f, - -0.954742804487627940f, - 0.297249568157465890f, -0.954799818930753720f, 0.297066482121764840f, - -0.954856798268619580f, - 0.296883385163778270f, -0.954913742499130520f, 0.296700277290238460f, - -0.954970651620192790f, - 0.296517158507877410f, -0.955027525629714160f, 0.296334028823428240f, - -0.955084364525603410f, - 0.296150888243623960f, -0.955141168305770670f, 0.295967736775197890f, - -0.955197936968127710f, - 0.295784574424884370f, -0.955254670510586990f, 0.295601401199417360f, - -0.955311368931062720f, - 0.295418217105532070f, -0.955368032227470240f, 0.295235022149963390f, - -0.955424660397726330f, - 0.295051816339446720f, -0.955481253439748770f, 0.294868599680718380f, - -0.955537811351456770f, - 0.294685372180514330f, -0.955594334130771110f, 0.294502133845571720f, - -0.955650821775613220f, - 0.294318884682627570f, -0.955707274283906560f, 0.294135624698419080f, - -0.955763691653575440f, - 0.293952353899684770f, -0.955820073882545420f, 0.293769072293162400f, - -0.955876420968743590f, - 0.293585779885591310f, -0.955932732910098170f, 0.293402476683710060f, - -0.955989009704538930f, - 0.293219162694258680f, -0.956045251349996410f, 0.293035837923976920f, - -0.956101457844403040f, - 0.292852502379604810f, -0.956157629185692140f, 0.292669156067883570f, - -0.956213765371798470f, - 0.292485798995553830f, -0.956269866400658140f, 0.292302431169357610f, - -0.956325932270208230f, - 0.292119052596036540f, -0.956381962978387620f, 0.291935663282332780f, - -0.956437958523136180f, - 0.291752263234989370f, -0.956493918902394990f, 0.291568852460749040f, - -0.956549844114106820f, - 0.291385430966355720f, -0.956605734156215080f, 0.291201998758553020f, - -0.956661589026664980f, - 0.291018555844085090f, -0.956717408723403050f, 0.290835102229696940f, - -0.956773193244376930f, - 0.290651637922133220f, -0.956828942587535370f, 0.290468162928139870f, - -0.956884656750828900f, - 0.290284677254462330f, -0.956940335732208940f, 0.290101180907847140f, - -0.956995979529628230f, - 0.289917673895040860f, -0.957051588141040970f, 0.289734156222790250f, - -0.957107161564402790f, - 0.289550627897843140f, -0.957162699797670100f, 0.289367088926946960f, - -0.957218202838801210f, - 0.289183539316850310f, -0.957273670685755200f, 0.288999979074301530f, - -0.957329103336492790f, - 0.288816408206049480f, -0.957384500788975860f, 0.288632826718843940f, - -0.957439863041167570f, - 0.288449234619434170f, -0.957495190091032570f, 0.288265631914570830f, - -0.957550481936536470f, - 0.288082018611004300f, -0.957605738575646240f, 0.287898394715485170f, - -0.957660960006330610f, - 0.287714760234765280f, -0.957716146226558870f, 0.287531115175595930f, - -0.957771297234302320f, - 0.287347459544729570f, -0.957826413027532910f, 0.287163793348918560f, - -0.957881493604224250f, - 0.286980116594915570f, -0.957936538962351420f, 0.286796429289474190f, - -0.957991549099890370f, - 0.286612731439347790f, -0.958046524014818600f, 0.286429023051290750f, - -0.958101463705114620f, - 0.286245304132057120f, -0.958156368168758820f, 0.286061574688402100f, - -0.958211237403732260f, - 0.285877834727080730f, -0.958266071408017670f, 0.285694084254848320f, - -0.958320870179598880f, - 0.285510323278461380f, -0.958375633716461170f, 0.285326551804675810f, - -0.958430362016591040f, - 0.285142769840248720f, -0.958485055077976100f, 0.284958977391937150f, - -0.958539712898605730f, - 0.284775174466498300f, -0.958594335476470220f, 0.284591361070690550f, - -0.958648922809561040f, - 0.284407537211271820f, -0.958703474895871600f, 0.284223702895001100f, - -0.958757991733395710f, - 0.284039858128637360f, -0.958812473320129200f, 0.283856002918939750f, - -0.958866919654069010f, - 0.283672137272668550f, -0.958921330733213060f, 0.283488261196583550f, - -0.958975706555561080f, - 0.283304374697445790f, -0.959030047119113550f, 0.283120477782015990f, - -0.959084352421872730f, - 0.282936570457055390f, -0.959138622461841890f, 0.282752652729326040f, - -0.959192857237025740f, - 0.282568724605589740f, -0.959247056745430090f, 0.282384786092609420f, - -0.959301220985062210f, - 0.282200837197147500f, -0.959355349953930790f, 0.282016877925967690f, - -0.959409443650045550f, - 0.281832908285833460f, -0.959463502071417510f, 0.281648928283508680f, - -0.959517525216059260f, - 0.281464937925758050f, -0.959571513081984520f, 0.281280937219346110f, - -0.959625465667208300f, - 0.281096926171038320f, -0.959679382969746750f, 0.280912904787600120f, - -0.959733264987617680f, - 0.280728873075797190f, -0.959787111718839900f, 0.280544831042396360f, - -0.959840923161433660f, - 0.280360778694163810f, -0.959894699313420530f, 0.280176716037867040f, - -0.959948440172823210f, - 0.279992643080273380f, -0.960002145737665850f, 0.279808559828150390f, - -0.960055816005973890f, - 0.279624466288266700f, -0.960109450975773940f, 0.279440362467390510f, - -0.960163050645094000f, - 0.279256248372291240f, -0.960216615011963430f, 0.279072124009737970f, - -0.960270144074412800f, - 0.278887989386500280f, -0.960323637830473920f, 0.278703844509348600f, - -0.960377096278180130f, - 0.278519689385053060f, -0.960430519415565790f, 0.278335524020384970f, - -0.960483907240666790f, - 0.278151348422115090f, -0.960537259751520050f, 0.277967162597015430f, - -0.960590576946164120f, - 0.277782966551857800f, -0.960643858822638470f, 0.277598760293414290f, - -0.960697105378984450f, - 0.277414543828458200f, -0.960750316613243950f, 0.277230317163762120f, - -0.960803492523460760f, - 0.277046080306099950f, -0.960856633107679660f, 0.276861833262245390f, - -0.960909738363946770f, - 0.276677576038972420f, -0.960962808290309780f, 0.276493308643056100f, - -0.961015842884817230f, - 0.276309031081271030f, -0.961068842145519350f, 0.276124743360392890f, - -0.961121806070467380f, - 0.275940445487197320f, -0.961174734657714080f, 0.275756137468460120f, - -0.961227627905313460f, - 0.275571819310958250f, -0.961280485811320640f, 0.275387491021468140f, - -0.961333308373792270f, - 0.275203152606767370f, -0.961386095590786250f, 0.275018804073633380f, - -0.961438847460361570f, - 0.274834445428843940f, -0.961491563980579000f, 0.274650076679177790f, - -0.961544245149499990f, - 0.274465697831413220f, -0.961596890965187860f, 0.274281308892329710f, - -0.961649501425706820f, - 0.274096909868706330f, -0.961702076529122540f, 0.273912500767323320f, - -0.961754616273502010f, - 0.273728081594960650f, -0.961807120656913540f, 0.273543652358398730f, - -0.961859589677426570f, - 0.273359213064418790f, -0.961912023333112100f, 0.273174763719801870f, - -0.961964421622042320f, - 0.272990304331329980f, -0.962016784542290560f, 0.272805834905784920f, - -0.962069112091931580f, - 0.272621355449948980f, -0.962121404269041580f, 0.272436865970605350f, - -0.962173661071697770f, - 0.272252366474536660f, -0.962225882497979020f, 0.272067856968526980f, - -0.962278068545965090f, - 0.271883337459359890f, -0.962330219213737400f, 0.271698807953819510f, - -0.962382334499378380f, - 0.271514268458690810f, -0.962434414400971990f, 0.271329718980758420f, - -0.962486458916603450f, - 0.271145159526808070f, -0.962538468044359160f, 0.270960590103625330f, - -0.962590441782326780f, - 0.270776010717996010f, -0.962642380128595710f, 0.270591421376707050f, - -0.962694283081255930f, - 0.270406822086544820f, -0.962746150638399410f, 0.270222212854296930f, - -0.962797982798119010f, - 0.270037593686750510f, -0.962849779558509030f, 0.269852964590693910f, - -0.962901540917665000f, - 0.269668325572915200f, -0.962953266873683880f, 0.269483676640202840f, - -0.963004957424663850f, - 0.269299017799346230f, -0.963056612568704340f, 0.269114349057134330f, - -0.963108232303906190f, - 0.268929670420357310f, -0.963159816628371360f, 0.268744981895805090f, - -0.963211365540203480f, - 0.268560283490267890f, -0.963262879037507070f, 0.268375575210537010f, - -0.963314357118388090f, - 0.268190857063403180f, -0.963365799780954050f, 0.268006129055658350f, - -0.963417207023313350f, - 0.267821391194094320f, -0.963468578843575950f, 0.267636643485503090f, - -0.963519915239853140f, - 0.267451885936677740f, -0.963571216210257210f, 0.267267118554410930f, - -0.963622481752902220f, - 0.267082341345496350f, -0.963673711865903230f, 0.266897554316727510f, - -0.963724906547376410f, - 0.266712757474898420f, -0.963776065795439840f, 0.266527950826803810f, - -0.963827189608212340f, - 0.266343134379238180f, -0.963878277983814200f, 0.266158308138997050f, - -0.963929330920367140f, - 0.265973472112875530f, -0.963980348415994110f, 0.265788626307669970f, - -0.964031330468819280f, - 0.265603770730176440f, -0.964082277076968140f, 0.265418905387191260f, - -0.964133188238567640f, - 0.265234030285511900f, -0.964184063951745720f, 0.265049145431935200f, - -0.964234904214632200f, - 0.264864250833259320f, -0.964285709025357370f, 0.264679346496282050f, - -0.964336478382053720f, - 0.264494432427801630f, -0.964387212282854290f, 0.264309508634617220f, - -0.964437910725893910f, - 0.264124575123527490f, -0.964488573709308410f, 0.263939631901332410f, - -0.964539201231235150f, - 0.263754678974831510f, -0.964589793289812650f, 0.263569716350824880f, - -0.964640349883180930f, - 0.263384744036113390f, -0.964690871009480920f, 0.263199762037497560f, - -0.964741356666855340f, - 0.263014770361779060f, -0.964791806853447900f, 0.262829769015759330f, - -0.964842221567403510f, - 0.262644758006240100f, -0.964892600806868890f, 0.262459737340024090f, - -0.964942944569991410f, - 0.262274707023913590f, -0.964993252854920320f, 0.262089667064712100f, - -0.965043525659805890f, - 0.261904617469222560f, -0.965093762982799590f, 0.261719558244249080f, - -0.965143964822054450f, - 0.261534489396595630f, -0.965194131175724720f, 0.261349410933066350f, - -0.965244262041965780f, - 0.261164322860466590f, -0.965294357418934660f, 0.260979225185601020f, - -0.965344417304789370f, - 0.260794117915275570f, -0.965394441697689400f, 0.260609001056295920f, - -0.965444430595795430f, - 0.260423874615468010f, -0.965494383997269500f, 0.260238738599598950f, - -0.965544301900275070f, - 0.260053593015495130f, -0.965594184302976830f, 0.259868437869964330f, - -0.965644031203540590f, - 0.259683273169813930f, -0.965693842600133690f, 0.259498098921851660f, - -0.965743618490924830f, - 0.259312915132886350f, -0.965793358874083570f, 0.259127721809726150f, - -0.965843063747781510f, - 0.258942518959180580f, -0.965892733110190860f, 0.258757306588058840f, - -0.965942366959485540f, - 0.258572084703170390f, -0.965991965293840570f, 0.258386853311325710f, - -0.966041528111432400f, - 0.258201612419334870f, -0.966091055410438830f, 0.258016362034009070f, - -0.966140547189038750f, - 0.257831102162158930f, -0.966190003445412620f, 0.257645832810596440f, - -0.966239424177741890f, - 0.257460553986133210f, -0.966288809384209580f, 0.257275265695581120f, - -0.966338159063000130f, - 0.257089967945753230f, -0.966387473212298790f, 0.256904660743461850f, - -0.966436751830292650f, - 0.256719344095520720f, -0.966485994915169840f, 0.256534018008743200f, - -0.966535202465119700f, - 0.256348682489942910f, -0.966584374478333120f, 0.256163337545934570f, - -0.966633510953002100f, - 0.255977983183532380f, -0.966682611887320190f, 0.255792619409551670f, - -0.966731677279481840f, - 0.255607246230807550f, -0.966780707127683270f, 0.255421863654115460f, - -0.966829701430121810f, - 0.255236471686291820f, -0.966878660184995910f, 0.255051070334152530f, - -0.966927583390505660f, - 0.254865659604514630f, -0.966976471044852070f, 0.254680239504194990f, - -0.967025323146237900f, - 0.254494810040010790f, -0.967074139692867040f, 0.254309371218780110f, - -0.967122920682944360f, - 0.254123923047320620f, -0.967171666114676640f, 0.253938465532451140f, - -0.967220375986271310f, - 0.253752998680989940f, -0.967269050295937790f, 0.253567522499756610f, - -0.967317689041886310f, - 0.253382036995570270f, -0.967366292222328510f, 0.253196542175250560f, - -0.967414859835477480f, - 0.253011038045617980f, -0.967463391879547440f, 0.252825524613492610f, - -0.967511888352754150f, - 0.252640001885695580f, -0.967560349253314360f, 0.252454469869047900f, - -0.967608774579446380f, - 0.252268928570370810f, -0.967657164329369880f, 0.252083377996486560f, - -0.967705518501305480f, - 0.251897818154216910f, -0.967753837093475510f, 0.251712249050384750f, - -0.967802120104103270f, - 0.251526670691812780f, -0.967850367531413620f, 0.251341083085323880f, - -0.967898579373632660f, - 0.251155486237742030f, -0.967946755628987800f, 0.250969880155890720f, - -0.967994896295707670f, - 0.250784264846594550f, -0.968043001372022260f, 0.250598640316677830f, - -0.968091070856162970f, - 0.250413006572965280f, -0.968139104746362330f, 0.250227363622282540f, - -0.968187103040854420f, - 0.250041711471454650f, -0.968235065737874320f, 0.249856050127308050f, - -0.968282992835658660f, - 0.249670379596668520f, -0.968330884332445300f, 0.249484699886363010f, - -0.968378740226473300f, - 0.249299011003218300f, -0.968426560515983190f, 0.249113312954061360f, - -0.968474345199216820f, - 0.248927605745720260f, -0.968522094274417270f, 0.248741889385022420f, - -0.968569807739828930f, - 0.248556163878796620f, -0.968617485593697540f, 0.248370429233871150f, - -0.968665127834269950f, - 0.248184685457074780f, -0.968712734459794780f, 0.247998932555237220f, - -0.968760305468521430f, - 0.247813170535187620f, -0.968807840858700970f, 0.247627399403756330f, - -0.968855340628585580f, - 0.247441619167773440f, -0.968902804776428870f, 0.247255829834069320f, - -0.968950233300485800f, - 0.247070031409475370f, -0.968997626199012310f, 0.246884223900822430f, - -0.969044983470266240f, - 0.246698407314942500f, -0.969092305112506100f, 0.246512581658667380f, - -0.969139591123992280f, - 0.246326746938829060f, -0.969186841502985950f, 0.246140903162260640f, - -0.969234056247750050f, - 0.245955050335794590f, -0.969281235356548530f, 0.245769188466264670f, - -0.969328378827646660f, - 0.245583317560504000f, -0.969375486659311280f, 0.245397437625346990f, - -0.969422558849810320f, - 0.245211548667627680f, -0.969469595397412950f, 0.245025650694180470f, - -0.969516596300390000f, - 0.244839743711840750f, -0.969563561557013180f, 0.244653827727443320f, - -0.969610491165555870f, - 0.244467902747824210f, -0.969657385124292450f, 0.244281968779819170f, - -0.969704243431498750f, - 0.244096025830264210f, -0.969751066085452140f, 0.243910073905996370f, - -0.969797853084430890f, - 0.243724113013852130f, -0.969844604426714830f, 0.243538143160669180f, - -0.969891320110585100f, - 0.243352164353284880f, -0.969938000134323960f, 0.243166176598536930f, - -0.969984644496215240f, - 0.242980179903263980f, -0.970031253194543970f, 0.242794174274304190f, - -0.970077826227596420f, - 0.242608159718496890f, -0.970124363593660280f, 0.242422136242681050f, - -0.970170865291024360f, - 0.242236103853696040f, -0.970217331317979160f, 0.242050062558382180f, - -0.970263761672816140f, - 0.241864012363579210f, -0.970310156353828110f, 0.241677953276128090f, - -0.970356515359309450f, - 0.241491885302869300f, -0.970402838687555500f, 0.241305808450644390f, - -0.970449126336863090f, - 0.241119722726294730f, -0.970495378305530450f, 0.240933628136661910f, - -0.970541594591857070f, - 0.240747524688588540f, -0.970587775194143630f, 0.240561412388916620f, - -0.970633920110692160f, - 0.240375291244489500f, -0.970680029339806130f, 0.240189161262150040f, - -0.970726102879790110f, - 0.240003022448741500f, -0.970772140728950350f, 0.239816874811108110f, - -0.970818142885593870f, - 0.239630718356093560f, -0.970864109348029470f, 0.239444553090542720f, - -0.970910040114567050f, - 0.239258379021300120f, -0.970955935183517970f, 0.239072196155210660f, - -0.971001794553194690f, - 0.238886004499120170f, -0.971047618221911100f, 0.238699804059873950f, - -0.971093406187982460f, - 0.238513594844318500f, -0.971139158449725090f, 0.238327376859299970f, - -0.971184875005457030f, - 0.238141150111664870f, -0.971230555853497380f, 0.237954914608260650f, - -0.971276200992166490f, - 0.237768670355934210f, -0.971321810419786160f, 0.237582417361533650f, - -0.971367384134679490f, - 0.237396155631906550f, -0.971412922135170940f, 0.237209885173901620f, - -0.971458424419585960f, - 0.237023605994367340f, -0.971503890986251780f, 0.236837318100152380f, - -0.971549321833496630f, - 0.236651021498106460f, -0.971594716959650160f, 0.236464716195078750f, - -0.971640076363043390f, - 0.236278402197919620f, -0.971685400042008540f, 0.236092079513479050f, - -0.971730687994879160f, - 0.235905748148607370f, -0.971775940219990140f, 0.235719408110155930f, - -0.971821156715677700f, - 0.235533059404975460f, -0.971866337480279400f, 0.235346702039917920f, - -0.971911482512134000f, - 0.235160336021834860f, -0.971956591809581600f, 0.234973961357578310f, - -0.972001665370963890f, - 0.234787578054001080f, -0.972046703194623380f, 0.234601186117955550f, - -0.972091705278904430f, - 0.234414785556295250f, -0.972136671622152120f, 0.234228376375873380f, - -0.972181602222713440f, - 0.234041958583543460f, -0.972226497078936270f, 0.233855532186159950f, - -0.972271356189170040f, - 0.233669097190576820f, -0.972316179551765300f, 0.233482653603649170f, - -0.972360967165074140f, - 0.233296201432231560f, -0.972405719027449770f, 0.233109740683179740f, - -0.972450435137246830f, - 0.232923271363349120f, -0.972495115492821190f, 0.232736793479595420f, - -0.972539760092530180f, - 0.232550307038775330f, -0.972584368934732210f, 0.232363812047745010f, - -0.972628942017787270f, - 0.232177308513361770f, -0.972673479340056430f, 0.231990796442482580f, - -0.972717980899902250f, - 0.231804275841964780f, -0.972762446695688570f, 0.231617746718666580f, - -0.972806876725780370f, - 0.231431209079445730f, -0.972851270988544180f, 0.231244662931161110f, - -0.972895629482347760f, - 0.231058108280671280f, -0.972939952205560070f, 0.230871545134835070f, - -0.972984239156551740f, - 0.230684973500512310f, -0.973028490333694100f, 0.230498393384562320f, - -0.973072705735360530f, - 0.230311804793845530f, -0.973116885359925130f, 0.230125207735222020f, - -0.973161029205763530f, - 0.229938602215552260f, -0.973205137271252800f, 0.229751988241697600f, - -0.973249209554771120f, - 0.229565365820518870f, -0.973293246054698250f, 0.229378734958878120f, - -0.973337246769414800f, - 0.229192095663636740f, -0.973381211697303290f, 0.229005447941657390f, - -0.973425140836747030f, - 0.228818791799802360f, -0.973469034186130950f, 0.228632127244934230f, - -0.973512891743841370f, - 0.228445454283916550f, -0.973556713508265560f, 0.228258772923612350f, - -0.973600499477792370f, - 0.228072083170885790f, -0.973644249650811870f, 0.227885385032600700f, - -0.973687964025715670f, - 0.227698678515621170f, -0.973731642600896400f, 0.227511963626812390f, - -0.973775285374748000f, - 0.227325240373038830f, -0.973818892345666100f, 0.227138508761166260f, - -0.973862463512047300f, - 0.226951768798059980f, -0.973905998872289460f, 0.226765020490585720f, - -0.973949498424792170f, - 0.226578263845610110f, -0.973992962167955830f, 0.226391498869999210f, - -0.974036390100182610f, - 0.226204725570620270f, -0.974079782219875680f, 0.226017943954340190f, - -0.974123138525439520f, - 0.225831154028026200f, -0.974166459015280320f, 0.225644355798546440f, - -0.974209743687805110f, - 0.225457549272768540f, -0.974252992541422500f, 0.225270734457561240f, - -0.974296205574542330f, - 0.225083911359792780f, -0.974339382785575860f, 0.224897079986332540f, - -0.974382524172935470f, - 0.224710240344049570f, -0.974425629735034990f, 0.224523392439813170f, - -0.974468699470289580f, - 0.224336536280493690f, -0.974511733377115720f, 0.224149671872960840f, - -0.974554731453931230f, - 0.223962799224085520f, -0.974597693699155050f, 0.223775918340738290f, - -0.974640620111207560f, - 0.223589029229790020f, -0.974683510688510670f, 0.223402131898112480f, - -0.974726365429487320f, - 0.223215226352576960f, -0.974769184332561770f, 0.223028312600055870f, - -0.974811967396159830f, - 0.222841390647421280f, -0.974854714618708430f, 0.222654460501545550f, - -0.974897425998635820f, - 0.222467522169301990f, -0.974940101534371720f, 0.222280575657563370f, - -0.974982741224347140f, - 0.222093620973203590f, -0.975025345066994120f, 0.221906658123096260f, - -0.975067913060746360f, - 0.221719687114115240f, -0.975110445204038890f, 0.221532707953135340f, - -0.975152941495307620f, - 0.221345720647030810f, -0.975195401932990370f, 0.221158725202677100f, - -0.975237826515525820f, - 0.220971721626949060f, -0.975280215241354220f, 0.220784709926722670f, - -0.975322568108916930f, - 0.220597690108873650f, -0.975364885116656870f, 0.220410662180277940f, - -0.975407166263018270f, - 0.220223626147812460f, -0.975449411546446380f, 0.220036582018353550f, - -0.975491620965388110f, - 0.219849529798778750f, -0.975533794518291360f, 0.219662469495965180f, - -0.975575932203605610f, - 0.219475401116790340f, -0.975618034019781750f, 0.219288324668132580f, - -0.975660099965271590f, - 0.219101240156869770f, -0.975702130038528570f, 0.218914147589880900f, - -0.975744124238007270f, - 0.218727046974044600f, -0.975786082562163930f, 0.218539938316239830f, - -0.975828005009455550f, - 0.218352821623346430f, -0.975869891578341030f, 0.218165696902243770f, - -0.975911742267280170f, - 0.217978564159812290f, -0.975953557074734300f, 0.217791423402932120f, - -0.975995335999165880f, - 0.217604274638483670f, -0.976037079039039020f, 0.217417117873348300f, - -0.976078786192818850f, - 0.217229953114406790f, -0.976120457458971910f, 0.217042780368541080f, - -0.976162092835966110f, - 0.216855599642632570f, -0.976203692322270560f, 0.216668410943563790f, - -0.976245255916355800f, - 0.216481214278216900f, -0.976286783616693630f, 0.216294009653474370f, - -0.976328275421757260f, - 0.216106797076219600f, -0.976369731330021140f, 0.215919576553335460f, - -0.976411151339961040f, - 0.215732348091705940f, -0.976452535450054060f, 0.215545111698214660f, - -0.976493883658778540f, - 0.215357867379745550f, -0.976535195964614470f, 0.215170615143183500f, - -0.976576472366042610f, - 0.214983354995412820f, -0.976617712861545640f, 0.214796086943318920f, - -0.976658917449606980f, - 0.214608810993786920f, -0.976700086128711840f, 0.214421527153702190f, - -0.976741218897346550f, - 0.214234235429951100f, -0.976782315753998650f, 0.214046935829419330f, - -0.976823376697157240f, - 0.213859628358993830f, -0.976864401725312640f, 0.213672313025561140f, - -0.976905390836956490f, - 0.213484989836008080f, -0.976946344030581560f, 0.213297658797222430f, - -0.976987261304682390f, - 0.213110319916091360f, -0.977028142657754390f, 0.212922973199503260f, - -0.977068988088294450f, - 0.212735618654345870f, -0.977109797594800880f, 0.212548256287508120f, - -0.977150571175773200f, - 0.212360886105878580f, -0.977191308829712280f, 0.212173508116346080f, - -0.977232010555120320f, - 0.211986122325800410f, -0.977272676350500860f, 0.211798728741130820f, - -0.977313306214358750f, - 0.211611327369227610f, -0.977353900145199960f, 0.211423918216980810f, - -0.977394458141532250f, - 0.211236501291280710f, -0.977434980201864260f, 0.211049076599018500f, - -0.977475466324706050f, - 0.210861644147084830f, -0.977515916508569280f, 0.210674203942371490f, - -0.977556330751966460f, - 0.210486755991769890f, -0.977596709053411780f, 0.210299300302171750f, - -0.977637051411420770f, - 0.210111836880469720f, -0.977677357824509930f, 0.209924365733555860f, - -0.977717628291197570f, - 0.209736886868323370f, -0.977757862810002760f, 0.209549400291665110f, - -0.977798061379446360f, - 0.209361906010474190f, -0.977838223998050430f, 0.209174404031644700f, - -0.977878350664338150f, - 0.208986894362070070f, -0.977918441376834370f, 0.208799377008644980f, - -0.977958496134064830f, - 0.208611851978263460f, -0.977998514934557140f, 0.208424319277820650f, - -0.978038497776839600f, - 0.208236778914211470f, -0.978078444659442380f, 0.208049230894330940f, - -0.978118355580896660f, - 0.207861675225075150f, -0.978158230539735050f, 0.207674111913339540f, - -0.978198069534491400f, - 0.207486540966020700f, -0.978237872563701090f, 0.207298962390014880f, - -0.978277639625900420f, - 0.207111376192218560f, -0.978317370719627650f, 0.206923782379529210f, - -0.978357065843421640f, - 0.206736180958843660f, -0.978396724995823090f, 0.206548571937059940f, - -0.978436348175373730f, - 0.206360955321075680f, -0.978475935380616830f, 0.206173331117788770f, - -0.978515486610096910f, - 0.205985699334098050f, -0.978555001862359550f, 0.205798059976901760f, - -0.978594481135952270f, - 0.205610413053099320f, -0.978633924429423100f, 0.205422758569589780f, - -0.978673331741322210f, - 0.205235096533272380f, -0.978712703070200420f, 0.205047426951047380f, - -0.978752038414610340f, - 0.204859749829814420f, -0.978791337773105670f, 0.204672065176474290f, - -0.978830601144241470f, - 0.204484372997927180f, -0.978869828526574120f, 0.204296673301074430f, - -0.978909019918661310f, - 0.204108966092817010f, -0.978948175319062200f, 0.203921251380056150f, - -0.978987294726337050f, - 0.203733529169694010f, -0.979026378139047580f, 0.203545799468632190f, - -0.979065425555756930f, - 0.203358062283773370f, -0.979104436975029250f, 0.203170317622019920f, - -0.979143412395430230f, - 0.202982565490274460f, -0.979182351815526930f, 0.202794805895440550f, - -0.979221255233887700f, - 0.202607038844421110f, -0.979260122649082020f, 0.202419264344120220f, - -0.979298954059681040f, - 0.202231482401441620f, -0.979337749464256780f, 0.202043693023289280f, - -0.979376508861383170f, - 0.201855896216568160f, -0.979415232249634780f, 0.201668091988182500f, - -0.979453919627588210f, - 0.201480280345037820f, -0.979492570993820700f, 0.201292461294039190f, - -0.979531186346911390f, - 0.201104634842091960f, -0.979569765685440520f, 0.200916800996102370f, - -0.979608309007989450f, - 0.200728959762976140f, -0.979646816313141210f, 0.200541111149620090f, - -0.979685287599479930f, - 0.200353255162940420f, -0.979723722865591170f, 0.200165391809844500f, - -0.979762122110061640f, - 0.199977521097239290f, -0.979800485331479680f, 0.199789643032032120f, - -0.979838812528434740f, - 0.199601757621131050f, -0.979877103699517640f, 0.199413864871443750f, - -0.979915358843320480f, - 0.199225964789878890f, -0.979953577958436740f, 0.199038057383344820f, - -0.979991761043461200f, - 0.198850142658750120f, -0.980029908096989980f, 0.198662220623004320f, - -0.980068019117620650f, - 0.198474291283016360f, -0.980106094103951770f, 0.198286354645696270f, - -0.980144133054583590f, - 0.198098410717953730f, -0.980182135968117320f, 0.197910459506698720f, - -0.980220102843155970f, - 0.197722501018842030f, -0.980258033678303550f, 0.197534535261294000f, - -0.980295928472165290f, - 0.197346562240966000f, -0.980333787223347960f, 0.197158581964769040f, - -0.980371609930459690f, - 0.196970594439614370f, -0.980409396592109910f, 0.196782599672414240f, - -0.980447147206909060f, - 0.196594597670080220f, -0.980484861773469380f, 0.196406588439525050f, - -0.980522540290404090f, - 0.196218571987660850f, -0.980560182756327950f, 0.196030548321400880f, - -0.980597789169856850f, - 0.195842517447657990f, -0.980635359529608120f, 0.195654479373345370f, - -0.980672893834200530f, - 0.195466434105377090f, -0.980710392082253970f, 0.195278381650666520f, - -0.980747854272389750f, - 0.195090322016128330f, -0.980785280403230430f, 0.194902255208676660f, - -0.980822670473399990f, - 0.194714181235225990f, -0.980860024481523870f, 0.194526100102691720f, - -0.980897342426228390f, - 0.194338011817988600f, -0.980934624306141640f, 0.194149916388032530f, - -0.980971870119892840f, - 0.193961813819739010f, -0.981009079866112630f, 0.193773704120023840f, - -0.981046253543432780f, - 0.193585587295803750f, -0.981083391150486590f, 0.193397463353994740f, - -0.981120492685908730f, - 0.193209332301514080f, -0.981157558148334830f, 0.193021194145278320f, - -0.981194587536402320f, - 0.192833048892205290f, -0.981231580848749730f, 0.192644896549212240f, - -0.981268538084016710f, - 0.192456737123216840f, -0.981305459240844670f, 0.192268570621137590f, - -0.981342344317875930f, - 0.192080397049892380f, -0.981379193313754560f, 0.191892216416400310f, - -0.981416006227125550f, - 0.191704028727579940f, -0.981452783056635520f, 0.191515833990350240f, - -0.981489523800932130f, - 0.191327632211630990f, -0.981526228458664660f, 0.191139423398341420f, - -0.981562897028483650f, - 0.190951207557401860f, -0.981599529509040720f, 0.190762984695732250f, - -0.981636125898989080f, - 0.190574754820252800f, -0.981672686196983110f, 0.190386517937884580f, - -0.981709210401678800f, - 0.190198274055548120f, -0.981745698511732990f, 0.190010023180165050f, - -0.981782150525804310f, - 0.189821765318656580f, -0.981818566442552500f, 0.189633500477944220f, - -0.981854946260638630f, - 0.189445228664950340f, -0.981891289978724990f, 0.189256949886596720f, - -0.981927597595475540f, - 0.189068664149806280f, -0.981963869109555240f, 0.188880371461501330f, - -0.982000104519630490f, - 0.188692071828605260f, -0.982036303824369020f, 0.188503765258041080f, - -0.982072467022439890f, - 0.188315451756732120f, -0.982108594112513610f, 0.188127131331602530f, - -0.982144685093261580f, - 0.187938803989575850f, -0.982180739963357200f, 0.187750469737576840f, - -0.982216758721474510f, - 0.187562128582529740f, -0.982252741366289370f, 0.187373780531359110f, - -0.982288687896478830f, - 0.187185425590990440f, -0.982324598310721160f, 0.186997063768348510f, - -0.982360472607696210f, - 0.186808695070359330f, -0.982396310786084690f, 0.186620319503948420f, - -0.982432112844569110f, - 0.186431937076041640f, -0.982467878781833170f, 0.186243547793565670f, - -0.982503608596561720f, - 0.186055151663446630f, -0.982539302287441240f, 0.185866748692611720f, - -0.982574959853159240f, - 0.185678338887987790f, -0.982610581292404750f, 0.185489922256501900f, - -0.982646166603868050f, - 0.185301498805082040f, -0.982681715786240860f, 0.185113068540655510f, - -0.982717228838215990f, - 0.184924631470150870f, -0.982752705758487830f, 0.184736187600495930f, - -0.982788146545751970f, - 0.184547736938619640f, -0.982823551198705240f, 0.184359279491450640f, - -0.982858919716046110f, - 0.184170815265917720f, -0.982894252096474070f, 0.183982344268950600f, - -0.982929548338690060f, - 0.183793866507478390f, -0.982964808441396440f, 0.183605381988431350f, - -0.983000032403296590f, - 0.183416890718739230f, -0.983035220223095640f, 0.183228392705332140f, - -0.983070371899499640f, - 0.183039887955141060f, -0.983105487431216290f, 0.182851376475096310f, - -0.983140566816954500f, - 0.182662858272129360f, -0.983175610055424420f, 0.182474333353171260f, - -0.983210617145337640f, - 0.182285801725153320f, -0.983245588085407070f, 0.182097263395007760f, - -0.983280522874346970f, - 0.181908718369666160f, -0.983315421510872810f, 0.181720166656061170f, - -0.983350283993701500f, - 0.181531608261125130f, -0.983385110321551180f, 0.181343043191790590f, - -0.983419900493141540f, - 0.181154471454990920f, -0.983454654507193270f, 0.180965893057658980f, - -0.983489372362428730f, - 0.180777308006728670f, -0.983524054057571260f, 0.180588716309133280f, - -0.983558699591345900f, - 0.180400117971807270f, -0.983593308962478650f, 0.180211513001684590f, - -0.983627882169697210f, - 0.180022901405699510f, -0.983662419211730250f, 0.179834283190787180f, - -0.983696920087308020f, - 0.179645658363882100f, -0.983731384795162090f, 0.179457026931919950f, - -0.983765813334025240f, - 0.179268388901835880f, -0.983800205702631490f, 0.179079744280565390f, - -0.983834561899716630f, - 0.178891093075044830f, -0.983868881924017220f, 0.178702435292209940f, - -0.983903165774271500f, - 0.178513770938997590f, -0.983937413449218920f, 0.178325100022344140f, - -0.983971624947600270f, - 0.178136422549186320f, -0.984005800268157870f, 0.177947738526461670f, - -0.984039939409634970f, - 0.177759047961107140f, -0.984074042370776450f, 0.177570350860060790f, - -0.984108109150328540f, - 0.177381647230260200f, -0.984142139747038570f, 0.177192937078643310f, - -0.984176134159655320f, - 0.177004220412148860f, -0.984210092386929030f, 0.176815497237715000f, - -0.984244014427611110f, - 0.176626767562280960f, -0.984277900280454370f, 0.176438031392785350f, - -0.984311749944212780f, - 0.176249288736167940f, -0.984345563417641900f, 0.176060539599367960f, - -0.984379340699498510f, - 0.175871783989325040f, -0.984413081788540700f, 0.175683021912979580f, - -0.984446786683527920f, - 0.175494253377271400f, -0.984480455383220930f, 0.175305478389141370f, - -0.984514087886381840f, - 0.175116696955530060f, -0.984547684191773960f, 0.174927909083378160f, - -0.984581244298162180f, - 0.174739114779627310f, -0.984614768204312600f, 0.174550314051218490f, - -0.984648255908992630f, - 0.174361506905093830f, -0.984681707410970940f, 0.174172693348194960f, - -0.984715122709017620f, - 0.173983873387463850f, -0.984748501801904210f, 0.173795047029843270f, - -0.984781844688403350f, - 0.173606214282275410f, -0.984815151367289140f, 0.173417375151703520f, - -0.984848421837337010f, - 0.173228529645070490f, -0.984881656097323700f, 0.173039677769319390f, - -0.984914854146027200f, - 0.172850819531394200f, -0.984948015982227030f, 0.172661954938238270f, - -0.984981141604703960f, - 0.172473083996796030f, -0.985014231012239840f, 0.172284206714011350f, - -0.985047284203618200f, - 0.172095323096829040f, -0.985080301177623800f, 0.171906433152193700f, - -0.985113281933042590f, - 0.171717536887049970f, -0.985146226468662230f, 0.171528634308343500f, - -0.985179134783271020f, - 0.171339725423019260f, -0.985212006875659460f, 0.171150810238023340f, - -0.985244842744618540f, - 0.170961888760301360f, -0.985277642388941220f, 0.170772960996799230f, - -0.985310405807421570f, - 0.170584026954463700f, -0.985343132998854790f, 0.170395086640240920f, - -0.985375823962037710f, - 0.170206140061078120f, -0.985408478695768420f, 0.170017187223922090f, - -0.985441097198846210f, - 0.169828228135719880f, -0.985473679470071810f, 0.169639262803419400f, - -0.985506225508247290f, - 0.169450291233967930f, -0.985538735312176060f, 0.169261313434313890f, - -0.985571208880662740f, - 0.169072329411405180f, -0.985603646212513400f, 0.168883339172190010f, - -0.985636047306535420f, - 0.168694342723617440f, -0.985668412161537550f, 0.168505340072635900f, - -0.985700740776329850f, - 0.168316331226194910f, -0.985733033149723490f, 0.168127316191243350f, - -0.985765289280531310f, - 0.167938294974731230f, -0.985797509167567370f, 0.167749267583608030f, - -0.985829692809647050f, - 0.167560234024823590f, -0.985861840205586980f, 0.167371194305328540f, - -0.985893951354205210f, - 0.167182148432072880f, -0.985926026254321130f, 0.166993096412007770f, - -0.985958064904755460f, - 0.166804038252083870f, -0.985990067304330030f, 0.166614973959252090f, - -0.986022033451868560f, - 0.166425903540464220f, -0.986053963346195440f, 0.166236827002671390f, - -0.986085856986136820f, - 0.166047744352825850f, -0.986117714370520090f, 0.165858655597879430f, - -0.986149535498173860f, - 0.165669560744784140f, -0.986181320367928270f, 0.165480459800492890f, - -0.986213068978614490f, - 0.165291352771957970f, -0.986244781329065460f, 0.165102239666132720f, - -0.986276457418114980f, - 0.164913120489970090f, -0.986308097244598670f, 0.164723995250423190f, - -0.986339700807353000f, - 0.164534863954446110f, -0.986371268105216030f, 0.164345726608992190f, - -0.986402799137027220f, - 0.164156583221015890f, -0.986434293901627070f, 0.163967433797471110f, - -0.986465752397857940f, - 0.163778278345312690f, -0.986497174624562880f, 0.163589116871495160f, - -0.986528560580586690f, - 0.163399949382973230f, -0.986559910264775410f, 0.163210775886702460f, - -0.986591223675976400f, - 0.163021596389637810f, -0.986622500813038480f, 0.162832410898735260f, - -0.986653741674811350f, - 0.162643219420950450f, -0.986684946260146690f, 0.162454021963239190f, - -0.986716114567897100f, - 0.162264818532558110f, -0.986747246596916480f, 0.162075609135863330f, - -0.986778342346060430f, - 0.161886393780111910f, -0.986809401814185420f, 0.161697172472260540f, - -0.986840425000149680f, - 0.161507945219266150f, -0.986871411902812470f, 0.161318712028086540f, - -0.986902362521034470f, - 0.161129472905678780f, -0.986933276853677710f, 0.160940227859001140f, - -0.986964154899605650f, - 0.160750976895011390f, -0.986994996657682870f, 0.160561720020667510f, - -0.987025802126775600f, - 0.160372457242928400f, -0.987056571305750970f, 0.160183188568752240f, - -0.987087304193477900f, - 0.159993914005098350f, -0.987118000788826280f, 0.159804633558925380f, - -0.987148661090667570f, - 0.159615347237193090f, -0.987179285097874340f, 0.159426055046860750f, - -0.987209872809320820f, - 0.159236756994887850f, -0.987240424223882250f, 0.159047453088234840f, - -0.987270939340435420f, - 0.158858143333861390f, -0.987301418157858430f, 0.158668827738728370f, - -0.987331860675030430f, - 0.158479506309796100f, -0.987362266890832400f, 0.158290179054025180f, - -0.987392636804146240f, - 0.158100845978377090f, -0.987422970413855410f, 0.157911507089812640f, - -0.987453267718844560f, - 0.157722162395293690f, -0.987483528717999710f, 0.157532811901781670f, - -0.987513753410208420f, - 0.157343455616238280f, -0.987543941794359230f, 0.157154093545626010f, - -0.987574093869342360f, - 0.156964725696906750f, -0.987604209634049160f, 0.156775352077043430f, - -0.987634289087372160f, - 0.156585972692998590f, -0.987664332228205710f, 0.156396587551734940f, - -0.987694339055445130f, - 0.156207196660216040f, -0.987724309567986960f, 0.156017800025404830f, - -0.987754243764729530f, - 0.155828397654265320f, -0.987784141644572180f, 0.155638989553760850f, - -0.987814003206415550f, - 0.155449575730855880f, -0.987843828449161740f, 0.155260156192514380f, - -0.987873617371714200f, - 0.155070730945700510f, -0.987903369972977790f, 0.154881299997379400f, - -0.987933086251858380f, - 0.154691863354515400f, -0.987962766207263420f, 0.154502421024073990f, - -0.987992409838101880f, - 0.154312973013020240f, -0.988022017143283530f, 0.154123519328319360f, - -0.988051588121720110f, - 0.153934059976937460f, -0.988081122772324070f, 0.153744594965840000f, - -0.988110621094009820f, - 0.153555124301993500f, -0.988140083085692570f, 0.153365647992364020f, - -0.988169508746289060f, - 0.153176166043917870f, -0.988198898074717610f, 0.152986678463622160f, - -0.988228251069897420f, - 0.152797185258443410f, -0.988257567730749460f, 0.152607686435349140f, - -0.988286848056195710f, - 0.152418182001306500f, -0.988316092045159690f, 0.152228671963282770f, - -0.988345299696566150f, - 0.152039156328246160f, -0.988374471009341280f, 0.151849635103164180f, - -0.988403605982412390f, - 0.151660108295005400f, -0.988432704614708340f, 0.151470575910737760f, - -0.988461766905159300f, - 0.151281037957330250f, -0.988490792852696590f, 0.151091494441751430f, - -0.988519782456253270f, - 0.150901945370970040f, -0.988548735714763200f, 0.150712390751955720f, - -0.988577652627162020f, - 0.150522830591677370f, -0.988606533192386450f, 0.150333264897105050f, - -0.988635377409374790f, - 0.150143693675208330f, -0.988664185277066230f, 0.149954116932956990f, - -0.988692956794401940f, - 0.149764534677321620f, -0.988721691960323780f, 0.149574946915272210f, - -0.988750390773775360f, - 0.149385353653779810f, -0.988779053233701520f, 0.149195754899814960f, - -0.988807679339048340f, - 0.149006150660348470f, -0.988836269088763540f, 0.148816540942352030f, - -0.988864822481795640f, - 0.148626925752796540f, -0.988893339517095130f, 0.148437305098654050f, - -0.988921820193613190f, - 0.148247678986896200f, -0.988950264510302990f, 0.148058047424494740f, - -0.988978672466118480f, - 0.147868410418422360f, -0.989007044060015270f, 0.147678767975650970f, - -0.989035379290950310f, - 0.147489120103153680f, -0.989063678157881540f, 0.147299466807902820f, - -0.989091940659768800f, - 0.147109808096871850f, -0.989120166795572690f, 0.146920143977033760f, - -0.989148356564255590f, - 0.146730474455361750f, -0.989176509964781010f, 0.146540799538829870f, - -0.989204626996113780f, - 0.146351119234411440f, -0.989232707657220050f, 0.146161433549080950f, - -0.989260751947067640f, - 0.145971742489812370f, -0.989288759864625170f, 0.145782046063579860f, - -0.989316731408863000f, - 0.145592344277358450f, -0.989344666578752640f, 0.145402637138122540f, - -0.989372565373267010f, - 0.145212924652847520f, -0.989400427791380380f, 0.145023206828508360f, - -0.989428253832068230f, - 0.144833483672080240f, -0.989456043494307710f, 0.144643755190539150f, - -0.989483796777076760f, - 0.144454021390860440f, -0.989511513679355190f, 0.144264282280020530f, - -0.989539194200123930f, - 0.144074537864995330f, -0.989566838338365120f, 0.143884788152761010f, - -0.989594446093062460f, - 0.143695033150294580f, -0.989622017463200780f, 0.143505272864572290f, - -0.989649552447766530f, - 0.143315507302571590f, -0.989677051045747210f, 0.143125736471269140f, - -0.989704513256131850f, - 0.142935960377642700f, -0.989731939077910570f, 0.142746179028669620f, - -0.989759328510075200f, - 0.142556392431327340f, -0.989786681551618640f, 0.142366600592594260f, - -0.989813998201535260f, - 0.142176803519448000f, -0.989841278458820530f, 0.141987001218867340f, - -0.989868522322471580f, - 0.141797193697830530f, -0.989895729791486660f, 0.141607380963316020f, - -0.989922900864865450f, - 0.141417563022303130f, -0.989950035541608990f, 0.141227739881770480f, - -0.989977133820719610f, - 0.141037911548697770f, -0.990004195701200910f, 0.140848078030064220f, - -0.990031221182058000f, - 0.140658239332849240f, -0.990058210262297120f, 0.140468395464033110f, - -0.990085162940925970f, - 0.140278546430595420f, -0.990112079216953770f, 0.140088692239516780f, - -0.990138959089390650f, - 0.139898832897777380f, -0.990165802557248400f, 0.139708968412357580f, - -0.990192609619540030f, - 0.139519098790238600f, -0.990219380275280000f, 0.139329224038400980f, - -0.990246114523483990f, - 0.139139344163826280f, -0.990272812363169110f, 0.138949459173495440f, - -0.990299473793353590f, - 0.138759569074390380f, -0.990326098813057330f, 0.138569673873492640f, - -0.990352687421301340f, - 0.138379773577783890f, -0.990379239617108160f, 0.138189868194246640f, - -0.990405755399501260f, - 0.137999957729862760f, -0.990432234767505970f, 0.137810042191615130f, - -0.990458677720148620f, - 0.137620121586486180f, -0.990485084256456980f, 0.137430195921458550f, - -0.990511454375460290f, - 0.137240265203515700f, -0.990537788076188750f, 0.137050329439640380f, - -0.990564085357674370f, - 0.136860388636816430f, -0.990590346218950150f, 0.136670442802027230f, - -0.990616570659050620f, - 0.136480491942256310f, -0.990642758677011570f, 0.136290536064488070f, - -0.990668910271869980f, - 0.136100575175706200f, -0.990695025442664630f, 0.135910609282895440f, - -0.990721104188435180f, - 0.135720638393040080f, -0.990747146508222710f, 0.135530662513124620f, - -0.990773152401069780f, - 0.135340681650134330f, -0.990799121866020370f, 0.135150695811053850f, - -0.990825054902119470f, - 0.134960705002868830f, -0.990850951508413620f, 0.134770709232564290f, - -0.990876811683950810f, - 0.134580708507126220f, -0.990902635427780010f, 0.134390702833540240f, - -0.990928422738951990f, - 0.134200692218792020f, -0.990954173616518500f, 0.134010676669868210f, - -0.990979888059532740f, - 0.133820656193754690f, -0.991005566067049370f, 0.133630630797438390f, - -0.991031207638124130f, - 0.133440600487905820f, -0.991056812771814340f, 0.133250565272143570f, - -0.991082381467178640f, - 0.133060525157139180f, -0.991107913723276780f, 0.132870480149879400f, - -0.991133409539170170f, - 0.132680430257352130f, -0.991158868913921350f, 0.132490375486544710f, - -0.991184291846594180f, - 0.132300315844444680f, -0.991209678336254060f, 0.132110251338040470f, - -0.991235028381967420f, - 0.131920181974319760f, -0.991260341982802440f, 0.131730107760271280f, - -0.991285619137828200f, - 0.131540028702883280f, -0.991310859846115440f, 0.131349944809144220f, - -0.991336064106736140f, - 0.131159856086043410f, -0.991361231918763460f, 0.130969762540569380f, - -0.991386363281272280f, - 0.130779664179711790f, -0.991411458193338540f, 0.130589561010459600f, - -0.991436516654039420f, - 0.130399453039802740f, -0.991461538662453790f, 0.130209340274730770f, - -0.991486524217661480f, - 0.130019222722233350f, -0.991511473318743900f, 0.129829100389301010f, - -0.991536385964783880f, - 0.129638973282923540f, -0.991561262154865290f, 0.129448841410091830f, - -0.991586101888073500f, - 0.129258704777796270f, -0.991610905163495370f, 0.129068563393027410f, - -0.991635671980218740f, - 0.128878417262776660f, -0.991660402337333210f, 0.128688266394034690f, - -0.991685096233929530f, - 0.128498110793793220f, -0.991709753669099530f, 0.128307950469043590f, - -0.991734374641936810f, - 0.128117785426777150f, -0.991758959151536110f, 0.127927615673986190f, - -0.991783507196993490f, - 0.127737441217662280f, -0.991808018777406430f, 0.127547262064798050f, - -0.991832493891873780f, - 0.127357078222385570f, -0.991856932539495360f, 0.127166889697417180f, - -0.991881334719373010f, - 0.126976696496885980f, -0.991905700430609330f, 0.126786498627784430f, - -0.991930029672308480f, - 0.126596296097105960f, -0.991954322443575950f, 0.126406088911843320f, - -0.991978578743518580f, - 0.126215877078990400f, -0.992002798571244520f, 0.126025660605540460f, - -0.992026981925863360f, - 0.125835439498487020f, -0.992051128806485720f, 0.125645213764824380f, - -0.992075239212224070f, - 0.125454983411546210f, -0.992099313142191800f, 0.125264748445647110f, - -0.992123350595503720f, - 0.125074508874121300f, -0.992147351571276090f, 0.124884264703963150f, - -0.992171316068626520f, - 0.124694015942167770f, -0.992195244086673920f, 0.124503762595729650f, - -0.992219135624538450f, - 0.124313504671644300f, -0.992242990681341700f, 0.124123242176906760f, - -0.992266809256206580f, - 0.123932975118512200f, -0.992290591348257370f, 0.123742703503456630f, - -0.992314336956619640f, - 0.123552427338735370f, -0.992338046080420420f, 0.123362146631344750f, - -0.992361718718787870f, - 0.123171861388280650f, -0.992385354870851670f, 0.122981571616539080f, - -0.992408954535742850f, - 0.122791277323116900f, -0.992432517712593550f, 0.122600978515010240f, - -0.992456044400537700f, - 0.122410675199216280f, -0.992479534598709970f, 0.122220367382731500f, - -0.992502988306246950f, - 0.122030055072553410f, -0.992526405522286100f, 0.121839738275679020f, - -0.992549786245966570f, - 0.121649416999105540f, -0.992573130476428810f, 0.121459091249830950f, - -0.992596438212814290f, - 0.121268761034852550f, -0.992619709454266140f, 0.121078426361168710f, - -0.992642944199928820f, - 0.120888087235777220f, -0.992666142448948020f, 0.120697743665676120f, - -0.992689304200470750f, - 0.120507395657864240f, -0.992712429453645460f, 0.120317043219339670f, - -0.992735518207621850f, - 0.120126686357101580f, -0.992758570461551140f, 0.119936325078148620f, - -0.992781586214585570f, - 0.119745959389479630f, -0.992804565465879140f, 0.119555589298094230f, - -0.992827508214586760f, - 0.119365214810991350f, -0.992850414459865100f, 0.119174835935170960f, - -0.992873284200871730f, - 0.118984452677632520f, -0.992896117436765980f, 0.118794065045375670f, - -0.992918914166708300f, - 0.118603673045400840f, -0.992941674389860470f, 0.118413276684707770f, - -0.992964398105385610f, - 0.118222875970297250f, -0.992987085312448390f, 0.118032470909169300f, - -0.993009736010214580f, - 0.117842061508325020f, -0.993032350197851410f, 0.117651647774765000f, - -0.993054927874527320f, - 0.117461229715489990f, -0.993077469039412300f, 0.117270807337501560f, - -0.993099973691677570f, - 0.117080380647800550f, -0.993122441830495580f, 0.116889949653388850f, - -0.993144873455040430f, - 0.116699514361267840f, -0.993167268564487230f, 0.116509074778439050f, - -0.993189627158012620f, - 0.116318630911904880f, -0.993211949234794500f, 0.116128182768666920f, - -0.993234234794012290f, - 0.115937730355727850f, -0.993256483834846440f, 0.115747273680089870f, - -0.993278696356479030f, - 0.115556812748755290f, -0.993300872358093280f, 0.115366347568727250f, - -0.993323011838873950f, - 0.115175878147008180f, -0.993345114798006910f, 0.114985404490601530f, - -0.993367181234679600f, - 0.114794926606510250f, -0.993389211148080650f, 0.114604444501737460f, - -0.993411204537400060f, - 0.114413958183287050f, -0.993433161401829360f, 0.114223467658162260f, - -0.993455081740560960f, - 0.114032972933367300f, -0.993476965552789190f, 0.113842474015905660f, - -0.993498812837709360f, - 0.113651970912781920f, -0.993520623594518090f, 0.113461463631000080f, - -0.993542397822413600f, - 0.113270952177564360f, -0.993564135520595300f, 0.113080436559479720f, - -0.993585836688263950f, - 0.112889916783750470f, -0.993607501324621610f, 0.112699392857381910f, - -0.993629129428871720f, - 0.112508864787378830f, -0.993650721000219120f, 0.112318332580746190f, - -0.993672276037870010f, - 0.112127796244489750f, -0.993693794541031680f, 0.111937255785614560f, - -0.993715276508913230f, - 0.111746711211126660f, -0.993736721940724600f, 0.111556162528031630f, - -0.993758130835677430f, - 0.111365609743335190f, -0.993779503192984580f, 0.111175052864043830f, - -0.993800839011860120f, - 0.110984491897163380f, -0.993822138291519660f, 0.110793926849700630f, - -0.993843401031180180f, - 0.110603357728661910f, -0.993864627230059750f, 0.110412784541053660f, - -0.993885816887378090f, - 0.110222207293883180f, -0.993906970002356060f, 0.110031625994157000f, - -0.993928086574215830f, - 0.109841040648882680f, -0.993949166602181130f, 0.109650451265067080f, - -0.993970210085476920f, - 0.109459857849718030f, -0.993991217023329380f, 0.109269260409842920f, - -0.994012187414966220f, - 0.109078658952449240f, -0.994033121259616400f, 0.108888053484545310f, - -0.994054018556510210f, - 0.108697444013138670f, -0.994074879304879370f, 0.108506830545237980f, - -0.994095703503956930f, - 0.108316213087851300f, -0.994116491152977070f, 0.108125591647986880f, - -0.994137242251175720f, - 0.107934966232653760f, -0.994157956797789730f, 0.107744336848860260f, - -0.994178634792057590f, - 0.107553703503615710f, -0.994199276233218910f, 0.107363066203928920f, - -0.994219881120514850f, - 0.107172424956808870f, -0.994240449453187900f, 0.106981779769265340f, - -0.994260981230481790f, - 0.106791130648307380f, -0.994281476451641550f, 0.106600477600945030f, - -0.994301935115913580f, - 0.106409820634187840f, -0.994322357222545810f, 0.106219159755045520f, - -0.994342742770787270f, - 0.106028494970528530f, -0.994363091759888570f, 0.105837826287646670f, - -0.994383404189101430f, - 0.105647153713410700f, -0.994403680057679100f, 0.105456477254830660f, - -0.994423919364875950f, - 0.105265796918917650f, -0.994444122109948040f, 0.105075112712682180f, - -0.994464288292152390f, - 0.104884424643134970f, -0.994484417910747600f, 0.104693732717287500f, - -0.994504510964993590f, - 0.104503036942150550f, -0.994524567454151740f, 0.104312337324735870f, - -0.994544587377484300f, - 0.104121633872054730f, -0.994564570734255420f, 0.103930926591118540f, - -0.994584517523730340f, - 0.103740215488939480f, -0.994604427745175660f, 0.103549500572529040f, - -0.994624301397859400f, - 0.103358781848899700f, -0.994644138481050710f, 0.103168059325063390f, - -0.994663938994020280f, - 0.102977333008032250f, -0.994683702936040250f, 0.102786602904819150f, - -0.994703430306383860f, - 0.102595869022436280f, -0.994723121104325700f, 0.102405131367896790f, - -0.994742775329142010f, - 0.102214389948213370f, -0.994762392980109930f, 0.102023644770398800f, - -0.994781974056508260f, - 0.101832895841466670f, -0.994801518557617110f, 0.101642143168429830f, - -0.994821026482717860f, - 0.101451386758302160f, -0.994840497831093180f, 0.101260626618096800f, - -0.994859932602027320f, - 0.101069862754827880f, -0.994879330794805620f, 0.100879095175509010f, - -0.994898692408714870f, - 0.100688323887153970f, -0.994918017443043200f, 0.100497548896777310f, - -0.994937305897080070f, - 0.100306770211392820f, -0.994956557770116380f, 0.100115987838015370f, - -0.994975773061444140f, - 0.099925201783659226f, -0.994994951770357020f, 0.099734412055338839f, - -0.995014093896149700f, - 0.099543618660069444f, -0.995033199438118630f, 0.099352821604865513f, - -0.995052268395561160f, - 0.099162020896742573f, -0.995071300767776170f, 0.098971216542715582f, - -0.995090296554063890f, - 0.098780408549799664f, -0.995109255753726110f, 0.098589596925010708f, - -0.995128178366065490f, - 0.098398781675363881f, -0.995147064390386470f, 0.098207962807875346f, - -0.995165913825994620f, - 0.098017140329560770f, -0.995184726672196820f, 0.097826314247435903f, - -0.995203502928301510f, - 0.097635484568517339f, -0.995222242593618240f, 0.097444651299820870f, - -0.995240945667458130f, - 0.097253814448363354f, -0.995259612149133390f, 0.097062974021160875f, - -0.995278242037957670f, - 0.096872130025230527f, -0.995296835333246090f, 0.096681282467588864f, - -0.995315392034315070f, - 0.096490431355252607f, -0.995333912140482280f, 0.096299576695239225f, - -0.995352395651066810f, - 0.096108718494565468f, -0.995370842565388990f, 0.095917856760249096f, - -0.995389252882770690f, - 0.095726991499307315f, -0.995407626602534900f, 0.095536122718757485f, - -0.995425963724006160f, - 0.095345250425617742f, -0.995444264246510340f, 0.095154374626905472f, - -0.995462528169374420f, - 0.094963495329639061f, -0.995480755491926940f, 0.094772612540836410f, - -0.995498946213497770f, - 0.094581726267515473f, -0.995517100333418110f, 0.094390836516695067f, - -0.995535217851020390f, - 0.094199943295393190f, -0.995553298765638470f, 0.094009046610628907f, - -0.995571343076607770f, - 0.093818146469420494f, -0.995589350783264600f, 0.093627242878787237f, - -0.995607321884947050f, - 0.093436335845747912f, -0.995625256380994310f, 0.093245425377321389f, - -0.995643154270746900f, - 0.093054511480527333f, -0.995661015553546910f, 0.092863594162384697f, - -0.995678840228737540f, - 0.092672673429913366f, -0.995696628295663520f, 0.092481749290132753f, - -0.995714379753670610f, - 0.092290821750062355f, -0.995732094602106430f, 0.092099890816722485f, - -0.995749772840319400f, - 0.091908956497132696f, -0.995767414467659820f, 0.091718018798313525f, - -0.995785019483478750f, - 0.091527077727284981f, -0.995802587887129160f, 0.091336133291067212f, - -0.995820119677964910f, - 0.091145185496681130f, -0.995837614855341610f, 0.090954234351146898f, - -0.995855073418615790f, - 0.090763279861485704f, -0.995872495367145730f, 0.090572322034718156f, - -0.995889880700290720f, - 0.090381360877865011f, -0.995907229417411720f, 0.090190396397947820f, - -0.995924541517870690f, - 0.089999428601987341f, -0.995941817001031350f, 0.089808457497005362f, - -0.995959055866258320f, - 0.089617483090022917f, -0.995976258112917790f, 0.089426505388062016f, - -0.995993423740377360f, - 0.089235524398144139f, -0.996010552748005870f, 0.089044540127290905f, - -0.996027645135173610f, - 0.088853552582524684f, -0.996044700901251970f, 0.088662561770867121f, - -0.996061720045614000f, - 0.088471567699340822f, -0.996078702567633980f, 0.088280570374967879f, - -0.996095648466687300f, - 0.088089569804770507f, -0.996112557742151130f, 0.087898565995771685f, - -0.996129430393403740f, - 0.087707558954993645f, -0.996146266419824620f, 0.087516548689459586f, - -0.996163065820794950f, - 0.087325535206192226f, -0.996179828595696870f, 0.087134518512214321f, - -0.996196554743914220f, - 0.086943498614549489f, -0.996213244264832040f, 0.086752475520220515f, - -0.996229897157836500f, - 0.086561449236251239f, -0.996246513422315520f, 0.086370419769664919f, - -0.996263093057658030f, - 0.086179387127484922f, -0.996279636063254650f, 0.085988351316735448f, - -0.996296142438496850f, - 0.085797312344439880f, -0.996312612182778000f, 0.085606270217622613f, - -0.996329045295492380f, - 0.085415224943307277f, -0.996345441776035900f, 0.085224176528518519f, - -0.996361801623805720f, - 0.085033124980280414f, -0.996378124838200210f, 0.084842070305617148f, - -0.996394411418619290f, - 0.084651012511553700f, -0.996410661364464100f, 0.084459951605114297f, - -0.996426874675137240f, - 0.084268887593324127f, -0.996443051350042630f, 0.084077820483207846f, - -0.996459191388585410f, - 0.083886750281790226f, -0.996475294790172160f, 0.083695676996096827f, - -0.996491361554210920f, - 0.083504600633152404f, -0.996507391680110820f, 0.083313521199982740f, - -0.996523385167282450f, - 0.083122438703613077f, -0.996539342015137940f, 0.082931353151068726f, - -0.996555262223090540f, - 0.082740264549375803f, -0.996571145790554840f, 0.082549172905559659f, - -0.996586992716946950f, - 0.082358078226646619f, -0.996602803001684130f, 0.082166980519662466f, - -0.996618576644185070f, - 0.081975879791633108f, -0.996634313643869900f, 0.081784776049585201f, - -0.996650014000160070f, - 0.081593669300544638f, -0.996665677712478160f, 0.081402559551538328f, - -0.996681304780248300f, - 0.081211446809592386f, -0.996696895202896060f, 0.081020331081733912f, - -0.996712448979848010f, - 0.080829212374989468f, -0.996727966110532490f, 0.080638090696385709f, - -0.996743446594378860f, - 0.080446966052950097f, -0.996758890430818000f, 0.080255838451709291f, - -0.996774297619282050f, - 0.080064707899690932f, -0.996789668159204560f, 0.079873574403922148f, - -0.996805002050020320f, - 0.079682437971430126f, -0.996820299291165670f, 0.079491298609242866f, - -0.996835559882078170f, - 0.079300156324387569f, -0.996850783822196610f, 0.079109011123892431f, - -0.996865971110961310f, - 0.078917863014785095f, -0.996881121747813850f, 0.078726712004093313f, - -0.996896235732197210f, - 0.078535558098845590f, -0.996911313063555740f, 0.078344401306069678f, - -0.996926353741335090f, - 0.078153241632794315f, -0.996941357764982160f, 0.077962079086047645f, - -0.996956325133945280f, - 0.077770913672857989f, -0.996971255847674320f, 0.077579745400254363f, - -0.996986149905620180f, - 0.077388574275265049f, -0.997001007307235290f, 0.077197400304919297f, - -0.997015828051973310f, - 0.077006223496245585f, -0.997030612139289450f, 0.076815043856273399f, - -0.997045359568640040f, - 0.076623861392031617f, -0.997060070339482960f, 0.076432676110549283f, - -0.997074744451277310f, - 0.076241488018856149f, -0.997089381903483400f, 0.076050297123981231f, - -0.997103982695563330f, - 0.075859103432954503f, -0.997118546826979980f, 0.075667906952805383f, - -0.997133074297198110f, - 0.075476707690563416f, -0.997147565105683480f, 0.075285505653258880f, - -0.997162019251903290f, - 0.075094300847921291f, -0.997176436735326190f, 0.074903093281581137f, - -0.997190817555421940f, - 0.074711882961268378f, -0.997205161711661850f, 0.074520669894013014f, - -0.997219469203518670f, - 0.074329454086845867f, -0.997233740030466160f, 0.074138235546796952f, - -0.997247974191979860f, - 0.073947014280897269f, -0.997262171687536170f, 0.073755790296177265f, - -0.997276332516613180f, - 0.073564563599667454f, -0.997290456678690210f, 0.073373334198399157f, - -0.997304544173247990f, - 0.073182102099402888f, -0.997318594999768600f, 0.072990867309710133f, - -0.997332609157735470f, - 0.072799629836351618f, -0.997346586646633230f, 0.072608389686359048f, - -0.997360527465947940f, - 0.072417146866763538f, -0.997374431615167030f, 0.072225901384596336f, - -0.997388299093779460f, - 0.072034653246889416f, -0.997402129901275300f, 0.071843402460674000f, - -0.997415924037145960f, - 0.071652149032982254f, -0.997429681500884180f, 0.071460892970845832f, - -0.997443402291984360f, - 0.071269634281296415f, -0.997457086409941910f, 0.071078372971366502f, - -0.997470733854253670f, - 0.070887109048087787f, -0.997484344624417930f, 0.070695842518492924f, - -0.997497918719934210f, - 0.070504573389614009f, -0.997511456140303450f, 0.070313301668483263f, - -0.997524956885027960f, - 0.070122027362133646f, -0.997538420953611230f, 0.069930750477597295f, - -0.997551848345558430f, - 0.069739471021907376f, -0.997565239060375750f, 0.069548189002096472f, - -0.997578593097570800f, - 0.069356904425197236f, -0.997591910456652630f, 0.069165617298243109f, - -0.997605191137131640f, - 0.068974327628266732f, -0.997618435138519550f, 0.068783035422301728f, - -0.997631642460329320f, - 0.068591740687380900f, -0.997644813102075420f, 0.068400443430538069f, - -0.997657947063273710f, - 0.068209143658806454f, -0.997671044343441000f, 0.068017841379219388f, - -0.997684104942096030f, - 0.067826536598810966f, -0.997697128858758500f, 0.067635229324614451f, - -0.997710116092949570f, - 0.067443919563664106f, -0.997723066644191640f, 0.067252607322993652f, - -0.997735980512008620f, - 0.067061292609636836f, -0.997748857695925690f, 0.066869975430628226f, - -0.997761698195469560f, - 0.066678655793001543f, -0.997774502010167820f, 0.066487333703791507f, - -0.997787269139549960f, - 0.066296009170032283f, -0.997799999583146470f, 0.066104682198758091f, - -0.997812693340489280f, - 0.065913352797003930f, -0.997825350411111640f, 0.065722020971803977f, - -0.997837970794548280f, - 0.065530686730193397f, -0.997850554490335110f, 0.065339350079206798f, - -0.997863101498009500f, - 0.065148011025878860f, -0.997875611817110150f, 0.064956669577245010f, - -0.997888085447177110f, - 0.064765325740339871f, -0.997900522387751620f, 0.064573979522199065f, - -0.997912922638376610f, - 0.064382630929857410f, -0.997925286198596000f, 0.064191279970350679f, - -0.997937613067955250f, - 0.063999926650714078f, -0.997949903246001190f, 0.063808570977982898f, - -0.997962156732281950f, - 0.063617212959193190f, -0.997974373526346990f, 0.063425852601380200f, - -0.997986553627747020f, - 0.063234489911580136f, -0.997998697036034390f, 0.063043124896828631f, - -0.998010803750762450f, - 0.062851757564161420f, -0.998022873771486240f, 0.062660387920614985f, - -0.998034907097761770f, - 0.062469015973224969f, -0.998046903729146840f, 0.062277641729028041f, - -0.998058863665200250f, - 0.062086265195060247f, -0.998070786905482340f, 0.061894886378357744f, - -0.998082673449554590f, - 0.061703505285957416f, -0.998094523296980010f, 0.061512121924895365f, - -0.998106336447323050f, - 0.061320736302208648f, -0.998118112900149180f, 0.061129348424933755f, - -0.998129852655025520f, - 0.060937958300107238f, -0.998141555711520520f, 0.060746565934766412f, - -0.998153222069203650f, - 0.060555171335947781f, -0.998164851727646240f, 0.060363774510688827f, - -0.998176444686420530f, - 0.060172375466026218f, -0.998188000945100300f, 0.059980974208997596f, - -0.998199520503260660f, - 0.059789570746640007f, -0.998211003360478190f, 0.059598165085990598f, - -0.998222449516330550f, - 0.059406757234087247f, -0.998233858970396850f, 0.059215347197967026f, - -0.998245231722257880f, - 0.059023934984667986f, -0.998256567771495180f, 0.058832520601227581f, - -0.998267867117692110f, - 0.058641104054683348f, -0.998279129760433200f, 0.058449685352073573f, - -0.998290355699304350f, - 0.058258264500435732f, -0.998301544933892890f, 0.058066841506808263f, - -0.998312697463787260f, - 0.057875416378229017f, -0.998323813288577560f, 0.057683989121735932f, - -0.998334892407855000f, - 0.057492559744367684f, -0.998345934821212370f, 0.057301128253162144f, - -0.998356940528243420f, - 0.057109694655158132f, -0.998367909528543820f, 0.056918258957393907f, - -0.998378841821709990f, - 0.056726821166907783f, -0.998389737407340160f, 0.056535381290738825f, - -0.998400596285033640f, - 0.056343939335925283f, -0.998411418454391300f, 0.056152495309506383f, - -0.998422203915015020f, - 0.055961049218520520f, -0.998432952666508440f, 0.055769601070007072f, - -0.998443664708476340f, - 0.055578150871004817f, -0.998454340040524800f, 0.055386698628552604f, - -0.998464978662261250f, - 0.055195244349690031f, -0.998475580573294770f, 0.055003788041455885f, - -0.998486145773235360f, - 0.054812329710889909f, -0.998496674261694640f, 0.054620869365031251f, - -0.998507166038285490f, - 0.054429407010919147f, -0.998517621102622210f, 0.054237942655593556f, - -0.998528039454320230f, - 0.054046476306093640f, -0.998538421092996730f, 0.053855007969459509f, - -0.998548766018269920f, - 0.053663537652730679f, -0.998559074229759310f, 0.053472065362946755f, - -0.998569345727086110f, - 0.053280591107148056f, -0.998579580509872500f, 0.053089114892374119f, - -0.998589778577742230f, - 0.052897636725665401f, -0.998599939930320370f, 0.052706156614061798f, - -0.998610064567233340f, - 0.052514674564603257f, -0.998620152488108870f, 0.052323190584330471f, - -0.998630203692576050f, - 0.052131704680283317f, -0.998640218180265270f, 0.051940216859502626f, - -0.998650195950808280f, - 0.051748727129028414f, -0.998660137003838490f, 0.051557235495901653f, - -0.998670041338990070f, - 0.051365741967162731f, -0.998679908955899090f, 0.051174246549852087f, - -0.998689739854202620f, - 0.050982749251010900f, -0.998699534033539280f, 0.050791250077679546f, - -0.998709291493549030f, - 0.050599749036899337f, -0.998719012233872940f, 0.050408246135710995f, - -0.998728696254153720f, - 0.050216741381155325f, -0.998738343554035230f, 0.050025234780273840f, - -0.998747954133162860f, - 0.049833726340107257f, -0.998757527991183340f, 0.049642216067697226f, - -0.998767065127744380f, - 0.049450703970084824f, -0.998776565542495610f, 0.049259190054311168f, - -0.998786029235087640f, - 0.049067674327418126f, -0.998795456205172410f, 0.048876156796446746f, - -0.998804846452403420f, - 0.048684637468439020f, -0.998814199976435390f, 0.048493116350436342f, - -0.998823516776924380f, - 0.048301593449480172f, -0.998832796853527990f, 0.048110068772612716f, - -0.998842040205904840f, - 0.047918542326875327f, -0.998851246833715180f, 0.047727014119310344f, - -0.998860416736620520f, - 0.047535484156959261f, -0.998869549914283560f, 0.047343952446864526f, - -0.998878646366368690f, - 0.047152418996068000f, -0.998887706092541290f, 0.046960883811611599f, - -0.998896729092468410f, - 0.046769346900537960f, -0.998905715365818290f, 0.046577808269888908f, - -0.998914664912260440f, - 0.046386267926707213f, -0.998923577731465780f, 0.046194725878035046f, - -0.998932453823106690f, - 0.046003182130914644f, -0.998941293186856870f, 0.045811636692388955f, - -0.998950095822391250f, - 0.045620089569500123f, -0.998958861729386080f, 0.045428540769291224f, - -0.998967590907519300f, - 0.045236990298804750f, -0.998976283356469820f, 0.045045438165083225f, - -0.998984939075918010f, - 0.044853884375169933f, -0.998993558065545680f, 0.044662328936107311f, - -0.999002140325035980f, - 0.044470771854938744f, -0.999010685854073380f, 0.044279213138707016f, - -0.999019194652343460f, - 0.044087652794454979f, -0.999027666719533690f, 0.043896090829226200f, - -0.999036102055332330f, - 0.043704527250063421f, -0.999044500659429290f, 0.043512962064010327f, - -0.999052862531515930f, - 0.043321395278109784f, -0.999061187671284600f, 0.043129826899405595f, - -0.999069476078429330f, - 0.042938256934940959f, -0.999077727752645360f, 0.042746685391759139f, - -0.999085942693629270f, - 0.042555112276904117f, -0.999094120901079070f, 0.042363537597419038f, - -0.999102262374694130f, - 0.042171961360348002f, -0.999110367114174890f, 0.041980383572734502f, - -0.999118435119223490f, - 0.041788804241622082f, -0.999126466389543390f, 0.041597223374055005f, - -0.999134460924839150f, - 0.041405640977076712f, -0.999142418724816910f, 0.041214057057731589f, - -0.999150339789184110f, - 0.041022471623063397f, -0.999158224117649430f, 0.040830884680115968f, - -0.999166071709923000f, - 0.040639296235933854f, -0.999173882565716380f, 0.040447706297560768f, - -0.999181656684742350f, - 0.040256114872041358f, -0.999189394066714920f, 0.040064521966419686f, - -0.999197094711349880f, - 0.039872927587739845f, -0.999204758618363890f, 0.039681331743046659f, - -0.999212385787475290f, - 0.039489734439384118f, -0.999219976218403530f, 0.039298135683797149f, - -0.999227529910869610f, - 0.039106535483329839f, -0.999235046864595850f, 0.038914933845027241f, - -0.999242527079305830f, - 0.038723330775933762f, -0.999249970554724420f, 0.038531726283093877f, - -0.999257377290578060f, - 0.038340120373552791f, -0.999264747286594420f, 0.038148513054354856f, - -0.999272080542502610f, - 0.037956904332545366f, -0.999279377058032710f, 0.037765294215169005f, - -0.999286636832916740f, - 0.037573682709270514f, -0.999293859866887790f, 0.037382069821895340f, - -0.999301046159680070f, - 0.037190455560088091f, -0.999308195711029470f, 0.036998839930894332f, - -0.999315308520673070f, - 0.036807222941358991f, -0.999322384588349540f, 0.036615604598527057f, - -0.999329423913798420f, - 0.036423984909444228f, -0.999336426496761240f, 0.036232363881155374f, - -0.999343392336980220f, - 0.036040741520706299f, -0.999350321434199440f, 0.035849117835142184f, - -0.999357213788164000f, - 0.035657492831508264f, -0.999364069398620550f, 0.035465866516850478f, - -0.999370888265317060f, - 0.035274238898213947f, -0.999377670388002850f, 0.035082609982644702f, - -0.999384415766428560f, - 0.034890979777187955f, -0.999391124400346050f, 0.034699348288889847f, - -0.999397796289508640f, - 0.034507715524795889f, -0.999404431433671300f, 0.034316081491951658f, - -0.999411029832589780f, - 0.034124446197403423f, -0.999417591486021720f, 0.033932809648196623f, - -0.999424116393725640f, - 0.033741171851377642f, -0.999430604555461730f, 0.033549532813992221f, - -0.999437055970991530f, - 0.033357892543086159f, -0.999443470640077770f, 0.033166251045705968f, - -0.999449848562484530f, - 0.032974608328897315f, -0.999456189737977340f, 0.032782964399706793f, - -0.999462494166323160f, - 0.032591319265180385f, -0.999468761847290050f, 0.032399672932364114f, - -0.999474992780647780f, - 0.032208025408304704f, -0.999481186966166950f, 0.032016376700048046f, - -0.999487344403620080f, - 0.031824726814640963f, -0.999493465092780590f, 0.031633075759129645f, - -0.999499549033423640f, - 0.031441423540560343f, -0.999505596225325310f, 0.031249770165979990f, - -0.999511606668263440f, - 0.031058115642434700f, -0.999517580362016990f, 0.030866459976971503f, - -0.999523517306366350f, - 0.030674803176636581f, -0.999529417501093140f, 0.030483145248477058f, - -0.999535280945980540f, - 0.030291486199539423f, -0.999541107640812940f, 0.030099826036870208f, - -0.999546897585375960f, - 0.029908164767516655f, -0.999552650779456990f, 0.029716502398525156f, - -0.999558367222844300f, - 0.029524838936943035f, -0.999564046915327740f, 0.029333174389816984f, - -0.999569689856698580f, - 0.029141508764193740f, -0.999575296046749220f, 0.028949842067120746f, - -0.999580865485273700f, - 0.028758174305644590f, -0.999586398172067070f, 0.028566505486812797f, - -0.999591894106925950f, - 0.028374835617672258f, -0.999597353289648380f, 0.028183164705269902f, - -0.999602775720033530f, - 0.027991492756653365f, -0.999608161397882110f, 0.027799819778869434f, - -0.999613510322995950f, - 0.027608145778965820f, -0.999618822495178640f, 0.027416470763989606f, - -0.999624097914234570f, - 0.027224794740987910f, -0.999629336579970110f, 0.027033117717008563f, - -0.999634538492192300f, - 0.026841439699098527f, -0.999639703650710200f, 0.026649760694305708f, - -0.999644832055333610f, - 0.026458080709677145f, -0.999649923705874240f, 0.026266399752260809f, - -0.999654978602144690f, - 0.026074717829104040f, -0.999659996743959220f, 0.025883034947254208f, - -0.999664978131133310f, - 0.025691351113759395f, -0.999669922763483760f, 0.025499666335666818f, - -0.999674830640828740f, - 0.025307980620024630f, -0.999679701762987930f, 0.025116293973880335f, - -0.999684536129782140f, - 0.024924606404281485f, -0.999689333741033640f, 0.024732917918276334f, - -0.999694094596566000f, - 0.024541228522912264f, -0.999698818696204250f, 0.024349538225237600f, - -0.999703506039774650f, - 0.024157847032300020f, -0.999708156627104880f, 0.023966154951147241f, - -0.999712770458023870f, - 0.023774461988827676f, -0.999717347532362190f, 0.023582768152388880f, - -0.999721887849951310f, - 0.023391073448879338f, -0.999726391410624470f, 0.023199377885346890f, - -0.999730858214216030f, - 0.023007681468839410f, -0.999735288260561680f, 0.022815984206405477f, - -0.999739681549498660f, - 0.022624286105092803f, -0.999744038080865430f, 0.022432587171950024f, - -0.999748357854501780f, - 0.022240887414024919f, -0.999752640870248840f, 0.022049186838366180f, - -0.999756887127949080f, - 0.021857485452021874f, -0.999761096627446610f, 0.021665783262040089f, - -0.999765269368586450f, - 0.021474080275469605f, -0.999769405351215280f, 0.021282376499358355f, - -0.999773504575180990f, - 0.021090671940755180f, -0.999777567040332940f, 0.020898966606708289f, - -0.999781592746521670f, - 0.020707260504265912f, -0.999785581693599210f, 0.020515553640476986f, - -0.999789533881418780f, - 0.020323846022389572f, -0.999793449309835270f, 0.020132137657052664f, - -0.999797327978704690f, - 0.019940428551514598f, -0.999801169887884260f, 0.019748718712823757f, - -0.999804975037232870f, - 0.019557008148029204f, -0.999808743426610520f, 0.019365296864179146f, - -0.999812475055878780f, - 0.019173584868322699f, -0.999816169924900410f, 0.018981872167508348f, - -0.999819828033539420f, - 0.018790158768784596f, -0.999823449381661570f, 0.018598444679200642f, - -0.999827033969133420f, - 0.018406729905804820f, -0.999830581795823400f, 0.018215014455646376f, - -0.999834092861600960f, - 0.018023298335773701f, -0.999837567166337090f, 0.017831581553236088f, - -0.999841004709904000f, - 0.017639864115082195f, -0.999844405492175240f, 0.017448146028360704f, - -0.999847769513025900f, - 0.017256427300120978f, -0.999851096772332190f, 0.017064707937411529f, - -0.999854387269971890f, - 0.016872987947281773f, -0.999857641005823860f, 0.016681267336780482f, - -0.999860857979768540f, - 0.016489546112956454f, -0.999864038191687680f, 0.016297824282859176f, - -0.999867181641464380f, - 0.016106101853537263f, -0.999870288328982950f, 0.015914378832040249f, - -0.999873358254129260f, - 0.015722655225417017f, -0.999876391416790410f, 0.015530931040716478f, - -0.999879387816854930f, - 0.015339206284988220f, -0.999882347454212560f, 0.015147480965280975f, - -0.999885270328754520f, - 0.014955755088644378f, -0.999888156440373320f, 0.014764028662127416f, - -0.999891005788962950f, - 0.014572301692779104f, -0.999893818374418490f, 0.014380574187649138f, - -0.999896594196636680f, - 0.014188846153786343f, -0.999899333255515390f, 0.013997117598240459f, - -0.999902035550953920f, - 0.013805388528060349f, -0.999904701082852900f, 0.013613658950295789f, - -0.999907329851114300f, - 0.013421928871995907f, -0.999909921855641540f, 0.013230198300209845f, - -0.999912477096339240f, - 0.013038467241987433f, -0.999914995573113470f, 0.012846735704377631f, - -0.999917477285871770f, - 0.012655003694430301f, -0.999919922234522750f, 0.012463271219194662f, - -0.999922330418976490f, - 0.012271538285719944f, -0.999924701839144500f, 0.012079804901056066f, - -0.999927036494939640f, - 0.011888071072252072f, -0.999929334386276070f, 0.011696336806357907f, - -0.999931595513069200f, - 0.011504602110422875f, -0.999933819875236000f, 0.011312866991496287f, - -0.999936007472694620f, - 0.011121131456628141f, -0.999938158305364590f, 0.010929395512867561f, - -0.999940272373166960f, - 0.010737659167264572f, -0.999942349676023910f, 0.010545922426868548f, - -0.999944390213859060f, - 0.010354185298728884f, -0.999946393986597460f, 0.010162447789895645f, - -0.999948360994165400f, - 0.009970709907418029f, -0.999950291236490480f, 0.009778971658346134f, - -0.999952184713501780f, - 0.009587233049729183f, -0.999954041425129780f, 0.009395494088617302f, - -0.999955861371306100f, - 0.009203754782059960f, -0.999957644551963900f, 0.009012015137106642f, - -0.999959390967037450f, - 0.008820275160807512f, -0.999961100616462820f, 0.008628534860211857f, - -0.999962773500176930f, - 0.008436794242369860f, -0.999964409618118280f, 0.008245053314331058f, - -0.999966008970226920f, - 0.008053312083144991f, -0.999967571556443780f, 0.007861570555861883f, - -0.999969097376711580f, - 0.007669828739531077f, -0.999970586430974140f, 0.007478086641202815f, - -0.999972038719176730f, - 0.007286344267926684f, -0.999973454241265940f, 0.007094601626752279f, - -0.999974832997189810f, - 0.006902858724729877f, -0.999976174986897610f, 0.006711115568908869f, - -0.999977480210339940f, - 0.006519372166339549f, -0.999978748667468830f, 0.006327628524071549f, - -0.999979980358237650f, - 0.006135884649154515f, -0.999981175282601110f, 0.005944140548638765f, - -0.999982333440515350f, - 0.005752396229573737f, -0.999983454831937730f, 0.005560651699009764f, - -0.999984539456826970f, - 0.005368906963996303f, -0.999985587315143200f, 0.005177162031583702f, - -0.999986598406848000f, - 0.004985416908821652f, -0.999987572731904080f, 0.004793671602759852f, - -0.999988510290275690f, - 0.004601926120448672f, -0.999989411081928400f, 0.004410180468937601f, - -0.999990275106828920f, - 0.004218434655277024f, -0.999991102364945590f, 0.004026688686516664f, - -0.999991892856248010f, - 0.003834942569706248f, -0.999992646580707190f, 0.003643196311896179f, - -0.999993363538295150f, - 0.003451449920135975f, -0.999994043728985820f, 0.003259703401476044f, - -0.999994687152754080f, - 0.003067956762966138f, -0.999995293809576190f, 0.002876210011656010f, - -0.999995863699429940f, - 0.002684463154596083f, -0.999996396822294350f, 0.002492716198835898f, - -0.999996893178149880f, - 0.002300969151425887f, -0.999997352766978210f, 0.002109222019415816f, - -0.999997775588762350f, - 0.001917474809855460f, -0.999998161643486980f, 0.001725727529795258f, - -0.999998510931137790f, - 0.001533980186284766f, -0.999998823451701880f, 0.001342232786374430f, - -0.999999099205167830f, - 0.001150485337113809f, -0.999999338191525530f, 0.000958737845553352f, - -0.999999540410766110f, - 0.000766990318742846f, -0.999999705862882230f, 0.000575242763732077f, - -0.999999834547867670f, - 0.000383495187571497f, -0.999999926465717890f, 0.000191747597310674f, - -0.999999981616429330f -}; - -/** -* \par -* cosFactor tables are generated using the formula :
cos_factors[n] = 2 * cos((2n+1)*pi/(4*N))
-* \par -* C command to generate the table -* \par -*
 for(i = 0; i< N; i++)
-* {
-*    cos_factors[i]= 2 * cos((2*i+1)*c/2);
-* } 
-* \par -* where N is the number of factors to generate and c is pi/(2*N) -*/ -static const float32_t cos_factors_128[128] = { - 0.999981175282601110f, 0.999830581795823400f, 0.999529417501093140f, - 0.999077727752645360f, - 0.998475580573294770f, 0.997723066644191640f, 0.996820299291165670f, - 0.995767414467659820f, - 0.994564570734255420f, 0.993211949234794500f, 0.991709753669099530f, - 0.990058210262297120f, - 0.988257567730749460f, 0.986308097244598670f, 0.984210092386929030f, - 0.981963869109555240f, - 0.979569765685440520f, 0.977028142657754390f, 0.974339382785575860f, - 0.971503890986251780f, - 0.968522094274417380f, 0.965394441697689400f, 0.962121404269041580f, - 0.958703474895871600f, - 0.955141168305770780f, 0.951435020969008340f, 0.947585591017741090f, - 0.943593458161960390f, - 0.939459223602189920f, 0.935183509938947610f, 0.930766961078983710f, - 0.926210242138311380f, - 0.921514039342042010f, 0.916679059921042700f, 0.911706032005429880f, - 0.906595704514915330f, - 0.901348847046022030f, 0.895966249756185220f, 0.890448723244757880f, - 0.884797098430937790f, - 0.879012226428633530f, 0.873094978418290090f, 0.867046245515692650f, - 0.860866938637767310f, - 0.854557988365400530f, 0.848120344803297230f, 0.841554977436898440f, - 0.834862874986380010f, - 0.828045045257755800f, 0.821102514991104650f, 0.814036329705948410f, - 0.806847553543799330f, - 0.799537269107905010f, 0.792106577300212390f, 0.784556597155575240f, - 0.776888465673232440f, - 0.769103337645579700f, 0.761202385484261780f, 0.753186799043612520f, - 0.745057785441466060f, - 0.736816568877369900f, 0.728464390448225200f, 0.720002507961381650f, - 0.711432195745216430f, - 0.702754744457225300f, 0.693971460889654000f, 0.685083667772700360f, - 0.676092703575316030f, - 0.666999922303637470f, 0.657806693297078640f, 0.648514401022112550f, - 0.639124444863775730f, - 0.629638238914927100f, 0.620057211763289210f, 0.610382806276309480f, - 0.600616479383868970f, - 0.590759701858874280f, 0.580813958095764530f, 0.570780745886967370f, - 0.560661576197336030f, - 0.550457972936604810f, 0.540171472729892970f, 0.529803624686294830f, - 0.519355990165589530f, - 0.508830142543106990f, 0.498227666972781870f, 0.487550160148436050f, - 0.476799230063322250f, - 0.465976495767966130f, 0.455083587126343840f, 0.444122144570429260f, - 0.433093818853152010f, - 0.422000270799799790f, 0.410843171057903910f, 0.399624199845646790f, - 0.388345046698826300f, - 0.377007410216418310f, 0.365612997804773960f, 0.354163525420490510f, - 0.342660717311994380f, - 0.331106305759876430f, 0.319502030816015750f, 0.307849640041534980f, - 0.296150888243623960f, - 0.284407537211271820f, 0.272621355449948980f, 0.260794117915275570f, - 0.248927605745720260f, - 0.237023605994367340f, 0.225083911359792780f, 0.213110319916091360f, - 0.201104634842091960f, - 0.189068664149806280f, 0.177004220412148860f, 0.164913120489970090f, - 0.152797185258443410f, - 0.140658239332849240f, 0.128498110793793220f, 0.116318630911904880f, - 0.104121633872054730f, - 0.091908956497132696f, 0.079682437971430126f, 0.067443919563664106f, - 0.055195244349690031f, - 0.042938256934940959f, 0.030674803176636581f, 0.018406729905804820f, - 0.006135884649154515f -}; - -static const float32_t cos_factors_512[512] = { - 0.999998823451701880f, 0.999989411081928400f, 0.999970586430974140f, - 0.999942349676023910f, - 0.999904701082852900f, 0.999857641005823860f, 0.999801169887884260f, - 0.999735288260561680f, - 0.999659996743959220f, 0.999575296046749220f, 0.999481186966166950f, - 0.999377670388002850f, - 0.999264747286594420f, 0.999142418724816910f, 0.999010685854073380f, - 0.998869549914283560f, - 0.998719012233872940f, 0.998559074229759310f, 0.998389737407340160f, - 0.998211003360478190f, - 0.998022873771486240f, 0.997825350411111640f, 0.997618435138519550f, - 0.997402129901275300f, - 0.997176436735326190f, 0.996941357764982160f, 0.996696895202896060f, - 0.996443051350042630f, - 0.996179828595696980f, 0.995907229417411720f, 0.995625256380994310f, - 0.995333912140482280f, - 0.995033199438118630f, 0.994723121104325700f, 0.994403680057679100f, - 0.994074879304879370f, - 0.993736721940724600f, 0.993389211148080650f, 0.993032350197851410f, - 0.992666142448948020f, - 0.992290591348257370f, 0.991905700430609330f, 0.991511473318743900f, - 0.991107913723276890f, - 0.990695025442664630f, 0.990272812363169110f, 0.989841278458820530f, - 0.989400427791380380f, - 0.988950264510302990f, 0.988490792852696590f, 0.988022017143283530f, - 0.987543941794359230f, - 0.987056571305750970f, 0.986559910264775410f, 0.986053963346195440f, - 0.985538735312176060f, - 0.985014231012239840f, 0.984480455383220930f, 0.983937413449218920f, - 0.983385110321551180f, - 0.982823551198705240f, 0.982252741366289370f, 0.981672686196983110f, - 0.981083391150486710f, - 0.980484861773469380f, 0.979877103699517640f, 0.979260122649082020f, - 0.978633924429423210f, - 0.977998514934557140f, 0.977353900145199960f, 0.976700086128711840f, - 0.976037079039039020f, - 0.975364885116656980f, 0.974683510688510670f, 0.973992962167955830f, - 0.973293246054698250f, - 0.972584368934732210f, 0.971866337480279400f, 0.971139158449725090f, - 0.970402838687555500f, - 0.969657385124292450f, 0.968902804776428870f, 0.968139104746362440f, - 0.967366292222328510f, - 0.966584374478333120f, 0.965793358874083680f, 0.964993252854920320f, - 0.964184063951745830f, - 0.963365799780954050f, 0.962538468044359160f, 0.961702076529122540f, - 0.960856633107679660f, - 0.960002145737665960f, 0.959138622461841890f, 0.958266071408017670f, - 0.957384500788975860f, - 0.956493918902395100f, 0.955594334130771110f, 0.954685754941338340f, - 0.953768189885990330f, - 0.952841647601198720f, 0.951906136807932350f, 0.950961666311575080f, - 0.950008245001843000f, - 0.949045881852700560f, 0.948074585922276230f, 0.947094366352777220f, - 0.946105232370403450f, - 0.945107193285260610f, 0.944100258491272660f, 0.943084437466093490f, - 0.942059739771017310f, - 0.941026175050889260f, 0.939983753034014050f, 0.938932483532064600f, - 0.937872376439989890f, - 0.936803441735921560f, 0.935725689481080370f, 0.934639129819680780f, - 0.933543772978836170f, - 0.932439629268462360f, 0.931326709081180430f, 0.930205022892219070f, - 0.929074581259315860f, - 0.927935394822617890f, 0.926787474304581750f, 0.925630830509872720f, - 0.924465474325262600f, - 0.923291416719527640f, 0.922108668743345180f, 0.920917241529189520f, - 0.919717146291227360f, - 0.918508394325212250f, 0.917290997008377910f, 0.916064965799331720f, - 0.914830312237946200f, - 0.913587047945250810f, 0.912335184623322750f, 0.911074734055176360f, - 0.909805708104652220f, - 0.908528118716306120f, 0.907241977915295820f, 0.905947297807268460f, - 0.904644090578246240f, - 0.903332368494511820f, 0.902012143902493180f, 0.900683429228646970f, - 0.899346236979341570f, - 0.898000579740739880f, 0.896646470178680150f, 0.895283921038557580f, - 0.893912945145203250f, - 0.892533555402764580f, 0.891145764794583180f, 0.889749586383072780f, - 0.888345033309596350f, - 0.886932118794342190f, 0.885510856136199950f, 0.884081258712634990f, - 0.882643339979562790f, - 0.881197113471222090f, 0.879742592800047410f, 0.878279791656541580f, - 0.876808723809145650f, - 0.875329403104110890f, 0.873841843465366860f, 0.872346058894391540f, - 0.870842063470078980f, - 0.869329871348606840f, 0.867809496763303320f, 0.866280954024512990f, - 0.864744257519462380f, - 0.863199421712124160f, 0.861646461143081300f, 0.860085390429390140f, - 0.858516224264442740f, - 0.856938977417828760f, 0.855353664735196030f, 0.853760301138111410f, - 0.852158901623919830f, - 0.850549481265603480f, 0.848932055211639610f, 0.847306638685858320f, - 0.845673246987299070f, - 0.844031895490066410f, 0.842382599643185850f, 0.840725374970458070f, - 0.839060237070312740f, - 0.837387201615661940f, 0.835706284353752600f, 0.834017501106018130f, - 0.832320867767929680f, - 0.830616400308846310f, 0.828904114771864870f, 0.827184027273669130f, - 0.825456154004377550f, - 0.823720511227391430f, 0.821977115279241550f, 0.820225982569434690f, - 0.818467129580298660f, - 0.816700572866827850f, 0.814926329056526620f, 0.813144414849253590f, - 0.811354847017063730f, - 0.809557642404051260f, 0.807752817926190360f, 0.805940390571176280f, - 0.804120377398265810f, - 0.802292795538115720f, 0.800457662192622820f, 0.798614994634760820f, - 0.796764810208418830f, - 0.794907126328237010f, 0.793041960479443640f, 0.791169330217690200f, - 0.789289253168885650f, - 0.787401747029031430f, 0.785506829564053930f, 0.783604518609638200f, - 0.781694832071059390f, - 0.779777787923014550f, 0.777853404209453150f, 0.775921699043407690f, - 0.773982690606822900f, - 0.772036397150384520f, 0.770082836993347900f, 0.768122028523365420f, - 0.766153990196312920f, - 0.764178740536116670f, 0.762196298134578900f, 0.760206681651202420f, - 0.758209909813015280f, - 0.756206001414394540f, 0.754194975316889170f, 0.752176850449042810f, - 0.750151645806215070f, - 0.748119380450403600f, 0.746080073510063780f, 0.744033744179929290f, - 0.741980411720831070f, - 0.739920095459516200f, 0.737852814788465980f, 0.735778589165713590f, - 0.733697438114660370f, - 0.731609381223892630f, 0.729514438146997010f, 0.727412628602375770f, - 0.725303972373060770f, - 0.723188489306527460f, 0.721066199314508110f, 0.718937122372804490f, - 0.716801278521099540f, - 0.714658687862769090f, 0.712509370564692320f, 0.710353346857062420f, - 0.708190637033195400f, - 0.706021261449339740f, 0.703845240524484940f, 0.701662594740168570f, - 0.699473344640283770f, - 0.697277510830886630f, 0.695075113980000880f, 0.692866174817424740f, - 0.690650714134534720f, - 0.688428752784090550f, 0.686200311680038700f, 0.683965411797315510f, - 0.681724074171649820f, - 0.679476319899365080f, 0.677222170137180450f, 0.674961646102012040f, - 0.672694769070772970f, - 0.670421560380173090f, 0.668142041426518560f, 0.665856233665509720f, - 0.663564158612039880f, - 0.661265837839992270f, 0.658961292982037320f, 0.656650545729429050f, - 0.654333617831800550f, - 0.652010531096959500f, 0.649681307390683190f, 0.647345968636512060f, - 0.645004536815544040f, - 0.642657033966226860f, 0.640303482184151670f, 0.637943903621844170f, - 0.635578320488556230f, - 0.633206755050057190f, 0.630829229628424470f, 0.628445766601832710f, - 0.626056388404343520f, - 0.623661117525694640f, 0.621259976511087660f, 0.618852987960976320f, - 0.616440174530853650f, - 0.614021558931038490f, 0.611597163926462020f, 0.609167012336453210f, - 0.606731127034524480f, - 0.604289530948156070f, 0.601842247058580030f, 0.599389298400564540f, - 0.596930708062196500f, - 0.594466499184664540f, 0.591996694962040990f, 0.589521318641063940f, - 0.587040393520918080f, - 0.584553942953015330f, 0.582061990340775550f, 0.579564559139405740f, - 0.577061672855679550f, - 0.574553355047715760f, 0.572039629324757050f, 0.569520519346947250f, - 0.566996048825108680f, - 0.564466241520519500f, 0.561931121244689470f, 0.559390711859136140f, - 0.556845037275160100f, - 0.554294121453620110f, 0.551737988404707450f, 0.549176662187719770f, - 0.546610166910834860f, - 0.544038526730883930f, 0.541461765853123560f, 0.538879908531008420f, - 0.536292979065963180f, - 0.533701001807152960f, 0.531104001151255000f, 0.528502001542228480f, - 0.525895027471084740f, - 0.523283103475656430f, 0.520666254140367270f, 0.518044504095999340f, - 0.515417878019463150f, - 0.512786400633563070f, 0.510150096706766700f, 0.507508991052970870f, - 0.504863108531267480f, - 0.502212474045710900f, 0.499557112545081890f, 0.496897049022654640f, - 0.494232308515959730f, - 0.491562916106550060f, 0.488888896919763230f, 0.486210276124486530f, - 0.483527078932918740f, - 0.480839330600333900f, 0.478147056424843120f, 0.475450281747155870f, - 0.472749031950342900f, - 0.470043332459595620f, 0.467333208741988530f, 0.464618686306237820f, - 0.461899790702462840f, - 0.459176547521944150f, 0.456448982396883860f, 0.453717121000163930f, - 0.450980989045103810f, - 0.448240612285220000f, 0.445496016513981740f, 0.442747227564570130f, - 0.439994271309633260f, - 0.437237173661044200f, 0.434475960569655710f, 0.431710658025057370f, - 0.428941292055329550f, - 0.426167888726799620f, 0.423390474143796100f, 0.420609074448402510f, - 0.417823715820212380f, - 0.415034424476081630f, 0.412241226669883000f, 0.409444148692257590f, - 0.406643216870369140f, - 0.403838457567654130f, 0.401029897183575790f, 0.398217562153373620f, - 0.395401478947816300f, - 0.392581674072951530f, 0.389758174069856410f, 0.386931005514388690f, - 0.384100195016935040f, - 0.381265769222162490f, 0.378427754808765620f, 0.375586178489217330f, - 0.372741067009515810f, - 0.369892447148934270f, 0.367040345719767240f, 0.364184789567079840f, - 0.361325805568454340f, - 0.358463420633736540f, 0.355597661704783960f, 0.352728555755210730f, - 0.349856129790135030f, - 0.346980410845923680f, 0.344101425989938980f, 0.341219202320282410f, - 0.338333766965541290f, - 0.335445147084531660f, 0.332553369866044220f, 0.329658462528587550f, - 0.326760452320131790f, - 0.323859366517852960f, 0.320955232427875210f, 0.318048077385015060f, - 0.315137928752522440f, - 0.312224813921825050f, 0.309308760312268780f, 0.306389795370861080f, - 0.303467946572011370f, - 0.300543241417273400f, 0.297615707435086310f, 0.294685372180514330f, - 0.291752263234989370f, - 0.288816408206049480f, 0.285877834727080730f, 0.282936570457055390f, - 0.279992643080273380f, - 0.277046080306099950f, 0.274096909868706330f, 0.271145159526808070f, - 0.268190857063403180f, - 0.265234030285511900f, 0.262274707023913590f, 0.259312915132886350f, - 0.256348682489942910f, - 0.253382036995570270f, 0.250413006572965280f, 0.247441619167773440f, - 0.244467902747824210f, - 0.241491885302869300f, 0.238513594844318500f, 0.235533059404975460f, - 0.232550307038775330f, - 0.229565365820518870f, 0.226578263845610110f, 0.223589029229790020f, - 0.220597690108873650f, - 0.217604274638483670f, 0.214608810993786920f, 0.211611327369227610f, - 0.208611851978263460f, - 0.205610413053099320f, 0.202607038844421110f, 0.199601757621131050f, - 0.196594597670080220f, - 0.193585587295803750f, 0.190574754820252800f, 0.187562128582529740f, - 0.184547736938619640f, - 0.181531608261125130f, 0.178513770938997590f, 0.175494253377271400f, - 0.172473083996796030f, - 0.169450291233967930f, 0.166425903540464220f, 0.163399949382973230f, - 0.160372457242928400f, - 0.157343455616238280f, 0.154312973013020240f, 0.151281037957330250f, - 0.148247678986896200f, - 0.145212924652847520f, 0.142176803519448000f, 0.139139344163826280f, - 0.136100575175706200f, - 0.133060525157139180f, 0.130019222722233350f, 0.126976696496885980f, - 0.123932975118512200f, - 0.120888087235777220f, 0.117842061508325020f, 0.114794926606510250f, - 0.111746711211126660f, - 0.108697444013138670f, 0.105647153713410700f, 0.102595869022436280f, - 0.099543618660069444f, - 0.096490431355252607f, 0.093436335845747912f, 0.090381360877865011f, - 0.087325535206192226f, - 0.084268887593324127f, 0.081211446809592386f, 0.078153241632794315f, - 0.075094300847921291f, - 0.072034653246889416f, 0.068974327628266732f, 0.065913352797003930f, - 0.062851757564161420f, - 0.059789570746640007f, 0.056726821166907783f, 0.053663537652730679f, - 0.050599749036899337f, - 0.047535484156959261f, 0.044470771854938744f, 0.041405640977076712f, - 0.038340120373552791f, - 0.035274238898213947f, 0.032208025408304704f, 0.029141508764193740f, - 0.026074717829104040f, - 0.023007681468839410f, 0.019940428551514598f, 0.016872987947281773f, - 0.013805388528060349f, - 0.010737659167264572f, 0.007669828739531077f, 0.004601926120448672f, - 0.001533980186284766f -}; - -static const float32_t cos_factors_2048[2048] = { - 0.999999926465717890f, 0.999999338191525530f, 0.999998161643486980f, - 0.999996396822294350f, - 0.999994043728985820f, 0.999991102364945590f, 0.999987572731904080f, - 0.999983454831937730f, - 0.999978748667468830f, 0.999973454241265940f, 0.999967571556443780f, - 0.999961100616462820f, - 0.999954041425129780f, 0.999946393986597460f, 0.999938158305364590f, - 0.999929334386276070f, - 0.999919922234522750f, 0.999909921855641540f, 0.999899333255515390f, - 0.999888156440373320f, - 0.999876391416790410f, 0.999864038191687680f, 0.999851096772332190f, - 0.999837567166337090f, - 0.999823449381661570f, 0.999808743426610520f, 0.999793449309835270f, - 0.999777567040332940f, - 0.999761096627446610f, 0.999744038080865430f, 0.999726391410624470f, - 0.999708156627104880f, - 0.999689333741033640f, 0.999669922763483760f, 0.999649923705874240f, - 0.999629336579970110f, - 0.999608161397882110f, 0.999586398172067070f, 0.999564046915327740f, - 0.999541107640812940f, - 0.999517580362016990f, 0.999493465092780590f, 0.999468761847290050f, - 0.999443470640077770f, - 0.999417591486021720f, 0.999391124400346050f, 0.999364069398620550f, - 0.999336426496761240f, - 0.999308195711029470f, 0.999279377058032710f, 0.999249970554724420f, - 0.999219976218403530f, - 0.999189394066714920f, 0.999158224117649430f, 0.999126466389543390f, - 0.999094120901079070f, - 0.999061187671284600f, 0.999027666719533690f, 0.998993558065545680f, - 0.998958861729386080f, - 0.998923577731465780f, 0.998887706092541290f, 0.998851246833715180f, - 0.998814199976435390f, - 0.998776565542495610f, 0.998738343554035230f, 0.998699534033539280f, - 0.998660137003838490f, - 0.998620152488108870f, 0.998579580509872500f, 0.998538421092996730f, - 0.998496674261694640f, - 0.998454340040524800f, 0.998411418454391300f, 0.998367909528543820f, - 0.998323813288577560f, - 0.998279129760433200f, 0.998233858970396850f, 0.998188000945100300f, - 0.998141555711520520f, - 0.998094523296980010f, 0.998046903729146840f, 0.997998697036034390f, - 0.997949903246001190f, - 0.997900522387751620f, 0.997850554490335110f, 0.997799999583146470f, - 0.997748857695925690f, - 0.997697128858758500f, 0.997644813102075420f, 0.997591910456652630f, - 0.997538420953611340f, - 0.997484344624417930f, 0.997429681500884180f, 0.997374431615167150f, - 0.997318594999768600f, - 0.997262171687536170f, 0.997205161711661850f, 0.997147565105683480f, - 0.997089381903483400f, - 0.997030612139289450f, 0.996971255847674320f, 0.996911313063555740f, - 0.996850783822196610f, - 0.996789668159204560f, 0.996727966110532490f, 0.996665677712478160f, - 0.996602803001684130f, - 0.996539342015137940f, 0.996475294790172160f, 0.996410661364464100f, - 0.996345441776035900f, - 0.996279636063254650f, 0.996213244264832040f, 0.996146266419824620f, - 0.996078702567633980f, - 0.996010552748005870f, 0.995941817001031350f, 0.995872495367145730f, - 0.995802587887129160f, - 0.995732094602106430f, 0.995661015553546910f, 0.995589350783264600f, - 0.995517100333418110f, - 0.995444264246510340f, 0.995370842565388990f, 0.995296835333246090f, - 0.995222242593618360f, - 0.995147064390386470f, 0.995071300767776170f, 0.994994951770357020f, - 0.994918017443043200f, - 0.994840497831093180f, 0.994762392980109930f, 0.994683702936040250f, - 0.994604427745175660f, - 0.994524567454151740f, 0.994444122109948040f, 0.994363091759888570f, - 0.994281476451641550f, - 0.994199276233218910f, 0.994116491152977070f, 0.994033121259616400f, - 0.993949166602181130f, - 0.993864627230059750f, 0.993779503192984580f, 0.993693794541031790f, - 0.993607501324621610f, - 0.993520623594518090f, 0.993433161401829360f, 0.993345114798006910f, - 0.993256483834846440f, - 0.993167268564487230f, 0.993077469039412300f, 0.992987085312448390f, - 0.992896117436765980f, - 0.992804565465879140f, 0.992712429453645460f, 0.992619709454266140f, - 0.992526405522286100f, - 0.992432517712593660f, 0.992338046080420420f, 0.992242990681341700f, - 0.992147351571276090f, - 0.992051128806485720f, 0.991954322443575950f, 0.991856932539495470f, - 0.991758959151536110f, - 0.991660402337333210f, 0.991561262154865290f, 0.991461538662453790f, - 0.991361231918763460f, - 0.991260341982802440f, 0.991158868913921350f, 0.991056812771814340f, - 0.990954173616518500f, - 0.990850951508413620f, 0.990747146508222710f, 0.990642758677011570f, - 0.990537788076188750f, - 0.990432234767505970f, 0.990326098813057330f, 0.990219380275280000f, - 0.990112079216953770f, - 0.990004195701200910f, 0.989895729791486660f, 0.989786681551618640f, - 0.989677051045747210f, - 0.989566838338365120f, 0.989456043494307710f, 0.989344666578752640f, - 0.989232707657220050f, - 0.989120166795572690f, 0.989007044060015270f, 0.988893339517095130f, - 0.988779053233701520f, - 0.988664185277066230f, 0.988548735714763200f, 0.988432704614708340f, - 0.988316092045159690f, - 0.988198898074717610f, 0.988081122772324070f, 0.987962766207263420f, - 0.987843828449161740f, - 0.987724309567986960f, 0.987604209634049160f, 0.987483528717999710f, - 0.987362266890832400f, - 0.987240424223882250f, 0.987118000788826280f, 0.986994996657682980f, - 0.986871411902812470f, - 0.986747246596916590f, 0.986622500813038480f, 0.986497174624562880f, - 0.986371268105216030f, - 0.986244781329065460f, 0.986117714370520090f, 0.985990067304330140f, - 0.985861840205586980f, - 0.985733033149723490f, 0.985603646212513400f, 0.985473679470071810f, - 0.985343132998854790f, - 0.985212006875659350f, 0.985080301177623800f, 0.984948015982227030f, - 0.984815151367289140f, - 0.984681707410970940f, 0.984547684191773960f, 0.984413081788540700f, - 0.984277900280454370f, - 0.984142139747038570f, 0.984005800268157870f, 0.983868881924017220f, - 0.983731384795162090f, - 0.983593308962478650f, 0.983454654507193270f, 0.983315421510872810f, - 0.983175610055424420f, - 0.983035220223095640f, 0.982894252096474070f, 0.982752705758487830f, - 0.982610581292404750f, - 0.982467878781833170f, 0.982324598310721280f, 0.982180739963357090f, - 0.982036303824369020f, - 0.981891289978725100f, 0.981745698511732990f, 0.981599529509040720f, - 0.981452783056635520f, - 0.981305459240844670f, 0.981157558148334830f, 0.981009079866112630f, - 0.980860024481523870f, - 0.980710392082253970f, 0.980560182756327840f, 0.980409396592109910f, - 0.980258033678303550f, - 0.980106094103951770f, 0.979953577958436740f, 0.979800485331479790f, - 0.979646816313141210f, - 0.979492570993820810f, 0.979337749464256780f, 0.979182351815526930f, - 0.979026378139047580f, - 0.978869828526574120f, 0.978712703070200420f, 0.978555001862359550f, - 0.978396724995823090f, - 0.978237872563701090f, 0.978078444659442380f, 0.977918441376834370f, - 0.977757862810002760f, - 0.977596709053411890f, 0.977434980201864260f, 0.977272676350500860f, - 0.977109797594800880f, - 0.976946344030581670f, 0.976782315753998650f, 0.976617712861545640f, - 0.976452535450054060f, - 0.976286783616693630f, 0.976120457458971910f, 0.975953557074734300f, - 0.975786082562163930f, - 0.975618034019781750f, 0.975449411546446380f, 0.975280215241354220f, - 0.975110445204038890f, - 0.974940101534371830f, 0.974769184332561770f, 0.974597693699155050f, - 0.974425629735034990f, - 0.974252992541422500f, 0.974079782219875680f, 0.973905998872289570f, - 0.973731642600896400f, - 0.973556713508265560f, 0.973381211697303290f, 0.973205137271252800f, - 0.973028490333694210f, - 0.972851270988544180f, 0.972673479340056430f, 0.972495115492821190f, - 0.972316179551765300f, - 0.972136671622152230f, 0.971956591809581720f, 0.971775940219990140f, - 0.971594716959650160f, - 0.971412922135170940f, 0.971230555853497380f, 0.971047618221911100f, - 0.970864109348029470f, - 0.970680029339806130f, 0.970495378305530560f, 0.970310156353828110f, - 0.970124363593660280f, - 0.969938000134323960f, 0.969751066085452140f, 0.969563561557013180f, - 0.969375486659311280f, - 0.969186841502985950f, 0.968997626199012420f, 0.968807840858700970f, - 0.968617485593697540f, - 0.968426560515983190f, 0.968235065737874320f, 0.968043001372022260f, - 0.967850367531413620f, - 0.967657164329369880f, 0.967463391879547550f, 0.967269050295937790f, - 0.967074139692867040f, - 0.966878660184995910f, 0.966682611887320080f, 0.966485994915169840f, - 0.966288809384209690f, - 0.966091055410438830f, 0.965892733110190860f, 0.965693842600133690f, - 0.965494383997269500f, - 0.965294357418934660f, 0.965093762982799590f, 0.964892600806868890f, - 0.964690871009481030f, - 0.964488573709308410f, 0.964285709025357480f, 0.964082277076968140f, - 0.963878277983814200f, - 0.963673711865903230f, 0.963468578843575950f, 0.963262879037507070f, - 0.963056612568704340f, - 0.962849779558509030f, 0.962642380128595710f, 0.962434414400972100f, - 0.962225882497979020f, - 0.962016784542290560f, 0.961807120656913540f, 0.961596890965187860f, - 0.961386095590786250f, - 0.961174734657714080f, 0.960962808290309780f, 0.960750316613243950f, - 0.960537259751520050f, - 0.960323637830473920f, 0.960109450975773940f, 0.959894699313420530f, - 0.959679382969746750f, - 0.959463502071417510f, 0.959247056745430090f, 0.959030047119113660f, - 0.958812473320129310f, - 0.958594335476470220f, 0.958375633716461170f, 0.958156368168758820f, - 0.957936538962351420f, - 0.957716146226558870f, 0.957495190091032570f, 0.957273670685755200f, - 0.957051588141040970f, - 0.956828942587535370f, 0.956605734156215080f, 0.956381962978387730f, - 0.956157629185692140f, - 0.955932732910098280f, 0.955707274283906560f, 0.955481253439748770f, - 0.955254670510586990f, - 0.955027525629714160f, 0.954799818930753720f, 0.954571550547659630f, - 0.954342720614716480f, - 0.954113329266538800f, 0.953883376638071770f, 0.953652862864590500f, - 0.953421788081700310f, - 0.953190152425336670f, 0.952957956031764700f, 0.952725199037579570f, - 0.952491881579706320f, - 0.952258003795399600f, 0.952023565822243570f, 0.951788567798152130f, - 0.951553009861368590f, - 0.951316892150465550f, 0.951080214804345010f, 0.950842977962238160f, - 0.950605181763705340f, - 0.950366826348635780f, 0.950127911857248100f, 0.949888438430089300f, - 0.949648406208035480f, - 0.949407815332291570f, 0.949166665944390700f, 0.948924958186195160f, - 0.948682692199895090f, - 0.948439868128009620f, 0.948196486113385580f, 0.947952546299198670f, - 0.947708048828952100f, - 0.947462993846477700f, 0.947217381495934820f, 0.946971211921810880f, - 0.946724485268921170f, - 0.946477201682408680f, 0.946229361307743820f, 0.945980964290724760f, - 0.945732010777477150f, - 0.945482500914453740f, 0.945232434848435000f, 0.944981812726528150f, - 0.944730634696167800f, - 0.944478900905115550f, 0.944226611501459810f, 0.943973766633615980f, - 0.943720366450326200f, - 0.943466411100659320f, 0.943211900734010620f, 0.942956835500102120f, - 0.942701215548981900f, - 0.942445041031024890f, 0.942188312096931770f, 0.941931028897729620f, - 0.941673191584771360f, - 0.941414800309736340f, 0.941155855224629190f, 0.940896356481780830f, - 0.940636304233847590f, - 0.940375698633811540f, 0.940114539834980280f, 0.939852827990986680f, - 0.939590563255789270f, - 0.939327745783671400f, 0.939064375729241950f, 0.938800453247434770f, - 0.938535978493508560f, - 0.938270951623047190f, 0.938005372791958840f, 0.937739242156476970f, - 0.937472559873159250f, - 0.937205326098887960f, 0.936937540990869900f, 0.936669204706636170f, - 0.936400317404042060f, - 0.936130879241267030f, 0.935860890376814640f, 0.935590350969512370f, - 0.935319261178511610f, - 0.935047621163287430f, 0.934775431083638700f, 0.934502691099687870f, - 0.934229401371880820f, - 0.933955562060986730f, 0.933681173328098410f, 0.933406235334631520f, - 0.933130748242325230f, - 0.932854712213241120f, 0.932578127409764420f, 0.932300993994602760f, - 0.932023312130786490f, - 0.931745081981668720f, 0.931466303710925090f, 0.931186977482553750f, - 0.930907103460875130f, - 0.930626681810531760f, 0.930345712696488470f, 0.930064196284032360f, - 0.929782132738772190f, - 0.929499522226638560f, 0.929216364913884040f, 0.928932660967082820f, - 0.928648410553130520f, - 0.928363613839244370f, 0.928078270992963140f, 0.927792382182146320f, - 0.927505947574975180f, - 0.927218967339951790f, 0.926931441645899130f, 0.926643370661961230f, - 0.926354754557602860f, - 0.926065593502609310f, 0.925775887667086740f, 0.925485637221461490f, - 0.925194842336480530f, - 0.924903503183210910f, 0.924611619933039970f, 0.924319192757675160f, - 0.924026221829143850f, - 0.923732707319793290f, 0.923438649402290370f, 0.923144048249621930f, - 0.922848904035094120f, - 0.922553216932332830f, 0.922256987115283030f, 0.921960214758209220f, - 0.921662900035694730f, - 0.921365043122642340f, 0.921066644194273640f, 0.920767703426128790f, - 0.920468220994067110f, - 0.920168197074266340f, 0.919867631843222950f, 0.919566525477751530f, - 0.919264878154985370f, - 0.918962690052375630f, 0.918659961347691900f, 0.918356692219021720f, - 0.918052882844770380f, - 0.917748533403661250f, 0.917443644074735220f, 0.917138215037350710f, - 0.916832246471183890f, - 0.916525738556228210f, 0.916218691472794220f, 0.915911105401509880f, - 0.915602980523320230f, - 0.915294317019487050f, 0.914985115071589310f, 0.914675374861522390f, - 0.914365096571498560f, - 0.914054280384046570f, 0.913742926482011390f, 0.913431035048554720f, - 0.913118606267154240f, - 0.912805640321603500f, 0.912492137396012650f, 0.912178097674807180f, - 0.911863521342728520f, - 0.911548408584833990f, 0.911232759586496190f, 0.910916574533403360f, - 0.910599853611558930f, - 0.910282597007281760f, 0.909964804907205660f, 0.909646477498279540f, - 0.909327614967767260f, - 0.909008217503247450f, 0.908688285292613360f, 0.908367818524072890f, - 0.908046817386148340f, - 0.907725282067676440f, 0.907403212757808110f, 0.907080609646008450f, - 0.906757472922056550f, - 0.906433802776045460f, 0.906109599398381980f, 0.905784862979786550f, - 0.905459593711293250f, - 0.905133791784249690f, 0.904807457390316540f, 0.904480590721468250f, - 0.904153191969991780f, - 0.903825261328487510f, 0.903496798989868450f, 0.903167805147360720f, - 0.902838279994502830f, - 0.902508223725145940f, 0.902177636533453620f, 0.901846518613901750f, - 0.901514870161278740f, - 0.901182691370684520f, 0.900849982437531450f, 0.900516743557543520f, - 0.900182974926756810f, - 0.899848676741518580f, 0.899513849198487980f, 0.899178492494635330f, - 0.898842606827242370f, - 0.898506192393901950f, 0.898169249392518080f, 0.897831778021305650f, - 0.897493778478790310f, - 0.897155250963808550f, 0.896816195675507300f, 0.896476612813344120f, - 0.896136502577086770f, - 0.895795865166813530f, 0.895454700782912450f, 0.895113009626081760f, - 0.894770791897329550f, - 0.894428047797973800f, 0.894084777529641990f, 0.893740981294271040f, - 0.893396659294107720f, - 0.893051811731707450f, 0.892706438809935390f, 0.892360540731965360f, - 0.892014117701280470f, - 0.891667169921672280f, 0.891319697597241390f, 0.890971700932396860f, - 0.890623180131855930f, - 0.890274135400644600f, 0.889924566944096720f, 0.889574474967854580f, - 0.889223859677868210f, - 0.888872721280395630f, 0.888521059982002260f, 0.888168875989561730f, - 0.887816169510254440f, - 0.887462940751568840f, 0.887109189921300170f, 0.886754917227550840f, - 0.886400122878730600f, - 0.886044807083555600f, 0.885688970051048960f, 0.885332611990540590f, - 0.884975733111666660f, - 0.884618333624369920f, 0.884260413738899190f, 0.883901973665809470f, - 0.883543013615961880f, - 0.883183533800523390f, 0.882823534430966620f, 0.882463015719070150f, - 0.882101977876917580f, - 0.881740421116898320f, 0.881378345651706920f, 0.881015751694342870f, - 0.880652639458111010f, - 0.880289009156621010f, 0.879924861003786860f, 0.879560195213827890f, - 0.879195012001267480f, - 0.878829311580933360f, 0.878463094167957870f, 0.878096359977777130f, - 0.877729109226131570f, - 0.877361342129065140f, 0.876993058902925890f, 0.876624259764365310f, - 0.876254944930338510f, - 0.875885114618103810f, 0.875514769045222850f, 0.875143908429560360f, - 0.874772532989284150f, - 0.874400642942864790f, 0.874028238509075740f, 0.873655319906992630f, - 0.873281887355994210f, - 0.872907941075761080f, 0.872533481286276170f, 0.872158508207824480f, - 0.871783022060993120f, - 0.871407023066670950f, 0.871030511446048260f, 0.870653487420617430f, - 0.870275951212171940f, - 0.869897903042806340f, 0.869519343134916860f, 0.869140271711200560f, - 0.868760688994655310f, - 0.868380595208579800f, 0.867999990576573510f, 0.867618875322536230f, - 0.867237249670668400f, - 0.866855113845470430f, 0.866472468071743050f, 0.866089312574586770f, - 0.865705647579402380f, - 0.865321473311889800f, 0.864936789998049020f, 0.864551597864179340f, - 0.864165897136879300f, - 0.863779688043046720f, 0.863392970809878420f, 0.863005745664870320f, - 0.862618012835816740f, - 0.862229772550811240f, 0.861841025038245330f, 0.861451770526809320f, - 0.861062009245491480f, - 0.860671741423578380f, 0.860280967290654510f, 0.859889687076602290f, - 0.859497901011601730f, - 0.859105609326130450f, 0.858712812250963520f, 0.858319510017173440f, - 0.857925702856129790f, - 0.857531390999499150f, 0.857136574679244980f, 0.856741254127627470f, - 0.856345429577203610f, - 0.855949101260826910f, 0.855552269411646860f, 0.855154934263109620f, - 0.854757096048957220f, - 0.854358755003227440f, 0.853959911360254180f, 0.853560565354666840f, - 0.853160717221390420f, - 0.852760367195645300f, 0.852359515512947090f, 0.851958162409106380f, - 0.851556308120228980f, - 0.851153952882715340f, 0.850751096933260790f, 0.850347740508854980f, - 0.849943883846782210f, - 0.849539527184620890f, 0.849134670760243630f, 0.848729314811817130f, - 0.848323459577801640f, - 0.847917105296951410f, 0.847510252208314330f, 0.847102900551231500f, - 0.846695050565337450f, - 0.846286702490559710f, 0.845877856567119000f, 0.845468513035528830f, - 0.845058672136595470f, - 0.844648334111417820f, 0.844237499201387020f, 0.843826167648186740f, - 0.843414339693792760f, - 0.843002015580472940f, 0.842589195550786710f, 0.842175879847585570f, - 0.841762068714012490f, - 0.841347762393501950f, 0.840932961129779780f, 0.840517665166862550f, - 0.840101874749058400f, - 0.839685590120966110f, 0.839268811527475230f, 0.838851539213765760f, - 0.838433773425308340f, - 0.838015514407863820f, 0.837596762407483040f, 0.837177517670507300f, - 0.836757780443567190f, - 0.836337550973583530f, 0.835916829507766360f, 0.835495616293615350f, - 0.835073911578919410f, - 0.834651715611756440f, 0.834229028640493420f, 0.833805850913786340f, - 0.833382182680579730f, - 0.832958024190106670f, 0.832533375691888680f, 0.832108237435735590f, - 0.831682609671745120f, - 0.831256492650303210f, 0.830829886622083570f, 0.830402791838047550f, - 0.829975208549443950f, - 0.829547137007808910f, 0.829118577464965980f, 0.828689530173025820f, - 0.828259995384385660f, - 0.827829973351729920f, 0.827399464328029470f, 0.826968468566541600f, - 0.826536986320809960f, - 0.826105017844664610f, 0.825672563392221390f, 0.825239623217882250f, - 0.824806197576334330f, - 0.824372286722551250f, 0.823937890911791370f, 0.823503010399598500f, - 0.823067645441801670f, - 0.822631796294514990f, 0.822195463214137170f, 0.821758646457351750f, - 0.821321346281126740f, - 0.820883562942714580f, 0.820445296699652050f, 0.820006547809759680f, - 0.819567316531142230f, - 0.819127603122188240f, 0.818687407841569680f, 0.818246730948242070f, - 0.817805572701444270f, - 0.817363933360698460f, 0.816921813185809480f, 0.816479212436865390f, - 0.816036131374236810f, - 0.815592570258576790f, 0.815148529350820830f, 0.814704008912187080f, - 0.814259009204175270f, - 0.813813530488567190f, 0.813367573027426570f, 0.812921137083098770f, - 0.812474222918210480f, - 0.812026830795669730f, 0.811578960978665890f, 0.811130613730669190f, - 0.810681789315430780f, - 0.810232487996982330f, 0.809782710039636530f, 0.809332455707985950f, - 0.808881725266903610f, - 0.808430518981542720f, 0.807978837117336310f, 0.807526679939997160f, - 0.807074047715517610f, - 0.806620940710169650f, 0.806167359190504420f, 0.805713303423352230f, - 0.805258773675822210f, - 0.804803770215302920f, 0.804348293309460780f, 0.803892343226241260f, - 0.803435920233868120f, - 0.802979024600843250f, 0.802521656595946430f, 0.802063816488235440f, - 0.801605504547046150f, - 0.801146721041991360f, 0.800687466242961610f, 0.800227740420124790f, - 0.799767543843925680f, - 0.799306876785086160f, 0.798845739514604580f, 0.798384132303756380f, - 0.797922055424093000f, - 0.797459509147442460f, 0.796996493745908750f, 0.796533009491872000f, - 0.796069056657987990f, - 0.795604635517188070f, 0.795139746342679590f, 0.794674389407944550f, - 0.794208564986740640f, - 0.793742273353100210f, 0.793275514781330630f, 0.792808289546014120f, - 0.792340597922007170f, - 0.791872440184440470f, 0.791403816608719500f, 0.790934727470523290f, - 0.790465173045804880f, - 0.789995153610791090f, 0.789524669441982190f, 0.789053720816151880f, - 0.788582308010347120f, - 0.788110431301888070f, 0.787638090968367450f, 0.787165287287651010f, - 0.786692020537876790f, - 0.786218290997455660f, 0.785744098945070360f, 0.785269444659675850f, - 0.784794328420499230f, - 0.784318750507038920f, 0.783842711199065230f, 0.783366210776619720f, - 0.782889249520015480f, - 0.782411827709836530f, 0.781933945626937630f, 0.781455603552444590f, - 0.780976801767753750f, - 0.780497540554531910f, 0.780017820194715990f, 0.779537640970513260f, - 0.779057003164400630f, - 0.778575907059125050f, 0.778094352937702790f, 0.777612341083420030f, - 0.777129871779831620f, - 0.776646945310762060f, 0.776163561960304340f, 0.775679722012820650f, - 0.775195425752941420f, - 0.774710673465565550f, 0.774225465435860680f, 0.773739801949261840f, - 0.773253683291472590f, - 0.772767109748463850f, 0.772280081606474320f, 0.771792599152010150f, - 0.771304662671844830f, - 0.770816272453018540f, 0.770327428782838890f, 0.769838131948879840f, - 0.769348382238982280f, - 0.768858179941253270f, 0.768367525344066270f, 0.767876418736060610f, - 0.767384860406141730f, - 0.766892850643480670f, 0.766400389737514230f, 0.765907477977944340f, - 0.765414115654738270f, - 0.764920303058128410f, 0.764426040478612070f, 0.763931328206951090f, - 0.763436166534172010f, - 0.762940555751565720f, 0.762444496150687210f, 0.761947988023355390f, - 0.761451031661653620f, - 0.760953627357928150f, 0.760455775404789260f, 0.759957476095110330f, - 0.759458729722028210f, - 0.758959536578942440f, 0.758459896959515430f, 0.757959811157672300f, - 0.757459279467600720f, - 0.756958302183750490f, 0.756456879600833740f, 0.755955012013824420f, - 0.755452699717958250f, - 0.754949943008732640f, 0.754446742181906440f, 0.753943097533499640f, - 0.753439009359793580f, - 0.752934477957330150f, 0.752429503622912390f, 0.751924086653603550f, - 0.751418227346727470f, - 0.750911925999867890f, 0.750405182910869330f, 0.749897998377835330f, - 0.749390372699129560f, - 0.748882306173375150f, 0.748373799099454560f, 0.747864851776509410f, - 0.747355464503940190f, - 0.746845637581406540f, 0.746335371308826320f, 0.745824665986376090f, - 0.745313521914490520f, - 0.744801939393862630f, 0.744289918725443260f, 0.743777460210440890f, - 0.743264564150321600f, - 0.742751230846809050f, 0.742237460601884000f, 0.741723253717784140f, - 0.741208610497004260f, - 0.740693531242295760f, 0.740178016256666240f, 0.739662065843380010f, - 0.739145680305957510f, - 0.738628859948174840f, 0.738111605074064260f, 0.737593915987913570f, - 0.737075792994265730f, - 0.736557236397919150f, 0.736038246503927350f, 0.735518823617598900f, - 0.734998968044496710f, - 0.734478680090438370f, 0.733957960061495940f, 0.733436808263995710f, - 0.732915225004517780f, - 0.732393210589896040f, 0.731870765327218290f, 0.731347889523825570f, - 0.730824583487312160f, - 0.730300847525525490f, 0.729776681946566090f, 0.729252087058786970f, - 0.728727063170793830f, - 0.728201610591444610f, 0.727675729629849610f, 0.727149420595371020f, - 0.726622683797622850f, - 0.726095519546471000f, 0.725567928152032300f, 0.725039909924675370f, - 0.724511465175019630f, - 0.723982594213935520f, 0.723453297352544380f, 0.722923574902217700f, - 0.722393427174577550f, - 0.721862854481496340f, 0.721331857135096290f, 0.720800435447749190f, - 0.720268589732077190f, - 0.719736320300951030f, 0.719203627467491220f, 0.718670511545067230f, - 0.718136972847297490f, - 0.717603011688049080f, 0.717068628381437480f, 0.716533823241826680f, - 0.715998596583828690f, - 0.715462948722303760f, 0.714926879972359490f, 0.714390390649351390f, - 0.713853481068882470f, - 0.713316151546802610f, 0.712778402399208980f, 0.712240233942445510f, - 0.711701646493102970f, - 0.711162640368018350f, 0.710623215884275020f, 0.710083373359202800f, - 0.709543113110376770f, - 0.709002435455618250f, 0.708461340712994160f, 0.707919829200816310f, - 0.707377901237642100f, - 0.706835557142273860f, 0.706292797233758480f, 0.705749621831387790f, - 0.705206031254697830f, - 0.704662025823468930f, 0.704117605857725430f, 0.703572771677735580f, - 0.703027523604011220f, - 0.702481861957308000f, 0.701935787058624360f, 0.701389299229202230f, - 0.700842398790526230f, - 0.700295086064323780f, 0.699747361372564990f, 0.699199225037462120f, - 0.698650677381469580f, - 0.698101718727283880f, 0.697552349397843270f, 0.697002569716327460f, - 0.696452380006157830f, - 0.695901780590996830f, 0.695350771794747800f, 0.694799353941554900f, - 0.694247527355803310f, - 0.693695292362118350f, 0.693142649285365510f, 0.692589598450650380f, - 0.692036140183318830f, - 0.691482274808955850f, 0.690928002653386280f, 0.690373324042674040f, - 0.689818239303122470f, - 0.689262748761273470f, 0.688706852743907750f, 0.688150551578044830f, - 0.687593845590942170f, - 0.687036735110095660f, 0.686479220463238950f, 0.685921301978343670f, - 0.685362979983618730f, - 0.684804254807510620f, 0.684245126778703080f, 0.683685596226116690f, - 0.683125663478908800f, - 0.682565328866473250f, 0.682004592718440830f, 0.681443455364677990f, - 0.680881917135287340f, - 0.680319978360607200f, 0.679757639371212030f, 0.679194900497911200f, - 0.678631762071749470f, - 0.678068224424006600f, 0.677504287886197430f, 0.676939952790071240f, - 0.676375219467611700f, - 0.675810088251037060f, 0.675244559472799270f, 0.674678633465584540f, - 0.674112310562312360f, - 0.673545591096136100f, 0.672978475400442090f, 0.672410963808849900f, - 0.671843056655211930f, - 0.671274754273613490f, 0.670706056998372160f, 0.670136965164037760f, - 0.669567479105392490f, - 0.668997599157450270f, 0.668427325655456820f, 0.667856658934889440f, - 0.667285599331456480f, - 0.666714147181097670f, 0.666142302819983540f, 0.665570066584515560f, - 0.664997438811325340f, - 0.664424419837275180f, 0.663851009999457340f, 0.663277209635194100f, - 0.662703019082037440f, - 0.662128438677768720f, 0.661553468760399000f, 0.660978109668168060f, - 0.660402361739545030f, - 0.659826225313227430f, 0.659249700728141490f, 0.658672788323441890f, - 0.658095488438511290f, - 0.657517801412960120f, 0.656939727586627110f, 0.656361267299578000f, - 0.655782420892106030f, - 0.655203188704731930f, 0.654623571078202680f, 0.654043568353492640f, - 0.653463180871802330f, - 0.652882408974558960f, 0.652301253003415460f, 0.651719713300251020f, - 0.651137790207170330f, - 0.650555484066503990f, 0.649972795220807530f, 0.649389724012861770f, - 0.648806270785672550f, - 0.648222435882470420f, 0.647638219646710420f, 0.647053622422071650f, - 0.646468644552457890f, - 0.645883286381996440f, 0.645297548255038380f, 0.644711430516158420f, - 0.644124933510154540f, - 0.643538057582047850f, 0.642950803077082080f, 0.642363170340724320f, - 0.641775159718663500f, - 0.641186771556811250f, 0.640598006201301030f, 0.640008863998488440f, - 0.639419345294950700f, - 0.638829450437486400f, 0.638239179773115390f, 0.637648533649078810f, - 0.637057512412838590f, - 0.636466116412077180f, 0.635874345994697720f, 0.635282201508823530f, - 0.634689683302797850f, - 0.634096791725183740f, 0.633503527124764320f, 0.632909889850541860f, - 0.632315880251737680f, - 0.631721498677792370f, 0.631126745478365340f, 0.630531621003334600f, - 0.629936125602796550f, - 0.629340259627065750f, 0.628744023426674790f, 0.628147417352374120f, - 0.627550441755131530f, - 0.626953096986132770f, 0.626355383396779990f, 0.625757301338692900f, - 0.625158851163707730f, - 0.624560033223877320f, 0.623960847871470770f, 0.623361295458973340f, - 0.622761376339086460f, - 0.622161090864726930f, 0.621560439389027270f, 0.620959422265335180f, - 0.620358039847213830f, - 0.619756292488440660f, 0.619154180543008410f, 0.618551704365123860f, - 0.617948864309208260f, - 0.617345660729896940f, 0.616742093982038830f, 0.616138164420696910f, - 0.615533872401147430f, - 0.614929218278879590f, 0.614324202409595950f, 0.613718825149211830f, - 0.613113086853854910f, - 0.612506987879865570f, 0.611900528583796070f, 0.611293709322411010f, - 0.610686530452686280f, - 0.610078992331809620f, 0.609471095317180240f, 0.608862839766408200f, - 0.608254226037314490f, - 0.607645254487930830f, 0.607035925476499760f, 0.606426239361473550f, - 0.605816196501515080f, - 0.605205797255496500f, 0.604595041982500360f, 0.603983931041818020f, - 0.603372464792950370f, - 0.602760643595607220f, 0.602148467809707320f, 0.601535937795377730f, - 0.600923053912954090f, - 0.600309816522980430f, 0.599696225986208310f, 0.599082282663597310f, - 0.598467986916314310f, - 0.597853339105733910f, 0.597238339593437530f, 0.596622988741213330f, - 0.596007286911056530f, - 0.595391234465168730f, 0.594774831765957580f, 0.594158079176036800f, - 0.593540977058226390f, - 0.592923525775551410f, 0.592305725691242400f, 0.591687577168735550f, - 0.591069080571671510f, - 0.590450236263895920f, 0.589831044609458900f, 0.589211505972615070f, - 0.588591620717822890f, - 0.587971389209745120f, 0.587350811813247660f, 0.586729888893400500f, - 0.586108620815476430f, - 0.585487007944951450f, 0.584865050647504490f, 0.584242749289016980f, - 0.583620104235572760f, - 0.582997115853457700f, 0.582373784509160220f, 0.581750110569369760f, - 0.581126094400977620f, - 0.580501736371076600f, 0.579877036846960350f, 0.579251996196123550f, - 0.578626614786261430f, - 0.578000892985269910f, 0.577374831161244880f, 0.576748429682482520f, - 0.576121688917478390f, - 0.575494609234928230f, 0.574867191003726740f, 0.574239434592967890f, - 0.573611340371944610f, - 0.572982908710148680f, 0.572354139977270030f, 0.571725034543197120f, - 0.571095592778016690f, - 0.570465815052012990f, 0.569835701735668110f, 0.569205253199661200f, - 0.568574469814869250f, - 0.567943351952365670f, 0.567311899983420800f, 0.566680114279501710f, - 0.566047995212271560f, - 0.565415543153589770f, 0.564782758475511400f, 0.564149641550287680f, - 0.563516192750364910f, - 0.562882412448384550f, 0.562248301017183150f, 0.561613858829792420f, - 0.560979086259438260f, - 0.560343983679540860f, 0.559708551463714790f, 0.559072789985768480f, - 0.558436699619704100f, - 0.557800280739717100f, 0.557163533720196340f, 0.556526458935723720f, - 0.555889056761073920f, - 0.555251327571214090f, 0.554613271741304040f, 0.553974889646695610f, - 0.553336181662932410f, - 0.552697148165749770f, 0.552057789531074980f, 0.551418106135026060f, - 0.550778098353912230f, - 0.550137766564233630f, 0.549497111142680960f, 0.548856132466135290f, - 0.548214830911667780f, - 0.547573206856539870f, 0.546931260678202190f, 0.546288992754295210f, - 0.545646403462648590f, - 0.545003493181281160f, 0.544360262288400400f, 0.543716711162402390f, - 0.543072840181871850f, - 0.542428649725581360f, 0.541784140172491660f, 0.541139311901750910f, - 0.540494165292695230f, - 0.539848700724847700f, 0.539202918577918240f, 0.538556819231804210f, - 0.537910403066588990f, - 0.537263670462542530f, 0.536616621800121150f, 0.535969257459966710f, - 0.535321577822907010f, - 0.534673583269955510f, 0.534025274182310380f, 0.533376650941355560f, - 0.532727713928658810f, - 0.532078463525973540f, 0.531428900115236910f, 0.530779024078570250f, - 0.530128835798278850f, - 0.529478335656852090f, 0.528827524036961980f, 0.528176401321464370f, - 0.527524967893398200f, - 0.526873224135984700f, 0.526221170432628170f, 0.525568807166914680f, - 0.524916134722612890f, - 0.524263153483673470f, 0.523609863834228030f, 0.522956266158590140f, - 0.522302360841254700f, - 0.521648148266897090f, 0.520993628820373810f, 0.520338802886721960f, - 0.519683670851158520f, - 0.519028233099080970f, 0.518372490016066220f, 0.517716441987871150f, - 0.517060089400432130f, - 0.516403432639863990f, 0.515746472092461380f, 0.515089208144697270f, - 0.514431641183222930f, - 0.513773771594868030f, 0.513115599766640560f, 0.512457126085725800f, - 0.511798350939487000f, - 0.511139274715464390f, 0.510479897801375700f, 0.509820220585115560f, - 0.509160243454754750f, - 0.508499966798540810f, 0.507839391004897940f, 0.507178516462425290f, - 0.506517343559898530f, - 0.505855872686268860f, 0.505194104230662240f, 0.504532038582380380f, - 0.503869676130898950f, - 0.503207017265869030f, 0.502544062377115800f, 0.501880811854638400f, - 0.501217266088609950f, - 0.500553425469377640f, 0.499889290387461380f, 0.499224861233555030f, - 0.498560138398525200f, - 0.497895122273410930f, 0.497229813249424340f, 0.496564211717949340f, - 0.495898318070542240f, - 0.495232132698931350f, 0.494565655995016010f, 0.493898888350867430f, - 0.493231830158728070f, - 0.492564481811010650f, 0.491896843700299240f, 0.491228916219348330f, - 0.490560699761082080f, - 0.489892194718595300f, 0.489223401485152030f, 0.488554320454186230f, - 0.487884952019301210f, - 0.487215296574268820f, 0.486545354513030270f, 0.485875126229695420f, - 0.485204612118541880f, - 0.484533812574016120f, 0.483862727990732320f, 0.483191358763471910f, - 0.482519705287184520f, - 0.481847767956986080f, 0.481175547168160360f, 0.480503043316157670f, - 0.479830256796594250f, - 0.479157188005253310f, 0.478483837338084080f, 0.477810205191201040f, - 0.477136291960884750f, - 0.476462098043581310f, 0.475787623835901120f, 0.475112869734620470f, - 0.474437836136679340f, - 0.473762523439182850f, 0.473086932039400220f, 0.472411062334764100f, - 0.471734914722871430f, - 0.471058489601482610f, 0.470381787368520710f, 0.469704808422072460f, - 0.469027553160387240f, - 0.468350021981876530f, 0.467672215285114710f, 0.466994133468838110f, - 0.466315776931944480f, - 0.465637146073493770f, 0.464958241292706740f, 0.464279062988965760f, - 0.463599611561814120f, - 0.462919887410955130f, 0.462239890936253280f, 0.461559622537733190f, - 0.460879082615578690f, - 0.460198271570134270f, 0.459517189801903590f, 0.458835837711549120f, - 0.458154215699893230f, - 0.457472324167916110f, 0.456790163516757220f, 0.456107734147714220f, - 0.455425036462242420f, - 0.454742070861955450f, 0.454058837748624540f, 0.453375337524177750f, - 0.452691570590700860f, - 0.452007537350436530f, 0.451323238205783520f, 0.450638673559297760f, - 0.449953843813690580f, - 0.449268749371829920f, 0.448583390636739300f, 0.447897768011597360f, - 0.447211881899738260f, - 0.446525732704651400f, 0.445839320829980350f, 0.445152646679523590f, - 0.444465710657234110f, - 0.443778513167218280f, 0.443091054613736990f, 0.442403335401204130f, - 0.441715355934187310f, - 0.441027116617407340f, 0.440338617855737300f, 0.439649860054203420f, - 0.438960843617984430f, - 0.438271568952410480f, 0.437582036462964340f, 0.436892246555280470f, - 0.436202199635143950f, - 0.435511896108492170f, 0.434821336381412350f, 0.434130520860143310f, - 0.433439449951074200f, - 0.432748124060743760f, 0.432056543595841450f, 0.431364708963206440f, - 0.430672620569826860f, - 0.429980278822840570f, 0.429287684129534720f, 0.428594836897344400f, - 0.427901737533854240f, - 0.427208386446796370f, 0.426514784044051520f, 0.425820930733648350f, - 0.425126826923762410f, - 0.424432473022717420f, 0.423737869438983950f, 0.423043016581179100f, - 0.422347914858067000f, - 0.421652564678558380f, 0.420956966451709440f, 0.420261120586723050f, - 0.419565027492946940f, - 0.418868687579875110f, 0.418172101257146430f, 0.417475268934544340f, - 0.416778191021997590f, - 0.416080867929579320f, 0.415383300067506290f, 0.414685487846140010f, - 0.413987431675985510f, - 0.413289131967690960f, 0.412590589132048380f, 0.411891803579992220f, - 0.411192775722600160f, - 0.410493505971092520f, 0.409793994736831200f, 0.409094242431320920f, - 0.408394249466208110f, - 0.407694016253280170f, 0.406993543204466460f, 0.406292830731837470f, - 0.405591879247603870f, - 0.404890689164117750f, 0.404189260893870750f, 0.403487594849495310f, - 0.402785691443763640f, - 0.402083551089587040f, 0.401381174200016790f, 0.400678561188243350f, - 0.399975712467595390f, - 0.399272628451540930f, 0.398569309553686360f, 0.397865756187775750f, - 0.397161968767691720f, - 0.396457947707453960f, 0.395753693421220080f, 0.395049206323284880f, - 0.394344486828079650f, - 0.393639535350172880f, 0.392934352304269600f, 0.392228938105210370f, - 0.391523293167972350f, - 0.390817417907668610f, 0.390111312739546910f, 0.389404978078991100f, - 0.388698414341519250f, - 0.387991621942784910f, 0.387284601298575890f, 0.386577352824813980f, - 0.385869876937555310f, - 0.385162174052989970f, 0.384454244587440870f, 0.383746088957365010f, - 0.383037707579352130f, - 0.382329100870124510f, 0.381620269246537520f, 0.380911213125578130f, - 0.380201932924366050f, - 0.379492429060152740f, 0.378782701950320600f, 0.378072752012383990f, - 0.377362579663988450f, - 0.376652185322909620f, 0.375941569407054420f, 0.375230732334460030f, - 0.374519674523293210f, - 0.373808396391851370f, 0.373096898358560690f, 0.372385180841977360f, - 0.371673244260786630f, - 0.370961089033802040f, 0.370248715579966360f, 0.369536124318350760f, - 0.368823315668153960f, - 0.368110290048703050f, 0.367397047879452820f, 0.366683589579984930f, - 0.365969915570008910f, - 0.365256026269360380f, 0.364541922098002180f, 0.363827603476023610f, - 0.363113070823639530f, - 0.362398324561191310f, 0.361683365109145950f, 0.360968192888095290f, - 0.360252808318756830f, - 0.359537211821973180f, 0.358821403818710860f, 0.358105384730061760f, - 0.357389154977241000f, - 0.356672714981588260f, 0.355956065164567010f, 0.355239205947763370f, - 0.354522137752887430f, - 0.353804861001772160f, 0.353087376116372530f, 0.352369683518766630f, - 0.351651783631154680f, - 0.350933676875858360f, 0.350215363675321740f, 0.349496844452109600f, - 0.348778119628908420f, - 0.348059189628525780f, 0.347340054873889190f, 0.346620715788047320f, - 0.345901172794169100f, - 0.345181426315542610f, 0.344461476775576480f, 0.343741324597798600f, - 0.343020970205855540f, - 0.342300414023513690f, 0.341579656474657210f, 0.340858697983289440f, - 0.340137538973531880f, - 0.339416179869623410f, 0.338694621095921190f, 0.337972863076899830f, - 0.337250906237150650f, - 0.336528751001382350f, 0.335806397794420560f, 0.335083847041206580f, - 0.334361099166798900f, - 0.333638154596370920f, 0.332915013755212650f, 0.332191677068729320f, - 0.331468144962440920f, - 0.330744417861982890f, 0.330020496193105530f, 0.329296380381672800f, - 0.328572070853663690f, - 0.327847568035170960f, 0.327122872352400510f, 0.326397984231672660f, - 0.325672904099419900f, - 0.324947632382188430f, 0.324222169506637130f, 0.323496515899536760f, - 0.322770671987770710f, - 0.322044638198334620f, 0.321318414958334910f, 0.320592002694990330f, - 0.319865401835630610f, - 0.319138612807695900f, 0.318411636038737960f, 0.317684471956418020f, - 0.316957120988508150f, - 0.316229583562890490f, 0.315501860107556040f, 0.314773951050606070f, - 0.314045856820250820f, - 0.313317577844809070f, 0.312589114552708660f, 0.311860467372486130f, - 0.311131636732785270f, - 0.310402623062358880f, 0.309673426790066490f, 0.308944048344875710f, - 0.308214488155861220f, - 0.307484746652204160f, 0.306754824263192780f, 0.306024721418221900f, - 0.305294438546791720f, - 0.304563976078509050f, 0.303833334443086470f, 0.303102514070341060f, - 0.302371515390196130f, - 0.301640338832678880f, 0.300908984827921890f, 0.300177453806162120f, - 0.299445746197739950f, - 0.298713862433100390f, 0.297981802942791920f, 0.297249568157465890f, - 0.296517158507877410f, - 0.295784574424884370f, 0.295051816339446720f, 0.294318884682627570f, - 0.293585779885591310f, - 0.292852502379604810f, 0.292119052596036540f, 0.291385430966355720f, - 0.290651637922133220f, - 0.289917673895040860f, 0.289183539316850310f, 0.288449234619434170f, - 0.287714760234765280f, - 0.286980116594915570f, 0.286245304132057120f, 0.285510323278461380f, - 0.284775174466498300f, - 0.284039858128637360f, 0.283304374697445790f, 0.282568724605589740f, - 0.281832908285833460f, - 0.281096926171038320f, 0.280360778694163810f, 0.279624466288266700f, - 0.278887989386500280f, - 0.278151348422115090f, 0.277414543828458200f, 0.276677576038972420f, - 0.275940445487197320f, - 0.275203152606767370f, 0.274465697831413220f, 0.273728081594960650f, - 0.272990304331329980f, - 0.272252366474536660f, 0.271514268458690810f, 0.270776010717996010f, - 0.270037593686750510f, - 0.269299017799346230f, 0.268560283490267890f, 0.267821391194094320f, - 0.267082341345496350f, - 0.266343134379238180f, 0.265603770730176440f, 0.264864250833259320f, - 0.264124575123527490f, - 0.263384744036113390f, 0.262644758006240100f, 0.261904617469222560f, - 0.261164322860466590f, - 0.260423874615468010f, 0.259683273169813930f, 0.258942518959180580f, - 0.258201612419334870f, - 0.257460553986133210f, 0.256719344095520720f, 0.255977983183532380f, - 0.255236471686291820f, - 0.254494810040010790f, 0.253752998680989940f, 0.253011038045617980f, - 0.252268928570370810f, - 0.251526670691812780f, 0.250784264846594550f, 0.250041711471454650f, - 0.249299011003218300f, - 0.248556163878796620f, 0.247813170535187620f, 0.247070031409475370f, - 0.246326746938829060f, - 0.245583317560504000f, 0.244839743711840750f, 0.244096025830264210f, - 0.243352164353284880f, - 0.242608159718496890f, 0.241864012363579210f, 0.241119722726294730f, - 0.240375291244489500f, - 0.239630718356093560f, 0.238886004499120170f, 0.238141150111664870f, - 0.237396155631906550f, - 0.236651021498106460f, 0.235905748148607370f, 0.235160336021834860f, - 0.234414785556295250f, - 0.233669097190576820f, 0.232923271363349120f, 0.232177308513361770f, - 0.231431209079445730f, - 0.230684973500512310f, 0.229938602215552260f, 0.229192095663636740f, - 0.228445454283916550f, - 0.227698678515621170f, 0.226951768798059980f, 0.226204725570620270f, - 0.225457549272768540f, - 0.224710240344049570f, 0.223962799224085520f, 0.223215226352576960f, - 0.222467522169301990f, - 0.221719687114115240f, 0.220971721626949060f, 0.220223626147812460f, - 0.219475401116790340f, - 0.218727046974044600f, 0.217978564159812290f, 0.217229953114406790f, - 0.216481214278216900f, - 0.215732348091705940f, 0.214983354995412820f, 0.214234235429951100f, - 0.213484989836008080f, - 0.212735618654345870f, 0.211986122325800410f, 0.211236501291280710f, - 0.210486755991769890f, - 0.209736886868323370f, 0.208986894362070070f, 0.208236778914211470f, - 0.207486540966020700f, - 0.206736180958843660f, 0.205985699334098050f, 0.205235096533272380f, - 0.204484372997927180f, - 0.203733529169694010f, 0.202982565490274460f, 0.202231482401441620f, - 0.201480280345037820f, - 0.200728959762976140f, 0.199977521097239290f, 0.199225964789878890f, - 0.198474291283016360f, - 0.197722501018842030f, 0.196970594439614370f, 0.196218571987660850f, - 0.195466434105377090f, - 0.194714181235225990f, 0.193961813819739010f, 0.193209332301514080f, - 0.192456737123216840f, - 0.191704028727579940f, 0.190951207557401860f, 0.190198274055548120f, - 0.189445228664950340f, - 0.188692071828605260f, 0.187938803989575850f, 0.187185425590990440f, - 0.186431937076041640f, - 0.185678338887987790f, 0.184924631470150870f, 0.184170815265917720f, - 0.183416890718739230f, - 0.182662858272129360f, 0.181908718369666160f, 0.181154471454990920f, - 0.180400117971807270f, - 0.179645658363882100f, 0.178891093075044830f, 0.178136422549186320f, - 0.177381647230260200f, - 0.176626767562280960f, 0.175871783989325040f, 0.175116696955530060f, - 0.174361506905093830f, - 0.173606214282275410f, 0.172850819531394200f, 0.172095323096829040f, - 0.171339725423019260f, - 0.170584026954463700f, 0.169828228135719880f, 0.169072329411405180f, - 0.168316331226194910f, - 0.167560234024823590f, 0.166804038252083870f, 0.166047744352825850f, - 0.165291352771957970f, - 0.164534863954446110f, 0.163778278345312690f, 0.163021596389637810f, - 0.162264818532558110f, - 0.161507945219266150f, 0.160750976895011390f, 0.159993914005098350f, - 0.159236756994887850f, - 0.158479506309796100f, 0.157722162395293690f, 0.156964725696906750f, - 0.156207196660216040f, - 0.155449575730855880f, 0.154691863354515400f, 0.153934059976937460f, - 0.153176166043917870f, - 0.152418182001306500f, 0.151660108295005400f, 0.150901945370970040f, - 0.150143693675208330f, - 0.149385353653779810f, 0.148626925752796540f, 0.147868410418422360f, - 0.147109808096871850f, - 0.146351119234411440f, 0.145592344277358450f, 0.144833483672080240f, - 0.144074537864995330f, - 0.143315507302571590f, 0.142556392431327340f, 0.141797193697830530f, - 0.141037911548697770f, - 0.140278546430595420f, 0.139519098790238600f, 0.138759569074390380f, - 0.137999957729862760f, - 0.137240265203515700f, 0.136480491942256310f, 0.135720638393040080f, - 0.134960705002868830f, - 0.134200692218792020f, 0.133440600487905820f, 0.132680430257352130f, - 0.131920181974319760f, - 0.131159856086043410f, 0.130399453039802740f, 0.129638973282923540f, - 0.128878417262776660f, - 0.128117785426777150f, 0.127357078222385570f, 0.126596296097105960f, - 0.125835439498487020f, - 0.125074508874121300f, 0.124313504671644300f, 0.123552427338735370f, - 0.122791277323116900f, - 0.122030055072553410f, 0.121268761034852550f, 0.120507395657864240f, - 0.119745959389479630f, - 0.118984452677632520f, 0.118222875970297250f, 0.117461229715489990f, - 0.116699514361267840f, - 0.115937730355727850f, 0.115175878147008180f, 0.114413958183287050f, - 0.113651970912781920f, - 0.112889916783750470f, 0.112127796244489750f, 0.111365609743335190f, - 0.110603357728661910f, - 0.109841040648882680f, 0.109078658952449240f, 0.108316213087851300f, - 0.107553703503615710f, - 0.106791130648307380f, 0.106028494970528530f, 0.105265796918917650f, - 0.104503036942150550f, - 0.103740215488939480f, 0.102977333008032250f, 0.102214389948213370f, - 0.101451386758302160f, - 0.100688323887153970f, 0.099925201783659226f, 0.099162020896742573f, - 0.098398781675363881f, - 0.097635484568517339f, 0.096872130025230527f, 0.096108718494565468f, - 0.095345250425617742f, - 0.094581726267515473f, 0.093818146469420494f, 0.093054511480527333f, - 0.092290821750062355f, - 0.091527077727284981f, 0.090763279861485704f, 0.089999428601987341f, - 0.089235524398144139f, - 0.088471567699340822f, 0.087707558954993645f, 0.086943498614549489f, - 0.086179387127484922f, - 0.085415224943307277f, 0.084651012511553700f, 0.083886750281790226f, - 0.083122438703613077f, - 0.082358078226646619f, 0.081593669300544638f, 0.080829212374989468f, - 0.080064707899690932f, - 0.079300156324387569f, 0.078535558098845590f, 0.077770913672857989f, - 0.077006223496245585f, - 0.076241488018856149f, 0.075476707690563416f, 0.074711882961268378f, - 0.073947014280897269f, - 0.073182102099402888f, 0.072417146866763538f, 0.071652149032982254f, - 0.070887109048087787f, - 0.070122027362133646f, 0.069356904425197236f, 0.068591740687380900f, - 0.067826536598810966f, - 0.067061292609636836f, 0.066296009170032283f, 0.065530686730193397f, - 0.064765325740339871f, - 0.063999926650714078f, 0.063234489911580136f, 0.062469015973224969f, - 0.061703505285957416f, - 0.060937958300107238f, 0.060172375466026218f, 0.059406757234087247f, - 0.058641104054683348f, - 0.057875416378229017f, 0.057109694655158132f, 0.056343939335925283f, - 0.055578150871004817f, - 0.054812329710889909f, 0.054046476306093640f, 0.053280591107148056f, - 0.052514674564603257f, - 0.051748727129028414f, 0.050982749251010900f, 0.050216741381155325f, - 0.049450703970084824f, - 0.048684637468439020f, 0.047918542326875327f, 0.047152418996068000f, - 0.046386267926707213f, - 0.045620089569500123f, 0.044853884375169933f, 0.044087652794454979f, - 0.043321395278109784f, - 0.042555112276904117f, 0.041788804241622082f, 0.041022471623063397f, - 0.040256114872041358f, - 0.039489734439384118f, 0.038723330775933762f, 0.037956904332545366f, - 0.037190455560088091f, - 0.036423984909444228f, 0.035657492831508264f, 0.034890979777187955f, - 0.034124446197403423f, - 0.033357892543086159f, 0.032591319265180385f, 0.031824726814640963f, - 0.031058115642434700f, - 0.030291486199539423f, 0.029524838936943035f, 0.028758174305644590f, - 0.027991492756653365f, - 0.027224794740987910f, 0.026458080709677145f, 0.025691351113759395f, - 0.024924606404281485f, - 0.024157847032300020f, 0.023391073448879338f, 0.022624286105092803f, - 0.021857485452021874f, - 0.021090671940755180f, 0.020323846022389572f, 0.019557008148029204f, - 0.018790158768784596f, - 0.018023298335773701f, 0.017256427300120978f, 0.016489546112956454f, - 0.015722655225417017f, - 0.014955755088644378f, 0.014188846153786343f, 0.013421928871995907f, - 0.012655003694430301f, - 0.011888071072252072f, 0.011121131456628141f, 0.010354185298728884f, - 0.009587233049729183f, - 0.008820275160807512f, 0.008053312083144991f, 0.007286344267926684f, - 0.006519372166339549f, - 0.005752396229573737f, 0.004985416908821652f, 0.004218434655277024f, - 0.003451449920135975f, - 0.002684463154596083f, 0.001917474809855460f, 0.001150485337113809f, - 0.000383495187571497f -}; - -static const float32_t cos_factors_8192[8192] = { - 1.999999990808214700f, 1.999999917273932200f, 1.999999770205369800f, - 1.999999549602533100f, - 1.999999255465430200f, 1.999998887794072000f, 1.999998446588471700f, - 1.999997931848645600f, - 1.999997343574612800f, 1.999996681766395000f, 1.999995946424016200f, - 1.999995137547503600f, - 1.999994255136887000f, 1.999993299192198700f, 1.999992269713474200f, - 1.999991166700750800f, - 1.999989990154069600f, 1.999988740073473500f, 1.999987416459008600f, - 1.999986019310723500f, - 1.999984548628669600f, 1.999983004412901000f, 1.999981386663474400f, - 1.999979695380449400f, - 1.999977930563888100f, 1.999976092213855400f, 1.999974180330418700f, - 1.999972194913648900f, - 1.999970135963618400f, 1.999968003480403000f, 1.999965797464081200f, - 1.999963517914734100f, - 1.999961164832445800f, 1.999958738217302300f, 1.999956238069392900f, - 1.999953664388809800f, - 1.999951017175647600f, 1.999948296430003500f, 1.999945502151977600f, - 1.999942634341672600f, - 1.999939692999193900f, 1.999936678124649700f, 1.999933589718150700f, - 1.999930427779810900f, - 1.999927192309745900f, 1.999923883308075200f, 1.999920500774920300f, - 1.999917044710405500f, - 1.999913515114657900f, 1.999909911987807200f, 1.999906235329986100f, - 1.999902485141329400f, - 1.999898661421975400f, 1.999894764172064600f, 1.999890793391740000f, - 1.999886749081147800f, - 1.999882631240436700f, 1.999878439869758200f, 1.999874174969266300f, - 1.999869836539117700f, - 1.999865424579472000f, 1.999860939090491600f, 1.999856380072341000f, - 1.999851747525188200f, - 1.999847041449203300f, 1.999842261844559700f, 1.999837408711432600f, - 1.999832482050000900f, - 1.999827481860445300f, 1.999822408142949900f, 1.999817260897701400f, - 1.999812040124888700f, - 1.999806745824704000f, 1.999801377997341800f, 1.999795936642999600f, - 1.999790421761877400f, - 1.999784833354177900f, 1.999779171420106700f, 1.999773435959872000f, - 1.999767626973684400f, - 1.999761744461757700f, 1.999755788424308200f, 1.999749758861554900f, - 1.999743655773719400f, - 1.999737479161026100f, 1.999731229023702200f, 1.999724905361977200f, - 1.999718508176084000f, - 1.999712037466257600f, 1.999705493232735800f, 1.999698875475759600f, - 1.999692184195571900f, - 1.999685419392419000f, 1.999678581066549400f, 1.999671669218214600f, - 1.999664683847668800f, - 1.999657624955168700f, 1.999650492540973900f, 1.999643286605346800f, - 1.999636007148552400f, - 1.999628654170857900f, 1.999621227672533800f, 1.999613727653853500f, - 1.999606154115092500f, - 1.999598507056529000f, 1.999590786478444600f, 1.999582992381123000f, - 1.999575124764850800f, - 1.999567183629917100f, 1.999559168976613900f, 1.999551080805236100f, - 1.999542919116081000f, - 1.999534683909448600f, 1.999526375185641800f, 1.999517992944965800f, - 1.999509537187729200f, - 1.999501007914242600f, 1.999492405124819700f, 1.999483728819776900f, - 1.999474978999432800f, - 1.999466155664109600f, 1.999457258814131500f, 1.999448288449825500f, - 1.999439244571521700f, - 1.999430127179552500f, 1.999420936274252800f, 1.999411671855960900f, - 1.999402333925017300f, - 1.999392922481765500f, 1.999383437526551300f, 1.999373879059723500f, - 1.999364247081633500f, - 1.999354541592635500f, 1.999344762593086500f, 1.999334910083345700f, - 1.999324984063775700f, - 1.999314984534741100f, 1.999304911496609700f, 1.999294764949752100f, - 1.999284544894541100f, - 1.999274251331352400f, 1.999263884260564600f, 1.999253443682558900f, - 1.999242929597719200f, - 1.999232342006432000f, 1.999221680909086400f, 1.999210946306074500f, - 1.999200138197791100f, - 1.999189256584633600f, 1.999178301467001900f, 1.999167272845298900f, - 1.999156170719930100f, - 1.999144995091303600f, 1.999133745959830600f, 1.999122423325924200f, - 1.999111027190001000f, - 1.999099557552479900f, 1.999088014413782800f, 1.999076397774334000f, - 1.999064707634560700f, - 1.999052943994892300f, 1.999041106855761900f, 1.999029196217604100f, - 1.999017212080857400f, - 1.999005154445962200f, 1.998993023313361700f, 1.998980818683502100f, - 1.998968540556831800f, - 1.998956188933802800f, 1.998943763814868800f, 1.998931265200486900f, - 1.998918693091116200f, - 1.998906047487219600f, 1.998893328389261400f, 1.998880535797709700f, - 1.998867669713034500f, - 1.998854730135709400f, 1.998841717066209400f, 1.998828630505013400f, - 1.998815470452602400f, - 1.998802236909460500f, 1.998788929876074100f, 1.998775549352932400f, - 1.998762095340527400f, - 1.998748567839354000f, 1.998734966849909000f, 1.998721292372693100f, - 1.998707544408208700f, - 1.998693722956961500f, 1.998679828019459300f, 1.998665859596213500f, - 1.998651817687737300f, - 1.998637702294547000f, 1.998623513417161700f, 1.998609251056103100f, - 1.998594915211895600f, - 1.998580505885066100f, 1.998566023076144600f, 1.998551466785663400f, - 1.998536837014157900f, - 1.998522133762165900f, 1.998507357030227900f, 1.998492506818887200f, - 1.998477583128690100f, - 1.998462585960185000f, 1.998447515313923400f, 1.998432371190459500f, - 1.998417153590349900f, - 1.998401862514154200f, 1.998386497962434800f, 1.998371059935756300f, - 1.998355548434686400f, - 1.998339963459795400f, 1.998324305011656600f, 1.998308573090845200f, - 1.998292767697940100f, - 1.998276888833522300f, 1.998260936498175400f, 1.998244910692486000f, - 1.998228811417043700f, - 1.998212638672439900f, 1.998196392459269400f, 1.998180072778129600f, - 1.998163679629620500f, - 1.998147213014344900f, 1.998130672932908000f, 1.998114059385918400f, - 1.998097372373986300f, - 1.998080611897725700f, 1.998063777957752600f, 1.998046870554686100f, - 1.998029889689147700f, - 1.998012835361761900f, 1.997995707573155600f, 1.997978506323958600f, - 1.997961231614803200f, - 1.997943883446324800f, 1.997926461819161000f, 1.997908966733952500f, - 1.997891398191342400f, - 1.997873756191977000f, 1.997856040736504500f, 1.997838251825576400f, - 1.997820389459846700f, - 1.997802453639972300f, 1.997784444366612600f, 1.997766361640429800f, - 1.997748205462088500f, - 1.997729975832256600f, 1.997711672751604200f, 1.997693296220804000f, - 1.997674846240532000f, - 1.997656322811466500f, 1.997637725934288300f, 1.997619055609681600f, - 1.997600311838332500f, - 1.997581494620930300f, 1.997562603958166600f, 1.997543639850736200f, - 1.997524602299336500f, - 1.997505491304667000f, 1.997486306867430900f, 1.997467048988333000f, - 1.997447717668082000f, - 1.997428312907388200f, 1.997408834706965000f, 1.997389283067528800f, - 1.997369657989798400f, - 1.997349959474495200f, 1.997330187522343700f, 1.997310342134070800f, - 1.997290423310406100f, - 1.997270431052081900f, 1.997250365359833200f, 1.997230226234397900f, - 1.997210013676516700f, - 1.997189727686932400f, 1.997169368266390900f, 1.997148935415640600f, - 1.997128429135433400f, - 1.997107849426522600f, 1.997087196289665000f, 1.997066469725620200f, - 1.997045669735150000f, - 1.997024796319019300f, 1.997003849477995600f, 1.996982829212848900f, - 1.996961735524351900f, - 1.996940568413280600f, 1.996919327880412900f, 1.996898013926530000f, - 1.996876626552415400f, - 1.996855165758855600f, 1.996833631546639300f, 1.996812023916558800f, - 1.996790342869408000f, - 1.996768588405984300f, 1.996746760527087700f, 1.996724859233520500f, - 1.996702884526087900f, - 1.996680836405598100f, 1.996658714872861800f, 1.996636519928692000f, - 1.996614251573904900f, - 1.996591909809319400f, 1.996569494635756600f, 1.996547006054041100f, - 1.996524444064999400f, - 1.996501808669461000f, 1.996479099868258400f, 1.996456317662226300f, - 1.996433462052202600f, - 1.996410533039027400f, 1.996387530623543900f, 1.996364454806597500f, - 1.996341305589037100f, - 1.996318082971713500f, 1.996294786955480800f, 1.996271417541195300f, - 1.996247974729716200f, - 1.996224458521905600f, 1.996200868918628100f, 1.996177205920750800f, - 1.996153469529144100f, - 1.996129659744680300f, 1.996105776568235100f, 1.996081820000686500f, - 1.996057790042915500f, - 1.996033686695805300f, 1.996009509960242400f, 1.995985259837115500f, - 1.995960936327316300f, - 1.995936539431739000f, 1.995912069151280800f, 1.995887525486841300f, - 1.995862908439323100f, - 1.995838218009630800f, 1.995813454198672700f, 1.995788617007359100f, - 1.995763706436603200f, - 1.995738722487320600f, 1.995713665160430600f, 1.995688534456853800f, - 1.995663330377514400f, - 1.995638052923339300f, 1.995612702095257400f, 1.995587277894201400f, - 1.995561780321105600f, - 1.995536209376907600f, 1.995510565062547800f, 1.995484847378968600f, - 1.995459056327116000f, - 1.995433191907938000f, 1.995407254122385700f, 1.995381242971412600f, - 1.995355158455975200f, - 1.995329000577032800f, 1.995302769335546500f, 1.995276464732481200f, - 1.995250086768804100f, - 1.995223635445484900f, 1.995197110763496000f, 1.995170512723813100f, - 1.995143841327413400f, - 1.995117096575278200f, 1.995090278468390600f, 1.995063387007736600f, - 1.995036422194304700f, - 1.995009384029086800f, 1.994982272513076600f, 1.994955087647271000f, - 1.994927829432669800f, - 1.994900497870274900f, 1.994873092961091200f, 1.994845614706126400f, - 1.994818063106391000f, - 1.994790438162897600f, 1.994762739876662100f, 1.994734968248702800f, - 1.994707123280041100f, - 1.994679204971700100f, 1.994651213324707000f, 1.994623148340090700f, - 1.994595010018883000f, - 1.994566798362118300f, 1.994538513370834200f, 1.994510155046070700f, - 1.994481723388870100f, - 1.994453218400277900f, 1.994424640081342100f, 1.994395988433113700f, - 1.994367263456646100f, - 1.994338465152995000f, 1.994309593523219600f, 1.994280648568381500f, - 1.994251630289544600f, - 1.994222538687776100f, 1.994193373764145500f, 1.994164135519725000f, - 1.994134823955589800f, - 1.994105439072817700f, 1.994075980872488800f, 1.994046449355686200f, - 1.994016844523496000f, - 1.993987166377006600f, 1.993957414917308700f, 1.993927590145496900f, - 1.993897692062667200f, - 1.993867720669919400f, 1.993837675968354700f, 1.993807557959078600f, - 1.993777366643197900f, - 1.993747102021822900f, 1.993716764096066200f, 1.993686352867043200f, - 1.993655868335872300f, - 1.993625310503674100f, 1.993594679371572200f, 1.993563974940692800f, - 1.993533197212164800f, - 1.993502346187119700f, 1.993471421866692200f, 1.993440424252018900f, - 1.993409353344239600f, - 1.993378209144496700f, 1.993346991653935300f, 1.993315700873703200f, - 1.993284336804950900f, - 1.993252899448831400f, 1.993221388806500900f, 1.993189804879117500f, - 1.993158147667842800f, - 1.993126417173840500f, 1.993094613398277400f, 1.993062736342323000f, - 1.993030786007148800f, - 1.992998762393930000f, 1.992966665503844000f, 1.992934495338070800f, - 1.992902251897793000f, - 1.992869935184196300f, 1.992837545198469000f, 1.992805081941801700f, - 1.992772545415388200f, - 1.992739935620424700f, 1.992707252558110200f, 1.992674496229646500f, - 1.992641666636237700f, - 1.992608763779091000f, 1.992575787659416100f, 1.992542738278425300f, - 1.992509615637334100f, - 1.992476419737359900f, 1.992443150579723500f, 1.992409808165648100f, - 1.992376392496359300f, - 1.992342903573086000f, 1.992309341397059600f, 1.992275705969513800f, - 1.992241997291685400f, - 1.992208215364813700f, 1.992174360190140900f, 1.992140431768911500f, - 1.992106430102373400f, - 1.992072355191776300f, 1.992038207038373300f, 1.992003985643419700f, - 1.991969691008174100f, - 1.991935323133897000f, 1.991900882021852200f, 1.991866367673306200f, - 1.991831780089527500f, - 1.991797119271788300f, 1.991762385221362600f, 1.991727577939527600f, - 1.991692697427563300f, - 1.991657743686751700f, 1.991622716718378400f, 1.991587616523731000f, - 1.991552443104099800f, - 1.991517196460778500f, 1.991481876595062800f, 1.991446483508251500f, - 1.991411017201645500f, - 1.991375477676549100f, 1.991339864934268800f, 1.991304178976114100f, - 1.991268419803397200f, - 1.991232587417432600f, 1.991196681819537900f, 1.991160703011033200f, - 1.991124650993241400f, - 1.991088525767488200f, 1.991052327335101300f, 1.991016055697411900f, - 1.990979710855753900f, - 1.990943292811463000f, 1.990906801565878600f, 1.990870237120342400f, - 1.990833599476198800f, - 1.990796888634794400f, 1.990760104597479400f, 1.990723247365606200f, - 1.990686316940529800f, - 1.990649313323608100f, 1.990612236516201300f, 1.990575086519673200f, - 1.990537863335389400f, - 1.990500566964718400f, 1.990463197409031700f, 1.990425754669703100f, - 1.990388238748109100f, - 1.990350649645629600f, 1.990312987363646000f, 1.990275251903543600f, - 1.990237443266709400f, - 1.990199561454533600f, 1.990161606468409300f, 1.990123578309731700f, - 1.990085476979899000f, - 1.990047302480312300f, 1.990009054812374800f, 1.989970733977493000f, - 1.989932339977075900f, - 1.989893872812535000f, 1.989855332485284800f, 1.989816718996742200f, - 1.989778032348326700f, - 1.989739272541461100f, 1.989700439577570400f, 1.989661533458082100f, - 1.989622554184426800f, - 1.989583501758037700f, 1.989544376180350600f, 1.989505177452804100f, - 1.989465905576839600f, - 1.989426560553900500f, 1.989387142385433900f, 1.989347651072888900f, - 1.989308086617717500f, - 1.989268449021374300f, 1.989228738285316900f, 1.989188954411005100f, - 1.989149097399901500f, - 1.989109167253472000f, 1.989069163973184300f, 1.989029087560509700f, - 1.988988938016921000f, - 1.988948715343894900f, 1.988908419542910100f, 1.988868050615448100f, - 1.988827608562993200f, - 1.988787093387032600f, 1.988746505089055600f, 1.988705843670554500f, - 1.988665109133024500f, - 1.988624301477963200f, 1.988583420706871100f, 1.988542466821251000f, - 1.988501439822608900f, - 1.988460339712453200f, 1.988419166492295000f, 1.988377920163648000f, - 1.988336600728029000f, - 1.988295208186956700f, 1.988253742541953800f, 1.988212203794544000f, - 1.988170591946255100f, - 1.988128906998616800f, 1.988087148953161700f, 1.988045317811425700f, - 1.988003413574946000f, - 1.987961436245263800f, 1.987919385823922400f, 1.987877262312467600f, - 1.987835065712448600f, - 1.987792796025416500f, 1.987750453252925500f, 1.987708037396532800f, - 1.987665548457797400f, - 1.987622986438281700f, 1.987580351339550700f, 1.987537643163171700f, - 1.987494861910715100f, - 1.987452007583754100f, 1.987409080183863800f, 1.987366079712622900f, - 1.987323006171612500f, - 1.987279859562415900f, 1.987236639886619700f, 1.987193347145813000f, - 1.987149981341587400f, - 1.987106542475537400f, 1.987063030549260300f, 1.987019445564355700f, - 1.986975787522426100f, - 1.986932056425076800f, 1.986888252273915500f, 1.986844375070552900f, - 1.986800424816602200f, - 1.986756401513679400f, 1.986712305163403000f, 1.986668135767394300f, - 1.986623893327277500f, - 1.986579577844678900f, 1.986535189321228000f, 1.986490727758556800f, - 1.986446193158300400f, - 1.986401585522095600f, 1.986356904851583000f, 1.986312151148405200f, - 1.986267324414207500f, - 1.986222424650638400f, 1.986177451859348200f, 1.986132406041990900f, - 1.986087287200222700f, - 1.986042095335702300f, 1.985996830450091200f, 1.985951492545054100f, - 1.985906081622257300f, - 1.985860597683371000f, 1.985815040730067200f, 1.985769410764020900f, - 1.985723707786909900f, - 1.985677931800414500f, 1.985632082806217900f, 1.985586160806005700f, - 1.985540165801466200f, - 1.985494097794290800f, 1.985447956786173100f, 1.985401742778809500f, - 1.985355455773899500f, - 1.985309095773144500f, 1.985262662778249300f, 1.985216156790921000f, - 1.985169577812869500f, - 1.985122925845807400f, 1.985076200891450000f, 1.985029402951515200f, - 1.984982532027723700f, - 1.984935588121798700f, 1.984888571235466200f, 1.984841481370454900f, - 1.984794318528496200f, - 1.984747082711324100f, 1.984699773920675300f, 1.984652392158289500f, - 1.984604937425908300f, - 1.984557409725276700f, 1.984509809058142300f, 1.984462135426255000f, - 1.984414388831367900f, - 1.984366569275236400f, 1.984318676759618400f, 1.984270711286275200f, - 1.984222672856969800f, - 1.984174561473469200f, 1.984126377137541700f, 1.984078119850959200f, - 1.984029789615495900f, - 1.983981386432928800f, 1.983932910305037400f, 1.983884361233604100f, - 1.983835739220414000f, - 1.983787044267254700f, 1.983738276375916800f, 1.983689435548192900f, - 1.983640521785879200f, - 1.983591535090773800f, 1.983542475464678000f, 1.983493342909395500f, - 1.983444137426732600f, - 1.983394859018498900f, 1.983345507686505900f, 1.983296083432567900f, - 1.983246586258502700f, - 1.983197016166129400f, 1.983147373157271300f, 1.983097657233753100f, - 1.983047868397403100f, - 1.982998006650051400f, 1.982948071993531700f, 1.982898064429679900f, - 1.982847983960334600f, - 1.982797830587336800f, 1.982747604312531200f, 1.982697305137763700f, - 1.982646933064884200f, - 1.982596488095744300f, 1.982545970232199000f, 1.982495379476105800f, - 1.982444715829324600f, - 1.982393979293718200f, 1.982343169871152000f, 1.982292287563494300f, - 1.982241332372615600f, - 1.982190304300389400f, 1.982139203348692200f, 1.982088029519402300f, - 1.982036782814401900f, - 1.981985463235574700f, 1.981934070784807400f, 1.981882605463990200f, - 1.981831067275015000f, - 1.981779456219776600f, 1.981727772300172500f, 1.981676015518103500f, - 1.981624185875472000f, - 1.981572283374183800f, 1.981520308016147200f, 1.981468259803273300f, - 1.981416138737475800f, - 1.981363944820670800f, 1.981311678054777500f, 1.981259338441717400f, - 1.981206925983415300f, - 1.981154440681797800f, 1.981101882538794900f, 1.981049251556338900f, - 1.980996547736364900f, - 1.980943771080810700f, 1.980890921591616600f, 1.980837999270726100f, - 1.980785004120084700f, - 1.980731936141640900f, 1.980678795337345900f, 1.980625581709153600f, - 1.980572295259020600f, - 1.980518935988905700f, 1.980465503900771000f, 1.980411998996581200f, - 1.980358421278303200f, - 1.980304770747907300f, 1.980251047407365600f, 1.980197251258653900f, - 1.980143382303749500f, - 1.980089440544633600f, 1.980035425983289300f, 1.979981338621702200f, - 1.979927178461861500f, - 1.979872945505758000f, 1.979818639755386100f, 1.979764261212742400f, - 1.979709809879825800f, - 1.979655285758638900f, 1.979600688851186100f, 1.979546019159474900f, - 1.979491276685515300f, - 1.979436461431320000f, 1.979381573398904400f, 1.979326612590286400f, - 1.979271579007487100f, - 1.979216472652529900f, 1.979161293527440500f, 1.979106041634248100f, - 1.979050716974983800f, - 1.978995319551682100f, 1.978939849366379700f, 1.978884306421115900f, - 1.978828690717932900f, - 1.978773002258875600f, 1.978717241045991700f, 1.978661407081331100f, - 1.978605500366946700f, - 1.978549520904894000f, 1.978493468697231300f, 1.978437343746019600f, - 1.978381146053322000f, - 1.978324875621205300f, 1.978268532451738200f, 1.978212116546992100f, - 1.978155627909041300f, - 1.978099066539962900f, 1.978042432441836400f, 1.977985725616743900f, - 1.977928946066770600f, - 1.977872093794004200f, 1.977815168800534500f, 1.977758171088455100f, - 1.977701100659861300f, - 1.977643957516851400f, 1.977586741661526500f, 1.977529453095990200f, - 1.977472091822348700f, - 1.977414657842711200f, 1.977357151159189400f, 1.977299571773897700f, - 1.977241919688953000f, - 1.977184194906475000f, 1.977126397428586000f, 1.977068527257411300f, - 1.977010584395078300f, - 1.976952568843717700f, 1.976894480605462500f, 1.976836319682448300f, - 1.976778086076813600f, - 1.976719779790699500f, 1.976661400826249500f, 1.976602949185610500f, - 1.976544424870931400f, - 1.976485827884363800f, 1.976427158228062100f, 1.976368415904183900f, - 1.976309600914888400f, - 1.976250713262338600f, 1.976191752948699200f, 1.976132719976138000f, - 1.976073614346825800f, - 1.976014436062935700f, 1.975955185126643300f, 1.975895861540127200f, - 1.975836465305568400f, - 1.975776996425151000f, 1.975717454901061400f, 1.975657840735488800f, - 1.975598153930624900f, - 1.975538394488664200f, 1.975478562411804100f, 1.975418657702244300f, - 1.975358680362187400f, - 1.975298630393838500f, 1.975238507799405500f, 1.975178312581099100f, - 1.975118044741132300f, - 1.975057704281721000f, 1.974997291205083700f, 1.974936805513442000f, - 1.974876247209019100f, - 1.974815616294042200f, 1.974754912770740200f, 1.974694136641345300f, - 1.974633287908091500f, - 1.974572366573216400f, 1.974511372638960000f, 1.974450306107564900f, - 1.974389166981275900f, - 1.974327955262341400f, 1.974266670953011400f, 1.974205314055540000f, - 1.974143884572182400f, - 1.974082382505197400f, 1.974020807856846400f, 1.973959160629393100f, - 1.973897440825104200f, - 1.973835648446248900f, 1.973773783495099500f, 1.973711845973930000f, - 1.973649835885018100f, - 1.973587753230643400f, 1.973525598013088800f, 1.973463370234639600f, - 1.973401069897583200f, - 1.973338697004211100f, 1.973276251556815600f, 1.973213733557693400f, - 1.973151143009142800f, - 1.973088479913465100f, 1.973025744272964200f, 1.972962936089946800f, - 1.972900055366722000f, - 1.972837102105601900f, 1.972774076308901200f, 1.972710977978936900f, - 1.972647807118029300f, - 1.972584563728500700f, 1.972521247812676600f, 1.972457859372884500f, - 1.972394398411455800f, - 1.972330864930723200f, 1.972267258933022600f, 1.972203580420693000f, - 1.972139829396075200f, - 1.972076005861513700f, 1.972012109819354600f, 1.971948141271947500f, - 1.971884100221644300f, - 1.971819986670799500f, 1.971755800621770400f, 1.971691542076916800f, - 1.971627211038601500f, - 1.971562807509189800f, 1.971498331491049700f, 1.971433782986551400f, - 1.971369161998068400f, - 1.971304468527976800f, 1.971239702578655000f, 1.971174864152484400f, - 1.971109953251848600f, - 1.971044969879134600f, 1.970979914036731500f, 1.970914785727030800f, - 1.970849584952427900f, - 1.970784311715319400f, 1.970718966018105500f, 1.970653547863188600f, - 1.970588057252973900f, - 1.970522494189869800f, 1.970456858676286300f, 1.970391150714636800f, - 1.970325370307337100f, - 1.970259517456806100f, 1.970193592165464700f, 1.970127594435737000f, - 1.970061524270049400f, - 1.969995381670831100f, 1.969929166640514100f, 1.969862879181532700f, - 1.969796519296324300f, - 1.969730086987328900f, 1.969663582256988600f, 1.969597005107748900f, - 1.969530355542057800f, - 1.969463633562365400f, 1.969396839171125200f, 1.969329972370792700f, - 1.969263033163826800f, - 1.969196021552688500f, 1.969128937539841500f, 1.969061781127752400f, - 1.968994552318890300f, - 1.968927251115727200f, 1.968859877520737300f, 1.968792431536398000f, - 1.968724913165188900f, - 1.968657322409592500f, 1.968589659272094000f, 1.968521923755181000f, - 1.968454115861344000f, - 1.968386235593076300f, 1.968318282952873600f, 1.968250257943234200f, - 1.968182160566659000f, - 1.968113990825652200f, 1.968045748722719900f, 1.967977434260371300f, - 1.967909047441118100f, - 1.967840588267474500f, 1.967772056741957900f, 1.967703452867087800f, - 1.967634776645386600f, - 1.967566028079379200f, 1.967497207171593500f, 1.967428313924559600f, - 1.967359348340810700f, - 1.967290310422882700f, 1.967221200173313400f, 1.967152017594644200f, - 1.967082762689418500f, - 1.967013435460182700f, 1.966944035909485600f, 1.966874564039879300f, - 1.966805019853917500f, - 1.966735403354157500f, 1.966665714543159000f, 1.966595953423483800f, - 1.966526119997697100f, - 1.966456214268366600f, 1.966386236238062200f, 1.966316185909357200f, - 1.966246063284826700f, - 1.966175868367049400f, 1.966105601158605600f, 1.966035261662079300f, - 1.965964849880056600f, - 1.965894365815126000f, 1.965823809469879400f, 1.965753180846910900f, - 1.965682479948817100f, - 1.965611706778197700f, 1.965540861337654600f, 1.965469943629792700f, - 1.965398953657219600f, - 1.965327891422544900f, 1.965256756928382100f, 1.965185550177345900f, - 1.965114271172054800f, - 1.965042919915129400f, 1.964971496409193100f, 1.964900000656872000f, - 1.964828432660794500f, - 1.964756792423592200f, 1.964685079947899200f, 1.964613295236352000f, - 1.964541438291590000f, - 1.964469509116255000f, 1.964397507712991800f, 1.964325434084447600f, - 1.964253288233272400f, - 1.964181070162119000f, 1.964108779873642100f, 1.964036417370500300f, - 1.963963982655353400f, - 1.963891475730865400f, 1.963818896599701400f, 1.963746245264530700f, - 1.963673521728023900f, - 1.963600725992855200f, 1.963527858061700600f, 1.963454917937239800f, - 1.963381905622154400f, - 1.963308821119128700f, 1.963235664430850200f, 1.963162435560008100f, - 1.963089134509295300f, - 1.963015761281406800f, 1.962942315879040000f, 1.962868798304895400f, - 1.962795208561676200f, - 1.962721546652088200f, 1.962647812578839400f, 1.962574006344640900f, - 1.962500127952206300f, - 1.962426177404252200f, 1.962352154703497200f, 1.962278059852663000f, - 1.962203892854473800f, - 1.962129653711656800f, 1.962055342426941400f, 1.961980959003059500f, - 1.961906503442746300f, - 1.961831975748739200f, 1.961757375923778700f, 1.961682703970607100f, - 1.961607959891970200f, - 1.961533143690616000f, 1.961458255369295400f, 1.961383294930761700f, - 1.961308262377770900f, - 1.961233157713082200f, 1.961157980939456400f, 1.961082732059657800f, - 1.961007411076453000f, - 1.960932017992611500f, 1.960856552810905200f, 1.960781015534108800f, - 1.960705406164999300f, - 1.960629724706357100f, 1.960553971160964500f, 1.960478145531606700f, - 1.960402247821071900f, - 1.960326278032150200f, 1.960250236167635100f, 1.960174122230322400f, - 1.960097936223010400f, - 1.960021678148500500f, 1.959945348009596500f, 1.959868945809104500f, - 1.959792471549834000f, - 1.959715925234596600f, 1.959639306866206600f, 1.959562616447480900f, - 1.959485853981239600f, - 1.959409019470304700f, 1.959332112917501400f, 1.959255134325657000f, - 1.959178083697602300f, - 1.959100961036169800f, 1.959023766344195200f, 1.958946499624516700f, - 1.958869160879975500f, - 1.958791750113414700f, 1.958714267327680500f, 1.958636712525621900f, - 1.958559085710090500f, - 1.958481386883940100f, 1.958403616050027600f, 1.958325773211212300f, - 1.958247858370356400f, - 1.958169871530324600f, 1.958091812693984400f, 1.958013681864205500f, - 1.957935479043860600f, - 1.957857204235825100f, 1.957778857442976900f, 1.957700438668196700f, - 1.957621947914367500f, - 1.957543385184375300f, 1.957464750481108700f, 1.957386043807458800f, - 1.957307265166319500f, - 1.957228414560587200f, 1.957149491993160900f, 1.957070497466942400f, - 1.956991430984836400f, - 1.956912292549749500f, 1.956833082164591600f, 1.956753799832275300f, - 1.956674445555715000f, - 1.956595019337829000f, 1.956515521181537000f, 1.956435951089762200f, - 1.956356309065430100f, - 1.956276595111468900f, 1.956196809230809500f, 1.956116951426385600f, - 1.956037021701132900f, - 1.955957020057990500f, 1.955876946499899700f, 1.955796801029804800f, - 1.955716583650652000f, - 1.955636294365391300f, 1.955555933176974300f, 1.955475500088355900f, - 1.955394995102493100f, - 1.955314418222346100f, 1.955233769450877200f, 1.955153048791052000f, - 1.955072256245838000f, - 1.954991391818206000f, 1.954910455511129000f, 1.954829447327582900f, - 1.954748367270545900f, - 1.954667215342999600f, 1.954585991547927100f, 1.954504695888315000f, - 1.954423328367152600f, - 1.954341888987431100f, 1.954260377752145000f, 1.954178794664291200f, - 1.954097139726869600f, - 1.954015412942881900f, 1.953933614315333200f, 1.953851743847231100f, - 1.953769801541585400f, - 1.953687787401409400f, 1.953605701429718100f, 1.953523543629529700f, - 1.953441314003864900f, - 1.953359012555747200f, 1.953276639288202400f, 1.953194194204259200f, - 1.953111677306948800f, - 1.953029088599305100f, 1.952946428084364900f, 1.952863695765167100f, - 1.952780891644753500f, - 1.952698015726169100f, 1.952615068012460300f, 1.952532048506677300f, - 1.952448957211872200f, - 1.952365794131100300f, 1.952282559267419100f, 1.952199252623889200f, - 1.952115874203572900f, - 1.952032424009536600f, 1.951948902044847900f, 1.951865308312577900f, - 1.951781642815800100f, - 1.951697905557590700f, 1.951614096541028500f, 1.951530215769194700f, - 1.951446263245173500f, - 1.951362238972051500f, 1.951278142952918200f, 1.951193975190865600f, - 1.951109735688987900f, - 1.951025424450382900f, 1.950941041478150100f, 1.950856586775392200f, - 1.950772060345214300f, - 1.950687462190724200f, 1.950602792315032200f, 1.950518050721251600f, - 1.950433237412498000f, - 1.950348352391889600f, 1.950263395662547700f, 1.950178367227595900f, - 1.950093267090159800f, - 1.950008095253369200f, 1.949922851720355100f, 1.949837536494251700f, - 1.949752149578196000f, - 1.949666690975327100f, 1.949581160688787400f, 1.949495558721721500f, - 1.949409885077276500f, - 1.949324139758602700f, 1.949238322768852800f, 1.949152434111181700f, - 1.949066473788747300f, - 1.948980441804710300f, 1.948894338162233900f, 1.948808162864483600f, - 1.948721915914628100f, - 1.948635597315838200f, 1.948549207071288000f, 1.948462745184153400f, - 1.948376211657613500f, - 1.948289606494849800f, 1.948202929699046800f, 1.948116181273391100f, - 1.948029361221072400f, - 1.947942469545282500f, 1.947855506249216700f, 1.947768471336071700f, - 1.947681364809048100f, - 1.947594186671348000f, 1.947506936926177300f, 1.947419615576743600f, - 1.947332222626257500f, - 1.947244758077932200f, 1.947157221934983500f, 1.947069614200629900f, - 1.946981934878092300f, - 1.946894183970594900f, 1.946806361481363500f, 1.946718467413627300f, - 1.946630501770618000f, - 1.946542464555569800f, 1.946454355771719300f, 1.946366175422306500f, - 1.946277923510573200f, - 1.946189600039764300f, 1.946101205013127000f, 1.946012738433911600f, - 1.945924200305370700f, - 1.945835590630759400f, 1.945746909413335900f, 1.945658156656360700f, - 1.945569332363096700f, - 1.945480436536810100f, 1.945391469180769200f, 1.945302430298244900f, - 1.945213319892511200f, - 1.945124137966844200f, 1.945034884524523100f, 1.944945559568829200f, - 1.944856163103046800f, - 1.944766695130463000f, 1.944677155654366900f, 1.944587544678050900f, - 1.944497862204809900f, - 1.944408108237940700f, 1.944318282780743900f, 1.944228385836521700f, - 1.944138417408579400f, - 1.944048377500225100f, 1.943958266114769200f, 1.943868083255524800f, - 1.943777828925807600f, - 1.943687503128936200f, 1.943597105868231500f, 1.943506637147017300f, - 1.943416096968619400f, - 1.943325485336367300f, 1.943234802253592400f, 1.943144047723628400f, - 1.943053221749812400f, - 1.942962324335484100f, 1.942871355483985200f, 1.942780315198660200f, - 1.942689203482856900f, - 1.942598020339924700f, 1.942506765773216500f, 1.942415439786087300f, - 1.942324042381895000f, - 1.942232573564000000f, 1.942141033335765400f, 1.942049421700556600f, - 1.941957738661741900f, - 1.941865984222692900f, 1.941774158386782200f, 1.941682261157386700f, - 1.941590292537884700f, - 1.941498252531658200f, 1.941406141142090600f, 1.941313958372568900f, - 1.941221704226482500f, - 1.941129378707223000f, 1.941036981818185400f, 1.940944513562766300f, - 1.940851973944365900f, - 1.940759362966386600f, 1.940666680632233200f, 1.940573926945313700f, - 1.940481101909038200f, - 1.940388205526819600f, 1.940295237802073500f, 1.940202198738217900f, - 1.940109088338673600f, - 1.940015906606864300f, 1.939922653546215500f, 1.939829329160156500f, - 1.939735933452118000f, - 1.939642466425534300f, 1.939548928083841800f, 1.939455318430479500f, - 1.939361637468889100f, - 1.939267885202515400f, 1.939174061634805000f, 1.939080166769207700f, - 1.938986200609175600f, - 1.938892163158163700f, 1.938798054419629500f, 1.938703874397032800f, - 1.938609623093837000f, - 1.938515300513506700f, 1.938420906659510600f, 1.938326441535318500f, - 1.938231905144404400f, - 1.938137297490243500f, 1.938042618576314400f, 1.937947868406098500f, - 1.937853046983079300f, - 1.937758154310742900f, 1.937663190392578500f, 1.937568155232077600f, - 1.937473048832734500f, - 1.937377871198045600f, 1.937282622331510500f, 1.937187302236631500f, - 1.937091910916912900f, - 1.936996448375861900f, 1.936900914616988900f, 1.936805309643805800f, - 1.936709633459828200f, - 1.936613886068573500f, 1.936518067473562300f, 1.936422177678317300f, - 1.936326216686364400f, - 1.936230184501231500f, 1.936134081126449800f, 1.936037906565552400f, - 1.935941660822075600f, - 1.935845343899558000f, 1.935748955801540800f, 1.935652496531568000f, - 1.935555966093186300f, - 1.935459364489944500f, 1.935362691725394500f, 1.935265947803090900f, - 1.935169132726590500f, - 1.935072246499453000f, 1.934975289125240500f, 1.934878260607517900f, - 1.934781160949852600f, - 1.934683990155814800f, 1.934586748228977100f, 1.934489435172914900f, - 1.934392050991206300f, - 1.934294595687431300f, 1.934197069265173500f, 1.934099471728018700f, - 1.934001803079554700f, - 1.933904063323373300f, 1.933806252463067500f, 1.933708370502233800f, - 1.933610417444471000f, - 1.933512393293380600f, 1.933414298052566600f, 1.933316131725635800f, - 1.933217894316197300f, - 1.933119585827862900f, 1.933021206264247600f, 1.932922755628968100f, - 1.932824233925644300f, - 1.932725641157898600f, 1.932626977329356100f, 1.932528242443643900f, - 1.932429436504392800f, - 1.932330559515235100f, 1.932231611479806800f, 1.932132592401745400f, - 1.932033502284691700f, - 1.931934341132289100f, 1.931835108948183300f, 1.931735805736022800f, - 1.931636431499459000f, - 1.931536986242145200f, 1.931437469967737900f, 1.931337882679895900f, - 1.931238224382281000f, - 1.931138495078557300f, 1.931038694772391200f, 1.930938823467452500f, - 1.930838881167413100f, - 1.930738867875947400f, 1.930638783596732700f, 1.930538628333448900f, - 1.930438402089778200f, - 1.930338104869405900f, 1.930237736676019500f, 1.930137297513309300f, - 1.930036787384968200f, - 1.929936206294691400f, 1.929835554246177400f, 1.929734831243126600f, - 1.929634037289242400f, - 1.929533172388230700f, 1.929432236543799900f, 1.929331229759661200f, - 1.929230152039528500f, - 1.929129003387117800f, 1.929027783806148300f, 1.928926493300341400f, - 1.928825131873421500f, - 1.928723699529115000f, 1.928622196271151800f, 1.928520622103263400f, - 1.928418977029184600f, - 1.928317261052652700f, 1.928215474177407100f, 1.928113616407190600f, - 1.928011687745748300f, - 1.927909688196827400f, 1.927807617764178300f, 1.927705476451554000f, - 1.927603264262709900f, - 1.927500981201404100f, 1.927398627271397000f, 1.927296202476451900f, - 1.927193706820335100f, - 1.927091140306814500f, 1.926988502939661400f, 1.926885794722649600f, - 1.926783015659555300f, - 1.926680165754157500f, 1.926577245010237400f, 1.926474253431579500f, - 1.926371191021970100f, - 1.926268057785198700f, 1.926164853725057300f, 1.926061578845340600f, - 1.925958233149845000f, - 1.925854816642371000f, 1.925751329326720600f, 1.925647771206698600f, - 1.925544142286112800f, - 1.925440442568773000f, 1.925336672058492300f, 1.925232830759086000f, - 1.925128918674371900f, - 1.925024935808170600f, 1.924920882164305300f, 1.924816757746601800f, - 1.924712562558888100f, - 1.924608296604995800f, 1.924503959888757900f, 1.924399552414010700f, - 1.924295074184593000f, - 1.924190525204346300f, 1.924085905477114400f, 1.923981215006744100f, - 1.923876453797084300f, - 1.923771621851986700f, 1.923666719175306100f, 1.923561745770898900f, - 1.923456701642625200f, - 1.923351586794346900f, 1.923246401229928600f, 1.923141144953238300f, - 1.923035817968145300f, - 1.922930420278522500f, 1.922824951888245000f, 1.922719412801190600f, - 1.922613803021239600f, - 1.922508122552275100f, 1.922402371398182600f, 1.922296549562850100f, - 1.922190657050168800f, - 1.922084693864031700f, 1.921978660008334600f, 1.921872555486976700f, - 1.921766380303858500f, - 1.921660134462884100f, 1.921553817967959900f, 1.921447430822994500f, - 1.921340973031900000f, - 1.921234444598590100f, 1.921127845526981600f, 1.921021175820994100f, - 1.920914435484549100f, - 1.920807624521571700f, 1.920700742935988600f, 1.920593790731729600f, - 1.920486767912727300f, - 1.920379674482916500f, 1.920272510446234400f, 1.920165275806621400f, - 1.920057970568020100f, - 1.919950594734376000f, 1.919843148309637000f, 1.919735631297753400f, - 1.919628043702678300f, - 1.919520385528367300f, 1.919412656778779000f, 1.919304857457874200f, - 1.919196987569616200f, - 1.919089047117971100f, 1.918981036106907700f, 1.918872954540397300f, - 1.918764802422413500f, - 1.918656579756932800f, 1.918548286547934400f, 1.918439922799399800f, - 1.918331488515313300f, - 1.918222983699661600f, 1.918114408356434300f, 1.918005762489623400f, - 1.917897046103223200f, - 1.917788259201231200f, 1.917679401787647100f, 1.917570473866473200f, - 1.917461475441714500f, - 1.917352406517378600f, 1.917243267097475700f, 1.917134057186018300f, - 1.917024776787022100f, - 1.916915425904504700f, 1.916806004542486800f, 1.916696512704991500f, - 1.916586950396044400f, - 1.916477317619674100f, 1.916367614379911100f, 1.916257840680788900f, - 1.916147996526343700f, - 1.916038081920614400f, 1.915928096867641800f, 1.915818041371470000f, - 1.915707915436145200f, - 1.915597719065716700f, 1.915487452264236000f, 1.915377115035757200f, - 1.915266707384337200f, - 1.915156229314035200f, 1.915045680828913400f, 1.914935061933036300f, - 1.914824372630470800f, - 1.914713612925287100f, 1.914602782821557000f, 1.914491882323355700f, - 1.914380911434760500f, - 1.914269870159851700f, 1.914158758502712000f, 1.914047576467426500f, - 1.913936324058083100f, - 1.913825001278772100f, 1.913713608133586600f, 1.913602144626622500f, - 1.913490610761977600f, - 1.913379006543752800f, 1.913267331976051400f, 1.913155587062979500f, - 1.913043771808645700f, - 1.912931886217160900f, 1.912819930292639000f, 1.912707904039196300f, - 1.912595807460951500f, - 1.912483640562026200f, 1.912371403346544400f, 1.912259095818632700f, - 1.912146717982420500f, - 1.912034269842039600f, 1.911921751401624200f, 1.911809162665311500f, - 1.911696503637241100f, - 1.911583774321554700f, 1.911470974722397500f, 1.911358104843916500f, - 1.911245164690262000f, - 1.911132154265586100f, 1.911019073574044200f, 1.910905922619793800f, - 1.910792701406995000f, - 1.910679409939810600f, 1.910566048222406300f, 1.910452616258949900f, - 1.910339114053611900f, - 1.910225541610565800f, 1.910111898933986900f, 1.909998186028053700f, - 1.909884402896947100f, - 1.909770549544850500f, 1.909656625975950200f, 1.909542632194434700f, - 1.909428568204495100f, - 1.909314434010325400f, 1.909200229616121700f, 1.909085955026083200f, - 1.908971610244411600f, - 1.908857195275310800f, 1.908742710122987700f, 1.908628154791651300f, - 1.908513529285513500f, - 1.908398833608789100f, 1.908284067765694900f, 1.908169231760450400f, - 1.908054325597278200f, - 1.907939349280402400f, 1.907824302814050900f, 1.907709186202453600f, - 1.907593999449842800f, - 1.907478742560453600f, 1.907363415538523700f, 1.907248018388293400f, - 1.907132551114005600f, - 1.907017013719905600f, 1.906901406210241200f, 1.906785728589263300f, - 1.906669980861224900f, - 1.906554163030381500f, 1.906438275100991600f, 1.906322317077316300f, - 1.906206288963618700f, - 1.906090190764164700f, 1.905974022483223300f, 1.905857784125065500f, - 1.905741475693964800f, - 1.905625097194197900f, 1.905508648630043700f, 1.905392130005783400f, - 1.905275541325701400f, - 1.905158882594083900f, 1.905042153815220700f, 1.904925354993402900f, - 1.904808486132925300f, - 1.904691547238084800f, 1.904574538313180700f, 1.904457459362515200f, - 1.904340310390393100f, - 1.904223091401121600f, 1.904105802399010300f, 1.903988443388371600f, - 1.903871014373520700f, - 1.903753515358774800f, 1.903635946348454500f, 1.903518307346881800f, - 1.903400598358382600f, - 1.903282819387284200f, 1.903164970437917400f, 1.903047051514615000f, - 1.902929062621712600f, - 1.902811003763547900f, 1.902692874944462300f, 1.902574676168798700f, - 1.902456407440902700f, - 1.902338068765123200f, 1.902219660145810800f, 1.902101181587319000f, - 1.901982633094004200f, - 1.901864014670225000f, 1.901745326320342500f, 1.901626568048721000f, - 1.901507739859726200f, - 1.901388841757727600f, 1.901269873747096600f, 1.901150835832207100f, - 1.901031728017436300f, - 1.900912550307162700f, 1.900793302705768900f, 1.900673985217638900f, - 1.900554597847159400f, - 1.900435140598720500f, 1.900315613476714100f, 1.900196016485534700f, - 1.900076349629579600f, - 1.899956612913248800f, 1.899836806340944300f, 1.899716929917071500f, - 1.899596983646037600f, - 1.899476967532252900f, 1.899356881580129800f, 1.899236725794083600f, - 1.899116500178532200f, - 1.898996204737895900f, 1.898875839476597700f, 1.898755404399062900f, - 1.898634899509719500f, - 1.898514324812998300f, 1.898393680313332600f, 1.898272966015157800f, - 1.898152181922912600f, - 1.898031328041037700f, 1.897910404373976500f, 1.897789410926175000f, - 1.897668347702081900f, - 1.897547214706148300f, 1.897426011942827900f, 1.897304739416577200f, - 1.897183397131854600f, - 1.897061985093121800f, 1.896940503304842800f, 1.896818951771484000f, - 1.896697330497514800f, - 1.896575639487406300f, 1.896453878745633100f, 1.896332048276672100f, - 1.896210148085002400f, - 1.896088178175106200f, 1.895966138551467700f, 1.895844029218574100f, - 1.895721850180915000f, - 1.895599601442982600f, 1.895477283009271400f, 1.895354894884279100f, - 1.895232437072505300f, - 1.895109909578452500f, 1.894987312406625700f, 1.894864645561532100f, - 1.894741909047682500f, - 1.894619102869589100f, 1.894496227031767100f, 1.894373281538734400f, - 1.894250266395011600f, - 1.894127181605121100f, 1.894004027173588700f, 1.893880803104942600f, - 1.893757509403713100f, - 1.893634146074433500f, 1.893510713121639300f, 1.893387210549869000f, - 1.893263638363663400f, - 1.893139996567565900f, 1.893016285166122500f, 1.892892504163881600f, - 1.892768653565394300f, - 1.892644733375214300f, 1.892520743597897700f, 1.892396684238003300f, - 1.892272555300092300f, - 1.892148356788728700f, 1.892024088708479200f, 1.891899751063912200f, - 1.891775343859599400f, - 1.891650867100115300f, 1.891526320790036100f, 1.891401704933941100f, - 1.891277019536412400f, - 1.891152264602033800f, 1.891027440135392600f, 1.890902546141078000f, - 1.890777582623682300f, - 1.890652549587799700f, 1.890527447038027300f, 1.890402274978965100f, - 1.890277033415215200f, - 1.890151722351382200f, 1.890026341792073500f, 1.889900891741899100f, - 1.889775372205471300f, - 1.889649783187405100f, 1.889524124692318200f, 1.889398396724830500f, - 1.889272599289564900f, - 1.889146732391146400f, 1.889020796034202700f, 1.888894790223364600f, - 1.888768714963264400f, - 1.888642570258537700f, 1.888516356113822700f, 1.888390072533759700f, - 1.888263719522991900f, - 1.888137297086165000f, 1.888010805227927000f, 1.887884243952928600f, - 1.887757613265823400f, - 1.887630913171267000f, 1.887504143673917700f, 1.887377304778437000f, - 1.887250396489487800f, - 1.887123418811736500f, 1.886996371749851700f, 1.886869255308504200f, - 1.886742069492368000f, - 1.886614814306119400f, 1.886487489754437300f, 1.886360095842002600f, - 1.886232632573499700f, - 1.886105099953614900f, 1.885977497987037000f, 1.885849826678457800f, - 1.885722086032571200f, - 1.885594276054074300f, 1.885466396747665700f, 1.885338448118047700f, - 1.885210430169924200f, - 1.885082342908002400f, 1.884954186336991400f, 1.884825960461603100f, - 1.884697665286552400f, - 1.884569300816556000f, 1.884440867056333700f, 1.884312364010607600f, - 1.884183791684102400f, - 1.884055150081545200f, 1.883926439207665800f, 1.883797659067196800f, - 1.883668809664872600f, - 1.883539891005431100f, 1.883410903093611900f, 1.883281845934157800f, - 1.883152719531813800f, - 1.883023523891327300f, 1.882894259017448900f, 1.882764924914930700f, - 1.882635521588528400f, - 1.882506049042999700f, 1.882376507283104900f, 1.882246896313606800f, - 1.882117216139270700f, - 1.881987466764865100f, 1.881857648195159900f, 1.881727760434928500f, - 1.881597803488946500f, - 1.881467777361992100f, 1.881337682058845700f, 1.881207517584290600f, - 1.881077283943112900f, - 1.880946981140100500f, 1.880816609180044700f, 1.880686168067738500f, - 1.880555657807977800f, - 1.880425078405561600f, 1.880294429865290600f, 1.880163712191968300f, - 1.880032925390400900f, - 1.879902069465397200f, 1.879771144421768200f, 1.879640150264327600f, - 1.879509086997891900f, - 1.879377954627279700f, 1.879246753157312700f, 1.879115482592814500f, - 1.878984142938611600f, - 1.878852734199532900f, 1.878721256380410100f, 1.878589709486077300f, - 1.878458093521370800f, - 1.878326408491130200f, 1.878194654400196600f, 1.878062831253414900f, - 1.877930939055631100f, - 1.877798977811695200f, 1.877666947526458700f, 1.877534848204775800f, - 1.877402679851504000f, - 1.877270442471502100f, 1.877138136069632400f, 1.877005760650759500f, - 1.876873316219750200f, - 1.876740802781474500f, 1.876608220340804100f, 1.876475568902614000f, - 1.876342848471781200f, - 1.876210059053185600f, 1.876077200651709500f, 1.875944273272237800f, - 1.875811276919657500f, - 1.875678211598858800f, 1.875545077314734000f, 1.875411874072178100f, - 1.875278601876088700f, - 1.875145260731365700f, 1.875011850642911600f, 1.874878371615631900f, - 1.874744823654434000f, - 1.874611206764227800f, 1.874477520949926500f, 1.874343766216444800f, - 1.874209942568701100f, - 1.874076050011615400f, 1.873942088550110400f, 1.873808058189111700f, - 1.873673958933546900f, - 1.873539790788347100f, 1.873405553758444600f, 1.873271247848775400f, - 1.873136873064277000f, - 1.873002429409890600f, 1.872867916890558900f, 1.872733335511227700f, - 1.872598685276845000f, - 1.872463966192361900f, 1.872329178262731200f, 1.872194321492908700f, - 1.872059395887852900f, - 1.871924401452524700f, 1.871789338191887100f, 1.871654206110906500f, - 1.871519005214550700f, - 1.871383735507791100f, 1.871248396995601300f, 1.871112989682956800f, - 1.870977513574836500f, - 1.870841968676221400f, 1.870706354992095000f, 1.870570672527443600f, - 1.870434921287255700f, - 1.870299101276522400f, 1.870163212500237900f, 1.870027254963397800f, - 1.869891228671001200f, - 1.869755133628049600f, 1.869618969839546500f, 1.869482737310498100f, - 1.869346436045913800f, - 1.869210066050804600f, 1.869073627330184700f, 1.868937119889070300f, - 1.868800543732480600f, - 1.868663898865437200f, 1.868527185292963700f, 1.868390403020087100f, - 1.868253552051836200f, - 1.868116632393243000f, 1.867979644049341200f, 1.867842587025167800f, - 1.867705461325761800f, - 1.867568266956164800f, 1.867431003921421500f, 1.867293672226578300f, - 1.867156271876684500f, - 1.867018802876792200f, 1.866881265231955500f, 1.866743658947231300f, - 1.866605984027679000f, - 1.866468240478360600f, 1.866330428304340300f, 1.866192547510685300f, - 1.866054598102465000f, - 1.865916580084751500f, 1.865778493462619100f, 1.865640338241145100f, - 1.865502114425408900f, - 1.865363822020492700f, 1.865225461031480900f, 1.865087031463460900f, - 1.864948533321522300f, - 1.864809966610757400f, 1.864671331336260600f, 1.864532627503129100f, - 1.864393855116463200f, - 1.864255014181364500f, 1.864116104702938000f, 1.863977126686291200f, - 1.863838080136534000f, - 1.863698965058778300f, 1.863559781458139300f, 1.863420529339734100f, - 1.863281208708683000f, - 1.863141819570107900f, 1.863002361929134500f, 1.862862835790889400f, - 1.862723241160503300f, - 1.862583578043108100f, 1.862443846443839300f, 1.862304046367834200f, - 1.862164177820232700f, - 1.862024240806177800f, 1.861884235330814300f, 1.861744161399289600f, - 1.861604019016754200f, - 1.861463808188360500f, 1.861323528919263800f, 1.861183181214621600f, - 1.861042765079594200f, - 1.860902280519344500f, 1.860761727539037300f, 1.860621106143840500f, - 1.860480416338924600f, - 1.860339658129461800f, 1.860198831520627900f, 1.860057936517600700f, - 1.859916973125560000f, - 1.859775941349689000f, 1.859634841195173100f, 1.859493672667199800f, - 1.859352435770959900f, - 1.859211130511645900f, 1.859069756894453400f, 1.858928314924580300f, - 1.858786804607227100f, - 1.858645225947596300f, 1.858503578950893900f, 1.858361863622327400f, - 1.858220079967107600f, - 1.858078227990447300f, 1.857936307697561900f, 1.857794319093669900f, - 1.857652262183991000f, - 1.857510136973749000f, 1.857367943468169100f, 1.857225681672479300f, - 1.857083351591910300f, - 1.856940953231694900f, 1.856798486597069000f, 1.856655951693270600f, - 1.856513348525540300f, - 1.856370677099121100f, 1.856227937419258700f, 1.856085129491201100f, - 1.855942253320199200f, - 1.855799308911506100f, 1.855656296270377300f, 1.855513215402071000f, - 1.855370066311848000f, - 1.855226849004971500f, 1.855083563486706900f, 1.854940209762322700f, - 1.854796787837089500f, - 1.854653297716280400f, 1.854509739405171300f, 1.854366112909040300f, - 1.854222418233168400f, - 1.854078655382838300f, 1.853934824363336200f, 1.853790925179950500f, - 1.853646957837971500f, - 1.853502922342692600f, 1.853358818699409900f, 1.853214646913421200f, - 1.853070406990027500f, - 1.852926098934532200f, 1.852781722752241000f, 1.852637278448462200f, - 1.852492766028506400f, - 1.852348185497687300f, 1.852203536861320600f, 1.852058820124724300f, - 1.851914035293219700f, - 1.851769182372129600f, 1.851624261366780400f, 1.851479272282500000f, - 1.851334215124619300f, - 1.851189089898471800f, 1.851043896609393400f, 1.850898635262721900f, - 1.850753305863798800f, - 1.850607908417967200f, 1.850462442930572900f, 1.850316909406964200f, - 1.850171307852492200f, - 1.850025638272510000f, 1.849879900672373600f, 1.849734095057441200f, - 1.849588221433073700f, - 1.849442279804634600f, 1.849296270177489800f, 1.849150192557007300f, - 1.849004046948558200f, - 1.848857833357515900f, 1.848711551789256300f, 1.848565202249157400f, - 1.848418784742600400f, - 1.848272299274968500f, 1.848125745851647800f, 1.847979124478026100f, - 1.847832435159495000f, - 1.847685677901447200f, 1.847538852709279100f, 1.847391959588388300f, - 1.847244998544176300f, - 1.847097969582046200f, 1.846950872707404000f, 1.846803707925657600f, - 1.846656475242218300f, - 1.846509174662499300f, 1.846361806191916000f, 1.846214369835887500f, - 1.846066865599834000f, - 1.845919293489179000f, 1.845771653509348200f, 1.845623945665770100f, - 1.845476169963875500f, - 1.845328326409097400f, 1.845180415006871800f, 1.845032435762637100f, - 1.844884388681833800f, - 1.844736273769905300f, 1.844588091032297400f, 1.844439840474458200f, - 1.844291522101838800f, - 1.844143135919891900f, 1.843994681934073600f, 1.843846160149842200f, - 1.843697570572658200f, - 1.843548913207985000f, 1.843400188061288000f, 1.843251395138035800f, - 1.843102534443698900f, - 1.842953605983750400f, 1.842804609763666100f, 1.842655545788924000f, - 1.842506414065004900f, - 1.842357214597392100f, 1.842207947391570900f, 1.842058612453029600f, - 1.841909209787258900f, - 1.841759739399751800f, 1.841610201296003800f, 1.841460595481513100f, - 1.841310921961780500f, - 1.841161180742308500f, 1.841011371828603200f, 1.840861495226172600f, - 1.840711550940526700f, - 1.840561538977179200f, 1.840411459341645400f, 1.840261312039443100f, - 1.840111097076092800f, - 1.839960814457117600f, 1.839810464188043100f, 1.839660046274397100f, - 1.839509560721709800f, - 1.839359007535514400f, 1.839208386721346500f, 1.839057698284743500f, - 1.838906942231246100f, - 1.838756118566397200f, 1.838605227295741800f, 1.838454268424828400f, - 1.838303241959206700f, - 1.838152147904429800f, 1.838000986266052900f, 1.837849757049633900f, - 1.837698460260732900f, - 1.837547095904912700f, 1.837395663987738700f, 1.837244164514778600f, - 1.837092597491602100f, - 1.836940962923782700f, 1.836789260816895000f, 1.836637491176516600f, - 1.836485654008228200f, - 1.836333749317611700f, 1.836181777110252900f, 1.836029737391738700f, - 1.835877630167659800f, - 1.835725455443608200f, 1.835573213225179400f, 1.835420903517970500f, - 1.835268526327581900f, - 1.835116081659615700f, 1.834963569519677100f, 1.834810989913373500f, - 1.834658342846314800f, - 1.834505628324113200f, 1.834352846352383700f, 1.834199996936744000f, - 1.834047080082813300f, - 1.833894095796214400f, 1.833741044082571900f, 1.833587924947513100f, - 1.833434738396668000f, - 1.833281484435668400f, 1.833128163070149300f, 1.832974774305747600f, - 1.832821318148103500f, - 1.832667794602858400f, 1.832514203675657600f, 1.832360545372147900f, - 1.832206819697979000f, - 1.832053026658802700f, 1.831899166260273700f, 1.831745238508049300f, - 1.831591243407788300f, - 1.831437180965153100f, 1.831283051185808300f, 1.831128854075420500f, - 1.830974589639659000f, - 1.830820257884196100f, 1.830665858814705600f, 1.830511392436864800f, - 1.830356858756352800f, - 1.830202257778851300f, 1.830047589510044500f, 1.829892853955619200f, - 1.829738051121264600f, - 1.829583181012672400f, 1.829428243635536500f, 1.829273238995553700f, - 1.829118167098423100f, - 1.828963027949846100f, 1.828807821555527000f, 1.828652547921171900f, - 1.828497207052490100f, - 1.828341798955192900f, 1.828186323634994200f, 1.828030781097610400f, - 1.827875171348760400f, - 1.827719494394165500f, 1.827563750239549400f, 1.827407938890638600f, - 1.827252060353161500f, - 1.827096114632849700f, 1.826940101735436500f, 1.826784021666658400f, - 1.826627874432253700f, - 1.826471660037963800f, 1.826315378489531800f, 1.826159029792704400f, - 1.826002613953229500f, - 1.825846130976858100f, 1.825689580869344100f, 1.825532963636443000f, - 1.825376279283913200f, - 1.825219527817515800f, 1.825062709243013800f, 1.824905823566173000f, - 1.824748870792761900f, - 1.824591850928550800f, 1.824434763979313300f, 1.824277609950824700f, - 1.824120388848863300f, - 1.823963100679209600f, 1.823805745447646600f, 1.823648323159960100f, - 1.823490833821937600f, - 1.823333277439369600f, 1.823175654018049300f, 1.823017963563772000f, - 1.822860206082335300f, - 1.822702381579539800f, 1.822544490061187800f, 1.822386531533084900f, - 1.822228506001038800f, - 1.822070413470859600f, 1.821912253948359700f, 1.821754027439354400f, - 1.821595733949661100f, - 1.821437373485099900f, 1.821278946051493100f, 1.821120451654665700f, - 1.820961890300445400f, - 1.820803261994661500f, 1.820644566743146800f, 1.820485804551735800f, - 1.820326975426265600f, - 1.820168079372576300f, 1.820009116396509800f, 1.819850086503910700f, - 1.819690989700625900f, - 1.819531825992505500f, 1.819372595385401000f, 1.819213297885166900f, - 1.819053933497660300f, - 1.818894502228740600f, 1.818735004084269600f, 1.818575439070111200f, - 1.818415807192132600f, - 1.818256108456203000f, 1.818096342868193800f, 1.817936510433979300f, - 1.817776611159436000f, - 1.817616645050443000f, 1.817456612112881900f, 1.817296512352636300f, - 1.817136345775592900f, - 1.816976112387640700f, 1.816815812194670700f, 1.816655445202576700f, - 1.816495011417255300f, - 1.816334510844604700f, 1.816173943490526400f, 1.816013309360923900f, - 1.815852608461703300f, - 1.815691840798773000f, 1.815531006378043900f, 1.815370105205429600f, - 1.815209137286846200f, - 1.815048102628211500f, 1.814887001235446600f, 1.814725833114474700f, - 1.814564598271221300f, - 1.814403296711615000f, 1.814241928441585800f, 1.814080493467067300f, - 1.813918991793994900f, - 1.813757423428306000f, 1.813595788375941700f, 1.813434086642844400f, - 1.813272318234959700f, - 1.813110483158235400f, 1.812948581418621500f, 1.812786613022070700f, - 1.812624577974538000f, - 1.812462476281981200f, 1.812300307950360300f, 1.812138072985637800f, - 1.811975771393778300f, - 1.811813403180749300f, 1.811650968352521000f, 1.811488466915065000f, - 1.811325898874356800f, - 1.811163264236372900f, 1.811000563007093100f, 1.810837795192499400f, - 1.810674960798576600f, - 1.810512059831311400f, 1.810349092296693400f, 1.810186058200714100f, - 1.810022957549368000f, - 1.809859790348652200f, 1.809696556604565300f, 1.809533256323109200f, - 1.809369889510288100f, - 1.809206456172108200f, 1.809042956314578900f, 1.808879389943711200f, - 1.808715757065519200f, - 1.808552057686019200f, 1.808388291811230000f, 1.808224459447172800f, - 1.808060560599871200f, - 1.807896595275351200f, 1.807732563479641300f, 1.807568465218772900f, - 1.807404300498778800f, - 1.807240069325695400f, 1.807075771705560800f, 1.806911407644415700f, - 1.806746977148303300f, - 1.806582480223269500f, 1.806417916875362000f, 1.806253287110631600f, - 1.806088590935131000f, - 1.805923828354915900f, 1.805758999376044100f, 1.805594104004575800f, - 1.805429142246573600f, - 1.805264114108102900f, 1.805099019595231200f, 1.804933858714028700f, - 1.804768631470567500f, - 1.804603337870923000f, 1.804437977921172300f, 1.804272551627395400f, - 1.804107058995674500f, - 1.803941500032094200f, 1.803775874742741500f, 1.803610183133706400f, - 1.803444425211080400f, - 1.803278600980958300f, 1.803112710449436900f, 1.802946753622615400f, - 1.802780730506595700f, - 1.802614641107481900f, 1.802448485431380900f, 1.802282263484401300f, - 1.802115975272655000f, - 1.801949620802255600f, 1.801783200079319900f, 1.801616713109966300f, - 1.801450159900316300f, - 1.801283540456493700f, 1.801116854784624400f, 1.800950102890836800f, - 1.800783284781262200f, - 1.800616400462033800f, 1.800449449939287800f, 1.800282433219162000f, - 1.800115350307797600f, - 1.799948201211337500f, 1.799780985935927300f, 1.799613704487715200f, - 1.799446356872851400f, - 1.799278943097489100f, 1.799111463167783400f, 1.798943917089892000f, - 1.798776304869975200f, - 1.798608626514195800f, 1.798440882028718500f, 1.798273071419711000f, - 1.798105194693343500f, - 1.797937251855787700f, 1.797769242913218800f, 1.797601167871813800f, - 1.797433026737752700f, - 1.797264819517217200f, 1.797096546216391900f, 1.796928206841463800f, - 1.796759801398622100f, - 1.796591329894058800f, 1.796422792333968000f, 1.796254188724546500f, - 1.796085519071992900f, - 1.795916783382509200f, 1.795747981662299200f, 1.795579113917569200f, - 1.795410180154527900f, - 1.795241180379386800f, 1.795072114598359200f, 1.794902982817661500f, - 1.794733785043511900f, - 1.794564521282131300f, 1.794395191539743400f, 1.794225795822573600f, - 1.794056334136850300f, - 1.793886806488804100f, 1.793717212884667900f, 1.793547553330677300f, - 1.793377827833070100f, - 1.793208036398086900f, 1.793038179031970000f, 1.792868255740965000f, - 1.792698266531319400f, - 1.792528211409282900f, 1.792358090381108300f, 1.792187903453050100f, - 1.792017650631366100f, - 1.791847331922315600f, 1.791676947332161000f, 1.791506496867166600f, - 1.791335980533599300f, - 1.791165398337728900f, 1.790994750285827000f, 1.790824036384167900f, - 1.790653256639028100f, - 1.790482411056686800f, 1.790311499643425500f, 1.790140522405528200f, - 1.789969479349281100f, - 1.789798370480973000f, 1.789627195806895200f, 1.789455955333341100f, - 1.789284649066606800f, - 1.789113277012990900f, 1.788941839178794100f, 1.788770335570319700f, - 1.788598766193873600f, - 1.788427131055763600f, 1.788255430162300400f, 1.788083663519796800f, - 1.787911831134568300f, - 1.787739933012932900f, 1.787567969161210300f, 1.787395939585723500f, - 1.787223844292797500f, - 1.787051683288759500f, 1.786879456579939700f, 1.786707164172670200f, - 1.786534806073285700f, - 1.786362382288123400f, 1.786189892823522700f, 1.786017337685825700f, - 1.785844716881376700f, - 1.785672030416522300f, 1.785499278297612000f, 1.785326460530997300f, - 1.785153577123032000f, - 1.784980628080072900f, 1.784807613408478300f, 1.784634533114609800f, - 1.784461387204831400f, - 1.784288175685508700f, 1.784114898563010200f, 1.783941555843707100f, - 1.783768147533972200f, - 1.783594673640181800f, 1.783421134168713800f, 1.783247529125948900f, - 1.783073858518269700f, - 1.782900122352062000f, 1.782726320633713200f, 1.782552453369613800f, - 1.782378520566156200f, - 1.782204522229735600f, 1.782030458366749200f, 1.781856328983596900f, - 1.781682134086680900f, - 1.781507873682406200f, 1.781333547777179200f, 1.781159156377410100f, - 1.780984699489510200f, - 1.780810177119894100f, 1.780635589274978600f, 1.780460935961182300f, - 1.780286217184927000f, - 1.780111432952636600f, 1.779936583270737400f, 1.779761668145658300f, - 1.779586687583830200f, - 1.779411641591686500f, 1.779236530175663600f, 1.779061353342199500f, - 1.778886111097735000f, - 1.778710803448713400f, 1.778535430401580100f, 1.778359991962783000f, - 1.778184488138772900f, - 1.778008918936002000f, 1.777833284360925900f, 1.777657584420002000f, - 1.777481819119690200f, - 1.777305988466453000f, 1.777130092466755200f, 1.776954131127064200f, - 1.776778104453849100f, - 1.776602012453582400f, 1.776425855132738100f, 1.776249632497793200f, - 1.776073344555227000f, - 1.775896991311520800f, 1.775720572773158900f, 1.775544088946627600f, - 1.775367539838415700f, - 1.775190925455014400f, 1.775014245802917200f, 1.774837500888620400f, - 1.774660690718622000f, - 1.774483815299423100f, 1.774306874637527000f, 1.774129868739439100f, - 1.773952797611667100f, - 1.773775661260722100f, 1.773598459693116500f, 1.773421192915365400f, - 1.773243860933986400f, - 1.773066463755499800f, 1.772889001386427800f, 1.772711473833295200f, - 1.772533881102629000f, - 1.772356223200959100f, 1.772178500134817100f, 1.772000711910737700f, - 1.771822858535257600f, - 1.771644940014915700f, 1.771466956356254000f, 1.771288907565816000f, - 1.771110793650148500f, - 1.770932614615799800f, 1.770754370469321400f, 1.770576061217266500f, - 1.770397686866191300f, - 1.770219247422653700f, 1.770040742893215000f, 1.769862173284438000f, - 1.769683538602888000f, - 1.769504838855133100f, 1.769326074047743700f, 1.769147244187292200f, - 1.768968349280353800f, - 1.768789389333506000f, 1.768610364353328600f, 1.768431274346403900f, - 1.768252119319316400f, - 1.768072899278653200f, 1.767893614231003800f, 1.767714264182959500f, - 1.767534849141115100f, - 1.767355369112067100f, 1.767175824102414000f, 1.766996214118757800f, - 1.766816539167701800f, - 1.766636799255852300f, 1.766456994389817600f, 1.766277124576209000f, - 1.766097189821639300f, - 1.765917190132724600f, 1.765737125516083000f, 1.765556995978334800f, - 1.765376801526102700f, - 1.765196542166012100f, 1.765016217904690900f, 1.764835828748768400f, - 1.764655374704877700f, - 1.764474855779653200f, 1.764294271979732100f, 1.764113623311754000f, - 1.763932909782361100f, - 1.763752131398197200f, 1.763571288165909400f, 1.763390380092146400f, - 1.763209407183560200f, - 1.763028369446804500f, 1.762847266888535100f, 1.762666099515411100f, - 1.762484867334093400f, - 1.762303570351245300f, 1.762122208573532600f, 1.761940782007623600f, - 1.761759290660188400f, - 1.761577734537900500f, 1.761396113647435000f, 1.761214427995469100f, - 1.761032677588683800f, - 1.760850862433760700f, 1.760668982537384900f, 1.760487037906243600f, - 1.760305028547026500f, - 1.760122954466425600f, 1.759940815671135100f, 1.759758612167851700f, - 1.759576343963274600f, - 1.759394011064105100f, 1.759211613477047200f, 1.759029151208807400f, - 1.758846624266093800f, - 1.758664032655617500f, 1.758481376384092500f, 1.758298655458233600f, - 1.758115869884759700f, - 1.757933019670390800f, 1.757750104821850000f, 1.757567125345862700f, - 1.757384081249156100f, - 1.757200972538460700f, 1.757017799220508500f, 1.756834561302034400f, - 1.756651258789775800f, - 1.756467891690471700f, 1.756284460010864200f, 1.756100963757697900f, - 1.755917402937718900f, - 1.755733777557676500f, 1.755550087624322000f, 1.755366333144409200f, - 1.755182514124693900f, - 1.754998630571935200f, 1.754814682492893600f, 1.754630669894332600f, - 1.754446592783017500f, - 1.754262451165716300f, 1.754078245049199600f, 1.753893974440240000f, - 1.753709639345612600f, - 1.753525239772095100f, 1.753340775726466700f, 1.753156247215510400f, - 1.752971654246010300f, - 1.752786996824753600f, 1.752602274958529500f, 1.752417488654129700f, - 1.752232637918348200f, - 1.752047722757981600f, 1.751862743179828600f, 1.751677699190690400f, - 1.751492590797370600f, - 1.751307418006674800f, 1.751122180825411800f, 1.750936879260391700f, - 1.750751513318427700f, - 1.750566083006335600f, 1.750380588330932500f, 1.750195029299038900f, - 1.750009405917477100f, - 1.749823718193071800f, 1.749637966132650900f, 1.749452149743043100f, - 1.749266269031080700f, - 1.749080324003598100f, 1.748894314667431800f, 1.748708241029421000f, - 1.748522103096407300f, - 1.748335900875233900f, 1.748149634372747200f, 1.747963303595795500f, - 1.747776908551230000f, - 1.747590449245904000f, 1.747403925686672500f, 1.747217337880393900f, - 1.747030685833928200f, - 1.746843969554138200f, 1.746657189047889200f, 1.746470344322048200f, - 1.746283435383485100f, - 1.746096462239072000f, 1.745909424895683200f, 1.745722323360195900f, - 1.745535157639489100f, - 1.745347927740444200f, 1.745160633669945200f, 1.744973275434878300f, - 1.744785853042132300f, - 1.744598366498598200f, 1.744410815811169300f, 1.744223200986741100f, - 1.744035522032211900f, - 1.743847778954482000f, 1.743659971760454200f, 1.743472100457033700f, - 1.743284165051127700f, - 1.743096165549646400f, 1.742908101959502100f, 1.742719974287608900f, - 1.742531782540884100f, - 1.742343526726246800f, 1.742155206850618800f, 1.741966822920923800f, - 1.741778374944088000f, - 1.741589862927040800f, 1.741401286876712800f, 1.741212646800037300f, - 1.741023942703950200f, - 1.740835174595389600f, 1.740646342481295900f, 1.740457446368612000f, - 1.740268486264283200f, - 1.740079462175256900f, 1.739890374108482600f, 1.739701222070913200f, - 1.739512006069502800f, - 1.739322726111208500f, 1.739133382202989500f, 1.738943974351807600f, - 1.738754502564626700f, - 1.738564966848413100f, 1.738375367210135400f, 1.738185703656765200f, - 1.737995976195275000f, - 1.737806184832640900f, 1.737616329575841300f, 1.737426410431856200f, - 1.737236427407668800f, - 1.737046380510263800f, 1.736856269746629000f, 1.736666095123754000f, - 1.736475856648631400f, - 1.736285554328254900f, 1.736095188169622500f, 1.735904758179732400f, - 1.735714264365586700f, - 1.735523706734189100f, 1.735333085292545900f, 1.735142400047666100f, - 1.734951651006560100f, - 1.734760838176241400f, 1.734569961563725600f, 1.734379021176030600f, - 1.734188017020177100f, - 1.733996949103187500f, 1.733805817432086900f, 1.733614622013902600f, - 1.733423362855664100f, - 1.733232039964403900f, 1.733040653347156300f, 1.732849203010957900f, - 1.732657688962847600f, - 1.732466111209867200f, 1.732274469759060200f, 1.732082764617472800f, - 1.731890995792153600f, - 1.731699163290153100f, 1.731507267118524500f, 1.731315307284323700f, - 1.731123283794607800f, - 1.730931196656437600f, 1.730739045876875200f, 1.730546831462985500f, - 1.730354553421835600f, - 1.730162211760495300f, 1.729969806486036500f, 1.729777337605533000f, - 1.729584805126061400f, - 1.729392209054700900f, 1.729199549398532400f, 1.729006826164639400f, - 1.728814039360108100f, - 1.728621188992026400f, 1.728428275067485100f, 1.728235297593577100f, - 1.728042256577397200f, - 1.727849152026043500f, 1.727655983946615700f, 1.727462752346216000f, - 1.727269457231948900f, - 1.727076098610921500f, 1.726882676490243000f, 1.726689190877025000f, - 1.726495641778381200f, - 1.726302029201427900f, 1.726108353153283900f, 1.725914613641069900f, - 1.725720810671909300f, - 1.725526944252927700f, 1.725333014391252900f, 1.725139021094015200f, - 1.724944964368347000f, - 1.724750844221383500f, 1.724556660660261800f, 1.724362413692121400f, - 1.724168103324104300f, - 1.723973729563354600f, 1.723779292417019200f, 1.723584791892246700f, - 1.723390227996188600f, - 1.723195600735998100f, 1.723000910118831300f, 1.722806156151846400f, - 1.722611338842204000f, - 1.722416458197066900f, 1.722221514223600100f, 1.722026506928971500f, - 1.721831436320350800f, - 1.721636302404910200f, 1.721441105189824000f, 1.721245844682269600f, - 1.721050520889425600f, - 1.720855133818473900f, 1.720659683476597900f, 1.720464169870984200f, - 1.720268593008821100f, - 1.720072952897299100f, 1.719877249543611900f, 1.719681482954954500f, - 1.719485653138524800f, - 1.719289760101522900f, 1.719093803851151400f, 1.718897784394614900f, - 1.718701701739120400f, - 1.718505555891877400f, 1.718309346860097600f, 1.718113074650995200f, - 1.717916739271786500f, - 1.717720340729689700f, 1.717523879031926500f, 1.717327354185719900f, - 1.717130766198295700f, - 1.716934115076881800f, 1.716737400828708400f, 1.716540623461008100f, - 1.716343782981016200f, - 1.716146879395969500f, 1.715949912713108100f, 1.715752882939673300f, - 1.715555790082909900f, - 1.715358634150064000f, 1.715161415148384500f, 1.714964133085122900f, - 1.714766787967532600f, - 1.714569379802868900f, 1.714371908598390800f, 1.714174374361358000f, - 1.713976777099033700f, - 1.713779116818682900f, 1.713581393527573000f, 1.713383607232973600f, - 1.713185757942156800f, - 1.712987845662396800f, 1.712789870400970700f, 1.712591832165157200f, - 1.712393730962237500f, - 1.712195566799495500f, 1.711997339684216700f, 1.711799049623689900f, - 1.711600696625205300f, - 1.711402280696055800f, 1.711203801843536700f, 1.711005260074945200f, - 1.710806655397581600f, - 1.710607987818747700f, 1.710409257345748100f, 1.710210463985889500f, - 1.710011607746480600f, - 1.709812688634833300f, 1.709613706658261100f, 1.709414661824080000f, - 1.709215554139608400f, - 1.709016383612166600f, 1.708817150249077900f, 1.708617854057667300f, - 1.708418495045262300f, - 1.708219073219193300f, 1.708019588586791700f, 1.707820041155392500f, - 1.707620430932332400f, - 1.707420757924950300f, 1.707221022140587900f, 1.707021223586588700f, - 1.706821362270298600f, - 1.706621438199066300f, 1.706421451380242000f, 1.706221401821179200f, - 1.706021289529232800f, - 1.705821114511760300f, 1.705620876776121600f, 1.705420576329679000f, - 1.705220213179796900f, - 1.705019787333842200f, 1.704819298799183700f, 1.704618747583193100f, - 1.704418133693243800f, - 1.704217457136711900f, 1.704016717920976000f, 1.703815916053416300f, - 1.703615051541415900f, - 1.703414124392360000f, 1.703213134613636100f, 1.703012082212634000f, - 1.702810967196746000f, - 1.702609789573366300f, 1.702408549349891500f, 1.702207246533721000f, - 1.702005881132255800f, - 1.701804453152900000f, 1.701602962603059100f, 1.701401409490141300f, - 1.701199793821557300f, - 1.700998115604720000f, 1.700796374847044300f, 1.700594571555948100f, - 1.700392705738850400f, - 1.700190777403173700f, 1.699988786556342300f, 1.699786733205783000f, - 1.699584617358924400f, - 1.699382439023197700f, 1.699180198206036600f, 1.698977894914877100f, - 1.698775529157156700f, - 1.698573100940316400f, 1.698370610271798800f, 1.698168057159048700f, - 1.697965441609513300f, - 1.697762763630642700f, 1.697560023229888200f, 1.697357220414704500f, - 1.697154355192547900f, - 1.696951427570877000f, 1.696748437557152900f, 1.696545385158839200f, - 1.696342270383401200f, - 1.696139093238307400f, 1.695935853731027600f, 1.695732551869034300f, - 1.695529187659802400f, - 1.695325761110809200f, 1.695122272229534000f, 1.694918721023458600f, - 1.694715107500066800f, - 1.694511431666845000f, 1.694307693531282000f, 1.694103893100868100f, - 1.693900030383096900f, - 1.693696105385463800f, 1.693492118115466500f, 1.693288068580604900f, - 1.693083956788381500f, - 1.692879782746300700f, 1.692675546461869900f, 1.692471247942597600f, - 1.692266887195995600f, - 1.692062464229577600f, 1.691857979050859900f, 1.691653431667360600f, - 1.691448822086600400f, - 1.691244150316102000f, 1.691039416363390800f, 1.690834620235994300f, - 1.690629761941442100f, - 1.690424841487266700f, 1.690219858881001800f, 1.690014814130184300f, - 1.689809707242353200f, - 1.689604538225049700f, 1.689399307085817300f, 1.689194013832201500f, - 1.688988658471750600f, - 1.688783241012014700f, 1.688577761460546800f, 1.688372219824901400f, - 1.688166616112636100f, - 1.687960950331309800f, 1.687755222488484600f, 1.687549432591724400f, - 1.687343580648595700f, - 1.687137666666667100f, 1.686931690653509000f, 1.686725652616694900f, - 1.686519552563800400f, - 1.686313390502403000f, 1.686107166440082600f, 1.685900880384421800f, - 1.685694532343004600f, - 1.685488122323418400f, 1.685281650333251900f, 1.685075116380096800f, - 1.684868520471546600f, - 1.684661862615197000f, 1.684455142818646700f, 1.684248361089495800f, - 1.684041517435347400f, - 1.683834611863806100f, 1.683627644382479800f, 1.683420614998977900f, - 1.683213523720911800f, - 1.683006370555896400f, 1.682799155511547600f, 1.682591878595484300f, - 1.682384539815327400f, - 1.682177139178700400f, 1.681969676693228600f, 1.681762152366539600f, - 1.681554566206263900f, - 1.681346918220033800f, 1.681139208415483700f, 1.680931436800250600f, - 1.680723603381973500f, - 1.680515708168294200f, 1.680307751166856300f, 1.680099732385305300f, - 1.679891651831290100f, - 1.679683509512460900f, 1.679475305436470600f, 1.679267039610974300f, - 1.679058712043629300f, - 1.678850322742095200f, 1.678641871714033900f, 1.678433358967109400f, - 1.678224784508988400f, - 1.678016148347339300f, 1.677807450489833300f, 1.677598690944143400f, - 1.677389869717945000f, - 1.677180986818916300f, 1.676972042254736900f, 1.676763036033089600f, - 1.676553968161658600f, - 1.676344838648130600f, 1.676135647500194700f, 1.675926394725542700f, - 1.675717080331867900f, - 1.675507704326866200f, 1.675298266718235900f, 1.675088767513677200f, - 1.674879206720892900f, - 1.674669584347587800f, 1.674459900401469700f, 1.674250154890247300f, - 1.674040347821632800f, - 1.673830479203340000f, 1.673620549043085500f, 1.673410557348587600f, - 1.673200504127567000f, - 1.672990389387746700f, 1.672780213136852300f, 1.672569975382611300f, - 1.672359676132753500f, - 1.672149315395010900f, 1.671938893177118000f, 1.671728409486811500f, - 1.671517864331830000f, - 1.671307257719914800f, 1.671096589658809500f, 1.670885860156259300f, - 1.670675069220012500f, - 1.670464216857819200f, 1.670253303077431800f, 1.670042327886605200f, - 1.669831291293095900f, - 1.669620193304663500f, 1.669409033929069500f, 1.669197813174077200f, - 1.668986531047453000f, - 1.668775187556965000f, 1.668563782710383600f, 1.668352316515481700f, - 1.668140788980034400f, - 1.667929200111818400f, 1.667717549918614100f, 1.667505838408202700f, - 1.667294065588368100f, - 1.667082231466896900f, 1.666870336051577800f, 1.666658379350201000f, - 1.666446361370560000f, - 1.666234282120450100f, 1.666022141607668600f, 1.665809939840015500f, - 1.665597676825292700f, - 1.665385352571304500f, 1.665172967085857700f, 1.664960520376761000f, - 1.664748012451825200f, - 1.664535443318863900f, 1.664322812985692600f, 1.664110121460129000f, - 1.663897368749993400f, - 1.663684554863107800f, 1.663471679807296800f, 1.663258743590387400f, - 1.663045746220208600f, - 1.662832687704591800f, 1.662619568051370500f, 1.662406387268380100f, - 1.662193145363459100f, - 1.661979842344447600f, 1.661766478219188300f, 1.661553052995526000f, - 1.661339566681307600f, - 1.661126019284382200f, 1.660912410812601900f, 1.660698741273819700f, - 1.660485010675892400f, - 1.660271219026677700f, 1.660057366334036300f, 1.659843452605831200f, - 1.659629477849926800f, - 1.659415442074190900f, 1.659201345286492900f, 1.658987187494704200f, - 1.658772968706699000f, - 1.658558688930353400f, 1.658344348173546300f, 1.658129946444157700f, - 1.657915483750071100f, - 1.657700960099171200f, 1.657486375499345900f, 1.657271729958484500f, - 1.657057023484479000f, - 1.656842256085223800f, 1.656627427768615000f, 1.656412538542551200f, - 1.656197588414933600f, - 1.655982577393664700f, 1.655767505486650500f, 1.655552372701798200f, - 1.655337179047017700f, - 1.655121924530220900f, 1.654906609159322500f, 1.654691232942238500f, - 1.654475795886888300f, - 1.654260298001192200f, 1.654044739293073900f, 1.653829119770458900f, - 1.653613439441274500f, - 1.653397698313451300f, 1.653181896394921000f, 1.652966033693617800f, - 1.652750110217479100f, - 1.652534125974443000f, 1.652318080972451400f, 1.652101975219447200f, - 1.651885808723375900f, - 1.651669581492185300f, 1.651453293533826000f, 1.651236944856249600f, - 1.651020535467411200f, - 1.650804065375267400f, 1.650587534587776700f, 1.650370943112901000f, - 1.650154290958603300f, - 1.649937578132849400f, 1.649720804643607400f, 1.649503970498847200f, - 1.649287075706541200f, - 1.649070120274664000f, 1.648853104211192700f, 1.648636027524106100f, - 1.648418890221385400f, - 1.648201692311014300f, 1.647984433800978600f, 1.647767114699266100f, - 1.647549735013867000f, - 1.647332294752774200f, 1.647114793923981600f, 1.646897232535486500f, - 1.646679610595287900f, - 1.646461928111387300f, 1.646244185091788400f, 1.646026381544496400f, - 1.645808517477519700f, - 1.645590592898868600f, 1.645372607816555400f, 1.645154562238594800f, - 1.644936456173004000f, - 1.644718289627801600f, 1.644500062611009300f, 1.644281775130650900f, - 1.644063427194751600f, - 1.643845018811340300f, 1.643626549988446200f, 1.643408020734102600f, - 1.643189431056343700f, - 1.642970780963206800f, 1.642752070462730800f, 1.642533299562957100f, - 1.642314468271929300f, - 1.642095576597693200f, 1.641876624548297000f, 1.641657612131790500f, - 1.641438539356226500f, - 1.641219406229659700f, 1.641000212760146800f, 1.640780958955747200f, - 1.640561644824521700f, - 1.640342270374534500f, 1.640122835613851100f, 1.639903340550539200f, - 1.639683785192669600f, - 1.639464169548314100f, 1.639244493625547900f, 1.639024757432447500f, - 1.638804960977092100f, - 1.638585104267562800f, 1.638365187311943400f, 1.638145210118319400f, - 1.637925172694778800f, - 1.637705075049411800f, 1.637484917190310800f, 1.637264699125570200f, - 1.637044420863286600f, - 1.636824082411559600f, 1.636603683778490100f, 1.636383224972181500f, - 1.636162706000739300f, - 1.635942126872271800f, 1.635721487594888400f, 1.635500788176702100f, - 1.635280028625826900f, - 1.635059208950379700f, 1.634838329158479200f, 1.634617389258246700f, - 1.634396389257805700f, - 1.634175329165281400f, 1.633954208988801700f, 1.633733028736496400f, - 1.633511788416498000f, - 1.633290488036940500f, 1.633069127605960800f, 1.632847707131697600f, - 1.632626226622291700f, - 1.632404686085886300f, 1.632183085530627200f, 1.631961424964661700f, - 1.631739704396139900f, - 1.631517923833213400f, 1.631296083284036900f, 1.631074182756766300f, - 1.630852222259560700f, - 1.630630201800580900f, 1.630408121387990000f, 1.630185981029953000f, - 1.629963780734637400f, - 1.629741520510213000f, 1.629519200364851800f, 1.629296820306727700f, - 1.629074380344017100f, - 1.628851880484898200f, 1.628629320737551700f, 1.628406701110161100f, - 1.628184021610910700f, - 1.627961282247988300f, 1.627738483029583100f, 1.627515623963887000f, - 1.627292705059093700f, - 1.627069726323399500f, 1.626846687765002700f, 1.626623589392103500f, - 1.626400431212904800f, - 1.626177213235611400f, 1.625953935468430500f, 1.625730597919571300f, - 1.625507200597245500f, - 1.625283743509666300f, 1.625060226665050000f, 1.624836650071614500f, - 1.624613013737580000f, - 1.624389317671169500f, 1.624165561880607000f, 1.623941746374119500f, - 1.623717871159936300f, - 1.623493936246288300f, 1.623269941641409400f, 1.623045887353534900f, - 1.622821773390902700f, - 1.622597599761753000f, 1.622373366474327800f, 1.622149073536871800f, - 1.621924720957631300f, - 1.621700308744855200f, 1.621475836906794500f, 1.621251305451702400f, - 1.621026714387834300f, - 1.620802063723447700f, 1.620577353466802700f, 1.620352583626160500f, - 1.620127754209786100f, - 1.619902865225945300f, 1.619677916682906700f, 1.619452908588941300f, - 1.619227840952321800f, - 1.619002713781323200f, 1.618777527084222800f, 1.618552280869300300f, - 1.618326975144837000f, - 1.618101609919117200f, 1.617876185200426600f, 1.617650700997053500f, - 1.617425157317288200f, - 1.617199554169423500f, 1.616973891561754200f, 1.616748169502577200f, - 1.616522388000191500f, - 1.616296547062898500f, 1.616070646699001800f, 1.615844686916807300f, - 1.615618667724622700f, - 1.615392589130757900f, 1.615166451143525300f, 1.614940253771239400f, - 1.614713997022216900f, - 1.614487680904776600f, 1.614261305427239200f, 1.614034870597928400f, - 1.613808376425168900f, - 1.613581822917288900f, 1.613355210082617800f, 1.613128537929487500f, - 1.612901806466232200f, - 1.612675015701188000f, 1.612448165642693400f, 1.612221256299089200f, - 1.611994287678718100f, - 1.611767259789925100f, 1.611540172641057200f, 1.611313026240463800f, - 1.611085820596496600f, - 1.610858555717509200f, 1.610631231611857800f, 1.610403848287899700f, - 1.610176405753995800f, - 1.609948904018508200f, 1.609721343089801600f, 1.609493722976242900f, - 1.609266043686200700f, - 1.609038305228046400f, 1.608810507610153100f, 1.608582650840896200f, - 1.608354734928653800f, - 1.608126759881805400f, 1.607898725708732900f, 1.607670632417820500f, - 1.607442480017454700f, - 1.607214268516024000f, 1.606985997921919000f, 1.606757668243532500f, - 1.606529279489259600f, - 1.606300831667497600f, 1.606072324786645500f, 1.605843758855105300f, - 1.605615133881280700f, - 1.605386449873577300f, 1.605157706840403300f, 1.604928904790168700f, - 1.604700043731286200f, - 1.604471123672170500f, 1.604242144621237800f, 1.604013106586907400f, - 1.603784009577600100f, - 1.603554853601739700f, 1.603325638667751000f, 1.603096364784061900f, - 1.602867031959102100f, - 1.602637640201303400f, 1.602408189519099800f, 1.602178679920927900f, - 1.601949111415226000f, - 1.601719484010434300f, 1.601489797714996000f, 1.601260052537355700f, - 1.601030248485960900f, - 1.600800385569260300f, 1.600570463795705700f, 1.600340483173750400f, - 1.600110443711850300f, - 1.599880345418463100f, 1.599650188302049100f, 1.599419972371070500f, - 1.599189697633991400f, - 1.598959364099278700f, 1.598728971775401000f, 1.598498520670828900f, - 1.598268010794035900f, - 1.598037442153496900f, 1.597806814757689200f, 1.597576128615092200f, - 1.597345383734188000f, - 1.597114580123460100f, 1.596883717791394800f, 1.596652796746479600f, - 1.596421816997205500f, - 1.596190778552064800f, 1.595959681419551800f, 1.595728525608163700f, - 1.595497311126399300f, - 1.595266037982759500f, 1.595034706185747500f, 1.594803315743869000f, - 1.594571866665631700f, - 1.594340358959544800f, 1.594108792634120600f, 1.593877167697873100f, - 1.593645484159318200f, - 1.593413742026974500f, 1.593181941309362400f, 1.592950082015004700f, - 1.592718164152426000f, - 1.592486187730153300f, 1.592254152756715600f, 1.592022059240644400f, - 1.591789907190473100f, - 1.591557696614737100f, 1.591325427521974100f, 1.591093099920724200f, - 1.590860713819529400f, - 1.590628269226933600f, 1.590395766151483400f, 1.590163204601727100f, - 1.589930584586215500f, - 1.589697906113501000f, 1.589465169192139100f, 1.589232373830686400f, - 1.588999520037702300f, - 1.588766607821748200f, 1.588533637191387400f, 1.588300608155185600f, - 1.588067520721711000f, - 1.587834374899533400f, 1.587601170697224600f, 1.587367908123358900f, - 1.587134587186513000f, - 1.586901207895265300f, 1.586667770258196600f, 1.586434274283889500f, - 1.586200719980929200f, - 1.585967107357902700f, 1.585733436423399000f, 1.585499707186010200f, - 1.585265919654329300f, - 1.585032073836952100f, 1.584798169742476400f, 1.584564207379502500f, - 1.584330186756632200f, - 1.584096107882470000f, 1.583861970765622100f, 1.583627775414697000f, - 1.583393521838305700f, - 1.583159210045060900f, 1.582924840043577400f, 1.582690411842472700f, - 1.582455925450365600f, - 1.582221380875877800f, 1.581986778127632700f, 1.581752117214255900f, - 1.581517398144375800f, - 1.581282620926621300f, 1.581047785569625400f, 1.580812892082021900f, - 1.580577940472447200f, - 1.580342930749539800f, 1.580107862921940700f, 1.579872736998292100f, - 1.579637552987239100f, - 1.579402310897428900f, 1.579167010737510600f, 1.578931652516135700f, - 1.578696236241957200f, - 1.578460761923630800f, 1.578225229569814700f, 1.577989639189168100f, - 1.577753990790353500f, - 1.577518284382034800f, 1.577282519972878200f, 1.577046697571552000f, - 1.576810817186727000f, - 1.576574878827075700f, 1.576338882501273000f, 1.576102828217995600f, - 1.575866715985922500f, - 1.575630545813735200f, 1.575394317710116600f, 1.575158031683752300f, - 1.574921687743330300f, - 1.574685285897539800f, 1.574448826155072400f, 1.574212308524622500f, - 1.573975733014886000f, - 1.573739099634561500f, 1.573502408392348600f, 1.573265659296950300f, - 1.573028852357070800f, - 1.572791987581417100f, 1.572555064978698100f, 1.572318084557624800f, - 1.572081046326909900f, - 1.571843950295269000f, 1.571606796471419100f, 1.571369584864080100f, - 1.571132315481973200f, - 1.570894988333822400f, 1.570657603428353300f, 1.570420160774294000f, - 1.570182660380374600f, - 1.569945102255327200f, 1.569707486407886600f, 1.569469812846788500f, - 1.569232081580771900f, - 1.568994292618577400f, 1.568756445968948000f, 1.568518541640628400f, - 1.568280579642366000f, - 1.568042559982909500f, 1.567804482671010500f, 1.567566347715422500f, - 1.567328155124900800f, - 1.567089904908203200f, 1.566851597074089500f, 1.566613231631321500f, - 1.566374808588663300f, - 1.566136327954881000f, 1.565897789738742900f, 1.565659193949019400f, - 1.565420540594482800f, - 1.565181829683907700f, 1.564943061226071100f, 1.564704235229751500f, - 1.564465351703730400f, - 1.564226410656790000f, 1.563987412097716200f, 1.563748356035296000f, - 1.563509242478319000f, - 1.563270071435576500f, 1.563030842915862100f, 1.562791556927971800f, - 1.562552213480703300f, - 1.562312812582856500f, 1.562073354243233700f, 1.561833838470639200f, - 1.561594265273878800f, - 1.561354634661761300f, 1.561114946643096900f, 1.560875201226698900f, - 1.560635398421381400f, - 1.560395538235961800f, 1.560155620679258400f, 1.559915645760092900f, - 1.559675613487288200f, - 1.559435523869669500f, 1.559195376916064700f, 1.558955172635302800f, - 1.558714911036215700f, - 1.558474592127637100f, 1.558234215918402600f, 1.557993782417350400f, - 1.557753291633320500f, - 1.557512743575155000f, 1.557272138251698300f, 1.557031475671796400f, - 1.556790755844298400f, - 1.556549978778054300f, 1.556309144481917300f, 1.556068252964741600f, - 1.555827304235384500f, - 1.555586298302704900f, 1.555345235175563900f, 1.555104114862824600f, - 1.554862937373352500f, - 1.554621702716015000f, 1.554380410899681300f, 1.554139061933223200f, - 1.553897655825514600f, - 1.553656192585431100f, 1.553414672221850700f, 1.553173094743653300f, - 1.552931460159721100f, - 1.552689768478938500f, 1.552448019710191300f, 1.552206213862368500f, - 1.551964350944360100f, - 1.551722430965059000f, 1.551480453933359800f, 1.551238419858159700f, - 1.550996328748356800f, - 1.550754180612852900f, 1.550511975460550500f, 1.550269713300355100f, - 1.550027394141174000f, - 1.549785017991916400f, 1.549542584861493900f, 1.549300094758820000f, - 1.549057547692810600f, - 1.548814943672383300f, 1.548572282706457900f, 1.548329564803956300f, - 1.548086789973802700f, - 1.547843958224923000f, 1.547601069566245900f, 1.547358124006701400f, - 1.547115121555221700f, - 1.546872062220741700f, 1.546628946012197800f, 1.546385772938528600f, - 1.546142543008675300f, - 1.545899256231580300f, 1.545655912616188800f, 1.545412512171447700f, - 1.545169054906306200f, - 1.544925540829715600f, 1.544681969950629300f, 1.544438342278002600f, - 1.544194657820792800f, - 1.543950916587959700f, 1.543707118588464800f, 1.543463263831272000f, - 1.543219352325347200f, - 1.542975384079658300f, 1.542731359103175300f, 1.542487277404870100f, - 1.542243138993717000f, - 1.541998943878692300f, 1.541754692068774600f, 1.541510383572944000f, - 1.541266018400183200f, - 1.541021596559476700f, 1.540777118059811100f, 1.540532582910175500f, - 1.540287991119560600f, - 1.540043342696959100f, 1.539798637651366400f, 1.539553875991779300f, - 1.539309057727197300f, - 1.539064182866621400f, 1.538819251419055100f, 1.538574263393503800f, - 1.538329218798974800f, - 1.538084117644477900f, 1.537838959939025200f, 1.537593745691629500f, - 1.537348474911307300f, - 1.537103147607076200f, 1.536857763787956400f, 1.536612323462969800f, - 1.536366826641140800f, - 1.536121273331495300f, 1.535875663543061700f, 1.535629997284870400f, - 1.535384274565953600f, - 1.535138495395346400f, 1.534892659782085100f, 1.534646767735208000f, - 1.534400819263756400f, - 1.534154814376772700f, 1.533908753083302200f, 1.533662635392391700f, - 1.533416461313090100f, - 1.533170230854448400f, 1.532923944025520200f, 1.532677600835360600f, - 1.532431201293027000f, - 1.532184745407578500f, 1.531938233188077100f, 1.531691664643585900f, - 1.531445039783170500f, - 1.531198358615898800f, 1.530951621150840700f, 1.530704827397067800f, - 1.530457977363654000f, - 1.530211071059675200f, 1.529964108494209700f, 1.529717089676337500f, - 1.529470014615140800f, - 1.529222883319703700f, 1.528975695799112500f, 1.528728452062455600f, - 1.528481152118823700f, - 1.528233795977309400f, 1.527986383647006500f, 1.527738915137012400f, - 1.527491390456425600f, - 1.527243809614346600f, 1.526996172619878900f, 1.526748479482126700f, - 1.526500730210197200f, - 1.526252924813199500f, 1.526005063300244900f, 1.525757145680446200f, - 1.525509171962918800f, - 1.525261142156779900f, 1.525013056271149000f, 1.524764914315147200f, - 1.524516716297898300f, - 1.524268462228527900f, 1.524020152116163200f, 1.523771785969934000f, - 1.523523363798972000f, - 1.523274885612411200f, 1.523026351419387100f, 1.522777761229038100f, - 1.522529115050503600f, - 1.522280412892925900f, 1.522031654765448900f, 1.521782840677218700f, - 1.521533970637383800f, - 1.521285044655094300f, 1.521036062739502300f, 1.520787024899762100f, - 1.520537931145030400f, - 1.520288781484465700f, 1.520039575927228500f, 1.519790314482481100f, - 1.519540997159388300f, - 1.519291623967116600f, 1.519042194914835200f, 1.518792710011714500f, - 1.518543169266927600f, - 1.518293572689648900f, 1.518043920289055900f, 1.517794212074327500f, - 1.517544448054644500f, - 1.517294628239190400f, 1.517044752637150000f, 1.516794821257710500f, - 1.516544834110061600f, - 1.516294791203394200f, 1.516044692546901800f, 1.515794538149779700f, - 1.515544328021225500f, - 1.515294062170438700f, 1.515043740606620800f, 1.514793363338975600f, - 1.514542930376708600f, - 1.514292441729027300f, 1.514041897405141700f, 1.513791297414263800f, - 1.513540641765606800f, - 1.513289930468387300f, 1.513039163531823000f, 1.512788340965133500f, - 1.512537462777541200f, - 1.512286528978270300f, 1.512035539576546600f, 1.511784494581598600f, - 1.511533394002656100f, - 1.511282237848951400f, 1.511031026129719100f, 1.510779758854195400f, - 1.510528436031618900f, - 1.510277057671229400f, 1.510025623782270000f, 1.509774134373984800f, - 1.509522589455620600f, - 1.509270989036425800f, 1.509019333125651200f, 1.508767621732549400f, - 1.508515854866375100f, - 1.508264032536385000f, 1.508012154751837700f, 1.507760221521994700f, - 1.507508232856118200f, - 1.507256188763473200f, 1.507004089253327000f, 1.506751934334948000f, - 1.506499724017607900f, - 1.506247458310579400f, 1.505995137223137500f, 1.505742760764559300f, - 1.505490328944124200f, - 1.505237841771113200f, 1.504985299254809800f, 1.504732701404498900f, - 1.504480048229468000f, - 1.504227339739006500f, 1.503974575942405700f, 1.503721756848958700f, - 1.503468882467961600f, - 1.503215952808711500f, 1.502962967880507600f, 1.502709927692651900f, - 1.502456832254447600f, - 1.502203681575200700f, 1.501950475664218600f, 1.501697214530810700f, - 1.501443898184289200f, - 1.501190526633967600f, 1.500937099889161600f, 1.500683617959188900f, - 1.500430080853369500f, - 1.500176488581024900f, 1.499922841151479600f, 1.499669138574058800f, - 1.499415380858090800f, - 1.499161568012905300f, 1.498907700047834600f, 1.498653776972212600f, - 1.498399798795375000f, - 1.498145765526660300f, 1.497891677175408500f, 1.497637533750961300f, - 1.497383335262663300f, - 1.497129081719860400f, 1.496874773131900800f, 1.496620409508134800f, - 1.496365990857914600f, - 1.496111517190594300f, 1.495856988515530400f, 1.495602404842080800f, - 1.495347766179606400f, - 1.495093072537469100f, 1.494838323925033400f, 1.494583520351665500f, - 1.494328661826734200f, - 1.494073748359609600f, 1.493818779959664300f, 1.493563756636272500f, - 1.493308678398810800f, - 1.493053545256657800f, 1.492798357219194100f, 1.492543114295801900f, - 1.492287816495866200f, - 1.492032463828773200f, 1.491777056303911700f, 1.491521593930672100f, - 1.491266076718446900f, - 1.491010504676631500f, 1.490754877814621800f, 1.490499196141816600f, - 1.490243459667616600f, - 1.489987668401424800f, 1.489731822352645500f, 1.489475921530685900f, - 1.489219965944954300f, - 1.488963955604861500f, 1.488707890519820600f, 1.488451770699245900f, - 1.488195596152554800f, - 1.487939366889165600f, 1.487683082918499300f, 1.487426744249978400f, - 1.487170350893028500f, - 1.486913902857075700f, 1.486657400151549600f, 1.486400842785880100f, - 1.486144230769501000f, - 1.485887564111846500f, 1.485630842822354100f, 1.485374066910462500f, - 1.485117236385612200f, - 1.484860351257246500f, 1.484603411534810300f, 1.484346417227750700f, - 1.484089368345516300f, - 1.483832264897558400f, 1.483575106893329600f, 1.483317894342285100f, - 1.483060627253882000f, - 1.482803305637578900f, 1.482545929502837100f, 1.482288498859119400f, - 1.482031013715890700f, - 1.481773474082618300f, 1.481515879968770900f, 1.481258231383819800f, - 1.481000528337237800f, - 1.480742770838499900f, 1.480484958897083200f, 1.480227092522466500f, - 1.479969171724131200f, - 1.479711196511560100f, 1.479453166894238100f, 1.479195082881652200f, - 1.478936944483291600f, - 1.478678751708647000f, 1.478420504567211900f, 1.478162203068481100f, - 1.477903847221951400f, - 1.477645437037121900f, 1.477386972523493800f, 1.477128453690569800f, - 1.476869880547855300f, - 1.476611253104856700f, 1.476352571371083700f, 1.476093835356046700f, - 1.475835045069259000f, - 1.475576200520235500f, 1.475317301718493300f, 1.475058348673551100f, - 1.474799341394929900f, - 1.474540279892153000f, 1.474281164174744900f, 1.474021994252233000f, - 1.473762770134145800f, - 1.473503491830014300f, 1.473244159349371700f, 1.472984772701752900f, - 1.472725331896694400f, - 1.472465836943735600f, 1.472206287852416900f, 1.471946684632281500f, - 1.471687027292874400f, - 1.471427315843742100f, 1.471167550294433700f, 1.470907730654499800f, - 1.470647856933493300f, - 1.470387929140969200f, 1.470127947286484100f, 1.469867911379596900f, - 1.469607821429868500f, - 1.469347677446861500f, 1.469087479440140300f, 1.468827227419272200f, - 1.468566921393825700f, - 1.468306561373371900f, 1.468046147367482600f, 1.467785679385733300f, - 1.467525157437700200f, - 1.467264581532962100f, 1.467003951681099800f, 1.466743267891695800f, - 1.466482530174334500f, - 1.466221738538602500f, 1.465960892994088800f, 1.465699993550383400f, - 1.465439040217079400f, - 1.465178033003770700f, 1.464916971920054100f, 1.464655856975527900f, - 1.464394688179792900f, - 1.464133465542451200f, 1.463872189073107500f, 1.463610858781367900f, - 1.463349474676840700f, - 1.463088036769136600f, 1.462826545067867700f, 1.462564999582648600f, - 1.462303400323095000f, - 1.462041747298825900f, 1.461780040519460800f, 1.461518279994622200f, - 1.461256465733934400f, - 1.460994597747023600f, 1.460732676043517800f, 1.460470700633046800f, - 1.460208671525243400f, - 1.459946588729741100f, 1.459684452256176300f, 1.459422262114186800f, - 1.459160018313412400f, - 1.458897720863495500f, 1.458635369774079500f, 1.458372965054810700f, - 1.458110506715337000f, - 1.457847994765308200f, 1.457585429214375700f, 1.457322810072193800f, - 1.457060137348418000f, - 1.456797411052706200f, 1.456534631194717800f, 1.456271797784114900f, - 1.456008910830560500f, - 1.455745970343720800f, 1.455482976333263100f, 1.455219928808857200f, - 1.454956827780174100f, - 1.454693673256887600f, 1.454430465248673300f, 1.454167203765208000f, - 1.453903888816171900f, - 1.453640520411245900f, 1.453377098560113100f, 1.453113623272459100f, - 1.452850094557971000f, - 1.452586512426338000f, 1.452322876887251400f, 1.452059187950404100f, - 1.451795445625491300f, - 1.451531649922210200f, 1.451267800850259500f, 1.451003898419340500f, - 1.450739942639155800f, - 1.450475933519410400f, 1.450211871069811300f, 1.449947755300067500f, - 1.449683586219889400f, - 1.449419363838989800f, 1.449155088167083600f, 1.448890759213887100f, - 1.448626376989119400f, - 1.448361941502500900f, 1.448097452763754000f, 1.447832910782603100f, - 1.447568315568775100f, - 1.447303667131997900f, 1.447038965482002200f, 1.446774210628520200f, - 1.446509402581286400f, - 1.446244541350036700f, 1.445979626944509300f, 1.445714659374444500f, - 1.445449638649584500f, - 1.445184564779673500f, 1.444919437774456700f, 1.444654257643682900f, - 1.444389024397101600f, - 1.444123738044464900f, 1.443858398595526400f, 1.443593006060042100f, - 1.443327560447769600f, - 1.443062061768468400f, 1.442796510031900500f, 1.442530905247829200f, - 1.442265247426020200f, - 1.441999536576240800f, 1.441733772708260600f, 1.441467955831850800f, - 1.441202085956784900f, - 1.440936163092837900f, 1.440670187249787600f, 1.440404158437412500f, - 1.440138076665494100f, - 1.439871941943815300f, 1.439605754282161400f, 1.439339513690319100f, - 1.439073220178077400f, - 1.438806873755226900f, 1.438540474431560600f, 1.438274022216873500f, - 1.438007517120961900f, - 1.437740959153624500f, 1.437474348324662100f, 1.437207684643876800f, - 1.436940968121073600f, - 1.436674198766058500f, 1.436407376588640000f, 1.436140501598628400f, - 1.435873573805835900f, - 1.435606593220076600f, 1.435339559851166500f, 1.435072473708924000f, - 1.434805334803169100f, - 1.434538143143723200f, 1.434270898740410700f, 1.434003601603057300f, - 1.433736251741490700f, - 1.433468849165540500f, 1.433201393885038500f, 1.432933885909818000f, - 1.432666325249714700f, - 1.432398711914566200f, 1.432131045914211600f, 1.431863327258492400f, - 1.431595555957251700f, - 1.431327732020334800f, 1.431059855457588600f, 1.430791926278862400f, - 1.430523944494007400f, - 1.430255910112876000f, 1.429987823145323100f, 1.429719683601205800f, - 1.429451491490382900f, - 1.429183246822714800f, 1.428914949608064200f, 1.428646599856295400f, - 1.428378197577275100f, - 1.428109742780871800f, 1.427841235476955400f, 1.427572675675398600f, - 1.427304063386075200f, - 1.427035398618861500f, 1.426766681383635500f, 1.426497911690277000f, - 1.426229089548668200f, - 1.425960214968693000f, 1.425691287960236600f, 1.425422308533187200f, - 1.425153276697434000f, - 1.424884192462868800f, 1.424615055839385300f, 1.424345866836878200f, - 1.424076625465245500f, - 1.423807331734385800f, 1.423537985654200800f, 1.423268587234593400f, - 1.422999136485468600f, - 1.422729633416733200f, 1.422460078038296300f, 1.422190470360068300f, - 1.421920810391962500f, - 1.421651098143893000f, 1.421381333625776600f, 1.421111516847531700f, - 1.420841647819078600f, - 1.420571726550339700f, 1.420301753051239400f, 1.420031727331703800f, - 1.419761649401660500f, - 1.419491519271040000f, 1.419221336949774100f, 1.418951102447796800f, - 1.418680815775043500f, - 1.418410476941452100f, 1.418140085956961900f, 1.417869642831514700f, - 1.417599147575054000f, - 1.417328600197524900f, 1.417058000708874700f, 1.416787349119052600f, - 1.416516645438009600f, - 1.416245889675698900f, 1.415975081842075300f, 1.415704221947095700f, - 1.415433310000718600f, - 1.415162346012905000f, 1.414891329993617200f, 1.414620261952819600f, - 1.414349141900479000f, - 1.414077969846563500f, 1.413806745801043500f, 1.413535469773890700f, - 1.413264141775079300f, - 1.412992761814585400f, 1.412721329902386900f, 1.412449846048463600f, - 1.412178310262796900f, - 1.411906722555370500f, 1.411635082936170100f, 1.411363391415182900f, - 1.411091648002398500f, - 1.410819852707807700f, 1.410548005541404100f, 1.410276106513182400f, - 1.410004155633139500f, - 1.409732152911274500f, 1.409460098357588200f, 1.409187991982083100f, - 1.408915833794763800f, - 1.408643623805636800f, 1.408371362024710500f, 1.408099048461995300f, - 1.407826683127503000f, - 1.407554266031248100f, 1.407281797183246500f, 1.407009276593515800f, - 1.406736704272076400f, - 1.406464080228949600f, 1.406191404474159000f, 1.405918677017730100f, - 1.405645897869690400f, - 1.405373067040069300f, 1.405100184538898000f, 1.404827250376209400f, - 1.404554264562038400f, - 1.404281227106422400f, 1.404008138019399800f, 1.403734997311011600f, - 1.403461804991300100f, - 1.403188561070310100f, 1.402915265558087700f, 1.402641918464681400f, - 1.402368519800141200f, - 1.402095069574519800f, 1.401821567797870300f, 1.401548014480249000f, - 1.401274409631713600f, - 1.401000753262323900f, 1.400727045382141400f, 1.400453286001229800f, - 1.400179475129653700f, - 1.399905612777481200f, 1.399631698954780800f, 1.399357733671623900f, - 1.399083716938083600f, - 1.398809648764234100f, 1.398535529160152400f, 1.398261358135917300f, - 1.397987135701609200f, - 1.397712861867310300f, 1.397438536643105000f, 1.397164160039079200f, - 1.396889732065321300f, - 1.396615252731921100f, 1.396340722048970300f, 1.396066140026562800f, - 1.395791506674794100f, - 1.395516822003761700f, 1.395242086023564800f, 1.394967298744304900f, - 1.394692460176085300f, - 1.394417570329010700f, 1.394142629213188000f, 1.393867636838725900f, - 1.393592593215735600f, - 1.393317498354329300f, 1.393042352264621600f, 1.392767154956728400f, - 1.392491906440768600f, - 1.392216606726861800f, 1.391941255825130100f, 1.391665853745697400f, - 1.391390400498689700f, - 1.391114896094234100f, 1.390839340542460600f, 1.390563733853500200f, - 1.390288076037486500f, - 1.390012367104554600f, 1.389736607064841100f, 1.389460795928485500f, - 1.389184933705628300f, - 1.388909020406412100f, 1.388633056040981600f, 1.388357040619483200f, - 1.388080974152065200f, - 1.387804856648877600f, 1.387528688120072600f, 1.387252468575804100f, - 1.386976198026228100f, - 1.386699876481501900f, 1.386423503951785200f, 1.386147080447239600f, - 1.385870605978028100f, - 1.385594080554316100f, 1.385317504186270900f, 1.385040876884061000f, - 1.384764198657857200f, - 1.384487469517832200f, 1.384210689474160600f, 1.383933858537019100f, - 1.383656976716585600f, - 1.383380044023040400f, 1.383103060466565300f, 1.382826026057344600f, - 1.382548940805563800f, - 1.382271804721410600f, 1.381994617815074400f, 1.381717380096746800f, - 1.381440091576620700f, - 1.381162752264891500f, 1.380885362171756300f, 1.380607921307413400f, - 1.380330429682064000f, - 1.380052887305910400f, 1.379775294189157000f, 1.379497650342010400f, - 1.379219955774678700f, - 1.378942210497371600f, 1.378664414520301500f, 1.378386567853681700f, - 1.378108670507728300f, - 1.377830722492658500f, 1.377552723818691500f, 1.377274674496048700f, - 1.376996574534953300f, - 1.376718423945630000f, 1.376440222738305700f, 1.376161970923209400f, - 1.375883668510570900f, - 1.375605315510623200f, 1.375326911933600200f, 1.375048457789738400f, - 1.374769953089275400f, - 1.374491397842451100f, 1.374212792059507100f, 1.373934135750687100f, - 1.373655428926236400f, - 1.373376671596402400f, 1.373097863771434200f, 1.372819005461582500f, - 1.372540096677100200f, - 1.372261137428242300f, 1.371982127725264800f, 1.371703067578426700f, - 1.371423956997988000f, - 1.371144795994210500f, 1.370865584577358300f, 1.370586322757697500f, - 1.370307010545495500f, - 1.370027647951022100f, 1.369748234984548000f, 1.369468771656347200f, - 1.369189257976694200f, - 1.368909693955866000f, 1.368630079604142000f, 1.368350414931802000f, - 1.368070699949128800f, - 1.367790934666406600f, 1.367511119093921800f, 1.367231253241962200f, - 1.366951337120818000f, - 1.366671370740780500f, 1.366391354112143500f, 1.366111287245202400f, - 1.365831170150254300f, - 1.365551002837598600f, 1.365270785317536100f, 1.364990517600369400f, - 1.364710199696403300f, - 1.364429831615944200f, 1.364149413369300600f, 1.363868944966782900f, - 1.363588426418702600f, - 1.363307857735373900f, 1.363027238927112300f, 1.362746570004235400f, - 1.362465850977062900f, - 1.362185081855915600f, 1.361904262651116900f, 1.361623393372991300f, - 1.361342474031866000f, - 1.361061504638069400f, 1.360780485201932300f, 1.360499415733786400f, - 1.360218296243966200f, - 1.359937126742807300f, 1.359655907240648000f, 1.359374637747827700f, - 1.359093318274687800f, - 1.358811948831571500f, 1.358530529428824400f, 1.358249060076792900f, - 1.357967540785826300f, - 1.357685971566275200f, 1.357404352428492000f, 1.357122683382830900f, - 1.356840964439648200f, - 1.356559195609301700f, 1.356277376902151900f, 1.355995508328559500f, - 1.355713589898888800f, - 1.355431621623504700f, 1.355149603512774400f, 1.354867535577067200f, - 1.354585417826753800f, - 1.354303250272206500f, 1.354021032923800300f, 1.353738765791911100f, - 1.353456448886917200f, - 1.353174082219199100f, 1.352891665799137900f, 1.352609199637117500f, - 1.352326683743523300f, - 1.352044118128742600f, 1.351761502803164900f, 1.351478837777180700f, - 1.351196123061183100f, - 1.350913358665566400f, 1.350630544600727200f, 1.350347680877063800f, - 1.350064767504976400f, - 1.349781804494866600f, 1.349498791857138400f, 1.349215729602197400f, - 1.348932617740450600f, - 1.348649456282307700f, 1.348366245238179500f, 1.348082984618478800f, - 1.347799674433620500f, - 1.347516314694020800f, 1.347232905410098200f, 1.346949446592273100f, - 1.346665938250967100f, - 1.346382380396604000f, 1.346098773039609700f, 1.345815116190411300f, - 1.345531409859438200f, - 1.345247654057121700f, 1.344963848793894200f, 1.344679994080190800f, - 1.344396089926448000f, - 1.344112136343103900f, 1.343828133340598800f, 1.343544080929374800f, - 1.343259979119875600f, - 1.342975827922546600f, 1.342691627347835500f, 1.342407377406191500f, - 1.342123078108065700f, - 1.341838729463910900f, 1.341554331484181600f, 1.341269884179334700f, - 1.340985387559828100f, - 1.340700841636122400f, 1.340416246418678800f, 1.340131601917961900f, - 1.339846908144436600f, - 1.339562165108570700f, 1.339277372820833400f, 1.338992531291695500f, - 1.338707640531629800f, - 1.338422700551110900f, 1.338137711360615200f, 1.337852672970621300f, - 1.337567585391608900f, - 1.337282448634059800f, 1.336997262708457900f, 1.336712027625288600f, - 1.336426743395039000f, - 1.336141410028198500f, 1.335856027535258000f, 1.335570595926709700f, - 1.335285115213048500f, - 1.334999585404770700f, 1.334714006512374400f, 1.334428378546359500f, - 1.334142701517227600f, - 1.333856975435482300f, 1.333571200311629100f, 1.333285376156174700f, - 1.332999502979628700f, - 1.332713580792501500f, 1.332427609605305400f, 1.332141589428554900f, - 1.331855520272766200f, - 1.331569402148457400f, 1.331283235066148100f, 1.330997019036359800f, - 1.330710754069615700f, - 1.330424440176441300f, 1.330138077367363200f, 1.329851665652910500f, - 1.329565205043613800f, - 1.329278695550004700f, 1.328992137182618100f, 1.328705529951989400f, - 1.328418873868656900f, - 1.328132168943159800f, 1.327845415186039000f, 1.327558612607838500f, - 1.327271761219102500f, - 1.326984861030378000f, 1.326697912052213500f, 1.326410914295159400f, - 1.326123867769767500f, - 1.325836772486591800f, 1.325549628456188100f, 1.325262435689113600f, - 1.324975194195928000f, - 1.324687903987191900f, 1.324400565073468300f, 1.324113177465321900f, - 1.323825741173318700f, - 1.323538256208027800f, 1.323250722580018500f, 1.322963140299862500f, - 1.322675509378133900f, - 1.322387829825407700f, 1.322100101652261100f, 1.321812324869273500f, - 1.321524499487024800f, - 1.321236625516098100f, 1.320948702967077400f, 1.320660731850549000f, - 1.320372712177100700f, - 1.320084643957322400f, 1.319796527201805300f, 1.319508361921142500f, - 1.319220148125929100f, - 1.318931885826762000f, 1.318643575034239800f, 1.318355215758962900f, - 1.318066808011533200f, - 1.317778351802554800f, 1.317489847142633300f, 1.317201294042376300f, - 1.316912692512393300f, - 1.316624042563294900f, 1.316335344205694200f, 1.316046597450205800f, - 1.315757802307445900f, - 1.315468958788033000f, 1.315180066902586800f, 1.314891126661728900f, - 1.314602138076083300f, - 1.314313101156274800f, 1.314024015912930600f, 1.313734882356679900f, - 1.313445700498152800f, - 1.313156470347981900f, 1.312867191916801100f, 1.312577865215246900f, - 1.312288490253956900f, - 1.311999067043570200f, 1.311709595594728000f, 1.311420075918073900f, - 1.311130508024252400f, - 1.310840891923910100f, 1.310551227627695400f, 1.310261515146258200f, - 1.309971754490250700f, - 1.309681945670326400f, 1.309392088697140900f, 1.309102183581351200f, - 1.308812230333616500f, - 1.308522228964597500f, 1.308232179484956500f, 1.307942081905358000f, - 1.307651936236467800f, - 1.307361742488954300f, 1.307071500673486800f, 1.306781210800736200f, - 1.306490872881376200f, - 1.306200486926081700f, 1.305910052945529200f, 1.305619570950396800f, - 1.305329040951365100f, - 1.305038462959116100f, 1.304747836984333300f, 1.304457163037702200f, - 1.304166441129910300f, - 1.303875671271646400f, 1.303584853473601200f, 1.303293987746467300f, - 1.303003074100939100f, - 1.302712112547712800f, 1.302421103097485900f, 1.302130045760958100f, - 1.301838940548830600f, - 1.301547787471806900f, 1.301256586540591600f, 1.300965337765891600f, - 1.300674041158414800f, - 1.300382696728871400f, 1.300091304487973800f, 1.299799864446435200f, - 1.299508376614971500f, - 1.299216841004299200f, 1.298925257625137800f, 1.298633626488207500f, - 1.298341947604231300f, - 1.298050220983932900f, 1.297758446638038700f, 1.297466624577275900f, - 1.297174754812374400f, - 1.296882837354065100f, 1.296590872213081200f, 1.296298859400157700f, - 1.296006798926030200f, - 1.295714690801437600f, 1.295422535037119800f, 1.295130331643818500f, - 1.294838080632277000f, - 1.294545782013240900f, 1.294253435797456900f, 1.293961041995673700f, - 1.293668600618642000f, - 1.293376111677113900f, 1.293083575181843500f, 1.292790991143586200f, - 1.292498359573099700f, - 1.292205680481143500f, 1.291912953878477900f, 1.291620179775866400f, - 1.291327358184073200f, - 1.291034489113864100f, 1.290741572576007400f, 1.290448608581273000f, - 1.290155597140431700f, - 1.289862538264257700f, 1.289569431963524900f, 1.289276278249010600f, - 1.288983077131493000f, - 1.288689828621752300f, 1.288396532730570400f, 1.288103189468731400f, - 1.287809798847019800f, - 1.287516360876223500f, 1.287222875567130900f, 1.286929342930532800f, - 1.286635762977221800f, - 1.286342135717991600f, 1.286048461163638000f, 1.285754739324958900f, - 1.285460970212753500f, - 1.285167153837822900f, 1.284873290210969900f, 1.284579379342998700f, - 1.284285421244715900f, - 1.283991415926929400f, 1.283697363400448900f, 1.283403263676086100f, - 1.283109116764654000f, - 1.282814922676967400f, 1.282520681423843000f, 1.282226393016099500f, - 1.281932057464557000f, - 1.281637674780037100f, 1.281343244973363700f, 1.281048768055361900f, - 1.280754244036858900f, - 1.280459672928683500f, 1.280165054741666300f, 1.279870389486639400f, - 1.279575677174437100f, - 1.279280917815894600f, 1.278986111421849900f, 1.278691258003142000f, - 1.278396357570611900f, - 1.278101410135101800f, 1.277806415707456700f, 1.277511374298522200f, - 1.277216285919146500f, - 1.276921150580179200f, 1.276625968292471000f, 1.276330739066875400f, - 1.276035462914247000f, - 1.275740139845442400f, 1.275444769871319600f, 1.275149353002738700f, - 1.274853889250561200f, - 1.274558378625650200f, 1.274262821138871300f, 1.273967216801090900f, - 1.273671565623178100f, - 1.273375867616002300f, 1.273080122790436000f, 1.272784331157352800f, - 1.272488492727628100f, - 1.272192607512139300f, 1.271896675521764900f, 1.271600696767385400f, - 1.271304671259883200f, - 1.271008599010142500f, 1.270712480029048800f, 1.270416314327489800f, - 1.270120101916354600f, - 1.269823842806533800f, 1.269527537008920300f, 1.269231184534408200f, - 1.268934785393893700f, - 1.268638339598274500f, 1.268341847158450200f, 1.268045308085321800f, - 1.267748722389792100f, - 1.267452090082765900f, 1.267155411175149500f, 1.266858685677851000f, - 1.266561913601780100f, - 1.266265094957848000f, 1.265968229756968100f, 1.265671318010055400f, - 1.265374359728026500f, - 1.265077354921799300f, 1.264780303602294200f, 1.264483205780432700f, - 1.264186061467138500f, - 1.263888870673336400f, 1.263591633409954000f, 1.263294349687918800f, - 1.262997019518161700f, - 1.262699642911614600f, 1.262402219879211300f, 1.262104750431887000f, - 1.261807234580578900f, - 1.261509672336225600f, 1.261212063709767900f, 1.260914408712147800f, - 1.260616707354309500f, - 1.260318959647198400f, 1.260021165601761900f, 1.259723325228949000f, - 1.259425438539710300f, - 1.259127505544998600f, 1.258829526255768000f, 1.258531500682973800f, - 1.258233428837574300f, - 1.257935310730528000f, 1.257637146372796400f, 1.257338935775342200f, - 1.257040678949129500f, - 1.256742375905124400f, 1.256444026654294400f, 1.256145631207609400f, - 1.255847189576040100f, - 1.255548701770560000f, 1.255250167802143000f, 1.254951587681765600f, - 1.254652961420405600f, - 1.254354289029042900f, 1.254055570518658500f, 1.253756805900235700f, - 1.253457995184759300f, - 1.253159138383215200f, 1.252860235506592100f, 1.252561286565879300f, - 1.252262291572068900f, - 1.251963250536153500f, 1.251664163469128300f, 1.251365030381989700f, - 1.251065851285736200f, - 1.250766626191367500f, 1.250467355109885500f, 1.250168038052293500f, - 1.249868675029596200f, - 1.249569266052800800f, 1.249269811132915200f, 1.248970310280950200f, - 1.248670763507917100f, - 1.248371170824829300f, 1.248071532242702100f, 1.247771847772552300f, - 1.247472117425398700f, - 1.247172341212261500f, 1.246872519144162300f, 1.246572651232124700f, - 1.246272737487174300f, - 1.245972777920338000f, 1.245672772542644400f, 1.245372721365123600f, - 1.245072624398807900f, - 1.244772481654731000f, 1.244472293143928300f, 1.244172058877436800f, - 1.243871778866295400f, - 1.243571453121544000f, 1.243271081654225400f, 1.242970664475383100f, - 1.242670201596062700f, - 1.242369693027311200f, 1.242069138780177400f, 1.241768538865712000f, - 1.241467893294967200f, - 1.241167202078996800f, 1.240866465228856100f, 1.240565682755603100f, - 1.240264854670295900f, - 1.239963980983995300f, 1.239663061707763700f, 1.239362096852665300f, - 1.239061086429765300f, - 1.238760030450130900f, 1.238458928924831600f, 1.238157781864937400f, - 1.237856589281521000f, - 1.237555351185656500f, 1.237254067588419400f, 1.236952738500886900f, - 1.236651363934138300f, - 1.236349943899254000f, 1.236048478407316500f, 1.235746967469409900f, - 1.235445411096619500f, - 1.235143809300033300f, 1.234842162090739700f, 1.234540469479829900f, - 1.234238731478396000f, - 1.233936948097532400f, 1.233635119348334400f, 1.233333245241899200f, - 1.233031325789326400f, - 1.232729361001716500f, 1.232427350890172000f, 1.232125295465796600f, - 1.231823194739696300f, - 1.231521048722978200f, 1.231218857426751700f, 1.230916620862127400f, - 1.230614339040217800f, - 1.230312011972136500f, 1.230009639668999500f, 1.229707222141924100f, - 1.229404759402029400f, - 1.229102251460436400f, 1.228799698328266700f, 1.228497100016644900f, - 1.228194456536696500f, - 1.227891767899548700f, 1.227589034116330700f, 1.227286255198173100f, - 1.226983431156208200f, - 1.226680562001569900f, 1.226377647745394000f, 1.226074688398817600f, - 1.225771683972980200f, - 1.225468634479021500f, 1.225165539928084300f, 1.224862400331312400f, - 1.224559215699851500f, - 1.224255986044848500f, 1.223952711377453100f, 1.223649391708814700f, - 1.223346027050086400f, - 1.223042617412421600f, 1.222739162806975900f, 1.222435663244906700f, - 1.222132118737372400f, - 1.221828529295533800f, 1.221524894930552800f, 1.221221215653593100f, - 1.220917491475820500f, - 1.220613722408401900f, 1.220309908462505800f, 1.220006049649302800f, - 1.219702145979964600f, - 1.219398197465665400f, 1.219094204117580300f, 1.218790165946886100f, - 1.218486082964761500f, - 1.218181955182386500f, 1.217877782610943700f, 1.217573565261616000f, - 1.217269303145589000f, - 1.216964996274049400f, 1.216660644658185600f, 1.216356248309187600f, - 1.216051807238247800f, - 1.215747321456559300f, 1.215442790975316700f, 1.215138215805717300f, - 1.214833595958959300f, - 1.214528931446242600f, 1.214224222278769100f, 1.213919468467741900f, - 1.213614670024366000f, - 1.213309826959847700f, 1.213004939285395400f, 1.212700007012219100f, - 1.212395030151530300f, - 1.212090008714541600f, 1.211784942712468300f, 1.211479832156526800f, - 1.211174677057934800f, - 1.210869477427912300f, 1.210564233277680500f, 1.210258944618462200f, - 1.209953611461482200f, - 1.209648233817966600f, 1.209342811699143600f, 1.209037345116242400f, - 1.208731834080493800f, - 1.208426278603131200f, 1.208120678695388600f, 1.207815034368502100f, - 1.207509345633709600f, - 1.207203612502250300f, 1.206897834985365000f, 1.206592013094296200f, - 1.206286146840288300f, - 1.205980236234587100f, 1.205674281288440000f, 1.205368282013096200f, - 1.205062238419806200f, - 1.204756150519822300f, 1.204450018324398900f, 1.204143841844791200f, - 1.203837621092256800f, - 1.203531356078054100f, 1.203225046813444000f, 1.202918693309688300f, - 1.202612295578050900f, - 1.202305853629797500f, 1.201999367476194400f, 1.201692837128510700f, - 1.201386262598016500f, - 1.201079643895983700f, 1.200772981033685800f, 1.200466274022397900f, - 1.200159522873396800f, - 1.199852727597960700f, 1.199545888207369700f, 1.199239004712905300f, - 1.198932077125851100f, - 1.198625105457491700f, 1.198318089719113200f, 1.198011029922004400f, - 1.197703926077454200f, - 1.197396778196754700f, 1.197089586291198500f, 1.196782350372080300f, - 1.196475070450696100f, - 1.196167746538343600f, 1.195860378646322700f, 1.195552966785933900f, - 1.195245510968480300f, - 1.194938011205265900f, 1.194630467507596500f, 1.194322879886780000f, - 1.194015248354125100f, - 1.193707572920943000f, 1.193399853598545500f, 1.193092090398246900f, - 1.192784283331362700f, - 1.192476432409210100f, 1.192168537643107900f, 1.191860599044376500f, - 1.191552616624337800f, - 1.191244590394315400f, 1.190936520365635000f, 1.190628406549622900f, - 1.190320248957608100f, - 1.190012047600920200f, 1.189703802490891000f, 1.189395513638853900f, - 1.189087181056143900f, - 1.188778804754097300f, 1.188470384744052100f, 1.188161921037348400f, - 1.187853413645327100f, - 1.187544862579331500f, 1.187236267850706000f, 1.186927629470796900f, - 1.186618947450951600f, - 1.186310221802519900f, 1.186001452536852300f, 1.185692639665301600f, - 1.185383783199222000f, - 1.185074883149969100f, 1.184765939528900500f, 1.184456952347374900f, - 1.184147921616753200f, - 1.183838847348397400f, 1.183529729553671500f, 1.183220568243940300f, - 1.182911363430571200f, - 1.182602115124932900f, 1.182292823338395100f, 1.181983488082330300f, - 1.181674109368111300f, - 1.181364687207113100f, 1.181055221610712400f, 1.180745712590287400f, - 1.180436160157217800f, - 1.180126564322885100f, 1.179816925098671900f, 1.179507242495962900f, - 1.179197516526144600f, - 1.178887747200604300f, 1.178577934530731700f, 1.178268078527917200f, - 1.177958179203553800f, - 1.177648236569035300f, 1.177338250635757700f, 1.177028221415118200f, - 1.176718148918515700f, - 1.176408033157350300f, 1.176097874143024600f, 1.175787671886942000f, - 1.175477426400507700f, - 1.175167137695128900f, 1.174856805782213500f, 1.174546430673171900f, - 1.174236012379415600f, - 1.173925550912357800f, 1.173615046283413200f, 1.173304498503998400f, - 1.172993907585530900f, - 1.172683273539430800f, 1.172372596377118800f, 1.172061876110017700f, - 1.171751112749551900f, - 1.171440306307147200f, 1.171129456794231200f, 1.170818564222232800f, - 1.170507628602582800f, - 1.170196649946713100f, 1.169885628266057900f, 1.169574563572052300f, - 1.169263455876133200f, - 1.168952305189739200f, 1.168641111524310700f, 1.168329874891289400f, - 1.168018595302118000f, - 1.167707272768241800f, 1.167395907301107100f, 1.167084498912162300f, - 1.166773047612856400f, - 1.166461553414641000f, 1.166150016328968600f, 1.165838436367293800f, - 1.165526813541072100f, - 1.165215147861761400f, 1.164903439340820900f, 1.164591687989710500f, - 1.164279893819892800f, - 1.163968056842831700f, 1.163656177069992500f, 1.163344254512841800f, - 1.163032289182848800f, - 1.162720281091483000f, 1.162408230250216100f, 1.162096136670521600f, - 1.161784000363874000f, - 1.161471821341749900f, 1.161159599615627000f, 1.160847335196984800f, - 1.160535028097304600f, - 1.160222678328068700f, 1.159910285900761700f, 1.159597850826869200f, - 1.159285373117878500f, - 1.158972852785278500f, 1.158660289840559800f, 1.158347684295214300f, - 1.158035036160735900f, - 1.157722345448619400f, 1.157409612170361600f, 1.157096836337461000f, - 1.156784017961417500f, - 1.156471157053732300f, 1.156158253625908700f, 1.155845307689450800f, - 1.155532319255865300f, - 1.155219288336659400f, 1.154906214943342700f, 1.154593099087426000f, - 1.154279940780421400f, - 1.153966740033842900f, 1.153653496859206000f, 1.153340211268028000f, - 1.153026883271827300f, - 1.152713512882124400f, 1.152400100110440700f, 1.152086644968299400f, - 1.151773147467225300f, - 1.151459607618745300f, 1.151146025434387000f, 1.150832400925680100f, - 1.150518734104155400f, - 1.150205024981345800f, 1.149891273568785400f, 1.149577479878009800f, - 1.149263643920556800f, - 1.148949765707964600f, 1.148635845251773800f, 1.148321882563526400f, - 1.148007877654766200f, - 1.147693830537038100f, 1.147379741221888500f, 1.147065609720865600f, - 1.146751436045519300f, - 1.146437220207400700f, 1.146122962218062600f, 1.145808662089060000f, - 1.145494319831947800f, - 1.145179935458284100f, 1.144865508979627800f, 1.144551040407539400f, - 1.144236529753581000f, - 1.143921977029316500f, 1.143607382246310600f, 1.143292745416130600f, - 1.142978066550344400f, - 1.142663345660522000f, 1.142348582758234900f, 1.142033777855056000f, - 1.141718930962559500f, - 1.141404042092321500f, 1.141089111255919800f, 1.140774138464933700f, - 1.140459123730943200f, - 1.140144067065530700f, 1.139828968480280300f, 1.139513827986776900f, - 1.139198645596607400f, - 1.138883421321360600f, 1.138568155172625700f, 1.138252847161994400f, - 1.137937497301059600f, - 1.137622105601416000f, 1.137306672074659900f, 1.136991196732388200f, - 1.136675679586200500f, - 1.136360120647697200f, 1.136044519928480800f, 1.135728877440154800f, - 1.135413193194324800f, - 1.135097467202597100f, 1.134781699476580300f, 1.134465890027884300f, - 1.134150038868120500f, - 1.133834146008902100f, 1.133518211461843200f, 1.133202235238559800f, - 1.132886217350669500f, - 1.132570157809791500f, 1.132254056627546300f, 1.131937913815556300f, - 1.131621729385444900f, - 1.131305503348837300f, 1.130989235717360100f, 1.130672926502642100f, - 1.130356575716312500f, - 1.130040183370002900f, 1.129723749475346000f, 1.129407274043976200f, - 1.129090757087529500f, - 1.128774198617643200f, 1.128457598645956600f, 1.128140957184109700f, - 1.127824274243744500f, - 1.127507549836505000f, 1.127190783974035800f, 1.126873976667983800f, - 1.126557127929996800f, - 1.126240237771724700f, 1.125923306204818400f, 1.125606333240930700f, - 1.125289318891715900f, - 1.124972263168829500f, 1.124655166083928800f, 1.124338027648672500f, - 1.124020847874721100f, - 1.123703626773736100f, 1.123386364357381200f, 1.123069060637320600f, - 1.122751715625221400f, - 1.122434329332750800f, 1.122116901771578400f, 1.121799432953375600f, - 1.121481922889814300f, - 1.121164371592568300f, 1.120846779073313400f, 1.120529145343726500f, - 1.120211470415486200f, - 1.119893754300272300f, 1.119575997009766300f, 1.119258198555651300f, - 1.118940358949611900f, - 1.118622478203333800f, 1.118304556328505200f, 1.117986593336814700f, - 1.117668589239953200f, - 1.117350544049612300f, 1.117032457777486200f, 1.116714330435269600f, - 1.116396162034659600f, - 1.116077952587353600f, 1.115759702105052000f, 1.115441410599455500f, - 1.115123078082267000f, - 1.114804704565190500f, 1.114486290059931900f, 1.114167834578198200f, - 1.113849338131698300f, - 1.113530800732142100f, 1.113212222391241500f, 1.112893603120710000f, - 1.112574942932261600f, - 1.112256241837613000f, 1.111937499848481900f, 1.111618716976587700f, - 1.111299893233650600f, - 1.110981028631393700f, 1.110662123181539900f, 1.110343176895814500f, - 1.110024189785944900f, - 1.109705161863658600f, 1.109386093140686000f, 1.109066983628758100f, - 1.108747833339607200f, - 1.108428642284968100f, 1.108109410476576300f, 1.107790137926169200f, - 1.107470824645485600f, - 1.107151470646265300f, 1.106832075940250600f, 1.106512640539184100f, - 1.106193164454811100f, - 1.105873647698877300f, 1.105554090283131100f, 1.105234492219321100f, - 1.104914853519198400f, - 1.104595174194514800f, 1.104275454257024300f, 1.103955693718482200f, - 1.103635892590644900f, - 1.103316050885270600f, 1.102996168614119000f, 1.102676245788951400f, - 1.102356282421530300f, - 1.102036278523620000f, 1.101716234106985700f, 1.101396149183395000f, - 1.101076023764616400f, - 1.100755857862419700f, 1.100435651488577100f, 1.100115404654861100f, - 1.099795117373046200f, - 1.099474789654909100f, 1.099154421512226600f, 1.098834012956778200f, - 1.098513564000344300f, - 1.098193074654706800f, 1.097872544931649100f, 1.097551974842956500f, - 1.097231364400415000f, - 1.096910713615813200f, 1.096590022500939700f, 1.096269291067585700f, - 1.095948519327543800f, - 1.095627707292607700f, 1.095306854974572800f, 1.094985962385235800f, - 1.094665029536395100f, - 1.094344056439850600f, 1.094023043107403200f, 1.093701989550856000f, - 1.093380895782013000f, - 1.093059761812680100f, 1.092738587654664300f, 1.092417373319774200f, - 1.092096118819820200f, - 1.091774824166613600f, 1.091453489371968100f, 1.091132114447697300f, - 1.090810699405617900f, - 1.090489244257547300f, 1.090167749015304300f, 1.089846213690709900f, - 1.089524638295585400f, - 1.089203022841754400f, 1.088881367341041800f, 1.088559671805274100f, - 1.088237936246279100f, - 1.087916160675885800f, 1.087594345105925300f, 1.087272489548229700f, - 1.086950594014632700f, - 1.086628658516969500f, 1.086306683067076900f, 1.085984667676792600f, - 1.085662612357956500f, - 1.085340517122409800f, 1.085018381981994500f, 1.084696206948555300f, - 1.084373992033937000f, - 1.084051737249986900f, 1.083729442608553300f, 1.083407108121486000f, - 1.083084733800636200f, - 1.082762319657857100f, 1.082439865705002500f, 1.082117371953928300f, - 1.081794838416491700f, - 1.081472265104551200f, 1.081149652029967000f, 1.080826999204601100f, - 1.080504306640315500f, - 1.080181574348975500f, 1.079858802342446900f, 1.079535990632596800f, - 1.079213139231294500f, - 1.078890248150409700f, 1.078567317401815100f, 1.078244346997383300f, - 1.077921336948988600f, - 1.077598287268508400f, 1.077275197967819000f, 1.076952069058800400f, - 1.076628900553332700f, - 1.076305692463297900f, 1.075982444800579700f, 1.075659157577062200f, - 1.075335830804633000f, - 1.075012464495178800f, 1.074689058660589700f, 1.074365613312755900f, - 1.074042128463569500f, - 1.073718604124924500f, 1.073395040308715400f, 1.073071437026839500f, - 1.072747794291194300f, - 1.072424112113678600f, 1.072100390506194500f, 1.071776629480643500f, - 1.071452829048929800f, - 1.071128989222958500f, 1.070805110014635900f, 1.070481191435870500f, - 1.070157233498571600f, - 1.069833236214650800f, 1.069509199596019800f, 1.069185123654592600f, - 1.068861008402285200f, - 1.068536853851013600f, 1.068212660012696700f, 1.067888426899253500f, - 1.067564154522606000f, - 1.067239842894676100f, 1.066915492027387600f, 1.066591101932666800f, - 1.066266672622439700f, - 1.065942204108635300f, 1.065617696403183400f, 1.065293149518014500f, - 1.064968563465062100f, - 1.064643938256259400f, 1.064319273903543000f, 1.063994570418849400f, - 1.063669827814116300f, - 1.063345046101285000f, 1.063020225292295300f, 1.062695365399091200f, - 1.062370466433616400f, - 1.062045528407815900f, 1.061720551333637600f, 1.061395535223029500f, - 1.061070480087941800f, - 1.060745385940325500f, 1.060420252792134000f, 1.060095080655320900f, - 1.059769869541841800f, - 1.059444619463654400f, 1.059119330432716700f, 1.058794002460989000f, - 1.058468635560432500f, - 1.058143229743009600f, 1.057817785020685100f, 1.057492301405424500f, - 1.057166778909195000f, - 1.056841217543965200f, 1.056515617321704500f, 1.056189978254385100f, - 1.055864300353978900f, - 1.055538583632461100f, 1.055212828101807200f, 1.054887033773993300f, - 1.054561200660999200f, - 1.054235328774803900f, 1.053909418127389400f, 1.053583468730738200f, - 1.053257480596834700f, - 1.052931453737664600f, 1.052605388165214700f, 1.052279283891473600f, - 1.051953140928431100f, - 1.051626959288079100f, 1.051300738982409800f, 1.050974480023417500f, - 1.050648182423098000f, - 1.050321846193448000f, 1.049995471346466300f, 1.049669057894152800f, - 1.049342605848508200f, - 1.049016115221536000f, 1.048689586025239700f, 1.048363018271625300f, - 1.048036411972699500f, - 1.047709767140470500f, 1.047383083786948700f, 1.047056361924144400f, - 1.046729601564071200f, - 1.046402802718742400f, 1.046075965400174300f, 1.045749089620383200f, - 1.045422175391386800f, - 1.045095222725206200f, 1.044768231633861100f, 1.044441202129375200f, - 1.044114134223771900f, - 1.043787027929076000f, 1.043459883257315400f, 1.043132700220517300f, - 1.042805478830712200f, - 1.042478219099930400f, 1.042150921040204200f, 1.041823584663568200f, - 1.041496209982056600f, - 1.041168797007707000f, 1.040841345752557200f, 1.040513856228645800f, - 1.040186328448014800f, - 1.039858762422705600f, 1.039531158164762400f, 1.039203515686230000f, - 1.038875834999155100f, - 1.038548116115585800f, 1.038220359047570500f, 1.037892563807160800f, - 1.037564730406408200f, - 1.037236858857366600f, 1.036908949172090900f, 1.036581001362636600f, - 1.036253015441062700f, - 1.035924991419427100f, 1.035596929309791300f, 1.035268829124216700f, - 1.034940690874766300f, - 1.034612514573505700f, 1.034284300232500000f, 1.033956047863817500f, - 1.033627757479526700f, - 1.033299429091697700f, 1.032971062712402700f, 1.032642658353714300f, - 1.032314216027707700f, - 1.031985735746457900f, 1.031657217522042900f, 1.031328661366541300f, - 1.031000067292032300f, - 1.030671435310598600f, 1.030342765434322200f, 1.030014057675287900f, - 1.029685312045581100f, - 1.029356528557288300f, 1.029027707222499100f, 1.028698848053302100f, - 1.028369951061789600f, - 1.028041016260053500f, 1.027712043660187600f, 1.027383033274288400f, - 1.027053985114451100f, - 1.026724899192775300f, 1.026395775521359500f, 1.026066614112305600f, - 1.025737414977715200f, - 1.025408178129692000f, 1.025078903580341600f, 1.024749591341769700f, - 1.024420241426085200f, - 1.024090853845396800f, 1.023761428611814600f, 1.023431965737451800f, - 1.023102465234420700f, - 1.022772927114837100f, 1.022443351390816400f, 1.022113738074476300f, - 1.021784087177936000f, - 1.021454398713315600f, 1.021124672692737000f, 1.020794909128323000f, - 1.020465108032198300f, - 1.020135269416488700f, 1.019805393293321100f, 1.019475479674824900f, - 1.019145528573129000f, - 1.018815540000365800f, 1.018485513968667500f, 1.018155450490168000f, - 1.017825349577003300f, - 1.017495211241309800f, 1.017165035495226400f, 1.016834822350892300f, - 1.016504571820448000f, - 1.016174283916036800f, 1.015843958649801600f, 1.015513596033888400f, - 1.015183196080442900f, - 1.014852758801613200f, 1.014522284209548900f, 1.014191772316400000f, - 1.013861223134318900f, - 1.013530636675459100f, 1.013200012951974700f, 1.012869351976022300f, - 1.012538653759758900f, - 1.012207918315344300f, 1.011877145654937400f, 1.011546335790700600f, - 1.011215488734796800f, - 1.010884604499389800f, 1.010553683096645900f, 1.010222724538731600f, - 1.009891728837815700f, - 1.009560696006067900f, 1.009229626055658800f, 1.008898518998761800f, - 1.008567374847549900f, - 1.008236193614199000f, 1.007904975310885300f, 1.007573719949786700f, - 1.007242427543082900f, - 1.006911098102953900f, 1.006579731641582500f, 1.006248328171152100f, - 1.005916887703846500f, - 1.005585410251852700f, 1.005253895827357800f, 1.004922344442551000f, - 1.004590756109621900f, - 1.004259130840762700f, 1.003927468648166100f, 1.003595769544025900f, - 1.003264033540538500f, - 1.002932260649900000f, 1.002600450884309800f, 1.002268604255967200f, - 1.001936720777072400f, - 1.001604800459829000f, 1.001272843316440000f, 1.000940849359111000f, - 1.000608818600048100f, - 1.000276751051459200f, 0.999944646725553720f, 0.999612505634541740f, - 0.999280327790635690f, - 0.998948113206048590f, 0.998615861892994560f, 0.998283573863690270f, - 0.997951249130352380f, - 0.997618887705200020f, 0.997286489600452630f, 0.996954054828332210f, - 0.996621583401061110f, - 0.996289075330862860f, 0.995956530629963810f, 0.995623949310589620f, - 0.995291331384969390f, - 0.994958676865332010f, 0.994625985763907820f, 0.994293258092929790f, - 0.993960493864630480f, - 0.993627693091245660f, 0.993294855785010760f, 0.992961981958163210f, - 0.992629071622942340f, - 0.992296124791587690f, 0.991963141476341460f, 0.991630121689446090f, - 0.991297065443145440f, - 0.990963972749685840f, 0.990630843621313260f, 0.990297678070276800f, - 0.989964476108825210f, - 0.989631237749210020f, 0.989297963003683330f, 0.988964651884498000f, - 0.988631304403909890f, - 0.988297920574174430f, 0.987964500407549910f, 0.987631043916294970f, - 0.987297551112669370f, - 0.986964022008935520f, 0.986630456617355380f, 0.986296854950194260f, - 0.985963217019717120f, - 0.985629542838190490f, 0.985295832417883540f, 0.984962085771065030f, - 0.984628302910006580f, - 0.984294483846980150f, 0.983960628594258810f, 0.983626737164118190f, - 0.983292809568833910f, - 0.982958845820684270f, 0.982624845931947320f, 0.982290809914904140f, - 0.981956737781835790f, - 0.981622629545024770f, 0.981288485216756160f, 0.980954304809314670f, - 0.980620088334987930f, - 0.980285835806063770f, 0.979951547234831130f, 0.979617222633581860f, - 0.979282862014607240f, - 0.978948465390201530f, 0.978614032772659240f, 0.978279564174275860f, - 0.977945059607349900f, - 0.977610519084179290f, 0.977275942617064740f, 0.976941330218307540f, - 0.976606681900209830f, - 0.976271997675076550f, 0.975937277555212310f, 0.975602521552924600f, - 0.975267729680520560f, - 0.974932901950310350f, 0.974598038374604350f, 0.974263138965714040f, - 0.973928203735953460f, - 0.973593232697636530f, 0.973258225863079970f, 0.972923183244600480f, - 0.972588104854516410f, - 0.972252990705148370f, 0.971917840808816710f, 0.971582655177844700f, - 0.971247433824555920f, - 0.970912176761274950f, 0.970576884000329040f, 0.970241555554045230f, - 0.969906191434753320f, - 0.969570791654783330f, 0.969235356226466500f, 0.968899885162136650f, - 0.968564378474127350f, - 0.968228836174775060f, 0.967893258276415700f, 0.967557644791388500f, - 0.967221995732032490f, - 0.966886311110688230f, 0.966550590939698640f, 0.966214835231406500f, - 0.965879043998157160f, - 0.965543217252296420f, 0.965207355006171270f, 0.964871457272131190f, - 0.964535524062525410f, - 0.964199555389706030f, 0.963863551266025300f, 0.963527511703836660f, - 0.963191436715496120f, - 0.962855326313359350f, 0.962519180509785130f, 0.962182999317132030f, - 0.961846782747760140f, - 0.961510530814032040f, 0.961174243528309820f, 0.960837920902958720f, - 0.960501562950343390f, - 0.960165169682831830f, 0.959828741112791590f, 0.959492277252591900f, - 0.959155778114604400f, - 0.958819243711200310f, 0.958482674054753960f, 0.958146069157639560f, - 0.957809429032232760f, - 0.957472753690911670f, 0.957136043146054050f, 0.956799297410040440f, - 0.956462516495251940f, - 0.956125700414070300f, 0.955788849178880300f, 0.955451962802066120f, - 0.955115041296014880f, - 0.954778084673113870f, 0.954441092945751630f, 0.954104066126319150f, - 0.953767004227207060f, - 0.953429907260809120f, 0.953092775239518630f, 0.952755608175731570f, - 0.952418406081844360f, - 0.952081168970254520f, 0.951743896853362140f, 0.951406589743566950f, - 0.951069247653271500f, - 0.950731870594878510f, 0.950394458580791970f, 0.950057011623418380f, - 0.949719529735163940f, - 0.949382012928437600f, 0.949044461215648560f, 0.948706874609207220f, - 0.948369253121526420f, - 0.948031596765018910f, 0.947693905552099870f, 0.947356179495185020f, - 0.947018418606691230f, - 0.946680622899037650f, 0.946342792384643360f, 0.946004927075930090f, - 0.945667026985319680f, - 0.945329092125236190f, 0.944991122508104350f, 0.944653118146349890f, - 0.944315079052401090f, - 0.943977005238685770f, 0.943638896717634900f, 0.943300753501679190f, - 0.942962575603250920f, - 0.942624363034784580f, 0.942286115808714690f, 0.941947833937478270f, - 0.941609517433512730f, - 0.941271166309256450f, 0.940932780577150460f, 0.940594360249635500f, - 0.940255905339155150f, - 0.939917415858152920f, 0.939578891819073720f, 0.939240333234364950f, - 0.938901740116473540f, - 0.938563112477849630f, 0.938224450330942590f, 0.937885753688204820f, - 0.937547022562088990f, - 0.937208256965048840f, 0.936869456909540490f, 0.936530622408019990f, - 0.936191753472946030f, - 0.935852850116777430f, 0.935513912351974450f, 0.935174940190999560f, - 0.934835933646314900f, - 0.934496892730385720f, 0.934157817455677160f, 0.933818707834655590f, - 0.933479563879790030f, - 0.933140385603548840f, 0.932801173018403480f, 0.932461926136825660f, - 0.932122644971287830f, - 0.931783329534265240f, 0.931443979838232900f, 0.931104595895668410f, - 0.930765177719049210f, - 0.930425725320855430f, 0.930086238713567440f, 0.929746717909666790f, - 0.929407162921637610f, - 0.929067573761963250f, 0.928727950443130500f, 0.928388292977625930f, - 0.928048601377937210f, - 0.927708875656554800f, 0.927369115825968480f, 0.927029321898671270f, - 0.926689493887155820f, - 0.926349631803916270f, 0.926009735661449170f, 0.925669805472250860f, - 0.925329841248820340f, - 0.924989843003656610f, 0.924649810749260110f, 0.924309744498133750f, - 0.923969644262779830f, - 0.923629510055703820f, 0.923289341889410480f, 0.922949139776407800f, - 0.922608903729203570f, - 0.922268633760306990f, 0.921928329882229390f, 0.921587992107482210f, - 0.921247620448579440f, - 0.920907214918035070f, 0.920566775528364410f, 0.920226302292085460f, - 0.919885795221715540f, - 0.919545254329774850f, 0.919204679628783720f, 0.918864071131263780f, - 0.918523428849739030f, - 0.918182752796733110f, 0.917842042984772340f, 0.917501299426383480f, - 0.917160522134094160f, - 0.916819711120434700f, 0.916478866397934850f, 0.916137987979127270f, - 0.915797075876544350f, - 0.915456130102721200f, 0.915115150670193110f, 0.914774137591496510f, - 0.914433090879170130f, - 0.914092010545752620f, 0.913750896603785280f, 0.913409749065809520f, - 0.913068567944367970f, - 0.912727353252005710f, 0.912386105001267270f, 0.912044823204700370f, - 0.911703507874852440f, - 0.911362159024272310f, 0.911020776665511290f, 0.910679360811120000f, - 0.910337911473652390f, - 0.909996428665661990f, 0.909654912399703860f, 0.909313362688335290f, - 0.908971779544113350f, - 0.908630162979597760f, 0.908288513007348140f, 0.907946829639926790f, - 0.907605112889895870f, - 0.907263362769819000f, 0.906921579292262250f, 0.906579762469791110f, - 0.906237912314974080f, - 0.905896028840379560f, 0.905554112058577170f, 0.905212161982139160f, - 0.904870178623637170f, - 0.904528161995645670f, 0.904186112110739510f, 0.903844028981494190f, - 0.903501912620488070f, - 0.903159763040298880f, 0.902817580253507450f, 0.902475364272694370f, - 0.902133115110441470f, - 0.901790832779333250f, 0.901448517291953520f, 0.901106168660889110f, - 0.900763786898726380f, - 0.900421372018054500f, 0.900078924031462610f, 0.899736442951541320f, - 0.899393928790883420f, - 0.899051381562081310f, 0.898708801277730340f, 0.898366187950425780f, - 0.898023541592764210f, - 0.897680862217344440f, 0.897338149836764960f, 0.896995404463627350f, - 0.896652626110532870f, - 0.896309814790084090f, 0.895966970514885940f, 0.895624093297543110f, - 0.895281183150662960f, - 0.894938240086852970f, 0.894595264118721810f, 0.894252255258880410f, - 0.893909213519939460f, - 0.893566138914512420f, 0.893223031455212530f, 0.892879891154655380f, - 0.892536718025457090f, - 0.892193512080234670f, 0.891850273331607600f, 0.891507001792195000f, - 0.891163697474618880f, - 0.890820360391500920f, 0.890476990555464480f, 0.890133587979135000f, - 0.889790152675137610f, - 0.889446684656100330f, 0.889103183934650930f, 0.888759650523418650f, - 0.888416084435035060f, - 0.888072485682131150f, 0.887728854277341050f, 0.887385190233298650f, - 0.887041493562639060f, - 0.886697764277999840f, 0.886354002392018110f, 0.886010207917333760f, - 0.885666380866586560f, - 0.885322521252418610f, 0.884978629087472270f, 0.884634704384391180f, - 0.884290747155821230f, - 0.883946757414407980f, 0.883602735172799640f, 0.883258680443644530f, - 0.882914593239592320f, - 0.882570473573294660f, 0.882226321457403320f, 0.881882136904572400f, - 0.881537919927456340f, - 0.881193670538710450f, 0.880849388750992610f, 0.880505074576960370f, - 0.880160728029273920f, - 0.879816349120593590f, 0.879471937863580690f, 0.879127494270899090f, - 0.878783018355212220f, - 0.878438510129186170f, 0.878093969605486800f, 0.877749396796782770f, - 0.877404791715742370f, - 0.877060154375035710f, 0.876715484787334630f, 0.876370782965310900f, - 0.876026048921639160f, - 0.875681282668993700f, 0.875336484220050390f, 0.874991653587487090f, - 0.874646790783981660f, - 0.874301895822214290f, 0.873956968714865500f, 0.873612009474616810f, - 0.873267018114152300f, - 0.872921994646155390f, 0.872576939083312460f, 0.872231851438309840f, - 0.871886731723835020f, - 0.871541579952577750f, 0.871196396137227660f, 0.870851180290476810f, - 0.870505932425017060f, - 0.870160652553543020f, 0.869815340688749220f, 0.869469996843331370f, - 0.869124621029987670f, - 0.868779213261415610f, 0.868433773550315810f, 0.868088301909388680f, - 0.867742798351335720f, - 0.867397262888861100f, 0.867051695534668210f, 0.866706096301463340f, - 0.866360465201952980f, - 0.866014802248844420f, 0.865669107454847490f, 0.865323380832671800f, - 0.864977622395029290f, - 0.864631832154632240f, 0.864286010124194040f, 0.863940156316430170f, - 0.863594270744056040f, - 0.863248353419789670f, 0.862902404356348570f, 0.862556423566453230f, - 0.862210411062823810f, - 0.861864366858181910f, 0.861518290965251340f, 0.861172183396755500f, - 0.860826044165420630f, - 0.860479873283972910f, 0.860133670765139580f, 0.859787436621650360f, - 0.859441170866234390f, - 0.859094873511623840f, 0.858748544570550610f, 0.858402184055747750f, - 0.858055791979950740f, - 0.857709368355894840f, 0.857362913196317630f, 0.857016426513956930f, - 0.856669908321551650f, - 0.856323358631843170f, 0.855976777457572280f, 0.855630164811482460f, - 0.855283520706317080f, - 0.854936845154821930f, 0.854590138169742830f, 0.854243399763827020f, - 0.853896629949823630f, - 0.853549828740481690f, 0.853202996148552880f, 0.852856132186788910f, - 0.852509236867942440f, - 0.852162310204768740f, 0.851815352210022470f, 0.851468362896461110f, - 0.851121342276842110f, - 0.850774290363923820f, 0.850427207170467380f, 0.850080092709233130f, - 0.849732946992984290f, - 0.849385770034483680f, 0.849038561846496730f, 0.848691322441788910f, - 0.848344051833126780f, - 0.847996750033279350f, 0.847649417055015060f, 0.847302052911105160f, - 0.846954657614320980f, - 0.846607231177434640f, 0.846259773613221020f, 0.845912284934454140f, - 0.845564765153910990f, - 0.845217214284368690f, 0.844869632338605130f, 0.844522019329400630f, - 0.844174375269535320f, - 0.843826700171791620f, 0.843478994048952440f, 0.843131256913801420f, - 0.842783488779124570f, - 0.842435689657707650f, 0.842087859562339000f, 0.841739998505806610f, - 0.841392106500900900f, - 0.841044183560412770f, 0.840696229697133760f, 0.840348244923857960f, - 0.840000229253379030f, - 0.839652182698493290f, 0.839304105271996950f, 0.838955996986687550f, - 0.838607857855364740f, - 0.838259687890827830f, 0.837911487105878820f, 0.837563255513319780f, - 0.837214993125953600f, - 0.836866699956585690f, 0.836518376018021260f, 0.836170021323067610f, - 0.835821635884532730f, - 0.835473219715225040f, 0.835124772827955830f, 0.834776295235535540f, - 0.834427786950777460f, - 0.834079247986494690f, 0.833730678355502630f, 0.833382078070616820f, - 0.833033447144653880f, - 0.832684785590432690f, 0.832336093420771970f, 0.831987370648492710f, - 0.831638617286416190f, - 0.831289833347364620f, 0.830941018844162600f, 0.830592173789634240f, - 0.830243298196606360f, - 0.829894392077905720f, 0.829545455446360270f, 0.829196488314800080f, - 0.828847490696055010f, - 0.828498462602957340f, 0.828149404048339590f, 0.827800315045035150f, - 0.827451195605879990f, - 0.827102045743709160f, 0.826752865471360950f, 0.826403654801672770f, - 0.826054413747485010f, - 0.825705142321637720f, 0.825355840536972420f, 0.825006508406332490f, - 0.824657145942561230f, - 0.824307753158504460f, 0.823958330067008030f, 0.823608876680918760f, - 0.823259393013085820f, - 0.822909879076357930f, 0.822560334883586490f, 0.822210760447622980f, - 0.821861155781319800f, - 0.821511520897531660f, 0.821161855809112830f, 0.820812160528920360f, - 0.820462435069811090f, - 0.820112679444643060f, 0.819762893666276530f, 0.819413077747571440f, - 0.819063231701390170f, - 0.818713355540594880f, 0.818363449278050270f, 0.818013512926620940f, - 0.817663546499172720f, - 0.817313550008573640f, 0.816963523467691410f, 0.816613466889396070f, - 0.816263380286557980f, - 0.815913263672048310f, 0.815563117058740630f, 0.815212940459508210f, - 0.814862733887226740f, - 0.814512497354771830f, 0.814162230875020380f, 0.813811934460851430f, - 0.813461608125143560f, - 0.813111251880778150f, 0.812760865740636440f, 0.812410449717600570f, - 0.812060003824555230f, - 0.811709528074384460f, 0.811359022479975040f, 0.811008487054213360f, - 0.810657921809988410f, - 0.810307326760189020f, 0.809956701917705080f, 0.809606047295428950f, - 0.809255362906252440f, - 0.808904648763069890f, 0.808553904878775760f, 0.808203131266265420f, - 0.807852327938436750f, - 0.807501494908186900f, 0.807150632188415760f, 0.806799739792023240f, - 0.806448817731910130f, - 0.806097866020979660f, 0.805746884672134620f, 0.805395873698280360f, - 0.805044833112322000f, - 0.804693762927166100f, 0.804342663155721230f, 0.803991533810895500f, - 0.803640374905599810f, - 0.803289186452744390f, 0.802937968465242240f, 0.802586720956006250f, - 0.802235443937950320f, - 0.801884137423990890f, 0.801532801427043530f, 0.801181435960026780f, - 0.800830041035858750f, - 0.800478616667459010f, 0.800127162867749210f, 0.799775679649650460f, - 0.799424167026086540f, - 0.799072625009981330f, 0.798721053614259490f, 0.798369452851848020f, - 0.798017822735673680f, - 0.797666163278665570f, 0.797314474493752810f, 0.796962756393865600f, - 0.796611008991936490f, - 0.796259232300897350f, 0.795907426333682830f, 0.795555591103226930f, - 0.795203726622466520f, - 0.794851832904338360f, 0.794499909961779990f, 0.794147957807731400f, - 0.793795976455132220f, - 0.793443965916924570f, 0.793091926206050400f, 0.792739857335452710f, - 0.792387759318077150f, - 0.792035632166868230f, 0.791683475894773720f, 0.791331290514740830f, - 0.790979076039718180f, - 0.790626832482656310f, 0.790274559856505520f, 0.789922258174218570f, - 0.789569927448748320f, - 0.789217567693048520f, 0.788865178920075130f, 0.788512761142783790f, - 0.788160314374132590f, - 0.787807838627079260f, 0.787455333914584220f, 0.787102800249607550f, - 0.786750237645110430f, - 0.786397646114056490f, 0.786045025669408700f, 0.785692376324132690f, - 0.785339698091194080f, - 0.784986990983559170f, 0.784634255014197040f, 0.784281490196075850f, - 0.783928696542166680f, - 0.783575874065440270f, 0.783223022778868350f, 0.782870142695425320f, - 0.782517233828084580f, - 0.782164296189822530f, 0.781811329793615120f, 0.781458334652439630f, - 0.781105310779275470f, - 0.780752258187101480f, 0.780399176888899150f, 0.780046066897649550f, - 0.779692928226336290f, - 0.779339760887942880f, 0.778986564895453810f, 0.778633340261856040f, - 0.778280087000135730f, - 0.777926805123281830f, 0.777573494644283050f, 0.777220155576129220f, - 0.776866787931812410f, - 0.776513391724324210f, 0.776159966966658680f, 0.775806513671809860f, - 0.775453031852772920f, - 0.775099521522545020f, 0.774745982694123090f, 0.774392415380506400f, - 0.774038819594694230f, - 0.773685195349686940f, 0.773331542658487140f, 0.772977861534096640f, - 0.772624151989520280f, - 0.772270414037761980f, 0.771916647691828660f, 0.771562852964726710f, - 0.771209029869463940f, - 0.770855178419050050f, 0.770501298626494410f, 0.770147390504808960f, - 0.769793454067005500f, - 0.769439489326096850f, 0.769085496295098040f, 0.768731474987023660f, - 0.768377425414890850f, - 0.768023347591716640f, 0.767669241530518850f, 0.767315107244318060f, - 0.766960944746133740f, - 0.766606754048988260f, 0.766252535165903970f, 0.765898288109903900f, - 0.765544012894013530f, - 0.765189709531257760f, 0.764835378034664170f, 0.764481018417259680f, - 0.764126630692073870f, - 0.763772214872136200f, 0.763417770970477140f, 0.763063299000129260f, - 0.762708798974124800f, - 0.762354270905498450f, 0.761999714807284790f, 0.761645130692519490f, - 0.761290518574240350f, - 0.760935878465484720f, 0.760581210379292380f, 0.760226514328703140f, - 0.759871790326757670f, - 0.759517038386499090f, 0.759162258520969860f, 0.758807450743214760f, - 0.758452615066278920f, - 0.758097751503208020f, 0.757742860067050380f, 0.757387940770853360f, - 0.757032993627667290f, - 0.756678018650541630f, 0.756323015852528700f, 0.755967985246680520f, - 0.755612926846050080f, - 0.755257840663692730f, 0.754902726712663120f, 0.754547585006018600f, - 0.754192415556816380f, - 0.753837218378114460f, 0.753481993482973400f, 0.753126740884452970f, - 0.752771460595615500f, - 0.752416152629523330f, 0.752060816999239660f, 0.751705453717829930f, - 0.751350062798359140f, - 0.750994644253894730f, 0.750639198097504010f, 0.750283724342255320f, - 0.749928223001219310f, - 0.749572694087465850f, 0.749217137614067500f, 0.748861553594096340f, - 0.748505942040627040f, - 0.748150302966733790f, 0.747794636385492150f, 0.747438942309979870f, - 0.747083220753273820f, - 0.746727471728453770f, 0.746371695248599140f, 0.746015891326790470f, - 0.745660059976110400f, - 0.745304201209641030f, 0.744948315040467210f, 0.744592401481673270f, - 0.744236460546344850f, - 0.743880492247569580f, 0.743524496598434670f, 0.743168473612029980f, - 0.742812423301444810f, - 0.742456345679769810f, 0.742100240760097840f, 0.741744108555520860f, - 0.741387949079133860f, - 0.741031762344030790f, 0.740675548363308620f, 0.740319307150063780f, - 0.739963038717393880f, - 0.739606743078398690f, 0.739250420246177380f, 0.738894070233831800f, - 0.738537693054463370f, - 0.738181288721174830f, 0.737824857247070810f, 0.737468398645255490f, - 0.737111912928835710f, - 0.736755400110918000f, 0.736398860204609870f, 0.736042293223021060f, - 0.735685699179260850f, - 0.735329078086440880f, 0.734972429957672760f, 0.734615754806068890f, - 0.734259052644744230f, - 0.733902323486812610f, 0.733545567345390890f, 0.733188784233595240f, - 0.732831974164544150f, - 0.732475137151356370f, 0.732118273207151170f, 0.731761382345050280f, - 0.731404464578174760f, - 0.731047519919648340f, 0.730690548382594280f, 0.730333549980137110f, - 0.729976524725403530f, - 0.729619472631519270f, 0.729262393711613280f, 0.728905287978813600f, - 0.728548155446249730f, - 0.728190996127053180f, 0.727833810034354990f, 0.727476597181288540f, - 0.727119357580987220f, - 0.726762091246585200f, 0.726404798191218950f, 0.726047478428024420f, - 0.725690131970139980f, - 0.725332758830703360f, 0.724975359022855150f, 0.724617932559735390f, - 0.724260479454485130f, - 0.723902999720247850f, 0.723545493370166160f, 0.723187960417385530f, - 0.722830400875050790f, - 0.722472814756308090f, 0.722115202074305680f, 0.721757562842191060f, - 0.721399897073114470f, - 0.721042204780225960f, 0.720684485976676230f, 0.720326740675618530f, - 0.719968968890205230f, - 0.719611170633591480f, 0.719253345918932090f, 0.718895494759382860f, - 0.718537617168101610f, - 0.718179713158245800f, 0.717821782742975370f, 0.717463825935449550f, - 0.717105842748830160f, - 0.716747833196278770f, 0.716389797290958090f, 0.716031735046032900f, - 0.715673646474667140f, - 0.715315531590027700f, 0.714957390405280950f, 0.714599222933594240f, - 0.714241029188137260f, - 0.713882809182079030f, 0.713524562928591010f, 0.713166290440844450f, - 0.712807991732011590f, - 0.712449666815266890f, 0.712091315703784260f, 0.711732938410739810f, - 0.711374534949309800f, - 0.711016105332671340f, 0.710657649574003460f, 0.710299167686484930f, - 0.709940659683296890f, - 0.709582125577619790f, 0.709223565382636760f, 0.708864979111530680f, - 0.708506366777485130f, - 0.708147728393686340f, 0.707789063973319310f, 0.707430373529572170f, - 0.707071657075632460f, - 0.706712914624688770f, 0.706354146189931750f, 0.705995351784551530f, - 0.705636531421740880f, - 0.705277685114692020f, 0.704918812876598410f, 0.704559914720655490f, - 0.704200990660058150f, - 0.703842040708003820f, 0.703483064877689630f, 0.703124063182313690f, - 0.702765035635076310f, - 0.702405982249177160f, 0.702046903037818250f, 0.701687798014201110f, - 0.701328667191529980f, - 0.700969510583008600f, 0.700610328201841660f, 0.700251120061236020f, - 0.699891886174398130f, - 0.699532626554536630f, 0.699173341214860190f, 0.698814030168578240f, - 0.698454693428902320f, - 0.698095331009043640f, 0.697735942922215520f, 0.697376529181631400f, - 0.697017089800505250f, - 0.696657624792053730f, 0.696298134169492380f, 0.695938617946039510f, - 0.695579076134912990f, - 0.695219508749331800f, 0.694859915802517050f, 0.694500297307689140f, - 0.694140653278070950f, - 0.693780983726884790f, 0.693421288667355530f, 0.693061568112707690f, - 0.692701822076166820f, - 0.692342050570960430f, 0.691982253610315510f, 0.691622431207461700f, - 0.691262583375628180f, - 0.690902710128045050f, 0.690542811477944610f, 0.690182887438558710f, - 0.689822938023121220f, - 0.689462963244866330f, 0.689102963117028790f, 0.688742937652845550f, - 0.688382886865552930f, - 0.688022810768389670f, 0.687662709374594510f, 0.687302582697406850f, - 0.686942430750068330f, - 0.686582253545819920f, 0.686222051097905130f, 0.685861823419566700f, - 0.685501570524050140f, - 0.685141292424600310f, 0.684780989134463280f, 0.684420660666887120f, - 0.684060307035119440f, - 0.683699928252410110f, 0.683339524332008840f, 0.682979095287166160f, - 0.682618641131135020f, - 0.682258161877167370f, 0.681897657538517720f, 0.681537128128440470f, - 0.681176573660190910f, - 0.680815994147026320f, 0.680455389602203310f, 0.680094760038981280f, - 0.679734105470619080f, - 0.679373425910376310f, 0.679012721371515250f, 0.678651991867297080f, - 0.678291237410985510f, - 0.677930458015843620f, 0.677569653695137220f, 0.677208824462131490f, - 0.676847970330092700f, - 0.676487091312289350f, 0.676126187421989040f, 0.675765258672461950f, - 0.675404305076978020f, - 0.675043326648808170f, 0.674682323401225250f, 0.674321295347501510f, - 0.673960242500911690f, - 0.673599164874730370f, 0.673238062482232950f, 0.672876935336696900f, - 0.672515783451398950f, - 0.672154606839618470f, 0.671793405514634180f, 0.671432179489727110f, - 0.671070928778178090f, - 0.670709653393269050f, 0.670348353348283690f, 0.669987028656505170f, - 0.669625679331219300f, - 0.669264305385711360f, 0.668902906833267590f, 0.668541483687176590f, - 0.668180035960725840f, - 0.667818563667205600f, 0.667457066819905800f, 0.667095545432117240f, - 0.666733999517132860f, - 0.666372429088244790f, 0.666010834158747840f, 0.665649214741936390f, - 0.665287570851105680f, - 0.664925902499553190f, 0.664564209700575500f, 0.664202492467472090f, - 0.663840750813541210f, - 0.663478984752084110f, 0.663117194296401260f, 0.662755379459794350f, - 0.662393540255567070f, - 0.662031676697022450f, 0.661669788797465960f, 0.661307876570202740f, - 0.660945940028538900f, - 0.660583979185782600f, 0.660221994055241400f, 0.659859984650225110f, - 0.659497950984043510f, - 0.659135893070007080f, 0.658773810921428500f, 0.658411704551619570f, - 0.658049573973894850f, - 0.657687419201568260f, 0.657325240247955020f, 0.656963037126372160f, - 0.656600809850135910f, - 0.656238558432565400f, 0.655876282886978410f, 0.655513983226695960f, - 0.655151659465038060f, - 0.654789311615326050f, 0.654426939690883280f, 0.654064543705032310f, - 0.653702123671098150f, - 0.653339679602405470f, 0.652977211512280050f, 0.652614719414049580f, - 0.652252203321041060f, - 0.651889663246583930f, 0.651527099204007310f, 0.651164511206641320f, - 0.650801899267818060f, - 0.650439263400868990f, 0.650076603619127890f, 0.649713919935928420f, - 0.649351212364604910f, - 0.648988480918494040f, 0.648625725610931460f, 0.648262946455255510f, - 0.647900143464803730f, - 0.647537316652916140f, 0.647174466032932490f, 0.646811591618193350f, - 0.646448693422041360f, - 0.646085771457818310f, 0.645722825738868860f, 0.645359856278536980f, - 0.644996863090167570f, - 0.644633846187107620f, 0.644270805582703550f, 0.643907741290304040f, - 0.643544653323257610f, - 0.643181541694913480f, 0.642818406418622980f, 0.642455247507736860f, - 0.642092064975608220f, - 0.641728858835589830f, 0.641365629101035340f, 0.641002375785300500f, - 0.640639098901740200f, - 0.640275798463712080f, 0.639912474484572560f, 0.639549126977681070f, - 0.639185755956396480f, - 0.638822361434078330f, 0.638458943424088490f, 0.638095501939787920f, - 0.637732036994540290f, - 0.637368548601708660f, 0.637005036774657030f, 0.636641501526751590f, - 0.636277942871357530f, - 0.635914360821842830f, 0.635550755391574910f, 0.635187126593922070f, - 0.634823474442254840f, - 0.634459798949942640f, 0.634096100130357660f, 0.633732377996871770f, - 0.633368632562857470f, - 0.633004863841689520f, 0.632641071846741790f, 0.632277256591390780f, - 0.631913418089012020f, - 0.631549556352983710f, 0.631185671396683470f, 0.630821763233490040f, - 0.630457831876783950f, - 0.630093877339945260f, 0.629729899636356280f, 0.629365898779399080f, - 0.629001874782456500f, - 0.628637827658913300f, 0.628273757422153860f, 0.627909664085564810f, - 0.627545547662532230f, - 0.627181408166443410f, 0.626817245610687520f, 0.626453060008652860f, - 0.626088851373730380f, - 0.625724619719310480f, 0.625360365058784670f, 0.624996087405546350f, - 0.624631786772988030f, - 0.624267463174504880f, 0.623903116623491180f, 0.623538747133343780f, - 0.623174354717459190f, - 0.622809939389234460f, 0.622445501162069090f, 0.622081040049361490f, - 0.621716556064512820f, - 0.621352049220923570f, 0.620987519531995270f, 0.620622967011131400f, - 0.620258391671734690f, - 0.619893793527210410f, 0.619529172590963410f, 0.619164528876399280f, - 0.618799862396925750f, - 0.618435173165949760f, 0.618070461196880800f, 0.617705726503127720f, - 0.617340969098100430f, - 0.616976188995210780f, 0.616611386207870040f, 0.616246560749491690f, - 0.615881712633488340f, - 0.615516841873275490f, 0.615151948482267840f, 0.614787032473881110f, - 0.614422093861533010f, - 0.614057132658640590f, 0.613692148878623000f, 0.613327142534899510f, - 0.612962113640889710f, - 0.612597062210015750f, 0.612231988255698470f, 0.611866891791361560f, - 0.611501772830428060f, - 0.611136631386322020f, 0.610771467472469460f, 0.610406281102295440f, - 0.610041072289227990f, - 0.609675841046694030f, 0.609310587388121830f, 0.608945311326941520f, - 0.608580012876582370f, - 0.608214692050476290f, 0.607849348862054220f, 0.607483983324749510f, - 0.607118595451995420f, - 0.606753185257225550f, 0.606387752753876020f, 0.606022297955381760f, - 0.605656820875180360f, - 0.605291321526709060f, 0.604925799923405670f, 0.604560256078710220f, - 0.604194690006061960f, - 0.603829101718902580f, 0.603463491230673220f, 0.603097858554815790f, - 0.602732203704774650f, - 0.602366526693992930f, 0.602000827535916330f, 0.601635106243990190f, - 0.601269362831660550f, - 0.600903597312375640f, 0.600537809699582810f, 0.600172000006731770f, - 0.599806168247271620f, - 0.599440314434653620f, 0.599074438582328780f, 0.598708540703749010f, - 0.598342620812368000f, - 0.597976678921638860f, 0.597610715045016950f, 0.597244729195957500f, - 0.596878721387916090f, - 0.596512691634350830f, 0.596146639948718640f, 0.595780566344478960f, - 0.595414470835091030f, - 0.595048353434014630f, 0.594682214154711790f, 0.594316053010643270f, - 0.593949870015273000f, - 0.593583665182063740f, 0.593217438524479500f, 0.592851190055986300f, - 0.592484919790049140f, - 0.592118627740135460f, 0.591752313919712170f, 0.591385978342248260f, - 0.591019621021212420f, - 0.590653241970074180f, 0.590286841202305120f, 0.589920418731375800f, - 0.589553974570759530f, - 0.589187508733928890f, 0.588821021234357310f, 0.588454512085520460f, - 0.588087981300892900f, - 0.587721428893951850f, 0.587354854878173850f, 0.586988259267036350f, - 0.586621642074019120f, - 0.586255003312600500f, 0.585888342996261690f, 0.585521661138483250f, - 0.585154957752746730f, - 0.584788232852535560f, 0.584421486451332410f, 0.584054718562622140f, - 0.583687929199888990f, - 0.583321118376619710f, 0.582954286106300290f, 0.582587432402417840f, - 0.582220557278461340f, - 0.581853660747918780f, 0.581486742824280810f, 0.581119803521037650f, - 0.580752842851679940f, - 0.580385860829700780f, 0.580018857468592270f, 0.579651832781848730f, - 0.579284786782964360f, - 0.578917719485433800f, 0.578550630902754050f, 0.578183521048421080f, - 0.577816389935933090f, - 0.577449237578788300f, 0.577082063990485340f, 0.576714869184524860f, - 0.576347653174406840f, - 0.575980415973633590f, 0.575613157595706530f, 0.575245878054129520f, - 0.574878577362406000f, - 0.574511255534040030f, 0.574143912582537940f, 0.573776548521405030f, - 0.573409163364148930f, - 0.573041757124277180f, 0.572674329815297640f, 0.572306881450720390f, - 0.571939412044054740f, - 0.571571921608812320f, 0.571204410158504090f, 0.570836877706642270f, - 0.570469324266740570f, - 0.570101749852312100f, 0.569734154476872480f, 0.569366538153936560f, - 0.568998900897020210f, - 0.568631242719641270f, 0.568263563635316600f, 0.567895863657565500f, - 0.567528142799906490f, - 0.567160401075860410f, 0.566792638498947680f, 0.566424855082689470f, - 0.566057050840608870f, - 0.565689225786228160f, 0.565321379933072190f, 0.564953513294665140f, - 0.564585625884531870f, - 0.564217717716199550f, 0.563849788803194140f, 0.563481839159044150f, - 0.563113868797277870f, - 0.562745877731423820f, 0.562377865975012940f, 0.562009833541575080f, - 0.561641780444642640f, - 0.561273706697747450f, 0.560905612314422150f, 0.560537497308201240f, - 0.560169361692618440f, - 0.559801205481210040f, 0.559433028687510990f, 0.559064831325059240f, - 0.558696613407391630f, - 0.558328374948046320f, 0.557960115960563050f, 0.557591836458480870f, - 0.557223536455341280f, - 0.556855215964685120f, 0.556486875000054000f, 0.556118513574991650f, - 0.555750131703040880f, - 0.555381729397746880f, 0.555013306672654360f, 0.554644863541308600f, - 0.554276400017257090f, - 0.553907916114046440f, 0.553539411845225590f, 0.553170887224342820f, - 0.552802342264947400f, - 0.552433776980590490f, 0.552065191384822350f, 0.551696585491195710f, - 0.551327959313262280f, - 0.550959312864576220f, 0.550590646158691240f, 0.550221959209161620f, - 0.549853252029543830f, - 0.549484524633393480f, 0.549115777034268170f, 0.548747009245725500f, - 0.548378221281323520f, - 0.548009413154622370f, 0.547640584879181100f, 0.547271736468561530f, - 0.546902867936324590f, - 0.546533979296032200f, 0.546165070561248080f, 0.545796141745535150f, - 0.545427192862458780f, - 0.545058223925583670f, 0.544689234948475210f, 0.544320225944701200f, - 0.543951196927828010f, - 0.543582147911424560f, 0.543213078909059120f, 0.542843989934301940f, - 0.542474881000723050f, - 0.542105752121893050f, 0.541736603311384620f, 0.541367434582769480f, - 0.540998245949621760f, - 0.540629037425515050f, 0.540259809024023600f, 0.539890560758723770f, - 0.539521292643190930f, - 0.539152004691002770f, 0.538782696915736770f, 0.538413369330970610f, - 0.538044021950284450f, - 0.537674654787257180f, 0.537305267855470390f, 0.536935861168504670f, - 0.536566434739941920f, - 0.536196988583365510f, 0.535827522712358230f, 0.535458037140505110f, - 0.535088531881390050f, - 0.534719006948599860f, 0.534349462355720230f, 0.533979898116337950f, - 0.533610314244041710f, - 0.533240710752419080f, 0.532871087655060300f, 0.532501444965554960f, - 0.532131782697493170f, - 0.531762100864467290f, 0.531392399480068670f, 0.531022678557890980f, - 0.530652938111527360f, - 0.530283178154571710f, 0.529913398700619820f, 0.529543599763266700f, - 0.529173781356109600f, - 0.528803943492745180f, 0.528434086186771010f, 0.528064209451786560f, - 0.527694313301390160f, - 0.527324397749182720f, 0.526954462808764120f, 0.526584508493736840f, - 0.526214534817702310f, - 0.525844541794263210f, 0.525474529437023890f, 0.525104497759587900f, - 0.524734446775560910f, - 0.524364376498548390f, 0.523994286942156220f, 0.523624178119992400f, - 0.523254050045663940f, - 0.522883902732780290f, 0.522513736194950230f, 0.522143550445783310f, - 0.521773345498891090f, - 0.521403121367884030f, 0.521032878066375100f, 0.520662615607976660f, - 0.520292334006301820f, - 0.519922033274965560f, 0.519551713427582000f, 0.519181374477767470f, - 0.518811016439137520f, - 0.518440639325310040f, 0.518070243149902240f, 0.517699827926532130f, - 0.517329393668819580f, - 0.516958940390383700f, 0.516588468104845820f, 0.516217976825826600f, - 0.515847466566947580f, - 0.515476937341832310f, 0.515106389164103120f, 0.514735822047384990f, - 0.514365236005302040f, - 0.513994631051479240f, 0.513624007199543600f, 0.513253364463121090f, - 0.512882702855839920f, - 0.512512022391327980f, 0.512141323083213470f, 0.511770604945127050f, - 0.511399867990697920f, - 0.511029112233557960f, 0.510658337687338040f, 0.510287544365671140f, - 0.509916732282189920f, - 0.509545901450527690f, 0.509175051884319660f, 0.508804183597200140f, - 0.508433296602805670f, - 0.508062390914772230f, 0.507691466546736580f, 0.507320523512337470f, - 0.506949561825212450f, - 0.506578581499001590f, 0.506207582547344550f, 0.505836564983881190f, - 0.505465528822253710f, - 0.505094474076103310f, 0.504723400759073290f, 0.504352308884806750f, - 0.503981198466947000f, - 0.503610069519139780f, 0.503238922055029400f, 0.502867756088262840f, - 0.502496571632486070f, - 0.502125368701347050f, 0.501754147308493770f, 0.501382907467574190f, - 0.501011649192238950f, - 0.500640372496137020f, 0.500269077392920150f, 0.499897763896239410f, - 0.499526432019746450f, - 0.499155081777094940f, 0.498783713181937540f, 0.498412326247929250f, - 0.498040920988724490f, - 0.497669497417978280f, 0.497298055549347750f, 0.496926595396488870f, - 0.496555116973059980f, - 0.496183620292718900f, 0.495812105369124070f, 0.495440572215935850f, - 0.495069020846813650f, - 0.494697451275419140f, 0.494325863515413130f, 0.493954257580458580f, - 0.493582633484217940f, - 0.493210991240354450f, 0.492839330862533120f, 0.492467652364417970f, - 0.492095955759675460f, - 0.491724241061971320f, 0.491352508284972070f, 0.490980757442346090f, - 0.490608988547760690f, - 0.490237201614885710f, 0.489865396657390210f, 0.489493573688943970f, - 0.489121732723218740f, - 0.488749873773885120f, 0.488377996854616250f, 0.488006101979084450f, - 0.487634189160962910f, - 0.487262258413926560f, 0.486890309751649490f, 0.486518343187807900f, - 0.486146358736077200f, - 0.485774356410135000f, 0.485402336223658360f, 0.485030298190324950f, - 0.484658242323814380f, - 0.484286168637805270f, 0.483914077145978560f, 0.483541967862014480f, - 0.483169840799594130f, - 0.482797695972400300f, 0.482425533394114920f, 0.482053353078422120f, - 0.481681155039005550f, - 0.481308939289549380f, 0.480936705843739820f, 0.480564454715261990f, - 0.480192185917803270f, - 0.479819899465050160f, 0.479447595370691370f, 0.479075273648415010f, - 0.478702934311909910f, - 0.478330577374866780f, 0.477958202850975230f, 0.477585810753927250f, - 0.477213401097414220f, - 0.476840973895128200f, 0.476468529160763100f, 0.476096066908011760f, - 0.475723587150569390f, - 0.475351089902130650f, 0.474978575176390750f, 0.474606042987046840f, - 0.474233493347795020f, - 0.473860926272333670f, 0.473488341774360670f, 0.473115739867574380f, - 0.472743120565675250f, - 0.472370483882362520f, 0.471997829831337810f, 0.471625158426301700f, - 0.471252469680957190f, - 0.470879763609006460f, 0.470507040224152460f, 0.470134299540099940f, - 0.469761541570552780f, - 0.469388766329217000f, 0.469015973829798090f, 0.468643164086002100f, - 0.468270337111537040f, - 0.467897492920109850f, 0.467524631525429830f, 0.467151752941205530f, - 0.466778857181146260f, - 0.466405944258963200f, 0.466033014188366350f, 0.465660066983068220f, - 0.465287102656780530f, - 0.464914121223215740f, 0.464541122696088100f, 0.464168107089110940f, - 0.463795074415999760f, - 0.463422024690469060f, 0.463048957926235630f, 0.462675874137015720f, - 0.462302773336526080f, - 0.461929655538485470f, 0.461556520756611410f, 0.461183369004623920f, - 0.460810200296242310f, - 0.460437014645186440f, 0.460063812065178160f, 0.459690592569938270f, - 0.459317356173189750f, - 0.458944102888655060f, 0.458570832730057170f, 0.458197545711121090f, - 0.457824241845570630f, - 0.457450921147131930f, 0.457077583629530550f, 0.456704229306492570f, - 0.456330858191746010f, - 0.455957470299017840f, 0.455584065642037350f, 0.455210644234532610f, - 0.454837206090234200f, - 0.454463751222871910f, 0.454090279646176210f, 0.453716791373879380f, - 0.453343286419712720f, - 0.452969764797409750f, 0.452596226520703360f, 0.452222671603327130f, - 0.451849100059016350f, - 0.451475511901505420f, 0.451101907144530910f, 0.450728285801828830f, - 0.450354647887135640f, - 0.449980993414189900f, 0.449607322396728900f, 0.449233634848492320f, - 0.448859930783219170f, - 0.448486210214649020f, 0.448112473156523420f, 0.447738719622582710f, - 0.447364949626569590f, - 0.446991163182225700f, 0.446617360303294910f, 0.446243541003520480f, - 0.445869705296646270f, - 0.445495853196417930f, 0.445121984716580210f, 0.444748099870879880f, - 0.444374198673063330f, - 0.444000281136877280f, 0.443626347276070590f, 0.443252397104390790f, - 0.442878430635587910f, - 0.442504447883411090f, 0.442130448861610240f, 0.441756433583937120f, - 0.441382402064142250f, - 0.441008354315978680f, 0.440634290353198510f, 0.440260210189554690f, - 0.439886113838801880f, - 0.439512001314693700f, 0.439137872630986080f, 0.438763727801433690f, - 0.438389566839793740f, - 0.438015389759822630f, 0.437641196575277220f, 0.437266987299916590f, - 0.436892761947498260f, - 0.436518520531782470f, 0.436144263066528480f, 0.435769989565496290f, - 0.435395700042447710f, - 0.435021394511143410f, 0.434647072985346380f, 0.434272735478819010f, - 0.433898382005324050f, - 0.433524012578626440f, 0.433149627212489670f, 0.432775225920679740f, - 0.432400808716961900f, - 0.432026375615101930f, 0.431651926628867530f, 0.431277461772025310f, - 0.430902981058344070f, - 0.430528484501591540f, 0.430153972115537800f, 0.429779443913952170f, - 0.429404899910604490f, - 0.429030340119266550f, 0.428655764553708960f, 0.428281173227704760f, - 0.427906566155026040f, - 0.427531943349445720f, 0.427157304824738350f, 0.426782650594677570f, - 0.426407980673039090f, - 0.426033295073598160f, 0.425658593810130330f, 0.425283876896413280f, - 0.424909144346223290f, - 0.424534396173339160f, 0.424159632391538870f, 0.423784853014600950f, - 0.423410058056305830f, - 0.423035247530432810f, 0.422660421450763490f, 0.422285579831078230f, - 0.421910722685159720f, - 0.421535850026790060f, 0.421160961869751720f, 0.420786058227829220f, - 0.420411139114805770f, - 0.420036204544466940f, 0.419661254530597550f, 0.419286289086983070f, - 0.418911308227410740f, - 0.418536311965666650f, 0.418161300315539220f, 0.417786273290816130f, - 0.417411230905285650f, - 0.417036173172737830f, 0.416661100106961610f, 0.416286011721748230f, - 0.415910908030888200f, - 0.415535789048172620f, 0.415160654787394280f, 0.414785505262345030f, - 0.414410340486818910f, - 0.414035160474608700f, 0.413659965239509710f, 0.413284754795316230f, - 0.412909529155823300f, - 0.412534288334827750f, 0.412159032346125280f, 0.411783761203513790f, - 0.411408474920790520f, - 0.411033173511753220f, 0.410657856990201580f, 0.410282525369933980f, - 0.409907178664751180f, - 0.409531816888453190f, 0.409156440054840590f, 0.408781048177715660f, - 0.408405641270879690f, - 0.408030219348136270f, 0.407654782423288010f, 0.407279330510138260f, - 0.406903863622492260f, - 0.406528381774153900f, 0.406152884978929480f, 0.405777373250624070f, - 0.405401846603045010f, - 0.405026305049998980f, 0.404650748605293040f, 0.404275177282736260f, - 0.403899591096136380f, - 0.403523990059303620f, 0.403148374186047210f, 0.402772743490177110f, - 0.402397097985504990f, - 0.402021437685841480f, 0.401645762604999350f, 0.401270072756790610f, - 0.400894368155027990f, - 0.400518648813525830f, 0.400142914746097480f, 0.399767165966558420f, - 0.399391402488723400f, - 0.399015624326407800f, 0.398639831493428740f, 0.398264024003602220f, - 0.397888201870746420f, - 0.397512365108678430f, 0.397136513731217500f, 0.396760647752182230f, - 0.396384767185391620f, - 0.396008872044666730f, 0.395632962343827170f, 0.395257038096694990f, - 0.394881099317091370f, - 0.394505146018838130f, 0.394129178215758820f, 0.393753195921675850f, - 0.393377199150413860f, - 0.393001187915796750f, 0.392625162231649010f, 0.392249122111796800f, - 0.391873067570065240f, - 0.391496998620281590f, 0.391120915276272410f, 0.390744817551864850f, - 0.390368705460887750f, - 0.389992579017168830f, 0.389616438234538010f, 0.389240283126824070f, - 0.388864113707858060f, - 0.388487929991470140f, 0.388111731991491180f, 0.387735519721753690f, - 0.387359293196089140f, - 0.386983052428331030f, 0.386606797432312350f, 0.386230528221866430f, - 0.385854244810828530f, - 0.385477947213032580f, 0.385101635442314900f, 0.384725309512510880f, - 0.384348969437456610f, - 0.383972615230989860f, 0.383596246906947210f, 0.383219864479167560f, - 0.382843467961488940f, - 0.382467057367749940f, 0.382090632711791060f, 0.381714194007451380f, - 0.381337741268572390f, - 0.380961274508994250f, 0.380584793742559550f, 0.380208298983109930f, - 0.379831790244487540f, - 0.379455267540536490f, 0.379078730885099520f, 0.378702180292021630f, - 0.378325615775147170f, - 0.377949037348320800f, 0.377572445025389230f, 0.377195838820197690f, - 0.376819218746593910f, - 0.376442584818424570f, 0.376065937049537060f, 0.375689275453780500f, - 0.375312600045002780f, - 0.374935910837054080f, 0.374559207843783660f, 0.374182491079041500f, - 0.373805760556679190f, - 0.373429016290547200f, 0.373052258294498230f, 0.372675486582383640f, - 0.372298701168057190f, - 0.371921902065371730f, 0.371545089288180640f, 0.371168262850339210f, - 0.370791422765701320f, - 0.370414569048123140f, 0.370037701711460170f, 0.369660820769568240f, - 0.369283926236305070f, - 0.368907018125527120f, 0.368530096451093140f, 0.368153161226860980f, - 0.367776212466689010f, - 0.367399250184437480f, 0.367022274393965340f, 0.366645285109133750f, - 0.366268282343803150f, - 0.365891266111834370f, 0.365514236427090080f, 0.365137193303431750f, - 0.364760136754723020f, - 0.364383066794826350f, 0.364005983437606320f, 0.363628886696926890f, - 0.363251776586652310f, - 0.362874653120648700f, 0.362497516312780990f, 0.362120366176916230f, - 0.361743202726920790f, - 0.361366025976661450f, 0.360988835940006750f, 0.360611632630824020f, - 0.360234416062982840f, - 0.359857186250351960f, 0.359479943206800550f, 0.359102686946199680f, - 0.358725417482419150f, - 0.358348134829330870f, 0.357970839000806010f, 0.357593530010716310f, - 0.357216207872935120f, - 0.356838872601334680f, 0.356461524209789380f, 0.356084162712172360f, - 0.355706788122359060f, - 0.355329400454223950f, 0.354951999721642100f, 0.354574585938490280f, - 0.354197159118644080f, - 0.353819719275981330f, 0.353442266424378930f, 0.353064800577714280f, - 0.352687321749866610f, - 0.352309829954713830f, 0.351932325206136210f, 0.351554807518012990f, - 0.351177276904224070f, - 0.350799733378650890f, 0.350422176955173910f, 0.350044607647675640f, - 0.349667025470037810f, - 0.349289430436142520f, 0.348911822559873850f, 0.348534201855114360f, - 0.348156568335749040f, - 0.347778922015661520f, 0.347401262908737570f, 0.347023591028862320f, - 0.346645906389921150f, - 0.346268209005801410f, 0.345890498890388980f, 0.345512776057572080f, - 0.345135040521238170f, - 0.344757292295274910f, 0.344379531393571970f, 0.344001757830017680f, - 0.343623971618502560f, - 0.343246172772916250f, 0.342868361307148980f, 0.342490537235092600f, - 0.342112700570637750f, - 0.341734851327677280f, 0.341356989520103240f, 0.340979115161808070f, - 0.340601228266685980f, - 0.340223328848629880f, 0.339845416921535030f, 0.339467492499295200f, - 0.339089555595806560f, - 0.338711606224964210f, 0.338333644400663940f, 0.337955670136803170f, - 0.337577683447278010f, - 0.337199684345986910f, 0.336821672846827290f, 0.336443648963697160f, - 0.336065612710496290f, - 0.335687564101123050f, 0.335309503149478110f, 0.334931429869461230f, - 0.334553344274972690f, - 0.334175246379914470f, 0.333797136198187240f, 0.333419013743693980f, - 0.333040879030336690f, - 0.332662732072017800f, 0.332284572882641680f, 0.331906401476111280f, - 0.331528217866331690f, - 0.331150022067206780f, 0.330771814092642610f, 0.330393593956544440f, - 0.330015361672817750f, - 0.329637117255370090f, 0.329258860718107450f, 0.328880592074938190f, - 0.328502311339769700f, - 0.328124018526509800f, 0.327745713649068180f, 0.327367396721353070f, - 0.326989067757275040f, - 0.326610726770743760f, 0.326232373775669270f, 0.325854008785963320f, - 0.325475631815536570f, - 0.325097242878301660f, 0.324718841988170470f, 0.324340429159055250f, - 0.323962004404870050f, - 0.323583567739527570f, 0.323205119176942720f, 0.322826658731029110f, - 0.322448186415702550f, - 0.322069702244877910f, 0.321691206232470550f, 0.321312698392397570f, - 0.320934178738574720f, - 0.320555647284919980f, 0.320177104045350440f, 0.319798549033783570f, - 0.319419982264138650f, - 0.319041403750333630f, 0.318662813506288670f, 0.318284211545923010f, - 0.317905597883156250f, - 0.317526972531909870f, 0.317148335506103940f, 0.316769686819660780f, - 0.316391026486501690f, - 0.316012354520548600f, 0.315633670935725030f, 0.315254975745953180f, - 0.314876268965157470f, - 0.314497550607261090f, 0.314118820686189180f, 0.313740079215866160f, - 0.313361326210216840f, - 0.312982561683167790f, 0.312603785648644220f, 0.312224998120573420f, - 0.311846199112882030f, - 0.311467388639496860f, 0.311088566714346650f, 0.310709733351358600f, - 0.310330888564462340f, - 0.309952032367586390f, 0.309573164774659850f, 0.309194285799613390f, - 0.308815395456376430f, - 0.308436493758880660f, 0.308057580721056660f, 0.307678656356835560f, - 0.307299720680150270f, - 0.306920773704932260f, 0.306541815445115160f, 0.306162845914631390f, - 0.305783865127415400f, - 0.305404873097400780f, 0.305025869838521590f, 0.304646855364713530f, - 0.304267829689911010f, - 0.303888792828050650f, 0.303509744793068030f, 0.303130685598899270f, - 0.302751615259482190f, - 0.302372533788753170f, 0.301993441200650910f, 0.301614337509113100f, - 0.301235222728077840f, - 0.300856096871485010f, 0.300476959953273060f, 0.300097811987382670f, - 0.299718652987753580f, - 0.299339482968325970f, 0.298960301943041680f, 0.298581109925841300f, - 0.298201906930667390f, - 0.297822692971461410f, 0.297443468062166820f, 0.297064232216726120f, - 0.296684985449082390f, - 0.296305727773180260f, 0.295926459202963120f, 0.295547179752376430f, - 0.295167889435364820f, - 0.294788588265873170f, 0.294409276257848300f, 0.294029953425235520f, - 0.293650619781982260f, - 0.293271275342035120f, 0.292891920119341120f, 0.292512554127848930f, - 0.292133177381505850f, - 0.291753789894261320f, 0.291374391680063520f, 0.290994982752862730f, - 0.290615563126608250f, - 0.290236132815249790f, 0.289856691832738880f, 0.289477240193025510f, - 0.289097777910061970f, - 0.288718304997799550f, 0.288338821470189910f, 0.287959327341186510f, - 0.287579822624741350f, - 0.287200307334808670f, 0.286820781485341620f, 0.286441245090293950f, - 0.286061698163620930f, - 0.285682140719276560f, 0.285302572771216960f, 0.284922994333397350f, - 0.284543405419773240f, - 0.284163806044301910f, 0.283784196220939370f, 0.283404575963643550f, - 0.283024945286371230f, - 0.282645304203081090f, 0.282265652727731130f, 0.281885990874279570f, - 0.281506318656686290f, - 0.281126636088910030f, 0.280746943184911340f, 0.280367239958650150f, - 0.279987526424086530f, - 0.279607802595182420f, 0.279228068485898210f, 0.278848324110196550f, - 0.278468569482039130f, - 0.278088804615388040f, 0.277709029524206950f, 0.277329244222458250f, - 0.276949448724106480f, - 0.276569643043115150f, 0.276189827193448200f, 0.275810001189071290f, - 0.275430165043948570f, - 0.275050318772046500f, 0.274670462387330010f, 0.274290595903766200f, - 0.273910719335321300f, - 0.273530832695961790f, 0.273150935999655950f, 0.272771029260370560f, - 0.272391112492074590f, - 0.272011185708736060f, 0.271631248924323390f, 0.271251302152806570f, - 0.270871345408154380f, - 0.270491378704337540f, 0.270111402055325910f, 0.269731415475089780f, - 0.269351418977600950f, - 0.268971412576829990f, 0.268591396286749500f, 0.268211370121331170f, - 0.267831334094547010f, - 0.267451288220370730f, 0.267071232512774700f, 0.266691166985733360f, - 0.266311091653219700f, - 0.265931006529208920f, 0.265550911627675250f, 0.265170806962593210f, - 0.264790692547939020f, - 0.264410568397687560f, 0.264030434525815760f, 0.263650290946299660f, - 0.263270137673115630f, - 0.262889974720241610f, 0.262509802101654310f, 0.262129619831332370f, - 0.261749427923253670f, - 0.261369226391396310f, 0.260989015249740050f, 0.260608794512263380f, - 0.260228564192946710f, - 0.259848324305769600f, 0.259468074864711960f, 0.259087815883755400f, - 0.258707547376880010f, - 0.258327269358068100f, 0.257946981841300490f, 0.257566684840560170f, - 0.257186378369829110f, - 0.256806062443089680f, 0.256425737074325920f, 0.256045402277520320f, - 0.255665058066657680f, - 0.255284704455721660f, 0.254904341458696390f, 0.254523969089567590f, - 0.254143587362319620f, - 0.253763196290938850f, 0.253382795889410710f, 0.253002386171721110f, - 0.252621967151857420f, - 0.252241538843805680f, 0.251861101261554090f, 0.251480654419089730f, - 0.251100198330400150f, - 0.250719733009474530f, 0.250339258470300590f, 0.249958774726868170f, - 0.249578281793165680f, - 0.249197779683183660f, 0.248817268410911650f, 0.248436747990339490f, - 0.248056218435458720f, - 0.247675679760259450f, 0.247295131978733870f, 0.246914575104873220f, - 0.246534009152669040f, - 0.246153434136114490f, 0.245772850069201410f, 0.245392256965923620f, - 0.245011654840274010f, - 0.244631043706245800f, 0.244250423577833860f, 0.243869794469031620f, - 0.243489156393834590f, - 0.243108509366237320f, 0.242727853400234670f, 0.242347188509823150f, - 0.241966514708997830f, - 0.241585832011755900f, 0.241205140432093070f, 0.240824439984007180f, - 0.240443730681495050f, - 0.240063012538553830f, 0.239682285569182310f, 0.239301549787377890f, - 0.238920805207139960f, - 0.238540051842467020f, 0.238159289707357810f, 0.237778518815812740f, - 0.237397739181830820f, - 0.237016950819413100f, 0.236636153742559610f, 0.236255347965270780f, - 0.235874533501548580f, - 0.235493710365393630f, 0.235112878570808560f, 0.234732038131795020f, - 0.234351189062355030f, - 0.233970331376492150f, 0.233589465088208580f, 0.233208590211508550f, - 0.232827706760394850f, - 0.232446814748872410f, 0.232065914190945020f, 0.231685005100616930f, - 0.231304087491893930f, - 0.230923161378780380f, 0.230542226775282770f, 0.230161283695406500f, - 0.229780332153157300f, - 0.229399372162542610f, 0.229018403737568290f, 0.228637426892242400f, - 0.228256441640571880f, - 0.227875447996564060f, 0.227494445974227850f, 0.227113435587570770f, - 0.226732416850602300f, - 0.226351389777330990f, 0.225970354381765690f, 0.225589310677916880f, - 0.225208258679793520f, - 0.224827198401406690f, 0.224446129856766040f, 0.224065053059883250f, - 0.223683968024768950f, - 0.223302874765434120f, 0.222921773295891380f, 0.222540663630151820f, - 0.222159545782228660f, - 0.221778419766134050f, 0.221397285595880480f, 0.221016143285482050f, - 0.220634992848951380f, - 0.220253834300303180f, 0.219872667653551100f, 0.219491492922709110f, - 0.219110310121792800f, - 0.218729119264816280f, 0.218347920365795780f, 0.217966713438746380f, - 0.217585498497683580f, - 0.217204275556624420f, 0.216823044629584520f, 0.216441805730581500f, - 0.216060558873631570f, - 0.215679304072752960f, 0.215298041341962870f, 0.214916770695278810f, - 0.214535492146719880f, - 0.214154205710303750f, 0.213772911400050090f, 0.213391609229977570f, - 0.213010299214105140f, - 0.212628981366453330f, 0.212247655701041290f, 0.211866322231890090f, - 0.211484980973019880f, - 0.211103631938451000f, 0.210722275142205480f, 0.210340910598303870f, - 0.209959538320768660f, - 0.209578158323621420f, 0.209196770620883960f, 0.208815375226579670f, - 0.208433972154730530f, - 0.208052561419360520f, 0.207671143034492080f, 0.207289717014149830f, - 0.206908283372357230f, - 0.206526842123138070f, 0.206145393280517730f, 0.205763936858520150f, - 0.205382472871171230f, - 0.205001001332495910f, 0.204619522256519300f, 0.204238035657268250f, - 0.203856541548768030f, - 0.203475039945045950f, 0.203093530860128300f, 0.202712014308041620f, - 0.202330490302814110f, - 0.201948958858472420f, 0.201567419989045200f, 0.201185873708560170f, - 0.200804320031045230f, - 0.200422758970529910f, 0.200041190541042220f, 0.199659614756612230f, - 0.199278031631268500f, - 0.198896441179041650f, 0.198514843413961220f, 0.198133238350057030f, - 0.197751626001360480f, - 0.197370006381901520f, 0.196988379505712050f, 0.196606745386822960f, - 0.196225104039265410f, - 0.195843455477072190f, 0.195461799714274460f, 0.195080136764905570f, - 0.194698466642997730f, - 0.194316789362583340f, 0.193935104937696560f, 0.193553413382369890f, - 0.193171714710637930f, - 0.192790008936534220f, 0.192408296074092570f, 0.192026576137348330f, - 0.191644849140335360f, - 0.191263115097089540f, 0.190881374021645320f, 0.190499625928039040f, - 0.190117870830306100f, - 0.189736108742482030f, 0.189354339678604100f, 0.188972563652707950f, - 0.188590780678831250f, - 0.188208990771010640f, 0.187827193943283040f, 0.187445390209686870f, - 0.187063579584259070f, - 0.186681762081038650f, 0.186299937714063470f, 0.185918106497371700f, - 0.185536268445003070f, - 0.185154423570995760f, 0.184772571889390000f, 0.184390713414225000f, - 0.184008848159540110f, - 0.183626976139376310f, 0.183245097367773090f, 0.182863211858771880f, - 0.182481319626412670f, - 0.182099420684737420f, 0.181717515047787020f, 0.181335602729602590f, - 0.180953683744226880f, - 0.180571758105701030f, 0.180189825828068250f, 0.179807886925370670f, - 0.179425941411650660f, - 0.179043989300952110f, 0.178662030607317450f, 0.178280065344791100f, - 0.177898093527416370f, - 0.177516115169236820f, 0.177134130284297610f, 0.176752138886642350f, - 0.176370140990316640f, - 0.175988136609365020f, 0.175606125757832240f, 0.175224108449764660f, - 0.174842084699207030f, - 0.174460054520206240f, 0.174078017926807490f, 0.173695974933058080f, - 0.173313925553004180f, - 0.172931869800692250f, 0.172549807690170230f, 0.172167739235484620f, - 0.171785664450683800f, - 0.171403583349815180f, 0.171021495946926340f, 0.170639402256066410f, - 0.170257302291283000f, - 0.169875196066625710f, 0.169493083596143100f, 0.169110964893883830f, - 0.168728839973898290f, - 0.168346708850235140f, 0.167964571536945220f, 0.167582428048078130f, - 0.167200278397683750f, - 0.166818122599813570f, 0.166435960668517400f, 0.166053792617847200f, - 0.165671618461853270f, - 0.165289438214587970f, 0.164907251890102520f, 0.164525059502448390f, - 0.164142861065678550f, - 0.163760656593844480f, 0.163378446100999640f, 0.162996229601196390f, - 0.162614007108487250f, - 0.162231778636926370f, 0.161849544200566300f, 0.161467303813461580f, - 0.161085057489665670f, - 0.160702805243232240f, 0.160320547088216470f, 0.159938283038672050f, - 0.159556013108654580f, - 0.159173737312218650f, 0.158791455663418930f, 0.158409168176311760f, - 0.158026874864951870f, - 0.157644575743395960f, 0.157262270825699210f, 0.156879960125918730f, - 0.156497643658110590f, - 0.156115321436331000f, 0.155732993474637760f, 0.155350659787087090f, - 0.154968320387737170f, - 0.154585975290645110f, 0.154203624509868190f, 0.153821268059465250f, - 0.153438905953493550f, - 0.153056538206012340f, 0.152674164831079730f, 0.152291785842754070f, - 0.151909401255095250f, - 0.151527011082161540f, 0.151144615338013210f, 0.150762214036709470f, - 0.150379807192309620f, - 0.149997394818874590f, 0.149614976930463660f, 0.149232553541138180f, - 0.148850124664957870f, - 0.148467690315984390f, 0.148085250508278370f, 0.147702805255900570f, - 0.147320354572913260f, - 0.146937898473377210f, 0.146555436971355090f, 0.146172970080908520f, - 0.145790497816099230f, - 0.145408020190990560f, 0.145025537219644170f, 0.144643048916123810f, - 0.144260555294492000f, - 0.143878056368811510f, 0.143495552153146630f, 0.143113042661560050f, - 0.142730527908116440f, - 0.142348007906879320f, 0.141965482671912420f, 0.141582952217280980f, - 0.141200416557048680f, - 0.140817875705281120f, 0.140435329676042390f, 0.140052778483398480f, - 0.139670222141414250f, - 0.139287660664154770f, 0.138905094065686600f, 0.138522522360074780f, - 0.138139945561386200f, - 0.137757363683686740f, 0.137374776741042340f, 0.136992184747520560f, - 0.136609587717187310f, - 0.136226985664110460f, 0.135844378602356760f, 0.135461766545993150f, - 0.135079149509088060f, - 0.134696527505708320f, 0.134313900549922760f, 0.133931268655799020f, - 0.133548631837404950f, - 0.133165990108809860f, 0.132783343484081580f, 0.132400691977289760f, - 0.132018035602502530f, - 0.131635374373789940f, 0.131252708305220960f, 0.130870037410864640f, - 0.130487361704791580f, - 0.130104681201070800f, 0.129721995913773260f, 0.129339305856968730f, - 0.128956611044727220f, - 0.128573911491120210f, 0.128191207210217570f, 0.127808498216091110f, - 0.127425784522811530f, - 0.127043066144449680f, 0.126660343095077900f, 0.126277615388766920f, - 0.125894883039589430f, - 0.125512146061616980f, 0.125129404468921260f, 0.124746658275575490f, - 0.124363907495651240f, - 0.123981152143222060f, 0.123598392232359880f, 0.123215627777138580f, - 0.122832858791630880f, - 0.122450085289909640f, 0.122067307286049230f, 0.121684524794122440f, - 0.121301737828203960f, - 0.120918946402367330f, 0.120536150530686250f, 0.120153350227235940f, - 0.119770545506089950f, - 0.119387736381323830f, 0.119004922867011920f, 0.118622104977228730f, - 0.118239282726050290f, - 0.117856456127550970f, 0.117473625195807100f, 0.117090789944893860f, - 0.116707950388886520f, - 0.116325106541861910f, 0.115942258417895240f, 0.115559406031063570f, - 0.115176549395442460f, - 0.114793688525109290f, 0.114410823434140360f, 0.114027954136612060f, - 0.113645080646602280f, - 0.113262202978187320f, 0.112879321145445350f, 0.112496435162453430f, - 0.112113545043288730f, - 0.111730650802029900f, 0.111347752452754000f, 0.110964850009539970f, - 0.110581943486465610f, - 0.110199032897608850f, 0.109816118257049110f, 0.109433199578864170f, - 0.109050276877133770f, - 0.108667350165936400f, 0.108284419459350770f, 0.107901484771457020f, - 0.107518546116333660f, - 0.107135603508061170f, 0.106752656960718350f, 0.106369706488385940f, - 0.105986752105143480f, - 0.105603793825070680f, 0.105220831662248700f, 0.104837865630757090f, - 0.104454895744677270f, - 0.104071922018089540f, 0.103688944465074300f, 0.103305963099713400f, - 0.102922977936087120f, - 0.102539988988277600f, 0.102156996270365800f, 0.101773999796432830f, - 0.101390999580561250f, - 0.101007995636832020f, 0.100624987979327970f, 0.100241976622130760f, - 0.099858961579322170f, - 0.099475942864985456f, 0.099092920493202258f, 0.098709894478056073f, - 0.098326864833628791f, - 0.097943831574004214f, 0.097560794713264939f, 0.097177754265493674f, - 0.096794710244774623f, - 0.096411662665190329f, 0.096028611540825232f, 0.095645556885762609f, - 0.095262498714085819f, - 0.094879437039879722f, 0.094496371877227495f, 0.094113303240214247f, - 0.093730231142923864f, - 0.093347155599440373f, 0.092964076623849271f, 0.092580994230234359f, - 0.092197908432681386f, - 0.091814819245274432f, 0.091431726682099479f, 0.091048630757241303f, - 0.090665531484784803f, - 0.090282428878816323f, 0.089899322953420582f, 0.089516213722684160f, - 0.089133101200692441f, - 0.088749985401530951f, 0.088366866339286629f, 0.087983744028044805f, - 0.087600618481892656f, - 0.087217489714916191f, 0.086834357741201490f, 0.086451222574836131f, - 0.086068084229906014f, - 0.085684942720498897f, 0.085301798060701386f, 0.084918650264600160f, - 0.084535499346283349f, - 0.084152345319837438f, 0.083769188199350780f, 0.083386027998910095f, - 0.083002864732603973f, - 0.082619698414519799f, 0.082236529058745025f, 0.081853356679368619f, - 0.081470181290477811f, - 0.081087002906161790f, 0.080703821540508452f, 0.080320637207605849f, - 0.079937449921543474f, - 0.079554259696409127f, 0.079171066546292510f, 0.078787870485282088f, - 0.078404671527466441f, - 0.078021469686935602f, 0.077638264977777913f, 0.077255057414083589f, - 0.076871847009941652f, - 0.076488633779441206f, 0.076105417736672773f, 0.075722198895725248f, - 0.075338977270689375f, - 0.074955752875654230f, 0.074572525724710764f, 0.074189295831948693f, - 0.073806063211457842f, - 0.073422827877329483f, 0.073039589843653177f, 0.072656349124520389f, - 0.072273105734021334f, - 0.071889859686246352f, 0.071506610995287156f, 0.071123359675233852f, - 0.070740105740178361f, - 0.070356849204211397f, 0.069973590081423773f, 0.069590328385907715f, - 0.069207064131753759f, - 0.068823797333054326f, 0.068440528003900616f, 0.068057256158383886f, - 0.067673981810596848f, - 0.067290704974630494f, 0.066907425664577733f, 0.066524143894529736f, - 0.066140859678579578f, - 0.065757573030819083f, 0.065374283965340146f, 0.064990992496236119f, - 0.064607698637598646f, - 0.064224402403521202f, 0.063841103808096086f, 0.063457802865415636f, - 0.063074499589573618f, - 0.062691193994662109f, 0.062307886094775049f, 0.061924575904005130f, - 0.061541263436445129f, - 0.061157948706189229f, 0.060774631727329942f, 0.060391312513961619f, - 0.060007991080177375f, - 0.059624667440070382f, 0.059241341607735261f, 0.058858013597264912f, - 0.058474683422754095f, - 0.058091351098295878f, 0.057708016637985186f, 0.057324680055915692f, - 0.056941341366181127f, - 0.056558000582876661f, 0.056174657720095743f, 0.055791312791933681f, - 0.055407965812484541f, - 0.055024616795842439f, 0.054641265756102911f, 0.054257912707359794f, - 0.053874557663708772f, - 0.053491200639244271f, 0.053107841648060788f, 0.052724480704254229f, - 0.052341117821918783f, - 0.051957753015150501f, 0.051574386298044173f, 0.051191017684694640f, - 0.050807647189198162f, - 0.050424274825649297f, 0.050040900608144430f, 0.049657524550778251f, - 0.049274146667647289f, - 0.048890766972846805f, 0.048507385480472134f, 0.048124002204620014f, - 0.047740617159385448f, - 0.047357230358865306f, 0.046973841817155179f, 0.046590451548350717f, - 0.046207059566548990f, - 0.045823665885845313f, 0.045440270520336883f, 0.045056873484119603f, - 0.044673474791289434f, - 0.044290074455943754f, 0.043906672492178188f, 0.043523268914090238f, - 0.043139863735776100f, - 0.042756456971332048f, 0.042373048634855741f, 0.041989638740443119f, - 0.041606227302191955f, - 0.041222814334198304f, 0.040839399850560058f, 0.040455983865373815f, - 0.040072566392736257f, - 0.039689147446745419f, 0.039305727041497644f, 0.038922305191091085f, - 0.038538881909622631f, - 0.038155457211189216f, 0.037772031109889144f, 0.037388603619819022f, - 0.037005174755077273f, - 0.036621744529761024f, 0.036238312957967478f, 0.035854880053795196f, - 0.035471445831341021f, - 0.035088010304703626f, 0.034704573487980395f, 0.034321135395268765f, - 0.033937696040667535f, - 0.033554255438273790f, 0.033170813602186440f, 0.032787370546502645f, - 0.032403926285321405f, - 0.032020480832740429f, 0.031637034202857461f, 0.031253586409771626f, - 0.030870137467580314f, - 0.030486687390382738f, 0.030103236192276818f, 0.029719783887360508f, - 0.029336330489733147f, - 0.028952876013492331f, 0.028569420472737472f, 0.028185963881566689f, - 0.027802506254078142f, - 0.027419047604371360f, 0.027035587946544135f, 0.026652127294696067f, - 0.026268665662925468f, - 0.025885203065330677f, 0.025501739516011413f, 0.025118275029065638f, - 0.024734809618593138f, - 0.024351343298691951f, 0.023967876083461924f, 0.023584407987001611f, - 0.023200939023409587f, - 0.022817469206785804f, 0.022433998551228459f, 0.022050527070837558f, - 0.021667054779711814f, - 0.021283581691949955f, 0.020900107821652084f, 0.020516633182916549f, - 0.020133157789843505f, - 0.019749681656531803f, 0.019366204797080316f, 0.018982727225589285f, - 0.018599248956157190f, - 0.018215770002884327f, 0.017832290379869671f, 0.017448810101212228f, - 0.017065329181012358f, - 0.016681847633368677f, 0.016298365472381587f, 0.015914882712149747f, - 0.015531399366773606f, - 0.015147915450352307f, 0.014764430976985016f, 0.014380945960772247f, - 0.013997460415812761f, - 0.013613974356207112f, 0.013230487796054543f, 0.012847000749454314f, - 0.012463513230507034f, - 0.012080025253311559f, 0.011696536831968529f, 0.011313047980577277f, - 0.010929558713237145f, - 0.010546069044048827f, 0.010162578987111254f, 0.009779088556525145f, - 0.009395597766389905f, - 0.009012106630804949f, 0.008628615163871038f, 0.008245123379687167f, - 0.007861631292354124f, - 0.007478138915970929f, 0.007094646264638386f, 0.006711153352455981f, - 0.006327660193523208f, - 0.005944166801940901f, 0.005560673191808128f, 0.005177179377225743f, - 0.004793685372293270f, - 0.004410191191110246f, 0.004026696847777542f, 0.003643202356394263f, - 0.003259707731061291f, - 0.002876212985878184f, 0.002492718134944503f, 0.002109223192361147f, - 0.001725728172227238f, - 0.001342233088643682f, 0.000958737955710053f, 0.000575242787525925f, - 0.000191747598192208f -}; - -/** - * @} end of DCT4_IDCT4_Table group - */ - -/** - * @addtogroup DCT4_IDCT4 - * @{ - */ - -/** - * @brief Initialization function for the floating-point DCT4/IDCT4. - * @param[in,out] *S points to an instance of floating-point DCT4/IDCT4 structure. - * @param[in] *S_RFFT points to an instance of floating-point RFFT/RIFFT structure. - * @param[in] *S_CFFT points to an instance of floating-point CFFT/CIFFT structure. - * @param[in] N length of the DCT4. - * @param[in] Nby2 half of the length of the DCT4. - * @param[in] normalize normalizing factor. - * @return arm_status function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if fftLenReal is not a supported transform length. - * \par Normalizing factor: - * The normalizing factor is sqrt(2/N), which depends on the size of transform N. - * Floating-point normalizing factors are mentioned in the table below for different DCT sizes: - * \image html dct4NormalizingF32Table.gif - */ - -arm_status arm_dct4_init_f32( - arm_dct4_instance_f32 * S, - arm_rfft_instance_f32 * S_RFFT, - arm_cfft_radix4_instance_f32 * S_CFFT, - uint16_t N, - uint16_t Nby2, - float32_t normalize) -{ - /* Initialize the default arm status */ - arm_status status = ARM_MATH_SUCCESS; - - /* Initializing the pointer array with the weight table base addresses of different lengths */ - float32_t *twiddlePtr[4] = - { (float32_t *) Weights_128, (float32_t *) Weights_512, - (float32_t *) Weights_2048, (float32_t *) Weights_8192 - }; - - /* Initializing the pointer array with the cos factor table base addresses of different lengths */ - float32_t *pCosFactor[4] = - { (float32_t *) cos_factors_128, (float32_t *) cos_factors_512, - (float32_t *) cos_factors_2048, (float32_t *) cos_factors_8192 - }; - - /* Initialize the DCT4 length */ - S->N = N; - - /* Initialize the half of DCT4 length */ - S->Nby2 = Nby2; - - /* Initialize the DCT4 Normalizing factor */ - S->normalize = normalize; - - /* Initialize Real FFT Instance */ - S->pRfft = S_RFFT; - - /* Initialize Complex FFT Instance */ - S->pCfft = S_CFFT; - - switch (N) - { - /* Initialize the table modifier values */ - case 8192U: - S->pTwiddle = twiddlePtr[3]; - S->pCosFactor = pCosFactor[3]; - break; - case 2048U: - S->pTwiddle = twiddlePtr[2]; - S->pCosFactor = pCosFactor[2]; - break; - case 512U: - S->pTwiddle = twiddlePtr[1]; - S->pCosFactor = pCosFactor[1]; - break; - case 128U: - S->pTwiddle = twiddlePtr[0]; - S->pCosFactor = pCosFactor[0]; - break; - default: - status = ARM_MATH_ARGUMENT_ERROR; - } - - /* Initialize the RFFT/RIFFT */ - arm_rfft_init_f32(S->pRfft, S->pCfft, S->N, 0U, 1U); - - /* return the status of DCT4 Init function */ - return (status); -} - -/** - * @} end of DCT4_IDCT4 group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_dct4_init_q15.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_dct4_init_q15.c deleted file mode 100644 index e57541c..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_dct4_init_q15.c +++ /dev/null @@ -1,4280 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_dct4_init_q15.c - * Description: Initialization function of DCT-4 & IDCT4 Q15 - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup DCT4_IDCT4 - */ - -/** - * @addtogroup DCT4_IDCT4_Table DCT Type IV Tables - * @{ - */ - -/* -* @brief Weights Table -*/ - -/** - * \par - * Weights tables are generated using the formula :
weights[n] = e^(-j*n*pi/(2*N))
- * \par - * C command to generate the table - *
- * for(i = 0; i< N; i++)
- * {
- *   weights[2*i]= cos(i*c);
- *   weights[(2*i)+1]= -sin(i * c);
- * } 
- * \par - * where N is the Number of weights to be calculated and c is pi/(2*N) - * \par - * Converted the output to q15 format by multiplying with 2^31 and saturated if required. - * \par - * In the tables below the real and imaginary values are placed alternatively, hence the - * array length is 2*N. - */ - -static const q15_t ALIGN4 WeightsQ15_128[256] = { - (q15_t)0x7fff, (q15_t)0x0, (q15_t)0x7ffd, (q15_t)0xfe6e, (q15_t)0x7ff6, (q15_t)0xfcdc, (q15_t)0x7fe9, (q15_t)0xfb4a, - (q15_t)0x7fd8, (q15_t)0xf9b9, (q15_t)0x7fc2, (q15_t)0xf827, (q15_t)0x7fa7, (q15_t)0xf696, (q15_t)0x7f87, (q15_t)0xf505, - (q15_t)0x7f62, (q15_t)0xf375, (q15_t)0x7f38, (q15_t)0xf1e5, (q15_t)0x7f09, (q15_t)0xf055, (q15_t)0x7ed5, (q15_t)0xeec7, - (q15_t)0x7e9d, (q15_t)0xed38, (q15_t)0x7e5f, (q15_t)0xebab, (q15_t)0x7e1d, (q15_t)0xea1e, (q15_t)0x7dd6, (q15_t)0xe893, - (q15_t)0x7d8a, (q15_t)0xe708, (q15_t)0x7d39, (q15_t)0xe57e, (q15_t)0x7ce3, (q15_t)0xe3f5, (q15_t)0x7c89, (q15_t)0xe26d, - (q15_t)0x7c29, (q15_t)0xe0e7, (q15_t)0x7bc5, (q15_t)0xdf61, (q15_t)0x7b5d, (q15_t)0xdddd, (q15_t)0x7aef, (q15_t)0xdc5a, - (q15_t)0x7a7d, (q15_t)0xdad8, (q15_t)0x7a05, (q15_t)0xd958, (q15_t)0x798a, (q15_t)0xd7da, (q15_t)0x7909, (q15_t)0xd65d, - (q15_t)0x7884, (q15_t)0xd4e1, (q15_t)0x77fa, (q15_t)0xd368, (q15_t)0x776c, (q15_t)0xd1ef, (q15_t)0x76d9, (q15_t)0xd079, - (q15_t)0x7641, (q15_t)0xcf05, (q15_t)0x75a5, (q15_t)0xcd92, (q15_t)0x7504, (q15_t)0xcc22, (q15_t)0x745f, (q15_t)0xcab3, - (q15_t)0x73b5, (q15_t)0xc946, (q15_t)0x7307, (q15_t)0xc7dc, (q15_t)0x7255, (q15_t)0xc674, (q15_t)0x719e, (q15_t)0xc50e, - (q15_t)0x70e2, (q15_t)0xc3aa, (q15_t)0x7023, (q15_t)0xc248, (q15_t)0x6f5f, (q15_t)0xc0e9, (q15_t)0x6e96, (q15_t)0xbf8d, - (q15_t)0x6dca, (q15_t)0xbe32, (q15_t)0x6cf9, (q15_t)0xbcdb, (q15_t)0x6c24, (q15_t)0xbb86, (q15_t)0x6b4a, (q15_t)0xba33, - (q15_t)0x6a6d, (q15_t)0xb8e4, (q15_t)0x698c, (q15_t)0xb797, (q15_t)0x68a6, (q15_t)0xb64c, (q15_t)0x67bd, (q15_t)0xb505, - (q15_t)0x66cf, (q15_t)0xb3c1, (q15_t)0x65dd, (q15_t)0xb27f, (q15_t)0x64e8, (q15_t)0xb141, (q15_t)0x63ef, (q15_t)0xb005, - (q15_t)0x62f2, (q15_t)0xaecd, (q15_t)0x61f1, (q15_t)0xad97, (q15_t)0x60ec, (q15_t)0xac65, (q15_t)0x5fe3, (q15_t)0xab36, - (q15_t)0x5ed7, (q15_t)0xaa0b, (q15_t)0x5dc7, (q15_t)0xa8e3, (q15_t)0x5cb4, (q15_t)0xa7be, (q15_t)0x5b9d, (q15_t)0xa69c, - (q15_t)0x5a82, (q15_t)0xa57e, (q15_t)0x5964, (q15_t)0xa463, (q15_t)0x5842, (q15_t)0xa34c, (q15_t)0x571d, (q15_t)0xa239, - (q15_t)0x55f5, (q15_t)0xa129, (q15_t)0x54ca, (q15_t)0xa01d, (q15_t)0x539b, (q15_t)0x9f14, (q15_t)0x5269, (q15_t)0x9e0f, - (q15_t)0x5133, (q15_t)0x9d0e, (q15_t)0x4ffb, (q15_t)0x9c11, (q15_t)0x4ebf, (q15_t)0x9b18, (q15_t)0x4d81, (q15_t)0x9a23, - (q15_t)0x4c3f, (q15_t)0x9931, (q15_t)0x4afb, (q15_t)0x9843, (q15_t)0x49b4, (q15_t)0x975a, (q15_t)0x4869, (q15_t)0x9674, - (q15_t)0x471c, (q15_t)0x9593, (q15_t)0x45cd, (q15_t)0x94b6, (q15_t)0x447a, (q15_t)0x93dc, (q15_t)0x4325, (q15_t)0x9307, - (q15_t)0x41ce, (q15_t)0x9236, (q15_t)0x4073, (q15_t)0x916a, (q15_t)0x3f17, (q15_t)0x90a1, (q15_t)0x3db8, (q15_t)0x8fdd, - (q15_t)0x3c56, (q15_t)0x8f1e, (q15_t)0x3af2, (q15_t)0x8e62, (q15_t)0x398c, (q15_t)0x8dab, (q15_t)0x3824, (q15_t)0x8cf9, - (q15_t)0x36ba, (q15_t)0x8c4b, (q15_t)0x354d, (q15_t)0x8ba1, (q15_t)0x33de, (q15_t)0x8afc, (q15_t)0x326e, (q15_t)0x8a5b, - (q15_t)0x30fb, (q15_t)0x89bf, (q15_t)0x2f87, (q15_t)0x8927, (q15_t)0x2e11, (q15_t)0x8894, (q15_t)0x2c98, (q15_t)0x8806, - (q15_t)0x2b1f, (q15_t)0x877c, (q15_t)0x29a3, (q15_t)0x86f7, (q15_t)0x2826, (q15_t)0x8676, (q15_t)0x26a8, (q15_t)0x85fb, - (q15_t)0x2528, (q15_t)0x8583, (q15_t)0x23a6, (q15_t)0x8511, (q15_t)0x2223, (q15_t)0x84a3, (q15_t)0x209f, (q15_t)0x843b, - (q15_t)0x1f19, (q15_t)0x83d7, (q15_t)0x1d93, (q15_t)0x8377, (q15_t)0x1c0b, (q15_t)0x831d, (q15_t)0x1a82, (q15_t)0x82c7, - (q15_t)0x18f8, (q15_t)0x8276, (q15_t)0x176d, (q15_t)0x822a, (q15_t)0x15e2, (q15_t)0x81e3, (q15_t)0x1455, (q15_t)0x81a1, - (q15_t)0x12c8, (q15_t)0x8163, (q15_t)0x1139, (q15_t)0x812b, (q15_t)0xfab, (q15_t)0x80f7, (q15_t)0xe1b, (q15_t)0x80c8, - (q15_t)0xc8b, (q15_t)0x809e, (q15_t)0xafb, (q15_t)0x8079, (q15_t)0x96a, (q15_t)0x8059, (q15_t)0x7d9, (q15_t)0x803e, - (q15_t)0x647, (q15_t)0x8028, (q15_t)0x4b6, (q15_t)0x8017, (q15_t)0x324, (q15_t)0x800a, (q15_t)0x192, (q15_t)0x8003 -}; - -static const q15_t ALIGN4 WeightsQ15_512[1024] = { - (q15_t)0x7fff, (q15_t)0x0, (q15_t)0x7fff, (q15_t)0xff9c, (q15_t)0x7fff, (q15_t)0xff37, (q15_t)0x7ffe, (q15_t)0xfed3, - (q15_t)0x7ffd, (q15_t)0xfe6e, (q15_t)0x7ffc, (q15_t)0xfe0a, (q15_t)0x7ffa, (q15_t)0xfda5, (q15_t)0x7ff8, (q15_t)0xfd41, - (q15_t)0x7ff6, (q15_t)0xfcdc, (q15_t)0x7ff3, (q15_t)0xfc78, (q15_t)0x7ff0, (q15_t)0xfc13, (q15_t)0x7fed, (q15_t)0xfbaf, - (q15_t)0x7fe9, (q15_t)0xfb4a, (q15_t)0x7fe5, (q15_t)0xfae6, (q15_t)0x7fe1, (q15_t)0xfa81, (q15_t)0x7fdd, (q15_t)0xfa1d, - (q15_t)0x7fd8, (q15_t)0xf9b9, (q15_t)0x7fd3, (q15_t)0xf954, (q15_t)0x7fce, (q15_t)0xf8f0, (q15_t)0x7fc8, (q15_t)0xf88b, - (q15_t)0x7fc2, (q15_t)0xf827, (q15_t)0x7fbc, (q15_t)0xf7c3, (q15_t)0x7fb5, (q15_t)0xf75e, (q15_t)0x7fae, (q15_t)0xf6fa, - (q15_t)0x7fa7, (q15_t)0xf696, (q15_t)0x7f9f, (q15_t)0xf632, (q15_t)0x7f97, (q15_t)0xf5cd, (q15_t)0x7f8f, (q15_t)0xf569, - (q15_t)0x7f87, (q15_t)0xf505, (q15_t)0x7f7e, (q15_t)0xf4a1, (q15_t)0x7f75, (q15_t)0xf43d, (q15_t)0x7f6b, (q15_t)0xf3d9, - (q15_t)0x7f62, (q15_t)0xf375, (q15_t)0x7f58, (q15_t)0xf311, (q15_t)0x7f4d, (q15_t)0xf2ad, (q15_t)0x7f43, (q15_t)0xf249, - (q15_t)0x7f38, (q15_t)0xf1e5, (q15_t)0x7f2d, (q15_t)0xf181, (q15_t)0x7f21, (q15_t)0xf11d, (q15_t)0x7f15, (q15_t)0xf0b9, - (q15_t)0x7f09, (q15_t)0xf055, (q15_t)0x7efd, (q15_t)0xeff2, (q15_t)0x7ef0, (q15_t)0xef8e, (q15_t)0x7ee3, (q15_t)0xef2a, - (q15_t)0x7ed5, (q15_t)0xeec7, (q15_t)0x7ec8, (q15_t)0xee63, (q15_t)0x7eba, (q15_t)0xedff, (q15_t)0x7eab, (q15_t)0xed9c, - (q15_t)0x7e9d, (q15_t)0xed38, (q15_t)0x7e8e, (q15_t)0xecd5, (q15_t)0x7e7f, (q15_t)0xec72, (q15_t)0x7e6f, (q15_t)0xec0e, - (q15_t)0x7e5f, (q15_t)0xebab, (q15_t)0x7e4f, (q15_t)0xeb48, (q15_t)0x7e3f, (q15_t)0xeae5, (q15_t)0x7e2e, (q15_t)0xea81, - (q15_t)0x7e1d, (q15_t)0xea1e, (q15_t)0x7e0c, (q15_t)0xe9bb, (q15_t)0x7dfa, (q15_t)0xe958, (q15_t)0x7de8, (q15_t)0xe8f6, - (q15_t)0x7dd6, (q15_t)0xe893, (q15_t)0x7dc3, (q15_t)0xe830, (q15_t)0x7db0, (q15_t)0xe7cd, (q15_t)0x7d9d, (q15_t)0xe76a, - (q15_t)0x7d8a, (q15_t)0xe708, (q15_t)0x7d76, (q15_t)0xe6a5, (q15_t)0x7d62, (q15_t)0xe643, (q15_t)0x7d4e, (q15_t)0xe5e0, - (q15_t)0x7d39, (q15_t)0xe57e, (q15_t)0x7d24, (q15_t)0xe51c, (q15_t)0x7d0f, (q15_t)0xe4b9, (q15_t)0x7cf9, (q15_t)0xe457, - (q15_t)0x7ce3, (q15_t)0xe3f5, (q15_t)0x7ccd, (q15_t)0xe393, (q15_t)0x7cb7, (q15_t)0xe331, (q15_t)0x7ca0, (q15_t)0xe2cf, - (q15_t)0x7c89, (q15_t)0xe26d, (q15_t)0x7c71, (q15_t)0xe20b, (q15_t)0x7c5a, (q15_t)0xe1aa, (q15_t)0x7c42, (q15_t)0xe148, - (q15_t)0x7c29, (q15_t)0xe0e7, (q15_t)0x7c11, (q15_t)0xe085, (q15_t)0x7bf8, (q15_t)0xe024, (q15_t)0x7bdf, (q15_t)0xdfc2, - (q15_t)0x7bc5, (q15_t)0xdf61, (q15_t)0x7bac, (q15_t)0xdf00, (q15_t)0x7b92, (q15_t)0xde9f, (q15_t)0x7b77, (q15_t)0xde3e, - (q15_t)0x7b5d, (q15_t)0xdddd, (q15_t)0x7b42, (q15_t)0xdd7c, (q15_t)0x7b26, (q15_t)0xdd1b, (q15_t)0x7b0b, (q15_t)0xdcbb, - (q15_t)0x7aef, (q15_t)0xdc5a, (q15_t)0x7ad3, (q15_t)0xdbf9, (q15_t)0x7ab6, (q15_t)0xdb99, (q15_t)0x7a9a, (q15_t)0xdb39, - (q15_t)0x7a7d, (q15_t)0xdad8, (q15_t)0x7a5f, (q15_t)0xda78, (q15_t)0x7a42, (q15_t)0xda18, (q15_t)0x7a24, (q15_t)0xd9b8, - (q15_t)0x7a05, (q15_t)0xd958, (q15_t)0x79e7, (q15_t)0xd8f9, (q15_t)0x79c8, (q15_t)0xd899, (q15_t)0x79a9, (q15_t)0xd839, - (q15_t)0x798a, (q15_t)0xd7da, (q15_t)0x796a, (q15_t)0xd77a, (q15_t)0x794a, (q15_t)0xd71b, (q15_t)0x792a, (q15_t)0xd6bc, - (q15_t)0x7909, (q15_t)0xd65d, (q15_t)0x78e8, (q15_t)0xd5fe, (q15_t)0x78c7, (q15_t)0xd59f, (q15_t)0x78a6, (q15_t)0xd540, - (q15_t)0x7884, (q15_t)0xd4e1, (q15_t)0x7862, (q15_t)0xd483, (q15_t)0x7840, (q15_t)0xd424, (q15_t)0x781d, (q15_t)0xd3c6, - (q15_t)0x77fa, (q15_t)0xd368, (q15_t)0x77d7, (q15_t)0xd309, (q15_t)0x77b4, (q15_t)0xd2ab, (q15_t)0x7790, (q15_t)0xd24d, - (q15_t)0x776c, (q15_t)0xd1ef, (q15_t)0x7747, (q15_t)0xd192, (q15_t)0x7723, (q15_t)0xd134, (q15_t)0x76fe, (q15_t)0xd0d7, - (q15_t)0x76d9, (q15_t)0xd079, (q15_t)0x76b3, (q15_t)0xd01c, (q15_t)0x768e, (q15_t)0xcfbf, (q15_t)0x7668, (q15_t)0xcf62, - (q15_t)0x7641, (q15_t)0xcf05, (q15_t)0x761b, (q15_t)0xcea8, (q15_t)0x75f4, (q15_t)0xce4b, (q15_t)0x75cc, (q15_t)0xcdef, - (q15_t)0x75a5, (q15_t)0xcd92, (q15_t)0x757d, (q15_t)0xcd36, (q15_t)0x7555, (q15_t)0xccda, (q15_t)0x752d, (q15_t)0xcc7e, - (q15_t)0x7504, (q15_t)0xcc22, (q15_t)0x74db, (q15_t)0xcbc6, (q15_t)0x74b2, (q15_t)0xcb6a, (q15_t)0x7489, (q15_t)0xcb0e, - (q15_t)0x745f, (q15_t)0xcab3, (q15_t)0x7435, (q15_t)0xca58, (q15_t)0x740b, (q15_t)0xc9fc, (q15_t)0x73e0, (q15_t)0xc9a1, - (q15_t)0x73b5, (q15_t)0xc946, (q15_t)0x738a, (q15_t)0xc8ec, (q15_t)0x735f, (q15_t)0xc891, (q15_t)0x7333, (q15_t)0xc836, - (q15_t)0x7307, (q15_t)0xc7dc, (q15_t)0x72db, (q15_t)0xc782, (q15_t)0x72af, (q15_t)0xc728, (q15_t)0x7282, (q15_t)0xc6ce, - (q15_t)0x7255, (q15_t)0xc674, (q15_t)0x7227, (q15_t)0xc61a, (q15_t)0x71fa, (q15_t)0xc5c0, (q15_t)0x71cc, (q15_t)0xc567, - (q15_t)0x719e, (q15_t)0xc50e, (q15_t)0x716f, (q15_t)0xc4b4, (q15_t)0x7141, (q15_t)0xc45b, (q15_t)0x7112, (q15_t)0xc403, - (q15_t)0x70e2, (q15_t)0xc3aa, (q15_t)0x70b3, (q15_t)0xc351, (q15_t)0x7083, (q15_t)0xc2f9, (q15_t)0x7053, (q15_t)0xc2a0, - (q15_t)0x7023, (q15_t)0xc248, (q15_t)0x6ff2, (q15_t)0xc1f0, (q15_t)0x6fc1, (q15_t)0xc198, (q15_t)0x6f90, (q15_t)0xc141, - (q15_t)0x6f5f, (q15_t)0xc0e9, (q15_t)0x6f2d, (q15_t)0xc092, (q15_t)0x6efb, (q15_t)0xc03b, (q15_t)0x6ec9, (q15_t)0xbfe3, - (q15_t)0x6e96, (q15_t)0xbf8d, (q15_t)0x6e63, (q15_t)0xbf36, (q15_t)0x6e30, (q15_t)0xbedf, (q15_t)0x6dfd, (q15_t)0xbe89, - (q15_t)0x6dca, (q15_t)0xbe32, (q15_t)0x6d96, (q15_t)0xbddc, (q15_t)0x6d62, (q15_t)0xbd86, (q15_t)0x6d2d, (q15_t)0xbd30, - (q15_t)0x6cf9, (q15_t)0xbcdb, (q15_t)0x6cc4, (q15_t)0xbc85, (q15_t)0x6c8f, (q15_t)0xbc30, (q15_t)0x6c59, (q15_t)0xbbdb, - (q15_t)0x6c24, (q15_t)0xbb86, (q15_t)0x6bee, (q15_t)0xbb31, (q15_t)0x6bb8, (q15_t)0xbadc, (q15_t)0x6b81, (q15_t)0xba88, - (q15_t)0x6b4a, (q15_t)0xba33, (q15_t)0x6b13, (q15_t)0xb9df, (q15_t)0x6adc, (q15_t)0xb98b, (q15_t)0x6aa5, (q15_t)0xb937, - (q15_t)0x6a6d, (q15_t)0xb8e4, (q15_t)0x6a35, (q15_t)0xb890, (q15_t)0x69fd, (q15_t)0xb83d, (q15_t)0x69c4, (q15_t)0xb7ea, - (q15_t)0x698c, (q15_t)0xb797, (q15_t)0x6953, (q15_t)0xb744, (q15_t)0x6919, (q15_t)0xb6f1, (q15_t)0x68e0, (q15_t)0xb69f, - (q15_t)0x68a6, (q15_t)0xb64c, (q15_t)0x686c, (q15_t)0xb5fa, (q15_t)0x6832, (q15_t)0xb5a8, (q15_t)0x67f7, (q15_t)0xb557, - (q15_t)0x67bd, (q15_t)0xb505, (q15_t)0x6782, (q15_t)0xb4b4, (q15_t)0x6746, (q15_t)0xb462, (q15_t)0x670b, (q15_t)0xb411, - (q15_t)0x66cf, (q15_t)0xb3c1, (q15_t)0x6693, (q15_t)0xb370, (q15_t)0x6657, (q15_t)0xb31f, (q15_t)0x661a, (q15_t)0xb2cf, - (q15_t)0x65dd, (q15_t)0xb27f, (q15_t)0x65a0, (q15_t)0xb22f, (q15_t)0x6563, (q15_t)0xb1df, (q15_t)0x6526, (q15_t)0xb190, - (q15_t)0x64e8, (q15_t)0xb141, (q15_t)0x64aa, (q15_t)0xb0f1, (q15_t)0x646c, (q15_t)0xb0a2, (q15_t)0x642d, (q15_t)0xb054, - (q15_t)0x63ef, (q15_t)0xb005, (q15_t)0x63b0, (q15_t)0xafb7, (q15_t)0x6371, (q15_t)0xaf69, (q15_t)0x6331, (q15_t)0xaf1b, - (q15_t)0x62f2, (q15_t)0xaecd, (q15_t)0x62b2, (q15_t)0xae7f, (q15_t)0x6271, (q15_t)0xae32, (q15_t)0x6231, (q15_t)0xade4, - (q15_t)0x61f1, (q15_t)0xad97, (q15_t)0x61b0, (q15_t)0xad4b, (q15_t)0x616f, (q15_t)0xacfe, (q15_t)0x612d, (q15_t)0xacb2, - (q15_t)0x60ec, (q15_t)0xac65, (q15_t)0x60aa, (q15_t)0xac19, (q15_t)0x6068, (q15_t)0xabcd, (q15_t)0x6026, (q15_t)0xab82, - (q15_t)0x5fe3, (q15_t)0xab36, (q15_t)0x5fa0, (q15_t)0xaaeb, (q15_t)0x5f5e, (q15_t)0xaaa0, (q15_t)0x5f1a, (q15_t)0xaa55, - (q15_t)0x5ed7, (q15_t)0xaa0b, (q15_t)0x5e93, (q15_t)0xa9c0, (q15_t)0x5e50, (q15_t)0xa976, (q15_t)0x5e0b, (q15_t)0xa92c, - (q15_t)0x5dc7, (q15_t)0xa8e3, (q15_t)0x5d83, (q15_t)0xa899, (q15_t)0x5d3e, (q15_t)0xa850, (q15_t)0x5cf9, (q15_t)0xa807, - (q15_t)0x5cb4, (q15_t)0xa7be, (q15_t)0x5c6e, (q15_t)0xa775, (q15_t)0x5c29, (q15_t)0xa72c, (q15_t)0x5be3, (q15_t)0xa6e4, - (q15_t)0x5b9d, (q15_t)0xa69c, (q15_t)0x5b56, (q15_t)0xa654, (q15_t)0x5b10, (q15_t)0xa60d, (q15_t)0x5ac9, (q15_t)0xa5c5, - (q15_t)0x5a82, (q15_t)0xa57e, (q15_t)0x5a3b, (q15_t)0xa537, (q15_t)0x59f3, (q15_t)0xa4f0, (q15_t)0x59ac, (q15_t)0xa4aa, - (q15_t)0x5964, (q15_t)0xa463, (q15_t)0x591c, (q15_t)0xa41d, (q15_t)0x58d4, (q15_t)0xa3d7, (q15_t)0x588b, (q15_t)0xa392, - (q15_t)0x5842, (q15_t)0xa34c, (q15_t)0x57f9, (q15_t)0xa307, (q15_t)0x57b0, (q15_t)0xa2c2, (q15_t)0x5767, (q15_t)0xa27d, - (q15_t)0x571d, (q15_t)0xa239, (q15_t)0x56d4, (q15_t)0xa1f5, (q15_t)0x568a, (q15_t)0xa1b0, (q15_t)0x5640, (q15_t)0xa16d, - (q15_t)0x55f5, (q15_t)0xa129, (q15_t)0x55ab, (q15_t)0xa0e6, (q15_t)0x5560, (q15_t)0xa0a2, (q15_t)0x5515, (q15_t)0xa060, - (q15_t)0x54ca, (q15_t)0xa01d, (q15_t)0x547e, (q15_t)0x9fda, (q15_t)0x5433, (q15_t)0x9f98, (q15_t)0x53e7, (q15_t)0x9f56, - (q15_t)0x539b, (q15_t)0x9f14, (q15_t)0x534e, (q15_t)0x9ed3, (q15_t)0x5302, (q15_t)0x9e91, (q15_t)0x52b5, (q15_t)0x9e50, - (q15_t)0x5269, (q15_t)0x9e0f, (q15_t)0x521c, (q15_t)0x9dcf, (q15_t)0x51ce, (q15_t)0x9d8f, (q15_t)0x5181, (q15_t)0x9d4e, - (q15_t)0x5133, (q15_t)0x9d0e, (q15_t)0x50e5, (q15_t)0x9ccf, (q15_t)0x5097, (q15_t)0x9c8f, (q15_t)0x5049, (q15_t)0x9c50, - (q15_t)0x4ffb, (q15_t)0x9c11, (q15_t)0x4fac, (q15_t)0x9bd3, (q15_t)0x4f5e, (q15_t)0x9b94, (q15_t)0x4f0f, (q15_t)0x9b56, - (q15_t)0x4ebf, (q15_t)0x9b18, (q15_t)0x4e70, (q15_t)0x9ada, (q15_t)0x4e21, (q15_t)0x9a9d, (q15_t)0x4dd1, (q15_t)0x9a60, - (q15_t)0x4d81, (q15_t)0x9a23, (q15_t)0x4d31, (q15_t)0x99e6, (q15_t)0x4ce1, (q15_t)0x99a9, (q15_t)0x4c90, (q15_t)0x996d, - (q15_t)0x4c3f, (q15_t)0x9931, (q15_t)0x4bef, (q15_t)0x98f5, (q15_t)0x4b9e, (q15_t)0x98ba, (q15_t)0x4b4c, (q15_t)0x987e, - (q15_t)0x4afb, (q15_t)0x9843, (q15_t)0x4aa9, (q15_t)0x9809, (q15_t)0x4a58, (q15_t)0x97ce, (q15_t)0x4a06, (q15_t)0x9794, - (q15_t)0x49b4, (q15_t)0x975a, (q15_t)0x4961, (q15_t)0x9720, (q15_t)0x490f, (q15_t)0x96e7, (q15_t)0x48bc, (q15_t)0x96ad, - (q15_t)0x4869, (q15_t)0x9674, (q15_t)0x4816, (q15_t)0x963c, (q15_t)0x47c3, (q15_t)0x9603, (q15_t)0x4770, (q15_t)0x95cb, - (q15_t)0x471c, (q15_t)0x9593, (q15_t)0x46c9, (q15_t)0x955b, (q15_t)0x4675, (q15_t)0x9524, (q15_t)0x4621, (q15_t)0x94ed, - (q15_t)0x45cd, (q15_t)0x94b6, (q15_t)0x4578, (q15_t)0x947f, (q15_t)0x4524, (q15_t)0x9448, (q15_t)0x44cf, (q15_t)0x9412, - (q15_t)0x447a, (q15_t)0x93dc, (q15_t)0x4425, (q15_t)0x93a7, (q15_t)0x43d0, (q15_t)0x9371, (q15_t)0x437b, (q15_t)0x933c, - (q15_t)0x4325, (q15_t)0x9307, (q15_t)0x42d0, (q15_t)0x92d3, (q15_t)0x427a, (q15_t)0x929e, (q15_t)0x4224, (q15_t)0x926a, - (q15_t)0x41ce, (q15_t)0x9236, (q15_t)0x4177, (q15_t)0x9203, (q15_t)0x4121, (q15_t)0x91d0, (q15_t)0x40ca, (q15_t)0x919d, - (q15_t)0x4073, (q15_t)0x916a, (q15_t)0x401d, (q15_t)0x9137, (q15_t)0x3fc5, (q15_t)0x9105, (q15_t)0x3f6e, (q15_t)0x90d3, - (q15_t)0x3f17, (q15_t)0x90a1, (q15_t)0x3ebf, (q15_t)0x9070, (q15_t)0x3e68, (q15_t)0x903f, (q15_t)0x3e10, (q15_t)0x900e, - (q15_t)0x3db8, (q15_t)0x8fdd, (q15_t)0x3d60, (q15_t)0x8fad, (q15_t)0x3d07, (q15_t)0x8f7d, (q15_t)0x3caf, (q15_t)0x8f4d, - (q15_t)0x3c56, (q15_t)0x8f1e, (q15_t)0x3bfd, (q15_t)0x8eee, (q15_t)0x3ba5, (q15_t)0x8ebf, (q15_t)0x3b4c, (q15_t)0x8e91, - (q15_t)0x3af2, (q15_t)0x8e62, (q15_t)0x3a99, (q15_t)0x8e34, (q15_t)0x3a40, (q15_t)0x8e06, (q15_t)0x39e6, (q15_t)0x8dd9, - (q15_t)0x398c, (q15_t)0x8dab, (q15_t)0x3932, (q15_t)0x8d7e, (q15_t)0x38d8, (q15_t)0x8d51, (q15_t)0x387e, (q15_t)0x8d25, - (q15_t)0x3824, (q15_t)0x8cf9, (q15_t)0x37ca, (q15_t)0x8ccd, (q15_t)0x376f, (q15_t)0x8ca1, (q15_t)0x3714, (q15_t)0x8c76, - (q15_t)0x36ba, (q15_t)0x8c4b, (q15_t)0x365f, (q15_t)0x8c20, (q15_t)0x3604, (q15_t)0x8bf5, (q15_t)0x35a8, (q15_t)0x8bcb, - (q15_t)0x354d, (q15_t)0x8ba1, (q15_t)0x34f2, (q15_t)0x8b77, (q15_t)0x3496, (q15_t)0x8b4e, (q15_t)0x343a, (q15_t)0x8b25, - (q15_t)0x33de, (q15_t)0x8afc, (q15_t)0x3382, (q15_t)0x8ad3, (q15_t)0x3326, (q15_t)0x8aab, (q15_t)0x32ca, (q15_t)0x8a83, - (q15_t)0x326e, (q15_t)0x8a5b, (q15_t)0x3211, (q15_t)0x8a34, (q15_t)0x31b5, (q15_t)0x8a0c, (q15_t)0x3158, (q15_t)0x89e5, - (q15_t)0x30fb, (q15_t)0x89bf, (q15_t)0x309e, (q15_t)0x8998, (q15_t)0x3041, (q15_t)0x8972, (q15_t)0x2fe4, (q15_t)0x894d, - (q15_t)0x2f87, (q15_t)0x8927, (q15_t)0x2f29, (q15_t)0x8902, (q15_t)0x2ecc, (q15_t)0x88dd, (q15_t)0x2e6e, (q15_t)0x88b9, - (q15_t)0x2e11, (q15_t)0x8894, (q15_t)0x2db3, (q15_t)0x8870, (q15_t)0x2d55, (q15_t)0x884c, (q15_t)0x2cf7, (q15_t)0x8829, - (q15_t)0x2c98, (q15_t)0x8806, (q15_t)0x2c3a, (q15_t)0x87e3, (q15_t)0x2bdc, (q15_t)0x87c0, (q15_t)0x2b7d, (q15_t)0x879e, - (q15_t)0x2b1f, (q15_t)0x877c, (q15_t)0x2ac0, (q15_t)0x875a, (q15_t)0x2a61, (q15_t)0x8739, (q15_t)0x2a02, (q15_t)0x8718, - (q15_t)0x29a3, (q15_t)0x86f7, (q15_t)0x2944, (q15_t)0x86d6, (q15_t)0x28e5, (q15_t)0x86b6, (q15_t)0x2886, (q15_t)0x8696, - (q15_t)0x2826, (q15_t)0x8676, (q15_t)0x27c7, (q15_t)0x8657, (q15_t)0x2767, (q15_t)0x8638, (q15_t)0x2707, (q15_t)0x8619, - (q15_t)0x26a8, (q15_t)0x85fb, (q15_t)0x2648, (q15_t)0x85dc, (q15_t)0x25e8, (q15_t)0x85be, (q15_t)0x2588, (q15_t)0x85a1, - (q15_t)0x2528, (q15_t)0x8583, (q15_t)0x24c7, (q15_t)0x8566, (q15_t)0x2467, (q15_t)0x854a, (q15_t)0x2407, (q15_t)0x852d, - (q15_t)0x23a6, (q15_t)0x8511, (q15_t)0x2345, (q15_t)0x84f5, (q15_t)0x22e5, (q15_t)0x84da, (q15_t)0x2284, (q15_t)0x84be, - (q15_t)0x2223, (q15_t)0x84a3, (q15_t)0x21c2, (q15_t)0x8489, (q15_t)0x2161, (q15_t)0x846e, (q15_t)0x2100, (q15_t)0x8454, - (q15_t)0x209f, (q15_t)0x843b, (q15_t)0x203e, (q15_t)0x8421, (q15_t)0x1fdc, (q15_t)0x8408, (q15_t)0x1f7b, (q15_t)0x83ef, - (q15_t)0x1f19, (q15_t)0x83d7, (q15_t)0x1eb8, (q15_t)0x83be, (q15_t)0x1e56, (q15_t)0x83a6, (q15_t)0x1df5, (q15_t)0x838f, - (q15_t)0x1d93, (q15_t)0x8377, (q15_t)0x1d31, (q15_t)0x8360, (q15_t)0x1ccf, (q15_t)0x8349, (q15_t)0x1c6d, (q15_t)0x8333, - (q15_t)0x1c0b, (q15_t)0x831d, (q15_t)0x1ba9, (q15_t)0x8307, (q15_t)0x1b47, (q15_t)0x82f1, (q15_t)0x1ae4, (q15_t)0x82dc, - (q15_t)0x1a82, (q15_t)0x82c7, (q15_t)0x1a20, (q15_t)0x82b2, (q15_t)0x19bd, (q15_t)0x829e, (q15_t)0x195b, (q15_t)0x828a, - (q15_t)0x18f8, (q15_t)0x8276, (q15_t)0x1896, (q15_t)0x8263, (q15_t)0x1833, (q15_t)0x8250, (q15_t)0x17d0, (q15_t)0x823d, - (q15_t)0x176d, (q15_t)0x822a, (q15_t)0x170a, (q15_t)0x8218, (q15_t)0x16a8, (q15_t)0x8206, (q15_t)0x1645, (q15_t)0x81f4, - (q15_t)0x15e2, (q15_t)0x81e3, (q15_t)0x157f, (q15_t)0x81d2, (q15_t)0x151b, (q15_t)0x81c1, (q15_t)0x14b8, (q15_t)0x81b1, - (q15_t)0x1455, (q15_t)0x81a1, (q15_t)0x13f2, (q15_t)0x8191, (q15_t)0x138e, (q15_t)0x8181, (q15_t)0x132b, (q15_t)0x8172, - (q15_t)0x12c8, (q15_t)0x8163, (q15_t)0x1264, (q15_t)0x8155, (q15_t)0x1201, (q15_t)0x8146, (q15_t)0x119d, (q15_t)0x8138, - (q15_t)0x1139, (q15_t)0x812b, (q15_t)0x10d6, (q15_t)0x811d, (q15_t)0x1072, (q15_t)0x8110, (q15_t)0x100e, (q15_t)0x8103, - (q15_t)0xfab, (q15_t)0x80f7, (q15_t)0xf47, (q15_t)0x80eb, (q15_t)0xee3, (q15_t)0x80df, (q15_t)0xe7f, (q15_t)0x80d3, - (q15_t)0xe1b, (q15_t)0x80c8, (q15_t)0xdb7, (q15_t)0x80bd, (q15_t)0xd53, (q15_t)0x80b3, (q15_t)0xcef, (q15_t)0x80a8, - (q15_t)0xc8b, (q15_t)0x809e, (q15_t)0xc27, (q15_t)0x8095, (q15_t)0xbc3, (q15_t)0x808b, (q15_t)0xb5f, (q15_t)0x8082, - (q15_t)0xafb, (q15_t)0x8079, (q15_t)0xa97, (q15_t)0x8071, (q15_t)0xa33, (q15_t)0x8069, (q15_t)0x9ce, (q15_t)0x8061, - (q15_t)0x96a, (q15_t)0x8059, (q15_t)0x906, (q15_t)0x8052, (q15_t)0x8a2, (q15_t)0x804b, (q15_t)0x83d, (q15_t)0x8044, - (q15_t)0x7d9, (q15_t)0x803e, (q15_t)0x775, (q15_t)0x8038, (q15_t)0x710, (q15_t)0x8032, (q15_t)0x6ac, (q15_t)0x802d, - (q15_t)0x647, (q15_t)0x8028, (q15_t)0x5e3, (q15_t)0x8023, (q15_t)0x57f, (q15_t)0x801f, (q15_t)0x51a, (q15_t)0x801b, - (q15_t)0x4b6, (q15_t)0x8017, (q15_t)0x451, (q15_t)0x8013, (q15_t)0x3ed, (q15_t)0x8010, (q15_t)0x388, (q15_t)0x800d, - (q15_t)0x324, (q15_t)0x800a, (q15_t)0x2bf, (q15_t)0x8008, (q15_t)0x25b, (q15_t)0x8006, (q15_t)0x1f6, (q15_t)0x8004, - (q15_t)0x192, (q15_t)0x8003, (q15_t)0x12d, (q15_t)0x8002, (q15_t)0xc9, (q15_t)0x8001, (q15_t)0x64, (q15_t)0x8001 -}; - -static const q15_t ALIGN4 WeightsQ15_2048[4096] = { - (q15_t)0x7fff, (q15_t)0x0, (q15_t)0x7fff, (q15_t)0xffe7, (q15_t)0x7fff, (q15_t)0xffce, (q15_t)0x7fff, (q15_t)0xffb5, - (q15_t)0x7fff, (q15_t)0xff9c, (q15_t)0x7fff, (q15_t)0xff83, (q15_t)0x7fff, (q15_t)0xff6a, (q15_t)0x7fff, (q15_t)0xff51, - (q15_t)0x7fff, (q15_t)0xff37, (q15_t)0x7fff, (q15_t)0xff1e, (q15_t)0x7fff, (q15_t)0xff05, (q15_t)0x7ffe, (q15_t)0xfeec, - (q15_t)0x7ffe, (q15_t)0xfed3, (q15_t)0x7ffe, (q15_t)0xfeba, (q15_t)0x7ffe, (q15_t)0xfea1, (q15_t)0x7ffd, (q15_t)0xfe88, - (q15_t)0x7ffd, (q15_t)0xfe6e, (q15_t)0x7ffd, (q15_t)0xfe55, (q15_t)0x7ffc, (q15_t)0xfe3c, (q15_t)0x7ffc, (q15_t)0xfe23, - (q15_t)0x7ffc, (q15_t)0xfe0a, (q15_t)0x7ffb, (q15_t)0xfdf1, (q15_t)0x7ffb, (q15_t)0xfdd8, (q15_t)0x7ffa, (q15_t)0xfdbe, - (q15_t)0x7ffa, (q15_t)0xfda5, (q15_t)0x7ff9, (q15_t)0xfd8c, (q15_t)0x7ff9, (q15_t)0xfd73, (q15_t)0x7ff8, (q15_t)0xfd5a, - (q15_t)0x7ff8, (q15_t)0xfd41, (q15_t)0x7ff7, (q15_t)0xfd28, (q15_t)0x7ff7, (q15_t)0xfd0f, (q15_t)0x7ff6, (q15_t)0xfcf5, - (q15_t)0x7ff6, (q15_t)0xfcdc, (q15_t)0x7ff5, (q15_t)0xfcc3, (q15_t)0x7ff4, (q15_t)0xfcaa, (q15_t)0x7ff4, (q15_t)0xfc91, - (q15_t)0x7ff3, (q15_t)0xfc78, (q15_t)0x7ff2, (q15_t)0xfc5f, (q15_t)0x7ff2, (q15_t)0xfc46, (q15_t)0x7ff1, (q15_t)0xfc2c, - (q15_t)0x7ff0, (q15_t)0xfc13, (q15_t)0x7fef, (q15_t)0xfbfa, (q15_t)0x7fee, (q15_t)0xfbe1, (q15_t)0x7fee, (q15_t)0xfbc8, - (q15_t)0x7fed, (q15_t)0xfbaf, (q15_t)0x7fec, (q15_t)0xfb96, (q15_t)0x7feb, (q15_t)0xfb7d, (q15_t)0x7fea, (q15_t)0xfb64, - (q15_t)0x7fe9, (q15_t)0xfb4a, (q15_t)0x7fe8, (q15_t)0xfb31, (q15_t)0x7fe7, (q15_t)0xfb18, (q15_t)0x7fe6, (q15_t)0xfaff, - (q15_t)0x7fe5, (q15_t)0xfae6, (q15_t)0x7fe4, (q15_t)0xfacd, (q15_t)0x7fe3, (q15_t)0xfab4, (q15_t)0x7fe2, (q15_t)0xfa9b, - (q15_t)0x7fe1, (q15_t)0xfa81, (q15_t)0x7fe0, (q15_t)0xfa68, (q15_t)0x7fdf, (q15_t)0xfa4f, (q15_t)0x7fde, (q15_t)0xfa36, - (q15_t)0x7fdd, (q15_t)0xfa1d, (q15_t)0x7fdc, (q15_t)0xfa04, (q15_t)0x7fda, (q15_t)0xf9eb, (q15_t)0x7fd9, (q15_t)0xf9d2, - (q15_t)0x7fd8, (q15_t)0xf9b9, (q15_t)0x7fd7, (q15_t)0xf9a0, (q15_t)0x7fd6, (q15_t)0xf986, (q15_t)0x7fd4, (q15_t)0xf96d, - (q15_t)0x7fd3, (q15_t)0xf954, (q15_t)0x7fd2, (q15_t)0xf93b, (q15_t)0x7fd0, (q15_t)0xf922, (q15_t)0x7fcf, (q15_t)0xf909, - (q15_t)0x7fce, (q15_t)0xf8f0, (q15_t)0x7fcc, (q15_t)0xf8d7, (q15_t)0x7fcb, (q15_t)0xf8be, (q15_t)0x7fc9, (q15_t)0xf8a5, - (q15_t)0x7fc8, (q15_t)0xf88b, (q15_t)0x7fc6, (q15_t)0xf872, (q15_t)0x7fc5, (q15_t)0xf859, (q15_t)0x7fc3, (q15_t)0xf840, - (q15_t)0x7fc2, (q15_t)0xf827, (q15_t)0x7fc0, (q15_t)0xf80e, (q15_t)0x7fbf, (q15_t)0xf7f5, (q15_t)0x7fbd, (q15_t)0xf7dc, - (q15_t)0x7fbc, (q15_t)0xf7c3, (q15_t)0x7fba, (q15_t)0xf7aa, (q15_t)0x7fb8, (q15_t)0xf791, (q15_t)0x7fb7, (q15_t)0xf778, - (q15_t)0x7fb5, (q15_t)0xf75e, (q15_t)0x7fb3, (q15_t)0xf745, (q15_t)0x7fb1, (q15_t)0xf72c, (q15_t)0x7fb0, (q15_t)0xf713, - (q15_t)0x7fae, (q15_t)0xf6fa, (q15_t)0x7fac, (q15_t)0xf6e1, (q15_t)0x7faa, (q15_t)0xf6c8, (q15_t)0x7fa9, (q15_t)0xf6af, - (q15_t)0x7fa7, (q15_t)0xf696, (q15_t)0x7fa5, (q15_t)0xf67d, (q15_t)0x7fa3, (q15_t)0xf664, (q15_t)0x7fa1, (q15_t)0xf64b, - (q15_t)0x7f9f, (q15_t)0xf632, (q15_t)0x7f9d, (q15_t)0xf619, (q15_t)0x7f9b, (q15_t)0xf600, (q15_t)0x7f99, (q15_t)0xf5e7, - (q15_t)0x7f97, (q15_t)0xf5cd, (q15_t)0x7f95, (q15_t)0xf5b4, (q15_t)0x7f93, (q15_t)0xf59b, (q15_t)0x7f91, (q15_t)0xf582, - (q15_t)0x7f8f, (q15_t)0xf569, (q15_t)0x7f8d, (q15_t)0xf550, (q15_t)0x7f8b, (q15_t)0xf537, (q15_t)0x7f89, (q15_t)0xf51e, - (q15_t)0x7f87, (q15_t)0xf505, (q15_t)0x7f85, (q15_t)0xf4ec, (q15_t)0x7f82, (q15_t)0xf4d3, (q15_t)0x7f80, (q15_t)0xf4ba, - (q15_t)0x7f7e, (q15_t)0xf4a1, (q15_t)0x7f7c, (q15_t)0xf488, (q15_t)0x7f79, (q15_t)0xf46f, (q15_t)0x7f77, (q15_t)0xf456, - (q15_t)0x7f75, (q15_t)0xf43d, (q15_t)0x7f72, (q15_t)0xf424, (q15_t)0x7f70, (q15_t)0xf40b, (q15_t)0x7f6e, (q15_t)0xf3f2, - (q15_t)0x7f6b, (q15_t)0xf3d9, (q15_t)0x7f69, (q15_t)0xf3c0, (q15_t)0x7f67, (q15_t)0xf3a7, (q15_t)0x7f64, (q15_t)0xf38e, - (q15_t)0x7f62, (q15_t)0xf375, (q15_t)0x7f5f, (q15_t)0xf35c, (q15_t)0x7f5d, (q15_t)0xf343, (q15_t)0x7f5a, (q15_t)0xf32a, - (q15_t)0x7f58, (q15_t)0xf311, (q15_t)0x7f55, (q15_t)0xf2f8, (q15_t)0x7f53, (q15_t)0xf2df, (q15_t)0x7f50, (q15_t)0xf2c6, - (q15_t)0x7f4d, (q15_t)0xf2ad, (q15_t)0x7f4b, (q15_t)0xf294, (q15_t)0x7f48, (q15_t)0xf27b, (q15_t)0x7f45, (q15_t)0xf262, - (q15_t)0x7f43, (q15_t)0xf249, (q15_t)0x7f40, (q15_t)0xf230, (q15_t)0x7f3d, (q15_t)0xf217, (q15_t)0x7f3b, (q15_t)0xf1fe, - (q15_t)0x7f38, (q15_t)0xf1e5, (q15_t)0x7f35, (q15_t)0xf1cc, (q15_t)0x7f32, (q15_t)0xf1b3, (q15_t)0x7f2f, (q15_t)0xf19a, - (q15_t)0x7f2d, (q15_t)0xf181, (q15_t)0x7f2a, (q15_t)0xf168, (q15_t)0x7f27, (q15_t)0xf14f, (q15_t)0x7f24, (q15_t)0xf136, - (q15_t)0x7f21, (q15_t)0xf11d, (q15_t)0x7f1e, (q15_t)0xf104, (q15_t)0x7f1b, (q15_t)0xf0eb, (q15_t)0x7f18, (q15_t)0xf0d2, - (q15_t)0x7f15, (q15_t)0xf0b9, (q15_t)0x7f12, (q15_t)0xf0a0, (q15_t)0x7f0f, (q15_t)0xf087, (q15_t)0x7f0c, (q15_t)0xf06e, - (q15_t)0x7f09, (q15_t)0xf055, (q15_t)0x7f06, (q15_t)0xf03c, (q15_t)0x7f03, (q15_t)0xf023, (q15_t)0x7f00, (q15_t)0xf00b, - (q15_t)0x7efd, (q15_t)0xeff2, (q15_t)0x7ef9, (q15_t)0xefd9, (q15_t)0x7ef6, (q15_t)0xefc0, (q15_t)0x7ef3, (q15_t)0xefa7, - (q15_t)0x7ef0, (q15_t)0xef8e, (q15_t)0x7eed, (q15_t)0xef75, (q15_t)0x7ee9, (q15_t)0xef5c, (q15_t)0x7ee6, (q15_t)0xef43, - (q15_t)0x7ee3, (q15_t)0xef2a, (q15_t)0x7edf, (q15_t)0xef11, (q15_t)0x7edc, (q15_t)0xeef8, (q15_t)0x7ed9, (q15_t)0xeedf, - (q15_t)0x7ed5, (q15_t)0xeec7, (q15_t)0x7ed2, (q15_t)0xeeae, (q15_t)0x7ecf, (q15_t)0xee95, (q15_t)0x7ecb, (q15_t)0xee7c, - (q15_t)0x7ec8, (q15_t)0xee63, (q15_t)0x7ec4, (q15_t)0xee4a, (q15_t)0x7ec1, (q15_t)0xee31, (q15_t)0x7ebd, (q15_t)0xee18, - (q15_t)0x7eba, (q15_t)0xedff, (q15_t)0x7eb6, (q15_t)0xede7, (q15_t)0x7eb3, (q15_t)0xedce, (q15_t)0x7eaf, (q15_t)0xedb5, - (q15_t)0x7eab, (q15_t)0xed9c, (q15_t)0x7ea8, (q15_t)0xed83, (q15_t)0x7ea4, (q15_t)0xed6a, (q15_t)0x7ea1, (q15_t)0xed51, - (q15_t)0x7e9d, (q15_t)0xed38, (q15_t)0x7e99, (q15_t)0xed20, (q15_t)0x7e95, (q15_t)0xed07, (q15_t)0x7e92, (q15_t)0xecee, - (q15_t)0x7e8e, (q15_t)0xecd5, (q15_t)0x7e8a, (q15_t)0xecbc, (q15_t)0x7e86, (q15_t)0xeca3, (q15_t)0x7e83, (q15_t)0xec8a, - (q15_t)0x7e7f, (q15_t)0xec72, (q15_t)0x7e7b, (q15_t)0xec59, (q15_t)0x7e77, (q15_t)0xec40, (q15_t)0x7e73, (q15_t)0xec27, - (q15_t)0x7e6f, (q15_t)0xec0e, (q15_t)0x7e6b, (q15_t)0xebf5, (q15_t)0x7e67, (q15_t)0xebdd, (q15_t)0x7e63, (q15_t)0xebc4, - (q15_t)0x7e5f, (q15_t)0xebab, (q15_t)0x7e5b, (q15_t)0xeb92, (q15_t)0x7e57, (q15_t)0xeb79, (q15_t)0x7e53, (q15_t)0xeb61, - (q15_t)0x7e4f, (q15_t)0xeb48, (q15_t)0x7e4b, (q15_t)0xeb2f, (q15_t)0x7e47, (q15_t)0xeb16, (q15_t)0x7e43, (q15_t)0xeafd, - (q15_t)0x7e3f, (q15_t)0xeae5, (q15_t)0x7e3b, (q15_t)0xeacc, (q15_t)0x7e37, (q15_t)0xeab3, (q15_t)0x7e32, (q15_t)0xea9a, - (q15_t)0x7e2e, (q15_t)0xea81, (q15_t)0x7e2a, (q15_t)0xea69, (q15_t)0x7e26, (q15_t)0xea50, (q15_t)0x7e21, (q15_t)0xea37, - (q15_t)0x7e1d, (q15_t)0xea1e, (q15_t)0x7e19, (q15_t)0xea06, (q15_t)0x7e14, (q15_t)0xe9ed, (q15_t)0x7e10, (q15_t)0xe9d4, - (q15_t)0x7e0c, (q15_t)0xe9bb, (q15_t)0x7e07, (q15_t)0xe9a3, (q15_t)0x7e03, (q15_t)0xe98a, (q15_t)0x7dff, (q15_t)0xe971, - (q15_t)0x7dfa, (q15_t)0xe958, (q15_t)0x7df6, (q15_t)0xe940, (q15_t)0x7df1, (q15_t)0xe927, (q15_t)0x7ded, (q15_t)0xe90e, - (q15_t)0x7de8, (q15_t)0xe8f6, (q15_t)0x7de4, (q15_t)0xe8dd, (q15_t)0x7ddf, (q15_t)0xe8c4, (q15_t)0x7dda, (q15_t)0xe8ab, - (q15_t)0x7dd6, (q15_t)0xe893, (q15_t)0x7dd1, (q15_t)0xe87a, (q15_t)0x7dcd, (q15_t)0xe861, (q15_t)0x7dc8, (q15_t)0xe849, - (q15_t)0x7dc3, (q15_t)0xe830, (q15_t)0x7dbf, (q15_t)0xe817, (q15_t)0x7dba, (q15_t)0xe7fe, (q15_t)0x7db5, (q15_t)0xe7e6, - (q15_t)0x7db0, (q15_t)0xe7cd, (q15_t)0x7dac, (q15_t)0xe7b4, (q15_t)0x7da7, (q15_t)0xe79c, (q15_t)0x7da2, (q15_t)0xe783, - (q15_t)0x7d9d, (q15_t)0xe76a, (q15_t)0x7d98, (q15_t)0xe752, (q15_t)0x7d94, (q15_t)0xe739, (q15_t)0x7d8f, (q15_t)0xe720, - (q15_t)0x7d8a, (q15_t)0xe708, (q15_t)0x7d85, (q15_t)0xe6ef, (q15_t)0x7d80, (q15_t)0xe6d6, (q15_t)0x7d7b, (q15_t)0xe6be, - (q15_t)0x7d76, (q15_t)0xe6a5, (q15_t)0x7d71, (q15_t)0xe68d, (q15_t)0x7d6c, (q15_t)0xe674, (q15_t)0x7d67, (q15_t)0xe65b, - (q15_t)0x7d62, (q15_t)0xe643, (q15_t)0x7d5d, (q15_t)0xe62a, (q15_t)0x7d58, (q15_t)0xe611, (q15_t)0x7d53, (q15_t)0xe5f9, - (q15_t)0x7d4e, (q15_t)0xe5e0, (q15_t)0x7d49, (q15_t)0xe5c8, (q15_t)0x7d43, (q15_t)0xe5af, (q15_t)0x7d3e, (q15_t)0xe596, - (q15_t)0x7d39, (q15_t)0xe57e, (q15_t)0x7d34, (q15_t)0xe565, (q15_t)0x7d2f, (q15_t)0xe54d, (q15_t)0x7d29, (q15_t)0xe534, - (q15_t)0x7d24, (q15_t)0xe51c, (q15_t)0x7d1f, (q15_t)0xe503, (q15_t)0x7d19, (q15_t)0xe4ea, (q15_t)0x7d14, (q15_t)0xe4d2, - (q15_t)0x7d0f, (q15_t)0xe4b9, (q15_t)0x7d09, (q15_t)0xe4a1, (q15_t)0x7d04, (q15_t)0xe488, (q15_t)0x7cff, (q15_t)0xe470, - (q15_t)0x7cf9, (q15_t)0xe457, (q15_t)0x7cf4, (q15_t)0xe43f, (q15_t)0x7cee, (q15_t)0xe426, (q15_t)0x7ce9, (q15_t)0xe40e, - (q15_t)0x7ce3, (q15_t)0xe3f5, (q15_t)0x7cde, (q15_t)0xe3dc, (q15_t)0x7cd8, (q15_t)0xe3c4, (q15_t)0x7cd3, (q15_t)0xe3ab, - (q15_t)0x7ccd, (q15_t)0xe393, (q15_t)0x7cc8, (q15_t)0xe37a, (q15_t)0x7cc2, (q15_t)0xe362, (q15_t)0x7cbc, (q15_t)0xe349, - (q15_t)0x7cb7, (q15_t)0xe331, (q15_t)0x7cb1, (q15_t)0xe318, (q15_t)0x7cab, (q15_t)0xe300, (q15_t)0x7ca6, (q15_t)0xe2e8, - (q15_t)0x7ca0, (q15_t)0xe2cf, (q15_t)0x7c9a, (q15_t)0xe2b7, (q15_t)0x7c94, (q15_t)0xe29e, (q15_t)0x7c8f, (q15_t)0xe286, - (q15_t)0x7c89, (q15_t)0xe26d, (q15_t)0x7c83, (q15_t)0xe255, (q15_t)0x7c7d, (q15_t)0xe23c, (q15_t)0x7c77, (q15_t)0xe224, - (q15_t)0x7c71, (q15_t)0xe20b, (q15_t)0x7c6c, (q15_t)0xe1f3, (q15_t)0x7c66, (q15_t)0xe1db, (q15_t)0x7c60, (q15_t)0xe1c2, - (q15_t)0x7c5a, (q15_t)0xe1aa, (q15_t)0x7c54, (q15_t)0xe191, (q15_t)0x7c4e, (q15_t)0xe179, (q15_t)0x7c48, (q15_t)0xe160, - (q15_t)0x7c42, (q15_t)0xe148, (q15_t)0x7c3c, (q15_t)0xe130, (q15_t)0x7c36, (q15_t)0xe117, (q15_t)0x7c30, (q15_t)0xe0ff, - (q15_t)0x7c29, (q15_t)0xe0e7, (q15_t)0x7c23, (q15_t)0xe0ce, (q15_t)0x7c1d, (q15_t)0xe0b6, (q15_t)0x7c17, (q15_t)0xe09d, - (q15_t)0x7c11, (q15_t)0xe085, (q15_t)0x7c0b, (q15_t)0xe06d, (q15_t)0x7c05, (q15_t)0xe054, (q15_t)0x7bfe, (q15_t)0xe03c, - (q15_t)0x7bf8, (q15_t)0xe024, (q15_t)0x7bf2, (q15_t)0xe00b, (q15_t)0x7beb, (q15_t)0xdff3, (q15_t)0x7be5, (q15_t)0xdfdb, - (q15_t)0x7bdf, (q15_t)0xdfc2, (q15_t)0x7bd9, (q15_t)0xdfaa, (q15_t)0x7bd2, (q15_t)0xdf92, (q15_t)0x7bcc, (q15_t)0xdf79, - (q15_t)0x7bc5, (q15_t)0xdf61, (q15_t)0x7bbf, (q15_t)0xdf49, (q15_t)0x7bb9, (q15_t)0xdf30, (q15_t)0x7bb2, (q15_t)0xdf18, - (q15_t)0x7bac, (q15_t)0xdf00, (q15_t)0x7ba5, (q15_t)0xdee8, (q15_t)0x7b9f, (q15_t)0xdecf, (q15_t)0x7b98, (q15_t)0xdeb7, - (q15_t)0x7b92, (q15_t)0xde9f, (q15_t)0x7b8b, (q15_t)0xde87, (q15_t)0x7b84, (q15_t)0xde6e, (q15_t)0x7b7e, (q15_t)0xde56, - (q15_t)0x7b77, (q15_t)0xde3e, (q15_t)0x7b71, (q15_t)0xde26, (q15_t)0x7b6a, (q15_t)0xde0d, (q15_t)0x7b63, (q15_t)0xddf5, - (q15_t)0x7b5d, (q15_t)0xdddd, (q15_t)0x7b56, (q15_t)0xddc5, (q15_t)0x7b4f, (q15_t)0xddac, (q15_t)0x7b48, (q15_t)0xdd94, - (q15_t)0x7b42, (q15_t)0xdd7c, (q15_t)0x7b3b, (q15_t)0xdd64, (q15_t)0x7b34, (q15_t)0xdd4c, (q15_t)0x7b2d, (q15_t)0xdd33, - (q15_t)0x7b26, (q15_t)0xdd1b, (q15_t)0x7b1f, (q15_t)0xdd03, (q15_t)0x7b19, (q15_t)0xdceb, (q15_t)0x7b12, (q15_t)0xdcd3, - (q15_t)0x7b0b, (q15_t)0xdcbb, (q15_t)0x7b04, (q15_t)0xdca2, (q15_t)0x7afd, (q15_t)0xdc8a, (q15_t)0x7af6, (q15_t)0xdc72, - (q15_t)0x7aef, (q15_t)0xdc5a, (q15_t)0x7ae8, (q15_t)0xdc42, (q15_t)0x7ae1, (q15_t)0xdc2a, (q15_t)0x7ada, (q15_t)0xdc12, - (q15_t)0x7ad3, (q15_t)0xdbf9, (q15_t)0x7acc, (q15_t)0xdbe1, (q15_t)0x7ac5, (q15_t)0xdbc9, (q15_t)0x7abd, (q15_t)0xdbb1, - (q15_t)0x7ab6, (q15_t)0xdb99, (q15_t)0x7aaf, (q15_t)0xdb81, (q15_t)0x7aa8, (q15_t)0xdb69, (q15_t)0x7aa1, (q15_t)0xdb51, - (q15_t)0x7a9a, (q15_t)0xdb39, (q15_t)0x7a92, (q15_t)0xdb21, (q15_t)0x7a8b, (q15_t)0xdb09, (q15_t)0x7a84, (q15_t)0xdaf1, - (q15_t)0x7a7d, (q15_t)0xdad8, (q15_t)0x7a75, (q15_t)0xdac0, (q15_t)0x7a6e, (q15_t)0xdaa8, (q15_t)0x7a67, (q15_t)0xda90, - (q15_t)0x7a5f, (q15_t)0xda78, (q15_t)0x7a58, (q15_t)0xda60, (q15_t)0x7a50, (q15_t)0xda48, (q15_t)0x7a49, (q15_t)0xda30, - (q15_t)0x7a42, (q15_t)0xda18, (q15_t)0x7a3a, (q15_t)0xda00, (q15_t)0x7a33, (q15_t)0xd9e8, (q15_t)0x7a2b, (q15_t)0xd9d0, - (q15_t)0x7a24, (q15_t)0xd9b8, (q15_t)0x7a1c, (q15_t)0xd9a0, (q15_t)0x7a15, (q15_t)0xd988, (q15_t)0x7a0d, (q15_t)0xd970, - (q15_t)0x7a05, (q15_t)0xd958, (q15_t)0x79fe, (q15_t)0xd940, (q15_t)0x79f6, (q15_t)0xd928, (q15_t)0x79ef, (q15_t)0xd911, - (q15_t)0x79e7, (q15_t)0xd8f9, (q15_t)0x79df, (q15_t)0xd8e1, (q15_t)0x79d8, (q15_t)0xd8c9, (q15_t)0x79d0, (q15_t)0xd8b1, - (q15_t)0x79c8, (q15_t)0xd899, (q15_t)0x79c0, (q15_t)0xd881, (q15_t)0x79b9, (q15_t)0xd869, (q15_t)0x79b1, (q15_t)0xd851, - (q15_t)0x79a9, (q15_t)0xd839, (q15_t)0x79a1, (q15_t)0xd821, (q15_t)0x7999, (q15_t)0xd80a, (q15_t)0x7992, (q15_t)0xd7f2, - (q15_t)0x798a, (q15_t)0xd7da, (q15_t)0x7982, (q15_t)0xd7c2, (q15_t)0x797a, (q15_t)0xd7aa, (q15_t)0x7972, (q15_t)0xd792, - (q15_t)0x796a, (q15_t)0xd77a, (q15_t)0x7962, (q15_t)0xd763, (q15_t)0x795a, (q15_t)0xd74b, (q15_t)0x7952, (q15_t)0xd733, - (q15_t)0x794a, (q15_t)0xd71b, (q15_t)0x7942, (q15_t)0xd703, (q15_t)0x793a, (q15_t)0xd6eb, (q15_t)0x7932, (q15_t)0xd6d4, - (q15_t)0x792a, (q15_t)0xd6bc, (q15_t)0x7922, (q15_t)0xd6a4, (q15_t)0x7919, (q15_t)0xd68c, (q15_t)0x7911, (q15_t)0xd675, - (q15_t)0x7909, (q15_t)0xd65d, (q15_t)0x7901, (q15_t)0xd645, (q15_t)0x78f9, (q15_t)0xd62d, (q15_t)0x78f1, (q15_t)0xd615, - (q15_t)0x78e8, (q15_t)0xd5fe, (q15_t)0x78e0, (q15_t)0xd5e6, (q15_t)0x78d8, (q15_t)0xd5ce, (q15_t)0x78cf, (q15_t)0xd5b7, - (q15_t)0x78c7, (q15_t)0xd59f, (q15_t)0x78bf, (q15_t)0xd587, (q15_t)0x78b6, (q15_t)0xd56f, (q15_t)0x78ae, (q15_t)0xd558, - (q15_t)0x78a6, (q15_t)0xd540, (q15_t)0x789d, (q15_t)0xd528, (q15_t)0x7895, (q15_t)0xd511, (q15_t)0x788c, (q15_t)0xd4f9, - (q15_t)0x7884, (q15_t)0xd4e1, (q15_t)0x787c, (q15_t)0xd4ca, (q15_t)0x7873, (q15_t)0xd4b2, (q15_t)0x786b, (q15_t)0xd49a, - (q15_t)0x7862, (q15_t)0xd483, (q15_t)0x7859, (q15_t)0xd46b, (q15_t)0x7851, (q15_t)0xd453, (q15_t)0x7848, (q15_t)0xd43c, - (q15_t)0x7840, (q15_t)0xd424, (q15_t)0x7837, (q15_t)0xd40d, (q15_t)0x782e, (q15_t)0xd3f5, (q15_t)0x7826, (q15_t)0xd3dd, - (q15_t)0x781d, (q15_t)0xd3c6, (q15_t)0x7814, (q15_t)0xd3ae, (q15_t)0x780c, (q15_t)0xd397, (q15_t)0x7803, (q15_t)0xd37f, - (q15_t)0x77fa, (q15_t)0xd368, (q15_t)0x77f1, (q15_t)0xd350, (q15_t)0x77e9, (q15_t)0xd338, (q15_t)0x77e0, (q15_t)0xd321, - (q15_t)0x77d7, (q15_t)0xd309, (q15_t)0x77ce, (q15_t)0xd2f2, (q15_t)0x77c5, (q15_t)0xd2da, (q15_t)0x77bc, (q15_t)0xd2c3, - (q15_t)0x77b4, (q15_t)0xd2ab, (q15_t)0x77ab, (q15_t)0xd294, (q15_t)0x77a2, (q15_t)0xd27c, (q15_t)0x7799, (q15_t)0xd265, - (q15_t)0x7790, (q15_t)0xd24d, (q15_t)0x7787, (q15_t)0xd236, (q15_t)0x777e, (q15_t)0xd21e, (q15_t)0x7775, (q15_t)0xd207, - (q15_t)0x776c, (q15_t)0xd1ef, (q15_t)0x7763, (q15_t)0xd1d8, (q15_t)0x775a, (q15_t)0xd1c1, (q15_t)0x7751, (q15_t)0xd1a9, - (q15_t)0x7747, (q15_t)0xd192, (q15_t)0x773e, (q15_t)0xd17a, (q15_t)0x7735, (q15_t)0xd163, (q15_t)0x772c, (q15_t)0xd14b, - (q15_t)0x7723, (q15_t)0xd134, (q15_t)0x771a, (q15_t)0xd11d, (q15_t)0x7710, (q15_t)0xd105, (q15_t)0x7707, (q15_t)0xd0ee, - (q15_t)0x76fe, (q15_t)0xd0d7, (q15_t)0x76f5, (q15_t)0xd0bf, (q15_t)0x76eb, (q15_t)0xd0a8, (q15_t)0x76e2, (q15_t)0xd091, - (q15_t)0x76d9, (q15_t)0xd079, (q15_t)0x76cf, (q15_t)0xd062, (q15_t)0x76c6, (q15_t)0xd04b, (q15_t)0x76bd, (q15_t)0xd033, - (q15_t)0x76b3, (q15_t)0xd01c, (q15_t)0x76aa, (q15_t)0xd005, (q15_t)0x76a0, (q15_t)0xcfed, (q15_t)0x7697, (q15_t)0xcfd6, - (q15_t)0x768e, (q15_t)0xcfbf, (q15_t)0x7684, (q15_t)0xcfa7, (q15_t)0x767b, (q15_t)0xcf90, (q15_t)0x7671, (q15_t)0xcf79, - (q15_t)0x7668, (q15_t)0xcf62, (q15_t)0x765e, (q15_t)0xcf4a, (q15_t)0x7654, (q15_t)0xcf33, (q15_t)0x764b, (q15_t)0xcf1c, - (q15_t)0x7641, (q15_t)0xcf05, (q15_t)0x7638, (q15_t)0xceee, (q15_t)0x762e, (q15_t)0xced6, (q15_t)0x7624, (q15_t)0xcebf, - (q15_t)0x761b, (q15_t)0xcea8, (q15_t)0x7611, (q15_t)0xce91, (q15_t)0x7607, (q15_t)0xce7a, (q15_t)0x75fd, (q15_t)0xce62, - (q15_t)0x75f4, (q15_t)0xce4b, (q15_t)0x75ea, (q15_t)0xce34, (q15_t)0x75e0, (q15_t)0xce1d, (q15_t)0x75d6, (q15_t)0xce06, - (q15_t)0x75cc, (q15_t)0xcdef, (q15_t)0x75c3, (q15_t)0xcdd8, (q15_t)0x75b9, (q15_t)0xcdc0, (q15_t)0x75af, (q15_t)0xcda9, - (q15_t)0x75a5, (q15_t)0xcd92, (q15_t)0x759b, (q15_t)0xcd7b, (q15_t)0x7591, (q15_t)0xcd64, (q15_t)0x7587, (q15_t)0xcd4d, - (q15_t)0x757d, (q15_t)0xcd36, (q15_t)0x7573, (q15_t)0xcd1f, (q15_t)0x7569, (q15_t)0xcd08, (q15_t)0x755f, (q15_t)0xccf1, - (q15_t)0x7555, (q15_t)0xccda, (q15_t)0x754b, (q15_t)0xccc3, (q15_t)0x7541, (q15_t)0xccac, (q15_t)0x7537, (q15_t)0xcc95, - (q15_t)0x752d, (q15_t)0xcc7e, (q15_t)0x7523, (q15_t)0xcc67, (q15_t)0x7519, (q15_t)0xcc50, (q15_t)0x750f, (q15_t)0xcc39, - (q15_t)0x7504, (q15_t)0xcc22, (q15_t)0x74fa, (q15_t)0xcc0b, (q15_t)0x74f0, (q15_t)0xcbf4, (q15_t)0x74e6, (q15_t)0xcbdd, - (q15_t)0x74db, (q15_t)0xcbc6, (q15_t)0x74d1, (q15_t)0xcbaf, (q15_t)0x74c7, (q15_t)0xcb98, (q15_t)0x74bd, (q15_t)0xcb81, - (q15_t)0x74b2, (q15_t)0xcb6a, (q15_t)0x74a8, (q15_t)0xcb53, (q15_t)0x749e, (q15_t)0xcb3c, (q15_t)0x7493, (q15_t)0xcb25, - (q15_t)0x7489, (q15_t)0xcb0e, (q15_t)0x747e, (q15_t)0xcaf8, (q15_t)0x7474, (q15_t)0xcae1, (q15_t)0x746a, (q15_t)0xcaca, - (q15_t)0x745f, (q15_t)0xcab3, (q15_t)0x7455, (q15_t)0xca9c, (q15_t)0x744a, (q15_t)0xca85, (q15_t)0x7440, (q15_t)0xca6e, - (q15_t)0x7435, (q15_t)0xca58, (q15_t)0x742b, (q15_t)0xca41, (q15_t)0x7420, (q15_t)0xca2a, (q15_t)0x7415, (q15_t)0xca13, - (q15_t)0x740b, (q15_t)0xc9fc, (q15_t)0x7400, (q15_t)0xc9e6, (q15_t)0x73f6, (q15_t)0xc9cf, (q15_t)0x73eb, (q15_t)0xc9b8, - (q15_t)0x73e0, (q15_t)0xc9a1, (q15_t)0x73d6, (q15_t)0xc98b, (q15_t)0x73cb, (q15_t)0xc974, (q15_t)0x73c0, (q15_t)0xc95d, - (q15_t)0x73b5, (q15_t)0xc946, (q15_t)0x73ab, (q15_t)0xc930, (q15_t)0x73a0, (q15_t)0xc919, (q15_t)0x7395, (q15_t)0xc902, - (q15_t)0x738a, (q15_t)0xc8ec, (q15_t)0x737f, (q15_t)0xc8d5, (q15_t)0x7375, (q15_t)0xc8be, (q15_t)0x736a, (q15_t)0xc8a8, - (q15_t)0x735f, (q15_t)0xc891, (q15_t)0x7354, (q15_t)0xc87a, (q15_t)0x7349, (q15_t)0xc864, (q15_t)0x733e, (q15_t)0xc84d, - (q15_t)0x7333, (q15_t)0xc836, (q15_t)0x7328, (q15_t)0xc820, (q15_t)0x731d, (q15_t)0xc809, (q15_t)0x7312, (q15_t)0xc7f3, - (q15_t)0x7307, (q15_t)0xc7dc, (q15_t)0x72fc, (q15_t)0xc7c5, (q15_t)0x72f1, (q15_t)0xc7af, (q15_t)0x72e6, (q15_t)0xc798, - (q15_t)0x72db, (q15_t)0xc782, (q15_t)0x72d0, (q15_t)0xc76b, (q15_t)0x72c5, (q15_t)0xc755, (q15_t)0x72ba, (q15_t)0xc73e, - (q15_t)0x72af, (q15_t)0xc728, (q15_t)0x72a3, (q15_t)0xc711, (q15_t)0x7298, (q15_t)0xc6fa, (q15_t)0x728d, (q15_t)0xc6e4, - (q15_t)0x7282, (q15_t)0xc6ce, (q15_t)0x7276, (q15_t)0xc6b7, (q15_t)0x726b, (q15_t)0xc6a1, (q15_t)0x7260, (q15_t)0xc68a, - (q15_t)0x7255, (q15_t)0xc674, (q15_t)0x7249, (q15_t)0xc65d, (q15_t)0x723e, (q15_t)0xc647, (q15_t)0x7233, (q15_t)0xc630, - (q15_t)0x7227, (q15_t)0xc61a, (q15_t)0x721c, (q15_t)0xc603, (q15_t)0x7211, (q15_t)0xc5ed, (q15_t)0x7205, (q15_t)0xc5d7, - (q15_t)0x71fa, (q15_t)0xc5c0, (q15_t)0x71ee, (q15_t)0xc5aa, (q15_t)0x71e3, (q15_t)0xc594, (q15_t)0x71d7, (q15_t)0xc57d, - (q15_t)0x71cc, (q15_t)0xc567, (q15_t)0x71c0, (q15_t)0xc551, (q15_t)0x71b5, (q15_t)0xc53a, (q15_t)0x71a9, (q15_t)0xc524, - (q15_t)0x719e, (q15_t)0xc50e, (q15_t)0x7192, (q15_t)0xc4f7, (q15_t)0x7186, (q15_t)0xc4e1, (q15_t)0x717b, (q15_t)0xc4cb, - (q15_t)0x716f, (q15_t)0xc4b4, (q15_t)0x7164, (q15_t)0xc49e, (q15_t)0x7158, (q15_t)0xc488, (q15_t)0x714c, (q15_t)0xc472, - (q15_t)0x7141, (q15_t)0xc45b, (q15_t)0x7135, (q15_t)0xc445, (q15_t)0x7129, (q15_t)0xc42f, (q15_t)0x711d, (q15_t)0xc419, - (q15_t)0x7112, (q15_t)0xc403, (q15_t)0x7106, (q15_t)0xc3ec, (q15_t)0x70fa, (q15_t)0xc3d6, (q15_t)0x70ee, (q15_t)0xc3c0, - (q15_t)0x70e2, (q15_t)0xc3aa, (q15_t)0x70d6, (q15_t)0xc394, (q15_t)0x70cb, (q15_t)0xc37d, (q15_t)0x70bf, (q15_t)0xc367, - (q15_t)0x70b3, (q15_t)0xc351, (q15_t)0x70a7, (q15_t)0xc33b, (q15_t)0x709b, (q15_t)0xc325, (q15_t)0x708f, (q15_t)0xc30f, - (q15_t)0x7083, (q15_t)0xc2f9, (q15_t)0x7077, (q15_t)0xc2e3, (q15_t)0x706b, (q15_t)0xc2cd, (q15_t)0x705f, (q15_t)0xc2b7, - (q15_t)0x7053, (q15_t)0xc2a0, (q15_t)0x7047, (q15_t)0xc28a, (q15_t)0x703b, (q15_t)0xc274, (q15_t)0x702f, (q15_t)0xc25e, - (q15_t)0x7023, (q15_t)0xc248, (q15_t)0x7016, (q15_t)0xc232, (q15_t)0x700a, (q15_t)0xc21c, (q15_t)0x6ffe, (q15_t)0xc206, - (q15_t)0x6ff2, (q15_t)0xc1f0, (q15_t)0x6fe6, (q15_t)0xc1da, (q15_t)0x6fda, (q15_t)0xc1c4, (q15_t)0x6fcd, (q15_t)0xc1ae, - (q15_t)0x6fc1, (q15_t)0xc198, (q15_t)0x6fb5, (q15_t)0xc183, (q15_t)0x6fa9, (q15_t)0xc16d, (q15_t)0x6f9c, (q15_t)0xc157, - (q15_t)0x6f90, (q15_t)0xc141, (q15_t)0x6f84, (q15_t)0xc12b, (q15_t)0x6f77, (q15_t)0xc115, (q15_t)0x6f6b, (q15_t)0xc0ff, - (q15_t)0x6f5f, (q15_t)0xc0e9, (q15_t)0x6f52, (q15_t)0xc0d3, (q15_t)0x6f46, (q15_t)0xc0bd, (q15_t)0x6f39, (q15_t)0xc0a8, - (q15_t)0x6f2d, (q15_t)0xc092, (q15_t)0x6f20, (q15_t)0xc07c, (q15_t)0x6f14, (q15_t)0xc066, (q15_t)0x6f07, (q15_t)0xc050, - (q15_t)0x6efb, (q15_t)0xc03b, (q15_t)0x6eee, (q15_t)0xc025, (q15_t)0x6ee2, (q15_t)0xc00f, (q15_t)0x6ed5, (q15_t)0xbff9, - (q15_t)0x6ec9, (q15_t)0xbfe3, (q15_t)0x6ebc, (q15_t)0xbfce, (q15_t)0x6eaf, (q15_t)0xbfb8, (q15_t)0x6ea3, (q15_t)0xbfa2, - (q15_t)0x6e96, (q15_t)0xbf8d, (q15_t)0x6e89, (q15_t)0xbf77, (q15_t)0x6e7d, (q15_t)0xbf61, (q15_t)0x6e70, (q15_t)0xbf4b, - (q15_t)0x6e63, (q15_t)0xbf36, (q15_t)0x6e57, (q15_t)0xbf20, (q15_t)0x6e4a, (q15_t)0xbf0a, (q15_t)0x6e3d, (q15_t)0xbef5, - (q15_t)0x6e30, (q15_t)0xbedf, (q15_t)0x6e24, (q15_t)0xbeca, (q15_t)0x6e17, (q15_t)0xbeb4, (q15_t)0x6e0a, (q15_t)0xbe9e, - (q15_t)0x6dfd, (q15_t)0xbe89, (q15_t)0x6df0, (q15_t)0xbe73, (q15_t)0x6de3, (q15_t)0xbe5e, (q15_t)0x6dd6, (q15_t)0xbe48, - (q15_t)0x6dca, (q15_t)0xbe32, (q15_t)0x6dbd, (q15_t)0xbe1d, (q15_t)0x6db0, (q15_t)0xbe07, (q15_t)0x6da3, (q15_t)0xbdf2, - (q15_t)0x6d96, (q15_t)0xbddc, (q15_t)0x6d89, (q15_t)0xbdc7, (q15_t)0x6d7c, (q15_t)0xbdb1, (q15_t)0x6d6f, (q15_t)0xbd9c, - (q15_t)0x6d62, (q15_t)0xbd86, (q15_t)0x6d55, (q15_t)0xbd71, (q15_t)0x6d48, (q15_t)0xbd5b, (q15_t)0x6d3a, (q15_t)0xbd46, - (q15_t)0x6d2d, (q15_t)0xbd30, (q15_t)0x6d20, (q15_t)0xbd1b, (q15_t)0x6d13, (q15_t)0xbd06, (q15_t)0x6d06, (q15_t)0xbcf0, - (q15_t)0x6cf9, (q15_t)0xbcdb, (q15_t)0x6cec, (q15_t)0xbcc5, (q15_t)0x6cde, (q15_t)0xbcb0, (q15_t)0x6cd1, (q15_t)0xbc9b, - (q15_t)0x6cc4, (q15_t)0xbc85, (q15_t)0x6cb7, (q15_t)0xbc70, (q15_t)0x6ca9, (q15_t)0xbc5b, (q15_t)0x6c9c, (q15_t)0xbc45, - (q15_t)0x6c8f, (q15_t)0xbc30, (q15_t)0x6c81, (q15_t)0xbc1b, (q15_t)0x6c74, (q15_t)0xbc05, (q15_t)0x6c67, (q15_t)0xbbf0, - (q15_t)0x6c59, (q15_t)0xbbdb, (q15_t)0x6c4c, (q15_t)0xbbc5, (q15_t)0x6c3f, (q15_t)0xbbb0, (q15_t)0x6c31, (q15_t)0xbb9b, - (q15_t)0x6c24, (q15_t)0xbb86, (q15_t)0x6c16, (q15_t)0xbb70, (q15_t)0x6c09, (q15_t)0xbb5b, (q15_t)0x6bfb, (q15_t)0xbb46, - (q15_t)0x6bee, (q15_t)0xbb31, (q15_t)0x6be0, (q15_t)0xbb1c, (q15_t)0x6bd3, (q15_t)0xbb06, (q15_t)0x6bc5, (q15_t)0xbaf1, - (q15_t)0x6bb8, (q15_t)0xbadc, (q15_t)0x6baa, (q15_t)0xbac7, (q15_t)0x6b9c, (q15_t)0xbab2, (q15_t)0x6b8f, (q15_t)0xba9d, - (q15_t)0x6b81, (q15_t)0xba88, (q15_t)0x6b73, (q15_t)0xba73, (q15_t)0x6b66, (q15_t)0xba5d, (q15_t)0x6b58, (q15_t)0xba48, - (q15_t)0x6b4a, (q15_t)0xba33, (q15_t)0x6b3d, (q15_t)0xba1e, (q15_t)0x6b2f, (q15_t)0xba09, (q15_t)0x6b21, (q15_t)0xb9f4, - (q15_t)0x6b13, (q15_t)0xb9df, (q15_t)0x6b06, (q15_t)0xb9ca, (q15_t)0x6af8, (q15_t)0xb9b5, (q15_t)0x6aea, (q15_t)0xb9a0, - (q15_t)0x6adc, (q15_t)0xb98b, (q15_t)0x6ace, (q15_t)0xb976, (q15_t)0x6ac1, (q15_t)0xb961, (q15_t)0x6ab3, (q15_t)0xb94c, - (q15_t)0x6aa5, (q15_t)0xb937, (q15_t)0x6a97, (q15_t)0xb922, (q15_t)0x6a89, (q15_t)0xb90d, (q15_t)0x6a7b, (q15_t)0xb8f8, - (q15_t)0x6a6d, (q15_t)0xb8e4, (q15_t)0x6a5f, (q15_t)0xb8cf, (q15_t)0x6a51, (q15_t)0xb8ba, (q15_t)0x6a43, (q15_t)0xb8a5, - (q15_t)0x6a35, (q15_t)0xb890, (q15_t)0x6a27, (q15_t)0xb87b, (q15_t)0x6a19, (q15_t)0xb866, (q15_t)0x6a0b, (q15_t)0xb852, - (q15_t)0x69fd, (q15_t)0xb83d, (q15_t)0x69ef, (q15_t)0xb828, (q15_t)0x69e1, (q15_t)0xb813, (q15_t)0x69d3, (q15_t)0xb7fe, - (q15_t)0x69c4, (q15_t)0xb7ea, (q15_t)0x69b6, (q15_t)0xb7d5, (q15_t)0x69a8, (q15_t)0xb7c0, (q15_t)0x699a, (q15_t)0xb7ab, - (q15_t)0x698c, (q15_t)0xb797, (q15_t)0x697d, (q15_t)0xb782, (q15_t)0x696f, (q15_t)0xb76d, (q15_t)0x6961, (q15_t)0xb758, - (q15_t)0x6953, (q15_t)0xb744, (q15_t)0x6944, (q15_t)0xb72f, (q15_t)0x6936, (q15_t)0xb71a, (q15_t)0x6928, (q15_t)0xb706, - (q15_t)0x6919, (q15_t)0xb6f1, (q15_t)0x690b, (q15_t)0xb6dd, (q15_t)0x68fd, (q15_t)0xb6c8, (q15_t)0x68ee, (q15_t)0xb6b3, - (q15_t)0x68e0, (q15_t)0xb69f, (q15_t)0x68d1, (q15_t)0xb68a, (q15_t)0x68c3, (q15_t)0xb676, (q15_t)0x68b5, (q15_t)0xb661, - (q15_t)0x68a6, (q15_t)0xb64c, (q15_t)0x6898, (q15_t)0xb638, (q15_t)0x6889, (q15_t)0xb623, (q15_t)0x687b, (q15_t)0xb60f, - (q15_t)0x686c, (q15_t)0xb5fa, (q15_t)0x685e, (q15_t)0xb5e6, (q15_t)0x684f, (q15_t)0xb5d1, (q15_t)0x6840, (q15_t)0xb5bd, - (q15_t)0x6832, (q15_t)0xb5a8, (q15_t)0x6823, (q15_t)0xb594, (q15_t)0x6815, (q15_t)0xb57f, (q15_t)0x6806, (q15_t)0xb56b, - (q15_t)0x67f7, (q15_t)0xb557, (q15_t)0x67e9, (q15_t)0xb542, (q15_t)0x67da, (q15_t)0xb52e, (q15_t)0x67cb, (q15_t)0xb519, - (q15_t)0x67bd, (q15_t)0xb505, (q15_t)0x67ae, (q15_t)0xb4f1, (q15_t)0x679f, (q15_t)0xb4dc, (q15_t)0x6790, (q15_t)0xb4c8, - (q15_t)0x6782, (q15_t)0xb4b4, (q15_t)0x6773, (q15_t)0xb49f, (q15_t)0x6764, (q15_t)0xb48b, (q15_t)0x6755, (q15_t)0xb477, - (q15_t)0x6746, (q15_t)0xb462, (q15_t)0x6737, (q15_t)0xb44e, (q15_t)0x6729, (q15_t)0xb43a, (q15_t)0x671a, (q15_t)0xb426, - (q15_t)0x670b, (q15_t)0xb411, (q15_t)0x66fc, (q15_t)0xb3fd, (q15_t)0x66ed, (q15_t)0xb3e9, (q15_t)0x66de, (q15_t)0xb3d5, - (q15_t)0x66cf, (q15_t)0xb3c1, (q15_t)0x66c0, (q15_t)0xb3ac, (q15_t)0x66b1, (q15_t)0xb398, (q15_t)0x66a2, (q15_t)0xb384, - (q15_t)0x6693, (q15_t)0xb370, (q15_t)0x6684, (q15_t)0xb35c, (q15_t)0x6675, (q15_t)0xb348, (q15_t)0x6666, (q15_t)0xb334, - (q15_t)0x6657, (q15_t)0xb31f, (q15_t)0x6648, (q15_t)0xb30b, (q15_t)0x6639, (q15_t)0xb2f7, (q15_t)0x6629, (q15_t)0xb2e3, - (q15_t)0x661a, (q15_t)0xb2cf, (q15_t)0x660b, (q15_t)0xb2bb, (q15_t)0x65fc, (q15_t)0xb2a7, (q15_t)0x65ed, (q15_t)0xb293, - (q15_t)0x65dd, (q15_t)0xb27f, (q15_t)0x65ce, (q15_t)0xb26b, (q15_t)0x65bf, (q15_t)0xb257, (q15_t)0x65b0, (q15_t)0xb243, - (q15_t)0x65a0, (q15_t)0xb22f, (q15_t)0x6591, (q15_t)0xb21b, (q15_t)0x6582, (q15_t)0xb207, (q15_t)0x6573, (q15_t)0xb1f3, - (q15_t)0x6563, (q15_t)0xb1df, (q15_t)0x6554, (q15_t)0xb1cc, (q15_t)0x6545, (q15_t)0xb1b8, (q15_t)0x6535, (q15_t)0xb1a4, - (q15_t)0x6526, (q15_t)0xb190, (q15_t)0x6516, (q15_t)0xb17c, (q15_t)0x6507, (q15_t)0xb168, (q15_t)0x64f7, (q15_t)0xb154, - (q15_t)0x64e8, (q15_t)0xb141, (q15_t)0x64d9, (q15_t)0xb12d, (q15_t)0x64c9, (q15_t)0xb119, (q15_t)0x64ba, (q15_t)0xb105, - (q15_t)0x64aa, (q15_t)0xb0f1, (q15_t)0x649b, (q15_t)0xb0de, (q15_t)0x648b, (q15_t)0xb0ca, (q15_t)0x647b, (q15_t)0xb0b6, - (q15_t)0x646c, (q15_t)0xb0a2, (q15_t)0x645c, (q15_t)0xb08f, (q15_t)0x644d, (q15_t)0xb07b, (q15_t)0x643d, (q15_t)0xb067, - (q15_t)0x642d, (q15_t)0xb054, (q15_t)0x641e, (q15_t)0xb040, (q15_t)0x640e, (q15_t)0xb02c, (q15_t)0x63fe, (q15_t)0xb019, - (q15_t)0x63ef, (q15_t)0xb005, (q15_t)0x63df, (q15_t)0xaff1, (q15_t)0x63cf, (q15_t)0xafde, (q15_t)0x63c0, (q15_t)0xafca, - (q15_t)0x63b0, (q15_t)0xafb7, (q15_t)0x63a0, (q15_t)0xafa3, (q15_t)0x6390, (q15_t)0xaf90, (q15_t)0x6380, (q15_t)0xaf7c, - (q15_t)0x6371, (q15_t)0xaf69, (q15_t)0x6361, (q15_t)0xaf55, (q15_t)0x6351, (q15_t)0xaf41, (q15_t)0x6341, (q15_t)0xaf2e, - (q15_t)0x6331, (q15_t)0xaf1b, (q15_t)0x6321, (q15_t)0xaf07, (q15_t)0x6311, (q15_t)0xaef4, (q15_t)0x6301, (q15_t)0xaee0, - (q15_t)0x62f2, (q15_t)0xaecd, (q15_t)0x62e2, (q15_t)0xaeb9, (q15_t)0x62d2, (q15_t)0xaea6, (q15_t)0x62c2, (q15_t)0xae92, - (q15_t)0x62b2, (q15_t)0xae7f, (q15_t)0x62a2, (q15_t)0xae6c, (q15_t)0x6292, (q15_t)0xae58, (q15_t)0x6282, (q15_t)0xae45, - (q15_t)0x6271, (q15_t)0xae32, (q15_t)0x6261, (q15_t)0xae1e, (q15_t)0x6251, (q15_t)0xae0b, (q15_t)0x6241, (q15_t)0xadf8, - (q15_t)0x6231, (q15_t)0xade4, (q15_t)0x6221, (q15_t)0xadd1, (q15_t)0x6211, (q15_t)0xadbe, (q15_t)0x6201, (q15_t)0xadab, - (q15_t)0x61f1, (q15_t)0xad97, (q15_t)0x61e0, (q15_t)0xad84, (q15_t)0x61d0, (q15_t)0xad71, (q15_t)0x61c0, (q15_t)0xad5e, - (q15_t)0x61b0, (q15_t)0xad4b, (q15_t)0x619f, (q15_t)0xad37, (q15_t)0x618f, (q15_t)0xad24, (q15_t)0x617f, (q15_t)0xad11, - (q15_t)0x616f, (q15_t)0xacfe, (q15_t)0x615e, (q15_t)0xaceb, (q15_t)0x614e, (q15_t)0xacd8, (q15_t)0x613e, (q15_t)0xacc5, - (q15_t)0x612d, (q15_t)0xacb2, (q15_t)0x611d, (q15_t)0xac9e, (q15_t)0x610d, (q15_t)0xac8b, (q15_t)0x60fc, (q15_t)0xac78, - (q15_t)0x60ec, (q15_t)0xac65, (q15_t)0x60db, (q15_t)0xac52, (q15_t)0x60cb, (q15_t)0xac3f, (q15_t)0x60ba, (q15_t)0xac2c, - (q15_t)0x60aa, (q15_t)0xac19, (q15_t)0x6099, (q15_t)0xac06, (q15_t)0x6089, (q15_t)0xabf3, (q15_t)0x6078, (q15_t)0xabe0, - (q15_t)0x6068, (q15_t)0xabcd, (q15_t)0x6057, (q15_t)0xabbb, (q15_t)0x6047, (q15_t)0xaba8, (q15_t)0x6036, (q15_t)0xab95, - (q15_t)0x6026, (q15_t)0xab82, (q15_t)0x6015, (q15_t)0xab6f, (q15_t)0x6004, (q15_t)0xab5c, (q15_t)0x5ff4, (q15_t)0xab49, - (q15_t)0x5fe3, (q15_t)0xab36, (q15_t)0x5fd3, (q15_t)0xab24, (q15_t)0x5fc2, (q15_t)0xab11, (q15_t)0x5fb1, (q15_t)0xaafe, - (q15_t)0x5fa0, (q15_t)0xaaeb, (q15_t)0x5f90, (q15_t)0xaad8, (q15_t)0x5f7f, (q15_t)0xaac6, (q15_t)0x5f6e, (q15_t)0xaab3, - (q15_t)0x5f5e, (q15_t)0xaaa0, (q15_t)0x5f4d, (q15_t)0xaa8e, (q15_t)0x5f3c, (q15_t)0xaa7b, (q15_t)0x5f2b, (q15_t)0xaa68, - (q15_t)0x5f1a, (q15_t)0xaa55, (q15_t)0x5f0a, (q15_t)0xaa43, (q15_t)0x5ef9, (q15_t)0xaa30, (q15_t)0x5ee8, (q15_t)0xaa1d, - (q15_t)0x5ed7, (q15_t)0xaa0b, (q15_t)0x5ec6, (q15_t)0xa9f8, (q15_t)0x5eb5, (q15_t)0xa9e6, (q15_t)0x5ea4, (q15_t)0xa9d3, - (q15_t)0x5e93, (q15_t)0xa9c0, (q15_t)0x5e82, (q15_t)0xa9ae, (q15_t)0x5e71, (q15_t)0xa99b, (q15_t)0x5e60, (q15_t)0xa989, - (q15_t)0x5e50, (q15_t)0xa976, (q15_t)0x5e3f, (q15_t)0xa964, (q15_t)0x5e2d, (q15_t)0xa951, (q15_t)0x5e1c, (q15_t)0xa93f, - (q15_t)0x5e0b, (q15_t)0xa92c, (q15_t)0x5dfa, (q15_t)0xa91a, (q15_t)0x5de9, (q15_t)0xa907, (q15_t)0x5dd8, (q15_t)0xa8f5, - (q15_t)0x5dc7, (q15_t)0xa8e3, (q15_t)0x5db6, (q15_t)0xa8d0, (q15_t)0x5da5, (q15_t)0xa8be, (q15_t)0x5d94, (q15_t)0xa8ab, - (q15_t)0x5d83, (q15_t)0xa899, (q15_t)0x5d71, (q15_t)0xa887, (q15_t)0x5d60, (q15_t)0xa874, (q15_t)0x5d4f, (q15_t)0xa862, - (q15_t)0x5d3e, (q15_t)0xa850, (q15_t)0x5d2d, (q15_t)0xa83d, (q15_t)0x5d1b, (q15_t)0xa82b, (q15_t)0x5d0a, (q15_t)0xa819, - (q15_t)0x5cf9, (q15_t)0xa807, (q15_t)0x5ce8, (q15_t)0xa7f4, (q15_t)0x5cd6, (q15_t)0xa7e2, (q15_t)0x5cc5, (q15_t)0xa7d0, - (q15_t)0x5cb4, (q15_t)0xa7be, (q15_t)0x5ca2, (q15_t)0xa7ab, (q15_t)0x5c91, (q15_t)0xa799, (q15_t)0x5c80, (q15_t)0xa787, - (q15_t)0x5c6e, (q15_t)0xa775, (q15_t)0x5c5d, (q15_t)0xa763, (q15_t)0x5c4b, (q15_t)0xa751, (q15_t)0x5c3a, (q15_t)0xa73f, - (q15_t)0x5c29, (q15_t)0xa72c, (q15_t)0x5c17, (q15_t)0xa71a, (q15_t)0x5c06, (q15_t)0xa708, (q15_t)0x5bf4, (q15_t)0xa6f6, - (q15_t)0x5be3, (q15_t)0xa6e4, (q15_t)0x5bd1, (q15_t)0xa6d2, (q15_t)0x5bc0, (q15_t)0xa6c0, (q15_t)0x5bae, (q15_t)0xa6ae, - (q15_t)0x5b9d, (q15_t)0xa69c, (q15_t)0x5b8b, (q15_t)0xa68a, (q15_t)0x5b79, (q15_t)0xa678, (q15_t)0x5b68, (q15_t)0xa666, - (q15_t)0x5b56, (q15_t)0xa654, (q15_t)0x5b45, (q15_t)0xa642, (q15_t)0x5b33, (q15_t)0xa630, (q15_t)0x5b21, (q15_t)0xa61f, - (q15_t)0x5b10, (q15_t)0xa60d, (q15_t)0x5afe, (q15_t)0xa5fb, (q15_t)0x5aec, (q15_t)0xa5e9, (q15_t)0x5adb, (q15_t)0xa5d7, - (q15_t)0x5ac9, (q15_t)0xa5c5, (q15_t)0x5ab7, (q15_t)0xa5b3, (q15_t)0x5aa5, (q15_t)0xa5a2, (q15_t)0x5a94, (q15_t)0xa590, - (q15_t)0x5a82, (q15_t)0xa57e, (q15_t)0x5a70, (q15_t)0xa56c, (q15_t)0x5a5e, (q15_t)0xa55b, (q15_t)0x5a4d, (q15_t)0xa549, - (q15_t)0x5a3b, (q15_t)0xa537, (q15_t)0x5a29, (q15_t)0xa525, (q15_t)0x5a17, (q15_t)0xa514, (q15_t)0x5a05, (q15_t)0xa502, - (q15_t)0x59f3, (q15_t)0xa4f0, (q15_t)0x59e1, (q15_t)0xa4df, (q15_t)0x59d0, (q15_t)0xa4cd, (q15_t)0x59be, (q15_t)0xa4bb, - (q15_t)0x59ac, (q15_t)0xa4aa, (q15_t)0x599a, (q15_t)0xa498, (q15_t)0x5988, (q15_t)0xa487, (q15_t)0x5976, (q15_t)0xa475, - (q15_t)0x5964, (q15_t)0xa463, (q15_t)0x5952, (q15_t)0xa452, (q15_t)0x5940, (q15_t)0xa440, (q15_t)0x592e, (q15_t)0xa42f, - (q15_t)0x591c, (q15_t)0xa41d, (q15_t)0x590a, (q15_t)0xa40c, (q15_t)0x58f8, (q15_t)0xa3fa, (q15_t)0x58e6, (q15_t)0xa3e9, - (q15_t)0x58d4, (q15_t)0xa3d7, (q15_t)0x58c1, (q15_t)0xa3c6, (q15_t)0x58af, (q15_t)0xa3b5, (q15_t)0x589d, (q15_t)0xa3a3, - (q15_t)0x588b, (q15_t)0xa392, (q15_t)0x5879, (q15_t)0xa380, (q15_t)0x5867, (q15_t)0xa36f, (q15_t)0x5855, (q15_t)0xa35e, - (q15_t)0x5842, (q15_t)0xa34c, (q15_t)0x5830, (q15_t)0xa33b, (q15_t)0x581e, (q15_t)0xa32a, (q15_t)0x580c, (q15_t)0xa318, - (q15_t)0x57f9, (q15_t)0xa307, (q15_t)0x57e7, (q15_t)0xa2f6, (q15_t)0x57d5, (q15_t)0xa2e5, (q15_t)0x57c3, (q15_t)0xa2d3, - (q15_t)0x57b0, (q15_t)0xa2c2, (q15_t)0x579e, (q15_t)0xa2b1, (q15_t)0x578c, (q15_t)0xa2a0, (q15_t)0x5779, (q15_t)0xa28f, - (q15_t)0x5767, (q15_t)0xa27d, (q15_t)0x5755, (q15_t)0xa26c, (q15_t)0x5742, (q15_t)0xa25b, (q15_t)0x5730, (q15_t)0xa24a, - (q15_t)0x571d, (q15_t)0xa239, (q15_t)0x570b, (q15_t)0xa228, (q15_t)0x56f9, (q15_t)0xa217, (q15_t)0x56e6, (q15_t)0xa206, - (q15_t)0x56d4, (q15_t)0xa1f5, (q15_t)0x56c1, (q15_t)0xa1e4, (q15_t)0x56af, (q15_t)0xa1d3, (q15_t)0x569c, (q15_t)0xa1c1, - (q15_t)0x568a, (q15_t)0xa1b0, (q15_t)0x5677, (q15_t)0xa1a0, (q15_t)0x5665, (q15_t)0xa18f, (q15_t)0x5652, (q15_t)0xa17e, - (q15_t)0x5640, (q15_t)0xa16d, (q15_t)0x562d, (q15_t)0xa15c, (q15_t)0x561a, (q15_t)0xa14b, (q15_t)0x5608, (q15_t)0xa13a, - (q15_t)0x55f5, (q15_t)0xa129, (q15_t)0x55e3, (q15_t)0xa118, (q15_t)0x55d0, (q15_t)0xa107, (q15_t)0x55bd, (q15_t)0xa0f6, - (q15_t)0x55ab, (q15_t)0xa0e6, (q15_t)0x5598, (q15_t)0xa0d5, (q15_t)0x5585, (q15_t)0xa0c4, (q15_t)0x5572, (q15_t)0xa0b3, - (q15_t)0x5560, (q15_t)0xa0a2, (q15_t)0x554d, (q15_t)0xa092, (q15_t)0x553a, (q15_t)0xa081, (q15_t)0x5528, (q15_t)0xa070, - (q15_t)0x5515, (q15_t)0xa060, (q15_t)0x5502, (q15_t)0xa04f, (q15_t)0x54ef, (q15_t)0xa03e, (q15_t)0x54dc, (q15_t)0xa02d, - (q15_t)0x54ca, (q15_t)0xa01d, (q15_t)0x54b7, (q15_t)0xa00c, (q15_t)0x54a4, (q15_t)0x9ffc, (q15_t)0x5491, (q15_t)0x9feb, - (q15_t)0x547e, (q15_t)0x9fda, (q15_t)0x546b, (q15_t)0x9fca, (q15_t)0x5458, (q15_t)0x9fb9, (q15_t)0x5445, (q15_t)0x9fa9, - (q15_t)0x5433, (q15_t)0x9f98, (q15_t)0x5420, (q15_t)0x9f88, (q15_t)0x540d, (q15_t)0x9f77, (q15_t)0x53fa, (q15_t)0x9f67, - (q15_t)0x53e7, (q15_t)0x9f56, (q15_t)0x53d4, (q15_t)0x9f46, (q15_t)0x53c1, (q15_t)0x9f35, (q15_t)0x53ae, (q15_t)0x9f25, - (q15_t)0x539b, (q15_t)0x9f14, (q15_t)0x5388, (q15_t)0x9f04, (q15_t)0x5375, (q15_t)0x9ef3, (q15_t)0x5362, (q15_t)0x9ee3, - (q15_t)0x534e, (q15_t)0x9ed3, (q15_t)0x533b, (q15_t)0x9ec2, (q15_t)0x5328, (q15_t)0x9eb2, (q15_t)0x5315, (q15_t)0x9ea2, - (q15_t)0x5302, (q15_t)0x9e91, (q15_t)0x52ef, (q15_t)0x9e81, (q15_t)0x52dc, (q15_t)0x9e71, (q15_t)0x52c9, (q15_t)0x9e61, - (q15_t)0x52b5, (q15_t)0x9e50, (q15_t)0x52a2, (q15_t)0x9e40, (q15_t)0x528f, (q15_t)0x9e30, (q15_t)0x527c, (q15_t)0x9e20, - (q15_t)0x5269, (q15_t)0x9e0f, (q15_t)0x5255, (q15_t)0x9dff, (q15_t)0x5242, (q15_t)0x9def, (q15_t)0x522f, (q15_t)0x9ddf, - (q15_t)0x521c, (q15_t)0x9dcf, (q15_t)0x5208, (q15_t)0x9dbf, (q15_t)0x51f5, (q15_t)0x9daf, (q15_t)0x51e2, (q15_t)0x9d9f, - (q15_t)0x51ce, (q15_t)0x9d8f, (q15_t)0x51bb, (q15_t)0x9d7e, (q15_t)0x51a8, (q15_t)0x9d6e, (q15_t)0x5194, (q15_t)0x9d5e, - (q15_t)0x5181, (q15_t)0x9d4e, (q15_t)0x516e, (q15_t)0x9d3e, (q15_t)0x515a, (q15_t)0x9d2e, (q15_t)0x5147, (q15_t)0x9d1e, - (q15_t)0x5133, (q15_t)0x9d0e, (q15_t)0x5120, (q15_t)0x9cff, (q15_t)0x510c, (q15_t)0x9cef, (q15_t)0x50f9, (q15_t)0x9cdf, - (q15_t)0x50e5, (q15_t)0x9ccf, (q15_t)0x50d2, (q15_t)0x9cbf, (q15_t)0x50bf, (q15_t)0x9caf, (q15_t)0x50ab, (q15_t)0x9c9f, - (q15_t)0x5097, (q15_t)0x9c8f, (q15_t)0x5084, (q15_t)0x9c80, (q15_t)0x5070, (q15_t)0x9c70, (q15_t)0x505d, (q15_t)0x9c60, - (q15_t)0x5049, (q15_t)0x9c50, (q15_t)0x5036, (q15_t)0x9c40, (q15_t)0x5022, (q15_t)0x9c31, (q15_t)0x500f, (q15_t)0x9c21, - (q15_t)0x4ffb, (q15_t)0x9c11, (q15_t)0x4fe7, (q15_t)0x9c02, (q15_t)0x4fd4, (q15_t)0x9bf2, (q15_t)0x4fc0, (q15_t)0x9be2, - (q15_t)0x4fac, (q15_t)0x9bd3, (q15_t)0x4f99, (q15_t)0x9bc3, (q15_t)0x4f85, (q15_t)0x9bb3, (q15_t)0x4f71, (q15_t)0x9ba4, - (q15_t)0x4f5e, (q15_t)0x9b94, (q15_t)0x4f4a, (q15_t)0x9b85, (q15_t)0x4f36, (q15_t)0x9b75, (q15_t)0x4f22, (q15_t)0x9b65, - (q15_t)0x4f0f, (q15_t)0x9b56, (q15_t)0x4efb, (q15_t)0x9b46, (q15_t)0x4ee7, (q15_t)0x9b37, (q15_t)0x4ed3, (q15_t)0x9b27, - (q15_t)0x4ebf, (q15_t)0x9b18, (q15_t)0x4eac, (q15_t)0x9b09, (q15_t)0x4e98, (q15_t)0x9af9, (q15_t)0x4e84, (q15_t)0x9aea, - (q15_t)0x4e70, (q15_t)0x9ada, (q15_t)0x4e5c, (q15_t)0x9acb, (q15_t)0x4e48, (q15_t)0x9abb, (q15_t)0x4e34, (q15_t)0x9aac, - (q15_t)0x4e21, (q15_t)0x9a9d, (q15_t)0x4e0d, (q15_t)0x9a8d, (q15_t)0x4df9, (q15_t)0x9a7e, (q15_t)0x4de5, (q15_t)0x9a6f, - (q15_t)0x4dd1, (q15_t)0x9a60, (q15_t)0x4dbd, (q15_t)0x9a50, (q15_t)0x4da9, (q15_t)0x9a41, (q15_t)0x4d95, (q15_t)0x9a32, - (q15_t)0x4d81, (q15_t)0x9a23, (q15_t)0x4d6d, (q15_t)0x9a13, (q15_t)0x4d59, (q15_t)0x9a04, (q15_t)0x4d45, (q15_t)0x99f5, - (q15_t)0x4d31, (q15_t)0x99e6, (q15_t)0x4d1d, (q15_t)0x99d7, (q15_t)0x4d09, (q15_t)0x99c7, (q15_t)0x4cf5, (q15_t)0x99b8, - (q15_t)0x4ce1, (q15_t)0x99a9, (q15_t)0x4ccc, (q15_t)0x999a, (q15_t)0x4cb8, (q15_t)0x998b, (q15_t)0x4ca4, (q15_t)0x997c, - (q15_t)0x4c90, (q15_t)0x996d, (q15_t)0x4c7c, (q15_t)0x995e, (q15_t)0x4c68, (q15_t)0x994f, (q15_t)0x4c54, (q15_t)0x9940, - (q15_t)0x4c3f, (q15_t)0x9931, (q15_t)0x4c2b, (q15_t)0x9922, (q15_t)0x4c17, (q15_t)0x9913, (q15_t)0x4c03, (q15_t)0x9904, - (q15_t)0x4bef, (q15_t)0x98f5, (q15_t)0x4bda, (q15_t)0x98e6, (q15_t)0x4bc6, (q15_t)0x98d7, (q15_t)0x4bb2, (q15_t)0x98c9, - (q15_t)0x4b9e, (q15_t)0x98ba, (q15_t)0x4b89, (q15_t)0x98ab, (q15_t)0x4b75, (q15_t)0x989c, (q15_t)0x4b61, (q15_t)0x988d, - (q15_t)0x4b4c, (q15_t)0x987e, (q15_t)0x4b38, (q15_t)0x9870, (q15_t)0x4b24, (q15_t)0x9861, (q15_t)0x4b0f, (q15_t)0x9852, - (q15_t)0x4afb, (q15_t)0x9843, (q15_t)0x4ae7, (q15_t)0x9835, (q15_t)0x4ad2, (q15_t)0x9826, (q15_t)0x4abe, (q15_t)0x9817, - (q15_t)0x4aa9, (q15_t)0x9809, (q15_t)0x4a95, (q15_t)0x97fa, (q15_t)0x4a81, (q15_t)0x97eb, (q15_t)0x4a6c, (q15_t)0x97dd, - (q15_t)0x4a58, (q15_t)0x97ce, (q15_t)0x4a43, (q15_t)0x97c0, (q15_t)0x4a2f, (q15_t)0x97b1, (q15_t)0x4a1a, (q15_t)0x97a2, - (q15_t)0x4a06, (q15_t)0x9794, (q15_t)0x49f1, (q15_t)0x9785, (q15_t)0x49dd, (q15_t)0x9777, (q15_t)0x49c8, (q15_t)0x9768, - (q15_t)0x49b4, (q15_t)0x975a, (q15_t)0x499f, (q15_t)0x974b, (q15_t)0x498a, (q15_t)0x973d, (q15_t)0x4976, (q15_t)0x972f, - (q15_t)0x4961, (q15_t)0x9720, (q15_t)0x494d, (q15_t)0x9712, (q15_t)0x4938, (q15_t)0x9703, (q15_t)0x4923, (q15_t)0x96f5, - (q15_t)0x490f, (q15_t)0x96e7, (q15_t)0x48fa, (q15_t)0x96d8, (q15_t)0x48e6, (q15_t)0x96ca, (q15_t)0x48d1, (q15_t)0x96bc, - (q15_t)0x48bc, (q15_t)0x96ad, (q15_t)0x48a8, (q15_t)0x969f, (q15_t)0x4893, (q15_t)0x9691, (q15_t)0x487e, (q15_t)0x9683, - (q15_t)0x4869, (q15_t)0x9674, (q15_t)0x4855, (q15_t)0x9666, (q15_t)0x4840, (q15_t)0x9658, (q15_t)0x482b, (q15_t)0x964a, - (q15_t)0x4816, (q15_t)0x963c, (q15_t)0x4802, (q15_t)0x962d, (q15_t)0x47ed, (q15_t)0x961f, (q15_t)0x47d8, (q15_t)0x9611, - (q15_t)0x47c3, (q15_t)0x9603, (q15_t)0x47ae, (q15_t)0x95f5, (q15_t)0x479a, (q15_t)0x95e7, (q15_t)0x4785, (q15_t)0x95d9, - (q15_t)0x4770, (q15_t)0x95cb, (q15_t)0x475b, (q15_t)0x95bd, (q15_t)0x4746, (q15_t)0x95af, (q15_t)0x4731, (q15_t)0x95a1, - (q15_t)0x471c, (q15_t)0x9593, (q15_t)0x4708, (q15_t)0x9585, (q15_t)0x46f3, (q15_t)0x9577, (q15_t)0x46de, (q15_t)0x9569, - (q15_t)0x46c9, (q15_t)0x955b, (q15_t)0x46b4, (q15_t)0x954d, (q15_t)0x469f, (q15_t)0x953f, (q15_t)0x468a, (q15_t)0x9532, - (q15_t)0x4675, (q15_t)0x9524, (q15_t)0x4660, (q15_t)0x9516, (q15_t)0x464b, (q15_t)0x9508, (q15_t)0x4636, (q15_t)0x94fa, - (q15_t)0x4621, (q15_t)0x94ed, (q15_t)0x460c, (q15_t)0x94df, (q15_t)0x45f7, (q15_t)0x94d1, (q15_t)0x45e2, (q15_t)0x94c3, - (q15_t)0x45cd, (q15_t)0x94b6, (q15_t)0x45b8, (q15_t)0x94a8, (q15_t)0x45a3, (q15_t)0x949a, (q15_t)0x458d, (q15_t)0x948d, - (q15_t)0x4578, (q15_t)0x947f, (q15_t)0x4563, (q15_t)0x9471, (q15_t)0x454e, (q15_t)0x9464, (q15_t)0x4539, (q15_t)0x9456, - (q15_t)0x4524, (q15_t)0x9448, (q15_t)0x450f, (q15_t)0x943b, (q15_t)0x44fa, (q15_t)0x942d, (q15_t)0x44e4, (q15_t)0x9420, - (q15_t)0x44cf, (q15_t)0x9412, (q15_t)0x44ba, (q15_t)0x9405, (q15_t)0x44a5, (q15_t)0x93f7, (q15_t)0x4490, (q15_t)0x93ea, - (q15_t)0x447a, (q15_t)0x93dc, (q15_t)0x4465, (q15_t)0x93cf, (q15_t)0x4450, (q15_t)0x93c1, (q15_t)0x443b, (q15_t)0x93b4, - (q15_t)0x4425, (q15_t)0x93a7, (q15_t)0x4410, (q15_t)0x9399, (q15_t)0x43fb, (q15_t)0x938c, (q15_t)0x43e5, (q15_t)0x937f, - (q15_t)0x43d0, (q15_t)0x9371, (q15_t)0x43bb, (q15_t)0x9364, (q15_t)0x43a5, (q15_t)0x9357, (q15_t)0x4390, (q15_t)0x9349, - (q15_t)0x437b, (q15_t)0x933c, (q15_t)0x4365, (q15_t)0x932f, (q15_t)0x4350, (q15_t)0x9322, (q15_t)0x433b, (q15_t)0x9314, - (q15_t)0x4325, (q15_t)0x9307, (q15_t)0x4310, (q15_t)0x92fa, (q15_t)0x42fa, (q15_t)0x92ed, (q15_t)0x42e5, (q15_t)0x92e0, - (q15_t)0x42d0, (q15_t)0x92d3, (q15_t)0x42ba, (q15_t)0x92c6, (q15_t)0x42a5, (q15_t)0x92b8, (q15_t)0x428f, (q15_t)0x92ab, - (q15_t)0x427a, (q15_t)0x929e, (q15_t)0x4264, (q15_t)0x9291, (q15_t)0x424f, (q15_t)0x9284, (q15_t)0x4239, (q15_t)0x9277, - (q15_t)0x4224, (q15_t)0x926a, (q15_t)0x420e, (q15_t)0x925d, (q15_t)0x41f9, (q15_t)0x9250, (q15_t)0x41e3, (q15_t)0x9243, - (q15_t)0x41ce, (q15_t)0x9236, (q15_t)0x41b8, (q15_t)0x922a, (q15_t)0x41a2, (q15_t)0x921d, (q15_t)0x418d, (q15_t)0x9210, - (q15_t)0x4177, (q15_t)0x9203, (q15_t)0x4162, (q15_t)0x91f6, (q15_t)0x414c, (q15_t)0x91e9, (q15_t)0x4136, (q15_t)0x91dc, - (q15_t)0x4121, (q15_t)0x91d0, (q15_t)0x410b, (q15_t)0x91c3, (q15_t)0x40f6, (q15_t)0x91b6, (q15_t)0x40e0, (q15_t)0x91a9, - (q15_t)0x40ca, (q15_t)0x919d, (q15_t)0x40b5, (q15_t)0x9190, (q15_t)0x409f, (q15_t)0x9183, (q15_t)0x4089, (q15_t)0x9177, - (q15_t)0x4073, (q15_t)0x916a, (q15_t)0x405e, (q15_t)0x915d, (q15_t)0x4048, (q15_t)0x9151, (q15_t)0x4032, (q15_t)0x9144, - (q15_t)0x401d, (q15_t)0x9137, (q15_t)0x4007, (q15_t)0x912b, (q15_t)0x3ff1, (q15_t)0x911e, (q15_t)0x3fdb, (q15_t)0x9112, - (q15_t)0x3fc5, (q15_t)0x9105, (q15_t)0x3fb0, (q15_t)0x90f9, (q15_t)0x3f9a, (q15_t)0x90ec, (q15_t)0x3f84, (q15_t)0x90e0, - (q15_t)0x3f6e, (q15_t)0x90d3, (q15_t)0x3f58, (q15_t)0x90c7, (q15_t)0x3f43, (q15_t)0x90ba, (q15_t)0x3f2d, (q15_t)0x90ae, - (q15_t)0x3f17, (q15_t)0x90a1, (q15_t)0x3f01, (q15_t)0x9095, (q15_t)0x3eeb, (q15_t)0x9089, (q15_t)0x3ed5, (q15_t)0x907c, - (q15_t)0x3ebf, (q15_t)0x9070, (q15_t)0x3ea9, (q15_t)0x9064, (q15_t)0x3e93, (q15_t)0x9057, (q15_t)0x3e7d, (q15_t)0x904b, - (q15_t)0x3e68, (q15_t)0x903f, (q15_t)0x3e52, (q15_t)0x9033, (q15_t)0x3e3c, (q15_t)0x9026, (q15_t)0x3e26, (q15_t)0x901a, - (q15_t)0x3e10, (q15_t)0x900e, (q15_t)0x3dfa, (q15_t)0x9002, (q15_t)0x3de4, (q15_t)0x8ff6, (q15_t)0x3dce, (q15_t)0x8fea, - (q15_t)0x3db8, (q15_t)0x8fdd, (q15_t)0x3da2, (q15_t)0x8fd1, (q15_t)0x3d8c, (q15_t)0x8fc5, (q15_t)0x3d76, (q15_t)0x8fb9, - (q15_t)0x3d60, (q15_t)0x8fad, (q15_t)0x3d49, (q15_t)0x8fa1, (q15_t)0x3d33, (q15_t)0x8f95, (q15_t)0x3d1d, (q15_t)0x8f89, - (q15_t)0x3d07, (q15_t)0x8f7d, (q15_t)0x3cf1, (q15_t)0x8f71, (q15_t)0x3cdb, (q15_t)0x8f65, (q15_t)0x3cc5, (q15_t)0x8f59, - (q15_t)0x3caf, (q15_t)0x8f4d, (q15_t)0x3c99, (q15_t)0x8f41, (q15_t)0x3c83, (q15_t)0x8f35, (q15_t)0x3c6c, (q15_t)0x8f2a, - (q15_t)0x3c56, (q15_t)0x8f1e, (q15_t)0x3c40, (q15_t)0x8f12, (q15_t)0x3c2a, (q15_t)0x8f06, (q15_t)0x3c14, (q15_t)0x8efa, - (q15_t)0x3bfd, (q15_t)0x8eee, (q15_t)0x3be7, (q15_t)0x8ee3, (q15_t)0x3bd1, (q15_t)0x8ed7, (q15_t)0x3bbb, (q15_t)0x8ecb, - (q15_t)0x3ba5, (q15_t)0x8ebf, (q15_t)0x3b8e, (q15_t)0x8eb4, (q15_t)0x3b78, (q15_t)0x8ea8, (q15_t)0x3b62, (q15_t)0x8e9c, - (q15_t)0x3b4c, (q15_t)0x8e91, (q15_t)0x3b35, (q15_t)0x8e85, (q15_t)0x3b1f, (q15_t)0x8e7a, (q15_t)0x3b09, (q15_t)0x8e6e, - (q15_t)0x3af2, (q15_t)0x8e62, (q15_t)0x3adc, (q15_t)0x8e57, (q15_t)0x3ac6, (q15_t)0x8e4b, (q15_t)0x3aaf, (q15_t)0x8e40, - (q15_t)0x3a99, (q15_t)0x8e34, (q15_t)0x3a83, (q15_t)0x8e29, (q15_t)0x3a6c, (q15_t)0x8e1d, (q15_t)0x3a56, (q15_t)0x8e12, - (q15_t)0x3a40, (q15_t)0x8e06, (q15_t)0x3a29, (q15_t)0x8dfb, (q15_t)0x3a13, (q15_t)0x8def, (q15_t)0x39fd, (q15_t)0x8de4, - (q15_t)0x39e6, (q15_t)0x8dd9, (q15_t)0x39d0, (q15_t)0x8dcd, (q15_t)0x39b9, (q15_t)0x8dc2, (q15_t)0x39a3, (q15_t)0x8db7, - (q15_t)0x398c, (q15_t)0x8dab, (q15_t)0x3976, (q15_t)0x8da0, (q15_t)0x395f, (q15_t)0x8d95, (q15_t)0x3949, (q15_t)0x8d8a, - (q15_t)0x3932, (q15_t)0x8d7e, (q15_t)0x391c, (q15_t)0x8d73, (q15_t)0x3906, (q15_t)0x8d68, (q15_t)0x38ef, (q15_t)0x8d5d, - (q15_t)0x38d8, (q15_t)0x8d51, (q15_t)0x38c2, (q15_t)0x8d46, (q15_t)0x38ab, (q15_t)0x8d3b, (q15_t)0x3895, (q15_t)0x8d30, - (q15_t)0x387e, (q15_t)0x8d25, (q15_t)0x3868, (q15_t)0x8d1a, (q15_t)0x3851, (q15_t)0x8d0f, (q15_t)0x383b, (q15_t)0x8d04, - (q15_t)0x3824, (q15_t)0x8cf9, (q15_t)0x380d, (q15_t)0x8cee, (q15_t)0x37f7, (q15_t)0x8ce3, (q15_t)0x37e0, (q15_t)0x8cd8, - (q15_t)0x37ca, (q15_t)0x8ccd, (q15_t)0x37b3, (q15_t)0x8cc2, (q15_t)0x379c, (q15_t)0x8cb7, (q15_t)0x3786, (q15_t)0x8cac, - (q15_t)0x376f, (q15_t)0x8ca1, (q15_t)0x3758, (q15_t)0x8c96, (q15_t)0x3742, (q15_t)0x8c8b, (q15_t)0x372b, (q15_t)0x8c81, - (q15_t)0x3714, (q15_t)0x8c76, (q15_t)0x36fe, (q15_t)0x8c6b, (q15_t)0x36e7, (q15_t)0x8c60, (q15_t)0x36d0, (q15_t)0x8c55, - (q15_t)0x36ba, (q15_t)0x8c4b, (q15_t)0x36a3, (q15_t)0x8c40, (q15_t)0x368c, (q15_t)0x8c35, (q15_t)0x3675, (q15_t)0x8c2a, - (q15_t)0x365f, (q15_t)0x8c20, (q15_t)0x3648, (q15_t)0x8c15, (q15_t)0x3631, (q15_t)0x8c0a, (q15_t)0x361a, (q15_t)0x8c00, - (q15_t)0x3604, (q15_t)0x8bf5, (q15_t)0x35ed, (q15_t)0x8beb, (q15_t)0x35d6, (q15_t)0x8be0, (q15_t)0x35bf, (q15_t)0x8bd5, - (q15_t)0x35a8, (q15_t)0x8bcb, (q15_t)0x3592, (q15_t)0x8bc0, (q15_t)0x357b, (q15_t)0x8bb6, (q15_t)0x3564, (q15_t)0x8bab, - (q15_t)0x354d, (q15_t)0x8ba1, (q15_t)0x3536, (q15_t)0x8b96, (q15_t)0x351f, (q15_t)0x8b8c, (q15_t)0x3508, (q15_t)0x8b82, - (q15_t)0x34f2, (q15_t)0x8b77, (q15_t)0x34db, (q15_t)0x8b6d, (q15_t)0x34c4, (q15_t)0x8b62, (q15_t)0x34ad, (q15_t)0x8b58, - (q15_t)0x3496, (q15_t)0x8b4e, (q15_t)0x347f, (q15_t)0x8b43, (q15_t)0x3468, (q15_t)0x8b39, (q15_t)0x3451, (q15_t)0x8b2f, - (q15_t)0x343a, (q15_t)0x8b25, (q15_t)0x3423, (q15_t)0x8b1a, (q15_t)0x340c, (q15_t)0x8b10, (q15_t)0x33f5, (q15_t)0x8b06, - (q15_t)0x33de, (q15_t)0x8afc, (q15_t)0x33c7, (q15_t)0x8af1, (q15_t)0x33b0, (q15_t)0x8ae7, (q15_t)0x3399, (q15_t)0x8add, - (q15_t)0x3382, (q15_t)0x8ad3, (q15_t)0x336b, (q15_t)0x8ac9, (q15_t)0x3354, (q15_t)0x8abf, (q15_t)0x333d, (q15_t)0x8ab5, - (q15_t)0x3326, (q15_t)0x8aab, (q15_t)0x330f, (q15_t)0x8aa1, (q15_t)0x32f8, (q15_t)0x8a97, (q15_t)0x32e1, (q15_t)0x8a8d, - (q15_t)0x32ca, (q15_t)0x8a83, (q15_t)0x32b3, (q15_t)0x8a79, (q15_t)0x329c, (q15_t)0x8a6f, (q15_t)0x3285, (q15_t)0x8a65, - (q15_t)0x326e, (q15_t)0x8a5b, (q15_t)0x3257, (q15_t)0x8a51, (q15_t)0x3240, (q15_t)0x8a47, (q15_t)0x3228, (q15_t)0x8a3d, - (q15_t)0x3211, (q15_t)0x8a34, (q15_t)0x31fa, (q15_t)0x8a2a, (q15_t)0x31e3, (q15_t)0x8a20, (q15_t)0x31cc, (q15_t)0x8a16, - (q15_t)0x31b5, (q15_t)0x8a0c, (q15_t)0x319e, (q15_t)0x8a03, (q15_t)0x3186, (q15_t)0x89f9, (q15_t)0x316f, (q15_t)0x89ef, - (q15_t)0x3158, (q15_t)0x89e5, (q15_t)0x3141, (q15_t)0x89dc, (q15_t)0x312a, (q15_t)0x89d2, (q15_t)0x3112, (q15_t)0x89c8, - (q15_t)0x30fb, (q15_t)0x89bf, (q15_t)0x30e4, (q15_t)0x89b5, (q15_t)0x30cd, (q15_t)0x89ac, (q15_t)0x30b6, (q15_t)0x89a2, - (q15_t)0x309e, (q15_t)0x8998, (q15_t)0x3087, (q15_t)0x898f, (q15_t)0x3070, (q15_t)0x8985, (q15_t)0x3059, (q15_t)0x897c, - (q15_t)0x3041, (q15_t)0x8972, (q15_t)0x302a, (q15_t)0x8969, (q15_t)0x3013, (q15_t)0x8960, (q15_t)0x2ffb, (q15_t)0x8956, - (q15_t)0x2fe4, (q15_t)0x894d, (q15_t)0x2fcd, (q15_t)0x8943, (q15_t)0x2fb5, (q15_t)0x893a, (q15_t)0x2f9e, (q15_t)0x8931, - (q15_t)0x2f87, (q15_t)0x8927, (q15_t)0x2f6f, (q15_t)0x891e, (q15_t)0x2f58, (q15_t)0x8915, (q15_t)0x2f41, (q15_t)0x890b, - (q15_t)0x2f29, (q15_t)0x8902, (q15_t)0x2f12, (q15_t)0x88f9, (q15_t)0x2efb, (q15_t)0x88f0, (q15_t)0x2ee3, (q15_t)0x88e6, - (q15_t)0x2ecc, (q15_t)0x88dd, (q15_t)0x2eb5, (q15_t)0x88d4, (q15_t)0x2e9d, (q15_t)0x88cb, (q15_t)0x2e86, (q15_t)0x88c2, - (q15_t)0x2e6e, (q15_t)0x88b9, (q15_t)0x2e57, (q15_t)0x88af, (q15_t)0x2e3f, (q15_t)0x88a6, (q15_t)0x2e28, (q15_t)0x889d, - (q15_t)0x2e11, (q15_t)0x8894, (q15_t)0x2df9, (q15_t)0x888b, (q15_t)0x2de2, (q15_t)0x8882, (q15_t)0x2dca, (q15_t)0x8879, - (q15_t)0x2db3, (q15_t)0x8870, (q15_t)0x2d9b, (q15_t)0x8867, (q15_t)0x2d84, (q15_t)0x885e, (q15_t)0x2d6c, (q15_t)0x8855, - (q15_t)0x2d55, (q15_t)0x884c, (q15_t)0x2d3d, (q15_t)0x8844, (q15_t)0x2d26, (q15_t)0x883b, (q15_t)0x2d0e, (q15_t)0x8832, - (q15_t)0x2cf7, (q15_t)0x8829, (q15_t)0x2cdf, (q15_t)0x8820, (q15_t)0x2cc8, (q15_t)0x8817, (q15_t)0x2cb0, (q15_t)0x880f, - (q15_t)0x2c98, (q15_t)0x8806, (q15_t)0x2c81, (q15_t)0x87fd, (q15_t)0x2c69, (q15_t)0x87f4, (q15_t)0x2c52, (q15_t)0x87ec, - (q15_t)0x2c3a, (q15_t)0x87e3, (q15_t)0x2c23, (q15_t)0x87da, (q15_t)0x2c0b, (q15_t)0x87d2, (q15_t)0x2bf3, (q15_t)0x87c9, - (q15_t)0x2bdc, (q15_t)0x87c0, (q15_t)0x2bc4, (q15_t)0x87b8, (q15_t)0x2bad, (q15_t)0x87af, (q15_t)0x2b95, (q15_t)0x87a7, - (q15_t)0x2b7d, (q15_t)0x879e, (q15_t)0x2b66, (q15_t)0x8795, (q15_t)0x2b4e, (q15_t)0x878d, (q15_t)0x2b36, (q15_t)0x8784, - (q15_t)0x2b1f, (q15_t)0x877c, (q15_t)0x2b07, (q15_t)0x8774, (q15_t)0x2aef, (q15_t)0x876b, (q15_t)0x2ad8, (q15_t)0x8763, - (q15_t)0x2ac0, (q15_t)0x875a, (q15_t)0x2aa8, (q15_t)0x8752, (q15_t)0x2a91, (q15_t)0x874a, (q15_t)0x2a79, (q15_t)0x8741, - (q15_t)0x2a61, (q15_t)0x8739, (q15_t)0x2a49, (q15_t)0x8731, (q15_t)0x2a32, (q15_t)0x8728, (q15_t)0x2a1a, (q15_t)0x8720, - (q15_t)0x2a02, (q15_t)0x8718, (q15_t)0x29eb, (q15_t)0x870f, (q15_t)0x29d3, (q15_t)0x8707, (q15_t)0x29bb, (q15_t)0x86ff, - (q15_t)0x29a3, (q15_t)0x86f7, (q15_t)0x298b, (q15_t)0x86ef, (q15_t)0x2974, (q15_t)0x86e7, (q15_t)0x295c, (q15_t)0x86de, - (q15_t)0x2944, (q15_t)0x86d6, (q15_t)0x292c, (q15_t)0x86ce, (q15_t)0x2915, (q15_t)0x86c6, (q15_t)0x28fd, (q15_t)0x86be, - (q15_t)0x28e5, (q15_t)0x86b6, (q15_t)0x28cd, (q15_t)0x86ae, (q15_t)0x28b5, (q15_t)0x86a6, (q15_t)0x289d, (q15_t)0x869e, - (q15_t)0x2886, (q15_t)0x8696, (q15_t)0x286e, (q15_t)0x868e, (q15_t)0x2856, (q15_t)0x8686, (q15_t)0x283e, (q15_t)0x867e, - (q15_t)0x2826, (q15_t)0x8676, (q15_t)0x280e, (q15_t)0x866e, (q15_t)0x27f6, (q15_t)0x8667, (q15_t)0x27df, (q15_t)0x865f, - (q15_t)0x27c7, (q15_t)0x8657, (q15_t)0x27af, (q15_t)0x864f, (q15_t)0x2797, (q15_t)0x8647, (q15_t)0x277f, (q15_t)0x8640, - (q15_t)0x2767, (q15_t)0x8638, (q15_t)0x274f, (q15_t)0x8630, (q15_t)0x2737, (q15_t)0x8628, (q15_t)0x271f, (q15_t)0x8621, - (q15_t)0x2707, (q15_t)0x8619, (q15_t)0x26ef, (q15_t)0x8611, (q15_t)0x26d8, (q15_t)0x860a, (q15_t)0x26c0, (q15_t)0x8602, - (q15_t)0x26a8, (q15_t)0x85fb, (q15_t)0x2690, (q15_t)0x85f3, (q15_t)0x2678, (q15_t)0x85eb, (q15_t)0x2660, (q15_t)0x85e4, - (q15_t)0x2648, (q15_t)0x85dc, (q15_t)0x2630, (q15_t)0x85d5, (q15_t)0x2618, (q15_t)0x85cd, (q15_t)0x2600, (q15_t)0x85c6, - (q15_t)0x25e8, (q15_t)0x85be, (q15_t)0x25d0, (q15_t)0x85b7, (q15_t)0x25b8, (q15_t)0x85b0, (q15_t)0x25a0, (q15_t)0x85a8, - (q15_t)0x2588, (q15_t)0x85a1, (q15_t)0x2570, (q15_t)0x8599, (q15_t)0x2558, (q15_t)0x8592, (q15_t)0x2540, (q15_t)0x858b, - (q15_t)0x2528, (q15_t)0x8583, (q15_t)0x250f, (q15_t)0x857c, (q15_t)0x24f7, (q15_t)0x8575, (q15_t)0x24df, (q15_t)0x856e, - (q15_t)0x24c7, (q15_t)0x8566, (q15_t)0x24af, (q15_t)0x855f, (q15_t)0x2497, (q15_t)0x8558, (q15_t)0x247f, (q15_t)0x8551, - (q15_t)0x2467, (q15_t)0x854a, (q15_t)0x244f, (q15_t)0x8543, (q15_t)0x2437, (q15_t)0x853b, (q15_t)0x241f, (q15_t)0x8534, - (q15_t)0x2407, (q15_t)0x852d, (q15_t)0x23ee, (q15_t)0x8526, (q15_t)0x23d6, (q15_t)0x851f, (q15_t)0x23be, (q15_t)0x8518, - (q15_t)0x23a6, (q15_t)0x8511, (q15_t)0x238e, (q15_t)0x850a, (q15_t)0x2376, (q15_t)0x8503, (q15_t)0x235e, (q15_t)0x84fc, - (q15_t)0x2345, (q15_t)0x84f5, (q15_t)0x232d, (q15_t)0x84ee, (q15_t)0x2315, (q15_t)0x84e7, (q15_t)0x22fd, (q15_t)0x84e1, - (q15_t)0x22e5, (q15_t)0x84da, (q15_t)0x22cd, (q15_t)0x84d3, (q15_t)0x22b4, (q15_t)0x84cc, (q15_t)0x229c, (q15_t)0x84c5, - (q15_t)0x2284, (q15_t)0x84be, (q15_t)0x226c, (q15_t)0x84b8, (q15_t)0x2254, (q15_t)0x84b1, (q15_t)0x223b, (q15_t)0x84aa, - (q15_t)0x2223, (q15_t)0x84a3, (q15_t)0x220b, (q15_t)0x849d, (q15_t)0x21f3, (q15_t)0x8496, (q15_t)0x21da, (q15_t)0x848f, - (q15_t)0x21c2, (q15_t)0x8489, (q15_t)0x21aa, (q15_t)0x8482, (q15_t)0x2192, (q15_t)0x847c, (q15_t)0x2179, (q15_t)0x8475, - (q15_t)0x2161, (q15_t)0x846e, (q15_t)0x2149, (q15_t)0x8468, (q15_t)0x2131, (q15_t)0x8461, (q15_t)0x2118, (q15_t)0x845b, - (q15_t)0x2100, (q15_t)0x8454, (q15_t)0x20e8, (q15_t)0x844e, (q15_t)0x20d0, (q15_t)0x8447, (q15_t)0x20b7, (q15_t)0x8441, - (q15_t)0x209f, (q15_t)0x843b, (q15_t)0x2087, (q15_t)0x8434, (q15_t)0x206e, (q15_t)0x842e, (q15_t)0x2056, (q15_t)0x8427, - (q15_t)0x203e, (q15_t)0x8421, (q15_t)0x2025, (q15_t)0x841b, (q15_t)0x200d, (q15_t)0x8415, (q15_t)0x1ff5, (q15_t)0x840e, - (q15_t)0x1fdc, (q15_t)0x8408, (q15_t)0x1fc4, (q15_t)0x8402, (q15_t)0x1fac, (q15_t)0x83fb, (q15_t)0x1f93, (q15_t)0x83f5, - (q15_t)0x1f7b, (q15_t)0x83ef, (q15_t)0x1f63, (q15_t)0x83e9, (q15_t)0x1f4a, (q15_t)0x83e3, (q15_t)0x1f32, (q15_t)0x83dd, - (q15_t)0x1f19, (q15_t)0x83d7, (q15_t)0x1f01, (q15_t)0x83d0, (q15_t)0x1ee9, (q15_t)0x83ca, (q15_t)0x1ed0, (q15_t)0x83c4, - (q15_t)0x1eb8, (q15_t)0x83be, (q15_t)0x1ea0, (q15_t)0x83b8, (q15_t)0x1e87, (q15_t)0x83b2, (q15_t)0x1e6f, (q15_t)0x83ac, - (q15_t)0x1e56, (q15_t)0x83a6, (q15_t)0x1e3e, (q15_t)0x83a0, (q15_t)0x1e25, (q15_t)0x839a, (q15_t)0x1e0d, (q15_t)0x8394, - (q15_t)0x1df5, (q15_t)0x838f, (q15_t)0x1ddc, (q15_t)0x8389, (q15_t)0x1dc4, (q15_t)0x8383, (q15_t)0x1dab, (q15_t)0x837d, - (q15_t)0x1d93, (q15_t)0x8377, (q15_t)0x1d7a, (q15_t)0x8371, (q15_t)0x1d62, (q15_t)0x836c, (q15_t)0x1d49, (q15_t)0x8366, - (q15_t)0x1d31, (q15_t)0x8360, (q15_t)0x1d18, (q15_t)0x835a, (q15_t)0x1d00, (q15_t)0x8355, (q15_t)0x1ce8, (q15_t)0x834f, - (q15_t)0x1ccf, (q15_t)0x8349, (q15_t)0x1cb7, (q15_t)0x8344, (q15_t)0x1c9e, (q15_t)0x833e, (q15_t)0x1c86, (q15_t)0x8338, - (q15_t)0x1c6d, (q15_t)0x8333, (q15_t)0x1c55, (q15_t)0x832d, (q15_t)0x1c3c, (q15_t)0x8328, (q15_t)0x1c24, (q15_t)0x8322, - (q15_t)0x1c0b, (q15_t)0x831d, (q15_t)0x1bf2, (q15_t)0x8317, (q15_t)0x1bda, (q15_t)0x8312, (q15_t)0x1bc1, (q15_t)0x830c, - (q15_t)0x1ba9, (q15_t)0x8307, (q15_t)0x1b90, (q15_t)0x8301, (q15_t)0x1b78, (q15_t)0x82fc, (q15_t)0x1b5f, (q15_t)0x82f7, - (q15_t)0x1b47, (q15_t)0x82f1, (q15_t)0x1b2e, (q15_t)0x82ec, (q15_t)0x1b16, (q15_t)0x82e7, (q15_t)0x1afd, (q15_t)0x82e1, - (q15_t)0x1ae4, (q15_t)0x82dc, (q15_t)0x1acc, (q15_t)0x82d7, (q15_t)0x1ab3, (q15_t)0x82d1, (q15_t)0x1a9b, (q15_t)0x82cc, - (q15_t)0x1a82, (q15_t)0x82c7, (q15_t)0x1a6a, (q15_t)0x82c2, (q15_t)0x1a51, (q15_t)0x82bd, (q15_t)0x1a38, (q15_t)0x82b7, - (q15_t)0x1a20, (q15_t)0x82b2, (q15_t)0x1a07, (q15_t)0x82ad, (q15_t)0x19ef, (q15_t)0x82a8, (q15_t)0x19d6, (q15_t)0x82a3, - (q15_t)0x19bd, (q15_t)0x829e, (q15_t)0x19a5, (q15_t)0x8299, (q15_t)0x198c, (q15_t)0x8294, (q15_t)0x1973, (q15_t)0x828f, - (q15_t)0x195b, (q15_t)0x828a, (q15_t)0x1942, (q15_t)0x8285, (q15_t)0x192a, (q15_t)0x8280, (q15_t)0x1911, (q15_t)0x827b, - (q15_t)0x18f8, (q15_t)0x8276, (q15_t)0x18e0, (q15_t)0x8271, (q15_t)0x18c7, (q15_t)0x826c, (q15_t)0x18ae, (q15_t)0x8268, - (q15_t)0x1896, (q15_t)0x8263, (q15_t)0x187d, (q15_t)0x825e, (q15_t)0x1864, (q15_t)0x8259, (q15_t)0x184c, (q15_t)0x8254, - (q15_t)0x1833, (q15_t)0x8250, (q15_t)0x181a, (q15_t)0x824b, (q15_t)0x1802, (q15_t)0x8246, (q15_t)0x17e9, (q15_t)0x8241, - (q15_t)0x17d0, (q15_t)0x823d, (q15_t)0x17b7, (q15_t)0x8238, (q15_t)0x179f, (q15_t)0x8233, (q15_t)0x1786, (q15_t)0x822f, - (q15_t)0x176d, (q15_t)0x822a, (q15_t)0x1755, (q15_t)0x8226, (q15_t)0x173c, (q15_t)0x8221, (q15_t)0x1723, (q15_t)0x821c, - (q15_t)0x170a, (q15_t)0x8218, (q15_t)0x16f2, (q15_t)0x8213, (q15_t)0x16d9, (q15_t)0x820f, (q15_t)0x16c0, (q15_t)0x820a, - (q15_t)0x16a8, (q15_t)0x8206, (q15_t)0x168f, (q15_t)0x8201, (q15_t)0x1676, (q15_t)0x81fd, (q15_t)0x165d, (q15_t)0x81f9, - (q15_t)0x1645, (q15_t)0x81f4, (q15_t)0x162c, (q15_t)0x81f0, (q15_t)0x1613, (q15_t)0x81ec, (q15_t)0x15fa, (q15_t)0x81e7, - (q15_t)0x15e2, (q15_t)0x81e3, (q15_t)0x15c9, (q15_t)0x81df, (q15_t)0x15b0, (q15_t)0x81da, (q15_t)0x1597, (q15_t)0x81d6, - (q15_t)0x157f, (q15_t)0x81d2, (q15_t)0x1566, (q15_t)0x81ce, (q15_t)0x154d, (q15_t)0x81c9, (q15_t)0x1534, (q15_t)0x81c5, - (q15_t)0x151b, (q15_t)0x81c1, (q15_t)0x1503, (q15_t)0x81bd, (q15_t)0x14ea, (q15_t)0x81b9, (q15_t)0x14d1, (q15_t)0x81b5, - (q15_t)0x14b8, (q15_t)0x81b1, (q15_t)0x149f, (q15_t)0x81ad, (q15_t)0x1487, (q15_t)0x81a9, (q15_t)0x146e, (q15_t)0x81a5, - (q15_t)0x1455, (q15_t)0x81a1, (q15_t)0x143c, (q15_t)0x819d, (q15_t)0x1423, (q15_t)0x8199, (q15_t)0x140b, (q15_t)0x8195, - (q15_t)0x13f2, (q15_t)0x8191, (q15_t)0x13d9, (q15_t)0x818d, (q15_t)0x13c0, (q15_t)0x8189, (q15_t)0x13a7, (q15_t)0x8185, - (q15_t)0x138e, (q15_t)0x8181, (q15_t)0x1376, (q15_t)0x817d, (q15_t)0x135d, (q15_t)0x817a, (q15_t)0x1344, (q15_t)0x8176, - (q15_t)0x132b, (q15_t)0x8172, (q15_t)0x1312, (q15_t)0x816e, (q15_t)0x12f9, (q15_t)0x816b, (q15_t)0x12e0, (q15_t)0x8167, - (q15_t)0x12c8, (q15_t)0x8163, (q15_t)0x12af, (q15_t)0x815f, (q15_t)0x1296, (q15_t)0x815c, (q15_t)0x127d, (q15_t)0x8158, - (q15_t)0x1264, (q15_t)0x8155, (q15_t)0x124b, (q15_t)0x8151, (q15_t)0x1232, (q15_t)0x814d, (q15_t)0x1219, (q15_t)0x814a, - (q15_t)0x1201, (q15_t)0x8146, (q15_t)0x11e8, (q15_t)0x8143, (q15_t)0x11cf, (q15_t)0x813f, (q15_t)0x11b6, (q15_t)0x813c, - (q15_t)0x119d, (q15_t)0x8138, (q15_t)0x1184, (q15_t)0x8135, (q15_t)0x116b, (q15_t)0x8131, (q15_t)0x1152, (q15_t)0x812e, - (q15_t)0x1139, (q15_t)0x812b, (q15_t)0x1121, (q15_t)0x8127, (q15_t)0x1108, (q15_t)0x8124, (q15_t)0x10ef, (q15_t)0x8121, - (q15_t)0x10d6, (q15_t)0x811d, (q15_t)0x10bd, (q15_t)0x811a, (q15_t)0x10a4, (q15_t)0x8117, (q15_t)0x108b, (q15_t)0x8113, - (q15_t)0x1072, (q15_t)0x8110, (q15_t)0x1059, (q15_t)0x810d, (q15_t)0x1040, (q15_t)0x810a, (q15_t)0x1027, (q15_t)0x8107, - (q15_t)0x100e, (q15_t)0x8103, (q15_t)0xff5, (q15_t)0x8100, (q15_t)0xfdd, (q15_t)0x80fd, (q15_t)0xfc4, (q15_t)0x80fa, - (q15_t)0xfab, (q15_t)0x80f7, (q15_t)0xf92, (q15_t)0x80f4, (q15_t)0xf79, (q15_t)0x80f1, (q15_t)0xf60, (q15_t)0x80ee, - (q15_t)0xf47, (q15_t)0x80eb, (q15_t)0xf2e, (q15_t)0x80e8, (q15_t)0xf15, (q15_t)0x80e5, (q15_t)0xefc, (q15_t)0x80e2, - (q15_t)0xee3, (q15_t)0x80df, (q15_t)0xeca, (q15_t)0x80dc, (q15_t)0xeb1, (q15_t)0x80d9, (q15_t)0xe98, (q15_t)0x80d6, - (q15_t)0xe7f, (q15_t)0x80d3, (q15_t)0xe66, (q15_t)0x80d1, (q15_t)0xe4d, (q15_t)0x80ce, (q15_t)0xe34, (q15_t)0x80cb, - (q15_t)0xe1b, (q15_t)0x80c8, (q15_t)0xe02, (q15_t)0x80c5, (q15_t)0xde9, (q15_t)0x80c3, (q15_t)0xdd0, (q15_t)0x80c0, - (q15_t)0xdb7, (q15_t)0x80bd, (q15_t)0xd9e, (q15_t)0x80bb, (q15_t)0xd85, (q15_t)0x80b8, (q15_t)0xd6c, (q15_t)0x80b5, - (q15_t)0xd53, (q15_t)0x80b3, (q15_t)0xd3a, (q15_t)0x80b0, (q15_t)0xd21, (q15_t)0x80ad, (q15_t)0xd08, (q15_t)0x80ab, - (q15_t)0xcef, (q15_t)0x80a8, (q15_t)0xcd6, (q15_t)0x80a6, (q15_t)0xcbd, (q15_t)0x80a3, (q15_t)0xca4, (q15_t)0x80a1, - (q15_t)0xc8b, (q15_t)0x809e, (q15_t)0xc72, (q15_t)0x809c, (q15_t)0xc59, (q15_t)0x8099, (q15_t)0xc40, (q15_t)0x8097, - (q15_t)0xc27, (q15_t)0x8095, (q15_t)0xc0e, (q15_t)0x8092, (q15_t)0xbf5, (q15_t)0x8090, (q15_t)0xbdc, (q15_t)0x808e, - (q15_t)0xbc3, (q15_t)0x808b, (q15_t)0xbaa, (q15_t)0x8089, (q15_t)0xb91, (q15_t)0x8087, (q15_t)0xb78, (q15_t)0x8084, - (q15_t)0xb5f, (q15_t)0x8082, (q15_t)0xb46, (q15_t)0x8080, (q15_t)0xb2d, (q15_t)0x807e, (q15_t)0xb14, (q15_t)0x807b, - (q15_t)0xafb, (q15_t)0x8079, (q15_t)0xae2, (q15_t)0x8077, (q15_t)0xac9, (q15_t)0x8075, (q15_t)0xab0, (q15_t)0x8073, - (q15_t)0xa97, (q15_t)0x8071, (q15_t)0xa7e, (q15_t)0x806f, (q15_t)0xa65, (q15_t)0x806d, (q15_t)0xa4c, (q15_t)0x806b, - (q15_t)0xa33, (q15_t)0x8069, (q15_t)0xa19, (q15_t)0x8067, (q15_t)0xa00, (q15_t)0x8065, (q15_t)0x9e7, (q15_t)0x8063, - (q15_t)0x9ce, (q15_t)0x8061, (q15_t)0x9b5, (q15_t)0x805f, (q15_t)0x99c, (q15_t)0x805d, (q15_t)0x983, (q15_t)0x805b, - (q15_t)0x96a, (q15_t)0x8059, (q15_t)0x951, (q15_t)0x8057, (q15_t)0x938, (q15_t)0x8056, (q15_t)0x91f, (q15_t)0x8054, - (q15_t)0x906, (q15_t)0x8052, (q15_t)0x8ed, (q15_t)0x8050, (q15_t)0x8d4, (q15_t)0x804f, (q15_t)0x8bb, (q15_t)0x804d, - (q15_t)0x8a2, (q15_t)0x804b, (q15_t)0x888, (q15_t)0x8049, (q15_t)0x86f, (q15_t)0x8048, (q15_t)0x856, (q15_t)0x8046, - (q15_t)0x83d, (q15_t)0x8044, (q15_t)0x824, (q15_t)0x8043, (q15_t)0x80b, (q15_t)0x8041, (q15_t)0x7f2, (q15_t)0x8040, - (q15_t)0x7d9, (q15_t)0x803e, (q15_t)0x7c0, (q15_t)0x803d, (q15_t)0x7a7, (q15_t)0x803b, (q15_t)0x78e, (q15_t)0x803a, - (q15_t)0x775, (q15_t)0x8038, (q15_t)0x75b, (q15_t)0x8037, (q15_t)0x742, (q15_t)0x8035, (q15_t)0x729, (q15_t)0x8034, - (q15_t)0x710, (q15_t)0x8032, (q15_t)0x6f7, (q15_t)0x8031, (q15_t)0x6de, (q15_t)0x8030, (q15_t)0x6c5, (q15_t)0x802e, - (q15_t)0x6ac, (q15_t)0x802d, (q15_t)0x693, (q15_t)0x802c, (q15_t)0x67a, (q15_t)0x802a, (q15_t)0x660, (q15_t)0x8029, - (q15_t)0x647, (q15_t)0x8028, (q15_t)0x62e, (q15_t)0x8027, (q15_t)0x615, (q15_t)0x8026, (q15_t)0x5fc, (q15_t)0x8024, - (q15_t)0x5e3, (q15_t)0x8023, (q15_t)0x5ca, (q15_t)0x8022, (q15_t)0x5b1, (q15_t)0x8021, (q15_t)0x598, (q15_t)0x8020, - (q15_t)0x57f, (q15_t)0x801f, (q15_t)0x565, (q15_t)0x801e, (q15_t)0x54c, (q15_t)0x801d, (q15_t)0x533, (q15_t)0x801c, - (q15_t)0x51a, (q15_t)0x801b, (q15_t)0x501, (q15_t)0x801a, (q15_t)0x4e8, (q15_t)0x8019, (q15_t)0x4cf, (q15_t)0x8018, - (q15_t)0x4b6, (q15_t)0x8017, (q15_t)0x49c, (q15_t)0x8016, (q15_t)0x483, (q15_t)0x8015, (q15_t)0x46a, (q15_t)0x8014, - (q15_t)0x451, (q15_t)0x8013, (q15_t)0x438, (q15_t)0x8012, (q15_t)0x41f, (q15_t)0x8012, (q15_t)0x406, (q15_t)0x8011, - (q15_t)0x3ed, (q15_t)0x8010, (q15_t)0x3d4, (q15_t)0x800f, (q15_t)0x3ba, (q15_t)0x800e, (q15_t)0x3a1, (q15_t)0x800e, - (q15_t)0x388, (q15_t)0x800d, (q15_t)0x36f, (q15_t)0x800c, (q15_t)0x356, (q15_t)0x800c, (q15_t)0x33d, (q15_t)0x800b, - (q15_t)0x324, (q15_t)0x800a, (q15_t)0x30b, (q15_t)0x800a, (q15_t)0x2f1, (q15_t)0x8009, (q15_t)0x2d8, (q15_t)0x8009, - (q15_t)0x2bf, (q15_t)0x8008, (q15_t)0x2a6, (q15_t)0x8008, (q15_t)0x28d, (q15_t)0x8007, (q15_t)0x274, (q15_t)0x8007, - (q15_t)0x25b, (q15_t)0x8006, (q15_t)0x242, (q15_t)0x8006, (q15_t)0x228, (q15_t)0x8005, (q15_t)0x20f, (q15_t)0x8005, - (q15_t)0x1f6, (q15_t)0x8004, (q15_t)0x1dd, (q15_t)0x8004, (q15_t)0x1c4, (q15_t)0x8004, (q15_t)0x1ab, (q15_t)0x8003, - (q15_t)0x192, (q15_t)0x8003, (q15_t)0x178, (q15_t)0x8003, (q15_t)0x15f, (q15_t)0x8002, (q15_t)0x146, (q15_t)0x8002, - (q15_t)0x12d, (q15_t)0x8002, (q15_t)0x114, (q15_t)0x8002, (q15_t)0xfb, (q15_t)0x8001, (q15_t)0xe2, (q15_t)0x8001, - (q15_t)0xc9, (q15_t)0x8001, (q15_t)0xaf, (q15_t)0x8001, (q15_t)0x96, (q15_t)0x8001, (q15_t)0x7d, (q15_t)0x8001, - (q15_t)0x64, (q15_t)0x8001, (q15_t)0x4b, (q15_t)0x8001, (q15_t)0x32, (q15_t)0x8001, (q15_t)0x19, (q15_t)0x8001 -}; - -static const q15_t ALIGN4 WeightsQ15_8192[16384] = { - (q15_t)0x7fff, (q15_t)0x0, (q15_t)0x7fff, (q15_t)0xfffa, (q15_t)0x7fff, (q15_t)0xfff4, (q15_t)0x7fff, (q15_t)0xffee, - (q15_t)0x7fff, (q15_t)0xffe7, (q15_t)0x7fff, (q15_t)0xffe1, (q15_t)0x7fff, (q15_t)0xffdb, (q15_t)0x7fff, (q15_t)0xffd5, - (q15_t)0x7fff, (q15_t)0xffce, (q15_t)0x7fff, (q15_t)0xffc8, (q15_t)0x7fff, (q15_t)0xffc2, (q15_t)0x7fff, (q15_t)0xffbb, - (q15_t)0x7fff, (q15_t)0xffb5, (q15_t)0x7fff, (q15_t)0xffaf, (q15_t)0x7fff, (q15_t)0xffa9, (q15_t)0x7fff, (q15_t)0xffa2, - (q15_t)0x7fff, (q15_t)0xff9c, (q15_t)0x7fff, (q15_t)0xff96, (q15_t)0x7fff, (q15_t)0xff8f, (q15_t)0x7fff, (q15_t)0xff89, - (q15_t)0x7fff, (q15_t)0xff83, (q15_t)0x7fff, (q15_t)0xff7d, (q15_t)0x7fff, (q15_t)0xff76, (q15_t)0x7fff, (q15_t)0xff70, - (q15_t)0x7fff, (q15_t)0xff6a, (q15_t)0x7fff, (q15_t)0xff63, (q15_t)0x7fff, (q15_t)0xff5d, (q15_t)0x7fff, (q15_t)0xff57, - (q15_t)0x7fff, (q15_t)0xff51, (q15_t)0x7fff, (q15_t)0xff4a, (q15_t)0x7fff, (q15_t)0xff44, (q15_t)0x7fff, (q15_t)0xff3e, - (q15_t)0x7fff, (q15_t)0xff37, (q15_t)0x7fff, (q15_t)0xff31, (q15_t)0x7fff, (q15_t)0xff2b, (q15_t)0x7fff, (q15_t)0xff25, - (q15_t)0x7fff, (q15_t)0xff1e, (q15_t)0x7fff, (q15_t)0xff18, (q15_t)0x7fff, (q15_t)0xff12, (q15_t)0x7fff, (q15_t)0xff0b, - (q15_t)0x7fff, (q15_t)0xff05, (q15_t)0x7ffe, (q15_t)0xfeff, (q15_t)0x7ffe, (q15_t)0xfef9, (q15_t)0x7ffe, (q15_t)0xfef2, - (q15_t)0x7ffe, (q15_t)0xfeec, (q15_t)0x7ffe, (q15_t)0xfee6, (q15_t)0x7ffe, (q15_t)0xfedf, (q15_t)0x7ffe, (q15_t)0xfed9, - (q15_t)0x7ffe, (q15_t)0xfed3, (q15_t)0x7ffe, (q15_t)0xfecd, (q15_t)0x7ffe, (q15_t)0xfec6, (q15_t)0x7ffe, (q15_t)0xfec0, - (q15_t)0x7ffe, (q15_t)0xfeba, (q15_t)0x7ffe, (q15_t)0xfeb3, (q15_t)0x7ffe, (q15_t)0xfead, (q15_t)0x7ffe, (q15_t)0xfea7, - (q15_t)0x7ffe, (q15_t)0xfea1, (q15_t)0x7ffe, (q15_t)0xfe9a, (q15_t)0x7ffd, (q15_t)0xfe94, (q15_t)0x7ffd, (q15_t)0xfe8e, - (q15_t)0x7ffd, (q15_t)0xfe88, (q15_t)0x7ffd, (q15_t)0xfe81, (q15_t)0x7ffd, (q15_t)0xfe7b, (q15_t)0x7ffd, (q15_t)0xfe75, - (q15_t)0x7ffd, (q15_t)0xfe6e, (q15_t)0x7ffd, (q15_t)0xfe68, (q15_t)0x7ffd, (q15_t)0xfe62, (q15_t)0x7ffd, (q15_t)0xfe5c, - (q15_t)0x7ffd, (q15_t)0xfe55, (q15_t)0x7ffd, (q15_t)0xfe4f, (q15_t)0x7ffd, (q15_t)0xfe49, (q15_t)0x7ffc, (q15_t)0xfe42, - (q15_t)0x7ffc, (q15_t)0xfe3c, (q15_t)0x7ffc, (q15_t)0xfe36, (q15_t)0x7ffc, (q15_t)0xfe30, (q15_t)0x7ffc, (q15_t)0xfe29, - (q15_t)0x7ffc, (q15_t)0xfe23, (q15_t)0x7ffc, (q15_t)0xfe1d, (q15_t)0x7ffc, (q15_t)0xfe16, (q15_t)0x7ffc, (q15_t)0xfe10, - (q15_t)0x7ffc, (q15_t)0xfe0a, (q15_t)0x7ffc, (q15_t)0xfe04, (q15_t)0x7ffb, (q15_t)0xfdfd, (q15_t)0x7ffb, (q15_t)0xfdf7, - (q15_t)0x7ffb, (q15_t)0xfdf1, (q15_t)0x7ffb, (q15_t)0xfdea, (q15_t)0x7ffb, (q15_t)0xfde4, (q15_t)0x7ffb, (q15_t)0xfdde, - (q15_t)0x7ffb, (q15_t)0xfdd8, (q15_t)0x7ffb, (q15_t)0xfdd1, (q15_t)0x7ffb, (q15_t)0xfdcb, (q15_t)0x7ffb, (q15_t)0xfdc5, - (q15_t)0x7ffa, (q15_t)0xfdbe, (q15_t)0x7ffa, (q15_t)0xfdb8, (q15_t)0x7ffa, (q15_t)0xfdb2, (q15_t)0x7ffa, (q15_t)0xfdac, - (q15_t)0x7ffa, (q15_t)0xfda5, (q15_t)0x7ffa, (q15_t)0xfd9f, (q15_t)0x7ffa, (q15_t)0xfd99, (q15_t)0x7ffa, (q15_t)0xfd93, - (q15_t)0x7ff9, (q15_t)0xfd8c, (q15_t)0x7ff9, (q15_t)0xfd86, (q15_t)0x7ff9, (q15_t)0xfd80, (q15_t)0x7ff9, (q15_t)0xfd79, - (q15_t)0x7ff9, (q15_t)0xfd73, (q15_t)0x7ff9, (q15_t)0xfd6d, (q15_t)0x7ff9, (q15_t)0xfd67, (q15_t)0x7ff9, (q15_t)0xfd60, - (q15_t)0x7ff8, (q15_t)0xfd5a, (q15_t)0x7ff8, (q15_t)0xfd54, (q15_t)0x7ff8, (q15_t)0xfd4d, (q15_t)0x7ff8, (q15_t)0xfd47, - (q15_t)0x7ff8, (q15_t)0xfd41, (q15_t)0x7ff8, (q15_t)0xfd3b, (q15_t)0x7ff8, (q15_t)0xfd34, (q15_t)0x7ff8, (q15_t)0xfd2e, - (q15_t)0x7ff7, (q15_t)0xfd28, (q15_t)0x7ff7, (q15_t)0xfd21, (q15_t)0x7ff7, (q15_t)0xfd1b, (q15_t)0x7ff7, (q15_t)0xfd15, - (q15_t)0x7ff7, (q15_t)0xfd0f, (q15_t)0x7ff7, (q15_t)0xfd08, (q15_t)0x7ff7, (q15_t)0xfd02, (q15_t)0x7ff6, (q15_t)0xfcfc, - (q15_t)0x7ff6, (q15_t)0xfcf5, (q15_t)0x7ff6, (q15_t)0xfcef, (q15_t)0x7ff6, (q15_t)0xfce9, (q15_t)0x7ff6, (q15_t)0xfce3, - (q15_t)0x7ff6, (q15_t)0xfcdc, (q15_t)0x7ff5, (q15_t)0xfcd6, (q15_t)0x7ff5, (q15_t)0xfcd0, (q15_t)0x7ff5, (q15_t)0xfcc9, - (q15_t)0x7ff5, (q15_t)0xfcc3, (q15_t)0x7ff5, (q15_t)0xfcbd, (q15_t)0x7ff5, (q15_t)0xfcb7, (q15_t)0x7ff5, (q15_t)0xfcb0, - (q15_t)0x7ff4, (q15_t)0xfcaa, (q15_t)0x7ff4, (q15_t)0xfca4, (q15_t)0x7ff4, (q15_t)0xfc9e, (q15_t)0x7ff4, (q15_t)0xfc97, - (q15_t)0x7ff4, (q15_t)0xfc91, (q15_t)0x7ff4, (q15_t)0xfc8b, (q15_t)0x7ff3, (q15_t)0xfc84, (q15_t)0x7ff3, (q15_t)0xfc7e, - (q15_t)0x7ff3, (q15_t)0xfc78, (q15_t)0x7ff3, (q15_t)0xfc72, (q15_t)0x7ff3, (q15_t)0xfc6b, (q15_t)0x7ff2, (q15_t)0xfc65, - (q15_t)0x7ff2, (q15_t)0xfc5f, (q15_t)0x7ff2, (q15_t)0xfc58, (q15_t)0x7ff2, (q15_t)0xfc52, (q15_t)0x7ff2, (q15_t)0xfc4c, - (q15_t)0x7ff2, (q15_t)0xfc46, (q15_t)0x7ff1, (q15_t)0xfc3f, (q15_t)0x7ff1, (q15_t)0xfc39, (q15_t)0x7ff1, (q15_t)0xfc33, - (q15_t)0x7ff1, (q15_t)0xfc2c, (q15_t)0x7ff1, (q15_t)0xfc26, (q15_t)0x7ff0, (q15_t)0xfc20, (q15_t)0x7ff0, (q15_t)0xfc1a, - (q15_t)0x7ff0, (q15_t)0xfc13, (q15_t)0x7ff0, (q15_t)0xfc0d, (q15_t)0x7ff0, (q15_t)0xfc07, (q15_t)0x7fef, (q15_t)0xfc01, - (q15_t)0x7fef, (q15_t)0xfbfa, (q15_t)0x7fef, (q15_t)0xfbf4, (q15_t)0x7fef, (q15_t)0xfbee, (q15_t)0x7fef, (q15_t)0xfbe7, - (q15_t)0x7fee, (q15_t)0xfbe1, (q15_t)0x7fee, (q15_t)0xfbdb, (q15_t)0x7fee, (q15_t)0xfbd5, (q15_t)0x7fee, (q15_t)0xfbce, - (q15_t)0x7fee, (q15_t)0xfbc8, (q15_t)0x7fed, (q15_t)0xfbc2, (q15_t)0x7fed, (q15_t)0xfbbb, (q15_t)0x7fed, (q15_t)0xfbb5, - (q15_t)0x7fed, (q15_t)0xfbaf, (q15_t)0x7fed, (q15_t)0xfba9, (q15_t)0x7fec, (q15_t)0xfba2, (q15_t)0x7fec, (q15_t)0xfb9c, - (q15_t)0x7fec, (q15_t)0xfb96, (q15_t)0x7fec, (q15_t)0xfb8f, (q15_t)0x7fec, (q15_t)0xfb89, (q15_t)0x7feb, (q15_t)0xfb83, - (q15_t)0x7feb, (q15_t)0xfb7d, (q15_t)0x7feb, (q15_t)0xfb76, (q15_t)0x7feb, (q15_t)0xfb70, (q15_t)0x7fea, (q15_t)0xfb6a, - (q15_t)0x7fea, (q15_t)0xfb64, (q15_t)0x7fea, (q15_t)0xfb5d, (q15_t)0x7fea, (q15_t)0xfb57, (q15_t)0x7fea, (q15_t)0xfb51, - (q15_t)0x7fe9, (q15_t)0xfb4a, (q15_t)0x7fe9, (q15_t)0xfb44, (q15_t)0x7fe9, (q15_t)0xfb3e, (q15_t)0x7fe9, (q15_t)0xfb38, - (q15_t)0x7fe8, (q15_t)0xfb31, (q15_t)0x7fe8, (q15_t)0xfb2b, (q15_t)0x7fe8, (q15_t)0xfb25, (q15_t)0x7fe8, (q15_t)0xfb1e, - (q15_t)0x7fe7, (q15_t)0xfb18, (q15_t)0x7fe7, (q15_t)0xfb12, (q15_t)0x7fe7, (q15_t)0xfb0c, (q15_t)0x7fe7, (q15_t)0xfb05, - (q15_t)0x7fe6, (q15_t)0xfaff, (q15_t)0x7fe6, (q15_t)0xfaf9, (q15_t)0x7fe6, (q15_t)0xfaf3, (q15_t)0x7fe6, (q15_t)0xfaec, - (q15_t)0x7fe5, (q15_t)0xfae6, (q15_t)0x7fe5, (q15_t)0xfae0, (q15_t)0x7fe5, (q15_t)0xfad9, (q15_t)0x7fe5, (q15_t)0xfad3, - (q15_t)0x7fe4, (q15_t)0xfacd, (q15_t)0x7fe4, (q15_t)0xfac7, (q15_t)0x7fe4, (q15_t)0xfac0, (q15_t)0x7fe4, (q15_t)0xfaba, - (q15_t)0x7fe3, (q15_t)0xfab4, (q15_t)0x7fe3, (q15_t)0xfaad, (q15_t)0x7fe3, (q15_t)0xfaa7, (q15_t)0x7fe3, (q15_t)0xfaa1, - (q15_t)0x7fe2, (q15_t)0xfa9b, (q15_t)0x7fe2, (q15_t)0xfa94, (q15_t)0x7fe2, (q15_t)0xfa8e, (q15_t)0x7fe2, (q15_t)0xfa88, - (q15_t)0x7fe1, (q15_t)0xfa81, (q15_t)0x7fe1, (q15_t)0xfa7b, (q15_t)0x7fe1, (q15_t)0xfa75, (q15_t)0x7fe0, (q15_t)0xfa6f, - (q15_t)0x7fe0, (q15_t)0xfa68, (q15_t)0x7fe0, (q15_t)0xfa62, (q15_t)0x7fe0, (q15_t)0xfa5c, (q15_t)0x7fdf, (q15_t)0xfa56, - (q15_t)0x7fdf, (q15_t)0xfa4f, (q15_t)0x7fdf, (q15_t)0xfa49, (q15_t)0x7fdf, (q15_t)0xfa43, (q15_t)0x7fde, (q15_t)0xfa3c, - (q15_t)0x7fde, (q15_t)0xfa36, (q15_t)0x7fde, (q15_t)0xfa30, (q15_t)0x7fdd, (q15_t)0xfa2a, (q15_t)0x7fdd, (q15_t)0xfa23, - (q15_t)0x7fdd, (q15_t)0xfa1d, (q15_t)0x7fdd, (q15_t)0xfa17, (q15_t)0x7fdc, (q15_t)0xfa11, (q15_t)0x7fdc, (q15_t)0xfa0a, - (q15_t)0x7fdc, (q15_t)0xfa04, (q15_t)0x7fdb, (q15_t)0xf9fe, (q15_t)0x7fdb, (q15_t)0xf9f7, (q15_t)0x7fdb, (q15_t)0xf9f1, - (q15_t)0x7fda, (q15_t)0xf9eb, (q15_t)0x7fda, (q15_t)0xf9e5, (q15_t)0x7fda, (q15_t)0xf9de, (q15_t)0x7fda, (q15_t)0xf9d8, - (q15_t)0x7fd9, (q15_t)0xf9d2, (q15_t)0x7fd9, (q15_t)0xf9cb, (q15_t)0x7fd9, (q15_t)0xf9c5, (q15_t)0x7fd8, (q15_t)0xf9bf, - (q15_t)0x7fd8, (q15_t)0xf9b9, (q15_t)0x7fd8, (q15_t)0xf9b2, (q15_t)0x7fd7, (q15_t)0xf9ac, (q15_t)0x7fd7, (q15_t)0xf9a6, - (q15_t)0x7fd7, (q15_t)0xf9a0, (q15_t)0x7fd6, (q15_t)0xf999, (q15_t)0x7fd6, (q15_t)0xf993, (q15_t)0x7fd6, (q15_t)0xf98d, - (q15_t)0x7fd6, (q15_t)0xf986, (q15_t)0x7fd5, (q15_t)0xf980, (q15_t)0x7fd5, (q15_t)0xf97a, (q15_t)0x7fd5, (q15_t)0xf974, - (q15_t)0x7fd4, (q15_t)0xf96d, (q15_t)0x7fd4, (q15_t)0xf967, (q15_t)0x7fd4, (q15_t)0xf961, (q15_t)0x7fd3, (q15_t)0xf95b, - (q15_t)0x7fd3, (q15_t)0xf954, (q15_t)0x7fd3, (q15_t)0xf94e, (q15_t)0x7fd2, (q15_t)0xf948, (q15_t)0x7fd2, (q15_t)0xf941, - (q15_t)0x7fd2, (q15_t)0xf93b, (q15_t)0x7fd1, (q15_t)0xf935, (q15_t)0x7fd1, (q15_t)0xf92f, (q15_t)0x7fd1, (q15_t)0xf928, - (q15_t)0x7fd0, (q15_t)0xf922, (q15_t)0x7fd0, (q15_t)0xf91c, (q15_t)0x7fd0, (q15_t)0xf916, (q15_t)0x7fcf, (q15_t)0xf90f, - (q15_t)0x7fcf, (q15_t)0xf909, (q15_t)0x7fcf, (q15_t)0xf903, (q15_t)0x7fce, (q15_t)0xf8fc, (q15_t)0x7fce, (q15_t)0xf8f6, - (q15_t)0x7fce, (q15_t)0xf8f0, (q15_t)0x7fcd, (q15_t)0xf8ea, (q15_t)0x7fcd, (q15_t)0xf8e3, (q15_t)0x7fcd, (q15_t)0xf8dd, - (q15_t)0x7fcc, (q15_t)0xf8d7, (q15_t)0x7fcc, (q15_t)0xf8d0, (q15_t)0x7fcb, (q15_t)0xf8ca, (q15_t)0x7fcb, (q15_t)0xf8c4, - (q15_t)0x7fcb, (q15_t)0xf8be, (q15_t)0x7fca, (q15_t)0xf8b7, (q15_t)0x7fca, (q15_t)0xf8b1, (q15_t)0x7fca, (q15_t)0xf8ab, - (q15_t)0x7fc9, (q15_t)0xf8a5, (q15_t)0x7fc9, (q15_t)0xf89e, (q15_t)0x7fc9, (q15_t)0xf898, (q15_t)0x7fc8, (q15_t)0xf892, - (q15_t)0x7fc8, (q15_t)0xf88b, (q15_t)0x7fc7, (q15_t)0xf885, (q15_t)0x7fc7, (q15_t)0xf87f, (q15_t)0x7fc7, (q15_t)0xf879, - (q15_t)0x7fc6, (q15_t)0xf872, (q15_t)0x7fc6, (q15_t)0xf86c, (q15_t)0x7fc6, (q15_t)0xf866, (q15_t)0x7fc5, (q15_t)0xf860, - (q15_t)0x7fc5, (q15_t)0xf859, (q15_t)0x7fc5, (q15_t)0xf853, (q15_t)0x7fc4, (q15_t)0xf84d, (q15_t)0x7fc4, (q15_t)0xf846, - (q15_t)0x7fc3, (q15_t)0xf840, (q15_t)0x7fc3, (q15_t)0xf83a, (q15_t)0x7fc3, (q15_t)0xf834, (q15_t)0x7fc2, (q15_t)0xf82d, - (q15_t)0x7fc2, (q15_t)0xf827, (q15_t)0x7fc1, (q15_t)0xf821, (q15_t)0x7fc1, (q15_t)0xf81b, (q15_t)0x7fc1, (q15_t)0xf814, - (q15_t)0x7fc0, (q15_t)0xf80e, (q15_t)0x7fc0, (q15_t)0xf808, (q15_t)0x7fc0, (q15_t)0xf802, (q15_t)0x7fbf, (q15_t)0xf7fb, - (q15_t)0x7fbf, (q15_t)0xf7f5, (q15_t)0x7fbe, (q15_t)0xf7ef, (q15_t)0x7fbe, (q15_t)0xf7e8, (q15_t)0x7fbe, (q15_t)0xf7e2, - (q15_t)0x7fbd, (q15_t)0xf7dc, (q15_t)0x7fbd, (q15_t)0xf7d6, (q15_t)0x7fbc, (q15_t)0xf7cf, (q15_t)0x7fbc, (q15_t)0xf7c9, - (q15_t)0x7fbc, (q15_t)0xf7c3, (q15_t)0x7fbb, (q15_t)0xf7bd, (q15_t)0x7fbb, (q15_t)0xf7b6, (q15_t)0x7fba, (q15_t)0xf7b0, - (q15_t)0x7fba, (q15_t)0xf7aa, (q15_t)0x7fb9, (q15_t)0xf7a3, (q15_t)0x7fb9, (q15_t)0xf79d, (q15_t)0x7fb9, (q15_t)0xf797, - (q15_t)0x7fb8, (q15_t)0xf791, (q15_t)0x7fb8, (q15_t)0xf78a, (q15_t)0x7fb7, (q15_t)0xf784, (q15_t)0x7fb7, (q15_t)0xf77e, - (q15_t)0x7fb7, (q15_t)0xf778, (q15_t)0x7fb6, (q15_t)0xf771, (q15_t)0x7fb6, (q15_t)0xf76b, (q15_t)0x7fb5, (q15_t)0xf765, - (q15_t)0x7fb5, (q15_t)0xf75e, (q15_t)0x7fb4, (q15_t)0xf758, (q15_t)0x7fb4, (q15_t)0xf752, (q15_t)0x7fb4, (q15_t)0xf74c, - (q15_t)0x7fb3, (q15_t)0xf745, (q15_t)0x7fb3, (q15_t)0xf73f, (q15_t)0x7fb2, (q15_t)0xf739, (q15_t)0x7fb2, (q15_t)0xf733, - (q15_t)0x7fb1, (q15_t)0xf72c, (q15_t)0x7fb1, (q15_t)0xf726, (q15_t)0x7fb1, (q15_t)0xf720, (q15_t)0x7fb0, (q15_t)0xf71a, - (q15_t)0x7fb0, (q15_t)0xf713, (q15_t)0x7faf, (q15_t)0xf70d, (q15_t)0x7faf, (q15_t)0xf707, (q15_t)0x7fae, (q15_t)0xf700, - (q15_t)0x7fae, (q15_t)0xf6fa, (q15_t)0x7fae, (q15_t)0xf6f4, (q15_t)0x7fad, (q15_t)0xf6ee, (q15_t)0x7fad, (q15_t)0xf6e7, - (q15_t)0x7fac, (q15_t)0xf6e1, (q15_t)0x7fac, (q15_t)0xf6db, (q15_t)0x7fab, (q15_t)0xf6d5, (q15_t)0x7fab, (q15_t)0xf6ce, - (q15_t)0x7faa, (q15_t)0xf6c8, (q15_t)0x7faa, (q15_t)0xf6c2, (q15_t)0x7fa9, (q15_t)0xf6bc, (q15_t)0x7fa9, (q15_t)0xf6b5, - (q15_t)0x7fa9, (q15_t)0xf6af, (q15_t)0x7fa8, (q15_t)0xf6a9, (q15_t)0x7fa8, (q15_t)0xf6a2, (q15_t)0x7fa7, (q15_t)0xf69c, - (q15_t)0x7fa7, (q15_t)0xf696, (q15_t)0x7fa6, (q15_t)0xf690, (q15_t)0x7fa6, (q15_t)0xf689, (q15_t)0x7fa5, (q15_t)0xf683, - (q15_t)0x7fa5, (q15_t)0xf67d, (q15_t)0x7fa4, (q15_t)0xf677, (q15_t)0x7fa4, (q15_t)0xf670, (q15_t)0x7fa3, (q15_t)0xf66a, - (q15_t)0x7fa3, (q15_t)0xf664, (q15_t)0x7fa3, (q15_t)0xf65e, (q15_t)0x7fa2, (q15_t)0xf657, (q15_t)0x7fa2, (q15_t)0xf651, - (q15_t)0x7fa1, (q15_t)0xf64b, (q15_t)0x7fa1, (q15_t)0xf644, (q15_t)0x7fa0, (q15_t)0xf63e, (q15_t)0x7fa0, (q15_t)0xf638, - (q15_t)0x7f9f, (q15_t)0xf632, (q15_t)0x7f9f, (q15_t)0xf62b, (q15_t)0x7f9e, (q15_t)0xf625, (q15_t)0x7f9e, (q15_t)0xf61f, - (q15_t)0x7f9d, (q15_t)0xf619, (q15_t)0x7f9d, (q15_t)0xf612, (q15_t)0x7f9c, (q15_t)0xf60c, (q15_t)0x7f9c, (q15_t)0xf606, - (q15_t)0x7f9b, (q15_t)0xf600, (q15_t)0x7f9b, (q15_t)0xf5f9, (q15_t)0x7f9a, (q15_t)0xf5f3, (q15_t)0x7f9a, (q15_t)0xf5ed, - (q15_t)0x7f99, (q15_t)0xf5e7, (q15_t)0x7f99, (q15_t)0xf5e0, (q15_t)0x7f98, (q15_t)0xf5da, (q15_t)0x7f98, (q15_t)0xf5d4, - (q15_t)0x7f97, (q15_t)0xf5cd, (q15_t)0x7f97, (q15_t)0xf5c7, (q15_t)0x7f96, (q15_t)0xf5c1, (q15_t)0x7f96, (q15_t)0xf5bb, - (q15_t)0x7f95, (q15_t)0xf5b4, (q15_t)0x7f95, (q15_t)0xf5ae, (q15_t)0x7f94, (q15_t)0xf5a8, (q15_t)0x7f94, (q15_t)0xf5a2, - (q15_t)0x7f93, (q15_t)0xf59b, (q15_t)0x7f93, (q15_t)0xf595, (q15_t)0x7f92, (q15_t)0xf58f, (q15_t)0x7f92, (q15_t)0xf589, - (q15_t)0x7f91, (q15_t)0xf582, (q15_t)0x7f91, (q15_t)0xf57c, (q15_t)0x7f90, (q15_t)0xf576, (q15_t)0x7f90, (q15_t)0xf570, - (q15_t)0x7f8f, (q15_t)0xf569, (q15_t)0x7f8f, (q15_t)0xf563, (q15_t)0x7f8e, (q15_t)0xf55d, (q15_t)0x7f8e, (q15_t)0xf556, - (q15_t)0x7f8d, (q15_t)0xf550, (q15_t)0x7f8d, (q15_t)0xf54a, (q15_t)0x7f8c, (q15_t)0xf544, (q15_t)0x7f8b, (q15_t)0xf53d, - (q15_t)0x7f8b, (q15_t)0xf537, (q15_t)0x7f8a, (q15_t)0xf531, (q15_t)0x7f8a, (q15_t)0xf52b, (q15_t)0x7f89, (q15_t)0xf524, - (q15_t)0x7f89, (q15_t)0xf51e, (q15_t)0x7f88, (q15_t)0xf518, (q15_t)0x7f88, (q15_t)0xf512, (q15_t)0x7f87, (q15_t)0xf50b, - (q15_t)0x7f87, (q15_t)0xf505, (q15_t)0x7f86, (q15_t)0xf4ff, (q15_t)0x7f86, (q15_t)0xf4f9, (q15_t)0x7f85, (q15_t)0xf4f2, - (q15_t)0x7f85, (q15_t)0xf4ec, (q15_t)0x7f84, (q15_t)0xf4e6, (q15_t)0x7f83, (q15_t)0xf4e0, (q15_t)0x7f83, (q15_t)0xf4d9, - (q15_t)0x7f82, (q15_t)0xf4d3, (q15_t)0x7f82, (q15_t)0xf4cd, (q15_t)0x7f81, (q15_t)0xf4c6, (q15_t)0x7f81, (q15_t)0xf4c0, - (q15_t)0x7f80, (q15_t)0xf4ba, (q15_t)0x7f80, (q15_t)0xf4b4, (q15_t)0x7f7f, (q15_t)0xf4ad, (q15_t)0x7f7e, (q15_t)0xf4a7, - (q15_t)0x7f7e, (q15_t)0xf4a1, (q15_t)0x7f7d, (q15_t)0xf49b, (q15_t)0x7f7d, (q15_t)0xf494, (q15_t)0x7f7c, (q15_t)0xf48e, - (q15_t)0x7f7c, (q15_t)0xf488, (q15_t)0x7f7b, (q15_t)0xf482, (q15_t)0x7f7b, (q15_t)0xf47b, (q15_t)0x7f7a, (q15_t)0xf475, - (q15_t)0x7f79, (q15_t)0xf46f, (q15_t)0x7f79, (q15_t)0xf469, (q15_t)0x7f78, (q15_t)0xf462, (q15_t)0x7f78, (q15_t)0xf45c, - (q15_t)0x7f77, (q15_t)0xf456, (q15_t)0x7f77, (q15_t)0xf450, (q15_t)0x7f76, (q15_t)0xf449, (q15_t)0x7f75, (q15_t)0xf443, - (q15_t)0x7f75, (q15_t)0xf43d, (q15_t)0x7f74, (q15_t)0xf437, (q15_t)0x7f74, (q15_t)0xf430, (q15_t)0x7f73, (q15_t)0xf42a, - (q15_t)0x7f72, (q15_t)0xf424, (q15_t)0x7f72, (q15_t)0xf41e, (q15_t)0x7f71, (q15_t)0xf417, (q15_t)0x7f71, (q15_t)0xf411, - (q15_t)0x7f70, (q15_t)0xf40b, (q15_t)0x7f70, (q15_t)0xf405, (q15_t)0x7f6f, (q15_t)0xf3fe, (q15_t)0x7f6e, (q15_t)0xf3f8, - (q15_t)0x7f6e, (q15_t)0xf3f2, (q15_t)0x7f6d, (q15_t)0xf3ec, (q15_t)0x7f6d, (q15_t)0xf3e5, (q15_t)0x7f6c, (q15_t)0xf3df, - (q15_t)0x7f6b, (q15_t)0xf3d9, (q15_t)0x7f6b, (q15_t)0xf3d2, (q15_t)0x7f6a, (q15_t)0xf3cc, (q15_t)0x7f6a, (q15_t)0xf3c6, - (q15_t)0x7f69, (q15_t)0xf3c0, (q15_t)0x7f68, (q15_t)0xf3b9, (q15_t)0x7f68, (q15_t)0xf3b3, (q15_t)0x7f67, (q15_t)0xf3ad, - (q15_t)0x7f67, (q15_t)0xf3a7, (q15_t)0x7f66, (q15_t)0xf3a0, (q15_t)0x7f65, (q15_t)0xf39a, (q15_t)0x7f65, (q15_t)0xf394, - (q15_t)0x7f64, (q15_t)0xf38e, (q15_t)0x7f64, (q15_t)0xf387, (q15_t)0x7f63, (q15_t)0xf381, (q15_t)0x7f62, (q15_t)0xf37b, - (q15_t)0x7f62, (q15_t)0xf375, (q15_t)0x7f61, (q15_t)0xf36e, (q15_t)0x7f60, (q15_t)0xf368, (q15_t)0x7f60, (q15_t)0xf362, - (q15_t)0x7f5f, (q15_t)0xf35c, (q15_t)0x7f5f, (q15_t)0xf355, (q15_t)0x7f5e, (q15_t)0xf34f, (q15_t)0x7f5d, (q15_t)0xf349, - (q15_t)0x7f5d, (q15_t)0xf343, (q15_t)0x7f5c, (q15_t)0xf33c, (q15_t)0x7f5b, (q15_t)0xf336, (q15_t)0x7f5b, (q15_t)0xf330, - (q15_t)0x7f5a, (q15_t)0xf32a, (q15_t)0x7f5a, (q15_t)0xf323, (q15_t)0x7f59, (q15_t)0xf31d, (q15_t)0x7f58, (q15_t)0xf317, - (q15_t)0x7f58, (q15_t)0xf311, (q15_t)0x7f57, (q15_t)0xf30a, (q15_t)0x7f56, (q15_t)0xf304, (q15_t)0x7f56, (q15_t)0xf2fe, - (q15_t)0x7f55, (q15_t)0xf2f8, (q15_t)0x7f55, (q15_t)0xf2f1, (q15_t)0x7f54, (q15_t)0xf2eb, (q15_t)0x7f53, (q15_t)0xf2e5, - (q15_t)0x7f53, (q15_t)0xf2df, (q15_t)0x7f52, (q15_t)0xf2d8, (q15_t)0x7f51, (q15_t)0xf2d2, (q15_t)0x7f51, (q15_t)0xf2cc, - (q15_t)0x7f50, (q15_t)0xf2c6, (q15_t)0x7f4f, (q15_t)0xf2bf, (q15_t)0x7f4f, (q15_t)0xf2b9, (q15_t)0x7f4e, (q15_t)0xf2b3, - (q15_t)0x7f4d, (q15_t)0xf2ad, (q15_t)0x7f4d, (q15_t)0xf2a6, (q15_t)0x7f4c, (q15_t)0xf2a0, (q15_t)0x7f4b, (q15_t)0xf29a, - (q15_t)0x7f4b, (q15_t)0xf294, (q15_t)0x7f4a, (q15_t)0xf28d, (q15_t)0x7f49, (q15_t)0xf287, (q15_t)0x7f49, (q15_t)0xf281, - (q15_t)0x7f48, (q15_t)0xf27b, (q15_t)0x7f47, (q15_t)0xf274, (q15_t)0x7f47, (q15_t)0xf26e, (q15_t)0x7f46, (q15_t)0xf268, - (q15_t)0x7f45, (q15_t)0xf262, (q15_t)0x7f45, (q15_t)0xf25b, (q15_t)0x7f44, (q15_t)0xf255, (q15_t)0x7f43, (q15_t)0xf24f, - (q15_t)0x7f43, (q15_t)0xf249, (q15_t)0x7f42, (q15_t)0xf242, (q15_t)0x7f41, (q15_t)0xf23c, (q15_t)0x7f41, (q15_t)0xf236, - (q15_t)0x7f40, (q15_t)0xf230, (q15_t)0x7f3f, (q15_t)0xf229, (q15_t)0x7f3f, (q15_t)0xf223, (q15_t)0x7f3e, (q15_t)0xf21d, - (q15_t)0x7f3d, (q15_t)0xf217, (q15_t)0x7f3d, (q15_t)0xf210, (q15_t)0x7f3c, (q15_t)0xf20a, (q15_t)0x7f3b, (q15_t)0xf204, - (q15_t)0x7f3b, (q15_t)0xf1fe, (q15_t)0x7f3a, (q15_t)0xf1f7, (q15_t)0x7f39, (q15_t)0xf1f1, (q15_t)0x7f39, (q15_t)0xf1eb, - (q15_t)0x7f38, (q15_t)0xf1e5, (q15_t)0x7f37, (q15_t)0xf1de, (q15_t)0x7f36, (q15_t)0xf1d8, (q15_t)0x7f36, (q15_t)0xf1d2, - (q15_t)0x7f35, (q15_t)0xf1cc, (q15_t)0x7f34, (q15_t)0xf1c6, (q15_t)0x7f34, (q15_t)0xf1bf, (q15_t)0x7f33, (q15_t)0xf1b9, - (q15_t)0x7f32, (q15_t)0xf1b3, (q15_t)0x7f32, (q15_t)0xf1ad, (q15_t)0x7f31, (q15_t)0xf1a6, (q15_t)0x7f30, (q15_t)0xf1a0, - (q15_t)0x7f2f, (q15_t)0xf19a, (q15_t)0x7f2f, (q15_t)0xf194, (q15_t)0x7f2e, (q15_t)0xf18d, (q15_t)0x7f2d, (q15_t)0xf187, - (q15_t)0x7f2d, (q15_t)0xf181, (q15_t)0x7f2c, (q15_t)0xf17b, (q15_t)0x7f2b, (q15_t)0xf174, (q15_t)0x7f2a, (q15_t)0xf16e, - (q15_t)0x7f2a, (q15_t)0xf168, (q15_t)0x7f29, (q15_t)0xf162, (q15_t)0x7f28, (q15_t)0xf15b, (q15_t)0x7f28, (q15_t)0xf155, - (q15_t)0x7f27, (q15_t)0xf14f, (q15_t)0x7f26, (q15_t)0xf149, (q15_t)0x7f25, (q15_t)0xf142, (q15_t)0x7f25, (q15_t)0xf13c, - (q15_t)0x7f24, (q15_t)0xf136, (q15_t)0x7f23, (q15_t)0xf130, (q15_t)0x7f23, (q15_t)0xf129, (q15_t)0x7f22, (q15_t)0xf123, - (q15_t)0x7f21, (q15_t)0xf11d, (q15_t)0x7f20, (q15_t)0xf117, (q15_t)0x7f20, (q15_t)0xf110, (q15_t)0x7f1f, (q15_t)0xf10a, - (q15_t)0x7f1e, (q15_t)0xf104, (q15_t)0x7f1d, (q15_t)0xf0fe, (q15_t)0x7f1d, (q15_t)0xf0f8, (q15_t)0x7f1c, (q15_t)0xf0f1, - (q15_t)0x7f1b, (q15_t)0xf0eb, (q15_t)0x7f1a, (q15_t)0xf0e5, (q15_t)0x7f1a, (q15_t)0xf0df, (q15_t)0x7f19, (q15_t)0xf0d8, - (q15_t)0x7f18, (q15_t)0xf0d2, (q15_t)0x7f17, (q15_t)0xf0cc, (q15_t)0x7f17, (q15_t)0xf0c6, (q15_t)0x7f16, (q15_t)0xf0bf, - (q15_t)0x7f15, (q15_t)0xf0b9, (q15_t)0x7f14, (q15_t)0xf0b3, (q15_t)0x7f14, (q15_t)0xf0ad, (q15_t)0x7f13, (q15_t)0xf0a6, - (q15_t)0x7f12, (q15_t)0xf0a0, (q15_t)0x7f11, (q15_t)0xf09a, (q15_t)0x7f11, (q15_t)0xf094, (q15_t)0x7f10, (q15_t)0xf08d, - (q15_t)0x7f0f, (q15_t)0xf087, (q15_t)0x7f0e, (q15_t)0xf081, (q15_t)0x7f0e, (q15_t)0xf07b, (q15_t)0x7f0d, (q15_t)0xf075, - (q15_t)0x7f0c, (q15_t)0xf06e, (q15_t)0x7f0b, (q15_t)0xf068, (q15_t)0x7f0b, (q15_t)0xf062, (q15_t)0x7f0a, (q15_t)0xf05c, - (q15_t)0x7f09, (q15_t)0xf055, (q15_t)0x7f08, (q15_t)0xf04f, (q15_t)0x7f08, (q15_t)0xf049, (q15_t)0x7f07, (q15_t)0xf043, - (q15_t)0x7f06, (q15_t)0xf03c, (q15_t)0x7f05, (q15_t)0xf036, (q15_t)0x7f04, (q15_t)0xf030, (q15_t)0x7f04, (q15_t)0xf02a, - (q15_t)0x7f03, (q15_t)0xf023, (q15_t)0x7f02, (q15_t)0xf01d, (q15_t)0x7f01, (q15_t)0xf017, (q15_t)0x7f01, (q15_t)0xf011, - (q15_t)0x7f00, (q15_t)0xf00b, (q15_t)0x7eff, (q15_t)0xf004, (q15_t)0x7efe, (q15_t)0xeffe, (q15_t)0x7efd, (q15_t)0xeff8, - (q15_t)0x7efd, (q15_t)0xeff2, (q15_t)0x7efc, (q15_t)0xefeb, (q15_t)0x7efb, (q15_t)0xefe5, (q15_t)0x7efa, (q15_t)0xefdf, - (q15_t)0x7ef9, (q15_t)0xefd9, (q15_t)0x7ef9, (q15_t)0xefd2, (q15_t)0x7ef8, (q15_t)0xefcc, (q15_t)0x7ef7, (q15_t)0xefc6, - (q15_t)0x7ef6, (q15_t)0xefc0, (q15_t)0x7ef5, (q15_t)0xefb9, (q15_t)0x7ef5, (q15_t)0xefb3, (q15_t)0x7ef4, (q15_t)0xefad, - (q15_t)0x7ef3, (q15_t)0xefa7, (q15_t)0x7ef2, (q15_t)0xefa1, (q15_t)0x7ef1, (q15_t)0xef9a, (q15_t)0x7ef1, (q15_t)0xef94, - (q15_t)0x7ef0, (q15_t)0xef8e, (q15_t)0x7eef, (q15_t)0xef88, (q15_t)0x7eee, (q15_t)0xef81, (q15_t)0x7eed, (q15_t)0xef7b, - (q15_t)0x7eed, (q15_t)0xef75, (q15_t)0x7eec, (q15_t)0xef6f, (q15_t)0x7eeb, (q15_t)0xef68, (q15_t)0x7eea, (q15_t)0xef62, - (q15_t)0x7ee9, (q15_t)0xef5c, (q15_t)0x7ee9, (q15_t)0xef56, (q15_t)0x7ee8, (q15_t)0xef50, (q15_t)0x7ee7, (q15_t)0xef49, - (q15_t)0x7ee6, (q15_t)0xef43, (q15_t)0x7ee5, (q15_t)0xef3d, (q15_t)0x7ee4, (q15_t)0xef37, (q15_t)0x7ee4, (q15_t)0xef30, - (q15_t)0x7ee3, (q15_t)0xef2a, (q15_t)0x7ee2, (q15_t)0xef24, (q15_t)0x7ee1, (q15_t)0xef1e, (q15_t)0x7ee0, (q15_t)0xef18, - (q15_t)0x7edf, (q15_t)0xef11, (q15_t)0x7edf, (q15_t)0xef0b, (q15_t)0x7ede, (q15_t)0xef05, (q15_t)0x7edd, (q15_t)0xeeff, - (q15_t)0x7edc, (q15_t)0xeef8, (q15_t)0x7edb, (q15_t)0xeef2, (q15_t)0x7eda, (q15_t)0xeeec, (q15_t)0x7eda, (q15_t)0xeee6, - (q15_t)0x7ed9, (q15_t)0xeedf, (q15_t)0x7ed8, (q15_t)0xeed9, (q15_t)0x7ed7, (q15_t)0xeed3, (q15_t)0x7ed6, (q15_t)0xeecd, - (q15_t)0x7ed5, (q15_t)0xeec7, (q15_t)0x7ed5, (q15_t)0xeec0, (q15_t)0x7ed4, (q15_t)0xeeba, (q15_t)0x7ed3, (q15_t)0xeeb4, - (q15_t)0x7ed2, (q15_t)0xeeae, (q15_t)0x7ed1, (q15_t)0xeea7, (q15_t)0x7ed0, (q15_t)0xeea1, (q15_t)0x7ecf, (q15_t)0xee9b, - (q15_t)0x7ecf, (q15_t)0xee95, (q15_t)0x7ece, (q15_t)0xee8f, (q15_t)0x7ecd, (q15_t)0xee88, (q15_t)0x7ecc, (q15_t)0xee82, - (q15_t)0x7ecb, (q15_t)0xee7c, (q15_t)0x7eca, (q15_t)0xee76, (q15_t)0x7ec9, (q15_t)0xee6f, (q15_t)0x7ec9, (q15_t)0xee69, - (q15_t)0x7ec8, (q15_t)0xee63, (q15_t)0x7ec7, (q15_t)0xee5d, (q15_t)0x7ec6, (q15_t)0xee57, (q15_t)0x7ec5, (q15_t)0xee50, - (q15_t)0x7ec4, (q15_t)0xee4a, (q15_t)0x7ec3, (q15_t)0xee44, (q15_t)0x7ec3, (q15_t)0xee3e, (q15_t)0x7ec2, (q15_t)0xee37, - (q15_t)0x7ec1, (q15_t)0xee31, (q15_t)0x7ec0, (q15_t)0xee2b, (q15_t)0x7ebf, (q15_t)0xee25, (q15_t)0x7ebe, (q15_t)0xee1f, - (q15_t)0x7ebd, (q15_t)0xee18, (q15_t)0x7ebc, (q15_t)0xee12, (q15_t)0x7ebb, (q15_t)0xee0c, (q15_t)0x7ebb, (q15_t)0xee06, - (q15_t)0x7eba, (q15_t)0xedff, (q15_t)0x7eb9, (q15_t)0xedf9, (q15_t)0x7eb8, (q15_t)0xedf3, (q15_t)0x7eb7, (q15_t)0xeded, - (q15_t)0x7eb6, (q15_t)0xede7, (q15_t)0x7eb5, (q15_t)0xede0, (q15_t)0x7eb4, (q15_t)0xedda, (q15_t)0x7eb4, (q15_t)0xedd4, - (q15_t)0x7eb3, (q15_t)0xedce, (q15_t)0x7eb2, (q15_t)0xedc7, (q15_t)0x7eb1, (q15_t)0xedc1, (q15_t)0x7eb0, (q15_t)0xedbb, - (q15_t)0x7eaf, (q15_t)0xedb5, (q15_t)0x7eae, (q15_t)0xedaf, (q15_t)0x7ead, (q15_t)0xeda8, (q15_t)0x7eac, (q15_t)0xeda2, - (q15_t)0x7eab, (q15_t)0xed9c, (q15_t)0x7eab, (q15_t)0xed96, (q15_t)0x7eaa, (q15_t)0xed8f, (q15_t)0x7ea9, (q15_t)0xed89, - (q15_t)0x7ea8, (q15_t)0xed83, (q15_t)0x7ea7, (q15_t)0xed7d, (q15_t)0x7ea6, (q15_t)0xed77, (q15_t)0x7ea5, (q15_t)0xed70, - (q15_t)0x7ea4, (q15_t)0xed6a, (q15_t)0x7ea3, (q15_t)0xed64, (q15_t)0x7ea2, (q15_t)0xed5e, (q15_t)0x7ea1, (q15_t)0xed58, - (q15_t)0x7ea1, (q15_t)0xed51, (q15_t)0x7ea0, (q15_t)0xed4b, (q15_t)0x7e9f, (q15_t)0xed45, (q15_t)0x7e9e, (q15_t)0xed3f, - (q15_t)0x7e9d, (q15_t)0xed38, (q15_t)0x7e9c, (q15_t)0xed32, (q15_t)0x7e9b, (q15_t)0xed2c, (q15_t)0x7e9a, (q15_t)0xed26, - (q15_t)0x7e99, (q15_t)0xed20, (q15_t)0x7e98, (q15_t)0xed19, (q15_t)0x7e97, (q15_t)0xed13, (q15_t)0x7e96, (q15_t)0xed0d, - (q15_t)0x7e95, (q15_t)0xed07, (q15_t)0x7e94, (q15_t)0xed01, (q15_t)0x7e94, (q15_t)0xecfa, (q15_t)0x7e93, (q15_t)0xecf4, - (q15_t)0x7e92, (q15_t)0xecee, (q15_t)0x7e91, (q15_t)0xece8, (q15_t)0x7e90, (q15_t)0xece1, (q15_t)0x7e8f, (q15_t)0xecdb, - (q15_t)0x7e8e, (q15_t)0xecd5, (q15_t)0x7e8d, (q15_t)0xeccf, (q15_t)0x7e8c, (q15_t)0xecc9, (q15_t)0x7e8b, (q15_t)0xecc2, - (q15_t)0x7e8a, (q15_t)0xecbc, (q15_t)0x7e89, (q15_t)0xecb6, (q15_t)0x7e88, (q15_t)0xecb0, (q15_t)0x7e87, (q15_t)0xecaa, - (q15_t)0x7e86, (q15_t)0xeca3, (q15_t)0x7e85, (q15_t)0xec9d, (q15_t)0x7e84, (q15_t)0xec97, (q15_t)0x7e84, (q15_t)0xec91, - (q15_t)0x7e83, (q15_t)0xec8a, (q15_t)0x7e82, (q15_t)0xec84, (q15_t)0x7e81, (q15_t)0xec7e, (q15_t)0x7e80, (q15_t)0xec78, - (q15_t)0x7e7f, (q15_t)0xec72, (q15_t)0x7e7e, (q15_t)0xec6b, (q15_t)0x7e7d, (q15_t)0xec65, (q15_t)0x7e7c, (q15_t)0xec5f, - (q15_t)0x7e7b, (q15_t)0xec59, (q15_t)0x7e7a, (q15_t)0xec53, (q15_t)0x7e79, (q15_t)0xec4c, (q15_t)0x7e78, (q15_t)0xec46, - (q15_t)0x7e77, (q15_t)0xec40, (q15_t)0x7e76, (q15_t)0xec3a, (q15_t)0x7e75, (q15_t)0xec34, (q15_t)0x7e74, (q15_t)0xec2d, - (q15_t)0x7e73, (q15_t)0xec27, (q15_t)0x7e72, (q15_t)0xec21, (q15_t)0x7e71, (q15_t)0xec1b, (q15_t)0x7e70, (q15_t)0xec15, - (q15_t)0x7e6f, (q15_t)0xec0e, (q15_t)0x7e6e, (q15_t)0xec08, (q15_t)0x7e6d, (q15_t)0xec02, (q15_t)0x7e6c, (q15_t)0xebfc, - (q15_t)0x7e6b, (q15_t)0xebf5, (q15_t)0x7e6a, (q15_t)0xebef, (q15_t)0x7e69, (q15_t)0xebe9, (q15_t)0x7e68, (q15_t)0xebe3, - (q15_t)0x7e67, (q15_t)0xebdd, (q15_t)0x7e66, (q15_t)0xebd6, (q15_t)0x7e65, (q15_t)0xebd0, (q15_t)0x7e64, (q15_t)0xebca, - (q15_t)0x7e63, (q15_t)0xebc4, (q15_t)0x7e62, (q15_t)0xebbe, (q15_t)0x7e61, (q15_t)0xebb7, (q15_t)0x7e60, (q15_t)0xebb1, - (q15_t)0x7e5f, (q15_t)0xebab, (q15_t)0x7e5e, (q15_t)0xeba5, (q15_t)0x7e5d, (q15_t)0xeb9f, (q15_t)0x7e5c, (q15_t)0xeb98, - (q15_t)0x7e5b, (q15_t)0xeb92, (q15_t)0x7e5a, (q15_t)0xeb8c, (q15_t)0x7e59, (q15_t)0xeb86, (q15_t)0x7e58, (q15_t)0xeb80, - (q15_t)0x7e57, (q15_t)0xeb79, (q15_t)0x7e56, (q15_t)0xeb73, (q15_t)0x7e55, (q15_t)0xeb6d, (q15_t)0x7e54, (q15_t)0xeb67, - (q15_t)0x7e53, (q15_t)0xeb61, (q15_t)0x7e52, (q15_t)0xeb5a, (q15_t)0x7e51, (q15_t)0xeb54, (q15_t)0x7e50, (q15_t)0xeb4e, - (q15_t)0x7e4f, (q15_t)0xeb48, (q15_t)0x7e4e, (q15_t)0xeb42, (q15_t)0x7e4d, (q15_t)0xeb3b, (q15_t)0x7e4c, (q15_t)0xeb35, - (q15_t)0x7e4b, (q15_t)0xeb2f, (q15_t)0x7e4a, (q15_t)0xeb29, (q15_t)0x7e49, (q15_t)0xeb23, (q15_t)0x7e48, (q15_t)0xeb1c, - (q15_t)0x7e47, (q15_t)0xeb16, (q15_t)0x7e46, (q15_t)0xeb10, (q15_t)0x7e45, (q15_t)0xeb0a, (q15_t)0x7e44, (q15_t)0xeb04, - (q15_t)0x7e43, (q15_t)0xeafd, (q15_t)0x7e42, (q15_t)0xeaf7, (q15_t)0x7e41, (q15_t)0xeaf1, (q15_t)0x7e40, (q15_t)0xeaeb, - (q15_t)0x7e3f, (q15_t)0xeae5, (q15_t)0x7e3e, (q15_t)0xeade, (q15_t)0x7e3d, (q15_t)0xead8, (q15_t)0x7e3c, (q15_t)0xead2, - (q15_t)0x7e3b, (q15_t)0xeacc, (q15_t)0x7e3a, (q15_t)0xeac6, (q15_t)0x7e39, (q15_t)0xeabf, (q15_t)0x7e38, (q15_t)0xeab9, - (q15_t)0x7e37, (q15_t)0xeab3, (q15_t)0x7e35, (q15_t)0xeaad, (q15_t)0x7e34, (q15_t)0xeaa7, (q15_t)0x7e33, (q15_t)0xeaa0, - (q15_t)0x7e32, (q15_t)0xea9a, (q15_t)0x7e31, (q15_t)0xea94, (q15_t)0x7e30, (q15_t)0xea8e, (q15_t)0x7e2f, (q15_t)0xea88, - (q15_t)0x7e2e, (q15_t)0xea81, (q15_t)0x7e2d, (q15_t)0xea7b, (q15_t)0x7e2c, (q15_t)0xea75, (q15_t)0x7e2b, (q15_t)0xea6f, - (q15_t)0x7e2a, (q15_t)0xea69, (q15_t)0x7e29, (q15_t)0xea63, (q15_t)0x7e28, (q15_t)0xea5c, (q15_t)0x7e27, (q15_t)0xea56, - (q15_t)0x7e26, (q15_t)0xea50, (q15_t)0x7e25, (q15_t)0xea4a, (q15_t)0x7e24, (q15_t)0xea44, (q15_t)0x7e22, (q15_t)0xea3d, - (q15_t)0x7e21, (q15_t)0xea37, (q15_t)0x7e20, (q15_t)0xea31, (q15_t)0x7e1f, (q15_t)0xea2b, (q15_t)0x7e1e, (q15_t)0xea25, - (q15_t)0x7e1d, (q15_t)0xea1e, (q15_t)0x7e1c, (q15_t)0xea18, (q15_t)0x7e1b, (q15_t)0xea12, (q15_t)0x7e1a, (q15_t)0xea0c, - (q15_t)0x7e19, (q15_t)0xea06, (q15_t)0x7e18, (q15_t)0xe9ff, (q15_t)0x7e17, (q15_t)0xe9f9, (q15_t)0x7e16, (q15_t)0xe9f3, - (q15_t)0x7e14, (q15_t)0xe9ed, (q15_t)0x7e13, (q15_t)0xe9e7, (q15_t)0x7e12, (q15_t)0xe9e1, (q15_t)0x7e11, (q15_t)0xe9da, - (q15_t)0x7e10, (q15_t)0xe9d4, (q15_t)0x7e0f, (q15_t)0xe9ce, (q15_t)0x7e0e, (q15_t)0xe9c8, (q15_t)0x7e0d, (q15_t)0xe9c2, - (q15_t)0x7e0c, (q15_t)0xe9bb, (q15_t)0x7e0b, (q15_t)0xe9b5, (q15_t)0x7e0a, (q15_t)0xe9af, (q15_t)0x7e08, (q15_t)0xe9a9, - (q15_t)0x7e07, (q15_t)0xe9a3, (q15_t)0x7e06, (q15_t)0xe99c, (q15_t)0x7e05, (q15_t)0xe996, (q15_t)0x7e04, (q15_t)0xe990, - (q15_t)0x7e03, (q15_t)0xe98a, (q15_t)0x7e02, (q15_t)0xe984, (q15_t)0x7e01, (q15_t)0xe97e, (q15_t)0x7e00, (q15_t)0xe977, - (q15_t)0x7dff, (q15_t)0xe971, (q15_t)0x7dfd, (q15_t)0xe96b, (q15_t)0x7dfc, (q15_t)0xe965, (q15_t)0x7dfb, (q15_t)0xe95f, - (q15_t)0x7dfa, (q15_t)0xe958, (q15_t)0x7df9, (q15_t)0xe952, (q15_t)0x7df8, (q15_t)0xe94c, (q15_t)0x7df7, (q15_t)0xe946, - (q15_t)0x7df6, (q15_t)0xe940, (q15_t)0x7df5, (q15_t)0xe93a, (q15_t)0x7df3, (q15_t)0xe933, (q15_t)0x7df2, (q15_t)0xe92d, - (q15_t)0x7df1, (q15_t)0xe927, (q15_t)0x7df0, (q15_t)0xe921, (q15_t)0x7def, (q15_t)0xe91b, (q15_t)0x7dee, (q15_t)0xe914, - (q15_t)0x7ded, (q15_t)0xe90e, (q15_t)0x7dec, (q15_t)0xe908, (q15_t)0x7dea, (q15_t)0xe902, (q15_t)0x7de9, (q15_t)0xe8fc, - (q15_t)0x7de8, (q15_t)0xe8f6, (q15_t)0x7de7, (q15_t)0xe8ef, (q15_t)0x7de6, (q15_t)0xe8e9, (q15_t)0x7de5, (q15_t)0xe8e3, - (q15_t)0x7de4, (q15_t)0xe8dd, (q15_t)0x7de2, (q15_t)0xe8d7, (q15_t)0x7de1, (q15_t)0xe8d0, (q15_t)0x7de0, (q15_t)0xe8ca, - (q15_t)0x7ddf, (q15_t)0xe8c4, (q15_t)0x7dde, (q15_t)0xe8be, (q15_t)0x7ddd, (q15_t)0xe8b8, (q15_t)0x7ddc, (q15_t)0xe8b2, - (q15_t)0x7dda, (q15_t)0xe8ab, (q15_t)0x7dd9, (q15_t)0xe8a5, (q15_t)0x7dd8, (q15_t)0xe89f, (q15_t)0x7dd7, (q15_t)0xe899, - (q15_t)0x7dd6, (q15_t)0xe893, (q15_t)0x7dd5, (q15_t)0xe88c, (q15_t)0x7dd4, (q15_t)0xe886, (q15_t)0x7dd2, (q15_t)0xe880, - (q15_t)0x7dd1, (q15_t)0xe87a, (q15_t)0x7dd0, (q15_t)0xe874, (q15_t)0x7dcf, (q15_t)0xe86e, (q15_t)0x7dce, (q15_t)0xe867, - (q15_t)0x7dcd, (q15_t)0xe861, (q15_t)0x7dcc, (q15_t)0xe85b, (q15_t)0x7dca, (q15_t)0xe855, (q15_t)0x7dc9, (q15_t)0xe84f, - (q15_t)0x7dc8, (q15_t)0xe849, (q15_t)0x7dc7, (q15_t)0xe842, (q15_t)0x7dc6, (q15_t)0xe83c, (q15_t)0x7dc5, (q15_t)0xe836, - (q15_t)0x7dc3, (q15_t)0xe830, (q15_t)0x7dc2, (q15_t)0xe82a, (q15_t)0x7dc1, (q15_t)0xe823, (q15_t)0x7dc0, (q15_t)0xe81d, - (q15_t)0x7dbf, (q15_t)0xe817, (q15_t)0x7dbd, (q15_t)0xe811, (q15_t)0x7dbc, (q15_t)0xe80b, (q15_t)0x7dbb, (q15_t)0xe805, - (q15_t)0x7dba, (q15_t)0xe7fe, (q15_t)0x7db9, (q15_t)0xe7f8, (q15_t)0x7db8, (q15_t)0xe7f2, (q15_t)0x7db6, (q15_t)0xe7ec, - (q15_t)0x7db5, (q15_t)0xe7e6, (q15_t)0x7db4, (q15_t)0xe7e0, (q15_t)0x7db3, (q15_t)0xe7d9, (q15_t)0x7db2, (q15_t)0xe7d3, - (q15_t)0x7db0, (q15_t)0xe7cd, (q15_t)0x7daf, (q15_t)0xe7c7, (q15_t)0x7dae, (q15_t)0xe7c1, (q15_t)0x7dad, (q15_t)0xe7bb, - (q15_t)0x7dac, (q15_t)0xe7b4, (q15_t)0x7dab, (q15_t)0xe7ae, (q15_t)0x7da9, (q15_t)0xe7a8, (q15_t)0x7da8, (q15_t)0xe7a2, - (q15_t)0x7da7, (q15_t)0xe79c, (q15_t)0x7da6, (q15_t)0xe796, (q15_t)0x7da5, (q15_t)0xe78f, (q15_t)0x7da3, (q15_t)0xe789, - (q15_t)0x7da2, (q15_t)0xe783, (q15_t)0x7da1, (q15_t)0xe77d, (q15_t)0x7da0, (q15_t)0xe777, (q15_t)0x7d9f, (q15_t)0xe771, - (q15_t)0x7d9d, (q15_t)0xe76a, (q15_t)0x7d9c, (q15_t)0xe764, (q15_t)0x7d9b, (q15_t)0xe75e, (q15_t)0x7d9a, (q15_t)0xe758, - (q15_t)0x7d98, (q15_t)0xe752, (q15_t)0x7d97, (q15_t)0xe74c, (q15_t)0x7d96, (q15_t)0xe745, (q15_t)0x7d95, (q15_t)0xe73f, - (q15_t)0x7d94, (q15_t)0xe739, (q15_t)0x7d92, (q15_t)0xe733, (q15_t)0x7d91, (q15_t)0xe72d, (q15_t)0x7d90, (q15_t)0xe727, - (q15_t)0x7d8f, (q15_t)0xe720, (q15_t)0x7d8e, (q15_t)0xe71a, (q15_t)0x7d8c, (q15_t)0xe714, (q15_t)0x7d8b, (q15_t)0xe70e, - (q15_t)0x7d8a, (q15_t)0xe708, (q15_t)0x7d89, (q15_t)0xe702, (q15_t)0x7d87, (q15_t)0xe6fb, (q15_t)0x7d86, (q15_t)0xe6f5, - (q15_t)0x7d85, (q15_t)0xe6ef, (q15_t)0x7d84, (q15_t)0xe6e9, (q15_t)0x7d82, (q15_t)0xe6e3, (q15_t)0x7d81, (q15_t)0xe6dd, - (q15_t)0x7d80, (q15_t)0xe6d6, (q15_t)0x7d7f, (q15_t)0xe6d0, (q15_t)0x7d7e, (q15_t)0xe6ca, (q15_t)0x7d7c, (q15_t)0xe6c4, - (q15_t)0x7d7b, (q15_t)0xe6be, (q15_t)0x7d7a, (q15_t)0xe6b8, (q15_t)0x7d79, (q15_t)0xe6b2, (q15_t)0x7d77, (q15_t)0xe6ab, - (q15_t)0x7d76, (q15_t)0xe6a5, (q15_t)0x7d75, (q15_t)0xe69f, (q15_t)0x7d74, (q15_t)0xe699, (q15_t)0x7d72, (q15_t)0xe693, - (q15_t)0x7d71, (q15_t)0xe68d, (q15_t)0x7d70, (q15_t)0xe686, (q15_t)0x7d6f, (q15_t)0xe680, (q15_t)0x7d6d, (q15_t)0xe67a, - (q15_t)0x7d6c, (q15_t)0xe674, (q15_t)0x7d6b, (q15_t)0xe66e, (q15_t)0x7d6a, (q15_t)0xe668, (q15_t)0x7d68, (q15_t)0xe661, - (q15_t)0x7d67, (q15_t)0xe65b, (q15_t)0x7d66, (q15_t)0xe655, (q15_t)0x7d65, (q15_t)0xe64f, (q15_t)0x7d63, (q15_t)0xe649, - (q15_t)0x7d62, (q15_t)0xe643, (q15_t)0x7d61, (q15_t)0xe63d, (q15_t)0x7d60, (q15_t)0xe636, (q15_t)0x7d5e, (q15_t)0xe630, - (q15_t)0x7d5d, (q15_t)0xe62a, (q15_t)0x7d5c, (q15_t)0xe624, (q15_t)0x7d5a, (q15_t)0xe61e, (q15_t)0x7d59, (q15_t)0xe618, - (q15_t)0x7d58, (q15_t)0xe611, (q15_t)0x7d57, (q15_t)0xe60b, (q15_t)0x7d55, (q15_t)0xe605, (q15_t)0x7d54, (q15_t)0xe5ff, - (q15_t)0x7d53, (q15_t)0xe5f9, (q15_t)0x7d52, (q15_t)0xe5f3, (q15_t)0x7d50, (q15_t)0xe5ed, (q15_t)0x7d4f, (q15_t)0xe5e6, - (q15_t)0x7d4e, (q15_t)0xe5e0, (q15_t)0x7d4c, (q15_t)0xe5da, (q15_t)0x7d4b, (q15_t)0xe5d4, (q15_t)0x7d4a, (q15_t)0xe5ce, - (q15_t)0x7d49, (q15_t)0xe5c8, (q15_t)0x7d47, (q15_t)0xe5c2, (q15_t)0x7d46, (q15_t)0xe5bb, (q15_t)0x7d45, (q15_t)0xe5b5, - (q15_t)0x7d43, (q15_t)0xe5af, (q15_t)0x7d42, (q15_t)0xe5a9, (q15_t)0x7d41, (q15_t)0xe5a3, (q15_t)0x7d3f, (q15_t)0xe59d, - (q15_t)0x7d3e, (q15_t)0xe596, (q15_t)0x7d3d, (q15_t)0xe590, (q15_t)0x7d3c, (q15_t)0xe58a, (q15_t)0x7d3a, (q15_t)0xe584, - (q15_t)0x7d39, (q15_t)0xe57e, (q15_t)0x7d38, (q15_t)0xe578, (q15_t)0x7d36, (q15_t)0xe572, (q15_t)0x7d35, (q15_t)0xe56b, - (q15_t)0x7d34, (q15_t)0xe565, (q15_t)0x7d32, (q15_t)0xe55f, (q15_t)0x7d31, (q15_t)0xe559, (q15_t)0x7d30, (q15_t)0xe553, - (q15_t)0x7d2f, (q15_t)0xe54d, (q15_t)0x7d2d, (q15_t)0xe547, (q15_t)0x7d2c, (q15_t)0xe540, (q15_t)0x7d2b, (q15_t)0xe53a, - (q15_t)0x7d29, (q15_t)0xe534, (q15_t)0x7d28, (q15_t)0xe52e, (q15_t)0x7d27, (q15_t)0xe528, (q15_t)0x7d25, (q15_t)0xe522, - (q15_t)0x7d24, (q15_t)0xe51c, (q15_t)0x7d23, (q15_t)0xe515, (q15_t)0x7d21, (q15_t)0xe50f, (q15_t)0x7d20, (q15_t)0xe509, - (q15_t)0x7d1f, (q15_t)0xe503, (q15_t)0x7d1d, (q15_t)0xe4fd, (q15_t)0x7d1c, (q15_t)0xe4f7, (q15_t)0x7d1b, (q15_t)0xe4f1, - (q15_t)0x7d19, (q15_t)0xe4ea, (q15_t)0x7d18, (q15_t)0xe4e4, (q15_t)0x7d17, (q15_t)0xe4de, (q15_t)0x7d15, (q15_t)0xe4d8, - (q15_t)0x7d14, (q15_t)0xe4d2, (q15_t)0x7d13, (q15_t)0xe4cc, (q15_t)0x7d11, (q15_t)0xe4c6, (q15_t)0x7d10, (q15_t)0xe4bf, - (q15_t)0x7d0f, (q15_t)0xe4b9, (q15_t)0x7d0d, (q15_t)0xe4b3, (q15_t)0x7d0c, (q15_t)0xe4ad, (q15_t)0x7d0b, (q15_t)0xe4a7, - (q15_t)0x7d09, (q15_t)0xe4a1, (q15_t)0x7d08, (q15_t)0xe49b, (q15_t)0x7d07, (q15_t)0xe494, (q15_t)0x7d05, (q15_t)0xe48e, - (q15_t)0x7d04, (q15_t)0xe488, (q15_t)0x7d03, (q15_t)0xe482, (q15_t)0x7d01, (q15_t)0xe47c, (q15_t)0x7d00, (q15_t)0xe476, - (q15_t)0x7cff, (q15_t)0xe470, (q15_t)0x7cfd, (q15_t)0xe46a, (q15_t)0x7cfc, (q15_t)0xe463, (q15_t)0x7cfb, (q15_t)0xe45d, - (q15_t)0x7cf9, (q15_t)0xe457, (q15_t)0x7cf8, (q15_t)0xe451, (q15_t)0x7cf6, (q15_t)0xe44b, (q15_t)0x7cf5, (q15_t)0xe445, - (q15_t)0x7cf4, (q15_t)0xe43f, (q15_t)0x7cf2, (q15_t)0xe438, (q15_t)0x7cf1, (q15_t)0xe432, (q15_t)0x7cf0, (q15_t)0xe42c, - (q15_t)0x7cee, (q15_t)0xe426, (q15_t)0x7ced, (q15_t)0xe420, (q15_t)0x7cec, (q15_t)0xe41a, (q15_t)0x7cea, (q15_t)0xe414, - (q15_t)0x7ce9, (q15_t)0xe40e, (q15_t)0x7ce7, (q15_t)0xe407, (q15_t)0x7ce6, (q15_t)0xe401, (q15_t)0x7ce5, (q15_t)0xe3fb, - (q15_t)0x7ce3, (q15_t)0xe3f5, (q15_t)0x7ce2, (q15_t)0xe3ef, (q15_t)0x7ce1, (q15_t)0xe3e9, (q15_t)0x7cdf, (q15_t)0xe3e3, - (q15_t)0x7cde, (q15_t)0xe3dc, (q15_t)0x7cdc, (q15_t)0xe3d6, (q15_t)0x7cdb, (q15_t)0xe3d0, (q15_t)0x7cda, (q15_t)0xe3ca, - (q15_t)0x7cd8, (q15_t)0xe3c4, (q15_t)0x7cd7, (q15_t)0xe3be, (q15_t)0x7cd5, (q15_t)0xe3b8, (q15_t)0x7cd4, (q15_t)0xe3b2, - (q15_t)0x7cd3, (q15_t)0xe3ab, (q15_t)0x7cd1, (q15_t)0xe3a5, (q15_t)0x7cd0, (q15_t)0xe39f, (q15_t)0x7ccf, (q15_t)0xe399, - (q15_t)0x7ccd, (q15_t)0xe393, (q15_t)0x7ccc, (q15_t)0xe38d, (q15_t)0x7cca, (q15_t)0xe387, (q15_t)0x7cc9, (q15_t)0xe381, - (q15_t)0x7cc8, (q15_t)0xe37a, (q15_t)0x7cc6, (q15_t)0xe374, (q15_t)0x7cc5, (q15_t)0xe36e, (q15_t)0x7cc3, (q15_t)0xe368, - (q15_t)0x7cc2, (q15_t)0xe362, (q15_t)0x7cc1, (q15_t)0xe35c, (q15_t)0x7cbf, (q15_t)0xe356, (q15_t)0x7cbe, (q15_t)0xe350, - (q15_t)0x7cbc, (q15_t)0xe349, (q15_t)0x7cbb, (q15_t)0xe343, (q15_t)0x7cb9, (q15_t)0xe33d, (q15_t)0x7cb8, (q15_t)0xe337, - (q15_t)0x7cb7, (q15_t)0xe331, (q15_t)0x7cb5, (q15_t)0xe32b, (q15_t)0x7cb4, (q15_t)0xe325, (q15_t)0x7cb2, (q15_t)0xe31f, - (q15_t)0x7cb1, (q15_t)0xe318, (q15_t)0x7cb0, (q15_t)0xe312, (q15_t)0x7cae, (q15_t)0xe30c, (q15_t)0x7cad, (q15_t)0xe306, - (q15_t)0x7cab, (q15_t)0xe300, (q15_t)0x7caa, (q15_t)0xe2fa, (q15_t)0x7ca8, (q15_t)0xe2f4, (q15_t)0x7ca7, (q15_t)0xe2ee, - (q15_t)0x7ca6, (q15_t)0xe2e8, (q15_t)0x7ca4, (q15_t)0xe2e1, (q15_t)0x7ca3, (q15_t)0xe2db, (q15_t)0x7ca1, (q15_t)0xe2d5, - (q15_t)0x7ca0, (q15_t)0xe2cf, (q15_t)0x7c9e, (q15_t)0xe2c9, (q15_t)0x7c9d, (q15_t)0xe2c3, (q15_t)0x7c9c, (q15_t)0xe2bd, - (q15_t)0x7c9a, (q15_t)0xe2b7, (q15_t)0x7c99, (q15_t)0xe2b0, (q15_t)0x7c97, (q15_t)0xe2aa, (q15_t)0x7c96, (q15_t)0xe2a4, - (q15_t)0x7c94, (q15_t)0xe29e, (q15_t)0x7c93, (q15_t)0xe298, (q15_t)0x7c91, (q15_t)0xe292, (q15_t)0x7c90, (q15_t)0xe28c, - (q15_t)0x7c8f, (q15_t)0xe286, (q15_t)0x7c8d, (q15_t)0xe280, (q15_t)0x7c8c, (q15_t)0xe279, (q15_t)0x7c8a, (q15_t)0xe273, - (q15_t)0x7c89, (q15_t)0xe26d, (q15_t)0x7c87, (q15_t)0xe267, (q15_t)0x7c86, (q15_t)0xe261, (q15_t)0x7c84, (q15_t)0xe25b, - (q15_t)0x7c83, (q15_t)0xe255, (q15_t)0x7c82, (q15_t)0xe24f, (q15_t)0x7c80, (q15_t)0xe249, (q15_t)0x7c7f, (q15_t)0xe242, - (q15_t)0x7c7d, (q15_t)0xe23c, (q15_t)0x7c7c, (q15_t)0xe236, (q15_t)0x7c7a, (q15_t)0xe230, (q15_t)0x7c79, (q15_t)0xe22a, - (q15_t)0x7c77, (q15_t)0xe224, (q15_t)0x7c76, (q15_t)0xe21e, (q15_t)0x7c74, (q15_t)0xe218, (q15_t)0x7c73, (q15_t)0xe212, - (q15_t)0x7c71, (q15_t)0xe20b, (q15_t)0x7c70, (q15_t)0xe205, (q15_t)0x7c6e, (q15_t)0xe1ff, (q15_t)0x7c6d, (q15_t)0xe1f9, - (q15_t)0x7c6c, (q15_t)0xe1f3, (q15_t)0x7c6a, (q15_t)0xe1ed, (q15_t)0x7c69, (q15_t)0xe1e7, (q15_t)0x7c67, (q15_t)0xe1e1, - (q15_t)0x7c66, (q15_t)0xe1db, (q15_t)0x7c64, (q15_t)0xe1d4, (q15_t)0x7c63, (q15_t)0xe1ce, (q15_t)0x7c61, (q15_t)0xe1c8, - (q15_t)0x7c60, (q15_t)0xe1c2, (q15_t)0x7c5e, (q15_t)0xe1bc, (q15_t)0x7c5d, (q15_t)0xe1b6, (q15_t)0x7c5b, (q15_t)0xe1b0, - (q15_t)0x7c5a, (q15_t)0xe1aa, (q15_t)0x7c58, (q15_t)0xe1a4, (q15_t)0x7c57, (q15_t)0xe19e, (q15_t)0x7c55, (q15_t)0xe197, - (q15_t)0x7c54, (q15_t)0xe191, (q15_t)0x7c52, (q15_t)0xe18b, (q15_t)0x7c51, (q15_t)0xe185, (q15_t)0x7c4f, (q15_t)0xe17f, - (q15_t)0x7c4e, (q15_t)0xe179, (q15_t)0x7c4c, (q15_t)0xe173, (q15_t)0x7c4b, (q15_t)0xe16d, (q15_t)0x7c49, (q15_t)0xe167, - (q15_t)0x7c48, (q15_t)0xe160, (q15_t)0x7c46, (q15_t)0xe15a, (q15_t)0x7c45, (q15_t)0xe154, (q15_t)0x7c43, (q15_t)0xe14e, - (q15_t)0x7c42, (q15_t)0xe148, (q15_t)0x7c40, (q15_t)0xe142, (q15_t)0x7c3f, (q15_t)0xe13c, (q15_t)0x7c3d, (q15_t)0xe136, - (q15_t)0x7c3c, (q15_t)0xe130, (q15_t)0x7c3a, (q15_t)0xe12a, (q15_t)0x7c39, (q15_t)0xe123, (q15_t)0x7c37, (q15_t)0xe11d, - (q15_t)0x7c36, (q15_t)0xe117, (q15_t)0x7c34, (q15_t)0xe111, (q15_t)0x7c33, (q15_t)0xe10b, (q15_t)0x7c31, (q15_t)0xe105, - (q15_t)0x7c30, (q15_t)0xe0ff, (q15_t)0x7c2e, (q15_t)0xe0f9, (q15_t)0x7c2d, (q15_t)0xe0f3, (q15_t)0x7c2b, (q15_t)0xe0ed, - (q15_t)0x7c29, (q15_t)0xe0e7, (q15_t)0x7c28, (q15_t)0xe0e0, (q15_t)0x7c26, (q15_t)0xe0da, (q15_t)0x7c25, (q15_t)0xe0d4, - (q15_t)0x7c23, (q15_t)0xe0ce, (q15_t)0x7c22, (q15_t)0xe0c8, (q15_t)0x7c20, (q15_t)0xe0c2, (q15_t)0x7c1f, (q15_t)0xe0bc, - (q15_t)0x7c1d, (q15_t)0xe0b6, (q15_t)0x7c1c, (q15_t)0xe0b0, (q15_t)0x7c1a, (q15_t)0xe0aa, (q15_t)0x7c19, (q15_t)0xe0a3, - (q15_t)0x7c17, (q15_t)0xe09d, (q15_t)0x7c16, (q15_t)0xe097, (q15_t)0x7c14, (q15_t)0xe091, (q15_t)0x7c12, (q15_t)0xe08b, - (q15_t)0x7c11, (q15_t)0xe085, (q15_t)0x7c0f, (q15_t)0xe07f, (q15_t)0x7c0e, (q15_t)0xe079, (q15_t)0x7c0c, (q15_t)0xe073, - (q15_t)0x7c0b, (q15_t)0xe06d, (q15_t)0x7c09, (q15_t)0xe067, (q15_t)0x7c08, (q15_t)0xe061, (q15_t)0x7c06, (q15_t)0xe05a, - (q15_t)0x7c05, (q15_t)0xe054, (q15_t)0x7c03, (q15_t)0xe04e, (q15_t)0x7c01, (q15_t)0xe048, (q15_t)0x7c00, (q15_t)0xe042, - (q15_t)0x7bfe, (q15_t)0xe03c, (q15_t)0x7bfd, (q15_t)0xe036, (q15_t)0x7bfb, (q15_t)0xe030, (q15_t)0x7bfa, (q15_t)0xe02a, - (q15_t)0x7bf8, (q15_t)0xe024, (q15_t)0x7bf6, (q15_t)0xe01e, (q15_t)0x7bf5, (q15_t)0xe017, (q15_t)0x7bf3, (q15_t)0xe011, - (q15_t)0x7bf2, (q15_t)0xe00b, (q15_t)0x7bf0, (q15_t)0xe005, (q15_t)0x7bef, (q15_t)0xdfff, (q15_t)0x7bed, (q15_t)0xdff9, - (q15_t)0x7beb, (q15_t)0xdff3, (q15_t)0x7bea, (q15_t)0xdfed, (q15_t)0x7be8, (q15_t)0xdfe7, (q15_t)0x7be7, (q15_t)0xdfe1, - (q15_t)0x7be5, (q15_t)0xdfdb, (q15_t)0x7be4, (q15_t)0xdfd5, (q15_t)0x7be2, (q15_t)0xdfce, (q15_t)0x7be0, (q15_t)0xdfc8, - (q15_t)0x7bdf, (q15_t)0xdfc2, (q15_t)0x7bdd, (q15_t)0xdfbc, (q15_t)0x7bdc, (q15_t)0xdfb6, (q15_t)0x7bda, (q15_t)0xdfb0, - (q15_t)0x7bd9, (q15_t)0xdfaa, (q15_t)0x7bd7, (q15_t)0xdfa4, (q15_t)0x7bd5, (q15_t)0xdf9e, (q15_t)0x7bd4, (q15_t)0xdf98, - (q15_t)0x7bd2, (q15_t)0xdf92, (q15_t)0x7bd1, (q15_t)0xdf8c, (q15_t)0x7bcf, (q15_t)0xdf86, (q15_t)0x7bcd, (q15_t)0xdf7f, - (q15_t)0x7bcc, (q15_t)0xdf79, (q15_t)0x7bca, (q15_t)0xdf73, (q15_t)0x7bc9, (q15_t)0xdf6d, (q15_t)0x7bc7, (q15_t)0xdf67, - (q15_t)0x7bc5, (q15_t)0xdf61, (q15_t)0x7bc4, (q15_t)0xdf5b, (q15_t)0x7bc2, (q15_t)0xdf55, (q15_t)0x7bc1, (q15_t)0xdf4f, - (q15_t)0x7bbf, (q15_t)0xdf49, (q15_t)0x7bbd, (q15_t)0xdf43, (q15_t)0x7bbc, (q15_t)0xdf3d, (q15_t)0x7bba, (q15_t)0xdf37, - (q15_t)0x7bb9, (q15_t)0xdf30, (q15_t)0x7bb7, (q15_t)0xdf2a, (q15_t)0x7bb5, (q15_t)0xdf24, (q15_t)0x7bb4, (q15_t)0xdf1e, - (q15_t)0x7bb2, (q15_t)0xdf18, (q15_t)0x7bb0, (q15_t)0xdf12, (q15_t)0x7baf, (q15_t)0xdf0c, (q15_t)0x7bad, (q15_t)0xdf06, - (q15_t)0x7bac, (q15_t)0xdf00, (q15_t)0x7baa, (q15_t)0xdefa, (q15_t)0x7ba8, (q15_t)0xdef4, (q15_t)0x7ba7, (q15_t)0xdeee, - (q15_t)0x7ba5, (q15_t)0xdee8, (q15_t)0x7ba3, (q15_t)0xdee2, (q15_t)0x7ba2, (q15_t)0xdedb, (q15_t)0x7ba0, (q15_t)0xded5, - (q15_t)0x7b9f, (q15_t)0xdecf, (q15_t)0x7b9d, (q15_t)0xdec9, (q15_t)0x7b9b, (q15_t)0xdec3, (q15_t)0x7b9a, (q15_t)0xdebd, - (q15_t)0x7b98, (q15_t)0xdeb7, (q15_t)0x7b96, (q15_t)0xdeb1, (q15_t)0x7b95, (q15_t)0xdeab, (q15_t)0x7b93, (q15_t)0xdea5, - (q15_t)0x7b92, (q15_t)0xde9f, (q15_t)0x7b90, (q15_t)0xde99, (q15_t)0x7b8e, (q15_t)0xde93, (q15_t)0x7b8d, (q15_t)0xde8d, - (q15_t)0x7b8b, (q15_t)0xde87, (q15_t)0x7b89, (q15_t)0xde80, (q15_t)0x7b88, (q15_t)0xde7a, (q15_t)0x7b86, (q15_t)0xde74, - (q15_t)0x7b84, (q15_t)0xde6e, (q15_t)0x7b83, (q15_t)0xde68, (q15_t)0x7b81, (q15_t)0xde62, (q15_t)0x7b7f, (q15_t)0xde5c, - (q15_t)0x7b7e, (q15_t)0xde56, (q15_t)0x7b7c, (q15_t)0xde50, (q15_t)0x7b7a, (q15_t)0xde4a, (q15_t)0x7b79, (q15_t)0xde44, - (q15_t)0x7b77, (q15_t)0xde3e, (q15_t)0x7b76, (q15_t)0xde38, (q15_t)0x7b74, (q15_t)0xde32, (q15_t)0x7b72, (q15_t)0xde2c, - (q15_t)0x7b71, (q15_t)0xde26, (q15_t)0x7b6f, (q15_t)0xde1f, (q15_t)0x7b6d, (q15_t)0xde19, (q15_t)0x7b6c, (q15_t)0xde13, - (q15_t)0x7b6a, (q15_t)0xde0d, (q15_t)0x7b68, (q15_t)0xde07, (q15_t)0x7b67, (q15_t)0xde01, (q15_t)0x7b65, (q15_t)0xddfb, - (q15_t)0x7b63, (q15_t)0xddf5, (q15_t)0x7b62, (q15_t)0xddef, (q15_t)0x7b60, (q15_t)0xdde9, (q15_t)0x7b5e, (q15_t)0xdde3, - (q15_t)0x7b5d, (q15_t)0xdddd, (q15_t)0x7b5b, (q15_t)0xddd7, (q15_t)0x7b59, (q15_t)0xddd1, (q15_t)0x7b57, (q15_t)0xddcb, - (q15_t)0x7b56, (q15_t)0xddc5, (q15_t)0x7b54, (q15_t)0xddbf, (q15_t)0x7b52, (q15_t)0xddb9, (q15_t)0x7b51, (q15_t)0xddb2, - (q15_t)0x7b4f, (q15_t)0xddac, (q15_t)0x7b4d, (q15_t)0xdda6, (q15_t)0x7b4c, (q15_t)0xdda0, (q15_t)0x7b4a, (q15_t)0xdd9a, - (q15_t)0x7b48, (q15_t)0xdd94, (q15_t)0x7b47, (q15_t)0xdd8e, (q15_t)0x7b45, (q15_t)0xdd88, (q15_t)0x7b43, (q15_t)0xdd82, - (q15_t)0x7b42, (q15_t)0xdd7c, (q15_t)0x7b40, (q15_t)0xdd76, (q15_t)0x7b3e, (q15_t)0xdd70, (q15_t)0x7b3c, (q15_t)0xdd6a, - (q15_t)0x7b3b, (q15_t)0xdd64, (q15_t)0x7b39, (q15_t)0xdd5e, (q15_t)0x7b37, (q15_t)0xdd58, (q15_t)0x7b36, (q15_t)0xdd52, - (q15_t)0x7b34, (q15_t)0xdd4c, (q15_t)0x7b32, (q15_t)0xdd46, (q15_t)0x7b31, (q15_t)0xdd40, (q15_t)0x7b2f, (q15_t)0xdd39, - (q15_t)0x7b2d, (q15_t)0xdd33, (q15_t)0x7b2b, (q15_t)0xdd2d, (q15_t)0x7b2a, (q15_t)0xdd27, (q15_t)0x7b28, (q15_t)0xdd21, - (q15_t)0x7b26, (q15_t)0xdd1b, (q15_t)0x7b25, (q15_t)0xdd15, (q15_t)0x7b23, (q15_t)0xdd0f, (q15_t)0x7b21, (q15_t)0xdd09, - (q15_t)0x7b1f, (q15_t)0xdd03, (q15_t)0x7b1e, (q15_t)0xdcfd, (q15_t)0x7b1c, (q15_t)0xdcf7, (q15_t)0x7b1a, (q15_t)0xdcf1, - (q15_t)0x7b19, (q15_t)0xdceb, (q15_t)0x7b17, (q15_t)0xdce5, (q15_t)0x7b15, (q15_t)0xdcdf, (q15_t)0x7b13, (q15_t)0xdcd9, - (q15_t)0x7b12, (q15_t)0xdcd3, (q15_t)0x7b10, (q15_t)0xdccd, (q15_t)0x7b0e, (q15_t)0xdcc7, (q15_t)0x7b0c, (q15_t)0xdcc1, - (q15_t)0x7b0b, (q15_t)0xdcbb, (q15_t)0x7b09, (q15_t)0xdcb5, (q15_t)0x7b07, (q15_t)0xdcae, (q15_t)0x7b06, (q15_t)0xdca8, - (q15_t)0x7b04, (q15_t)0xdca2, (q15_t)0x7b02, (q15_t)0xdc9c, (q15_t)0x7b00, (q15_t)0xdc96, (q15_t)0x7aff, (q15_t)0xdc90, - (q15_t)0x7afd, (q15_t)0xdc8a, (q15_t)0x7afb, (q15_t)0xdc84, (q15_t)0x7af9, (q15_t)0xdc7e, (q15_t)0x7af8, (q15_t)0xdc78, - (q15_t)0x7af6, (q15_t)0xdc72, (q15_t)0x7af4, (q15_t)0xdc6c, (q15_t)0x7af2, (q15_t)0xdc66, (q15_t)0x7af1, (q15_t)0xdc60, - (q15_t)0x7aef, (q15_t)0xdc5a, (q15_t)0x7aed, (q15_t)0xdc54, (q15_t)0x7aeb, (q15_t)0xdc4e, (q15_t)0x7aea, (q15_t)0xdc48, - (q15_t)0x7ae8, (q15_t)0xdc42, (q15_t)0x7ae6, (q15_t)0xdc3c, (q15_t)0x7ae4, (q15_t)0xdc36, (q15_t)0x7ae3, (q15_t)0xdc30, - (q15_t)0x7ae1, (q15_t)0xdc2a, (q15_t)0x7adf, (q15_t)0xdc24, (q15_t)0x7add, (q15_t)0xdc1e, (q15_t)0x7adc, (q15_t)0xdc18, - (q15_t)0x7ada, (q15_t)0xdc12, (q15_t)0x7ad8, (q15_t)0xdc0c, (q15_t)0x7ad6, (q15_t)0xdc06, (q15_t)0x7ad5, (q15_t)0xdbff, - (q15_t)0x7ad3, (q15_t)0xdbf9, (q15_t)0x7ad1, (q15_t)0xdbf3, (q15_t)0x7acf, (q15_t)0xdbed, (q15_t)0x7acd, (q15_t)0xdbe7, - (q15_t)0x7acc, (q15_t)0xdbe1, (q15_t)0x7aca, (q15_t)0xdbdb, (q15_t)0x7ac8, (q15_t)0xdbd5, (q15_t)0x7ac6, (q15_t)0xdbcf, - (q15_t)0x7ac5, (q15_t)0xdbc9, (q15_t)0x7ac3, (q15_t)0xdbc3, (q15_t)0x7ac1, (q15_t)0xdbbd, (q15_t)0x7abf, (q15_t)0xdbb7, - (q15_t)0x7abd, (q15_t)0xdbb1, (q15_t)0x7abc, (q15_t)0xdbab, (q15_t)0x7aba, (q15_t)0xdba5, (q15_t)0x7ab8, (q15_t)0xdb9f, - (q15_t)0x7ab6, (q15_t)0xdb99, (q15_t)0x7ab5, (q15_t)0xdb93, (q15_t)0x7ab3, (q15_t)0xdb8d, (q15_t)0x7ab1, (q15_t)0xdb87, - (q15_t)0x7aaf, (q15_t)0xdb81, (q15_t)0x7aad, (q15_t)0xdb7b, (q15_t)0x7aac, (q15_t)0xdb75, (q15_t)0x7aaa, (q15_t)0xdb6f, - (q15_t)0x7aa8, (q15_t)0xdb69, (q15_t)0x7aa6, (q15_t)0xdb63, (q15_t)0x7aa4, (q15_t)0xdb5d, (q15_t)0x7aa3, (q15_t)0xdb57, - (q15_t)0x7aa1, (q15_t)0xdb51, (q15_t)0x7a9f, (q15_t)0xdb4b, (q15_t)0x7a9d, (q15_t)0xdb45, (q15_t)0x7a9b, (q15_t)0xdb3f, - (q15_t)0x7a9a, (q15_t)0xdb39, (q15_t)0x7a98, (q15_t)0xdb33, (q15_t)0x7a96, (q15_t)0xdb2d, (q15_t)0x7a94, (q15_t)0xdb27, - (q15_t)0x7a92, (q15_t)0xdb21, (q15_t)0x7a91, (q15_t)0xdb1b, (q15_t)0x7a8f, (q15_t)0xdb15, (q15_t)0x7a8d, (q15_t)0xdb0f, - (q15_t)0x7a8b, (q15_t)0xdb09, (q15_t)0x7a89, (q15_t)0xdb03, (q15_t)0x7a87, (q15_t)0xdafd, (q15_t)0x7a86, (q15_t)0xdaf7, - (q15_t)0x7a84, (q15_t)0xdaf1, (q15_t)0x7a82, (q15_t)0xdaea, (q15_t)0x7a80, (q15_t)0xdae4, (q15_t)0x7a7e, (q15_t)0xdade, - (q15_t)0x7a7d, (q15_t)0xdad8, (q15_t)0x7a7b, (q15_t)0xdad2, (q15_t)0x7a79, (q15_t)0xdacc, (q15_t)0x7a77, (q15_t)0xdac6, - (q15_t)0x7a75, (q15_t)0xdac0, (q15_t)0x7a73, (q15_t)0xdaba, (q15_t)0x7a72, (q15_t)0xdab4, (q15_t)0x7a70, (q15_t)0xdaae, - (q15_t)0x7a6e, (q15_t)0xdaa8, (q15_t)0x7a6c, (q15_t)0xdaa2, (q15_t)0x7a6a, (q15_t)0xda9c, (q15_t)0x7a68, (q15_t)0xda96, - (q15_t)0x7a67, (q15_t)0xda90, (q15_t)0x7a65, (q15_t)0xda8a, (q15_t)0x7a63, (q15_t)0xda84, (q15_t)0x7a61, (q15_t)0xda7e, - (q15_t)0x7a5f, (q15_t)0xda78, (q15_t)0x7a5d, (q15_t)0xda72, (q15_t)0x7a5c, (q15_t)0xda6c, (q15_t)0x7a5a, (q15_t)0xda66, - (q15_t)0x7a58, (q15_t)0xda60, (q15_t)0x7a56, (q15_t)0xda5a, (q15_t)0x7a54, (q15_t)0xda54, (q15_t)0x7a52, (q15_t)0xda4e, - (q15_t)0x7a50, (q15_t)0xda48, (q15_t)0x7a4f, (q15_t)0xda42, (q15_t)0x7a4d, (q15_t)0xda3c, (q15_t)0x7a4b, (q15_t)0xda36, - (q15_t)0x7a49, (q15_t)0xda30, (q15_t)0x7a47, (q15_t)0xda2a, (q15_t)0x7a45, (q15_t)0xda24, (q15_t)0x7a43, (q15_t)0xda1e, - (q15_t)0x7a42, (q15_t)0xda18, (q15_t)0x7a40, (q15_t)0xda12, (q15_t)0x7a3e, (q15_t)0xda0c, (q15_t)0x7a3c, (q15_t)0xda06, - (q15_t)0x7a3a, (q15_t)0xda00, (q15_t)0x7a38, (q15_t)0xd9fa, (q15_t)0x7a36, (q15_t)0xd9f4, (q15_t)0x7a35, (q15_t)0xd9ee, - (q15_t)0x7a33, (q15_t)0xd9e8, (q15_t)0x7a31, (q15_t)0xd9e2, (q15_t)0x7a2f, (q15_t)0xd9dc, (q15_t)0x7a2d, (q15_t)0xd9d6, - (q15_t)0x7a2b, (q15_t)0xd9d0, (q15_t)0x7a29, (q15_t)0xd9ca, (q15_t)0x7a27, (q15_t)0xd9c4, (q15_t)0x7a26, (q15_t)0xd9be, - (q15_t)0x7a24, (q15_t)0xd9b8, (q15_t)0x7a22, (q15_t)0xd9b2, (q15_t)0x7a20, (q15_t)0xd9ac, (q15_t)0x7a1e, (q15_t)0xd9a6, - (q15_t)0x7a1c, (q15_t)0xd9a0, (q15_t)0x7a1a, (q15_t)0xd99a, (q15_t)0x7a18, (q15_t)0xd994, (q15_t)0x7a16, (q15_t)0xd98e, - (q15_t)0x7a15, (q15_t)0xd988, (q15_t)0x7a13, (q15_t)0xd982, (q15_t)0x7a11, (q15_t)0xd97c, (q15_t)0x7a0f, (q15_t)0xd976, - (q15_t)0x7a0d, (q15_t)0xd970, (q15_t)0x7a0b, (q15_t)0xd96a, (q15_t)0x7a09, (q15_t)0xd964, (q15_t)0x7a07, (q15_t)0xd95e, - (q15_t)0x7a05, (q15_t)0xd958, (q15_t)0x7a04, (q15_t)0xd952, (q15_t)0x7a02, (q15_t)0xd94c, (q15_t)0x7a00, (q15_t)0xd946, - (q15_t)0x79fe, (q15_t)0xd940, (q15_t)0x79fc, (q15_t)0xd93a, (q15_t)0x79fa, (q15_t)0xd934, (q15_t)0x79f8, (q15_t)0xd92e, - (q15_t)0x79f6, (q15_t)0xd928, (q15_t)0x79f4, (q15_t)0xd922, (q15_t)0x79f2, (q15_t)0xd91c, (q15_t)0x79f0, (q15_t)0xd917, - (q15_t)0x79ef, (q15_t)0xd911, (q15_t)0x79ed, (q15_t)0xd90b, (q15_t)0x79eb, (q15_t)0xd905, (q15_t)0x79e9, (q15_t)0xd8ff, - (q15_t)0x79e7, (q15_t)0xd8f9, (q15_t)0x79e5, (q15_t)0xd8f3, (q15_t)0x79e3, (q15_t)0xd8ed, (q15_t)0x79e1, (q15_t)0xd8e7, - (q15_t)0x79df, (q15_t)0xd8e1, (q15_t)0x79dd, (q15_t)0xd8db, (q15_t)0x79db, (q15_t)0xd8d5, (q15_t)0x79d9, (q15_t)0xd8cf, - (q15_t)0x79d8, (q15_t)0xd8c9, (q15_t)0x79d6, (q15_t)0xd8c3, (q15_t)0x79d4, (q15_t)0xd8bd, (q15_t)0x79d2, (q15_t)0xd8b7, - (q15_t)0x79d0, (q15_t)0xd8b1, (q15_t)0x79ce, (q15_t)0xd8ab, (q15_t)0x79cc, (q15_t)0xd8a5, (q15_t)0x79ca, (q15_t)0xd89f, - (q15_t)0x79c8, (q15_t)0xd899, (q15_t)0x79c6, (q15_t)0xd893, (q15_t)0x79c4, (q15_t)0xd88d, (q15_t)0x79c2, (q15_t)0xd887, - (q15_t)0x79c0, (q15_t)0xd881, (q15_t)0x79be, (q15_t)0xd87b, (q15_t)0x79bc, (q15_t)0xd875, (q15_t)0x79bb, (q15_t)0xd86f, - (q15_t)0x79b9, (q15_t)0xd869, (q15_t)0x79b7, (q15_t)0xd863, (q15_t)0x79b5, (q15_t)0xd85d, (q15_t)0x79b3, (q15_t)0xd857, - (q15_t)0x79b1, (q15_t)0xd851, (q15_t)0x79af, (q15_t)0xd84b, (q15_t)0x79ad, (q15_t)0xd845, (q15_t)0x79ab, (q15_t)0xd83f, - (q15_t)0x79a9, (q15_t)0xd839, (q15_t)0x79a7, (q15_t)0xd833, (q15_t)0x79a5, (q15_t)0xd82d, (q15_t)0x79a3, (q15_t)0xd827, - (q15_t)0x79a1, (q15_t)0xd821, (q15_t)0x799f, (q15_t)0xd81b, (q15_t)0x799d, (q15_t)0xd815, (q15_t)0x799b, (q15_t)0xd80f, - (q15_t)0x7999, (q15_t)0xd80a, (q15_t)0x7997, (q15_t)0xd804, (q15_t)0x7995, (q15_t)0xd7fe, (q15_t)0x7993, (q15_t)0xd7f8, - (q15_t)0x7992, (q15_t)0xd7f2, (q15_t)0x7990, (q15_t)0xd7ec, (q15_t)0x798e, (q15_t)0xd7e6, (q15_t)0x798c, (q15_t)0xd7e0, - (q15_t)0x798a, (q15_t)0xd7da, (q15_t)0x7988, (q15_t)0xd7d4, (q15_t)0x7986, (q15_t)0xd7ce, (q15_t)0x7984, (q15_t)0xd7c8, - (q15_t)0x7982, (q15_t)0xd7c2, (q15_t)0x7980, (q15_t)0xd7bc, (q15_t)0x797e, (q15_t)0xd7b6, (q15_t)0x797c, (q15_t)0xd7b0, - (q15_t)0x797a, (q15_t)0xd7aa, (q15_t)0x7978, (q15_t)0xd7a4, (q15_t)0x7976, (q15_t)0xd79e, (q15_t)0x7974, (q15_t)0xd798, - (q15_t)0x7972, (q15_t)0xd792, (q15_t)0x7970, (q15_t)0xd78c, (q15_t)0x796e, (q15_t)0xd786, (q15_t)0x796c, (q15_t)0xd780, - (q15_t)0x796a, (q15_t)0xd77a, (q15_t)0x7968, (q15_t)0xd774, (q15_t)0x7966, (q15_t)0xd76e, (q15_t)0x7964, (q15_t)0xd768, - (q15_t)0x7962, (q15_t)0xd763, (q15_t)0x7960, (q15_t)0xd75d, (q15_t)0x795e, (q15_t)0xd757, (q15_t)0x795c, (q15_t)0xd751, - (q15_t)0x795a, (q15_t)0xd74b, (q15_t)0x7958, (q15_t)0xd745, (q15_t)0x7956, (q15_t)0xd73f, (q15_t)0x7954, (q15_t)0xd739, - (q15_t)0x7952, (q15_t)0xd733, (q15_t)0x7950, (q15_t)0xd72d, (q15_t)0x794e, (q15_t)0xd727, (q15_t)0x794c, (q15_t)0xd721, - (q15_t)0x794a, (q15_t)0xd71b, (q15_t)0x7948, (q15_t)0xd715, (q15_t)0x7946, (q15_t)0xd70f, (q15_t)0x7944, (q15_t)0xd709, - (q15_t)0x7942, (q15_t)0xd703, (q15_t)0x7940, (q15_t)0xd6fd, (q15_t)0x793e, (q15_t)0xd6f7, (q15_t)0x793c, (q15_t)0xd6f1, - (q15_t)0x793a, (q15_t)0xd6eb, (q15_t)0x7938, (q15_t)0xd6e5, (q15_t)0x7936, (q15_t)0xd6e0, (q15_t)0x7934, (q15_t)0xd6da, - (q15_t)0x7932, (q15_t)0xd6d4, (q15_t)0x7930, (q15_t)0xd6ce, (q15_t)0x792e, (q15_t)0xd6c8, (q15_t)0x792c, (q15_t)0xd6c2, - (q15_t)0x792a, (q15_t)0xd6bc, (q15_t)0x7928, (q15_t)0xd6b6, (q15_t)0x7926, (q15_t)0xd6b0, (q15_t)0x7924, (q15_t)0xd6aa, - (q15_t)0x7922, (q15_t)0xd6a4, (q15_t)0x7920, (q15_t)0xd69e, (q15_t)0x791e, (q15_t)0xd698, (q15_t)0x791c, (q15_t)0xd692, - (q15_t)0x7919, (q15_t)0xd68c, (q15_t)0x7917, (q15_t)0xd686, (q15_t)0x7915, (q15_t)0xd680, (q15_t)0x7913, (q15_t)0xd67a, - (q15_t)0x7911, (q15_t)0xd675, (q15_t)0x790f, (q15_t)0xd66f, (q15_t)0x790d, (q15_t)0xd669, (q15_t)0x790b, (q15_t)0xd663, - (q15_t)0x7909, (q15_t)0xd65d, (q15_t)0x7907, (q15_t)0xd657, (q15_t)0x7905, (q15_t)0xd651, (q15_t)0x7903, (q15_t)0xd64b, - (q15_t)0x7901, (q15_t)0xd645, (q15_t)0x78ff, (q15_t)0xd63f, (q15_t)0x78fd, (q15_t)0xd639, (q15_t)0x78fb, (q15_t)0xd633, - (q15_t)0x78f9, (q15_t)0xd62d, (q15_t)0x78f7, (q15_t)0xd627, (q15_t)0x78f5, (q15_t)0xd621, (q15_t)0x78f3, (q15_t)0xd61b, - (q15_t)0x78f1, (q15_t)0xd615, (q15_t)0x78ee, (q15_t)0xd610, (q15_t)0x78ec, (q15_t)0xd60a, (q15_t)0x78ea, (q15_t)0xd604, - (q15_t)0x78e8, (q15_t)0xd5fe, (q15_t)0x78e6, (q15_t)0xd5f8, (q15_t)0x78e4, (q15_t)0xd5f2, (q15_t)0x78e2, (q15_t)0xd5ec, - (q15_t)0x78e0, (q15_t)0xd5e6, (q15_t)0x78de, (q15_t)0xd5e0, (q15_t)0x78dc, (q15_t)0xd5da, (q15_t)0x78da, (q15_t)0xd5d4, - (q15_t)0x78d8, (q15_t)0xd5ce, (q15_t)0x78d6, (q15_t)0xd5c8, (q15_t)0x78d4, (q15_t)0xd5c2, (q15_t)0x78d2, (q15_t)0xd5bc, - (q15_t)0x78cf, (q15_t)0xd5b7, (q15_t)0x78cd, (q15_t)0xd5b1, (q15_t)0x78cb, (q15_t)0xd5ab, (q15_t)0x78c9, (q15_t)0xd5a5, - (q15_t)0x78c7, (q15_t)0xd59f, (q15_t)0x78c5, (q15_t)0xd599, (q15_t)0x78c3, (q15_t)0xd593, (q15_t)0x78c1, (q15_t)0xd58d, - (q15_t)0x78bf, (q15_t)0xd587, (q15_t)0x78bd, (q15_t)0xd581, (q15_t)0x78bb, (q15_t)0xd57b, (q15_t)0x78b9, (q15_t)0xd575, - (q15_t)0x78b6, (q15_t)0xd56f, (q15_t)0x78b4, (q15_t)0xd569, (q15_t)0x78b2, (q15_t)0xd564, (q15_t)0x78b0, (q15_t)0xd55e, - (q15_t)0x78ae, (q15_t)0xd558, (q15_t)0x78ac, (q15_t)0xd552, (q15_t)0x78aa, (q15_t)0xd54c, (q15_t)0x78a8, (q15_t)0xd546, - (q15_t)0x78a6, (q15_t)0xd540, (q15_t)0x78a4, (q15_t)0xd53a, (q15_t)0x78a2, (q15_t)0xd534, (q15_t)0x789f, (q15_t)0xd52e, - (q15_t)0x789d, (q15_t)0xd528, (q15_t)0x789b, (q15_t)0xd522, (q15_t)0x7899, (q15_t)0xd51c, (q15_t)0x7897, (q15_t)0xd517, - (q15_t)0x7895, (q15_t)0xd511, (q15_t)0x7893, (q15_t)0xd50b, (q15_t)0x7891, (q15_t)0xd505, (q15_t)0x788f, (q15_t)0xd4ff, - (q15_t)0x788c, (q15_t)0xd4f9, (q15_t)0x788a, (q15_t)0xd4f3, (q15_t)0x7888, (q15_t)0xd4ed, (q15_t)0x7886, (q15_t)0xd4e7, - (q15_t)0x7884, (q15_t)0xd4e1, (q15_t)0x7882, (q15_t)0xd4db, (q15_t)0x7880, (q15_t)0xd4d5, (q15_t)0x787e, (q15_t)0xd4d0, - (q15_t)0x787c, (q15_t)0xd4ca, (q15_t)0x7879, (q15_t)0xd4c4, (q15_t)0x7877, (q15_t)0xd4be, (q15_t)0x7875, (q15_t)0xd4b8, - (q15_t)0x7873, (q15_t)0xd4b2, (q15_t)0x7871, (q15_t)0xd4ac, (q15_t)0x786f, (q15_t)0xd4a6, (q15_t)0x786d, (q15_t)0xd4a0, - (q15_t)0x786b, (q15_t)0xd49a, (q15_t)0x7868, (q15_t)0xd494, (q15_t)0x7866, (q15_t)0xd48f, (q15_t)0x7864, (q15_t)0xd489, - (q15_t)0x7862, (q15_t)0xd483, (q15_t)0x7860, (q15_t)0xd47d, (q15_t)0x785e, (q15_t)0xd477, (q15_t)0x785c, (q15_t)0xd471, - (q15_t)0x7859, (q15_t)0xd46b, (q15_t)0x7857, (q15_t)0xd465, (q15_t)0x7855, (q15_t)0xd45f, (q15_t)0x7853, (q15_t)0xd459, - (q15_t)0x7851, (q15_t)0xd453, (q15_t)0x784f, (q15_t)0xd44e, (q15_t)0x784d, (q15_t)0xd448, (q15_t)0x784a, (q15_t)0xd442, - (q15_t)0x7848, (q15_t)0xd43c, (q15_t)0x7846, (q15_t)0xd436, (q15_t)0x7844, (q15_t)0xd430, (q15_t)0x7842, (q15_t)0xd42a, - (q15_t)0x7840, (q15_t)0xd424, (q15_t)0x783e, (q15_t)0xd41e, (q15_t)0x783b, (q15_t)0xd418, (q15_t)0x7839, (q15_t)0xd412, - (q15_t)0x7837, (q15_t)0xd40d, (q15_t)0x7835, (q15_t)0xd407, (q15_t)0x7833, (q15_t)0xd401, (q15_t)0x7831, (q15_t)0xd3fb, - (q15_t)0x782e, (q15_t)0xd3f5, (q15_t)0x782c, (q15_t)0xd3ef, (q15_t)0x782a, (q15_t)0xd3e9, (q15_t)0x7828, (q15_t)0xd3e3, - (q15_t)0x7826, (q15_t)0xd3dd, (q15_t)0x7824, (q15_t)0xd3d7, (q15_t)0x7821, (q15_t)0xd3d2, (q15_t)0x781f, (q15_t)0xd3cc, - (q15_t)0x781d, (q15_t)0xd3c6, (q15_t)0x781b, (q15_t)0xd3c0, (q15_t)0x7819, (q15_t)0xd3ba, (q15_t)0x7817, (q15_t)0xd3b4, - (q15_t)0x7814, (q15_t)0xd3ae, (q15_t)0x7812, (q15_t)0xd3a8, (q15_t)0x7810, (q15_t)0xd3a2, (q15_t)0x780e, (q15_t)0xd39d, - (q15_t)0x780c, (q15_t)0xd397, (q15_t)0x780a, (q15_t)0xd391, (q15_t)0x7807, (q15_t)0xd38b, (q15_t)0x7805, (q15_t)0xd385, - (q15_t)0x7803, (q15_t)0xd37f, (q15_t)0x7801, (q15_t)0xd379, (q15_t)0x77ff, (q15_t)0xd373, (q15_t)0x77fc, (q15_t)0xd36d, - (q15_t)0x77fa, (q15_t)0xd368, (q15_t)0x77f8, (q15_t)0xd362, (q15_t)0x77f6, (q15_t)0xd35c, (q15_t)0x77f4, (q15_t)0xd356, - (q15_t)0x77f1, (q15_t)0xd350, (q15_t)0x77ef, (q15_t)0xd34a, (q15_t)0x77ed, (q15_t)0xd344, (q15_t)0x77eb, (q15_t)0xd33e, - (q15_t)0x77e9, (q15_t)0xd338, (q15_t)0x77e6, (q15_t)0xd333, (q15_t)0x77e4, (q15_t)0xd32d, (q15_t)0x77e2, (q15_t)0xd327, - (q15_t)0x77e0, (q15_t)0xd321, (q15_t)0x77de, (q15_t)0xd31b, (q15_t)0x77db, (q15_t)0xd315, (q15_t)0x77d9, (q15_t)0xd30f, - (q15_t)0x77d7, (q15_t)0xd309, (q15_t)0x77d5, (q15_t)0xd303, (q15_t)0x77d3, (q15_t)0xd2fe, (q15_t)0x77d0, (q15_t)0xd2f8, - (q15_t)0x77ce, (q15_t)0xd2f2, (q15_t)0x77cc, (q15_t)0xd2ec, (q15_t)0x77ca, (q15_t)0xd2e6, (q15_t)0x77c8, (q15_t)0xd2e0, - (q15_t)0x77c5, (q15_t)0xd2da, (q15_t)0x77c3, (q15_t)0xd2d4, (q15_t)0x77c1, (q15_t)0xd2cf, (q15_t)0x77bf, (q15_t)0xd2c9, - (q15_t)0x77bc, (q15_t)0xd2c3, (q15_t)0x77ba, (q15_t)0xd2bd, (q15_t)0x77b8, (q15_t)0xd2b7, (q15_t)0x77b6, (q15_t)0xd2b1, - (q15_t)0x77b4, (q15_t)0xd2ab, (q15_t)0x77b1, (q15_t)0xd2a5, (q15_t)0x77af, (q15_t)0xd2a0, (q15_t)0x77ad, (q15_t)0xd29a, - (q15_t)0x77ab, (q15_t)0xd294, (q15_t)0x77a8, (q15_t)0xd28e, (q15_t)0x77a6, (q15_t)0xd288, (q15_t)0x77a4, (q15_t)0xd282, - (q15_t)0x77a2, (q15_t)0xd27c, (q15_t)0x77a0, (q15_t)0xd276, (q15_t)0x779d, (q15_t)0xd271, (q15_t)0x779b, (q15_t)0xd26b, - (q15_t)0x7799, (q15_t)0xd265, (q15_t)0x7797, (q15_t)0xd25f, (q15_t)0x7794, (q15_t)0xd259, (q15_t)0x7792, (q15_t)0xd253, - (q15_t)0x7790, (q15_t)0xd24d, (q15_t)0x778e, (q15_t)0xd247, (q15_t)0x778b, (q15_t)0xd242, (q15_t)0x7789, (q15_t)0xd23c, - (q15_t)0x7787, (q15_t)0xd236, (q15_t)0x7785, (q15_t)0xd230, (q15_t)0x7782, (q15_t)0xd22a, (q15_t)0x7780, (q15_t)0xd224, - (q15_t)0x777e, (q15_t)0xd21e, (q15_t)0x777c, (q15_t)0xd219, (q15_t)0x7779, (q15_t)0xd213, (q15_t)0x7777, (q15_t)0xd20d, - (q15_t)0x7775, (q15_t)0xd207, (q15_t)0x7773, (q15_t)0xd201, (q15_t)0x7770, (q15_t)0xd1fb, (q15_t)0x776e, (q15_t)0xd1f5, - (q15_t)0x776c, (q15_t)0xd1ef, (q15_t)0x776a, (q15_t)0xd1ea, (q15_t)0x7767, (q15_t)0xd1e4, (q15_t)0x7765, (q15_t)0xd1de, - (q15_t)0x7763, (q15_t)0xd1d8, (q15_t)0x7760, (q15_t)0xd1d2, (q15_t)0x775e, (q15_t)0xd1cc, (q15_t)0x775c, (q15_t)0xd1c6, - (q15_t)0x775a, (q15_t)0xd1c1, (q15_t)0x7757, (q15_t)0xd1bb, (q15_t)0x7755, (q15_t)0xd1b5, (q15_t)0x7753, (q15_t)0xd1af, - (q15_t)0x7751, (q15_t)0xd1a9, (q15_t)0x774e, (q15_t)0xd1a3, (q15_t)0x774c, (q15_t)0xd19d, (q15_t)0x774a, (q15_t)0xd198, - (q15_t)0x7747, (q15_t)0xd192, (q15_t)0x7745, (q15_t)0xd18c, (q15_t)0x7743, (q15_t)0xd186, (q15_t)0x7741, (q15_t)0xd180, - (q15_t)0x773e, (q15_t)0xd17a, (q15_t)0x773c, (q15_t)0xd174, (q15_t)0x773a, (q15_t)0xd16f, (q15_t)0x7738, (q15_t)0xd169, - (q15_t)0x7735, (q15_t)0xd163, (q15_t)0x7733, (q15_t)0xd15d, (q15_t)0x7731, (q15_t)0xd157, (q15_t)0x772e, (q15_t)0xd151, - (q15_t)0x772c, (q15_t)0xd14b, (q15_t)0x772a, (q15_t)0xd146, (q15_t)0x7727, (q15_t)0xd140, (q15_t)0x7725, (q15_t)0xd13a, - (q15_t)0x7723, (q15_t)0xd134, (q15_t)0x7721, (q15_t)0xd12e, (q15_t)0x771e, (q15_t)0xd128, (q15_t)0x771c, (q15_t)0xd123, - (q15_t)0x771a, (q15_t)0xd11d, (q15_t)0x7717, (q15_t)0xd117, (q15_t)0x7715, (q15_t)0xd111, (q15_t)0x7713, (q15_t)0xd10b, - (q15_t)0x7710, (q15_t)0xd105, (q15_t)0x770e, (q15_t)0xd0ff, (q15_t)0x770c, (q15_t)0xd0fa, (q15_t)0x770a, (q15_t)0xd0f4, - (q15_t)0x7707, (q15_t)0xd0ee, (q15_t)0x7705, (q15_t)0xd0e8, (q15_t)0x7703, (q15_t)0xd0e2, (q15_t)0x7700, (q15_t)0xd0dc, - (q15_t)0x76fe, (q15_t)0xd0d7, (q15_t)0x76fc, (q15_t)0xd0d1, (q15_t)0x76f9, (q15_t)0xd0cb, (q15_t)0x76f7, (q15_t)0xd0c5, - (q15_t)0x76f5, (q15_t)0xd0bf, (q15_t)0x76f2, (q15_t)0xd0b9, (q15_t)0x76f0, (q15_t)0xd0b4, (q15_t)0x76ee, (q15_t)0xd0ae, - (q15_t)0x76eb, (q15_t)0xd0a8, (q15_t)0x76e9, (q15_t)0xd0a2, (q15_t)0x76e7, (q15_t)0xd09c, (q15_t)0x76e4, (q15_t)0xd096, - (q15_t)0x76e2, (q15_t)0xd091, (q15_t)0x76e0, (q15_t)0xd08b, (q15_t)0x76dd, (q15_t)0xd085, (q15_t)0x76db, (q15_t)0xd07f, - (q15_t)0x76d9, (q15_t)0xd079, (q15_t)0x76d6, (q15_t)0xd073, (q15_t)0x76d4, (q15_t)0xd06e, (q15_t)0x76d2, (q15_t)0xd068, - (q15_t)0x76cf, (q15_t)0xd062, (q15_t)0x76cd, (q15_t)0xd05c, (q15_t)0x76cb, (q15_t)0xd056, (q15_t)0x76c8, (q15_t)0xd050, - (q15_t)0x76c6, (q15_t)0xd04b, (q15_t)0x76c4, (q15_t)0xd045, (q15_t)0x76c1, (q15_t)0xd03f, (q15_t)0x76bf, (q15_t)0xd039, - (q15_t)0x76bd, (q15_t)0xd033, (q15_t)0x76ba, (q15_t)0xd02d, (q15_t)0x76b8, (q15_t)0xd028, (q15_t)0x76b6, (q15_t)0xd022, - (q15_t)0x76b3, (q15_t)0xd01c, (q15_t)0x76b1, (q15_t)0xd016, (q15_t)0x76af, (q15_t)0xd010, (q15_t)0x76ac, (q15_t)0xd00a, - (q15_t)0x76aa, (q15_t)0xd005, (q15_t)0x76a8, (q15_t)0xcfff, (q15_t)0x76a5, (q15_t)0xcff9, (q15_t)0x76a3, (q15_t)0xcff3, - (q15_t)0x76a0, (q15_t)0xcfed, (q15_t)0x769e, (q15_t)0xcfe7, (q15_t)0x769c, (q15_t)0xcfe2, (q15_t)0x7699, (q15_t)0xcfdc, - (q15_t)0x7697, (q15_t)0xcfd6, (q15_t)0x7695, (q15_t)0xcfd0, (q15_t)0x7692, (q15_t)0xcfca, (q15_t)0x7690, (q15_t)0xcfc5, - (q15_t)0x768e, (q15_t)0xcfbf, (q15_t)0x768b, (q15_t)0xcfb9, (q15_t)0x7689, (q15_t)0xcfb3, (q15_t)0x7686, (q15_t)0xcfad, - (q15_t)0x7684, (q15_t)0xcfa7, (q15_t)0x7682, (q15_t)0xcfa2, (q15_t)0x767f, (q15_t)0xcf9c, (q15_t)0x767d, (q15_t)0xcf96, - (q15_t)0x767b, (q15_t)0xcf90, (q15_t)0x7678, (q15_t)0xcf8a, (q15_t)0x7676, (q15_t)0xcf85, (q15_t)0x7673, (q15_t)0xcf7f, - (q15_t)0x7671, (q15_t)0xcf79, (q15_t)0x766f, (q15_t)0xcf73, (q15_t)0x766c, (q15_t)0xcf6d, (q15_t)0x766a, (q15_t)0xcf67, - (q15_t)0x7668, (q15_t)0xcf62, (q15_t)0x7665, (q15_t)0xcf5c, (q15_t)0x7663, (q15_t)0xcf56, (q15_t)0x7660, (q15_t)0xcf50, - (q15_t)0x765e, (q15_t)0xcf4a, (q15_t)0x765c, (q15_t)0xcf45, (q15_t)0x7659, (q15_t)0xcf3f, (q15_t)0x7657, (q15_t)0xcf39, - (q15_t)0x7654, (q15_t)0xcf33, (q15_t)0x7652, (q15_t)0xcf2d, (q15_t)0x7650, (q15_t)0xcf28, (q15_t)0x764d, (q15_t)0xcf22, - (q15_t)0x764b, (q15_t)0xcf1c, (q15_t)0x7648, (q15_t)0xcf16, (q15_t)0x7646, (q15_t)0xcf10, (q15_t)0x7644, (q15_t)0xcf0b, - (q15_t)0x7641, (q15_t)0xcf05, (q15_t)0x763f, (q15_t)0xceff, (q15_t)0x763c, (q15_t)0xcef9, (q15_t)0x763a, (q15_t)0xcef3, - (q15_t)0x7638, (q15_t)0xceee, (q15_t)0x7635, (q15_t)0xcee8, (q15_t)0x7633, (q15_t)0xcee2, (q15_t)0x7630, (q15_t)0xcedc, - (q15_t)0x762e, (q15_t)0xced6, (q15_t)0x762b, (q15_t)0xced1, (q15_t)0x7629, (q15_t)0xcecb, (q15_t)0x7627, (q15_t)0xcec5, - (q15_t)0x7624, (q15_t)0xcebf, (q15_t)0x7622, (q15_t)0xceb9, (q15_t)0x761f, (q15_t)0xceb4, (q15_t)0x761d, (q15_t)0xceae, - (q15_t)0x761b, (q15_t)0xcea8, (q15_t)0x7618, (q15_t)0xcea2, (q15_t)0x7616, (q15_t)0xce9c, (q15_t)0x7613, (q15_t)0xce97, - (q15_t)0x7611, (q15_t)0xce91, (q15_t)0x760e, (q15_t)0xce8b, (q15_t)0x760c, (q15_t)0xce85, (q15_t)0x760a, (q15_t)0xce7f, - (q15_t)0x7607, (q15_t)0xce7a, (q15_t)0x7605, (q15_t)0xce74, (q15_t)0x7602, (q15_t)0xce6e, (q15_t)0x7600, (q15_t)0xce68, - (q15_t)0x75fd, (q15_t)0xce62, (q15_t)0x75fb, (q15_t)0xce5d, (q15_t)0x75f9, (q15_t)0xce57, (q15_t)0x75f6, (q15_t)0xce51, - (q15_t)0x75f4, (q15_t)0xce4b, (q15_t)0x75f1, (q15_t)0xce45, (q15_t)0x75ef, (q15_t)0xce40, (q15_t)0x75ec, (q15_t)0xce3a, - (q15_t)0x75ea, (q15_t)0xce34, (q15_t)0x75e7, (q15_t)0xce2e, (q15_t)0x75e5, (q15_t)0xce28, (q15_t)0x75e3, (q15_t)0xce23, - (q15_t)0x75e0, (q15_t)0xce1d, (q15_t)0x75de, (q15_t)0xce17, (q15_t)0x75db, (q15_t)0xce11, (q15_t)0x75d9, (q15_t)0xce0c, - (q15_t)0x75d6, (q15_t)0xce06, (q15_t)0x75d4, (q15_t)0xce00, (q15_t)0x75d1, (q15_t)0xcdfa, (q15_t)0x75cf, (q15_t)0xcdf4, - (q15_t)0x75cc, (q15_t)0xcdef, (q15_t)0x75ca, (q15_t)0xcde9, (q15_t)0x75c8, (q15_t)0xcde3, (q15_t)0x75c5, (q15_t)0xcddd, - (q15_t)0x75c3, (q15_t)0xcdd8, (q15_t)0x75c0, (q15_t)0xcdd2, (q15_t)0x75be, (q15_t)0xcdcc, (q15_t)0x75bb, (q15_t)0xcdc6, - (q15_t)0x75b9, (q15_t)0xcdc0, (q15_t)0x75b6, (q15_t)0xcdbb, (q15_t)0x75b4, (q15_t)0xcdb5, (q15_t)0x75b1, (q15_t)0xcdaf, - (q15_t)0x75af, (q15_t)0xcda9, (q15_t)0x75ac, (q15_t)0xcda3, (q15_t)0x75aa, (q15_t)0xcd9e, (q15_t)0x75a7, (q15_t)0xcd98, - (q15_t)0x75a5, (q15_t)0xcd92, (q15_t)0x75a3, (q15_t)0xcd8c, (q15_t)0x75a0, (q15_t)0xcd87, (q15_t)0x759e, (q15_t)0xcd81, - (q15_t)0x759b, (q15_t)0xcd7b, (q15_t)0x7599, (q15_t)0xcd75, (q15_t)0x7596, (q15_t)0xcd70, (q15_t)0x7594, (q15_t)0xcd6a, - (q15_t)0x7591, (q15_t)0xcd64, (q15_t)0x758f, (q15_t)0xcd5e, (q15_t)0x758c, (q15_t)0xcd58, (q15_t)0x758a, (q15_t)0xcd53, - (q15_t)0x7587, (q15_t)0xcd4d, (q15_t)0x7585, (q15_t)0xcd47, (q15_t)0x7582, (q15_t)0xcd41, (q15_t)0x7580, (q15_t)0xcd3c, - (q15_t)0x757d, (q15_t)0xcd36, (q15_t)0x757b, (q15_t)0xcd30, (q15_t)0x7578, (q15_t)0xcd2a, (q15_t)0x7576, (q15_t)0xcd25, - (q15_t)0x7573, (q15_t)0xcd1f, (q15_t)0x7571, (q15_t)0xcd19, (q15_t)0x756e, (q15_t)0xcd13, (q15_t)0x756c, (q15_t)0xcd0d, - (q15_t)0x7569, (q15_t)0xcd08, (q15_t)0x7567, (q15_t)0xcd02, (q15_t)0x7564, (q15_t)0xccfc, (q15_t)0x7562, (q15_t)0xccf6, - (q15_t)0x755f, (q15_t)0xccf1, (q15_t)0x755d, (q15_t)0xcceb, (q15_t)0x755a, (q15_t)0xcce5, (q15_t)0x7558, (q15_t)0xccdf, - (q15_t)0x7555, (q15_t)0xccda, (q15_t)0x7553, (q15_t)0xccd4, (q15_t)0x7550, (q15_t)0xccce, (q15_t)0x754e, (q15_t)0xccc8, - (q15_t)0x754b, (q15_t)0xccc3, (q15_t)0x7549, (q15_t)0xccbd, (q15_t)0x7546, (q15_t)0xccb7, (q15_t)0x7544, (q15_t)0xccb1, - (q15_t)0x7541, (q15_t)0xccac, (q15_t)0x753f, (q15_t)0xcca6, (q15_t)0x753c, (q15_t)0xcca0, (q15_t)0x753a, (q15_t)0xcc9a, - (q15_t)0x7537, (q15_t)0xcc95, (q15_t)0x7535, (q15_t)0xcc8f, (q15_t)0x7532, (q15_t)0xcc89, (q15_t)0x752f, (q15_t)0xcc83, - (q15_t)0x752d, (q15_t)0xcc7e, (q15_t)0x752a, (q15_t)0xcc78, (q15_t)0x7528, (q15_t)0xcc72, (q15_t)0x7525, (q15_t)0xcc6c, - (q15_t)0x7523, (q15_t)0xcc67, (q15_t)0x7520, (q15_t)0xcc61, (q15_t)0x751e, (q15_t)0xcc5b, (q15_t)0x751b, (q15_t)0xcc55, - (q15_t)0x7519, (q15_t)0xcc50, (q15_t)0x7516, (q15_t)0xcc4a, (q15_t)0x7514, (q15_t)0xcc44, (q15_t)0x7511, (q15_t)0xcc3e, - (q15_t)0x750f, (q15_t)0xcc39, (q15_t)0x750c, (q15_t)0xcc33, (q15_t)0x7509, (q15_t)0xcc2d, (q15_t)0x7507, (q15_t)0xcc27, - (q15_t)0x7504, (q15_t)0xcc22, (q15_t)0x7502, (q15_t)0xcc1c, (q15_t)0x74ff, (q15_t)0xcc16, (q15_t)0x74fd, (q15_t)0xcc10, - (q15_t)0x74fa, (q15_t)0xcc0b, (q15_t)0x74f8, (q15_t)0xcc05, (q15_t)0x74f5, (q15_t)0xcbff, (q15_t)0x74f2, (q15_t)0xcbf9, - (q15_t)0x74f0, (q15_t)0xcbf4, (q15_t)0x74ed, (q15_t)0xcbee, (q15_t)0x74eb, (q15_t)0xcbe8, (q15_t)0x74e8, (q15_t)0xcbe2, - (q15_t)0x74e6, (q15_t)0xcbdd, (q15_t)0x74e3, (q15_t)0xcbd7, (q15_t)0x74e1, (q15_t)0xcbd1, (q15_t)0x74de, (q15_t)0xcbcb, - (q15_t)0x74db, (q15_t)0xcbc6, (q15_t)0x74d9, (q15_t)0xcbc0, (q15_t)0x74d6, (q15_t)0xcbba, (q15_t)0x74d4, (q15_t)0xcbb5, - (q15_t)0x74d1, (q15_t)0xcbaf, (q15_t)0x74cf, (q15_t)0xcba9, (q15_t)0x74cc, (q15_t)0xcba3, (q15_t)0x74c9, (q15_t)0xcb9e, - (q15_t)0x74c7, (q15_t)0xcb98, (q15_t)0x74c4, (q15_t)0xcb92, (q15_t)0x74c2, (q15_t)0xcb8c, (q15_t)0x74bf, (q15_t)0xcb87, - (q15_t)0x74bd, (q15_t)0xcb81, (q15_t)0x74ba, (q15_t)0xcb7b, (q15_t)0x74b7, (q15_t)0xcb75, (q15_t)0x74b5, (q15_t)0xcb70, - (q15_t)0x74b2, (q15_t)0xcb6a, (q15_t)0x74b0, (q15_t)0xcb64, (q15_t)0x74ad, (q15_t)0xcb5f, (q15_t)0x74ab, (q15_t)0xcb59, - (q15_t)0x74a8, (q15_t)0xcb53, (q15_t)0x74a5, (q15_t)0xcb4d, (q15_t)0x74a3, (q15_t)0xcb48, (q15_t)0x74a0, (q15_t)0xcb42, - (q15_t)0x749e, (q15_t)0xcb3c, (q15_t)0x749b, (q15_t)0xcb36, (q15_t)0x7498, (q15_t)0xcb31, (q15_t)0x7496, (q15_t)0xcb2b, - (q15_t)0x7493, (q15_t)0xcb25, (q15_t)0x7491, (q15_t)0xcb20, (q15_t)0x748e, (q15_t)0xcb1a, (q15_t)0x748b, (q15_t)0xcb14, - (q15_t)0x7489, (q15_t)0xcb0e, (q15_t)0x7486, (q15_t)0xcb09, (q15_t)0x7484, (q15_t)0xcb03, (q15_t)0x7481, (q15_t)0xcafd, - (q15_t)0x747e, (q15_t)0xcaf8, (q15_t)0x747c, (q15_t)0xcaf2, (q15_t)0x7479, (q15_t)0xcaec, (q15_t)0x7477, (q15_t)0xcae6, - (q15_t)0x7474, (q15_t)0xcae1, (q15_t)0x7471, (q15_t)0xcadb, (q15_t)0x746f, (q15_t)0xcad5, (q15_t)0x746c, (q15_t)0xcad0, - (q15_t)0x746a, (q15_t)0xcaca, (q15_t)0x7467, (q15_t)0xcac4, (q15_t)0x7464, (q15_t)0xcabe, (q15_t)0x7462, (q15_t)0xcab9, - (q15_t)0x745f, (q15_t)0xcab3, (q15_t)0x745c, (q15_t)0xcaad, (q15_t)0x745a, (q15_t)0xcaa8, (q15_t)0x7457, (q15_t)0xcaa2, - (q15_t)0x7455, (q15_t)0xca9c, (q15_t)0x7452, (q15_t)0xca96, (q15_t)0x744f, (q15_t)0xca91, (q15_t)0x744d, (q15_t)0xca8b, - (q15_t)0x744a, (q15_t)0xca85, (q15_t)0x7448, (q15_t)0xca80, (q15_t)0x7445, (q15_t)0xca7a, (q15_t)0x7442, (q15_t)0xca74, - (q15_t)0x7440, (q15_t)0xca6e, (q15_t)0x743d, (q15_t)0xca69, (q15_t)0x743a, (q15_t)0xca63, (q15_t)0x7438, (q15_t)0xca5d, - (q15_t)0x7435, (q15_t)0xca58, (q15_t)0x7432, (q15_t)0xca52, (q15_t)0x7430, (q15_t)0xca4c, (q15_t)0x742d, (q15_t)0xca46, - (q15_t)0x742b, (q15_t)0xca41, (q15_t)0x7428, (q15_t)0xca3b, (q15_t)0x7425, (q15_t)0xca35, (q15_t)0x7423, (q15_t)0xca30, - (q15_t)0x7420, (q15_t)0xca2a, (q15_t)0x741d, (q15_t)0xca24, (q15_t)0x741b, (q15_t)0xca1f, (q15_t)0x7418, (q15_t)0xca19, - (q15_t)0x7415, (q15_t)0xca13, (q15_t)0x7413, (q15_t)0xca0d, (q15_t)0x7410, (q15_t)0xca08, (q15_t)0x740d, (q15_t)0xca02, - (q15_t)0x740b, (q15_t)0xc9fc, (q15_t)0x7408, (q15_t)0xc9f7, (q15_t)0x7406, (q15_t)0xc9f1, (q15_t)0x7403, (q15_t)0xc9eb, - (q15_t)0x7400, (q15_t)0xc9e6, (q15_t)0x73fe, (q15_t)0xc9e0, (q15_t)0x73fb, (q15_t)0xc9da, (q15_t)0x73f8, (q15_t)0xc9d5, - (q15_t)0x73f6, (q15_t)0xc9cf, (q15_t)0x73f3, (q15_t)0xc9c9, (q15_t)0x73f0, (q15_t)0xc9c3, (q15_t)0x73ee, (q15_t)0xc9be, - (q15_t)0x73eb, (q15_t)0xc9b8, (q15_t)0x73e8, (q15_t)0xc9b2, (q15_t)0x73e6, (q15_t)0xc9ad, (q15_t)0x73e3, (q15_t)0xc9a7, - (q15_t)0x73e0, (q15_t)0xc9a1, (q15_t)0x73de, (q15_t)0xc99c, (q15_t)0x73db, (q15_t)0xc996, (q15_t)0x73d8, (q15_t)0xc990, - (q15_t)0x73d6, (q15_t)0xc98b, (q15_t)0x73d3, (q15_t)0xc985, (q15_t)0x73d0, (q15_t)0xc97f, (q15_t)0x73ce, (q15_t)0xc97a, - (q15_t)0x73cb, (q15_t)0xc974, (q15_t)0x73c8, (q15_t)0xc96e, (q15_t)0x73c6, (q15_t)0xc968, (q15_t)0x73c3, (q15_t)0xc963, - (q15_t)0x73c0, (q15_t)0xc95d, (q15_t)0x73bd, (q15_t)0xc957, (q15_t)0x73bb, (q15_t)0xc952, (q15_t)0x73b8, (q15_t)0xc94c, - (q15_t)0x73b5, (q15_t)0xc946, (q15_t)0x73b3, (q15_t)0xc941, (q15_t)0x73b0, (q15_t)0xc93b, (q15_t)0x73ad, (q15_t)0xc935, - (q15_t)0x73ab, (q15_t)0xc930, (q15_t)0x73a8, (q15_t)0xc92a, (q15_t)0x73a5, (q15_t)0xc924, (q15_t)0x73a3, (q15_t)0xc91f, - (q15_t)0x73a0, (q15_t)0xc919, (q15_t)0x739d, (q15_t)0xc913, (q15_t)0x739b, (q15_t)0xc90e, (q15_t)0x7398, (q15_t)0xc908, - (q15_t)0x7395, (q15_t)0xc902, (q15_t)0x7392, (q15_t)0xc8fd, (q15_t)0x7390, (q15_t)0xc8f7, (q15_t)0x738d, (q15_t)0xc8f1, - (q15_t)0x738a, (q15_t)0xc8ec, (q15_t)0x7388, (q15_t)0xc8e6, (q15_t)0x7385, (q15_t)0xc8e0, (q15_t)0x7382, (q15_t)0xc8db, - (q15_t)0x737f, (q15_t)0xc8d5, (q15_t)0x737d, (q15_t)0xc8cf, (q15_t)0x737a, (q15_t)0xc8ca, (q15_t)0x7377, (q15_t)0xc8c4, - (q15_t)0x7375, (q15_t)0xc8be, (q15_t)0x7372, (q15_t)0xc8b9, (q15_t)0x736f, (q15_t)0xc8b3, (q15_t)0x736c, (q15_t)0xc8ad, - (q15_t)0x736a, (q15_t)0xc8a8, (q15_t)0x7367, (q15_t)0xc8a2, (q15_t)0x7364, (q15_t)0xc89c, (q15_t)0x7362, (q15_t)0xc897, - (q15_t)0x735f, (q15_t)0xc891, (q15_t)0x735c, (q15_t)0xc88b, (q15_t)0x7359, (q15_t)0xc886, (q15_t)0x7357, (q15_t)0xc880, - (q15_t)0x7354, (q15_t)0xc87a, (q15_t)0x7351, (q15_t)0xc875, (q15_t)0x734f, (q15_t)0xc86f, (q15_t)0x734c, (q15_t)0xc869, - (q15_t)0x7349, (q15_t)0xc864, (q15_t)0x7346, (q15_t)0xc85e, (q15_t)0x7344, (q15_t)0xc858, (q15_t)0x7341, (q15_t)0xc853, - (q15_t)0x733e, (q15_t)0xc84d, (q15_t)0x733b, (q15_t)0xc847, (q15_t)0x7339, (q15_t)0xc842, (q15_t)0x7336, (q15_t)0xc83c, - (q15_t)0x7333, (q15_t)0xc836, (q15_t)0x7330, (q15_t)0xc831, (q15_t)0x732e, (q15_t)0xc82b, (q15_t)0x732b, (q15_t)0xc825, - (q15_t)0x7328, (q15_t)0xc820, (q15_t)0x7326, (q15_t)0xc81a, (q15_t)0x7323, (q15_t)0xc814, (q15_t)0x7320, (q15_t)0xc80f, - (q15_t)0x731d, (q15_t)0xc809, (q15_t)0x731b, (q15_t)0xc803, (q15_t)0x7318, (q15_t)0xc7fe, (q15_t)0x7315, (q15_t)0xc7f8, - (q15_t)0x7312, (q15_t)0xc7f3, (q15_t)0x7310, (q15_t)0xc7ed, (q15_t)0x730d, (q15_t)0xc7e7, (q15_t)0x730a, (q15_t)0xc7e2, - (q15_t)0x7307, (q15_t)0xc7dc, (q15_t)0x7305, (q15_t)0xc7d6, (q15_t)0x7302, (q15_t)0xc7d1, (q15_t)0x72ff, (q15_t)0xc7cb, - (q15_t)0x72fc, (q15_t)0xc7c5, (q15_t)0x72f9, (q15_t)0xc7c0, (q15_t)0x72f7, (q15_t)0xc7ba, (q15_t)0x72f4, (q15_t)0xc7b4, - (q15_t)0x72f1, (q15_t)0xc7af, (q15_t)0x72ee, (q15_t)0xc7a9, (q15_t)0x72ec, (q15_t)0xc7a3, (q15_t)0x72e9, (q15_t)0xc79e, - (q15_t)0x72e6, (q15_t)0xc798, (q15_t)0x72e3, (q15_t)0xc793, (q15_t)0x72e1, (q15_t)0xc78d, (q15_t)0x72de, (q15_t)0xc787, - (q15_t)0x72db, (q15_t)0xc782, (q15_t)0x72d8, (q15_t)0xc77c, (q15_t)0x72d5, (q15_t)0xc776, (q15_t)0x72d3, (q15_t)0xc771, - (q15_t)0x72d0, (q15_t)0xc76b, (q15_t)0x72cd, (q15_t)0xc765, (q15_t)0x72ca, (q15_t)0xc760, (q15_t)0x72c8, (q15_t)0xc75a, - (q15_t)0x72c5, (q15_t)0xc755, (q15_t)0x72c2, (q15_t)0xc74f, (q15_t)0x72bf, (q15_t)0xc749, (q15_t)0x72bc, (q15_t)0xc744, - (q15_t)0x72ba, (q15_t)0xc73e, (q15_t)0x72b7, (q15_t)0xc738, (q15_t)0x72b4, (q15_t)0xc733, (q15_t)0x72b1, (q15_t)0xc72d, - (q15_t)0x72af, (q15_t)0xc728, (q15_t)0x72ac, (q15_t)0xc722, (q15_t)0x72a9, (q15_t)0xc71c, (q15_t)0x72a6, (q15_t)0xc717, - (q15_t)0x72a3, (q15_t)0xc711, (q15_t)0x72a1, (q15_t)0xc70b, (q15_t)0x729e, (q15_t)0xc706, (q15_t)0x729b, (q15_t)0xc700, - (q15_t)0x7298, (q15_t)0xc6fa, (q15_t)0x7295, (q15_t)0xc6f5, (q15_t)0x7293, (q15_t)0xc6ef, (q15_t)0x7290, (q15_t)0xc6ea, - (q15_t)0x728d, (q15_t)0xc6e4, (q15_t)0x728a, (q15_t)0xc6de, (q15_t)0x7287, (q15_t)0xc6d9, (q15_t)0x7285, (q15_t)0xc6d3, - (q15_t)0x7282, (q15_t)0xc6ce, (q15_t)0x727f, (q15_t)0xc6c8, (q15_t)0x727c, (q15_t)0xc6c2, (q15_t)0x7279, (q15_t)0xc6bd, - (q15_t)0x7276, (q15_t)0xc6b7, (q15_t)0x7274, (q15_t)0xc6b1, (q15_t)0x7271, (q15_t)0xc6ac, (q15_t)0x726e, (q15_t)0xc6a6, - (q15_t)0x726b, (q15_t)0xc6a1, (q15_t)0x7268, (q15_t)0xc69b, (q15_t)0x7266, (q15_t)0xc695, (q15_t)0x7263, (q15_t)0xc690, - (q15_t)0x7260, (q15_t)0xc68a, (q15_t)0x725d, (q15_t)0xc684, (q15_t)0x725a, (q15_t)0xc67f, (q15_t)0x7257, (q15_t)0xc679, - (q15_t)0x7255, (q15_t)0xc674, (q15_t)0x7252, (q15_t)0xc66e, (q15_t)0x724f, (q15_t)0xc668, (q15_t)0x724c, (q15_t)0xc663, - (q15_t)0x7249, (q15_t)0xc65d, (q15_t)0x7247, (q15_t)0xc658, (q15_t)0x7244, (q15_t)0xc652, (q15_t)0x7241, (q15_t)0xc64c, - (q15_t)0x723e, (q15_t)0xc647, (q15_t)0x723b, (q15_t)0xc641, (q15_t)0x7238, (q15_t)0xc63c, (q15_t)0x7236, (q15_t)0xc636, - (q15_t)0x7233, (q15_t)0xc630, (q15_t)0x7230, (q15_t)0xc62b, (q15_t)0x722d, (q15_t)0xc625, (q15_t)0x722a, (q15_t)0xc620, - (q15_t)0x7227, (q15_t)0xc61a, (q15_t)0x7224, (q15_t)0xc614, (q15_t)0x7222, (q15_t)0xc60f, (q15_t)0x721f, (q15_t)0xc609, - (q15_t)0x721c, (q15_t)0xc603, (q15_t)0x7219, (q15_t)0xc5fe, (q15_t)0x7216, (q15_t)0xc5f8, (q15_t)0x7213, (q15_t)0xc5f3, - (q15_t)0x7211, (q15_t)0xc5ed, (q15_t)0x720e, (q15_t)0xc5e7, (q15_t)0x720b, (q15_t)0xc5e2, (q15_t)0x7208, (q15_t)0xc5dc, - (q15_t)0x7205, (q15_t)0xc5d7, (q15_t)0x7202, (q15_t)0xc5d1, (q15_t)0x71ff, (q15_t)0xc5cc, (q15_t)0x71fd, (q15_t)0xc5c6, - (q15_t)0x71fa, (q15_t)0xc5c0, (q15_t)0x71f7, (q15_t)0xc5bb, (q15_t)0x71f4, (q15_t)0xc5b5, (q15_t)0x71f1, (q15_t)0xc5b0, - (q15_t)0x71ee, (q15_t)0xc5aa, (q15_t)0x71eb, (q15_t)0xc5a4, (q15_t)0x71e9, (q15_t)0xc59f, (q15_t)0x71e6, (q15_t)0xc599, - (q15_t)0x71e3, (q15_t)0xc594, (q15_t)0x71e0, (q15_t)0xc58e, (q15_t)0x71dd, (q15_t)0xc588, (q15_t)0x71da, (q15_t)0xc583, - (q15_t)0x71d7, (q15_t)0xc57d, (q15_t)0x71d4, (q15_t)0xc578, (q15_t)0x71d2, (q15_t)0xc572, (q15_t)0x71cf, (q15_t)0xc56c, - (q15_t)0x71cc, (q15_t)0xc567, (q15_t)0x71c9, (q15_t)0xc561, (q15_t)0x71c6, (q15_t)0xc55c, (q15_t)0x71c3, (q15_t)0xc556, - (q15_t)0x71c0, (q15_t)0xc551, (q15_t)0x71bd, (q15_t)0xc54b, (q15_t)0x71bb, (q15_t)0xc545, (q15_t)0x71b8, (q15_t)0xc540, - (q15_t)0x71b5, (q15_t)0xc53a, (q15_t)0x71b2, (q15_t)0xc535, (q15_t)0x71af, (q15_t)0xc52f, (q15_t)0x71ac, (q15_t)0xc529, - (q15_t)0x71a9, (q15_t)0xc524, (q15_t)0x71a6, (q15_t)0xc51e, (q15_t)0x71a3, (q15_t)0xc519, (q15_t)0x71a1, (q15_t)0xc513, - (q15_t)0x719e, (q15_t)0xc50e, (q15_t)0x719b, (q15_t)0xc508, (q15_t)0x7198, (q15_t)0xc502, (q15_t)0x7195, (q15_t)0xc4fd, - (q15_t)0x7192, (q15_t)0xc4f7, (q15_t)0x718f, (q15_t)0xc4f2, (q15_t)0x718c, (q15_t)0xc4ec, (q15_t)0x7189, (q15_t)0xc4e7, - (q15_t)0x7186, (q15_t)0xc4e1, (q15_t)0x7184, (q15_t)0xc4db, (q15_t)0x7181, (q15_t)0xc4d6, (q15_t)0x717e, (q15_t)0xc4d0, - (q15_t)0x717b, (q15_t)0xc4cb, (q15_t)0x7178, (q15_t)0xc4c5, (q15_t)0x7175, (q15_t)0xc4c0, (q15_t)0x7172, (q15_t)0xc4ba, - (q15_t)0x716f, (q15_t)0xc4b4, (q15_t)0x716c, (q15_t)0xc4af, (q15_t)0x7169, (q15_t)0xc4a9, (q15_t)0x7167, (q15_t)0xc4a4, - (q15_t)0x7164, (q15_t)0xc49e, (q15_t)0x7161, (q15_t)0xc499, (q15_t)0x715e, (q15_t)0xc493, (q15_t)0x715b, (q15_t)0xc48d, - (q15_t)0x7158, (q15_t)0xc488, (q15_t)0x7155, (q15_t)0xc482, (q15_t)0x7152, (q15_t)0xc47d, (q15_t)0x714f, (q15_t)0xc477, - (q15_t)0x714c, (q15_t)0xc472, (q15_t)0x7149, (q15_t)0xc46c, (q15_t)0x7146, (q15_t)0xc467, (q15_t)0x7143, (q15_t)0xc461, - (q15_t)0x7141, (q15_t)0xc45b, (q15_t)0x713e, (q15_t)0xc456, (q15_t)0x713b, (q15_t)0xc450, (q15_t)0x7138, (q15_t)0xc44b, - (q15_t)0x7135, (q15_t)0xc445, (q15_t)0x7132, (q15_t)0xc440, (q15_t)0x712f, (q15_t)0xc43a, (q15_t)0x712c, (q15_t)0xc434, - (q15_t)0x7129, (q15_t)0xc42f, (q15_t)0x7126, (q15_t)0xc429, (q15_t)0x7123, (q15_t)0xc424, (q15_t)0x7120, (q15_t)0xc41e, - (q15_t)0x711d, (q15_t)0xc419, (q15_t)0x711a, (q15_t)0xc413, (q15_t)0x7117, (q15_t)0xc40e, (q15_t)0x7114, (q15_t)0xc408, - (q15_t)0x7112, (q15_t)0xc403, (q15_t)0x710f, (q15_t)0xc3fd, (q15_t)0x710c, (q15_t)0xc3f7, (q15_t)0x7109, (q15_t)0xc3f2, - (q15_t)0x7106, (q15_t)0xc3ec, (q15_t)0x7103, (q15_t)0xc3e7, (q15_t)0x7100, (q15_t)0xc3e1, (q15_t)0x70fd, (q15_t)0xc3dc, - (q15_t)0x70fa, (q15_t)0xc3d6, (q15_t)0x70f7, (q15_t)0xc3d1, (q15_t)0x70f4, (q15_t)0xc3cb, (q15_t)0x70f1, (q15_t)0xc3c5, - (q15_t)0x70ee, (q15_t)0xc3c0, (q15_t)0x70eb, (q15_t)0xc3ba, (q15_t)0x70e8, (q15_t)0xc3b5, (q15_t)0x70e5, (q15_t)0xc3af, - (q15_t)0x70e2, (q15_t)0xc3aa, (q15_t)0x70df, (q15_t)0xc3a4, (q15_t)0x70dc, (q15_t)0xc39f, (q15_t)0x70d9, (q15_t)0xc399, - (q15_t)0x70d6, (q15_t)0xc394, (q15_t)0x70d3, (q15_t)0xc38e, (q15_t)0x70d1, (q15_t)0xc389, (q15_t)0x70ce, (q15_t)0xc383, - (q15_t)0x70cb, (q15_t)0xc37d, (q15_t)0x70c8, (q15_t)0xc378, (q15_t)0x70c5, (q15_t)0xc372, (q15_t)0x70c2, (q15_t)0xc36d, - (q15_t)0x70bf, (q15_t)0xc367, (q15_t)0x70bc, (q15_t)0xc362, (q15_t)0x70b9, (q15_t)0xc35c, (q15_t)0x70b6, (q15_t)0xc357, - (q15_t)0x70b3, (q15_t)0xc351, (q15_t)0x70b0, (q15_t)0xc34c, (q15_t)0x70ad, (q15_t)0xc346, (q15_t)0x70aa, (q15_t)0xc341, - (q15_t)0x70a7, (q15_t)0xc33b, (q15_t)0x70a4, (q15_t)0xc336, (q15_t)0x70a1, (q15_t)0xc330, (q15_t)0x709e, (q15_t)0xc32a, - (q15_t)0x709b, (q15_t)0xc325, (q15_t)0x7098, (q15_t)0xc31f, (q15_t)0x7095, (q15_t)0xc31a, (q15_t)0x7092, (q15_t)0xc314, - (q15_t)0x708f, (q15_t)0xc30f, (q15_t)0x708c, (q15_t)0xc309, (q15_t)0x7089, (q15_t)0xc304, (q15_t)0x7086, (q15_t)0xc2fe, - (q15_t)0x7083, (q15_t)0xc2f9, (q15_t)0x7080, (q15_t)0xc2f3, (q15_t)0x707d, (q15_t)0xc2ee, (q15_t)0x707a, (q15_t)0xc2e8, - (q15_t)0x7077, (q15_t)0xc2e3, (q15_t)0x7074, (q15_t)0xc2dd, (q15_t)0x7071, (q15_t)0xc2d8, (q15_t)0x706e, (q15_t)0xc2d2, - (q15_t)0x706b, (q15_t)0xc2cd, (q15_t)0x7068, (q15_t)0xc2c7, (q15_t)0x7065, (q15_t)0xc2c2, (q15_t)0x7062, (q15_t)0xc2bc, - (q15_t)0x705f, (q15_t)0xc2b7, (q15_t)0x705c, (q15_t)0xc2b1, (q15_t)0x7059, (q15_t)0xc2ab, (q15_t)0x7056, (q15_t)0xc2a6, - (q15_t)0x7053, (q15_t)0xc2a0, (q15_t)0x7050, (q15_t)0xc29b, (q15_t)0x704d, (q15_t)0xc295, (q15_t)0x704a, (q15_t)0xc290, - (q15_t)0x7047, (q15_t)0xc28a, (q15_t)0x7044, (q15_t)0xc285, (q15_t)0x7041, (q15_t)0xc27f, (q15_t)0x703e, (q15_t)0xc27a, - (q15_t)0x703b, (q15_t)0xc274, (q15_t)0x7038, (q15_t)0xc26f, (q15_t)0x7035, (q15_t)0xc269, (q15_t)0x7032, (q15_t)0xc264, - (q15_t)0x702f, (q15_t)0xc25e, (q15_t)0x702c, (q15_t)0xc259, (q15_t)0x7029, (q15_t)0xc253, (q15_t)0x7026, (q15_t)0xc24e, - (q15_t)0x7023, (q15_t)0xc248, (q15_t)0x7020, (q15_t)0xc243, (q15_t)0x701d, (q15_t)0xc23d, (q15_t)0x7019, (q15_t)0xc238, - (q15_t)0x7016, (q15_t)0xc232, (q15_t)0x7013, (q15_t)0xc22d, (q15_t)0x7010, (q15_t)0xc227, (q15_t)0x700d, (q15_t)0xc222, - (q15_t)0x700a, (q15_t)0xc21c, (q15_t)0x7007, (q15_t)0xc217, (q15_t)0x7004, (q15_t)0xc211, (q15_t)0x7001, (q15_t)0xc20c, - (q15_t)0x6ffe, (q15_t)0xc206, (q15_t)0x6ffb, (q15_t)0xc201, (q15_t)0x6ff8, (q15_t)0xc1fb, (q15_t)0x6ff5, (q15_t)0xc1f6, - (q15_t)0x6ff2, (q15_t)0xc1f0, (q15_t)0x6fef, (q15_t)0xc1eb, (q15_t)0x6fec, (q15_t)0xc1e5, (q15_t)0x6fe9, (q15_t)0xc1e0, - (q15_t)0x6fe6, (q15_t)0xc1da, (q15_t)0x6fe3, (q15_t)0xc1d5, (q15_t)0x6fe0, (q15_t)0xc1cf, (q15_t)0x6fdd, (q15_t)0xc1ca, - (q15_t)0x6fda, (q15_t)0xc1c4, (q15_t)0x6fd6, (q15_t)0xc1bf, (q15_t)0x6fd3, (q15_t)0xc1b9, (q15_t)0x6fd0, (q15_t)0xc1b4, - (q15_t)0x6fcd, (q15_t)0xc1ae, (q15_t)0x6fca, (q15_t)0xc1a9, (q15_t)0x6fc7, (q15_t)0xc1a3, (q15_t)0x6fc4, (q15_t)0xc19e, - (q15_t)0x6fc1, (q15_t)0xc198, (q15_t)0x6fbe, (q15_t)0xc193, (q15_t)0x6fbb, (q15_t)0xc18d, (q15_t)0x6fb8, (q15_t)0xc188, - (q15_t)0x6fb5, (q15_t)0xc183, (q15_t)0x6fb2, (q15_t)0xc17d, (q15_t)0x6faf, (q15_t)0xc178, (q15_t)0x6fac, (q15_t)0xc172, - (q15_t)0x6fa9, (q15_t)0xc16d, (q15_t)0x6fa5, (q15_t)0xc167, (q15_t)0x6fa2, (q15_t)0xc162, (q15_t)0x6f9f, (q15_t)0xc15c, - (q15_t)0x6f9c, (q15_t)0xc157, (q15_t)0x6f99, (q15_t)0xc151, (q15_t)0x6f96, (q15_t)0xc14c, (q15_t)0x6f93, (q15_t)0xc146, - (q15_t)0x6f90, (q15_t)0xc141, (q15_t)0x6f8d, (q15_t)0xc13b, (q15_t)0x6f8a, (q15_t)0xc136, (q15_t)0x6f87, (q15_t)0xc130, - (q15_t)0x6f84, (q15_t)0xc12b, (q15_t)0x6f81, (q15_t)0xc125, (q15_t)0x6f7d, (q15_t)0xc120, (q15_t)0x6f7a, (q15_t)0xc11a, - (q15_t)0x6f77, (q15_t)0xc115, (q15_t)0x6f74, (q15_t)0xc10f, (q15_t)0x6f71, (q15_t)0xc10a, (q15_t)0x6f6e, (q15_t)0xc105, - (q15_t)0x6f6b, (q15_t)0xc0ff, (q15_t)0x6f68, (q15_t)0xc0fa, (q15_t)0x6f65, (q15_t)0xc0f4, (q15_t)0x6f62, (q15_t)0xc0ef, - (q15_t)0x6f5f, (q15_t)0xc0e9, (q15_t)0x6f5b, (q15_t)0xc0e4, (q15_t)0x6f58, (q15_t)0xc0de, (q15_t)0x6f55, (q15_t)0xc0d9, - (q15_t)0x6f52, (q15_t)0xc0d3, (q15_t)0x6f4f, (q15_t)0xc0ce, (q15_t)0x6f4c, (q15_t)0xc0c8, (q15_t)0x6f49, (q15_t)0xc0c3, - (q15_t)0x6f46, (q15_t)0xc0bd, (q15_t)0x6f43, (q15_t)0xc0b8, (q15_t)0x6f3f, (q15_t)0xc0b3, (q15_t)0x6f3c, (q15_t)0xc0ad, - (q15_t)0x6f39, (q15_t)0xc0a8, (q15_t)0x6f36, (q15_t)0xc0a2, (q15_t)0x6f33, (q15_t)0xc09d, (q15_t)0x6f30, (q15_t)0xc097, - (q15_t)0x6f2d, (q15_t)0xc092, (q15_t)0x6f2a, (q15_t)0xc08c, (q15_t)0x6f27, (q15_t)0xc087, (q15_t)0x6f23, (q15_t)0xc081, - (q15_t)0x6f20, (q15_t)0xc07c, (q15_t)0x6f1d, (q15_t)0xc077, (q15_t)0x6f1a, (q15_t)0xc071, (q15_t)0x6f17, (q15_t)0xc06c, - (q15_t)0x6f14, (q15_t)0xc066, (q15_t)0x6f11, (q15_t)0xc061, (q15_t)0x6f0e, (q15_t)0xc05b, (q15_t)0x6f0b, (q15_t)0xc056, - (q15_t)0x6f07, (q15_t)0xc050, (q15_t)0x6f04, (q15_t)0xc04b, (q15_t)0x6f01, (q15_t)0xc045, (q15_t)0x6efe, (q15_t)0xc040, - (q15_t)0x6efb, (q15_t)0xc03b, (q15_t)0x6ef8, (q15_t)0xc035, (q15_t)0x6ef5, (q15_t)0xc030, (q15_t)0x6ef1, (q15_t)0xc02a, - (q15_t)0x6eee, (q15_t)0xc025, (q15_t)0x6eeb, (q15_t)0xc01f, (q15_t)0x6ee8, (q15_t)0xc01a, (q15_t)0x6ee5, (q15_t)0xc014, - (q15_t)0x6ee2, (q15_t)0xc00f, (q15_t)0x6edf, (q15_t)0xc00a, (q15_t)0x6edc, (q15_t)0xc004, (q15_t)0x6ed8, (q15_t)0xbfff, - (q15_t)0x6ed5, (q15_t)0xbff9, (q15_t)0x6ed2, (q15_t)0xbff4, (q15_t)0x6ecf, (q15_t)0xbfee, (q15_t)0x6ecc, (q15_t)0xbfe9, - (q15_t)0x6ec9, (q15_t)0xbfe3, (q15_t)0x6ec6, (q15_t)0xbfde, (q15_t)0x6ec2, (q15_t)0xbfd9, (q15_t)0x6ebf, (q15_t)0xbfd3, - (q15_t)0x6ebc, (q15_t)0xbfce, (q15_t)0x6eb9, (q15_t)0xbfc8, (q15_t)0x6eb6, (q15_t)0xbfc3, (q15_t)0x6eb3, (q15_t)0xbfbd, - (q15_t)0x6eaf, (q15_t)0xbfb8, (q15_t)0x6eac, (q15_t)0xbfb3, (q15_t)0x6ea9, (q15_t)0xbfad, (q15_t)0x6ea6, (q15_t)0xbfa8, - (q15_t)0x6ea3, (q15_t)0xbfa2, (q15_t)0x6ea0, (q15_t)0xbf9d, (q15_t)0x6e9c, (q15_t)0xbf97, (q15_t)0x6e99, (q15_t)0xbf92, - (q15_t)0x6e96, (q15_t)0xbf8d, (q15_t)0x6e93, (q15_t)0xbf87, (q15_t)0x6e90, (q15_t)0xbf82, (q15_t)0x6e8d, (q15_t)0xbf7c, - (q15_t)0x6e89, (q15_t)0xbf77, (q15_t)0x6e86, (q15_t)0xbf71, (q15_t)0x6e83, (q15_t)0xbf6c, (q15_t)0x6e80, (q15_t)0xbf67, - (q15_t)0x6e7d, (q15_t)0xbf61, (q15_t)0x6e7a, (q15_t)0xbf5c, (q15_t)0x6e76, (q15_t)0xbf56, (q15_t)0x6e73, (q15_t)0xbf51, - (q15_t)0x6e70, (q15_t)0xbf4b, (q15_t)0x6e6d, (q15_t)0xbf46, (q15_t)0x6e6a, (q15_t)0xbf41, (q15_t)0x6e67, (q15_t)0xbf3b, - (q15_t)0x6e63, (q15_t)0xbf36, (q15_t)0x6e60, (q15_t)0xbf30, (q15_t)0x6e5d, (q15_t)0xbf2b, (q15_t)0x6e5a, (q15_t)0xbf26, - (q15_t)0x6e57, (q15_t)0xbf20, (q15_t)0x6e53, (q15_t)0xbf1b, (q15_t)0x6e50, (q15_t)0xbf15, (q15_t)0x6e4d, (q15_t)0xbf10, - (q15_t)0x6e4a, (q15_t)0xbf0a, (q15_t)0x6e47, (q15_t)0xbf05, (q15_t)0x6e44, (q15_t)0xbf00, (q15_t)0x6e40, (q15_t)0xbefa, - (q15_t)0x6e3d, (q15_t)0xbef5, (q15_t)0x6e3a, (q15_t)0xbeef, (q15_t)0x6e37, (q15_t)0xbeea, (q15_t)0x6e34, (q15_t)0xbee5, - (q15_t)0x6e30, (q15_t)0xbedf, (q15_t)0x6e2d, (q15_t)0xbeda, (q15_t)0x6e2a, (q15_t)0xbed4, (q15_t)0x6e27, (q15_t)0xbecf, - (q15_t)0x6e24, (q15_t)0xbeca, (q15_t)0x6e20, (q15_t)0xbec4, (q15_t)0x6e1d, (q15_t)0xbebf, (q15_t)0x6e1a, (q15_t)0xbeb9, - (q15_t)0x6e17, (q15_t)0xbeb4, (q15_t)0x6e14, (q15_t)0xbeae, (q15_t)0x6e10, (q15_t)0xbea9, (q15_t)0x6e0d, (q15_t)0xbea4, - (q15_t)0x6e0a, (q15_t)0xbe9e, (q15_t)0x6e07, (q15_t)0xbe99, (q15_t)0x6e04, (q15_t)0xbe93, (q15_t)0x6e00, (q15_t)0xbe8e, - (q15_t)0x6dfd, (q15_t)0xbe89, (q15_t)0x6dfa, (q15_t)0xbe83, (q15_t)0x6df7, (q15_t)0xbe7e, (q15_t)0x6df3, (q15_t)0xbe78, - (q15_t)0x6df0, (q15_t)0xbe73, (q15_t)0x6ded, (q15_t)0xbe6e, (q15_t)0x6dea, (q15_t)0xbe68, (q15_t)0x6de7, (q15_t)0xbe63, - (q15_t)0x6de3, (q15_t)0xbe5e, (q15_t)0x6de0, (q15_t)0xbe58, (q15_t)0x6ddd, (q15_t)0xbe53, (q15_t)0x6dda, (q15_t)0xbe4d, - (q15_t)0x6dd6, (q15_t)0xbe48, (q15_t)0x6dd3, (q15_t)0xbe43, (q15_t)0x6dd0, (q15_t)0xbe3d, (q15_t)0x6dcd, (q15_t)0xbe38, - (q15_t)0x6dca, (q15_t)0xbe32, (q15_t)0x6dc6, (q15_t)0xbe2d, (q15_t)0x6dc3, (q15_t)0xbe28, (q15_t)0x6dc0, (q15_t)0xbe22, - (q15_t)0x6dbd, (q15_t)0xbe1d, (q15_t)0x6db9, (q15_t)0xbe17, (q15_t)0x6db6, (q15_t)0xbe12, (q15_t)0x6db3, (q15_t)0xbe0d, - (q15_t)0x6db0, (q15_t)0xbe07, (q15_t)0x6dac, (q15_t)0xbe02, (q15_t)0x6da9, (q15_t)0xbdfd, (q15_t)0x6da6, (q15_t)0xbdf7, - (q15_t)0x6da3, (q15_t)0xbdf2, (q15_t)0x6d9f, (q15_t)0xbdec, (q15_t)0x6d9c, (q15_t)0xbde7, (q15_t)0x6d99, (q15_t)0xbde2, - (q15_t)0x6d96, (q15_t)0xbddc, (q15_t)0x6d92, (q15_t)0xbdd7, (q15_t)0x6d8f, (q15_t)0xbdd1, (q15_t)0x6d8c, (q15_t)0xbdcc, - (q15_t)0x6d89, (q15_t)0xbdc7, (q15_t)0x6d85, (q15_t)0xbdc1, (q15_t)0x6d82, (q15_t)0xbdbc, (q15_t)0x6d7f, (q15_t)0xbdb7, - (q15_t)0x6d7c, (q15_t)0xbdb1, (q15_t)0x6d78, (q15_t)0xbdac, (q15_t)0x6d75, (q15_t)0xbda6, (q15_t)0x6d72, (q15_t)0xbda1, - (q15_t)0x6d6f, (q15_t)0xbd9c, (q15_t)0x6d6b, (q15_t)0xbd96, (q15_t)0x6d68, (q15_t)0xbd91, (q15_t)0x6d65, (q15_t)0xbd8c, - (q15_t)0x6d62, (q15_t)0xbd86, (q15_t)0x6d5e, (q15_t)0xbd81, (q15_t)0x6d5b, (q15_t)0xbd7c, (q15_t)0x6d58, (q15_t)0xbd76, - (q15_t)0x6d55, (q15_t)0xbd71, (q15_t)0x6d51, (q15_t)0xbd6b, (q15_t)0x6d4e, (q15_t)0xbd66, (q15_t)0x6d4b, (q15_t)0xbd61, - (q15_t)0x6d48, (q15_t)0xbd5b, (q15_t)0x6d44, (q15_t)0xbd56, (q15_t)0x6d41, (q15_t)0xbd51, (q15_t)0x6d3e, (q15_t)0xbd4b, - (q15_t)0x6d3a, (q15_t)0xbd46, (q15_t)0x6d37, (q15_t)0xbd40, (q15_t)0x6d34, (q15_t)0xbd3b, (q15_t)0x6d31, (q15_t)0xbd36, - (q15_t)0x6d2d, (q15_t)0xbd30, (q15_t)0x6d2a, (q15_t)0xbd2b, (q15_t)0x6d27, (q15_t)0xbd26, (q15_t)0x6d23, (q15_t)0xbd20, - (q15_t)0x6d20, (q15_t)0xbd1b, (q15_t)0x6d1d, (q15_t)0xbd16, (q15_t)0x6d1a, (q15_t)0xbd10, (q15_t)0x6d16, (q15_t)0xbd0b, - (q15_t)0x6d13, (q15_t)0xbd06, (q15_t)0x6d10, (q15_t)0xbd00, (q15_t)0x6d0c, (q15_t)0xbcfb, (q15_t)0x6d09, (q15_t)0xbcf5, - (q15_t)0x6d06, (q15_t)0xbcf0, (q15_t)0x6d03, (q15_t)0xbceb, (q15_t)0x6cff, (q15_t)0xbce5, (q15_t)0x6cfc, (q15_t)0xbce0, - (q15_t)0x6cf9, (q15_t)0xbcdb, (q15_t)0x6cf5, (q15_t)0xbcd5, (q15_t)0x6cf2, (q15_t)0xbcd0, (q15_t)0x6cef, (q15_t)0xbccb, - (q15_t)0x6cec, (q15_t)0xbcc5, (q15_t)0x6ce8, (q15_t)0xbcc0, (q15_t)0x6ce5, (q15_t)0xbcbb, (q15_t)0x6ce2, (q15_t)0xbcb5, - (q15_t)0x6cde, (q15_t)0xbcb0, (q15_t)0x6cdb, (q15_t)0xbcab, (q15_t)0x6cd8, (q15_t)0xbca5, (q15_t)0x6cd4, (q15_t)0xbca0, - (q15_t)0x6cd1, (q15_t)0xbc9b, (q15_t)0x6cce, (q15_t)0xbc95, (q15_t)0x6cca, (q15_t)0xbc90, (q15_t)0x6cc7, (q15_t)0xbc8b, - (q15_t)0x6cc4, (q15_t)0xbc85, (q15_t)0x6cc1, (q15_t)0xbc80, (q15_t)0x6cbd, (q15_t)0xbc7b, (q15_t)0x6cba, (q15_t)0xbc75, - (q15_t)0x6cb7, (q15_t)0xbc70, (q15_t)0x6cb3, (q15_t)0xbc6b, (q15_t)0x6cb0, (q15_t)0xbc65, (q15_t)0x6cad, (q15_t)0xbc60, - (q15_t)0x6ca9, (q15_t)0xbc5b, (q15_t)0x6ca6, (q15_t)0xbc55, (q15_t)0x6ca3, (q15_t)0xbc50, (q15_t)0x6c9f, (q15_t)0xbc4b, - (q15_t)0x6c9c, (q15_t)0xbc45, (q15_t)0x6c99, (q15_t)0xbc40, (q15_t)0x6c95, (q15_t)0xbc3b, (q15_t)0x6c92, (q15_t)0xbc35, - (q15_t)0x6c8f, (q15_t)0xbc30, (q15_t)0x6c8b, (q15_t)0xbc2b, (q15_t)0x6c88, (q15_t)0xbc25, (q15_t)0x6c85, (q15_t)0xbc20, - (q15_t)0x6c81, (q15_t)0xbc1b, (q15_t)0x6c7e, (q15_t)0xbc15, (q15_t)0x6c7b, (q15_t)0xbc10, (q15_t)0x6c77, (q15_t)0xbc0b, - (q15_t)0x6c74, (q15_t)0xbc05, (q15_t)0x6c71, (q15_t)0xbc00, (q15_t)0x6c6d, (q15_t)0xbbfb, (q15_t)0x6c6a, (q15_t)0xbbf5, - (q15_t)0x6c67, (q15_t)0xbbf0, (q15_t)0x6c63, (q15_t)0xbbeb, (q15_t)0x6c60, (q15_t)0xbbe5, (q15_t)0x6c5d, (q15_t)0xbbe0, - (q15_t)0x6c59, (q15_t)0xbbdb, (q15_t)0x6c56, (q15_t)0xbbd5, (q15_t)0x6c53, (q15_t)0xbbd0, (q15_t)0x6c4f, (q15_t)0xbbcb, - (q15_t)0x6c4c, (q15_t)0xbbc5, (q15_t)0x6c49, (q15_t)0xbbc0, (q15_t)0x6c45, (q15_t)0xbbbb, (q15_t)0x6c42, (q15_t)0xbbb5, - (q15_t)0x6c3f, (q15_t)0xbbb0, (q15_t)0x6c3b, (q15_t)0xbbab, (q15_t)0x6c38, (q15_t)0xbba6, (q15_t)0x6c34, (q15_t)0xbba0, - (q15_t)0x6c31, (q15_t)0xbb9b, (q15_t)0x6c2e, (q15_t)0xbb96, (q15_t)0x6c2a, (q15_t)0xbb90, (q15_t)0x6c27, (q15_t)0xbb8b, - (q15_t)0x6c24, (q15_t)0xbb86, (q15_t)0x6c20, (q15_t)0xbb80, (q15_t)0x6c1d, (q15_t)0xbb7b, (q15_t)0x6c1a, (q15_t)0xbb76, - (q15_t)0x6c16, (q15_t)0xbb70, (q15_t)0x6c13, (q15_t)0xbb6b, (q15_t)0x6c0f, (q15_t)0xbb66, (q15_t)0x6c0c, (q15_t)0xbb61, - (q15_t)0x6c09, (q15_t)0xbb5b, (q15_t)0x6c05, (q15_t)0xbb56, (q15_t)0x6c02, (q15_t)0xbb51, (q15_t)0x6bff, (q15_t)0xbb4b, - (q15_t)0x6bfb, (q15_t)0xbb46, (q15_t)0x6bf8, (q15_t)0xbb41, (q15_t)0x6bf5, (q15_t)0xbb3b, (q15_t)0x6bf1, (q15_t)0xbb36, - (q15_t)0x6bee, (q15_t)0xbb31, (q15_t)0x6bea, (q15_t)0xbb2c, (q15_t)0x6be7, (q15_t)0xbb26, (q15_t)0x6be4, (q15_t)0xbb21, - (q15_t)0x6be0, (q15_t)0xbb1c, (q15_t)0x6bdd, (q15_t)0xbb16, (q15_t)0x6bd9, (q15_t)0xbb11, (q15_t)0x6bd6, (q15_t)0xbb0c, - (q15_t)0x6bd3, (q15_t)0xbb06, (q15_t)0x6bcf, (q15_t)0xbb01, (q15_t)0x6bcc, (q15_t)0xbafc, (q15_t)0x6bc9, (q15_t)0xbaf7, - (q15_t)0x6bc5, (q15_t)0xbaf1, (q15_t)0x6bc2, (q15_t)0xbaec, (q15_t)0x6bbe, (q15_t)0xbae7, (q15_t)0x6bbb, (q15_t)0xbae1, - (q15_t)0x6bb8, (q15_t)0xbadc, (q15_t)0x6bb4, (q15_t)0xbad7, (q15_t)0x6bb1, (q15_t)0xbad2, (q15_t)0x6bad, (q15_t)0xbacc, - (q15_t)0x6baa, (q15_t)0xbac7, (q15_t)0x6ba7, (q15_t)0xbac2, (q15_t)0x6ba3, (q15_t)0xbabc, (q15_t)0x6ba0, (q15_t)0xbab7, - (q15_t)0x6b9c, (q15_t)0xbab2, (q15_t)0x6b99, (q15_t)0xbaad, (q15_t)0x6b96, (q15_t)0xbaa7, (q15_t)0x6b92, (q15_t)0xbaa2, - (q15_t)0x6b8f, (q15_t)0xba9d, (q15_t)0x6b8b, (q15_t)0xba97, (q15_t)0x6b88, (q15_t)0xba92, (q15_t)0x6b85, (q15_t)0xba8d, - (q15_t)0x6b81, (q15_t)0xba88, (q15_t)0x6b7e, (q15_t)0xba82, (q15_t)0x6b7a, (q15_t)0xba7d, (q15_t)0x6b77, (q15_t)0xba78, - (q15_t)0x6b73, (q15_t)0xba73, (q15_t)0x6b70, (q15_t)0xba6d, (q15_t)0x6b6d, (q15_t)0xba68, (q15_t)0x6b69, (q15_t)0xba63, - (q15_t)0x6b66, (q15_t)0xba5d, (q15_t)0x6b62, (q15_t)0xba58, (q15_t)0x6b5f, (q15_t)0xba53, (q15_t)0x6b5c, (q15_t)0xba4e, - (q15_t)0x6b58, (q15_t)0xba48, (q15_t)0x6b55, (q15_t)0xba43, (q15_t)0x6b51, (q15_t)0xba3e, (q15_t)0x6b4e, (q15_t)0xba39, - (q15_t)0x6b4a, (q15_t)0xba33, (q15_t)0x6b47, (q15_t)0xba2e, (q15_t)0x6b44, (q15_t)0xba29, (q15_t)0x6b40, (q15_t)0xba23, - (q15_t)0x6b3d, (q15_t)0xba1e, (q15_t)0x6b39, (q15_t)0xba19, (q15_t)0x6b36, (q15_t)0xba14, (q15_t)0x6b32, (q15_t)0xba0e, - (q15_t)0x6b2f, (q15_t)0xba09, (q15_t)0x6b2c, (q15_t)0xba04, (q15_t)0x6b28, (q15_t)0xb9ff, (q15_t)0x6b25, (q15_t)0xb9f9, - (q15_t)0x6b21, (q15_t)0xb9f4, (q15_t)0x6b1e, (q15_t)0xb9ef, (q15_t)0x6b1a, (q15_t)0xb9ea, (q15_t)0x6b17, (q15_t)0xb9e4, - (q15_t)0x6b13, (q15_t)0xb9df, (q15_t)0x6b10, (q15_t)0xb9da, (q15_t)0x6b0d, (q15_t)0xb9d5, (q15_t)0x6b09, (q15_t)0xb9cf, - (q15_t)0x6b06, (q15_t)0xb9ca, (q15_t)0x6b02, (q15_t)0xb9c5, (q15_t)0x6aff, (q15_t)0xb9c0, (q15_t)0x6afb, (q15_t)0xb9ba, - (q15_t)0x6af8, (q15_t)0xb9b5, (q15_t)0x6af4, (q15_t)0xb9b0, (q15_t)0x6af1, (q15_t)0xb9ab, (q15_t)0x6aee, (q15_t)0xb9a5, - (q15_t)0x6aea, (q15_t)0xb9a0, (q15_t)0x6ae7, (q15_t)0xb99b, (q15_t)0x6ae3, (q15_t)0xb996, (q15_t)0x6ae0, (q15_t)0xb990, - (q15_t)0x6adc, (q15_t)0xb98b, (q15_t)0x6ad9, (q15_t)0xb986, (q15_t)0x6ad5, (q15_t)0xb981, (q15_t)0x6ad2, (q15_t)0xb97b, - (q15_t)0x6ace, (q15_t)0xb976, (q15_t)0x6acb, (q15_t)0xb971, (q15_t)0x6ac8, (q15_t)0xb96c, (q15_t)0x6ac4, (q15_t)0xb966, - (q15_t)0x6ac1, (q15_t)0xb961, (q15_t)0x6abd, (q15_t)0xb95c, (q15_t)0x6aba, (q15_t)0xb957, (q15_t)0x6ab6, (q15_t)0xb951, - (q15_t)0x6ab3, (q15_t)0xb94c, (q15_t)0x6aaf, (q15_t)0xb947, (q15_t)0x6aac, (q15_t)0xb942, (q15_t)0x6aa8, (q15_t)0xb93c, - (q15_t)0x6aa5, (q15_t)0xb937, (q15_t)0x6aa1, (q15_t)0xb932, (q15_t)0x6a9e, (q15_t)0xb92d, (q15_t)0x6a9a, (q15_t)0xb928, - (q15_t)0x6a97, (q15_t)0xb922, (q15_t)0x6a93, (q15_t)0xb91d, (q15_t)0x6a90, (q15_t)0xb918, (q15_t)0x6a8c, (q15_t)0xb913, - (q15_t)0x6a89, (q15_t)0xb90d, (q15_t)0x6a86, (q15_t)0xb908, (q15_t)0x6a82, (q15_t)0xb903, (q15_t)0x6a7f, (q15_t)0xb8fe, - (q15_t)0x6a7b, (q15_t)0xb8f8, (q15_t)0x6a78, (q15_t)0xb8f3, (q15_t)0x6a74, (q15_t)0xb8ee, (q15_t)0x6a71, (q15_t)0xb8e9, - (q15_t)0x6a6d, (q15_t)0xb8e4, (q15_t)0x6a6a, (q15_t)0xb8de, (q15_t)0x6a66, (q15_t)0xb8d9, (q15_t)0x6a63, (q15_t)0xb8d4, - (q15_t)0x6a5f, (q15_t)0xb8cf, (q15_t)0x6a5c, (q15_t)0xb8c9, (q15_t)0x6a58, (q15_t)0xb8c4, (q15_t)0x6a55, (q15_t)0xb8bf, - (q15_t)0x6a51, (q15_t)0xb8ba, (q15_t)0x6a4e, (q15_t)0xb8b5, (q15_t)0x6a4a, (q15_t)0xb8af, (q15_t)0x6a47, (q15_t)0xb8aa, - (q15_t)0x6a43, (q15_t)0xb8a5, (q15_t)0x6a40, (q15_t)0xb8a0, (q15_t)0x6a3c, (q15_t)0xb89b, (q15_t)0x6a39, (q15_t)0xb895, - (q15_t)0x6a35, (q15_t)0xb890, (q15_t)0x6a32, (q15_t)0xb88b, (q15_t)0x6a2e, (q15_t)0xb886, (q15_t)0x6a2b, (q15_t)0xb880, - (q15_t)0x6a27, (q15_t)0xb87b, (q15_t)0x6a24, (q15_t)0xb876, (q15_t)0x6a20, (q15_t)0xb871, (q15_t)0x6a1d, (q15_t)0xb86c, - (q15_t)0x6a19, (q15_t)0xb866, (q15_t)0x6a16, (q15_t)0xb861, (q15_t)0x6a12, (q15_t)0xb85c, (q15_t)0x6a0e, (q15_t)0xb857, - (q15_t)0x6a0b, (q15_t)0xb852, (q15_t)0x6a07, (q15_t)0xb84c, (q15_t)0x6a04, (q15_t)0xb847, (q15_t)0x6a00, (q15_t)0xb842, - (q15_t)0x69fd, (q15_t)0xb83d, (q15_t)0x69f9, (q15_t)0xb838, (q15_t)0x69f6, (q15_t)0xb832, (q15_t)0x69f2, (q15_t)0xb82d, - (q15_t)0x69ef, (q15_t)0xb828, (q15_t)0x69eb, (q15_t)0xb823, (q15_t)0x69e8, (q15_t)0xb81e, (q15_t)0x69e4, (q15_t)0xb818, - (q15_t)0x69e1, (q15_t)0xb813, (q15_t)0x69dd, (q15_t)0xb80e, (q15_t)0x69da, (q15_t)0xb809, (q15_t)0x69d6, (q15_t)0xb804, - (q15_t)0x69d3, (q15_t)0xb7fe, (q15_t)0x69cf, (q15_t)0xb7f9, (q15_t)0x69cb, (q15_t)0xb7f4, (q15_t)0x69c8, (q15_t)0xb7ef, - (q15_t)0x69c4, (q15_t)0xb7ea, (q15_t)0x69c1, (q15_t)0xb7e4, (q15_t)0x69bd, (q15_t)0xb7df, (q15_t)0x69ba, (q15_t)0xb7da, - (q15_t)0x69b6, (q15_t)0xb7d5, (q15_t)0x69b3, (q15_t)0xb7d0, (q15_t)0x69af, (q15_t)0xb7ca, (q15_t)0x69ac, (q15_t)0xb7c5, - (q15_t)0x69a8, (q15_t)0xb7c0, (q15_t)0x69a5, (q15_t)0xb7bb, (q15_t)0x69a1, (q15_t)0xb7b6, (q15_t)0x699d, (q15_t)0xb7b1, - (q15_t)0x699a, (q15_t)0xb7ab, (q15_t)0x6996, (q15_t)0xb7a6, (q15_t)0x6993, (q15_t)0xb7a1, (q15_t)0x698f, (q15_t)0xb79c, - (q15_t)0x698c, (q15_t)0xb797, (q15_t)0x6988, (q15_t)0xb791, (q15_t)0x6985, (q15_t)0xb78c, (q15_t)0x6981, (q15_t)0xb787, - (q15_t)0x697d, (q15_t)0xb782, (q15_t)0x697a, (q15_t)0xb77d, (q15_t)0x6976, (q15_t)0xb778, (q15_t)0x6973, (q15_t)0xb772, - (q15_t)0x696f, (q15_t)0xb76d, (q15_t)0x696c, (q15_t)0xb768, (q15_t)0x6968, (q15_t)0xb763, (q15_t)0x6964, (q15_t)0xb75e, - (q15_t)0x6961, (q15_t)0xb758, (q15_t)0x695d, (q15_t)0xb753, (q15_t)0x695a, (q15_t)0xb74e, (q15_t)0x6956, (q15_t)0xb749, - (q15_t)0x6953, (q15_t)0xb744, (q15_t)0x694f, (q15_t)0xb73f, (q15_t)0x694b, (q15_t)0xb739, (q15_t)0x6948, (q15_t)0xb734, - (q15_t)0x6944, (q15_t)0xb72f, (q15_t)0x6941, (q15_t)0xb72a, (q15_t)0x693d, (q15_t)0xb725, (q15_t)0x693a, (q15_t)0xb720, - (q15_t)0x6936, (q15_t)0xb71a, (q15_t)0x6932, (q15_t)0xb715, (q15_t)0x692f, (q15_t)0xb710, (q15_t)0x692b, (q15_t)0xb70b, - (q15_t)0x6928, (q15_t)0xb706, (q15_t)0x6924, (q15_t)0xb701, (q15_t)0x6921, (q15_t)0xb6fb, (q15_t)0x691d, (q15_t)0xb6f6, - (q15_t)0x6919, (q15_t)0xb6f1, (q15_t)0x6916, (q15_t)0xb6ec, (q15_t)0x6912, (q15_t)0xb6e7, (q15_t)0x690f, (q15_t)0xb6e2, - (q15_t)0x690b, (q15_t)0xb6dd, (q15_t)0x6907, (q15_t)0xb6d7, (q15_t)0x6904, (q15_t)0xb6d2, (q15_t)0x6900, (q15_t)0xb6cd, - (q15_t)0x68fd, (q15_t)0xb6c8, (q15_t)0x68f9, (q15_t)0xb6c3, (q15_t)0x68f5, (q15_t)0xb6be, (q15_t)0x68f2, (q15_t)0xb6b8, - (q15_t)0x68ee, (q15_t)0xb6b3, (q15_t)0x68eb, (q15_t)0xb6ae, (q15_t)0x68e7, (q15_t)0xb6a9, (q15_t)0x68e3, (q15_t)0xb6a4, - (q15_t)0x68e0, (q15_t)0xb69f, (q15_t)0x68dc, (q15_t)0xb69a, (q15_t)0x68d9, (q15_t)0xb694, (q15_t)0x68d5, (q15_t)0xb68f, - (q15_t)0x68d1, (q15_t)0xb68a, (q15_t)0x68ce, (q15_t)0xb685, (q15_t)0x68ca, (q15_t)0xb680, (q15_t)0x68c7, (q15_t)0xb67b, - (q15_t)0x68c3, (q15_t)0xb676, (q15_t)0x68bf, (q15_t)0xb670, (q15_t)0x68bc, (q15_t)0xb66b, (q15_t)0x68b8, (q15_t)0xb666, - (q15_t)0x68b5, (q15_t)0xb661, (q15_t)0x68b1, (q15_t)0xb65c, (q15_t)0x68ad, (q15_t)0xb657, (q15_t)0x68aa, (q15_t)0xb652, - (q15_t)0x68a6, (q15_t)0xb64c, (q15_t)0x68a3, (q15_t)0xb647, (q15_t)0x689f, (q15_t)0xb642, (q15_t)0x689b, (q15_t)0xb63d, - (q15_t)0x6898, (q15_t)0xb638, (q15_t)0x6894, (q15_t)0xb633, (q15_t)0x6890, (q15_t)0xb62e, (q15_t)0x688d, (q15_t)0xb628, - (q15_t)0x6889, (q15_t)0xb623, (q15_t)0x6886, (q15_t)0xb61e, (q15_t)0x6882, (q15_t)0xb619, (q15_t)0x687e, (q15_t)0xb614, - (q15_t)0x687b, (q15_t)0xb60f, (q15_t)0x6877, (q15_t)0xb60a, (q15_t)0x6873, (q15_t)0xb605, (q15_t)0x6870, (q15_t)0xb5ff, - (q15_t)0x686c, (q15_t)0xb5fa, (q15_t)0x6868, (q15_t)0xb5f5, (q15_t)0x6865, (q15_t)0xb5f0, (q15_t)0x6861, (q15_t)0xb5eb, - (q15_t)0x685e, (q15_t)0xb5e6, (q15_t)0x685a, (q15_t)0xb5e1, (q15_t)0x6856, (q15_t)0xb5dc, (q15_t)0x6853, (q15_t)0xb5d6, - (q15_t)0x684f, (q15_t)0xb5d1, (q15_t)0x684b, (q15_t)0xb5cc, (q15_t)0x6848, (q15_t)0xb5c7, (q15_t)0x6844, (q15_t)0xb5c2, - (q15_t)0x6840, (q15_t)0xb5bd, (q15_t)0x683d, (q15_t)0xb5b8, (q15_t)0x6839, (q15_t)0xb5b3, (q15_t)0x6835, (q15_t)0xb5ae, - (q15_t)0x6832, (q15_t)0xb5a8, (q15_t)0x682e, (q15_t)0xb5a3, (q15_t)0x682b, (q15_t)0xb59e, (q15_t)0x6827, (q15_t)0xb599, - (q15_t)0x6823, (q15_t)0xb594, (q15_t)0x6820, (q15_t)0xb58f, (q15_t)0x681c, (q15_t)0xb58a, (q15_t)0x6818, (q15_t)0xb585, - (q15_t)0x6815, (q15_t)0xb57f, (q15_t)0x6811, (q15_t)0xb57a, (q15_t)0x680d, (q15_t)0xb575, (q15_t)0x680a, (q15_t)0xb570, - (q15_t)0x6806, (q15_t)0xb56b, (q15_t)0x6802, (q15_t)0xb566, (q15_t)0x67ff, (q15_t)0xb561, (q15_t)0x67fb, (q15_t)0xb55c, - (q15_t)0x67f7, (q15_t)0xb557, (q15_t)0x67f4, (q15_t)0xb552, (q15_t)0x67f0, (q15_t)0xb54c, (q15_t)0x67ec, (q15_t)0xb547, - (q15_t)0x67e9, (q15_t)0xb542, (q15_t)0x67e5, (q15_t)0xb53d, (q15_t)0x67e1, (q15_t)0xb538, (q15_t)0x67de, (q15_t)0xb533, - (q15_t)0x67da, (q15_t)0xb52e, (q15_t)0x67d6, (q15_t)0xb529, (q15_t)0x67d3, (q15_t)0xb524, (q15_t)0x67cf, (q15_t)0xb51f, - (q15_t)0x67cb, (q15_t)0xb519, (q15_t)0x67c8, (q15_t)0xb514, (q15_t)0x67c4, (q15_t)0xb50f, (q15_t)0x67c0, (q15_t)0xb50a, - (q15_t)0x67bd, (q15_t)0xb505, (q15_t)0x67b9, (q15_t)0xb500, (q15_t)0x67b5, (q15_t)0xb4fb, (q15_t)0x67b2, (q15_t)0xb4f6, - (q15_t)0x67ae, (q15_t)0xb4f1, (q15_t)0x67aa, (q15_t)0xb4ec, (q15_t)0x67a6, (q15_t)0xb4e7, (q15_t)0x67a3, (q15_t)0xb4e1, - (q15_t)0x679f, (q15_t)0xb4dc, (q15_t)0x679b, (q15_t)0xb4d7, (q15_t)0x6798, (q15_t)0xb4d2, (q15_t)0x6794, (q15_t)0xb4cd, - (q15_t)0x6790, (q15_t)0xb4c8, (q15_t)0x678d, (q15_t)0xb4c3, (q15_t)0x6789, (q15_t)0xb4be, (q15_t)0x6785, (q15_t)0xb4b9, - (q15_t)0x6782, (q15_t)0xb4b4, (q15_t)0x677e, (q15_t)0xb4af, (q15_t)0x677a, (q15_t)0xb4aa, (q15_t)0x6776, (q15_t)0xb4a4, - (q15_t)0x6773, (q15_t)0xb49f, (q15_t)0x676f, (q15_t)0xb49a, (q15_t)0x676b, (q15_t)0xb495, (q15_t)0x6768, (q15_t)0xb490, - (q15_t)0x6764, (q15_t)0xb48b, (q15_t)0x6760, (q15_t)0xb486, (q15_t)0x675d, (q15_t)0xb481, (q15_t)0x6759, (q15_t)0xb47c, - (q15_t)0x6755, (q15_t)0xb477, (q15_t)0x6751, (q15_t)0xb472, (q15_t)0x674e, (q15_t)0xb46d, (q15_t)0x674a, (q15_t)0xb468, - (q15_t)0x6746, (q15_t)0xb462, (q15_t)0x6743, (q15_t)0xb45d, (q15_t)0x673f, (q15_t)0xb458, (q15_t)0x673b, (q15_t)0xb453, - (q15_t)0x6737, (q15_t)0xb44e, (q15_t)0x6734, (q15_t)0xb449, (q15_t)0x6730, (q15_t)0xb444, (q15_t)0x672c, (q15_t)0xb43f, - (q15_t)0x6729, (q15_t)0xb43a, (q15_t)0x6725, (q15_t)0xb435, (q15_t)0x6721, (q15_t)0xb430, (q15_t)0x671d, (q15_t)0xb42b, - (q15_t)0x671a, (q15_t)0xb426, (q15_t)0x6716, (q15_t)0xb421, (q15_t)0x6712, (q15_t)0xb41c, (q15_t)0x670e, (q15_t)0xb417, - (q15_t)0x670b, (q15_t)0xb411, (q15_t)0x6707, (q15_t)0xb40c, (q15_t)0x6703, (q15_t)0xb407, (q15_t)0x6700, (q15_t)0xb402, - (q15_t)0x66fc, (q15_t)0xb3fd, (q15_t)0x66f8, (q15_t)0xb3f8, (q15_t)0x66f4, (q15_t)0xb3f3, (q15_t)0x66f1, (q15_t)0xb3ee, - (q15_t)0x66ed, (q15_t)0xb3e9, (q15_t)0x66e9, (q15_t)0xb3e4, (q15_t)0x66e5, (q15_t)0xb3df, (q15_t)0x66e2, (q15_t)0xb3da, - (q15_t)0x66de, (q15_t)0xb3d5, (q15_t)0x66da, (q15_t)0xb3d0, (q15_t)0x66d6, (q15_t)0xb3cb, (q15_t)0x66d3, (q15_t)0xb3c6, - (q15_t)0x66cf, (q15_t)0xb3c1, (q15_t)0x66cb, (q15_t)0xb3bc, (q15_t)0x66c8, (q15_t)0xb3b7, (q15_t)0x66c4, (q15_t)0xb3b1, - (q15_t)0x66c0, (q15_t)0xb3ac, (q15_t)0x66bc, (q15_t)0xb3a7, (q15_t)0x66b9, (q15_t)0xb3a2, (q15_t)0x66b5, (q15_t)0xb39d, - (q15_t)0x66b1, (q15_t)0xb398, (q15_t)0x66ad, (q15_t)0xb393, (q15_t)0x66aa, (q15_t)0xb38e, (q15_t)0x66a6, (q15_t)0xb389, - (q15_t)0x66a2, (q15_t)0xb384, (q15_t)0x669e, (q15_t)0xb37f, (q15_t)0x669b, (q15_t)0xb37a, (q15_t)0x6697, (q15_t)0xb375, - (q15_t)0x6693, (q15_t)0xb370, (q15_t)0x668f, (q15_t)0xb36b, (q15_t)0x668b, (q15_t)0xb366, (q15_t)0x6688, (q15_t)0xb361, - (q15_t)0x6684, (q15_t)0xb35c, (q15_t)0x6680, (q15_t)0xb357, (q15_t)0x667c, (q15_t)0xb352, (q15_t)0x6679, (q15_t)0xb34d, - (q15_t)0x6675, (q15_t)0xb348, (q15_t)0x6671, (q15_t)0xb343, (q15_t)0x666d, (q15_t)0xb33e, (q15_t)0x666a, (q15_t)0xb339, - (q15_t)0x6666, (q15_t)0xb334, (q15_t)0x6662, (q15_t)0xb32f, (q15_t)0x665e, (q15_t)0xb32a, (q15_t)0x665b, (q15_t)0xb325, - (q15_t)0x6657, (q15_t)0xb31f, (q15_t)0x6653, (q15_t)0xb31a, (q15_t)0x664f, (q15_t)0xb315, (q15_t)0x664b, (q15_t)0xb310, - (q15_t)0x6648, (q15_t)0xb30b, (q15_t)0x6644, (q15_t)0xb306, (q15_t)0x6640, (q15_t)0xb301, (q15_t)0x663c, (q15_t)0xb2fc, - (q15_t)0x6639, (q15_t)0xb2f7, (q15_t)0x6635, (q15_t)0xb2f2, (q15_t)0x6631, (q15_t)0xb2ed, (q15_t)0x662d, (q15_t)0xb2e8, - (q15_t)0x6629, (q15_t)0xb2e3, (q15_t)0x6626, (q15_t)0xb2de, (q15_t)0x6622, (q15_t)0xb2d9, (q15_t)0x661e, (q15_t)0xb2d4, - (q15_t)0x661a, (q15_t)0xb2cf, (q15_t)0x6616, (q15_t)0xb2ca, (q15_t)0x6613, (q15_t)0xb2c5, (q15_t)0x660f, (q15_t)0xb2c0, - (q15_t)0x660b, (q15_t)0xb2bb, (q15_t)0x6607, (q15_t)0xb2b6, (q15_t)0x6603, (q15_t)0xb2b1, (q15_t)0x6600, (q15_t)0xb2ac, - (q15_t)0x65fc, (q15_t)0xb2a7, (q15_t)0x65f8, (q15_t)0xb2a2, (q15_t)0x65f4, (q15_t)0xb29d, (q15_t)0x65f0, (q15_t)0xb298, - (q15_t)0x65ed, (q15_t)0xb293, (q15_t)0x65e9, (q15_t)0xb28e, (q15_t)0x65e5, (q15_t)0xb289, (q15_t)0x65e1, (q15_t)0xb284, - (q15_t)0x65dd, (q15_t)0xb27f, (q15_t)0x65da, (q15_t)0xb27a, (q15_t)0x65d6, (q15_t)0xb275, (q15_t)0x65d2, (q15_t)0xb270, - (q15_t)0x65ce, (q15_t)0xb26b, (q15_t)0x65ca, (q15_t)0xb266, (q15_t)0x65c7, (q15_t)0xb261, (q15_t)0x65c3, (q15_t)0xb25c, - (q15_t)0x65bf, (q15_t)0xb257, (q15_t)0x65bb, (q15_t)0xb252, (q15_t)0x65b7, (q15_t)0xb24d, (q15_t)0x65b4, (q15_t)0xb248, - (q15_t)0x65b0, (q15_t)0xb243, (q15_t)0x65ac, (q15_t)0xb23e, (q15_t)0x65a8, (q15_t)0xb239, (q15_t)0x65a4, (q15_t)0xb234, - (q15_t)0x65a0, (q15_t)0xb22f, (q15_t)0x659d, (q15_t)0xb22a, (q15_t)0x6599, (q15_t)0xb225, (q15_t)0x6595, (q15_t)0xb220, - (q15_t)0x6591, (q15_t)0xb21b, (q15_t)0x658d, (q15_t)0xb216, (q15_t)0x658a, (q15_t)0xb211, (q15_t)0x6586, (q15_t)0xb20c, - (q15_t)0x6582, (q15_t)0xb207, (q15_t)0x657e, (q15_t)0xb202, (q15_t)0x657a, (q15_t)0xb1fd, (q15_t)0x6576, (q15_t)0xb1f8, - (q15_t)0x6573, (q15_t)0xb1f3, (q15_t)0x656f, (q15_t)0xb1ee, (q15_t)0x656b, (q15_t)0xb1e9, (q15_t)0x6567, (q15_t)0xb1e4, - (q15_t)0x6563, (q15_t)0xb1df, (q15_t)0x655f, (q15_t)0xb1da, (q15_t)0x655c, (q15_t)0xb1d6, (q15_t)0x6558, (q15_t)0xb1d1, - (q15_t)0x6554, (q15_t)0xb1cc, (q15_t)0x6550, (q15_t)0xb1c7, (q15_t)0x654c, (q15_t)0xb1c2, (q15_t)0x6548, (q15_t)0xb1bd, - (q15_t)0x6545, (q15_t)0xb1b8, (q15_t)0x6541, (q15_t)0xb1b3, (q15_t)0x653d, (q15_t)0xb1ae, (q15_t)0x6539, (q15_t)0xb1a9, - (q15_t)0x6535, (q15_t)0xb1a4, (q15_t)0x6531, (q15_t)0xb19f, (q15_t)0x652d, (q15_t)0xb19a, (q15_t)0x652a, (q15_t)0xb195, - (q15_t)0x6526, (q15_t)0xb190, (q15_t)0x6522, (q15_t)0xb18b, (q15_t)0x651e, (q15_t)0xb186, (q15_t)0x651a, (q15_t)0xb181, - (q15_t)0x6516, (q15_t)0xb17c, (q15_t)0x6513, (q15_t)0xb177, (q15_t)0x650f, (q15_t)0xb172, (q15_t)0x650b, (q15_t)0xb16d, - (q15_t)0x6507, (q15_t)0xb168, (q15_t)0x6503, (q15_t)0xb163, (q15_t)0x64ff, (q15_t)0xb15e, (q15_t)0x64fb, (q15_t)0xb159, - (q15_t)0x64f7, (q15_t)0xb154, (q15_t)0x64f4, (q15_t)0xb14f, (q15_t)0x64f0, (q15_t)0xb14a, (q15_t)0x64ec, (q15_t)0xb146, - (q15_t)0x64e8, (q15_t)0xb141, (q15_t)0x64e4, (q15_t)0xb13c, (q15_t)0x64e0, (q15_t)0xb137, (q15_t)0x64dc, (q15_t)0xb132, - (q15_t)0x64d9, (q15_t)0xb12d, (q15_t)0x64d5, (q15_t)0xb128, (q15_t)0x64d1, (q15_t)0xb123, (q15_t)0x64cd, (q15_t)0xb11e, - (q15_t)0x64c9, (q15_t)0xb119, (q15_t)0x64c5, (q15_t)0xb114, (q15_t)0x64c1, (q15_t)0xb10f, (q15_t)0x64bd, (q15_t)0xb10a, - (q15_t)0x64ba, (q15_t)0xb105, (q15_t)0x64b6, (q15_t)0xb100, (q15_t)0x64b2, (q15_t)0xb0fb, (q15_t)0x64ae, (q15_t)0xb0f6, - (q15_t)0x64aa, (q15_t)0xb0f1, (q15_t)0x64a6, (q15_t)0xb0ec, (q15_t)0x64a2, (q15_t)0xb0e8, (q15_t)0x649e, (q15_t)0xb0e3, - (q15_t)0x649b, (q15_t)0xb0de, (q15_t)0x6497, (q15_t)0xb0d9, (q15_t)0x6493, (q15_t)0xb0d4, (q15_t)0x648f, (q15_t)0xb0cf, - (q15_t)0x648b, (q15_t)0xb0ca, (q15_t)0x6487, (q15_t)0xb0c5, (q15_t)0x6483, (q15_t)0xb0c0, (q15_t)0x647f, (q15_t)0xb0bb, - (q15_t)0x647b, (q15_t)0xb0b6, (q15_t)0x6478, (q15_t)0xb0b1, (q15_t)0x6474, (q15_t)0xb0ac, (q15_t)0x6470, (q15_t)0xb0a7, - (q15_t)0x646c, (q15_t)0xb0a2, (q15_t)0x6468, (q15_t)0xb09e, (q15_t)0x6464, (q15_t)0xb099, (q15_t)0x6460, (q15_t)0xb094, - (q15_t)0x645c, (q15_t)0xb08f, (q15_t)0x6458, (q15_t)0xb08a, (q15_t)0x6454, (q15_t)0xb085, (q15_t)0x6451, (q15_t)0xb080, - (q15_t)0x644d, (q15_t)0xb07b, (q15_t)0x6449, (q15_t)0xb076, (q15_t)0x6445, (q15_t)0xb071, (q15_t)0x6441, (q15_t)0xb06c, - (q15_t)0x643d, (q15_t)0xb067, (q15_t)0x6439, (q15_t)0xb062, (q15_t)0x6435, (q15_t)0xb05e, (q15_t)0x6431, (q15_t)0xb059, - (q15_t)0x642d, (q15_t)0xb054, (q15_t)0x6429, (q15_t)0xb04f, (q15_t)0x6426, (q15_t)0xb04a, (q15_t)0x6422, (q15_t)0xb045, - (q15_t)0x641e, (q15_t)0xb040, (q15_t)0x641a, (q15_t)0xb03b, (q15_t)0x6416, (q15_t)0xb036, (q15_t)0x6412, (q15_t)0xb031, - (q15_t)0x640e, (q15_t)0xb02c, (q15_t)0x640a, (q15_t)0xb027, (q15_t)0x6406, (q15_t)0xb023, (q15_t)0x6402, (q15_t)0xb01e, - (q15_t)0x63fe, (q15_t)0xb019, (q15_t)0x63fa, (q15_t)0xb014, (q15_t)0x63f7, (q15_t)0xb00f, (q15_t)0x63f3, (q15_t)0xb00a, - (q15_t)0x63ef, (q15_t)0xb005, (q15_t)0x63eb, (q15_t)0xb000, (q15_t)0x63e7, (q15_t)0xaffb, (q15_t)0x63e3, (q15_t)0xaff6, - (q15_t)0x63df, (q15_t)0xaff1, (q15_t)0x63db, (q15_t)0xafed, (q15_t)0x63d7, (q15_t)0xafe8, (q15_t)0x63d3, (q15_t)0xafe3, - (q15_t)0x63cf, (q15_t)0xafde, (q15_t)0x63cb, (q15_t)0xafd9, (q15_t)0x63c7, (q15_t)0xafd4, (q15_t)0x63c3, (q15_t)0xafcf, - (q15_t)0x63c0, (q15_t)0xafca, (q15_t)0x63bc, (q15_t)0xafc5, (q15_t)0x63b8, (q15_t)0xafc1, (q15_t)0x63b4, (q15_t)0xafbc, - (q15_t)0x63b0, (q15_t)0xafb7, (q15_t)0x63ac, (q15_t)0xafb2, (q15_t)0x63a8, (q15_t)0xafad, (q15_t)0x63a4, (q15_t)0xafa8, - (q15_t)0x63a0, (q15_t)0xafa3, (q15_t)0x639c, (q15_t)0xaf9e, (q15_t)0x6398, (q15_t)0xaf99, (q15_t)0x6394, (q15_t)0xaf94, - (q15_t)0x6390, (q15_t)0xaf90, (q15_t)0x638c, (q15_t)0xaf8b, (q15_t)0x6388, (q15_t)0xaf86, (q15_t)0x6384, (q15_t)0xaf81, - (q15_t)0x6380, (q15_t)0xaf7c, (q15_t)0x637c, (q15_t)0xaf77, (q15_t)0x6378, (q15_t)0xaf72, (q15_t)0x6375, (q15_t)0xaf6d, - (q15_t)0x6371, (q15_t)0xaf69, (q15_t)0x636d, (q15_t)0xaf64, (q15_t)0x6369, (q15_t)0xaf5f, (q15_t)0x6365, (q15_t)0xaf5a, - (q15_t)0x6361, (q15_t)0xaf55, (q15_t)0x635d, (q15_t)0xaf50, (q15_t)0x6359, (q15_t)0xaf4b, (q15_t)0x6355, (q15_t)0xaf46, - (q15_t)0x6351, (q15_t)0xaf41, (q15_t)0x634d, (q15_t)0xaf3d, (q15_t)0x6349, (q15_t)0xaf38, (q15_t)0x6345, (q15_t)0xaf33, - (q15_t)0x6341, (q15_t)0xaf2e, (q15_t)0x633d, (q15_t)0xaf29, (q15_t)0x6339, (q15_t)0xaf24, (q15_t)0x6335, (q15_t)0xaf1f, - (q15_t)0x6331, (q15_t)0xaf1b, (q15_t)0x632d, (q15_t)0xaf16, (q15_t)0x6329, (q15_t)0xaf11, (q15_t)0x6325, (q15_t)0xaf0c, - (q15_t)0x6321, (q15_t)0xaf07, (q15_t)0x631d, (q15_t)0xaf02, (q15_t)0x6319, (q15_t)0xaefd, (q15_t)0x6315, (q15_t)0xaef8, - (q15_t)0x6311, (q15_t)0xaef4, (q15_t)0x630d, (q15_t)0xaeef, (q15_t)0x6309, (q15_t)0xaeea, (q15_t)0x6305, (q15_t)0xaee5, - (q15_t)0x6301, (q15_t)0xaee0, (q15_t)0x62fd, (q15_t)0xaedb, (q15_t)0x62f9, (q15_t)0xaed6, (q15_t)0x62f5, (q15_t)0xaed2, - (q15_t)0x62f2, (q15_t)0xaecd, (q15_t)0x62ee, (q15_t)0xaec8, (q15_t)0x62ea, (q15_t)0xaec3, (q15_t)0x62e6, (q15_t)0xaebe, - (q15_t)0x62e2, (q15_t)0xaeb9, (q15_t)0x62de, (q15_t)0xaeb4, (q15_t)0x62da, (q15_t)0xaeb0, (q15_t)0x62d6, (q15_t)0xaeab, - (q15_t)0x62d2, (q15_t)0xaea6, (q15_t)0x62ce, (q15_t)0xaea1, (q15_t)0x62ca, (q15_t)0xae9c, (q15_t)0x62c6, (q15_t)0xae97, - (q15_t)0x62c2, (q15_t)0xae92, (q15_t)0x62be, (q15_t)0xae8e, (q15_t)0x62ba, (q15_t)0xae89, (q15_t)0x62b6, (q15_t)0xae84, - (q15_t)0x62b2, (q15_t)0xae7f, (q15_t)0x62ae, (q15_t)0xae7a, (q15_t)0x62aa, (q15_t)0xae75, (q15_t)0x62a6, (q15_t)0xae71, - (q15_t)0x62a2, (q15_t)0xae6c, (q15_t)0x629e, (q15_t)0xae67, (q15_t)0x629a, (q15_t)0xae62, (q15_t)0x6296, (q15_t)0xae5d, - (q15_t)0x6292, (q15_t)0xae58, (q15_t)0x628e, (q15_t)0xae54, (q15_t)0x628a, (q15_t)0xae4f, (q15_t)0x6286, (q15_t)0xae4a, - (q15_t)0x6282, (q15_t)0xae45, (q15_t)0x627e, (q15_t)0xae40, (q15_t)0x627a, (q15_t)0xae3b, (q15_t)0x6275, (q15_t)0xae37, - (q15_t)0x6271, (q15_t)0xae32, (q15_t)0x626d, (q15_t)0xae2d, (q15_t)0x6269, (q15_t)0xae28, (q15_t)0x6265, (q15_t)0xae23, - (q15_t)0x6261, (q15_t)0xae1e, (q15_t)0x625d, (q15_t)0xae1a, (q15_t)0x6259, (q15_t)0xae15, (q15_t)0x6255, (q15_t)0xae10, - (q15_t)0x6251, (q15_t)0xae0b, (q15_t)0x624d, (q15_t)0xae06, (q15_t)0x6249, (q15_t)0xae01, (q15_t)0x6245, (q15_t)0xadfd, - (q15_t)0x6241, (q15_t)0xadf8, (q15_t)0x623d, (q15_t)0xadf3, (q15_t)0x6239, (q15_t)0xadee, (q15_t)0x6235, (q15_t)0xade9, - (q15_t)0x6231, (q15_t)0xade4, (q15_t)0x622d, (q15_t)0xade0, (q15_t)0x6229, (q15_t)0xaddb, (q15_t)0x6225, (q15_t)0xadd6, - (q15_t)0x6221, (q15_t)0xadd1, (q15_t)0x621d, (q15_t)0xadcc, (q15_t)0x6219, (q15_t)0xadc8, (q15_t)0x6215, (q15_t)0xadc3, - (q15_t)0x6211, (q15_t)0xadbe, (q15_t)0x620d, (q15_t)0xadb9, (q15_t)0x6209, (q15_t)0xadb4, (q15_t)0x6205, (q15_t)0xadaf, - (q15_t)0x6201, (q15_t)0xadab, (q15_t)0x61fd, (q15_t)0xada6, (q15_t)0x61f9, (q15_t)0xada1, (q15_t)0x61f5, (q15_t)0xad9c, - (q15_t)0x61f1, (q15_t)0xad97, (q15_t)0x61ec, (q15_t)0xad93, (q15_t)0x61e8, (q15_t)0xad8e, (q15_t)0x61e4, (q15_t)0xad89, - (q15_t)0x61e0, (q15_t)0xad84, (q15_t)0x61dc, (q15_t)0xad7f, (q15_t)0x61d8, (q15_t)0xad7b, (q15_t)0x61d4, (q15_t)0xad76, - (q15_t)0x61d0, (q15_t)0xad71, (q15_t)0x61cc, (q15_t)0xad6c, (q15_t)0x61c8, (q15_t)0xad67, (q15_t)0x61c4, (q15_t)0xad63, - (q15_t)0x61c0, (q15_t)0xad5e, (q15_t)0x61bc, (q15_t)0xad59, (q15_t)0x61b8, (q15_t)0xad54, (q15_t)0x61b4, (q15_t)0xad4f, - (q15_t)0x61b0, (q15_t)0xad4b, (q15_t)0x61ac, (q15_t)0xad46, (q15_t)0x61a8, (q15_t)0xad41, (q15_t)0x61a3, (q15_t)0xad3c, - (q15_t)0x619f, (q15_t)0xad37, (q15_t)0x619b, (q15_t)0xad33, (q15_t)0x6197, (q15_t)0xad2e, (q15_t)0x6193, (q15_t)0xad29, - (q15_t)0x618f, (q15_t)0xad24, (q15_t)0x618b, (q15_t)0xad1f, (q15_t)0x6187, (q15_t)0xad1b, (q15_t)0x6183, (q15_t)0xad16, - (q15_t)0x617f, (q15_t)0xad11, (q15_t)0x617b, (q15_t)0xad0c, (q15_t)0x6177, (q15_t)0xad08, (q15_t)0x6173, (q15_t)0xad03, - (q15_t)0x616f, (q15_t)0xacfe, (q15_t)0x616b, (q15_t)0xacf9, (q15_t)0x6166, (q15_t)0xacf4, (q15_t)0x6162, (q15_t)0xacf0, - (q15_t)0x615e, (q15_t)0xaceb, (q15_t)0x615a, (q15_t)0xace6, (q15_t)0x6156, (q15_t)0xace1, (q15_t)0x6152, (q15_t)0xacdd, - (q15_t)0x614e, (q15_t)0xacd8, (q15_t)0x614a, (q15_t)0xacd3, (q15_t)0x6146, (q15_t)0xacce, (q15_t)0x6142, (q15_t)0xacc9, - (q15_t)0x613e, (q15_t)0xacc5, (q15_t)0x613a, (q15_t)0xacc0, (q15_t)0x6135, (q15_t)0xacbb, (q15_t)0x6131, (q15_t)0xacb6, - (q15_t)0x612d, (q15_t)0xacb2, (q15_t)0x6129, (q15_t)0xacad, (q15_t)0x6125, (q15_t)0xaca8, (q15_t)0x6121, (q15_t)0xaca3, - (q15_t)0x611d, (q15_t)0xac9e, (q15_t)0x6119, (q15_t)0xac9a, (q15_t)0x6115, (q15_t)0xac95, (q15_t)0x6111, (q15_t)0xac90, - (q15_t)0x610d, (q15_t)0xac8b, (q15_t)0x6108, (q15_t)0xac87, (q15_t)0x6104, (q15_t)0xac82, (q15_t)0x6100, (q15_t)0xac7d, - (q15_t)0x60fc, (q15_t)0xac78, (q15_t)0x60f8, (q15_t)0xac74, (q15_t)0x60f4, (q15_t)0xac6f, (q15_t)0x60f0, (q15_t)0xac6a, - (q15_t)0x60ec, (q15_t)0xac65, (q15_t)0x60e8, (q15_t)0xac61, (q15_t)0x60e4, (q15_t)0xac5c, (q15_t)0x60df, (q15_t)0xac57, - (q15_t)0x60db, (q15_t)0xac52, (q15_t)0x60d7, (q15_t)0xac4e, (q15_t)0x60d3, (q15_t)0xac49, (q15_t)0x60cf, (q15_t)0xac44, - (q15_t)0x60cb, (q15_t)0xac3f, (q15_t)0x60c7, (q15_t)0xac3b, (q15_t)0x60c3, (q15_t)0xac36, (q15_t)0x60bf, (q15_t)0xac31, - (q15_t)0x60ba, (q15_t)0xac2c, (q15_t)0x60b6, (q15_t)0xac28, (q15_t)0x60b2, (q15_t)0xac23, (q15_t)0x60ae, (q15_t)0xac1e, - (q15_t)0x60aa, (q15_t)0xac19, (q15_t)0x60a6, (q15_t)0xac15, (q15_t)0x60a2, (q15_t)0xac10, (q15_t)0x609e, (q15_t)0xac0b, - (q15_t)0x6099, (q15_t)0xac06, (q15_t)0x6095, (q15_t)0xac02, (q15_t)0x6091, (q15_t)0xabfd, (q15_t)0x608d, (q15_t)0xabf8, - (q15_t)0x6089, (q15_t)0xabf3, (q15_t)0x6085, (q15_t)0xabef, (q15_t)0x6081, (q15_t)0xabea, (q15_t)0x607d, (q15_t)0xabe5, - (q15_t)0x6078, (q15_t)0xabe0, (q15_t)0x6074, (q15_t)0xabdc, (q15_t)0x6070, (q15_t)0xabd7, (q15_t)0x606c, (q15_t)0xabd2, - (q15_t)0x6068, (q15_t)0xabcd, (q15_t)0x6064, (q15_t)0xabc9, (q15_t)0x6060, (q15_t)0xabc4, (q15_t)0x605c, (q15_t)0xabbf, - (q15_t)0x6057, (q15_t)0xabbb, (q15_t)0x6053, (q15_t)0xabb6, (q15_t)0x604f, (q15_t)0xabb1, (q15_t)0x604b, (q15_t)0xabac, - (q15_t)0x6047, (q15_t)0xaba8, (q15_t)0x6043, (q15_t)0xaba3, (q15_t)0x603f, (q15_t)0xab9e, (q15_t)0x603a, (q15_t)0xab99, - (q15_t)0x6036, (q15_t)0xab95, (q15_t)0x6032, (q15_t)0xab90, (q15_t)0x602e, (q15_t)0xab8b, (q15_t)0x602a, (q15_t)0xab87, - (q15_t)0x6026, (q15_t)0xab82, (q15_t)0x6022, (q15_t)0xab7d, (q15_t)0x601d, (q15_t)0xab78, (q15_t)0x6019, (q15_t)0xab74, - (q15_t)0x6015, (q15_t)0xab6f, (q15_t)0x6011, (q15_t)0xab6a, (q15_t)0x600d, (q15_t)0xab66, (q15_t)0x6009, (q15_t)0xab61, - (q15_t)0x6004, (q15_t)0xab5c, (q15_t)0x6000, (q15_t)0xab57, (q15_t)0x5ffc, (q15_t)0xab53, (q15_t)0x5ff8, (q15_t)0xab4e, - (q15_t)0x5ff4, (q15_t)0xab49, (q15_t)0x5ff0, (q15_t)0xab45, (q15_t)0x5fec, (q15_t)0xab40, (q15_t)0x5fe7, (q15_t)0xab3b, - (q15_t)0x5fe3, (q15_t)0xab36, (q15_t)0x5fdf, (q15_t)0xab32, (q15_t)0x5fdb, (q15_t)0xab2d, (q15_t)0x5fd7, (q15_t)0xab28, - (q15_t)0x5fd3, (q15_t)0xab24, (q15_t)0x5fce, (q15_t)0xab1f, (q15_t)0x5fca, (q15_t)0xab1a, (q15_t)0x5fc6, (q15_t)0xab16, - (q15_t)0x5fc2, (q15_t)0xab11, (q15_t)0x5fbe, (q15_t)0xab0c, (q15_t)0x5fba, (q15_t)0xab07, (q15_t)0x5fb5, (q15_t)0xab03, - (q15_t)0x5fb1, (q15_t)0xaafe, (q15_t)0x5fad, (q15_t)0xaaf9, (q15_t)0x5fa9, (q15_t)0xaaf5, (q15_t)0x5fa5, (q15_t)0xaaf0, - (q15_t)0x5fa0, (q15_t)0xaaeb, (q15_t)0x5f9c, (q15_t)0xaae7, (q15_t)0x5f98, (q15_t)0xaae2, (q15_t)0x5f94, (q15_t)0xaadd, - (q15_t)0x5f90, (q15_t)0xaad8, (q15_t)0x5f8c, (q15_t)0xaad4, (q15_t)0x5f87, (q15_t)0xaacf, (q15_t)0x5f83, (q15_t)0xaaca, - (q15_t)0x5f7f, (q15_t)0xaac6, (q15_t)0x5f7b, (q15_t)0xaac1, (q15_t)0x5f77, (q15_t)0xaabc, (q15_t)0x5f72, (q15_t)0xaab8, - (q15_t)0x5f6e, (q15_t)0xaab3, (q15_t)0x5f6a, (q15_t)0xaaae, (q15_t)0x5f66, (q15_t)0xaaaa, (q15_t)0x5f62, (q15_t)0xaaa5, - (q15_t)0x5f5e, (q15_t)0xaaa0, (q15_t)0x5f59, (q15_t)0xaa9c, (q15_t)0x5f55, (q15_t)0xaa97, (q15_t)0x5f51, (q15_t)0xaa92, - (q15_t)0x5f4d, (q15_t)0xaa8e, (q15_t)0x5f49, (q15_t)0xaa89, (q15_t)0x5f44, (q15_t)0xaa84, (q15_t)0x5f40, (q15_t)0xaa7f, - (q15_t)0x5f3c, (q15_t)0xaa7b, (q15_t)0x5f38, (q15_t)0xaa76, (q15_t)0x5f34, (q15_t)0xaa71, (q15_t)0x5f2f, (q15_t)0xaa6d, - (q15_t)0x5f2b, (q15_t)0xaa68, (q15_t)0x5f27, (q15_t)0xaa63, (q15_t)0x5f23, (q15_t)0xaa5f, (q15_t)0x5f1f, (q15_t)0xaa5a, - (q15_t)0x5f1a, (q15_t)0xaa55, (q15_t)0x5f16, (q15_t)0xaa51, (q15_t)0x5f12, (q15_t)0xaa4c, (q15_t)0x5f0e, (q15_t)0xaa47, - (q15_t)0x5f0a, (q15_t)0xaa43, (q15_t)0x5f05, (q15_t)0xaa3e, (q15_t)0x5f01, (q15_t)0xaa39, (q15_t)0x5efd, (q15_t)0xaa35, - (q15_t)0x5ef9, (q15_t)0xaa30, (q15_t)0x5ef5, (q15_t)0xaa2b, (q15_t)0x5ef0, (q15_t)0xaa27, (q15_t)0x5eec, (q15_t)0xaa22, - (q15_t)0x5ee8, (q15_t)0xaa1d, (q15_t)0x5ee4, (q15_t)0xaa19, (q15_t)0x5edf, (q15_t)0xaa14, (q15_t)0x5edb, (q15_t)0xaa10, - (q15_t)0x5ed7, (q15_t)0xaa0b, (q15_t)0x5ed3, (q15_t)0xaa06, (q15_t)0x5ecf, (q15_t)0xaa02, (q15_t)0x5eca, (q15_t)0xa9fd, - (q15_t)0x5ec6, (q15_t)0xa9f8, (q15_t)0x5ec2, (q15_t)0xa9f4, (q15_t)0x5ebe, (q15_t)0xa9ef, (q15_t)0x5eb9, (q15_t)0xa9ea, - (q15_t)0x5eb5, (q15_t)0xa9e6, (q15_t)0x5eb1, (q15_t)0xa9e1, (q15_t)0x5ead, (q15_t)0xa9dc, (q15_t)0x5ea9, (q15_t)0xa9d8, - (q15_t)0x5ea4, (q15_t)0xa9d3, (q15_t)0x5ea0, (q15_t)0xa9ce, (q15_t)0x5e9c, (q15_t)0xa9ca, (q15_t)0x5e98, (q15_t)0xa9c5, - (q15_t)0x5e93, (q15_t)0xa9c0, (q15_t)0x5e8f, (q15_t)0xa9bc, (q15_t)0x5e8b, (q15_t)0xa9b7, (q15_t)0x5e87, (q15_t)0xa9b3, - (q15_t)0x5e82, (q15_t)0xa9ae, (q15_t)0x5e7e, (q15_t)0xa9a9, (q15_t)0x5e7a, (q15_t)0xa9a5, (q15_t)0x5e76, (q15_t)0xa9a0, - (q15_t)0x5e71, (q15_t)0xa99b, (q15_t)0x5e6d, (q15_t)0xa997, (q15_t)0x5e69, (q15_t)0xa992, (q15_t)0x5e65, (q15_t)0xa98d, - (q15_t)0x5e60, (q15_t)0xa989, (q15_t)0x5e5c, (q15_t)0xa984, (q15_t)0x5e58, (q15_t)0xa980, (q15_t)0x5e54, (q15_t)0xa97b, - (q15_t)0x5e50, (q15_t)0xa976, (q15_t)0x5e4b, (q15_t)0xa972, (q15_t)0x5e47, (q15_t)0xa96d, (q15_t)0x5e43, (q15_t)0xa968, - (q15_t)0x5e3f, (q15_t)0xa964, (q15_t)0x5e3a, (q15_t)0xa95f, (q15_t)0x5e36, (q15_t)0xa95b, (q15_t)0x5e32, (q15_t)0xa956, - (q15_t)0x5e2d, (q15_t)0xa951, (q15_t)0x5e29, (q15_t)0xa94d, (q15_t)0x5e25, (q15_t)0xa948, (q15_t)0x5e21, (q15_t)0xa943, - (q15_t)0x5e1c, (q15_t)0xa93f, (q15_t)0x5e18, (q15_t)0xa93a, (q15_t)0x5e14, (q15_t)0xa936, (q15_t)0x5e10, (q15_t)0xa931, - (q15_t)0x5e0b, (q15_t)0xa92c, (q15_t)0x5e07, (q15_t)0xa928, (q15_t)0x5e03, (q15_t)0xa923, (q15_t)0x5dff, (q15_t)0xa91e, - (q15_t)0x5dfa, (q15_t)0xa91a, (q15_t)0x5df6, (q15_t)0xa915, (q15_t)0x5df2, (q15_t)0xa911, (q15_t)0x5dee, (q15_t)0xa90c, - (q15_t)0x5de9, (q15_t)0xa907, (q15_t)0x5de5, (q15_t)0xa903, (q15_t)0x5de1, (q15_t)0xa8fe, (q15_t)0x5ddc, (q15_t)0xa8fa, - (q15_t)0x5dd8, (q15_t)0xa8f5, (q15_t)0x5dd4, (q15_t)0xa8f0, (q15_t)0x5dd0, (q15_t)0xa8ec, (q15_t)0x5dcb, (q15_t)0xa8e7, - (q15_t)0x5dc7, (q15_t)0xa8e3, (q15_t)0x5dc3, (q15_t)0xa8de, (q15_t)0x5dbf, (q15_t)0xa8d9, (q15_t)0x5dba, (q15_t)0xa8d5, - (q15_t)0x5db6, (q15_t)0xa8d0, (q15_t)0x5db2, (q15_t)0xa8cc, (q15_t)0x5dad, (q15_t)0xa8c7, (q15_t)0x5da9, (q15_t)0xa8c2, - (q15_t)0x5da5, (q15_t)0xa8be, (q15_t)0x5da1, (q15_t)0xa8b9, (q15_t)0x5d9c, (q15_t)0xa8b5, (q15_t)0x5d98, (q15_t)0xa8b0, - (q15_t)0x5d94, (q15_t)0xa8ab, (q15_t)0x5d8f, (q15_t)0xa8a7, (q15_t)0x5d8b, (q15_t)0xa8a2, (q15_t)0x5d87, (q15_t)0xa89e, - (q15_t)0x5d83, (q15_t)0xa899, (q15_t)0x5d7e, (q15_t)0xa894, (q15_t)0x5d7a, (q15_t)0xa890, (q15_t)0x5d76, (q15_t)0xa88b, - (q15_t)0x5d71, (q15_t)0xa887, (q15_t)0x5d6d, (q15_t)0xa882, (q15_t)0x5d69, (q15_t)0xa87d, (q15_t)0x5d65, (q15_t)0xa879, - (q15_t)0x5d60, (q15_t)0xa874, (q15_t)0x5d5c, (q15_t)0xa870, (q15_t)0x5d58, (q15_t)0xa86b, (q15_t)0x5d53, (q15_t)0xa867, - (q15_t)0x5d4f, (q15_t)0xa862, (q15_t)0x5d4b, (q15_t)0xa85d, (q15_t)0x5d46, (q15_t)0xa859, (q15_t)0x5d42, (q15_t)0xa854, - (q15_t)0x5d3e, (q15_t)0xa850, (q15_t)0x5d3a, (q15_t)0xa84b, (q15_t)0x5d35, (q15_t)0xa847, (q15_t)0x5d31, (q15_t)0xa842, - (q15_t)0x5d2d, (q15_t)0xa83d, (q15_t)0x5d28, (q15_t)0xa839, (q15_t)0x5d24, (q15_t)0xa834, (q15_t)0x5d20, (q15_t)0xa830, - (q15_t)0x5d1b, (q15_t)0xa82b, (q15_t)0x5d17, (q15_t)0xa827, (q15_t)0x5d13, (q15_t)0xa822, (q15_t)0x5d0e, (q15_t)0xa81d, - (q15_t)0x5d0a, (q15_t)0xa819, (q15_t)0x5d06, (q15_t)0xa814, (q15_t)0x5d01, (q15_t)0xa810, (q15_t)0x5cfd, (q15_t)0xa80b, - (q15_t)0x5cf9, (q15_t)0xa807, (q15_t)0x5cf5, (q15_t)0xa802, (q15_t)0x5cf0, (q15_t)0xa7fd, (q15_t)0x5cec, (q15_t)0xa7f9, - (q15_t)0x5ce8, (q15_t)0xa7f4, (q15_t)0x5ce3, (q15_t)0xa7f0, (q15_t)0x5cdf, (q15_t)0xa7eb, (q15_t)0x5cdb, (q15_t)0xa7e7, - (q15_t)0x5cd6, (q15_t)0xa7e2, (q15_t)0x5cd2, (q15_t)0xa7de, (q15_t)0x5cce, (q15_t)0xa7d9, (q15_t)0x5cc9, (q15_t)0xa7d4, - (q15_t)0x5cc5, (q15_t)0xa7d0, (q15_t)0x5cc1, (q15_t)0xa7cb, (q15_t)0x5cbc, (q15_t)0xa7c7, (q15_t)0x5cb8, (q15_t)0xa7c2, - (q15_t)0x5cb4, (q15_t)0xa7be, (q15_t)0x5caf, (q15_t)0xa7b9, (q15_t)0x5cab, (q15_t)0xa7b5, (q15_t)0x5ca7, (q15_t)0xa7b0, - (q15_t)0x5ca2, (q15_t)0xa7ab, (q15_t)0x5c9e, (q15_t)0xa7a7, (q15_t)0x5c9a, (q15_t)0xa7a2, (q15_t)0x5c95, (q15_t)0xa79e, - (q15_t)0x5c91, (q15_t)0xa799, (q15_t)0x5c8d, (q15_t)0xa795, (q15_t)0x5c88, (q15_t)0xa790, (q15_t)0x5c84, (q15_t)0xa78c, - (q15_t)0x5c80, (q15_t)0xa787, (q15_t)0x5c7b, (q15_t)0xa783, (q15_t)0x5c77, (q15_t)0xa77e, (q15_t)0x5c73, (q15_t)0xa779, - (q15_t)0x5c6e, (q15_t)0xa775, (q15_t)0x5c6a, (q15_t)0xa770, (q15_t)0x5c66, (q15_t)0xa76c, (q15_t)0x5c61, (q15_t)0xa767, - (q15_t)0x5c5d, (q15_t)0xa763, (q15_t)0x5c58, (q15_t)0xa75e, (q15_t)0x5c54, (q15_t)0xa75a, (q15_t)0x5c50, (q15_t)0xa755, - (q15_t)0x5c4b, (q15_t)0xa751, (q15_t)0x5c47, (q15_t)0xa74c, (q15_t)0x5c43, (q15_t)0xa748, (q15_t)0x5c3e, (q15_t)0xa743, - (q15_t)0x5c3a, (q15_t)0xa73f, (q15_t)0x5c36, (q15_t)0xa73a, (q15_t)0x5c31, (q15_t)0xa735, (q15_t)0x5c2d, (q15_t)0xa731, - (q15_t)0x5c29, (q15_t)0xa72c, (q15_t)0x5c24, (q15_t)0xa728, (q15_t)0x5c20, (q15_t)0xa723, (q15_t)0x5c1b, (q15_t)0xa71f, - (q15_t)0x5c17, (q15_t)0xa71a, (q15_t)0x5c13, (q15_t)0xa716, (q15_t)0x5c0e, (q15_t)0xa711, (q15_t)0x5c0a, (q15_t)0xa70d, - (q15_t)0x5c06, (q15_t)0xa708, (q15_t)0x5c01, (q15_t)0xa704, (q15_t)0x5bfd, (q15_t)0xa6ff, (q15_t)0x5bf9, (q15_t)0xa6fb, - (q15_t)0x5bf4, (q15_t)0xa6f6, (q15_t)0x5bf0, (q15_t)0xa6f2, (q15_t)0x5beb, (q15_t)0xa6ed, (q15_t)0x5be7, (q15_t)0xa6e9, - (q15_t)0x5be3, (q15_t)0xa6e4, (q15_t)0x5bde, (q15_t)0xa6e0, (q15_t)0x5bda, (q15_t)0xa6db, (q15_t)0x5bd6, (q15_t)0xa6d7, - (q15_t)0x5bd1, (q15_t)0xa6d2, (q15_t)0x5bcd, (q15_t)0xa6ce, (q15_t)0x5bc8, (q15_t)0xa6c9, (q15_t)0x5bc4, (q15_t)0xa6c5, - (q15_t)0x5bc0, (q15_t)0xa6c0, (q15_t)0x5bbb, (q15_t)0xa6bc, (q15_t)0x5bb7, (q15_t)0xa6b7, (q15_t)0x5bb2, (q15_t)0xa6b3, - (q15_t)0x5bae, (q15_t)0xa6ae, (q15_t)0x5baa, (q15_t)0xa6aa, (q15_t)0x5ba5, (q15_t)0xa6a5, (q15_t)0x5ba1, (q15_t)0xa6a1, - (q15_t)0x5b9d, (q15_t)0xa69c, (q15_t)0x5b98, (q15_t)0xa698, (q15_t)0x5b94, (q15_t)0xa693, (q15_t)0x5b8f, (q15_t)0xa68f, - (q15_t)0x5b8b, (q15_t)0xa68a, (q15_t)0x5b87, (q15_t)0xa686, (q15_t)0x5b82, (q15_t)0xa681, (q15_t)0x5b7e, (q15_t)0xa67d, - (q15_t)0x5b79, (q15_t)0xa678, (q15_t)0x5b75, (q15_t)0xa674, (q15_t)0x5b71, (q15_t)0xa66f, (q15_t)0x5b6c, (q15_t)0xa66b, - (q15_t)0x5b68, (q15_t)0xa666, (q15_t)0x5b63, (q15_t)0xa662, (q15_t)0x5b5f, (q15_t)0xa65d, (q15_t)0x5b5b, (q15_t)0xa659, - (q15_t)0x5b56, (q15_t)0xa654, (q15_t)0x5b52, (q15_t)0xa650, (q15_t)0x5b4d, (q15_t)0xa64b, (q15_t)0x5b49, (q15_t)0xa647, - (q15_t)0x5b45, (q15_t)0xa642, (q15_t)0x5b40, (q15_t)0xa63e, (q15_t)0x5b3c, (q15_t)0xa639, (q15_t)0x5b37, (q15_t)0xa635, - (q15_t)0x5b33, (q15_t)0xa630, (q15_t)0x5b2f, (q15_t)0xa62c, (q15_t)0x5b2a, (q15_t)0xa627, (q15_t)0x5b26, (q15_t)0xa623, - (q15_t)0x5b21, (q15_t)0xa61f, (q15_t)0x5b1d, (q15_t)0xa61a, (q15_t)0x5b19, (q15_t)0xa616, (q15_t)0x5b14, (q15_t)0xa611, - (q15_t)0x5b10, (q15_t)0xa60d, (q15_t)0x5b0b, (q15_t)0xa608, (q15_t)0x5b07, (q15_t)0xa604, (q15_t)0x5b02, (q15_t)0xa5ff, - (q15_t)0x5afe, (q15_t)0xa5fb, (q15_t)0x5afa, (q15_t)0xa5f6, (q15_t)0x5af5, (q15_t)0xa5f2, (q15_t)0x5af1, (q15_t)0xa5ed, - (q15_t)0x5aec, (q15_t)0xa5e9, (q15_t)0x5ae8, (q15_t)0xa5e4, (q15_t)0x5ae4, (q15_t)0xa5e0, (q15_t)0x5adf, (q15_t)0xa5dc, - (q15_t)0x5adb, (q15_t)0xa5d7, (q15_t)0x5ad6, (q15_t)0xa5d3, (q15_t)0x5ad2, (q15_t)0xa5ce, (q15_t)0x5acd, (q15_t)0xa5ca, - (q15_t)0x5ac9, (q15_t)0xa5c5, (q15_t)0x5ac5, (q15_t)0xa5c1, (q15_t)0x5ac0, (q15_t)0xa5bc, (q15_t)0x5abc, (q15_t)0xa5b8, - (q15_t)0x5ab7, (q15_t)0xa5b3, (q15_t)0x5ab3, (q15_t)0xa5af, (q15_t)0x5aae, (q15_t)0xa5aa, (q15_t)0x5aaa, (q15_t)0xa5a6, - (q15_t)0x5aa5, (q15_t)0xa5a2, (q15_t)0x5aa1, (q15_t)0xa59d, (q15_t)0x5a9d, (q15_t)0xa599, (q15_t)0x5a98, (q15_t)0xa594, - (q15_t)0x5a94, (q15_t)0xa590, (q15_t)0x5a8f, (q15_t)0xa58b, (q15_t)0x5a8b, (q15_t)0xa587, (q15_t)0x5a86, (q15_t)0xa582, - (q15_t)0x5a82, (q15_t)0xa57e, (q15_t)0x5a7e, (q15_t)0xa57a, (q15_t)0x5a79, (q15_t)0xa575, (q15_t)0x5a75, (q15_t)0xa571, - (q15_t)0x5a70, (q15_t)0xa56c, (q15_t)0x5a6c, (q15_t)0xa568, (q15_t)0x5a67, (q15_t)0xa563, (q15_t)0x5a63, (q15_t)0xa55f, - (q15_t)0x5a5e, (q15_t)0xa55b, (q15_t)0x5a5a, (q15_t)0xa556, (q15_t)0x5a56, (q15_t)0xa552, (q15_t)0x5a51, (q15_t)0xa54d, - (q15_t)0x5a4d, (q15_t)0xa549, (q15_t)0x5a48, (q15_t)0xa544, (q15_t)0x5a44, (q15_t)0xa540, (q15_t)0x5a3f, (q15_t)0xa53b, - (q15_t)0x5a3b, (q15_t)0xa537, (q15_t)0x5a36, (q15_t)0xa533, (q15_t)0x5a32, (q15_t)0xa52e, (q15_t)0x5a2d, (q15_t)0xa52a, - (q15_t)0x5a29, (q15_t)0xa525, (q15_t)0x5a24, (q15_t)0xa521, (q15_t)0x5a20, (q15_t)0xa51c, (q15_t)0x5a1c, (q15_t)0xa518, - (q15_t)0x5a17, (q15_t)0xa514, (q15_t)0x5a13, (q15_t)0xa50f, (q15_t)0x5a0e, (q15_t)0xa50b, (q15_t)0x5a0a, (q15_t)0xa506, - (q15_t)0x5a05, (q15_t)0xa502, (q15_t)0x5a01, (q15_t)0xa4fe, (q15_t)0x59fc, (q15_t)0xa4f9, (q15_t)0x59f8, (q15_t)0xa4f5, - (q15_t)0x59f3, (q15_t)0xa4f0, (q15_t)0x59ef, (q15_t)0xa4ec, (q15_t)0x59ea, (q15_t)0xa4e7, (q15_t)0x59e6, (q15_t)0xa4e3, - (q15_t)0x59e1, (q15_t)0xa4df, (q15_t)0x59dd, (q15_t)0xa4da, (q15_t)0x59d9, (q15_t)0xa4d6, (q15_t)0x59d4, (q15_t)0xa4d1, - (q15_t)0x59d0, (q15_t)0xa4cd, (q15_t)0x59cb, (q15_t)0xa4c9, (q15_t)0x59c7, (q15_t)0xa4c4, (q15_t)0x59c2, (q15_t)0xa4c0, - (q15_t)0x59be, (q15_t)0xa4bb, (q15_t)0x59b9, (q15_t)0xa4b7, (q15_t)0x59b5, (q15_t)0xa4b3, (q15_t)0x59b0, (q15_t)0xa4ae, - (q15_t)0x59ac, (q15_t)0xa4aa, (q15_t)0x59a7, (q15_t)0xa4a5, (q15_t)0x59a3, (q15_t)0xa4a1, (q15_t)0x599e, (q15_t)0xa49d, - (q15_t)0x599a, (q15_t)0xa498, (q15_t)0x5995, (q15_t)0xa494, (q15_t)0x5991, (q15_t)0xa48f, (q15_t)0x598c, (q15_t)0xa48b, - (q15_t)0x5988, (q15_t)0xa487, (q15_t)0x5983, (q15_t)0xa482, (q15_t)0x597f, (q15_t)0xa47e, (q15_t)0x597a, (q15_t)0xa479, - (q15_t)0x5976, (q15_t)0xa475, (q15_t)0x5971, (q15_t)0xa471, (q15_t)0x596d, (q15_t)0xa46c, (q15_t)0x5968, (q15_t)0xa468, - (q15_t)0x5964, (q15_t)0xa463, (q15_t)0x595f, (q15_t)0xa45f, (q15_t)0x595b, (q15_t)0xa45b, (q15_t)0x5956, (q15_t)0xa456, - (q15_t)0x5952, (q15_t)0xa452, (q15_t)0x594d, (q15_t)0xa44e, (q15_t)0x5949, (q15_t)0xa449, (q15_t)0x5944, (q15_t)0xa445, - (q15_t)0x5940, (q15_t)0xa440, (q15_t)0x593b, (q15_t)0xa43c, (q15_t)0x5937, (q15_t)0xa438, (q15_t)0x5932, (q15_t)0xa433, - (q15_t)0x592e, (q15_t)0xa42f, (q15_t)0x5929, (q15_t)0xa42a, (q15_t)0x5925, (q15_t)0xa426, (q15_t)0x5920, (q15_t)0xa422, - (q15_t)0x591c, (q15_t)0xa41d, (q15_t)0x5917, (q15_t)0xa419, (q15_t)0x5913, (q15_t)0xa415, (q15_t)0x590e, (q15_t)0xa410, - (q15_t)0x590a, (q15_t)0xa40c, (q15_t)0x5905, (q15_t)0xa407, (q15_t)0x5901, (q15_t)0xa403, (q15_t)0x58fc, (q15_t)0xa3ff, - (q15_t)0x58f8, (q15_t)0xa3fa, (q15_t)0x58f3, (q15_t)0xa3f6, (q15_t)0x58ef, (q15_t)0xa3f2, (q15_t)0x58ea, (q15_t)0xa3ed, - (q15_t)0x58e6, (q15_t)0xa3e9, (q15_t)0x58e1, (q15_t)0xa3e5, (q15_t)0x58dd, (q15_t)0xa3e0, (q15_t)0x58d8, (q15_t)0xa3dc, - (q15_t)0x58d4, (q15_t)0xa3d7, (q15_t)0x58cf, (q15_t)0xa3d3, (q15_t)0x58cb, (q15_t)0xa3cf, (q15_t)0x58c6, (q15_t)0xa3ca, - (q15_t)0x58c1, (q15_t)0xa3c6, (q15_t)0x58bd, (q15_t)0xa3c2, (q15_t)0x58b8, (q15_t)0xa3bd, (q15_t)0x58b4, (q15_t)0xa3b9, - (q15_t)0x58af, (q15_t)0xa3b5, (q15_t)0x58ab, (q15_t)0xa3b0, (q15_t)0x58a6, (q15_t)0xa3ac, (q15_t)0x58a2, (q15_t)0xa3a8, - (q15_t)0x589d, (q15_t)0xa3a3, (q15_t)0x5899, (q15_t)0xa39f, (q15_t)0x5894, (q15_t)0xa39a, (q15_t)0x5890, (q15_t)0xa396, - (q15_t)0x588b, (q15_t)0xa392, (q15_t)0x5887, (q15_t)0xa38d, (q15_t)0x5882, (q15_t)0xa389, (q15_t)0x587d, (q15_t)0xa385, - (q15_t)0x5879, (q15_t)0xa380, (q15_t)0x5874, (q15_t)0xa37c, (q15_t)0x5870, (q15_t)0xa378, (q15_t)0x586b, (q15_t)0xa373, - (q15_t)0x5867, (q15_t)0xa36f, (q15_t)0x5862, (q15_t)0xa36b, (q15_t)0x585e, (q15_t)0xa366, (q15_t)0x5859, (q15_t)0xa362, - (q15_t)0x5855, (q15_t)0xa35e, (q15_t)0x5850, (q15_t)0xa359, (q15_t)0x584b, (q15_t)0xa355, (q15_t)0x5847, (q15_t)0xa351, - (q15_t)0x5842, (q15_t)0xa34c, (q15_t)0x583e, (q15_t)0xa348, (q15_t)0x5839, (q15_t)0xa344, (q15_t)0x5835, (q15_t)0xa33f, - (q15_t)0x5830, (q15_t)0xa33b, (q15_t)0x582c, (q15_t)0xa337, (q15_t)0x5827, (q15_t)0xa332, (q15_t)0x5822, (q15_t)0xa32e, - (q15_t)0x581e, (q15_t)0xa32a, (q15_t)0x5819, (q15_t)0xa325, (q15_t)0x5815, (q15_t)0xa321, (q15_t)0x5810, (q15_t)0xa31d, - (q15_t)0x580c, (q15_t)0xa318, (q15_t)0x5807, (q15_t)0xa314, (q15_t)0x5803, (q15_t)0xa310, (q15_t)0x57fe, (q15_t)0xa30b, - (q15_t)0x57f9, (q15_t)0xa307, (q15_t)0x57f5, (q15_t)0xa303, (q15_t)0x57f0, (q15_t)0xa2ff, (q15_t)0x57ec, (q15_t)0xa2fa, - (q15_t)0x57e7, (q15_t)0xa2f6, (q15_t)0x57e3, (q15_t)0xa2f2, (q15_t)0x57de, (q15_t)0xa2ed, (q15_t)0x57d9, (q15_t)0xa2e9, - (q15_t)0x57d5, (q15_t)0xa2e5, (q15_t)0x57d0, (q15_t)0xa2e0, (q15_t)0x57cc, (q15_t)0xa2dc, (q15_t)0x57c7, (q15_t)0xa2d8, - (q15_t)0x57c3, (q15_t)0xa2d3, (q15_t)0x57be, (q15_t)0xa2cf, (q15_t)0x57b9, (q15_t)0xa2cb, (q15_t)0x57b5, (q15_t)0xa2c6, - (q15_t)0x57b0, (q15_t)0xa2c2, (q15_t)0x57ac, (q15_t)0xa2be, (q15_t)0x57a7, (q15_t)0xa2ba, (q15_t)0x57a3, (q15_t)0xa2b5, - (q15_t)0x579e, (q15_t)0xa2b1, (q15_t)0x5799, (q15_t)0xa2ad, (q15_t)0x5795, (q15_t)0xa2a8, (q15_t)0x5790, (q15_t)0xa2a4, - (q15_t)0x578c, (q15_t)0xa2a0, (q15_t)0x5787, (q15_t)0xa29b, (q15_t)0x5783, (q15_t)0xa297, (q15_t)0x577e, (q15_t)0xa293, - (q15_t)0x5779, (q15_t)0xa28f, (q15_t)0x5775, (q15_t)0xa28a, (q15_t)0x5770, (q15_t)0xa286, (q15_t)0x576c, (q15_t)0xa282, - (q15_t)0x5767, (q15_t)0xa27d, (q15_t)0x5762, (q15_t)0xa279, (q15_t)0x575e, (q15_t)0xa275, (q15_t)0x5759, (q15_t)0xa271, - (q15_t)0x5755, (q15_t)0xa26c, (q15_t)0x5750, (q15_t)0xa268, (q15_t)0x574b, (q15_t)0xa264, (q15_t)0x5747, (q15_t)0xa25f, - (q15_t)0x5742, (q15_t)0xa25b, (q15_t)0x573e, (q15_t)0xa257, (q15_t)0x5739, (q15_t)0xa253, (q15_t)0x5734, (q15_t)0xa24e, - (q15_t)0x5730, (q15_t)0xa24a, (q15_t)0x572b, (q15_t)0xa246, (q15_t)0x5727, (q15_t)0xa241, (q15_t)0x5722, (q15_t)0xa23d, - (q15_t)0x571d, (q15_t)0xa239, (q15_t)0x5719, (q15_t)0xa235, (q15_t)0x5714, (q15_t)0xa230, (q15_t)0x5710, (q15_t)0xa22c, - (q15_t)0x570b, (q15_t)0xa228, (q15_t)0x5706, (q15_t)0xa224, (q15_t)0x5702, (q15_t)0xa21f, (q15_t)0x56fd, (q15_t)0xa21b, - (q15_t)0x56f9, (q15_t)0xa217, (q15_t)0x56f4, (q15_t)0xa212, (q15_t)0x56ef, (q15_t)0xa20e, (q15_t)0x56eb, (q15_t)0xa20a, - (q15_t)0x56e6, (q15_t)0xa206, (q15_t)0x56e2, (q15_t)0xa201, (q15_t)0x56dd, (q15_t)0xa1fd, (q15_t)0x56d8, (q15_t)0xa1f9, - (q15_t)0x56d4, (q15_t)0xa1f5, (q15_t)0x56cf, (q15_t)0xa1f0, (q15_t)0x56ca, (q15_t)0xa1ec, (q15_t)0x56c6, (q15_t)0xa1e8, - (q15_t)0x56c1, (q15_t)0xa1e4, (q15_t)0x56bd, (q15_t)0xa1df, (q15_t)0x56b8, (q15_t)0xa1db, (q15_t)0x56b3, (q15_t)0xa1d7, - (q15_t)0x56af, (q15_t)0xa1d3, (q15_t)0x56aa, (q15_t)0xa1ce, (q15_t)0x56a5, (q15_t)0xa1ca, (q15_t)0x56a1, (q15_t)0xa1c6, - (q15_t)0x569c, (q15_t)0xa1c1, (q15_t)0x5698, (q15_t)0xa1bd, (q15_t)0x5693, (q15_t)0xa1b9, (q15_t)0x568e, (q15_t)0xa1b5, - (q15_t)0x568a, (q15_t)0xa1b0, (q15_t)0x5685, (q15_t)0xa1ac, (q15_t)0x5680, (q15_t)0xa1a8, (q15_t)0x567c, (q15_t)0xa1a4, - (q15_t)0x5677, (q15_t)0xa1a0, (q15_t)0x5673, (q15_t)0xa19b, (q15_t)0x566e, (q15_t)0xa197, (q15_t)0x5669, (q15_t)0xa193, - (q15_t)0x5665, (q15_t)0xa18f, (q15_t)0x5660, (q15_t)0xa18a, (q15_t)0x565b, (q15_t)0xa186, (q15_t)0x5657, (q15_t)0xa182, - (q15_t)0x5652, (q15_t)0xa17e, (q15_t)0x564d, (q15_t)0xa179, (q15_t)0x5649, (q15_t)0xa175, (q15_t)0x5644, (q15_t)0xa171, - (q15_t)0x5640, (q15_t)0xa16d, (q15_t)0x563b, (q15_t)0xa168, (q15_t)0x5636, (q15_t)0xa164, (q15_t)0x5632, (q15_t)0xa160, - (q15_t)0x562d, (q15_t)0xa15c, (q15_t)0x5628, (q15_t)0xa157, (q15_t)0x5624, (q15_t)0xa153, (q15_t)0x561f, (q15_t)0xa14f, - (q15_t)0x561a, (q15_t)0xa14b, (q15_t)0x5616, (q15_t)0xa147, (q15_t)0x5611, (q15_t)0xa142, (q15_t)0x560c, (q15_t)0xa13e, - (q15_t)0x5608, (q15_t)0xa13a, (q15_t)0x5603, (q15_t)0xa136, (q15_t)0x55fe, (q15_t)0xa131, (q15_t)0x55fa, (q15_t)0xa12d, - (q15_t)0x55f5, (q15_t)0xa129, (q15_t)0x55f0, (q15_t)0xa125, (q15_t)0x55ec, (q15_t)0xa121, (q15_t)0x55e7, (q15_t)0xa11c, - (q15_t)0x55e3, (q15_t)0xa118, (q15_t)0x55de, (q15_t)0xa114, (q15_t)0x55d9, (q15_t)0xa110, (q15_t)0x55d5, (q15_t)0xa10b, - (q15_t)0x55d0, (q15_t)0xa107, (q15_t)0x55cb, (q15_t)0xa103, (q15_t)0x55c7, (q15_t)0xa0ff, (q15_t)0x55c2, (q15_t)0xa0fb, - (q15_t)0x55bd, (q15_t)0xa0f6, (q15_t)0x55b9, (q15_t)0xa0f2, (q15_t)0x55b4, (q15_t)0xa0ee, (q15_t)0x55af, (q15_t)0xa0ea, - (q15_t)0x55ab, (q15_t)0xa0e6, (q15_t)0x55a6, (q15_t)0xa0e1, (q15_t)0x55a1, (q15_t)0xa0dd, (q15_t)0x559d, (q15_t)0xa0d9, - (q15_t)0x5598, (q15_t)0xa0d5, (q15_t)0x5593, (q15_t)0xa0d1, (q15_t)0x558f, (q15_t)0xa0cc, (q15_t)0x558a, (q15_t)0xa0c8, - (q15_t)0x5585, (q15_t)0xa0c4, (q15_t)0x5581, (q15_t)0xa0c0, (q15_t)0x557c, (q15_t)0xa0bc, (q15_t)0x5577, (q15_t)0xa0b7, - (q15_t)0x5572, (q15_t)0xa0b3, (q15_t)0x556e, (q15_t)0xa0af, (q15_t)0x5569, (q15_t)0xa0ab, (q15_t)0x5564, (q15_t)0xa0a7, - (q15_t)0x5560, (q15_t)0xa0a2, (q15_t)0x555b, (q15_t)0xa09e, (q15_t)0x5556, (q15_t)0xa09a, (q15_t)0x5552, (q15_t)0xa096, - (q15_t)0x554d, (q15_t)0xa092, (q15_t)0x5548, (q15_t)0xa08e, (q15_t)0x5544, (q15_t)0xa089, (q15_t)0x553f, (q15_t)0xa085, - (q15_t)0x553a, (q15_t)0xa081, (q15_t)0x5536, (q15_t)0xa07d, (q15_t)0x5531, (q15_t)0xa079, (q15_t)0x552c, (q15_t)0xa074, - (q15_t)0x5528, (q15_t)0xa070, (q15_t)0x5523, (q15_t)0xa06c, (q15_t)0x551e, (q15_t)0xa068, (q15_t)0x5519, (q15_t)0xa064, - (q15_t)0x5515, (q15_t)0xa060, (q15_t)0x5510, (q15_t)0xa05b, (q15_t)0x550b, (q15_t)0xa057, (q15_t)0x5507, (q15_t)0xa053, - (q15_t)0x5502, (q15_t)0xa04f, (q15_t)0x54fd, (q15_t)0xa04b, (q15_t)0x54f9, (q15_t)0xa046, (q15_t)0x54f4, (q15_t)0xa042, - (q15_t)0x54ef, (q15_t)0xa03e, (q15_t)0x54ea, (q15_t)0xa03a, (q15_t)0x54e6, (q15_t)0xa036, (q15_t)0x54e1, (q15_t)0xa032, - (q15_t)0x54dc, (q15_t)0xa02d, (q15_t)0x54d8, (q15_t)0xa029, (q15_t)0x54d3, (q15_t)0xa025, (q15_t)0x54ce, (q15_t)0xa021, - (q15_t)0x54ca, (q15_t)0xa01d, (q15_t)0x54c5, (q15_t)0xa019, (q15_t)0x54c0, (q15_t)0xa014, (q15_t)0x54bb, (q15_t)0xa010, - (q15_t)0x54b7, (q15_t)0xa00c, (q15_t)0x54b2, (q15_t)0xa008, (q15_t)0x54ad, (q15_t)0xa004, (q15_t)0x54a9, (q15_t)0xa000, - (q15_t)0x54a4, (q15_t)0x9ffc, (q15_t)0x549f, (q15_t)0x9ff7, (q15_t)0x549a, (q15_t)0x9ff3, (q15_t)0x5496, (q15_t)0x9fef, - (q15_t)0x5491, (q15_t)0x9feb, (q15_t)0x548c, (q15_t)0x9fe7, (q15_t)0x5488, (q15_t)0x9fe3, (q15_t)0x5483, (q15_t)0x9fde, - (q15_t)0x547e, (q15_t)0x9fda, (q15_t)0x5479, (q15_t)0x9fd6, (q15_t)0x5475, (q15_t)0x9fd2, (q15_t)0x5470, (q15_t)0x9fce, - (q15_t)0x546b, (q15_t)0x9fca, (q15_t)0x5467, (q15_t)0x9fc6, (q15_t)0x5462, (q15_t)0x9fc1, (q15_t)0x545d, (q15_t)0x9fbd, - (q15_t)0x5458, (q15_t)0x9fb9, (q15_t)0x5454, (q15_t)0x9fb5, (q15_t)0x544f, (q15_t)0x9fb1, (q15_t)0x544a, (q15_t)0x9fad, - (q15_t)0x5445, (q15_t)0x9fa9, (q15_t)0x5441, (q15_t)0x9fa4, (q15_t)0x543c, (q15_t)0x9fa0, (q15_t)0x5437, (q15_t)0x9f9c, - (q15_t)0x5433, (q15_t)0x9f98, (q15_t)0x542e, (q15_t)0x9f94, (q15_t)0x5429, (q15_t)0x9f90, (q15_t)0x5424, (q15_t)0x9f8c, - (q15_t)0x5420, (q15_t)0x9f88, (q15_t)0x541b, (q15_t)0x9f83, (q15_t)0x5416, (q15_t)0x9f7f, (q15_t)0x5411, (q15_t)0x9f7b, - (q15_t)0x540d, (q15_t)0x9f77, (q15_t)0x5408, (q15_t)0x9f73, (q15_t)0x5403, (q15_t)0x9f6f, (q15_t)0x53fe, (q15_t)0x9f6b, - (q15_t)0x53fa, (q15_t)0x9f67, (q15_t)0x53f5, (q15_t)0x9f62, (q15_t)0x53f0, (q15_t)0x9f5e, (q15_t)0x53eb, (q15_t)0x9f5a, - (q15_t)0x53e7, (q15_t)0x9f56, (q15_t)0x53e2, (q15_t)0x9f52, (q15_t)0x53dd, (q15_t)0x9f4e, (q15_t)0x53d8, (q15_t)0x9f4a, - (q15_t)0x53d4, (q15_t)0x9f46, (q15_t)0x53cf, (q15_t)0x9f41, (q15_t)0x53ca, (q15_t)0x9f3d, (q15_t)0x53c5, (q15_t)0x9f39, - (q15_t)0x53c1, (q15_t)0x9f35, (q15_t)0x53bc, (q15_t)0x9f31, (q15_t)0x53b7, (q15_t)0x9f2d, (q15_t)0x53b2, (q15_t)0x9f29, - (q15_t)0x53ae, (q15_t)0x9f25, (q15_t)0x53a9, (q15_t)0x9f21, (q15_t)0x53a4, (q15_t)0x9f1c, (q15_t)0x539f, (q15_t)0x9f18, - (q15_t)0x539b, (q15_t)0x9f14, (q15_t)0x5396, (q15_t)0x9f10, (q15_t)0x5391, (q15_t)0x9f0c, (q15_t)0x538c, (q15_t)0x9f08, - (q15_t)0x5388, (q15_t)0x9f04, (q15_t)0x5383, (q15_t)0x9f00, (q15_t)0x537e, (q15_t)0x9efc, (q15_t)0x5379, (q15_t)0x9ef8, - (q15_t)0x5375, (q15_t)0x9ef3, (q15_t)0x5370, (q15_t)0x9eef, (q15_t)0x536b, (q15_t)0x9eeb, (q15_t)0x5366, (q15_t)0x9ee7, - (q15_t)0x5362, (q15_t)0x9ee3, (q15_t)0x535d, (q15_t)0x9edf, (q15_t)0x5358, (q15_t)0x9edb, (q15_t)0x5353, (q15_t)0x9ed7, - (q15_t)0x534e, (q15_t)0x9ed3, (q15_t)0x534a, (q15_t)0x9ecf, (q15_t)0x5345, (q15_t)0x9ecb, (q15_t)0x5340, (q15_t)0x9ec6, - (q15_t)0x533b, (q15_t)0x9ec2, (q15_t)0x5337, (q15_t)0x9ebe, (q15_t)0x5332, (q15_t)0x9eba, (q15_t)0x532d, (q15_t)0x9eb6, - (q15_t)0x5328, (q15_t)0x9eb2, (q15_t)0x5323, (q15_t)0x9eae, (q15_t)0x531f, (q15_t)0x9eaa, (q15_t)0x531a, (q15_t)0x9ea6, - (q15_t)0x5315, (q15_t)0x9ea2, (q15_t)0x5310, (q15_t)0x9e9e, (q15_t)0x530c, (q15_t)0x9e9a, (q15_t)0x5307, (q15_t)0x9e95, - (q15_t)0x5302, (q15_t)0x9e91, (q15_t)0x52fd, (q15_t)0x9e8d, (q15_t)0x52f8, (q15_t)0x9e89, (q15_t)0x52f4, (q15_t)0x9e85, - (q15_t)0x52ef, (q15_t)0x9e81, (q15_t)0x52ea, (q15_t)0x9e7d, (q15_t)0x52e5, (q15_t)0x9e79, (q15_t)0x52e1, (q15_t)0x9e75, - (q15_t)0x52dc, (q15_t)0x9e71, (q15_t)0x52d7, (q15_t)0x9e6d, (q15_t)0x52d2, (q15_t)0x9e69, (q15_t)0x52cd, (q15_t)0x9e65, - (q15_t)0x52c9, (q15_t)0x9e61, (q15_t)0x52c4, (q15_t)0x9e5d, (q15_t)0x52bf, (q15_t)0x9e58, (q15_t)0x52ba, (q15_t)0x9e54, - (q15_t)0x52b5, (q15_t)0x9e50, (q15_t)0x52b1, (q15_t)0x9e4c, (q15_t)0x52ac, (q15_t)0x9e48, (q15_t)0x52a7, (q15_t)0x9e44, - (q15_t)0x52a2, (q15_t)0x9e40, (q15_t)0x529d, (q15_t)0x9e3c, (q15_t)0x5299, (q15_t)0x9e38, (q15_t)0x5294, (q15_t)0x9e34, - (q15_t)0x528f, (q15_t)0x9e30, (q15_t)0x528a, (q15_t)0x9e2c, (q15_t)0x5285, (q15_t)0x9e28, (q15_t)0x5281, (q15_t)0x9e24, - (q15_t)0x527c, (q15_t)0x9e20, (q15_t)0x5277, (q15_t)0x9e1c, (q15_t)0x5272, (q15_t)0x9e18, (q15_t)0x526d, (q15_t)0x9e14, - (q15_t)0x5269, (q15_t)0x9e0f, (q15_t)0x5264, (q15_t)0x9e0b, (q15_t)0x525f, (q15_t)0x9e07, (q15_t)0x525a, (q15_t)0x9e03, - (q15_t)0x5255, (q15_t)0x9dff, (q15_t)0x5251, (q15_t)0x9dfb, (q15_t)0x524c, (q15_t)0x9df7, (q15_t)0x5247, (q15_t)0x9df3, - (q15_t)0x5242, (q15_t)0x9def, (q15_t)0x523d, (q15_t)0x9deb, (q15_t)0x5238, (q15_t)0x9de7, (q15_t)0x5234, (q15_t)0x9de3, - (q15_t)0x522f, (q15_t)0x9ddf, (q15_t)0x522a, (q15_t)0x9ddb, (q15_t)0x5225, (q15_t)0x9dd7, (q15_t)0x5220, (q15_t)0x9dd3, - (q15_t)0x521c, (q15_t)0x9dcf, (q15_t)0x5217, (q15_t)0x9dcb, (q15_t)0x5212, (q15_t)0x9dc7, (q15_t)0x520d, (q15_t)0x9dc3, - (q15_t)0x5208, (q15_t)0x9dbf, (q15_t)0x5203, (q15_t)0x9dbb, (q15_t)0x51ff, (q15_t)0x9db7, (q15_t)0x51fa, (q15_t)0x9db3, - (q15_t)0x51f5, (q15_t)0x9daf, (q15_t)0x51f0, (q15_t)0x9dab, (q15_t)0x51eb, (q15_t)0x9da7, (q15_t)0x51e6, (q15_t)0x9da3, - (q15_t)0x51e2, (q15_t)0x9d9f, (q15_t)0x51dd, (q15_t)0x9d9b, (q15_t)0x51d8, (q15_t)0x9d97, (q15_t)0x51d3, (q15_t)0x9d93, - (q15_t)0x51ce, (q15_t)0x9d8f, (q15_t)0x51c9, (q15_t)0x9d8b, (q15_t)0x51c5, (q15_t)0x9d86, (q15_t)0x51c0, (q15_t)0x9d82, - (q15_t)0x51bb, (q15_t)0x9d7e, (q15_t)0x51b6, (q15_t)0x9d7a, (q15_t)0x51b1, (q15_t)0x9d76, (q15_t)0x51ac, (q15_t)0x9d72, - (q15_t)0x51a8, (q15_t)0x9d6e, (q15_t)0x51a3, (q15_t)0x9d6a, (q15_t)0x519e, (q15_t)0x9d66, (q15_t)0x5199, (q15_t)0x9d62, - (q15_t)0x5194, (q15_t)0x9d5e, (q15_t)0x518f, (q15_t)0x9d5a, (q15_t)0x518b, (q15_t)0x9d56, (q15_t)0x5186, (q15_t)0x9d52, - (q15_t)0x5181, (q15_t)0x9d4e, (q15_t)0x517c, (q15_t)0x9d4a, (q15_t)0x5177, (q15_t)0x9d46, (q15_t)0x5172, (q15_t)0x9d42, - (q15_t)0x516e, (q15_t)0x9d3e, (q15_t)0x5169, (q15_t)0x9d3a, (q15_t)0x5164, (q15_t)0x9d36, (q15_t)0x515f, (q15_t)0x9d32, - (q15_t)0x515a, (q15_t)0x9d2e, (q15_t)0x5155, (q15_t)0x9d2a, (q15_t)0x5150, (q15_t)0x9d26, (q15_t)0x514c, (q15_t)0x9d22, - (q15_t)0x5147, (q15_t)0x9d1e, (q15_t)0x5142, (q15_t)0x9d1a, (q15_t)0x513d, (q15_t)0x9d16, (q15_t)0x5138, (q15_t)0x9d12, - (q15_t)0x5133, (q15_t)0x9d0e, (q15_t)0x512e, (q15_t)0x9d0b, (q15_t)0x512a, (q15_t)0x9d07, (q15_t)0x5125, (q15_t)0x9d03, - (q15_t)0x5120, (q15_t)0x9cff, (q15_t)0x511b, (q15_t)0x9cfb, (q15_t)0x5116, (q15_t)0x9cf7, (q15_t)0x5111, (q15_t)0x9cf3, - (q15_t)0x510c, (q15_t)0x9cef, (q15_t)0x5108, (q15_t)0x9ceb, (q15_t)0x5103, (q15_t)0x9ce7, (q15_t)0x50fe, (q15_t)0x9ce3, - (q15_t)0x50f9, (q15_t)0x9cdf, (q15_t)0x50f4, (q15_t)0x9cdb, (q15_t)0x50ef, (q15_t)0x9cd7, (q15_t)0x50ea, (q15_t)0x9cd3, - (q15_t)0x50e5, (q15_t)0x9ccf, (q15_t)0x50e1, (q15_t)0x9ccb, (q15_t)0x50dc, (q15_t)0x9cc7, (q15_t)0x50d7, (q15_t)0x9cc3, - (q15_t)0x50d2, (q15_t)0x9cbf, (q15_t)0x50cd, (q15_t)0x9cbb, (q15_t)0x50c8, (q15_t)0x9cb7, (q15_t)0x50c3, (q15_t)0x9cb3, - (q15_t)0x50bf, (q15_t)0x9caf, (q15_t)0x50ba, (q15_t)0x9cab, (q15_t)0x50b5, (q15_t)0x9ca7, (q15_t)0x50b0, (q15_t)0x9ca3, - (q15_t)0x50ab, (q15_t)0x9c9f, (q15_t)0x50a6, (q15_t)0x9c9b, (q15_t)0x50a1, (q15_t)0x9c97, (q15_t)0x509c, (q15_t)0x9c93, - (q15_t)0x5097, (q15_t)0x9c8f, (q15_t)0x5093, (q15_t)0x9c8b, (q15_t)0x508e, (q15_t)0x9c88, (q15_t)0x5089, (q15_t)0x9c84, - (q15_t)0x5084, (q15_t)0x9c80, (q15_t)0x507f, (q15_t)0x9c7c, (q15_t)0x507a, (q15_t)0x9c78, (q15_t)0x5075, (q15_t)0x9c74, - (q15_t)0x5070, (q15_t)0x9c70, (q15_t)0x506c, (q15_t)0x9c6c, (q15_t)0x5067, (q15_t)0x9c68, (q15_t)0x5062, (q15_t)0x9c64, - (q15_t)0x505d, (q15_t)0x9c60, (q15_t)0x5058, (q15_t)0x9c5c, (q15_t)0x5053, (q15_t)0x9c58, (q15_t)0x504e, (q15_t)0x9c54, - (q15_t)0x5049, (q15_t)0x9c50, (q15_t)0x5044, (q15_t)0x9c4c, (q15_t)0x503f, (q15_t)0x9c48, (q15_t)0x503b, (q15_t)0x9c44, - (q15_t)0x5036, (q15_t)0x9c40, (q15_t)0x5031, (q15_t)0x9c3d, (q15_t)0x502c, (q15_t)0x9c39, (q15_t)0x5027, (q15_t)0x9c35, - (q15_t)0x5022, (q15_t)0x9c31, (q15_t)0x501d, (q15_t)0x9c2d, (q15_t)0x5018, (q15_t)0x9c29, (q15_t)0x5013, (q15_t)0x9c25, - (q15_t)0x500f, (q15_t)0x9c21, (q15_t)0x500a, (q15_t)0x9c1d, (q15_t)0x5005, (q15_t)0x9c19, (q15_t)0x5000, (q15_t)0x9c15, - (q15_t)0x4ffb, (q15_t)0x9c11, (q15_t)0x4ff6, (q15_t)0x9c0d, (q15_t)0x4ff1, (q15_t)0x9c09, (q15_t)0x4fec, (q15_t)0x9c06, - (q15_t)0x4fe7, (q15_t)0x9c02, (q15_t)0x4fe2, (q15_t)0x9bfe, (q15_t)0x4fdd, (q15_t)0x9bfa, (q15_t)0x4fd9, (q15_t)0x9bf6, - (q15_t)0x4fd4, (q15_t)0x9bf2, (q15_t)0x4fcf, (q15_t)0x9bee, (q15_t)0x4fca, (q15_t)0x9bea, (q15_t)0x4fc5, (q15_t)0x9be6, - (q15_t)0x4fc0, (q15_t)0x9be2, (q15_t)0x4fbb, (q15_t)0x9bde, (q15_t)0x4fb6, (q15_t)0x9bda, (q15_t)0x4fb1, (q15_t)0x9bd7, - (q15_t)0x4fac, (q15_t)0x9bd3, (q15_t)0x4fa7, (q15_t)0x9bcf, (q15_t)0x4fa2, (q15_t)0x9bcb, (q15_t)0x4f9e, (q15_t)0x9bc7, - (q15_t)0x4f99, (q15_t)0x9bc3, (q15_t)0x4f94, (q15_t)0x9bbf, (q15_t)0x4f8f, (q15_t)0x9bbb, (q15_t)0x4f8a, (q15_t)0x9bb7, - (q15_t)0x4f85, (q15_t)0x9bb3, (q15_t)0x4f80, (q15_t)0x9baf, (q15_t)0x4f7b, (q15_t)0x9bac, (q15_t)0x4f76, (q15_t)0x9ba8, - (q15_t)0x4f71, (q15_t)0x9ba4, (q15_t)0x4f6c, (q15_t)0x9ba0, (q15_t)0x4f67, (q15_t)0x9b9c, (q15_t)0x4f62, (q15_t)0x9b98, - (q15_t)0x4f5e, (q15_t)0x9b94, (q15_t)0x4f59, (q15_t)0x9b90, (q15_t)0x4f54, (q15_t)0x9b8c, (q15_t)0x4f4f, (q15_t)0x9b88, - (q15_t)0x4f4a, (q15_t)0x9b85, (q15_t)0x4f45, (q15_t)0x9b81, (q15_t)0x4f40, (q15_t)0x9b7d, (q15_t)0x4f3b, (q15_t)0x9b79, - (q15_t)0x4f36, (q15_t)0x9b75, (q15_t)0x4f31, (q15_t)0x9b71, (q15_t)0x4f2c, (q15_t)0x9b6d, (q15_t)0x4f27, (q15_t)0x9b69, - (q15_t)0x4f22, (q15_t)0x9b65, (q15_t)0x4f1d, (q15_t)0x9b62, (q15_t)0x4f18, (q15_t)0x9b5e, (q15_t)0x4f14, (q15_t)0x9b5a, - (q15_t)0x4f0f, (q15_t)0x9b56, (q15_t)0x4f0a, (q15_t)0x9b52, (q15_t)0x4f05, (q15_t)0x9b4e, (q15_t)0x4f00, (q15_t)0x9b4a, - (q15_t)0x4efb, (q15_t)0x9b46, (q15_t)0x4ef6, (q15_t)0x9b43, (q15_t)0x4ef1, (q15_t)0x9b3f, (q15_t)0x4eec, (q15_t)0x9b3b, - (q15_t)0x4ee7, (q15_t)0x9b37, (q15_t)0x4ee2, (q15_t)0x9b33, (q15_t)0x4edd, (q15_t)0x9b2f, (q15_t)0x4ed8, (q15_t)0x9b2b, - (q15_t)0x4ed3, (q15_t)0x9b27, (q15_t)0x4ece, (q15_t)0x9b24, (q15_t)0x4ec9, (q15_t)0x9b20, (q15_t)0x4ec4, (q15_t)0x9b1c, - (q15_t)0x4ebf, (q15_t)0x9b18, (q15_t)0x4eba, (q15_t)0x9b14, (q15_t)0x4eb6, (q15_t)0x9b10, (q15_t)0x4eb1, (q15_t)0x9b0c, - (q15_t)0x4eac, (q15_t)0x9b09, (q15_t)0x4ea7, (q15_t)0x9b05, (q15_t)0x4ea2, (q15_t)0x9b01, (q15_t)0x4e9d, (q15_t)0x9afd, - (q15_t)0x4e98, (q15_t)0x9af9, (q15_t)0x4e93, (q15_t)0x9af5, (q15_t)0x4e8e, (q15_t)0x9af1, (q15_t)0x4e89, (q15_t)0x9aed, - (q15_t)0x4e84, (q15_t)0x9aea, (q15_t)0x4e7f, (q15_t)0x9ae6, (q15_t)0x4e7a, (q15_t)0x9ae2, (q15_t)0x4e75, (q15_t)0x9ade, - (q15_t)0x4e70, (q15_t)0x9ada, (q15_t)0x4e6b, (q15_t)0x9ad6, (q15_t)0x4e66, (q15_t)0x9ad3, (q15_t)0x4e61, (q15_t)0x9acf, - (q15_t)0x4e5c, (q15_t)0x9acb, (q15_t)0x4e57, (q15_t)0x9ac7, (q15_t)0x4e52, (q15_t)0x9ac3, (q15_t)0x4e4d, (q15_t)0x9abf, - (q15_t)0x4e48, (q15_t)0x9abb, (q15_t)0x4e43, (q15_t)0x9ab8, (q15_t)0x4e3e, (q15_t)0x9ab4, (q15_t)0x4e39, (q15_t)0x9ab0, - (q15_t)0x4e34, (q15_t)0x9aac, (q15_t)0x4e2f, (q15_t)0x9aa8, (q15_t)0x4e2a, (q15_t)0x9aa4, (q15_t)0x4e26, (q15_t)0x9aa1, - (q15_t)0x4e21, (q15_t)0x9a9d, (q15_t)0x4e1c, (q15_t)0x9a99, (q15_t)0x4e17, (q15_t)0x9a95, (q15_t)0x4e12, (q15_t)0x9a91, - (q15_t)0x4e0d, (q15_t)0x9a8d, (q15_t)0x4e08, (q15_t)0x9a8a, (q15_t)0x4e03, (q15_t)0x9a86, (q15_t)0x4dfe, (q15_t)0x9a82, - (q15_t)0x4df9, (q15_t)0x9a7e, (q15_t)0x4df4, (q15_t)0x9a7a, (q15_t)0x4def, (q15_t)0x9a76, (q15_t)0x4dea, (q15_t)0x9a73, - (q15_t)0x4de5, (q15_t)0x9a6f, (q15_t)0x4de0, (q15_t)0x9a6b, (q15_t)0x4ddb, (q15_t)0x9a67, (q15_t)0x4dd6, (q15_t)0x9a63, - (q15_t)0x4dd1, (q15_t)0x9a60, (q15_t)0x4dcc, (q15_t)0x9a5c, (q15_t)0x4dc7, (q15_t)0x9a58, (q15_t)0x4dc2, (q15_t)0x9a54, - (q15_t)0x4dbd, (q15_t)0x9a50, (q15_t)0x4db8, (q15_t)0x9a4c, (q15_t)0x4db3, (q15_t)0x9a49, (q15_t)0x4dae, (q15_t)0x9a45, - (q15_t)0x4da9, (q15_t)0x9a41, (q15_t)0x4da4, (q15_t)0x9a3d, (q15_t)0x4d9f, (q15_t)0x9a39, (q15_t)0x4d9a, (q15_t)0x9a36, - (q15_t)0x4d95, (q15_t)0x9a32, (q15_t)0x4d90, (q15_t)0x9a2e, (q15_t)0x4d8b, (q15_t)0x9a2a, (q15_t)0x4d86, (q15_t)0x9a26, - (q15_t)0x4d81, (q15_t)0x9a23, (q15_t)0x4d7c, (q15_t)0x9a1f, (q15_t)0x4d77, (q15_t)0x9a1b, (q15_t)0x4d72, (q15_t)0x9a17, - (q15_t)0x4d6d, (q15_t)0x9a13, (q15_t)0x4d68, (q15_t)0x9a10, (q15_t)0x4d63, (q15_t)0x9a0c, (q15_t)0x4d5e, (q15_t)0x9a08, - (q15_t)0x4d59, (q15_t)0x9a04, (q15_t)0x4d54, (q15_t)0x9a00, (q15_t)0x4d4f, (q15_t)0x99fd, (q15_t)0x4d4a, (q15_t)0x99f9, - (q15_t)0x4d45, (q15_t)0x99f5, (q15_t)0x4d40, (q15_t)0x99f1, (q15_t)0x4d3b, (q15_t)0x99ed, (q15_t)0x4d36, (q15_t)0x99ea, - (q15_t)0x4d31, (q15_t)0x99e6, (q15_t)0x4d2c, (q15_t)0x99e2, (q15_t)0x4d27, (q15_t)0x99de, (q15_t)0x4d22, (q15_t)0x99da, - (q15_t)0x4d1d, (q15_t)0x99d7, (q15_t)0x4d18, (q15_t)0x99d3, (q15_t)0x4d13, (q15_t)0x99cf, (q15_t)0x4d0e, (q15_t)0x99cb, - (q15_t)0x4d09, (q15_t)0x99c7, (q15_t)0x4d04, (q15_t)0x99c4, (q15_t)0x4cff, (q15_t)0x99c0, (q15_t)0x4cfa, (q15_t)0x99bc, - (q15_t)0x4cf5, (q15_t)0x99b8, (q15_t)0x4cf0, (q15_t)0x99b5, (q15_t)0x4ceb, (q15_t)0x99b1, (q15_t)0x4ce6, (q15_t)0x99ad, - (q15_t)0x4ce1, (q15_t)0x99a9, (q15_t)0x4cdb, (q15_t)0x99a5, (q15_t)0x4cd6, (q15_t)0x99a2, (q15_t)0x4cd1, (q15_t)0x999e, - (q15_t)0x4ccc, (q15_t)0x999a, (q15_t)0x4cc7, (q15_t)0x9996, (q15_t)0x4cc2, (q15_t)0x9993, (q15_t)0x4cbd, (q15_t)0x998f, - (q15_t)0x4cb8, (q15_t)0x998b, (q15_t)0x4cb3, (q15_t)0x9987, (q15_t)0x4cae, (q15_t)0x9984, (q15_t)0x4ca9, (q15_t)0x9980, - (q15_t)0x4ca4, (q15_t)0x997c, (q15_t)0x4c9f, (q15_t)0x9978, (q15_t)0x4c9a, (q15_t)0x9975, (q15_t)0x4c95, (q15_t)0x9971, - (q15_t)0x4c90, (q15_t)0x996d, (q15_t)0x4c8b, (q15_t)0x9969, (q15_t)0x4c86, (q15_t)0x9965, (q15_t)0x4c81, (q15_t)0x9962, - (q15_t)0x4c7c, (q15_t)0x995e, (q15_t)0x4c77, (q15_t)0x995a, (q15_t)0x4c72, (q15_t)0x9956, (q15_t)0x4c6d, (q15_t)0x9953, - (q15_t)0x4c68, (q15_t)0x994f, (q15_t)0x4c63, (q15_t)0x994b, (q15_t)0x4c5e, (q15_t)0x9947, (q15_t)0x4c59, (q15_t)0x9944, - (q15_t)0x4c54, (q15_t)0x9940, (q15_t)0x4c4f, (q15_t)0x993c, (q15_t)0x4c49, (q15_t)0x9938, (q15_t)0x4c44, (q15_t)0x9935, - (q15_t)0x4c3f, (q15_t)0x9931, (q15_t)0x4c3a, (q15_t)0x992d, (q15_t)0x4c35, (q15_t)0x992a, (q15_t)0x4c30, (q15_t)0x9926, - (q15_t)0x4c2b, (q15_t)0x9922, (q15_t)0x4c26, (q15_t)0x991e, (q15_t)0x4c21, (q15_t)0x991b, (q15_t)0x4c1c, (q15_t)0x9917, - (q15_t)0x4c17, (q15_t)0x9913, (q15_t)0x4c12, (q15_t)0x990f, (q15_t)0x4c0d, (q15_t)0x990c, (q15_t)0x4c08, (q15_t)0x9908, - (q15_t)0x4c03, (q15_t)0x9904, (q15_t)0x4bfe, (q15_t)0x9900, (q15_t)0x4bf9, (q15_t)0x98fd, (q15_t)0x4bf4, (q15_t)0x98f9, - (q15_t)0x4bef, (q15_t)0x98f5, (q15_t)0x4be9, (q15_t)0x98f2, (q15_t)0x4be4, (q15_t)0x98ee, (q15_t)0x4bdf, (q15_t)0x98ea, - (q15_t)0x4bda, (q15_t)0x98e6, (q15_t)0x4bd5, (q15_t)0x98e3, (q15_t)0x4bd0, (q15_t)0x98df, (q15_t)0x4bcb, (q15_t)0x98db, - (q15_t)0x4bc6, (q15_t)0x98d7, (q15_t)0x4bc1, (q15_t)0x98d4, (q15_t)0x4bbc, (q15_t)0x98d0, (q15_t)0x4bb7, (q15_t)0x98cc, - (q15_t)0x4bb2, (q15_t)0x98c9, (q15_t)0x4bad, (q15_t)0x98c5, (q15_t)0x4ba8, (q15_t)0x98c1, (q15_t)0x4ba3, (q15_t)0x98bd, - (q15_t)0x4b9e, (q15_t)0x98ba, (q15_t)0x4b98, (q15_t)0x98b6, (q15_t)0x4b93, (q15_t)0x98b2, (q15_t)0x4b8e, (q15_t)0x98af, - (q15_t)0x4b89, (q15_t)0x98ab, (q15_t)0x4b84, (q15_t)0x98a7, (q15_t)0x4b7f, (q15_t)0x98a3, (q15_t)0x4b7a, (q15_t)0x98a0, - (q15_t)0x4b75, (q15_t)0x989c, (q15_t)0x4b70, (q15_t)0x9898, (q15_t)0x4b6b, (q15_t)0x9895, (q15_t)0x4b66, (q15_t)0x9891, - (q15_t)0x4b61, (q15_t)0x988d, (q15_t)0x4b5c, (q15_t)0x988a, (q15_t)0x4b56, (q15_t)0x9886, (q15_t)0x4b51, (q15_t)0x9882, - (q15_t)0x4b4c, (q15_t)0x987e, (q15_t)0x4b47, (q15_t)0x987b, (q15_t)0x4b42, (q15_t)0x9877, (q15_t)0x4b3d, (q15_t)0x9873, - (q15_t)0x4b38, (q15_t)0x9870, (q15_t)0x4b33, (q15_t)0x986c, (q15_t)0x4b2e, (q15_t)0x9868, (q15_t)0x4b29, (q15_t)0x9865, - (q15_t)0x4b24, (q15_t)0x9861, (q15_t)0x4b1f, (q15_t)0x985d, (q15_t)0x4b19, (q15_t)0x985a, (q15_t)0x4b14, (q15_t)0x9856, - (q15_t)0x4b0f, (q15_t)0x9852, (q15_t)0x4b0a, (q15_t)0x984e, (q15_t)0x4b05, (q15_t)0x984b, (q15_t)0x4b00, (q15_t)0x9847, - (q15_t)0x4afb, (q15_t)0x9843, (q15_t)0x4af6, (q15_t)0x9840, (q15_t)0x4af1, (q15_t)0x983c, (q15_t)0x4aec, (q15_t)0x9838, - (q15_t)0x4ae7, (q15_t)0x9835, (q15_t)0x4ae1, (q15_t)0x9831, (q15_t)0x4adc, (q15_t)0x982d, (q15_t)0x4ad7, (q15_t)0x982a, - (q15_t)0x4ad2, (q15_t)0x9826, (q15_t)0x4acd, (q15_t)0x9822, (q15_t)0x4ac8, (q15_t)0x981f, (q15_t)0x4ac3, (q15_t)0x981b, - (q15_t)0x4abe, (q15_t)0x9817, (q15_t)0x4ab9, (q15_t)0x9814, (q15_t)0x4ab4, (q15_t)0x9810, (q15_t)0x4aae, (q15_t)0x980c, - (q15_t)0x4aa9, (q15_t)0x9809, (q15_t)0x4aa4, (q15_t)0x9805, (q15_t)0x4a9f, (q15_t)0x9801, (q15_t)0x4a9a, (q15_t)0x97fe, - (q15_t)0x4a95, (q15_t)0x97fa, (q15_t)0x4a90, (q15_t)0x97f6, (q15_t)0x4a8b, (q15_t)0x97f3, (q15_t)0x4a86, (q15_t)0x97ef, - (q15_t)0x4a81, (q15_t)0x97eb, (q15_t)0x4a7b, (q15_t)0x97e8, (q15_t)0x4a76, (q15_t)0x97e4, (q15_t)0x4a71, (q15_t)0x97e0, - (q15_t)0x4a6c, (q15_t)0x97dd, (q15_t)0x4a67, (q15_t)0x97d9, (q15_t)0x4a62, (q15_t)0x97d5, (q15_t)0x4a5d, (q15_t)0x97d2, - (q15_t)0x4a58, (q15_t)0x97ce, (q15_t)0x4a52, (q15_t)0x97cb, (q15_t)0x4a4d, (q15_t)0x97c7, (q15_t)0x4a48, (q15_t)0x97c3, - (q15_t)0x4a43, (q15_t)0x97c0, (q15_t)0x4a3e, (q15_t)0x97bc, (q15_t)0x4a39, (q15_t)0x97b8, (q15_t)0x4a34, (q15_t)0x97b5, - (q15_t)0x4a2f, (q15_t)0x97b1, (q15_t)0x4a2a, (q15_t)0x97ad, (q15_t)0x4a24, (q15_t)0x97aa, (q15_t)0x4a1f, (q15_t)0x97a6, - (q15_t)0x4a1a, (q15_t)0x97a2, (q15_t)0x4a15, (q15_t)0x979f, (q15_t)0x4a10, (q15_t)0x979b, (q15_t)0x4a0b, (q15_t)0x9798, - (q15_t)0x4a06, (q15_t)0x9794, (q15_t)0x4a01, (q15_t)0x9790, (q15_t)0x49fb, (q15_t)0x978d, (q15_t)0x49f6, (q15_t)0x9789, - (q15_t)0x49f1, (q15_t)0x9785, (q15_t)0x49ec, (q15_t)0x9782, (q15_t)0x49e7, (q15_t)0x977e, (q15_t)0x49e2, (q15_t)0x977a, - (q15_t)0x49dd, (q15_t)0x9777, (q15_t)0x49d8, (q15_t)0x9773, (q15_t)0x49d2, (q15_t)0x9770, (q15_t)0x49cd, (q15_t)0x976c, - (q15_t)0x49c8, (q15_t)0x9768, (q15_t)0x49c3, (q15_t)0x9765, (q15_t)0x49be, (q15_t)0x9761, (q15_t)0x49b9, (q15_t)0x975d, - (q15_t)0x49b4, (q15_t)0x975a, (q15_t)0x49ae, (q15_t)0x9756, (q15_t)0x49a9, (q15_t)0x9753, (q15_t)0x49a4, (q15_t)0x974f, - (q15_t)0x499f, (q15_t)0x974b, (q15_t)0x499a, (q15_t)0x9748, (q15_t)0x4995, (q15_t)0x9744, (q15_t)0x4990, (q15_t)0x9741, - (q15_t)0x498a, (q15_t)0x973d, (q15_t)0x4985, (q15_t)0x9739, (q15_t)0x4980, (q15_t)0x9736, (q15_t)0x497b, (q15_t)0x9732, - (q15_t)0x4976, (q15_t)0x972f, (q15_t)0x4971, (q15_t)0x972b, (q15_t)0x496c, (q15_t)0x9727, (q15_t)0x4966, (q15_t)0x9724, - (q15_t)0x4961, (q15_t)0x9720, (q15_t)0x495c, (q15_t)0x971d, (q15_t)0x4957, (q15_t)0x9719, (q15_t)0x4952, (q15_t)0x9715, - (q15_t)0x494d, (q15_t)0x9712, (q15_t)0x4948, (q15_t)0x970e, (q15_t)0x4942, (q15_t)0x970b, (q15_t)0x493d, (q15_t)0x9707, - (q15_t)0x4938, (q15_t)0x9703, (q15_t)0x4933, (q15_t)0x9700, (q15_t)0x492e, (q15_t)0x96fc, (q15_t)0x4929, (q15_t)0x96f9, - (q15_t)0x4923, (q15_t)0x96f5, (q15_t)0x491e, (q15_t)0x96f1, (q15_t)0x4919, (q15_t)0x96ee, (q15_t)0x4914, (q15_t)0x96ea, - (q15_t)0x490f, (q15_t)0x96e7, (q15_t)0x490a, (q15_t)0x96e3, (q15_t)0x4905, (q15_t)0x96df, (q15_t)0x48ff, (q15_t)0x96dc, - (q15_t)0x48fa, (q15_t)0x96d8, (q15_t)0x48f5, (q15_t)0x96d5, (q15_t)0x48f0, (q15_t)0x96d1, (q15_t)0x48eb, (q15_t)0x96ce, - (q15_t)0x48e6, (q15_t)0x96ca, (q15_t)0x48e0, (q15_t)0x96c6, (q15_t)0x48db, (q15_t)0x96c3, (q15_t)0x48d6, (q15_t)0x96bf, - (q15_t)0x48d1, (q15_t)0x96bc, (q15_t)0x48cc, (q15_t)0x96b8, (q15_t)0x48c7, (q15_t)0x96b5, (q15_t)0x48c1, (q15_t)0x96b1, - (q15_t)0x48bc, (q15_t)0x96ad, (q15_t)0x48b7, (q15_t)0x96aa, (q15_t)0x48b2, (q15_t)0x96a6, (q15_t)0x48ad, (q15_t)0x96a3, - (q15_t)0x48a8, (q15_t)0x969f, (q15_t)0x48a2, (q15_t)0x969c, (q15_t)0x489d, (q15_t)0x9698, (q15_t)0x4898, (q15_t)0x9694, - (q15_t)0x4893, (q15_t)0x9691, (q15_t)0x488e, (q15_t)0x968d, (q15_t)0x4888, (q15_t)0x968a, (q15_t)0x4883, (q15_t)0x9686, - (q15_t)0x487e, (q15_t)0x9683, (q15_t)0x4879, (q15_t)0x967f, (q15_t)0x4874, (q15_t)0x967b, (q15_t)0x486f, (q15_t)0x9678, - (q15_t)0x4869, (q15_t)0x9674, (q15_t)0x4864, (q15_t)0x9671, (q15_t)0x485f, (q15_t)0x966d, (q15_t)0x485a, (q15_t)0x966a, - (q15_t)0x4855, (q15_t)0x9666, (q15_t)0x484f, (q15_t)0x9663, (q15_t)0x484a, (q15_t)0x965f, (q15_t)0x4845, (q15_t)0x965b, - (q15_t)0x4840, (q15_t)0x9658, (q15_t)0x483b, (q15_t)0x9654, (q15_t)0x4836, (q15_t)0x9651, (q15_t)0x4830, (q15_t)0x964d, - (q15_t)0x482b, (q15_t)0x964a, (q15_t)0x4826, (q15_t)0x9646, (q15_t)0x4821, (q15_t)0x9643, (q15_t)0x481c, (q15_t)0x963f, - (q15_t)0x4816, (q15_t)0x963c, (q15_t)0x4811, (q15_t)0x9638, (q15_t)0x480c, (q15_t)0x9635, (q15_t)0x4807, (q15_t)0x9631, - (q15_t)0x4802, (q15_t)0x962d, (q15_t)0x47fc, (q15_t)0x962a, (q15_t)0x47f7, (q15_t)0x9626, (q15_t)0x47f2, (q15_t)0x9623, - (q15_t)0x47ed, (q15_t)0x961f, (q15_t)0x47e8, (q15_t)0x961c, (q15_t)0x47e2, (q15_t)0x9618, (q15_t)0x47dd, (q15_t)0x9615, - (q15_t)0x47d8, (q15_t)0x9611, (q15_t)0x47d3, (q15_t)0x960e, (q15_t)0x47ce, (q15_t)0x960a, (q15_t)0x47c8, (q15_t)0x9607, - (q15_t)0x47c3, (q15_t)0x9603, (q15_t)0x47be, (q15_t)0x9600, (q15_t)0x47b9, (q15_t)0x95fc, (q15_t)0x47b4, (q15_t)0x95f9, - (q15_t)0x47ae, (q15_t)0x95f5, (q15_t)0x47a9, (q15_t)0x95f2, (q15_t)0x47a4, (q15_t)0x95ee, (q15_t)0x479f, (q15_t)0x95ea, - (q15_t)0x479a, (q15_t)0x95e7, (q15_t)0x4794, (q15_t)0x95e3, (q15_t)0x478f, (q15_t)0x95e0, (q15_t)0x478a, (q15_t)0x95dc, - (q15_t)0x4785, (q15_t)0x95d9, (q15_t)0x4780, (q15_t)0x95d5, (q15_t)0x477a, (q15_t)0x95d2, (q15_t)0x4775, (q15_t)0x95ce, - (q15_t)0x4770, (q15_t)0x95cb, (q15_t)0x476b, (q15_t)0x95c7, (q15_t)0x4765, (q15_t)0x95c4, (q15_t)0x4760, (q15_t)0x95c0, - (q15_t)0x475b, (q15_t)0x95bd, (q15_t)0x4756, (q15_t)0x95b9, (q15_t)0x4751, (q15_t)0x95b6, (q15_t)0x474b, (q15_t)0x95b2, - (q15_t)0x4746, (q15_t)0x95af, (q15_t)0x4741, (q15_t)0x95ab, (q15_t)0x473c, (q15_t)0x95a8, (q15_t)0x4737, (q15_t)0x95a4, - (q15_t)0x4731, (q15_t)0x95a1, (q15_t)0x472c, (q15_t)0x959d, (q15_t)0x4727, (q15_t)0x959a, (q15_t)0x4722, (q15_t)0x9596, - (q15_t)0x471c, (q15_t)0x9593, (q15_t)0x4717, (q15_t)0x958f, (q15_t)0x4712, (q15_t)0x958c, (q15_t)0x470d, (q15_t)0x9588, - (q15_t)0x4708, (q15_t)0x9585, (q15_t)0x4702, (q15_t)0x9581, (q15_t)0x46fd, (q15_t)0x957e, (q15_t)0x46f8, (q15_t)0x957a, - (q15_t)0x46f3, (q15_t)0x9577, (q15_t)0x46ed, (q15_t)0x9574, (q15_t)0x46e8, (q15_t)0x9570, (q15_t)0x46e3, (q15_t)0x956d, - (q15_t)0x46de, (q15_t)0x9569, (q15_t)0x46d8, (q15_t)0x9566, (q15_t)0x46d3, (q15_t)0x9562, (q15_t)0x46ce, (q15_t)0x955f, - (q15_t)0x46c9, (q15_t)0x955b, (q15_t)0x46c4, (q15_t)0x9558, (q15_t)0x46be, (q15_t)0x9554, (q15_t)0x46b9, (q15_t)0x9551, - (q15_t)0x46b4, (q15_t)0x954d, (q15_t)0x46af, (q15_t)0x954a, (q15_t)0x46a9, (q15_t)0x9546, (q15_t)0x46a4, (q15_t)0x9543, - (q15_t)0x469f, (q15_t)0x953f, (q15_t)0x469a, (q15_t)0x953c, (q15_t)0x4694, (q15_t)0x9538, (q15_t)0x468f, (q15_t)0x9535, - (q15_t)0x468a, (q15_t)0x9532, (q15_t)0x4685, (q15_t)0x952e, (q15_t)0x467f, (q15_t)0x952b, (q15_t)0x467a, (q15_t)0x9527, - (q15_t)0x4675, (q15_t)0x9524, (q15_t)0x4670, (q15_t)0x9520, (q15_t)0x466a, (q15_t)0x951d, (q15_t)0x4665, (q15_t)0x9519, - (q15_t)0x4660, (q15_t)0x9516, (q15_t)0x465b, (q15_t)0x9512, (q15_t)0x4655, (q15_t)0x950f, (q15_t)0x4650, (q15_t)0x950c, - (q15_t)0x464b, (q15_t)0x9508, (q15_t)0x4646, (q15_t)0x9505, (q15_t)0x4640, (q15_t)0x9501, (q15_t)0x463b, (q15_t)0x94fe, - (q15_t)0x4636, (q15_t)0x94fa, (q15_t)0x4631, (q15_t)0x94f7, (q15_t)0x462b, (q15_t)0x94f3, (q15_t)0x4626, (q15_t)0x94f0, - (q15_t)0x4621, (q15_t)0x94ed, (q15_t)0x461c, (q15_t)0x94e9, (q15_t)0x4616, (q15_t)0x94e6, (q15_t)0x4611, (q15_t)0x94e2, - (q15_t)0x460c, (q15_t)0x94df, (q15_t)0x4607, (q15_t)0x94db, (q15_t)0x4601, (q15_t)0x94d8, (q15_t)0x45fc, (q15_t)0x94d4, - (q15_t)0x45f7, (q15_t)0x94d1, (q15_t)0x45f2, (q15_t)0x94ce, (q15_t)0x45ec, (q15_t)0x94ca, (q15_t)0x45e7, (q15_t)0x94c7, - (q15_t)0x45e2, (q15_t)0x94c3, (q15_t)0x45dd, (q15_t)0x94c0, (q15_t)0x45d7, (q15_t)0x94bc, (q15_t)0x45d2, (q15_t)0x94b9, - (q15_t)0x45cd, (q15_t)0x94b6, (q15_t)0x45c7, (q15_t)0x94b2, (q15_t)0x45c2, (q15_t)0x94af, (q15_t)0x45bd, (q15_t)0x94ab, - (q15_t)0x45b8, (q15_t)0x94a8, (q15_t)0x45b2, (q15_t)0x94a4, (q15_t)0x45ad, (q15_t)0x94a1, (q15_t)0x45a8, (q15_t)0x949e, - (q15_t)0x45a3, (q15_t)0x949a, (q15_t)0x459d, (q15_t)0x9497, (q15_t)0x4598, (q15_t)0x9493, (q15_t)0x4593, (q15_t)0x9490, - (q15_t)0x458d, (q15_t)0x948d, (q15_t)0x4588, (q15_t)0x9489, (q15_t)0x4583, (q15_t)0x9486, (q15_t)0x457e, (q15_t)0x9482, - (q15_t)0x4578, (q15_t)0x947f, (q15_t)0x4573, (q15_t)0x947b, (q15_t)0x456e, (q15_t)0x9478, (q15_t)0x4569, (q15_t)0x9475, - (q15_t)0x4563, (q15_t)0x9471, (q15_t)0x455e, (q15_t)0x946e, (q15_t)0x4559, (q15_t)0x946a, (q15_t)0x4553, (q15_t)0x9467, - (q15_t)0x454e, (q15_t)0x9464, (q15_t)0x4549, (q15_t)0x9460, (q15_t)0x4544, (q15_t)0x945d, (q15_t)0x453e, (q15_t)0x9459, - (q15_t)0x4539, (q15_t)0x9456, (q15_t)0x4534, (q15_t)0x9453, (q15_t)0x452e, (q15_t)0x944f, (q15_t)0x4529, (q15_t)0x944c, - (q15_t)0x4524, (q15_t)0x9448, (q15_t)0x451f, (q15_t)0x9445, (q15_t)0x4519, (q15_t)0x9442, (q15_t)0x4514, (q15_t)0x943e, - (q15_t)0x450f, (q15_t)0x943b, (q15_t)0x4509, (q15_t)0x9437, (q15_t)0x4504, (q15_t)0x9434, (q15_t)0x44ff, (q15_t)0x9431, - (q15_t)0x44fa, (q15_t)0x942d, (q15_t)0x44f4, (q15_t)0x942a, (q15_t)0x44ef, (q15_t)0x9427, (q15_t)0x44ea, (q15_t)0x9423, - (q15_t)0x44e4, (q15_t)0x9420, (q15_t)0x44df, (q15_t)0x941c, (q15_t)0x44da, (q15_t)0x9419, (q15_t)0x44d4, (q15_t)0x9416, - (q15_t)0x44cf, (q15_t)0x9412, (q15_t)0x44ca, (q15_t)0x940f, (q15_t)0x44c5, (q15_t)0x940b, (q15_t)0x44bf, (q15_t)0x9408, - (q15_t)0x44ba, (q15_t)0x9405, (q15_t)0x44b5, (q15_t)0x9401, (q15_t)0x44af, (q15_t)0x93fe, (q15_t)0x44aa, (q15_t)0x93fb, - (q15_t)0x44a5, (q15_t)0x93f7, (q15_t)0x449f, (q15_t)0x93f4, (q15_t)0x449a, (q15_t)0x93f1, (q15_t)0x4495, (q15_t)0x93ed, - (q15_t)0x4490, (q15_t)0x93ea, (q15_t)0x448a, (q15_t)0x93e6, (q15_t)0x4485, (q15_t)0x93e3, (q15_t)0x4480, (q15_t)0x93e0, - (q15_t)0x447a, (q15_t)0x93dc, (q15_t)0x4475, (q15_t)0x93d9, (q15_t)0x4470, (q15_t)0x93d6, (q15_t)0x446a, (q15_t)0x93d2, - (q15_t)0x4465, (q15_t)0x93cf, (q15_t)0x4460, (q15_t)0x93cc, (q15_t)0x445a, (q15_t)0x93c8, (q15_t)0x4455, (q15_t)0x93c5, - (q15_t)0x4450, (q15_t)0x93c1, (q15_t)0x444b, (q15_t)0x93be, (q15_t)0x4445, (q15_t)0x93bb, (q15_t)0x4440, (q15_t)0x93b7, - (q15_t)0x443b, (q15_t)0x93b4, (q15_t)0x4435, (q15_t)0x93b1, (q15_t)0x4430, (q15_t)0x93ad, (q15_t)0x442b, (q15_t)0x93aa, - (q15_t)0x4425, (q15_t)0x93a7, (q15_t)0x4420, (q15_t)0x93a3, (q15_t)0x441b, (q15_t)0x93a0, (q15_t)0x4415, (q15_t)0x939d, - (q15_t)0x4410, (q15_t)0x9399, (q15_t)0x440b, (q15_t)0x9396, (q15_t)0x4405, (q15_t)0x9393, (q15_t)0x4400, (q15_t)0x938f, - (q15_t)0x43fb, (q15_t)0x938c, (q15_t)0x43f5, (q15_t)0x9389, (q15_t)0x43f0, (q15_t)0x9385, (q15_t)0x43eb, (q15_t)0x9382, - (q15_t)0x43e5, (q15_t)0x937f, (q15_t)0x43e0, (q15_t)0x937b, (q15_t)0x43db, (q15_t)0x9378, (q15_t)0x43d5, (q15_t)0x9375, - (q15_t)0x43d0, (q15_t)0x9371, (q15_t)0x43cb, (q15_t)0x936e, (q15_t)0x43c5, (q15_t)0x936b, (q15_t)0x43c0, (q15_t)0x9367, - (q15_t)0x43bb, (q15_t)0x9364, (q15_t)0x43b5, (q15_t)0x9361, (q15_t)0x43b0, (q15_t)0x935d, (q15_t)0x43ab, (q15_t)0x935a, - (q15_t)0x43a5, (q15_t)0x9357, (q15_t)0x43a0, (q15_t)0x9353, (q15_t)0x439b, (q15_t)0x9350, (q15_t)0x4395, (q15_t)0x934d, - (q15_t)0x4390, (q15_t)0x9349, (q15_t)0x438b, (q15_t)0x9346, (q15_t)0x4385, (q15_t)0x9343, (q15_t)0x4380, (q15_t)0x933f, - (q15_t)0x437b, (q15_t)0x933c, (q15_t)0x4375, (q15_t)0x9339, (q15_t)0x4370, (q15_t)0x9336, (q15_t)0x436b, (q15_t)0x9332, - (q15_t)0x4365, (q15_t)0x932f, (q15_t)0x4360, (q15_t)0x932c, (q15_t)0x435b, (q15_t)0x9328, (q15_t)0x4355, (q15_t)0x9325, - (q15_t)0x4350, (q15_t)0x9322, (q15_t)0x434b, (q15_t)0x931e, (q15_t)0x4345, (q15_t)0x931b, (q15_t)0x4340, (q15_t)0x9318, - (q15_t)0x433b, (q15_t)0x9314, (q15_t)0x4335, (q15_t)0x9311, (q15_t)0x4330, (q15_t)0x930e, (q15_t)0x432b, (q15_t)0x930b, - (q15_t)0x4325, (q15_t)0x9307, (q15_t)0x4320, (q15_t)0x9304, (q15_t)0x431b, (q15_t)0x9301, (q15_t)0x4315, (q15_t)0x92fd, - (q15_t)0x4310, (q15_t)0x92fa, (q15_t)0x430b, (q15_t)0x92f7, (q15_t)0x4305, (q15_t)0x92f4, (q15_t)0x4300, (q15_t)0x92f0, - (q15_t)0x42fa, (q15_t)0x92ed, (q15_t)0x42f5, (q15_t)0x92ea, (q15_t)0x42f0, (q15_t)0x92e6, (q15_t)0x42ea, (q15_t)0x92e3, - (q15_t)0x42e5, (q15_t)0x92e0, (q15_t)0x42e0, (q15_t)0x92dd, (q15_t)0x42da, (q15_t)0x92d9, (q15_t)0x42d5, (q15_t)0x92d6, - (q15_t)0x42d0, (q15_t)0x92d3, (q15_t)0x42ca, (q15_t)0x92cf, (q15_t)0x42c5, (q15_t)0x92cc, (q15_t)0x42c0, (q15_t)0x92c9, - (q15_t)0x42ba, (q15_t)0x92c6, (q15_t)0x42b5, (q15_t)0x92c2, (q15_t)0x42af, (q15_t)0x92bf, (q15_t)0x42aa, (q15_t)0x92bc, - (q15_t)0x42a5, (q15_t)0x92b8, (q15_t)0x429f, (q15_t)0x92b5, (q15_t)0x429a, (q15_t)0x92b2, (q15_t)0x4295, (q15_t)0x92af, - (q15_t)0x428f, (q15_t)0x92ab, (q15_t)0x428a, (q15_t)0x92a8, (q15_t)0x4284, (q15_t)0x92a5, (q15_t)0x427f, (q15_t)0x92a2, - (q15_t)0x427a, (q15_t)0x929e, (q15_t)0x4274, (q15_t)0x929b, (q15_t)0x426f, (q15_t)0x9298, (q15_t)0x426a, (q15_t)0x9295, - (q15_t)0x4264, (q15_t)0x9291, (q15_t)0x425f, (q15_t)0x928e, (q15_t)0x425a, (q15_t)0x928b, (q15_t)0x4254, (q15_t)0x9288, - (q15_t)0x424f, (q15_t)0x9284, (q15_t)0x4249, (q15_t)0x9281, (q15_t)0x4244, (q15_t)0x927e, (q15_t)0x423f, (q15_t)0x927b, - (q15_t)0x4239, (q15_t)0x9277, (q15_t)0x4234, (q15_t)0x9274, (q15_t)0x422f, (q15_t)0x9271, (q15_t)0x4229, (q15_t)0x926e, - (q15_t)0x4224, (q15_t)0x926a, (q15_t)0x421e, (q15_t)0x9267, (q15_t)0x4219, (q15_t)0x9264, (q15_t)0x4214, (q15_t)0x9261, - (q15_t)0x420e, (q15_t)0x925d, (q15_t)0x4209, (q15_t)0x925a, (q15_t)0x4203, (q15_t)0x9257, (q15_t)0x41fe, (q15_t)0x9254, - (q15_t)0x41f9, (q15_t)0x9250, (q15_t)0x41f3, (q15_t)0x924d, (q15_t)0x41ee, (q15_t)0x924a, (q15_t)0x41e9, (q15_t)0x9247, - (q15_t)0x41e3, (q15_t)0x9243, (q15_t)0x41de, (q15_t)0x9240, (q15_t)0x41d8, (q15_t)0x923d, (q15_t)0x41d3, (q15_t)0x923a, - (q15_t)0x41ce, (q15_t)0x9236, (q15_t)0x41c8, (q15_t)0x9233, (q15_t)0x41c3, (q15_t)0x9230, (q15_t)0x41bd, (q15_t)0x922d, - (q15_t)0x41b8, (q15_t)0x922a, (q15_t)0x41b3, (q15_t)0x9226, (q15_t)0x41ad, (q15_t)0x9223, (q15_t)0x41a8, (q15_t)0x9220, - (q15_t)0x41a2, (q15_t)0x921d, (q15_t)0x419d, (q15_t)0x9219, (q15_t)0x4198, (q15_t)0x9216, (q15_t)0x4192, (q15_t)0x9213, - (q15_t)0x418d, (q15_t)0x9210, (q15_t)0x4188, (q15_t)0x920d, (q15_t)0x4182, (q15_t)0x9209, (q15_t)0x417d, (q15_t)0x9206, - (q15_t)0x4177, (q15_t)0x9203, (q15_t)0x4172, (q15_t)0x9200, (q15_t)0x416d, (q15_t)0x91fc, (q15_t)0x4167, (q15_t)0x91f9, - (q15_t)0x4162, (q15_t)0x91f6, (q15_t)0x415c, (q15_t)0x91f3, (q15_t)0x4157, (q15_t)0x91f0, (q15_t)0x4152, (q15_t)0x91ec, - (q15_t)0x414c, (q15_t)0x91e9, (q15_t)0x4147, (q15_t)0x91e6, (q15_t)0x4141, (q15_t)0x91e3, (q15_t)0x413c, (q15_t)0x91e0, - (q15_t)0x4136, (q15_t)0x91dc, (q15_t)0x4131, (q15_t)0x91d9, (q15_t)0x412c, (q15_t)0x91d6, (q15_t)0x4126, (q15_t)0x91d3, - (q15_t)0x4121, (q15_t)0x91d0, (q15_t)0x411b, (q15_t)0x91cc, (q15_t)0x4116, (q15_t)0x91c9, (q15_t)0x4111, (q15_t)0x91c6, - (q15_t)0x410b, (q15_t)0x91c3, (q15_t)0x4106, (q15_t)0x91c0, (q15_t)0x4100, (q15_t)0x91bc, (q15_t)0x40fb, (q15_t)0x91b9, - (q15_t)0x40f6, (q15_t)0x91b6, (q15_t)0x40f0, (q15_t)0x91b3, (q15_t)0x40eb, (q15_t)0x91b0, (q15_t)0x40e5, (q15_t)0x91ad, - (q15_t)0x40e0, (q15_t)0x91a9, (q15_t)0x40da, (q15_t)0x91a6, (q15_t)0x40d5, (q15_t)0x91a3, (q15_t)0x40d0, (q15_t)0x91a0, - (q15_t)0x40ca, (q15_t)0x919d, (q15_t)0x40c5, (q15_t)0x9199, (q15_t)0x40bf, (q15_t)0x9196, (q15_t)0x40ba, (q15_t)0x9193, - (q15_t)0x40b5, (q15_t)0x9190, (q15_t)0x40af, (q15_t)0x918d, (q15_t)0x40aa, (q15_t)0x918a, (q15_t)0x40a4, (q15_t)0x9186, - (q15_t)0x409f, (q15_t)0x9183, (q15_t)0x4099, (q15_t)0x9180, (q15_t)0x4094, (q15_t)0x917d, (q15_t)0x408f, (q15_t)0x917a, - (q15_t)0x4089, (q15_t)0x9177, (q15_t)0x4084, (q15_t)0x9173, (q15_t)0x407e, (q15_t)0x9170, (q15_t)0x4079, (q15_t)0x916d, - (q15_t)0x4073, (q15_t)0x916a, (q15_t)0x406e, (q15_t)0x9167, (q15_t)0x4069, (q15_t)0x9164, (q15_t)0x4063, (q15_t)0x9160, - (q15_t)0x405e, (q15_t)0x915d, (q15_t)0x4058, (q15_t)0x915a, (q15_t)0x4053, (q15_t)0x9157, (q15_t)0x404d, (q15_t)0x9154, - (q15_t)0x4048, (q15_t)0x9151, (q15_t)0x4043, (q15_t)0x914d, (q15_t)0x403d, (q15_t)0x914a, (q15_t)0x4038, (q15_t)0x9147, - (q15_t)0x4032, (q15_t)0x9144, (q15_t)0x402d, (q15_t)0x9141, (q15_t)0x4027, (q15_t)0x913e, (q15_t)0x4022, (q15_t)0x913a, - (q15_t)0x401d, (q15_t)0x9137, (q15_t)0x4017, (q15_t)0x9134, (q15_t)0x4012, (q15_t)0x9131, (q15_t)0x400c, (q15_t)0x912e, - (q15_t)0x4007, (q15_t)0x912b, (q15_t)0x4001, (q15_t)0x9128, (q15_t)0x3ffc, (q15_t)0x9124, (q15_t)0x3ff6, (q15_t)0x9121, - (q15_t)0x3ff1, (q15_t)0x911e, (q15_t)0x3fec, (q15_t)0x911b, (q15_t)0x3fe6, (q15_t)0x9118, (q15_t)0x3fe1, (q15_t)0x9115, - (q15_t)0x3fdb, (q15_t)0x9112, (q15_t)0x3fd6, (q15_t)0x910f, (q15_t)0x3fd0, (q15_t)0x910b, (q15_t)0x3fcb, (q15_t)0x9108, - (q15_t)0x3fc5, (q15_t)0x9105, (q15_t)0x3fc0, (q15_t)0x9102, (q15_t)0x3fbb, (q15_t)0x90ff, (q15_t)0x3fb5, (q15_t)0x90fc, - (q15_t)0x3fb0, (q15_t)0x90f9, (q15_t)0x3faa, (q15_t)0x90f5, (q15_t)0x3fa5, (q15_t)0x90f2, (q15_t)0x3f9f, (q15_t)0x90ef, - (q15_t)0x3f9a, (q15_t)0x90ec, (q15_t)0x3f94, (q15_t)0x90e9, (q15_t)0x3f8f, (q15_t)0x90e6, (q15_t)0x3f89, (q15_t)0x90e3, - (q15_t)0x3f84, (q15_t)0x90e0, (q15_t)0x3f7f, (q15_t)0x90dd, (q15_t)0x3f79, (q15_t)0x90d9, (q15_t)0x3f74, (q15_t)0x90d6, - (q15_t)0x3f6e, (q15_t)0x90d3, (q15_t)0x3f69, (q15_t)0x90d0, (q15_t)0x3f63, (q15_t)0x90cd, (q15_t)0x3f5e, (q15_t)0x90ca, - (q15_t)0x3f58, (q15_t)0x90c7, (q15_t)0x3f53, (q15_t)0x90c4, (q15_t)0x3f4d, (q15_t)0x90c1, (q15_t)0x3f48, (q15_t)0x90bd, - (q15_t)0x3f43, (q15_t)0x90ba, (q15_t)0x3f3d, (q15_t)0x90b7, (q15_t)0x3f38, (q15_t)0x90b4, (q15_t)0x3f32, (q15_t)0x90b1, - (q15_t)0x3f2d, (q15_t)0x90ae, (q15_t)0x3f27, (q15_t)0x90ab, (q15_t)0x3f22, (q15_t)0x90a8, (q15_t)0x3f1c, (q15_t)0x90a5, - (q15_t)0x3f17, (q15_t)0x90a1, (q15_t)0x3f11, (q15_t)0x909e, (q15_t)0x3f0c, (q15_t)0x909b, (q15_t)0x3f06, (q15_t)0x9098, - (q15_t)0x3f01, (q15_t)0x9095, (q15_t)0x3efb, (q15_t)0x9092, (q15_t)0x3ef6, (q15_t)0x908f, (q15_t)0x3ef1, (q15_t)0x908c, - (q15_t)0x3eeb, (q15_t)0x9089, (q15_t)0x3ee6, (q15_t)0x9086, (q15_t)0x3ee0, (q15_t)0x9083, (q15_t)0x3edb, (q15_t)0x907f, - (q15_t)0x3ed5, (q15_t)0x907c, (q15_t)0x3ed0, (q15_t)0x9079, (q15_t)0x3eca, (q15_t)0x9076, (q15_t)0x3ec5, (q15_t)0x9073, - (q15_t)0x3ebf, (q15_t)0x9070, (q15_t)0x3eba, (q15_t)0x906d, (q15_t)0x3eb4, (q15_t)0x906a, (q15_t)0x3eaf, (q15_t)0x9067, - (q15_t)0x3ea9, (q15_t)0x9064, (q15_t)0x3ea4, (q15_t)0x9061, (q15_t)0x3e9e, (q15_t)0x905e, (q15_t)0x3e99, (q15_t)0x905b, - (q15_t)0x3e93, (q15_t)0x9057, (q15_t)0x3e8e, (q15_t)0x9054, (q15_t)0x3e88, (q15_t)0x9051, (q15_t)0x3e83, (q15_t)0x904e, - (q15_t)0x3e7d, (q15_t)0x904b, (q15_t)0x3e78, (q15_t)0x9048, (q15_t)0x3e73, (q15_t)0x9045, (q15_t)0x3e6d, (q15_t)0x9042, - (q15_t)0x3e68, (q15_t)0x903f, (q15_t)0x3e62, (q15_t)0x903c, (q15_t)0x3e5d, (q15_t)0x9039, (q15_t)0x3e57, (q15_t)0x9036, - (q15_t)0x3e52, (q15_t)0x9033, (q15_t)0x3e4c, (q15_t)0x9030, (q15_t)0x3e47, (q15_t)0x902d, (q15_t)0x3e41, (q15_t)0x902a, - (q15_t)0x3e3c, (q15_t)0x9026, (q15_t)0x3e36, (q15_t)0x9023, (q15_t)0x3e31, (q15_t)0x9020, (q15_t)0x3e2b, (q15_t)0x901d, - (q15_t)0x3e26, (q15_t)0x901a, (q15_t)0x3e20, (q15_t)0x9017, (q15_t)0x3e1b, (q15_t)0x9014, (q15_t)0x3e15, (q15_t)0x9011, - (q15_t)0x3e10, (q15_t)0x900e, (q15_t)0x3e0a, (q15_t)0x900b, (q15_t)0x3e05, (q15_t)0x9008, (q15_t)0x3dff, (q15_t)0x9005, - (q15_t)0x3dfa, (q15_t)0x9002, (q15_t)0x3df4, (q15_t)0x8fff, (q15_t)0x3def, (q15_t)0x8ffc, (q15_t)0x3de9, (q15_t)0x8ff9, - (q15_t)0x3de4, (q15_t)0x8ff6, (q15_t)0x3dde, (q15_t)0x8ff3, (q15_t)0x3dd9, (q15_t)0x8ff0, (q15_t)0x3dd3, (q15_t)0x8fed, - (q15_t)0x3dce, (q15_t)0x8fea, (q15_t)0x3dc8, (q15_t)0x8fe7, (q15_t)0x3dc3, (q15_t)0x8fe3, (q15_t)0x3dbd, (q15_t)0x8fe0, - (q15_t)0x3db8, (q15_t)0x8fdd, (q15_t)0x3db2, (q15_t)0x8fda, (q15_t)0x3dad, (q15_t)0x8fd7, (q15_t)0x3da7, (q15_t)0x8fd4, - (q15_t)0x3da2, (q15_t)0x8fd1, (q15_t)0x3d9c, (q15_t)0x8fce, (q15_t)0x3d97, (q15_t)0x8fcb, (q15_t)0x3d91, (q15_t)0x8fc8, - (q15_t)0x3d8c, (q15_t)0x8fc5, (q15_t)0x3d86, (q15_t)0x8fc2, (q15_t)0x3d81, (q15_t)0x8fbf, (q15_t)0x3d7b, (q15_t)0x8fbc, - (q15_t)0x3d76, (q15_t)0x8fb9, (q15_t)0x3d70, (q15_t)0x8fb6, (q15_t)0x3d6b, (q15_t)0x8fb3, (q15_t)0x3d65, (q15_t)0x8fb0, - (q15_t)0x3d60, (q15_t)0x8fad, (q15_t)0x3d5a, (q15_t)0x8faa, (q15_t)0x3d55, (q15_t)0x8fa7, (q15_t)0x3d4f, (q15_t)0x8fa4, - (q15_t)0x3d49, (q15_t)0x8fa1, (q15_t)0x3d44, (q15_t)0x8f9e, (q15_t)0x3d3e, (q15_t)0x8f9b, (q15_t)0x3d39, (q15_t)0x8f98, - (q15_t)0x3d33, (q15_t)0x8f95, (q15_t)0x3d2e, (q15_t)0x8f92, (q15_t)0x3d28, (q15_t)0x8f8f, (q15_t)0x3d23, (q15_t)0x8f8c, - (q15_t)0x3d1d, (q15_t)0x8f89, (q15_t)0x3d18, (q15_t)0x8f86, (q15_t)0x3d12, (q15_t)0x8f83, (q15_t)0x3d0d, (q15_t)0x8f80, - (q15_t)0x3d07, (q15_t)0x8f7d, (q15_t)0x3d02, (q15_t)0x8f7a, (q15_t)0x3cfc, (q15_t)0x8f77, (q15_t)0x3cf7, (q15_t)0x8f74, - (q15_t)0x3cf1, (q15_t)0x8f71, (q15_t)0x3cec, (q15_t)0x8f6e, (q15_t)0x3ce6, (q15_t)0x8f6b, (q15_t)0x3ce1, (q15_t)0x8f68, - (q15_t)0x3cdb, (q15_t)0x8f65, (q15_t)0x3cd6, (q15_t)0x8f62, (q15_t)0x3cd0, (q15_t)0x8f5f, (q15_t)0x3cca, (q15_t)0x8f5c, - (q15_t)0x3cc5, (q15_t)0x8f59, (q15_t)0x3cbf, (q15_t)0x8f56, (q15_t)0x3cba, (q15_t)0x8f53, (q15_t)0x3cb4, (q15_t)0x8f50, - (q15_t)0x3caf, (q15_t)0x8f4d, (q15_t)0x3ca9, (q15_t)0x8f4a, (q15_t)0x3ca4, (q15_t)0x8f47, (q15_t)0x3c9e, (q15_t)0x8f44, - (q15_t)0x3c99, (q15_t)0x8f41, (q15_t)0x3c93, (q15_t)0x8f3e, (q15_t)0x3c8e, (q15_t)0x8f3b, (q15_t)0x3c88, (q15_t)0x8f38, - (q15_t)0x3c83, (q15_t)0x8f35, (q15_t)0x3c7d, (q15_t)0x8f32, (q15_t)0x3c77, (q15_t)0x8f2f, (q15_t)0x3c72, (q15_t)0x8f2d, - (q15_t)0x3c6c, (q15_t)0x8f2a, (q15_t)0x3c67, (q15_t)0x8f27, (q15_t)0x3c61, (q15_t)0x8f24, (q15_t)0x3c5c, (q15_t)0x8f21, - (q15_t)0x3c56, (q15_t)0x8f1e, (q15_t)0x3c51, (q15_t)0x8f1b, (q15_t)0x3c4b, (q15_t)0x8f18, (q15_t)0x3c46, (q15_t)0x8f15, - (q15_t)0x3c40, (q15_t)0x8f12, (q15_t)0x3c3b, (q15_t)0x8f0f, (q15_t)0x3c35, (q15_t)0x8f0c, (q15_t)0x3c2f, (q15_t)0x8f09, - (q15_t)0x3c2a, (q15_t)0x8f06, (q15_t)0x3c24, (q15_t)0x8f03, (q15_t)0x3c1f, (q15_t)0x8f00, (q15_t)0x3c19, (q15_t)0x8efd, - (q15_t)0x3c14, (q15_t)0x8efa, (q15_t)0x3c0e, (q15_t)0x8ef7, (q15_t)0x3c09, (q15_t)0x8ef4, (q15_t)0x3c03, (q15_t)0x8ef1, - (q15_t)0x3bfd, (q15_t)0x8eee, (q15_t)0x3bf8, (q15_t)0x8eec, (q15_t)0x3bf2, (q15_t)0x8ee9, (q15_t)0x3bed, (q15_t)0x8ee6, - (q15_t)0x3be7, (q15_t)0x8ee3, (q15_t)0x3be2, (q15_t)0x8ee0, (q15_t)0x3bdc, (q15_t)0x8edd, (q15_t)0x3bd7, (q15_t)0x8eda, - (q15_t)0x3bd1, (q15_t)0x8ed7, (q15_t)0x3bcc, (q15_t)0x8ed4, (q15_t)0x3bc6, (q15_t)0x8ed1, (q15_t)0x3bc0, (q15_t)0x8ece, - (q15_t)0x3bbb, (q15_t)0x8ecb, (q15_t)0x3bb5, (q15_t)0x8ec8, (q15_t)0x3bb0, (q15_t)0x8ec5, (q15_t)0x3baa, (q15_t)0x8ec2, - (q15_t)0x3ba5, (q15_t)0x8ebf, (q15_t)0x3b9f, (q15_t)0x8ebd, (q15_t)0x3b99, (q15_t)0x8eba, (q15_t)0x3b94, (q15_t)0x8eb7, - (q15_t)0x3b8e, (q15_t)0x8eb4, (q15_t)0x3b89, (q15_t)0x8eb1, (q15_t)0x3b83, (q15_t)0x8eae, (q15_t)0x3b7e, (q15_t)0x8eab, - (q15_t)0x3b78, (q15_t)0x8ea8, (q15_t)0x3b73, (q15_t)0x8ea5, (q15_t)0x3b6d, (q15_t)0x8ea2, (q15_t)0x3b67, (q15_t)0x8e9f, - (q15_t)0x3b62, (q15_t)0x8e9c, (q15_t)0x3b5c, (q15_t)0x8e99, (q15_t)0x3b57, (q15_t)0x8e97, (q15_t)0x3b51, (q15_t)0x8e94, - (q15_t)0x3b4c, (q15_t)0x8e91, (q15_t)0x3b46, (q15_t)0x8e8e, (q15_t)0x3b40, (q15_t)0x8e8b, (q15_t)0x3b3b, (q15_t)0x8e88, - (q15_t)0x3b35, (q15_t)0x8e85, (q15_t)0x3b30, (q15_t)0x8e82, (q15_t)0x3b2a, (q15_t)0x8e7f, (q15_t)0x3b25, (q15_t)0x8e7c, - (q15_t)0x3b1f, (q15_t)0x8e7a, (q15_t)0x3b19, (q15_t)0x8e77, (q15_t)0x3b14, (q15_t)0x8e74, (q15_t)0x3b0e, (q15_t)0x8e71, - (q15_t)0x3b09, (q15_t)0x8e6e, (q15_t)0x3b03, (q15_t)0x8e6b, (q15_t)0x3afe, (q15_t)0x8e68, (q15_t)0x3af8, (q15_t)0x8e65, - (q15_t)0x3af2, (q15_t)0x8e62, (q15_t)0x3aed, (q15_t)0x8e5f, (q15_t)0x3ae7, (q15_t)0x8e5d, (q15_t)0x3ae2, (q15_t)0x8e5a, - (q15_t)0x3adc, (q15_t)0x8e57, (q15_t)0x3ad7, (q15_t)0x8e54, (q15_t)0x3ad1, (q15_t)0x8e51, (q15_t)0x3acb, (q15_t)0x8e4e, - (q15_t)0x3ac6, (q15_t)0x8e4b, (q15_t)0x3ac0, (q15_t)0x8e48, (q15_t)0x3abb, (q15_t)0x8e45, (q15_t)0x3ab5, (q15_t)0x8e43, - (q15_t)0x3aaf, (q15_t)0x8e40, (q15_t)0x3aaa, (q15_t)0x8e3d, (q15_t)0x3aa4, (q15_t)0x8e3a, (q15_t)0x3a9f, (q15_t)0x8e37, - (q15_t)0x3a99, (q15_t)0x8e34, (q15_t)0x3a94, (q15_t)0x8e31, (q15_t)0x3a8e, (q15_t)0x8e2e, (q15_t)0x3a88, (q15_t)0x8e2c, - (q15_t)0x3a83, (q15_t)0x8e29, (q15_t)0x3a7d, (q15_t)0x8e26, (q15_t)0x3a78, (q15_t)0x8e23, (q15_t)0x3a72, (q15_t)0x8e20, - (q15_t)0x3a6c, (q15_t)0x8e1d, (q15_t)0x3a67, (q15_t)0x8e1a, (q15_t)0x3a61, (q15_t)0x8e17, (q15_t)0x3a5c, (q15_t)0x8e15, - (q15_t)0x3a56, (q15_t)0x8e12, (q15_t)0x3a50, (q15_t)0x8e0f, (q15_t)0x3a4b, (q15_t)0x8e0c, (q15_t)0x3a45, (q15_t)0x8e09, - (q15_t)0x3a40, (q15_t)0x8e06, (q15_t)0x3a3a, (q15_t)0x8e03, (q15_t)0x3a34, (q15_t)0x8e01, (q15_t)0x3a2f, (q15_t)0x8dfe, - (q15_t)0x3a29, (q15_t)0x8dfb, (q15_t)0x3a24, (q15_t)0x8df8, (q15_t)0x3a1e, (q15_t)0x8df5, (q15_t)0x3a19, (q15_t)0x8df2, - (q15_t)0x3a13, (q15_t)0x8def, (q15_t)0x3a0d, (q15_t)0x8ded, (q15_t)0x3a08, (q15_t)0x8dea, (q15_t)0x3a02, (q15_t)0x8de7, - (q15_t)0x39fd, (q15_t)0x8de4, (q15_t)0x39f7, (q15_t)0x8de1, (q15_t)0x39f1, (q15_t)0x8dde, (q15_t)0x39ec, (q15_t)0x8ddc, - (q15_t)0x39e6, (q15_t)0x8dd9, (q15_t)0x39e0, (q15_t)0x8dd6, (q15_t)0x39db, (q15_t)0x8dd3, (q15_t)0x39d5, (q15_t)0x8dd0, - (q15_t)0x39d0, (q15_t)0x8dcd, (q15_t)0x39ca, (q15_t)0x8dca, (q15_t)0x39c4, (q15_t)0x8dc8, (q15_t)0x39bf, (q15_t)0x8dc5, - (q15_t)0x39b9, (q15_t)0x8dc2, (q15_t)0x39b4, (q15_t)0x8dbf, (q15_t)0x39ae, (q15_t)0x8dbc, (q15_t)0x39a8, (q15_t)0x8db9, - (q15_t)0x39a3, (q15_t)0x8db7, (q15_t)0x399d, (q15_t)0x8db4, (q15_t)0x3998, (q15_t)0x8db1, (q15_t)0x3992, (q15_t)0x8dae, - (q15_t)0x398c, (q15_t)0x8dab, (q15_t)0x3987, (q15_t)0x8da9, (q15_t)0x3981, (q15_t)0x8da6, (q15_t)0x397c, (q15_t)0x8da3, - (q15_t)0x3976, (q15_t)0x8da0, (q15_t)0x3970, (q15_t)0x8d9d, (q15_t)0x396b, (q15_t)0x8d9a, (q15_t)0x3965, (q15_t)0x8d98, - (q15_t)0x395f, (q15_t)0x8d95, (q15_t)0x395a, (q15_t)0x8d92, (q15_t)0x3954, (q15_t)0x8d8f, (q15_t)0x394f, (q15_t)0x8d8c, - (q15_t)0x3949, (q15_t)0x8d8a, (q15_t)0x3943, (q15_t)0x8d87, (q15_t)0x393e, (q15_t)0x8d84, (q15_t)0x3938, (q15_t)0x8d81, - (q15_t)0x3932, (q15_t)0x8d7e, (q15_t)0x392d, (q15_t)0x8d7b, (q15_t)0x3927, (q15_t)0x8d79, (q15_t)0x3922, (q15_t)0x8d76, - (q15_t)0x391c, (q15_t)0x8d73, (q15_t)0x3916, (q15_t)0x8d70, (q15_t)0x3911, (q15_t)0x8d6d, (q15_t)0x390b, (q15_t)0x8d6b, - (q15_t)0x3906, (q15_t)0x8d68, (q15_t)0x3900, (q15_t)0x8d65, (q15_t)0x38fa, (q15_t)0x8d62, (q15_t)0x38f5, (q15_t)0x8d5f, - (q15_t)0x38ef, (q15_t)0x8d5d, (q15_t)0x38e9, (q15_t)0x8d5a, (q15_t)0x38e4, (q15_t)0x8d57, (q15_t)0x38de, (q15_t)0x8d54, - (q15_t)0x38d8, (q15_t)0x8d51, (q15_t)0x38d3, (q15_t)0x8d4f, (q15_t)0x38cd, (q15_t)0x8d4c, (q15_t)0x38c8, (q15_t)0x8d49, - (q15_t)0x38c2, (q15_t)0x8d46, (q15_t)0x38bc, (q15_t)0x8d44, (q15_t)0x38b7, (q15_t)0x8d41, (q15_t)0x38b1, (q15_t)0x8d3e, - (q15_t)0x38ab, (q15_t)0x8d3b, (q15_t)0x38a6, (q15_t)0x8d38, (q15_t)0x38a0, (q15_t)0x8d36, (q15_t)0x389b, (q15_t)0x8d33, - (q15_t)0x3895, (q15_t)0x8d30, (q15_t)0x388f, (q15_t)0x8d2d, (q15_t)0x388a, (q15_t)0x8d2b, (q15_t)0x3884, (q15_t)0x8d28, - (q15_t)0x387e, (q15_t)0x8d25, (q15_t)0x3879, (q15_t)0x8d22, (q15_t)0x3873, (q15_t)0x8d1f, (q15_t)0x386d, (q15_t)0x8d1d, - (q15_t)0x3868, (q15_t)0x8d1a, (q15_t)0x3862, (q15_t)0x8d17, (q15_t)0x385d, (q15_t)0x8d14, (q15_t)0x3857, (q15_t)0x8d12, - (q15_t)0x3851, (q15_t)0x8d0f, (q15_t)0x384c, (q15_t)0x8d0c, (q15_t)0x3846, (q15_t)0x8d09, (q15_t)0x3840, (q15_t)0x8d07, - (q15_t)0x383b, (q15_t)0x8d04, (q15_t)0x3835, (q15_t)0x8d01, (q15_t)0x382f, (q15_t)0x8cfe, (q15_t)0x382a, (q15_t)0x8cfb, - (q15_t)0x3824, (q15_t)0x8cf9, (q15_t)0x381e, (q15_t)0x8cf6, (q15_t)0x3819, (q15_t)0x8cf3, (q15_t)0x3813, (q15_t)0x8cf0, - (q15_t)0x380d, (q15_t)0x8cee, (q15_t)0x3808, (q15_t)0x8ceb, (q15_t)0x3802, (q15_t)0x8ce8, (q15_t)0x37fd, (q15_t)0x8ce5, - (q15_t)0x37f7, (q15_t)0x8ce3, (q15_t)0x37f1, (q15_t)0x8ce0, (q15_t)0x37ec, (q15_t)0x8cdd, (q15_t)0x37e6, (q15_t)0x8cda, - (q15_t)0x37e0, (q15_t)0x8cd8, (q15_t)0x37db, (q15_t)0x8cd5, (q15_t)0x37d5, (q15_t)0x8cd2, (q15_t)0x37cf, (q15_t)0x8cd0, - (q15_t)0x37ca, (q15_t)0x8ccd, (q15_t)0x37c4, (q15_t)0x8cca, (q15_t)0x37be, (q15_t)0x8cc7, (q15_t)0x37b9, (q15_t)0x8cc5, - (q15_t)0x37b3, (q15_t)0x8cc2, (q15_t)0x37ad, (q15_t)0x8cbf, (q15_t)0x37a8, (q15_t)0x8cbc, (q15_t)0x37a2, (q15_t)0x8cba, - (q15_t)0x379c, (q15_t)0x8cb7, (q15_t)0x3797, (q15_t)0x8cb4, (q15_t)0x3791, (q15_t)0x8cb1, (q15_t)0x378b, (q15_t)0x8caf, - (q15_t)0x3786, (q15_t)0x8cac, (q15_t)0x3780, (q15_t)0x8ca9, (q15_t)0x377a, (q15_t)0x8ca7, (q15_t)0x3775, (q15_t)0x8ca4, - (q15_t)0x376f, (q15_t)0x8ca1, (q15_t)0x3769, (q15_t)0x8c9e, (q15_t)0x3764, (q15_t)0x8c9c, (q15_t)0x375e, (q15_t)0x8c99, - (q15_t)0x3758, (q15_t)0x8c96, (q15_t)0x3753, (q15_t)0x8c94, (q15_t)0x374d, (q15_t)0x8c91, (q15_t)0x3747, (q15_t)0x8c8e, - (q15_t)0x3742, (q15_t)0x8c8b, (q15_t)0x373c, (q15_t)0x8c89, (q15_t)0x3736, (q15_t)0x8c86, (q15_t)0x3731, (q15_t)0x8c83, - (q15_t)0x372b, (q15_t)0x8c81, (q15_t)0x3725, (q15_t)0x8c7e, (q15_t)0x3720, (q15_t)0x8c7b, (q15_t)0x371a, (q15_t)0x8c78, - (q15_t)0x3714, (q15_t)0x8c76, (q15_t)0x370f, (q15_t)0x8c73, (q15_t)0x3709, (q15_t)0x8c70, (q15_t)0x3703, (q15_t)0x8c6e, - (q15_t)0x36fe, (q15_t)0x8c6b, (q15_t)0x36f8, (q15_t)0x8c68, (q15_t)0x36f2, (q15_t)0x8c65, (q15_t)0x36ed, (q15_t)0x8c63, - (q15_t)0x36e7, (q15_t)0x8c60, (q15_t)0x36e1, (q15_t)0x8c5d, (q15_t)0x36dc, (q15_t)0x8c5b, (q15_t)0x36d6, (q15_t)0x8c58, - (q15_t)0x36d0, (q15_t)0x8c55, (q15_t)0x36cb, (q15_t)0x8c53, (q15_t)0x36c5, (q15_t)0x8c50, (q15_t)0x36bf, (q15_t)0x8c4d, - (q15_t)0x36ba, (q15_t)0x8c4b, (q15_t)0x36b4, (q15_t)0x8c48, (q15_t)0x36ae, (q15_t)0x8c45, (q15_t)0x36a9, (q15_t)0x8c43, - (q15_t)0x36a3, (q15_t)0x8c40, (q15_t)0x369d, (q15_t)0x8c3d, (q15_t)0x3698, (q15_t)0x8c3a, (q15_t)0x3692, (q15_t)0x8c38, - (q15_t)0x368c, (q15_t)0x8c35, (q15_t)0x3686, (q15_t)0x8c32, (q15_t)0x3681, (q15_t)0x8c30, (q15_t)0x367b, (q15_t)0x8c2d, - (q15_t)0x3675, (q15_t)0x8c2a, (q15_t)0x3670, (q15_t)0x8c28, (q15_t)0x366a, (q15_t)0x8c25, (q15_t)0x3664, (q15_t)0x8c22, - (q15_t)0x365f, (q15_t)0x8c20, (q15_t)0x3659, (q15_t)0x8c1d, (q15_t)0x3653, (q15_t)0x8c1a, (q15_t)0x364e, (q15_t)0x8c18, - (q15_t)0x3648, (q15_t)0x8c15, (q15_t)0x3642, (q15_t)0x8c12, (q15_t)0x363d, (q15_t)0x8c10, (q15_t)0x3637, (q15_t)0x8c0d, - (q15_t)0x3631, (q15_t)0x8c0a, (q15_t)0x362b, (q15_t)0x8c08, (q15_t)0x3626, (q15_t)0x8c05, (q15_t)0x3620, (q15_t)0x8c02, - (q15_t)0x361a, (q15_t)0x8c00, (q15_t)0x3615, (q15_t)0x8bfd, (q15_t)0x360f, (q15_t)0x8bfa, (q15_t)0x3609, (q15_t)0x8bf8, - (q15_t)0x3604, (q15_t)0x8bf5, (q15_t)0x35fe, (q15_t)0x8bf3, (q15_t)0x35f8, (q15_t)0x8bf0, (q15_t)0x35f3, (q15_t)0x8bed, - (q15_t)0x35ed, (q15_t)0x8beb, (q15_t)0x35e7, (q15_t)0x8be8, (q15_t)0x35e1, (q15_t)0x8be5, (q15_t)0x35dc, (q15_t)0x8be3, - (q15_t)0x35d6, (q15_t)0x8be0, (q15_t)0x35d0, (q15_t)0x8bdd, (q15_t)0x35cb, (q15_t)0x8bdb, (q15_t)0x35c5, (q15_t)0x8bd8, - (q15_t)0x35bf, (q15_t)0x8bd5, (q15_t)0x35ba, (q15_t)0x8bd3, (q15_t)0x35b4, (q15_t)0x8bd0, (q15_t)0x35ae, (q15_t)0x8bce, - (q15_t)0x35a8, (q15_t)0x8bcb, (q15_t)0x35a3, (q15_t)0x8bc8, (q15_t)0x359d, (q15_t)0x8bc6, (q15_t)0x3597, (q15_t)0x8bc3, - (q15_t)0x3592, (q15_t)0x8bc0, (q15_t)0x358c, (q15_t)0x8bbe, (q15_t)0x3586, (q15_t)0x8bbb, (q15_t)0x3580, (q15_t)0x8bb8, - (q15_t)0x357b, (q15_t)0x8bb6, (q15_t)0x3575, (q15_t)0x8bb3, (q15_t)0x356f, (q15_t)0x8bb1, (q15_t)0x356a, (q15_t)0x8bae, - (q15_t)0x3564, (q15_t)0x8bab, (q15_t)0x355e, (q15_t)0x8ba9, (q15_t)0x3558, (q15_t)0x8ba6, (q15_t)0x3553, (q15_t)0x8ba4, - (q15_t)0x354d, (q15_t)0x8ba1, (q15_t)0x3547, (q15_t)0x8b9e, (q15_t)0x3542, (q15_t)0x8b9c, (q15_t)0x353c, (q15_t)0x8b99, - (q15_t)0x3536, (q15_t)0x8b96, (q15_t)0x3530, (q15_t)0x8b94, (q15_t)0x352b, (q15_t)0x8b91, (q15_t)0x3525, (q15_t)0x8b8f, - (q15_t)0x351f, (q15_t)0x8b8c, (q15_t)0x351a, (q15_t)0x8b89, (q15_t)0x3514, (q15_t)0x8b87, (q15_t)0x350e, (q15_t)0x8b84, - (q15_t)0x3508, (q15_t)0x8b82, (q15_t)0x3503, (q15_t)0x8b7f, (q15_t)0x34fd, (q15_t)0x8b7c, (q15_t)0x34f7, (q15_t)0x8b7a, - (q15_t)0x34f2, (q15_t)0x8b77, (q15_t)0x34ec, (q15_t)0x8b75, (q15_t)0x34e6, (q15_t)0x8b72, (q15_t)0x34e0, (q15_t)0x8b6f, - (q15_t)0x34db, (q15_t)0x8b6d, (q15_t)0x34d5, (q15_t)0x8b6a, (q15_t)0x34cf, (q15_t)0x8b68, (q15_t)0x34ca, (q15_t)0x8b65, - (q15_t)0x34c4, (q15_t)0x8b62, (q15_t)0x34be, (q15_t)0x8b60, (q15_t)0x34b8, (q15_t)0x8b5d, (q15_t)0x34b3, (q15_t)0x8b5b, - (q15_t)0x34ad, (q15_t)0x8b58, (q15_t)0x34a7, (q15_t)0x8b55, (q15_t)0x34a1, (q15_t)0x8b53, (q15_t)0x349c, (q15_t)0x8b50, - (q15_t)0x3496, (q15_t)0x8b4e, (q15_t)0x3490, (q15_t)0x8b4b, (q15_t)0x348b, (q15_t)0x8b49, (q15_t)0x3485, (q15_t)0x8b46, - (q15_t)0x347f, (q15_t)0x8b43, (q15_t)0x3479, (q15_t)0x8b41, (q15_t)0x3474, (q15_t)0x8b3e, (q15_t)0x346e, (q15_t)0x8b3c, - (q15_t)0x3468, (q15_t)0x8b39, (q15_t)0x3462, (q15_t)0x8b37, (q15_t)0x345d, (q15_t)0x8b34, (q15_t)0x3457, (q15_t)0x8b31, - (q15_t)0x3451, (q15_t)0x8b2f, (q15_t)0x344b, (q15_t)0x8b2c, (q15_t)0x3446, (q15_t)0x8b2a, (q15_t)0x3440, (q15_t)0x8b27, - (q15_t)0x343a, (q15_t)0x8b25, (q15_t)0x3435, (q15_t)0x8b22, (q15_t)0x342f, (q15_t)0x8b1f, (q15_t)0x3429, (q15_t)0x8b1d, - (q15_t)0x3423, (q15_t)0x8b1a, (q15_t)0x341e, (q15_t)0x8b18, (q15_t)0x3418, (q15_t)0x8b15, (q15_t)0x3412, (q15_t)0x8b13, - (q15_t)0x340c, (q15_t)0x8b10, (q15_t)0x3407, (q15_t)0x8b0e, (q15_t)0x3401, (q15_t)0x8b0b, (q15_t)0x33fb, (q15_t)0x8b08, - (q15_t)0x33f5, (q15_t)0x8b06, (q15_t)0x33f0, (q15_t)0x8b03, (q15_t)0x33ea, (q15_t)0x8b01, (q15_t)0x33e4, (q15_t)0x8afe, - (q15_t)0x33de, (q15_t)0x8afc, (q15_t)0x33d9, (q15_t)0x8af9, (q15_t)0x33d3, (q15_t)0x8af7, (q15_t)0x33cd, (q15_t)0x8af4, - (q15_t)0x33c7, (q15_t)0x8af1, (q15_t)0x33c2, (q15_t)0x8aef, (q15_t)0x33bc, (q15_t)0x8aec, (q15_t)0x33b6, (q15_t)0x8aea, - (q15_t)0x33b0, (q15_t)0x8ae7, (q15_t)0x33ab, (q15_t)0x8ae5, (q15_t)0x33a5, (q15_t)0x8ae2, (q15_t)0x339f, (q15_t)0x8ae0, - (q15_t)0x3399, (q15_t)0x8add, (q15_t)0x3394, (q15_t)0x8adb, (q15_t)0x338e, (q15_t)0x8ad8, (q15_t)0x3388, (q15_t)0x8ad6, - (q15_t)0x3382, (q15_t)0x8ad3, (q15_t)0x337d, (q15_t)0x8ad1, (q15_t)0x3377, (q15_t)0x8ace, (q15_t)0x3371, (q15_t)0x8acb, - (q15_t)0x336b, (q15_t)0x8ac9, (q15_t)0x3366, (q15_t)0x8ac6, (q15_t)0x3360, (q15_t)0x8ac4, (q15_t)0x335a, (q15_t)0x8ac1, - (q15_t)0x3354, (q15_t)0x8abf, (q15_t)0x334f, (q15_t)0x8abc, (q15_t)0x3349, (q15_t)0x8aba, (q15_t)0x3343, (q15_t)0x8ab7, - (q15_t)0x333d, (q15_t)0x8ab5, (q15_t)0x3338, (q15_t)0x8ab2, (q15_t)0x3332, (q15_t)0x8ab0, (q15_t)0x332c, (q15_t)0x8aad, - (q15_t)0x3326, (q15_t)0x8aab, (q15_t)0x3321, (q15_t)0x8aa8, (q15_t)0x331b, (q15_t)0x8aa6, (q15_t)0x3315, (q15_t)0x8aa3, - (q15_t)0x330f, (q15_t)0x8aa1, (q15_t)0x330a, (q15_t)0x8a9e, (q15_t)0x3304, (q15_t)0x8a9c, (q15_t)0x32fe, (q15_t)0x8a99, - (q15_t)0x32f8, (q15_t)0x8a97, (q15_t)0x32f3, (q15_t)0x8a94, (q15_t)0x32ed, (q15_t)0x8a92, (q15_t)0x32e7, (q15_t)0x8a8f, - (q15_t)0x32e1, (q15_t)0x8a8d, (q15_t)0x32db, (q15_t)0x8a8a, (q15_t)0x32d6, (q15_t)0x8a88, (q15_t)0x32d0, (q15_t)0x8a85, - (q15_t)0x32ca, (q15_t)0x8a83, (q15_t)0x32c4, (q15_t)0x8a80, (q15_t)0x32bf, (q15_t)0x8a7e, (q15_t)0x32b9, (q15_t)0x8a7b, - (q15_t)0x32b3, (q15_t)0x8a79, (q15_t)0x32ad, (q15_t)0x8a76, (q15_t)0x32a8, (q15_t)0x8a74, (q15_t)0x32a2, (q15_t)0x8a71, - (q15_t)0x329c, (q15_t)0x8a6f, (q15_t)0x3296, (q15_t)0x8a6c, (q15_t)0x3290, (q15_t)0x8a6a, (q15_t)0x328b, (q15_t)0x8a67, - (q15_t)0x3285, (q15_t)0x8a65, (q15_t)0x327f, (q15_t)0x8a62, (q15_t)0x3279, (q15_t)0x8a60, (q15_t)0x3274, (q15_t)0x8a5d, - (q15_t)0x326e, (q15_t)0x8a5b, (q15_t)0x3268, (q15_t)0x8a59, (q15_t)0x3262, (q15_t)0x8a56, (q15_t)0x325d, (q15_t)0x8a54, - (q15_t)0x3257, (q15_t)0x8a51, (q15_t)0x3251, (q15_t)0x8a4f, (q15_t)0x324b, (q15_t)0x8a4c, (q15_t)0x3245, (q15_t)0x8a4a, - (q15_t)0x3240, (q15_t)0x8a47, (q15_t)0x323a, (q15_t)0x8a45, (q15_t)0x3234, (q15_t)0x8a42, (q15_t)0x322e, (q15_t)0x8a40, - (q15_t)0x3228, (q15_t)0x8a3d, (q15_t)0x3223, (q15_t)0x8a3b, (q15_t)0x321d, (q15_t)0x8a38, (q15_t)0x3217, (q15_t)0x8a36, - (q15_t)0x3211, (q15_t)0x8a34, (q15_t)0x320c, (q15_t)0x8a31, (q15_t)0x3206, (q15_t)0x8a2f, (q15_t)0x3200, (q15_t)0x8a2c, - (q15_t)0x31fa, (q15_t)0x8a2a, (q15_t)0x31f4, (q15_t)0x8a27, (q15_t)0x31ef, (q15_t)0x8a25, (q15_t)0x31e9, (q15_t)0x8a22, - (q15_t)0x31e3, (q15_t)0x8a20, (q15_t)0x31dd, (q15_t)0x8a1d, (q15_t)0x31d8, (q15_t)0x8a1b, (q15_t)0x31d2, (q15_t)0x8a19, - (q15_t)0x31cc, (q15_t)0x8a16, (q15_t)0x31c6, (q15_t)0x8a14, (q15_t)0x31c0, (q15_t)0x8a11, (q15_t)0x31bb, (q15_t)0x8a0f, - (q15_t)0x31b5, (q15_t)0x8a0c, (q15_t)0x31af, (q15_t)0x8a0a, (q15_t)0x31a9, (q15_t)0x8a07, (q15_t)0x31a3, (q15_t)0x8a05, - (q15_t)0x319e, (q15_t)0x8a03, (q15_t)0x3198, (q15_t)0x8a00, (q15_t)0x3192, (q15_t)0x89fe, (q15_t)0x318c, (q15_t)0x89fb, - (q15_t)0x3186, (q15_t)0x89f9, (q15_t)0x3181, (q15_t)0x89f6, (q15_t)0x317b, (q15_t)0x89f4, (q15_t)0x3175, (q15_t)0x89f2, - (q15_t)0x316f, (q15_t)0x89ef, (q15_t)0x3169, (q15_t)0x89ed, (q15_t)0x3164, (q15_t)0x89ea, (q15_t)0x315e, (q15_t)0x89e8, - (q15_t)0x3158, (q15_t)0x89e5, (q15_t)0x3152, (q15_t)0x89e3, (q15_t)0x314c, (q15_t)0x89e1, (q15_t)0x3147, (q15_t)0x89de, - (q15_t)0x3141, (q15_t)0x89dc, (q15_t)0x313b, (q15_t)0x89d9, (q15_t)0x3135, (q15_t)0x89d7, (q15_t)0x312f, (q15_t)0x89d5, - (q15_t)0x312a, (q15_t)0x89d2, (q15_t)0x3124, (q15_t)0x89d0, (q15_t)0x311e, (q15_t)0x89cd, (q15_t)0x3118, (q15_t)0x89cb, - (q15_t)0x3112, (q15_t)0x89c8, (q15_t)0x310d, (q15_t)0x89c6, (q15_t)0x3107, (q15_t)0x89c4, (q15_t)0x3101, (q15_t)0x89c1, - (q15_t)0x30fb, (q15_t)0x89bf, (q15_t)0x30f5, (q15_t)0x89bc, (q15_t)0x30f0, (q15_t)0x89ba, (q15_t)0x30ea, (q15_t)0x89b8, - (q15_t)0x30e4, (q15_t)0x89b5, (q15_t)0x30de, (q15_t)0x89b3, (q15_t)0x30d8, (q15_t)0x89b0, (q15_t)0x30d3, (q15_t)0x89ae, - (q15_t)0x30cd, (q15_t)0x89ac, (q15_t)0x30c7, (q15_t)0x89a9, (q15_t)0x30c1, (q15_t)0x89a7, (q15_t)0x30bb, (q15_t)0x89a4, - (q15_t)0x30b6, (q15_t)0x89a2, (q15_t)0x30b0, (q15_t)0x89a0, (q15_t)0x30aa, (q15_t)0x899d, (q15_t)0x30a4, (q15_t)0x899b, - (q15_t)0x309e, (q15_t)0x8998, (q15_t)0x3099, (q15_t)0x8996, (q15_t)0x3093, (q15_t)0x8994, (q15_t)0x308d, (q15_t)0x8991, - (q15_t)0x3087, (q15_t)0x898f, (q15_t)0x3081, (q15_t)0x898d, (q15_t)0x307b, (q15_t)0x898a, (q15_t)0x3076, (q15_t)0x8988, - (q15_t)0x3070, (q15_t)0x8985, (q15_t)0x306a, (q15_t)0x8983, (q15_t)0x3064, (q15_t)0x8981, (q15_t)0x305e, (q15_t)0x897e, - (q15_t)0x3059, (q15_t)0x897c, (q15_t)0x3053, (q15_t)0x897a, (q15_t)0x304d, (q15_t)0x8977, (q15_t)0x3047, (q15_t)0x8975, - (q15_t)0x3041, (q15_t)0x8972, (q15_t)0x303b, (q15_t)0x8970, (q15_t)0x3036, (q15_t)0x896e, (q15_t)0x3030, (q15_t)0x896b, - (q15_t)0x302a, (q15_t)0x8969, (q15_t)0x3024, (q15_t)0x8967, (q15_t)0x301e, (q15_t)0x8964, (q15_t)0x3019, (q15_t)0x8962, - (q15_t)0x3013, (q15_t)0x8960, (q15_t)0x300d, (q15_t)0x895d, (q15_t)0x3007, (q15_t)0x895b, (q15_t)0x3001, (q15_t)0x8958, - (q15_t)0x2ffb, (q15_t)0x8956, (q15_t)0x2ff6, (q15_t)0x8954, (q15_t)0x2ff0, (q15_t)0x8951, (q15_t)0x2fea, (q15_t)0x894f, - (q15_t)0x2fe4, (q15_t)0x894d, (q15_t)0x2fde, (q15_t)0x894a, (q15_t)0x2fd8, (q15_t)0x8948, (q15_t)0x2fd3, (q15_t)0x8946, - (q15_t)0x2fcd, (q15_t)0x8943, (q15_t)0x2fc7, (q15_t)0x8941, (q15_t)0x2fc1, (q15_t)0x893f, (q15_t)0x2fbb, (q15_t)0x893c, - (q15_t)0x2fb5, (q15_t)0x893a, (q15_t)0x2fb0, (q15_t)0x8938, (q15_t)0x2faa, (q15_t)0x8935, (q15_t)0x2fa4, (q15_t)0x8933, - (q15_t)0x2f9e, (q15_t)0x8931, (q15_t)0x2f98, (q15_t)0x892e, (q15_t)0x2f92, (q15_t)0x892c, (q15_t)0x2f8d, (q15_t)0x892a, - (q15_t)0x2f87, (q15_t)0x8927, (q15_t)0x2f81, (q15_t)0x8925, (q15_t)0x2f7b, (q15_t)0x8923, (q15_t)0x2f75, (q15_t)0x8920, - (q15_t)0x2f6f, (q15_t)0x891e, (q15_t)0x2f6a, (q15_t)0x891c, (q15_t)0x2f64, (q15_t)0x8919, (q15_t)0x2f5e, (q15_t)0x8917, - (q15_t)0x2f58, (q15_t)0x8915, (q15_t)0x2f52, (q15_t)0x8912, (q15_t)0x2f4c, (q15_t)0x8910, (q15_t)0x2f47, (q15_t)0x890e, - (q15_t)0x2f41, (q15_t)0x890b, (q15_t)0x2f3b, (q15_t)0x8909, (q15_t)0x2f35, (q15_t)0x8907, (q15_t)0x2f2f, (q15_t)0x8904, - (q15_t)0x2f29, (q15_t)0x8902, (q15_t)0x2f24, (q15_t)0x8900, (q15_t)0x2f1e, (q15_t)0x88fd, (q15_t)0x2f18, (q15_t)0x88fb, - (q15_t)0x2f12, (q15_t)0x88f9, (q15_t)0x2f0c, (q15_t)0x88f6, (q15_t)0x2f06, (q15_t)0x88f4, (q15_t)0x2f01, (q15_t)0x88f2, - (q15_t)0x2efb, (q15_t)0x88f0, (q15_t)0x2ef5, (q15_t)0x88ed, (q15_t)0x2eef, (q15_t)0x88eb, (q15_t)0x2ee9, (q15_t)0x88e9, - (q15_t)0x2ee3, (q15_t)0x88e6, (q15_t)0x2edd, (q15_t)0x88e4, (q15_t)0x2ed8, (q15_t)0x88e2, (q15_t)0x2ed2, (q15_t)0x88df, - (q15_t)0x2ecc, (q15_t)0x88dd, (q15_t)0x2ec6, (q15_t)0x88db, (q15_t)0x2ec0, (q15_t)0x88d9, (q15_t)0x2eba, (q15_t)0x88d6, - (q15_t)0x2eb5, (q15_t)0x88d4, (q15_t)0x2eaf, (q15_t)0x88d2, (q15_t)0x2ea9, (q15_t)0x88cf, (q15_t)0x2ea3, (q15_t)0x88cd, - (q15_t)0x2e9d, (q15_t)0x88cb, (q15_t)0x2e97, (q15_t)0x88c8, (q15_t)0x2e91, (q15_t)0x88c6, (q15_t)0x2e8c, (q15_t)0x88c4, - (q15_t)0x2e86, (q15_t)0x88c2, (q15_t)0x2e80, (q15_t)0x88bf, (q15_t)0x2e7a, (q15_t)0x88bd, (q15_t)0x2e74, (q15_t)0x88bb, - (q15_t)0x2e6e, (q15_t)0x88b9, (q15_t)0x2e68, (q15_t)0x88b6, (q15_t)0x2e63, (q15_t)0x88b4, (q15_t)0x2e5d, (q15_t)0x88b2, - (q15_t)0x2e57, (q15_t)0x88af, (q15_t)0x2e51, (q15_t)0x88ad, (q15_t)0x2e4b, (q15_t)0x88ab, (q15_t)0x2e45, (q15_t)0x88a9, - (q15_t)0x2e3f, (q15_t)0x88a6, (q15_t)0x2e3a, (q15_t)0x88a4, (q15_t)0x2e34, (q15_t)0x88a2, (q15_t)0x2e2e, (q15_t)0x88a0, - (q15_t)0x2e28, (q15_t)0x889d, (q15_t)0x2e22, (q15_t)0x889b, (q15_t)0x2e1c, (q15_t)0x8899, (q15_t)0x2e16, (q15_t)0x8896, - (q15_t)0x2e11, (q15_t)0x8894, (q15_t)0x2e0b, (q15_t)0x8892, (q15_t)0x2e05, (q15_t)0x8890, (q15_t)0x2dff, (q15_t)0x888d, - (q15_t)0x2df9, (q15_t)0x888b, (q15_t)0x2df3, (q15_t)0x8889, (q15_t)0x2ded, (q15_t)0x8887, (q15_t)0x2de7, (q15_t)0x8884, - (q15_t)0x2de2, (q15_t)0x8882, (q15_t)0x2ddc, (q15_t)0x8880, (q15_t)0x2dd6, (q15_t)0x887e, (q15_t)0x2dd0, (q15_t)0x887b, - (q15_t)0x2dca, (q15_t)0x8879, (q15_t)0x2dc4, (q15_t)0x8877, (q15_t)0x2dbe, (q15_t)0x8875, (q15_t)0x2db9, (q15_t)0x8872, - (q15_t)0x2db3, (q15_t)0x8870, (q15_t)0x2dad, (q15_t)0x886e, (q15_t)0x2da7, (q15_t)0x886c, (q15_t)0x2da1, (q15_t)0x8869, - (q15_t)0x2d9b, (q15_t)0x8867, (q15_t)0x2d95, (q15_t)0x8865, (q15_t)0x2d8f, (q15_t)0x8863, (q15_t)0x2d8a, (q15_t)0x8860, - (q15_t)0x2d84, (q15_t)0x885e, (q15_t)0x2d7e, (q15_t)0x885c, (q15_t)0x2d78, (q15_t)0x885a, (q15_t)0x2d72, (q15_t)0x8858, - (q15_t)0x2d6c, (q15_t)0x8855, (q15_t)0x2d66, (q15_t)0x8853, (q15_t)0x2d60, (q15_t)0x8851, (q15_t)0x2d5b, (q15_t)0x884f, - (q15_t)0x2d55, (q15_t)0x884c, (q15_t)0x2d4f, (q15_t)0x884a, (q15_t)0x2d49, (q15_t)0x8848, (q15_t)0x2d43, (q15_t)0x8846, - (q15_t)0x2d3d, (q15_t)0x8844, (q15_t)0x2d37, (q15_t)0x8841, (q15_t)0x2d31, (q15_t)0x883f, (q15_t)0x2d2c, (q15_t)0x883d, - (q15_t)0x2d26, (q15_t)0x883b, (q15_t)0x2d20, (q15_t)0x8838, (q15_t)0x2d1a, (q15_t)0x8836, (q15_t)0x2d14, (q15_t)0x8834, - (q15_t)0x2d0e, (q15_t)0x8832, (q15_t)0x2d08, (q15_t)0x8830, (q15_t)0x2d02, (q15_t)0x882d, (q15_t)0x2cfd, (q15_t)0x882b, - (q15_t)0x2cf7, (q15_t)0x8829, (q15_t)0x2cf1, (q15_t)0x8827, (q15_t)0x2ceb, (q15_t)0x8825, (q15_t)0x2ce5, (q15_t)0x8822, - (q15_t)0x2cdf, (q15_t)0x8820, (q15_t)0x2cd9, (q15_t)0x881e, (q15_t)0x2cd3, (q15_t)0x881c, (q15_t)0x2ccd, (q15_t)0x881a, - (q15_t)0x2cc8, (q15_t)0x8817, (q15_t)0x2cc2, (q15_t)0x8815, (q15_t)0x2cbc, (q15_t)0x8813, (q15_t)0x2cb6, (q15_t)0x8811, - (q15_t)0x2cb0, (q15_t)0x880f, (q15_t)0x2caa, (q15_t)0x880c, (q15_t)0x2ca4, (q15_t)0x880a, (q15_t)0x2c9e, (q15_t)0x8808, - (q15_t)0x2c98, (q15_t)0x8806, (q15_t)0x2c93, (q15_t)0x8804, (q15_t)0x2c8d, (q15_t)0x8801, (q15_t)0x2c87, (q15_t)0x87ff, - (q15_t)0x2c81, (q15_t)0x87fd, (q15_t)0x2c7b, (q15_t)0x87fb, (q15_t)0x2c75, (q15_t)0x87f9, (q15_t)0x2c6f, (q15_t)0x87f6, - (q15_t)0x2c69, (q15_t)0x87f4, (q15_t)0x2c63, (q15_t)0x87f2, (q15_t)0x2c5e, (q15_t)0x87f0, (q15_t)0x2c58, (q15_t)0x87ee, - (q15_t)0x2c52, (q15_t)0x87ec, (q15_t)0x2c4c, (q15_t)0x87e9, (q15_t)0x2c46, (q15_t)0x87e7, (q15_t)0x2c40, (q15_t)0x87e5, - (q15_t)0x2c3a, (q15_t)0x87e3, (q15_t)0x2c34, (q15_t)0x87e1, (q15_t)0x2c2e, (q15_t)0x87df, (q15_t)0x2c29, (q15_t)0x87dc, - (q15_t)0x2c23, (q15_t)0x87da, (q15_t)0x2c1d, (q15_t)0x87d8, (q15_t)0x2c17, (q15_t)0x87d6, (q15_t)0x2c11, (q15_t)0x87d4, - (q15_t)0x2c0b, (q15_t)0x87d2, (q15_t)0x2c05, (q15_t)0x87cf, (q15_t)0x2bff, (q15_t)0x87cd, (q15_t)0x2bf9, (q15_t)0x87cb, - (q15_t)0x2bf3, (q15_t)0x87c9, (q15_t)0x2bee, (q15_t)0x87c7, (q15_t)0x2be8, (q15_t)0x87c5, (q15_t)0x2be2, (q15_t)0x87c2, - (q15_t)0x2bdc, (q15_t)0x87c0, (q15_t)0x2bd6, (q15_t)0x87be, (q15_t)0x2bd0, (q15_t)0x87bc, (q15_t)0x2bca, (q15_t)0x87ba, - (q15_t)0x2bc4, (q15_t)0x87b8, (q15_t)0x2bbe, (q15_t)0x87b6, (q15_t)0x2bb8, (q15_t)0x87b3, (q15_t)0x2bb2, (q15_t)0x87b1, - (q15_t)0x2bad, (q15_t)0x87af, (q15_t)0x2ba7, (q15_t)0x87ad, (q15_t)0x2ba1, (q15_t)0x87ab, (q15_t)0x2b9b, (q15_t)0x87a9, - (q15_t)0x2b95, (q15_t)0x87a7, (q15_t)0x2b8f, (q15_t)0x87a4, (q15_t)0x2b89, (q15_t)0x87a2, (q15_t)0x2b83, (q15_t)0x87a0, - (q15_t)0x2b7d, (q15_t)0x879e, (q15_t)0x2b77, (q15_t)0x879c, (q15_t)0x2b71, (q15_t)0x879a, (q15_t)0x2b6c, (q15_t)0x8798, - (q15_t)0x2b66, (q15_t)0x8795, (q15_t)0x2b60, (q15_t)0x8793, (q15_t)0x2b5a, (q15_t)0x8791, (q15_t)0x2b54, (q15_t)0x878f, - (q15_t)0x2b4e, (q15_t)0x878d, (q15_t)0x2b48, (q15_t)0x878b, (q15_t)0x2b42, (q15_t)0x8789, (q15_t)0x2b3c, (q15_t)0x8787, - (q15_t)0x2b36, (q15_t)0x8784, (q15_t)0x2b30, (q15_t)0x8782, (q15_t)0x2b2b, (q15_t)0x8780, (q15_t)0x2b25, (q15_t)0x877e, - (q15_t)0x2b1f, (q15_t)0x877c, (q15_t)0x2b19, (q15_t)0x877a, (q15_t)0x2b13, (q15_t)0x8778, (q15_t)0x2b0d, (q15_t)0x8776, - (q15_t)0x2b07, (q15_t)0x8774, (q15_t)0x2b01, (q15_t)0x8771, (q15_t)0x2afb, (q15_t)0x876f, (q15_t)0x2af5, (q15_t)0x876d, - (q15_t)0x2aef, (q15_t)0x876b, (q15_t)0x2ae9, (q15_t)0x8769, (q15_t)0x2ae4, (q15_t)0x8767, (q15_t)0x2ade, (q15_t)0x8765, - (q15_t)0x2ad8, (q15_t)0x8763, (q15_t)0x2ad2, (q15_t)0x8761, (q15_t)0x2acc, (q15_t)0x875e, (q15_t)0x2ac6, (q15_t)0x875c, - (q15_t)0x2ac0, (q15_t)0x875a, (q15_t)0x2aba, (q15_t)0x8758, (q15_t)0x2ab4, (q15_t)0x8756, (q15_t)0x2aae, (q15_t)0x8754, - (q15_t)0x2aa8, (q15_t)0x8752, (q15_t)0x2aa2, (q15_t)0x8750, (q15_t)0x2a9c, (q15_t)0x874e, (q15_t)0x2a97, (q15_t)0x874c, - (q15_t)0x2a91, (q15_t)0x874a, (q15_t)0x2a8b, (q15_t)0x8747, (q15_t)0x2a85, (q15_t)0x8745, (q15_t)0x2a7f, (q15_t)0x8743, - (q15_t)0x2a79, (q15_t)0x8741, (q15_t)0x2a73, (q15_t)0x873f, (q15_t)0x2a6d, (q15_t)0x873d, (q15_t)0x2a67, (q15_t)0x873b, - (q15_t)0x2a61, (q15_t)0x8739, (q15_t)0x2a5b, (q15_t)0x8737, (q15_t)0x2a55, (q15_t)0x8735, (q15_t)0x2a4f, (q15_t)0x8733, - (q15_t)0x2a49, (q15_t)0x8731, (q15_t)0x2a44, (q15_t)0x872e, (q15_t)0x2a3e, (q15_t)0x872c, (q15_t)0x2a38, (q15_t)0x872a, - (q15_t)0x2a32, (q15_t)0x8728, (q15_t)0x2a2c, (q15_t)0x8726, (q15_t)0x2a26, (q15_t)0x8724, (q15_t)0x2a20, (q15_t)0x8722, - (q15_t)0x2a1a, (q15_t)0x8720, (q15_t)0x2a14, (q15_t)0x871e, (q15_t)0x2a0e, (q15_t)0x871c, (q15_t)0x2a08, (q15_t)0x871a, - (q15_t)0x2a02, (q15_t)0x8718, (q15_t)0x29fc, (q15_t)0x8716, (q15_t)0x29f6, (q15_t)0x8714, (q15_t)0x29f0, (q15_t)0x8712, - (q15_t)0x29eb, (q15_t)0x870f, (q15_t)0x29e5, (q15_t)0x870d, (q15_t)0x29df, (q15_t)0x870b, (q15_t)0x29d9, (q15_t)0x8709, - (q15_t)0x29d3, (q15_t)0x8707, (q15_t)0x29cd, (q15_t)0x8705, (q15_t)0x29c7, (q15_t)0x8703, (q15_t)0x29c1, (q15_t)0x8701, - (q15_t)0x29bb, (q15_t)0x86ff, (q15_t)0x29b5, (q15_t)0x86fd, (q15_t)0x29af, (q15_t)0x86fb, (q15_t)0x29a9, (q15_t)0x86f9, - (q15_t)0x29a3, (q15_t)0x86f7, (q15_t)0x299d, (q15_t)0x86f5, (q15_t)0x2997, (q15_t)0x86f3, (q15_t)0x2991, (q15_t)0x86f1, - (q15_t)0x298b, (q15_t)0x86ef, (q15_t)0x2986, (q15_t)0x86ed, (q15_t)0x2980, (q15_t)0x86eb, (q15_t)0x297a, (q15_t)0x86e9, - (q15_t)0x2974, (q15_t)0x86e7, (q15_t)0x296e, (q15_t)0x86e4, (q15_t)0x2968, (q15_t)0x86e2, (q15_t)0x2962, (q15_t)0x86e0, - (q15_t)0x295c, (q15_t)0x86de, (q15_t)0x2956, (q15_t)0x86dc, (q15_t)0x2950, (q15_t)0x86da, (q15_t)0x294a, (q15_t)0x86d8, - (q15_t)0x2944, (q15_t)0x86d6, (q15_t)0x293e, (q15_t)0x86d4, (q15_t)0x2938, (q15_t)0x86d2, (q15_t)0x2932, (q15_t)0x86d0, - (q15_t)0x292c, (q15_t)0x86ce, (q15_t)0x2926, (q15_t)0x86cc, (q15_t)0x2920, (q15_t)0x86ca, (q15_t)0x291b, (q15_t)0x86c8, - (q15_t)0x2915, (q15_t)0x86c6, (q15_t)0x290f, (q15_t)0x86c4, (q15_t)0x2909, (q15_t)0x86c2, (q15_t)0x2903, (q15_t)0x86c0, - (q15_t)0x28fd, (q15_t)0x86be, (q15_t)0x28f7, (q15_t)0x86bc, (q15_t)0x28f1, (q15_t)0x86ba, (q15_t)0x28eb, (q15_t)0x86b8, - (q15_t)0x28e5, (q15_t)0x86b6, (q15_t)0x28df, (q15_t)0x86b4, (q15_t)0x28d9, (q15_t)0x86b2, (q15_t)0x28d3, (q15_t)0x86b0, - (q15_t)0x28cd, (q15_t)0x86ae, (q15_t)0x28c7, (q15_t)0x86ac, (q15_t)0x28c1, (q15_t)0x86aa, (q15_t)0x28bb, (q15_t)0x86a8, - (q15_t)0x28b5, (q15_t)0x86a6, (q15_t)0x28af, (q15_t)0x86a4, (q15_t)0x28a9, (q15_t)0x86a2, (q15_t)0x28a3, (q15_t)0x86a0, - (q15_t)0x289d, (q15_t)0x869e, (q15_t)0x2898, (q15_t)0x869c, (q15_t)0x2892, (q15_t)0x869a, (q15_t)0x288c, (q15_t)0x8698, - (q15_t)0x2886, (q15_t)0x8696, (q15_t)0x2880, (q15_t)0x8694, (q15_t)0x287a, (q15_t)0x8692, (q15_t)0x2874, (q15_t)0x8690, - (q15_t)0x286e, (q15_t)0x868e, (q15_t)0x2868, (q15_t)0x868c, (q15_t)0x2862, (q15_t)0x868a, (q15_t)0x285c, (q15_t)0x8688, - (q15_t)0x2856, (q15_t)0x8686, (q15_t)0x2850, (q15_t)0x8684, (q15_t)0x284a, (q15_t)0x8682, (q15_t)0x2844, (q15_t)0x8680, - (q15_t)0x283e, (q15_t)0x867e, (q15_t)0x2838, (q15_t)0x867c, (q15_t)0x2832, (q15_t)0x867a, (q15_t)0x282c, (q15_t)0x8678, - (q15_t)0x2826, (q15_t)0x8676, (q15_t)0x2820, (q15_t)0x8674, (q15_t)0x281a, (q15_t)0x8672, (q15_t)0x2814, (q15_t)0x8670, - (q15_t)0x280e, (q15_t)0x866e, (q15_t)0x2808, (q15_t)0x866d, (q15_t)0x2802, (q15_t)0x866b, (q15_t)0x27fc, (q15_t)0x8669, - (q15_t)0x27f6, (q15_t)0x8667, (q15_t)0x27f1, (q15_t)0x8665, (q15_t)0x27eb, (q15_t)0x8663, (q15_t)0x27e5, (q15_t)0x8661, - (q15_t)0x27df, (q15_t)0x865f, (q15_t)0x27d9, (q15_t)0x865d, (q15_t)0x27d3, (q15_t)0x865b, (q15_t)0x27cd, (q15_t)0x8659, - (q15_t)0x27c7, (q15_t)0x8657, (q15_t)0x27c1, (q15_t)0x8655, (q15_t)0x27bb, (q15_t)0x8653, (q15_t)0x27b5, (q15_t)0x8651, - (q15_t)0x27af, (q15_t)0x864f, (q15_t)0x27a9, (q15_t)0x864d, (q15_t)0x27a3, (q15_t)0x864b, (q15_t)0x279d, (q15_t)0x8649, - (q15_t)0x2797, (q15_t)0x8647, (q15_t)0x2791, (q15_t)0x8645, (q15_t)0x278b, (q15_t)0x8644, (q15_t)0x2785, (q15_t)0x8642, - (q15_t)0x277f, (q15_t)0x8640, (q15_t)0x2779, (q15_t)0x863e, (q15_t)0x2773, (q15_t)0x863c, (q15_t)0x276d, (q15_t)0x863a, - (q15_t)0x2767, (q15_t)0x8638, (q15_t)0x2761, (q15_t)0x8636, (q15_t)0x275b, (q15_t)0x8634, (q15_t)0x2755, (q15_t)0x8632, - (q15_t)0x274f, (q15_t)0x8630, (q15_t)0x2749, (q15_t)0x862e, (q15_t)0x2743, (q15_t)0x862c, (q15_t)0x273d, (q15_t)0x862a, - (q15_t)0x2737, (q15_t)0x8628, (q15_t)0x2731, (q15_t)0x8627, (q15_t)0x272b, (q15_t)0x8625, (q15_t)0x2725, (q15_t)0x8623, - (q15_t)0x271f, (q15_t)0x8621, (q15_t)0x2719, (q15_t)0x861f, (q15_t)0x2713, (q15_t)0x861d, (q15_t)0x270d, (q15_t)0x861b, - (q15_t)0x2707, (q15_t)0x8619, (q15_t)0x2701, (q15_t)0x8617, (q15_t)0x26fb, (q15_t)0x8615, (q15_t)0x26f5, (q15_t)0x8613, - (q15_t)0x26ef, (q15_t)0x8611, (q15_t)0x26e9, (q15_t)0x8610, (q15_t)0x26e4, (q15_t)0x860e, (q15_t)0x26de, (q15_t)0x860c, - (q15_t)0x26d8, (q15_t)0x860a, (q15_t)0x26d2, (q15_t)0x8608, (q15_t)0x26cc, (q15_t)0x8606, (q15_t)0x26c6, (q15_t)0x8604, - (q15_t)0x26c0, (q15_t)0x8602, (q15_t)0x26ba, (q15_t)0x8600, (q15_t)0x26b4, (q15_t)0x85fe, (q15_t)0x26ae, (q15_t)0x85fc, - (q15_t)0x26a8, (q15_t)0x85fb, (q15_t)0x26a2, (q15_t)0x85f9, (q15_t)0x269c, (q15_t)0x85f7, (q15_t)0x2696, (q15_t)0x85f5, - (q15_t)0x2690, (q15_t)0x85f3, (q15_t)0x268a, (q15_t)0x85f1, (q15_t)0x2684, (q15_t)0x85ef, (q15_t)0x267e, (q15_t)0x85ed, - (q15_t)0x2678, (q15_t)0x85eb, (q15_t)0x2672, (q15_t)0x85ea, (q15_t)0x266c, (q15_t)0x85e8, (q15_t)0x2666, (q15_t)0x85e6, - (q15_t)0x2660, (q15_t)0x85e4, (q15_t)0x265a, (q15_t)0x85e2, (q15_t)0x2654, (q15_t)0x85e0, (q15_t)0x264e, (q15_t)0x85de, - (q15_t)0x2648, (q15_t)0x85dc, (q15_t)0x2642, (q15_t)0x85da, (q15_t)0x263c, (q15_t)0x85d9, (q15_t)0x2636, (q15_t)0x85d7, - (q15_t)0x2630, (q15_t)0x85d5, (q15_t)0x262a, (q15_t)0x85d3, (q15_t)0x2624, (q15_t)0x85d1, (q15_t)0x261e, (q15_t)0x85cf, - (q15_t)0x2618, (q15_t)0x85cd, (q15_t)0x2612, (q15_t)0x85cb, (q15_t)0x260c, (q15_t)0x85ca, (q15_t)0x2606, (q15_t)0x85c8, - (q15_t)0x2600, (q15_t)0x85c6, (q15_t)0x25fa, (q15_t)0x85c4, (q15_t)0x25f4, (q15_t)0x85c2, (q15_t)0x25ee, (q15_t)0x85c0, - (q15_t)0x25e8, (q15_t)0x85be, (q15_t)0x25e2, (q15_t)0x85bd, (q15_t)0x25dc, (q15_t)0x85bb, (q15_t)0x25d6, (q15_t)0x85b9, - (q15_t)0x25d0, (q15_t)0x85b7, (q15_t)0x25ca, (q15_t)0x85b5, (q15_t)0x25c4, (q15_t)0x85b3, (q15_t)0x25be, (q15_t)0x85b1, - (q15_t)0x25b8, (q15_t)0x85b0, (q15_t)0x25b2, (q15_t)0x85ae, (q15_t)0x25ac, (q15_t)0x85ac, (q15_t)0x25a6, (q15_t)0x85aa, - (q15_t)0x25a0, (q15_t)0x85a8, (q15_t)0x259a, (q15_t)0x85a6, (q15_t)0x2594, (q15_t)0x85a4, (q15_t)0x258e, (q15_t)0x85a3, - (q15_t)0x2588, (q15_t)0x85a1, (q15_t)0x2582, (q15_t)0x859f, (q15_t)0x257c, (q15_t)0x859d, (q15_t)0x2576, (q15_t)0x859b, - (q15_t)0x2570, (q15_t)0x8599, (q15_t)0x256a, (q15_t)0x8598, (q15_t)0x2564, (q15_t)0x8596, (q15_t)0x255e, (q15_t)0x8594, - (q15_t)0x2558, (q15_t)0x8592, (q15_t)0x2552, (q15_t)0x8590, (q15_t)0x254c, (q15_t)0x858e, (q15_t)0x2546, (q15_t)0x858d, - (q15_t)0x2540, (q15_t)0x858b, (q15_t)0x253a, (q15_t)0x8589, (q15_t)0x2534, (q15_t)0x8587, (q15_t)0x252e, (q15_t)0x8585, - (q15_t)0x2528, (q15_t)0x8583, (q15_t)0x2522, (q15_t)0x8582, (q15_t)0x251c, (q15_t)0x8580, (q15_t)0x2516, (q15_t)0x857e, - (q15_t)0x250f, (q15_t)0x857c, (q15_t)0x2509, (q15_t)0x857a, (q15_t)0x2503, (q15_t)0x8579, (q15_t)0x24fd, (q15_t)0x8577, - (q15_t)0x24f7, (q15_t)0x8575, (q15_t)0x24f1, (q15_t)0x8573, (q15_t)0x24eb, (q15_t)0x8571, (q15_t)0x24e5, (q15_t)0x856f, - (q15_t)0x24df, (q15_t)0x856e, (q15_t)0x24d9, (q15_t)0x856c, (q15_t)0x24d3, (q15_t)0x856a, (q15_t)0x24cd, (q15_t)0x8568, - (q15_t)0x24c7, (q15_t)0x8566, (q15_t)0x24c1, (q15_t)0x8565, (q15_t)0x24bb, (q15_t)0x8563, (q15_t)0x24b5, (q15_t)0x8561, - (q15_t)0x24af, (q15_t)0x855f, (q15_t)0x24a9, (q15_t)0x855d, (q15_t)0x24a3, (q15_t)0x855c, (q15_t)0x249d, (q15_t)0x855a, - (q15_t)0x2497, (q15_t)0x8558, (q15_t)0x2491, (q15_t)0x8556, (q15_t)0x248b, (q15_t)0x8554, (q15_t)0x2485, (q15_t)0x8553, - (q15_t)0x247f, (q15_t)0x8551, (q15_t)0x2479, (q15_t)0x854f, (q15_t)0x2473, (q15_t)0x854d, (q15_t)0x246d, (q15_t)0x854b, - (q15_t)0x2467, (q15_t)0x854a, (q15_t)0x2461, (q15_t)0x8548, (q15_t)0x245b, (q15_t)0x8546, (q15_t)0x2455, (q15_t)0x8544, - (q15_t)0x244f, (q15_t)0x8543, (q15_t)0x2449, (q15_t)0x8541, (q15_t)0x2443, (q15_t)0x853f, (q15_t)0x243d, (q15_t)0x853d, - (q15_t)0x2437, (q15_t)0x853b, (q15_t)0x2431, (q15_t)0x853a, (q15_t)0x242b, (q15_t)0x8538, (q15_t)0x2425, (q15_t)0x8536, - (q15_t)0x241f, (q15_t)0x8534, (q15_t)0x2419, (q15_t)0x8533, (q15_t)0x2413, (q15_t)0x8531, (q15_t)0x240d, (q15_t)0x852f, - (q15_t)0x2407, (q15_t)0x852d, (q15_t)0x2401, (q15_t)0x852b, (q15_t)0x23fa, (q15_t)0x852a, (q15_t)0x23f4, (q15_t)0x8528, - (q15_t)0x23ee, (q15_t)0x8526, (q15_t)0x23e8, (q15_t)0x8524, (q15_t)0x23e2, (q15_t)0x8523, (q15_t)0x23dc, (q15_t)0x8521, - (q15_t)0x23d6, (q15_t)0x851f, (q15_t)0x23d0, (q15_t)0x851d, (q15_t)0x23ca, (q15_t)0x851c, (q15_t)0x23c4, (q15_t)0x851a, - (q15_t)0x23be, (q15_t)0x8518, (q15_t)0x23b8, (q15_t)0x8516, (q15_t)0x23b2, (q15_t)0x8515, (q15_t)0x23ac, (q15_t)0x8513, - (q15_t)0x23a6, (q15_t)0x8511, (q15_t)0x23a0, (q15_t)0x850f, (q15_t)0x239a, (q15_t)0x850e, (q15_t)0x2394, (q15_t)0x850c, - (q15_t)0x238e, (q15_t)0x850a, (q15_t)0x2388, (q15_t)0x8508, (q15_t)0x2382, (q15_t)0x8507, (q15_t)0x237c, (q15_t)0x8505, - (q15_t)0x2376, (q15_t)0x8503, (q15_t)0x2370, (q15_t)0x8501, (q15_t)0x236a, (q15_t)0x8500, (q15_t)0x2364, (q15_t)0x84fe, - (q15_t)0x235e, (q15_t)0x84fc, (q15_t)0x2358, (q15_t)0x84fa, (q15_t)0x2352, (q15_t)0x84f9, (q15_t)0x234b, (q15_t)0x84f7, - (q15_t)0x2345, (q15_t)0x84f5, (q15_t)0x233f, (q15_t)0x84f4, (q15_t)0x2339, (q15_t)0x84f2, (q15_t)0x2333, (q15_t)0x84f0, - (q15_t)0x232d, (q15_t)0x84ee, (q15_t)0x2327, (q15_t)0x84ed, (q15_t)0x2321, (q15_t)0x84eb, (q15_t)0x231b, (q15_t)0x84e9, - (q15_t)0x2315, (q15_t)0x84e7, (q15_t)0x230f, (q15_t)0x84e6, (q15_t)0x2309, (q15_t)0x84e4, (q15_t)0x2303, (q15_t)0x84e2, - (q15_t)0x22fd, (q15_t)0x84e1, (q15_t)0x22f7, (q15_t)0x84df, (q15_t)0x22f1, (q15_t)0x84dd, (q15_t)0x22eb, (q15_t)0x84db, - (q15_t)0x22e5, (q15_t)0x84da, (q15_t)0x22df, (q15_t)0x84d8, (q15_t)0x22d9, (q15_t)0x84d6, (q15_t)0x22d3, (q15_t)0x84d5, - (q15_t)0x22cd, (q15_t)0x84d3, (q15_t)0x22c7, (q15_t)0x84d1, (q15_t)0x22c0, (q15_t)0x84cf, (q15_t)0x22ba, (q15_t)0x84ce, - (q15_t)0x22b4, (q15_t)0x84cc, (q15_t)0x22ae, (q15_t)0x84ca, (q15_t)0x22a8, (q15_t)0x84c9, (q15_t)0x22a2, (q15_t)0x84c7, - (q15_t)0x229c, (q15_t)0x84c5, (q15_t)0x2296, (q15_t)0x84c4, (q15_t)0x2290, (q15_t)0x84c2, (q15_t)0x228a, (q15_t)0x84c0, - (q15_t)0x2284, (q15_t)0x84be, (q15_t)0x227e, (q15_t)0x84bd, (q15_t)0x2278, (q15_t)0x84bb, (q15_t)0x2272, (q15_t)0x84b9, - (q15_t)0x226c, (q15_t)0x84b8, (q15_t)0x2266, (q15_t)0x84b6, (q15_t)0x2260, (q15_t)0x84b4, (q15_t)0x225a, (q15_t)0x84b3, - (q15_t)0x2254, (q15_t)0x84b1, (q15_t)0x224e, (q15_t)0x84af, (q15_t)0x2247, (q15_t)0x84ae, (q15_t)0x2241, (q15_t)0x84ac, - (q15_t)0x223b, (q15_t)0x84aa, (q15_t)0x2235, (q15_t)0x84a9, (q15_t)0x222f, (q15_t)0x84a7, (q15_t)0x2229, (q15_t)0x84a5, - (q15_t)0x2223, (q15_t)0x84a3, (q15_t)0x221d, (q15_t)0x84a2, (q15_t)0x2217, (q15_t)0x84a0, (q15_t)0x2211, (q15_t)0x849e, - (q15_t)0x220b, (q15_t)0x849d, (q15_t)0x2205, (q15_t)0x849b, (q15_t)0x21ff, (q15_t)0x8499, (q15_t)0x21f9, (q15_t)0x8498, - (q15_t)0x21f3, (q15_t)0x8496, (q15_t)0x21ed, (q15_t)0x8494, (q15_t)0x21e7, (q15_t)0x8493, (q15_t)0x21e1, (q15_t)0x8491, - (q15_t)0x21da, (q15_t)0x848f, (q15_t)0x21d4, (q15_t)0x848e, (q15_t)0x21ce, (q15_t)0x848c, (q15_t)0x21c8, (q15_t)0x848a, - (q15_t)0x21c2, (q15_t)0x8489, (q15_t)0x21bc, (q15_t)0x8487, (q15_t)0x21b6, (q15_t)0x8486, (q15_t)0x21b0, (q15_t)0x8484, - (q15_t)0x21aa, (q15_t)0x8482, (q15_t)0x21a4, (q15_t)0x8481, (q15_t)0x219e, (q15_t)0x847f, (q15_t)0x2198, (q15_t)0x847d, - (q15_t)0x2192, (q15_t)0x847c, (q15_t)0x218c, (q15_t)0x847a, (q15_t)0x2186, (q15_t)0x8478, (q15_t)0x2180, (q15_t)0x8477, - (q15_t)0x2179, (q15_t)0x8475, (q15_t)0x2173, (q15_t)0x8473, (q15_t)0x216d, (q15_t)0x8472, (q15_t)0x2167, (q15_t)0x8470, - (q15_t)0x2161, (q15_t)0x846e, (q15_t)0x215b, (q15_t)0x846d, (q15_t)0x2155, (q15_t)0x846b, (q15_t)0x214f, (q15_t)0x846a, - (q15_t)0x2149, (q15_t)0x8468, (q15_t)0x2143, (q15_t)0x8466, (q15_t)0x213d, (q15_t)0x8465, (q15_t)0x2137, (q15_t)0x8463, - (q15_t)0x2131, (q15_t)0x8461, (q15_t)0x212b, (q15_t)0x8460, (q15_t)0x2125, (q15_t)0x845e, (q15_t)0x211e, (q15_t)0x845d, - (q15_t)0x2118, (q15_t)0x845b, (q15_t)0x2112, (q15_t)0x8459, (q15_t)0x210c, (q15_t)0x8458, (q15_t)0x2106, (q15_t)0x8456, - (q15_t)0x2100, (q15_t)0x8454, (q15_t)0x20fa, (q15_t)0x8453, (q15_t)0x20f4, (q15_t)0x8451, (q15_t)0x20ee, (q15_t)0x8450, - (q15_t)0x20e8, (q15_t)0x844e, (q15_t)0x20e2, (q15_t)0x844c, (q15_t)0x20dc, (q15_t)0x844b, (q15_t)0x20d6, (q15_t)0x8449, - (q15_t)0x20d0, (q15_t)0x8447, (q15_t)0x20c9, (q15_t)0x8446, (q15_t)0x20c3, (q15_t)0x8444, (q15_t)0x20bd, (q15_t)0x8443, - (q15_t)0x20b7, (q15_t)0x8441, (q15_t)0x20b1, (q15_t)0x843f, (q15_t)0x20ab, (q15_t)0x843e, (q15_t)0x20a5, (q15_t)0x843c, - (q15_t)0x209f, (q15_t)0x843b, (q15_t)0x2099, (q15_t)0x8439, (q15_t)0x2093, (q15_t)0x8437, (q15_t)0x208d, (q15_t)0x8436, - (q15_t)0x2087, (q15_t)0x8434, (q15_t)0x2081, (q15_t)0x8433, (q15_t)0x207a, (q15_t)0x8431, (q15_t)0x2074, (q15_t)0x842f, - (q15_t)0x206e, (q15_t)0x842e, (q15_t)0x2068, (q15_t)0x842c, (q15_t)0x2062, (q15_t)0x842b, (q15_t)0x205c, (q15_t)0x8429, - (q15_t)0x2056, (q15_t)0x8427, (q15_t)0x2050, (q15_t)0x8426, (q15_t)0x204a, (q15_t)0x8424, (q15_t)0x2044, (q15_t)0x8423, - (q15_t)0x203e, (q15_t)0x8421, (q15_t)0x2038, (q15_t)0x8420, (q15_t)0x2032, (q15_t)0x841e, (q15_t)0x202b, (q15_t)0x841c, - (q15_t)0x2025, (q15_t)0x841b, (q15_t)0x201f, (q15_t)0x8419, (q15_t)0x2019, (q15_t)0x8418, (q15_t)0x2013, (q15_t)0x8416, - (q15_t)0x200d, (q15_t)0x8415, (q15_t)0x2007, (q15_t)0x8413, (q15_t)0x2001, (q15_t)0x8411, (q15_t)0x1ffb, (q15_t)0x8410, - (q15_t)0x1ff5, (q15_t)0x840e, (q15_t)0x1fef, (q15_t)0x840d, (q15_t)0x1fe9, (q15_t)0x840b, (q15_t)0x1fe2, (q15_t)0x840a, - (q15_t)0x1fdc, (q15_t)0x8408, (q15_t)0x1fd6, (q15_t)0x8406, (q15_t)0x1fd0, (q15_t)0x8405, (q15_t)0x1fca, (q15_t)0x8403, - (q15_t)0x1fc4, (q15_t)0x8402, (q15_t)0x1fbe, (q15_t)0x8400, (q15_t)0x1fb8, (q15_t)0x83ff, (q15_t)0x1fb2, (q15_t)0x83fd, - (q15_t)0x1fac, (q15_t)0x83fb, (q15_t)0x1fa6, (q15_t)0x83fa, (q15_t)0x1f9f, (q15_t)0x83f8, (q15_t)0x1f99, (q15_t)0x83f7, - (q15_t)0x1f93, (q15_t)0x83f5, (q15_t)0x1f8d, (q15_t)0x83f4, (q15_t)0x1f87, (q15_t)0x83f2, (q15_t)0x1f81, (q15_t)0x83f1, - (q15_t)0x1f7b, (q15_t)0x83ef, (q15_t)0x1f75, (q15_t)0x83ee, (q15_t)0x1f6f, (q15_t)0x83ec, (q15_t)0x1f69, (q15_t)0x83ea, - (q15_t)0x1f63, (q15_t)0x83e9, (q15_t)0x1f5d, (q15_t)0x83e7, (q15_t)0x1f56, (q15_t)0x83e6, (q15_t)0x1f50, (q15_t)0x83e4, - (q15_t)0x1f4a, (q15_t)0x83e3, (q15_t)0x1f44, (q15_t)0x83e1, (q15_t)0x1f3e, (q15_t)0x83e0, (q15_t)0x1f38, (q15_t)0x83de, - (q15_t)0x1f32, (q15_t)0x83dd, (q15_t)0x1f2c, (q15_t)0x83db, (q15_t)0x1f26, (q15_t)0x83da, (q15_t)0x1f20, (q15_t)0x83d8, - (q15_t)0x1f19, (q15_t)0x83d7, (q15_t)0x1f13, (q15_t)0x83d5, (q15_t)0x1f0d, (q15_t)0x83d3, (q15_t)0x1f07, (q15_t)0x83d2, - (q15_t)0x1f01, (q15_t)0x83d0, (q15_t)0x1efb, (q15_t)0x83cf, (q15_t)0x1ef5, (q15_t)0x83cd, (q15_t)0x1eef, (q15_t)0x83cc, - (q15_t)0x1ee9, (q15_t)0x83ca, (q15_t)0x1ee3, (q15_t)0x83c9, (q15_t)0x1edd, (q15_t)0x83c7, (q15_t)0x1ed6, (q15_t)0x83c6, - (q15_t)0x1ed0, (q15_t)0x83c4, (q15_t)0x1eca, (q15_t)0x83c3, (q15_t)0x1ec4, (q15_t)0x83c1, (q15_t)0x1ebe, (q15_t)0x83c0, - (q15_t)0x1eb8, (q15_t)0x83be, (q15_t)0x1eb2, (q15_t)0x83bd, (q15_t)0x1eac, (q15_t)0x83bb, (q15_t)0x1ea6, (q15_t)0x83ba, - (q15_t)0x1ea0, (q15_t)0x83b8, (q15_t)0x1e99, (q15_t)0x83b7, (q15_t)0x1e93, (q15_t)0x83b5, (q15_t)0x1e8d, (q15_t)0x83b4, - (q15_t)0x1e87, (q15_t)0x83b2, (q15_t)0x1e81, (q15_t)0x83b1, (q15_t)0x1e7b, (q15_t)0x83af, (q15_t)0x1e75, (q15_t)0x83ae, - (q15_t)0x1e6f, (q15_t)0x83ac, (q15_t)0x1e69, (q15_t)0x83ab, (q15_t)0x1e62, (q15_t)0x83a9, (q15_t)0x1e5c, (q15_t)0x83a8, - (q15_t)0x1e56, (q15_t)0x83a6, (q15_t)0x1e50, (q15_t)0x83a5, (q15_t)0x1e4a, (q15_t)0x83a3, (q15_t)0x1e44, (q15_t)0x83a2, - (q15_t)0x1e3e, (q15_t)0x83a0, (q15_t)0x1e38, (q15_t)0x839f, (q15_t)0x1e32, (q15_t)0x839d, (q15_t)0x1e2c, (q15_t)0x839c, - (q15_t)0x1e25, (q15_t)0x839a, (q15_t)0x1e1f, (q15_t)0x8399, (q15_t)0x1e19, (q15_t)0x8397, (q15_t)0x1e13, (q15_t)0x8396, - (q15_t)0x1e0d, (q15_t)0x8394, (q15_t)0x1e07, (q15_t)0x8393, (q15_t)0x1e01, (q15_t)0x8392, (q15_t)0x1dfb, (q15_t)0x8390, - (q15_t)0x1df5, (q15_t)0x838f, (q15_t)0x1dee, (q15_t)0x838d, (q15_t)0x1de8, (q15_t)0x838c, (q15_t)0x1de2, (q15_t)0x838a, - (q15_t)0x1ddc, (q15_t)0x8389, (q15_t)0x1dd6, (q15_t)0x8387, (q15_t)0x1dd0, (q15_t)0x8386, (q15_t)0x1dca, (q15_t)0x8384, - (q15_t)0x1dc4, (q15_t)0x8383, (q15_t)0x1dbe, (q15_t)0x8381, (q15_t)0x1db7, (q15_t)0x8380, (q15_t)0x1db1, (q15_t)0x837e, - (q15_t)0x1dab, (q15_t)0x837d, (q15_t)0x1da5, (q15_t)0x837c, (q15_t)0x1d9f, (q15_t)0x837a, (q15_t)0x1d99, (q15_t)0x8379, - (q15_t)0x1d93, (q15_t)0x8377, (q15_t)0x1d8d, (q15_t)0x8376, (q15_t)0x1d87, (q15_t)0x8374, (q15_t)0x1d80, (q15_t)0x8373, - (q15_t)0x1d7a, (q15_t)0x8371, (q15_t)0x1d74, (q15_t)0x8370, (q15_t)0x1d6e, (q15_t)0x836f, (q15_t)0x1d68, (q15_t)0x836d, - (q15_t)0x1d62, (q15_t)0x836c, (q15_t)0x1d5c, (q15_t)0x836a, (q15_t)0x1d56, (q15_t)0x8369, (q15_t)0x1d50, (q15_t)0x8367, - (q15_t)0x1d49, (q15_t)0x8366, (q15_t)0x1d43, (q15_t)0x8364, (q15_t)0x1d3d, (q15_t)0x8363, (q15_t)0x1d37, (q15_t)0x8362, - (q15_t)0x1d31, (q15_t)0x8360, (q15_t)0x1d2b, (q15_t)0x835f, (q15_t)0x1d25, (q15_t)0x835d, (q15_t)0x1d1f, (q15_t)0x835c, - (q15_t)0x1d18, (q15_t)0x835a, (q15_t)0x1d12, (q15_t)0x8359, (q15_t)0x1d0c, (q15_t)0x8358, (q15_t)0x1d06, (q15_t)0x8356, - (q15_t)0x1d00, (q15_t)0x8355, (q15_t)0x1cfa, (q15_t)0x8353, (q15_t)0x1cf4, (q15_t)0x8352, (q15_t)0x1cee, (q15_t)0x8350, - (q15_t)0x1ce8, (q15_t)0x834f, (q15_t)0x1ce1, (q15_t)0x834e, (q15_t)0x1cdb, (q15_t)0x834c, (q15_t)0x1cd5, (q15_t)0x834b, - (q15_t)0x1ccf, (q15_t)0x8349, (q15_t)0x1cc9, (q15_t)0x8348, (q15_t)0x1cc3, (q15_t)0x8347, (q15_t)0x1cbd, (q15_t)0x8345, - (q15_t)0x1cb7, (q15_t)0x8344, (q15_t)0x1cb0, (q15_t)0x8342, (q15_t)0x1caa, (q15_t)0x8341, (q15_t)0x1ca4, (q15_t)0x833f, - (q15_t)0x1c9e, (q15_t)0x833e, (q15_t)0x1c98, (q15_t)0x833d, (q15_t)0x1c92, (q15_t)0x833b, (q15_t)0x1c8c, (q15_t)0x833a, - (q15_t)0x1c86, (q15_t)0x8338, (q15_t)0x1c7f, (q15_t)0x8337, (q15_t)0x1c79, (q15_t)0x8336, (q15_t)0x1c73, (q15_t)0x8334, - (q15_t)0x1c6d, (q15_t)0x8333, (q15_t)0x1c67, (q15_t)0x8331, (q15_t)0x1c61, (q15_t)0x8330, (q15_t)0x1c5b, (q15_t)0x832f, - (q15_t)0x1c55, (q15_t)0x832d, (q15_t)0x1c4e, (q15_t)0x832c, (q15_t)0x1c48, (q15_t)0x832b, (q15_t)0x1c42, (q15_t)0x8329, - (q15_t)0x1c3c, (q15_t)0x8328, (q15_t)0x1c36, (q15_t)0x8326, (q15_t)0x1c30, (q15_t)0x8325, (q15_t)0x1c2a, (q15_t)0x8324, - (q15_t)0x1c24, (q15_t)0x8322, (q15_t)0x1c1d, (q15_t)0x8321, (q15_t)0x1c17, (q15_t)0x831f, (q15_t)0x1c11, (q15_t)0x831e, - (q15_t)0x1c0b, (q15_t)0x831d, (q15_t)0x1c05, (q15_t)0x831b, (q15_t)0x1bff, (q15_t)0x831a, (q15_t)0x1bf9, (q15_t)0x8319, - (q15_t)0x1bf2, (q15_t)0x8317, (q15_t)0x1bec, (q15_t)0x8316, (q15_t)0x1be6, (q15_t)0x8314, (q15_t)0x1be0, (q15_t)0x8313, - (q15_t)0x1bda, (q15_t)0x8312, (q15_t)0x1bd4, (q15_t)0x8310, (q15_t)0x1bce, (q15_t)0x830f, (q15_t)0x1bc8, (q15_t)0x830e, - (q15_t)0x1bc1, (q15_t)0x830c, (q15_t)0x1bbb, (q15_t)0x830b, (q15_t)0x1bb5, (q15_t)0x830a, (q15_t)0x1baf, (q15_t)0x8308, - (q15_t)0x1ba9, (q15_t)0x8307, (q15_t)0x1ba3, (q15_t)0x8305, (q15_t)0x1b9d, (q15_t)0x8304, (q15_t)0x1b96, (q15_t)0x8303, - (q15_t)0x1b90, (q15_t)0x8301, (q15_t)0x1b8a, (q15_t)0x8300, (q15_t)0x1b84, (q15_t)0x82ff, (q15_t)0x1b7e, (q15_t)0x82fd, - (q15_t)0x1b78, (q15_t)0x82fc, (q15_t)0x1b72, (q15_t)0x82fb, (q15_t)0x1b6c, (q15_t)0x82f9, (q15_t)0x1b65, (q15_t)0x82f8, - (q15_t)0x1b5f, (q15_t)0x82f7, (q15_t)0x1b59, (q15_t)0x82f5, (q15_t)0x1b53, (q15_t)0x82f4, (q15_t)0x1b4d, (q15_t)0x82f3, - (q15_t)0x1b47, (q15_t)0x82f1, (q15_t)0x1b41, (q15_t)0x82f0, (q15_t)0x1b3a, (q15_t)0x82ef, (q15_t)0x1b34, (q15_t)0x82ed, - (q15_t)0x1b2e, (q15_t)0x82ec, (q15_t)0x1b28, (q15_t)0x82eb, (q15_t)0x1b22, (q15_t)0x82e9, (q15_t)0x1b1c, (q15_t)0x82e8, - (q15_t)0x1b16, (q15_t)0x82e7, (q15_t)0x1b0f, (q15_t)0x82e5, (q15_t)0x1b09, (q15_t)0x82e4, (q15_t)0x1b03, (q15_t)0x82e3, - (q15_t)0x1afd, (q15_t)0x82e1, (q15_t)0x1af7, (q15_t)0x82e0, (q15_t)0x1af1, (q15_t)0x82df, (q15_t)0x1aeb, (q15_t)0x82dd, - (q15_t)0x1ae4, (q15_t)0x82dc, (q15_t)0x1ade, (q15_t)0x82db, (q15_t)0x1ad8, (q15_t)0x82d9, (q15_t)0x1ad2, (q15_t)0x82d8, - (q15_t)0x1acc, (q15_t)0x82d7, (q15_t)0x1ac6, (q15_t)0x82d5, (q15_t)0x1ac0, (q15_t)0x82d4, (q15_t)0x1ab9, (q15_t)0x82d3, - (q15_t)0x1ab3, (q15_t)0x82d1, (q15_t)0x1aad, (q15_t)0x82d0, (q15_t)0x1aa7, (q15_t)0x82cf, (q15_t)0x1aa1, (q15_t)0x82ce, - (q15_t)0x1a9b, (q15_t)0x82cc, (q15_t)0x1a95, (q15_t)0x82cb, (q15_t)0x1a8e, (q15_t)0x82ca, (q15_t)0x1a88, (q15_t)0x82c8, - (q15_t)0x1a82, (q15_t)0x82c7, (q15_t)0x1a7c, (q15_t)0x82c6, (q15_t)0x1a76, (q15_t)0x82c4, (q15_t)0x1a70, (q15_t)0x82c3, - (q15_t)0x1a6a, (q15_t)0x82c2, (q15_t)0x1a63, (q15_t)0x82c1, (q15_t)0x1a5d, (q15_t)0x82bf, (q15_t)0x1a57, (q15_t)0x82be, - (q15_t)0x1a51, (q15_t)0x82bd, (q15_t)0x1a4b, (q15_t)0x82bb, (q15_t)0x1a45, (q15_t)0x82ba, (q15_t)0x1a3e, (q15_t)0x82b9, - (q15_t)0x1a38, (q15_t)0x82b7, (q15_t)0x1a32, (q15_t)0x82b6, (q15_t)0x1a2c, (q15_t)0x82b5, (q15_t)0x1a26, (q15_t)0x82b4, - (q15_t)0x1a20, (q15_t)0x82b2, (q15_t)0x1a1a, (q15_t)0x82b1, (q15_t)0x1a13, (q15_t)0x82b0, (q15_t)0x1a0d, (q15_t)0x82ae, - (q15_t)0x1a07, (q15_t)0x82ad, (q15_t)0x1a01, (q15_t)0x82ac, (q15_t)0x19fb, (q15_t)0x82ab, (q15_t)0x19f5, (q15_t)0x82a9, - (q15_t)0x19ef, (q15_t)0x82a8, (q15_t)0x19e8, (q15_t)0x82a7, (q15_t)0x19e2, (q15_t)0x82a6, (q15_t)0x19dc, (q15_t)0x82a4, - (q15_t)0x19d6, (q15_t)0x82a3, (q15_t)0x19d0, (q15_t)0x82a2, (q15_t)0x19ca, (q15_t)0x82a0, (q15_t)0x19c3, (q15_t)0x829f, - (q15_t)0x19bd, (q15_t)0x829e, (q15_t)0x19b7, (q15_t)0x829d, (q15_t)0x19b1, (q15_t)0x829b, (q15_t)0x19ab, (q15_t)0x829a, - (q15_t)0x19a5, (q15_t)0x8299, (q15_t)0x199f, (q15_t)0x8298, (q15_t)0x1998, (q15_t)0x8296, (q15_t)0x1992, (q15_t)0x8295, - (q15_t)0x198c, (q15_t)0x8294, (q15_t)0x1986, (q15_t)0x8293, (q15_t)0x1980, (q15_t)0x8291, (q15_t)0x197a, (q15_t)0x8290, - (q15_t)0x1973, (q15_t)0x828f, (q15_t)0x196d, (q15_t)0x828e, (q15_t)0x1967, (q15_t)0x828c, (q15_t)0x1961, (q15_t)0x828b, - (q15_t)0x195b, (q15_t)0x828a, (q15_t)0x1955, (q15_t)0x8289, (q15_t)0x194e, (q15_t)0x8287, (q15_t)0x1948, (q15_t)0x8286, - (q15_t)0x1942, (q15_t)0x8285, (q15_t)0x193c, (q15_t)0x8284, (q15_t)0x1936, (q15_t)0x8282, (q15_t)0x1930, (q15_t)0x8281, - (q15_t)0x192a, (q15_t)0x8280, (q15_t)0x1923, (q15_t)0x827f, (q15_t)0x191d, (q15_t)0x827e, (q15_t)0x1917, (q15_t)0x827c, - (q15_t)0x1911, (q15_t)0x827b, (q15_t)0x190b, (q15_t)0x827a, (q15_t)0x1905, (q15_t)0x8279, (q15_t)0x18fe, (q15_t)0x8277, - (q15_t)0x18f8, (q15_t)0x8276, (q15_t)0x18f2, (q15_t)0x8275, (q15_t)0x18ec, (q15_t)0x8274, (q15_t)0x18e6, (q15_t)0x8272, - (q15_t)0x18e0, (q15_t)0x8271, (q15_t)0x18d9, (q15_t)0x8270, (q15_t)0x18d3, (q15_t)0x826f, (q15_t)0x18cd, (q15_t)0x826e, - (q15_t)0x18c7, (q15_t)0x826c, (q15_t)0x18c1, (q15_t)0x826b, (q15_t)0x18bb, (q15_t)0x826a, (q15_t)0x18b4, (q15_t)0x8269, - (q15_t)0x18ae, (q15_t)0x8268, (q15_t)0x18a8, (q15_t)0x8266, (q15_t)0x18a2, (q15_t)0x8265, (q15_t)0x189c, (q15_t)0x8264, - (q15_t)0x1896, (q15_t)0x8263, (q15_t)0x188f, (q15_t)0x8261, (q15_t)0x1889, (q15_t)0x8260, (q15_t)0x1883, (q15_t)0x825f, - (q15_t)0x187d, (q15_t)0x825e, (q15_t)0x1877, (q15_t)0x825d, (q15_t)0x1871, (q15_t)0x825b, (q15_t)0x186a, (q15_t)0x825a, - (q15_t)0x1864, (q15_t)0x8259, (q15_t)0x185e, (q15_t)0x8258, (q15_t)0x1858, (q15_t)0x8257, (q15_t)0x1852, (q15_t)0x8255, - (q15_t)0x184c, (q15_t)0x8254, (q15_t)0x1845, (q15_t)0x8253, (q15_t)0x183f, (q15_t)0x8252, (q15_t)0x1839, (q15_t)0x8251, - (q15_t)0x1833, (q15_t)0x8250, (q15_t)0x182d, (q15_t)0x824e, (q15_t)0x1827, (q15_t)0x824d, (q15_t)0x1820, (q15_t)0x824c, - (q15_t)0x181a, (q15_t)0x824b, (q15_t)0x1814, (q15_t)0x824a, (q15_t)0x180e, (q15_t)0x8248, (q15_t)0x1808, (q15_t)0x8247, - (q15_t)0x1802, (q15_t)0x8246, (q15_t)0x17fb, (q15_t)0x8245, (q15_t)0x17f5, (q15_t)0x8244, (q15_t)0x17ef, (q15_t)0x8243, - (q15_t)0x17e9, (q15_t)0x8241, (q15_t)0x17e3, (q15_t)0x8240, (q15_t)0x17dd, (q15_t)0x823f, (q15_t)0x17d6, (q15_t)0x823e, - (q15_t)0x17d0, (q15_t)0x823d, (q15_t)0x17ca, (q15_t)0x823b, (q15_t)0x17c4, (q15_t)0x823a, (q15_t)0x17be, (q15_t)0x8239, - (q15_t)0x17b7, (q15_t)0x8238, (q15_t)0x17b1, (q15_t)0x8237, (q15_t)0x17ab, (q15_t)0x8236, (q15_t)0x17a5, (q15_t)0x8234, - (q15_t)0x179f, (q15_t)0x8233, (q15_t)0x1799, (q15_t)0x8232, (q15_t)0x1792, (q15_t)0x8231, (q15_t)0x178c, (q15_t)0x8230, - (q15_t)0x1786, (q15_t)0x822f, (q15_t)0x1780, (q15_t)0x822e, (q15_t)0x177a, (q15_t)0x822c, (q15_t)0x1774, (q15_t)0x822b, - (q15_t)0x176d, (q15_t)0x822a, (q15_t)0x1767, (q15_t)0x8229, (q15_t)0x1761, (q15_t)0x8228, (q15_t)0x175b, (q15_t)0x8227, - (q15_t)0x1755, (q15_t)0x8226, (q15_t)0x174e, (q15_t)0x8224, (q15_t)0x1748, (q15_t)0x8223, (q15_t)0x1742, (q15_t)0x8222, - (q15_t)0x173c, (q15_t)0x8221, (q15_t)0x1736, (q15_t)0x8220, (q15_t)0x1730, (q15_t)0x821f, (q15_t)0x1729, (q15_t)0x821e, - (q15_t)0x1723, (q15_t)0x821c, (q15_t)0x171d, (q15_t)0x821b, (q15_t)0x1717, (q15_t)0x821a, (q15_t)0x1711, (q15_t)0x8219, - (q15_t)0x170a, (q15_t)0x8218, (q15_t)0x1704, (q15_t)0x8217, (q15_t)0x16fe, (q15_t)0x8216, (q15_t)0x16f8, (q15_t)0x8214, - (q15_t)0x16f2, (q15_t)0x8213, (q15_t)0x16ec, (q15_t)0x8212, (q15_t)0x16e5, (q15_t)0x8211, (q15_t)0x16df, (q15_t)0x8210, - (q15_t)0x16d9, (q15_t)0x820f, (q15_t)0x16d3, (q15_t)0x820e, (q15_t)0x16cd, (q15_t)0x820d, (q15_t)0x16c6, (q15_t)0x820b, - (q15_t)0x16c0, (q15_t)0x820a, (q15_t)0x16ba, (q15_t)0x8209, (q15_t)0x16b4, (q15_t)0x8208, (q15_t)0x16ae, (q15_t)0x8207, - (q15_t)0x16a8, (q15_t)0x8206, (q15_t)0x16a1, (q15_t)0x8205, (q15_t)0x169b, (q15_t)0x8204, (q15_t)0x1695, (q15_t)0x8203, - (q15_t)0x168f, (q15_t)0x8201, (q15_t)0x1689, (q15_t)0x8200, (q15_t)0x1682, (q15_t)0x81ff, (q15_t)0x167c, (q15_t)0x81fe, - (q15_t)0x1676, (q15_t)0x81fd, (q15_t)0x1670, (q15_t)0x81fc, (q15_t)0x166a, (q15_t)0x81fb, (q15_t)0x1664, (q15_t)0x81fa, - (q15_t)0x165d, (q15_t)0x81f9, (q15_t)0x1657, (q15_t)0x81f8, (q15_t)0x1651, (q15_t)0x81f6, (q15_t)0x164b, (q15_t)0x81f5, - (q15_t)0x1645, (q15_t)0x81f4, (q15_t)0x163e, (q15_t)0x81f3, (q15_t)0x1638, (q15_t)0x81f2, (q15_t)0x1632, (q15_t)0x81f1, - (q15_t)0x162c, (q15_t)0x81f0, (q15_t)0x1626, (q15_t)0x81ef, (q15_t)0x161f, (q15_t)0x81ee, (q15_t)0x1619, (q15_t)0x81ed, - (q15_t)0x1613, (q15_t)0x81ec, (q15_t)0x160d, (q15_t)0x81ea, (q15_t)0x1607, (q15_t)0x81e9, (q15_t)0x1601, (q15_t)0x81e8, - (q15_t)0x15fa, (q15_t)0x81e7, (q15_t)0x15f4, (q15_t)0x81e6, (q15_t)0x15ee, (q15_t)0x81e5, (q15_t)0x15e8, (q15_t)0x81e4, - (q15_t)0x15e2, (q15_t)0x81e3, (q15_t)0x15db, (q15_t)0x81e2, (q15_t)0x15d5, (q15_t)0x81e1, (q15_t)0x15cf, (q15_t)0x81e0, - (q15_t)0x15c9, (q15_t)0x81df, (q15_t)0x15c3, (q15_t)0x81de, (q15_t)0x15bc, (q15_t)0x81dc, (q15_t)0x15b6, (q15_t)0x81db, - (q15_t)0x15b0, (q15_t)0x81da, (q15_t)0x15aa, (q15_t)0x81d9, (q15_t)0x15a4, (q15_t)0x81d8, (q15_t)0x159d, (q15_t)0x81d7, - (q15_t)0x1597, (q15_t)0x81d6, (q15_t)0x1591, (q15_t)0x81d5, (q15_t)0x158b, (q15_t)0x81d4, (q15_t)0x1585, (q15_t)0x81d3, - (q15_t)0x157f, (q15_t)0x81d2, (q15_t)0x1578, (q15_t)0x81d1, (q15_t)0x1572, (q15_t)0x81d0, (q15_t)0x156c, (q15_t)0x81cf, - (q15_t)0x1566, (q15_t)0x81ce, (q15_t)0x1560, (q15_t)0x81cd, (q15_t)0x1559, (q15_t)0x81cc, (q15_t)0x1553, (q15_t)0x81cb, - (q15_t)0x154d, (q15_t)0x81c9, (q15_t)0x1547, (q15_t)0x81c8, (q15_t)0x1541, (q15_t)0x81c7, (q15_t)0x153a, (q15_t)0x81c6, - (q15_t)0x1534, (q15_t)0x81c5, (q15_t)0x152e, (q15_t)0x81c4, (q15_t)0x1528, (q15_t)0x81c3, (q15_t)0x1522, (q15_t)0x81c2, - (q15_t)0x151b, (q15_t)0x81c1, (q15_t)0x1515, (q15_t)0x81c0, (q15_t)0x150f, (q15_t)0x81bf, (q15_t)0x1509, (q15_t)0x81be, - (q15_t)0x1503, (q15_t)0x81bd, (q15_t)0x14fc, (q15_t)0x81bc, (q15_t)0x14f6, (q15_t)0x81bb, (q15_t)0x14f0, (q15_t)0x81ba, - (q15_t)0x14ea, (q15_t)0x81b9, (q15_t)0x14e4, (q15_t)0x81b8, (q15_t)0x14dd, (q15_t)0x81b7, (q15_t)0x14d7, (q15_t)0x81b6, - (q15_t)0x14d1, (q15_t)0x81b5, (q15_t)0x14cb, (q15_t)0x81b4, (q15_t)0x14c5, (q15_t)0x81b3, (q15_t)0x14be, (q15_t)0x81b2, - (q15_t)0x14b8, (q15_t)0x81b1, (q15_t)0x14b2, (q15_t)0x81b0, (q15_t)0x14ac, (q15_t)0x81af, (q15_t)0x14a6, (q15_t)0x81ae, - (q15_t)0x149f, (q15_t)0x81ad, (q15_t)0x1499, (q15_t)0x81ac, (q15_t)0x1493, (q15_t)0x81ab, (q15_t)0x148d, (q15_t)0x81aa, - (q15_t)0x1487, (q15_t)0x81a9, (q15_t)0x1480, (q15_t)0x81a8, (q15_t)0x147a, (q15_t)0x81a7, (q15_t)0x1474, (q15_t)0x81a6, - (q15_t)0x146e, (q15_t)0x81a5, (q15_t)0x1468, (q15_t)0x81a4, (q15_t)0x1461, (q15_t)0x81a3, (q15_t)0x145b, (q15_t)0x81a2, - (q15_t)0x1455, (q15_t)0x81a1, (q15_t)0x144f, (q15_t)0x81a0, (q15_t)0x1449, (q15_t)0x819f, (q15_t)0x1442, (q15_t)0x819e, - (q15_t)0x143c, (q15_t)0x819d, (q15_t)0x1436, (q15_t)0x819c, (q15_t)0x1430, (q15_t)0x819b, (q15_t)0x142a, (q15_t)0x819a, - (q15_t)0x1423, (q15_t)0x8199, (q15_t)0x141d, (q15_t)0x8198, (q15_t)0x1417, (q15_t)0x8197, (q15_t)0x1411, (q15_t)0x8196, - (q15_t)0x140b, (q15_t)0x8195, (q15_t)0x1404, (q15_t)0x8194, (q15_t)0x13fe, (q15_t)0x8193, (q15_t)0x13f8, (q15_t)0x8192, - (q15_t)0x13f2, (q15_t)0x8191, (q15_t)0x13eb, (q15_t)0x8190, (q15_t)0x13e5, (q15_t)0x818f, (q15_t)0x13df, (q15_t)0x818e, - (q15_t)0x13d9, (q15_t)0x818d, (q15_t)0x13d3, (q15_t)0x818c, (q15_t)0x13cc, (q15_t)0x818b, (q15_t)0x13c6, (q15_t)0x818a, - (q15_t)0x13c0, (q15_t)0x8189, (q15_t)0x13ba, (q15_t)0x8188, (q15_t)0x13b4, (q15_t)0x8187, (q15_t)0x13ad, (q15_t)0x8186, - (q15_t)0x13a7, (q15_t)0x8185, (q15_t)0x13a1, (q15_t)0x8184, (q15_t)0x139b, (q15_t)0x8183, (q15_t)0x1395, (q15_t)0x8182, - (q15_t)0x138e, (q15_t)0x8181, (q15_t)0x1388, (q15_t)0x8180, (q15_t)0x1382, (q15_t)0x817f, (q15_t)0x137c, (q15_t)0x817e, - (q15_t)0x1376, (q15_t)0x817d, (q15_t)0x136f, (q15_t)0x817c, (q15_t)0x1369, (q15_t)0x817c, (q15_t)0x1363, (q15_t)0x817b, - (q15_t)0x135d, (q15_t)0x817a, (q15_t)0x1356, (q15_t)0x8179, (q15_t)0x1350, (q15_t)0x8178, (q15_t)0x134a, (q15_t)0x8177, - (q15_t)0x1344, (q15_t)0x8176, (q15_t)0x133e, (q15_t)0x8175, (q15_t)0x1337, (q15_t)0x8174, (q15_t)0x1331, (q15_t)0x8173, - (q15_t)0x132b, (q15_t)0x8172, (q15_t)0x1325, (q15_t)0x8171, (q15_t)0x131f, (q15_t)0x8170, (q15_t)0x1318, (q15_t)0x816f, - (q15_t)0x1312, (q15_t)0x816e, (q15_t)0x130c, (q15_t)0x816d, (q15_t)0x1306, (q15_t)0x816c, (q15_t)0x12ff, (q15_t)0x816c, - (q15_t)0x12f9, (q15_t)0x816b, (q15_t)0x12f3, (q15_t)0x816a, (q15_t)0x12ed, (q15_t)0x8169, (q15_t)0x12e7, (q15_t)0x8168, - (q15_t)0x12e0, (q15_t)0x8167, (q15_t)0x12da, (q15_t)0x8166, (q15_t)0x12d4, (q15_t)0x8165, (q15_t)0x12ce, (q15_t)0x8164, - (q15_t)0x12c8, (q15_t)0x8163, (q15_t)0x12c1, (q15_t)0x8162, (q15_t)0x12bb, (q15_t)0x8161, (q15_t)0x12b5, (q15_t)0x8160, - (q15_t)0x12af, (q15_t)0x815f, (q15_t)0x12a8, (q15_t)0x815f, (q15_t)0x12a2, (q15_t)0x815e, (q15_t)0x129c, (q15_t)0x815d, - (q15_t)0x1296, (q15_t)0x815c, (q15_t)0x1290, (q15_t)0x815b, (q15_t)0x1289, (q15_t)0x815a, (q15_t)0x1283, (q15_t)0x8159, - (q15_t)0x127d, (q15_t)0x8158, (q15_t)0x1277, (q15_t)0x8157, (q15_t)0x1271, (q15_t)0x8156, (q15_t)0x126a, (q15_t)0x8155, - (q15_t)0x1264, (q15_t)0x8155, (q15_t)0x125e, (q15_t)0x8154, (q15_t)0x1258, (q15_t)0x8153, (q15_t)0x1251, (q15_t)0x8152, - (q15_t)0x124b, (q15_t)0x8151, (q15_t)0x1245, (q15_t)0x8150, (q15_t)0x123f, (q15_t)0x814f, (q15_t)0x1239, (q15_t)0x814e, - (q15_t)0x1232, (q15_t)0x814d, (q15_t)0x122c, (q15_t)0x814c, (q15_t)0x1226, (q15_t)0x814c, (q15_t)0x1220, (q15_t)0x814b, - (q15_t)0x1219, (q15_t)0x814a, (q15_t)0x1213, (q15_t)0x8149, (q15_t)0x120d, (q15_t)0x8148, (q15_t)0x1207, (q15_t)0x8147, - (q15_t)0x1201, (q15_t)0x8146, (q15_t)0x11fa, (q15_t)0x8145, (q15_t)0x11f4, (q15_t)0x8145, (q15_t)0x11ee, (q15_t)0x8144, - (q15_t)0x11e8, (q15_t)0x8143, (q15_t)0x11e1, (q15_t)0x8142, (q15_t)0x11db, (q15_t)0x8141, (q15_t)0x11d5, (q15_t)0x8140, - (q15_t)0x11cf, (q15_t)0x813f, (q15_t)0x11c9, (q15_t)0x813e, (q15_t)0x11c2, (q15_t)0x813d, (q15_t)0x11bc, (q15_t)0x813d, - (q15_t)0x11b6, (q15_t)0x813c, (q15_t)0x11b0, (q15_t)0x813b, (q15_t)0x11a9, (q15_t)0x813a, (q15_t)0x11a3, (q15_t)0x8139, - (q15_t)0x119d, (q15_t)0x8138, (q15_t)0x1197, (q15_t)0x8137, (q15_t)0x1191, (q15_t)0x8137, (q15_t)0x118a, (q15_t)0x8136, - (q15_t)0x1184, (q15_t)0x8135, (q15_t)0x117e, (q15_t)0x8134, (q15_t)0x1178, (q15_t)0x8133, (q15_t)0x1171, (q15_t)0x8132, - (q15_t)0x116b, (q15_t)0x8131, (q15_t)0x1165, (q15_t)0x8131, (q15_t)0x115f, (q15_t)0x8130, (q15_t)0x1159, (q15_t)0x812f, - (q15_t)0x1152, (q15_t)0x812e, (q15_t)0x114c, (q15_t)0x812d, (q15_t)0x1146, (q15_t)0x812c, (q15_t)0x1140, (q15_t)0x812b, - (q15_t)0x1139, (q15_t)0x812b, (q15_t)0x1133, (q15_t)0x812a, (q15_t)0x112d, (q15_t)0x8129, (q15_t)0x1127, (q15_t)0x8128, - (q15_t)0x1121, (q15_t)0x8127, (q15_t)0x111a, (q15_t)0x8126, (q15_t)0x1114, (q15_t)0x8126, (q15_t)0x110e, (q15_t)0x8125, - (q15_t)0x1108, (q15_t)0x8124, (q15_t)0x1101, (q15_t)0x8123, (q15_t)0x10fb, (q15_t)0x8122, (q15_t)0x10f5, (q15_t)0x8121, - (q15_t)0x10ef, (q15_t)0x8121, (q15_t)0x10e8, (q15_t)0x8120, (q15_t)0x10e2, (q15_t)0x811f, (q15_t)0x10dc, (q15_t)0x811e, - (q15_t)0x10d6, (q15_t)0x811d, (q15_t)0x10d0, (q15_t)0x811c, (q15_t)0x10c9, (q15_t)0x811c, (q15_t)0x10c3, (q15_t)0x811b, - (q15_t)0x10bd, (q15_t)0x811a, (q15_t)0x10b7, (q15_t)0x8119, (q15_t)0x10b0, (q15_t)0x8118, (q15_t)0x10aa, (q15_t)0x8117, - (q15_t)0x10a4, (q15_t)0x8117, (q15_t)0x109e, (q15_t)0x8116, (q15_t)0x1098, (q15_t)0x8115, (q15_t)0x1091, (q15_t)0x8114, - (q15_t)0x108b, (q15_t)0x8113, (q15_t)0x1085, (q15_t)0x8113, (q15_t)0x107f, (q15_t)0x8112, (q15_t)0x1078, (q15_t)0x8111, - (q15_t)0x1072, (q15_t)0x8110, (q15_t)0x106c, (q15_t)0x810f, (q15_t)0x1066, (q15_t)0x810f, (q15_t)0x105f, (q15_t)0x810e, - (q15_t)0x1059, (q15_t)0x810d, (q15_t)0x1053, (q15_t)0x810c, (q15_t)0x104d, (q15_t)0x810b, (q15_t)0x1047, (q15_t)0x810b, - (q15_t)0x1040, (q15_t)0x810a, (q15_t)0x103a, (q15_t)0x8109, (q15_t)0x1034, (q15_t)0x8108, (q15_t)0x102e, (q15_t)0x8107, - (q15_t)0x1027, (q15_t)0x8107, (q15_t)0x1021, (q15_t)0x8106, (q15_t)0x101b, (q15_t)0x8105, (q15_t)0x1015, (q15_t)0x8104, - (q15_t)0x100e, (q15_t)0x8103, (q15_t)0x1008, (q15_t)0x8103, (q15_t)0x1002, (q15_t)0x8102, (q15_t)0xffc, (q15_t)0x8101, - (q15_t)0xff5, (q15_t)0x8100, (q15_t)0xfef, (q15_t)0x80ff, (q15_t)0xfe9, (q15_t)0x80ff, (q15_t)0xfe3, (q15_t)0x80fe, - (q15_t)0xfdd, (q15_t)0x80fd, (q15_t)0xfd6, (q15_t)0x80fc, (q15_t)0xfd0, (q15_t)0x80fc, (q15_t)0xfca, (q15_t)0x80fb, - (q15_t)0xfc4, (q15_t)0x80fa, (q15_t)0xfbd, (q15_t)0x80f9, (q15_t)0xfb7, (q15_t)0x80f8, (q15_t)0xfb1, (q15_t)0x80f8, - (q15_t)0xfab, (q15_t)0x80f7, (q15_t)0xfa4, (q15_t)0x80f6, (q15_t)0xf9e, (q15_t)0x80f5, (q15_t)0xf98, (q15_t)0x80f5, - (q15_t)0xf92, (q15_t)0x80f4, (q15_t)0xf8b, (q15_t)0x80f3, (q15_t)0xf85, (q15_t)0x80f2, (q15_t)0xf7f, (q15_t)0x80f2, - (q15_t)0xf79, (q15_t)0x80f1, (q15_t)0xf73, (q15_t)0x80f0, (q15_t)0xf6c, (q15_t)0x80ef, (q15_t)0xf66, (q15_t)0x80ef, - (q15_t)0xf60, (q15_t)0x80ee, (q15_t)0xf5a, (q15_t)0x80ed, (q15_t)0xf53, (q15_t)0x80ec, (q15_t)0xf4d, (q15_t)0x80ec, - (q15_t)0xf47, (q15_t)0x80eb, (q15_t)0xf41, (q15_t)0x80ea, (q15_t)0xf3a, (q15_t)0x80e9, (q15_t)0xf34, (q15_t)0x80e9, - (q15_t)0xf2e, (q15_t)0x80e8, (q15_t)0xf28, (q15_t)0x80e7, (q15_t)0xf21, (q15_t)0x80e6, (q15_t)0xf1b, (q15_t)0x80e6, - (q15_t)0xf15, (q15_t)0x80e5, (q15_t)0xf0f, (q15_t)0x80e4, (q15_t)0xf08, (q15_t)0x80e3, (q15_t)0xf02, (q15_t)0x80e3, - (q15_t)0xefc, (q15_t)0x80e2, (q15_t)0xef6, (q15_t)0x80e1, (q15_t)0xef0, (q15_t)0x80e0, (q15_t)0xee9, (q15_t)0x80e0, - (q15_t)0xee3, (q15_t)0x80df, (q15_t)0xedd, (q15_t)0x80de, (q15_t)0xed7, (q15_t)0x80dd, (q15_t)0xed0, (q15_t)0x80dd, - (q15_t)0xeca, (q15_t)0x80dc, (q15_t)0xec4, (q15_t)0x80db, (q15_t)0xebe, (q15_t)0x80db, (q15_t)0xeb7, (q15_t)0x80da, - (q15_t)0xeb1, (q15_t)0x80d9, (q15_t)0xeab, (q15_t)0x80d8, (q15_t)0xea5, (q15_t)0x80d8, (q15_t)0xe9e, (q15_t)0x80d7, - (q15_t)0xe98, (q15_t)0x80d6, (q15_t)0xe92, (q15_t)0x80d6, (q15_t)0xe8c, (q15_t)0x80d5, (q15_t)0xe85, (q15_t)0x80d4, - (q15_t)0xe7f, (q15_t)0x80d3, (q15_t)0xe79, (q15_t)0x80d3, (q15_t)0xe73, (q15_t)0x80d2, (q15_t)0xe6c, (q15_t)0x80d1, - (q15_t)0xe66, (q15_t)0x80d1, (q15_t)0xe60, (q15_t)0x80d0, (q15_t)0xe5a, (q15_t)0x80cf, (q15_t)0xe53, (q15_t)0x80ce, - (q15_t)0xe4d, (q15_t)0x80ce, (q15_t)0xe47, (q15_t)0x80cd, (q15_t)0xe41, (q15_t)0x80cc, (q15_t)0xe3a, (q15_t)0x80cc, - (q15_t)0xe34, (q15_t)0x80cb, (q15_t)0xe2e, (q15_t)0x80ca, (q15_t)0xe28, (q15_t)0x80ca, (q15_t)0xe22, (q15_t)0x80c9, - (q15_t)0xe1b, (q15_t)0x80c8, (q15_t)0xe15, (q15_t)0x80c7, (q15_t)0xe0f, (q15_t)0x80c7, (q15_t)0xe09, (q15_t)0x80c6, - (q15_t)0xe02, (q15_t)0x80c5, (q15_t)0xdfc, (q15_t)0x80c5, (q15_t)0xdf6, (q15_t)0x80c4, (q15_t)0xdf0, (q15_t)0x80c3, - (q15_t)0xde9, (q15_t)0x80c3, (q15_t)0xde3, (q15_t)0x80c2, (q15_t)0xddd, (q15_t)0x80c1, (q15_t)0xdd7, (q15_t)0x80c1, - (q15_t)0xdd0, (q15_t)0x80c0, (q15_t)0xdca, (q15_t)0x80bf, (q15_t)0xdc4, (q15_t)0x80bf, (q15_t)0xdbe, (q15_t)0x80be, - (q15_t)0xdb7, (q15_t)0x80bd, (q15_t)0xdb1, (q15_t)0x80bd, (q15_t)0xdab, (q15_t)0x80bc, (q15_t)0xda5, (q15_t)0x80bb, - (q15_t)0xd9e, (q15_t)0x80bb, (q15_t)0xd98, (q15_t)0x80ba, (q15_t)0xd92, (q15_t)0x80b9, (q15_t)0xd8c, (q15_t)0x80b9, - (q15_t)0xd85, (q15_t)0x80b8, (q15_t)0xd7f, (q15_t)0x80b7, (q15_t)0xd79, (q15_t)0x80b7, (q15_t)0xd73, (q15_t)0x80b6, - (q15_t)0xd6c, (q15_t)0x80b5, (q15_t)0xd66, (q15_t)0x80b5, (q15_t)0xd60, (q15_t)0x80b4, (q15_t)0xd5a, (q15_t)0x80b3, - (q15_t)0xd53, (q15_t)0x80b3, (q15_t)0xd4d, (q15_t)0x80b2, (q15_t)0xd47, (q15_t)0x80b1, (q15_t)0xd41, (q15_t)0x80b1, - (q15_t)0xd3a, (q15_t)0x80b0, (q15_t)0xd34, (q15_t)0x80af, (q15_t)0xd2e, (q15_t)0x80af, (q15_t)0xd28, (q15_t)0x80ae, - (q15_t)0xd21, (q15_t)0x80ad, (q15_t)0xd1b, (q15_t)0x80ad, (q15_t)0xd15, (q15_t)0x80ac, (q15_t)0xd0f, (q15_t)0x80ab, - (q15_t)0xd08, (q15_t)0x80ab, (q15_t)0xd02, (q15_t)0x80aa, (q15_t)0xcfc, (q15_t)0x80aa, (q15_t)0xcf6, (q15_t)0x80a9, - (q15_t)0xcef, (q15_t)0x80a8, (q15_t)0xce9, (q15_t)0x80a8, (q15_t)0xce3, (q15_t)0x80a7, (q15_t)0xcdd, (q15_t)0x80a6, - (q15_t)0xcd6, (q15_t)0x80a6, (q15_t)0xcd0, (q15_t)0x80a5, (q15_t)0xcca, (q15_t)0x80a5, (q15_t)0xcc4, (q15_t)0x80a4, - (q15_t)0xcbd, (q15_t)0x80a3, (q15_t)0xcb7, (q15_t)0x80a3, (q15_t)0xcb1, (q15_t)0x80a2, (q15_t)0xcab, (q15_t)0x80a1, - (q15_t)0xca4, (q15_t)0x80a1, (q15_t)0xc9e, (q15_t)0x80a0, (q15_t)0xc98, (q15_t)0x80a0, (q15_t)0xc92, (q15_t)0x809f, - (q15_t)0xc8b, (q15_t)0x809e, (q15_t)0xc85, (q15_t)0x809e, (q15_t)0xc7f, (q15_t)0x809d, (q15_t)0xc79, (q15_t)0x809c, - (q15_t)0xc72, (q15_t)0x809c, (q15_t)0xc6c, (q15_t)0x809b, (q15_t)0xc66, (q15_t)0x809b, (q15_t)0xc60, (q15_t)0x809a, - (q15_t)0xc59, (q15_t)0x8099, (q15_t)0xc53, (q15_t)0x8099, (q15_t)0xc4d, (q15_t)0x8098, (q15_t)0xc47, (q15_t)0x8098, - (q15_t)0xc40, (q15_t)0x8097, (q15_t)0xc3a, (q15_t)0x8096, (q15_t)0xc34, (q15_t)0x8096, (q15_t)0xc2e, (q15_t)0x8095, - (q15_t)0xc27, (q15_t)0x8095, (q15_t)0xc21, (q15_t)0x8094, (q15_t)0xc1b, (q15_t)0x8093, (q15_t)0xc14, (q15_t)0x8093, - (q15_t)0xc0e, (q15_t)0x8092, (q15_t)0xc08, (q15_t)0x8092, (q15_t)0xc02, (q15_t)0x8091, (q15_t)0xbfb, (q15_t)0x8090, - (q15_t)0xbf5, (q15_t)0x8090, (q15_t)0xbef, (q15_t)0x808f, (q15_t)0xbe9, (q15_t)0x808f, (q15_t)0xbe2, (q15_t)0x808e, - (q15_t)0xbdc, (q15_t)0x808e, (q15_t)0xbd6, (q15_t)0x808d, (q15_t)0xbd0, (q15_t)0x808c, (q15_t)0xbc9, (q15_t)0x808c, - (q15_t)0xbc3, (q15_t)0x808b, (q15_t)0xbbd, (q15_t)0x808b, (q15_t)0xbb7, (q15_t)0x808a, (q15_t)0xbb0, (q15_t)0x8089, - (q15_t)0xbaa, (q15_t)0x8089, (q15_t)0xba4, (q15_t)0x8088, (q15_t)0xb9e, (q15_t)0x8088, (q15_t)0xb97, (q15_t)0x8087, - (q15_t)0xb91, (q15_t)0x8087, (q15_t)0xb8b, (q15_t)0x8086, (q15_t)0xb85, (q15_t)0x8085, (q15_t)0xb7e, (q15_t)0x8085, - (q15_t)0xb78, (q15_t)0x8084, (q15_t)0xb72, (q15_t)0x8084, (q15_t)0xb6c, (q15_t)0x8083, (q15_t)0xb65, (q15_t)0x8083, - (q15_t)0xb5f, (q15_t)0x8082, (q15_t)0xb59, (q15_t)0x8082, (q15_t)0xb53, (q15_t)0x8081, (q15_t)0xb4c, (q15_t)0x8080, - (q15_t)0xb46, (q15_t)0x8080, (q15_t)0xb40, (q15_t)0x807f, (q15_t)0xb3a, (q15_t)0x807f, (q15_t)0xb33, (q15_t)0x807e, - (q15_t)0xb2d, (q15_t)0x807e, (q15_t)0xb27, (q15_t)0x807d, (q15_t)0xb20, (q15_t)0x807d, (q15_t)0xb1a, (q15_t)0x807c, - (q15_t)0xb14, (q15_t)0x807b, (q15_t)0xb0e, (q15_t)0x807b, (q15_t)0xb07, (q15_t)0x807a, (q15_t)0xb01, (q15_t)0x807a, - (q15_t)0xafb, (q15_t)0x8079, (q15_t)0xaf5, (q15_t)0x8079, (q15_t)0xaee, (q15_t)0x8078, (q15_t)0xae8, (q15_t)0x8078, - (q15_t)0xae2, (q15_t)0x8077, (q15_t)0xadc, (q15_t)0x8077, (q15_t)0xad5, (q15_t)0x8076, (q15_t)0xacf, (q15_t)0x8076, - (q15_t)0xac9, (q15_t)0x8075, (q15_t)0xac3, (q15_t)0x8075, (q15_t)0xabc, (q15_t)0x8074, (q15_t)0xab6, (q15_t)0x8073, - (q15_t)0xab0, (q15_t)0x8073, (q15_t)0xaaa, (q15_t)0x8072, (q15_t)0xaa3, (q15_t)0x8072, (q15_t)0xa9d, (q15_t)0x8071, - (q15_t)0xa97, (q15_t)0x8071, (q15_t)0xa90, (q15_t)0x8070, (q15_t)0xa8a, (q15_t)0x8070, (q15_t)0xa84, (q15_t)0x806f, - (q15_t)0xa7e, (q15_t)0x806f, (q15_t)0xa77, (q15_t)0x806e, (q15_t)0xa71, (q15_t)0x806e, (q15_t)0xa6b, (q15_t)0x806d, - (q15_t)0xa65, (q15_t)0x806d, (q15_t)0xa5e, (q15_t)0x806c, (q15_t)0xa58, (q15_t)0x806c, (q15_t)0xa52, (q15_t)0x806b, - (q15_t)0xa4c, (q15_t)0x806b, (q15_t)0xa45, (q15_t)0x806a, (q15_t)0xa3f, (q15_t)0x806a, (q15_t)0xa39, (q15_t)0x8069, - (q15_t)0xa33, (q15_t)0x8069, (q15_t)0xa2c, (q15_t)0x8068, (q15_t)0xa26, (q15_t)0x8068, (q15_t)0xa20, (q15_t)0x8067, - (q15_t)0xa19, (q15_t)0x8067, (q15_t)0xa13, (q15_t)0x8066, (q15_t)0xa0d, (q15_t)0x8066, (q15_t)0xa07, (q15_t)0x8065, - (q15_t)0xa00, (q15_t)0x8065, (q15_t)0x9fa, (q15_t)0x8064, (q15_t)0x9f4, (q15_t)0x8064, (q15_t)0x9ee, (q15_t)0x8063, - (q15_t)0x9e7, (q15_t)0x8063, (q15_t)0x9e1, (q15_t)0x8062, (q15_t)0x9db, (q15_t)0x8062, (q15_t)0x9d5, (q15_t)0x8061, - (q15_t)0x9ce, (q15_t)0x8061, (q15_t)0x9c8, (q15_t)0x8060, (q15_t)0x9c2, (q15_t)0x8060, (q15_t)0x9bc, (q15_t)0x805f, - (q15_t)0x9b5, (q15_t)0x805f, (q15_t)0x9af, (q15_t)0x805e, (q15_t)0x9a9, (q15_t)0x805e, (q15_t)0x9a2, (q15_t)0x805d, - (q15_t)0x99c, (q15_t)0x805d, (q15_t)0x996, (q15_t)0x805d, (q15_t)0x990, (q15_t)0x805c, (q15_t)0x989, (q15_t)0x805c, - (q15_t)0x983, (q15_t)0x805b, (q15_t)0x97d, (q15_t)0x805b, (q15_t)0x977, (q15_t)0x805a, (q15_t)0x970, (q15_t)0x805a, - (q15_t)0x96a, (q15_t)0x8059, (q15_t)0x964, (q15_t)0x8059, (q15_t)0x95e, (q15_t)0x8058, (q15_t)0x957, (q15_t)0x8058, - (q15_t)0x951, (q15_t)0x8057, (q15_t)0x94b, (q15_t)0x8057, (q15_t)0x944, (q15_t)0x8057, (q15_t)0x93e, (q15_t)0x8056, - (q15_t)0x938, (q15_t)0x8056, (q15_t)0x932, (q15_t)0x8055, (q15_t)0x92b, (q15_t)0x8055, (q15_t)0x925, (q15_t)0x8054, - (q15_t)0x91f, (q15_t)0x8054, (q15_t)0x919, (q15_t)0x8053, (q15_t)0x912, (q15_t)0x8053, (q15_t)0x90c, (q15_t)0x8052, - (q15_t)0x906, (q15_t)0x8052, (q15_t)0x900, (q15_t)0x8052, (q15_t)0x8f9, (q15_t)0x8051, (q15_t)0x8f3, (q15_t)0x8051, - (q15_t)0x8ed, (q15_t)0x8050, (q15_t)0x8e6, (q15_t)0x8050, (q15_t)0x8e0, (q15_t)0x804f, (q15_t)0x8da, (q15_t)0x804f, - (q15_t)0x8d4, (q15_t)0x804f, (q15_t)0x8cd, (q15_t)0x804e, (q15_t)0x8c7, (q15_t)0x804e, (q15_t)0x8c1, (q15_t)0x804d, - (q15_t)0x8bb, (q15_t)0x804d, (q15_t)0x8b4, (q15_t)0x804c, (q15_t)0x8ae, (q15_t)0x804c, (q15_t)0x8a8, (q15_t)0x804c, - (q15_t)0x8a2, (q15_t)0x804b, (q15_t)0x89b, (q15_t)0x804b, (q15_t)0x895, (q15_t)0x804a, (q15_t)0x88f, (q15_t)0x804a, - (q15_t)0x888, (q15_t)0x8049, (q15_t)0x882, (q15_t)0x8049, (q15_t)0x87c, (q15_t)0x8049, (q15_t)0x876, (q15_t)0x8048, - (q15_t)0x86f, (q15_t)0x8048, (q15_t)0x869, (q15_t)0x8047, (q15_t)0x863, (q15_t)0x8047, (q15_t)0x85d, (q15_t)0x8047, - (q15_t)0x856, (q15_t)0x8046, (q15_t)0x850, (q15_t)0x8046, (q15_t)0x84a, (q15_t)0x8045, (q15_t)0x843, (q15_t)0x8045, - (q15_t)0x83d, (q15_t)0x8044, (q15_t)0x837, (q15_t)0x8044, (q15_t)0x831, (q15_t)0x8044, (q15_t)0x82a, (q15_t)0x8043, - (q15_t)0x824, (q15_t)0x8043, (q15_t)0x81e, (q15_t)0x8042, (q15_t)0x818, (q15_t)0x8042, (q15_t)0x811, (q15_t)0x8042, - (q15_t)0x80b, (q15_t)0x8041, (q15_t)0x805, (q15_t)0x8041, (q15_t)0x7fe, (q15_t)0x8040, (q15_t)0x7f8, (q15_t)0x8040, - (q15_t)0x7f2, (q15_t)0x8040, (q15_t)0x7ec, (q15_t)0x803f, (q15_t)0x7e5, (q15_t)0x803f, (q15_t)0x7df, (q15_t)0x803f, - (q15_t)0x7d9, (q15_t)0x803e, (q15_t)0x7d3, (q15_t)0x803e, (q15_t)0x7cc, (q15_t)0x803d, (q15_t)0x7c6, (q15_t)0x803d, - (q15_t)0x7c0, (q15_t)0x803d, (q15_t)0x7ba, (q15_t)0x803c, (q15_t)0x7b3, (q15_t)0x803c, (q15_t)0x7ad, (q15_t)0x803b, - (q15_t)0x7a7, (q15_t)0x803b, (q15_t)0x7a0, (q15_t)0x803b, (q15_t)0x79a, (q15_t)0x803a, (q15_t)0x794, (q15_t)0x803a, - (q15_t)0x78e, (q15_t)0x803a, (q15_t)0x787, (q15_t)0x8039, (q15_t)0x781, (q15_t)0x8039, (q15_t)0x77b, (q15_t)0x8039, - (q15_t)0x775, (q15_t)0x8038, (q15_t)0x76e, (q15_t)0x8038, (q15_t)0x768, (q15_t)0x8037, (q15_t)0x762, (q15_t)0x8037, - (q15_t)0x75b, (q15_t)0x8037, (q15_t)0x755, (q15_t)0x8036, (q15_t)0x74f, (q15_t)0x8036, (q15_t)0x749, (q15_t)0x8036, - (q15_t)0x742, (q15_t)0x8035, (q15_t)0x73c, (q15_t)0x8035, (q15_t)0x736, (q15_t)0x8035, (q15_t)0x730, (q15_t)0x8034, - (q15_t)0x729, (q15_t)0x8034, (q15_t)0x723, (q15_t)0x8033, (q15_t)0x71d, (q15_t)0x8033, (q15_t)0x716, (q15_t)0x8033, - (q15_t)0x710, (q15_t)0x8032, (q15_t)0x70a, (q15_t)0x8032, (q15_t)0x704, (q15_t)0x8032, (q15_t)0x6fd, (q15_t)0x8031, - (q15_t)0x6f7, (q15_t)0x8031, (q15_t)0x6f1, (q15_t)0x8031, (q15_t)0x6ea, (q15_t)0x8030, (q15_t)0x6e4, (q15_t)0x8030, - (q15_t)0x6de, (q15_t)0x8030, (q15_t)0x6d8, (q15_t)0x802f, (q15_t)0x6d1, (q15_t)0x802f, (q15_t)0x6cb, (q15_t)0x802f, - (q15_t)0x6c5, (q15_t)0x802e, (q15_t)0x6bf, (q15_t)0x802e, (q15_t)0x6b8, (q15_t)0x802e, (q15_t)0x6b2, (q15_t)0x802d, - (q15_t)0x6ac, (q15_t)0x802d, (q15_t)0x6a5, (q15_t)0x802d, (q15_t)0x69f, (q15_t)0x802c, (q15_t)0x699, (q15_t)0x802c, - (q15_t)0x693, (q15_t)0x802c, (q15_t)0x68c, (q15_t)0x802b, (q15_t)0x686, (q15_t)0x802b, (q15_t)0x680, (q15_t)0x802b, - (q15_t)0x67a, (q15_t)0x802a, (q15_t)0x673, (q15_t)0x802a, (q15_t)0x66d, (q15_t)0x802a, (q15_t)0x667, (q15_t)0x802a, - (q15_t)0x660, (q15_t)0x8029, (q15_t)0x65a, (q15_t)0x8029, (q15_t)0x654, (q15_t)0x8029, (q15_t)0x64e, (q15_t)0x8028, - (q15_t)0x647, (q15_t)0x8028, (q15_t)0x641, (q15_t)0x8028, (q15_t)0x63b, (q15_t)0x8027, (q15_t)0x635, (q15_t)0x8027, - (q15_t)0x62e, (q15_t)0x8027, (q15_t)0x628, (q15_t)0x8026, (q15_t)0x622, (q15_t)0x8026, (q15_t)0x61b, (q15_t)0x8026, - (q15_t)0x615, (q15_t)0x8026, (q15_t)0x60f, (q15_t)0x8025, (q15_t)0x609, (q15_t)0x8025, (q15_t)0x602, (q15_t)0x8025, - (q15_t)0x5fc, (q15_t)0x8024, (q15_t)0x5f6, (q15_t)0x8024, (q15_t)0x5ef, (q15_t)0x8024, (q15_t)0x5e9, (q15_t)0x8023, - (q15_t)0x5e3, (q15_t)0x8023, (q15_t)0x5dd, (q15_t)0x8023, (q15_t)0x5d6, (q15_t)0x8023, (q15_t)0x5d0, (q15_t)0x8022, - (q15_t)0x5ca, (q15_t)0x8022, (q15_t)0x5c4, (q15_t)0x8022, (q15_t)0x5bd, (q15_t)0x8021, (q15_t)0x5b7, (q15_t)0x8021, - (q15_t)0x5b1, (q15_t)0x8021, (q15_t)0x5aa, (q15_t)0x8021, (q15_t)0x5a4, (q15_t)0x8020, (q15_t)0x59e, (q15_t)0x8020, - (q15_t)0x598, (q15_t)0x8020, (q15_t)0x591, (q15_t)0x8020, (q15_t)0x58b, (q15_t)0x801f, (q15_t)0x585, (q15_t)0x801f, - (q15_t)0x57f, (q15_t)0x801f, (q15_t)0x578, (q15_t)0x801e, (q15_t)0x572, (q15_t)0x801e, (q15_t)0x56c, (q15_t)0x801e, - (q15_t)0x565, (q15_t)0x801e, (q15_t)0x55f, (q15_t)0x801d, (q15_t)0x559, (q15_t)0x801d, (q15_t)0x553, (q15_t)0x801d, - (q15_t)0x54c, (q15_t)0x801d, (q15_t)0x546, (q15_t)0x801c, (q15_t)0x540, (q15_t)0x801c, (q15_t)0x539, (q15_t)0x801c, - (q15_t)0x533, (q15_t)0x801c, (q15_t)0x52d, (q15_t)0x801b, (q15_t)0x527, (q15_t)0x801b, (q15_t)0x520, (q15_t)0x801b, - (q15_t)0x51a, (q15_t)0x801b, (q15_t)0x514, (q15_t)0x801a, (q15_t)0x50d, (q15_t)0x801a, (q15_t)0x507, (q15_t)0x801a, - (q15_t)0x501, (q15_t)0x801a, (q15_t)0x4fb, (q15_t)0x8019, (q15_t)0x4f4, (q15_t)0x8019, (q15_t)0x4ee, (q15_t)0x8019, - (q15_t)0x4e8, (q15_t)0x8019, (q15_t)0x4e2, (q15_t)0x8018, (q15_t)0x4db, (q15_t)0x8018, (q15_t)0x4d5, (q15_t)0x8018, - (q15_t)0x4cf, (q15_t)0x8018, (q15_t)0x4c8, (q15_t)0x8017, (q15_t)0x4c2, (q15_t)0x8017, (q15_t)0x4bc, (q15_t)0x8017, - (q15_t)0x4b6, (q15_t)0x8017, (q15_t)0x4af, (q15_t)0x8016, (q15_t)0x4a9, (q15_t)0x8016, (q15_t)0x4a3, (q15_t)0x8016, - (q15_t)0x49c, (q15_t)0x8016, (q15_t)0x496, (q15_t)0x8016, (q15_t)0x490, (q15_t)0x8015, (q15_t)0x48a, (q15_t)0x8015, - (q15_t)0x483, (q15_t)0x8015, (q15_t)0x47d, (q15_t)0x8015, (q15_t)0x477, (q15_t)0x8014, (q15_t)0x471, (q15_t)0x8014, - (q15_t)0x46a, (q15_t)0x8014, (q15_t)0x464, (q15_t)0x8014, (q15_t)0x45e, (q15_t)0x8014, (q15_t)0x457, (q15_t)0x8013, - (q15_t)0x451, (q15_t)0x8013, (q15_t)0x44b, (q15_t)0x8013, (q15_t)0x445, (q15_t)0x8013, (q15_t)0x43e, (q15_t)0x8013, - (q15_t)0x438, (q15_t)0x8012, (q15_t)0x432, (q15_t)0x8012, (q15_t)0x42b, (q15_t)0x8012, (q15_t)0x425, (q15_t)0x8012, - (q15_t)0x41f, (q15_t)0x8012, (q15_t)0x419, (q15_t)0x8011, (q15_t)0x412, (q15_t)0x8011, (q15_t)0x40c, (q15_t)0x8011, - (q15_t)0x406, (q15_t)0x8011, (q15_t)0x3ff, (q15_t)0x8011, (q15_t)0x3f9, (q15_t)0x8010, (q15_t)0x3f3, (q15_t)0x8010, - (q15_t)0x3ed, (q15_t)0x8010, (q15_t)0x3e6, (q15_t)0x8010, (q15_t)0x3e0, (q15_t)0x8010, (q15_t)0x3da, (q15_t)0x800f, - (q15_t)0x3d4, (q15_t)0x800f, (q15_t)0x3cd, (q15_t)0x800f, (q15_t)0x3c7, (q15_t)0x800f, (q15_t)0x3c1, (q15_t)0x800f, - (q15_t)0x3ba, (q15_t)0x800e, (q15_t)0x3b4, (q15_t)0x800e, (q15_t)0x3ae, (q15_t)0x800e, (q15_t)0x3a8, (q15_t)0x800e, - (q15_t)0x3a1, (q15_t)0x800e, (q15_t)0x39b, (q15_t)0x800e, (q15_t)0x395, (q15_t)0x800d, (q15_t)0x38e, (q15_t)0x800d, - (q15_t)0x388, (q15_t)0x800d, (q15_t)0x382, (q15_t)0x800d, (q15_t)0x37c, (q15_t)0x800d, (q15_t)0x375, (q15_t)0x800c, - (q15_t)0x36f, (q15_t)0x800c, (q15_t)0x369, (q15_t)0x800c, (q15_t)0x362, (q15_t)0x800c, (q15_t)0x35c, (q15_t)0x800c, - (q15_t)0x356, (q15_t)0x800c, (q15_t)0x350, (q15_t)0x800b, (q15_t)0x349, (q15_t)0x800b, (q15_t)0x343, (q15_t)0x800b, - (q15_t)0x33d, (q15_t)0x800b, (q15_t)0x337, (q15_t)0x800b, (q15_t)0x330, (q15_t)0x800b, (q15_t)0x32a, (q15_t)0x800b, - (q15_t)0x324, (q15_t)0x800a, (q15_t)0x31d, (q15_t)0x800a, (q15_t)0x317, (q15_t)0x800a, (q15_t)0x311, (q15_t)0x800a, - (q15_t)0x30b, (q15_t)0x800a, (q15_t)0x304, (q15_t)0x800a, (q15_t)0x2fe, (q15_t)0x8009, (q15_t)0x2f8, (q15_t)0x8009, - (q15_t)0x2f1, (q15_t)0x8009, (q15_t)0x2eb, (q15_t)0x8009, (q15_t)0x2e5, (q15_t)0x8009, (q15_t)0x2df, (q15_t)0x8009, - (q15_t)0x2d8, (q15_t)0x8009, (q15_t)0x2d2, (q15_t)0x8008, (q15_t)0x2cc, (q15_t)0x8008, (q15_t)0x2c5, (q15_t)0x8008, - (q15_t)0x2bf, (q15_t)0x8008, (q15_t)0x2b9, (q15_t)0x8008, (q15_t)0x2b3, (q15_t)0x8008, (q15_t)0x2ac, (q15_t)0x8008, - (q15_t)0x2a6, (q15_t)0x8008, (q15_t)0x2a0, (q15_t)0x8007, (q15_t)0x299, (q15_t)0x8007, (q15_t)0x293, (q15_t)0x8007, - (q15_t)0x28d, (q15_t)0x8007, (q15_t)0x287, (q15_t)0x8007, (q15_t)0x280, (q15_t)0x8007, (q15_t)0x27a, (q15_t)0x8007, - (q15_t)0x274, (q15_t)0x8007, (q15_t)0x26d, (q15_t)0x8006, (q15_t)0x267, (q15_t)0x8006, (q15_t)0x261, (q15_t)0x8006, - (q15_t)0x25b, (q15_t)0x8006, (q15_t)0x254, (q15_t)0x8006, (q15_t)0x24e, (q15_t)0x8006, (q15_t)0x248, (q15_t)0x8006, - (q15_t)0x242, (q15_t)0x8006, (q15_t)0x23b, (q15_t)0x8005, (q15_t)0x235, (q15_t)0x8005, (q15_t)0x22f, (q15_t)0x8005, - (q15_t)0x228, (q15_t)0x8005, (q15_t)0x222, (q15_t)0x8005, (q15_t)0x21c, (q15_t)0x8005, (q15_t)0x216, (q15_t)0x8005, - (q15_t)0x20f, (q15_t)0x8005, (q15_t)0x209, (q15_t)0x8005, (q15_t)0x203, (q15_t)0x8005, (q15_t)0x1fc, (q15_t)0x8004, - (q15_t)0x1f6, (q15_t)0x8004, (q15_t)0x1f0, (q15_t)0x8004, (q15_t)0x1ea, (q15_t)0x8004, (q15_t)0x1e3, (q15_t)0x8004, - (q15_t)0x1dd, (q15_t)0x8004, (q15_t)0x1d7, (q15_t)0x8004, (q15_t)0x1d0, (q15_t)0x8004, (q15_t)0x1ca, (q15_t)0x8004, - (q15_t)0x1c4, (q15_t)0x8004, (q15_t)0x1be, (q15_t)0x8004, (q15_t)0x1b7, (q15_t)0x8003, (q15_t)0x1b1, (q15_t)0x8003, - (q15_t)0x1ab, (q15_t)0x8003, (q15_t)0x1a4, (q15_t)0x8003, (q15_t)0x19e, (q15_t)0x8003, (q15_t)0x198, (q15_t)0x8003, - (q15_t)0x192, (q15_t)0x8003, (q15_t)0x18b, (q15_t)0x8003, (q15_t)0x185, (q15_t)0x8003, (q15_t)0x17f, (q15_t)0x8003, - (q15_t)0x178, (q15_t)0x8003, (q15_t)0x172, (q15_t)0x8003, (q15_t)0x16c, (q15_t)0x8003, (q15_t)0x166, (q15_t)0x8002, - (q15_t)0x15f, (q15_t)0x8002, (q15_t)0x159, (q15_t)0x8002, (q15_t)0x153, (q15_t)0x8002, (q15_t)0x14d, (q15_t)0x8002, - (q15_t)0x146, (q15_t)0x8002, (q15_t)0x140, (q15_t)0x8002, (q15_t)0x13a, (q15_t)0x8002, (q15_t)0x133, (q15_t)0x8002, - (q15_t)0x12d, (q15_t)0x8002, (q15_t)0x127, (q15_t)0x8002, (q15_t)0x121, (q15_t)0x8002, (q15_t)0x11a, (q15_t)0x8002, - (q15_t)0x114, (q15_t)0x8002, (q15_t)0x10e, (q15_t)0x8002, (q15_t)0x107, (q15_t)0x8002, (q15_t)0x101, (q15_t)0x8002, - (q15_t)0xfb, (q15_t)0x8001, (q15_t)0xf5, (q15_t)0x8001, (q15_t)0xee, (q15_t)0x8001, (q15_t)0xe8, (q15_t)0x8001, - (q15_t)0xe2, (q15_t)0x8001, (q15_t)0xdb, (q15_t)0x8001, (q15_t)0xd5, (q15_t)0x8001, (q15_t)0xcf, (q15_t)0x8001, - (q15_t)0xc9, (q15_t)0x8001, (q15_t)0xc2, (q15_t)0x8001, (q15_t)0xbc, (q15_t)0x8001, (q15_t)0xb6, (q15_t)0x8001, - (q15_t)0xaf, (q15_t)0x8001, (q15_t)0xa9, (q15_t)0x8001, (q15_t)0xa3, (q15_t)0x8001, (q15_t)0x9d, (q15_t)0x8001, - (q15_t)0x96, (q15_t)0x8001, (q15_t)0x90, (q15_t)0x8001, (q15_t)0x8a, (q15_t)0x8001, (q15_t)0x83, (q15_t)0x8001, - (q15_t)0x7d, (q15_t)0x8001, (q15_t)0x77, (q15_t)0x8001, (q15_t)0x71, (q15_t)0x8001, (q15_t)0x6a, (q15_t)0x8001, - (q15_t)0x64, (q15_t)0x8001, (q15_t)0x5e, (q15_t)0x8001, (q15_t)0x57, (q15_t)0x8001, (q15_t)0x51, (q15_t)0x8001, - (q15_t)0x4b, (q15_t)0x8001, (q15_t)0x45, (q15_t)0x8001, (q15_t)0x3e, (q15_t)0x8001, (q15_t)0x38, (q15_t)0x8001, - (q15_t)0x32, (q15_t)0x8001, (q15_t)0x2b, (q15_t)0x8001, (q15_t)0x25, (q15_t)0x8001, (q15_t)0x1f, (q15_t)0x8001, - (q15_t)0x19, (q15_t)0x8001, (q15_t)0x12, (q15_t)0x8001, (q15_t)0xc, (q15_t)0x8001, (q15_t)0x6, (q15_t)0x8001 -}; - - -/** -* \par -* cosFactor tables are generated using the formula :
 cos_factors[n] = 2 * cos((2n+1)*pi/(4*N)) 
-* \par -* C command to generate the table -*
-* for(i = 0; i< N; i++)
-* {
-*   cos_factors[i]= 2 * cos((2*i+1)*c/2);
-* } 
-* \par -* where N is the number of factors to generate and c is pi/(2*N) -* \par -* Then converted to q15 format by multiplying with 2^31 and saturated if required. - -*/ - -static const q15_t ALIGN4 cos_factorsQ15_128[128] = { - (q15_t)0x7fff, (q15_t)0x7ffa, (q15_t)0x7ff0, (q15_t)0x7fe1, (q15_t)0x7fce, (q15_t)0x7fb5, (q15_t)0x7f97, (q15_t)0x7f75, - (q15_t)0x7f4d, (q15_t)0x7f21, (q15_t)0x7ef0, (q15_t)0x7eba, (q15_t)0x7e7f, (q15_t)0x7e3f, (q15_t)0x7dfa, (q15_t)0x7db0, - (q15_t)0x7d62, (q15_t)0x7d0f, (q15_t)0x7cb7, (q15_t)0x7c5a, (q15_t)0x7bf8, (q15_t)0x7b92, (q15_t)0x7b26, (q15_t)0x7ab6, - (q15_t)0x7a42, (q15_t)0x79c8, (q15_t)0x794a, (q15_t)0x78c7, (q15_t)0x7840, (q15_t)0x77b4, (q15_t)0x7723, (q15_t)0x768e, - (q15_t)0x75f4, (q15_t)0x7555, (q15_t)0x74b2, (q15_t)0x740b, (q15_t)0x735f, (q15_t)0x72af, (q15_t)0x71fa, (q15_t)0x7141, - (q15_t)0x7083, (q15_t)0x6fc1, (q15_t)0x6efb, (q15_t)0x6e30, (q15_t)0x6d62, (q15_t)0x6c8f, (q15_t)0x6bb8, (q15_t)0x6adc, - (q15_t)0x69fd, (q15_t)0x6919, (q15_t)0x6832, (q15_t)0x6746, (q15_t)0x6657, (q15_t)0x6563, (q15_t)0x646c, (q15_t)0x6371, - (q15_t)0x6271, (q15_t)0x616f, (q15_t)0x6068, (q15_t)0x5f5e, (q15_t)0x5e50, (q15_t)0x5d3e, (q15_t)0x5c29, (q15_t)0x5b10, - (q15_t)0x59f3, (q15_t)0x58d4, (q15_t)0x57b0, (q15_t)0x568a, (q15_t)0x5560, (q15_t)0x5433, (q15_t)0x5302, (q15_t)0x51ce, - (q15_t)0x5097, (q15_t)0x4f5e, (q15_t)0x4e21, (q15_t)0x4ce1, (q15_t)0x4b9e, (q15_t)0x4a58, (q15_t)0x490f, (q15_t)0x47c3, - (q15_t)0x4675, (q15_t)0x4524, (q15_t)0x43d0, (q15_t)0x427a, (q15_t)0x4121, (q15_t)0x3fc5, (q15_t)0x3e68, (q15_t)0x3d07, - (q15_t)0x3ba5, (q15_t)0x3a40, (q15_t)0x38d8, (q15_t)0x376f, (q15_t)0x3604, (q15_t)0x3496, (q15_t)0x3326, (q15_t)0x31b5, - (q15_t)0x3041, (q15_t)0x2ecc, (q15_t)0x2d55, (q15_t)0x2bdc, (q15_t)0x2a61, (q15_t)0x28e5, (q15_t)0x2767, (q15_t)0x25e8, - (q15_t)0x2467, (q15_t)0x22e5, (q15_t)0x2161, (q15_t)0x1fdc, (q15_t)0x1e56, (q15_t)0x1ccf, (q15_t)0x1b47, (q15_t)0x19bd, - (q15_t)0x1833, (q15_t)0x16a8, (q15_t)0x151b, (q15_t)0x138e, (q15_t)0x1201, (q15_t)0x1072, (q15_t)0xee3, (q15_t)0xd53, - (q15_t)0xbc3, (q15_t)0xa33, (q15_t)0x8a2, (q15_t)0x710, (q15_t)0x57f, (q15_t)0x3ed, (q15_t)0x25b, (q15_t)0xc9 -}; - -static const q15_t ALIGN4 cos_factorsQ15_512[512] = { - (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7ffe, (q15_t)0x7ffc, (q15_t)0x7ffb, (q15_t)0x7ff9, (q15_t)0x7ff7, - (q15_t)0x7ff4, (q15_t)0x7ff2, (q15_t)0x7fee, (q15_t)0x7feb, (q15_t)0x7fe7, (q15_t)0x7fe3, (q15_t)0x7fdf, (q15_t)0x7fda, - (q15_t)0x7fd6, (q15_t)0x7fd0, (q15_t)0x7fcb, (q15_t)0x7fc5, (q15_t)0x7fbf, (q15_t)0x7fb8, (q15_t)0x7fb1, (q15_t)0x7faa, - (q15_t)0x7fa3, (q15_t)0x7f9b, (q15_t)0x7f93, (q15_t)0x7f8b, (q15_t)0x7f82, (q15_t)0x7f79, (q15_t)0x7f70, (q15_t)0x7f67, - (q15_t)0x7f5d, (q15_t)0x7f53, (q15_t)0x7f48, (q15_t)0x7f3d, (q15_t)0x7f32, (q15_t)0x7f27, (q15_t)0x7f1b, (q15_t)0x7f0f, - (q15_t)0x7f03, (q15_t)0x7ef6, (q15_t)0x7ee9, (q15_t)0x7edc, (q15_t)0x7ecf, (q15_t)0x7ec1, (q15_t)0x7eb3, (q15_t)0x7ea4, - (q15_t)0x7e95, (q15_t)0x7e86, (q15_t)0x7e77, (q15_t)0x7e67, (q15_t)0x7e57, (q15_t)0x7e47, (q15_t)0x7e37, (q15_t)0x7e26, - (q15_t)0x7e14, (q15_t)0x7e03, (q15_t)0x7df1, (q15_t)0x7ddf, (q15_t)0x7dcd, (q15_t)0x7dba, (q15_t)0x7da7, (q15_t)0x7d94, - (q15_t)0x7d80, (q15_t)0x7d6c, (q15_t)0x7d58, (q15_t)0x7d43, (q15_t)0x7d2f, (q15_t)0x7d19, (q15_t)0x7d04, (q15_t)0x7cee, - (q15_t)0x7cd8, (q15_t)0x7cc2, (q15_t)0x7cab, (q15_t)0x7c94, (q15_t)0x7c7d, (q15_t)0x7c66, (q15_t)0x7c4e, (q15_t)0x7c36, - (q15_t)0x7c1d, (q15_t)0x7c05, (q15_t)0x7beb, (q15_t)0x7bd2, (q15_t)0x7bb9, (q15_t)0x7b9f, (q15_t)0x7b84, (q15_t)0x7b6a, - (q15_t)0x7b4f, (q15_t)0x7b34, (q15_t)0x7b19, (q15_t)0x7afd, (q15_t)0x7ae1, (q15_t)0x7ac5, (q15_t)0x7aa8, (q15_t)0x7a8b, - (q15_t)0x7a6e, (q15_t)0x7a50, (q15_t)0x7a33, (q15_t)0x7a15, (q15_t)0x79f6, (q15_t)0x79d8, (q15_t)0x79b9, (q15_t)0x7999, - (q15_t)0x797a, (q15_t)0x795a, (q15_t)0x793a, (q15_t)0x7919, (q15_t)0x78f9, (q15_t)0x78d8, (q15_t)0x78b6, (q15_t)0x7895, - (q15_t)0x7873, (q15_t)0x7851, (q15_t)0x782e, (q15_t)0x780c, (q15_t)0x77e9, (q15_t)0x77c5, (q15_t)0x77a2, (q15_t)0x777e, - (q15_t)0x775a, (q15_t)0x7735, (q15_t)0x7710, (q15_t)0x76eb, (q15_t)0x76c6, (q15_t)0x76a0, (q15_t)0x767b, (q15_t)0x7654, - (q15_t)0x762e, (q15_t)0x7607, (q15_t)0x75e0, (q15_t)0x75b9, (q15_t)0x7591, (q15_t)0x7569, (q15_t)0x7541, (q15_t)0x7519, - (q15_t)0x74f0, (q15_t)0x74c7, (q15_t)0x749e, (q15_t)0x7474, (q15_t)0x744a, (q15_t)0x7420, (q15_t)0x73f6, (q15_t)0x73cb, - (q15_t)0x73a0, (q15_t)0x7375, (q15_t)0x7349, (q15_t)0x731d, (q15_t)0x72f1, (q15_t)0x72c5, (q15_t)0x7298, (q15_t)0x726b, - (q15_t)0x723e, (q15_t)0x7211, (q15_t)0x71e3, (q15_t)0x71b5, (q15_t)0x7186, (q15_t)0x7158, (q15_t)0x7129, (q15_t)0x70fa, - (q15_t)0x70cb, (q15_t)0x709b, (q15_t)0x706b, (q15_t)0x703b, (q15_t)0x700a, (q15_t)0x6fda, (q15_t)0x6fa9, (q15_t)0x6f77, - (q15_t)0x6f46, (q15_t)0x6f14, (q15_t)0x6ee2, (q15_t)0x6eaf, (q15_t)0x6e7d, (q15_t)0x6e4a, (q15_t)0x6e17, (q15_t)0x6de3, - (q15_t)0x6db0, (q15_t)0x6d7c, (q15_t)0x6d48, (q15_t)0x6d13, (q15_t)0x6cde, (q15_t)0x6ca9, (q15_t)0x6c74, (q15_t)0x6c3f, - (q15_t)0x6c09, (q15_t)0x6bd3, (q15_t)0x6b9c, (q15_t)0x6b66, (q15_t)0x6b2f, (q15_t)0x6af8, (q15_t)0x6ac1, (q15_t)0x6a89, - (q15_t)0x6a51, (q15_t)0x6a19, (q15_t)0x69e1, (q15_t)0x69a8, (q15_t)0x696f, (q15_t)0x6936, (q15_t)0x68fd, (q15_t)0x68c3, - (q15_t)0x6889, (q15_t)0x684f, (q15_t)0x6815, (q15_t)0x67da, (q15_t)0x679f, (q15_t)0x6764, (q15_t)0x6729, (q15_t)0x66ed, - (q15_t)0x66b1, (q15_t)0x6675, (q15_t)0x6639, (q15_t)0x65fc, (q15_t)0x65bf, (q15_t)0x6582, (q15_t)0x6545, (q15_t)0x6507, - (q15_t)0x64c9, (q15_t)0x648b, (q15_t)0x644d, (q15_t)0x640e, (q15_t)0x63cf, (q15_t)0x6390, (q15_t)0x6351, (q15_t)0x6311, - (q15_t)0x62d2, (q15_t)0x6292, (q15_t)0x6251, (q15_t)0x6211, (q15_t)0x61d0, (q15_t)0x618f, (q15_t)0x614e, (q15_t)0x610d, - (q15_t)0x60cb, (q15_t)0x6089, (q15_t)0x6047, (q15_t)0x6004, (q15_t)0x5fc2, (q15_t)0x5f7f, (q15_t)0x5f3c, (q15_t)0x5ef9, - (q15_t)0x5eb5, (q15_t)0x5e71, (q15_t)0x5e2d, (q15_t)0x5de9, (q15_t)0x5da5, (q15_t)0x5d60, (q15_t)0x5d1b, (q15_t)0x5cd6, - (q15_t)0x5c91, (q15_t)0x5c4b, (q15_t)0x5c06, (q15_t)0x5bc0, (q15_t)0x5b79, (q15_t)0x5b33, (q15_t)0x5aec, (q15_t)0x5aa5, - (q15_t)0x5a5e, (q15_t)0x5a17, (q15_t)0x59d0, (q15_t)0x5988, (q15_t)0x5940, (q15_t)0x58f8, (q15_t)0x58af, (q15_t)0x5867, - (q15_t)0x581e, (q15_t)0x57d5, (q15_t)0x578c, (q15_t)0x5742, (q15_t)0x56f9, (q15_t)0x56af, (q15_t)0x5665, (q15_t)0x561a, - (q15_t)0x55d0, (q15_t)0x5585, (q15_t)0x553a, (q15_t)0x54ef, (q15_t)0x54a4, (q15_t)0x5458, (q15_t)0x540d, (q15_t)0x53c1, - (q15_t)0x5375, (q15_t)0x5328, (q15_t)0x52dc, (q15_t)0x528f, (q15_t)0x5242, (q15_t)0x51f5, (q15_t)0x51a8, (q15_t)0x515a, - (q15_t)0x510c, (q15_t)0x50bf, (q15_t)0x5070, (q15_t)0x5022, (q15_t)0x4fd4, (q15_t)0x4f85, (q15_t)0x4f36, (q15_t)0x4ee7, - (q15_t)0x4e98, (q15_t)0x4e48, (q15_t)0x4df9, (q15_t)0x4da9, (q15_t)0x4d59, (q15_t)0x4d09, (q15_t)0x4cb8, (q15_t)0x4c68, - (q15_t)0x4c17, (q15_t)0x4bc6, (q15_t)0x4b75, (q15_t)0x4b24, (q15_t)0x4ad2, (q15_t)0x4a81, (q15_t)0x4a2f, (q15_t)0x49dd, - (q15_t)0x498a, (q15_t)0x4938, (q15_t)0x48e6, (q15_t)0x4893, (q15_t)0x4840, (q15_t)0x47ed, (q15_t)0x479a, (q15_t)0x4746, - (q15_t)0x46f3, (q15_t)0x469f, (q15_t)0x464b, (q15_t)0x45f7, (q15_t)0x45a3, (q15_t)0x454e, (q15_t)0x44fa, (q15_t)0x44a5, - (q15_t)0x4450, (q15_t)0x43fb, (q15_t)0x43a5, (q15_t)0x4350, (q15_t)0x42fa, (q15_t)0x42a5, (q15_t)0x424f, (q15_t)0x41f9, - (q15_t)0x41a2, (q15_t)0x414c, (q15_t)0x40f6, (q15_t)0x409f, (q15_t)0x4048, (q15_t)0x3ff1, (q15_t)0x3f9a, (q15_t)0x3f43, - (q15_t)0x3eeb, (q15_t)0x3e93, (q15_t)0x3e3c, (q15_t)0x3de4, (q15_t)0x3d8c, (q15_t)0x3d33, (q15_t)0x3cdb, (q15_t)0x3c83, - (q15_t)0x3c2a, (q15_t)0x3bd1, (q15_t)0x3b78, (q15_t)0x3b1f, (q15_t)0x3ac6, (q15_t)0x3a6c, (q15_t)0x3a13, (q15_t)0x39b9, - (q15_t)0x395f, (q15_t)0x3906, (q15_t)0x38ab, (q15_t)0x3851, (q15_t)0x37f7, (q15_t)0x379c, (q15_t)0x3742, (q15_t)0x36e7, - (q15_t)0x368c, (q15_t)0x3631, (q15_t)0x35d6, (q15_t)0x357b, (q15_t)0x351f, (q15_t)0x34c4, (q15_t)0x3468, (q15_t)0x340c, - (q15_t)0x33b0, (q15_t)0x3354, (q15_t)0x32f8, (q15_t)0x329c, (q15_t)0x3240, (q15_t)0x31e3, (q15_t)0x3186, (q15_t)0x312a, - (q15_t)0x30cd, (q15_t)0x3070, (q15_t)0x3013, (q15_t)0x2fb5, (q15_t)0x2f58, (q15_t)0x2efb, (q15_t)0x2e9d, (q15_t)0x2e3f, - (q15_t)0x2de2, (q15_t)0x2d84, (q15_t)0x2d26, (q15_t)0x2cc8, (q15_t)0x2c69, (q15_t)0x2c0b, (q15_t)0x2bad, (q15_t)0x2b4e, - (q15_t)0x2aef, (q15_t)0x2a91, (q15_t)0x2a32, (q15_t)0x29d3, (q15_t)0x2974, (q15_t)0x2915, (q15_t)0x28b5, (q15_t)0x2856, - (q15_t)0x27f6, (q15_t)0x2797, (q15_t)0x2737, (q15_t)0x26d8, (q15_t)0x2678, (q15_t)0x2618, (q15_t)0x25b8, (q15_t)0x2558, - (q15_t)0x24f7, (q15_t)0x2497, (q15_t)0x2437, (q15_t)0x23d6, (q15_t)0x2376, (q15_t)0x2315, (q15_t)0x22b4, (q15_t)0x2254, - (q15_t)0x21f3, (q15_t)0x2192, (q15_t)0x2131, (q15_t)0x20d0, (q15_t)0x206e, (q15_t)0x200d, (q15_t)0x1fac, (q15_t)0x1f4a, - (q15_t)0x1ee9, (q15_t)0x1e87, (q15_t)0x1e25, (q15_t)0x1dc4, (q15_t)0x1d62, (q15_t)0x1d00, (q15_t)0x1c9e, (q15_t)0x1c3c, - (q15_t)0x1bda, (q15_t)0x1b78, (q15_t)0x1b16, (q15_t)0x1ab3, (q15_t)0x1a51, (q15_t)0x19ef, (q15_t)0x198c, (q15_t)0x192a, - (q15_t)0x18c7, (q15_t)0x1864, (q15_t)0x1802, (q15_t)0x179f, (q15_t)0x173c, (q15_t)0x16d9, (q15_t)0x1676, (q15_t)0x1613, - (q15_t)0x15b0, (q15_t)0x154d, (q15_t)0x14ea, (q15_t)0x1487, (q15_t)0x1423, (q15_t)0x13c0, (q15_t)0x135d, (q15_t)0x12f9, - (q15_t)0x1296, (q15_t)0x1232, (q15_t)0x11cf, (q15_t)0x116b, (q15_t)0x1108, (q15_t)0x10a4, (q15_t)0x1040, (q15_t)0xfdd, - (q15_t)0xf79, (q15_t)0xf15, (q15_t)0xeb1, (q15_t)0xe4d, (q15_t)0xde9, (q15_t)0xd85, (q15_t)0xd21, (q15_t)0xcbd, - (q15_t)0xc59, (q15_t)0xbf5, (q15_t)0xb91, (q15_t)0xb2d, (q15_t)0xac9, (q15_t)0xa65, (q15_t)0xa00, (q15_t)0x99c, - (q15_t)0x938, (q15_t)0x8d4, (q15_t)0x86f, (q15_t)0x80b, (q15_t)0x7a7, (q15_t)0x742, (q15_t)0x6de, (q15_t)0x67a, - (q15_t)0x615, (q15_t)0x5b1, (q15_t)0x54c, (q15_t)0x4e8, (q15_t)0x483, (q15_t)0x41f, (q15_t)0x3ba, (q15_t)0x356, - (q15_t)0x2f1, (q15_t)0x28d, (q15_t)0x228, (q15_t)0x1c4, (q15_t)0x15f, (q15_t)0xfb, (q15_t)0x96, (q15_t)0x32 -}; - -static const q15_t ALIGN4 cos_factorsQ15_2048[2048] = { - (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, - (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7ffe, (q15_t)0x7ffe, (q15_t)0x7ffe, (q15_t)0x7ffe, (q15_t)0x7ffd, (q15_t)0x7ffd, - (q15_t)0x7ffd, (q15_t)0x7ffd, (q15_t)0x7ffc, (q15_t)0x7ffc, (q15_t)0x7ffb, (q15_t)0x7ffb, (q15_t)0x7ffb, (q15_t)0x7ffa, - (q15_t)0x7ffa, (q15_t)0x7ff9, (q15_t)0x7ff9, (q15_t)0x7ff8, (q15_t)0x7ff8, (q15_t)0x7ff7, (q15_t)0x7ff7, (q15_t)0x7ff6, - (q15_t)0x7ff5, (q15_t)0x7ff5, (q15_t)0x7ff4, (q15_t)0x7ff3, (q15_t)0x7ff3, (q15_t)0x7ff2, (q15_t)0x7ff1, (q15_t)0x7ff0, - (q15_t)0x7ff0, (q15_t)0x7fef, (q15_t)0x7fee, (q15_t)0x7fed, (q15_t)0x7fec, (q15_t)0x7fec, (q15_t)0x7feb, (q15_t)0x7fea, - (q15_t)0x7fe9, (q15_t)0x7fe8, (q15_t)0x7fe7, (q15_t)0x7fe6, (q15_t)0x7fe5, (q15_t)0x7fe4, (q15_t)0x7fe3, (q15_t)0x7fe2, - (q15_t)0x7fe1, (q15_t)0x7fe0, (q15_t)0x7fdf, (q15_t)0x7fdd, (q15_t)0x7fdc, (q15_t)0x7fdb, (q15_t)0x7fda, (q15_t)0x7fd9, - (q15_t)0x7fd7, (q15_t)0x7fd6, (q15_t)0x7fd5, (q15_t)0x7fd4, (q15_t)0x7fd2, (q15_t)0x7fd1, (q15_t)0x7fd0, (q15_t)0x7fce, - (q15_t)0x7fcd, (q15_t)0x7fcb, (q15_t)0x7fca, (q15_t)0x7fc9, (q15_t)0x7fc7, (q15_t)0x7fc6, (q15_t)0x7fc4, (q15_t)0x7fc3, - (q15_t)0x7fc1, (q15_t)0x7fc0, (q15_t)0x7fbe, (q15_t)0x7fbc, (q15_t)0x7fbb, (q15_t)0x7fb9, (q15_t)0x7fb7, (q15_t)0x7fb6, - (q15_t)0x7fb4, (q15_t)0x7fb2, (q15_t)0x7fb1, (q15_t)0x7faf, (q15_t)0x7fad, (q15_t)0x7fab, (q15_t)0x7fa9, (q15_t)0x7fa8, - (q15_t)0x7fa6, (q15_t)0x7fa4, (q15_t)0x7fa2, (q15_t)0x7fa0, (q15_t)0x7f9e, (q15_t)0x7f9c, (q15_t)0x7f9a, (q15_t)0x7f98, - (q15_t)0x7f96, (q15_t)0x7f94, (q15_t)0x7f92, (q15_t)0x7f90, (q15_t)0x7f8e, (q15_t)0x7f8c, (q15_t)0x7f8a, (q15_t)0x7f88, - (q15_t)0x7f86, (q15_t)0x7f83, (q15_t)0x7f81, (q15_t)0x7f7f, (q15_t)0x7f7d, (q15_t)0x7f7b, (q15_t)0x7f78, (q15_t)0x7f76, - (q15_t)0x7f74, (q15_t)0x7f71, (q15_t)0x7f6f, (q15_t)0x7f6d, (q15_t)0x7f6a, (q15_t)0x7f68, (q15_t)0x7f65, (q15_t)0x7f63, - (q15_t)0x7f60, (q15_t)0x7f5e, (q15_t)0x7f5b, (q15_t)0x7f59, (q15_t)0x7f56, (q15_t)0x7f54, (q15_t)0x7f51, (q15_t)0x7f4f, - (q15_t)0x7f4c, (q15_t)0x7f49, (q15_t)0x7f47, (q15_t)0x7f44, (q15_t)0x7f41, (q15_t)0x7f3f, (q15_t)0x7f3c, (q15_t)0x7f39, - (q15_t)0x7f36, (q15_t)0x7f34, (q15_t)0x7f31, (q15_t)0x7f2e, (q15_t)0x7f2b, (q15_t)0x7f28, (q15_t)0x7f25, (q15_t)0x7f23, - (q15_t)0x7f20, (q15_t)0x7f1d, (q15_t)0x7f1a, (q15_t)0x7f17, (q15_t)0x7f14, (q15_t)0x7f11, (q15_t)0x7f0e, (q15_t)0x7f0b, - (q15_t)0x7f08, (q15_t)0x7f04, (q15_t)0x7f01, (q15_t)0x7efe, (q15_t)0x7efb, (q15_t)0x7ef8, (q15_t)0x7ef5, (q15_t)0x7ef1, - (q15_t)0x7eee, (q15_t)0x7eeb, (q15_t)0x7ee8, (q15_t)0x7ee4, (q15_t)0x7ee1, (q15_t)0x7ede, (q15_t)0x7eda, (q15_t)0x7ed7, - (q15_t)0x7ed4, (q15_t)0x7ed0, (q15_t)0x7ecd, (q15_t)0x7ec9, (q15_t)0x7ec6, (q15_t)0x7ec3, (q15_t)0x7ebf, (q15_t)0x7ebb, - (q15_t)0x7eb8, (q15_t)0x7eb4, (q15_t)0x7eb1, (q15_t)0x7ead, (q15_t)0x7eaa, (q15_t)0x7ea6, (q15_t)0x7ea2, (q15_t)0x7e9f, - (q15_t)0x7e9b, (q15_t)0x7e97, (q15_t)0x7e94, (q15_t)0x7e90, (q15_t)0x7e8c, (q15_t)0x7e88, (q15_t)0x7e84, (q15_t)0x7e81, - (q15_t)0x7e7d, (q15_t)0x7e79, (q15_t)0x7e75, (q15_t)0x7e71, (q15_t)0x7e6d, (q15_t)0x7e69, (q15_t)0x7e65, (q15_t)0x7e61, - (q15_t)0x7e5d, (q15_t)0x7e59, (q15_t)0x7e55, (q15_t)0x7e51, (q15_t)0x7e4d, (q15_t)0x7e49, (q15_t)0x7e45, (q15_t)0x7e41, - (q15_t)0x7e3d, (q15_t)0x7e39, (q15_t)0x7e34, (q15_t)0x7e30, (q15_t)0x7e2c, (q15_t)0x7e28, (q15_t)0x7e24, (q15_t)0x7e1f, - (q15_t)0x7e1b, (q15_t)0x7e17, (q15_t)0x7e12, (q15_t)0x7e0e, (q15_t)0x7e0a, (q15_t)0x7e05, (q15_t)0x7e01, (q15_t)0x7dfc, - (q15_t)0x7df8, (q15_t)0x7df3, (q15_t)0x7def, (q15_t)0x7dea, (q15_t)0x7de6, (q15_t)0x7de1, (q15_t)0x7ddd, (q15_t)0x7dd8, - (q15_t)0x7dd4, (q15_t)0x7dcf, (q15_t)0x7dca, (q15_t)0x7dc6, (q15_t)0x7dc1, (q15_t)0x7dbc, (q15_t)0x7db8, (q15_t)0x7db3, - (q15_t)0x7dae, (q15_t)0x7da9, (q15_t)0x7da5, (q15_t)0x7da0, (q15_t)0x7d9b, (q15_t)0x7d96, (q15_t)0x7d91, (q15_t)0x7d8c, - (q15_t)0x7d87, (q15_t)0x7d82, (q15_t)0x7d7e, (q15_t)0x7d79, (q15_t)0x7d74, (q15_t)0x7d6f, (q15_t)0x7d6a, (q15_t)0x7d65, - (q15_t)0x7d60, (q15_t)0x7d5a, (q15_t)0x7d55, (q15_t)0x7d50, (q15_t)0x7d4b, (q15_t)0x7d46, (q15_t)0x7d41, (q15_t)0x7d3c, - (q15_t)0x7d36, (q15_t)0x7d31, (q15_t)0x7d2c, (q15_t)0x7d27, (q15_t)0x7d21, (q15_t)0x7d1c, (q15_t)0x7d17, (q15_t)0x7d11, - (q15_t)0x7d0c, (q15_t)0x7d07, (q15_t)0x7d01, (q15_t)0x7cfc, (q15_t)0x7cf6, (q15_t)0x7cf1, (q15_t)0x7cec, (q15_t)0x7ce6, - (q15_t)0x7ce1, (q15_t)0x7cdb, (q15_t)0x7cd5, (q15_t)0x7cd0, (q15_t)0x7cca, (q15_t)0x7cc5, (q15_t)0x7cbf, (q15_t)0x7cb9, - (q15_t)0x7cb4, (q15_t)0x7cae, (q15_t)0x7ca8, (q15_t)0x7ca3, (q15_t)0x7c9d, (q15_t)0x7c97, (q15_t)0x7c91, (q15_t)0x7c8c, - (q15_t)0x7c86, (q15_t)0x7c80, (q15_t)0x7c7a, (q15_t)0x7c74, (q15_t)0x7c6e, (q15_t)0x7c69, (q15_t)0x7c63, (q15_t)0x7c5d, - (q15_t)0x7c57, (q15_t)0x7c51, (q15_t)0x7c4b, (q15_t)0x7c45, (q15_t)0x7c3f, (q15_t)0x7c39, (q15_t)0x7c33, (q15_t)0x7c2d, - (q15_t)0x7c26, (q15_t)0x7c20, (q15_t)0x7c1a, (q15_t)0x7c14, (q15_t)0x7c0e, (q15_t)0x7c08, (q15_t)0x7c01, (q15_t)0x7bfb, - (q15_t)0x7bf5, (q15_t)0x7bef, (q15_t)0x7be8, (q15_t)0x7be2, (q15_t)0x7bdc, (q15_t)0x7bd5, (q15_t)0x7bcf, (q15_t)0x7bc9, - (q15_t)0x7bc2, (q15_t)0x7bbc, (q15_t)0x7bb5, (q15_t)0x7baf, (q15_t)0x7ba8, (q15_t)0x7ba2, (q15_t)0x7b9b, (q15_t)0x7b95, - (q15_t)0x7b8e, (q15_t)0x7b88, (q15_t)0x7b81, (q15_t)0x7b7a, (q15_t)0x7b74, (q15_t)0x7b6d, (q15_t)0x7b67, (q15_t)0x7b60, - (q15_t)0x7b59, (q15_t)0x7b52, (q15_t)0x7b4c, (q15_t)0x7b45, (q15_t)0x7b3e, (q15_t)0x7b37, (q15_t)0x7b31, (q15_t)0x7b2a, - (q15_t)0x7b23, (q15_t)0x7b1c, (q15_t)0x7b15, (q15_t)0x7b0e, (q15_t)0x7b07, (q15_t)0x7b00, (q15_t)0x7af9, (q15_t)0x7af2, - (q15_t)0x7aeb, (q15_t)0x7ae4, (q15_t)0x7add, (q15_t)0x7ad6, (q15_t)0x7acf, (q15_t)0x7ac8, (q15_t)0x7ac1, (q15_t)0x7aba, - (q15_t)0x7ab3, (q15_t)0x7aac, (q15_t)0x7aa4, (q15_t)0x7a9d, (q15_t)0x7a96, (q15_t)0x7a8f, (q15_t)0x7a87, (q15_t)0x7a80, - (q15_t)0x7a79, (q15_t)0x7a72, (q15_t)0x7a6a, (q15_t)0x7a63, (q15_t)0x7a5c, (q15_t)0x7a54, (q15_t)0x7a4d, (q15_t)0x7a45, - (q15_t)0x7a3e, (q15_t)0x7a36, (q15_t)0x7a2f, (q15_t)0x7a27, (q15_t)0x7a20, (q15_t)0x7a18, (q15_t)0x7a11, (q15_t)0x7a09, - (q15_t)0x7a02, (q15_t)0x79fa, (q15_t)0x79f2, (q15_t)0x79eb, (q15_t)0x79e3, (q15_t)0x79db, (q15_t)0x79d4, (q15_t)0x79cc, - (q15_t)0x79c4, (q15_t)0x79bc, (q15_t)0x79b5, (q15_t)0x79ad, (q15_t)0x79a5, (q15_t)0x799d, (q15_t)0x7995, (q15_t)0x798e, - (q15_t)0x7986, (q15_t)0x797e, (q15_t)0x7976, (q15_t)0x796e, (q15_t)0x7966, (q15_t)0x795e, (q15_t)0x7956, (q15_t)0x794e, - (q15_t)0x7946, (q15_t)0x793e, (q15_t)0x7936, (q15_t)0x792e, (q15_t)0x7926, (q15_t)0x791e, (q15_t)0x7915, (q15_t)0x790d, - (q15_t)0x7905, (q15_t)0x78fd, (q15_t)0x78f5, (q15_t)0x78ec, (q15_t)0x78e4, (q15_t)0x78dc, (q15_t)0x78d4, (q15_t)0x78cb, - (q15_t)0x78c3, (q15_t)0x78bb, (q15_t)0x78b2, (q15_t)0x78aa, (q15_t)0x78a2, (q15_t)0x7899, (q15_t)0x7891, (q15_t)0x7888, - (q15_t)0x7880, (q15_t)0x7877, (q15_t)0x786f, (q15_t)0x7866, (q15_t)0x785e, (q15_t)0x7855, (q15_t)0x784d, (q15_t)0x7844, - (q15_t)0x783b, (q15_t)0x7833, (q15_t)0x782a, (q15_t)0x7821, (q15_t)0x7819, (q15_t)0x7810, (q15_t)0x7807, (q15_t)0x77ff, - (q15_t)0x77f6, (q15_t)0x77ed, (q15_t)0x77e4, (q15_t)0x77db, (q15_t)0x77d3, (q15_t)0x77ca, (q15_t)0x77c1, (q15_t)0x77b8, - (q15_t)0x77af, (q15_t)0x77a6, (q15_t)0x779d, (q15_t)0x7794, (q15_t)0x778b, (q15_t)0x7782, (q15_t)0x7779, (q15_t)0x7770, - (q15_t)0x7767, (q15_t)0x775e, (q15_t)0x7755, (q15_t)0x774c, (q15_t)0x7743, (q15_t)0x773a, (q15_t)0x7731, (q15_t)0x7727, - (q15_t)0x771e, (q15_t)0x7715, (q15_t)0x770c, (q15_t)0x7703, (q15_t)0x76f9, (q15_t)0x76f0, (q15_t)0x76e7, (q15_t)0x76dd, - (q15_t)0x76d4, (q15_t)0x76cb, (q15_t)0x76c1, (q15_t)0x76b8, (q15_t)0x76af, (q15_t)0x76a5, (q15_t)0x769c, (q15_t)0x7692, - (q15_t)0x7689, (q15_t)0x767f, (q15_t)0x7676, (q15_t)0x766c, (q15_t)0x7663, (q15_t)0x7659, (q15_t)0x7650, (q15_t)0x7646, - (q15_t)0x763c, (q15_t)0x7633, (q15_t)0x7629, (q15_t)0x761f, (q15_t)0x7616, (q15_t)0x760c, (q15_t)0x7602, (q15_t)0x75f9, - (q15_t)0x75ef, (q15_t)0x75e5, (q15_t)0x75db, (q15_t)0x75d1, (q15_t)0x75c8, (q15_t)0x75be, (q15_t)0x75b4, (q15_t)0x75aa, - (q15_t)0x75a0, (q15_t)0x7596, (q15_t)0x758c, (q15_t)0x7582, (q15_t)0x7578, (q15_t)0x756e, (q15_t)0x7564, (q15_t)0x755a, - (q15_t)0x7550, (q15_t)0x7546, (q15_t)0x753c, (q15_t)0x7532, (q15_t)0x7528, (q15_t)0x751e, (q15_t)0x7514, (q15_t)0x7509, - (q15_t)0x74ff, (q15_t)0x74f5, (q15_t)0x74eb, (q15_t)0x74e1, (q15_t)0x74d6, (q15_t)0x74cc, (q15_t)0x74c2, (q15_t)0x74b7, - (q15_t)0x74ad, (q15_t)0x74a3, (q15_t)0x7498, (q15_t)0x748e, (q15_t)0x7484, (q15_t)0x7479, (q15_t)0x746f, (q15_t)0x7464, - (q15_t)0x745a, (q15_t)0x744f, (q15_t)0x7445, (q15_t)0x743a, (q15_t)0x7430, (q15_t)0x7425, (q15_t)0x741b, (q15_t)0x7410, - (q15_t)0x7406, (q15_t)0x73fb, (q15_t)0x73f0, (q15_t)0x73e6, (q15_t)0x73db, (q15_t)0x73d0, (q15_t)0x73c6, (q15_t)0x73bb, - (q15_t)0x73b0, (q15_t)0x73a5, (q15_t)0x739b, (q15_t)0x7390, (q15_t)0x7385, (q15_t)0x737a, (q15_t)0x736f, (q15_t)0x7364, - (q15_t)0x7359, (q15_t)0x734f, (q15_t)0x7344, (q15_t)0x7339, (q15_t)0x732e, (q15_t)0x7323, (q15_t)0x7318, (q15_t)0x730d, - (q15_t)0x7302, (q15_t)0x72f7, (q15_t)0x72ec, (q15_t)0x72e1, (q15_t)0x72d5, (q15_t)0x72ca, (q15_t)0x72bf, (q15_t)0x72b4, - (q15_t)0x72a9, (q15_t)0x729e, (q15_t)0x7293, (q15_t)0x7287, (q15_t)0x727c, (q15_t)0x7271, (q15_t)0x7266, (q15_t)0x725a, - (q15_t)0x724f, (q15_t)0x7244, (q15_t)0x7238, (q15_t)0x722d, (q15_t)0x7222, (q15_t)0x7216, (q15_t)0x720b, (q15_t)0x71ff, - (q15_t)0x71f4, (q15_t)0x71e9, (q15_t)0x71dd, (q15_t)0x71d2, (q15_t)0x71c6, (q15_t)0x71bb, (q15_t)0x71af, (q15_t)0x71a3, - (q15_t)0x7198, (q15_t)0x718c, (q15_t)0x7181, (q15_t)0x7175, (q15_t)0x7169, (q15_t)0x715e, (q15_t)0x7152, (q15_t)0x7146, - (q15_t)0x713b, (q15_t)0x712f, (q15_t)0x7123, (q15_t)0x7117, (q15_t)0x710c, (q15_t)0x7100, (q15_t)0x70f4, (q15_t)0x70e8, - (q15_t)0x70dc, (q15_t)0x70d1, (q15_t)0x70c5, (q15_t)0x70b9, (q15_t)0x70ad, (q15_t)0x70a1, (q15_t)0x7095, (q15_t)0x7089, - (q15_t)0x707d, (q15_t)0x7071, (q15_t)0x7065, (q15_t)0x7059, (q15_t)0x704d, (q15_t)0x7041, (q15_t)0x7035, (q15_t)0x7029, - (q15_t)0x701d, (q15_t)0x7010, (q15_t)0x7004, (q15_t)0x6ff8, (q15_t)0x6fec, (q15_t)0x6fe0, (q15_t)0x6fd3, (q15_t)0x6fc7, - (q15_t)0x6fbb, (q15_t)0x6faf, (q15_t)0x6fa2, (q15_t)0x6f96, (q15_t)0x6f8a, (q15_t)0x6f7d, (q15_t)0x6f71, (q15_t)0x6f65, - (q15_t)0x6f58, (q15_t)0x6f4c, (q15_t)0x6f3f, (q15_t)0x6f33, (q15_t)0x6f27, (q15_t)0x6f1a, (q15_t)0x6f0e, (q15_t)0x6f01, - (q15_t)0x6ef5, (q15_t)0x6ee8, (q15_t)0x6edc, (q15_t)0x6ecf, (q15_t)0x6ec2, (q15_t)0x6eb6, (q15_t)0x6ea9, (q15_t)0x6e9c, - (q15_t)0x6e90, (q15_t)0x6e83, (q15_t)0x6e76, (q15_t)0x6e6a, (q15_t)0x6e5d, (q15_t)0x6e50, (q15_t)0x6e44, (q15_t)0x6e37, - (q15_t)0x6e2a, (q15_t)0x6e1d, (q15_t)0x6e10, (q15_t)0x6e04, (q15_t)0x6df7, (q15_t)0x6dea, (q15_t)0x6ddd, (q15_t)0x6dd0, - (q15_t)0x6dc3, (q15_t)0x6db6, (q15_t)0x6da9, (q15_t)0x6d9c, (q15_t)0x6d8f, (q15_t)0x6d82, (q15_t)0x6d75, (q15_t)0x6d68, - (q15_t)0x6d5b, (q15_t)0x6d4e, (q15_t)0x6d41, (q15_t)0x6d34, (q15_t)0x6d27, (q15_t)0x6d1a, (q15_t)0x6d0c, (q15_t)0x6cff, - (q15_t)0x6cf2, (q15_t)0x6ce5, (q15_t)0x6cd8, (q15_t)0x6cca, (q15_t)0x6cbd, (q15_t)0x6cb0, (q15_t)0x6ca3, (q15_t)0x6c95, - (q15_t)0x6c88, (q15_t)0x6c7b, (q15_t)0x6c6d, (q15_t)0x6c60, (q15_t)0x6c53, (q15_t)0x6c45, (q15_t)0x6c38, (q15_t)0x6c2a, - (q15_t)0x6c1d, (q15_t)0x6c0f, (q15_t)0x6c02, (q15_t)0x6bf5, (q15_t)0x6be7, (q15_t)0x6bd9, (q15_t)0x6bcc, (q15_t)0x6bbe, - (q15_t)0x6bb1, (q15_t)0x6ba3, (q15_t)0x6b96, (q15_t)0x6b88, (q15_t)0x6b7a, (q15_t)0x6b6d, (q15_t)0x6b5f, (q15_t)0x6b51, - (q15_t)0x6b44, (q15_t)0x6b36, (q15_t)0x6b28, (q15_t)0x6b1a, (q15_t)0x6b0d, (q15_t)0x6aff, (q15_t)0x6af1, (q15_t)0x6ae3, - (q15_t)0x6ad5, (q15_t)0x6ac8, (q15_t)0x6aba, (q15_t)0x6aac, (q15_t)0x6a9e, (q15_t)0x6a90, (q15_t)0x6a82, (q15_t)0x6a74, - (q15_t)0x6a66, (q15_t)0x6a58, (q15_t)0x6a4a, (q15_t)0x6a3c, (q15_t)0x6a2e, (q15_t)0x6a20, (q15_t)0x6a12, (q15_t)0x6a04, - (q15_t)0x69f6, (q15_t)0x69e8, (q15_t)0x69da, (q15_t)0x69cb, (q15_t)0x69bd, (q15_t)0x69af, (q15_t)0x69a1, (q15_t)0x6993, - (q15_t)0x6985, (q15_t)0x6976, (q15_t)0x6968, (q15_t)0x695a, (q15_t)0x694b, (q15_t)0x693d, (q15_t)0x692f, (q15_t)0x6921, - (q15_t)0x6912, (q15_t)0x6904, (q15_t)0x68f5, (q15_t)0x68e7, (q15_t)0x68d9, (q15_t)0x68ca, (q15_t)0x68bc, (q15_t)0x68ad, - (q15_t)0x689f, (q15_t)0x6890, (q15_t)0x6882, (q15_t)0x6873, (q15_t)0x6865, (q15_t)0x6856, (q15_t)0x6848, (q15_t)0x6839, - (q15_t)0x682b, (q15_t)0x681c, (q15_t)0x680d, (q15_t)0x67ff, (q15_t)0x67f0, (q15_t)0x67e1, (q15_t)0x67d3, (q15_t)0x67c4, - (q15_t)0x67b5, (q15_t)0x67a6, (q15_t)0x6798, (q15_t)0x6789, (q15_t)0x677a, (q15_t)0x676b, (q15_t)0x675d, (q15_t)0x674e, - (q15_t)0x673f, (q15_t)0x6730, (q15_t)0x6721, (q15_t)0x6712, (q15_t)0x6703, (q15_t)0x66f4, (q15_t)0x66e5, (q15_t)0x66d6, - (q15_t)0x66c8, (q15_t)0x66b9, (q15_t)0x66aa, (q15_t)0x669b, (q15_t)0x668b, (q15_t)0x667c, (q15_t)0x666d, (q15_t)0x665e, - (q15_t)0x664f, (q15_t)0x6640, (q15_t)0x6631, (q15_t)0x6622, (q15_t)0x6613, (q15_t)0x6603, (q15_t)0x65f4, (q15_t)0x65e5, - (q15_t)0x65d6, (q15_t)0x65c7, (q15_t)0x65b7, (q15_t)0x65a8, (q15_t)0x6599, (q15_t)0x658a, (q15_t)0x657a, (q15_t)0x656b, - (q15_t)0x655c, (q15_t)0x654c, (q15_t)0x653d, (q15_t)0x652d, (q15_t)0x651e, (q15_t)0x650f, (q15_t)0x64ff, (q15_t)0x64f0, - (q15_t)0x64e0, (q15_t)0x64d1, (q15_t)0x64c1, (q15_t)0x64b2, (q15_t)0x64a2, (q15_t)0x6493, (q15_t)0x6483, (q15_t)0x6474, - (q15_t)0x6464, (q15_t)0x6454, (q15_t)0x6445, (q15_t)0x6435, (q15_t)0x6426, (q15_t)0x6416, (q15_t)0x6406, (q15_t)0x63f7, - (q15_t)0x63e7, (q15_t)0x63d7, (q15_t)0x63c7, (q15_t)0x63b8, (q15_t)0x63a8, (q15_t)0x6398, (q15_t)0x6388, (q15_t)0x6378, - (q15_t)0x6369, (q15_t)0x6359, (q15_t)0x6349, (q15_t)0x6339, (q15_t)0x6329, (q15_t)0x6319, (q15_t)0x6309, (q15_t)0x62f9, - (q15_t)0x62ea, (q15_t)0x62da, (q15_t)0x62ca, (q15_t)0x62ba, (q15_t)0x62aa, (q15_t)0x629a, (q15_t)0x628a, (q15_t)0x627a, - (q15_t)0x6269, (q15_t)0x6259, (q15_t)0x6249, (q15_t)0x6239, (q15_t)0x6229, (q15_t)0x6219, (q15_t)0x6209, (q15_t)0x61f9, - (q15_t)0x61e8, (q15_t)0x61d8, (q15_t)0x61c8, (q15_t)0x61b8, (q15_t)0x61a8, (q15_t)0x6197, (q15_t)0x6187, (q15_t)0x6177, - (q15_t)0x6166, (q15_t)0x6156, (q15_t)0x6146, (q15_t)0x6135, (q15_t)0x6125, (q15_t)0x6115, (q15_t)0x6104, (q15_t)0x60f4, - (q15_t)0x60e4, (q15_t)0x60d3, (q15_t)0x60c3, (q15_t)0x60b2, (q15_t)0x60a2, (q15_t)0x6091, (q15_t)0x6081, (q15_t)0x6070, - (q15_t)0x6060, (q15_t)0x604f, (q15_t)0x603f, (q15_t)0x602e, (q15_t)0x601d, (q15_t)0x600d, (q15_t)0x5ffc, (q15_t)0x5fec, - (q15_t)0x5fdb, (q15_t)0x5fca, (q15_t)0x5fba, (q15_t)0x5fa9, (q15_t)0x5f98, (q15_t)0x5f87, (q15_t)0x5f77, (q15_t)0x5f66, - (q15_t)0x5f55, (q15_t)0x5f44, (q15_t)0x5f34, (q15_t)0x5f23, (q15_t)0x5f12, (q15_t)0x5f01, (q15_t)0x5ef0, (q15_t)0x5edf, - (q15_t)0x5ecf, (q15_t)0x5ebe, (q15_t)0x5ead, (q15_t)0x5e9c, (q15_t)0x5e8b, (q15_t)0x5e7a, (q15_t)0x5e69, (q15_t)0x5e58, - (q15_t)0x5e47, (q15_t)0x5e36, (q15_t)0x5e25, (q15_t)0x5e14, (q15_t)0x5e03, (q15_t)0x5df2, (q15_t)0x5de1, (q15_t)0x5dd0, - (q15_t)0x5dbf, (q15_t)0x5dad, (q15_t)0x5d9c, (q15_t)0x5d8b, (q15_t)0x5d7a, (q15_t)0x5d69, (q15_t)0x5d58, (q15_t)0x5d46, - (q15_t)0x5d35, (q15_t)0x5d24, (q15_t)0x5d13, (q15_t)0x5d01, (q15_t)0x5cf0, (q15_t)0x5cdf, (q15_t)0x5cce, (q15_t)0x5cbc, - (q15_t)0x5cab, (q15_t)0x5c9a, (q15_t)0x5c88, (q15_t)0x5c77, (q15_t)0x5c66, (q15_t)0x5c54, (q15_t)0x5c43, (q15_t)0x5c31, - (q15_t)0x5c20, (q15_t)0x5c0e, (q15_t)0x5bfd, (q15_t)0x5beb, (q15_t)0x5bda, (q15_t)0x5bc8, (q15_t)0x5bb7, (q15_t)0x5ba5, - (q15_t)0x5b94, (q15_t)0x5b82, (q15_t)0x5b71, (q15_t)0x5b5f, (q15_t)0x5b4d, (q15_t)0x5b3c, (q15_t)0x5b2a, (q15_t)0x5b19, - (q15_t)0x5b07, (q15_t)0x5af5, (q15_t)0x5ae4, (q15_t)0x5ad2, (q15_t)0x5ac0, (q15_t)0x5aae, (q15_t)0x5a9d, (q15_t)0x5a8b, - (q15_t)0x5a79, (q15_t)0x5a67, (q15_t)0x5a56, (q15_t)0x5a44, (q15_t)0x5a32, (q15_t)0x5a20, (q15_t)0x5a0e, (q15_t)0x59fc, - (q15_t)0x59ea, (q15_t)0x59d9, (q15_t)0x59c7, (q15_t)0x59b5, (q15_t)0x59a3, (q15_t)0x5991, (q15_t)0x597f, (q15_t)0x596d, - (q15_t)0x595b, (q15_t)0x5949, (q15_t)0x5937, (q15_t)0x5925, (q15_t)0x5913, (q15_t)0x5901, (q15_t)0x58ef, (q15_t)0x58dd, - (q15_t)0x58cb, (q15_t)0x58b8, (q15_t)0x58a6, (q15_t)0x5894, (q15_t)0x5882, (q15_t)0x5870, (q15_t)0x585e, (q15_t)0x584b, - (q15_t)0x5839, (q15_t)0x5827, (q15_t)0x5815, (q15_t)0x5803, (q15_t)0x57f0, (q15_t)0x57de, (q15_t)0x57cc, (q15_t)0x57b9, - (q15_t)0x57a7, (q15_t)0x5795, (q15_t)0x5783, (q15_t)0x5770, (q15_t)0x575e, (q15_t)0x574b, (q15_t)0x5739, (q15_t)0x5727, - (q15_t)0x5714, (q15_t)0x5702, (q15_t)0x56ef, (q15_t)0x56dd, (q15_t)0x56ca, (q15_t)0x56b8, (q15_t)0x56a5, (q15_t)0x5693, - (q15_t)0x5680, (q15_t)0x566e, (q15_t)0x565b, (q15_t)0x5649, (q15_t)0x5636, (q15_t)0x5624, (q15_t)0x5611, (q15_t)0x55fe, - (q15_t)0x55ec, (q15_t)0x55d9, (q15_t)0x55c7, (q15_t)0x55b4, (q15_t)0x55a1, (q15_t)0x558f, (q15_t)0x557c, (q15_t)0x5569, - (q15_t)0x5556, (q15_t)0x5544, (q15_t)0x5531, (q15_t)0x551e, (q15_t)0x550b, (q15_t)0x54f9, (q15_t)0x54e6, (q15_t)0x54d3, - (q15_t)0x54c0, (q15_t)0x54ad, (q15_t)0x549a, (q15_t)0x5488, (q15_t)0x5475, (q15_t)0x5462, (q15_t)0x544f, (q15_t)0x543c, - (q15_t)0x5429, (q15_t)0x5416, (q15_t)0x5403, (q15_t)0x53f0, (q15_t)0x53dd, (q15_t)0x53ca, (q15_t)0x53b7, (q15_t)0x53a4, - (q15_t)0x5391, (q15_t)0x537e, (q15_t)0x536b, (q15_t)0x5358, (q15_t)0x5345, (q15_t)0x5332, (q15_t)0x531f, (q15_t)0x530c, - (q15_t)0x52f8, (q15_t)0x52e5, (q15_t)0x52d2, (q15_t)0x52bf, (q15_t)0x52ac, (q15_t)0x5299, (q15_t)0x5285, (q15_t)0x5272, - (q15_t)0x525f, (q15_t)0x524c, (q15_t)0x5238, (q15_t)0x5225, (q15_t)0x5212, (q15_t)0x51ff, (q15_t)0x51eb, (q15_t)0x51d8, - (q15_t)0x51c5, (q15_t)0x51b1, (q15_t)0x519e, (q15_t)0x518b, (q15_t)0x5177, (q15_t)0x5164, (q15_t)0x5150, (q15_t)0x513d, - (q15_t)0x512a, (q15_t)0x5116, (q15_t)0x5103, (q15_t)0x50ef, (q15_t)0x50dc, (q15_t)0x50c8, (q15_t)0x50b5, (q15_t)0x50a1, - (q15_t)0x508e, (q15_t)0x507a, (q15_t)0x5067, (q15_t)0x5053, (q15_t)0x503f, (q15_t)0x502c, (q15_t)0x5018, (q15_t)0x5005, - (q15_t)0x4ff1, (q15_t)0x4fdd, (q15_t)0x4fca, (q15_t)0x4fb6, (q15_t)0x4fa2, (q15_t)0x4f8f, (q15_t)0x4f7b, (q15_t)0x4f67, - (q15_t)0x4f54, (q15_t)0x4f40, (q15_t)0x4f2c, (q15_t)0x4f18, (q15_t)0x4f05, (q15_t)0x4ef1, (q15_t)0x4edd, (q15_t)0x4ec9, - (q15_t)0x4eb6, (q15_t)0x4ea2, (q15_t)0x4e8e, (q15_t)0x4e7a, (q15_t)0x4e66, (q15_t)0x4e52, (q15_t)0x4e3e, (q15_t)0x4e2a, - (q15_t)0x4e17, (q15_t)0x4e03, (q15_t)0x4def, (q15_t)0x4ddb, (q15_t)0x4dc7, (q15_t)0x4db3, (q15_t)0x4d9f, (q15_t)0x4d8b, - (q15_t)0x4d77, (q15_t)0x4d63, (q15_t)0x4d4f, (q15_t)0x4d3b, (q15_t)0x4d27, (q15_t)0x4d13, (q15_t)0x4cff, (q15_t)0x4ceb, - (q15_t)0x4cd6, (q15_t)0x4cc2, (q15_t)0x4cae, (q15_t)0x4c9a, (q15_t)0x4c86, (q15_t)0x4c72, (q15_t)0x4c5e, (q15_t)0x4c49, - (q15_t)0x4c35, (q15_t)0x4c21, (q15_t)0x4c0d, (q15_t)0x4bf9, (q15_t)0x4be4, (q15_t)0x4bd0, (q15_t)0x4bbc, (q15_t)0x4ba8, - (q15_t)0x4b93, (q15_t)0x4b7f, (q15_t)0x4b6b, (q15_t)0x4b56, (q15_t)0x4b42, (q15_t)0x4b2e, (q15_t)0x4b19, (q15_t)0x4b05, - (q15_t)0x4af1, (q15_t)0x4adc, (q15_t)0x4ac8, (q15_t)0x4ab4, (q15_t)0x4a9f, (q15_t)0x4a8b, (q15_t)0x4a76, (q15_t)0x4a62, - (q15_t)0x4a4d, (q15_t)0x4a39, (q15_t)0x4a24, (q15_t)0x4a10, (q15_t)0x49fb, (q15_t)0x49e7, (q15_t)0x49d2, (q15_t)0x49be, - (q15_t)0x49a9, (q15_t)0x4995, (q15_t)0x4980, (q15_t)0x496c, (q15_t)0x4957, (q15_t)0x4942, (q15_t)0x492e, (q15_t)0x4919, - (q15_t)0x4905, (q15_t)0x48f0, (q15_t)0x48db, (q15_t)0x48c7, (q15_t)0x48b2, (q15_t)0x489d, (q15_t)0x4888, (q15_t)0x4874, - (q15_t)0x485f, (q15_t)0x484a, (q15_t)0x4836, (q15_t)0x4821, (q15_t)0x480c, (q15_t)0x47f7, (q15_t)0x47e2, (q15_t)0x47ce, - (q15_t)0x47b9, (q15_t)0x47a4, (q15_t)0x478f, (q15_t)0x477a, (q15_t)0x4765, (q15_t)0x4751, (q15_t)0x473c, (q15_t)0x4727, - (q15_t)0x4712, (q15_t)0x46fd, (q15_t)0x46e8, (q15_t)0x46d3, (q15_t)0x46be, (q15_t)0x46a9, (q15_t)0x4694, (q15_t)0x467f, - (q15_t)0x466a, (q15_t)0x4655, (q15_t)0x4640, (q15_t)0x462b, (q15_t)0x4616, (q15_t)0x4601, (q15_t)0x45ec, (q15_t)0x45d7, - (q15_t)0x45c2, (q15_t)0x45ad, (q15_t)0x4598, (q15_t)0x4583, (q15_t)0x456e, (q15_t)0x4559, (q15_t)0x4544, (q15_t)0x452e, - (q15_t)0x4519, (q15_t)0x4504, (q15_t)0x44ef, (q15_t)0x44da, (q15_t)0x44c5, (q15_t)0x44af, (q15_t)0x449a, (q15_t)0x4485, - (q15_t)0x4470, (q15_t)0x445a, (q15_t)0x4445, (q15_t)0x4430, (q15_t)0x441b, (q15_t)0x4405, (q15_t)0x43f0, (q15_t)0x43db, - (q15_t)0x43c5, (q15_t)0x43b0, (q15_t)0x439b, (q15_t)0x4385, (q15_t)0x4370, (q15_t)0x435b, (q15_t)0x4345, (q15_t)0x4330, - (q15_t)0x431b, (q15_t)0x4305, (q15_t)0x42f0, (q15_t)0x42da, (q15_t)0x42c5, (q15_t)0x42af, (q15_t)0x429a, (q15_t)0x4284, - (q15_t)0x426f, (q15_t)0x425a, (q15_t)0x4244, (q15_t)0x422f, (q15_t)0x4219, (q15_t)0x4203, (q15_t)0x41ee, (q15_t)0x41d8, - (q15_t)0x41c3, (q15_t)0x41ad, (q15_t)0x4198, (q15_t)0x4182, (q15_t)0x416d, (q15_t)0x4157, (q15_t)0x4141, (q15_t)0x412c, - (q15_t)0x4116, (q15_t)0x4100, (q15_t)0x40eb, (q15_t)0x40d5, (q15_t)0x40bf, (q15_t)0x40aa, (q15_t)0x4094, (q15_t)0x407e, - (q15_t)0x4069, (q15_t)0x4053, (q15_t)0x403d, (q15_t)0x4027, (q15_t)0x4012, (q15_t)0x3ffc, (q15_t)0x3fe6, (q15_t)0x3fd0, - (q15_t)0x3fbb, (q15_t)0x3fa5, (q15_t)0x3f8f, (q15_t)0x3f79, (q15_t)0x3f63, (q15_t)0x3f4d, (q15_t)0x3f38, (q15_t)0x3f22, - (q15_t)0x3f0c, (q15_t)0x3ef6, (q15_t)0x3ee0, (q15_t)0x3eca, (q15_t)0x3eb4, (q15_t)0x3e9e, (q15_t)0x3e88, (q15_t)0x3e73, - (q15_t)0x3e5d, (q15_t)0x3e47, (q15_t)0x3e31, (q15_t)0x3e1b, (q15_t)0x3e05, (q15_t)0x3def, (q15_t)0x3dd9, (q15_t)0x3dc3, - (q15_t)0x3dad, (q15_t)0x3d97, (q15_t)0x3d81, (q15_t)0x3d6b, (q15_t)0x3d55, (q15_t)0x3d3e, (q15_t)0x3d28, (q15_t)0x3d12, - (q15_t)0x3cfc, (q15_t)0x3ce6, (q15_t)0x3cd0, (q15_t)0x3cba, (q15_t)0x3ca4, (q15_t)0x3c8e, (q15_t)0x3c77, (q15_t)0x3c61, - (q15_t)0x3c4b, (q15_t)0x3c35, (q15_t)0x3c1f, (q15_t)0x3c09, (q15_t)0x3bf2, (q15_t)0x3bdc, (q15_t)0x3bc6, (q15_t)0x3bb0, - (q15_t)0x3b99, (q15_t)0x3b83, (q15_t)0x3b6d, (q15_t)0x3b57, (q15_t)0x3b40, (q15_t)0x3b2a, (q15_t)0x3b14, (q15_t)0x3afe, - (q15_t)0x3ae7, (q15_t)0x3ad1, (q15_t)0x3abb, (q15_t)0x3aa4, (q15_t)0x3a8e, (q15_t)0x3a78, (q15_t)0x3a61, (q15_t)0x3a4b, - (q15_t)0x3a34, (q15_t)0x3a1e, (q15_t)0x3a08, (q15_t)0x39f1, (q15_t)0x39db, (q15_t)0x39c4, (q15_t)0x39ae, (q15_t)0x3998, - (q15_t)0x3981, (q15_t)0x396b, (q15_t)0x3954, (q15_t)0x393e, (q15_t)0x3927, (q15_t)0x3911, (q15_t)0x38fa, (q15_t)0x38e4, - (q15_t)0x38cd, (q15_t)0x38b7, (q15_t)0x38a0, (q15_t)0x388a, (q15_t)0x3873, (q15_t)0x385d, (q15_t)0x3846, (q15_t)0x382f, - (q15_t)0x3819, (q15_t)0x3802, (q15_t)0x37ec, (q15_t)0x37d5, (q15_t)0x37be, (q15_t)0x37a8, (q15_t)0x3791, (q15_t)0x377a, - (q15_t)0x3764, (q15_t)0x374d, (q15_t)0x3736, (q15_t)0x3720, (q15_t)0x3709, (q15_t)0x36f2, (q15_t)0x36dc, (q15_t)0x36c5, - (q15_t)0x36ae, (q15_t)0x3698, (q15_t)0x3681, (q15_t)0x366a, (q15_t)0x3653, (q15_t)0x363d, (q15_t)0x3626, (q15_t)0x360f, - (q15_t)0x35f8, (q15_t)0x35e1, (q15_t)0x35cb, (q15_t)0x35b4, (q15_t)0x359d, (q15_t)0x3586, (q15_t)0x356f, (q15_t)0x3558, - (q15_t)0x3542, (q15_t)0x352b, (q15_t)0x3514, (q15_t)0x34fd, (q15_t)0x34e6, (q15_t)0x34cf, (q15_t)0x34b8, (q15_t)0x34a1, - (q15_t)0x348b, (q15_t)0x3474, (q15_t)0x345d, (q15_t)0x3446, (q15_t)0x342f, (q15_t)0x3418, (q15_t)0x3401, (q15_t)0x33ea, - (q15_t)0x33d3, (q15_t)0x33bc, (q15_t)0x33a5, (q15_t)0x338e, (q15_t)0x3377, (q15_t)0x3360, (q15_t)0x3349, (q15_t)0x3332, - (q15_t)0x331b, (q15_t)0x3304, (q15_t)0x32ed, (q15_t)0x32d6, (q15_t)0x32bf, (q15_t)0x32a8, (q15_t)0x3290, (q15_t)0x3279, - (q15_t)0x3262, (q15_t)0x324b, (q15_t)0x3234, (q15_t)0x321d, (q15_t)0x3206, (q15_t)0x31ef, (q15_t)0x31d8, (q15_t)0x31c0, - (q15_t)0x31a9, (q15_t)0x3192, (q15_t)0x317b, (q15_t)0x3164, (q15_t)0x314c, (q15_t)0x3135, (q15_t)0x311e, (q15_t)0x3107, - (q15_t)0x30f0, (q15_t)0x30d8, (q15_t)0x30c1, (q15_t)0x30aa, (q15_t)0x3093, (q15_t)0x307b, (q15_t)0x3064, (q15_t)0x304d, - (q15_t)0x3036, (q15_t)0x301e, (q15_t)0x3007, (q15_t)0x2ff0, (q15_t)0x2fd8, (q15_t)0x2fc1, (q15_t)0x2faa, (q15_t)0x2f92, - (q15_t)0x2f7b, (q15_t)0x2f64, (q15_t)0x2f4c, (q15_t)0x2f35, (q15_t)0x2f1e, (q15_t)0x2f06, (q15_t)0x2eef, (q15_t)0x2ed8, - (q15_t)0x2ec0, (q15_t)0x2ea9, (q15_t)0x2e91, (q15_t)0x2e7a, (q15_t)0x2e63, (q15_t)0x2e4b, (q15_t)0x2e34, (q15_t)0x2e1c, - (q15_t)0x2e05, (q15_t)0x2ded, (q15_t)0x2dd6, (q15_t)0x2dbe, (q15_t)0x2da7, (q15_t)0x2d8f, (q15_t)0x2d78, (q15_t)0x2d60, - (q15_t)0x2d49, (q15_t)0x2d31, (q15_t)0x2d1a, (q15_t)0x2d02, (q15_t)0x2ceb, (q15_t)0x2cd3, (q15_t)0x2cbc, (q15_t)0x2ca4, - (q15_t)0x2c8d, (q15_t)0x2c75, (q15_t)0x2c5e, (q15_t)0x2c46, (q15_t)0x2c2e, (q15_t)0x2c17, (q15_t)0x2bff, (q15_t)0x2be8, - (q15_t)0x2bd0, (q15_t)0x2bb8, (q15_t)0x2ba1, (q15_t)0x2b89, (q15_t)0x2b71, (q15_t)0x2b5a, (q15_t)0x2b42, (q15_t)0x2b2b, - (q15_t)0x2b13, (q15_t)0x2afb, (q15_t)0x2ae4, (q15_t)0x2acc, (q15_t)0x2ab4, (q15_t)0x2a9c, (q15_t)0x2a85, (q15_t)0x2a6d, - (q15_t)0x2a55, (q15_t)0x2a3e, (q15_t)0x2a26, (q15_t)0x2a0e, (q15_t)0x29f6, (q15_t)0x29df, (q15_t)0x29c7, (q15_t)0x29af, - (q15_t)0x2997, (q15_t)0x2980, (q15_t)0x2968, (q15_t)0x2950, (q15_t)0x2938, (q15_t)0x2920, (q15_t)0x2909, (q15_t)0x28f1, - (q15_t)0x28d9, (q15_t)0x28c1, (q15_t)0x28a9, (q15_t)0x2892, (q15_t)0x287a, (q15_t)0x2862, (q15_t)0x284a, (q15_t)0x2832, - (q15_t)0x281a, (q15_t)0x2802, (q15_t)0x27eb, (q15_t)0x27d3, (q15_t)0x27bb, (q15_t)0x27a3, (q15_t)0x278b, (q15_t)0x2773, - (q15_t)0x275b, (q15_t)0x2743, (q15_t)0x272b, (q15_t)0x2713, (q15_t)0x26fb, (q15_t)0x26e4, (q15_t)0x26cc, (q15_t)0x26b4, - (q15_t)0x269c, (q15_t)0x2684, (q15_t)0x266c, (q15_t)0x2654, (q15_t)0x263c, (q15_t)0x2624, (q15_t)0x260c, (q15_t)0x25f4, - (q15_t)0x25dc, (q15_t)0x25c4, (q15_t)0x25ac, (q15_t)0x2594, (q15_t)0x257c, (q15_t)0x2564, (q15_t)0x254c, (q15_t)0x2534, - (q15_t)0x251c, (q15_t)0x2503, (q15_t)0x24eb, (q15_t)0x24d3, (q15_t)0x24bb, (q15_t)0x24a3, (q15_t)0x248b, (q15_t)0x2473, - (q15_t)0x245b, (q15_t)0x2443, (q15_t)0x242b, (q15_t)0x2413, (q15_t)0x23fa, (q15_t)0x23e2, (q15_t)0x23ca, (q15_t)0x23b2, - (q15_t)0x239a, (q15_t)0x2382, (q15_t)0x236a, (q15_t)0x2352, (q15_t)0x2339, (q15_t)0x2321, (q15_t)0x2309, (q15_t)0x22f1, - (q15_t)0x22d9, (q15_t)0x22c0, (q15_t)0x22a8, (q15_t)0x2290, (q15_t)0x2278, (q15_t)0x2260, (q15_t)0x2247, (q15_t)0x222f, - (q15_t)0x2217, (q15_t)0x21ff, (q15_t)0x21e7, (q15_t)0x21ce, (q15_t)0x21b6, (q15_t)0x219e, (q15_t)0x2186, (q15_t)0x216d, - (q15_t)0x2155, (q15_t)0x213d, (q15_t)0x2125, (q15_t)0x210c, (q15_t)0x20f4, (q15_t)0x20dc, (q15_t)0x20c3, (q15_t)0x20ab, - (q15_t)0x2093, (q15_t)0x207a, (q15_t)0x2062, (q15_t)0x204a, (q15_t)0x2032, (q15_t)0x2019, (q15_t)0x2001, (q15_t)0x1fe9, - (q15_t)0x1fd0, (q15_t)0x1fb8, (q15_t)0x1f9f, (q15_t)0x1f87, (q15_t)0x1f6f, (q15_t)0x1f56, (q15_t)0x1f3e, (q15_t)0x1f26, - (q15_t)0x1f0d, (q15_t)0x1ef5, (q15_t)0x1edd, (q15_t)0x1ec4, (q15_t)0x1eac, (q15_t)0x1e93, (q15_t)0x1e7b, (q15_t)0x1e62, - (q15_t)0x1e4a, (q15_t)0x1e32, (q15_t)0x1e19, (q15_t)0x1e01, (q15_t)0x1de8, (q15_t)0x1dd0, (q15_t)0x1db7, (q15_t)0x1d9f, - (q15_t)0x1d87, (q15_t)0x1d6e, (q15_t)0x1d56, (q15_t)0x1d3d, (q15_t)0x1d25, (q15_t)0x1d0c, (q15_t)0x1cf4, (q15_t)0x1cdb, - (q15_t)0x1cc3, (q15_t)0x1caa, (q15_t)0x1c92, (q15_t)0x1c79, (q15_t)0x1c61, (q15_t)0x1c48, (q15_t)0x1c30, (q15_t)0x1c17, - (q15_t)0x1bff, (q15_t)0x1be6, (q15_t)0x1bce, (q15_t)0x1bb5, (q15_t)0x1b9d, (q15_t)0x1b84, (q15_t)0x1b6c, (q15_t)0x1b53, - (q15_t)0x1b3a, (q15_t)0x1b22, (q15_t)0x1b09, (q15_t)0x1af1, (q15_t)0x1ad8, (q15_t)0x1ac0, (q15_t)0x1aa7, (q15_t)0x1a8e, - (q15_t)0x1a76, (q15_t)0x1a5d, (q15_t)0x1a45, (q15_t)0x1a2c, (q15_t)0x1a13, (q15_t)0x19fb, (q15_t)0x19e2, (q15_t)0x19ca, - (q15_t)0x19b1, (q15_t)0x1998, (q15_t)0x1980, (q15_t)0x1967, (q15_t)0x194e, (q15_t)0x1936, (q15_t)0x191d, (q15_t)0x1905, - (q15_t)0x18ec, (q15_t)0x18d3, (q15_t)0x18bb, (q15_t)0x18a2, (q15_t)0x1889, (q15_t)0x1871, (q15_t)0x1858, (q15_t)0x183f, - (q15_t)0x1827, (q15_t)0x180e, (q15_t)0x17f5, (q15_t)0x17dd, (q15_t)0x17c4, (q15_t)0x17ab, (q15_t)0x1792, (q15_t)0x177a, - (q15_t)0x1761, (q15_t)0x1748, (q15_t)0x1730, (q15_t)0x1717, (q15_t)0x16fe, (q15_t)0x16e5, (q15_t)0x16cd, (q15_t)0x16b4, - (q15_t)0x169b, (q15_t)0x1682, (q15_t)0x166a, (q15_t)0x1651, (q15_t)0x1638, (q15_t)0x161f, (q15_t)0x1607, (q15_t)0x15ee, - (q15_t)0x15d5, (q15_t)0x15bc, (q15_t)0x15a4, (q15_t)0x158b, (q15_t)0x1572, (q15_t)0x1559, (q15_t)0x1541, (q15_t)0x1528, - (q15_t)0x150f, (q15_t)0x14f6, (q15_t)0x14dd, (q15_t)0x14c5, (q15_t)0x14ac, (q15_t)0x1493, (q15_t)0x147a, (q15_t)0x1461, - (q15_t)0x1449, (q15_t)0x1430, (q15_t)0x1417, (q15_t)0x13fe, (q15_t)0x13e5, (q15_t)0x13cc, (q15_t)0x13b4, (q15_t)0x139b, - (q15_t)0x1382, (q15_t)0x1369, (q15_t)0x1350, (q15_t)0x1337, (q15_t)0x131f, (q15_t)0x1306, (q15_t)0x12ed, (q15_t)0x12d4, - (q15_t)0x12bb, (q15_t)0x12a2, (q15_t)0x1289, (q15_t)0x1271, (q15_t)0x1258, (q15_t)0x123f, (q15_t)0x1226, (q15_t)0x120d, - (q15_t)0x11f4, (q15_t)0x11db, (q15_t)0x11c2, (q15_t)0x11a9, (q15_t)0x1191, (q15_t)0x1178, (q15_t)0x115f, (q15_t)0x1146, - (q15_t)0x112d, (q15_t)0x1114, (q15_t)0x10fb, (q15_t)0x10e2, (q15_t)0x10c9, (q15_t)0x10b0, (q15_t)0x1098, (q15_t)0x107f, - (q15_t)0x1066, (q15_t)0x104d, (q15_t)0x1034, (q15_t)0x101b, (q15_t)0x1002, (q15_t)0xfe9, (q15_t)0xfd0, (q15_t)0xfb7, - (q15_t)0xf9e, (q15_t)0xf85, (q15_t)0xf6c, (q15_t)0xf53, (q15_t)0xf3a, (q15_t)0xf21, (q15_t)0xf08, (q15_t)0xef0, - (q15_t)0xed7, (q15_t)0xebe, (q15_t)0xea5, (q15_t)0xe8c, (q15_t)0xe73, (q15_t)0xe5a, (q15_t)0xe41, (q15_t)0xe28, - (q15_t)0xe0f, (q15_t)0xdf6, (q15_t)0xddd, (q15_t)0xdc4, (q15_t)0xdab, (q15_t)0xd92, (q15_t)0xd79, (q15_t)0xd60, - (q15_t)0xd47, (q15_t)0xd2e, (q15_t)0xd15, (q15_t)0xcfc, (q15_t)0xce3, (q15_t)0xcca, (q15_t)0xcb1, (q15_t)0xc98, - (q15_t)0xc7f, (q15_t)0xc66, (q15_t)0xc4d, (q15_t)0xc34, (q15_t)0xc1b, (q15_t)0xc02, (q15_t)0xbe9, (q15_t)0xbd0, - (q15_t)0xbb7, (q15_t)0xb9e, (q15_t)0xb85, (q15_t)0xb6c, (q15_t)0xb53, (q15_t)0xb3a, (q15_t)0xb20, (q15_t)0xb07, - (q15_t)0xaee, (q15_t)0xad5, (q15_t)0xabc, (q15_t)0xaa3, (q15_t)0xa8a, (q15_t)0xa71, (q15_t)0xa58, (q15_t)0xa3f, - (q15_t)0xa26, (q15_t)0xa0d, (q15_t)0x9f4, (q15_t)0x9db, (q15_t)0x9c2, (q15_t)0x9a9, (q15_t)0x990, (q15_t)0x977, - (q15_t)0x95e, (q15_t)0x944, (q15_t)0x92b, (q15_t)0x912, (q15_t)0x8f9, (q15_t)0x8e0, (q15_t)0x8c7, (q15_t)0x8ae, - (q15_t)0x895, (q15_t)0x87c, (q15_t)0x863, (q15_t)0x84a, (q15_t)0x831, (q15_t)0x818, (q15_t)0x7fe, (q15_t)0x7e5, - (q15_t)0x7cc, (q15_t)0x7b3, (q15_t)0x79a, (q15_t)0x781, (q15_t)0x768, (q15_t)0x74f, (q15_t)0x736, (q15_t)0x71d, - (q15_t)0x704, (q15_t)0x6ea, (q15_t)0x6d1, (q15_t)0x6b8, (q15_t)0x69f, (q15_t)0x686, (q15_t)0x66d, (q15_t)0x654, - (q15_t)0x63b, (q15_t)0x622, (q15_t)0x609, (q15_t)0x5ef, (q15_t)0x5d6, (q15_t)0x5bd, (q15_t)0x5a4, (q15_t)0x58b, - (q15_t)0x572, (q15_t)0x559, (q15_t)0x540, (q15_t)0x527, (q15_t)0x50d, (q15_t)0x4f4, (q15_t)0x4db, (q15_t)0x4c2, - (q15_t)0x4a9, (q15_t)0x490, (q15_t)0x477, (q15_t)0x45e, (q15_t)0x445, (q15_t)0x42b, (q15_t)0x412, (q15_t)0x3f9, - (q15_t)0x3e0, (q15_t)0x3c7, (q15_t)0x3ae, (q15_t)0x395, (q15_t)0x37c, (q15_t)0x362, (q15_t)0x349, (q15_t)0x330, - (q15_t)0x317, (q15_t)0x2fe, (q15_t)0x2e5, (q15_t)0x2cc, (q15_t)0x2b3, (q15_t)0x299, (q15_t)0x280, (q15_t)0x267, - (q15_t)0x24e, (q15_t)0x235, (q15_t)0x21c, (q15_t)0x203, (q15_t)0x1ea, (q15_t)0x1d0, (q15_t)0x1b7, (q15_t)0x19e, - (q15_t)0x185, (q15_t)0x16c, (q15_t)0x153, (q15_t)0x13a, (q15_t)0x121, (q15_t)0x107, (q15_t)0xee, (q15_t)0xd5, - (q15_t)0xbc, (q15_t)0xa3, (q15_t)0x8a, (q15_t)0x71, (q15_t)0x57, (q15_t)0x3e, (q15_t)0x25, (q15_t)0xc - -}; - -static const q15_t ALIGN4 cos_factorsQ15_8192[8192] = { - (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, - (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, - (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, - (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, - (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, - (q15_t)0x7fff, (q15_t)0x7ffe, (q15_t)0x7ffe, (q15_t)0x7ffe, (q15_t)0x7ffe, (q15_t)0x7ffe, (q15_t)0x7ffe, (q15_t)0x7ffe, - (q15_t)0x7ffe, (q15_t)0x7ffe, (q15_t)0x7ffe, (q15_t)0x7ffe, (q15_t)0x7ffe, (q15_t)0x7ffe, (q15_t)0x7ffe, (q15_t)0x7ffe, - (q15_t)0x7ffe, (q15_t)0x7ffe, (q15_t)0x7ffd, (q15_t)0x7ffd, (q15_t)0x7ffd, (q15_t)0x7ffd, (q15_t)0x7ffd, (q15_t)0x7ffd, - (q15_t)0x7ffd, (q15_t)0x7ffd, (q15_t)0x7ffd, (q15_t)0x7ffd, (q15_t)0x7ffd, (q15_t)0x7ffd, (q15_t)0x7ffd, (q15_t)0x7ffc, - (q15_t)0x7ffc, (q15_t)0x7ffc, (q15_t)0x7ffc, (q15_t)0x7ffc, (q15_t)0x7ffc, (q15_t)0x7ffc, (q15_t)0x7ffc, (q15_t)0x7ffc, - (q15_t)0x7ffc, (q15_t)0x7ffb, (q15_t)0x7ffb, (q15_t)0x7ffb, (q15_t)0x7ffb, (q15_t)0x7ffb, (q15_t)0x7ffb, (q15_t)0x7ffb, - (q15_t)0x7ffb, (q15_t)0x7ffb, (q15_t)0x7ffb, (q15_t)0x7ffa, (q15_t)0x7ffa, (q15_t)0x7ffa, (q15_t)0x7ffa, (q15_t)0x7ffa, - (q15_t)0x7ffa, (q15_t)0x7ffa, (q15_t)0x7ffa, (q15_t)0x7ffa, (q15_t)0x7ff9, (q15_t)0x7ff9, (q15_t)0x7ff9, (q15_t)0x7ff9, - (q15_t)0x7ff9, (q15_t)0x7ff9, (q15_t)0x7ff9, (q15_t)0x7ff9, (q15_t)0x7ff8, (q15_t)0x7ff8, (q15_t)0x7ff8, (q15_t)0x7ff8, - (q15_t)0x7ff8, (q15_t)0x7ff8, (q15_t)0x7ff8, (q15_t)0x7ff7, (q15_t)0x7ff7, (q15_t)0x7ff7, (q15_t)0x7ff7, (q15_t)0x7ff7, - (q15_t)0x7ff7, (q15_t)0x7ff7, (q15_t)0x7ff6, (q15_t)0x7ff6, (q15_t)0x7ff6, (q15_t)0x7ff6, (q15_t)0x7ff6, (q15_t)0x7ff6, - (q15_t)0x7ff6, (q15_t)0x7ff5, (q15_t)0x7ff5, (q15_t)0x7ff5, (q15_t)0x7ff5, (q15_t)0x7ff5, (q15_t)0x7ff5, (q15_t)0x7ff4, - (q15_t)0x7ff4, (q15_t)0x7ff4, (q15_t)0x7ff4, (q15_t)0x7ff4, (q15_t)0x7ff4, (q15_t)0x7ff3, (q15_t)0x7ff3, (q15_t)0x7ff3, - (q15_t)0x7ff3, (q15_t)0x7ff3, (q15_t)0x7ff3, (q15_t)0x7ff2, (q15_t)0x7ff2, (q15_t)0x7ff2, (q15_t)0x7ff2, (q15_t)0x7ff2, - (q15_t)0x7ff1, (q15_t)0x7ff1, (q15_t)0x7ff1, (q15_t)0x7ff1, (q15_t)0x7ff1, (q15_t)0x7ff1, (q15_t)0x7ff0, (q15_t)0x7ff0, - (q15_t)0x7ff0, (q15_t)0x7ff0, (q15_t)0x7ff0, (q15_t)0x7fef, (q15_t)0x7fef, (q15_t)0x7fef, (q15_t)0x7fef, (q15_t)0x7fef, - (q15_t)0x7fee, (q15_t)0x7fee, (q15_t)0x7fee, (q15_t)0x7fee, (q15_t)0x7fee, (q15_t)0x7fed, (q15_t)0x7fed, (q15_t)0x7fed, - (q15_t)0x7fed, (q15_t)0x7fed, (q15_t)0x7fec, (q15_t)0x7fec, (q15_t)0x7fec, (q15_t)0x7fec, (q15_t)0x7feb, (q15_t)0x7feb, - (q15_t)0x7feb, (q15_t)0x7feb, (q15_t)0x7feb, (q15_t)0x7fea, (q15_t)0x7fea, (q15_t)0x7fea, (q15_t)0x7fea, (q15_t)0x7fe9, - (q15_t)0x7fe9, (q15_t)0x7fe9, (q15_t)0x7fe9, (q15_t)0x7fe8, (q15_t)0x7fe8, (q15_t)0x7fe8, (q15_t)0x7fe8, (q15_t)0x7fe8, - (q15_t)0x7fe7, (q15_t)0x7fe7, (q15_t)0x7fe7, (q15_t)0x7fe7, (q15_t)0x7fe6, (q15_t)0x7fe6, (q15_t)0x7fe6, (q15_t)0x7fe6, - (q15_t)0x7fe5, (q15_t)0x7fe5, (q15_t)0x7fe5, (q15_t)0x7fe5, (q15_t)0x7fe4, (q15_t)0x7fe4, (q15_t)0x7fe4, (q15_t)0x7fe4, - (q15_t)0x7fe3, (q15_t)0x7fe3, (q15_t)0x7fe3, (q15_t)0x7fe2, (q15_t)0x7fe2, (q15_t)0x7fe2, (q15_t)0x7fe2, (q15_t)0x7fe1, - (q15_t)0x7fe1, (q15_t)0x7fe1, (q15_t)0x7fe1, (q15_t)0x7fe0, (q15_t)0x7fe0, (q15_t)0x7fe0, (q15_t)0x7fdf, (q15_t)0x7fdf, - (q15_t)0x7fdf, (q15_t)0x7fdf, (q15_t)0x7fde, (q15_t)0x7fde, (q15_t)0x7fde, (q15_t)0x7fde, (q15_t)0x7fdd, (q15_t)0x7fdd, - (q15_t)0x7fdd, (q15_t)0x7fdc, (q15_t)0x7fdc, (q15_t)0x7fdc, (q15_t)0x7fdb, (q15_t)0x7fdb, (q15_t)0x7fdb, (q15_t)0x7fdb, - (q15_t)0x7fda, (q15_t)0x7fda, (q15_t)0x7fda, (q15_t)0x7fd9, (q15_t)0x7fd9, (q15_t)0x7fd9, (q15_t)0x7fd8, (q15_t)0x7fd8, - (q15_t)0x7fd8, (q15_t)0x7fd8, (q15_t)0x7fd7, (q15_t)0x7fd7, (q15_t)0x7fd7, (q15_t)0x7fd6, (q15_t)0x7fd6, (q15_t)0x7fd6, - (q15_t)0x7fd5, (q15_t)0x7fd5, (q15_t)0x7fd5, (q15_t)0x7fd4, (q15_t)0x7fd4, (q15_t)0x7fd4, (q15_t)0x7fd3, (q15_t)0x7fd3, - (q15_t)0x7fd3, (q15_t)0x7fd2, (q15_t)0x7fd2, (q15_t)0x7fd2, (q15_t)0x7fd1, (q15_t)0x7fd1, (q15_t)0x7fd1, (q15_t)0x7fd0, - (q15_t)0x7fd0, (q15_t)0x7fd0, (q15_t)0x7fcf, (q15_t)0x7fcf, (q15_t)0x7fcf, (q15_t)0x7fce, (q15_t)0x7fce, (q15_t)0x7fce, - (q15_t)0x7fcd, (q15_t)0x7fcd, (q15_t)0x7fcd, (q15_t)0x7fcc, (q15_t)0x7fcc, (q15_t)0x7fcc, (q15_t)0x7fcb, (q15_t)0x7fcb, - (q15_t)0x7fcb, (q15_t)0x7fca, (q15_t)0x7fca, (q15_t)0x7fc9, (q15_t)0x7fc9, (q15_t)0x7fc9, (q15_t)0x7fc8, (q15_t)0x7fc8, - (q15_t)0x7fc8, (q15_t)0x7fc7, (q15_t)0x7fc7, (q15_t)0x7fc7, (q15_t)0x7fc6, (q15_t)0x7fc6, (q15_t)0x7fc5, (q15_t)0x7fc5, - (q15_t)0x7fc5, (q15_t)0x7fc4, (q15_t)0x7fc4, (q15_t)0x7fc4, (q15_t)0x7fc3, (q15_t)0x7fc3, (q15_t)0x7fc2, (q15_t)0x7fc2, - (q15_t)0x7fc2, (q15_t)0x7fc1, (q15_t)0x7fc1, (q15_t)0x7fc0, (q15_t)0x7fc0, (q15_t)0x7fc0, (q15_t)0x7fbf, (q15_t)0x7fbf, - (q15_t)0x7fbf, (q15_t)0x7fbe, (q15_t)0x7fbe, (q15_t)0x7fbd, (q15_t)0x7fbd, (q15_t)0x7fbd, (q15_t)0x7fbc, (q15_t)0x7fbc, - (q15_t)0x7fbb, (q15_t)0x7fbb, (q15_t)0x7fbb, (q15_t)0x7fba, (q15_t)0x7fba, (q15_t)0x7fb9, (q15_t)0x7fb9, (q15_t)0x7fb8, - (q15_t)0x7fb8, (q15_t)0x7fb8, (q15_t)0x7fb7, (q15_t)0x7fb7, (q15_t)0x7fb6, (q15_t)0x7fb6, (q15_t)0x7fb6, (q15_t)0x7fb5, - (q15_t)0x7fb5, (q15_t)0x7fb4, (q15_t)0x7fb4, (q15_t)0x7fb3, (q15_t)0x7fb3, (q15_t)0x7fb3, (q15_t)0x7fb2, (q15_t)0x7fb2, - (q15_t)0x7fb1, (q15_t)0x7fb1, (q15_t)0x7fb0, (q15_t)0x7fb0, (q15_t)0x7faf, (q15_t)0x7faf, (q15_t)0x7faf, (q15_t)0x7fae, - (q15_t)0x7fae, (q15_t)0x7fad, (q15_t)0x7fad, (q15_t)0x7fac, (q15_t)0x7fac, (q15_t)0x7fac, (q15_t)0x7fab, (q15_t)0x7fab, - (q15_t)0x7faa, (q15_t)0x7faa, (q15_t)0x7fa9, (q15_t)0x7fa9, (q15_t)0x7fa8, (q15_t)0x7fa8, (q15_t)0x7fa7, (q15_t)0x7fa7, - (q15_t)0x7fa6, (q15_t)0x7fa6, (q15_t)0x7fa6, (q15_t)0x7fa5, (q15_t)0x7fa5, (q15_t)0x7fa4, (q15_t)0x7fa4, (q15_t)0x7fa3, - (q15_t)0x7fa3, (q15_t)0x7fa2, (q15_t)0x7fa2, (q15_t)0x7fa1, (q15_t)0x7fa1, (q15_t)0x7fa0, (q15_t)0x7fa0, (q15_t)0x7f9f, - (q15_t)0x7f9f, (q15_t)0x7f9e, (q15_t)0x7f9e, (q15_t)0x7f9d, (q15_t)0x7f9d, (q15_t)0x7f9c, (q15_t)0x7f9c, (q15_t)0x7f9c, - (q15_t)0x7f9b, (q15_t)0x7f9b, (q15_t)0x7f9a, (q15_t)0x7f9a, (q15_t)0x7f99, (q15_t)0x7f99, (q15_t)0x7f98, (q15_t)0x7f98, - (q15_t)0x7f97, (q15_t)0x7f97, (q15_t)0x7f96, (q15_t)0x7f96, (q15_t)0x7f95, (q15_t)0x7f95, (q15_t)0x7f94, (q15_t)0x7f94, - (q15_t)0x7f93, (q15_t)0x7f92, (q15_t)0x7f92, (q15_t)0x7f91, (q15_t)0x7f91, (q15_t)0x7f90, (q15_t)0x7f90, (q15_t)0x7f8f, - (q15_t)0x7f8f, (q15_t)0x7f8e, (q15_t)0x7f8e, (q15_t)0x7f8d, (q15_t)0x7f8d, (q15_t)0x7f8c, (q15_t)0x7f8c, (q15_t)0x7f8b, - (q15_t)0x7f8b, (q15_t)0x7f8a, (q15_t)0x7f8a, (q15_t)0x7f89, (q15_t)0x7f89, (q15_t)0x7f88, (q15_t)0x7f87, (q15_t)0x7f87, - (q15_t)0x7f86, (q15_t)0x7f86, (q15_t)0x7f85, (q15_t)0x7f85, (q15_t)0x7f84, (q15_t)0x7f84, (q15_t)0x7f83, (q15_t)0x7f83, - (q15_t)0x7f82, (q15_t)0x7f81, (q15_t)0x7f81, (q15_t)0x7f80, (q15_t)0x7f80, (q15_t)0x7f7f, (q15_t)0x7f7f, (q15_t)0x7f7e, - (q15_t)0x7f7e, (q15_t)0x7f7d, (q15_t)0x7f7c, (q15_t)0x7f7c, (q15_t)0x7f7b, (q15_t)0x7f7b, (q15_t)0x7f7a, (q15_t)0x7f7a, - (q15_t)0x7f79, (q15_t)0x7f79, (q15_t)0x7f78, (q15_t)0x7f77, (q15_t)0x7f77, (q15_t)0x7f76, (q15_t)0x7f76, (q15_t)0x7f75, - (q15_t)0x7f75, (q15_t)0x7f74, (q15_t)0x7f73, (q15_t)0x7f73, (q15_t)0x7f72, (q15_t)0x7f72, (q15_t)0x7f71, (q15_t)0x7f70, - (q15_t)0x7f70, (q15_t)0x7f6f, (q15_t)0x7f6f, (q15_t)0x7f6e, (q15_t)0x7f6d, (q15_t)0x7f6d, (q15_t)0x7f6c, (q15_t)0x7f6c, - (q15_t)0x7f6b, (q15_t)0x7f6b, (q15_t)0x7f6a, (q15_t)0x7f69, (q15_t)0x7f69, (q15_t)0x7f68, (q15_t)0x7f68, (q15_t)0x7f67, - (q15_t)0x7f66, (q15_t)0x7f66, (q15_t)0x7f65, (q15_t)0x7f64, (q15_t)0x7f64, (q15_t)0x7f63, (q15_t)0x7f63, (q15_t)0x7f62, - (q15_t)0x7f61, (q15_t)0x7f61, (q15_t)0x7f60, (q15_t)0x7f60, (q15_t)0x7f5f, (q15_t)0x7f5e, (q15_t)0x7f5e, (q15_t)0x7f5d, - (q15_t)0x7f5c, (q15_t)0x7f5c, (q15_t)0x7f5b, (q15_t)0x7f5b, (q15_t)0x7f5a, (q15_t)0x7f59, (q15_t)0x7f59, (q15_t)0x7f58, - (q15_t)0x7f57, (q15_t)0x7f57, (q15_t)0x7f56, (q15_t)0x7f55, (q15_t)0x7f55, (q15_t)0x7f54, (q15_t)0x7f54, (q15_t)0x7f53, - (q15_t)0x7f52, (q15_t)0x7f52, (q15_t)0x7f51, (q15_t)0x7f50, (q15_t)0x7f50, (q15_t)0x7f4f, (q15_t)0x7f4e, (q15_t)0x7f4e, - (q15_t)0x7f4d, (q15_t)0x7f4c, (q15_t)0x7f4c, (q15_t)0x7f4b, (q15_t)0x7f4a, (q15_t)0x7f4a, (q15_t)0x7f49, (q15_t)0x7f48, - (q15_t)0x7f48, (q15_t)0x7f47, (q15_t)0x7f46, (q15_t)0x7f46, (q15_t)0x7f45, (q15_t)0x7f44, (q15_t)0x7f44, (q15_t)0x7f43, - (q15_t)0x7f42, (q15_t)0x7f42, (q15_t)0x7f41, (q15_t)0x7f40, (q15_t)0x7f40, (q15_t)0x7f3f, (q15_t)0x7f3e, (q15_t)0x7f3e, - (q15_t)0x7f3d, (q15_t)0x7f3c, (q15_t)0x7f3c, (q15_t)0x7f3b, (q15_t)0x7f3a, (q15_t)0x7f3a, (q15_t)0x7f39, (q15_t)0x7f38, - (q15_t)0x7f37, (q15_t)0x7f37, (q15_t)0x7f36, (q15_t)0x7f35, (q15_t)0x7f35, (q15_t)0x7f34, (q15_t)0x7f33, (q15_t)0x7f33, - (q15_t)0x7f32, (q15_t)0x7f31, (q15_t)0x7f31, (q15_t)0x7f30, (q15_t)0x7f2f, (q15_t)0x7f2e, (q15_t)0x7f2e, (q15_t)0x7f2d, - (q15_t)0x7f2c, (q15_t)0x7f2c, (q15_t)0x7f2b, (q15_t)0x7f2a, (q15_t)0x7f29, (q15_t)0x7f29, (q15_t)0x7f28, (q15_t)0x7f27, - (q15_t)0x7f27, (q15_t)0x7f26, (q15_t)0x7f25, (q15_t)0x7f24, (q15_t)0x7f24, (q15_t)0x7f23, (q15_t)0x7f22, (q15_t)0x7f21, - (q15_t)0x7f21, (q15_t)0x7f20, (q15_t)0x7f1f, (q15_t)0x7f1f, (q15_t)0x7f1e, (q15_t)0x7f1d, (q15_t)0x7f1c, (q15_t)0x7f1c, - (q15_t)0x7f1b, (q15_t)0x7f1a, (q15_t)0x7f19, (q15_t)0x7f19, (q15_t)0x7f18, (q15_t)0x7f17, (q15_t)0x7f16, (q15_t)0x7f16, - (q15_t)0x7f15, (q15_t)0x7f14, (q15_t)0x7f13, (q15_t)0x7f13, (q15_t)0x7f12, (q15_t)0x7f11, (q15_t)0x7f10, (q15_t)0x7f10, - (q15_t)0x7f0f, (q15_t)0x7f0e, (q15_t)0x7f0d, (q15_t)0x7f0d, (q15_t)0x7f0c, (q15_t)0x7f0b, (q15_t)0x7f0a, (q15_t)0x7f09, - (q15_t)0x7f09, (q15_t)0x7f08, (q15_t)0x7f07, (q15_t)0x7f06, (q15_t)0x7f06, (q15_t)0x7f05, (q15_t)0x7f04, (q15_t)0x7f03, - (q15_t)0x7f02, (q15_t)0x7f02, (q15_t)0x7f01, (q15_t)0x7f00, (q15_t)0x7eff, (q15_t)0x7eff, (q15_t)0x7efe, (q15_t)0x7efd, - (q15_t)0x7efc, (q15_t)0x7efb, (q15_t)0x7efb, (q15_t)0x7efa, (q15_t)0x7ef9, (q15_t)0x7ef8, (q15_t)0x7ef7, (q15_t)0x7ef7, - (q15_t)0x7ef6, (q15_t)0x7ef5, (q15_t)0x7ef4, (q15_t)0x7ef3, (q15_t)0x7ef3, (q15_t)0x7ef2, (q15_t)0x7ef1, (q15_t)0x7ef0, - (q15_t)0x7eef, (q15_t)0x7eef, (q15_t)0x7eee, (q15_t)0x7eed, (q15_t)0x7eec, (q15_t)0x7eeb, (q15_t)0x7eeb, (q15_t)0x7eea, - (q15_t)0x7ee9, (q15_t)0x7ee8, (q15_t)0x7ee7, (q15_t)0x7ee6, (q15_t)0x7ee6, (q15_t)0x7ee5, (q15_t)0x7ee4, (q15_t)0x7ee3, - (q15_t)0x7ee2, (q15_t)0x7ee2, (q15_t)0x7ee1, (q15_t)0x7ee0, (q15_t)0x7edf, (q15_t)0x7ede, (q15_t)0x7edd, (q15_t)0x7edd, - (q15_t)0x7edc, (q15_t)0x7edb, (q15_t)0x7eda, (q15_t)0x7ed9, (q15_t)0x7ed8, (q15_t)0x7ed8, (q15_t)0x7ed7, (q15_t)0x7ed6, - (q15_t)0x7ed5, (q15_t)0x7ed4, (q15_t)0x7ed3, (q15_t)0x7ed2, (q15_t)0x7ed2, (q15_t)0x7ed1, (q15_t)0x7ed0, (q15_t)0x7ecf, - (q15_t)0x7ece, (q15_t)0x7ecd, (q15_t)0x7ecc, (q15_t)0x7ecc, (q15_t)0x7ecb, (q15_t)0x7eca, (q15_t)0x7ec9, (q15_t)0x7ec8, - (q15_t)0x7ec7, (q15_t)0x7ec6, (q15_t)0x7ec6, (q15_t)0x7ec5, (q15_t)0x7ec4, (q15_t)0x7ec3, (q15_t)0x7ec2, (q15_t)0x7ec1, - (q15_t)0x7ec0, (q15_t)0x7ebf, (q15_t)0x7ebf, (q15_t)0x7ebe, (q15_t)0x7ebd, (q15_t)0x7ebc, (q15_t)0x7ebb, (q15_t)0x7eba, - (q15_t)0x7eb9, (q15_t)0x7eb8, (q15_t)0x7eb8, (q15_t)0x7eb7, (q15_t)0x7eb6, (q15_t)0x7eb5, (q15_t)0x7eb4, (q15_t)0x7eb3, - (q15_t)0x7eb2, (q15_t)0x7eb1, (q15_t)0x7eb0, (q15_t)0x7eaf, (q15_t)0x7eaf, (q15_t)0x7eae, (q15_t)0x7ead, (q15_t)0x7eac, - (q15_t)0x7eab, (q15_t)0x7eaa, (q15_t)0x7ea9, (q15_t)0x7ea8, (q15_t)0x7ea7, (q15_t)0x7ea6, (q15_t)0x7ea6, (q15_t)0x7ea5, - (q15_t)0x7ea4, (q15_t)0x7ea3, (q15_t)0x7ea2, (q15_t)0x7ea1, (q15_t)0x7ea0, (q15_t)0x7e9f, (q15_t)0x7e9e, (q15_t)0x7e9d, - (q15_t)0x7e9c, (q15_t)0x7e9b, (q15_t)0x7e9b, (q15_t)0x7e9a, (q15_t)0x7e99, (q15_t)0x7e98, (q15_t)0x7e97, (q15_t)0x7e96, - (q15_t)0x7e95, (q15_t)0x7e94, (q15_t)0x7e93, (q15_t)0x7e92, (q15_t)0x7e91, (q15_t)0x7e90, (q15_t)0x7e8f, (q15_t)0x7e8e, - (q15_t)0x7e8d, (q15_t)0x7e8d, (q15_t)0x7e8c, (q15_t)0x7e8b, (q15_t)0x7e8a, (q15_t)0x7e89, (q15_t)0x7e88, (q15_t)0x7e87, - (q15_t)0x7e86, (q15_t)0x7e85, (q15_t)0x7e84, (q15_t)0x7e83, (q15_t)0x7e82, (q15_t)0x7e81, (q15_t)0x7e80, (q15_t)0x7e7f, - (q15_t)0x7e7e, (q15_t)0x7e7d, (q15_t)0x7e7c, (q15_t)0x7e7b, (q15_t)0x7e7a, (q15_t)0x7e79, (q15_t)0x7e78, (q15_t)0x7e77, - (q15_t)0x7e77, (q15_t)0x7e76, (q15_t)0x7e75, (q15_t)0x7e74, (q15_t)0x7e73, (q15_t)0x7e72, (q15_t)0x7e71, (q15_t)0x7e70, - (q15_t)0x7e6f, (q15_t)0x7e6e, (q15_t)0x7e6d, (q15_t)0x7e6c, (q15_t)0x7e6b, (q15_t)0x7e6a, (q15_t)0x7e69, (q15_t)0x7e68, - (q15_t)0x7e67, (q15_t)0x7e66, (q15_t)0x7e65, (q15_t)0x7e64, (q15_t)0x7e63, (q15_t)0x7e62, (q15_t)0x7e61, (q15_t)0x7e60, - (q15_t)0x7e5f, (q15_t)0x7e5e, (q15_t)0x7e5d, (q15_t)0x7e5c, (q15_t)0x7e5b, (q15_t)0x7e5a, (q15_t)0x7e59, (q15_t)0x7e58, - (q15_t)0x7e57, (q15_t)0x7e56, (q15_t)0x7e55, (q15_t)0x7e54, (q15_t)0x7e53, (q15_t)0x7e52, (q15_t)0x7e51, (q15_t)0x7e50, - (q15_t)0x7e4f, (q15_t)0x7e4e, (q15_t)0x7e4d, (q15_t)0x7e4c, (q15_t)0x7e4b, (q15_t)0x7e4a, (q15_t)0x7e49, (q15_t)0x7e48, - (q15_t)0x7e47, (q15_t)0x7e46, (q15_t)0x7e45, (q15_t)0x7e43, (q15_t)0x7e42, (q15_t)0x7e41, (q15_t)0x7e40, (q15_t)0x7e3f, - (q15_t)0x7e3e, (q15_t)0x7e3d, (q15_t)0x7e3c, (q15_t)0x7e3b, (q15_t)0x7e3a, (q15_t)0x7e39, (q15_t)0x7e38, (q15_t)0x7e37, - (q15_t)0x7e36, (q15_t)0x7e35, (q15_t)0x7e34, (q15_t)0x7e33, (q15_t)0x7e32, (q15_t)0x7e31, (q15_t)0x7e30, (q15_t)0x7e2f, - (q15_t)0x7e2e, (q15_t)0x7e2d, (q15_t)0x7e2b, (q15_t)0x7e2a, (q15_t)0x7e29, (q15_t)0x7e28, (q15_t)0x7e27, (q15_t)0x7e26, - (q15_t)0x7e25, (q15_t)0x7e24, (q15_t)0x7e23, (q15_t)0x7e22, (q15_t)0x7e21, (q15_t)0x7e20, (q15_t)0x7e1f, (q15_t)0x7e1e, - (q15_t)0x7e1d, (q15_t)0x7e1b, (q15_t)0x7e1a, (q15_t)0x7e19, (q15_t)0x7e18, (q15_t)0x7e17, (q15_t)0x7e16, (q15_t)0x7e15, - (q15_t)0x7e14, (q15_t)0x7e13, (q15_t)0x7e12, (q15_t)0x7e11, (q15_t)0x7e10, (q15_t)0x7e0e, (q15_t)0x7e0d, (q15_t)0x7e0c, - (q15_t)0x7e0b, (q15_t)0x7e0a, (q15_t)0x7e09, (q15_t)0x7e08, (q15_t)0x7e07, (q15_t)0x7e06, (q15_t)0x7e05, (q15_t)0x7e04, - (q15_t)0x7e02, (q15_t)0x7e01, (q15_t)0x7e00, (q15_t)0x7dff, (q15_t)0x7dfe, (q15_t)0x7dfd, (q15_t)0x7dfc, (q15_t)0x7dfb, - (q15_t)0x7dfa, (q15_t)0x7df8, (q15_t)0x7df7, (q15_t)0x7df6, (q15_t)0x7df5, (q15_t)0x7df4, (q15_t)0x7df3, (q15_t)0x7df2, - (q15_t)0x7df1, (q15_t)0x7def, (q15_t)0x7dee, (q15_t)0x7ded, (q15_t)0x7dec, (q15_t)0x7deb, (q15_t)0x7dea, (q15_t)0x7de9, - (q15_t)0x7de8, (q15_t)0x7de6, (q15_t)0x7de5, (q15_t)0x7de4, (q15_t)0x7de3, (q15_t)0x7de2, (q15_t)0x7de1, (q15_t)0x7de0, - (q15_t)0x7dde, (q15_t)0x7ddd, (q15_t)0x7ddc, (q15_t)0x7ddb, (q15_t)0x7dda, (q15_t)0x7dd9, (q15_t)0x7dd8, (q15_t)0x7dd6, - (q15_t)0x7dd5, (q15_t)0x7dd4, (q15_t)0x7dd3, (q15_t)0x7dd2, (q15_t)0x7dd1, (q15_t)0x7dd0, (q15_t)0x7dce, (q15_t)0x7dcd, - (q15_t)0x7dcc, (q15_t)0x7dcb, (q15_t)0x7dca, (q15_t)0x7dc9, (q15_t)0x7dc7, (q15_t)0x7dc6, (q15_t)0x7dc5, (q15_t)0x7dc4, - (q15_t)0x7dc3, (q15_t)0x7dc2, (q15_t)0x7dc0, (q15_t)0x7dbf, (q15_t)0x7dbe, (q15_t)0x7dbd, (q15_t)0x7dbc, (q15_t)0x7dbb, - (q15_t)0x7db9, (q15_t)0x7db8, (q15_t)0x7db7, (q15_t)0x7db6, (q15_t)0x7db5, (q15_t)0x7db3, (q15_t)0x7db2, (q15_t)0x7db1, - (q15_t)0x7db0, (q15_t)0x7daf, (q15_t)0x7dae, (q15_t)0x7dac, (q15_t)0x7dab, (q15_t)0x7daa, (q15_t)0x7da9, (q15_t)0x7da8, - (q15_t)0x7da6, (q15_t)0x7da5, (q15_t)0x7da4, (q15_t)0x7da3, (q15_t)0x7da2, (q15_t)0x7da0, (q15_t)0x7d9f, (q15_t)0x7d9e, - (q15_t)0x7d9d, (q15_t)0x7d9c, (q15_t)0x7d9a, (q15_t)0x7d99, (q15_t)0x7d98, (q15_t)0x7d97, (q15_t)0x7d95, (q15_t)0x7d94, - (q15_t)0x7d93, (q15_t)0x7d92, (q15_t)0x7d91, (q15_t)0x7d8f, (q15_t)0x7d8e, (q15_t)0x7d8d, (q15_t)0x7d8c, (q15_t)0x7d8a, - (q15_t)0x7d89, (q15_t)0x7d88, (q15_t)0x7d87, (q15_t)0x7d86, (q15_t)0x7d84, (q15_t)0x7d83, (q15_t)0x7d82, (q15_t)0x7d81, - (q15_t)0x7d7f, (q15_t)0x7d7e, (q15_t)0x7d7d, (q15_t)0x7d7c, (q15_t)0x7d7a, (q15_t)0x7d79, (q15_t)0x7d78, (q15_t)0x7d77, - (q15_t)0x7d75, (q15_t)0x7d74, (q15_t)0x7d73, (q15_t)0x7d72, (q15_t)0x7d70, (q15_t)0x7d6f, (q15_t)0x7d6e, (q15_t)0x7d6d, - (q15_t)0x7d6b, (q15_t)0x7d6a, (q15_t)0x7d69, (q15_t)0x7d68, (q15_t)0x7d66, (q15_t)0x7d65, (q15_t)0x7d64, (q15_t)0x7d63, - (q15_t)0x7d61, (q15_t)0x7d60, (q15_t)0x7d5f, (q15_t)0x7d5e, (q15_t)0x7d5c, (q15_t)0x7d5b, (q15_t)0x7d5a, (q15_t)0x7d59, - (q15_t)0x7d57, (q15_t)0x7d56, (q15_t)0x7d55, (q15_t)0x7d53, (q15_t)0x7d52, (q15_t)0x7d51, (q15_t)0x7d50, (q15_t)0x7d4e, - (q15_t)0x7d4d, (q15_t)0x7d4c, (q15_t)0x7d4a, (q15_t)0x7d49, (q15_t)0x7d48, (q15_t)0x7d47, (q15_t)0x7d45, (q15_t)0x7d44, - (q15_t)0x7d43, (q15_t)0x7d41, (q15_t)0x7d40, (q15_t)0x7d3f, (q15_t)0x7d3e, (q15_t)0x7d3c, (q15_t)0x7d3b, (q15_t)0x7d3a, - (q15_t)0x7d38, (q15_t)0x7d37, (q15_t)0x7d36, (q15_t)0x7d34, (q15_t)0x7d33, (q15_t)0x7d32, (q15_t)0x7d31, (q15_t)0x7d2f, - (q15_t)0x7d2e, (q15_t)0x7d2d, (q15_t)0x7d2b, (q15_t)0x7d2a, (q15_t)0x7d29, (q15_t)0x7d27, (q15_t)0x7d26, (q15_t)0x7d25, - (q15_t)0x7d23, (q15_t)0x7d22, (q15_t)0x7d21, (q15_t)0x7d1f, (q15_t)0x7d1e, (q15_t)0x7d1d, (q15_t)0x7d1b, (q15_t)0x7d1a, - (q15_t)0x7d19, (q15_t)0x7d17, (q15_t)0x7d16, (q15_t)0x7d15, (q15_t)0x7d13, (q15_t)0x7d12, (q15_t)0x7d11, (q15_t)0x7d0f, - (q15_t)0x7d0e, (q15_t)0x7d0d, (q15_t)0x7d0b, (q15_t)0x7d0a, (q15_t)0x7d09, (q15_t)0x7d07, (q15_t)0x7d06, (q15_t)0x7d05, - (q15_t)0x7d03, (q15_t)0x7d02, (q15_t)0x7d01, (q15_t)0x7cff, (q15_t)0x7cfe, (q15_t)0x7cfd, (q15_t)0x7cfb, (q15_t)0x7cfa, - (q15_t)0x7cf9, (q15_t)0x7cf7, (q15_t)0x7cf6, (q15_t)0x7cf4, (q15_t)0x7cf3, (q15_t)0x7cf2, (q15_t)0x7cf0, (q15_t)0x7cef, - (q15_t)0x7cee, (q15_t)0x7cec, (q15_t)0x7ceb, (q15_t)0x7ce9, (q15_t)0x7ce8, (q15_t)0x7ce7, (q15_t)0x7ce5, (q15_t)0x7ce4, - (q15_t)0x7ce3, (q15_t)0x7ce1, (q15_t)0x7ce0, (q15_t)0x7cde, (q15_t)0x7cdd, (q15_t)0x7cdc, (q15_t)0x7cda, (q15_t)0x7cd9, - (q15_t)0x7cd8, (q15_t)0x7cd6, (q15_t)0x7cd5, (q15_t)0x7cd3, (q15_t)0x7cd2, (q15_t)0x7cd1, (q15_t)0x7ccf, (q15_t)0x7cce, - (q15_t)0x7ccc, (q15_t)0x7ccb, (q15_t)0x7cca, (q15_t)0x7cc8, (q15_t)0x7cc7, (q15_t)0x7cc5, (q15_t)0x7cc4, (q15_t)0x7cc3, - (q15_t)0x7cc1, (q15_t)0x7cc0, (q15_t)0x7cbe, (q15_t)0x7cbd, (q15_t)0x7cbc, (q15_t)0x7cba, (q15_t)0x7cb9, (q15_t)0x7cb7, - (q15_t)0x7cb6, (q15_t)0x7cb5, (q15_t)0x7cb3, (q15_t)0x7cb2, (q15_t)0x7cb0, (q15_t)0x7caf, (q15_t)0x7cad, (q15_t)0x7cac, - (q15_t)0x7cab, (q15_t)0x7ca9, (q15_t)0x7ca8, (q15_t)0x7ca6, (q15_t)0x7ca5, (q15_t)0x7ca3, (q15_t)0x7ca2, (q15_t)0x7ca1, - (q15_t)0x7c9f, (q15_t)0x7c9e, (q15_t)0x7c9c, (q15_t)0x7c9b, (q15_t)0x7c99, (q15_t)0x7c98, (q15_t)0x7c97, (q15_t)0x7c95, - (q15_t)0x7c94, (q15_t)0x7c92, (q15_t)0x7c91, (q15_t)0x7c8f, (q15_t)0x7c8e, (q15_t)0x7c8c, (q15_t)0x7c8b, (q15_t)0x7c8a, - (q15_t)0x7c88, (q15_t)0x7c87, (q15_t)0x7c85, (q15_t)0x7c84, (q15_t)0x7c82, (q15_t)0x7c81, (q15_t)0x7c7f, (q15_t)0x7c7e, - (q15_t)0x7c7c, (q15_t)0x7c7b, (q15_t)0x7c79, (q15_t)0x7c78, (q15_t)0x7c77, (q15_t)0x7c75, (q15_t)0x7c74, (q15_t)0x7c72, - (q15_t)0x7c71, (q15_t)0x7c6f, (q15_t)0x7c6e, (q15_t)0x7c6c, (q15_t)0x7c6b, (q15_t)0x7c69, (q15_t)0x7c68, (q15_t)0x7c66, - (q15_t)0x7c65, (q15_t)0x7c63, (q15_t)0x7c62, (q15_t)0x7c60, (q15_t)0x7c5f, (q15_t)0x7c5d, (q15_t)0x7c5c, (q15_t)0x7c5a, - (q15_t)0x7c59, (q15_t)0x7c58, (q15_t)0x7c56, (q15_t)0x7c55, (q15_t)0x7c53, (q15_t)0x7c52, (q15_t)0x7c50, (q15_t)0x7c4f, - (q15_t)0x7c4d, (q15_t)0x7c4c, (q15_t)0x7c4a, (q15_t)0x7c49, (q15_t)0x7c47, (q15_t)0x7c46, (q15_t)0x7c44, (q15_t)0x7c43, - (q15_t)0x7c41, (q15_t)0x7c3f, (q15_t)0x7c3e, (q15_t)0x7c3c, (q15_t)0x7c3b, (q15_t)0x7c39, (q15_t)0x7c38, (q15_t)0x7c36, - (q15_t)0x7c35, (q15_t)0x7c33, (q15_t)0x7c32, (q15_t)0x7c30, (q15_t)0x7c2f, (q15_t)0x7c2d, (q15_t)0x7c2c, (q15_t)0x7c2a, - (q15_t)0x7c29, (q15_t)0x7c27, (q15_t)0x7c26, (q15_t)0x7c24, (q15_t)0x7c23, (q15_t)0x7c21, (q15_t)0x7c20, (q15_t)0x7c1e, - (q15_t)0x7c1c, (q15_t)0x7c1b, (q15_t)0x7c19, (q15_t)0x7c18, (q15_t)0x7c16, (q15_t)0x7c15, (q15_t)0x7c13, (q15_t)0x7c12, - (q15_t)0x7c10, (q15_t)0x7c0f, (q15_t)0x7c0d, (q15_t)0x7c0b, (q15_t)0x7c0a, (q15_t)0x7c08, (q15_t)0x7c07, (q15_t)0x7c05, - (q15_t)0x7c04, (q15_t)0x7c02, (q15_t)0x7c01, (q15_t)0x7bff, (q15_t)0x7bfd, (q15_t)0x7bfc, (q15_t)0x7bfa, (q15_t)0x7bf9, - (q15_t)0x7bf7, (q15_t)0x7bf6, (q15_t)0x7bf4, (q15_t)0x7bf3, (q15_t)0x7bf1, (q15_t)0x7bef, (q15_t)0x7bee, (q15_t)0x7bec, - (q15_t)0x7beb, (q15_t)0x7be9, (q15_t)0x7be8, (q15_t)0x7be6, (q15_t)0x7be4, (q15_t)0x7be3, (q15_t)0x7be1, (q15_t)0x7be0, - (q15_t)0x7bde, (q15_t)0x7bdc, (q15_t)0x7bdb, (q15_t)0x7bd9, (q15_t)0x7bd8, (q15_t)0x7bd6, (q15_t)0x7bd5, (q15_t)0x7bd3, - (q15_t)0x7bd1, (q15_t)0x7bd0, (q15_t)0x7bce, (q15_t)0x7bcd, (q15_t)0x7bcb, (q15_t)0x7bc9, (q15_t)0x7bc8, (q15_t)0x7bc6, - (q15_t)0x7bc5, (q15_t)0x7bc3, (q15_t)0x7bc1, (q15_t)0x7bc0, (q15_t)0x7bbe, (q15_t)0x7bbd, (q15_t)0x7bbb, (q15_t)0x7bb9, - (q15_t)0x7bb8, (q15_t)0x7bb6, (q15_t)0x7bb5, (q15_t)0x7bb3, (q15_t)0x7bb1, (q15_t)0x7bb0, (q15_t)0x7bae, (q15_t)0x7bac, - (q15_t)0x7bab, (q15_t)0x7ba9, (q15_t)0x7ba8, (q15_t)0x7ba6, (q15_t)0x7ba4, (q15_t)0x7ba3, (q15_t)0x7ba1, (q15_t)0x7b9f, - (q15_t)0x7b9e, (q15_t)0x7b9c, (q15_t)0x7b9b, (q15_t)0x7b99, (q15_t)0x7b97, (q15_t)0x7b96, (q15_t)0x7b94, (q15_t)0x7b92, - (q15_t)0x7b91, (q15_t)0x7b8f, (q15_t)0x7b8d, (q15_t)0x7b8c, (q15_t)0x7b8a, (q15_t)0x7b89, (q15_t)0x7b87, (q15_t)0x7b85, - (q15_t)0x7b84, (q15_t)0x7b82, (q15_t)0x7b80, (q15_t)0x7b7f, (q15_t)0x7b7d, (q15_t)0x7b7b, (q15_t)0x7b7a, (q15_t)0x7b78, - (q15_t)0x7b76, (q15_t)0x7b75, (q15_t)0x7b73, (q15_t)0x7b71, (q15_t)0x7b70, (q15_t)0x7b6e, (q15_t)0x7b6c, (q15_t)0x7b6b, - (q15_t)0x7b69, (q15_t)0x7b67, (q15_t)0x7b66, (q15_t)0x7b64, (q15_t)0x7b62, (q15_t)0x7b61, (q15_t)0x7b5f, (q15_t)0x7b5d, - (q15_t)0x7b5c, (q15_t)0x7b5a, (q15_t)0x7b58, (q15_t)0x7b57, (q15_t)0x7b55, (q15_t)0x7b53, (q15_t)0x7b52, (q15_t)0x7b50, - (q15_t)0x7b4e, (q15_t)0x7b4d, (q15_t)0x7b4b, (q15_t)0x7b49, (q15_t)0x7b47, (q15_t)0x7b46, (q15_t)0x7b44, (q15_t)0x7b42, - (q15_t)0x7b41, (q15_t)0x7b3f, (q15_t)0x7b3d, (q15_t)0x7b3c, (q15_t)0x7b3a, (q15_t)0x7b38, (q15_t)0x7b37, (q15_t)0x7b35, - (q15_t)0x7b33, (q15_t)0x7b31, (q15_t)0x7b30, (q15_t)0x7b2e, (q15_t)0x7b2c, (q15_t)0x7b2b, (q15_t)0x7b29, (q15_t)0x7b27, - (q15_t)0x7b25, (q15_t)0x7b24, (q15_t)0x7b22, (q15_t)0x7b20, (q15_t)0x7b1f, (q15_t)0x7b1d, (q15_t)0x7b1b, (q15_t)0x7b19, - (q15_t)0x7b18, (q15_t)0x7b16, (q15_t)0x7b14, (q15_t)0x7b13, (q15_t)0x7b11, (q15_t)0x7b0f, (q15_t)0x7b0d, (q15_t)0x7b0c, - (q15_t)0x7b0a, (q15_t)0x7b08, (q15_t)0x7b06, (q15_t)0x7b05, (q15_t)0x7b03, (q15_t)0x7b01, (q15_t)0x7aff, (q15_t)0x7afe, - (q15_t)0x7afc, (q15_t)0x7afa, (q15_t)0x7af8, (q15_t)0x7af7, (q15_t)0x7af5, (q15_t)0x7af3, (q15_t)0x7af2, (q15_t)0x7af0, - (q15_t)0x7aee, (q15_t)0x7aec, (q15_t)0x7aeb, (q15_t)0x7ae9, (q15_t)0x7ae7, (q15_t)0x7ae5, (q15_t)0x7ae3, (q15_t)0x7ae2, - (q15_t)0x7ae0, (q15_t)0x7ade, (q15_t)0x7adc, (q15_t)0x7adb, (q15_t)0x7ad9, (q15_t)0x7ad7, (q15_t)0x7ad5, (q15_t)0x7ad4, - (q15_t)0x7ad2, (q15_t)0x7ad0, (q15_t)0x7ace, (q15_t)0x7acd, (q15_t)0x7acb, (q15_t)0x7ac9, (q15_t)0x7ac7, (q15_t)0x7ac5, - (q15_t)0x7ac4, (q15_t)0x7ac2, (q15_t)0x7ac0, (q15_t)0x7abe, (q15_t)0x7abd, (q15_t)0x7abb, (q15_t)0x7ab9, (q15_t)0x7ab7, - (q15_t)0x7ab5, (q15_t)0x7ab4, (q15_t)0x7ab2, (q15_t)0x7ab0, (q15_t)0x7aae, (q15_t)0x7aac, (q15_t)0x7aab, (q15_t)0x7aa9, - (q15_t)0x7aa7, (q15_t)0x7aa5, (q15_t)0x7aa3, (q15_t)0x7aa2, (q15_t)0x7aa0, (q15_t)0x7a9e, (q15_t)0x7a9c, (q15_t)0x7a9a, - (q15_t)0x7a99, (q15_t)0x7a97, (q15_t)0x7a95, (q15_t)0x7a93, (q15_t)0x7a91, (q15_t)0x7a90, (q15_t)0x7a8e, (q15_t)0x7a8c, - (q15_t)0x7a8a, (q15_t)0x7a88, (q15_t)0x7a87, (q15_t)0x7a85, (q15_t)0x7a83, (q15_t)0x7a81, (q15_t)0x7a7f, (q15_t)0x7a7d, - (q15_t)0x7a7c, (q15_t)0x7a7a, (q15_t)0x7a78, (q15_t)0x7a76, (q15_t)0x7a74, (q15_t)0x7a72, (q15_t)0x7a71, (q15_t)0x7a6f, - (q15_t)0x7a6d, (q15_t)0x7a6b, (q15_t)0x7a69, (q15_t)0x7a67, (q15_t)0x7a66, (q15_t)0x7a64, (q15_t)0x7a62, (q15_t)0x7a60, - (q15_t)0x7a5e, (q15_t)0x7a5c, (q15_t)0x7a5b, (q15_t)0x7a59, (q15_t)0x7a57, (q15_t)0x7a55, (q15_t)0x7a53, (q15_t)0x7a51, - (q15_t)0x7a4f, (q15_t)0x7a4e, (q15_t)0x7a4c, (q15_t)0x7a4a, (q15_t)0x7a48, (q15_t)0x7a46, (q15_t)0x7a44, (q15_t)0x7a42, - (q15_t)0x7a41, (q15_t)0x7a3f, (q15_t)0x7a3d, (q15_t)0x7a3b, (q15_t)0x7a39, (q15_t)0x7a37, (q15_t)0x7a35, (q15_t)0x7a34, - (q15_t)0x7a32, (q15_t)0x7a30, (q15_t)0x7a2e, (q15_t)0x7a2c, (q15_t)0x7a2a, (q15_t)0x7a28, (q15_t)0x7a26, (q15_t)0x7a25, - (q15_t)0x7a23, (q15_t)0x7a21, (q15_t)0x7a1f, (q15_t)0x7a1d, (q15_t)0x7a1b, (q15_t)0x7a19, (q15_t)0x7a17, (q15_t)0x7a16, - (q15_t)0x7a14, (q15_t)0x7a12, (q15_t)0x7a10, (q15_t)0x7a0e, (q15_t)0x7a0c, (q15_t)0x7a0a, (q15_t)0x7a08, (q15_t)0x7a06, - (q15_t)0x7a04, (q15_t)0x7a03, (q15_t)0x7a01, (q15_t)0x79ff, (q15_t)0x79fd, (q15_t)0x79fb, (q15_t)0x79f9, (q15_t)0x79f7, - (q15_t)0x79f5, (q15_t)0x79f3, (q15_t)0x79f1, (q15_t)0x79f0, (q15_t)0x79ee, (q15_t)0x79ec, (q15_t)0x79ea, (q15_t)0x79e8, - (q15_t)0x79e6, (q15_t)0x79e4, (q15_t)0x79e2, (q15_t)0x79e0, (q15_t)0x79de, (q15_t)0x79dc, (q15_t)0x79da, (q15_t)0x79d9, - (q15_t)0x79d7, (q15_t)0x79d5, (q15_t)0x79d3, (q15_t)0x79d1, (q15_t)0x79cf, (q15_t)0x79cd, (q15_t)0x79cb, (q15_t)0x79c9, - (q15_t)0x79c7, (q15_t)0x79c5, (q15_t)0x79c3, (q15_t)0x79c1, (q15_t)0x79bf, (q15_t)0x79bd, (q15_t)0x79bc, (q15_t)0x79ba, - (q15_t)0x79b8, (q15_t)0x79b6, (q15_t)0x79b4, (q15_t)0x79b2, (q15_t)0x79b0, (q15_t)0x79ae, (q15_t)0x79ac, (q15_t)0x79aa, - (q15_t)0x79a8, (q15_t)0x79a6, (q15_t)0x79a4, (q15_t)0x79a2, (q15_t)0x79a0, (q15_t)0x799e, (q15_t)0x799c, (q15_t)0x799a, - (q15_t)0x7998, (q15_t)0x7996, (q15_t)0x7994, (q15_t)0x7992, (q15_t)0x7991, (q15_t)0x798f, (q15_t)0x798d, (q15_t)0x798b, - (q15_t)0x7989, (q15_t)0x7987, (q15_t)0x7985, (q15_t)0x7983, (q15_t)0x7981, (q15_t)0x797f, (q15_t)0x797d, (q15_t)0x797b, - (q15_t)0x7979, (q15_t)0x7977, (q15_t)0x7975, (q15_t)0x7973, (q15_t)0x7971, (q15_t)0x796f, (q15_t)0x796d, (q15_t)0x796b, - (q15_t)0x7969, (q15_t)0x7967, (q15_t)0x7965, (q15_t)0x7963, (q15_t)0x7961, (q15_t)0x795f, (q15_t)0x795d, (q15_t)0x795b, - (q15_t)0x7959, (q15_t)0x7957, (q15_t)0x7955, (q15_t)0x7953, (q15_t)0x7951, (q15_t)0x794f, (q15_t)0x794d, (q15_t)0x794b, - (q15_t)0x7949, (q15_t)0x7947, (q15_t)0x7945, (q15_t)0x7943, (q15_t)0x7941, (q15_t)0x793f, (q15_t)0x793d, (q15_t)0x793b, - (q15_t)0x7939, (q15_t)0x7937, (q15_t)0x7935, (q15_t)0x7933, (q15_t)0x7931, (q15_t)0x792f, (q15_t)0x792d, (q15_t)0x792b, - (q15_t)0x7929, (q15_t)0x7927, (q15_t)0x7925, (q15_t)0x7923, (q15_t)0x7921, (q15_t)0x791f, (q15_t)0x791d, (q15_t)0x791a, - (q15_t)0x7918, (q15_t)0x7916, (q15_t)0x7914, (q15_t)0x7912, (q15_t)0x7910, (q15_t)0x790e, (q15_t)0x790c, (q15_t)0x790a, - (q15_t)0x7908, (q15_t)0x7906, (q15_t)0x7904, (q15_t)0x7902, (q15_t)0x7900, (q15_t)0x78fe, (q15_t)0x78fc, (q15_t)0x78fa, - (q15_t)0x78f8, (q15_t)0x78f6, (q15_t)0x78f4, (q15_t)0x78f2, (q15_t)0x78f0, (q15_t)0x78ed, (q15_t)0x78eb, (q15_t)0x78e9, - (q15_t)0x78e7, (q15_t)0x78e5, (q15_t)0x78e3, (q15_t)0x78e1, (q15_t)0x78df, (q15_t)0x78dd, (q15_t)0x78db, (q15_t)0x78d9, - (q15_t)0x78d7, (q15_t)0x78d5, (q15_t)0x78d3, (q15_t)0x78d1, (q15_t)0x78ce, (q15_t)0x78cc, (q15_t)0x78ca, (q15_t)0x78c8, - (q15_t)0x78c6, (q15_t)0x78c4, (q15_t)0x78c2, (q15_t)0x78c0, (q15_t)0x78be, (q15_t)0x78bc, (q15_t)0x78ba, (q15_t)0x78b8, - (q15_t)0x78b5, (q15_t)0x78b3, (q15_t)0x78b1, (q15_t)0x78af, (q15_t)0x78ad, (q15_t)0x78ab, (q15_t)0x78a9, (q15_t)0x78a7, - (q15_t)0x78a5, (q15_t)0x78a3, (q15_t)0x78a0, (q15_t)0x789e, (q15_t)0x789c, (q15_t)0x789a, (q15_t)0x7898, (q15_t)0x7896, - (q15_t)0x7894, (q15_t)0x7892, (q15_t)0x7890, (q15_t)0x788e, (q15_t)0x788b, (q15_t)0x7889, (q15_t)0x7887, (q15_t)0x7885, - (q15_t)0x7883, (q15_t)0x7881, (q15_t)0x787f, (q15_t)0x787d, (q15_t)0x787a, (q15_t)0x7878, (q15_t)0x7876, (q15_t)0x7874, - (q15_t)0x7872, (q15_t)0x7870, (q15_t)0x786e, (q15_t)0x786c, (q15_t)0x7869, (q15_t)0x7867, (q15_t)0x7865, (q15_t)0x7863, - (q15_t)0x7861, (q15_t)0x785f, (q15_t)0x785d, (q15_t)0x785b, (q15_t)0x7858, (q15_t)0x7856, (q15_t)0x7854, (q15_t)0x7852, - (q15_t)0x7850, (q15_t)0x784e, (q15_t)0x784c, (q15_t)0x7849, (q15_t)0x7847, (q15_t)0x7845, (q15_t)0x7843, (q15_t)0x7841, - (q15_t)0x783f, (q15_t)0x783c, (q15_t)0x783a, (q15_t)0x7838, (q15_t)0x7836, (q15_t)0x7834, (q15_t)0x7832, (q15_t)0x7830, - (q15_t)0x782d, (q15_t)0x782b, (q15_t)0x7829, (q15_t)0x7827, (q15_t)0x7825, (q15_t)0x7823, (q15_t)0x7820, (q15_t)0x781e, - (q15_t)0x781c, (q15_t)0x781a, (q15_t)0x7818, (q15_t)0x7816, (q15_t)0x7813, (q15_t)0x7811, (q15_t)0x780f, (q15_t)0x780d, - (q15_t)0x780b, (q15_t)0x7808, (q15_t)0x7806, (q15_t)0x7804, (q15_t)0x7802, (q15_t)0x7800, (q15_t)0x77fe, (q15_t)0x77fb, - (q15_t)0x77f9, (q15_t)0x77f7, (q15_t)0x77f5, (q15_t)0x77f3, (q15_t)0x77f0, (q15_t)0x77ee, (q15_t)0x77ec, (q15_t)0x77ea, - (q15_t)0x77e8, (q15_t)0x77e5, (q15_t)0x77e3, (q15_t)0x77e1, (q15_t)0x77df, (q15_t)0x77dd, (q15_t)0x77da, (q15_t)0x77d8, - (q15_t)0x77d6, (q15_t)0x77d4, (q15_t)0x77d2, (q15_t)0x77cf, (q15_t)0x77cd, (q15_t)0x77cb, (q15_t)0x77c9, (q15_t)0x77c6, - (q15_t)0x77c4, (q15_t)0x77c2, (q15_t)0x77c0, (q15_t)0x77be, (q15_t)0x77bb, (q15_t)0x77b9, (q15_t)0x77b7, (q15_t)0x77b5, - (q15_t)0x77b2, (q15_t)0x77b0, (q15_t)0x77ae, (q15_t)0x77ac, (q15_t)0x77aa, (q15_t)0x77a7, (q15_t)0x77a5, (q15_t)0x77a3, - (q15_t)0x77a1, (q15_t)0x779e, (q15_t)0x779c, (q15_t)0x779a, (q15_t)0x7798, (q15_t)0x7795, (q15_t)0x7793, (q15_t)0x7791, - (q15_t)0x778f, (q15_t)0x778c, (q15_t)0x778a, (q15_t)0x7788, (q15_t)0x7786, (q15_t)0x7783, (q15_t)0x7781, (q15_t)0x777f, - (q15_t)0x777d, (q15_t)0x777a, (q15_t)0x7778, (q15_t)0x7776, (q15_t)0x7774, (q15_t)0x7771, (q15_t)0x776f, (q15_t)0x776d, - (q15_t)0x776b, (q15_t)0x7768, (q15_t)0x7766, (q15_t)0x7764, (q15_t)0x7762, (q15_t)0x775f, (q15_t)0x775d, (q15_t)0x775b, - (q15_t)0x7759, (q15_t)0x7756, (q15_t)0x7754, (q15_t)0x7752, (q15_t)0x774f, (q15_t)0x774d, (q15_t)0x774b, (q15_t)0x7749, - (q15_t)0x7746, (q15_t)0x7744, (q15_t)0x7742, (q15_t)0x773f, (q15_t)0x773d, (q15_t)0x773b, (q15_t)0x7739, (q15_t)0x7736, - (q15_t)0x7734, (q15_t)0x7732, (q15_t)0x772f, (q15_t)0x772d, (q15_t)0x772b, (q15_t)0x7729, (q15_t)0x7726, (q15_t)0x7724, - (q15_t)0x7722, (q15_t)0x771f, (q15_t)0x771d, (q15_t)0x771b, (q15_t)0x7719, (q15_t)0x7716, (q15_t)0x7714, (q15_t)0x7712, - (q15_t)0x770f, (q15_t)0x770d, (q15_t)0x770b, (q15_t)0x7708, (q15_t)0x7706, (q15_t)0x7704, (q15_t)0x7701, (q15_t)0x76ff, - (q15_t)0x76fd, (q15_t)0x76fa, (q15_t)0x76f8, (q15_t)0x76f6, (q15_t)0x76f4, (q15_t)0x76f1, (q15_t)0x76ef, (q15_t)0x76ed, - (q15_t)0x76ea, (q15_t)0x76e8, (q15_t)0x76e6, (q15_t)0x76e3, (q15_t)0x76e1, (q15_t)0x76df, (q15_t)0x76dc, (q15_t)0x76da, - (q15_t)0x76d8, (q15_t)0x76d5, (q15_t)0x76d3, (q15_t)0x76d1, (q15_t)0x76ce, (q15_t)0x76cc, (q15_t)0x76ca, (q15_t)0x76c7, - (q15_t)0x76c5, (q15_t)0x76c3, (q15_t)0x76c0, (q15_t)0x76be, (q15_t)0x76bc, (q15_t)0x76b9, (q15_t)0x76b7, (q15_t)0x76b4, - (q15_t)0x76b2, (q15_t)0x76b0, (q15_t)0x76ad, (q15_t)0x76ab, (q15_t)0x76a9, (q15_t)0x76a6, (q15_t)0x76a4, (q15_t)0x76a2, - (q15_t)0x769f, (q15_t)0x769d, (q15_t)0x769b, (q15_t)0x7698, (q15_t)0x7696, (q15_t)0x7693, (q15_t)0x7691, (q15_t)0x768f, - (q15_t)0x768c, (q15_t)0x768a, (q15_t)0x7688, (q15_t)0x7685, (q15_t)0x7683, (q15_t)0x7681, (q15_t)0x767e, (q15_t)0x767c, - (q15_t)0x7679, (q15_t)0x7677, (q15_t)0x7675, (q15_t)0x7672, (q15_t)0x7670, (q15_t)0x766d, (q15_t)0x766b, (q15_t)0x7669, - (q15_t)0x7666, (q15_t)0x7664, (q15_t)0x7662, (q15_t)0x765f, (q15_t)0x765d, (q15_t)0x765a, (q15_t)0x7658, (q15_t)0x7656, - (q15_t)0x7653, (q15_t)0x7651, (q15_t)0x764e, (q15_t)0x764c, (q15_t)0x764a, (q15_t)0x7647, (q15_t)0x7645, (q15_t)0x7642, - (q15_t)0x7640, (q15_t)0x763e, (q15_t)0x763b, (q15_t)0x7639, (q15_t)0x7636, (q15_t)0x7634, (q15_t)0x7632, (q15_t)0x762f, - (q15_t)0x762d, (q15_t)0x762a, (q15_t)0x7628, (q15_t)0x7625, (q15_t)0x7623, (q15_t)0x7621, (q15_t)0x761e, (q15_t)0x761c, - (q15_t)0x7619, (q15_t)0x7617, (q15_t)0x7615, (q15_t)0x7612, (q15_t)0x7610, (q15_t)0x760d, (q15_t)0x760b, (q15_t)0x7608, - (q15_t)0x7606, (q15_t)0x7604, (q15_t)0x7601, (q15_t)0x75ff, (q15_t)0x75fc, (q15_t)0x75fa, (q15_t)0x75f7, (q15_t)0x75f5, - (q15_t)0x75f2, (q15_t)0x75f0, (q15_t)0x75ee, (q15_t)0x75eb, (q15_t)0x75e9, (q15_t)0x75e6, (q15_t)0x75e4, (q15_t)0x75e1, - (q15_t)0x75df, (q15_t)0x75dc, (q15_t)0x75da, (q15_t)0x75d8, (q15_t)0x75d5, (q15_t)0x75d3, (q15_t)0x75d0, (q15_t)0x75ce, - (q15_t)0x75cb, (q15_t)0x75c9, (q15_t)0x75c6, (q15_t)0x75c4, (q15_t)0x75c1, (q15_t)0x75bf, (q15_t)0x75bc, (q15_t)0x75ba, - (q15_t)0x75b8, (q15_t)0x75b5, (q15_t)0x75b3, (q15_t)0x75b0, (q15_t)0x75ae, (q15_t)0x75ab, (q15_t)0x75a9, (q15_t)0x75a6, - (q15_t)0x75a4, (q15_t)0x75a1, (q15_t)0x759f, (q15_t)0x759c, (q15_t)0x759a, (q15_t)0x7597, (q15_t)0x7595, (q15_t)0x7592, - (q15_t)0x7590, (q15_t)0x758d, (q15_t)0x758b, (q15_t)0x7588, (q15_t)0x7586, (q15_t)0x7584, (q15_t)0x7581, (q15_t)0x757f, - (q15_t)0x757c, (q15_t)0x757a, (q15_t)0x7577, (q15_t)0x7575, (q15_t)0x7572, (q15_t)0x7570, (q15_t)0x756d, (q15_t)0x756b, - (q15_t)0x7568, (q15_t)0x7566, (q15_t)0x7563, (q15_t)0x7561, (q15_t)0x755e, (q15_t)0x755c, (q15_t)0x7559, (q15_t)0x7556, - (q15_t)0x7554, (q15_t)0x7551, (q15_t)0x754f, (q15_t)0x754c, (q15_t)0x754a, (q15_t)0x7547, (q15_t)0x7545, (q15_t)0x7542, - (q15_t)0x7540, (q15_t)0x753d, (q15_t)0x753b, (q15_t)0x7538, (q15_t)0x7536, (q15_t)0x7533, (q15_t)0x7531, (q15_t)0x752e, - (q15_t)0x752c, (q15_t)0x7529, (q15_t)0x7527, (q15_t)0x7524, (q15_t)0x7522, (q15_t)0x751f, (q15_t)0x751c, (q15_t)0x751a, - (q15_t)0x7517, (q15_t)0x7515, (q15_t)0x7512, (q15_t)0x7510, (q15_t)0x750d, (q15_t)0x750b, (q15_t)0x7508, (q15_t)0x7506, - (q15_t)0x7503, (q15_t)0x7501, (q15_t)0x74fe, (q15_t)0x74fb, (q15_t)0x74f9, (q15_t)0x74f6, (q15_t)0x74f4, (q15_t)0x74f1, - (q15_t)0x74ef, (q15_t)0x74ec, (q15_t)0x74ea, (q15_t)0x74e7, (q15_t)0x74e4, (q15_t)0x74e2, (q15_t)0x74df, (q15_t)0x74dd, - (q15_t)0x74da, (q15_t)0x74d8, (q15_t)0x74d5, (q15_t)0x74d2, (q15_t)0x74d0, (q15_t)0x74cd, (q15_t)0x74cb, (q15_t)0x74c8, - (q15_t)0x74c6, (q15_t)0x74c3, (q15_t)0x74c0, (q15_t)0x74be, (q15_t)0x74bb, (q15_t)0x74b9, (q15_t)0x74b6, (q15_t)0x74b4, - (q15_t)0x74b1, (q15_t)0x74ae, (q15_t)0x74ac, (q15_t)0x74a9, (q15_t)0x74a7, (q15_t)0x74a4, (q15_t)0x74a1, (q15_t)0x749f, - (q15_t)0x749c, (q15_t)0x749a, (q15_t)0x7497, (q15_t)0x7495, (q15_t)0x7492, (q15_t)0x748f, (q15_t)0x748d, (q15_t)0x748a, - (q15_t)0x7488, (q15_t)0x7485, (q15_t)0x7482, (q15_t)0x7480, (q15_t)0x747d, (q15_t)0x747b, (q15_t)0x7478, (q15_t)0x7475, - (q15_t)0x7473, (q15_t)0x7470, (q15_t)0x746d, (q15_t)0x746b, (q15_t)0x7468, (q15_t)0x7466, (q15_t)0x7463, (q15_t)0x7460, - (q15_t)0x745e, (q15_t)0x745b, (q15_t)0x7459, (q15_t)0x7456, (q15_t)0x7453, (q15_t)0x7451, (q15_t)0x744e, (q15_t)0x744b, - (q15_t)0x7449, (q15_t)0x7446, (q15_t)0x7444, (q15_t)0x7441, (q15_t)0x743e, (q15_t)0x743c, (q15_t)0x7439, (q15_t)0x7436, - (q15_t)0x7434, (q15_t)0x7431, (q15_t)0x742f, (q15_t)0x742c, (q15_t)0x7429, (q15_t)0x7427, (q15_t)0x7424, (q15_t)0x7421, - (q15_t)0x741f, (q15_t)0x741c, (q15_t)0x7419, (q15_t)0x7417, (q15_t)0x7414, (q15_t)0x7411, (q15_t)0x740f, (q15_t)0x740c, - (q15_t)0x740a, (q15_t)0x7407, (q15_t)0x7404, (q15_t)0x7402, (q15_t)0x73ff, (q15_t)0x73fc, (q15_t)0x73fa, (q15_t)0x73f7, - (q15_t)0x73f4, (q15_t)0x73f2, (q15_t)0x73ef, (q15_t)0x73ec, (q15_t)0x73ea, (q15_t)0x73e7, (q15_t)0x73e4, (q15_t)0x73e2, - (q15_t)0x73df, (q15_t)0x73dc, (q15_t)0x73da, (q15_t)0x73d7, (q15_t)0x73d4, (q15_t)0x73d2, (q15_t)0x73cf, (q15_t)0x73cc, - (q15_t)0x73ca, (q15_t)0x73c7, (q15_t)0x73c4, (q15_t)0x73c1, (q15_t)0x73bf, (q15_t)0x73bc, (q15_t)0x73b9, (q15_t)0x73b7, - (q15_t)0x73b4, (q15_t)0x73b1, (q15_t)0x73af, (q15_t)0x73ac, (q15_t)0x73a9, (q15_t)0x73a7, (q15_t)0x73a4, (q15_t)0x73a1, - (q15_t)0x739f, (q15_t)0x739c, (q15_t)0x7399, (q15_t)0x7396, (q15_t)0x7394, (q15_t)0x7391, (q15_t)0x738e, (q15_t)0x738c, - (q15_t)0x7389, (q15_t)0x7386, (q15_t)0x7384, (q15_t)0x7381, (q15_t)0x737e, (q15_t)0x737b, (q15_t)0x7379, (q15_t)0x7376, - (q15_t)0x7373, (q15_t)0x7371, (q15_t)0x736e, (q15_t)0x736b, (q15_t)0x7368, (q15_t)0x7366, (q15_t)0x7363, (q15_t)0x7360, - (q15_t)0x735e, (q15_t)0x735b, (q15_t)0x7358, (q15_t)0x7355, (q15_t)0x7353, (q15_t)0x7350, (q15_t)0x734d, (q15_t)0x734a, - (q15_t)0x7348, (q15_t)0x7345, (q15_t)0x7342, (q15_t)0x7340, (q15_t)0x733d, (q15_t)0x733a, (q15_t)0x7337, (q15_t)0x7335, - (q15_t)0x7332, (q15_t)0x732f, (q15_t)0x732c, (q15_t)0x732a, (q15_t)0x7327, (q15_t)0x7324, (q15_t)0x7321, (q15_t)0x731f, - (q15_t)0x731c, (q15_t)0x7319, (q15_t)0x7316, (q15_t)0x7314, (q15_t)0x7311, (q15_t)0x730e, (q15_t)0x730b, (q15_t)0x7309, - (q15_t)0x7306, (q15_t)0x7303, (q15_t)0x7300, (q15_t)0x72fe, (q15_t)0x72fb, (q15_t)0x72f8, (q15_t)0x72f5, (q15_t)0x72f3, - (q15_t)0x72f0, (q15_t)0x72ed, (q15_t)0x72ea, (q15_t)0x72e8, (q15_t)0x72e5, (q15_t)0x72e2, (q15_t)0x72df, (q15_t)0x72dc, - (q15_t)0x72da, (q15_t)0x72d7, (q15_t)0x72d4, (q15_t)0x72d1, (q15_t)0x72cf, (q15_t)0x72cc, (q15_t)0x72c9, (q15_t)0x72c6, - (q15_t)0x72c3, (q15_t)0x72c1, (q15_t)0x72be, (q15_t)0x72bb, (q15_t)0x72b8, (q15_t)0x72b5, (q15_t)0x72b3, (q15_t)0x72b0, - (q15_t)0x72ad, (q15_t)0x72aa, (q15_t)0x72a8, (q15_t)0x72a5, (q15_t)0x72a2, (q15_t)0x729f, (q15_t)0x729c, (q15_t)0x729a, - (q15_t)0x7297, (q15_t)0x7294, (q15_t)0x7291, (q15_t)0x728e, (q15_t)0x728c, (q15_t)0x7289, (q15_t)0x7286, (q15_t)0x7283, - (q15_t)0x7280, (q15_t)0x727e, (q15_t)0x727b, (q15_t)0x7278, (q15_t)0x7275, (q15_t)0x7272, (q15_t)0x726f, (q15_t)0x726d, - (q15_t)0x726a, (q15_t)0x7267, (q15_t)0x7264, (q15_t)0x7261, (q15_t)0x725f, (q15_t)0x725c, (q15_t)0x7259, (q15_t)0x7256, - (q15_t)0x7253, (q15_t)0x7250, (q15_t)0x724e, (q15_t)0x724b, (q15_t)0x7248, (q15_t)0x7245, (q15_t)0x7242, (q15_t)0x723f, - (q15_t)0x723d, (q15_t)0x723a, (q15_t)0x7237, (q15_t)0x7234, (q15_t)0x7231, (q15_t)0x722e, (q15_t)0x722c, (q15_t)0x7229, - (q15_t)0x7226, (q15_t)0x7223, (q15_t)0x7220, (q15_t)0x721d, (q15_t)0x721b, (q15_t)0x7218, (q15_t)0x7215, (q15_t)0x7212, - (q15_t)0x720f, (q15_t)0x720c, (q15_t)0x7209, (q15_t)0x7207, (q15_t)0x7204, (q15_t)0x7201, (q15_t)0x71fe, (q15_t)0x71fb, - (q15_t)0x71f8, (q15_t)0x71f5, (q15_t)0x71f3, (q15_t)0x71f0, (q15_t)0x71ed, (q15_t)0x71ea, (q15_t)0x71e7, (q15_t)0x71e4, - (q15_t)0x71e1, (q15_t)0x71df, (q15_t)0x71dc, (q15_t)0x71d9, (q15_t)0x71d6, (q15_t)0x71d3, (q15_t)0x71d0, (q15_t)0x71cd, - (q15_t)0x71ca, (q15_t)0x71c8, (q15_t)0x71c5, (q15_t)0x71c2, (q15_t)0x71bf, (q15_t)0x71bc, (q15_t)0x71b9, (q15_t)0x71b6, - (q15_t)0x71b3, (q15_t)0x71b0, (q15_t)0x71ae, (q15_t)0x71ab, (q15_t)0x71a8, (q15_t)0x71a5, (q15_t)0x71a2, (q15_t)0x719f, - (q15_t)0x719c, (q15_t)0x7199, (q15_t)0x7196, (q15_t)0x7194, (q15_t)0x7191, (q15_t)0x718e, (q15_t)0x718b, (q15_t)0x7188, - (q15_t)0x7185, (q15_t)0x7182, (q15_t)0x717f, (q15_t)0x717c, (q15_t)0x7179, (q15_t)0x7177, (q15_t)0x7174, (q15_t)0x7171, - (q15_t)0x716e, (q15_t)0x716b, (q15_t)0x7168, (q15_t)0x7165, (q15_t)0x7162, (q15_t)0x715f, (q15_t)0x715c, (q15_t)0x7159, - (q15_t)0x7156, (q15_t)0x7154, (q15_t)0x7151, (q15_t)0x714e, (q15_t)0x714b, (q15_t)0x7148, (q15_t)0x7145, (q15_t)0x7142, - (q15_t)0x713f, (q15_t)0x713c, (q15_t)0x7139, (q15_t)0x7136, (q15_t)0x7133, (q15_t)0x7130, (q15_t)0x712d, (q15_t)0x712b, - (q15_t)0x7128, (q15_t)0x7125, (q15_t)0x7122, (q15_t)0x711f, (q15_t)0x711c, (q15_t)0x7119, (q15_t)0x7116, (q15_t)0x7113, - (q15_t)0x7110, (q15_t)0x710d, (q15_t)0x710a, (q15_t)0x7107, (q15_t)0x7104, (q15_t)0x7101, (q15_t)0x70fe, (q15_t)0x70fb, - (q15_t)0x70f8, (q15_t)0x70f6, (q15_t)0x70f3, (q15_t)0x70f0, (q15_t)0x70ed, (q15_t)0x70ea, (q15_t)0x70e7, (q15_t)0x70e4, - (q15_t)0x70e1, (q15_t)0x70de, (q15_t)0x70db, (q15_t)0x70d8, (q15_t)0x70d5, (q15_t)0x70d2, (q15_t)0x70cf, (q15_t)0x70cc, - (q15_t)0x70c9, (q15_t)0x70c6, (q15_t)0x70c3, (q15_t)0x70c0, (q15_t)0x70bd, (q15_t)0x70ba, (q15_t)0x70b7, (q15_t)0x70b4, - (q15_t)0x70b1, (q15_t)0x70ae, (q15_t)0x70ab, (q15_t)0x70a8, (q15_t)0x70a5, (q15_t)0x70a2, (q15_t)0x709f, (q15_t)0x709c, - (q15_t)0x7099, (q15_t)0x7096, (q15_t)0x7093, (q15_t)0x7090, (q15_t)0x708d, (q15_t)0x708a, (q15_t)0x7087, (q15_t)0x7084, - (q15_t)0x7081, (q15_t)0x707e, (q15_t)0x707b, (q15_t)0x7078, (q15_t)0x7075, (q15_t)0x7072, (q15_t)0x706f, (q15_t)0x706c, - (q15_t)0x7069, (q15_t)0x7066, (q15_t)0x7063, (q15_t)0x7060, (q15_t)0x705d, (q15_t)0x705a, (q15_t)0x7057, (q15_t)0x7054, - (q15_t)0x7051, (q15_t)0x704e, (q15_t)0x704b, (q15_t)0x7048, (q15_t)0x7045, (q15_t)0x7042, (q15_t)0x703f, (q15_t)0x703c, - (q15_t)0x7039, (q15_t)0x7036, (q15_t)0x7033, (q15_t)0x7030, (q15_t)0x702d, (q15_t)0x702a, (q15_t)0x7027, (q15_t)0x7024, - (q15_t)0x7021, (q15_t)0x701e, (q15_t)0x701b, (q15_t)0x7018, (q15_t)0x7015, (q15_t)0x7012, (q15_t)0x700f, (q15_t)0x700c, - (q15_t)0x7009, (q15_t)0x7006, (q15_t)0x7003, (q15_t)0x7000, (q15_t)0x6ffd, (q15_t)0x6ffa, (q15_t)0x6ff7, (q15_t)0x6ff3, - (q15_t)0x6ff0, (q15_t)0x6fed, (q15_t)0x6fea, (q15_t)0x6fe7, (q15_t)0x6fe4, (q15_t)0x6fe1, (q15_t)0x6fde, (q15_t)0x6fdb, - (q15_t)0x6fd8, (q15_t)0x6fd5, (q15_t)0x6fd2, (q15_t)0x6fcf, (q15_t)0x6fcc, (q15_t)0x6fc9, (q15_t)0x6fc6, (q15_t)0x6fc3, - (q15_t)0x6fc0, (q15_t)0x6fbc, (q15_t)0x6fb9, (q15_t)0x6fb6, (q15_t)0x6fb3, (q15_t)0x6fb0, (q15_t)0x6fad, (q15_t)0x6faa, - (q15_t)0x6fa7, (q15_t)0x6fa4, (q15_t)0x6fa1, (q15_t)0x6f9e, (q15_t)0x6f9b, (q15_t)0x6f98, (q15_t)0x6f95, (q15_t)0x6f91, - (q15_t)0x6f8e, (q15_t)0x6f8b, (q15_t)0x6f88, (q15_t)0x6f85, (q15_t)0x6f82, (q15_t)0x6f7f, (q15_t)0x6f7c, (q15_t)0x6f79, - (q15_t)0x6f76, (q15_t)0x6f73, (q15_t)0x6f70, (q15_t)0x6f6c, (q15_t)0x6f69, (q15_t)0x6f66, (q15_t)0x6f63, (q15_t)0x6f60, - (q15_t)0x6f5d, (q15_t)0x6f5a, (q15_t)0x6f57, (q15_t)0x6f54, (q15_t)0x6f51, (q15_t)0x6f4d, (q15_t)0x6f4a, (q15_t)0x6f47, - (q15_t)0x6f44, (q15_t)0x6f41, (q15_t)0x6f3e, (q15_t)0x6f3b, (q15_t)0x6f38, (q15_t)0x6f35, (q15_t)0x6f31, (q15_t)0x6f2e, - (q15_t)0x6f2b, (q15_t)0x6f28, (q15_t)0x6f25, (q15_t)0x6f22, (q15_t)0x6f1f, (q15_t)0x6f1c, (q15_t)0x6f19, (q15_t)0x6f15, - (q15_t)0x6f12, (q15_t)0x6f0f, (q15_t)0x6f0c, (q15_t)0x6f09, (q15_t)0x6f06, (q15_t)0x6f03, (q15_t)0x6f00, (q15_t)0x6efc, - (q15_t)0x6ef9, (q15_t)0x6ef6, (q15_t)0x6ef3, (q15_t)0x6ef0, (q15_t)0x6eed, (q15_t)0x6eea, (q15_t)0x6ee7, (q15_t)0x6ee3, - (q15_t)0x6ee0, (q15_t)0x6edd, (q15_t)0x6eda, (q15_t)0x6ed7, (q15_t)0x6ed4, (q15_t)0x6ed1, (q15_t)0x6ecd, (q15_t)0x6eca, - (q15_t)0x6ec7, (q15_t)0x6ec4, (q15_t)0x6ec1, (q15_t)0x6ebe, (q15_t)0x6eba, (q15_t)0x6eb7, (q15_t)0x6eb4, (q15_t)0x6eb1, - (q15_t)0x6eae, (q15_t)0x6eab, (q15_t)0x6ea8, (q15_t)0x6ea4, (q15_t)0x6ea1, (q15_t)0x6e9e, (q15_t)0x6e9b, (q15_t)0x6e98, - (q15_t)0x6e95, (q15_t)0x6e91, (q15_t)0x6e8e, (q15_t)0x6e8b, (q15_t)0x6e88, (q15_t)0x6e85, (q15_t)0x6e82, (q15_t)0x6e7e, - (q15_t)0x6e7b, (q15_t)0x6e78, (q15_t)0x6e75, (q15_t)0x6e72, (q15_t)0x6e6f, (q15_t)0x6e6b, (q15_t)0x6e68, (q15_t)0x6e65, - (q15_t)0x6e62, (q15_t)0x6e5f, (q15_t)0x6e5b, (q15_t)0x6e58, (q15_t)0x6e55, (q15_t)0x6e52, (q15_t)0x6e4f, (q15_t)0x6e4c, - (q15_t)0x6e48, (q15_t)0x6e45, (q15_t)0x6e42, (q15_t)0x6e3f, (q15_t)0x6e3c, (q15_t)0x6e38, (q15_t)0x6e35, (q15_t)0x6e32, - (q15_t)0x6e2f, (q15_t)0x6e2c, (q15_t)0x6e28, (q15_t)0x6e25, (q15_t)0x6e22, (q15_t)0x6e1f, (q15_t)0x6e1c, (q15_t)0x6e18, - (q15_t)0x6e15, (q15_t)0x6e12, (q15_t)0x6e0f, (q15_t)0x6e0c, (q15_t)0x6e08, (q15_t)0x6e05, (q15_t)0x6e02, (q15_t)0x6dff, - (q15_t)0x6dfb, (q15_t)0x6df8, (q15_t)0x6df5, (q15_t)0x6df2, (q15_t)0x6def, (q15_t)0x6deb, (q15_t)0x6de8, (q15_t)0x6de5, - (q15_t)0x6de2, (q15_t)0x6ddf, (q15_t)0x6ddb, (q15_t)0x6dd8, (q15_t)0x6dd5, (q15_t)0x6dd2, (q15_t)0x6dce, (q15_t)0x6dcb, - (q15_t)0x6dc8, (q15_t)0x6dc5, (q15_t)0x6dc1, (q15_t)0x6dbe, (q15_t)0x6dbb, (q15_t)0x6db8, (q15_t)0x6db5, (q15_t)0x6db1, - (q15_t)0x6dae, (q15_t)0x6dab, (q15_t)0x6da8, (q15_t)0x6da4, (q15_t)0x6da1, (q15_t)0x6d9e, (q15_t)0x6d9b, (q15_t)0x6d97, - (q15_t)0x6d94, (q15_t)0x6d91, (q15_t)0x6d8e, (q15_t)0x6d8a, (q15_t)0x6d87, (q15_t)0x6d84, (q15_t)0x6d81, (q15_t)0x6d7d, - (q15_t)0x6d7a, (q15_t)0x6d77, (q15_t)0x6d74, (q15_t)0x6d70, (q15_t)0x6d6d, (q15_t)0x6d6a, (q15_t)0x6d67, (q15_t)0x6d63, - (q15_t)0x6d60, (q15_t)0x6d5d, (q15_t)0x6d59, (q15_t)0x6d56, (q15_t)0x6d53, (q15_t)0x6d50, (q15_t)0x6d4c, (q15_t)0x6d49, - (q15_t)0x6d46, (q15_t)0x6d43, (q15_t)0x6d3f, (q15_t)0x6d3c, (q15_t)0x6d39, (q15_t)0x6d36, (q15_t)0x6d32, (q15_t)0x6d2f, - (q15_t)0x6d2c, (q15_t)0x6d28, (q15_t)0x6d25, (q15_t)0x6d22, (q15_t)0x6d1f, (q15_t)0x6d1b, (q15_t)0x6d18, (q15_t)0x6d15, - (q15_t)0x6d11, (q15_t)0x6d0e, (q15_t)0x6d0b, (q15_t)0x6d08, (q15_t)0x6d04, (q15_t)0x6d01, (q15_t)0x6cfe, (q15_t)0x6cfa, - (q15_t)0x6cf7, (q15_t)0x6cf4, (q15_t)0x6cf0, (q15_t)0x6ced, (q15_t)0x6cea, (q15_t)0x6ce7, (q15_t)0x6ce3, (q15_t)0x6ce0, - (q15_t)0x6cdd, (q15_t)0x6cd9, (q15_t)0x6cd6, (q15_t)0x6cd3, (q15_t)0x6ccf, (q15_t)0x6ccc, (q15_t)0x6cc9, (q15_t)0x6cc5, - (q15_t)0x6cc2, (q15_t)0x6cbf, (q15_t)0x6cbc, (q15_t)0x6cb8, (q15_t)0x6cb5, (q15_t)0x6cb2, (q15_t)0x6cae, (q15_t)0x6cab, - (q15_t)0x6ca8, (q15_t)0x6ca4, (q15_t)0x6ca1, (q15_t)0x6c9e, (q15_t)0x6c9a, (q15_t)0x6c97, (q15_t)0x6c94, (q15_t)0x6c90, - (q15_t)0x6c8d, (q15_t)0x6c8a, (q15_t)0x6c86, (q15_t)0x6c83, (q15_t)0x6c80, (q15_t)0x6c7c, (q15_t)0x6c79, (q15_t)0x6c76, - (q15_t)0x6c72, (q15_t)0x6c6f, (q15_t)0x6c6c, (q15_t)0x6c68, (q15_t)0x6c65, (q15_t)0x6c62, (q15_t)0x6c5e, (q15_t)0x6c5b, - (q15_t)0x6c58, (q15_t)0x6c54, (q15_t)0x6c51, (q15_t)0x6c4e, (q15_t)0x6c4a, (q15_t)0x6c47, (q15_t)0x6c44, (q15_t)0x6c40, - (q15_t)0x6c3d, (q15_t)0x6c39, (q15_t)0x6c36, (q15_t)0x6c33, (q15_t)0x6c2f, (q15_t)0x6c2c, (q15_t)0x6c29, (q15_t)0x6c25, - (q15_t)0x6c22, (q15_t)0x6c1f, (q15_t)0x6c1b, (q15_t)0x6c18, (q15_t)0x6c15, (q15_t)0x6c11, (q15_t)0x6c0e, (q15_t)0x6c0a, - (q15_t)0x6c07, (q15_t)0x6c04, (q15_t)0x6c00, (q15_t)0x6bfd, (q15_t)0x6bfa, (q15_t)0x6bf6, (q15_t)0x6bf3, (q15_t)0x6bef, - (q15_t)0x6bec, (q15_t)0x6be9, (q15_t)0x6be5, (q15_t)0x6be2, (q15_t)0x6bdf, (q15_t)0x6bdb, (q15_t)0x6bd8, (q15_t)0x6bd4, - (q15_t)0x6bd1, (q15_t)0x6bce, (q15_t)0x6bca, (q15_t)0x6bc7, (q15_t)0x6bc3, (q15_t)0x6bc0, (q15_t)0x6bbd, (q15_t)0x6bb9, - (q15_t)0x6bb6, (q15_t)0x6bb2, (q15_t)0x6baf, (q15_t)0x6bac, (q15_t)0x6ba8, (q15_t)0x6ba5, (q15_t)0x6ba1, (q15_t)0x6b9e, - (q15_t)0x6b9b, (q15_t)0x6b97, (q15_t)0x6b94, (q15_t)0x6b90, (q15_t)0x6b8d, (q15_t)0x6b8a, (q15_t)0x6b86, (q15_t)0x6b83, - (q15_t)0x6b7f, (q15_t)0x6b7c, (q15_t)0x6b79, (q15_t)0x6b75, (q15_t)0x6b72, (q15_t)0x6b6e, (q15_t)0x6b6b, (q15_t)0x6b68, - (q15_t)0x6b64, (q15_t)0x6b61, (q15_t)0x6b5d, (q15_t)0x6b5a, (q15_t)0x6b56, (q15_t)0x6b53, (q15_t)0x6b50, (q15_t)0x6b4c, - (q15_t)0x6b49, (q15_t)0x6b45, (q15_t)0x6b42, (q15_t)0x6b3e, (q15_t)0x6b3b, (q15_t)0x6b38, (q15_t)0x6b34, (q15_t)0x6b31, - (q15_t)0x6b2d, (q15_t)0x6b2a, (q15_t)0x6b26, (q15_t)0x6b23, (q15_t)0x6b20, (q15_t)0x6b1c, (q15_t)0x6b19, (q15_t)0x6b15, - (q15_t)0x6b12, (q15_t)0x6b0e, (q15_t)0x6b0b, (q15_t)0x6b07, (q15_t)0x6b04, (q15_t)0x6b01, (q15_t)0x6afd, (q15_t)0x6afa, - (q15_t)0x6af6, (q15_t)0x6af3, (q15_t)0x6aef, (q15_t)0x6aec, (q15_t)0x6ae8, (q15_t)0x6ae5, (q15_t)0x6ae1, (q15_t)0x6ade, - (q15_t)0x6adb, (q15_t)0x6ad7, (q15_t)0x6ad4, (q15_t)0x6ad0, (q15_t)0x6acd, (q15_t)0x6ac9, (q15_t)0x6ac6, (q15_t)0x6ac2, - (q15_t)0x6abf, (q15_t)0x6abb, (q15_t)0x6ab8, (q15_t)0x6ab4, (q15_t)0x6ab1, (q15_t)0x6aae, (q15_t)0x6aaa, (q15_t)0x6aa7, - (q15_t)0x6aa3, (q15_t)0x6aa0, (q15_t)0x6a9c, (q15_t)0x6a99, (q15_t)0x6a95, (q15_t)0x6a92, (q15_t)0x6a8e, (q15_t)0x6a8b, - (q15_t)0x6a87, (q15_t)0x6a84, (q15_t)0x6a80, (q15_t)0x6a7d, (q15_t)0x6a79, (q15_t)0x6a76, (q15_t)0x6a72, (q15_t)0x6a6f, - (q15_t)0x6a6b, (q15_t)0x6a68, (q15_t)0x6a64, (q15_t)0x6a61, (q15_t)0x6a5d, (q15_t)0x6a5a, (q15_t)0x6a56, (q15_t)0x6a53, - (q15_t)0x6a4f, (q15_t)0x6a4c, (q15_t)0x6a48, (q15_t)0x6a45, (q15_t)0x6a41, (q15_t)0x6a3e, (q15_t)0x6a3a, (q15_t)0x6a37, - (q15_t)0x6a33, (q15_t)0x6a30, (q15_t)0x6a2c, (q15_t)0x6a29, (q15_t)0x6a25, (q15_t)0x6a22, (q15_t)0x6a1e, (q15_t)0x6a1b, - (q15_t)0x6a17, (q15_t)0x6a14, (q15_t)0x6a10, (q15_t)0x6a0d, (q15_t)0x6a09, (q15_t)0x6a06, (q15_t)0x6a02, (q15_t)0x69ff, - (q15_t)0x69fb, (q15_t)0x69f8, (q15_t)0x69f4, (q15_t)0x69f1, (q15_t)0x69ed, (q15_t)0x69e9, (q15_t)0x69e6, (q15_t)0x69e2, - (q15_t)0x69df, (q15_t)0x69db, (q15_t)0x69d8, (q15_t)0x69d4, (q15_t)0x69d1, (q15_t)0x69cd, (q15_t)0x69ca, (q15_t)0x69c6, - (q15_t)0x69c3, (q15_t)0x69bf, (q15_t)0x69bc, (q15_t)0x69b8, (q15_t)0x69b4, (q15_t)0x69b1, (q15_t)0x69ad, (q15_t)0x69aa, - (q15_t)0x69a6, (q15_t)0x69a3, (q15_t)0x699f, (q15_t)0x699c, (q15_t)0x6998, (q15_t)0x6995, (q15_t)0x6991, (q15_t)0x698d, - (q15_t)0x698a, (q15_t)0x6986, (q15_t)0x6983, (q15_t)0x697f, (q15_t)0x697c, (q15_t)0x6978, (q15_t)0x6975, (q15_t)0x6971, - (q15_t)0x696d, (q15_t)0x696a, (q15_t)0x6966, (q15_t)0x6963, (q15_t)0x695f, (q15_t)0x695c, (q15_t)0x6958, (q15_t)0x6954, - (q15_t)0x6951, (q15_t)0x694d, (q15_t)0x694a, (q15_t)0x6946, (q15_t)0x6943, (q15_t)0x693f, (q15_t)0x693b, (q15_t)0x6938, - (q15_t)0x6934, (q15_t)0x6931, (q15_t)0x692d, (q15_t)0x692a, (q15_t)0x6926, (q15_t)0x6922, (q15_t)0x691f, (q15_t)0x691b, - (q15_t)0x6918, (q15_t)0x6914, (q15_t)0x6910, (q15_t)0x690d, (q15_t)0x6909, (q15_t)0x6906, (q15_t)0x6902, (q15_t)0x68fe, - (q15_t)0x68fb, (q15_t)0x68f7, (q15_t)0x68f4, (q15_t)0x68f0, (q15_t)0x68ec, (q15_t)0x68e9, (q15_t)0x68e5, (q15_t)0x68e2, - (q15_t)0x68de, (q15_t)0x68da, (q15_t)0x68d7, (q15_t)0x68d3, (q15_t)0x68d0, (q15_t)0x68cc, (q15_t)0x68c8, (q15_t)0x68c5, - (q15_t)0x68c1, (q15_t)0x68be, (q15_t)0x68ba, (q15_t)0x68b6, (q15_t)0x68b3, (q15_t)0x68af, (q15_t)0x68ac, (q15_t)0x68a8, - (q15_t)0x68a4, (q15_t)0x68a1, (q15_t)0x689d, (q15_t)0x6899, (q15_t)0x6896, (q15_t)0x6892, (q15_t)0x688f, (q15_t)0x688b, - (q15_t)0x6887, (q15_t)0x6884, (q15_t)0x6880, (q15_t)0x687c, (q15_t)0x6879, (q15_t)0x6875, (q15_t)0x6872, (q15_t)0x686e, - (q15_t)0x686a, (q15_t)0x6867, (q15_t)0x6863, (q15_t)0x685f, (q15_t)0x685c, (q15_t)0x6858, (q15_t)0x6854, (q15_t)0x6851, - (q15_t)0x684d, (q15_t)0x684a, (q15_t)0x6846, (q15_t)0x6842, (q15_t)0x683f, (q15_t)0x683b, (q15_t)0x6837, (q15_t)0x6834, - (q15_t)0x6830, (q15_t)0x682c, (q15_t)0x6829, (q15_t)0x6825, (q15_t)0x6821, (q15_t)0x681e, (q15_t)0x681a, (q15_t)0x6816, - (q15_t)0x6813, (q15_t)0x680f, (q15_t)0x680b, (q15_t)0x6808, (q15_t)0x6804, (q15_t)0x6800, (q15_t)0x67fd, (q15_t)0x67f9, - (q15_t)0x67f5, (q15_t)0x67f2, (q15_t)0x67ee, (q15_t)0x67ea, (q15_t)0x67e7, (q15_t)0x67e3, (q15_t)0x67df, (q15_t)0x67dc, - (q15_t)0x67d8, (q15_t)0x67d4, (q15_t)0x67d1, (q15_t)0x67cd, (q15_t)0x67c9, (q15_t)0x67c6, (q15_t)0x67c2, (q15_t)0x67be, - (q15_t)0x67bb, (q15_t)0x67b7, (q15_t)0x67b3, (q15_t)0x67b0, (q15_t)0x67ac, (q15_t)0x67a8, (q15_t)0x67a5, (q15_t)0x67a1, - (q15_t)0x679d, (q15_t)0x679a, (q15_t)0x6796, (q15_t)0x6792, (q15_t)0x678e, (q15_t)0x678b, (q15_t)0x6787, (q15_t)0x6783, - (q15_t)0x6780, (q15_t)0x677c, (q15_t)0x6778, (q15_t)0x6775, (q15_t)0x6771, (q15_t)0x676d, (q15_t)0x6769, (q15_t)0x6766, - (q15_t)0x6762, (q15_t)0x675e, (q15_t)0x675b, (q15_t)0x6757, (q15_t)0x6753, (q15_t)0x6750, (q15_t)0x674c, (q15_t)0x6748, - (q15_t)0x6744, (q15_t)0x6741, (q15_t)0x673d, (q15_t)0x6739, (q15_t)0x6736, (q15_t)0x6732, (q15_t)0x672e, (q15_t)0x672a, - (q15_t)0x6727, (q15_t)0x6723, (q15_t)0x671f, (q15_t)0x671c, (q15_t)0x6718, (q15_t)0x6714, (q15_t)0x6710, (q15_t)0x670d, - (q15_t)0x6709, (q15_t)0x6705, (q15_t)0x6701, (q15_t)0x66fe, (q15_t)0x66fa, (q15_t)0x66f6, (q15_t)0x66f3, (q15_t)0x66ef, - (q15_t)0x66eb, (q15_t)0x66e7, (q15_t)0x66e4, (q15_t)0x66e0, (q15_t)0x66dc, (q15_t)0x66d8, (q15_t)0x66d5, (q15_t)0x66d1, - (q15_t)0x66cd, (q15_t)0x66c9, (q15_t)0x66c6, (q15_t)0x66c2, (q15_t)0x66be, (q15_t)0x66ba, (q15_t)0x66b7, (q15_t)0x66b3, - (q15_t)0x66af, (q15_t)0x66ab, (q15_t)0x66a8, (q15_t)0x66a4, (q15_t)0x66a0, (q15_t)0x669c, (q15_t)0x6699, (q15_t)0x6695, - (q15_t)0x6691, (q15_t)0x668d, (q15_t)0x668a, (q15_t)0x6686, (q15_t)0x6682, (q15_t)0x667e, (q15_t)0x667b, (q15_t)0x6677, - (q15_t)0x6673, (q15_t)0x666f, (q15_t)0x666b, (q15_t)0x6668, (q15_t)0x6664, (q15_t)0x6660, (q15_t)0x665c, (q15_t)0x6659, - (q15_t)0x6655, (q15_t)0x6651, (q15_t)0x664d, (q15_t)0x664a, (q15_t)0x6646, (q15_t)0x6642, (q15_t)0x663e, (q15_t)0x663a, - (q15_t)0x6637, (q15_t)0x6633, (q15_t)0x662f, (q15_t)0x662b, (q15_t)0x6627, (q15_t)0x6624, (q15_t)0x6620, (q15_t)0x661c, - (q15_t)0x6618, (q15_t)0x6615, (q15_t)0x6611, (q15_t)0x660d, (q15_t)0x6609, (q15_t)0x6605, (q15_t)0x6602, (q15_t)0x65fe, - (q15_t)0x65fa, (q15_t)0x65f6, (q15_t)0x65f2, (q15_t)0x65ef, (q15_t)0x65eb, (q15_t)0x65e7, (q15_t)0x65e3, (q15_t)0x65df, - (q15_t)0x65dc, (q15_t)0x65d8, (q15_t)0x65d4, (q15_t)0x65d0, (q15_t)0x65cc, (q15_t)0x65c9, (q15_t)0x65c5, (q15_t)0x65c1, - (q15_t)0x65bd, (q15_t)0x65b9, (q15_t)0x65b5, (q15_t)0x65b2, (q15_t)0x65ae, (q15_t)0x65aa, (q15_t)0x65a6, (q15_t)0x65a2, - (q15_t)0x659f, (q15_t)0x659b, (q15_t)0x6597, (q15_t)0x6593, (q15_t)0x658f, (q15_t)0x658b, (q15_t)0x6588, (q15_t)0x6584, - (q15_t)0x6580, (q15_t)0x657c, (q15_t)0x6578, (q15_t)0x6574, (q15_t)0x6571, (q15_t)0x656d, (q15_t)0x6569, (q15_t)0x6565, - (q15_t)0x6561, (q15_t)0x655d, (q15_t)0x655a, (q15_t)0x6556, (q15_t)0x6552, (q15_t)0x654e, (q15_t)0x654a, (q15_t)0x6546, - (q15_t)0x6543, (q15_t)0x653f, (q15_t)0x653b, (q15_t)0x6537, (q15_t)0x6533, (q15_t)0x652f, (q15_t)0x652c, (q15_t)0x6528, - (q15_t)0x6524, (q15_t)0x6520, (q15_t)0x651c, (q15_t)0x6518, (q15_t)0x6514, (q15_t)0x6511, (q15_t)0x650d, (q15_t)0x6509, - (q15_t)0x6505, (q15_t)0x6501, (q15_t)0x64fd, (q15_t)0x64f9, (q15_t)0x64f6, (q15_t)0x64f2, (q15_t)0x64ee, (q15_t)0x64ea, - (q15_t)0x64e6, (q15_t)0x64e2, (q15_t)0x64de, (q15_t)0x64db, (q15_t)0x64d7, (q15_t)0x64d3, (q15_t)0x64cf, (q15_t)0x64cb, - (q15_t)0x64c7, (q15_t)0x64c3, (q15_t)0x64bf, (q15_t)0x64bc, (q15_t)0x64b8, (q15_t)0x64b4, (q15_t)0x64b0, (q15_t)0x64ac, - (q15_t)0x64a8, (q15_t)0x64a4, (q15_t)0x64a0, (q15_t)0x649c, (q15_t)0x6499, (q15_t)0x6495, (q15_t)0x6491, (q15_t)0x648d, - (q15_t)0x6489, (q15_t)0x6485, (q15_t)0x6481, (q15_t)0x647d, (q15_t)0x6479, (q15_t)0x6476, (q15_t)0x6472, (q15_t)0x646e, - (q15_t)0x646a, (q15_t)0x6466, (q15_t)0x6462, (q15_t)0x645e, (q15_t)0x645a, (q15_t)0x6456, (q15_t)0x6453, (q15_t)0x644f, - (q15_t)0x644b, (q15_t)0x6447, (q15_t)0x6443, (q15_t)0x643f, (q15_t)0x643b, (q15_t)0x6437, (q15_t)0x6433, (q15_t)0x642f, - (q15_t)0x642b, (q15_t)0x6428, (q15_t)0x6424, (q15_t)0x6420, (q15_t)0x641c, (q15_t)0x6418, (q15_t)0x6414, (q15_t)0x6410, - (q15_t)0x640c, (q15_t)0x6408, (q15_t)0x6404, (q15_t)0x6400, (q15_t)0x63fc, (q15_t)0x63f9, (q15_t)0x63f5, (q15_t)0x63f1, - (q15_t)0x63ed, (q15_t)0x63e9, (q15_t)0x63e5, (q15_t)0x63e1, (q15_t)0x63dd, (q15_t)0x63d9, (q15_t)0x63d5, (q15_t)0x63d1, - (q15_t)0x63cd, (q15_t)0x63c9, (q15_t)0x63c5, (q15_t)0x63c1, (q15_t)0x63be, (q15_t)0x63ba, (q15_t)0x63b6, (q15_t)0x63b2, - (q15_t)0x63ae, (q15_t)0x63aa, (q15_t)0x63a6, (q15_t)0x63a2, (q15_t)0x639e, (q15_t)0x639a, (q15_t)0x6396, (q15_t)0x6392, - (q15_t)0x638e, (q15_t)0x638a, (q15_t)0x6386, (q15_t)0x6382, (q15_t)0x637e, (q15_t)0x637a, (q15_t)0x6377, (q15_t)0x6373, - (q15_t)0x636f, (q15_t)0x636b, (q15_t)0x6367, (q15_t)0x6363, (q15_t)0x635f, (q15_t)0x635b, (q15_t)0x6357, (q15_t)0x6353, - (q15_t)0x634f, (q15_t)0x634b, (q15_t)0x6347, (q15_t)0x6343, (q15_t)0x633f, (q15_t)0x633b, (q15_t)0x6337, (q15_t)0x6333, - (q15_t)0x632f, (q15_t)0x632b, (q15_t)0x6327, (q15_t)0x6323, (q15_t)0x631f, (q15_t)0x631b, (q15_t)0x6317, (q15_t)0x6313, - (q15_t)0x630f, (q15_t)0x630b, (q15_t)0x6307, (q15_t)0x6303, (q15_t)0x62ff, (q15_t)0x62fb, (q15_t)0x62f7, (q15_t)0x62f3, - (q15_t)0x62f0, (q15_t)0x62ec, (q15_t)0x62e8, (q15_t)0x62e4, (q15_t)0x62e0, (q15_t)0x62dc, (q15_t)0x62d8, (q15_t)0x62d4, - (q15_t)0x62d0, (q15_t)0x62cc, (q15_t)0x62c8, (q15_t)0x62c4, (q15_t)0x62c0, (q15_t)0x62bc, (q15_t)0x62b8, (q15_t)0x62b4, - (q15_t)0x62b0, (q15_t)0x62ac, (q15_t)0x62a8, (q15_t)0x62a4, (q15_t)0x62a0, (q15_t)0x629c, (q15_t)0x6298, (q15_t)0x6294, - (q15_t)0x6290, (q15_t)0x628c, (q15_t)0x6288, (q15_t)0x6284, (q15_t)0x6280, (q15_t)0x627c, (q15_t)0x6278, (q15_t)0x6273, - (q15_t)0x626f, (q15_t)0x626b, (q15_t)0x6267, (q15_t)0x6263, (q15_t)0x625f, (q15_t)0x625b, (q15_t)0x6257, (q15_t)0x6253, - (q15_t)0x624f, (q15_t)0x624b, (q15_t)0x6247, (q15_t)0x6243, (q15_t)0x623f, (q15_t)0x623b, (q15_t)0x6237, (q15_t)0x6233, - (q15_t)0x622f, (q15_t)0x622b, (q15_t)0x6227, (q15_t)0x6223, (q15_t)0x621f, (q15_t)0x621b, (q15_t)0x6217, (q15_t)0x6213, - (q15_t)0x620f, (q15_t)0x620b, (q15_t)0x6207, (q15_t)0x6203, (q15_t)0x61ff, (q15_t)0x61fb, (q15_t)0x61f7, (q15_t)0x61f3, - (q15_t)0x61ee, (q15_t)0x61ea, (q15_t)0x61e6, (q15_t)0x61e2, (q15_t)0x61de, (q15_t)0x61da, (q15_t)0x61d6, (q15_t)0x61d2, - (q15_t)0x61ce, (q15_t)0x61ca, (q15_t)0x61c6, (q15_t)0x61c2, (q15_t)0x61be, (q15_t)0x61ba, (q15_t)0x61b6, (q15_t)0x61b2, - (q15_t)0x61ae, (q15_t)0x61aa, (q15_t)0x61a6, (q15_t)0x61a1, (q15_t)0x619d, (q15_t)0x6199, (q15_t)0x6195, (q15_t)0x6191, - (q15_t)0x618d, (q15_t)0x6189, (q15_t)0x6185, (q15_t)0x6181, (q15_t)0x617d, (q15_t)0x6179, (q15_t)0x6175, (q15_t)0x6171, - (q15_t)0x616d, (q15_t)0x6168, (q15_t)0x6164, (q15_t)0x6160, (q15_t)0x615c, (q15_t)0x6158, (q15_t)0x6154, (q15_t)0x6150, - (q15_t)0x614c, (q15_t)0x6148, (q15_t)0x6144, (q15_t)0x6140, (q15_t)0x613c, (q15_t)0x6137, (q15_t)0x6133, (q15_t)0x612f, - (q15_t)0x612b, (q15_t)0x6127, (q15_t)0x6123, (q15_t)0x611f, (q15_t)0x611b, (q15_t)0x6117, (q15_t)0x6113, (q15_t)0x610f, - (q15_t)0x610a, (q15_t)0x6106, (q15_t)0x6102, (q15_t)0x60fe, (q15_t)0x60fa, (q15_t)0x60f6, (q15_t)0x60f2, (q15_t)0x60ee, - (q15_t)0x60ea, (q15_t)0x60e6, (q15_t)0x60e1, (q15_t)0x60dd, (q15_t)0x60d9, (q15_t)0x60d5, (q15_t)0x60d1, (q15_t)0x60cd, - (q15_t)0x60c9, (q15_t)0x60c5, (q15_t)0x60c1, (q15_t)0x60bc, (q15_t)0x60b8, (q15_t)0x60b4, (q15_t)0x60b0, (q15_t)0x60ac, - (q15_t)0x60a8, (q15_t)0x60a4, (q15_t)0x60a0, (q15_t)0x609c, (q15_t)0x6097, (q15_t)0x6093, (q15_t)0x608f, (q15_t)0x608b, - (q15_t)0x6087, (q15_t)0x6083, (q15_t)0x607f, (q15_t)0x607b, (q15_t)0x6076, (q15_t)0x6072, (q15_t)0x606e, (q15_t)0x606a, - (q15_t)0x6066, (q15_t)0x6062, (q15_t)0x605e, (q15_t)0x6059, (q15_t)0x6055, (q15_t)0x6051, (q15_t)0x604d, (q15_t)0x6049, - (q15_t)0x6045, (q15_t)0x6041, (q15_t)0x603c, (q15_t)0x6038, (q15_t)0x6034, (q15_t)0x6030, (q15_t)0x602c, (q15_t)0x6028, - (q15_t)0x6024, (q15_t)0x601f, (q15_t)0x601b, (q15_t)0x6017, (q15_t)0x6013, (q15_t)0x600f, (q15_t)0x600b, (q15_t)0x6007, - (q15_t)0x6002, (q15_t)0x5ffe, (q15_t)0x5ffa, (q15_t)0x5ff6, (q15_t)0x5ff2, (q15_t)0x5fee, (q15_t)0x5fe9, (q15_t)0x5fe5, - (q15_t)0x5fe1, (q15_t)0x5fdd, (q15_t)0x5fd9, (q15_t)0x5fd5, (q15_t)0x5fd0, (q15_t)0x5fcc, (q15_t)0x5fc8, (q15_t)0x5fc4, - (q15_t)0x5fc0, (q15_t)0x5fbc, (q15_t)0x5fb7, (q15_t)0x5fb3, (q15_t)0x5faf, (q15_t)0x5fab, (q15_t)0x5fa7, (q15_t)0x5fa3, - (q15_t)0x5f9e, (q15_t)0x5f9a, (q15_t)0x5f96, (q15_t)0x5f92, (q15_t)0x5f8e, (q15_t)0x5f8a, (q15_t)0x5f85, (q15_t)0x5f81, - (q15_t)0x5f7d, (q15_t)0x5f79, (q15_t)0x5f75, (q15_t)0x5f70, (q15_t)0x5f6c, (q15_t)0x5f68, (q15_t)0x5f64, (q15_t)0x5f60, - (q15_t)0x5f5b, (q15_t)0x5f57, (q15_t)0x5f53, (q15_t)0x5f4f, (q15_t)0x5f4b, (q15_t)0x5f46, (q15_t)0x5f42, (q15_t)0x5f3e, - (q15_t)0x5f3a, (q15_t)0x5f36, (q15_t)0x5f31, (q15_t)0x5f2d, (q15_t)0x5f29, (q15_t)0x5f25, (q15_t)0x5f21, (q15_t)0x5f1c, - (q15_t)0x5f18, (q15_t)0x5f14, (q15_t)0x5f10, (q15_t)0x5f0c, (q15_t)0x5f07, (q15_t)0x5f03, (q15_t)0x5eff, (q15_t)0x5efb, - (q15_t)0x5ef7, (q15_t)0x5ef2, (q15_t)0x5eee, (q15_t)0x5eea, (q15_t)0x5ee6, (q15_t)0x5ee2, (q15_t)0x5edd, (q15_t)0x5ed9, - (q15_t)0x5ed5, (q15_t)0x5ed1, (q15_t)0x5ecc, (q15_t)0x5ec8, (q15_t)0x5ec4, (q15_t)0x5ec0, (q15_t)0x5ebc, (q15_t)0x5eb7, - (q15_t)0x5eb3, (q15_t)0x5eaf, (q15_t)0x5eab, (q15_t)0x5ea6, (q15_t)0x5ea2, (q15_t)0x5e9e, (q15_t)0x5e9a, (q15_t)0x5e95, - (q15_t)0x5e91, (q15_t)0x5e8d, (q15_t)0x5e89, (q15_t)0x5e85, (q15_t)0x5e80, (q15_t)0x5e7c, (q15_t)0x5e78, (q15_t)0x5e74, - (q15_t)0x5e6f, (q15_t)0x5e6b, (q15_t)0x5e67, (q15_t)0x5e63, (q15_t)0x5e5e, (q15_t)0x5e5a, (q15_t)0x5e56, (q15_t)0x5e52, - (q15_t)0x5e4d, (q15_t)0x5e49, (q15_t)0x5e45, (q15_t)0x5e41, (q15_t)0x5e3c, (q15_t)0x5e38, (q15_t)0x5e34, (q15_t)0x5e30, - (q15_t)0x5e2b, (q15_t)0x5e27, (q15_t)0x5e23, (q15_t)0x5e1f, (q15_t)0x5e1a, (q15_t)0x5e16, (q15_t)0x5e12, (q15_t)0x5e0e, - (q15_t)0x5e09, (q15_t)0x5e05, (q15_t)0x5e01, (q15_t)0x5dfd, (q15_t)0x5df8, (q15_t)0x5df4, (q15_t)0x5df0, (q15_t)0x5deb, - (q15_t)0x5de7, (q15_t)0x5de3, (q15_t)0x5ddf, (q15_t)0x5dda, (q15_t)0x5dd6, (q15_t)0x5dd2, (q15_t)0x5dce, (q15_t)0x5dc9, - (q15_t)0x5dc5, (q15_t)0x5dc1, (q15_t)0x5dbc, (q15_t)0x5db8, (q15_t)0x5db4, (q15_t)0x5db0, (q15_t)0x5dab, (q15_t)0x5da7, - (q15_t)0x5da3, (q15_t)0x5d9e, (q15_t)0x5d9a, (q15_t)0x5d96, (q15_t)0x5d92, (q15_t)0x5d8d, (q15_t)0x5d89, (q15_t)0x5d85, - (q15_t)0x5d80, (q15_t)0x5d7c, (q15_t)0x5d78, (q15_t)0x5d74, (q15_t)0x5d6f, (q15_t)0x5d6b, (q15_t)0x5d67, (q15_t)0x5d62, - (q15_t)0x5d5e, (q15_t)0x5d5a, (q15_t)0x5d55, (q15_t)0x5d51, (q15_t)0x5d4d, (q15_t)0x5d49, (q15_t)0x5d44, (q15_t)0x5d40, - (q15_t)0x5d3c, (q15_t)0x5d37, (q15_t)0x5d33, (q15_t)0x5d2f, (q15_t)0x5d2a, (q15_t)0x5d26, (q15_t)0x5d22, (q15_t)0x5d1e, - (q15_t)0x5d19, (q15_t)0x5d15, (q15_t)0x5d11, (q15_t)0x5d0c, (q15_t)0x5d08, (q15_t)0x5d04, (q15_t)0x5cff, (q15_t)0x5cfb, - (q15_t)0x5cf7, (q15_t)0x5cf2, (q15_t)0x5cee, (q15_t)0x5cea, (q15_t)0x5ce5, (q15_t)0x5ce1, (q15_t)0x5cdd, (q15_t)0x5cd8, - (q15_t)0x5cd4, (q15_t)0x5cd0, (q15_t)0x5ccb, (q15_t)0x5cc7, (q15_t)0x5cc3, (q15_t)0x5cbe, (q15_t)0x5cba, (q15_t)0x5cb6, - (q15_t)0x5cb1, (q15_t)0x5cad, (q15_t)0x5ca9, (q15_t)0x5ca4, (q15_t)0x5ca0, (q15_t)0x5c9c, (q15_t)0x5c97, (q15_t)0x5c93, - (q15_t)0x5c8f, (q15_t)0x5c8a, (q15_t)0x5c86, (q15_t)0x5c82, (q15_t)0x5c7d, (q15_t)0x5c79, (q15_t)0x5c75, (q15_t)0x5c70, - (q15_t)0x5c6c, (q15_t)0x5c68, (q15_t)0x5c63, (q15_t)0x5c5f, (q15_t)0x5c5b, (q15_t)0x5c56, (q15_t)0x5c52, (q15_t)0x5c4e, - (q15_t)0x5c49, (q15_t)0x5c45, (q15_t)0x5c41, (q15_t)0x5c3c, (q15_t)0x5c38, (q15_t)0x5c33, (q15_t)0x5c2f, (q15_t)0x5c2b, - (q15_t)0x5c26, (q15_t)0x5c22, (q15_t)0x5c1e, (q15_t)0x5c19, (q15_t)0x5c15, (q15_t)0x5c11, (q15_t)0x5c0c, (q15_t)0x5c08, - (q15_t)0x5c03, (q15_t)0x5bff, (q15_t)0x5bfb, (q15_t)0x5bf6, (q15_t)0x5bf2, (q15_t)0x5bee, (q15_t)0x5be9, (q15_t)0x5be5, - (q15_t)0x5be0, (q15_t)0x5bdc, (q15_t)0x5bd8, (q15_t)0x5bd3, (q15_t)0x5bcf, (q15_t)0x5bcb, (q15_t)0x5bc6, (q15_t)0x5bc2, - (q15_t)0x5bbd, (q15_t)0x5bb9, (q15_t)0x5bb5, (q15_t)0x5bb0, (q15_t)0x5bac, (q15_t)0x5ba8, (q15_t)0x5ba3, (q15_t)0x5b9f, - (q15_t)0x5b9a, (q15_t)0x5b96, (q15_t)0x5b92, (q15_t)0x5b8d, (q15_t)0x5b89, (q15_t)0x5b84, (q15_t)0x5b80, (q15_t)0x5b7c, - (q15_t)0x5b77, (q15_t)0x5b73, (q15_t)0x5b6e, (q15_t)0x5b6a, (q15_t)0x5b66, (q15_t)0x5b61, (q15_t)0x5b5d, (q15_t)0x5b58, - (q15_t)0x5b54, (q15_t)0x5b50, (q15_t)0x5b4b, (q15_t)0x5b47, (q15_t)0x5b42, (q15_t)0x5b3e, (q15_t)0x5b3a, (q15_t)0x5b35, - (q15_t)0x5b31, (q15_t)0x5b2c, (q15_t)0x5b28, (q15_t)0x5b24, (q15_t)0x5b1f, (q15_t)0x5b1b, (q15_t)0x5b16, (q15_t)0x5b12, - (q15_t)0x5b0e, (q15_t)0x5b09, (q15_t)0x5b05, (q15_t)0x5b00, (q15_t)0x5afc, (q15_t)0x5af7, (q15_t)0x5af3, (q15_t)0x5aef, - (q15_t)0x5aea, (q15_t)0x5ae6, (q15_t)0x5ae1, (q15_t)0x5add, (q15_t)0x5ad8, (q15_t)0x5ad4, (q15_t)0x5ad0, (q15_t)0x5acb, - (q15_t)0x5ac7, (q15_t)0x5ac2, (q15_t)0x5abe, (q15_t)0x5ab9, (q15_t)0x5ab5, (q15_t)0x5ab1, (q15_t)0x5aac, (q15_t)0x5aa8, - (q15_t)0x5aa3, (q15_t)0x5a9f, (q15_t)0x5a9a, (q15_t)0x5a96, (q15_t)0x5a92, (q15_t)0x5a8d, (q15_t)0x5a89, (q15_t)0x5a84, - (q15_t)0x5a80, (q15_t)0x5a7b, (q15_t)0x5a77, (q15_t)0x5a72, (q15_t)0x5a6e, (q15_t)0x5a6a, (q15_t)0x5a65, (q15_t)0x5a61, - (q15_t)0x5a5c, (q15_t)0x5a58, (q15_t)0x5a53, (q15_t)0x5a4f, (q15_t)0x5a4a, (q15_t)0x5a46, (q15_t)0x5a41, (q15_t)0x5a3d, - (q15_t)0x5a39, (q15_t)0x5a34, (q15_t)0x5a30, (q15_t)0x5a2b, (q15_t)0x5a27, (q15_t)0x5a22, (q15_t)0x5a1e, (q15_t)0x5a19, - (q15_t)0x5a15, (q15_t)0x5a10, (q15_t)0x5a0c, (q15_t)0x5a07, (q15_t)0x5a03, (q15_t)0x59ff, (q15_t)0x59fa, (q15_t)0x59f6, - (q15_t)0x59f1, (q15_t)0x59ed, (q15_t)0x59e8, (q15_t)0x59e4, (q15_t)0x59df, (q15_t)0x59db, (q15_t)0x59d6, (q15_t)0x59d2, - (q15_t)0x59cd, (q15_t)0x59c9, (q15_t)0x59c4, (q15_t)0x59c0, (q15_t)0x59bb, (q15_t)0x59b7, (q15_t)0x59b2, (q15_t)0x59ae, - (q15_t)0x59a9, (q15_t)0x59a5, (q15_t)0x59a1, (q15_t)0x599c, (q15_t)0x5998, (q15_t)0x5993, (q15_t)0x598f, (q15_t)0x598a, - (q15_t)0x5986, (q15_t)0x5981, (q15_t)0x597d, (q15_t)0x5978, (q15_t)0x5974, (q15_t)0x596f, (q15_t)0x596b, (q15_t)0x5966, - (q15_t)0x5962, (q15_t)0x595d, (q15_t)0x5959, (q15_t)0x5954, (q15_t)0x5950, (q15_t)0x594b, (q15_t)0x5947, (q15_t)0x5942, - (q15_t)0x593e, (q15_t)0x5939, (q15_t)0x5935, (q15_t)0x5930, (q15_t)0x592c, (q15_t)0x5927, (q15_t)0x5923, (q15_t)0x591e, - (q15_t)0x591a, (q15_t)0x5915, (q15_t)0x5911, (q15_t)0x590c, (q15_t)0x5908, (q15_t)0x5903, (q15_t)0x58fe, (q15_t)0x58fa, - (q15_t)0x58f5, (q15_t)0x58f1, (q15_t)0x58ec, (q15_t)0x58e8, (q15_t)0x58e3, (q15_t)0x58df, (q15_t)0x58da, (q15_t)0x58d6, - (q15_t)0x58d1, (q15_t)0x58cd, (q15_t)0x58c8, (q15_t)0x58c4, (q15_t)0x58bf, (q15_t)0x58bb, (q15_t)0x58b6, (q15_t)0x58b2, - (q15_t)0x58ad, (q15_t)0x58a9, (q15_t)0x58a4, (q15_t)0x589f, (q15_t)0x589b, (q15_t)0x5896, (q15_t)0x5892, (q15_t)0x588d, - (q15_t)0x5889, (q15_t)0x5884, (q15_t)0x5880, (q15_t)0x587b, (q15_t)0x5877, (q15_t)0x5872, (q15_t)0x586e, (q15_t)0x5869, - (q15_t)0x5864, (q15_t)0x5860, (q15_t)0x585b, (q15_t)0x5857, (q15_t)0x5852, (q15_t)0x584e, (q15_t)0x5849, (q15_t)0x5845, - (q15_t)0x5840, (q15_t)0x583c, (q15_t)0x5837, (q15_t)0x5832, (q15_t)0x582e, (q15_t)0x5829, (q15_t)0x5825, (q15_t)0x5820, - (q15_t)0x581c, (q15_t)0x5817, (q15_t)0x5813, (q15_t)0x580e, (q15_t)0x5809, (q15_t)0x5805, (q15_t)0x5800, (q15_t)0x57fc, - (q15_t)0x57f7, (q15_t)0x57f3, (q15_t)0x57ee, (q15_t)0x57e9, (q15_t)0x57e5, (q15_t)0x57e0, (q15_t)0x57dc, (q15_t)0x57d7, - (q15_t)0x57d3, (q15_t)0x57ce, (q15_t)0x57c9, (q15_t)0x57c5, (q15_t)0x57c0, (q15_t)0x57bc, (q15_t)0x57b7, (q15_t)0x57b3, - (q15_t)0x57ae, (q15_t)0x57a9, (q15_t)0x57a5, (q15_t)0x57a0, (q15_t)0x579c, (q15_t)0x5797, (q15_t)0x5793, (q15_t)0x578e, - (q15_t)0x5789, (q15_t)0x5785, (q15_t)0x5780, (q15_t)0x577c, (q15_t)0x5777, (q15_t)0x5772, (q15_t)0x576e, (q15_t)0x5769, - (q15_t)0x5765, (q15_t)0x5760, (q15_t)0x575c, (q15_t)0x5757, (q15_t)0x5752, (q15_t)0x574e, (q15_t)0x5749, (q15_t)0x5745, - (q15_t)0x5740, (q15_t)0x573b, (q15_t)0x5737, (q15_t)0x5732, (q15_t)0x572e, (q15_t)0x5729, (q15_t)0x5724, (q15_t)0x5720, - (q15_t)0x571b, (q15_t)0x5717, (q15_t)0x5712, (q15_t)0x570d, (q15_t)0x5709, (q15_t)0x5704, (q15_t)0x56ff, (q15_t)0x56fb, - (q15_t)0x56f6, (q15_t)0x56f2, (q15_t)0x56ed, (q15_t)0x56e8, (q15_t)0x56e4, (q15_t)0x56df, (q15_t)0x56db, (q15_t)0x56d6, - (q15_t)0x56d1, (q15_t)0x56cd, (q15_t)0x56c8, (q15_t)0x56c4, (q15_t)0x56bf, (q15_t)0x56ba, (q15_t)0x56b6, (q15_t)0x56b1, - (q15_t)0x56ac, (q15_t)0x56a8, (q15_t)0x56a3, (q15_t)0x569f, (q15_t)0x569a, (q15_t)0x5695, (q15_t)0x5691, (q15_t)0x568c, - (q15_t)0x5687, (q15_t)0x5683, (q15_t)0x567e, (q15_t)0x5679, (q15_t)0x5675, (q15_t)0x5670, (q15_t)0x566c, (q15_t)0x5667, - (q15_t)0x5662, (q15_t)0x565e, (q15_t)0x5659, (q15_t)0x5654, (q15_t)0x5650, (q15_t)0x564b, (q15_t)0x5646, (q15_t)0x5642, - (q15_t)0x563d, (q15_t)0x5639, (q15_t)0x5634, (q15_t)0x562f, (q15_t)0x562b, (q15_t)0x5626, (q15_t)0x5621, (q15_t)0x561d, - (q15_t)0x5618, (q15_t)0x5613, (q15_t)0x560f, (q15_t)0x560a, (q15_t)0x5605, (q15_t)0x5601, (q15_t)0x55fc, (q15_t)0x55f7, - (q15_t)0x55f3, (q15_t)0x55ee, (q15_t)0x55ea, (q15_t)0x55e5, (q15_t)0x55e0, (q15_t)0x55dc, (q15_t)0x55d7, (q15_t)0x55d2, - (q15_t)0x55ce, (q15_t)0x55c9, (q15_t)0x55c4, (q15_t)0x55c0, (q15_t)0x55bb, (q15_t)0x55b6, (q15_t)0x55b2, (q15_t)0x55ad, - (q15_t)0x55a8, (q15_t)0x55a4, (q15_t)0x559f, (q15_t)0x559a, (q15_t)0x5596, (q15_t)0x5591, (q15_t)0x558c, (q15_t)0x5588, - (q15_t)0x5583, (q15_t)0x557e, (q15_t)0x5579, (q15_t)0x5575, (q15_t)0x5570, (q15_t)0x556b, (q15_t)0x5567, (q15_t)0x5562, - (q15_t)0x555d, (q15_t)0x5559, (q15_t)0x5554, (q15_t)0x554f, (q15_t)0x554b, (q15_t)0x5546, (q15_t)0x5541, (q15_t)0x553d, - (q15_t)0x5538, (q15_t)0x5533, (q15_t)0x552f, (q15_t)0x552a, (q15_t)0x5525, (q15_t)0x5520, (q15_t)0x551c, (q15_t)0x5517, - (q15_t)0x5512, (q15_t)0x550e, (q15_t)0x5509, (q15_t)0x5504, (q15_t)0x5500, (q15_t)0x54fb, (q15_t)0x54f6, (q15_t)0x54f2, - (q15_t)0x54ed, (q15_t)0x54e8, (q15_t)0x54e3, (q15_t)0x54df, (q15_t)0x54da, (q15_t)0x54d5, (q15_t)0x54d1, (q15_t)0x54cc, - (q15_t)0x54c7, (q15_t)0x54c2, (q15_t)0x54be, (q15_t)0x54b9, (q15_t)0x54b4, (q15_t)0x54b0, (q15_t)0x54ab, (q15_t)0x54a6, - (q15_t)0x54a2, (q15_t)0x549d, (q15_t)0x5498, (q15_t)0x5493, (q15_t)0x548f, (q15_t)0x548a, (q15_t)0x5485, (q15_t)0x5480, - (q15_t)0x547c, (q15_t)0x5477, (q15_t)0x5472, (q15_t)0x546e, (q15_t)0x5469, (q15_t)0x5464, (q15_t)0x545f, (q15_t)0x545b, - (q15_t)0x5456, (q15_t)0x5451, (q15_t)0x544d, (q15_t)0x5448, (q15_t)0x5443, (q15_t)0x543e, (q15_t)0x543a, (q15_t)0x5435, - (q15_t)0x5430, (q15_t)0x542b, (q15_t)0x5427, (q15_t)0x5422, (q15_t)0x541d, (q15_t)0x5418, (q15_t)0x5414, (q15_t)0x540f, - (q15_t)0x540a, (q15_t)0x5406, (q15_t)0x5401, (q15_t)0x53fc, (q15_t)0x53f7, (q15_t)0x53f3, (q15_t)0x53ee, (q15_t)0x53e9, - (q15_t)0x53e4, (q15_t)0x53e0, (q15_t)0x53db, (q15_t)0x53d6, (q15_t)0x53d1, (q15_t)0x53cd, (q15_t)0x53c8, (q15_t)0x53c3, - (q15_t)0x53be, (q15_t)0x53ba, (q15_t)0x53b5, (q15_t)0x53b0, (q15_t)0x53ab, (q15_t)0x53a7, (q15_t)0x53a2, (q15_t)0x539d, - (q15_t)0x5398, (q15_t)0x5394, (q15_t)0x538f, (q15_t)0x538a, (q15_t)0x5385, (q15_t)0x5380, (q15_t)0x537c, (q15_t)0x5377, - (q15_t)0x5372, (q15_t)0x536d, (q15_t)0x5369, (q15_t)0x5364, (q15_t)0x535f, (q15_t)0x535a, (q15_t)0x5356, (q15_t)0x5351, - (q15_t)0x534c, (q15_t)0x5347, (q15_t)0x5343, (q15_t)0x533e, (q15_t)0x5339, (q15_t)0x5334, (q15_t)0x532f, (q15_t)0x532b, - (q15_t)0x5326, (q15_t)0x5321, (q15_t)0x531c, (q15_t)0x5318, (q15_t)0x5313, (q15_t)0x530e, (q15_t)0x5309, (q15_t)0x5304, - (q15_t)0x5300, (q15_t)0x52fb, (q15_t)0x52f6, (q15_t)0x52f1, (q15_t)0x52ec, (q15_t)0x52e8, (q15_t)0x52e3, (q15_t)0x52de, - (q15_t)0x52d9, (q15_t)0x52d5, (q15_t)0x52d0, (q15_t)0x52cb, (q15_t)0x52c6, (q15_t)0x52c1, (q15_t)0x52bd, (q15_t)0x52b8, - (q15_t)0x52b3, (q15_t)0x52ae, (q15_t)0x52a9, (q15_t)0x52a5, (q15_t)0x52a0, (q15_t)0x529b, (q15_t)0x5296, (q15_t)0x5291, - (q15_t)0x528d, (q15_t)0x5288, (q15_t)0x5283, (q15_t)0x527e, (q15_t)0x5279, (q15_t)0x5275, (q15_t)0x5270, (q15_t)0x526b, - (q15_t)0x5266, (q15_t)0x5261, (q15_t)0x525d, (q15_t)0x5258, (q15_t)0x5253, (q15_t)0x524e, (q15_t)0x5249, (q15_t)0x5244, - (q15_t)0x5240, (q15_t)0x523b, (q15_t)0x5236, (q15_t)0x5231, (q15_t)0x522c, (q15_t)0x5228, (q15_t)0x5223, (q15_t)0x521e, - (q15_t)0x5219, (q15_t)0x5214, (q15_t)0x520f, (q15_t)0x520b, (q15_t)0x5206, (q15_t)0x5201, (q15_t)0x51fc, (q15_t)0x51f7, - (q15_t)0x51f3, (q15_t)0x51ee, (q15_t)0x51e9, (q15_t)0x51e4, (q15_t)0x51df, (q15_t)0x51da, (q15_t)0x51d6, (q15_t)0x51d1, - (q15_t)0x51cc, (q15_t)0x51c7, (q15_t)0x51c2, (q15_t)0x51bd, (q15_t)0x51b9, (q15_t)0x51b4, (q15_t)0x51af, (q15_t)0x51aa, - (q15_t)0x51a5, (q15_t)0x51a0, (q15_t)0x519c, (q15_t)0x5197, (q15_t)0x5192, (q15_t)0x518d, (q15_t)0x5188, (q15_t)0x5183, - (q15_t)0x517e, (q15_t)0x517a, (q15_t)0x5175, (q15_t)0x5170, (q15_t)0x516b, (q15_t)0x5166, (q15_t)0x5161, (q15_t)0x515d, - (q15_t)0x5158, (q15_t)0x5153, (q15_t)0x514e, (q15_t)0x5149, (q15_t)0x5144, (q15_t)0x513f, (q15_t)0x513b, (q15_t)0x5136, - (q15_t)0x5131, (q15_t)0x512c, (q15_t)0x5127, (q15_t)0x5122, (q15_t)0x511d, (q15_t)0x5119, (q15_t)0x5114, (q15_t)0x510f, - (q15_t)0x510a, (q15_t)0x5105, (q15_t)0x5100, (q15_t)0x50fb, (q15_t)0x50f7, (q15_t)0x50f2, (q15_t)0x50ed, (q15_t)0x50e8, - (q15_t)0x50e3, (q15_t)0x50de, (q15_t)0x50d9, (q15_t)0x50d4, (q15_t)0x50d0, (q15_t)0x50cb, (q15_t)0x50c6, (q15_t)0x50c1, - (q15_t)0x50bc, (q15_t)0x50b7, (q15_t)0x50b2, (q15_t)0x50ad, (q15_t)0x50a9, (q15_t)0x50a4, (q15_t)0x509f, (q15_t)0x509a, - (q15_t)0x5095, (q15_t)0x5090, (q15_t)0x508b, (q15_t)0x5086, (q15_t)0x5082, (q15_t)0x507d, (q15_t)0x5078, (q15_t)0x5073, - (q15_t)0x506e, (q15_t)0x5069, (q15_t)0x5064, (q15_t)0x505f, (q15_t)0x505a, (q15_t)0x5056, (q15_t)0x5051, (q15_t)0x504c, - (q15_t)0x5047, (q15_t)0x5042, (q15_t)0x503d, (q15_t)0x5038, (q15_t)0x5033, (q15_t)0x502e, (q15_t)0x5029, (q15_t)0x5025, - (q15_t)0x5020, (q15_t)0x501b, (q15_t)0x5016, (q15_t)0x5011, (q15_t)0x500c, (q15_t)0x5007, (q15_t)0x5002, (q15_t)0x4ffd, - (q15_t)0x4ff8, (q15_t)0x4ff4, (q15_t)0x4fef, (q15_t)0x4fea, (q15_t)0x4fe5, (q15_t)0x4fe0, (q15_t)0x4fdb, (q15_t)0x4fd6, - (q15_t)0x4fd1, (q15_t)0x4fcc, (q15_t)0x4fc7, (q15_t)0x4fc2, (q15_t)0x4fbe, (q15_t)0x4fb9, (q15_t)0x4fb4, (q15_t)0x4faf, - (q15_t)0x4faa, (q15_t)0x4fa5, (q15_t)0x4fa0, (q15_t)0x4f9b, (q15_t)0x4f96, (q15_t)0x4f91, (q15_t)0x4f8c, (q15_t)0x4f87, - (q15_t)0x4f82, (q15_t)0x4f7e, (q15_t)0x4f79, (q15_t)0x4f74, (q15_t)0x4f6f, (q15_t)0x4f6a, (q15_t)0x4f65, (q15_t)0x4f60, - (q15_t)0x4f5b, (q15_t)0x4f56, (q15_t)0x4f51, (q15_t)0x4f4c, (q15_t)0x4f47, (q15_t)0x4f42, (q15_t)0x4f3d, (q15_t)0x4f39, - (q15_t)0x4f34, (q15_t)0x4f2f, (q15_t)0x4f2a, (q15_t)0x4f25, (q15_t)0x4f20, (q15_t)0x4f1b, (q15_t)0x4f16, (q15_t)0x4f11, - (q15_t)0x4f0c, (q15_t)0x4f07, (q15_t)0x4f02, (q15_t)0x4efd, (q15_t)0x4ef8, (q15_t)0x4ef3, (q15_t)0x4eee, (q15_t)0x4ee9, - (q15_t)0x4ee5, (q15_t)0x4ee0, (q15_t)0x4edb, (q15_t)0x4ed6, (q15_t)0x4ed1, (q15_t)0x4ecc, (q15_t)0x4ec7, (q15_t)0x4ec2, - (q15_t)0x4ebd, (q15_t)0x4eb8, (q15_t)0x4eb3, (q15_t)0x4eae, (q15_t)0x4ea9, (q15_t)0x4ea4, (q15_t)0x4e9f, (q15_t)0x4e9a, - (q15_t)0x4e95, (q15_t)0x4e90, (q15_t)0x4e8b, (q15_t)0x4e86, (q15_t)0x4e81, (q15_t)0x4e7c, (q15_t)0x4e78, (q15_t)0x4e73, - (q15_t)0x4e6e, (q15_t)0x4e69, (q15_t)0x4e64, (q15_t)0x4e5f, (q15_t)0x4e5a, (q15_t)0x4e55, (q15_t)0x4e50, (q15_t)0x4e4b, - (q15_t)0x4e46, (q15_t)0x4e41, (q15_t)0x4e3c, (q15_t)0x4e37, (q15_t)0x4e32, (q15_t)0x4e2d, (q15_t)0x4e28, (q15_t)0x4e23, - (q15_t)0x4e1e, (q15_t)0x4e19, (q15_t)0x4e14, (q15_t)0x4e0f, (q15_t)0x4e0a, (q15_t)0x4e05, (q15_t)0x4e00, (q15_t)0x4dfb, - (q15_t)0x4df6, (q15_t)0x4df1, (q15_t)0x4dec, (q15_t)0x4de7, (q15_t)0x4de2, (q15_t)0x4ddd, (q15_t)0x4dd8, (q15_t)0x4dd3, - (q15_t)0x4dce, (q15_t)0x4dc9, (q15_t)0x4dc4, (q15_t)0x4dbf, (q15_t)0x4dba, (q15_t)0x4db5, (q15_t)0x4db0, (q15_t)0x4dab, - (q15_t)0x4da6, (q15_t)0x4da1, (q15_t)0x4d9c, (q15_t)0x4d97, (q15_t)0x4d92, (q15_t)0x4d8d, (q15_t)0x4d88, (q15_t)0x4d83, - (q15_t)0x4d7e, (q15_t)0x4d79, (q15_t)0x4d74, (q15_t)0x4d6f, (q15_t)0x4d6a, (q15_t)0x4d65, (q15_t)0x4d60, (q15_t)0x4d5b, - (q15_t)0x4d56, (q15_t)0x4d51, (q15_t)0x4d4c, (q15_t)0x4d47, (q15_t)0x4d42, (q15_t)0x4d3d, (q15_t)0x4d38, (q15_t)0x4d33, - (q15_t)0x4d2e, (q15_t)0x4d29, (q15_t)0x4d24, (q15_t)0x4d1f, (q15_t)0x4d1a, (q15_t)0x4d15, (q15_t)0x4d10, (q15_t)0x4d0b, - (q15_t)0x4d06, (q15_t)0x4d01, (q15_t)0x4cfc, (q15_t)0x4cf7, (q15_t)0x4cf2, (q15_t)0x4ced, (q15_t)0x4ce8, (q15_t)0x4ce3, - (q15_t)0x4cde, (q15_t)0x4cd9, (q15_t)0x4cd4, (q15_t)0x4ccf, (q15_t)0x4cca, (q15_t)0x4cc5, (q15_t)0x4cc0, (q15_t)0x4cbb, - (q15_t)0x4cb6, (q15_t)0x4cb1, (q15_t)0x4cac, (q15_t)0x4ca7, (q15_t)0x4ca2, (q15_t)0x4c9d, (q15_t)0x4c98, (q15_t)0x4c93, - (q15_t)0x4c8e, (q15_t)0x4c88, (q15_t)0x4c83, (q15_t)0x4c7e, (q15_t)0x4c79, (q15_t)0x4c74, (q15_t)0x4c6f, (q15_t)0x4c6a, - (q15_t)0x4c65, (q15_t)0x4c60, (q15_t)0x4c5b, (q15_t)0x4c56, (q15_t)0x4c51, (q15_t)0x4c4c, (q15_t)0x4c47, (q15_t)0x4c42, - (q15_t)0x4c3d, (q15_t)0x4c38, (q15_t)0x4c33, (q15_t)0x4c2e, (q15_t)0x4c29, (q15_t)0x4c24, (q15_t)0x4c1f, (q15_t)0x4c1a, - (q15_t)0x4c14, (q15_t)0x4c0f, (q15_t)0x4c0a, (q15_t)0x4c05, (q15_t)0x4c00, (q15_t)0x4bfb, (q15_t)0x4bf6, (q15_t)0x4bf1, - (q15_t)0x4bec, (q15_t)0x4be7, (q15_t)0x4be2, (q15_t)0x4bdd, (q15_t)0x4bd8, (q15_t)0x4bd3, (q15_t)0x4bce, (q15_t)0x4bc9, - (q15_t)0x4bc4, (q15_t)0x4bbe, (q15_t)0x4bb9, (q15_t)0x4bb4, (q15_t)0x4baf, (q15_t)0x4baa, (q15_t)0x4ba5, (q15_t)0x4ba0, - (q15_t)0x4b9b, (q15_t)0x4b96, (q15_t)0x4b91, (q15_t)0x4b8c, (q15_t)0x4b87, (q15_t)0x4b82, (q15_t)0x4b7d, (q15_t)0x4b77, - (q15_t)0x4b72, (q15_t)0x4b6d, (q15_t)0x4b68, (q15_t)0x4b63, (q15_t)0x4b5e, (q15_t)0x4b59, (q15_t)0x4b54, (q15_t)0x4b4f, - (q15_t)0x4b4a, (q15_t)0x4b45, (q15_t)0x4b40, (q15_t)0x4b3b, (q15_t)0x4b35, (q15_t)0x4b30, (q15_t)0x4b2b, (q15_t)0x4b26, - (q15_t)0x4b21, (q15_t)0x4b1c, (q15_t)0x4b17, (q15_t)0x4b12, (q15_t)0x4b0d, (q15_t)0x4b08, (q15_t)0x4b03, (q15_t)0x4afd, - (q15_t)0x4af8, (q15_t)0x4af3, (q15_t)0x4aee, (q15_t)0x4ae9, (q15_t)0x4ae4, (q15_t)0x4adf, (q15_t)0x4ada, (q15_t)0x4ad5, - (q15_t)0x4ad0, (q15_t)0x4acb, (q15_t)0x4ac5, (q15_t)0x4ac0, (q15_t)0x4abb, (q15_t)0x4ab6, (q15_t)0x4ab1, (q15_t)0x4aac, - (q15_t)0x4aa7, (q15_t)0x4aa2, (q15_t)0x4a9d, (q15_t)0x4a97, (q15_t)0x4a92, (q15_t)0x4a8d, (q15_t)0x4a88, (q15_t)0x4a83, - (q15_t)0x4a7e, (q15_t)0x4a79, (q15_t)0x4a74, (q15_t)0x4a6f, (q15_t)0x4a6a, (q15_t)0x4a64, (q15_t)0x4a5f, (q15_t)0x4a5a, - (q15_t)0x4a55, (q15_t)0x4a50, (q15_t)0x4a4b, (q15_t)0x4a46, (q15_t)0x4a41, (q15_t)0x4a3b, (q15_t)0x4a36, (q15_t)0x4a31, - (q15_t)0x4a2c, (q15_t)0x4a27, (q15_t)0x4a22, (q15_t)0x4a1d, (q15_t)0x4a18, (q15_t)0x4a12, (q15_t)0x4a0d, (q15_t)0x4a08, - (q15_t)0x4a03, (q15_t)0x49fe, (q15_t)0x49f9, (q15_t)0x49f4, (q15_t)0x49ef, (q15_t)0x49e9, (q15_t)0x49e4, (q15_t)0x49df, - (q15_t)0x49da, (q15_t)0x49d5, (q15_t)0x49d0, (q15_t)0x49cb, (q15_t)0x49c6, (q15_t)0x49c0, (q15_t)0x49bb, (q15_t)0x49b6, - (q15_t)0x49b1, (q15_t)0x49ac, (q15_t)0x49a7, (q15_t)0x49a2, (q15_t)0x499c, (q15_t)0x4997, (q15_t)0x4992, (q15_t)0x498d, - (q15_t)0x4988, (q15_t)0x4983, (q15_t)0x497e, (q15_t)0x4978, (q15_t)0x4973, (q15_t)0x496e, (q15_t)0x4969, (q15_t)0x4964, - (q15_t)0x495f, (q15_t)0x495a, (q15_t)0x4954, (q15_t)0x494f, (q15_t)0x494a, (q15_t)0x4945, (q15_t)0x4940, (q15_t)0x493b, - (q15_t)0x4936, (q15_t)0x4930, (q15_t)0x492b, (q15_t)0x4926, (q15_t)0x4921, (q15_t)0x491c, (q15_t)0x4917, (q15_t)0x4911, - (q15_t)0x490c, (q15_t)0x4907, (q15_t)0x4902, (q15_t)0x48fd, (q15_t)0x48f8, (q15_t)0x48f2, (q15_t)0x48ed, (q15_t)0x48e8, - (q15_t)0x48e3, (q15_t)0x48de, (q15_t)0x48d9, (q15_t)0x48d3, (q15_t)0x48ce, (q15_t)0x48c9, (q15_t)0x48c4, (q15_t)0x48bf, - (q15_t)0x48ba, (q15_t)0x48b4, (q15_t)0x48af, (q15_t)0x48aa, (q15_t)0x48a5, (q15_t)0x48a0, (q15_t)0x489b, (q15_t)0x4895, - (q15_t)0x4890, (q15_t)0x488b, (q15_t)0x4886, (q15_t)0x4881, (q15_t)0x487c, (q15_t)0x4876, (q15_t)0x4871, (q15_t)0x486c, - (q15_t)0x4867, (q15_t)0x4862, (q15_t)0x485c, (q15_t)0x4857, (q15_t)0x4852, (q15_t)0x484d, (q15_t)0x4848, (q15_t)0x4843, - (q15_t)0x483d, (q15_t)0x4838, (q15_t)0x4833, (q15_t)0x482e, (q15_t)0x4829, (q15_t)0x4823, (q15_t)0x481e, (q15_t)0x4819, - (q15_t)0x4814, (q15_t)0x480f, (q15_t)0x4809, (q15_t)0x4804, (q15_t)0x47ff, (q15_t)0x47fa, (q15_t)0x47f5, (q15_t)0x47ef, - (q15_t)0x47ea, (q15_t)0x47e5, (q15_t)0x47e0, (q15_t)0x47db, (q15_t)0x47d5, (q15_t)0x47d0, (q15_t)0x47cb, (q15_t)0x47c6, - (q15_t)0x47c1, (q15_t)0x47bb, (q15_t)0x47b6, (q15_t)0x47b1, (q15_t)0x47ac, (q15_t)0x47a7, (q15_t)0x47a1, (q15_t)0x479c, - (q15_t)0x4797, (q15_t)0x4792, (q15_t)0x478d, (q15_t)0x4787, (q15_t)0x4782, (q15_t)0x477d, (q15_t)0x4778, (q15_t)0x4773, - (q15_t)0x476d, (q15_t)0x4768, (q15_t)0x4763, (q15_t)0x475e, (q15_t)0x4758, (q15_t)0x4753, (q15_t)0x474e, (q15_t)0x4749, - (q15_t)0x4744, (q15_t)0x473e, (q15_t)0x4739, (q15_t)0x4734, (q15_t)0x472f, (q15_t)0x4729, (q15_t)0x4724, (q15_t)0x471f, - (q15_t)0x471a, (q15_t)0x4715, (q15_t)0x470f, (q15_t)0x470a, (q15_t)0x4705, (q15_t)0x4700, (q15_t)0x46fa, (q15_t)0x46f5, - (q15_t)0x46f0, (q15_t)0x46eb, (q15_t)0x46e6, (q15_t)0x46e0, (q15_t)0x46db, (q15_t)0x46d6, (q15_t)0x46d1, (q15_t)0x46cb, - (q15_t)0x46c6, (q15_t)0x46c1, (q15_t)0x46bc, (q15_t)0x46b6, (q15_t)0x46b1, (q15_t)0x46ac, (q15_t)0x46a7, (q15_t)0x46a1, - (q15_t)0x469c, (q15_t)0x4697, (q15_t)0x4692, (q15_t)0x468d, (q15_t)0x4687, (q15_t)0x4682, (q15_t)0x467d, (q15_t)0x4678, - (q15_t)0x4672, (q15_t)0x466d, (q15_t)0x4668, (q15_t)0x4663, (q15_t)0x465d, (q15_t)0x4658, (q15_t)0x4653, (q15_t)0x464e, - (q15_t)0x4648, (q15_t)0x4643, (q15_t)0x463e, (q15_t)0x4639, (q15_t)0x4633, (q15_t)0x462e, (q15_t)0x4629, (q15_t)0x4624, - (q15_t)0x461e, (q15_t)0x4619, (q15_t)0x4614, (q15_t)0x460e, (q15_t)0x4609, (q15_t)0x4604, (q15_t)0x45ff, (q15_t)0x45f9, - (q15_t)0x45f4, (q15_t)0x45ef, (q15_t)0x45ea, (q15_t)0x45e4, (q15_t)0x45df, (q15_t)0x45da, (q15_t)0x45d5, (q15_t)0x45cf, - (q15_t)0x45ca, (q15_t)0x45c5, (q15_t)0x45c0, (q15_t)0x45ba, (q15_t)0x45b5, (q15_t)0x45b0, (q15_t)0x45aa, (q15_t)0x45a5, - (q15_t)0x45a0, (q15_t)0x459b, (q15_t)0x4595, (q15_t)0x4590, (q15_t)0x458b, (q15_t)0x4586, (q15_t)0x4580, (q15_t)0x457b, - (q15_t)0x4576, (q15_t)0x4570, (q15_t)0x456b, (q15_t)0x4566, (q15_t)0x4561, (q15_t)0x455b, (q15_t)0x4556, (q15_t)0x4551, - (q15_t)0x454b, (q15_t)0x4546, (q15_t)0x4541, (q15_t)0x453c, (q15_t)0x4536, (q15_t)0x4531, (q15_t)0x452c, (q15_t)0x4526, - (q15_t)0x4521, (q15_t)0x451c, (q15_t)0x4517, (q15_t)0x4511, (q15_t)0x450c, (q15_t)0x4507, (q15_t)0x4501, (q15_t)0x44fc, - (q15_t)0x44f7, (q15_t)0x44f2, (q15_t)0x44ec, (q15_t)0x44e7, (q15_t)0x44e2, (q15_t)0x44dc, (q15_t)0x44d7, (q15_t)0x44d2, - (q15_t)0x44cd, (q15_t)0x44c7, (q15_t)0x44c2, (q15_t)0x44bd, (q15_t)0x44b7, (q15_t)0x44b2, (q15_t)0x44ad, (q15_t)0x44a7, - (q15_t)0x44a2, (q15_t)0x449d, (q15_t)0x4497, (q15_t)0x4492, (q15_t)0x448d, (q15_t)0x4488, (q15_t)0x4482, (q15_t)0x447d, - (q15_t)0x4478, (q15_t)0x4472, (q15_t)0x446d, (q15_t)0x4468, (q15_t)0x4462, (q15_t)0x445d, (q15_t)0x4458, (q15_t)0x4452, - (q15_t)0x444d, (q15_t)0x4448, (q15_t)0x4443, (q15_t)0x443d, (q15_t)0x4438, (q15_t)0x4433, (q15_t)0x442d, (q15_t)0x4428, - (q15_t)0x4423, (q15_t)0x441d, (q15_t)0x4418, (q15_t)0x4413, (q15_t)0x440d, (q15_t)0x4408, (q15_t)0x4403, (q15_t)0x43fd, - (q15_t)0x43f8, (q15_t)0x43f3, (q15_t)0x43ed, (q15_t)0x43e8, (q15_t)0x43e3, (q15_t)0x43dd, (q15_t)0x43d8, (q15_t)0x43d3, - (q15_t)0x43cd, (q15_t)0x43c8, (q15_t)0x43c3, (q15_t)0x43bd, (q15_t)0x43b8, (q15_t)0x43b3, (q15_t)0x43ad, (q15_t)0x43a8, - (q15_t)0x43a3, (q15_t)0x439d, (q15_t)0x4398, (q15_t)0x4393, (q15_t)0x438d, (q15_t)0x4388, (q15_t)0x4383, (q15_t)0x437d, - (q15_t)0x4378, (q15_t)0x4373, (q15_t)0x436d, (q15_t)0x4368, (q15_t)0x4363, (q15_t)0x435d, (q15_t)0x4358, (q15_t)0x4353, - (q15_t)0x434d, (q15_t)0x4348, (q15_t)0x4343, (q15_t)0x433d, (q15_t)0x4338, (q15_t)0x4333, (q15_t)0x432d, (q15_t)0x4328, - (q15_t)0x4323, (q15_t)0x431d, (q15_t)0x4318, (q15_t)0x4313, (q15_t)0x430d, (q15_t)0x4308, (q15_t)0x4302, (q15_t)0x42fd, - (q15_t)0x42f8, (q15_t)0x42f2, (q15_t)0x42ed, (q15_t)0x42e8, (q15_t)0x42e2, (q15_t)0x42dd, (q15_t)0x42d8, (q15_t)0x42d2, - (q15_t)0x42cd, (q15_t)0x42c8, (q15_t)0x42c2, (q15_t)0x42bd, (q15_t)0x42b7, (q15_t)0x42b2, (q15_t)0x42ad, (q15_t)0x42a7, - (q15_t)0x42a2, (q15_t)0x429d, (q15_t)0x4297, (q15_t)0x4292, (q15_t)0x428d, (q15_t)0x4287, (q15_t)0x4282, (q15_t)0x427c, - (q15_t)0x4277, (q15_t)0x4272, (q15_t)0x426c, (q15_t)0x4267, (q15_t)0x4262, (q15_t)0x425c, (q15_t)0x4257, (q15_t)0x4251, - (q15_t)0x424c, (q15_t)0x4247, (q15_t)0x4241, (q15_t)0x423c, (q15_t)0x4237, (q15_t)0x4231, (q15_t)0x422c, (q15_t)0x4226, - (q15_t)0x4221, (q15_t)0x421c, (q15_t)0x4216, (q15_t)0x4211, (q15_t)0x420c, (q15_t)0x4206, (q15_t)0x4201, (q15_t)0x41fb, - (q15_t)0x41f6, (q15_t)0x41f1, (q15_t)0x41eb, (q15_t)0x41e6, (q15_t)0x41e0, (q15_t)0x41db, (q15_t)0x41d6, (q15_t)0x41d0, - (q15_t)0x41cb, (q15_t)0x41c6, (q15_t)0x41c0, (q15_t)0x41bb, (q15_t)0x41b5, (q15_t)0x41b0, (q15_t)0x41ab, (q15_t)0x41a5, - (q15_t)0x41a0, (q15_t)0x419a, (q15_t)0x4195, (q15_t)0x4190, (q15_t)0x418a, (q15_t)0x4185, (q15_t)0x417f, (q15_t)0x417a, - (q15_t)0x4175, (q15_t)0x416f, (q15_t)0x416a, (q15_t)0x4164, (q15_t)0x415f, (q15_t)0x415a, (q15_t)0x4154, (q15_t)0x414f, - (q15_t)0x4149, (q15_t)0x4144, (q15_t)0x413f, (q15_t)0x4139, (q15_t)0x4134, (q15_t)0x412e, (q15_t)0x4129, (q15_t)0x4124, - (q15_t)0x411e, (q15_t)0x4119, (q15_t)0x4113, (q15_t)0x410e, (q15_t)0x4108, (q15_t)0x4103, (q15_t)0x40fe, (q15_t)0x40f8, - (q15_t)0x40f3, (q15_t)0x40ed, (q15_t)0x40e8, (q15_t)0x40e3, (q15_t)0x40dd, (q15_t)0x40d8, (q15_t)0x40d2, (q15_t)0x40cd, - (q15_t)0x40c8, (q15_t)0x40c2, (q15_t)0x40bd, (q15_t)0x40b7, (q15_t)0x40b2, (q15_t)0x40ac, (q15_t)0x40a7, (q15_t)0x40a2, - (q15_t)0x409c, (q15_t)0x4097, (q15_t)0x4091, (q15_t)0x408c, (q15_t)0x4086, (q15_t)0x4081, (q15_t)0x407c, (q15_t)0x4076, - (q15_t)0x4071, (q15_t)0x406b, (q15_t)0x4066, (q15_t)0x4060, (q15_t)0x405b, (q15_t)0x4056, (q15_t)0x4050, (q15_t)0x404b, - (q15_t)0x4045, (q15_t)0x4040, (q15_t)0x403a, (q15_t)0x4035, (q15_t)0x4030, (q15_t)0x402a, (q15_t)0x4025, (q15_t)0x401f, - (q15_t)0x401a, (q15_t)0x4014, (q15_t)0x400f, (q15_t)0x4009, (q15_t)0x4004, (q15_t)0x3fff, (q15_t)0x3ff9, (q15_t)0x3ff4, - (q15_t)0x3fee, (q15_t)0x3fe9, (q15_t)0x3fe3, (q15_t)0x3fde, (q15_t)0x3fd8, (q15_t)0x3fd3, (q15_t)0x3fce, (q15_t)0x3fc8, - (q15_t)0x3fc3, (q15_t)0x3fbd, (q15_t)0x3fb8, (q15_t)0x3fb2, (q15_t)0x3fad, (q15_t)0x3fa7, (q15_t)0x3fa2, (q15_t)0x3f9d, - (q15_t)0x3f97, (q15_t)0x3f92, (q15_t)0x3f8c, (q15_t)0x3f87, (q15_t)0x3f81, (q15_t)0x3f7c, (q15_t)0x3f76, (q15_t)0x3f71, - (q15_t)0x3f6b, (q15_t)0x3f66, (q15_t)0x3f61, (q15_t)0x3f5b, (q15_t)0x3f56, (q15_t)0x3f50, (q15_t)0x3f4b, (q15_t)0x3f45, - (q15_t)0x3f40, (q15_t)0x3f3a, (q15_t)0x3f35, (q15_t)0x3f2f, (q15_t)0x3f2a, (q15_t)0x3f24, (q15_t)0x3f1f, (q15_t)0x3f1a, - (q15_t)0x3f14, (q15_t)0x3f0f, (q15_t)0x3f09, (q15_t)0x3f04, (q15_t)0x3efe, (q15_t)0x3ef9, (q15_t)0x3ef3, (q15_t)0x3eee, - (q15_t)0x3ee8, (q15_t)0x3ee3, (q15_t)0x3edd, (q15_t)0x3ed8, (q15_t)0x3ed2, (q15_t)0x3ecd, (q15_t)0x3ec7, (q15_t)0x3ec2, - (q15_t)0x3ebd, (q15_t)0x3eb7, (q15_t)0x3eb2, (q15_t)0x3eac, (q15_t)0x3ea7, (q15_t)0x3ea1, (q15_t)0x3e9c, (q15_t)0x3e96, - (q15_t)0x3e91, (q15_t)0x3e8b, (q15_t)0x3e86, (q15_t)0x3e80, (q15_t)0x3e7b, (q15_t)0x3e75, (q15_t)0x3e70, (q15_t)0x3e6a, - (q15_t)0x3e65, (q15_t)0x3e5f, (q15_t)0x3e5a, (q15_t)0x3e54, (q15_t)0x3e4f, (q15_t)0x3e49, (q15_t)0x3e44, (q15_t)0x3e3e, - (q15_t)0x3e39, (q15_t)0x3e33, (q15_t)0x3e2e, (q15_t)0x3e28, (q15_t)0x3e23, (q15_t)0x3e1d, (q15_t)0x3e18, (q15_t)0x3e12, - (q15_t)0x3e0d, (q15_t)0x3e07, (q15_t)0x3e02, (q15_t)0x3dfc, (q15_t)0x3df7, (q15_t)0x3df1, (q15_t)0x3dec, (q15_t)0x3de6, - (q15_t)0x3de1, (q15_t)0x3ddb, (q15_t)0x3dd6, (q15_t)0x3dd0, (q15_t)0x3dcb, (q15_t)0x3dc5, (q15_t)0x3dc0, (q15_t)0x3dba, - (q15_t)0x3db5, (q15_t)0x3daf, (q15_t)0x3daa, (q15_t)0x3da4, (q15_t)0x3d9f, (q15_t)0x3d99, (q15_t)0x3d94, (q15_t)0x3d8e, - (q15_t)0x3d89, (q15_t)0x3d83, (q15_t)0x3d7e, (q15_t)0x3d78, (q15_t)0x3d73, (q15_t)0x3d6d, (q15_t)0x3d68, (q15_t)0x3d62, - (q15_t)0x3d5d, (q15_t)0x3d57, (q15_t)0x3d52, (q15_t)0x3d4c, (q15_t)0x3d47, (q15_t)0x3d41, (q15_t)0x3d3c, (q15_t)0x3d36, - (q15_t)0x3d31, (q15_t)0x3d2b, (q15_t)0x3d26, (q15_t)0x3d20, (q15_t)0x3d1b, (q15_t)0x3d15, (q15_t)0x3d10, (q15_t)0x3d0a, - (q15_t)0x3d04, (q15_t)0x3cff, (q15_t)0x3cf9, (q15_t)0x3cf4, (q15_t)0x3cee, (q15_t)0x3ce9, (q15_t)0x3ce3, (q15_t)0x3cde, - (q15_t)0x3cd8, (q15_t)0x3cd3, (q15_t)0x3ccd, (q15_t)0x3cc8, (q15_t)0x3cc2, (q15_t)0x3cbd, (q15_t)0x3cb7, (q15_t)0x3cb2, - (q15_t)0x3cac, (q15_t)0x3ca7, (q15_t)0x3ca1, (q15_t)0x3c9b, (q15_t)0x3c96, (q15_t)0x3c90, (q15_t)0x3c8b, (q15_t)0x3c85, - (q15_t)0x3c80, (q15_t)0x3c7a, (q15_t)0x3c75, (q15_t)0x3c6f, (q15_t)0x3c6a, (q15_t)0x3c64, (q15_t)0x3c5f, (q15_t)0x3c59, - (q15_t)0x3c53, (q15_t)0x3c4e, (q15_t)0x3c48, (q15_t)0x3c43, (q15_t)0x3c3d, (q15_t)0x3c38, (q15_t)0x3c32, (q15_t)0x3c2d, - (q15_t)0x3c27, (q15_t)0x3c22, (q15_t)0x3c1c, (q15_t)0x3c16, (q15_t)0x3c11, (q15_t)0x3c0b, (q15_t)0x3c06, (q15_t)0x3c00, - (q15_t)0x3bfb, (q15_t)0x3bf5, (q15_t)0x3bf0, (q15_t)0x3bea, (q15_t)0x3be5, (q15_t)0x3bdf, (q15_t)0x3bd9, (q15_t)0x3bd4, - (q15_t)0x3bce, (q15_t)0x3bc9, (q15_t)0x3bc3, (q15_t)0x3bbe, (q15_t)0x3bb8, (q15_t)0x3bb3, (q15_t)0x3bad, (q15_t)0x3ba7, - (q15_t)0x3ba2, (q15_t)0x3b9c, (q15_t)0x3b97, (q15_t)0x3b91, (q15_t)0x3b8c, (q15_t)0x3b86, (q15_t)0x3b80, (q15_t)0x3b7b, - (q15_t)0x3b75, (q15_t)0x3b70, (q15_t)0x3b6a, (q15_t)0x3b65, (q15_t)0x3b5f, (q15_t)0x3b5a, (q15_t)0x3b54, (q15_t)0x3b4e, - (q15_t)0x3b49, (q15_t)0x3b43, (q15_t)0x3b3e, (q15_t)0x3b38, (q15_t)0x3b33, (q15_t)0x3b2d, (q15_t)0x3b27, (q15_t)0x3b22, - (q15_t)0x3b1c, (q15_t)0x3b17, (q15_t)0x3b11, (q15_t)0x3b0c, (q15_t)0x3b06, (q15_t)0x3b00, (q15_t)0x3afb, (q15_t)0x3af5, - (q15_t)0x3af0, (q15_t)0x3aea, (q15_t)0x3ae4, (q15_t)0x3adf, (q15_t)0x3ad9, (q15_t)0x3ad4, (q15_t)0x3ace, (q15_t)0x3ac9, - (q15_t)0x3ac3, (q15_t)0x3abd, (q15_t)0x3ab8, (q15_t)0x3ab2, (q15_t)0x3aad, (q15_t)0x3aa7, (q15_t)0x3aa2, (q15_t)0x3a9c, - (q15_t)0x3a96, (q15_t)0x3a91, (q15_t)0x3a8b, (q15_t)0x3a86, (q15_t)0x3a80, (q15_t)0x3a7a, (q15_t)0x3a75, (q15_t)0x3a6f, - (q15_t)0x3a6a, (q15_t)0x3a64, (q15_t)0x3a5e, (q15_t)0x3a59, (q15_t)0x3a53, (q15_t)0x3a4e, (q15_t)0x3a48, (q15_t)0x3a42, - (q15_t)0x3a3d, (q15_t)0x3a37, (q15_t)0x3a32, (q15_t)0x3a2c, (q15_t)0x3a26, (q15_t)0x3a21, (q15_t)0x3a1b, (q15_t)0x3a16, - (q15_t)0x3a10, (q15_t)0x3a0b, (q15_t)0x3a05, (q15_t)0x39ff, (q15_t)0x39fa, (q15_t)0x39f4, (q15_t)0x39ee, (q15_t)0x39e9, - (q15_t)0x39e3, (q15_t)0x39de, (q15_t)0x39d8, (q15_t)0x39d2, (q15_t)0x39cd, (q15_t)0x39c7, (q15_t)0x39c2, (q15_t)0x39bc, - (q15_t)0x39b6, (q15_t)0x39b1, (q15_t)0x39ab, (q15_t)0x39a6, (q15_t)0x39a0, (q15_t)0x399a, (q15_t)0x3995, (q15_t)0x398f, - (q15_t)0x398a, (q15_t)0x3984, (q15_t)0x397e, (q15_t)0x3979, (q15_t)0x3973, (q15_t)0x396d, (q15_t)0x3968, (q15_t)0x3962, - (q15_t)0x395d, (q15_t)0x3957, (q15_t)0x3951, (q15_t)0x394c, (q15_t)0x3946, (q15_t)0x3941, (q15_t)0x393b, (q15_t)0x3935, - (q15_t)0x3930, (q15_t)0x392a, (q15_t)0x3924, (q15_t)0x391f, (q15_t)0x3919, (q15_t)0x3914, (q15_t)0x390e, (q15_t)0x3908, - (q15_t)0x3903, (q15_t)0x38fd, (q15_t)0x38f7, (q15_t)0x38f2, (q15_t)0x38ec, (q15_t)0x38e7, (q15_t)0x38e1, (q15_t)0x38db, - (q15_t)0x38d6, (q15_t)0x38d0, (q15_t)0x38ca, (q15_t)0x38c5, (q15_t)0x38bf, (q15_t)0x38ba, (q15_t)0x38b4, (q15_t)0x38ae, - (q15_t)0x38a9, (q15_t)0x38a3, (q15_t)0x389d, (q15_t)0x3898, (q15_t)0x3892, (q15_t)0x388c, (q15_t)0x3887, (q15_t)0x3881, - (q15_t)0x387c, (q15_t)0x3876, (q15_t)0x3870, (q15_t)0x386b, (q15_t)0x3865, (q15_t)0x385f, (q15_t)0x385a, (q15_t)0x3854, - (q15_t)0x384e, (q15_t)0x3849, (q15_t)0x3843, (q15_t)0x383d, (q15_t)0x3838, (q15_t)0x3832, (q15_t)0x382d, (q15_t)0x3827, - (q15_t)0x3821, (q15_t)0x381c, (q15_t)0x3816, (q15_t)0x3810, (q15_t)0x380b, (q15_t)0x3805, (q15_t)0x37ff, (q15_t)0x37fa, - (q15_t)0x37f4, (q15_t)0x37ee, (q15_t)0x37e9, (q15_t)0x37e3, (q15_t)0x37dd, (q15_t)0x37d8, (q15_t)0x37d2, (q15_t)0x37cc, - (q15_t)0x37c7, (q15_t)0x37c1, (q15_t)0x37bc, (q15_t)0x37b6, (q15_t)0x37b0, (q15_t)0x37ab, (q15_t)0x37a5, (q15_t)0x379f, - (q15_t)0x379a, (q15_t)0x3794, (q15_t)0x378e, (q15_t)0x3789, (q15_t)0x3783, (q15_t)0x377d, (q15_t)0x3778, (q15_t)0x3772, - (q15_t)0x376c, (q15_t)0x3767, (q15_t)0x3761, (q15_t)0x375b, (q15_t)0x3756, (q15_t)0x3750, (q15_t)0x374a, (q15_t)0x3745, - (q15_t)0x373f, (q15_t)0x3739, (q15_t)0x3734, (q15_t)0x372e, (q15_t)0x3728, (q15_t)0x3723, (q15_t)0x371d, (q15_t)0x3717, - (q15_t)0x3712, (q15_t)0x370c, (q15_t)0x3706, (q15_t)0x3701, (q15_t)0x36fb, (q15_t)0x36f5, (q15_t)0x36f0, (q15_t)0x36ea, - (q15_t)0x36e4, (q15_t)0x36df, (q15_t)0x36d9, (q15_t)0x36d3, (q15_t)0x36ce, (q15_t)0x36c8, (q15_t)0x36c2, (q15_t)0x36bc, - (q15_t)0x36b7, (q15_t)0x36b1, (q15_t)0x36ab, (q15_t)0x36a6, (q15_t)0x36a0, (q15_t)0x369a, (q15_t)0x3695, (q15_t)0x368f, - (q15_t)0x3689, (q15_t)0x3684, (q15_t)0x367e, (q15_t)0x3678, (q15_t)0x3673, (q15_t)0x366d, (q15_t)0x3667, (q15_t)0x3662, - (q15_t)0x365c, (q15_t)0x3656, (q15_t)0x3650, (q15_t)0x364b, (q15_t)0x3645, (q15_t)0x363f, (q15_t)0x363a, (q15_t)0x3634, - (q15_t)0x362e, (q15_t)0x3629, (q15_t)0x3623, (q15_t)0x361d, (q15_t)0x3618, (q15_t)0x3612, (q15_t)0x360c, (q15_t)0x3606, - (q15_t)0x3601, (q15_t)0x35fb, (q15_t)0x35f5, (q15_t)0x35f0, (q15_t)0x35ea, (q15_t)0x35e4, (q15_t)0x35df, (q15_t)0x35d9, - (q15_t)0x35d3, (q15_t)0x35cd, (q15_t)0x35c8, (q15_t)0x35c2, (q15_t)0x35bc, (q15_t)0x35b7, (q15_t)0x35b1, (q15_t)0x35ab, - (q15_t)0x35a6, (q15_t)0x35a0, (q15_t)0x359a, (q15_t)0x3594, (q15_t)0x358f, (q15_t)0x3589, (q15_t)0x3583, (q15_t)0x357e, - (q15_t)0x3578, (q15_t)0x3572, (q15_t)0x356c, (q15_t)0x3567, (q15_t)0x3561, (q15_t)0x355b, (q15_t)0x3556, (q15_t)0x3550, - (q15_t)0x354a, (q15_t)0x3544, (q15_t)0x353f, (q15_t)0x3539, (q15_t)0x3533, (q15_t)0x352e, (q15_t)0x3528, (q15_t)0x3522, - (q15_t)0x351c, (q15_t)0x3517, (q15_t)0x3511, (q15_t)0x350b, (q15_t)0x3506, (q15_t)0x3500, (q15_t)0x34fa, (q15_t)0x34f4, - (q15_t)0x34ef, (q15_t)0x34e9, (q15_t)0x34e3, (q15_t)0x34de, (q15_t)0x34d8, (q15_t)0x34d2, (q15_t)0x34cc, (q15_t)0x34c7, - (q15_t)0x34c1, (q15_t)0x34bb, (q15_t)0x34b6, (q15_t)0x34b0, (q15_t)0x34aa, (q15_t)0x34a4, (q15_t)0x349f, (q15_t)0x3499, - (q15_t)0x3493, (q15_t)0x348d, (q15_t)0x3488, (q15_t)0x3482, (q15_t)0x347c, (q15_t)0x3476, (q15_t)0x3471, (q15_t)0x346b, - (q15_t)0x3465, (q15_t)0x3460, (q15_t)0x345a, (q15_t)0x3454, (q15_t)0x344e, (q15_t)0x3449, (q15_t)0x3443, (q15_t)0x343d, - (q15_t)0x3437, (q15_t)0x3432, (q15_t)0x342c, (q15_t)0x3426, (q15_t)0x3420, (q15_t)0x341b, (q15_t)0x3415, (q15_t)0x340f, - (q15_t)0x340a, (q15_t)0x3404, (q15_t)0x33fe, (q15_t)0x33f8, (q15_t)0x33f3, (q15_t)0x33ed, (q15_t)0x33e7, (q15_t)0x33e1, - (q15_t)0x33dc, (q15_t)0x33d6, (q15_t)0x33d0, (q15_t)0x33ca, (q15_t)0x33c5, (q15_t)0x33bf, (q15_t)0x33b9, (q15_t)0x33b3, - (q15_t)0x33ae, (q15_t)0x33a8, (q15_t)0x33a2, (q15_t)0x339c, (q15_t)0x3397, (q15_t)0x3391, (q15_t)0x338b, (q15_t)0x3385, - (q15_t)0x3380, (q15_t)0x337a, (q15_t)0x3374, (q15_t)0x336e, (q15_t)0x3369, (q15_t)0x3363, (q15_t)0x335d, (q15_t)0x3357, - (q15_t)0x3352, (q15_t)0x334c, (q15_t)0x3346, (q15_t)0x3340, (q15_t)0x333b, (q15_t)0x3335, (q15_t)0x332f, (q15_t)0x3329, - (q15_t)0x3324, (q15_t)0x331e, (q15_t)0x3318, (q15_t)0x3312, (q15_t)0x330c, (q15_t)0x3307, (q15_t)0x3301, (q15_t)0x32fb, - (q15_t)0x32f5, (q15_t)0x32f0, (q15_t)0x32ea, (q15_t)0x32e4, (q15_t)0x32de, (q15_t)0x32d9, (q15_t)0x32d3, (q15_t)0x32cd, - (q15_t)0x32c7, (q15_t)0x32c2, (q15_t)0x32bc, (q15_t)0x32b6, (q15_t)0x32b0, (q15_t)0x32aa, (q15_t)0x32a5, (q15_t)0x329f, - (q15_t)0x3299, (q15_t)0x3293, (q15_t)0x328e, (q15_t)0x3288, (q15_t)0x3282, (q15_t)0x327c, (q15_t)0x3276, (q15_t)0x3271, - (q15_t)0x326b, (q15_t)0x3265, (q15_t)0x325f, (q15_t)0x325a, (q15_t)0x3254, (q15_t)0x324e, (q15_t)0x3248, (q15_t)0x3243, - (q15_t)0x323d, (q15_t)0x3237, (q15_t)0x3231, (q15_t)0x322b, (q15_t)0x3226, (q15_t)0x3220, (q15_t)0x321a, (q15_t)0x3214, - (q15_t)0x320e, (q15_t)0x3209, (q15_t)0x3203, (q15_t)0x31fd, (q15_t)0x31f7, (q15_t)0x31f2, (q15_t)0x31ec, (q15_t)0x31e6, - (q15_t)0x31e0, (q15_t)0x31da, (q15_t)0x31d5, (q15_t)0x31cf, (q15_t)0x31c9, (q15_t)0x31c3, (q15_t)0x31bd, (q15_t)0x31b8, - (q15_t)0x31b2, (q15_t)0x31ac, (q15_t)0x31a6, (q15_t)0x31a1, (q15_t)0x319b, (q15_t)0x3195, (q15_t)0x318f, (q15_t)0x3189, - (q15_t)0x3184, (q15_t)0x317e, (q15_t)0x3178, (q15_t)0x3172, (q15_t)0x316c, (q15_t)0x3167, (q15_t)0x3161, (q15_t)0x315b, - (q15_t)0x3155, (q15_t)0x314f, (q15_t)0x314a, (q15_t)0x3144, (q15_t)0x313e, (q15_t)0x3138, (q15_t)0x3132, (q15_t)0x312d, - (q15_t)0x3127, (q15_t)0x3121, (q15_t)0x311b, (q15_t)0x3115, (q15_t)0x3110, (q15_t)0x310a, (q15_t)0x3104, (q15_t)0x30fe, - (q15_t)0x30f8, (q15_t)0x30f3, (q15_t)0x30ed, (q15_t)0x30e7, (q15_t)0x30e1, (q15_t)0x30db, (q15_t)0x30d6, (q15_t)0x30d0, - (q15_t)0x30ca, (q15_t)0x30c4, (q15_t)0x30be, (q15_t)0x30b8, (q15_t)0x30b3, (q15_t)0x30ad, (q15_t)0x30a7, (q15_t)0x30a1, - (q15_t)0x309b, (q15_t)0x3096, (q15_t)0x3090, (q15_t)0x308a, (q15_t)0x3084, (q15_t)0x307e, (q15_t)0x3079, (q15_t)0x3073, - (q15_t)0x306d, (q15_t)0x3067, (q15_t)0x3061, (q15_t)0x305b, (q15_t)0x3056, (q15_t)0x3050, (q15_t)0x304a, (q15_t)0x3044, - (q15_t)0x303e, (q15_t)0x3039, (q15_t)0x3033, (q15_t)0x302d, (q15_t)0x3027, (q15_t)0x3021, (q15_t)0x301b, (q15_t)0x3016, - (q15_t)0x3010, (q15_t)0x300a, (q15_t)0x3004, (q15_t)0x2ffe, (q15_t)0x2ff8, (q15_t)0x2ff3, (q15_t)0x2fed, (q15_t)0x2fe7, - (q15_t)0x2fe1, (q15_t)0x2fdb, (q15_t)0x2fd6, (q15_t)0x2fd0, (q15_t)0x2fca, (q15_t)0x2fc4, (q15_t)0x2fbe, (q15_t)0x2fb8, - (q15_t)0x2fb3, (q15_t)0x2fad, (q15_t)0x2fa7, (q15_t)0x2fa1, (q15_t)0x2f9b, (q15_t)0x2f95, (q15_t)0x2f90, (q15_t)0x2f8a, - (q15_t)0x2f84, (q15_t)0x2f7e, (q15_t)0x2f78, (q15_t)0x2f72, (q15_t)0x2f6d, (q15_t)0x2f67, (q15_t)0x2f61, (q15_t)0x2f5b, - (q15_t)0x2f55, (q15_t)0x2f4f, (q15_t)0x2f4a, (q15_t)0x2f44, (q15_t)0x2f3e, (q15_t)0x2f38, (q15_t)0x2f32, (q15_t)0x2f2c, - (q15_t)0x2f27, (q15_t)0x2f21, (q15_t)0x2f1b, (q15_t)0x2f15, (q15_t)0x2f0f, (q15_t)0x2f09, (q15_t)0x2f03, (q15_t)0x2efe, - (q15_t)0x2ef8, (q15_t)0x2ef2, (q15_t)0x2eec, (q15_t)0x2ee6, (q15_t)0x2ee0, (q15_t)0x2edb, (q15_t)0x2ed5, (q15_t)0x2ecf, - (q15_t)0x2ec9, (q15_t)0x2ec3, (q15_t)0x2ebd, (q15_t)0x2eb7, (q15_t)0x2eb2, (q15_t)0x2eac, (q15_t)0x2ea6, (q15_t)0x2ea0, - (q15_t)0x2e9a, (q15_t)0x2e94, (q15_t)0x2e8e, (q15_t)0x2e89, (q15_t)0x2e83, (q15_t)0x2e7d, (q15_t)0x2e77, (q15_t)0x2e71, - (q15_t)0x2e6b, (q15_t)0x2e65, (q15_t)0x2e60, (q15_t)0x2e5a, (q15_t)0x2e54, (q15_t)0x2e4e, (q15_t)0x2e48, (q15_t)0x2e42, - (q15_t)0x2e3c, (q15_t)0x2e37, (q15_t)0x2e31, (q15_t)0x2e2b, (q15_t)0x2e25, (q15_t)0x2e1f, (q15_t)0x2e19, (q15_t)0x2e13, - (q15_t)0x2e0e, (q15_t)0x2e08, (q15_t)0x2e02, (q15_t)0x2dfc, (q15_t)0x2df6, (q15_t)0x2df0, (q15_t)0x2dea, (q15_t)0x2de5, - (q15_t)0x2ddf, (q15_t)0x2dd9, (q15_t)0x2dd3, (q15_t)0x2dcd, (q15_t)0x2dc7, (q15_t)0x2dc1, (q15_t)0x2dbb, (q15_t)0x2db6, - (q15_t)0x2db0, (q15_t)0x2daa, (q15_t)0x2da4, (q15_t)0x2d9e, (q15_t)0x2d98, (q15_t)0x2d92, (q15_t)0x2d8d, (q15_t)0x2d87, - (q15_t)0x2d81, (q15_t)0x2d7b, (q15_t)0x2d75, (q15_t)0x2d6f, (q15_t)0x2d69, (q15_t)0x2d63, (q15_t)0x2d5e, (q15_t)0x2d58, - (q15_t)0x2d52, (q15_t)0x2d4c, (q15_t)0x2d46, (q15_t)0x2d40, (q15_t)0x2d3a, (q15_t)0x2d34, (q15_t)0x2d2f, (q15_t)0x2d29, - (q15_t)0x2d23, (q15_t)0x2d1d, (q15_t)0x2d17, (q15_t)0x2d11, (q15_t)0x2d0b, (q15_t)0x2d05, (q15_t)0x2cff, (q15_t)0x2cfa, - (q15_t)0x2cf4, (q15_t)0x2cee, (q15_t)0x2ce8, (q15_t)0x2ce2, (q15_t)0x2cdc, (q15_t)0x2cd6, (q15_t)0x2cd0, (q15_t)0x2ccb, - (q15_t)0x2cc5, (q15_t)0x2cbf, (q15_t)0x2cb9, (q15_t)0x2cb3, (q15_t)0x2cad, (q15_t)0x2ca7, (q15_t)0x2ca1, (q15_t)0x2c9b, - (q15_t)0x2c96, (q15_t)0x2c90, (q15_t)0x2c8a, (q15_t)0x2c84, (q15_t)0x2c7e, (q15_t)0x2c78, (q15_t)0x2c72, (q15_t)0x2c6c, - (q15_t)0x2c66, (q15_t)0x2c61, (q15_t)0x2c5b, (q15_t)0x2c55, (q15_t)0x2c4f, (q15_t)0x2c49, (q15_t)0x2c43, (q15_t)0x2c3d, - (q15_t)0x2c37, (q15_t)0x2c31, (q15_t)0x2c2b, (q15_t)0x2c26, (q15_t)0x2c20, (q15_t)0x2c1a, (q15_t)0x2c14, (q15_t)0x2c0e, - (q15_t)0x2c08, (q15_t)0x2c02, (q15_t)0x2bfc, (q15_t)0x2bf6, (q15_t)0x2bf0, (q15_t)0x2beb, (q15_t)0x2be5, (q15_t)0x2bdf, - (q15_t)0x2bd9, (q15_t)0x2bd3, (q15_t)0x2bcd, (q15_t)0x2bc7, (q15_t)0x2bc1, (q15_t)0x2bbb, (q15_t)0x2bb5, (q15_t)0x2bb0, - (q15_t)0x2baa, (q15_t)0x2ba4, (q15_t)0x2b9e, (q15_t)0x2b98, (q15_t)0x2b92, (q15_t)0x2b8c, (q15_t)0x2b86, (q15_t)0x2b80, - (q15_t)0x2b7a, (q15_t)0x2b74, (q15_t)0x2b6f, (q15_t)0x2b69, (q15_t)0x2b63, (q15_t)0x2b5d, (q15_t)0x2b57, (q15_t)0x2b51, - (q15_t)0x2b4b, (q15_t)0x2b45, (q15_t)0x2b3f, (q15_t)0x2b39, (q15_t)0x2b33, (q15_t)0x2b2d, (q15_t)0x2b28, (q15_t)0x2b22, - (q15_t)0x2b1c, (q15_t)0x2b16, (q15_t)0x2b10, (q15_t)0x2b0a, (q15_t)0x2b04, (q15_t)0x2afe, (q15_t)0x2af8, (q15_t)0x2af2, - (q15_t)0x2aec, (q15_t)0x2ae6, (q15_t)0x2ae1, (q15_t)0x2adb, (q15_t)0x2ad5, (q15_t)0x2acf, (q15_t)0x2ac9, (q15_t)0x2ac3, - (q15_t)0x2abd, (q15_t)0x2ab7, (q15_t)0x2ab1, (q15_t)0x2aab, (q15_t)0x2aa5, (q15_t)0x2a9f, (q15_t)0x2a99, (q15_t)0x2a94, - (q15_t)0x2a8e, (q15_t)0x2a88, (q15_t)0x2a82, (q15_t)0x2a7c, (q15_t)0x2a76, (q15_t)0x2a70, (q15_t)0x2a6a, (q15_t)0x2a64, - (q15_t)0x2a5e, (q15_t)0x2a58, (q15_t)0x2a52, (q15_t)0x2a4c, (q15_t)0x2a47, (q15_t)0x2a41, (q15_t)0x2a3b, (q15_t)0x2a35, - (q15_t)0x2a2f, (q15_t)0x2a29, (q15_t)0x2a23, (q15_t)0x2a1d, (q15_t)0x2a17, (q15_t)0x2a11, (q15_t)0x2a0b, (q15_t)0x2a05, - (q15_t)0x29ff, (q15_t)0x29f9, (q15_t)0x29f3, (q15_t)0x29ee, (q15_t)0x29e8, (q15_t)0x29e2, (q15_t)0x29dc, (q15_t)0x29d6, - (q15_t)0x29d0, (q15_t)0x29ca, (q15_t)0x29c4, (q15_t)0x29be, (q15_t)0x29b8, (q15_t)0x29b2, (q15_t)0x29ac, (q15_t)0x29a6, - (q15_t)0x29a0, (q15_t)0x299a, (q15_t)0x2994, (q15_t)0x298e, (q15_t)0x2989, (q15_t)0x2983, (q15_t)0x297d, (q15_t)0x2977, - (q15_t)0x2971, (q15_t)0x296b, (q15_t)0x2965, (q15_t)0x295f, (q15_t)0x2959, (q15_t)0x2953, (q15_t)0x294d, (q15_t)0x2947, - (q15_t)0x2941, (q15_t)0x293b, (q15_t)0x2935, (q15_t)0x292f, (q15_t)0x2929, (q15_t)0x2923, (q15_t)0x291d, (q15_t)0x2918, - (q15_t)0x2912, (q15_t)0x290c, (q15_t)0x2906, (q15_t)0x2900, (q15_t)0x28fa, (q15_t)0x28f4, (q15_t)0x28ee, (q15_t)0x28e8, - (q15_t)0x28e2, (q15_t)0x28dc, (q15_t)0x28d6, (q15_t)0x28d0, (q15_t)0x28ca, (q15_t)0x28c4, (q15_t)0x28be, (q15_t)0x28b8, - (q15_t)0x28b2, (q15_t)0x28ac, (q15_t)0x28a6, (q15_t)0x28a0, (q15_t)0x289a, (q15_t)0x2895, (q15_t)0x288f, (q15_t)0x2889, - (q15_t)0x2883, (q15_t)0x287d, (q15_t)0x2877, (q15_t)0x2871, (q15_t)0x286b, (q15_t)0x2865, (q15_t)0x285f, (q15_t)0x2859, - (q15_t)0x2853, (q15_t)0x284d, (q15_t)0x2847, (q15_t)0x2841, (q15_t)0x283b, (q15_t)0x2835, (q15_t)0x282f, (q15_t)0x2829, - (q15_t)0x2823, (q15_t)0x281d, (q15_t)0x2817, (q15_t)0x2811, (q15_t)0x280b, (q15_t)0x2805, (q15_t)0x27ff, (q15_t)0x27f9, - (q15_t)0x27f3, (q15_t)0x27ee, (q15_t)0x27e8, (q15_t)0x27e2, (q15_t)0x27dc, (q15_t)0x27d6, (q15_t)0x27d0, (q15_t)0x27ca, - (q15_t)0x27c4, (q15_t)0x27be, (q15_t)0x27b8, (q15_t)0x27b2, (q15_t)0x27ac, (q15_t)0x27a6, (q15_t)0x27a0, (q15_t)0x279a, - (q15_t)0x2794, (q15_t)0x278e, (q15_t)0x2788, (q15_t)0x2782, (q15_t)0x277c, (q15_t)0x2776, (q15_t)0x2770, (q15_t)0x276a, - (q15_t)0x2764, (q15_t)0x275e, (q15_t)0x2758, (q15_t)0x2752, (q15_t)0x274c, (q15_t)0x2746, (q15_t)0x2740, (q15_t)0x273a, - (q15_t)0x2734, (q15_t)0x272e, (q15_t)0x2728, (q15_t)0x2722, (q15_t)0x271c, (q15_t)0x2716, (q15_t)0x2710, (q15_t)0x270a, - (q15_t)0x2704, (q15_t)0x26fe, (q15_t)0x26f8, (q15_t)0x26f2, (q15_t)0x26ec, (q15_t)0x26e7, (q15_t)0x26e1, (q15_t)0x26db, - (q15_t)0x26d5, (q15_t)0x26cf, (q15_t)0x26c9, (q15_t)0x26c3, (q15_t)0x26bd, (q15_t)0x26b7, (q15_t)0x26b1, (q15_t)0x26ab, - (q15_t)0x26a5, (q15_t)0x269f, (q15_t)0x2699, (q15_t)0x2693, (q15_t)0x268d, (q15_t)0x2687, (q15_t)0x2681, (q15_t)0x267b, - (q15_t)0x2675, (q15_t)0x266f, (q15_t)0x2669, (q15_t)0x2663, (q15_t)0x265d, (q15_t)0x2657, (q15_t)0x2651, (q15_t)0x264b, - (q15_t)0x2645, (q15_t)0x263f, (q15_t)0x2639, (q15_t)0x2633, (q15_t)0x262d, (q15_t)0x2627, (q15_t)0x2621, (q15_t)0x261b, - (q15_t)0x2615, (q15_t)0x260f, (q15_t)0x2609, (q15_t)0x2603, (q15_t)0x25fd, (q15_t)0x25f7, (q15_t)0x25f1, (q15_t)0x25eb, - (q15_t)0x25e5, (q15_t)0x25df, (q15_t)0x25d9, (q15_t)0x25d3, (q15_t)0x25cd, (q15_t)0x25c7, (q15_t)0x25c1, (q15_t)0x25bb, - (q15_t)0x25b5, (q15_t)0x25af, (q15_t)0x25a9, (q15_t)0x25a3, (q15_t)0x259d, (q15_t)0x2597, (q15_t)0x2591, (q15_t)0x258b, - (q15_t)0x2585, (q15_t)0x257f, (q15_t)0x2579, (q15_t)0x2573, (q15_t)0x256d, (q15_t)0x2567, (q15_t)0x2561, (q15_t)0x255b, - (q15_t)0x2555, (q15_t)0x254f, (q15_t)0x2549, (q15_t)0x2543, (q15_t)0x253d, (q15_t)0x2537, (q15_t)0x2531, (q15_t)0x252b, - (q15_t)0x2525, (q15_t)0x251f, (q15_t)0x2519, (q15_t)0x2513, (q15_t)0x250c, (q15_t)0x2506, (q15_t)0x2500, (q15_t)0x24fa, - (q15_t)0x24f4, (q15_t)0x24ee, (q15_t)0x24e8, (q15_t)0x24e2, (q15_t)0x24dc, (q15_t)0x24d6, (q15_t)0x24d0, (q15_t)0x24ca, - (q15_t)0x24c4, (q15_t)0x24be, (q15_t)0x24b8, (q15_t)0x24b2, (q15_t)0x24ac, (q15_t)0x24a6, (q15_t)0x24a0, (q15_t)0x249a, - (q15_t)0x2494, (q15_t)0x248e, (q15_t)0x2488, (q15_t)0x2482, (q15_t)0x247c, (q15_t)0x2476, (q15_t)0x2470, (q15_t)0x246a, - (q15_t)0x2464, (q15_t)0x245e, (q15_t)0x2458, (q15_t)0x2452, (q15_t)0x244c, (q15_t)0x2446, (q15_t)0x2440, (q15_t)0x243a, - (q15_t)0x2434, (q15_t)0x242e, (q15_t)0x2428, (q15_t)0x2422, (q15_t)0x241c, (q15_t)0x2416, (q15_t)0x2410, (q15_t)0x240a, - (q15_t)0x2404, (q15_t)0x23fd, (q15_t)0x23f7, (q15_t)0x23f1, (q15_t)0x23eb, (q15_t)0x23e5, (q15_t)0x23df, (q15_t)0x23d9, - (q15_t)0x23d3, (q15_t)0x23cd, (q15_t)0x23c7, (q15_t)0x23c1, (q15_t)0x23bb, (q15_t)0x23b5, (q15_t)0x23af, (q15_t)0x23a9, - (q15_t)0x23a3, (q15_t)0x239d, (q15_t)0x2397, (q15_t)0x2391, (q15_t)0x238b, (q15_t)0x2385, (q15_t)0x237f, (q15_t)0x2379, - (q15_t)0x2373, (q15_t)0x236d, (q15_t)0x2367, (q15_t)0x2361, (q15_t)0x235b, (q15_t)0x2355, (q15_t)0x234e, (q15_t)0x2348, - (q15_t)0x2342, (q15_t)0x233c, (q15_t)0x2336, (q15_t)0x2330, (q15_t)0x232a, (q15_t)0x2324, (q15_t)0x231e, (q15_t)0x2318, - (q15_t)0x2312, (q15_t)0x230c, (q15_t)0x2306, (q15_t)0x2300, (q15_t)0x22fa, (q15_t)0x22f4, (q15_t)0x22ee, (q15_t)0x22e8, - (q15_t)0x22e2, (q15_t)0x22dc, (q15_t)0x22d6, (q15_t)0x22d0, (q15_t)0x22ca, (q15_t)0x22c4, (q15_t)0x22bd, (q15_t)0x22b7, - (q15_t)0x22b1, (q15_t)0x22ab, (q15_t)0x22a5, (q15_t)0x229f, (q15_t)0x2299, (q15_t)0x2293, (q15_t)0x228d, (q15_t)0x2287, - (q15_t)0x2281, (q15_t)0x227b, (q15_t)0x2275, (q15_t)0x226f, (q15_t)0x2269, (q15_t)0x2263, (q15_t)0x225d, (q15_t)0x2257, - (q15_t)0x2251, (q15_t)0x224a, (q15_t)0x2244, (q15_t)0x223e, (q15_t)0x2238, (q15_t)0x2232, (q15_t)0x222c, (q15_t)0x2226, - (q15_t)0x2220, (q15_t)0x221a, (q15_t)0x2214, (q15_t)0x220e, (q15_t)0x2208, (q15_t)0x2202, (q15_t)0x21fc, (q15_t)0x21f6, - (q15_t)0x21f0, (q15_t)0x21ea, (q15_t)0x21e4, (q15_t)0x21dd, (q15_t)0x21d7, (q15_t)0x21d1, (q15_t)0x21cb, (q15_t)0x21c5, - (q15_t)0x21bf, (q15_t)0x21b9, (q15_t)0x21b3, (q15_t)0x21ad, (q15_t)0x21a7, (q15_t)0x21a1, (q15_t)0x219b, (q15_t)0x2195, - (q15_t)0x218f, (q15_t)0x2189, (q15_t)0x2183, (q15_t)0x217c, (q15_t)0x2176, (q15_t)0x2170, (q15_t)0x216a, (q15_t)0x2164, - (q15_t)0x215e, (q15_t)0x2158, (q15_t)0x2152, (q15_t)0x214c, (q15_t)0x2146, (q15_t)0x2140, (q15_t)0x213a, (q15_t)0x2134, - (q15_t)0x212e, (q15_t)0x2128, (q15_t)0x2121, (q15_t)0x211b, (q15_t)0x2115, (q15_t)0x210f, (q15_t)0x2109, (q15_t)0x2103, - (q15_t)0x20fd, (q15_t)0x20f7, (q15_t)0x20f1, (q15_t)0x20eb, (q15_t)0x20e5, (q15_t)0x20df, (q15_t)0x20d9, (q15_t)0x20d3, - (q15_t)0x20cc, (q15_t)0x20c6, (q15_t)0x20c0, (q15_t)0x20ba, (q15_t)0x20b4, (q15_t)0x20ae, (q15_t)0x20a8, (q15_t)0x20a2, - (q15_t)0x209c, (q15_t)0x2096, (q15_t)0x2090, (q15_t)0x208a, (q15_t)0x2084, (q15_t)0x207e, (q15_t)0x2077, (q15_t)0x2071, - (q15_t)0x206b, (q15_t)0x2065, (q15_t)0x205f, (q15_t)0x2059, (q15_t)0x2053, (q15_t)0x204d, (q15_t)0x2047, (q15_t)0x2041, - (q15_t)0x203b, (q15_t)0x2035, (q15_t)0x202e, (q15_t)0x2028, (q15_t)0x2022, (q15_t)0x201c, (q15_t)0x2016, (q15_t)0x2010, - (q15_t)0x200a, (q15_t)0x2004, (q15_t)0x1ffe, (q15_t)0x1ff8, (q15_t)0x1ff2, (q15_t)0x1fec, (q15_t)0x1fe5, (q15_t)0x1fdf, - (q15_t)0x1fd9, (q15_t)0x1fd3, (q15_t)0x1fcd, (q15_t)0x1fc7, (q15_t)0x1fc1, (q15_t)0x1fbb, (q15_t)0x1fb5, (q15_t)0x1faf, - (q15_t)0x1fa9, (q15_t)0x1fa3, (q15_t)0x1f9c, (q15_t)0x1f96, (q15_t)0x1f90, (q15_t)0x1f8a, (q15_t)0x1f84, (q15_t)0x1f7e, - (q15_t)0x1f78, (q15_t)0x1f72, (q15_t)0x1f6c, (q15_t)0x1f66, (q15_t)0x1f60, (q15_t)0x1f59, (q15_t)0x1f53, (q15_t)0x1f4d, - (q15_t)0x1f47, (q15_t)0x1f41, (q15_t)0x1f3b, (q15_t)0x1f35, (q15_t)0x1f2f, (q15_t)0x1f29, (q15_t)0x1f23, (q15_t)0x1f1d, - (q15_t)0x1f16, (q15_t)0x1f10, (q15_t)0x1f0a, (q15_t)0x1f04, (q15_t)0x1efe, (q15_t)0x1ef8, (q15_t)0x1ef2, (q15_t)0x1eec, - (q15_t)0x1ee6, (q15_t)0x1ee0, (q15_t)0x1ed9, (q15_t)0x1ed3, (q15_t)0x1ecd, (q15_t)0x1ec7, (q15_t)0x1ec1, (q15_t)0x1ebb, - (q15_t)0x1eb5, (q15_t)0x1eaf, (q15_t)0x1ea9, (q15_t)0x1ea3, (q15_t)0x1e9c, (q15_t)0x1e96, (q15_t)0x1e90, (q15_t)0x1e8a, - (q15_t)0x1e84, (q15_t)0x1e7e, (q15_t)0x1e78, (q15_t)0x1e72, (q15_t)0x1e6c, (q15_t)0x1e66, (q15_t)0x1e5f, (q15_t)0x1e59, - (q15_t)0x1e53, (q15_t)0x1e4d, (q15_t)0x1e47, (q15_t)0x1e41, (q15_t)0x1e3b, (q15_t)0x1e35, (q15_t)0x1e2f, (q15_t)0x1e29, - (q15_t)0x1e22, (q15_t)0x1e1c, (q15_t)0x1e16, (q15_t)0x1e10, (q15_t)0x1e0a, (q15_t)0x1e04, (q15_t)0x1dfe, (q15_t)0x1df8, - (q15_t)0x1df2, (q15_t)0x1deb, (q15_t)0x1de5, (q15_t)0x1ddf, (q15_t)0x1dd9, (q15_t)0x1dd3, (q15_t)0x1dcd, (q15_t)0x1dc7, - (q15_t)0x1dc1, (q15_t)0x1dbb, (q15_t)0x1db4, (q15_t)0x1dae, (q15_t)0x1da8, (q15_t)0x1da2, (q15_t)0x1d9c, (q15_t)0x1d96, - (q15_t)0x1d90, (q15_t)0x1d8a, (q15_t)0x1d84, (q15_t)0x1d7d, (q15_t)0x1d77, (q15_t)0x1d71, (q15_t)0x1d6b, (q15_t)0x1d65, - (q15_t)0x1d5f, (q15_t)0x1d59, (q15_t)0x1d53, (q15_t)0x1d4c, (q15_t)0x1d46, (q15_t)0x1d40, (q15_t)0x1d3a, (q15_t)0x1d34, - (q15_t)0x1d2e, (q15_t)0x1d28, (q15_t)0x1d22, (q15_t)0x1d1c, (q15_t)0x1d15, (q15_t)0x1d0f, (q15_t)0x1d09, (q15_t)0x1d03, - (q15_t)0x1cfd, (q15_t)0x1cf7, (q15_t)0x1cf1, (q15_t)0x1ceb, (q15_t)0x1ce4, (q15_t)0x1cde, (q15_t)0x1cd8, (q15_t)0x1cd2, - (q15_t)0x1ccc, (q15_t)0x1cc6, (q15_t)0x1cc0, (q15_t)0x1cba, (q15_t)0x1cb3, (q15_t)0x1cad, (q15_t)0x1ca7, (q15_t)0x1ca1, - (q15_t)0x1c9b, (q15_t)0x1c95, (q15_t)0x1c8f, (q15_t)0x1c89, (q15_t)0x1c83, (q15_t)0x1c7c, (q15_t)0x1c76, (q15_t)0x1c70, - (q15_t)0x1c6a, (q15_t)0x1c64, (q15_t)0x1c5e, (q15_t)0x1c58, (q15_t)0x1c51, (q15_t)0x1c4b, (q15_t)0x1c45, (q15_t)0x1c3f, - (q15_t)0x1c39, (q15_t)0x1c33, (q15_t)0x1c2d, (q15_t)0x1c27, (q15_t)0x1c20, (q15_t)0x1c1a, (q15_t)0x1c14, (q15_t)0x1c0e, - (q15_t)0x1c08, (q15_t)0x1c02, (q15_t)0x1bfc, (q15_t)0x1bf6, (q15_t)0x1bef, (q15_t)0x1be9, (q15_t)0x1be3, (q15_t)0x1bdd, - (q15_t)0x1bd7, (q15_t)0x1bd1, (q15_t)0x1bcb, (q15_t)0x1bc4, (q15_t)0x1bbe, (q15_t)0x1bb8, (q15_t)0x1bb2, (q15_t)0x1bac, - (q15_t)0x1ba6, (q15_t)0x1ba0, (q15_t)0x1b9a, (q15_t)0x1b93, (q15_t)0x1b8d, (q15_t)0x1b87, (q15_t)0x1b81, (q15_t)0x1b7b, - (q15_t)0x1b75, (q15_t)0x1b6f, (q15_t)0x1b68, (q15_t)0x1b62, (q15_t)0x1b5c, (q15_t)0x1b56, (q15_t)0x1b50, (q15_t)0x1b4a, - (q15_t)0x1b44, (q15_t)0x1b3d, (q15_t)0x1b37, (q15_t)0x1b31, (q15_t)0x1b2b, (q15_t)0x1b25, (q15_t)0x1b1f, (q15_t)0x1b19, - (q15_t)0x1b13, (q15_t)0x1b0c, (q15_t)0x1b06, (q15_t)0x1b00, (q15_t)0x1afa, (q15_t)0x1af4, (q15_t)0x1aee, (q15_t)0x1ae8, - (q15_t)0x1ae1, (q15_t)0x1adb, (q15_t)0x1ad5, (q15_t)0x1acf, (q15_t)0x1ac9, (q15_t)0x1ac3, (q15_t)0x1abd, (q15_t)0x1ab6, - (q15_t)0x1ab0, (q15_t)0x1aaa, (q15_t)0x1aa4, (q15_t)0x1a9e, (q15_t)0x1a98, (q15_t)0x1a91, (q15_t)0x1a8b, (q15_t)0x1a85, - (q15_t)0x1a7f, (q15_t)0x1a79, (q15_t)0x1a73, (q15_t)0x1a6d, (q15_t)0x1a66, (q15_t)0x1a60, (q15_t)0x1a5a, (q15_t)0x1a54, - (q15_t)0x1a4e, (q15_t)0x1a48, (q15_t)0x1a42, (q15_t)0x1a3b, (q15_t)0x1a35, (q15_t)0x1a2f, (q15_t)0x1a29, (q15_t)0x1a23, - (q15_t)0x1a1d, (q15_t)0x1a17, (q15_t)0x1a10, (q15_t)0x1a0a, (q15_t)0x1a04, (q15_t)0x19fe, (q15_t)0x19f8, (q15_t)0x19f2, - (q15_t)0x19eb, (q15_t)0x19e5, (q15_t)0x19df, (q15_t)0x19d9, (q15_t)0x19d3, (q15_t)0x19cd, (q15_t)0x19c7, (q15_t)0x19c0, - (q15_t)0x19ba, (q15_t)0x19b4, (q15_t)0x19ae, (q15_t)0x19a8, (q15_t)0x19a2, (q15_t)0x199b, (q15_t)0x1995, (q15_t)0x198f, - (q15_t)0x1989, (q15_t)0x1983, (q15_t)0x197d, (q15_t)0x1977, (q15_t)0x1970, (q15_t)0x196a, (q15_t)0x1964, (q15_t)0x195e, - (q15_t)0x1958, (q15_t)0x1952, (q15_t)0x194b, (q15_t)0x1945, (q15_t)0x193f, (q15_t)0x1939, (q15_t)0x1933, (q15_t)0x192d, - (q15_t)0x1926, (q15_t)0x1920, (q15_t)0x191a, (q15_t)0x1914, (q15_t)0x190e, (q15_t)0x1908, (q15_t)0x1901, (q15_t)0x18fb, - (q15_t)0x18f5, (q15_t)0x18ef, (q15_t)0x18e9, (q15_t)0x18e3, (q15_t)0x18dc, (q15_t)0x18d6, (q15_t)0x18d0, (q15_t)0x18ca, - (q15_t)0x18c4, (q15_t)0x18be, (q15_t)0x18b8, (q15_t)0x18b1, (q15_t)0x18ab, (q15_t)0x18a5, (q15_t)0x189f, (q15_t)0x1899, - (q15_t)0x1893, (q15_t)0x188c, (q15_t)0x1886, (q15_t)0x1880, (q15_t)0x187a, (q15_t)0x1874, (q15_t)0x186e, (q15_t)0x1867, - (q15_t)0x1861, (q15_t)0x185b, (q15_t)0x1855, (q15_t)0x184f, (q15_t)0x1848, (q15_t)0x1842, (q15_t)0x183c, (q15_t)0x1836, - (q15_t)0x1830, (q15_t)0x182a, (q15_t)0x1823, (q15_t)0x181d, (q15_t)0x1817, (q15_t)0x1811, (q15_t)0x180b, (q15_t)0x1805, - (q15_t)0x17fe, (q15_t)0x17f8, (q15_t)0x17f2, (q15_t)0x17ec, (q15_t)0x17e6, (q15_t)0x17e0, (q15_t)0x17d9, (q15_t)0x17d3, - (q15_t)0x17cd, (q15_t)0x17c7, (q15_t)0x17c1, (q15_t)0x17bb, (q15_t)0x17b4, (q15_t)0x17ae, (q15_t)0x17a8, (q15_t)0x17a2, - (q15_t)0x179c, (q15_t)0x1795, (q15_t)0x178f, (q15_t)0x1789, (q15_t)0x1783, (q15_t)0x177d, (q15_t)0x1777, (q15_t)0x1770, - (q15_t)0x176a, (q15_t)0x1764, (q15_t)0x175e, (q15_t)0x1758, (q15_t)0x1752, (q15_t)0x174b, (q15_t)0x1745, (q15_t)0x173f, - (q15_t)0x1739, (q15_t)0x1733, (q15_t)0x172c, (q15_t)0x1726, (q15_t)0x1720, (q15_t)0x171a, (q15_t)0x1714, (q15_t)0x170e, - (q15_t)0x1707, (q15_t)0x1701, (q15_t)0x16fb, (q15_t)0x16f5, (q15_t)0x16ef, (q15_t)0x16e8, (q15_t)0x16e2, (q15_t)0x16dc, - (q15_t)0x16d6, (q15_t)0x16d0, (q15_t)0x16ca, (q15_t)0x16c3, (q15_t)0x16bd, (q15_t)0x16b7, (q15_t)0x16b1, (q15_t)0x16ab, - (q15_t)0x16a4, (q15_t)0x169e, (q15_t)0x1698, (q15_t)0x1692, (q15_t)0x168c, (q15_t)0x1686, (q15_t)0x167f, (q15_t)0x1679, - (q15_t)0x1673, (q15_t)0x166d, (q15_t)0x1667, (q15_t)0x1660, (q15_t)0x165a, (q15_t)0x1654, (q15_t)0x164e, (q15_t)0x1648, - (q15_t)0x1642, (q15_t)0x163b, (q15_t)0x1635, (q15_t)0x162f, (q15_t)0x1629, (q15_t)0x1623, (q15_t)0x161c, (q15_t)0x1616, - (q15_t)0x1610, (q15_t)0x160a, (q15_t)0x1604, (q15_t)0x15fd, (q15_t)0x15f7, (q15_t)0x15f1, (q15_t)0x15eb, (q15_t)0x15e5, - (q15_t)0x15de, (q15_t)0x15d8, (q15_t)0x15d2, (q15_t)0x15cc, (q15_t)0x15c6, (q15_t)0x15c0, (q15_t)0x15b9, (q15_t)0x15b3, - (q15_t)0x15ad, (q15_t)0x15a7, (q15_t)0x15a1, (q15_t)0x159a, (q15_t)0x1594, (q15_t)0x158e, (q15_t)0x1588, (q15_t)0x1582, - (q15_t)0x157b, (q15_t)0x1575, (q15_t)0x156f, (q15_t)0x1569, (q15_t)0x1563, (q15_t)0x155c, (q15_t)0x1556, (q15_t)0x1550, - (q15_t)0x154a, (q15_t)0x1544, (q15_t)0x153d, (q15_t)0x1537, (q15_t)0x1531, (q15_t)0x152b, (q15_t)0x1525, (q15_t)0x151e, - (q15_t)0x1518, (q15_t)0x1512, (q15_t)0x150c, (q15_t)0x1506, (q15_t)0x14ff, (q15_t)0x14f9, (q15_t)0x14f3, (q15_t)0x14ed, - (q15_t)0x14e7, (q15_t)0x14e0, (q15_t)0x14da, (q15_t)0x14d4, (q15_t)0x14ce, (q15_t)0x14c8, (q15_t)0x14c1, (q15_t)0x14bb, - (q15_t)0x14b5, (q15_t)0x14af, (q15_t)0x14a9, (q15_t)0x14a2, (q15_t)0x149c, (q15_t)0x1496, (q15_t)0x1490, (q15_t)0x148a, - (q15_t)0x1483, (q15_t)0x147d, (q15_t)0x1477, (q15_t)0x1471, (q15_t)0x146b, (q15_t)0x1464, (q15_t)0x145e, (q15_t)0x1458, - (q15_t)0x1452, (q15_t)0x144c, (q15_t)0x1445, (q15_t)0x143f, (q15_t)0x1439, (q15_t)0x1433, (q15_t)0x142d, (q15_t)0x1426, - (q15_t)0x1420, (q15_t)0x141a, (q15_t)0x1414, (q15_t)0x140e, (q15_t)0x1407, (q15_t)0x1401, (q15_t)0x13fb, (q15_t)0x13f5, - (q15_t)0x13ef, (q15_t)0x13e8, (q15_t)0x13e2, (q15_t)0x13dc, (q15_t)0x13d6, (q15_t)0x13d0, (q15_t)0x13c9, (q15_t)0x13c3, - (q15_t)0x13bd, (q15_t)0x13b7, (q15_t)0x13b1, (q15_t)0x13aa, (q15_t)0x13a4, (q15_t)0x139e, (q15_t)0x1398, (q15_t)0x1391, - (q15_t)0x138b, (q15_t)0x1385, (q15_t)0x137f, (q15_t)0x1379, (q15_t)0x1372, (q15_t)0x136c, (q15_t)0x1366, (q15_t)0x1360, - (q15_t)0x135a, (q15_t)0x1353, (q15_t)0x134d, (q15_t)0x1347, (q15_t)0x1341, (q15_t)0x133b, (q15_t)0x1334, (q15_t)0x132e, - (q15_t)0x1328, (q15_t)0x1322, (q15_t)0x131b, (q15_t)0x1315, (q15_t)0x130f, (q15_t)0x1309, (q15_t)0x1303, (q15_t)0x12fc, - (q15_t)0x12f6, (q15_t)0x12f0, (q15_t)0x12ea, (q15_t)0x12e4, (q15_t)0x12dd, (q15_t)0x12d7, (q15_t)0x12d1, (q15_t)0x12cb, - (q15_t)0x12c4, (q15_t)0x12be, (q15_t)0x12b8, (q15_t)0x12b2, (q15_t)0x12ac, (q15_t)0x12a5, (q15_t)0x129f, (q15_t)0x1299, - (q15_t)0x1293, (q15_t)0x128d, (q15_t)0x1286, (q15_t)0x1280, (q15_t)0x127a, (q15_t)0x1274, (q15_t)0x126d, (q15_t)0x1267, - (q15_t)0x1261, (q15_t)0x125b, (q15_t)0x1255, (q15_t)0x124e, (q15_t)0x1248, (q15_t)0x1242, (q15_t)0x123c, (q15_t)0x1235, - (q15_t)0x122f, (q15_t)0x1229, (q15_t)0x1223, (q15_t)0x121d, (q15_t)0x1216, (q15_t)0x1210, (q15_t)0x120a, (q15_t)0x1204, - (q15_t)0x11fd, (q15_t)0x11f7, (q15_t)0x11f1, (q15_t)0x11eb, (q15_t)0x11e5, (q15_t)0x11de, (q15_t)0x11d8, (q15_t)0x11d2, - (q15_t)0x11cc, (q15_t)0x11c5, (q15_t)0x11bf, (q15_t)0x11b9, (q15_t)0x11b3, (q15_t)0x11ad, (q15_t)0x11a6, (q15_t)0x11a0, - (q15_t)0x119a, (q15_t)0x1194, (q15_t)0x118d, (q15_t)0x1187, (q15_t)0x1181, (q15_t)0x117b, (q15_t)0x1175, (q15_t)0x116e, - (q15_t)0x1168, (q15_t)0x1162, (q15_t)0x115c, (q15_t)0x1155, (q15_t)0x114f, (q15_t)0x1149, (q15_t)0x1143, (q15_t)0x113d, - (q15_t)0x1136, (q15_t)0x1130, (q15_t)0x112a, (q15_t)0x1124, (q15_t)0x111d, (q15_t)0x1117, (q15_t)0x1111, (q15_t)0x110b, - (q15_t)0x1105, (q15_t)0x10fe, (q15_t)0x10f8, (q15_t)0x10f2, (q15_t)0x10ec, (q15_t)0x10e5, (q15_t)0x10df, (q15_t)0x10d9, - (q15_t)0x10d3, (q15_t)0x10cc, (q15_t)0x10c6, (q15_t)0x10c0, (q15_t)0x10ba, (q15_t)0x10b4, (q15_t)0x10ad, (q15_t)0x10a7, - (q15_t)0x10a1, (q15_t)0x109b, (q15_t)0x1094, (q15_t)0x108e, (q15_t)0x1088, (q15_t)0x1082, (q15_t)0x107b, (q15_t)0x1075, - (q15_t)0x106f, (q15_t)0x1069, (q15_t)0x1063, (q15_t)0x105c, (q15_t)0x1056, (q15_t)0x1050, (q15_t)0x104a, (q15_t)0x1043, - (q15_t)0x103d, (q15_t)0x1037, (q15_t)0x1031, (q15_t)0x102a, (q15_t)0x1024, (q15_t)0x101e, (q15_t)0x1018, (q15_t)0x1012, - (q15_t)0x100b, (q15_t)0x1005, (q15_t)0xfff, (q15_t)0xff9, (q15_t)0xff2, (q15_t)0xfec, (q15_t)0xfe6, (q15_t)0xfe0, - (q15_t)0xfd9, (q15_t)0xfd3, (q15_t)0xfcd, (q15_t)0xfc7, (q15_t)0xfc0, (q15_t)0xfba, (q15_t)0xfb4, (q15_t)0xfae, - (q15_t)0xfa8, (q15_t)0xfa1, (q15_t)0xf9b, (q15_t)0xf95, (q15_t)0xf8f, (q15_t)0xf88, (q15_t)0xf82, (q15_t)0xf7c, - (q15_t)0xf76, (q15_t)0xf6f, (q15_t)0xf69, (q15_t)0xf63, (q15_t)0xf5d, (q15_t)0xf56, (q15_t)0xf50, (q15_t)0xf4a, - (q15_t)0xf44, (q15_t)0xf3e, (q15_t)0xf37, (q15_t)0xf31, (q15_t)0xf2b, (q15_t)0xf25, (q15_t)0xf1e, (q15_t)0xf18, - (q15_t)0xf12, (q15_t)0xf0c, (q15_t)0xf05, (q15_t)0xeff, (q15_t)0xef9, (q15_t)0xef3, (q15_t)0xeec, (q15_t)0xee6, - (q15_t)0xee0, (q15_t)0xeda, (q15_t)0xed3, (q15_t)0xecd, (q15_t)0xec7, (q15_t)0xec1, (q15_t)0xeba, (q15_t)0xeb4, - (q15_t)0xeae, (q15_t)0xea8, (q15_t)0xea1, (q15_t)0xe9b, (q15_t)0xe95, (q15_t)0xe8f, (q15_t)0xe89, (q15_t)0xe82, - (q15_t)0xe7c, (q15_t)0xe76, (q15_t)0xe70, (q15_t)0xe69, (q15_t)0xe63, (q15_t)0xe5d, (q15_t)0xe57, (q15_t)0xe50, - (q15_t)0xe4a, (q15_t)0xe44, (q15_t)0xe3e, (q15_t)0xe37, (q15_t)0xe31, (q15_t)0xe2b, (q15_t)0xe25, (q15_t)0xe1e, - (q15_t)0xe18, (q15_t)0xe12, (q15_t)0xe0c, (q15_t)0xe05, (q15_t)0xdff, (q15_t)0xdf9, (q15_t)0xdf3, (q15_t)0xdec, - (q15_t)0xde6, (q15_t)0xde0, (q15_t)0xdda, (q15_t)0xdd3, (q15_t)0xdcd, (q15_t)0xdc7, (q15_t)0xdc1, (q15_t)0xdba, - (q15_t)0xdb4, (q15_t)0xdae, (q15_t)0xda8, (q15_t)0xda1, (q15_t)0xd9b, (q15_t)0xd95, (q15_t)0xd8f, (q15_t)0xd88, - (q15_t)0xd82, (q15_t)0xd7c, (q15_t)0xd76, (q15_t)0xd6f, (q15_t)0xd69, (q15_t)0xd63, (q15_t)0xd5d, (q15_t)0xd56, - (q15_t)0xd50, (q15_t)0xd4a, (q15_t)0xd44, (q15_t)0xd3d, (q15_t)0xd37, (q15_t)0xd31, (q15_t)0xd2b, (q15_t)0xd24, - (q15_t)0xd1e, (q15_t)0xd18, (q15_t)0xd12, (q15_t)0xd0b, (q15_t)0xd05, (q15_t)0xcff, (q15_t)0xcf9, (q15_t)0xcf2, - (q15_t)0xcec, (q15_t)0xce6, (q15_t)0xce0, (q15_t)0xcd9, (q15_t)0xcd3, (q15_t)0xccd, (q15_t)0xcc7, (q15_t)0xcc0, - (q15_t)0xcba, (q15_t)0xcb4, (q15_t)0xcae, (q15_t)0xca7, (q15_t)0xca1, (q15_t)0xc9b, (q15_t)0xc95, (q15_t)0xc8e, - (q15_t)0xc88, (q15_t)0xc82, (q15_t)0xc7c, (q15_t)0xc75, (q15_t)0xc6f, (q15_t)0xc69, (q15_t)0xc63, (q15_t)0xc5c, - (q15_t)0xc56, (q15_t)0xc50, (q15_t)0xc4a, (q15_t)0xc43, (q15_t)0xc3d, (q15_t)0xc37, (q15_t)0xc31, (q15_t)0xc2a, - (q15_t)0xc24, (q15_t)0xc1e, (q15_t)0xc18, (q15_t)0xc11, (q15_t)0xc0b, (q15_t)0xc05, (q15_t)0xbff, (q15_t)0xbf8, - (q15_t)0xbf2, (q15_t)0xbec, (q15_t)0xbe6, (q15_t)0xbdf, (q15_t)0xbd9, (q15_t)0xbd3, (q15_t)0xbcd, (q15_t)0xbc6, - (q15_t)0xbc0, (q15_t)0xbba, (q15_t)0xbb4, (q15_t)0xbad, (q15_t)0xba7, (q15_t)0xba1, (q15_t)0xb9b, (q15_t)0xb94, - (q15_t)0xb8e, (q15_t)0xb88, (q15_t)0xb81, (q15_t)0xb7b, (q15_t)0xb75, (q15_t)0xb6f, (q15_t)0xb68, (q15_t)0xb62, - (q15_t)0xb5c, (q15_t)0xb56, (q15_t)0xb4f, (q15_t)0xb49, (q15_t)0xb43, (q15_t)0xb3d, (q15_t)0xb36, (q15_t)0xb30, - (q15_t)0xb2a, (q15_t)0xb24, (q15_t)0xb1d, (q15_t)0xb17, (q15_t)0xb11, (q15_t)0xb0b, (q15_t)0xb04, (q15_t)0xafe, - (q15_t)0xaf8, (q15_t)0xaf2, (q15_t)0xaeb, (q15_t)0xae5, (q15_t)0xadf, (q15_t)0xad8, (q15_t)0xad2, (q15_t)0xacc, - (q15_t)0xac6, (q15_t)0xabf, (q15_t)0xab9, (q15_t)0xab3, (q15_t)0xaad, (q15_t)0xaa6, (q15_t)0xaa0, (q15_t)0xa9a, - (q15_t)0xa94, (q15_t)0xa8d, (q15_t)0xa87, (q15_t)0xa81, (q15_t)0xa7b, (q15_t)0xa74, (q15_t)0xa6e, (q15_t)0xa68, - (q15_t)0xa62, (q15_t)0xa5b, (q15_t)0xa55, (q15_t)0xa4f, (q15_t)0xa48, (q15_t)0xa42, (q15_t)0xa3c, (q15_t)0xa36, - (q15_t)0xa2f, (q15_t)0xa29, (q15_t)0xa23, (q15_t)0xa1d, (q15_t)0xa16, (q15_t)0xa10, (q15_t)0xa0a, (q15_t)0xa04, - (q15_t)0x9fd, (q15_t)0x9f7, (q15_t)0x9f1, (q15_t)0x9eb, (q15_t)0x9e4, (q15_t)0x9de, (q15_t)0x9d8, (q15_t)0x9d1, - (q15_t)0x9cb, (q15_t)0x9c5, (q15_t)0x9bf, (q15_t)0x9b8, (q15_t)0x9b2, (q15_t)0x9ac, (q15_t)0x9a6, (q15_t)0x99f, - (q15_t)0x999, (q15_t)0x993, (q15_t)0x98d, (q15_t)0x986, (q15_t)0x980, (q15_t)0x97a, (q15_t)0x973, (q15_t)0x96d, - (q15_t)0x967, (q15_t)0x961, (q15_t)0x95a, (q15_t)0x954, (q15_t)0x94e, (q15_t)0x948, (q15_t)0x941, (q15_t)0x93b, - (q15_t)0x935, (q15_t)0x92f, (q15_t)0x928, (q15_t)0x922, (q15_t)0x91c, (q15_t)0x915, (q15_t)0x90f, (q15_t)0x909, - (q15_t)0x903, (q15_t)0x8fc, (q15_t)0x8f6, (q15_t)0x8f0, (q15_t)0x8ea, (q15_t)0x8e3, (q15_t)0x8dd, (q15_t)0x8d7, - (q15_t)0x8d1, (q15_t)0x8ca, (q15_t)0x8c4, (q15_t)0x8be, (q15_t)0x8b7, (q15_t)0x8b1, (q15_t)0x8ab, (q15_t)0x8a5, - (q15_t)0x89e, (q15_t)0x898, (q15_t)0x892, (q15_t)0x88c, (q15_t)0x885, (q15_t)0x87f, (q15_t)0x879, (q15_t)0x872, - (q15_t)0x86c, (q15_t)0x866, (q15_t)0x860, (q15_t)0x859, (q15_t)0x853, (q15_t)0x84d, (q15_t)0x847, (q15_t)0x840, - (q15_t)0x83a, (q15_t)0x834, (q15_t)0x82e, (q15_t)0x827, (q15_t)0x821, (q15_t)0x81b, (q15_t)0x814, (q15_t)0x80e, - (q15_t)0x808, (q15_t)0x802, (q15_t)0x7fb, (q15_t)0x7f5, (q15_t)0x7ef, (q15_t)0x7e9, (q15_t)0x7e2, (q15_t)0x7dc, - (q15_t)0x7d6, (q15_t)0x7cf, (q15_t)0x7c9, (q15_t)0x7c3, (q15_t)0x7bd, (q15_t)0x7b6, (q15_t)0x7b0, (q15_t)0x7aa, - (q15_t)0x7a4, (q15_t)0x79d, (q15_t)0x797, (q15_t)0x791, (q15_t)0x78a, (q15_t)0x784, (q15_t)0x77e, (q15_t)0x778, - (q15_t)0x771, (q15_t)0x76b, (q15_t)0x765, (q15_t)0x75f, (q15_t)0x758, (q15_t)0x752, (q15_t)0x74c, (q15_t)0x745, - (q15_t)0x73f, (q15_t)0x739, (q15_t)0x733, (q15_t)0x72c, (q15_t)0x726, (q15_t)0x720, (q15_t)0x71a, (q15_t)0x713, - (q15_t)0x70d, (q15_t)0x707, (q15_t)0x700, (q15_t)0x6fa, (q15_t)0x6f4, (q15_t)0x6ee, (q15_t)0x6e7, (q15_t)0x6e1, - (q15_t)0x6db, (q15_t)0x6d5, (q15_t)0x6ce, (q15_t)0x6c8, (q15_t)0x6c2, (q15_t)0x6bb, (q15_t)0x6b5, (q15_t)0x6af, - (q15_t)0x6a9, (q15_t)0x6a2, (q15_t)0x69c, (q15_t)0x696, (q15_t)0x690, (q15_t)0x689, (q15_t)0x683, (q15_t)0x67d, - (q15_t)0x676, (q15_t)0x670, (q15_t)0x66a, (q15_t)0x664, (q15_t)0x65d, (q15_t)0x657, (q15_t)0x651, (q15_t)0x64a, - (q15_t)0x644, (q15_t)0x63e, (q15_t)0x638, (q15_t)0x631, (q15_t)0x62b, (q15_t)0x625, (q15_t)0x61f, (q15_t)0x618, - (q15_t)0x612, (q15_t)0x60c, (q15_t)0x605, (q15_t)0x5ff, (q15_t)0x5f9, (q15_t)0x5f3, (q15_t)0x5ec, (q15_t)0x5e6, - (q15_t)0x5e0, (q15_t)0x5da, (q15_t)0x5d3, (q15_t)0x5cd, (q15_t)0x5c7, (q15_t)0x5c0, (q15_t)0x5ba, (q15_t)0x5b4, - (q15_t)0x5ae, (q15_t)0x5a7, (q15_t)0x5a1, (q15_t)0x59b, (q15_t)0x594, (q15_t)0x58e, (q15_t)0x588, (q15_t)0x582, - (q15_t)0x57b, (q15_t)0x575, (q15_t)0x56f, (q15_t)0x569, (q15_t)0x562, (q15_t)0x55c, (q15_t)0x556, (q15_t)0x54f, - (q15_t)0x549, (q15_t)0x543, (q15_t)0x53d, (q15_t)0x536, (q15_t)0x530, (q15_t)0x52a, (q15_t)0x523, (q15_t)0x51d, - (q15_t)0x517, (q15_t)0x511, (q15_t)0x50a, (q15_t)0x504, (q15_t)0x4fe, (q15_t)0x4f8, (q15_t)0x4f1, (q15_t)0x4eb, - (q15_t)0x4e5, (q15_t)0x4de, (q15_t)0x4d8, (q15_t)0x4d2, (q15_t)0x4cc, (q15_t)0x4c5, (q15_t)0x4bf, (q15_t)0x4b9, - (q15_t)0x4b2, (q15_t)0x4ac, (q15_t)0x4a6, (q15_t)0x4a0, (q15_t)0x499, (q15_t)0x493, (q15_t)0x48d, (q15_t)0x487, - (q15_t)0x480, (q15_t)0x47a, (q15_t)0x474, (q15_t)0x46d, (q15_t)0x467, (q15_t)0x461, (q15_t)0x45b, (q15_t)0x454, - (q15_t)0x44e, (q15_t)0x448, (q15_t)0x441, (q15_t)0x43b, (q15_t)0x435, (q15_t)0x42f, (q15_t)0x428, (q15_t)0x422, - (q15_t)0x41c, (q15_t)0x415, (q15_t)0x40f, (q15_t)0x409, (q15_t)0x403, (q15_t)0x3fc, (q15_t)0x3f6, (q15_t)0x3f0, - (q15_t)0x3ea, (q15_t)0x3e3, (q15_t)0x3dd, (q15_t)0x3d7, (q15_t)0x3d0, (q15_t)0x3ca, (q15_t)0x3c4, (q15_t)0x3be, - (q15_t)0x3b7, (q15_t)0x3b1, (q15_t)0x3ab, (q15_t)0x3a4, (q15_t)0x39e, (q15_t)0x398, (q15_t)0x392, (q15_t)0x38b, - (q15_t)0x385, (q15_t)0x37f, (q15_t)0x378, (q15_t)0x372, (q15_t)0x36c, (q15_t)0x366, (q15_t)0x35f, (q15_t)0x359, - (q15_t)0x353, (q15_t)0x34c, (q15_t)0x346, (q15_t)0x340, (q15_t)0x33a, (q15_t)0x333, (q15_t)0x32d, (q15_t)0x327, - (q15_t)0x321, (q15_t)0x31a, (q15_t)0x314, (q15_t)0x30e, (q15_t)0x307, (q15_t)0x301, (q15_t)0x2fb, (q15_t)0x2f5, - (q15_t)0x2ee, (q15_t)0x2e8, (q15_t)0x2e2, (q15_t)0x2db, (q15_t)0x2d5, (q15_t)0x2cf, (q15_t)0x2c9, (q15_t)0x2c2, - (q15_t)0x2bc, (q15_t)0x2b6, (q15_t)0x2af, (q15_t)0x2a9, (q15_t)0x2a3, (q15_t)0x29d, (q15_t)0x296, (q15_t)0x290, - (q15_t)0x28a, (q15_t)0x283, (q15_t)0x27d, (q15_t)0x277, (q15_t)0x271, (q15_t)0x26a, (q15_t)0x264, (q15_t)0x25e, - (q15_t)0x258, (q15_t)0x251, (q15_t)0x24b, (q15_t)0x245, (q15_t)0x23e, (q15_t)0x238, (q15_t)0x232, (q15_t)0x22c, - (q15_t)0x225, (q15_t)0x21f, (q15_t)0x219, (q15_t)0x212, (q15_t)0x20c, (q15_t)0x206, (q15_t)0x200, (q15_t)0x1f9, - (q15_t)0x1f3, (q15_t)0x1ed, (q15_t)0x1e6, (q15_t)0x1e0, (q15_t)0x1da, (q15_t)0x1d4, (q15_t)0x1cd, (q15_t)0x1c7, - (q15_t)0x1c1, (q15_t)0x1ba, (q15_t)0x1b4, (q15_t)0x1ae, (q15_t)0x1a8, (q15_t)0x1a1, (q15_t)0x19b, (q15_t)0x195, - (q15_t)0x18e, (q15_t)0x188, (q15_t)0x182, (q15_t)0x17c, (q15_t)0x175, (q15_t)0x16f, (q15_t)0x169, (q15_t)0x162, - (q15_t)0x15c, (q15_t)0x156, (q15_t)0x150, (q15_t)0x149, (q15_t)0x143, (q15_t)0x13d, (q15_t)0x137, (q15_t)0x130, - (q15_t)0x12a, (q15_t)0x124, (q15_t)0x11d, (q15_t)0x117, (q15_t)0x111, (q15_t)0x10b, (q15_t)0x104, (q15_t)0xfe, - (q15_t)0xf8, (q15_t)0xf1, (q15_t)0xeb, (q15_t)0xe5, (q15_t)0xdf, (q15_t)0xd8, (q15_t)0xd2, (q15_t)0xcc, - (q15_t)0xc5, (q15_t)0xbf, (q15_t)0xb9, (q15_t)0xb3, (q15_t)0xac, (q15_t)0xa6, (q15_t)0xa0, (q15_t)0x99, - (q15_t)0x93, (q15_t)0x8d, (q15_t)0x87, (q15_t)0x80, (q15_t)0x7a, (q15_t)0x74, (q15_t)0x6d, (q15_t)0x67, - (q15_t)0x61, (q15_t)0x5b, (q15_t)0x54, (q15_t)0x4e, (q15_t)0x48, (q15_t)0x41, (q15_t)0x3b, (q15_t)0x35, - (q15_t)0x2f, (q15_t)0x28, (q15_t)0x22, (q15_t)0x1c, (q15_t)0x15, (q15_t)0xf, (q15_t)0x9, (q15_t)0x3 -}; - -/** - * @} end of DCT4_IDCT4_Table group - */ - -/** - * @addtogroup DCT4_IDCT4 - * @{ - */ - -/** - * @brief Initialization function for the Q15 DCT4/IDCT4. - * @param[in,out] *S points to an instance of Q15 DCT4/IDCT4 structure. - * @param[in] *S_RFFT points to an instance of Q15 RFFT/RIFFT structure. - * @param[in] *S_CFFT points to an instance of Q15 CFFT/CIFFT structure. - * @param[in] N length of the DCT4. - * @param[in] Nby2 half of the length of the DCT4. - * @param[in] normalize normalizing factor. - * @return arm_status function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if N is not a supported transform length. - * \par Normalizing factor: - * The normalizing factor is sqrt(2/N), which depends on the size of transform N. - * Normalizing factors in 1.15 format are mentioned in the table below for different DCT sizes: - * \image html dct4NormalizingQ15Table.gif - */ - -arm_status arm_dct4_init_q15( - arm_dct4_instance_q15 * S, - arm_rfft_instance_q15 * S_RFFT, - arm_cfft_radix4_instance_q15 * S_CFFT, - uint16_t N, - uint16_t Nby2, - q15_t normalize) -{ - /* Initialise the default arm status */ - arm_status status = ARM_MATH_SUCCESS; - - /* Initializing the pointer array with the weight table base addresses of different lengths */ - q15_t *twiddlePtr[4] = { (q15_t *) WeightsQ15_128, (q15_t *) WeightsQ15_512, - (q15_t *) WeightsQ15_2048, (q15_t *) WeightsQ15_8192 - }; - - /* Initializing the pointer array with the cos factor table base addresses of different lengths */ - q15_t *pCosFactor[4] = - { (q15_t *) cos_factorsQ15_128, (q15_t *) cos_factorsQ15_512, - (q15_t *) cos_factorsQ15_2048, (q15_t *) cos_factorsQ15_8192 - }; - - /* Initialize the DCT4 length */ - S->N = N; - - /* Initialize the half of DCT4 length */ - S->Nby2 = Nby2; - - /* Initialize the DCT4 Normalizing factor */ - S->normalize = normalize; - - /* Initialize Real FFT Instance */ - S->pRfft = S_RFFT; - - /* Initialize Complex FFT Instance */ - S->pCfft = S_CFFT; - - switch (N) - { - /* Initialize the table modifier values */ - case 8192U: - S->pTwiddle = twiddlePtr[3]; - S->pCosFactor = pCosFactor[3]; - break; - case 2048U: - S->pTwiddle = twiddlePtr[2]; - S->pCosFactor = pCosFactor[2]; - break; - case 512U: - S->pTwiddle = twiddlePtr[1]; - S->pCosFactor = pCosFactor[1]; - break; - case 128U: - S->pTwiddle = twiddlePtr[0]; - S->pCosFactor = pCosFactor[0]; - break; - default: - status = ARM_MATH_ARGUMENT_ERROR; - } - - /* Initialize the RFFT/RIFFT */ - arm_rfft_init_q15(S->pRfft, S->N, 0U, 1U); - - /* return the status of DCT4 Init function */ - return (status); -} - -/** - * @} end of DCT4_IDCT4 group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_dct4_init_q31.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_dct4_init_q31.c deleted file mode 100644 index 8156844..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_dct4_init_q31.c +++ /dev/null @@ -1,7686 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_dct4_init_q31.c - * Description: Initialization function of DCT-4 & IDCT4 Q31 - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup DCT4_IDCT4 - */ - -/** - * @addtogroup DCT4_IDCT4_Table DCT Type IV Tables - * @{ - */ - -/* -* @brief Weights Table -*/ - -/** - * \par - * Weights tables are generated using the formula :
weights[n] = e^(-j*n*pi/(2*N))
- * \par - * C command to generate the table - *
- * for(i = 0; i< N; i++)
- * {
- *   weights[2*i]= cos(i*c);
- *   weights[(2*i)+1]= -sin(i * c);
- * } 
- * \par - * where N is the Number of weights to be calculated and c is pi/(2*N) - * \par - * Convert the output to q31 format by multiplying with 2^31 and saturated if required. - * \par - * In the tables below the real and imaginary values are placed alternatively, hence the - * array length is 2*N. - */ - -static const q31_t WeightsQ31_128[256] = { - (q31_t)0x7fffffff, (q31_t)0x00000000, (q31_t)0x7ffd885a, (q31_t)0xfe6de2e0, (q31_t)0x7ff62182, (q31_t)0xfcdbd541, (q31_t)0x7fe9cbc0, (q31_t)0xfb49e6a3, - (q31_t)0x7fd8878e, (q31_t)0xf9b82684, (q31_t)0x7fc25596, (q31_t)0xf826a462, (q31_t)0x7fa736b4, (q31_t)0xf6956fb7, (q31_t)0x7f872bf3, (q31_t)0xf50497fb, - (q31_t)0x7f62368f, (q31_t)0xf3742ca2, (q31_t)0x7f3857f6, (q31_t)0xf1e43d1c, (q31_t)0x7f0991c4, (q31_t)0xf054d8d5, (q31_t)0x7ed5e5c6, (q31_t)0xeec60f31, - (q31_t)0x7e9d55fc, (q31_t)0xed37ef91, (q31_t)0x7e5fe493, (q31_t)0xebaa894f, (q31_t)0x7e1d93ea, (q31_t)0xea1debbb, (q31_t)0x7dd6668f, (q31_t)0xe8922622, - (q31_t)0x7d8a5f40, (q31_t)0xe70747c4, (q31_t)0x7d3980ec, (q31_t)0xe57d5fda, (q31_t)0x7ce3ceb2, (q31_t)0xe3f47d96, (q31_t)0x7c894bde, (q31_t)0xe26cb01b, - (q31_t)0x7c29fbee, (q31_t)0xe0e60685, (q31_t)0x7bc5e290, (q31_t)0xdf608fe4, (q31_t)0x7b5d039e, (q31_t)0xdddc5b3b, (q31_t)0x7aef6323, (q31_t)0xdc597781, - (q31_t)0x7a7d055b, (q31_t)0xdad7f3a2, (q31_t)0x7a05eead, (q31_t)0xd957de7a, (q31_t)0x798a23b1, (q31_t)0xd7d946d8, (q31_t)0x7909a92d, (q31_t)0xd65c3b7b, - (q31_t)0x78848414, (q31_t)0xd4e0cb15, (q31_t)0x77fab989, (q31_t)0xd3670446, (q31_t)0x776c4edb, (q31_t)0xd1eef59e, (q31_t)0x76d94989, (q31_t)0xd078ad9e, - (q31_t)0x7641af3d, (q31_t)0xcf043ab3, (q31_t)0x75a585cf, (q31_t)0xcd91ab39, (q31_t)0x7504d345, (q31_t)0xcc210d79, (q31_t)0x745f9dd1, (q31_t)0xcab26fa9, - (q31_t)0x73b5ebd1, (q31_t)0xc945dfec, (q31_t)0x7307c3d0, (q31_t)0xc7db6c50, (q31_t)0x72552c85, (q31_t)0xc67322ce, (q31_t)0x719e2cd2, (q31_t)0xc50d1149, - (q31_t)0x70e2cbc6, (q31_t)0xc3a94590, (q31_t)0x7023109a, (q31_t)0xc247cd5a, (q31_t)0x6f5f02b2, (q31_t)0xc0e8b648, (q31_t)0x6e96a99d, (q31_t)0xbf8c0de3, - (q31_t)0x6dca0d14, (q31_t)0xbe31e19b, (q31_t)0x6cf934fc, (q31_t)0xbcda3ecb, (q31_t)0x6c242960, (q31_t)0xbb8532b0, (q31_t)0x6b4af279, (q31_t)0xba32ca71, - (q31_t)0x6a6d98a4, (q31_t)0xb8e31319, (q31_t)0x698c246c, (q31_t)0xb796199b, (q31_t)0x68a69e81, (q31_t)0xb64beacd, (q31_t)0x67bd0fbd, (q31_t)0xb5049368, - (q31_t)0x66cf8120, (q31_t)0xb3c0200c, (q31_t)0x65ddfbd3, (q31_t)0xb27e9d3c, (q31_t)0x64e88926, (q31_t)0xb140175b, (q31_t)0x63ef3290, (q31_t)0xb0049ab3, - (q31_t)0x62f201ac, (q31_t)0xaecc336c, (q31_t)0x61f1003f, (q31_t)0xad96ed92, (q31_t)0x60ec3830, (q31_t)0xac64d510, (q31_t)0x5fe3b38d, (q31_t)0xab35f5b5, - (q31_t)0x5ed77c8a, (q31_t)0xaa0a5b2e, (q31_t)0x5dc79d7c, (q31_t)0xa8e21106, (q31_t)0x5cb420e0, (q31_t)0xa7bd22ac, (q31_t)0x5b9d1154, (q31_t)0xa69b9b68, - (q31_t)0x5a82799a, (q31_t)0xa57d8666, (q31_t)0x59646498, (q31_t)0xa462eeac, (q31_t)0x5842dd54, (q31_t)0xa34bdf20, (q31_t)0x571deefa, (q31_t)0xa2386284, - (q31_t)0x55f5a4d2, (q31_t)0xa1288376, (q31_t)0x54ca0a4b, (q31_t)0xa01c4c73, (q31_t)0x539b2af0, (q31_t)0x9f13c7d0, (q31_t)0x5269126e, (q31_t)0x9e0effc1, - (q31_t)0x5133cc94, (q31_t)0x9d0dfe54, (q31_t)0x4ffb654d, (q31_t)0x9c10cd70, (q31_t)0x4ebfe8a5, (q31_t)0x9b1776da, (q31_t)0x4d8162c4, (q31_t)0x9a22042d, - (q31_t)0x4c3fdff4, (q31_t)0x99307ee0, (q31_t)0x4afb6c98, (q31_t)0x9842f043, (q31_t)0x49b41533, (q31_t)0x9759617f, (q31_t)0x4869e665, (q31_t)0x9673db94, - (q31_t)0x471cece7, (q31_t)0x9592675c, (q31_t)0x45cd358f, (q31_t)0x94b50d87, (q31_t)0x447acd50, (q31_t)0x93dbd6a0, (q31_t)0x4325c135, (q31_t)0x9306cb04, - (q31_t)0x41ce1e65, (q31_t)0x9235f2ec, (q31_t)0x4073f21d, (q31_t)0x91695663, (q31_t)0x3f1749b8, (q31_t)0x90a0fd4e, (q31_t)0x3db832a6, (q31_t)0x8fdcef66, - (q31_t)0x3c56ba70, (q31_t)0x8f1d343a, (q31_t)0x3af2eeb7, (q31_t)0x8e61d32e, (q31_t)0x398cdd32, (q31_t)0x8daad37b, (q31_t)0x382493b0, (q31_t)0x8cf83c30, - (q31_t)0x36ba2014, (q31_t)0x8c4a142f, (q31_t)0x354d9057, (q31_t)0x8ba0622f, (q31_t)0x33def287, (q31_t)0x8afb2cbb, (q31_t)0x326e54c7, (q31_t)0x8a5a7a31, - (q31_t)0x30fbc54d, (q31_t)0x89be50c3, (q31_t)0x2f875262, (q31_t)0x8926b677, (q31_t)0x2e110a62, (q31_t)0x8893b125, (q31_t)0x2c98fbba, (q31_t)0x88054677, - (q31_t)0x2b1f34eb, (q31_t)0x877b7bec, (q31_t)0x29a3c485, (q31_t)0x86f656d3, (q31_t)0x2826b928, (q31_t)0x8675dc4f, (q31_t)0x26a82186, (q31_t)0x85fa1153, - (q31_t)0x25280c5e, (q31_t)0x8582faa5, (q31_t)0x23a6887f, (q31_t)0x85109cdd, (q31_t)0x2223a4c5, (q31_t)0x84a2fc62, (q31_t)0x209f701c, (q31_t)0x843a1d70, - (q31_t)0x1f19f97b, (q31_t)0x83d60412, (q31_t)0x1d934fe5, (q31_t)0x8376b422, (q31_t)0x1c0b826a, (q31_t)0x831c314e, (q31_t)0x1a82a026, (q31_t)0x82c67f14, - (q31_t)0x18f8b83c, (q31_t)0x8275a0c0, (q31_t)0x176dd9de, (q31_t)0x82299971, (q31_t)0x15e21445, (q31_t)0x81e26c16, (q31_t)0x145576b1, (q31_t)0x81a01b6d, - (q31_t)0x12c8106f, (q31_t)0x8162aa04, (q31_t)0x1139f0cf, (q31_t)0x812a1a3a, (q31_t)0xfab272b, (q31_t)0x80f66e3c, (q31_t)0xe1bc2e4, (q31_t)0x80c7a80a, - (q31_t)0xc8bd35e, (q31_t)0x809dc971, (q31_t)0xafb6805, (q31_t)0x8078d40d, (q31_t)0x96a9049, (q31_t)0x8058c94c, (q31_t)0x7d95b9e, (q31_t)0x803daa6a, - (q31_t)0x647d97c, (q31_t)0x80277872, (q31_t)0x4b6195d, (q31_t)0x80163440, (q31_t)0x3242abf, (q31_t)0x8009de7e, (q31_t)0x1921d20, (q31_t)0x800277a6 -}; - -static const q31_t WeightsQ31_512[1024] = { - (q31_t)0x7fffffff, (q31_t)0x00000000, (q31_t)0x7fffd886, (q31_t)0xff9b781d, (q31_t)0x7fff6216, (q31_t)0xff36f078, (q31_t)0x7ffe9cb2, (q31_t)0xfed2694f, - (q31_t)0x7ffd885a, (q31_t)0xfe6de2e0, (q31_t)0x7ffc250f, (q31_t)0xfe095d69, (q31_t)0x7ffa72d1, (q31_t)0xfda4d929, (q31_t)0x7ff871a2, (q31_t)0xfd40565c, - (q31_t)0x7ff62182, (q31_t)0xfcdbd541, (q31_t)0x7ff38274, (q31_t)0xfc775616, (q31_t)0x7ff09478, (q31_t)0xfc12d91a, (q31_t)0x7fed5791, (q31_t)0xfbae5e89, - (q31_t)0x7fe9cbc0, (q31_t)0xfb49e6a3, (q31_t)0x7fe5f108, (q31_t)0xfae571a4, (q31_t)0x7fe1c76b, (q31_t)0xfa80ffcb, (q31_t)0x7fdd4eec, (q31_t)0xfa1c9157, - (q31_t)0x7fd8878e, (q31_t)0xf9b82684, (q31_t)0x7fd37153, (q31_t)0xf953bf91, (q31_t)0x7fce0c3e, (q31_t)0xf8ef5cbb, (q31_t)0x7fc85854, (q31_t)0xf88afe42, - (q31_t)0x7fc25596, (q31_t)0xf826a462, (q31_t)0x7fbc040a, (q31_t)0xf7c24f59, (q31_t)0x7fb563b3, (q31_t)0xf75dff66, (q31_t)0x7fae7495, (q31_t)0xf6f9b4c6, - (q31_t)0x7fa736b4, (q31_t)0xf6956fb7, (q31_t)0x7f9faa15, (q31_t)0xf6313077, (q31_t)0x7f97cebd, (q31_t)0xf5ccf743, (q31_t)0x7f8fa4b0, (q31_t)0xf568c45b, - (q31_t)0x7f872bf3, (q31_t)0xf50497fb, (q31_t)0x7f7e648c, (q31_t)0xf4a07261, (q31_t)0x7f754e80, (q31_t)0xf43c53cb, (q31_t)0x7f6be9d4, (q31_t)0xf3d83c77, - (q31_t)0x7f62368f, (q31_t)0xf3742ca2, (q31_t)0x7f5834b7, (q31_t)0xf310248a, (q31_t)0x7f4de451, (q31_t)0xf2ac246e, (q31_t)0x7f434563, (q31_t)0xf2482c8a, - (q31_t)0x7f3857f6, (q31_t)0xf1e43d1c, (q31_t)0x7f2d1c0e, (q31_t)0xf1805662, (q31_t)0x7f2191b4, (q31_t)0xf11c789a, (q31_t)0x7f15b8ee, (q31_t)0xf0b8a401, - (q31_t)0x7f0991c4, (q31_t)0xf054d8d5, (q31_t)0x7efd1c3c, (q31_t)0xeff11753, (q31_t)0x7ef05860, (q31_t)0xef8d5fb8, (q31_t)0x7ee34636, (q31_t)0xef29b243, - (q31_t)0x7ed5e5c6, (q31_t)0xeec60f31, (q31_t)0x7ec8371a, (q31_t)0xee6276bf, (q31_t)0x7eba3a39, (q31_t)0xedfee92b, (q31_t)0x7eabef2c, (q31_t)0xed9b66b2, - (q31_t)0x7e9d55fc, (q31_t)0xed37ef91, (q31_t)0x7e8e6eb2, (q31_t)0xecd48407, (q31_t)0x7e7f3957, (q31_t)0xec71244f, (q31_t)0x7e6fb5f4, (q31_t)0xec0dd0a8, - (q31_t)0x7e5fe493, (q31_t)0xebaa894f, (q31_t)0x7e4fc53e, (q31_t)0xeb474e81, (q31_t)0x7e3f57ff, (q31_t)0xeae4207a, (q31_t)0x7e2e9cdf, (q31_t)0xea80ff7a, - (q31_t)0x7e1d93ea, (q31_t)0xea1debbb, (q31_t)0x7e0c3d29, (q31_t)0xe9bae57d, (q31_t)0x7dfa98a8, (q31_t)0xe957ecfb, (q31_t)0x7de8a670, (q31_t)0xe8f50273, - (q31_t)0x7dd6668f, (q31_t)0xe8922622, (q31_t)0x7dc3d90d, (q31_t)0xe82f5844, (q31_t)0x7db0fdf8, (q31_t)0xe7cc9917, (q31_t)0x7d9dd55a, (q31_t)0xe769e8d8, - (q31_t)0x7d8a5f40, (q31_t)0xe70747c4, (q31_t)0x7d769bb5, (q31_t)0xe6a4b616, (q31_t)0x7d628ac6, (q31_t)0xe642340d, (q31_t)0x7d4e2c7f, (q31_t)0xe5dfc1e5, - (q31_t)0x7d3980ec, (q31_t)0xe57d5fda, (q31_t)0x7d24881b, (q31_t)0xe51b0e2a, (q31_t)0x7d0f4218, (q31_t)0xe4b8cd11, (q31_t)0x7cf9aef0, (q31_t)0xe4569ccb, - (q31_t)0x7ce3ceb2, (q31_t)0xe3f47d96, (q31_t)0x7ccda169, (q31_t)0xe3926fad, (q31_t)0x7cb72724, (q31_t)0xe330734d, (q31_t)0x7ca05ff1, (q31_t)0xe2ce88b3, - (q31_t)0x7c894bde, (q31_t)0xe26cb01b, (q31_t)0x7c71eaf9, (q31_t)0xe20ae9c1, (q31_t)0x7c5a3d50, (q31_t)0xe1a935e2, (q31_t)0x7c4242f2, (q31_t)0xe14794ba, - (q31_t)0x7c29fbee, (q31_t)0xe0e60685, (q31_t)0x7c116853, (q31_t)0xe0848b7f, (q31_t)0x7bf88830, (q31_t)0xe02323e5, (q31_t)0x7bdf5b94, (q31_t)0xdfc1cff3, - (q31_t)0x7bc5e290, (q31_t)0xdf608fe4, (q31_t)0x7bac1d31, (q31_t)0xdeff63f4, (q31_t)0x7b920b89, (q31_t)0xde9e4c60, (q31_t)0x7b77ada8, (q31_t)0xde3d4964, - (q31_t)0x7b5d039e, (q31_t)0xdddc5b3b, (q31_t)0x7b420d7a, (q31_t)0xdd7b8220, (q31_t)0x7b26cb4f, (q31_t)0xdd1abe51, (q31_t)0x7b0b3d2c, (q31_t)0xdcba1008, - (q31_t)0x7aef6323, (q31_t)0xdc597781, (q31_t)0x7ad33d45, (q31_t)0xdbf8f4f8, (q31_t)0x7ab6cba4, (q31_t)0xdb9888a8, (q31_t)0x7a9a0e50, (q31_t)0xdb3832cd, - (q31_t)0x7a7d055b, (q31_t)0xdad7f3a2, (q31_t)0x7a5fb0d8, (q31_t)0xda77cb63, (q31_t)0x7a4210d8, (q31_t)0xda17ba4a, (q31_t)0x7a24256f, (q31_t)0xd9b7c094, - (q31_t)0x7a05eead, (q31_t)0xd957de7a, (q31_t)0x79e76ca7, (q31_t)0xd8f81439, (q31_t)0x79c89f6e, (q31_t)0xd898620c, (q31_t)0x79a98715, (q31_t)0xd838c82d, - (q31_t)0x798a23b1, (q31_t)0xd7d946d8, (q31_t)0x796a7554, (q31_t)0xd779de47, (q31_t)0x794a7c12, (q31_t)0xd71a8eb5, (q31_t)0x792a37fe, (q31_t)0xd6bb585e, - (q31_t)0x7909a92d, (q31_t)0xd65c3b7b, (q31_t)0x78e8cfb2, (q31_t)0xd5fd3848, (q31_t)0x78c7aba2, (q31_t)0xd59e4eff, (q31_t)0x78a63d11, (q31_t)0xd53f7fda, - (q31_t)0x78848414, (q31_t)0xd4e0cb15, (q31_t)0x786280bf, (q31_t)0xd48230e9, (q31_t)0x78403329, (q31_t)0xd423b191, (q31_t)0x781d9b65, (q31_t)0xd3c54d47, - (q31_t)0x77fab989, (q31_t)0xd3670446, (q31_t)0x77d78daa, (q31_t)0xd308d6c7, (q31_t)0x77b417df, (q31_t)0xd2aac504, (q31_t)0x7790583e, (q31_t)0xd24ccf39, - (q31_t)0x776c4edb, (q31_t)0xd1eef59e, (q31_t)0x7747fbce, (q31_t)0xd191386e, (q31_t)0x77235f2d, (q31_t)0xd13397e2, (q31_t)0x76fe790e, (q31_t)0xd0d61434, - (q31_t)0x76d94989, (q31_t)0xd078ad9e, (q31_t)0x76b3d0b4, (q31_t)0xd01b6459, (q31_t)0x768e0ea6, (q31_t)0xcfbe389f, (q31_t)0x76680376, (q31_t)0xcf612aaa, - (q31_t)0x7641af3d, (q31_t)0xcf043ab3, (q31_t)0x761b1211, (q31_t)0xcea768f2, (q31_t)0x75f42c0b, (q31_t)0xce4ab5a2, (q31_t)0x75ccfd42, (q31_t)0xcdee20fc, - (q31_t)0x75a585cf, (q31_t)0xcd91ab39, (q31_t)0x757dc5ca, (q31_t)0xcd355491, (q31_t)0x7555bd4c, (q31_t)0xccd91d3d, (q31_t)0x752d6c6c, (q31_t)0xcc7d0578, - (q31_t)0x7504d345, (q31_t)0xcc210d79, (q31_t)0x74dbf1ef, (q31_t)0xcbc53579, (q31_t)0x74b2c884, (q31_t)0xcb697db0, (q31_t)0x7489571c, (q31_t)0xcb0de658, - (q31_t)0x745f9dd1, (q31_t)0xcab26fa9, (q31_t)0x74359cbd, (q31_t)0xca5719db, (q31_t)0x740b53fb, (q31_t)0xc9fbe527, (q31_t)0x73e0c3a3, (q31_t)0xc9a0d1c5, - (q31_t)0x73b5ebd1, (q31_t)0xc945dfec, (q31_t)0x738acc9e, (q31_t)0xc8eb0fd6, (q31_t)0x735f6626, (q31_t)0xc89061ba, (q31_t)0x7333b883, (q31_t)0xc835d5d0, - (q31_t)0x7307c3d0, (q31_t)0xc7db6c50, (q31_t)0x72db8828, (q31_t)0xc7812572, (q31_t)0x72af05a7, (q31_t)0xc727016d, (q31_t)0x72823c67, (q31_t)0xc6cd0079, - (q31_t)0x72552c85, (q31_t)0xc67322ce, (q31_t)0x7227d61c, (q31_t)0xc61968a2, (q31_t)0x71fa3949, (q31_t)0xc5bfd22e, (q31_t)0x71cc5626, (q31_t)0xc5665fa9, - (q31_t)0x719e2cd2, (q31_t)0xc50d1149, (q31_t)0x716fbd68, (q31_t)0xc4b3e746, (q31_t)0x71410805, (q31_t)0xc45ae1d7, (q31_t)0x71120cc5, (q31_t)0xc4020133, - (q31_t)0x70e2cbc6, (q31_t)0xc3a94590, (q31_t)0x70b34525, (q31_t)0xc350af26, (q31_t)0x708378ff, (q31_t)0xc2f83e2a, (q31_t)0x70536771, (q31_t)0xc29ff2d4, - (q31_t)0x7023109a, (q31_t)0xc247cd5a, (q31_t)0x6ff27497, (q31_t)0xc1efcdf3, (q31_t)0x6fc19385, (q31_t)0xc197f4d4, (q31_t)0x6f906d84, (q31_t)0xc1404233, - (q31_t)0x6f5f02b2, (q31_t)0xc0e8b648, (q31_t)0x6f2d532c, (q31_t)0xc0915148, (q31_t)0x6efb5f12, (q31_t)0xc03a1368, (q31_t)0x6ec92683, (q31_t)0xbfe2fcdf, - (q31_t)0x6e96a99d, (q31_t)0xbf8c0de3, (q31_t)0x6e63e87f, (q31_t)0xbf3546a8, (q31_t)0x6e30e34a, (q31_t)0xbedea765, (q31_t)0x6dfd9a1c, (q31_t)0xbe88304f, - (q31_t)0x6dca0d14, (q31_t)0xbe31e19b, (q31_t)0x6d963c54, (q31_t)0xbddbbb7f, (q31_t)0x6d6227fa, (q31_t)0xbd85be30, (q31_t)0x6d2dd027, (q31_t)0xbd2fe9e2, - (q31_t)0x6cf934fc, (q31_t)0xbcda3ecb, (q31_t)0x6cc45698, (q31_t)0xbc84bd1f, (q31_t)0x6c8f351c, (q31_t)0xbc2f6513, (q31_t)0x6c59d0a9, (q31_t)0xbbda36dd, - (q31_t)0x6c242960, (q31_t)0xbb8532b0, (q31_t)0x6bee3f62, (q31_t)0xbb3058c0, (q31_t)0x6bb812d1, (q31_t)0xbadba943, (q31_t)0x6b81a3cd, (q31_t)0xba87246d, - (q31_t)0x6b4af279, (q31_t)0xba32ca71, (q31_t)0x6b13fef5, (q31_t)0xb9de9b83, (q31_t)0x6adcc964, (q31_t)0xb98a97d8, (q31_t)0x6aa551e9, (q31_t)0xb936bfa4, - (q31_t)0x6a6d98a4, (q31_t)0xb8e31319, (q31_t)0x6a359db9, (q31_t)0xb88f926d, (q31_t)0x69fd614a, (q31_t)0xb83c3dd1, (q31_t)0x69c4e37a, (q31_t)0xb7e9157a, - (q31_t)0x698c246c, (q31_t)0xb796199b, (q31_t)0x69532442, (q31_t)0xb7434a67, (q31_t)0x6919e320, (q31_t)0xb6f0a812, (q31_t)0x68e06129, (q31_t)0xb69e32cd, - (q31_t)0x68a69e81, (q31_t)0xb64beacd, (q31_t)0x686c9b4b, (q31_t)0xb5f9d043, (q31_t)0x683257ab, (q31_t)0xb5a7e362, (q31_t)0x67f7d3c5, (q31_t)0xb556245e, - (q31_t)0x67bd0fbd, (q31_t)0xb5049368, (q31_t)0x67820bb7, (q31_t)0xb4b330b3, (q31_t)0x6746c7d8, (q31_t)0xb461fc70, (q31_t)0x670b4444, (q31_t)0xb410f6d3, - (q31_t)0x66cf8120, (q31_t)0xb3c0200c, (q31_t)0x66937e91, (q31_t)0xb36f784f, (q31_t)0x66573cbb, (q31_t)0xb31effcc, (q31_t)0x661abbc5, (q31_t)0xb2ceb6b5, - (q31_t)0x65ddfbd3, (q31_t)0xb27e9d3c, (q31_t)0x65a0fd0b, (q31_t)0xb22eb392, (q31_t)0x6563bf92, (q31_t)0xb1def9e9, (q31_t)0x6526438f, (q31_t)0xb18f7071, - (q31_t)0x64e88926, (q31_t)0xb140175b, (q31_t)0x64aa907f, (q31_t)0xb0f0eeda, (q31_t)0x646c59bf, (q31_t)0xb0a1f71d, (q31_t)0x642de50d, (q31_t)0xb0533055, - (q31_t)0x63ef3290, (q31_t)0xb0049ab3, (q31_t)0x63b0426d, (q31_t)0xafb63667, (q31_t)0x637114cc, (q31_t)0xaf6803a2, (q31_t)0x6331a9d4, (q31_t)0xaf1a0293, - (q31_t)0x62f201ac, (q31_t)0xaecc336c, (q31_t)0x62b21c7b, (q31_t)0xae7e965b, (q31_t)0x6271fa69, (q31_t)0xae312b92, (q31_t)0x62319b9d, (q31_t)0xade3f33e, - (q31_t)0x61f1003f, (q31_t)0xad96ed92, (q31_t)0x61b02876, (q31_t)0xad4a1aba, (q31_t)0x616f146c, (q31_t)0xacfd7ae8, (q31_t)0x612dc447, (q31_t)0xacb10e4b, - (q31_t)0x60ec3830, (q31_t)0xac64d510, (q31_t)0x60aa7050, (q31_t)0xac18cf69, (q31_t)0x60686ccf, (q31_t)0xabccfd83, (q31_t)0x60262dd6, (q31_t)0xab815f8d, - (q31_t)0x5fe3b38d, (q31_t)0xab35f5b5, (q31_t)0x5fa0fe1f, (q31_t)0xaaeac02c, (q31_t)0x5f5e0db3, (q31_t)0xaa9fbf1e, (q31_t)0x5f1ae274, (q31_t)0xaa54f2ba, - (q31_t)0x5ed77c8a, (q31_t)0xaa0a5b2e, (q31_t)0x5e93dc1f, (q31_t)0xa9bff8a8, (q31_t)0x5e50015d, (q31_t)0xa975cb57, (q31_t)0x5e0bec6e, (q31_t)0xa92bd367, - (q31_t)0x5dc79d7c, (q31_t)0xa8e21106, (q31_t)0x5d8314b1, (q31_t)0xa8988463, (q31_t)0x5d3e5237, (q31_t)0xa84f2daa, (q31_t)0x5cf95638, (q31_t)0xa8060d08, - (q31_t)0x5cb420e0, (q31_t)0xa7bd22ac, (q31_t)0x5c6eb258, (q31_t)0xa7746ec0, (q31_t)0x5c290acc, (q31_t)0xa72bf174, (q31_t)0x5be32a67, (q31_t)0xa6e3aaf2, - (q31_t)0x5b9d1154, (q31_t)0xa69b9b68, (q31_t)0x5b56bfbd, (q31_t)0xa653c303, (q31_t)0x5b1035cf, (q31_t)0xa60c21ee, (q31_t)0x5ac973b5, (q31_t)0xa5c4b855, - (q31_t)0x5a82799a, (q31_t)0xa57d8666, (q31_t)0x5a3b47ab, (q31_t)0xa5368c4b, (q31_t)0x59f3de12, (q31_t)0xa4efca31, (q31_t)0x59ac3cfd, (q31_t)0xa4a94043, - (q31_t)0x59646498, (q31_t)0xa462eeac, (q31_t)0x591c550e, (q31_t)0xa41cd599, (q31_t)0x58d40e8c, (q31_t)0xa3d6f534, (q31_t)0x588b9140, (q31_t)0xa3914da8, - (q31_t)0x5842dd54, (q31_t)0xa34bdf20, (q31_t)0x57f9f2f8, (q31_t)0xa306a9c8, (q31_t)0x57b0d256, (q31_t)0xa2c1adc9, (q31_t)0x57677b9d, (q31_t)0xa27ceb4f, - (q31_t)0x571deefa, (q31_t)0xa2386284, (q31_t)0x56d42c99, (q31_t)0xa1f41392, (q31_t)0x568a34a9, (q31_t)0xa1affea3, (q31_t)0x56400758, (q31_t)0xa16c23e1, - (q31_t)0x55f5a4d2, (q31_t)0xa1288376, (q31_t)0x55ab0d46, (q31_t)0xa0e51d8c, (q31_t)0x556040e2, (q31_t)0xa0a1f24d, (q31_t)0x55153fd4, (q31_t)0xa05f01e1, - (q31_t)0x54ca0a4b, (q31_t)0xa01c4c73, (q31_t)0x547ea073, (q31_t)0x9fd9d22a, (q31_t)0x5433027d, (q31_t)0x9f979331, (q31_t)0x53e73097, (q31_t)0x9f558fb0, - (q31_t)0x539b2af0, (q31_t)0x9f13c7d0, (q31_t)0x534ef1b5, (q31_t)0x9ed23bb9, (q31_t)0x53028518, (q31_t)0x9e90eb94, (q31_t)0x52b5e546, (q31_t)0x9e4fd78a, - (q31_t)0x5269126e, (q31_t)0x9e0effc1, (q31_t)0x521c0cc2, (q31_t)0x9dce6463, (q31_t)0x51ced46e, (q31_t)0x9d8e0597, (q31_t)0x518169a5, (q31_t)0x9d4de385, - (q31_t)0x5133cc94, (q31_t)0x9d0dfe54, (q31_t)0x50e5fd6d, (q31_t)0x9cce562c, (q31_t)0x5097fc5e, (q31_t)0x9c8eeb34, (q31_t)0x5049c999, (q31_t)0x9c4fbd93, - (q31_t)0x4ffb654d, (q31_t)0x9c10cd70, (q31_t)0x4faccfab, (q31_t)0x9bd21af3, (q31_t)0x4f5e08e3, (q31_t)0x9b93a641, (q31_t)0x4f0f1126, (q31_t)0x9b556f81, - (q31_t)0x4ebfe8a5, (q31_t)0x9b1776da, (q31_t)0x4e708f8f, (q31_t)0x9ad9bc71, (q31_t)0x4e210617, (q31_t)0x9a9c406e, (q31_t)0x4dd14c6e, (q31_t)0x9a5f02f5, - (q31_t)0x4d8162c4, (q31_t)0x9a22042d, (q31_t)0x4d31494b, (q31_t)0x99e5443b, (q31_t)0x4ce10034, (q31_t)0x99a8c345, (q31_t)0x4c9087b1, (q31_t)0x996c816f, - (q31_t)0x4c3fdff4, (q31_t)0x99307ee0, (q31_t)0x4bef092d, (q31_t)0x98f4bbbc, (q31_t)0x4b9e0390, (q31_t)0x98b93828, (q31_t)0x4b4ccf4d, (q31_t)0x987df449, - (q31_t)0x4afb6c98, (q31_t)0x9842f043, (q31_t)0x4aa9dba2, (q31_t)0x98082c3b, (q31_t)0x4a581c9e, (q31_t)0x97cda855, (q31_t)0x4a062fbd, (q31_t)0x979364b5, - (q31_t)0x49b41533, (q31_t)0x9759617f, (q31_t)0x4961cd33, (q31_t)0x971f9ed7, (q31_t)0x490f57ee, (q31_t)0x96e61ce0, (q31_t)0x48bcb599, (q31_t)0x96acdbbe, - (q31_t)0x4869e665, (q31_t)0x9673db94, (q31_t)0x4816ea86, (q31_t)0x963b1c86, (q31_t)0x47c3c22f, (q31_t)0x96029eb6, (q31_t)0x47706d93, (q31_t)0x95ca6247, - (q31_t)0x471cece7, (q31_t)0x9592675c, (q31_t)0x46c9405c, (q31_t)0x955aae17, (q31_t)0x46756828, (q31_t)0x9523369c, (q31_t)0x4621647d, (q31_t)0x94ec010b, - (q31_t)0x45cd358f, (q31_t)0x94b50d87, (q31_t)0x4578db93, (q31_t)0x947e5c33, (q31_t)0x452456bd, (q31_t)0x9447ed2f, (q31_t)0x44cfa740, (q31_t)0x9411c09e, - (q31_t)0x447acd50, (q31_t)0x93dbd6a0, (q31_t)0x4425c923, (q31_t)0x93a62f57, (q31_t)0x43d09aed, (q31_t)0x9370cae4, (q31_t)0x437b42e1, (q31_t)0x933ba968, - (q31_t)0x4325c135, (q31_t)0x9306cb04, (q31_t)0x42d0161e, (q31_t)0x92d22fd9, (q31_t)0x427a41d0, (q31_t)0x929dd806, (q31_t)0x42244481, (q31_t)0x9269c3ac, - (q31_t)0x41ce1e65, (q31_t)0x9235f2ec, (q31_t)0x4177cfb1, (q31_t)0x920265e4, (q31_t)0x4121589b, (q31_t)0x91cf1cb6, (q31_t)0x40cab958, (q31_t)0x919c1781, - (q31_t)0x4073f21d, (q31_t)0x91695663, (q31_t)0x401d0321, (q31_t)0x9136d97d, (q31_t)0x3fc5ec98, (q31_t)0x9104a0ee, (q31_t)0x3f6eaeb8, (q31_t)0x90d2acd4, - (q31_t)0x3f1749b8, (q31_t)0x90a0fd4e, (q31_t)0x3ebfbdcd, (q31_t)0x906f927c, (q31_t)0x3e680b2c, (q31_t)0x903e6c7b, (q31_t)0x3e10320d, (q31_t)0x900d8b69, - (q31_t)0x3db832a6, (q31_t)0x8fdcef66, (q31_t)0x3d600d2c, (q31_t)0x8fac988f, (q31_t)0x3d07c1d6, (q31_t)0x8f7c8701, (q31_t)0x3caf50da, (q31_t)0x8f4cbadb, - (q31_t)0x3c56ba70, (q31_t)0x8f1d343a, (q31_t)0x3bfdfecd, (q31_t)0x8eedf33b, (q31_t)0x3ba51e29, (q31_t)0x8ebef7fb, (q31_t)0x3b4c18ba, (q31_t)0x8e904298, - (q31_t)0x3af2eeb7, (q31_t)0x8e61d32e, (q31_t)0x3a99a057, (q31_t)0x8e33a9da, (q31_t)0x3a402dd2, (q31_t)0x8e05c6b7, (q31_t)0x39e6975e, (q31_t)0x8dd829e4, - (q31_t)0x398cdd32, (q31_t)0x8daad37b, (q31_t)0x3932ff87, (q31_t)0x8d7dc399, (q31_t)0x38d8fe93, (q31_t)0x8d50fa59, (q31_t)0x387eda8e, (q31_t)0x8d2477d8, - (q31_t)0x382493b0, (q31_t)0x8cf83c30, (q31_t)0x37ca2a30, (q31_t)0x8ccc477d, (q31_t)0x376f9e46, (q31_t)0x8ca099da, (q31_t)0x3714f02a, (q31_t)0x8c753362, - (q31_t)0x36ba2014, (q31_t)0x8c4a142f, (q31_t)0x365f2e3b, (q31_t)0x8c1f3c5d, (q31_t)0x36041ad9, (q31_t)0x8bf4ac05, (q31_t)0x35a8e625, (q31_t)0x8bca6343, - (q31_t)0x354d9057, (q31_t)0x8ba0622f, (q31_t)0x34f219a8, (q31_t)0x8b76a8e4, (q31_t)0x34968250, (q31_t)0x8b4d377c, (q31_t)0x343aca87, (q31_t)0x8b240e11, - (q31_t)0x33def287, (q31_t)0x8afb2cbb, (q31_t)0x3382fa88, (q31_t)0x8ad29394, (q31_t)0x3326e2c3, (q31_t)0x8aaa42b4, (q31_t)0x32caab6f, (q31_t)0x8a823a36, - (q31_t)0x326e54c7, (q31_t)0x8a5a7a31, (q31_t)0x3211df04, (q31_t)0x8a3302be, (q31_t)0x31b54a5e, (q31_t)0x8a0bd3f5, (q31_t)0x3158970e, (q31_t)0x89e4edef, - (q31_t)0x30fbc54d, (q31_t)0x89be50c3, (q31_t)0x309ed556, (q31_t)0x8997fc8a, (q31_t)0x3041c761, (q31_t)0x8971f15a, (q31_t)0x2fe49ba7, (q31_t)0x894c2f4c, - (q31_t)0x2f875262, (q31_t)0x8926b677, (q31_t)0x2f29ebcc, (q31_t)0x890186f2, (q31_t)0x2ecc681e, (q31_t)0x88dca0d3, (q31_t)0x2e6ec792, (q31_t)0x88b80432, - (q31_t)0x2e110a62, (q31_t)0x8893b125, (q31_t)0x2db330c7, (q31_t)0x886fa7c2, (q31_t)0x2d553afc, (q31_t)0x884be821, (q31_t)0x2cf72939, (q31_t)0x88287256, - (q31_t)0x2c98fbba, (q31_t)0x88054677, (q31_t)0x2c3ab2b9, (q31_t)0x87e2649b, (q31_t)0x2bdc4e6f, (q31_t)0x87bfccd7, (q31_t)0x2b7dcf17, (q31_t)0x879d7f41, - (q31_t)0x2b1f34eb, (q31_t)0x877b7bec, (q31_t)0x2ac08026, (q31_t)0x8759c2ef, (q31_t)0x2a61b101, (q31_t)0x8738545e, (q31_t)0x2a02c7b8, (q31_t)0x8717304e, - (q31_t)0x29a3c485, (q31_t)0x86f656d3, (q31_t)0x2944a7a2, (q31_t)0x86d5c802, (q31_t)0x28e5714b, (q31_t)0x86b583ee, (q31_t)0x288621b9, (q31_t)0x86958aac, - (q31_t)0x2826b928, (q31_t)0x8675dc4f, (q31_t)0x27c737d3, (q31_t)0x865678eb, (q31_t)0x27679df4, (q31_t)0x86376092, (q31_t)0x2707ebc7, (q31_t)0x86189359, - (q31_t)0x26a82186, (q31_t)0x85fa1153, (q31_t)0x26483f6c, (q31_t)0x85dbda91, (q31_t)0x25e845b6, (q31_t)0x85bdef28, (q31_t)0x2588349d, (q31_t)0x85a04f28, - (q31_t)0x25280c5e, (q31_t)0x8582faa5, (q31_t)0x24c7cd33, (q31_t)0x8565f1b0, (q31_t)0x24677758, (q31_t)0x8549345c, (q31_t)0x24070b08, (q31_t)0x852cc2bb, - (q31_t)0x23a6887f, (q31_t)0x85109cdd, (q31_t)0x2345eff8, (q31_t)0x84f4c2d4, (q31_t)0x22e541af, (q31_t)0x84d934b1, (q31_t)0x22847de0, (q31_t)0x84bdf286, - (q31_t)0x2223a4c5, (q31_t)0x84a2fc62, (q31_t)0x21c2b69c, (q31_t)0x84885258, (q31_t)0x2161b3a0, (q31_t)0x846df477, (q31_t)0x21009c0c, (q31_t)0x8453e2cf, - (q31_t)0x209f701c, (q31_t)0x843a1d70, (q31_t)0x203e300d, (q31_t)0x8420a46c, (q31_t)0x1fdcdc1b, (q31_t)0x840777d0, (q31_t)0x1f7b7481, (q31_t)0x83ee97ad, - (q31_t)0x1f19f97b, (q31_t)0x83d60412, (q31_t)0x1eb86b46, (q31_t)0x83bdbd0e, (q31_t)0x1e56ca1e, (q31_t)0x83a5c2b0, (q31_t)0x1df5163f, (q31_t)0x838e1507, - (q31_t)0x1d934fe5, (q31_t)0x8376b422, (q31_t)0x1d31774d, (q31_t)0x835fa00f, (q31_t)0x1ccf8cb3, (q31_t)0x8348d8dc, (q31_t)0x1c6d9053, (q31_t)0x83325e97, - (q31_t)0x1c0b826a, (q31_t)0x831c314e, (q31_t)0x1ba96335, (q31_t)0x83065110, (q31_t)0x1b4732ef, (q31_t)0x82f0bde8, (q31_t)0x1ae4f1d6, (q31_t)0x82db77e5, - (q31_t)0x1a82a026, (q31_t)0x82c67f14, (q31_t)0x1a203e1b, (q31_t)0x82b1d381, (q31_t)0x19bdcbf3, (q31_t)0x829d753a, (q31_t)0x195b49ea, (q31_t)0x8289644b, - (q31_t)0x18f8b83c, (q31_t)0x8275a0c0, (q31_t)0x18961728, (q31_t)0x82622aa6, (q31_t)0x183366e9, (q31_t)0x824f0208, (q31_t)0x17d0a7bc, (q31_t)0x823c26f3, - (q31_t)0x176dd9de, (q31_t)0x82299971, (q31_t)0x170afd8d, (q31_t)0x82175990, (q31_t)0x16a81305, (q31_t)0x82056758, (q31_t)0x16451a83, (q31_t)0x81f3c2d7, - (q31_t)0x15e21445, (q31_t)0x81e26c16, (q31_t)0x157f0086, (q31_t)0x81d16321, (q31_t)0x151bdf86, (q31_t)0x81c0a801, (q31_t)0x14b8b17f, (q31_t)0x81b03ac2, - (q31_t)0x145576b1, (q31_t)0x81a01b6d, (q31_t)0x13f22f58, (q31_t)0x81904a0c, (q31_t)0x138edbb1, (q31_t)0x8180c6a9, (q31_t)0x132b7bf9, (q31_t)0x8171914e, - (q31_t)0x12c8106f, (q31_t)0x8162aa04, (q31_t)0x1264994e, (q31_t)0x815410d4, (q31_t)0x120116d5, (q31_t)0x8145c5c7, (q31_t)0x119d8941, (q31_t)0x8137c8e6, - (q31_t)0x1139f0cf, (q31_t)0x812a1a3a, (q31_t)0x10d64dbd, (q31_t)0x811cb9ca, (q31_t)0x1072a048, (q31_t)0x810fa7a0, (q31_t)0x100ee8ad, (q31_t)0x8102e3c4, - (q31_t)0xfab272b, (q31_t)0x80f66e3c, (q31_t)0xf475bff, (q31_t)0x80ea4712, (q31_t)0xee38766, (q31_t)0x80de6e4c, (q31_t)0xe7fa99e, (q31_t)0x80d2e3f2, - (q31_t)0xe1bc2e4, (q31_t)0x80c7a80a, (q31_t)0xdb7d376, (q31_t)0x80bcba9d, (q31_t)0xd53db92, (q31_t)0x80b21baf, (q31_t)0xcefdb76, (q31_t)0x80a7cb49, - (q31_t)0xc8bd35e, (q31_t)0x809dc971, (q31_t)0xc27c389, (q31_t)0x8094162c, (q31_t)0xbc3ac35, (q31_t)0x808ab180, (q31_t)0xb5f8d9f, (q31_t)0x80819b74, - (q31_t)0xafb6805, (q31_t)0x8078d40d, (q31_t)0xa973ba5, (q31_t)0x80705b50, (q31_t)0xa3308bd, (q31_t)0x80683143, (q31_t)0x9cecf89, (q31_t)0x806055eb, - (q31_t)0x96a9049, (q31_t)0x8058c94c, (q31_t)0x9064b3a, (q31_t)0x80518b6b, (q31_t)0x8a2009a, (q31_t)0x804a9c4d, (q31_t)0x83db0a7, (q31_t)0x8043fbf6, - (q31_t)0x7d95b9e, (q31_t)0x803daa6a, (q31_t)0x77501be, (q31_t)0x8037a7ac, (q31_t)0x710a345, (q31_t)0x8031f3c2, (q31_t)0x6ac406f, (q31_t)0x802c8ead, - (q31_t)0x647d97c, (q31_t)0x80277872, (q31_t)0x5e36ea9, (q31_t)0x8022b114, (q31_t)0x57f0035, (q31_t)0x801e3895, (q31_t)0x51a8e5c, (q31_t)0x801a0ef8, - (q31_t)0x4b6195d, (q31_t)0x80163440, (q31_t)0x451a177, (q31_t)0x8012a86f, (q31_t)0x3ed26e6, (q31_t)0x800f6b88, (q31_t)0x388a9ea, (q31_t)0x800c7d8c, - (q31_t)0x3242abf, (q31_t)0x8009de7e, (q31_t)0x2bfa9a4, (q31_t)0x80078e5e, (q31_t)0x25b26d7, (q31_t)0x80058d2f, (q31_t)0x1f6a297, (q31_t)0x8003daf1, - (q31_t)0x1921d20, (q31_t)0x800277a6, (q31_t)0x12d96b1, (q31_t)0x8001634e, (q31_t)0xc90f88, (q31_t)0x80009dea, (q31_t)0x6487e3, (q31_t)0x8000277a -}; - -static const q31_t WeightsQ31_2048[4096] = { - (q31_t)0x7fffffff, (q31_t)0x00000000, (q31_t)0x7ffffd88, (q31_t)0xffe6de05, (q31_t)0x7ffff621, (q31_t)0xffcdbc0b, (q31_t)0x7fffe9cb, (q31_t)0xffb49a12, - (q31_t)0x7fffd886, (q31_t)0xff9b781d, (q31_t)0x7fffc251, (q31_t)0xff82562c, (q31_t)0x7fffa72c, (q31_t)0xff69343f, (q31_t)0x7fff8719, (q31_t)0xff501258, - (q31_t)0x7fff6216, (q31_t)0xff36f078, (q31_t)0x7fff3824, (q31_t)0xff1dcea0, (q31_t)0x7fff0943, (q31_t)0xff04acd0, (q31_t)0x7ffed572, (q31_t)0xfeeb8b0a, - (q31_t)0x7ffe9cb2, (q31_t)0xfed2694f, (q31_t)0x7ffe5f03, (q31_t)0xfeb947a0, (q31_t)0x7ffe1c65, (q31_t)0xfea025fd, (q31_t)0x7ffdd4d7, (q31_t)0xfe870467, - (q31_t)0x7ffd885a, (q31_t)0xfe6de2e0, (q31_t)0x7ffd36ee, (q31_t)0xfe54c169, (q31_t)0x7ffce093, (q31_t)0xfe3ba002, (q31_t)0x7ffc8549, (q31_t)0xfe227eac, - (q31_t)0x7ffc250f, (q31_t)0xfe095d69, (q31_t)0x7ffbbfe6, (q31_t)0xfdf03c3a, (q31_t)0x7ffb55ce, (q31_t)0xfdd71b1e, (q31_t)0x7ffae6c7, (q31_t)0xfdbdfa18, - (q31_t)0x7ffa72d1, (q31_t)0xfda4d929, (q31_t)0x7ff9f9ec, (q31_t)0xfd8bb850, (q31_t)0x7ff97c18, (q31_t)0xfd729790, (q31_t)0x7ff8f954, (q31_t)0xfd5976e9, - (q31_t)0x7ff871a2, (q31_t)0xfd40565c, (q31_t)0x7ff7e500, (q31_t)0xfd2735ea, (q31_t)0x7ff75370, (q31_t)0xfd0e1594, (q31_t)0x7ff6bcf0, (q31_t)0xfcf4f55c, - (q31_t)0x7ff62182, (q31_t)0xfcdbd541, (q31_t)0x7ff58125, (q31_t)0xfcc2b545, (q31_t)0x7ff4dbd9, (q31_t)0xfca9956a, (q31_t)0x7ff4319d, (q31_t)0xfc9075af, - (q31_t)0x7ff38274, (q31_t)0xfc775616, (q31_t)0x7ff2ce5b, (q31_t)0xfc5e36a0, (q31_t)0x7ff21553, (q31_t)0xfc45174e, (q31_t)0x7ff1575d, (q31_t)0xfc2bf821, - (q31_t)0x7ff09478, (q31_t)0xfc12d91a, (q31_t)0x7fefcca4, (q31_t)0xfbf9ba39, (q31_t)0x7feeffe1, (q31_t)0xfbe09b80, (q31_t)0x7fee2e30, (q31_t)0xfbc77cf0, - (q31_t)0x7fed5791, (q31_t)0xfbae5e89, (q31_t)0x7fec7c02, (q31_t)0xfb95404d, (q31_t)0x7feb9b85, (q31_t)0xfb7c223d, (q31_t)0x7feab61a, (q31_t)0xfb630459, - (q31_t)0x7fe9cbc0, (q31_t)0xfb49e6a3, (q31_t)0x7fe8dc78, (q31_t)0xfb30c91b, (q31_t)0x7fe7e841, (q31_t)0xfb17abc2, (q31_t)0x7fe6ef1c, (q31_t)0xfafe8e9b, - (q31_t)0x7fe5f108, (q31_t)0xfae571a4, (q31_t)0x7fe4ee06, (q31_t)0xfacc54e0, (q31_t)0x7fe3e616, (q31_t)0xfab3384f, (q31_t)0x7fe2d938, (q31_t)0xfa9a1bf3, - (q31_t)0x7fe1c76b, (q31_t)0xfa80ffcb, (q31_t)0x7fe0b0b1, (q31_t)0xfa67e3da, (q31_t)0x7fdf9508, (q31_t)0xfa4ec821, (q31_t)0x7fde7471, (q31_t)0xfa35ac9f, - (q31_t)0x7fdd4eec, (q31_t)0xfa1c9157, (q31_t)0x7fdc247a, (q31_t)0xfa037648, (q31_t)0x7fdaf519, (q31_t)0xf9ea5b75, (q31_t)0x7fd9c0ca, (q31_t)0xf9d140de, - (q31_t)0x7fd8878e, (q31_t)0xf9b82684, (q31_t)0x7fd74964, (q31_t)0xf99f0c68, (q31_t)0x7fd6064c, (q31_t)0xf985f28a, (q31_t)0x7fd4be46, (q31_t)0xf96cd8ed, - (q31_t)0x7fd37153, (q31_t)0xf953bf91, (q31_t)0x7fd21f72, (q31_t)0xf93aa676, (q31_t)0x7fd0c8a3, (q31_t)0xf9218d9e, (q31_t)0x7fcf6ce8, (q31_t)0xf908750a, - (q31_t)0x7fce0c3e, (q31_t)0xf8ef5cbb, (q31_t)0x7fcca6a7, (q31_t)0xf8d644b2, (q31_t)0x7fcb3c23, (q31_t)0xf8bd2cef, (q31_t)0x7fc9ccb2, (q31_t)0xf8a41574, - (q31_t)0x7fc85854, (q31_t)0xf88afe42, (q31_t)0x7fc6df08, (q31_t)0xf871e759, (q31_t)0x7fc560cf, (q31_t)0xf858d0bb, (q31_t)0x7fc3dda9, (q31_t)0xf83fba68, - (q31_t)0x7fc25596, (q31_t)0xf826a462, (q31_t)0x7fc0c896, (q31_t)0xf80d8ea9, (q31_t)0x7fbf36aa, (q31_t)0xf7f4793e, (q31_t)0x7fbd9fd0, (q31_t)0xf7db6423, - (q31_t)0x7fbc040a, (q31_t)0xf7c24f59, (q31_t)0x7fba6357, (q31_t)0xf7a93ae0, (q31_t)0x7fb8bdb8, (q31_t)0xf79026b9, (q31_t)0x7fb7132b, (q31_t)0xf77712e5, - (q31_t)0x7fb563b3, (q31_t)0xf75dff66, (q31_t)0x7fb3af4e, (q31_t)0xf744ec3b, (q31_t)0x7fb1f5fc, (q31_t)0xf72bd967, (q31_t)0x7fb037bf, (q31_t)0xf712c6ea, - (q31_t)0x7fae7495, (q31_t)0xf6f9b4c6, (q31_t)0x7facac7f, (q31_t)0xf6e0a2fa, (q31_t)0x7faadf7c, (q31_t)0xf6c79188, (q31_t)0x7fa90d8e, (q31_t)0xf6ae8071, - (q31_t)0x7fa736b4, (q31_t)0xf6956fb7, (q31_t)0x7fa55aee, (q31_t)0xf67c5f59, (q31_t)0x7fa37a3c, (q31_t)0xf6634f59, (q31_t)0x7fa1949e, (q31_t)0xf64a3fb8, - (q31_t)0x7f9faa15, (q31_t)0xf6313077, (q31_t)0x7f9dbaa0, (q31_t)0xf6182196, (q31_t)0x7f9bc640, (q31_t)0xf5ff1318, (q31_t)0x7f99ccf4, (q31_t)0xf5e604fc, - (q31_t)0x7f97cebd, (q31_t)0xf5ccf743, (q31_t)0x7f95cb9a, (q31_t)0xf5b3e9f0, (q31_t)0x7f93c38c, (q31_t)0xf59add02, (q31_t)0x7f91b694, (q31_t)0xf581d07b, - (q31_t)0x7f8fa4b0, (q31_t)0xf568c45b, (q31_t)0x7f8d8de1, (q31_t)0xf54fb8a4, (q31_t)0x7f8b7227, (q31_t)0xf536ad56, (q31_t)0x7f895182, (q31_t)0xf51da273, - (q31_t)0x7f872bf3, (q31_t)0xf50497fb, (q31_t)0x7f850179, (q31_t)0xf4eb8def, (q31_t)0x7f82d214, (q31_t)0xf4d28451, (q31_t)0x7f809dc5, (q31_t)0xf4b97b21, - (q31_t)0x7f7e648c, (q31_t)0xf4a07261, (q31_t)0x7f7c2668, (q31_t)0xf4876a10, (q31_t)0x7f79e35a, (q31_t)0xf46e6231, (q31_t)0x7f779b62, (q31_t)0xf4555ac5, - (q31_t)0x7f754e80, (q31_t)0xf43c53cb, (q31_t)0x7f72fcb4, (q31_t)0xf4234d45, (q31_t)0x7f70a5fe, (q31_t)0xf40a4735, (q31_t)0x7f6e4a5e, (q31_t)0xf3f1419a, - (q31_t)0x7f6be9d4, (q31_t)0xf3d83c77, (q31_t)0x7f698461, (q31_t)0xf3bf37cb, (q31_t)0x7f671a05, (q31_t)0xf3a63398, (q31_t)0x7f64aabf, (q31_t)0xf38d2fe0, - (q31_t)0x7f62368f, (q31_t)0xf3742ca2, (q31_t)0x7f5fbd77, (q31_t)0xf35b29e0, (q31_t)0x7f5d3f75, (q31_t)0xf342279b, (q31_t)0x7f5abc8a, (q31_t)0xf32925d3, - (q31_t)0x7f5834b7, (q31_t)0xf310248a, (q31_t)0x7f55a7fa, (q31_t)0xf2f723c1, (q31_t)0x7f531655, (q31_t)0xf2de2379, (q31_t)0x7f507fc7, (q31_t)0xf2c523b2, - (q31_t)0x7f4de451, (q31_t)0xf2ac246e, (q31_t)0x7f4b43f2, (q31_t)0xf29325ad, (q31_t)0x7f489eaa, (q31_t)0xf27a2771, (q31_t)0x7f45f47b, (q31_t)0xf26129ba, - (q31_t)0x7f434563, (q31_t)0xf2482c8a, (q31_t)0x7f409164, (q31_t)0xf22f2fe1, (q31_t)0x7f3dd87c, (q31_t)0xf21633c0, (q31_t)0x7f3b1aad, (q31_t)0xf1fd3829, - (q31_t)0x7f3857f6, (q31_t)0xf1e43d1c, (q31_t)0x7f359057, (q31_t)0xf1cb429a, (q31_t)0x7f32c3d1, (q31_t)0xf1b248a5, (q31_t)0x7f2ff263, (q31_t)0xf1994f3d, - (q31_t)0x7f2d1c0e, (q31_t)0xf1805662, (q31_t)0x7f2a40d2, (q31_t)0xf1675e17, (q31_t)0x7f2760af, (q31_t)0xf14e665c, (q31_t)0x7f247ba5, (q31_t)0xf1356f32, - (q31_t)0x7f2191b4, (q31_t)0xf11c789a, (q31_t)0x7f1ea2dc, (q31_t)0xf1038295, (q31_t)0x7f1baf1e, (q31_t)0xf0ea8d24, (q31_t)0x7f18b679, (q31_t)0xf0d19848, - (q31_t)0x7f15b8ee, (q31_t)0xf0b8a401, (q31_t)0x7f12b67c, (q31_t)0xf09fb051, (q31_t)0x7f0faf25, (q31_t)0xf086bd39, (q31_t)0x7f0ca2e7, (q31_t)0xf06dcaba, - (q31_t)0x7f0991c4, (q31_t)0xf054d8d5, (q31_t)0x7f067bba, (q31_t)0xf03be78a, (q31_t)0x7f0360cb, (q31_t)0xf022f6da, (q31_t)0x7f0040f6, (q31_t)0xf00a06c8, - (q31_t)0x7efd1c3c, (q31_t)0xeff11753, (q31_t)0x7ef9f29d, (q31_t)0xefd8287c, (q31_t)0x7ef6c418, (q31_t)0xefbf3a45, (q31_t)0x7ef390ae, (q31_t)0xefa64cae, - (q31_t)0x7ef05860, (q31_t)0xef8d5fb8, (q31_t)0x7eed1b2c, (q31_t)0xef747365, (q31_t)0x7ee9d914, (q31_t)0xef5b87b5, (q31_t)0x7ee69217, (q31_t)0xef429caa, - (q31_t)0x7ee34636, (q31_t)0xef29b243, (q31_t)0x7edff570, (q31_t)0xef10c883, (q31_t)0x7edc9fc6, (q31_t)0xeef7df6a, (q31_t)0x7ed94538, (q31_t)0xeedef6f9, - (q31_t)0x7ed5e5c6, (q31_t)0xeec60f31, (q31_t)0x7ed28171, (q31_t)0xeead2813, (q31_t)0x7ecf1837, (q31_t)0xee9441a0, (q31_t)0x7ecbaa1a, (q31_t)0xee7b5bd9, - (q31_t)0x7ec8371a, (q31_t)0xee6276bf, (q31_t)0x7ec4bf36, (q31_t)0xee499253, (q31_t)0x7ec14270, (q31_t)0xee30ae96, (q31_t)0x7ebdc0c6, (q31_t)0xee17cb88, - (q31_t)0x7eba3a39, (q31_t)0xedfee92b, (q31_t)0x7eb6aeca, (q31_t)0xede60780, (q31_t)0x7eb31e78, (q31_t)0xedcd2687, (q31_t)0x7eaf8943, (q31_t)0xedb44642, - (q31_t)0x7eabef2c, (q31_t)0xed9b66b2, (q31_t)0x7ea85033, (q31_t)0xed8287d7, (q31_t)0x7ea4ac58, (q31_t)0xed69a9b3, (q31_t)0x7ea1039b, (q31_t)0xed50cc46, - (q31_t)0x7e9d55fc, (q31_t)0xed37ef91, (q31_t)0x7e99a37c, (q31_t)0xed1f1396, (q31_t)0x7e95ec1a, (q31_t)0xed063856, (q31_t)0x7e922fd6, (q31_t)0xeced5dd0, - (q31_t)0x7e8e6eb2, (q31_t)0xecd48407, (q31_t)0x7e8aa8ac, (q31_t)0xecbbaafb, (q31_t)0x7e86ddc6, (q31_t)0xeca2d2ad, (q31_t)0x7e830dff, (q31_t)0xec89fb1e, - (q31_t)0x7e7f3957, (q31_t)0xec71244f, (q31_t)0x7e7b5fce, (q31_t)0xec584e41, (q31_t)0x7e778166, (q31_t)0xec3f78f6, (q31_t)0x7e739e1d, (q31_t)0xec26a46d, - (q31_t)0x7e6fb5f4, (q31_t)0xec0dd0a8, (q31_t)0x7e6bc8eb, (q31_t)0xebf4fda8, (q31_t)0x7e67d703, (q31_t)0xebdc2b6e, (q31_t)0x7e63e03b, (q31_t)0xebc359fb, - (q31_t)0x7e5fe493, (q31_t)0xebaa894f, (q31_t)0x7e5be40c, (q31_t)0xeb91b96c, (q31_t)0x7e57dea7, (q31_t)0xeb78ea52, (q31_t)0x7e53d462, (q31_t)0xeb601c04, - (q31_t)0x7e4fc53e, (q31_t)0xeb474e81, (q31_t)0x7e4bb13c, (q31_t)0xeb2e81ca, (q31_t)0x7e47985b, (q31_t)0xeb15b5e1, (q31_t)0x7e437a9c, (q31_t)0xeafceac6, - (q31_t)0x7e3f57ff, (q31_t)0xeae4207a, (q31_t)0x7e3b3083, (q31_t)0xeacb56ff, (q31_t)0x7e37042a, (q31_t)0xeab28e56, (q31_t)0x7e32d2f4, (q31_t)0xea99c67e, - (q31_t)0x7e2e9cdf, (q31_t)0xea80ff7a, (q31_t)0x7e2a61ed, (q31_t)0xea683949, (q31_t)0x7e26221f, (q31_t)0xea4f73ee, (q31_t)0x7e21dd73, (q31_t)0xea36af69, - (q31_t)0x7e1d93ea, (q31_t)0xea1debbb, (q31_t)0x7e194584, (q31_t)0xea0528e5, (q31_t)0x7e14f242, (q31_t)0xe9ec66e8, (q31_t)0x7e109a24, (q31_t)0xe9d3a5c5, - (q31_t)0x7e0c3d29, (q31_t)0xe9bae57d, (q31_t)0x7e07db52, (q31_t)0xe9a22610, (q31_t)0x7e0374a0, (q31_t)0xe9896781, (q31_t)0x7dff0911, (q31_t)0xe970a9ce, - (q31_t)0x7dfa98a8, (q31_t)0xe957ecfb, (q31_t)0x7df62362, (q31_t)0xe93f3107, (q31_t)0x7df1a942, (q31_t)0xe92675f4, (q31_t)0x7ded2a47, (q31_t)0xe90dbbc2, - (q31_t)0x7de8a670, (q31_t)0xe8f50273, (q31_t)0x7de41dc0, (q31_t)0xe8dc4a07, (q31_t)0x7ddf9034, (q31_t)0xe8c39280, (q31_t)0x7ddafdce, (q31_t)0xe8aadbde, - (q31_t)0x7dd6668f, (q31_t)0xe8922622, (q31_t)0x7dd1ca75, (q31_t)0xe879714d, (q31_t)0x7dcd2981, (q31_t)0xe860bd61, (q31_t)0x7dc883b4, (q31_t)0xe8480a5d, - (q31_t)0x7dc3d90d, (q31_t)0xe82f5844, (q31_t)0x7dbf298d, (q31_t)0xe816a716, (q31_t)0x7dba7534, (q31_t)0xe7fdf6d4, (q31_t)0x7db5bc02, (q31_t)0xe7e5477f, - (q31_t)0x7db0fdf8, (q31_t)0xe7cc9917, (q31_t)0x7dac3b15, (q31_t)0xe7b3eb9f, (q31_t)0x7da77359, (q31_t)0xe79b3f16, (q31_t)0x7da2a6c6, (q31_t)0xe782937e, - (q31_t)0x7d9dd55a, (q31_t)0xe769e8d8, (q31_t)0x7d98ff17, (q31_t)0xe7513f25, (q31_t)0x7d9423fc, (q31_t)0xe7389665, (q31_t)0x7d8f4409, (q31_t)0xe71fee99, - (q31_t)0x7d8a5f40, (q31_t)0xe70747c4, (q31_t)0x7d85759f, (q31_t)0xe6eea1e4, (q31_t)0x7d808728, (q31_t)0xe6d5fcfc, (q31_t)0x7d7b93da, (q31_t)0xe6bd590d, - (q31_t)0x7d769bb5, (q31_t)0xe6a4b616, (q31_t)0x7d719eba, (q31_t)0xe68c141a, (q31_t)0x7d6c9ce9, (q31_t)0xe6737319, (q31_t)0x7d679642, (q31_t)0xe65ad315, - (q31_t)0x7d628ac6, (q31_t)0xe642340d, (q31_t)0x7d5d7a74, (q31_t)0xe6299604, (q31_t)0x7d58654d, (q31_t)0xe610f8f9, (q31_t)0x7d534b50, (q31_t)0xe5f85cef, - (q31_t)0x7d4e2c7f, (q31_t)0xe5dfc1e5, (q31_t)0x7d4908d9, (q31_t)0xe5c727dd, (q31_t)0x7d43e05e, (q31_t)0xe5ae8ed8, (q31_t)0x7d3eb30f, (q31_t)0xe595f6d7, - (q31_t)0x7d3980ec, (q31_t)0xe57d5fda, (q31_t)0x7d3449f5, (q31_t)0xe564c9e3, (q31_t)0x7d2f0e2b, (q31_t)0xe54c34f3, (q31_t)0x7d29cd8c, (q31_t)0xe533a10a, - (q31_t)0x7d24881b, (q31_t)0xe51b0e2a, (q31_t)0x7d1f3dd6, (q31_t)0xe5027c53, (q31_t)0x7d19eebf, (q31_t)0xe4e9eb87, (q31_t)0x7d149ad5, (q31_t)0xe4d15bc6, - (q31_t)0x7d0f4218, (q31_t)0xe4b8cd11, (q31_t)0x7d09e489, (q31_t)0xe4a03f69, (q31_t)0x7d048228, (q31_t)0xe487b2d0, (q31_t)0x7cff1af5, (q31_t)0xe46f2745, - (q31_t)0x7cf9aef0, (q31_t)0xe4569ccb, (q31_t)0x7cf43e1a, (q31_t)0xe43e1362, (q31_t)0x7ceec873, (q31_t)0xe4258b0a, (q31_t)0x7ce94dfb, (q31_t)0xe40d03c6, - (q31_t)0x7ce3ceb2, (q31_t)0xe3f47d96, (q31_t)0x7cde4a98, (q31_t)0xe3dbf87a, (q31_t)0x7cd8c1ae, (q31_t)0xe3c37474, (q31_t)0x7cd333f3, (q31_t)0xe3aaf184, - (q31_t)0x7ccda169, (q31_t)0xe3926fad, (q31_t)0x7cc80a0f, (q31_t)0xe379eeed, (q31_t)0x7cc26de5, (q31_t)0xe3616f48, (q31_t)0x7cbcccec, (q31_t)0xe348f0bd, - (q31_t)0x7cb72724, (q31_t)0xe330734d, (q31_t)0x7cb17c8d, (q31_t)0xe317f6fa, (q31_t)0x7cabcd28, (q31_t)0xe2ff7bc3, (q31_t)0x7ca618f3, (q31_t)0xe2e701ac, - (q31_t)0x7ca05ff1, (q31_t)0xe2ce88b3, (q31_t)0x7c9aa221, (q31_t)0xe2b610da, (q31_t)0x7c94df83, (q31_t)0xe29d9a23, (q31_t)0x7c8f1817, (q31_t)0xe285248d, - (q31_t)0x7c894bde, (q31_t)0xe26cb01b, (q31_t)0x7c837ad8, (q31_t)0xe2543ccc, (q31_t)0x7c7da505, (q31_t)0xe23bcaa2, (q31_t)0x7c77ca65, (q31_t)0xe223599e, - (q31_t)0x7c71eaf9, (q31_t)0xe20ae9c1, (q31_t)0x7c6c06c0, (q31_t)0xe1f27b0b, (q31_t)0x7c661dbc, (q31_t)0xe1da0d7e, (q31_t)0x7c602fec, (q31_t)0xe1c1a11b, - (q31_t)0x7c5a3d50, (q31_t)0xe1a935e2, (q31_t)0x7c5445e9, (q31_t)0xe190cbd4, (q31_t)0x7c4e49b7, (q31_t)0xe17862f3, (q31_t)0x7c4848ba, (q31_t)0xe15ffb3f, - (q31_t)0x7c4242f2, (q31_t)0xe14794ba, (q31_t)0x7c3c3860, (q31_t)0xe12f2f63, (q31_t)0x7c362904, (q31_t)0xe116cb3d, (q31_t)0x7c3014de, (q31_t)0xe0fe6848, - (q31_t)0x7c29fbee, (q31_t)0xe0e60685, (q31_t)0x7c23de35, (q31_t)0xe0cda5f5, (q31_t)0x7c1dbbb3, (q31_t)0xe0b54698, (q31_t)0x7c179467, (q31_t)0xe09ce871, - (q31_t)0x7c116853, (q31_t)0xe0848b7f, (q31_t)0x7c0b3777, (q31_t)0xe06c2fc4, (q31_t)0x7c0501d2, (q31_t)0xe053d541, (q31_t)0x7bfec765, (q31_t)0xe03b7bf6, - (q31_t)0x7bf88830, (q31_t)0xe02323e5, (q31_t)0x7bf24434, (q31_t)0xe00acd0e, (q31_t)0x7bebfb70, (q31_t)0xdff27773, (q31_t)0x7be5ade6, (q31_t)0xdfda2314, - (q31_t)0x7bdf5b94, (q31_t)0xdfc1cff3, (q31_t)0x7bd9047c, (q31_t)0xdfa97e0f, (q31_t)0x7bd2a89e, (q31_t)0xdf912d6b, (q31_t)0x7bcc47fa, (q31_t)0xdf78de07, - (q31_t)0x7bc5e290, (q31_t)0xdf608fe4, (q31_t)0x7bbf7860, (q31_t)0xdf484302, (q31_t)0x7bb9096b, (q31_t)0xdf2ff764, (q31_t)0x7bb295b0, (q31_t)0xdf17ad0a, - (q31_t)0x7bac1d31, (q31_t)0xdeff63f4, (q31_t)0x7ba59fee, (q31_t)0xdee71c24, (q31_t)0x7b9f1de6, (q31_t)0xdeced59b, (q31_t)0x7b989719, (q31_t)0xdeb69059, - (q31_t)0x7b920b89, (q31_t)0xde9e4c60, (q31_t)0x7b8b7b36, (q31_t)0xde8609b1, (q31_t)0x7b84e61f, (q31_t)0xde6dc84b, (q31_t)0x7b7e4c45, (q31_t)0xde558831, - (q31_t)0x7b77ada8, (q31_t)0xde3d4964, (q31_t)0x7b710a49, (q31_t)0xde250be3, (q31_t)0x7b6a6227, (q31_t)0xde0ccfb1, (q31_t)0x7b63b543, (q31_t)0xddf494ce, - (q31_t)0x7b5d039e, (q31_t)0xdddc5b3b, (q31_t)0x7b564d36, (q31_t)0xddc422f8, (q31_t)0x7b4f920e, (q31_t)0xddabec08, (q31_t)0x7b48d225, (q31_t)0xdd93b66a, - (q31_t)0x7b420d7a, (q31_t)0xdd7b8220, (q31_t)0x7b3b4410, (q31_t)0xdd634f2b, (q31_t)0x7b3475e5, (q31_t)0xdd4b1d8c, (q31_t)0x7b2da2fa, (q31_t)0xdd32ed43, - (q31_t)0x7b26cb4f, (q31_t)0xdd1abe51, (q31_t)0x7b1feee5, (q31_t)0xdd0290b8, (q31_t)0x7b190dbc, (q31_t)0xdcea6478, (q31_t)0x7b1227d3, (q31_t)0xdcd23993, - (q31_t)0x7b0b3d2c, (q31_t)0xdcba1008, (q31_t)0x7b044dc7, (q31_t)0xdca1e7da, (q31_t)0x7afd59a4, (q31_t)0xdc89c109, (q31_t)0x7af660c2, (q31_t)0xdc719b96, - (q31_t)0x7aef6323, (q31_t)0xdc597781, (q31_t)0x7ae860c7, (q31_t)0xdc4154cd, (q31_t)0x7ae159ae, (q31_t)0xdc293379, (q31_t)0x7ada4dd8, (q31_t)0xdc111388, - (q31_t)0x7ad33d45, (q31_t)0xdbf8f4f8, (q31_t)0x7acc27f7, (q31_t)0xdbe0d7cd, (q31_t)0x7ac50dec, (q31_t)0xdbc8bc06, (q31_t)0x7abdef25, (q31_t)0xdbb0a1a4, - (q31_t)0x7ab6cba4, (q31_t)0xdb9888a8, (q31_t)0x7aafa367, (q31_t)0xdb807114, (q31_t)0x7aa8766f, (q31_t)0xdb685ae9, (q31_t)0x7aa144bc, (q31_t)0xdb504626, - (q31_t)0x7a9a0e50, (q31_t)0xdb3832cd, (q31_t)0x7a92d329, (q31_t)0xdb2020e0, (q31_t)0x7a8b9348, (q31_t)0xdb08105e, (q31_t)0x7a844eae, (q31_t)0xdaf00149, - (q31_t)0x7a7d055b, (q31_t)0xdad7f3a2, (q31_t)0x7a75b74f, (q31_t)0xdabfe76a, (q31_t)0x7a6e648a, (q31_t)0xdaa7dca1, (q31_t)0x7a670d0d, (q31_t)0xda8fd349, - (q31_t)0x7a5fb0d8, (q31_t)0xda77cb63, (q31_t)0x7a584feb, (q31_t)0xda5fc4ef, (q31_t)0x7a50ea47, (q31_t)0xda47bfee, (q31_t)0x7a497feb, (q31_t)0xda2fbc61, - (q31_t)0x7a4210d8, (q31_t)0xda17ba4a, (q31_t)0x7a3a9d0f, (q31_t)0xd9ffb9a9, (q31_t)0x7a332490, (q31_t)0xd9e7ba7f, (q31_t)0x7a2ba75a, (q31_t)0xd9cfbccd, - (q31_t)0x7a24256f, (q31_t)0xd9b7c094, (q31_t)0x7a1c9ece, (q31_t)0xd99fc5d4, (q31_t)0x7a151378, (q31_t)0xd987cc90, (q31_t)0x7a0d836d, (q31_t)0xd96fd4c7, - (q31_t)0x7a05eead, (q31_t)0xd957de7a, (q31_t)0x79fe5539, (q31_t)0xd93fe9ab, (q31_t)0x79f6b711, (q31_t)0xd927f65b, (q31_t)0x79ef1436, (q31_t)0xd910048a, - (q31_t)0x79e76ca7, (q31_t)0xd8f81439, (q31_t)0x79dfc064, (q31_t)0xd8e0256a, (q31_t)0x79d80f6f, (q31_t)0xd8c8381d, (q31_t)0x79d059c8, (q31_t)0xd8b04c52, - (q31_t)0x79c89f6e, (q31_t)0xd898620c, (q31_t)0x79c0e062, (q31_t)0xd880794b, (q31_t)0x79b91ca4, (q31_t)0xd868920f, (q31_t)0x79b15435, (q31_t)0xd850ac5a, - (q31_t)0x79a98715, (q31_t)0xd838c82d, (q31_t)0x79a1b545, (q31_t)0xd820e589, (q31_t)0x7999dec4, (q31_t)0xd809046e, (q31_t)0x79920392, (q31_t)0xd7f124dd, - (q31_t)0x798a23b1, (q31_t)0xd7d946d8, (q31_t)0x79823f20, (q31_t)0xd7c16a5f, (q31_t)0x797a55e0, (q31_t)0xd7a98f73, (q31_t)0x797267f2, (q31_t)0xd791b616, - (q31_t)0x796a7554, (q31_t)0xd779de47, (q31_t)0x79627e08, (q31_t)0xd7620808, (q31_t)0x795a820e, (q31_t)0xd74a335b, (q31_t)0x79528167, (q31_t)0xd732603f, - (q31_t)0x794a7c12, (q31_t)0xd71a8eb5, (q31_t)0x79427210, (q31_t)0xd702bec0, (q31_t)0x793a6361, (q31_t)0xd6eaf05f, (q31_t)0x79325006, (q31_t)0xd6d32393, - (q31_t)0x792a37fe, (q31_t)0xd6bb585e, (q31_t)0x79221b4b, (q31_t)0xd6a38ec0, (q31_t)0x7919f9ec, (q31_t)0xd68bc6ba, (q31_t)0x7911d3e2, (q31_t)0xd674004e, - (q31_t)0x7909a92d, (q31_t)0xd65c3b7b, (q31_t)0x790179cd, (q31_t)0xd6447844, (q31_t)0x78f945c3, (q31_t)0xd62cb6a8, (q31_t)0x78f10d0f, (q31_t)0xd614f6a9, - (q31_t)0x78e8cfb2, (q31_t)0xd5fd3848, (q31_t)0x78e08dab, (q31_t)0xd5e57b85, (q31_t)0x78d846fb, (q31_t)0xd5cdc062, (q31_t)0x78cffba3, (q31_t)0xd5b606e0, - (q31_t)0x78c7aba2, (q31_t)0xd59e4eff, (q31_t)0x78bf56f9, (q31_t)0xd58698c0, (q31_t)0x78b6fda8, (q31_t)0xd56ee424, (q31_t)0x78ae9fb0, (q31_t)0xd557312d, - (q31_t)0x78a63d11, (q31_t)0xd53f7fda, (q31_t)0x789dd5cb, (q31_t)0xd527d02e, (q31_t)0x789569df, (q31_t)0xd5102228, (q31_t)0x788cf94c, (q31_t)0xd4f875ca, - (q31_t)0x78848414, (q31_t)0xd4e0cb15, (q31_t)0x787c0a36, (q31_t)0xd4c92209, (q31_t)0x78738bb3, (q31_t)0xd4b17aa8, (q31_t)0x786b088c, (q31_t)0xd499d4f2, - (q31_t)0x786280bf, (q31_t)0xd48230e9, (q31_t)0x7859f44f, (q31_t)0xd46a8e8d, (q31_t)0x7851633b, (q31_t)0xd452eddf, (q31_t)0x7848cd83, (q31_t)0xd43b4ee0, - (q31_t)0x78403329, (q31_t)0xd423b191, (q31_t)0x7837942b, (q31_t)0xd40c15f3, (q31_t)0x782ef08b, (q31_t)0xd3f47c06, (q31_t)0x78264849, (q31_t)0xd3dce3cd, - (q31_t)0x781d9b65, (q31_t)0xd3c54d47, (q31_t)0x7814e9df, (q31_t)0xd3adb876, (q31_t)0x780c33b8, (q31_t)0xd396255a, (q31_t)0x780378f1, (q31_t)0xd37e93f4, - (q31_t)0x77fab989, (q31_t)0xd3670446, (q31_t)0x77f1f581, (q31_t)0xd34f764f, (q31_t)0x77e92cd9, (q31_t)0xd337ea12, (q31_t)0x77e05f91, (q31_t)0xd3205f8f, - (q31_t)0x77d78daa, (q31_t)0xd308d6c7, (q31_t)0x77ceb725, (q31_t)0xd2f14fba, (q31_t)0x77c5dc01, (q31_t)0xd2d9ca6a, (q31_t)0x77bcfc3f, (q31_t)0xd2c246d8, - (q31_t)0x77b417df, (q31_t)0xd2aac504, (q31_t)0x77ab2ee2, (q31_t)0xd29344f0, (q31_t)0x77a24148, (q31_t)0xd27bc69c, (q31_t)0x77994f11, (q31_t)0xd2644a0a, - (q31_t)0x7790583e, (q31_t)0xd24ccf39, (q31_t)0x77875cce, (q31_t)0xd235562b, (q31_t)0x777e5cc3, (q31_t)0xd21ddee2, (q31_t)0x7775581d, (q31_t)0xd206695d, - (q31_t)0x776c4edb, (q31_t)0xd1eef59e, (q31_t)0x776340ff, (q31_t)0xd1d783a6, (q31_t)0x775a2e89, (q31_t)0xd1c01375, (q31_t)0x77511778, (q31_t)0xd1a8a50d, - (q31_t)0x7747fbce, (q31_t)0xd191386e, (q31_t)0x773edb8b, (q31_t)0xd179cd99, (q31_t)0x7735b6af, (q31_t)0xd1626490, (q31_t)0x772c8d3a, (q31_t)0xd14afd52, - (q31_t)0x77235f2d, (q31_t)0xd13397e2, (q31_t)0x771a2c88, (q31_t)0xd11c343f, (q31_t)0x7710f54c, (q31_t)0xd104d26b, (q31_t)0x7707b979, (q31_t)0xd0ed7267, - (q31_t)0x76fe790e, (q31_t)0xd0d61434, (q31_t)0x76f5340e, (q31_t)0xd0beb7d2, (q31_t)0x76ebea77, (q31_t)0xd0a75d42, (q31_t)0x76e29c4b, (q31_t)0xd0900486, - (q31_t)0x76d94989, (q31_t)0xd078ad9e, (q31_t)0x76cff232, (q31_t)0xd061588b, (q31_t)0x76c69647, (q31_t)0xd04a054e, (q31_t)0x76bd35c7, (q31_t)0xd032b3e7, - (q31_t)0x76b3d0b4, (q31_t)0xd01b6459, (q31_t)0x76aa670d, (q31_t)0xd00416a3, (q31_t)0x76a0f8d2, (q31_t)0xcfeccac7, (q31_t)0x76978605, (q31_t)0xcfd580c6, - (q31_t)0x768e0ea6, (q31_t)0xcfbe389f, (q31_t)0x768492b4, (q31_t)0xcfa6f255, (q31_t)0x767b1231, (q31_t)0xcf8fade9, (q31_t)0x76718d1c, (q31_t)0xcf786b5a, - (q31_t)0x76680376, (q31_t)0xcf612aaa, (q31_t)0x765e7540, (q31_t)0xcf49ebda, (q31_t)0x7654e279, (q31_t)0xcf32aeeb, (q31_t)0x764b4b23, (q31_t)0xcf1b73de, - (q31_t)0x7641af3d, (q31_t)0xcf043ab3, (q31_t)0x76380ec8, (q31_t)0xceed036b, (q31_t)0x762e69c4, (q31_t)0xced5ce08, (q31_t)0x7624c031, (q31_t)0xcebe9a8a, - (q31_t)0x761b1211, (q31_t)0xcea768f2, (q31_t)0x76115f63, (q31_t)0xce903942, (q31_t)0x7607a828, (q31_t)0xce790b79, (q31_t)0x75fdec60, (q31_t)0xce61df99, - (q31_t)0x75f42c0b, (q31_t)0xce4ab5a2, (q31_t)0x75ea672a, (q31_t)0xce338d97, (q31_t)0x75e09dbd, (q31_t)0xce1c6777, (q31_t)0x75d6cfc5, (q31_t)0xce054343, - (q31_t)0x75ccfd42, (q31_t)0xcdee20fc, (q31_t)0x75c32634, (q31_t)0xcdd700a4, (q31_t)0x75b94a9c, (q31_t)0xcdbfe23a, (q31_t)0x75af6a7b, (q31_t)0xcda8c5c1, - (q31_t)0x75a585cf, (q31_t)0xcd91ab39, (q31_t)0x759b9c9b, (q31_t)0xcd7a92a2, (q31_t)0x7591aedd, (q31_t)0xcd637bfe, (q31_t)0x7587bc98, (q31_t)0xcd4c674d, - (q31_t)0x757dc5ca, (q31_t)0xcd355491, (q31_t)0x7573ca75, (q31_t)0xcd1e43ca, (q31_t)0x7569ca99, (q31_t)0xcd0734f9, (q31_t)0x755fc635, (q31_t)0xccf0281f, - (q31_t)0x7555bd4c, (q31_t)0xccd91d3d, (q31_t)0x754bafdc, (q31_t)0xccc21455, (q31_t)0x75419de7, (q31_t)0xccab0d65, (q31_t)0x7537876c, (q31_t)0xcc940871, - (q31_t)0x752d6c6c, (q31_t)0xcc7d0578, (q31_t)0x75234ce8, (q31_t)0xcc66047b, (q31_t)0x751928e0, (q31_t)0xcc4f057c, (q31_t)0x750f0054, (q31_t)0xcc38087b, - (q31_t)0x7504d345, (q31_t)0xcc210d79, (q31_t)0x74faa1b3, (q31_t)0xcc0a1477, (q31_t)0x74f06b9e, (q31_t)0xcbf31d75, (q31_t)0x74e63108, (q31_t)0xcbdc2876, - (q31_t)0x74dbf1ef, (q31_t)0xcbc53579, (q31_t)0x74d1ae55, (q31_t)0xcbae447f, (q31_t)0x74c7663a, (q31_t)0xcb97558a, (q31_t)0x74bd199f, (q31_t)0xcb80689a, - (q31_t)0x74b2c884, (q31_t)0xcb697db0, (q31_t)0x74a872e8, (q31_t)0xcb5294ce, (q31_t)0x749e18cd, (q31_t)0xcb3badf3, (q31_t)0x7493ba34, (q31_t)0xcb24c921, - (q31_t)0x7489571c, (q31_t)0xcb0de658, (q31_t)0x747eef85, (q31_t)0xcaf7059a, (q31_t)0x74748371, (q31_t)0xcae026e8, (q31_t)0x746a12df, (q31_t)0xcac94a42, - (q31_t)0x745f9dd1, (q31_t)0xcab26fa9, (q31_t)0x74552446, (q31_t)0xca9b971e, (q31_t)0x744aa63f, (q31_t)0xca84c0a3, (q31_t)0x744023bc, (q31_t)0xca6dec37, - (q31_t)0x74359cbd, (q31_t)0xca5719db, (q31_t)0x742b1144, (q31_t)0xca404992, (q31_t)0x74208150, (q31_t)0xca297b5a, (q31_t)0x7415ece2, (q31_t)0xca12af37, - (q31_t)0x740b53fb, (q31_t)0xc9fbe527, (q31_t)0x7400b69a, (q31_t)0xc9e51d2d, (q31_t)0x73f614c0, (q31_t)0xc9ce5748, (q31_t)0x73eb6e6e, (q31_t)0xc9b7937a, - (q31_t)0x73e0c3a3, (q31_t)0xc9a0d1c5, (q31_t)0x73d61461, (q31_t)0xc98a1227, (q31_t)0x73cb60a8, (q31_t)0xc97354a4, (q31_t)0x73c0a878, (q31_t)0xc95c993a, - (q31_t)0x73b5ebd1, (q31_t)0xc945dfec, (q31_t)0x73ab2ab4, (q31_t)0xc92f28ba, (q31_t)0x73a06522, (q31_t)0xc91873a5, (q31_t)0x73959b1b, (q31_t)0xc901c0ae, - (q31_t)0x738acc9e, (q31_t)0xc8eb0fd6, (q31_t)0x737ff9ae, (q31_t)0xc8d4611d, (q31_t)0x73752249, (q31_t)0xc8bdb485, (q31_t)0x736a4671, (q31_t)0xc8a70a0e, - (q31_t)0x735f6626, (q31_t)0xc89061ba, (q31_t)0x73548168, (q31_t)0xc879bb89, (q31_t)0x73499838, (q31_t)0xc863177b, (q31_t)0x733eaa96, (q31_t)0xc84c7593, - (q31_t)0x7333b883, (q31_t)0xc835d5d0, (q31_t)0x7328c1ff, (q31_t)0xc81f3834, (q31_t)0x731dc70a, (q31_t)0xc8089cbf, (q31_t)0x7312c7a5, (q31_t)0xc7f20373, - (q31_t)0x7307c3d0, (q31_t)0xc7db6c50, (q31_t)0x72fcbb8c, (q31_t)0xc7c4d757, (q31_t)0x72f1aed9, (q31_t)0xc7ae4489, (q31_t)0x72e69db7, (q31_t)0xc797b3e7, - (q31_t)0x72db8828, (q31_t)0xc7812572, (q31_t)0x72d06e2b, (q31_t)0xc76a992a, (q31_t)0x72c54fc1, (q31_t)0xc7540f11, (q31_t)0x72ba2cea, (q31_t)0xc73d8727, - (q31_t)0x72af05a7, (q31_t)0xc727016d, (q31_t)0x72a3d9f7, (q31_t)0xc7107de4, (q31_t)0x7298a9dd, (q31_t)0xc6f9fc8d, (q31_t)0x728d7557, (q31_t)0xc6e37d69, - (q31_t)0x72823c67, (q31_t)0xc6cd0079, (q31_t)0x7276ff0d, (q31_t)0xc6b685bd, (q31_t)0x726bbd48, (q31_t)0xc6a00d37, (q31_t)0x7260771b, (q31_t)0xc68996e7, - (q31_t)0x72552c85, (q31_t)0xc67322ce, (q31_t)0x7249dd86, (q31_t)0xc65cb0ed, (q31_t)0x723e8a20, (q31_t)0xc6464144, (q31_t)0x72333251, (q31_t)0xc62fd3d6, - (q31_t)0x7227d61c, (q31_t)0xc61968a2, (q31_t)0x721c7580, (q31_t)0xc602ffaa, (q31_t)0x7211107e, (q31_t)0xc5ec98ee, (q31_t)0x7205a716, (q31_t)0xc5d6346f, - (q31_t)0x71fa3949, (q31_t)0xc5bfd22e, (q31_t)0x71eec716, (q31_t)0xc5a9722c, (q31_t)0x71e35080, (q31_t)0xc593146a, (q31_t)0x71d7d585, (q31_t)0xc57cb8e9, - (q31_t)0x71cc5626, (q31_t)0xc5665fa9, (q31_t)0x71c0d265, (q31_t)0xc55008ab, (q31_t)0x71b54a41, (q31_t)0xc539b3f1, (q31_t)0x71a9bdba, (q31_t)0xc523617a, - (q31_t)0x719e2cd2, (q31_t)0xc50d1149, (q31_t)0x71929789, (q31_t)0xc4f6c35d, (q31_t)0x7186fdde, (q31_t)0xc4e077b8, (q31_t)0x717b5fd3, (q31_t)0xc4ca2e5b, - (q31_t)0x716fbd68, (q31_t)0xc4b3e746, (q31_t)0x7164169d, (q31_t)0xc49da27a, (q31_t)0x71586b74, (q31_t)0xc4875ff9, (q31_t)0x714cbbeb, (q31_t)0xc4711fc2, - (q31_t)0x71410805, (q31_t)0xc45ae1d7, (q31_t)0x71354fc0, (q31_t)0xc444a639, (q31_t)0x7129931f, (q31_t)0xc42e6ce8, (q31_t)0x711dd220, (q31_t)0xc41835e6, - (q31_t)0x71120cc5, (q31_t)0xc4020133, (q31_t)0x7106430e, (q31_t)0xc3ebced0, (q31_t)0x70fa74fc, (q31_t)0xc3d59ebe, (q31_t)0x70eea28e, (q31_t)0xc3bf70fd, - (q31_t)0x70e2cbc6, (q31_t)0xc3a94590, (q31_t)0x70d6f0a4, (q31_t)0xc3931c76, (q31_t)0x70cb1128, (q31_t)0xc37cf5b0, (q31_t)0x70bf2d53, (q31_t)0xc366d140, - (q31_t)0x70b34525, (q31_t)0xc350af26, (q31_t)0x70a7589f, (q31_t)0xc33a8f62, (q31_t)0x709b67c0, (q31_t)0xc32471f7, (q31_t)0x708f728b, (q31_t)0xc30e56e4, - (q31_t)0x708378ff, (q31_t)0xc2f83e2a, (q31_t)0x70777b1c, (q31_t)0xc2e227cb, (q31_t)0x706b78e3, (q31_t)0xc2cc13c7, (q31_t)0x705f7255, (q31_t)0xc2b6021f, - (q31_t)0x70536771, (q31_t)0xc29ff2d4, (q31_t)0x70475839, (q31_t)0xc289e5e7, (q31_t)0x703b44ad, (q31_t)0xc273db58, (q31_t)0x702f2ccd, (q31_t)0xc25dd329, - (q31_t)0x7023109a, (q31_t)0xc247cd5a, (q31_t)0x7016f014, (q31_t)0xc231c9ec, (q31_t)0x700acb3c, (q31_t)0xc21bc8e1, (q31_t)0x6ffea212, (q31_t)0xc205ca38, - (q31_t)0x6ff27497, (q31_t)0xc1efcdf3, (q31_t)0x6fe642ca, (q31_t)0xc1d9d412, (q31_t)0x6fda0cae, (q31_t)0xc1c3dc97, (q31_t)0x6fcdd241, (q31_t)0xc1ade781, - (q31_t)0x6fc19385, (q31_t)0xc197f4d4, (q31_t)0x6fb5507a, (q31_t)0xc182048d, (q31_t)0x6fa90921, (q31_t)0xc16c16b0, (q31_t)0x6f9cbd79, (q31_t)0xc1562b3d, - (q31_t)0x6f906d84, (q31_t)0xc1404233, (q31_t)0x6f841942, (q31_t)0xc12a5b95, (q31_t)0x6f77c0b3, (q31_t)0xc1147764, (q31_t)0x6f6b63d8, (q31_t)0xc0fe959f, - (q31_t)0x6f5f02b2, (q31_t)0xc0e8b648, (q31_t)0x6f529d40, (q31_t)0xc0d2d960, (q31_t)0x6f463383, (q31_t)0xc0bcfee7, (q31_t)0x6f39c57d, (q31_t)0xc0a726df, - (q31_t)0x6f2d532c, (q31_t)0xc0915148, (q31_t)0x6f20dc92, (q31_t)0xc07b7e23, (q31_t)0x6f1461b0, (q31_t)0xc065ad70, (q31_t)0x6f07e285, (q31_t)0xc04fdf32, - (q31_t)0x6efb5f12, (q31_t)0xc03a1368, (q31_t)0x6eeed758, (q31_t)0xc0244a14, (q31_t)0x6ee24b57, (q31_t)0xc00e8336, (q31_t)0x6ed5bb10, (q31_t)0xbff8bece, - (q31_t)0x6ec92683, (q31_t)0xbfe2fcdf, (q31_t)0x6ebc8db0, (q31_t)0xbfcd3d69, (q31_t)0x6eaff099, (q31_t)0xbfb7806c, (q31_t)0x6ea34f3d, (q31_t)0xbfa1c5ea, - (q31_t)0x6e96a99d, (q31_t)0xbf8c0de3, (q31_t)0x6e89ffb9, (q31_t)0xbf765858, (q31_t)0x6e7d5193, (q31_t)0xbf60a54a, (q31_t)0x6e709f2a, (q31_t)0xbf4af4ba, - (q31_t)0x6e63e87f, (q31_t)0xbf3546a8, (q31_t)0x6e572d93, (q31_t)0xbf1f9b16, (q31_t)0x6e4a6e66, (q31_t)0xbf09f205, (q31_t)0x6e3daaf8, (q31_t)0xbef44b74, - (q31_t)0x6e30e34a, (q31_t)0xbedea765, (q31_t)0x6e24175c, (q31_t)0xbec905d9, (q31_t)0x6e174730, (q31_t)0xbeb366d1, (q31_t)0x6e0a72c5, (q31_t)0xbe9dca4e, - (q31_t)0x6dfd9a1c, (q31_t)0xbe88304f, (q31_t)0x6df0bd35, (q31_t)0xbe7298d7, (q31_t)0x6de3dc11, (q31_t)0xbe5d03e6, (q31_t)0x6dd6f6b1, (q31_t)0xbe47717c, - (q31_t)0x6dca0d14, (q31_t)0xbe31e19b, (q31_t)0x6dbd1f3c, (q31_t)0xbe1c5444, (q31_t)0x6db02d29, (q31_t)0xbe06c977, (q31_t)0x6da336dc, (q31_t)0xbdf14135, - (q31_t)0x6d963c54, (q31_t)0xbddbbb7f, (q31_t)0x6d893d93, (q31_t)0xbdc63856, (q31_t)0x6d7c3a98, (q31_t)0xbdb0b7bb, (q31_t)0x6d6f3365, (q31_t)0xbd9b39ad, - (q31_t)0x6d6227fa, (q31_t)0xbd85be30, (q31_t)0x6d551858, (q31_t)0xbd704542, (q31_t)0x6d48047e, (q31_t)0xbd5acee5, (q31_t)0x6d3aec6e, (q31_t)0xbd455b1a, - (q31_t)0x6d2dd027, (q31_t)0xbd2fe9e2, (q31_t)0x6d20afac, (q31_t)0xbd1a7b3d, (q31_t)0x6d138afb, (q31_t)0xbd050f2c, (q31_t)0x6d066215, (q31_t)0xbcefa5b0, - (q31_t)0x6cf934fc, (q31_t)0xbcda3ecb, (q31_t)0x6cec03af, (q31_t)0xbcc4da7b, (q31_t)0x6cdece2f, (q31_t)0xbcaf78c4, (q31_t)0x6cd1947c, (q31_t)0xbc9a19a5, - (q31_t)0x6cc45698, (q31_t)0xbc84bd1f, (q31_t)0x6cb71482, (q31_t)0xbc6f6333, (q31_t)0x6ca9ce3b, (q31_t)0xbc5a0be2, (q31_t)0x6c9c83c3, (q31_t)0xbc44b72c, - (q31_t)0x6c8f351c, (q31_t)0xbc2f6513, (q31_t)0x6c81e245, (q31_t)0xbc1a1598, (q31_t)0x6c748b3f, (q31_t)0xbc04c8ba, (q31_t)0x6c67300b, (q31_t)0xbbef7e7c, - (q31_t)0x6c59d0a9, (q31_t)0xbbda36dd, (q31_t)0x6c4c6d1a, (q31_t)0xbbc4f1df, (q31_t)0x6c3f055d, (q31_t)0xbbafaf82, (q31_t)0x6c319975, (q31_t)0xbb9a6fc7, - (q31_t)0x6c242960, (q31_t)0xbb8532b0, (q31_t)0x6c16b521, (q31_t)0xbb6ff83c, (q31_t)0x6c093cb6, (q31_t)0xbb5ac06d, (q31_t)0x6bfbc021, (q31_t)0xbb458b43, - (q31_t)0x6bee3f62, (q31_t)0xbb3058c0, (q31_t)0x6be0ba7b, (q31_t)0xbb1b28e4, (q31_t)0x6bd3316a, (q31_t)0xbb05fbb0, (q31_t)0x6bc5a431, (q31_t)0xbaf0d125, - (q31_t)0x6bb812d1, (q31_t)0xbadba943, (q31_t)0x6baa7d49, (q31_t)0xbac6840c, (q31_t)0x6b9ce39b, (q31_t)0xbab16180, (q31_t)0x6b8f45c7, (q31_t)0xba9c41a0, - (q31_t)0x6b81a3cd, (q31_t)0xba87246d, (q31_t)0x6b73fdae, (q31_t)0xba7209e7, (q31_t)0x6b66536b, (q31_t)0xba5cf210, (q31_t)0x6b58a503, (q31_t)0xba47dce8, - (q31_t)0x6b4af279, (q31_t)0xba32ca71, (q31_t)0x6b3d3bcb, (q31_t)0xba1dbaaa, (q31_t)0x6b2f80fb, (q31_t)0xba08ad95, (q31_t)0x6b21c208, (q31_t)0xb9f3a332, - (q31_t)0x6b13fef5, (q31_t)0xb9de9b83, (q31_t)0x6b0637c1, (q31_t)0xb9c99688, (q31_t)0x6af86c6c, (q31_t)0xb9b49442, (q31_t)0x6aea9cf8, (q31_t)0xb99f94b2, - (q31_t)0x6adcc964, (q31_t)0xb98a97d8, (q31_t)0x6acef1b2, (q31_t)0xb9759db6, (q31_t)0x6ac115e2, (q31_t)0xb960a64c, (q31_t)0x6ab335f4, (q31_t)0xb94bb19b, - (q31_t)0x6aa551e9, (q31_t)0xb936bfa4, (q31_t)0x6a9769c1, (q31_t)0xb921d067, (q31_t)0x6a897d7d, (q31_t)0xb90ce3e6, (q31_t)0x6a7b8d1e, (q31_t)0xb8f7fa21, - (q31_t)0x6a6d98a4, (q31_t)0xb8e31319, (q31_t)0x6a5fa010, (q31_t)0xb8ce2ecf, (q31_t)0x6a51a361, (q31_t)0xb8b94d44, (q31_t)0x6a43a29a, (q31_t)0xb8a46e78, - (q31_t)0x6a359db9, (q31_t)0xb88f926d, (q31_t)0x6a2794c1, (q31_t)0xb87ab922, (q31_t)0x6a1987b0, (q31_t)0xb865e299, (q31_t)0x6a0b7689, (q31_t)0xb8510ed4, - (q31_t)0x69fd614a, (q31_t)0xb83c3dd1, (q31_t)0x69ef47f6, (q31_t)0xb8276f93, (q31_t)0x69e12a8c, (q31_t)0xb812a41a, (q31_t)0x69d3090e, (q31_t)0xb7fddb67, - (q31_t)0x69c4e37a, (q31_t)0xb7e9157a, (q31_t)0x69b6b9d3, (q31_t)0xb7d45255, (q31_t)0x69a88c19, (q31_t)0xb7bf91f8, (q31_t)0x699a5a4c, (q31_t)0xb7aad465, - (q31_t)0x698c246c, (q31_t)0xb796199b, (q31_t)0x697dea7b, (q31_t)0xb781619c, (q31_t)0x696fac78, (q31_t)0xb76cac69, (q31_t)0x69616a65, (q31_t)0xb757fa01, - (q31_t)0x69532442, (q31_t)0xb7434a67, (q31_t)0x6944da10, (q31_t)0xb72e9d9b, (q31_t)0x69368bce, (q31_t)0xb719f39e, (q31_t)0x6928397e, (q31_t)0xb7054c6f, - (q31_t)0x6919e320, (q31_t)0xb6f0a812, (q31_t)0x690b88b5, (q31_t)0xb6dc0685, (q31_t)0x68fd2a3d, (q31_t)0xb6c767ca, (q31_t)0x68eec7b9, (q31_t)0xb6b2cbe2, - (q31_t)0x68e06129, (q31_t)0xb69e32cd, (q31_t)0x68d1f68f, (q31_t)0xb6899c8d, (q31_t)0x68c387e9, (q31_t)0xb6750921, (q31_t)0x68b5153a, (q31_t)0xb660788c, - (q31_t)0x68a69e81, (q31_t)0xb64beacd, (q31_t)0x689823bf, (q31_t)0xb6375fe5, (q31_t)0x6889a4f6, (q31_t)0xb622d7d6, (q31_t)0x687b2224, (q31_t)0xb60e529f, - (q31_t)0x686c9b4b, (q31_t)0xb5f9d043, (q31_t)0x685e106c, (q31_t)0xb5e550c1, (q31_t)0x684f8186, (q31_t)0xb5d0d41a, (q31_t)0x6840ee9b, (q31_t)0xb5bc5a50, - (q31_t)0x683257ab, (q31_t)0xb5a7e362, (q31_t)0x6823bcb7, (q31_t)0xb5936f53, (q31_t)0x68151dbe, (q31_t)0xb57efe22, (q31_t)0x68067ac3, (q31_t)0xb56a8fd0, - (q31_t)0x67f7d3c5, (q31_t)0xb556245e, (q31_t)0x67e928c5, (q31_t)0xb541bbcd, (q31_t)0x67da79c3, (q31_t)0xb52d561e, (q31_t)0x67cbc6c0, (q31_t)0xb518f351, - (q31_t)0x67bd0fbd, (q31_t)0xb5049368, (q31_t)0x67ae54ba, (q31_t)0xb4f03663, (q31_t)0x679f95b7, (q31_t)0xb4dbdc42, (q31_t)0x6790d2b6, (q31_t)0xb4c78507, - (q31_t)0x67820bb7, (q31_t)0xb4b330b3, (q31_t)0x677340ba, (q31_t)0xb49edf45, (q31_t)0x676471c0, (q31_t)0xb48a90c0, (q31_t)0x67559eca, (q31_t)0xb4764523, - (q31_t)0x6746c7d8, (q31_t)0xb461fc70, (q31_t)0x6737ecea, (q31_t)0xb44db6a8, (q31_t)0x67290e02, (q31_t)0xb43973ca, (q31_t)0x671a2b20, (q31_t)0xb42533d8, - (q31_t)0x670b4444, (q31_t)0xb410f6d3, (q31_t)0x66fc596f, (q31_t)0xb3fcbcbb, (q31_t)0x66ed6aa1, (q31_t)0xb3e88592, (q31_t)0x66de77dc, (q31_t)0xb3d45157, - (q31_t)0x66cf8120, (q31_t)0xb3c0200c, (q31_t)0x66c0866d, (q31_t)0xb3abf1b2, (q31_t)0x66b187c3, (q31_t)0xb397c649, (q31_t)0x66a28524, (q31_t)0xb3839dd3, - (q31_t)0x66937e91, (q31_t)0xb36f784f, (q31_t)0x66847408, (q31_t)0xb35b55bf, (q31_t)0x6675658c, (q31_t)0xb3473623, (q31_t)0x6666531d, (q31_t)0xb333197c, - (q31_t)0x66573cbb, (q31_t)0xb31effcc, (q31_t)0x66482267, (q31_t)0xb30ae912, (q31_t)0x66390422, (q31_t)0xb2f6d550, (q31_t)0x6629e1ec, (q31_t)0xb2e2c486, - (q31_t)0x661abbc5, (q31_t)0xb2ceb6b5, (q31_t)0x660b91af, (q31_t)0xb2baabde, (q31_t)0x65fc63a9, (q31_t)0xb2a6a402, (q31_t)0x65ed31b5, (q31_t)0xb2929f21, - (q31_t)0x65ddfbd3, (q31_t)0xb27e9d3c, (q31_t)0x65cec204, (q31_t)0xb26a9e54, (q31_t)0x65bf8447, (q31_t)0xb256a26a, (q31_t)0x65b0429f, (q31_t)0xb242a97e, - (q31_t)0x65a0fd0b, (q31_t)0xb22eb392, (q31_t)0x6591b38c, (q31_t)0xb21ac0a6, (q31_t)0x65826622, (q31_t)0xb206d0ba, (q31_t)0x657314cf, (q31_t)0xb1f2e3d0, - (q31_t)0x6563bf92, (q31_t)0xb1def9e9, (q31_t)0x6554666d, (q31_t)0xb1cb1304, (q31_t)0x6545095f, (q31_t)0xb1b72f23, (q31_t)0x6535a86b, (q31_t)0xb1a34e47, - (q31_t)0x6526438f, (q31_t)0xb18f7071, (q31_t)0x6516dacd, (q31_t)0xb17b95a0, (q31_t)0x65076e25, (q31_t)0xb167bdd7, (q31_t)0x64f7fd98, (q31_t)0xb153e915, - (q31_t)0x64e88926, (q31_t)0xb140175b, (q31_t)0x64d910d1, (q31_t)0xb12c48ab, (q31_t)0x64c99498, (q31_t)0xb1187d05, (q31_t)0x64ba147d, (q31_t)0xb104b46a, - (q31_t)0x64aa907f, (q31_t)0xb0f0eeda, (q31_t)0x649b08a0, (q31_t)0xb0dd2c56, (q31_t)0x648b7ce0, (q31_t)0xb0c96ce0, (q31_t)0x647bed3f, (q31_t)0xb0b5b077, - (q31_t)0x646c59bf, (q31_t)0xb0a1f71d, (q31_t)0x645cc260, (q31_t)0xb08e40d2, (q31_t)0x644d2722, (q31_t)0xb07a8d97, (q31_t)0x643d8806, (q31_t)0xb066dd6d, - (q31_t)0x642de50d, (q31_t)0xb0533055, (q31_t)0x641e3e38, (q31_t)0xb03f864f, (q31_t)0x640e9386, (q31_t)0xb02bdf5c, (q31_t)0x63fee4f8, (q31_t)0xb0183b7d, - (q31_t)0x63ef3290, (q31_t)0xb0049ab3, (q31_t)0x63df7c4d, (q31_t)0xaff0fcfe, (q31_t)0x63cfc231, (q31_t)0xafdd625f, (q31_t)0x63c0043b, (q31_t)0xafc9cad7, - (q31_t)0x63b0426d, (q31_t)0xafb63667, (q31_t)0x63a07cc7, (q31_t)0xafa2a50f, (q31_t)0x6390b34a, (q31_t)0xaf8f16d1, (q31_t)0x6380e5f6, (q31_t)0xaf7b8bac, - (q31_t)0x637114cc, (q31_t)0xaf6803a2, (q31_t)0x63613fcd, (q31_t)0xaf547eb3, (q31_t)0x635166f9, (q31_t)0xaf40fce1, (q31_t)0x63418a50, (q31_t)0xaf2d7e2b, - (q31_t)0x6331a9d4, (q31_t)0xaf1a0293, (q31_t)0x6321c585, (q31_t)0xaf068a1a, (q31_t)0x6311dd64, (q31_t)0xaef314c0, (q31_t)0x6301f171, (q31_t)0xaedfa285, - (q31_t)0x62f201ac, (q31_t)0xaecc336c, (q31_t)0x62e20e17, (q31_t)0xaeb8c774, (q31_t)0x62d216b3, (q31_t)0xaea55e9e, (q31_t)0x62c21b7e, (q31_t)0xae91f8eb, - (q31_t)0x62b21c7b, (q31_t)0xae7e965b, (q31_t)0x62a219aa, (q31_t)0xae6b36f0, (q31_t)0x6292130c, (q31_t)0xae57daab, (q31_t)0x628208a1, (q31_t)0xae44818b, - (q31_t)0x6271fa69, (q31_t)0xae312b92, (q31_t)0x6261e866, (q31_t)0xae1dd8c0, (q31_t)0x6251d298, (q31_t)0xae0a8916, (q31_t)0x6241b8ff, (q31_t)0xadf73c96, - (q31_t)0x62319b9d, (q31_t)0xade3f33e, (q31_t)0x62217a72, (q31_t)0xadd0ad12, (q31_t)0x6211557e, (q31_t)0xadbd6a10, (q31_t)0x62012cc2, (q31_t)0xadaa2a3b, - (q31_t)0x61f1003f, (q31_t)0xad96ed92, (q31_t)0x61e0cff5, (q31_t)0xad83b416, (q31_t)0x61d09be5, (q31_t)0xad707dc8, (q31_t)0x61c06410, (q31_t)0xad5d4aaa, - (q31_t)0x61b02876, (q31_t)0xad4a1aba, (q31_t)0x619fe918, (q31_t)0xad36edfc, (q31_t)0x618fa5f7, (q31_t)0xad23c46e, (q31_t)0x617f5f12, (q31_t)0xad109e12, - (q31_t)0x616f146c, (q31_t)0xacfd7ae8, (q31_t)0x615ec603, (q31_t)0xacea5af2, (q31_t)0x614e73da, (q31_t)0xacd73e30, (q31_t)0x613e1df0, (q31_t)0xacc424a3, - (q31_t)0x612dc447, (q31_t)0xacb10e4b, (q31_t)0x611d66de, (q31_t)0xac9dfb29, (q31_t)0x610d05b7, (q31_t)0xac8aeb3e, (q31_t)0x60fca0d2, (q31_t)0xac77de8b, - (q31_t)0x60ec3830, (q31_t)0xac64d510, (q31_t)0x60dbcbd1, (q31_t)0xac51cecf, (q31_t)0x60cb5bb7, (q31_t)0xac3ecbc7, (q31_t)0x60bae7e1, (q31_t)0xac2bcbfa, - (q31_t)0x60aa7050, (q31_t)0xac18cf69, (q31_t)0x6099f505, (q31_t)0xac05d613, (q31_t)0x60897601, (q31_t)0xabf2dffb, (q31_t)0x6078f344, (q31_t)0xabdfed1f, - (q31_t)0x60686ccf, (q31_t)0xabccfd83, (q31_t)0x6057e2a2, (q31_t)0xabba1125, (q31_t)0x604754bf, (q31_t)0xaba72807, (q31_t)0x6036c325, (q31_t)0xab944229, - (q31_t)0x60262dd6, (q31_t)0xab815f8d, (q31_t)0x601594d1, (q31_t)0xab6e8032, (q31_t)0x6004f819, (q31_t)0xab5ba41a, (q31_t)0x5ff457ad, (q31_t)0xab48cb46, - (q31_t)0x5fe3b38d, (q31_t)0xab35f5b5, (q31_t)0x5fd30bbc, (q31_t)0xab23236a, (q31_t)0x5fc26038, (q31_t)0xab105464, (q31_t)0x5fb1b104, (q31_t)0xaafd88a4, - (q31_t)0x5fa0fe1f, (q31_t)0xaaeac02c, (q31_t)0x5f90478a, (q31_t)0xaad7fafb, (q31_t)0x5f7f8d46, (q31_t)0xaac53912, (q31_t)0x5f6ecf53, (q31_t)0xaab27a73, - (q31_t)0x5f5e0db3, (q31_t)0xaa9fbf1e, (q31_t)0x5f4d4865, (q31_t)0xaa8d0713, (q31_t)0x5f3c7f6b, (q31_t)0xaa7a5253, (q31_t)0x5f2bb2c5, (q31_t)0xaa67a0e0, - (q31_t)0x5f1ae274, (q31_t)0xaa54f2ba, (q31_t)0x5f0a0e77, (q31_t)0xaa4247e1, (q31_t)0x5ef936d1, (q31_t)0xaa2fa056, (q31_t)0x5ee85b82, (q31_t)0xaa1cfc1a, - (q31_t)0x5ed77c8a, (q31_t)0xaa0a5b2e, (q31_t)0x5ec699e9, (q31_t)0xa9f7bd92, (q31_t)0x5eb5b3a2, (q31_t)0xa9e52347, (q31_t)0x5ea4c9b3, (q31_t)0xa9d28c4e, - (q31_t)0x5e93dc1f, (q31_t)0xa9bff8a8, (q31_t)0x5e82eae5, (q31_t)0xa9ad6855, (q31_t)0x5e71f606, (q31_t)0xa99adb56, (q31_t)0x5e60fd84, (q31_t)0xa98851ac, - (q31_t)0x5e50015d, (q31_t)0xa975cb57, (q31_t)0x5e3f0194, (q31_t)0xa9634858, (q31_t)0x5e2dfe29, (q31_t)0xa950c8b0, (q31_t)0x5e1cf71c, (q31_t)0xa93e4c5f, - (q31_t)0x5e0bec6e, (q31_t)0xa92bd367, (q31_t)0x5dfade20, (q31_t)0xa9195dc7, (q31_t)0x5de9cc33, (q31_t)0xa906eb82, (q31_t)0x5dd8b6a7, (q31_t)0xa8f47c97, - (q31_t)0x5dc79d7c, (q31_t)0xa8e21106, (q31_t)0x5db680b4, (q31_t)0xa8cfa8d2, (q31_t)0x5da5604f, (q31_t)0xa8bd43fa, (q31_t)0x5d943c4e, (q31_t)0xa8aae280, - (q31_t)0x5d8314b1, (q31_t)0xa8988463, (q31_t)0x5d71e979, (q31_t)0xa88629a5, (q31_t)0x5d60baa7, (q31_t)0xa873d246, (q31_t)0x5d4f883b, (q31_t)0xa8617e48, - (q31_t)0x5d3e5237, (q31_t)0xa84f2daa, (q31_t)0x5d2d189a, (q31_t)0xa83ce06e, (q31_t)0x5d1bdb65, (q31_t)0xa82a9693, (q31_t)0x5d0a9a9a, (q31_t)0xa818501c, - (q31_t)0x5cf95638, (q31_t)0xa8060d08, (q31_t)0x5ce80e41, (q31_t)0xa7f3cd59, (q31_t)0x5cd6c2b5, (q31_t)0xa7e1910f, (q31_t)0x5cc57394, (q31_t)0xa7cf582a, - (q31_t)0x5cb420e0, (q31_t)0xa7bd22ac, (q31_t)0x5ca2ca99, (q31_t)0xa7aaf094, (q31_t)0x5c9170bf, (q31_t)0xa798c1e5, (q31_t)0x5c801354, (q31_t)0xa786969e, - (q31_t)0x5c6eb258, (q31_t)0xa7746ec0, (q31_t)0x5c5d4dcc, (q31_t)0xa7624a4d, (q31_t)0x5c4be5b0, (q31_t)0xa7502943, (q31_t)0x5c3a7a05, (q31_t)0xa73e0ba5, - (q31_t)0x5c290acc, (q31_t)0xa72bf174, (q31_t)0x5c179806, (q31_t)0xa719daae, (q31_t)0x5c0621b2, (q31_t)0xa707c757, (q31_t)0x5bf4a7d2, (q31_t)0xa6f5b76d, - (q31_t)0x5be32a67, (q31_t)0xa6e3aaf2, (q31_t)0x5bd1a971, (q31_t)0xa6d1a1e7, (q31_t)0x5bc024f0, (q31_t)0xa6bf9c4b, (q31_t)0x5bae9ce7, (q31_t)0xa6ad9a21, - (q31_t)0x5b9d1154, (q31_t)0xa69b9b68, (q31_t)0x5b8b8239, (q31_t)0xa689a022, (q31_t)0x5b79ef96, (q31_t)0xa677a84e, (q31_t)0x5b68596d, (q31_t)0xa665b3ee, - (q31_t)0x5b56bfbd, (q31_t)0xa653c303, (q31_t)0x5b452288, (q31_t)0xa641d58c, (q31_t)0x5b3381ce, (q31_t)0xa62feb8b, (q31_t)0x5b21dd90, (q31_t)0xa61e0501, - (q31_t)0x5b1035cf, (q31_t)0xa60c21ee, (q31_t)0x5afe8a8b, (q31_t)0xa5fa4252, (q31_t)0x5aecdbc5, (q31_t)0xa5e8662f, (q31_t)0x5adb297d, (q31_t)0xa5d68d85, - (q31_t)0x5ac973b5, (q31_t)0xa5c4b855, (q31_t)0x5ab7ba6c, (q31_t)0xa5b2e6a0, (q31_t)0x5aa5fda5, (q31_t)0xa5a11866, (q31_t)0x5a943d5e, (q31_t)0xa58f4da8, - (q31_t)0x5a82799a, (q31_t)0xa57d8666, (q31_t)0x5a70b258, (q31_t)0xa56bc2a2, (q31_t)0x5a5ee79a, (q31_t)0xa55a025b, (q31_t)0x5a4d1960, (q31_t)0xa5484594, - (q31_t)0x5a3b47ab, (q31_t)0xa5368c4b, (q31_t)0x5a29727b, (q31_t)0xa524d683, (q31_t)0x5a1799d1, (q31_t)0xa513243b, (q31_t)0x5a05bdae, (q31_t)0xa5017575, - (q31_t)0x59f3de12, (q31_t)0xa4efca31, (q31_t)0x59e1faff, (q31_t)0xa4de2270, (q31_t)0x59d01475, (q31_t)0xa4cc7e32, (q31_t)0x59be2a74, (q31_t)0xa4badd78, - (q31_t)0x59ac3cfd, (q31_t)0xa4a94043, (q31_t)0x599a4c12, (q31_t)0xa497a693, (q31_t)0x598857b2, (q31_t)0xa486106a, (q31_t)0x59765fde, (q31_t)0xa4747dc7, - (q31_t)0x59646498, (q31_t)0xa462eeac, (q31_t)0x595265df, (q31_t)0xa4516319, (q31_t)0x594063b5, (q31_t)0xa43fdb10, (q31_t)0x592e5e19, (q31_t)0xa42e568f, - (q31_t)0x591c550e, (q31_t)0xa41cd599, (q31_t)0x590a4893, (q31_t)0xa40b582e, (q31_t)0x58f838a9, (q31_t)0xa3f9de4e, (q31_t)0x58e62552, (q31_t)0xa3e867fa, - (q31_t)0x58d40e8c, (q31_t)0xa3d6f534, (q31_t)0x58c1f45b, (q31_t)0xa3c585fb, (q31_t)0x58afd6bd, (q31_t)0xa3b41a50, (q31_t)0x589db5b3, (q31_t)0xa3a2b234, - (q31_t)0x588b9140, (q31_t)0xa3914da8, (q31_t)0x58796962, (q31_t)0xa37fecac, (q31_t)0x58673e1b, (q31_t)0xa36e8f41, (q31_t)0x58550f6c, (q31_t)0xa35d3567, - (q31_t)0x5842dd54, (q31_t)0xa34bdf20, (q31_t)0x5830a7d6, (q31_t)0xa33a8c6c, (q31_t)0x581e6ef1, (q31_t)0xa3293d4b, (q31_t)0x580c32a7, (q31_t)0xa317f1bf, - (q31_t)0x57f9f2f8, (q31_t)0xa306a9c8, (q31_t)0x57e7afe4, (q31_t)0xa2f56566, (q31_t)0x57d5696d, (q31_t)0xa2e4249b, (q31_t)0x57c31f92, (q31_t)0xa2d2e766, - (q31_t)0x57b0d256, (q31_t)0xa2c1adc9, (q31_t)0x579e81b8, (q31_t)0xa2b077c5, (q31_t)0x578c2dba, (q31_t)0xa29f4559, (q31_t)0x5779d65b, (q31_t)0xa28e1687, - (q31_t)0x57677b9d, (q31_t)0xa27ceb4f, (q31_t)0x57551d80, (q31_t)0xa26bc3b2, (q31_t)0x5742bc06, (q31_t)0xa25a9fb1, (q31_t)0x5730572e, (q31_t)0xa2497f4c, - (q31_t)0x571deefa, (q31_t)0xa2386284, (q31_t)0x570b8369, (q31_t)0xa2274959, (q31_t)0x56f9147e, (q31_t)0xa21633cd, (q31_t)0x56e6a239, (q31_t)0xa20521e0, - (q31_t)0x56d42c99, (q31_t)0xa1f41392, (q31_t)0x56c1b3a1, (q31_t)0xa1e308e4, (q31_t)0x56af3750, (q31_t)0xa1d201d7, (q31_t)0x569cb7a8, (q31_t)0xa1c0fe6c, - (q31_t)0x568a34a9, (q31_t)0xa1affea3, (q31_t)0x5677ae54, (q31_t)0xa19f027c, (q31_t)0x566524aa, (q31_t)0xa18e09fa, (q31_t)0x565297ab, (q31_t)0xa17d151b, - (q31_t)0x56400758, (q31_t)0xa16c23e1, (q31_t)0x562d73b2, (q31_t)0xa15b364d, (q31_t)0x561adcb9, (q31_t)0xa14a4c5e, (q31_t)0x5608426e, (q31_t)0xa1396617, - (q31_t)0x55f5a4d2, (q31_t)0xa1288376, (q31_t)0x55e303e6, (q31_t)0xa117a47e, (q31_t)0x55d05faa, (q31_t)0xa106c92f, (q31_t)0x55bdb81f, (q31_t)0xa0f5f189, - (q31_t)0x55ab0d46, (q31_t)0xa0e51d8c, (q31_t)0x55985f20, (q31_t)0xa0d44d3b, (q31_t)0x5585adad, (q31_t)0xa0c38095, (q31_t)0x5572f8ed, (q31_t)0xa0b2b79b, - (q31_t)0x556040e2, (q31_t)0xa0a1f24d, (q31_t)0x554d858d, (q31_t)0xa09130ad, (q31_t)0x553ac6ee, (q31_t)0xa08072ba, (q31_t)0x55280505, (q31_t)0xa06fb876, - (q31_t)0x55153fd4, (q31_t)0xa05f01e1, (q31_t)0x5502775c, (q31_t)0xa04e4efc, (q31_t)0x54efab9c, (q31_t)0xa03d9fc8, (q31_t)0x54dcdc96, (q31_t)0xa02cf444, - (q31_t)0x54ca0a4b, (q31_t)0xa01c4c73, (q31_t)0x54b734ba, (q31_t)0xa00ba853, (q31_t)0x54a45be6, (q31_t)0x9ffb07e7, (q31_t)0x54917fce, (q31_t)0x9fea6b2f, - (q31_t)0x547ea073, (q31_t)0x9fd9d22a, (q31_t)0x546bbdd7, (q31_t)0x9fc93cdb, (q31_t)0x5458d7f9, (q31_t)0x9fb8ab41, (q31_t)0x5445eedb, (q31_t)0x9fa81d5e, - (q31_t)0x5433027d, (q31_t)0x9f979331, (q31_t)0x542012e1, (q31_t)0x9f870cbc, (q31_t)0x540d2005, (q31_t)0x9f7689ff, (q31_t)0x53fa29ed, (q31_t)0x9f660afb, - (q31_t)0x53e73097, (q31_t)0x9f558fb0, (q31_t)0x53d43406, (q31_t)0x9f45181f, (q31_t)0x53c13439, (q31_t)0x9f34a449, (q31_t)0x53ae3131, (q31_t)0x9f24342f, - (q31_t)0x539b2af0, (q31_t)0x9f13c7d0, (q31_t)0x53882175, (q31_t)0x9f035f2e, (q31_t)0x537514c2, (q31_t)0x9ef2fa49, (q31_t)0x536204d7, (q31_t)0x9ee29922, - (q31_t)0x534ef1b5, (q31_t)0x9ed23bb9, (q31_t)0x533bdb5d, (q31_t)0x9ec1e210, (q31_t)0x5328c1d0, (q31_t)0x9eb18c26, (q31_t)0x5315a50e, (q31_t)0x9ea139fd, - (q31_t)0x53028518, (q31_t)0x9e90eb94, (q31_t)0x52ef61ee, (q31_t)0x9e80a0ee, (q31_t)0x52dc3b92, (q31_t)0x9e705a09, (q31_t)0x52c91204, (q31_t)0x9e6016e8, - (q31_t)0x52b5e546, (q31_t)0x9e4fd78a, (q31_t)0x52a2b556, (q31_t)0x9e3f9bf0, (q31_t)0x528f8238, (q31_t)0x9e2f641b, (q31_t)0x527c4bea, (q31_t)0x9e1f300b, - (q31_t)0x5269126e, (q31_t)0x9e0effc1, (q31_t)0x5255d5c5, (q31_t)0x9dfed33e, (q31_t)0x524295f0, (q31_t)0x9deeaa82, (q31_t)0x522f52ee, (q31_t)0x9dde858e, - (q31_t)0x521c0cc2, (q31_t)0x9dce6463, (q31_t)0x5208c36a, (q31_t)0x9dbe4701, (q31_t)0x51f576ea, (q31_t)0x9dae2d68, (q31_t)0x51e22740, (q31_t)0x9d9e179a, - (q31_t)0x51ced46e, (q31_t)0x9d8e0597, (q31_t)0x51bb7e75, (q31_t)0x9d7df75f, (q31_t)0x51a82555, (q31_t)0x9d6decf4, (q31_t)0x5194c910, (q31_t)0x9d5de656, - (q31_t)0x518169a5, (q31_t)0x9d4de385, (q31_t)0x516e0715, (q31_t)0x9d3de482, (q31_t)0x515aa162, (q31_t)0x9d2de94d, (q31_t)0x5147388c, (q31_t)0x9d1df1e9, - (q31_t)0x5133cc94, (q31_t)0x9d0dfe54, (q31_t)0x51205d7b, (q31_t)0x9cfe0e8f, (q31_t)0x510ceb40, (q31_t)0x9cee229c, (q31_t)0x50f975e6, (q31_t)0x9cde3a7b, - (q31_t)0x50e5fd6d, (q31_t)0x9cce562c, (q31_t)0x50d281d5, (q31_t)0x9cbe75b0, (q31_t)0x50bf031f, (q31_t)0x9cae9907, (q31_t)0x50ab814d, (q31_t)0x9c9ec033, - (q31_t)0x5097fc5e, (q31_t)0x9c8eeb34, (q31_t)0x50847454, (q31_t)0x9c7f1a0a, (q31_t)0x5070e92f, (q31_t)0x9c6f4cb6, (q31_t)0x505d5af1, (q31_t)0x9c5f8339, - (q31_t)0x5049c999, (q31_t)0x9c4fbd93, (q31_t)0x50363529, (q31_t)0x9c3ffbc5, (q31_t)0x50229da1, (q31_t)0x9c303dcf, (q31_t)0x500f0302, (q31_t)0x9c2083b3, - (q31_t)0x4ffb654d, (q31_t)0x9c10cd70, (q31_t)0x4fe7c483, (q31_t)0x9c011b08, (q31_t)0x4fd420a4, (q31_t)0x9bf16c7a, (q31_t)0x4fc079b1, (q31_t)0x9be1c1c8, - (q31_t)0x4faccfab, (q31_t)0x9bd21af3, (q31_t)0x4f992293, (q31_t)0x9bc277fa, (q31_t)0x4f857269, (q31_t)0x9bb2d8de, (q31_t)0x4f71bf2e, (q31_t)0x9ba33da0, - (q31_t)0x4f5e08e3, (q31_t)0x9b93a641, (q31_t)0x4f4a4f89, (q31_t)0x9b8412c1, (q31_t)0x4f369320, (q31_t)0x9b748320, (q31_t)0x4f22d3aa, (q31_t)0x9b64f760, - (q31_t)0x4f0f1126, (q31_t)0x9b556f81, (q31_t)0x4efb4b96, (q31_t)0x9b45eb83, (q31_t)0x4ee782fb, (q31_t)0x9b366b68, (q31_t)0x4ed3b755, (q31_t)0x9b26ef2f, - (q31_t)0x4ebfe8a5, (q31_t)0x9b1776da, (q31_t)0x4eac16eb, (q31_t)0x9b080268, (q31_t)0x4e984229, (q31_t)0x9af891db, (q31_t)0x4e846a60, (q31_t)0x9ae92533, - (q31_t)0x4e708f8f, (q31_t)0x9ad9bc71, (q31_t)0x4e5cb1b9, (q31_t)0x9aca5795, (q31_t)0x4e48d0dd, (q31_t)0x9abaf6a1, (q31_t)0x4e34ecfc, (q31_t)0x9aab9993, - (q31_t)0x4e210617, (q31_t)0x9a9c406e, (q31_t)0x4e0d1c30, (q31_t)0x9a8ceb31, (q31_t)0x4df92f46, (q31_t)0x9a7d99de, (q31_t)0x4de53f5a, (q31_t)0x9a6e4c74, - (q31_t)0x4dd14c6e, (q31_t)0x9a5f02f5, (q31_t)0x4dbd5682, (q31_t)0x9a4fbd61, (q31_t)0x4da95d96, (q31_t)0x9a407bb9, (q31_t)0x4d9561ac, (q31_t)0x9a313dfc, - (q31_t)0x4d8162c4, (q31_t)0x9a22042d, (q31_t)0x4d6d60df, (q31_t)0x9a12ce4b, (q31_t)0x4d595bfe, (q31_t)0x9a039c57, (q31_t)0x4d455422, (q31_t)0x99f46e51, - (q31_t)0x4d31494b, (q31_t)0x99e5443b, (q31_t)0x4d1d3b7a, (q31_t)0x99d61e14, (q31_t)0x4d092ab0, (q31_t)0x99c6fbde, (q31_t)0x4cf516ee, (q31_t)0x99b7dd99, - (q31_t)0x4ce10034, (q31_t)0x99a8c345, (q31_t)0x4ccce684, (q31_t)0x9999ace3, (q31_t)0x4cb8c9dd, (q31_t)0x998a9a74, (q31_t)0x4ca4aa41, (q31_t)0x997b8bf8, - (q31_t)0x4c9087b1, (q31_t)0x996c816f, (q31_t)0x4c7c622d, (q31_t)0x995d7adc, (q31_t)0x4c6839b7, (q31_t)0x994e783d, (q31_t)0x4c540e4e, (q31_t)0x993f7993, - (q31_t)0x4c3fdff4, (q31_t)0x99307ee0, (q31_t)0x4c2baea9, (q31_t)0x99218824, (q31_t)0x4c177a6e, (q31_t)0x9912955f, (q31_t)0x4c034345, (q31_t)0x9903a691, - (q31_t)0x4bef092d, (q31_t)0x98f4bbbc, (q31_t)0x4bdacc28, (q31_t)0x98e5d4e0, (q31_t)0x4bc68c36, (q31_t)0x98d6f1fe, (q31_t)0x4bb24958, (q31_t)0x98c81316, - (q31_t)0x4b9e0390, (q31_t)0x98b93828, (q31_t)0x4b89badd, (q31_t)0x98aa6136, (q31_t)0x4b756f40, (q31_t)0x989b8e40, (q31_t)0x4b6120bb, (q31_t)0x988cbf46, - (q31_t)0x4b4ccf4d, (q31_t)0x987df449, (q31_t)0x4b387af9, (q31_t)0x986f2d4a, (q31_t)0x4b2423be, (q31_t)0x98606a49, (q31_t)0x4b0fc99d, (q31_t)0x9851ab46, - (q31_t)0x4afb6c98, (q31_t)0x9842f043, (q31_t)0x4ae70caf, (q31_t)0x98343940, (q31_t)0x4ad2a9e2, (q31_t)0x9825863d, (q31_t)0x4abe4433, (q31_t)0x9816d73b, - (q31_t)0x4aa9dba2, (q31_t)0x98082c3b, (q31_t)0x4a957030, (q31_t)0x97f9853d, (q31_t)0x4a8101de, (q31_t)0x97eae242, (q31_t)0x4a6c90ad, (q31_t)0x97dc4349, - (q31_t)0x4a581c9e, (q31_t)0x97cda855, (q31_t)0x4a43a5b0, (q31_t)0x97bf1165, (q31_t)0x4a2f2be6, (q31_t)0x97b07e7a, (q31_t)0x4a1aaf3f, (q31_t)0x97a1ef94, - (q31_t)0x4a062fbd, (q31_t)0x979364b5, (q31_t)0x49f1ad61, (q31_t)0x9784dddc, (q31_t)0x49dd282a, (q31_t)0x97765b0a, (q31_t)0x49c8a01b, (q31_t)0x9767dc41, - (q31_t)0x49b41533, (q31_t)0x9759617f, (q31_t)0x499f8774, (q31_t)0x974aeac6, (q31_t)0x498af6df, (q31_t)0x973c7817, (q31_t)0x49766373, (q31_t)0x972e0971, - (q31_t)0x4961cd33, (q31_t)0x971f9ed7, (q31_t)0x494d341e, (q31_t)0x97113847, (q31_t)0x49389836, (q31_t)0x9702d5c3, (q31_t)0x4923f97b, (q31_t)0x96f4774b, - (q31_t)0x490f57ee, (q31_t)0x96e61ce0, (q31_t)0x48fab391, (q31_t)0x96d7c682, (q31_t)0x48e60c62, (q31_t)0x96c97432, (q31_t)0x48d16265, (q31_t)0x96bb25f0, - (q31_t)0x48bcb599, (q31_t)0x96acdbbe, (q31_t)0x48a805ff, (q31_t)0x969e959b, (q31_t)0x48935397, (q31_t)0x96905388, (q31_t)0x487e9e64, (q31_t)0x96821585, - (q31_t)0x4869e665, (q31_t)0x9673db94, (q31_t)0x48552b9b, (q31_t)0x9665a5b4, (q31_t)0x48406e08, (q31_t)0x965773e7, (q31_t)0x482badab, (q31_t)0x9649462d, - (q31_t)0x4816ea86, (q31_t)0x963b1c86, (q31_t)0x48022499, (q31_t)0x962cf6f2, (q31_t)0x47ed5be6, (q31_t)0x961ed574, (q31_t)0x47d8906d, (q31_t)0x9610b80a, - (q31_t)0x47c3c22f, (q31_t)0x96029eb6, (q31_t)0x47aef12c, (q31_t)0x95f48977, (q31_t)0x479a1d67, (q31_t)0x95e67850, (q31_t)0x478546de, (q31_t)0x95d86b3f, - (q31_t)0x47706d93, (q31_t)0x95ca6247, (q31_t)0x475b9188, (q31_t)0x95bc5d66, (q31_t)0x4746b2bc, (q31_t)0x95ae5c9f, (q31_t)0x4731d131, (q31_t)0x95a05ff0, - (q31_t)0x471cece7, (q31_t)0x9592675c, (q31_t)0x470805df, (q31_t)0x958472e2, (q31_t)0x46f31c1a, (q31_t)0x95768283, (q31_t)0x46de2f99, (q31_t)0x9568963f, - (q31_t)0x46c9405c, (q31_t)0x955aae17, (q31_t)0x46b44e65, (q31_t)0x954cca0c, (q31_t)0x469f59b4, (q31_t)0x953eea1e, (q31_t)0x468a624a, (q31_t)0x95310e4e, - (q31_t)0x46756828, (q31_t)0x9523369c, (q31_t)0x46606b4e, (q31_t)0x95156308, (q31_t)0x464b6bbe, (q31_t)0x95079394, (q31_t)0x46366978, (q31_t)0x94f9c83f, - (q31_t)0x4621647d, (q31_t)0x94ec010b, (q31_t)0x460c5cce, (q31_t)0x94de3df8, (q31_t)0x45f7526b, (q31_t)0x94d07f05, (q31_t)0x45e24556, (q31_t)0x94c2c435, - (q31_t)0x45cd358f, (q31_t)0x94b50d87, (q31_t)0x45b82318, (q31_t)0x94a75afd, (q31_t)0x45a30df0, (q31_t)0x9499ac95, (q31_t)0x458df619, (q31_t)0x948c0252, - (q31_t)0x4578db93, (q31_t)0x947e5c33, (q31_t)0x4563be60, (q31_t)0x9470ba39, (q31_t)0x454e9e80, (q31_t)0x94631c65, (q31_t)0x45397bf4, (q31_t)0x945582b7, - (q31_t)0x452456bd, (q31_t)0x9447ed2f, (q31_t)0x450f2edb, (q31_t)0x943a5bcf, (q31_t)0x44fa0450, (q31_t)0x942cce96, (q31_t)0x44e4d71c, (q31_t)0x941f4585, - (q31_t)0x44cfa740, (q31_t)0x9411c09e, (q31_t)0x44ba74bd, (q31_t)0x94043fdf, (q31_t)0x44a53f93, (q31_t)0x93f6c34a, (q31_t)0x449007c4, (q31_t)0x93e94adf, - (q31_t)0x447acd50, (q31_t)0x93dbd6a0, (q31_t)0x44659039, (q31_t)0x93ce668b, (q31_t)0x4450507e, (q31_t)0x93c0faa3, (q31_t)0x443b0e21, (q31_t)0x93b392e6, - (q31_t)0x4425c923, (q31_t)0x93a62f57, (q31_t)0x44108184, (q31_t)0x9398cff5, (q31_t)0x43fb3746, (q31_t)0x938b74c1, (q31_t)0x43e5ea68, (q31_t)0x937e1dbb, - (q31_t)0x43d09aed, (q31_t)0x9370cae4, (q31_t)0x43bb48d4, (q31_t)0x93637c3d, (q31_t)0x43a5f41e, (q31_t)0x935631c5, (q31_t)0x43909ccd, (q31_t)0x9348eb7e, - (q31_t)0x437b42e1, (q31_t)0x933ba968, (q31_t)0x4365e65b, (q31_t)0x932e6b84, (q31_t)0x4350873c, (q31_t)0x932131d1, (q31_t)0x433b2585, (q31_t)0x9313fc51, - (q31_t)0x4325c135, (q31_t)0x9306cb04, (q31_t)0x43105a50, (q31_t)0x92f99deb, (q31_t)0x42faf0d4, (q31_t)0x92ec7505, (q31_t)0x42e584c3, (q31_t)0x92df5054, - (q31_t)0x42d0161e, (q31_t)0x92d22fd9, (q31_t)0x42baa4e6, (q31_t)0x92c51392, (q31_t)0x42a5311b, (q31_t)0x92b7fb82, (q31_t)0x428fbabe, (q31_t)0x92aae7a8, - (q31_t)0x427a41d0, (q31_t)0x929dd806, (q31_t)0x4264c653, (q31_t)0x9290cc9b, (q31_t)0x424f4845, (q31_t)0x9283c568, (q31_t)0x4239c7aa, (q31_t)0x9276c26d, - (q31_t)0x42244481, (q31_t)0x9269c3ac, (q31_t)0x420ebecb, (q31_t)0x925cc924, (q31_t)0x41f93689, (q31_t)0x924fd2d7, (q31_t)0x41e3abbc, (q31_t)0x9242e0c4, - (q31_t)0x41ce1e65, (q31_t)0x9235f2ec, (q31_t)0x41b88e84, (q31_t)0x9229094f, (q31_t)0x41a2fc1a, (q31_t)0x921c23ef, (q31_t)0x418d6729, (q31_t)0x920f42cb, - (q31_t)0x4177cfb1, (q31_t)0x920265e4, (q31_t)0x416235b2, (q31_t)0x91f58d3b, (q31_t)0x414c992f, (q31_t)0x91e8b8d0, (q31_t)0x4136fa27, (q31_t)0x91dbe8a4, - (q31_t)0x4121589b, (q31_t)0x91cf1cb6, (q31_t)0x410bb48c, (q31_t)0x91c25508, (q31_t)0x40f60dfb, (q31_t)0x91b5919a, (q31_t)0x40e064ea, (q31_t)0x91a8d26d, - (q31_t)0x40cab958, (q31_t)0x919c1781, (q31_t)0x40b50b46, (q31_t)0x918f60d6, (q31_t)0x409f5ab6, (q31_t)0x9182ae6d, (q31_t)0x4089a7a8, (q31_t)0x91760047, - (q31_t)0x4073f21d, (q31_t)0x91695663, (q31_t)0x405e3a16, (q31_t)0x915cb0c3, (q31_t)0x40487f94, (q31_t)0x91500f67, (q31_t)0x4032c297, (q31_t)0x91437250, - (q31_t)0x401d0321, (q31_t)0x9136d97d, (q31_t)0x40074132, (q31_t)0x912a44f0, (q31_t)0x3ff17cca, (q31_t)0x911db4a9, (q31_t)0x3fdbb5ec, (q31_t)0x911128a8, - (q31_t)0x3fc5ec98, (q31_t)0x9104a0ee, (q31_t)0x3fb020ce, (q31_t)0x90f81d7b, (q31_t)0x3f9a5290, (q31_t)0x90eb9e50, (q31_t)0x3f8481dd, (q31_t)0x90df236e, - (q31_t)0x3f6eaeb8, (q31_t)0x90d2acd4, (q31_t)0x3f58d921, (q31_t)0x90c63a83, (q31_t)0x3f430119, (q31_t)0x90b9cc7d, (q31_t)0x3f2d26a0, (q31_t)0x90ad62c0, - (q31_t)0x3f1749b8, (q31_t)0x90a0fd4e, (q31_t)0x3f016a61, (q31_t)0x90949c28, (q31_t)0x3eeb889c, (q31_t)0x90883f4d, (q31_t)0x3ed5a46b, (q31_t)0x907be6be, - (q31_t)0x3ebfbdcd, (q31_t)0x906f927c, (q31_t)0x3ea9d4c3, (q31_t)0x90634287, (q31_t)0x3e93e950, (q31_t)0x9056f6df, (q31_t)0x3e7dfb73, (q31_t)0x904aaf86, - (q31_t)0x3e680b2c, (q31_t)0x903e6c7b, (q31_t)0x3e52187f, (q31_t)0x90322dbf, (q31_t)0x3e3c2369, (q31_t)0x9025f352, (q31_t)0x3e262bee, (q31_t)0x9019bd36, - (q31_t)0x3e10320d, (q31_t)0x900d8b69, (q31_t)0x3dfa35c8, (q31_t)0x90015dee, (q31_t)0x3de4371f, (q31_t)0x8ff534c4, (q31_t)0x3dce3614, (q31_t)0x8fe90fec, - (q31_t)0x3db832a6, (q31_t)0x8fdcef66, (q31_t)0x3da22cd7, (q31_t)0x8fd0d333, (q31_t)0x3d8c24a8, (q31_t)0x8fc4bb53, (q31_t)0x3d761a19, (q31_t)0x8fb8a7c7, - (q31_t)0x3d600d2c, (q31_t)0x8fac988f, (q31_t)0x3d49fde1, (q31_t)0x8fa08dab, (q31_t)0x3d33ec39, (q31_t)0x8f94871d, (q31_t)0x3d1dd835, (q31_t)0x8f8884e4, - (q31_t)0x3d07c1d6, (q31_t)0x8f7c8701, (q31_t)0x3cf1a91c, (q31_t)0x8f708d75, (q31_t)0x3cdb8e09, (q31_t)0x8f649840, (q31_t)0x3cc5709e, (q31_t)0x8f58a761, - (q31_t)0x3caf50da, (q31_t)0x8f4cbadb, (q31_t)0x3c992ec0, (q31_t)0x8f40d2ad, (q31_t)0x3c830a50, (q31_t)0x8f34eed8, (q31_t)0x3c6ce38a, (q31_t)0x8f290f5c, - (q31_t)0x3c56ba70, (q31_t)0x8f1d343a, (q31_t)0x3c408f03, (q31_t)0x8f115d72, (q31_t)0x3c2a6142, (q31_t)0x8f058b04, (q31_t)0x3c143130, (q31_t)0x8ef9bcf2, - (q31_t)0x3bfdfecd, (q31_t)0x8eedf33b, (q31_t)0x3be7ca1a, (q31_t)0x8ee22de0, (q31_t)0x3bd19318, (q31_t)0x8ed66ce1, (q31_t)0x3bbb59c7, (q31_t)0x8ecab040, - (q31_t)0x3ba51e29, (q31_t)0x8ebef7fb, (q31_t)0x3b8ee03e, (q31_t)0x8eb34415, (q31_t)0x3b78a007, (q31_t)0x8ea7948c, (q31_t)0x3b625d86, (q31_t)0x8e9be963, - (q31_t)0x3b4c18ba, (q31_t)0x8e904298, (q31_t)0x3b35d1a5, (q31_t)0x8e84a02d, (q31_t)0x3b1f8848, (q31_t)0x8e790222, (q31_t)0x3b093ca3, (q31_t)0x8e6d6877, - (q31_t)0x3af2eeb7, (q31_t)0x8e61d32e, (q31_t)0x3adc9e86, (q31_t)0x8e564246, (q31_t)0x3ac64c0f, (q31_t)0x8e4ab5bf, (q31_t)0x3aaff755, (q31_t)0x8e3f2d9b, - (q31_t)0x3a99a057, (q31_t)0x8e33a9da, (q31_t)0x3a834717, (q31_t)0x8e282a7b, (q31_t)0x3a6ceb96, (q31_t)0x8e1caf80, (q31_t)0x3a568dd4, (q31_t)0x8e1138ea, - (q31_t)0x3a402dd2, (q31_t)0x8e05c6b7, (q31_t)0x3a29cb91, (q31_t)0x8dfa58ea, (q31_t)0x3a136712, (q31_t)0x8deeef82, (q31_t)0x39fd0056, (q31_t)0x8de38a80, - (q31_t)0x39e6975e, (q31_t)0x8dd829e4, (q31_t)0x39d02c2a, (q31_t)0x8dcccdaf, (q31_t)0x39b9bebc, (q31_t)0x8dc175e0, (q31_t)0x39a34f13, (q31_t)0x8db6227a, - (q31_t)0x398cdd32, (q31_t)0x8daad37b, (q31_t)0x39766919, (q31_t)0x8d9f88e5, (q31_t)0x395ff2c9, (q31_t)0x8d9442b8, (q31_t)0x39497a43, (q31_t)0x8d8900f3, - (q31_t)0x3932ff87, (q31_t)0x8d7dc399, (q31_t)0x391c8297, (q31_t)0x8d728aa9, (q31_t)0x39060373, (q31_t)0x8d675623, (q31_t)0x38ef821c, (q31_t)0x8d5c2609, - (q31_t)0x38d8fe93, (q31_t)0x8d50fa59, (q31_t)0x38c278d9, (q31_t)0x8d45d316, (q31_t)0x38abf0ef, (q31_t)0x8d3ab03f, (q31_t)0x389566d6, (q31_t)0x8d2f91d5, - (q31_t)0x387eda8e, (q31_t)0x8d2477d8, (q31_t)0x38684c19, (q31_t)0x8d196249, (q31_t)0x3851bb77, (q31_t)0x8d0e5127, (q31_t)0x383b28a9, (q31_t)0x8d034474, - (q31_t)0x382493b0, (q31_t)0x8cf83c30, (q31_t)0x380dfc8d, (q31_t)0x8ced385b, (q31_t)0x37f76341, (q31_t)0x8ce238f6, (q31_t)0x37e0c7cc, (q31_t)0x8cd73e01, - (q31_t)0x37ca2a30, (q31_t)0x8ccc477d, (q31_t)0x37b38a6d, (q31_t)0x8cc1556a, (q31_t)0x379ce885, (q31_t)0x8cb667c8, (q31_t)0x37864477, (q31_t)0x8cab7e98, - (q31_t)0x376f9e46, (q31_t)0x8ca099da, (q31_t)0x3758f5f2, (q31_t)0x8c95b98f, (q31_t)0x37424b7b, (q31_t)0x8c8addb7, (q31_t)0x372b9ee3, (q31_t)0x8c800652, - (q31_t)0x3714f02a, (q31_t)0x8c753362, (q31_t)0x36fe3f52, (q31_t)0x8c6a64e5, (q31_t)0x36e78c5b, (q31_t)0x8c5f9ade, (q31_t)0x36d0d746, (q31_t)0x8c54d54c, - (q31_t)0x36ba2014, (q31_t)0x8c4a142f, (q31_t)0x36a366c6, (q31_t)0x8c3f5788, (q31_t)0x368cab5c, (q31_t)0x8c349f58, (q31_t)0x3675edd9, (q31_t)0x8c29eb9f, - (q31_t)0x365f2e3b, (q31_t)0x8c1f3c5d, (q31_t)0x36486c86, (q31_t)0x8c149192, (q31_t)0x3631a8b8, (q31_t)0x8c09eb40, (q31_t)0x361ae2d3, (q31_t)0x8bff4966, - (q31_t)0x36041ad9, (q31_t)0x8bf4ac05, (q31_t)0x35ed50c9, (q31_t)0x8bea131e, (q31_t)0x35d684a6, (q31_t)0x8bdf7eb0, (q31_t)0x35bfb66e, (q31_t)0x8bd4eebc, - (q31_t)0x35a8e625, (q31_t)0x8bca6343, (q31_t)0x359213c9, (q31_t)0x8bbfdc44, (q31_t)0x357b3f5d, (q31_t)0x8bb559c1, (q31_t)0x356468e2, (q31_t)0x8baadbba, - (q31_t)0x354d9057, (q31_t)0x8ba0622f, (q31_t)0x3536b5be, (q31_t)0x8b95ed21, (q31_t)0x351fd918, (q31_t)0x8b8b7c8f, (q31_t)0x3508fa66, (q31_t)0x8b81107b, - (q31_t)0x34f219a8, (q31_t)0x8b76a8e4, (q31_t)0x34db36df, (q31_t)0x8b6c45cc, (q31_t)0x34c4520d, (q31_t)0x8b61e733, (q31_t)0x34ad6b32, (q31_t)0x8b578d18, - (q31_t)0x34968250, (q31_t)0x8b4d377c, (q31_t)0x347f9766, (q31_t)0x8b42e661, (q31_t)0x3468aa76, (q31_t)0x8b3899c6, (q31_t)0x3451bb81, (q31_t)0x8b2e51ab, - (q31_t)0x343aca87, (q31_t)0x8b240e11, (q31_t)0x3423d78a, (q31_t)0x8b19cef8, (q31_t)0x340ce28b, (q31_t)0x8b0f9462, (q31_t)0x33f5eb89, (q31_t)0x8b055e4d, - (q31_t)0x33def287, (q31_t)0x8afb2cbb, (q31_t)0x33c7f785, (q31_t)0x8af0ffac, (q31_t)0x33b0fa84, (q31_t)0x8ae6d720, (q31_t)0x3399fb85, (q31_t)0x8adcb318, - (q31_t)0x3382fa88, (q31_t)0x8ad29394, (q31_t)0x336bf78f, (q31_t)0x8ac87894, (q31_t)0x3354f29b, (q31_t)0x8abe6219, (q31_t)0x333debab, (q31_t)0x8ab45024, - (q31_t)0x3326e2c3, (q31_t)0x8aaa42b4, (q31_t)0x330fd7e1, (q31_t)0x8aa039cb, (q31_t)0x32f8cb07, (q31_t)0x8a963567, (q31_t)0x32e1bc36, (q31_t)0x8a8c358b, - (q31_t)0x32caab6f, (q31_t)0x8a823a36, (q31_t)0x32b398b3, (q31_t)0x8a784368, (q31_t)0x329c8402, (q31_t)0x8a6e5123, (q31_t)0x32856d5e, (q31_t)0x8a646365, - (q31_t)0x326e54c7, (q31_t)0x8a5a7a31, (q31_t)0x32573a3f, (q31_t)0x8a509585, (q31_t)0x32401dc6, (q31_t)0x8a46b564, (q31_t)0x3228ff5c, (q31_t)0x8a3cd9cc, - (q31_t)0x3211df04, (q31_t)0x8a3302be, (q31_t)0x31fabcbd, (q31_t)0x8a29303b, (q31_t)0x31e39889, (q31_t)0x8a1f6243, (q31_t)0x31cc7269, (q31_t)0x8a1598d6, - (q31_t)0x31b54a5e, (q31_t)0x8a0bd3f5, (q31_t)0x319e2067, (q31_t)0x8a0213a0, (q31_t)0x3186f487, (q31_t)0x89f857d8, (q31_t)0x316fc6be, (q31_t)0x89eea09d, - (q31_t)0x3158970e, (q31_t)0x89e4edef, (q31_t)0x31416576, (q31_t)0x89db3fcf, (q31_t)0x312a31f8, (q31_t)0x89d1963c, (q31_t)0x3112fc95, (q31_t)0x89c7f138, - (q31_t)0x30fbc54d, (q31_t)0x89be50c3, (q31_t)0x30e48c22, (q31_t)0x89b4b4dd, (q31_t)0x30cd5115, (q31_t)0x89ab1d87, (q31_t)0x30b61426, (q31_t)0x89a18ac0, - (q31_t)0x309ed556, (q31_t)0x8997fc8a, (q31_t)0x308794a6, (q31_t)0x898e72e4, (q31_t)0x30705217, (q31_t)0x8984edcf, (q31_t)0x30590dab, (q31_t)0x897b6d4c, - (q31_t)0x3041c761, (q31_t)0x8971f15a, (q31_t)0x302a7f3a, (q31_t)0x896879fb, (q31_t)0x30133539, (q31_t)0x895f072e, (q31_t)0x2ffbe95d, (q31_t)0x895598f3, - (q31_t)0x2fe49ba7, (q31_t)0x894c2f4c, (q31_t)0x2fcd4c19, (q31_t)0x8942ca39, (q31_t)0x2fb5fab2, (q31_t)0x893969b9, (q31_t)0x2f9ea775, (q31_t)0x89300dce, - (q31_t)0x2f875262, (q31_t)0x8926b677, (q31_t)0x2f6ffb7a, (q31_t)0x891d63b5, (q31_t)0x2f58a2be, (q31_t)0x89141589, (q31_t)0x2f41482e, (q31_t)0x890acbf2, - (q31_t)0x2f29ebcc, (q31_t)0x890186f2, (q31_t)0x2f128d99, (q31_t)0x88f84687, (q31_t)0x2efb2d95, (q31_t)0x88ef0ab4, (q31_t)0x2ee3cbc1, (q31_t)0x88e5d378, - (q31_t)0x2ecc681e, (q31_t)0x88dca0d3, (q31_t)0x2eb502ae, (q31_t)0x88d372c6, (q31_t)0x2e9d9b70, (q31_t)0x88ca4951, (q31_t)0x2e863267, (q31_t)0x88c12475, - (q31_t)0x2e6ec792, (q31_t)0x88b80432, (q31_t)0x2e575af3, (q31_t)0x88aee888, (q31_t)0x2e3fec8b, (q31_t)0x88a5d177, (q31_t)0x2e287c5a, (q31_t)0x889cbf01, - (q31_t)0x2e110a62, (q31_t)0x8893b125, (q31_t)0x2df996a3, (q31_t)0x888aa7e3, (q31_t)0x2de2211e, (q31_t)0x8881a33d, (q31_t)0x2dcaa9d5, (q31_t)0x8878a332, - (q31_t)0x2db330c7, (q31_t)0x886fa7c2, (q31_t)0x2d9bb5f6, (q31_t)0x8866b0ef, (q31_t)0x2d843964, (q31_t)0x885dbeb8, (q31_t)0x2d6cbb10, (q31_t)0x8854d11e, - (q31_t)0x2d553afc, (q31_t)0x884be821, (q31_t)0x2d3db928, (q31_t)0x884303c1, (q31_t)0x2d263596, (q31_t)0x883a23ff, (q31_t)0x2d0eb046, (q31_t)0x883148db, - (q31_t)0x2cf72939, (q31_t)0x88287256, (q31_t)0x2cdfa071, (q31_t)0x881fa06f, (q31_t)0x2cc815ee, (q31_t)0x8816d327, (q31_t)0x2cb089b1, (q31_t)0x880e0a7f, - (q31_t)0x2c98fbba, (q31_t)0x88054677, (q31_t)0x2c816c0c, (q31_t)0x87fc870f, (q31_t)0x2c69daa6, (q31_t)0x87f3cc48, (q31_t)0x2c52478a, (q31_t)0x87eb1621, - (q31_t)0x2c3ab2b9, (q31_t)0x87e2649b, (q31_t)0x2c231c33, (q31_t)0x87d9b7b7, (q31_t)0x2c0b83fa, (q31_t)0x87d10f75, (q31_t)0x2bf3ea0d, (q31_t)0x87c86bd5, - (q31_t)0x2bdc4e6f, (q31_t)0x87bfccd7, (q31_t)0x2bc4b120, (q31_t)0x87b7327d, (q31_t)0x2bad1221, (q31_t)0x87ae9cc5, (q31_t)0x2b957173, (q31_t)0x87a60bb1, - (q31_t)0x2b7dcf17, (q31_t)0x879d7f41, (q31_t)0x2b662b0e, (q31_t)0x8794f774, (q31_t)0x2b4e8558, (q31_t)0x878c744d, (q31_t)0x2b36ddf7, (q31_t)0x8783f5ca, - (q31_t)0x2b1f34eb, (q31_t)0x877b7bec, (q31_t)0x2b078a36, (q31_t)0x877306b4, (q31_t)0x2aefddd8, (q31_t)0x876a9621, (q31_t)0x2ad82fd2, (q31_t)0x87622a35, - (q31_t)0x2ac08026, (q31_t)0x8759c2ef, (q31_t)0x2aa8ced3, (q31_t)0x87516050, (q31_t)0x2a911bdc, (q31_t)0x87490258, (q31_t)0x2a796740, (q31_t)0x8740a907, - (q31_t)0x2a61b101, (q31_t)0x8738545e, (q31_t)0x2a49f920, (q31_t)0x8730045d, (q31_t)0x2a323f9e, (q31_t)0x8727b905, (q31_t)0x2a1a847b, (q31_t)0x871f7255, - (q31_t)0x2a02c7b8, (q31_t)0x8717304e, (q31_t)0x29eb0957, (q31_t)0x870ef2f1, (q31_t)0x29d34958, (q31_t)0x8706ba3d, (q31_t)0x29bb87bc, (q31_t)0x86fe8633, - (q31_t)0x29a3c485, (q31_t)0x86f656d3, (q31_t)0x298bffb2, (q31_t)0x86ee2c1e, (q31_t)0x29743946, (q31_t)0x86e60614, (q31_t)0x295c7140, (q31_t)0x86dde4b5, - (q31_t)0x2944a7a2, (q31_t)0x86d5c802, (q31_t)0x292cdc6d, (q31_t)0x86cdaffa, (q31_t)0x29150fa1, (q31_t)0x86c59c9f, (q31_t)0x28fd4140, (q31_t)0x86bd8df0, - (q31_t)0x28e5714b, (q31_t)0x86b583ee, (q31_t)0x28cd9fc1, (q31_t)0x86ad7e99, (q31_t)0x28b5cca5, (q31_t)0x86a57df2, (q31_t)0x289df7f8, (q31_t)0x869d81f8, - (q31_t)0x288621b9, (q31_t)0x86958aac, (q31_t)0x286e49ea, (q31_t)0x868d980e, (q31_t)0x2856708d, (q31_t)0x8685aa20, (q31_t)0x283e95a1, (q31_t)0x867dc0e0, - (q31_t)0x2826b928, (q31_t)0x8675dc4f, (q31_t)0x280edb23, (q31_t)0x866dfc6e, (q31_t)0x27f6fb92, (q31_t)0x8666213c, (q31_t)0x27df1a77, (q31_t)0x865e4abb, - (q31_t)0x27c737d3, (q31_t)0x865678eb, (q31_t)0x27af53a6, (q31_t)0x864eabcb, (q31_t)0x27976df1, (q31_t)0x8646e35c, (q31_t)0x277f86b5, (q31_t)0x863f1f9e, - (q31_t)0x27679df4, (q31_t)0x86376092, (q31_t)0x274fb3ae, (q31_t)0x862fa638, (q31_t)0x2737c7e3, (q31_t)0x8627f091, (q31_t)0x271fda96, (q31_t)0x86203f9c, - (q31_t)0x2707ebc7, (q31_t)0x86189359, (q31_t)0x26effb76, (q31_t)0x8610ebca, (q31_t)0x26d809a5, (q31_t)0x860948ef, (q31_t)0x26c01655, (q31_t)0x8601aac7, - (q31_t)0x26a82186, (q31_t)0x85fa1153, (q31_t)0x26902b39, (q31_t)0x85f27c93, (q31_t)0x26783370, (q31_t)0x85eaec88, (q31_t)0x26603a2c, (q31_t)0x85e36132, - (q31_t)0x26483f6c, (q31_t)0x85dbda91, (q31_t)0x26304333, (q31_t)0x85d458a6, (q31_t)0x26184581, (q31_t)0x85ccdb70, (q31_t)0x26004657, (q31_t)0x85c562f1, - (q31_t)0x25e845b6, (q31_t)0x85bdef28, (q31_t)0x25d0439f, (q31_t)0x85b68015, (q31_t)0x25b84012, (q31_t)0x85af15b9, (q31_t)0x25a03b11, (q31_t)0x85a7b015, - (q31_t)0x2588349d, (q31_t)0x85a04f28, (q31_t)0x25702cb7, (q31_t)0x8598f2f3, (q31_t)0x2558235f, (q31_t)0x85919b76, (q31_t)0x25401896, (q31_t)0x858a48b1, - (q31_t)0x25280c5e, (q31_t)0x8582faa5, (q31_t)0x250ffeb7, (q31_t)0x857bb152, (q31_t)0x24f7efa2, (q31_t)0x85746cb8, (q31_t)0x24dfdf20, (q31_t)0x856d2cd7, - (q31_t)0x24c7cd33, (q31_t)0x8565f1b0, (q31_t)0x24afb9da, (q31_t)0x855ebb44, (q31_t)0x2497a517, (q31_t)0x85578991, (q31_t)0x247f8eec, (q31_t)0x85505c99, - (q31_t)0x24677758, (q31_t)0x8549345c, (q31_t)0x244f5e5c, (q31_t)0x854210db, (q31_t)0x243743fa, (q31_t)0x853af214, (q31_t)0x241f2833, (q31_t)0x8533d809, - (q31_t)0x24070b08, (q31_t)0x852cc2bb, (q31_t)0x23eeec78, (q31_t)0x8525b228, (q31_t)0x23d6cc87, (q31_t)0x851ea652, (q31_t)0x23beab33, (q31_t)0x85179f39, - (q31_t)0x23a6887f, (q31_t)0x85109cdd, (q31_t)0x238e646a, (q31_t)0x85099f3e, (q31_t)0x23763ef7, (q31_t)0x8502a65c, (q31_t)0x235e1826, (q31_t)0x84fbb239, - (q31_t)0x2345eff8, (q31_t)0x84f4c2d4, (q31_t)0x232dc66d, (q31_t)0x84edd82d, (q31_t)0x23159b88, (q31_t)0x84e6f244, (q31_t)0x22fd6f48, (q31_t)0x84e0111b, - (q31_t)0x22e541af, (q31_t)0x84d934b1, (q31_t)0x22cd12bd, (q31_t)0x84d25d06, (q31_t)0x22b4e274, (q31_t)0x84cb8a1b, (q31_t)0x229cb0d5, (q31_t)0x84c4bbf0, - (q31_t)0x22847de0, (q31_t)0x84bdf286, (q31_t)0x226c4996, (q31_t)0x84b72ddb, (q31_t)0x225413f8, (q31_t)0x84b06df2, (q31_t)0x223bdd08, (q31_t)0x84a9b2ca, - (q31_t)0x2223a4c5, (q31_t)0x84a2fc62, (q31_t)0x220b6b32, (q31_t)0x849c4abd, (q31_t)0x21f3304f, (q31_t)0x84959dd9, (q31_t)0x21daf41d, (q31_t)0x848ef5b7, - (q31_t)0x21c2b69c, (q31_t)0x84885258, (q31_t)0x21aa77cf, (q31_t)0x8481b3bb, (q31_t)0x219237b5, (q31_t)0x847b19e1, (q31_t)0x2179f64f, (q31_t)0x847484ca, - (q31_t)0x2161b3a0, (q31_t)0x846df477, (q31_t)0x21496fa7, (q31_t)0x846768e7, (q31_t)0x21312a65, (q31_t)0x8460e21a, (q31_t)0x2118e3dc, (q31_t)0x845a6012, - (q31_t)0x21009c0c, (q31_t)0x8453e2cf, (q31_t)0x20e852f6, (q31_t)0x844d6a50, (q31_t)0x20d0089c, (q31_t)0x8446f695, (q31_t)0x20b7bcfe, (q31_t)0x844087a0, - (q31_t)0x209f701c, (q31_t)0x843a1d70, (q31_t)0x208721f9, (q31_t)0x8433b806, (q31_t)0x206ed295, (q31_t)0x842d5762, (q31_t)0x205681f1, (q31_t)0x8426fb84, - (q31_t)0x203e300d, (q31_t)0x8420a46c, (q31_t)0x2025dcec, (q31_t)0x841a521a, (q31_t)0x200d888d, (q31_t)0x84140490, (q31_t)0x1ff532f2, (q31_t)0x840dbbcc, - (q31_t)0x1fdcdc1b, (q31_t)0x840777d0, (q31_t)0x1fc4840a, (q31_t)0x8401389b, (q31_t)0x1fac2abf, (q31_t)0x83fafe2e, (q31_t)0x1f93d03c, (q31_t)0x83f4c889, - (q31_t)0x1f7b7481, (q31_t)0x83ee97ad, (q31_t)0x1f63178f, (q31_t)0x83e86b99, (q31_t)0x1f4ab968, (q31_t)0x83e2444d, (q31_t)0x1f325a0b, (q31_t)0x83dc21cb, - (q31_t)0x1f19f97b, (q31_t)0x83d60412, (q31_t)0x1f0197b8, (q31_t)0x83cfeb22, (q31_t)0x1ee934c3, (q31_t)0x83c9d6fc, (q31_t)0x1ed0d09d, (q31_t)0x83c3c7a0, - (q31_t)0x1eb86b46, (q31_t)0x83bdbd0e, (q31_t)0x1ea004c1, (q31_t)0x83b7b746, (q31_t)0x1e879d0d, (q31_t)0x83b1b649, (q31_t)0x1e6f342c, (q31_t)0x83abba17, - (q31_t)0x1e56ca1e, (q31_t)0x83a5c2b0, (q31_t)0x1e3e5ee5, (q31_t)0x839fd014, (q31_t)0x1e25f282, (q31_t)0x8399e244, (q31_t)0x1e0d84f5, (q31_t)0x8393f940, - (q31_t)0x1df5163f, (q31_t)0x838e1507, (q31_t)0x1ddca662, (q31_t)0x8388359b, (q31_t)0x1dc4355e, (q31_t)0x83825afb, (q31_t)0x1dabc334, (q31_t)0x837c8528, - (q31_t)0x1d934fe5, (q31_t)0x8376b422, (q31_t)0x1d7adb73, (q31_t)0x8370e7e9, (q31_t)0x1d6265dd, (q31_t)0x836b207d, (q31_t)0x1d49ef26, (q31_t)0x83655ddf, - (q31_t)0x1d31774d, (q31_t)0x835fa00f, (q31_t)0x1d18fe54, (q31_t)0x8359e70d, (q31_t)0x1d00843d, (q31_t)0x835432d8, (q31_t)0x1ce80906, (q31_t)0x834e8373, - (q31_t)0x1ccf8cb3, (q31_t)0x8348d8dc, (q31_t)0x1cb70f43, (q31_t)0x83433314, (q31_t)0x1c9e90b8, (q31_t)0x833d921b, (q31_t)0x1c861113, (q31_t)0x8337f5f1, - (q31_t)0x1c6d9053, (q31_t)0x83325e97, (q31_t)0x1c550e7c, (q31_t)0x832ccc0d, (q31_t)0x1c3c8b8c, (q31_t)0x83273e52, (q31_t)0x1c240786, (q31_t)0x8321b568, - (q31_t)0x1c0b826a, (q31_t)0x831c314e, (q31_t)0x1bf2fc3a, (q31_t)0x8316b205, (q31_t)0x1bda74f6, (q31_t)0x8311378d, (q31_t)0x1bc1ec9e, (q31_t)0x830bc1e6, - (q31_t)0x1ba96335, (q31_t)0x83065110, (q31_t)0x1b90d8bb, (q31_t)0x8300e50b, (q31_t)0x1b784d30, (q31_t)0x82fb7dd8, (q31_t)0x1b5fc097, (q31_t)0x82f61b77, - (q31_t)0x1b4732ef, (q31_t)0x82f0bde8, (q31_t)0x1b2ea43a, (q31_t)0x82eb652b, (q31_t)0x1b161479, (q31_t)0x82e61141, (q31_t)0x1afd83ad, (q31_t)0x82e0c22a, - (q31_t)0x1ae4f1d6, (q31_t)0x82db77e5, (q31_t)0x1acc5ef6, (q31_t)0x82d63274, (q31_t)0x1ab3cb0d, (q31_t)0x82d0f1d5, (q31_t)0x1a9b361d, (q31_t)0x82cbb60b, - (q31_t)0x1a82a026, (q31_t)0x82c67f14, (q31_t)0x1a6a0929, (q31_t)0x82c14cf1, (q31_t)0x1a517128, (q31_t)0x82bc1fa2, (q31_t)0x1a38d823, (q31_t)0x82b6f727, - (q31_t)0x1a203e1b, (q31_t)0x82b1d381, (q31_t)0x1a07a311, (q31_t)0x82acb4b0, (q31_t)0x19ef0707, (q31_t)0x82a79ab3, (q31_t)0x19d669fc, (q31_t)0x82a2858c, - (q31_t)0x19bdcbf3, (q31_t)0x829d753a, (q31_t)0x19a52ceb, (q31_t)0x829869be, (q31_t)0x198c8ce7, (q31_t)0x82936317, (q31_t)0x1973ebe6, (q31_t)0x828e6146, - (q31_t)0x195b49ea, (q31_t)0x8289644b, (q31_t)0x1942a6f3, (q31_t)0x82846c26, (q31_t)0x192a0304, (q31_t)0x827f78d8, (q31_t)0x19115e1c, (q31_t)0x827a8a61, - (q31_t)0x18f8b83c, (q31_t)0x8275a0c0, (q31_t)0x18e01167, (q31_t)0x8270bbf7, (q31_t)0x18c7699b, (q31_t)0x826bdc04, (q31_t)0x18aec0db, (q31_t)0x826700e9, - (q31_t)0x18961728, (q31_t)0x82622aa6, (q31_t)0x187d6c82, (q31_t)0x825d593a, (q31_t)0x1864c0ea, (q31_t)0x82588ca7, (q31_t)0x184c1461, (q31_t)0x8253c4eb, - (q31_t)0x183366e9, (q31_t)0x824f0208, (q31_t)0x181ab881, (q31_t)0x824a43fe, (q31_t)0x1802092c, (q31_t)0x82458acc, (q31_t)0x17e958ea, (q31_t)0x8240d673, - (q31_t)0x17d0a7bc, (q31_t)0x823c26f3, (q31_t)0x17b7f5a3, (q31_t)0x82377c4c, (q31_t)0x179f429f, (q31_t)0x8232d67f, (q31_t)0x17868eb3, (q31_t)0x822e358b, - (q31_t)0x176dd9de, (q31_t)0x82299971, (q31_t)0x17552422, (q31_t)0x82250232, (q31_t)0x173c6d80, (q31_t)0x82206fcc, (q31_t)0x1723b5f9, (q31_t)0x821be240, - (q31_t)0x170afd8d, (q31_t)0x82175990, (q31_t)0x16f2443e, (q31_t)0x8212d5b9, (q31_t)0x16d98a0c, (q31_t)0x820e56be, (q31_t)0x16c0cef9, (q31_t)0x8209dc9e, - (q31_t)0x16a81305, (q31_t)0x82056758, (q31_t)0x168f5632, (q31_t)0x8200f6ef, (q31_t)0x1676987f, (q31_t)0x81fc8b60, (q31_t)0x165dd9f0, (q31_t)0x81f824ae, - (q31_t)0x16451a83, (q31_t)0x81f3c2d7, (q31_t)0x162c5a3b, (q31_t)0x81ef65dc, (q31_t)0x16139918, (q31_t)0x81eb0dbe, (q31_t)0x15fad71b, (q31_t)0x81e6ba7c, - (q31_t)0x15e21445, (q31_t)0x81e26c16, (q31_t)0x15c95097, (q31_t)0x81de228d, (q31_t)0x15b08c12, (q31_t)0x81d9dde1, (q31_t)0x1597c6b7, (q31_t)0x81d59e13, - (q31_t)0x157f0086, (q31_t)0x81d16321, (q31_t)0x15663982, (q31_t)0x81cd2d0c, (q31_t)0x154d71aa, (q31_t)0x81c8fbd6, (q31_t)0x1534a901, (q31_t)0x81c4cf7d, - (q31_t)0x151bdf86, (q31_t)0x81c0a801, (q31_t)0x1503153a, (q31_t)0x81bc8564, (q31_t)0x14ea4a1f, (q31_t)0x81b867a5, (q31_t)0x14d17e36, (q31_t)0x81b44ec4, - (q31_t)0x14b8b17f, (q31_t)0x81b03ac2, (q31_t)0x149fe3fc, (q31_t)0x81ac2b9e, (q31_t)0x148715ae, (q31_t)0x81a82159, (q31_t)0x146e4694, (q31_t)0x81a41bf4, - (q31_t)0x145576b1, (q31_t)0x81a01b6d, (q31_t)0x143ca605, (q31_t)0x819c1fc5, (q31_t)0x1423d492, (q31_t)0x819828fd, (q31_t)0x140b0258, (q31_t)0x81943715, - (q31_t)0x13f22f58, (q31_t)0x81904a0c, (q31_t)0x13d95b93, (q31_t)0x818c61e3, (q31_t)0x13c0870a, (q31_t)0x81887e9a, (q31_t)0x13a7b1bf, (q31_t)0x8184a032, - (q31_t)0x138edbb1, (q31_t)0x8180c6a9, (q31_t)0x137604e2, (q31_t)0x817cf201, (q31_t)0x135d2d53, (q31_t)0x8179223a, (q31_t)0x13445505, (q31_t)0x81755754, - (q31_t)0x132b7bf9, (q31_t)0x8171914e, (q31_t)0x1312a230, (q31_t)0x816dd02a, (q31_t)0x12f9c7aa, (q31_t)0x816a13e6, (q31_t)0x12e0ec6a, (q31_t)0x81665c84, - (q31_t)0x12c8106f, (q31_t)0x8162aa04, (q31_t)0x12af33ba, (q31_t)0x815efc65, (q31_t)0x1296564d, (q31_t)0x815b53a8, (q31_t)0x127d7829, (q31_t)0x8157afcd, - (q31_t)0x1264994e, (q31_t)0x815410d4, (q31_t)0x124bb9be, (q31_t)0x815076bd, (q31_t)0x1232d979, (q31_t)0x814ce188, (q31_t)0x1219f880, (q31_t)0x81495136, - (q31_t)0x120116d5, (q31_t)0x8145c5c7, (q31_t)0x11e83478, (q31_t)0x81423f3a, (q31_t)0x11cf516a, (q31_t)0x813ebd90, (q31_t)0x11b66dad, (q31_t)0x813b40ca, - (q31_t)0x119d8941, (q31_t)0x8137c8e6, (q31_t)0x1184a427, (q31_t)0x813455e6, (q31_t)0x116bbe60, (q31_t)0x8130e7c9, (q31_t)0x1152d7ed, (q31_t)0x812d7e8f, - (q31_t)0x1139f0cf, (q31_t)0x812a1a3a, (q31_t)0x11210907, (q31_t)0x8126bac8, (q31_t)0x11082096, (q31_t)0x8123603a, (q31_t)0x10ef377d, (q31_t)0x81200a90, - (q31_t)0x10d64dbd, (q31_t)0x811cb9ca, (q31_t)0x10bd6356, (q31_t)0x81196de9, (q31_t)0x10a4784b, (q31_t)0x811626ec, (q31_t)0x108b8c9b, (q31_t)0x8112e4d4, - (q31_t)0x1072a048, (q31_t)0x810fa7a0, (q31_t)0x1059b352, (q31_t)0x810c6f52, (q31_t)0x1040c5bb, (q31_t)0x81093be8, (q31_t)0x1027d784, (q31_t)0x81060d63, - (q31_t)0x100ee8ad, (q31_t)0x8102e3c4, (q31_t)0xff5f938, (q31_t)0x80ffbf0a, (q31_t)0xfdd0926, (q31_t)0x80fc9f35, (q31_t)0xfc41876, (q31_t)0x80f98446, - (q31_t)0xfab272b, (q31_t)0x80f66e3c, (q31_t)0xf923546, (q31_t)0x80f35d19, (q31_t)0xf7942c7, (q31_t)0x80f050db, (q31_t)0xf604faf, (q31_t)0x80ed4984, - (q31_t)0xf475bff, (q31_t)0x80ea4712, (q31_t)0xf2e67b8, (q31_t)0x80e74987, (q31_t)0xf1572dc, (q31_t)0x80e450e2, (q31_t)0xefc7d6b, (q31_t)0x80e15d24, - (q31_t)0xee38766, (q31_t)0x80de6e4c, (q31_t)0xeca90ce, (q31_t)0x80db845b, (q31_t)0xeb199a4, (q31_t)0x80d89f51, (q31_t)0xe98a1e9, (q31_t)0x80d5bf2e, - (q31_t)0xe7fa99e, (q31_t)0x80d2e3f2, (q31_t)0xe66b0c3, (q31_t)0x80d00d9d, (q31_t)0xe4db75b, (q31_t)0x80cd3c2f, (q31_t)0xe34bd66, (q31_t)0x80ca6fa9, - (q31_t)0xe1bc2e4, (q31_t)0x80c7a80a, (q31_t)0xe02c7d7, (q31_t)0x80c4e553, (q31_t)0xde9cc40, (q31_t)0x80c22784, (q31_t)0xdd0d01f, (q31_t)0x80bf6e9c, - (q31_t)0xdb7d376, (q31_t)0x80bcba9d, (q31_t)0xd9ed646, (q31_t)0x80ba0b85, (q31_t)0xd85d88f, (q31_t)0x80b76156, (q31_t)0xd6cda53, (q31_t)0x80b4bc0e, - (q31_t)0xd53db92, (q31_t)0x80b21baf, (q31_t)0xd3adc4e, (q31_t)0x80af8039, (q31_t)0xd21dc87, (q31_t)0x80ace9ab, (q31_t)0xd08dc3f, (q31_t)0x80aa5806, - (q31_t)0xcefdb76, (q31_t)0x80a7cb49, (q31_t)0xcd6da2d, (q31_t)0x80a54376, (q31_t)0xcbdd865, (q31_t)0x80a2c08b, (q31_t)0xca4d620, (q31_t)0x80a04289, - (q31_t)0xc8bd35e, (q31_t)0x809dc971, (q31_t)0xc72d020, (q31_t)0x809b5541, (q31_t)0xc59cc68, (q31_t)0x8098e5fb, (q31_t)0xc40c835, (q31_t)0x80967b9f, - (q31_t)0xc27c389, (q31_t)0x8094162c, (q31_t)0xc0ebe66, (q31_t)0x8091b5a2, (q31_t)0xbf5b8cb, (q31_t)0x808f5a02, (q31_t)0xbdcb2bb, (q31_t)0x808d034c, - (q31_t)0xbc3ac35, (q31_t)0x808ab180, (q31_t)0xbaaa53b, (q31_t)0x8088649e, (q31_t)0xb919dcf, (q31_t)0x80861ca6, (q31_t)0xb7895f0, (q31_t)0x8083d998, - (q31_t)0xb5f8d9f, (q31_t)0x80819b74, (q31_t)0xb4684df, (q31_t)0x807f623b, (q31_t)0xb2d7baf, (q31_t)0x807d2dec, (q31_t)0xb147211, (q31_t)0x807afe87, - (q31_t)0xafb6805, (q31_t)0x8078d40d, (q31_t)0xae25d8d, (q31_t)0x8076ae7e, (q31_t)0xac952aa, (q31_t)0x80748dd9, (q31_t)0xab0475c, (q31_t)0x8072721f, - (q31_t)0xa973ba5, (q31_t)0x80705b50, (q31_t)0xa7e2f85, (q31_t)0x806e496c, (q31_t)0xa6522fe, (q31_t)0x806c3c74, (q31_t)0xa4c1610, (q31_t)0x806a3466, - (q31_t)0xa3308bd, (q31_t)0x80683143, (q31_t)0xa19fb04, (q31_t)0x8066330c, (q31_t)0xa00ece8, (q31_t)0x806439c0, (q31_t)0x9e7de6a, (q31_t)0x80624560, - (q31_t)0x9cecf89, (q31_t)0x806055eb, (q31_t)0x9b5c048, (q31_t)0x805e6b62, (q31_t)0x99cb0a7, (q31_t)0x805c85c4, (q31_t)0x983a0a7, (q31_t)0x805aa512, - (q31_t)0x96a9049, (q31_t)0x8058c94c, (q31_t)0x9517f8f, (q31_t)0x8056f272, (q31_t)0x9386e78, (q31_t)0x80552084, (q31_t)0x91f5d06, (q31_t)0x80535381, - (q31_t)0x9064b3a, (q31_t)0x80518b6b, (q31_t)0x8ed3916, (q31_t)0x804fc841, (q31_t)0x8d42699, (q31_t)0x804e0a04, (q31_t)0x8bb13c5, (q31_t)0x804c50b2, - (q31_t)0x8a2009a, (q31_t)0x804a9c4d, (q31_t)0x888ed1b, (q31_t)0x8048ecd5, (q31_t)0x86fd947, (q31_t)0x80474248, (q31_t)0x856c520, (q31_t)0x80459ca9, - (q31_t)0x83db0a7, (q31_t)0x8043fbf6, (q31_t)0x8249bdd, (q31_t)0x80426030, (q31_t)0x80b86c2, (q31_t)0x8040c956, (q31_t)0x7f27157, (q31_t)0x803f376a, - (q31_t)0x7d95b9e, (q31_t)0x803daa6a, (q31_t)0x7c04598, (q31_t)0x803c2257, (q31_t)0x7a72f45, (q31_t)0x803a9f31, (q31_t)0x78e18a7, (q31_t)0x803920f8, - (q31_t)0x77501be, (q31_t)0x8037a7ac, (q31_t)0x75bea8c, (q31_t)0x8036334e, (q31_t)0x742d311, (q31_t)0x8034c3dd, (q31_t)0x729bb4e, (q31_t)0x80335959, - (q31_t)0x710a345, (q31_t)0x8031f3c2, (q31_t)0x6f78af6, (q31_t)0x80309318, (q31_t)0x6de7262, (q31_t)0x802f375d, (q31_t)0x6c5598a, (q31_t)0x802de08e, - (q31_t)0x6ac406f, (q31_t)0x802c8ead, (q31_t)0x6932713, (q31_t)0x802b41ba, (q31_t)0x67a0d76, (q31_t)0x8029f9b4, (q31_t)0x660f398, (q31_t)0x8028b69c, - (q31_t)0x647d97c, (q31_t)0x80277872, (q31_t)0x62ebf22, (q31_t)0x80263f36, (q31_t)0x615a48b, (q31_t)0x80250ae7, (q31_t)0x5fc89b8, (q31_t)0x8023db86, - (q31_t)0x5e36ea9, (q31_t)0x8022b114, (q31_t)0x5ca5361, (q31_t)0x80218b8f, (q31_t)0x5b137df, (q31_t)0x80206af8, (q31_t)0x5981c26, (q31_t)0x801f4f4f, - (q31_t)0x57f0035, (q31_t)0x801e3895, (q31_t)0x565e40d, (q31_t)0x801d26c8, (q31_t)0x54cc7b1, (q31_t)0x801c19ea, (q31_t)0x533ab20, (q31_t)0x801b11fa, - (q31_t)0x51a8e5c, (q31_t)0x801a0ef8, (q31_t)0x5017165, (q31_t)0x801910e4, (q31_t)0x4e8543e, (q31_t)0x801817bf, (q31_t)0x4cf36e5, (q31_t)0x80172388, - (q31_t)0x4b6195d, (q31_t)0x80163440, (q31_t)0x49cfba7, (q31_t)0x801549e6, (q31_t)0x483ddc3, (q31_t)0x8014647b, (q31_t)0x46abfb3, (q31_t)0x801383fe, - (q31_t)0x451a177, (q31_t)0x8012a86f, (q31_t)0x4388310, (q31_t)0x8011d1d0, (q31_t)0x41f6480, (q31_t)0x8011001f, (q31_t)0x40645c7, (q31_t)0x8010335c, - (q31_t)0x3ed26e6, (q31_t)0x800f6b88, (q31_t)0x3d407df, (q31_t)0x800ea8a3, (q31_t)0x3bae8b2, (q31_t)0x800deaad, (q31_t)0x3a1c960, (q31_t)0x800d31a5, - (q31_t)0x388a9ea, (q31_t)0x800c7d8c, (q31_t)0x36f8a51, (q31_t)0x800bce63, (q31_t)0x3566a96, (q31_t)0x800b2427, (q31_t)0x33d4abb, (q31_t)0x800a7edb, - (q31_t)0x3242abf, (q31_t)0x8009de7e, (q31_t)0x30b0aa4, (q31_t)0x80094310, (q31_t)0x2f1ea6c, (q31_t)0x8008ac90, (q31_t)0x2d8ca16, (q31_t)0x80081b00, - (q31_t)0x2bfa9a4, (q31_t)0x80078e5e, (q31_t)0x2a68917, (q31_t)0x800706ac, (q31_t)0x28d6870, (q31_t)0x800683e8, (q31_t)0x27447b0, (q31_t)0x80060614, - (q31_t)0x25b26d7, (q31_t)0x80058d2f, (q31_t)0x24205e8, (q31_t)0x80051939, (q31_t)0x228e4e2, (q31_t)0x8004aa32, (q31_t)0x20fc3c6, (q31_t)0x8004401a, - (q31_t)0x1f6a297, (q31_t)0x8003daf1, (q31_t)0x1dd8154, (q31_t)0x80037ab7, (q31_t)0x1c45ffe, (q31_t)0x80031f6d, (q31_t)0x1ab3e97, (q31_t)0x8002c912, - (q31_t)0x1921d20, (q31_t)0x800277a6, (q31_t)0x178fb99, (q31_t)0x80022b29, (q31_t)0x15fda03, (q31_t)0x8001e39b, (q31_t)0x146b860, (q31_t)0x8001a0fd, - (q31_t)0x12d96b1, (q31_t)0x8001634e, (q31_t)0x11474f6, (q31_t)0x80012a8e, (q31_t)0xfb5330, (q31_t)0x8000f6bd, (q31_t)0xe23160, (q31_t)0x8000c7dc, - (q31_t)0xc90f88, (q31_t)0x80009dea, (q31_t)0xafeda8, (q31_t)0x800078e7, (q31_t)0x96cbc1, (q31_t)0x800058d4, (q31_t)0x7da9d4, (q31_t)0x80003daf, - (q31_t)0x6487e3, (q31_t)0x8000277a, (q31_t)0x4b65ee, (q31_t)0x80001635, (q31_t)0x3243f5, (q31_t)0x800009df, (q31_t)0x1921fb, (q31_t)0x80000278 -}; - -static const q31_t WeightsQ31_8192[16384] = { - (q31_t)0x7fffffff, (q31_t)0x0, (q31_t)0x7fffffd9, (q31_t)0xfff9b781, (q31_t)0x7fffff62, (q31_t)0xfff36f02, (q31_t)0x7ffffe9d, - (q31_t)0xffed2684, - (q31_t)0x7ffffd88, (q31_t)0xffe6de05, (q31_t)0x7ffffc25, (q31_t)0xffe09586, (q31_t)0x7ffffa73, (q31_t)0xffda4d08, - (q31_t)0x7ffff872, (q31_t)0xffd40489, - (q31_t)0x7ffff621, (q31_t)0xffcdbc0b, (q31_t)0x7ffff382, (q31_t)0xffc7738c, (q31_t)0x7ffff094, (q31_t)0xffc12b0e, - (q31_t)0x7fffed57, (q31_t)0xffbae290, - (q31_t)0x7fffe9cb, (q31_t)0xffb49a12, (q31_t)0x7fffe5f0, (q31_t)0xffae5195, (q31_t)0x7fffe1c6, (q31_t)0xffa80917, - (q31_t)0x7fffdd4d, (q31_t)0xffa1c09a, - (q31_t)0x7fffd886, (q31_t)0xff9b781d, (q31_t)0x7fffd36f, (q31_t)0xff952fa0, (q31_t)0x7fffce09, (q31_t)0xff8ee724, - (q31_t)0x7fffc854, (q31_t)0xff889ea7, - (q31_t)0x7fffc251, (q31_t)0xff82562c, (q31_t)0x7fffbbfe, (q31_t)0xff7c0db0, (q31_t)0x7fffb55c, (q31_t)0xff75c535, - (q31_t)0x7fffae6c, (q31_t)0xff6f7cba, - (q31_t)0x7fffa72c, (q31_t)0xff69343f, (q31_t)0x7fff9f9e, (q31_t)0xff62ebc5, (q31_t)0x7fff97c1, (q31_t)0xff5ca34b, - (q31_t)0x7fff8f94, (q31_t)0xff565ad1, - (q31_t)0x7fff8719, (q31_t)0xff501258, (q31_t)0x7fff7e4f, (q31_t)0xff49c9df, (q31_t)0x7fff7536, (q31_t)0xff438167, - (q31_t)0x7fff6bcd, (q31_t)0xff3d38ef, - (q31_t)0x7fff6216, (q31_t)0xff36f078, (q31_t)0x7fff5810, (q31_t)0xff30a801, (q31_t)0x7fff4dbb, (q31_t)0xff2a5f8b, - (q31_t)0x7fff4317, (q31_t)0xff241715, - (q31_t)0x7fff3824, (q31_t)0xff1dcea0, (q31_t)0x7fff2ce2, (q31_t)0xff17862b, (q31_t)0x7fff2151, (q31_t)0xff113db7, - (q31_t)0x7fff1572, (q31_t)0xff0af543, - (q31_t)0x7fff0943, (q31_t)0xff04acd0, (q31_t)0x7ffefcc5, (q31_t)0xfefe645e, (q31_t)0x7ffeeff8, (q31_t)0xfef81bec, - (q31_t)0x7ffee2dd, (q31_t)0xfef1d37b, - (q31_t)0x7ffed572, (q31_t)0xfeeb8b0a, (q31_t)0x7ffec7b9, (q31_t)0xfee5429a, (q31_t)0x7ffeb9b0, (q31_t)0xfedefa2b, - (q31_t)0x7ffeab59, (q31_t)0xfed8b1bd, - (q31_t)0x7ffe9cb2, (q31_t)0xfed2694f, (q31_t)0x7ffe8dbd, (q31_t)0xfecc20e2, (q31_t)0x7ffe7e79, (q31_t)0xfec5d876, - (q31_t)0x7ffe6ee5, (q31_t)0xfebf900a, - (q31_t)0x7ffe5f03, (q31_t)0xfeb947a0, (q31_t)0x7ffe4ed2, (q31_t)0xfeb2ff36, (q31_t)0x7ffe3e52, (q31_t)0xfeacb6cc, - (q31_t)0x7ffe2d83, (q31_t)0xfea66e64, - (q31_t)0x7ffe1c65, (q31_t)0xfea025fd, (q31_t)0x7ffe0af8, (q31_t)0xfe99dd96, (q31_t)0x7ffdf93c, (q31_t)0xfe939530, - (q31_t)0x7ffde731, (q31_t)0xfe8d4ccb, - (q31_t)0x7ffdd4d7, (q31_t)0xfe870467, (q31_t)0x7ffdc22e, (q31_t)0xfe80bc04, (q31_t)0x7ffdaf37, (q31_t)0xfe7a73a2, - (q31_t)0x7ffd9bf0, (q31_t)0xfe742b41, - (q31_t)0x7ffd885a, (q31_t)0xfe6de2e0, (q31_t)0x7ffd7476, (q31_t)0xfe679a81, (q31_t)0x7ffd6042, (q31_t)0xfe615223, - (q31_t)0x7ffd4bc0, (q31_t)0xfe5b09c5, - (q31_t)0x7ffd36ee, (q31_t)0xfe54c169, (q31_t)0x7ffd21ce, (q31_t)0xfe4e790d, (q31_t)0x7ffd0c5f, (q31_t)0xfe4830b3, - (q31_t)0x7ffcf6a0, (q31_t)0xfe41e85a, - (q31_t)0x7ffce093, (q31_t)0xfe3ba002, (q31_t)0x7ffcca37, (q31_t)0xfe3557ab, (q31_t)0x7ffcb38c, (q31_t)0xfe2f0f55, - (q31_t)0x7ffc9c92, (q31_t)0xfe28c700, - (q31_t)0x7ffc8549, (q31_t)0xfe227eac, (q31_t)0x7ffc6db1, (q31_t)0xfe1c365a, (q31_t)0x7ffc55ca, (q31_t)0xfe15ee09, - (q31_t)0x7ffc3d94, (q31_t)0xfe0fa5b8, - (q31_t)0x7ffc250f, (q31_t)0xfe095d69, (q31_t)0x7ffc0c3b, (q31_t)0xfe03151c, (q31_t)0x7ffbf319, (q31_t)0xfdfccccf, - (q31_t)0x7ffbd9a7, (q31_t)0xfdf68484, - (q31_t)0x7ffbbfe6, (q31_t)0xfdf03c3a, (q31_t)0x7ffba5d7, (q31_t)0xfde9f3f1, (q31_t)0x7ffb8b78, (q31_t)0xfde3aba9, - (q31_t)0x7ffb70cb, (q31_t)0xfddd6363, - (q31_t)0x7ffb55ce, (q31_t)0xfdd71b1e, (q31_t)0x7ffb3a83, (q31_t)0xfdd0d2db, (q31_t)0x7ffb1ee9, (q31_t)0xfdca8a99, - (q31_t)0x7ffb0300, (q31_t)0xfdc44258, - (q31_t)0x7ffae6c7, (q31_t)0xfdbdfa18, (q31_t)0x7ffaca40, (q31_t)0xfdb7b1da, (q31_t)0x7ffaad6a, (q31_t)0xfdb1699e, - (q31_t)0x7ffa9045, (q31_t)0xfdab2162, - (q31_t)0x7ffa72d1, (q31_t)0xfda4d929, (q31_t)0x7ffa550e, (q31_t)0xfd9e90f0, (q31_t)0x7ffa36fc, (q31_t)0xfd9848b9, - (q31_t)0x7ffa189c, (q31_t)0xfd920084, - (q31_t)0x7ff9f9ec, (q31_t)0xfd8bb850, (q31_t)0x7ff9daed, (q31_t)0xfd85701e, (q31_t)0x7ff9bba0, (q31_t)0xfd7f27ed, - (q31_t)0x7ff99c03, (q31_t)0xfd78dfbd, - (q31_t)0x7ff97c18, (q31_t)0xfd729790, (q31_t)0x7ff95bdd, (q31_t)0xfd6c4f64, (q31_t)0x7ff93b54, (q31_t)0xfd660739, - (q31_t)0x7ff91a7b, (q31_t)0xfd5fbf10, - (q31_t)0x7ff8f954, (q31_t)0xfd5976e9, (q31_t)0x7ff8d7de, (q31_t)0xfd532ec3, (q31_t)0x7ff8b619, (q31_t)0xfd4ce69f, - (q31_t)0x7ff89405, (q31_t)0xfd469e7c, - (q31_t)0x7ff871a2, (q31_t)0xfd40565c, (q31_t)0x7ff84ef0, (q31_t)0xfd3a0e3d, (q31_t)0x7ff82bef, (q31_t)0xfd33c61f, - (q31_t)0x7ff8089f, (q31_t)0xfd2d7e04, - (q31_t)0x7ff7e500, (q31_t)0xfd2735ea, (q31_t)0x7ff7c113, (q31_t)0xfd20edd2, (q31_t)0x7ff79cd6, (q31_t)0xfd1aa5bc, - (q31_t)0x7ff7784a, (q31_t)0xfd145da7, - (q31_t)0x7ff75370, (q31_t)0xfd0e1594, (q31_t)0x7ff72e46, (q31_t)0xfd07cd83, (q31_t)0x7ff708ce, (q31_t)0xfd018574, - (q31_t)0x7ff6e307, (q31_t)0xfcfb3d67, - (q31_t)0x7ff6bcf0, (q31_t)0xfcf4f55c, (q31_t)0x7ff6968b, (q31_t)0xfceead52, (q31_t)0x7ff66fd7, (q31_t)0xfce8654b, - (q31_t)0x7ff648d4, (q31_t)0xfce21d45, - (q31_t)0x7ff62182, (q31_t)0xfcdbd541, (q31_t)0x7ff5f9e1, (q31_t)0xfcd58d3f, (q31_t)0x7ff5d1f1, (q31_t)0xfccf453f, - (q31_t)0x7ff5a9b2, (q31_t)0xfcc8fd41, - (q31_t)0x7ff58125, (q31_t)0xfcc2b545, (q31_t)0x7ff55848, (q31_t)0xfcbc6d4c, (q31_t)0x7ff52f1d, (q31_t)0xfcb62554, - (q31_t)0x7ff505a2, (q31_t)0xfcafdd5e, - (q31_t)0x7ff4dbd9, (q31_t)0xfca9956a, (q31_t)0x7ff4b1c0, (q31_t)0xfca34d78, (q31_t)0x7ff48759, (q31_t)0xfc9d0588, - (q31_t)0x7ff45ca3, (q31_t)0xfc96bd9b, - (q31_t)0x7ff4319d, (q31_t)0xfc9075af, (q31_t)0x7ff40649, (q31_t)0xfc8a2dc6, (q31_t)0x7ff3daa6, (q31_t)0xfc83e5de, - (q31_t)0x7ff3aeb4, (q31_t)0xfc7d9df9, - (q31_t)0x7ff38274, (q31_t)0xfc775616, (q31_t)0x7ff355e4, (q31_t)0xfc710e36, (q31_t)0x7ff32905, (q31_t)0xfc6ac657, - (q31_t)0x7ff2fbd7, (q31_t)0xfc647e7b, - (q31_t)0x7ff2ce5b, (q31_t)0xfc5e36a0, (q31_t)0x7ff2a08f, (q31_t)0xfc57eec9, (q31_t)0x7ff27275, (q31_t)0xfc51a6f3, - (q31_t)0x7ff2440b, (q31_t)0xfc4b5f20, - (q31_t)0x7ff21553, (q31_t)0xfc45174e, (q31_t)0x7ff1e64c, (q31_t)0xfc3ecf80, (q31_t)0x7ff1b6f6, (q31_t)0xfc3887b3, - (q31_t)0x7ff18751, (q31_t)0xfc323fe9, - (q31_t)0x7ff1575d, (q31_t)0xfc2bf821, (q31_t)0x7ff1271a, (q31_t)0xfc25b05c, (q31_t)0x7ff0f688, (q31_t)0xfc1f6899, - (q31_t)0x7ff0c5a7, (q31_t)0xfc1920d8, - (q31_t)0x7ff09478, (q31_t)0xfc12d91a, (q31_t)0x7ff062f9, (q31_t)0xfc0c915e, (q31_t)0x7ff0312c, (q31_t)0xfc0649a5, - (q31_t)0x7fefff0f, (q31_t)0xfc0001ee, - (q31_t)0x7fefcca4, (q31_t)0xfbf9ba39, (q31_t)0x7fef99ea, (q31_t)0xfbf37287, (q31_t)0x7fef66e1, (q31_t)0xfbed2ad8, - (q31_t)0x7fef3388, (q31_t)0xfbe6e32b, - (q31_t)0x7feeffe1, (q31_t)0xfbe09b80, (q31_t)0x7feecbec, (q31_t)0xfbda53d8, (q31_t)0x7fee97a7, (q31_t)0xfbd40c33, - (q31_t)0x7fee6313, (q31_t)0xfbcdc490, - (q31_t)0x7fee2e30, (q31_t)0xfbc77cf0, (q31_t)0x7fedf8ff, (q31_t)0xfbc13552, (q31_t)0x7fedc37e, (q31_t)0xfbbaedb7, - (q31_t)0x7fed8daf, (q31_t)0xfbb4a61f, - (q31_t)0x7fed5791, (q31_t)0xfbae5e89, (q31_t)0x7fed2123, (q31_t)0xfba816f6, (q31_t)0x7fecea67, (q31_t)0xfba1cf66, - (q31_t)0x7fecb35c, (q31_t)0xfb9b87d8, - (q31_t)0x7fec7c02, (q31_t)0xfb95404d, (q31_t)0x7fec4459, (q31_t)0xfb8ef8c5, (q31_t)0x7fec0c62, (q31_t)0xfb88b13f, - (q31_t)0x7febd41b, (q31_t)0xfb8269bd, - (q31_t)0x7feb9b85, (q31_t)0xfb7c223d, (q31_t)0x7feb62a1, (q31_t)0xfb75dac0, (q31_t)0x7feb296d, (q31_t)0xfb6f9345, - (q31_t)0x7feaefeb, (q31_t)0xfb694bce, - (q31_t)0x7feab61a, (q31_t)0xfb630459, (q31_t)0x7fea7bfa, (q31_t)0xfb5cbce7, (q31_t)0x7fea418b, (q31_t)0xfb567578, - (q31_t)0x7fea06cd, (q31_t)0xfb502e0c, - (q31_t)0x7fe9cbc0, (q31_t)0xfb49e6a3, (q31_t)0x7fe99064, (q31_t)0xfb439f3c, (q31_t)0x7fe954ba, (q31_t)0xfb3d57d9, - (q31_t)0x7fe918c0, (q31_t)0xfb371078, - (q31_t)0x7fe8dc78, (q31_t)0xfb30c91b, (q31_t)0x7fe89fe0, (q31_t)0xfb2a81c0, (q31_t)0x7fe862fa, (q31_t)0xfb243a69, - (q31_t)0x7fe825c5, (q31_t)0xfb1df314, - (q31_t)0x7fe7e841, (q31_t)0xfb17abc2, (q31_t)0x7fe7aa6e, (q31_t)0xfb116474, (q31_t)0x7fe76c4c, (q31_t)0xfb0b1d28, - (q31_t)0x7fe72ddb, (q31_t)0xfb04d5e0, - (q31_t)0x7fe6ef1c, (q31_t)0xfafe8e9b, (q31_t)0x7fe6b00d, (q31_t)0xfaf84758, (q31_t)0x7fe670b0, (q31_t)0xfaf20019, - (q31_t)0x7fe63103, (q31_t)0xfaebb8dd, - (q31_t)0x7fe5f108, (q31_t)0xfae571a4, (q31_t)0x7fe5b0be, (q31_t)0xfadf2a6e, (q31_t)0x7fe57025, (q31_t)0xfad8e33c, - (q31_t)0x7fe52f3d, (q31_t)0xfad29c0c, - (q31_t)0x7fe4ee06, (q31_t)0xfacc54e0, (q31_t)0x7fe4ac81, (q31_t)0xfac60db7, (q31_t)0x7fe46aac, (q31_t)0xfabfc691, - (q31_t)0x7fe42889, (q31_t)0xfab97f6e, - (q31_t)0x7fe3e616, (q31_t)0xfab3384f, (q31_t)0x7fe3a355, (q31_t)0xfaacf133, (q31_t)0x7fe36045, (q31_t)0xfaa6aa1a, - (q31_t)0x7fe31ce6, (q31_t)0xfaa06305, - (q31_t)0x7fe2d938, (q31_t)0xfa9a1bf3, (q31_t)0x7fe2953b, (q31_t)0xfa93d4e4, (q31_t)0x7fe250ef, (q31_t)0xfa8d8dd8, - (q31_t)0x7fe20c55, (q31_t)0xfa8746d0, - (q31_t)0x7fe1c76b, (q31_t)0xfa80ffcb, (q31_t)0x7fe18233, (q31_t)0xfa7ab8ca, (q31_t)0x7fe13cac, (q31_t)0xfa7471cc, - (q31_t)0x7fe0f6d6, (q31_t)0xfa6e2ad1, - (q31_t)0x7fe0b0b1, (q31_t)0xfa67e3da, (q31_t)0x7fe06a3d, (q31_t)0xfa619ce7, (q31_t)0x7fe0237a, (q31_t)0xfa5b55f7, - (q31_t)0x7fdfdc69, (q31_t)0xfa550f0a, - (q31_t)0x7fdf9508, (q31_t)0xfa4ec821, (q31_t)0x7fdf4d59, (q31_t)0xfa48813b, (q31_t)0x7fdf055a, (q31_t)0xfa423a59, - (q31_t)0x7fdebd0d, (q31_t)0xfa3bf37a, - (q31_t)0x7fde7471, (q31_t)0xfa35ac9f, (q31_t)0x7fde2b86, (q31_t)0xfa2f65c8, (q31_t)0x7fdde24d, (q31_t)0xfa291ef4, - (q31_t)0x7fdd98c4, (q31_t)0xfa22d823, - (q31_t)0x7fdd4eec, (q31_t)0xfa1c9157, (q31_t)0x7fdd04c6, (q31_t)0xfa164a8e, (q31_t)0x7fdcba51, (q31_t)0xfa1003c8, - (q31_t)0x7fdc6f8d, (q31_t)0xfa09bd06, - (q31_t)0x7fdc247a, (q31_t)0xfa037648, (q31_t)0x7fdbd918, (q31_t)0xf9fd2f8e, (q31_t)0x7fdb8d67, (q31_t)0xf9f6e8d7, - (q31_t)0x7fdb4167, (q31_t)0xf9f0a224, - (q31_t)0x7fdaf519, (q31_t)0xf9ea5b75, (q31_t)0x7fdaa87c, (q31_t)0xf9e414ca, (q31_t)0x7fda5b8f, (q31_t)0xf9ddce22, - (q31_t)0x7fda0e54, (q31_t)0xf9d7877e, - (q31_t)0x7fd9c0ca, (q31_t)0xf9d140de, (q31_t)0x7fd972f2, (q31_t)0xf9cafa42, (q31_t)0x7fd924ca, (q31_t)0xf9c4b3a9, - (q31_t)0x7fd8d653, (q31_t)0xf9be6d15, - (q31_t)0x7fd8878e, (q31_t)0xf9b82684, (q31_t)0x7fd8387a, (q31_t)0xf9b1dff7, (q31_t)0x7fd7e917, (q31_t)0xf9ab996e, - (q31_t)0x7fd79965, (q31_t)0xf9a552e9, - (q31_t)0x7fd74964, (q31_t)0xf99f0c68, (q31_t)0x7fd6f914, (q31_t)0xf998c5ea, (q31_t)0x7fd6a875, (q31_t)0xf9927f71, - (q31_t)0x7fd65788, (q31_t)0xf98c38fc, - (q31_t)0x7fd6064c, (q31_t)0xf985f28a, (q31_t)0x7fd5b4c1, (q31_t)0xf97fac1d, (q31_t)0x7fd562e7, (q31_t)0xf97965b4, - (q31_t)0x7fd510be, (q31_t)0xf9731f4e, - (q31_t)0x7fd4be46, (q31_t)0xf96cd8ed, (q31_t)0x7fd46b80, (q31_t)0xf9669290, (q31_t)0x7fd4186a, (q31_t)0xf9604c37, - (q31_t)0x7fd3c506, (q31_t)0xf95a05e2, - (q31_t)0x7fd37153, (q31_t)0xf953bf91, (q31_t)0x7fd31d51, (q31_t)0xf94d7944, (q31_t)0x7fd2c900, (q31_t)0xf94732fb, - (q31_t)0x7fd27460, (q31_t)0xf940ecb7, - (q31_t)0x7fd21f72, (q31_t)0xf93aa676, (q31_t)0x7fd1ca35, (q31_t)0xf934603a, (q31_t)0x7fd174a8, (q31_t)0xf92e1a02, - (q31_t)0x7fd11ecd, (q31_t)0xf927d3ce, - (q31_t)0x7fd0c8a3, (q31_t)0xf9218d9e, (q31_t)0x7fd0722b, (q31_t)0xf91b4773, (q31_t)0x7fd01b63, (q31_t)0xf915014c, - (q31_t)0x7fcfc44d, (q31_t)0xf90ebb29, - (q31_t)0x7fcf6ce8, (q31_t)0xf908750a, (q31_t)0x7fcf1533, (q31_t)0xf9022ef0, (q31_t)0x7fcebd31, (q31_t)0xf8fbe8da, - (q31_t)0x7fce64df, (q31_t)0xf8f5a2c9, - (q31_t)0x7fce0c3e, (q31_t)0xf8ef5cbb, (q31_t)0x7fcdb34f, (q31_t)0xf8e916b2, (q31_t)0x7fcd5a11, (q31_t)0xf8e2d0ae, - (q31_t)0x7fcd0083, (q31_t)0xf8dc8aae, - (q31_t)0x7fcca6a7, (q31_t)0xf8d644b2, (q31_t)0x7fcc4c7d, (q31_t)0xf8cffebb, (q31_t)0x7fcbf203, (q31_t)0xf8c9b8c8, - (q31_t)0x7fcb973b, (q31_t)0xf8c372d9, - (q31_t)0x7fcb3c23, (q31_t)0xf8bd2cef, (q31_t)0x7fcae0bd, (q31_t)0xf8b6e70a, (q31_t)0x7fca8508, (q31_t)0xf8b0a129, - (q31_t)0x7fca2905, (q31_t)0xf8aa5b4c, - (q31_t)0x7fc9ccb2, (q31_t)0xf8a41574, (q31_t)0x7fc97011, (q31_t)0xf89dcfa1, (q31_t)0x7fc91320, (q31_t)0xf89789d2, - (q31_t)0x7fc8b5e1, (q31_t)0xf8914407, - (q31_t)0x7fc85854, (q31_t)0xf88afe42, (q31_t)0x7fc7fa77, (q31_t)0xf884b880, (q31_t)0x7fc79c4b, (q31_t)0xf87e72c4, - (q31_t)0x7fc73dd1, (q31_t)0xf8782d0c, - (q31_t)0x7fc6df08, (q31_t)0xf871e759, (q31_t)0x7fc67ff0, (q31_t)0xf86ba1aa, (q31_t)0x7fc62089, (q31_t)0xf8655c00, - (q31_t)0x7fc5c0d3, (q31_t)0xf85f165b, - (q31_t)0x7fc560cf, (q31_t)0xf858d0bb, (q31_t)0x7fc5007c, (q31_t)0xf8528b1f, (q31_t)0x7fc49fda, (q31_t)0xf84c4588, - (q31_t)0x7fc43ee9, (q31_t)0xf845fff5, - (q31_t)0x7fc3dda9, (q31_t)0xf83fba68, (q31_t)0x7fc37c1b, (q31_t)0xf83974df, (q31_t)0x7fc31a3d, (q31_t)0xf8332f5b, - (q31_t)0x7fc2b811, (q31_t)0xf82ce9dc, - (q31_t)0x7fc25596, (q31_t)0xf826a462, (q31_t)0x7fc1f2cc, (q31_t)0xf8205eec, (q31_t)0x7fc18fb4, (q31_t)0xf81a197b, - (q31_t)0x7fc12c4d, (q31_t)0xf813d410, - (q31_t)0x7fc0c896, (q31_t)0xf80d8ea9, (q31_t)0x7fc06491, (q31_t)0xf8074947, (q31_t)0x7fc0003e, (q31_t)0xf80103ea, - (q31_t)0x7fbf9b9b, (q31_t)0xf7fabe92, - (q31_t)0x7fbf36aa, (q31_t)0xf7f4793e, (q31_t)0x7fbed16a, (q31_t)0xf7ee33f0, (q31_t)0x7fbe6bdb, (q31_t)0xf7e7eea7, - (q31_t)0x7fbe05fd, (q31_t)0xf7e1a963, - (q31_t)0x7fbd9fd0, (q31_t)0xf7db6423, (q31_t)0x7fbd3955, (q31_t)0xf7d51ee9, (q31_t)0x7fbcd28b, (q31_t)0xf7ced9b4, - (q31_t)0x7fbc6b72, (q31_t)0xf7c89484, - (q31_t)0x7fbc040a, (q31_t)0xf7c24f59, (q31_t)0x7fbb9c53, (q31_t)0xf7bc0a33, (q31_t)0x7fbb344e, (q31_t)0xf7b5c512, - (q31_t)0x7fbacbfa, (q31_t)0xf7af7ff6, - (q31_t)0x7fba6357, (q31_t)0xf7a93ae0, (q31_t)0x7fb9fa65, (q31_t)0xf7a2f5ce, (q31_t)0x7fb99125, (q31_t)0xf79cb0c2, - (q31_t)0x7fb92796, (q31_t)0xf7966bbb, - (q31_t)0x7fb8bdb8, (q31_t)0xf79026b9, (q31_t)0x7fb8538b, (q31_t)0xf789e1bc, (q31_t)0x7fb7e90f, (q31_t)0xf7839cc4, - (q31_t)0x7fb77e45, (q31_t)0xf77d57d2, - (q31_t)0x7fb7132b, (q31_t)0xf77712e5, (q31_t)0x7fb6a7c3, (q31_t)0xf770cdfd, (q31_t)0x7fb63c0d, (q31_t)0xf76a891b, - (q31_t)0x7fb5d007, (q31_t)0xf764443d, - (q31_t)0x7fb563b3, (q31_t)0xf75dff66, (q31_t)0x7fb4f710, (q31_t)0xf757ba93, (q31_t)0x7fb48a1e, (q31_t)0xf75175c6, - (q31_t)0x7fb41cdd, (q31_t)0xf74b30fe, - (q31_t)0x7fb3af4e, (q31_t)0xf744ec3b, (q31_t)0x7fb34170, (q31_t)0xf73ea77e, (q31_t)0x7fb2d343, (q31_t)0xf73862c6, - (q31_t)0x7fb264c7, (q31_t)0xf7321e14, - (q31_t)0x7fb1f5fc, (q31_t)0xf72bd967, (q31_t)0x7fb186e3, (q31_t)0xf72594c0, (q31_t)0x7fb1177b, (q31_t)0xf71f501e, - (q31_t)0x7fb0a7c4, (q31_t)0xf7190b81, - (q31_t)0x7fb037bf, (q31_t)0xf712c6ea, (q31_t)0x7fafc76a, (q31_t)0xf70c8259, (q31_t)0x7faf56c7, (q31_t)0xf7063dcd, - (q31_t)0x7faee5d5, (q31_t)0xf6fff946, - (q31_t)0x7fae7495, (q31_t)0xf6f9b4c6, (q31_t)0x7fae0305, (q31_t)0xf6f3704a, (q31_t)0x7fad9127, (q31_t)0xf6ed2bd4, - (q31_t)0x7fad1efa, (q31_t)0xf6e6e764, - (q31_t)0x7facac7f, (q31_t)0xf6e0a2fa, (q31_t)0x7fac39b4, (q31_t)0xf6da5e95, (q31_t)0x7fabc69b, (q31_t)0xf6d41a36, - (q31_t)0x7fab5333, (q31_t)0xf6cdd5dc, - (q31_t)0x7faadf7c, (q31_t)0xf6c79188, (q31_t)0x7faa6b77, (q31_t)0xf6c14d3a, (q31_t)0x7fa9f723, (q31_t)0xf6bb08f1, - (q31_t)0x7fa98280, (q31_t)0xf6b4c4ae, - (q31_t)0x7fa90d8e, (q31_t)0xf6ae8071, (q31_t)0x7fa8984e, (q31_t)0xf6a83c3a, (q31_t)0x7fa822bf, (q31_t)0xf6a1f808, - (q31_t)0x7fa7ace1, (q31_t)0xf69bb3dd, - (q31_t)0x7fa736b4, (q31_t)0xf6956fb7, (q31_t)0x7fa6c039, (q31_t)0xf68f2b96, (q31_t)0x7fa6496e, (q31_t)0xf688e77c, - (q31_t)0x7fa5d256, (q31_t)0xf682a367, - (q31_t)0x7fa55aee, (q31_t)0xf67c5f59, (q31_t)0x7fa4e338, (q31_t)0xf6761b50, (q31_t)0x7fa46b32, (q31_t)0xf66fd74d, - (q31_t)0x7fa3f2df, (q31_t)0xf6699350, - (q31_t)0x7fa37a3c, (q31_t)0xf6634f59, (q31_t)0x7fa3014b, (q31_t)0xf65d0b68, (q31_t)0x7fa2880b, (q31_t)0xf656c77c, - (q31_t)0x7fa20e7c, (q31_t)0xf6508397, - (q31_t)0x7fa1949e, (q31_t)0xf64a3fb8, (q31_t)0x7fa11a72, (q31_t)0xf643fbdf, (q31_t)0x7fa09ff7, (q31_t)0xf63db80b, - (q31_t)0x7fa0252e, (q31_t)0xf637743e, - (q31_t)0x7f9faa15, (q31_t)0xf6313077, (q31_t)0x7f9f2eae, (q31_t)0xf62aecb5, (q31_t)0x7f9eb2f8, (q31_t)0xf624a8fa, - (q31_t)0x7f9e36f4, (q31_t)0xf61e6545, - (q31_t)0x7f9dbaa0, (q31_t)0xf6182196, (q31_t)0x7f9d3dfe, (q31_t)0xf611dded, (q31_t)0x7f9cc10d, (q31_t)0xf60b9a4b, - (q31_t)0x7f9c43ce, (q31_t)0xf60556ae, - (q31_t)0x7f9bc640, (q31_t)0xf5ff1318, (q31_t)0x7f9b4863, (q31_t)0xf5f8cf87, (q31_t)0x7f9aca37, (q31_t)0xf5f28bfd, - (q31_t)0x7f9a4bbd, (q31_t)0xf5ec4879, - (q31_t)0x7f99ccf4, (q31_t)0xf5e604fc, (q31_t)0x7f994ddc, (q31_t)0xf5dfc184, (q31_t)0x7f98ce76, (q31_t)0xf5d97e13, - (q31_t)0x7f984ec1, (q31_t)0xf5d33aa8, - (q31_t)0x7f97cebd, (q31_t)0xf5ccf743, (q31_t)0x7f974e6a, (q31_t)0xf5c6b3e5, (q31_t)0x7f96cdc9, (q31_t)0xf5c0708d, - (q31_t)0x7f964cd9, (q31_t)0xf5ba2d3b, - (q31_t)0x7f95cb9a, (q31_t)0xf5b3e9f0, (q31_t)0x7f954a0d, (q31_t)0xf5ada6ab, (q31_t)0x7f94c831, (q31_t)0xf5a7636c, - (q31_t)0x7f944606, (q31_t)0xf5a12034, - (q31_t)0x7f93c38c, (q31_t)0xf59add02, (q31_t)0x7f9340c4, (q31_t)0xf59499d6, (q31_t)0x7f92bdad, (q31_t)0xf58e56b1, - (q31_t)0x7f923a48, (q31_t)0xf5881393, - (q31_t)0x7f91b694, (q31_t)0xf581d07b, (q31_t)0x7f913291, (q31_t)0xf57b8d69, (q31_t)0x7f90ae3f, (q31_t)0xf5754a5e, - (q31_t)0x7f90299f, (q31_t)0xf56f0759, - (q31_t)0x7f8fa4b0, (q31_t)0xf568c45b, (q31_t)0x7f8f1f72, (q31_t)0xf5628163, (q31_t)0x7f8e99e6, (q31_t)0xf55c3e72, - (q31_t)0x7f8e140a, (q31_t)0xf555fb88, - (q31_t)0x7f8d8de1, (q31_t)0xf54fb8a4, (q31_t)0x7f8d0768, (q31_t)0xf54975c6, (q31_t)0x7f8c80a1, (q31_t)0xf54332ef, - (q31_t)0x7f8bf98b, (q31_t)0xf53cf01f, - (q31_t)0x7f8b7227, (q31_t)0xf536ad56, (q31_t)0x7f8aea74, (q31_t)0xf5306a93, (q31_t)0x7f8a6272, (q31_t)0xf52a27d7, - (q31_t)0x7f89da21, (q31_t)0xf523e521, - (q31_t)0x7f895182, (q31_t)0xf51da273, (q31_t)0x7f88c894, (q31_t)0xf5175fca, (q31_t)0x7f883f58, (q31_t)0xf5111d29, - (q31_t)0x7f87b5cd, (q31_t)0xf50ada8f, - (q31_t)0x7f872bf3, (q31_t)0xf50497fb, (q31_t)0x7f86a1ca, (q31_t)0xf4fe556e, (q31_t)0x7f861753, (q31_t)0xf4f812e7, - (q31_t)0x7f858c8d, (q31_t)0xf4f1d068, - (q31_t)0x7f850179, (q31_t)0xf4eb8def, (q31_t)0x7f847616, (q31_t)0xf4e54b7d, (q31_t)0x7f83ea64, (q31_t)0xf4df0912, - (q31_t)0x7f835e64, (q31_t)0xf4d8c6ae, - (q31_t)0x7f82d214, (q31_t)0xf4d28451, (q31_t)0x7f824577, (q31_t)0xf4cc41fb, (q31_t)0x7f81b88a, (q31_t)0xf4c5ffab, - (q31_t)0x7f812b4f, (q31_t)0xf4bfbd63, - (q31_t)0x7f809dc5, (q31_t)0xf4b97b21, (q31_t)0x7f800fed, (q31_t)0xf4b338e7, (q31_t)0x7f7f81c6, (q31_t)0xf4acf6b3, - (q31_t)0x7f7ef350, (q31_t)0xf4a6b486, - (q31_t)0x7f7e648c, (q31_t)0xf4a07261, (q31_t)0x7f7dd579, (q31_t)0xf49a3042, (q31_t)0x7f7d4617, (q31_t)0xf493ee2b, - (q31_t)0x7f7cb667, (q31_t)0xf48dac1a, - (q31_t)0x7f7c2668, (q31_t)0xf4876a10, (q31_t)0x7f7b961b, (q31_t)0xf481280e, (q31_t)0x7f7b057e, (q31_t)0xf47ae613, - (q31_t)0x7f7a7494, (q31_t)0xf474a41f, - (q31_t)0x7f79e35a, (q31_t)0xf46e6231, (q31_t)0x7f7951d2, (q31_t)0xf468204b, (q31_t)0x7f78bffb, (q31_t)0xf461de6d, - (q31_t)0x7f782dd6, (q31_t)0xf45b9c95, - (q31_t)0x7f779b62, (q31_t)0xf4555ac5, (q31_t)0x7f77089f, (q31_t)0xf44f18fb, (q31_t)0x7f76758e, (q31_t)0xf448d739, - (q31_t)0x7f75e22e, (q31_t)0xf442957e, - (q31_t)0x7f754e80, (q31_t)0xf43c53cb, (q31_t)0x7f74ba83, (q31_t)0xf436121e, (q31_t)0x7f742637, (q31_t)0xf42fd079, - (q31_t)0x7f73919d, (q31_t)0xf4298edc, - (q31_t)0x7f72fcb4, (q31_t)0xf4234d45, (q31_t)0x7f72677c, (q31_t)0xf41d0bb6, (q31_t)0x7f71d1f6, (q31_t)0xf416ca2e, - (q31_t)0x7f713c21, (q31_t)0xf41088ae, - (q31_t)0x7f70a5fe, (q31_t)0xf40a4735, (q31_t)0x7f700f8c, (q31_t)0xf40405c3, (q31_t)0x7f6f78cb, (q31_t)0xf3fdc459, - (q31_t)0x7f6ee1bc, (q31_t)0xf3f782f6, - (q31_t)0x7f6e4a5e, (q31_t)0xf3f1419a, (q31_t)0x7f6db2b1, (q31_t)0xf3eb0046, (q31_t)0x7f6d1ab6, (q31_t)0xf3e4bef9, - (q31_t)0x7f6c826d, (q31_t)0xf3de7db4, - (q31_t)0x7f6be9d4, (q31_t)0xf3d83c77, (q31_t)0x7f6b50ed, (q31_t)0xf3d1fb40, (q31_t)0x7f6ab7b8, (q31_t)0xf3cbba12, - (q31_t)0x7f6a1e34, (q31_t)0xf3c578eb, - (q31_t)0x7f698461, (q31_t)0xf3bf37cb, (q31_t)0x7f68ea40, (q31_t)0xf3b8f6b3, (q31_t)0x7f684fd0, (q31_t)0xf3b2b5a3, - (q31_t)0x7f67b512, (q31_t)0xf3ac749a, - (q31_t)0x7f671a05, (q31_t)0xf3a63398, (q31_t)0x7f667ea9, (q31_t)0xf39ff29f, (q31_t)0x7f65e2ff, (q31_t)0xf399b1ad, - (q31_t)0x7f654706, (q31_t)0xf39370c2, - (q31_t)0x7f64aabf, (q31_t)0xf38d2fe0, (q31_t)0x7f640e29, (q31_t)0xf386ef05, (q31_t)0x7f637144, (q31_t)0xf380ae31, - (q31_t)0x7f62d411, (q31_t)0xf37a6d66, - (q31_t)0x7f62368f, (q31_t)0xf3742ca2, (q31_t)0x7f6198bf, (q31_t)0xf36debe6, (q31_t)0x7f60faa0, (q31_t)0xf367ab31, - (q31_t)0x7f605c33, (q31_t)0xf3616a85, - (q31_t)0x7f5fbd77, (q31_t)0xf35b29e0, (q31_t)0x7f5f1e6c, (q31_t)0xf354e943, (q31_t)0x7f5e7f13, (q31_t)0xf34ea8ae, - (q31_t)0x7f5ddf6b, (q31_t)0xf3486820, - (q31_t)0x7f5d3f75, (q31_t)0xf342279b, (q31_t)0x7f5c9f30, (q31_t)0xf33be71d, (q31_t)0x7f5bfe9d, (q31_t)0xf335a6a7, - (q31_t)0x7f5b5dbb, (q31_t)0xf32f6639, - (q31_t)0x7f5abc8a, (q31_t)0xf32925d3, (q31_t)0x7f5a1b0b, (q31_t)0xf322e575, (q31_t)0x7f59793e, (q31_t)0xf31ca51f, - (q31_t)0x7f58d721, (q31_t)0xf31664d1, - (q31_t)0x7f5834b7, (q31_t)0xf310248a, (q31_t)0x7f5791fd, (q31_t)0xf309e44c, (q31_t)0x7f56eef5, (q31_t)0xf303a416, - (q31_t)0x7f564b9f, (q31_t)0xf2fd63e8, - (q31_t)0x7f55a7fa, (q31_t)0xf2f723c1, (q31_t)0x7f550407, (q31_t)0xf2f0e3a3, (q31_t)0x7f545fc5, (q31_t)0xf2eaa38d, - (q31_t)0x7f53bb34, (q31_t)0xf2e4637f, - (q31_t)0x7f531655, (q31_t)0xf2de2379, (q31_t)0x7f527127, (q31_t)0xf2d7e37b, (q31_t)0x7f51cbab, (q31_t)0xf2d1a385, - (q31_t)0x7f5125e0, (q31_t)0xf2cb6398, - (q31_t)0x7f507fc7, (q31_t)0xf2c523b2, (q31_t)0x7f4fd95f, (q31_t)0xf2bee3d5, (q31_t)0x7f4f32a9, (q31_t)0xf2b8a400, - (q31_t)0x7f4e8ba4, (q31_t)0xf2b26433, - (q31_t)0x7f4de451, (q31_t)0xf2ac246e, (q31_t)0x7f4d3caf, (q31_t)0xf2a5e4b1, (q31_t)0x7f4c94be, (q31_t)0xf29fa4fd, - (q31_t)0x7f4bec7f, (q31_t)0xf2996551, - (q31_t)0x7f4b43f2, (q31_t)0xf29325ad, (q31_t)0x7f4a9b16, (q31_t)0xf28ce612, (q31_t)0x7f49f1eb, (q31_t)0xf286a67e, - (q31_t)0x7f494872, (q31_t)0xf28066f4, - (q31_t)0x7f489eaa, (q31_t)0xf27a2771, (q31_t)0x7f47f494, (q31_t)0xf273e7f7, (q31_t)0x7f474a30, (q31_t)0xf26da885, - (q31_t)0x7f469f7d, (q31_t)0xf267691b, - (q31_t)0x7f45f47b, (q31_t)0xf26129ba, (q31_t)0x7f45492b, (q31_t)0xf25aea61, (q31_t)0x7f449d8c, (q31_t)0xf254ab11, - (q31_t)0x7f43f19f, (q31_t)0xf24e6bc9, - (q31_t)0x7f434563, (q31_t)0xf2482c8a, (q31_t)0x7f4298d9, (q31_t)0xf241ed53, (q31_t)0x7f41ec01, (q31_t)0xf23bae24, - (q31_t)0x7f413ed9, (q31_t)0xf2356efe, - (q31_t)0x7f409164, (q31_t)0xf22f2fe1, (q31_t)0x7f3fe3a0, (q31_t)0xf228f0cc, (q31_t)0x7f3f358d, (q31_t)0xf222b1c0, - (q31_t)0x7f3e872c, (q31_t)0xf21c72bc, - (q31_t)0x7f3dd87c, (q31_t)0xf21633c0, (q31_t)0x7f3d297e, (q31_t)0xf20ff4ce, (q31_t)0x7f3c7a31, (q31_t)0xf209b5e4, - (q31_t)0x7f3bca96, (q31_t)0xf2037702, - (q31_t)0x7f3b1aad, (q31_t)0xf1fd3829, (q31_t)0x7f3a6a75, (q31_t)0xf1f6f959, (q31_t)0x7f39b9ee, (q31_t)0xf1f0ba91, - (q31_t)0x7f390919, (q31_t)0xf1ea7bd2, - (q31_t)0x7f3857f6, (q31_t)0xf1e43d1c, (q31_t)0x7f37a684, (q31_t)0xf1ddfe6f, (q31_t)0x7f36f4c3, (q31_t)0xf1d7bfca, - (q31_t)0x7f3642b4, (q31_t)0xf1d1812e, - (q31_t)0x7f359057, (q31_t)0xf1cb429a, (q31_t)0x7f34ddab, (q31_t)0xf1c50410, (q31_t)0x7f342ab1, (q31_t)0xf1bec58e, - (q31_t)0x7f337768, (q31_t)0xf1b88715, - (q31_t)0x7f32c3d1, (q31_t)0xf1b248a5, (q31_t)0x7f320feb, (q31_t)0xf1ac0a3e, (q31_t)0x7f315bb7, (q31_t)0xf1a5cbdf, - (q31_t)0x7f30a734, (q31_t)0xf19f8d89, - (q31_t)0x7f2ff263, (q31_t)0xf1994f3d, (q31_t)0x7f2f3d44, (q31_t)0xf19310f9, (q31_t)0x7f2e87d6, (q31_t)0xf18cd2be, - (q31_t)0x7f2dd219, (q31_t)0xf186948c, - (q31_t)0x7f2d1c0e, (q31_t)0xf1805662, (q31_t)0x7f2c65b5, (q31_t)0xf17a1842, (q31_t)0x7f2baf0d, (q31_t)0xf173da2b, - (q31_t)0x7f2af817, (q31_t)0xf16d9c1d, - (q31_t)0x7f2a40d2, (q31_t)0xf1675e17, (q31_t)0x7f29893f, (q31_t)0xf161201b, (q31_t)0x7f28d15d, (q31_t)0xf15ae228, - (q31_t)0x7f28192d, (q31_t)0xf154a43d, - (q31_t)0x7f2760af, (q31_t)0xf14e665c, (q31_t)0x7f26a7e2, (q31_t)0xf1482884, (q31_t)0x7f25eec7, (q31_t)0xf141eab5, - (q31_t)0x7f25355d, (q31_t)0xf13bacef, - (q31_t)0x7f247ba5, (q31_t)0xf1356f32, (q31_t)0x7f23c19e, (q31_t)0xf12f317e, (q31_t)0x7f230749, (q31_t)0xf128f3d4, - (q31_t)0x7f224ca6, (q31_t)0xf122b632, - (q31_t)0x7f2191b4, (q31_t)0xf11c789a, (q31_t)0x7f20d674, (q31_t)0xf1163b0b, (q31_t)0x7f201ae5, (q31_t)0xf10ffd85, - (q31_t)0x7f1f5f08, (q31_t)0xf109c009, - (q31_t)0x7f1ea2dc, (q31_t)0xf1038295, (q31_t)0x7f1de662, (q31_t)0xf0fd452b, (q31_t)0x7f1d299a, (q31_t)0xf0f707ca, - (q31_t)0x7f1c6c83, (q31_t)0xf0f0ca72, - (q31_t)0x7f1baf1e, (q31_t)0xf0ea8d24, (q31_t)0x7f1af16a, (q31_t)0xf0e44fdf, (q31_t)0x7f1a3368, (q31_t)0xf0de12a3, - (q31_t)0x7f197518, (q31_t)0xf0d7d571, - (q31_t)0x7f18b679, (q31_t)0xf0d19848, (q31_t)0x7f17f78c, (q31_t)0xf0cb5b28, (q31_t)0x7f173850, (q31_t)0xf0c51e12, - (q31_t)0x7f1678c6, (q31_t)0xf0bee105, - (q31_t)0x7f15b8ee, (q31_t)0xf0b8a401, (q31_t)0x7f14f8c7, (q31_t)0xf0b26707, (q31_t)0x7f143852, (q31_t)0xf0ac2a16, - (q31_t)0x7f13778e, (q31_t)0xf0a5ed2f, - (q31_t)0x7f12b67c, (q31_t)0xf09fb051, (q31_t)0x7f11f51c, (q31_t)0xf099737d, (q31_t)0x7f11336d, (q31_t)0xf09336b2, - (q31_t)0x7f107170, (q31_t)0xf08cf9f1, - (q31_t)0x7f0faf25, (q31_t)0xf086bd39, (q31_t)0x7f0eec8b, (q31_t)0xf080808b, (q31_t)0x7f0e29a3, (q31_t)0xf07a43e7, - (q31_t)0x7f0d666c, (q31_t)0xf074074c, - (q31_t)0x7f0ca2e7, (q31_t)0xf06dcaba, (q31_t)0x7f0bdf14, (q31_t)0xf0678e32, (q31_t)0x7f0b1af2, (q31_t)0xf06151b4, - (q31_t)0x7f0a5682, (q31_t)0xf05b1540, - (q31_t)0x7f0991c4, (q31_t)0xf054d8d5, (q31_t)0x7f08ccb7, (q31_t)0xf04e9c73, (q31_t)0x7f08075c, (q31_t)0xf048601c, - (q31_t)0x7f0741b2, (q31_t)0xf04223ce, - (q31_t)0x7f067bba, (q31_t)0xf03be78a, (q31_t)0x7f05b574, (q31_t)0xf035ab4f, (q31_t)0x7f04eedf, (q31_t)0xf02f6f1f, - (q31_t)0x7f0427fc, (q31_t)0xf02932f8, - (q31_t)0x7f0360cb, (q31_t)0xf022f6da, (q31_t)0x7f02994b, (q31_t)0xf01cbac7, (q31_t)0x7f01d17d, (q31_t)0xf0167ebd, - (q31_t)0x7f010961, (q31_t)0xf01042be, - (q31_t)0x7f0040f6, (q31_t)0xf00a06c8, (q31_t)0x7eff783d, (q31_t)0xf003cadc, (q31_t)0x7efeaf36, (q31_t)0xeffd8ef9, - (q31_t)0x7efde5e0, (q31_t)0xeff75321, - (q31_t)0x7efd1c3c, (q31_t)0xeff11753, (q31_t)0x7efc524a, (q31_t)0xefeadb8e, (q31_t)0x7efb8809, (q31_t)0xefe49fd3, - (q31_t)0x7efabd7a, (q31_t)0xefde6423, - (q31_t)0x7ef9f29d, (q31_t)0xefd8287c, (q31_t)0x7ef92771, (q31_t)0xefd1ecdf, (q31_t)0x7ef85bf7, (q31_t)0xefcbb14c, - (q31_t)0x7ef7902f, (q31_t)0xefc575c3, - (q31_t)0x7ef6c418, (q31_t)0xefbf3a45, (q31_t)0x7ef5f7b3, (q31_t)0xefb8fed0, (q31_t)0x7ef52b00, (q31_t)0xefb2c365, - (q31_t)0x7ef45dfe, (q31_t)0xefac8804, - (q31_t)0x7ef390ae, (q31_t)0xefa64cae, (q31_t)0x7ef2c310, (q31_t)0xefa01161, (q31_t)0x7ef1f524, (q31_t)0xef99d61f, - (q31_t)0x7ef126e9, (q31_t)0xef939ae6, - (q31_t)0x7ef05860, (q31_t)0xef8d5fb8, (q31_t)0x7eef8988, (q31_t)0xef872494, (q31_t)0x7eeeba62, (q31_t)0xef80e97a, - (q31_t)0x7eedeaee, (q31_t)0xef7aae6b, - (q31_t)0x7eed1b2c, (q31_t)0xef747365, (q31_t)0x7eec4b1b, (q31_t)0xef6e386a, (q31_t)0x7eeb7abc, (q31_t)0xef67fd79, - (q31_t)0x7eeaaa0f, (q31_t)0xef61c292, - (q31_t)0x7ee9d914, (q31_t)0xef5b87b5, (q31_t)0x7ee907ca, (q31_t)0xef554ce3, (q31_t)0x7ee83632, (q31_t)0xef4f121b, - (q31_t)0x7ee7644c, (q31_t)0xef48d75d, - (q31_t)0x7ee69217, (q31_t)0xef429caa, (q31_t)0x7ee5bf94, (q31_t)0xef3c6201, (q31_t)0x7ee4ecc3, (q31_t)0xef362762, - (q31_t)0x7ee419a3, (q31_t)0xef2feccd, - (q31_t)0x7ee34636, (q31_t)0xef29b243, (q31_t)0x7ee2727a, (q31_t)0xef2377c4, (q31_t)0x7ee19e6f, (q31_t)0xef1d3d4e, - (q31_t)0x7ee0ca17, (q31_t)0xef1702e4, - (q31_t)0x7edff570, (q31_t)0xef10c883, (q31_t)0x7edf207b, (q31_t)0xef0a8e2d, (q31_t)0x7ede4b38, (q31_t)0xef0453e2, - (q31_t)0x7edd75a6, (q31_t)0xeefe19a1, - (q31_t)0x7edc9fc6, (q31_t)0xeef7df6a, (q31_t)0x7edbc998, (q31_t)0xeef1a53e, (q31_t)0x7edaf31c, (q31_t)0xeeeb6b1c, - (q31_t)0x7eda1c51, (q31_t)0xeee53105, - (q31_t)0x7ed94538, (q31_t)0xeedef6f9, (q31_t)0x7ed86dd1, (q31_t)0xeed8bcf7, (q31_t)0x7ed7961c, (q31_t)0xeed28300, - (q31_t)0x7ed6be18, (q31_t)0xeecc4913, - (q31_t)0x7ed5e5c6, (q31_t)0xeec60f31, (q31_t)0x7ed50d26, (q31_t)0xeebfd55a, (q31_t)0x7ed43438, (q31_t)0xeeb99b8d, - (q31_t)0x7ed35afb, (q31_t)0xeeb361cb, - (q31_t)0x7ed28171, (q31_t)0xeead2813, (q31_t)0x7ed1a798, (q31_t)0xeea6ee66, (q31_t)0x7ed0cd70, (q31_t)0xeea0b4c4, - (q31_t)0x7ecff2fb, (q31_t)0xee9a7b2d, - (q31_t)0x7ecf1837, (q31_t)0xee9441a0, (q31_t)0x7ece3d25, (q31_t)0xee8e081e, (q31_t)0x7ecd61c5, (q31_t)0xee87cea7, - (q31_t)0x7ecc8617, (q31_t)0xee81953b, - (q31_t)0x7ecbaa1a, (q31_t)0xee7b5bd9, (q31_t)0x7ecacdd0, (q31_t)0xee752283, (q31_t)0x7ec9f137, (q31_t)0xee6ee937, - (q31_t)0x7ec9144f, (q31_t)0xee68aff6, - (q31_t)0x7ec8371a, (q31_t)0xee6276bf, (q31_t)0x7ec75996, (q31_t)0xee5c3d94, (q31_t)0x7ec67bc5, (q31_t)0xee560473, - (q31_t)0x7ec59da5, (q31_t)0xee4fcb5e, - (q31_t)0x7ec4bf36, (q31_t)0xee499253, (q31_t)0x7ec3e07a, (q31_t)0xee435953, (q31_t)0x7ec3016f, (q31_t)0xee3d205e, - (q31_t)0x7ec22217, (q31_t)0xee36e775, - (q31_t)0x7ec14270, (q31_t)0xee30ae96, (q31_t)0x7ec0627a, (q31_t)0xee2a75c2, (q31_t)0x7ebf8237, (q31_t)0xee243cf9, - (q31_t)0x7ebea1a6, (q31_t)0xee1e043b, - (q31_t)0x7ebdc0c6, (q31_t)0xee17cb88, (q31_t)0x7ebcdf98, (q31_t)0xee1192e0, (q31_t)0x7ebbfe1c, (q31_t)0xee0b5a43, - (q31_t)0x7ebb1c52, (q31_t)0xee0521b2, - (q31_t)0x7eba3a39, (q31_t)0xedfee92b, (q31_t)0x7eb957d2, (q31_t)0xedf8b0b0, (q31_t)0x7eb8751e, (q31_t)0xedf2783f, - (q31_t)0x7eb7921b, (q31_t)0xedec3fda, - (q31_t)0x7eb6aeca, (q31_t)0xede60780, (q31_t)0x7eb5cb2a, (q31_t)0xeddfcf31, (q31_t)0x7eb4e73d, (q31_t)0xedd996ed, - (q31_t)0x7eb40301, (q31_t)0xedd35eb5, - (q31_t)0x7eb31e78, (q31_t)0xedcd2687, (q31_t)0x7eb239a0, (q31_t)0xedc6ee65, (q31_t)0x7eb1547a, (q31_t)0xedc0b64e, - (q31_t)0x7eb06f05, (q31_t)0xedba7e43, - (q31_t)0x7eaf8943, (q31_t)0xedb44642, (q31_t)0x7eaea333, (q31_t)0xedae0e4d, (q31_t)0x7eadbcd4, (q31_t)0xeda7d664, - (q31_t)0x7eacd627, (q31_t)0xeda19e85, - (q31_t)0x7eabef2c, (q31_t)0xed9b66b2, (q31_t)0x7eab07e3, (q31_t)0xed952eea, (q31_t)0x7eaa204c, (q31_t)0xed8ef72e, - (q31_t)0x7ea93867, (q31_t)0xed88bf7d, - (q31_t)0x7ea85033, (q31_t)0xed8287d7, (q31_t)0x7ea767b2, (q31_t)0xed7c503d, (q31_t)0x7ea67ee2, (q31_t)0xed7618ae, - (q31_t)0x7ea595c4, (q31_t)0xed6fe12b, - (q31_t)0x7ea4ac58, (q31_t)0xed69a9b3, (q31_t)0x7ea3c29e, (q31_t)0xed637246, (q31_t)0x7ea2d896, (q31_t)0xed5d3ae5, - (q31_t)0x7ea1ee3f, (q31_t)0xed570390, - (q31_t)0x7ea1039b, (q31_t)0xed50cc46, (q31_t)0x7ea018a8, (q31_t)0xed4a9507, (q31_t)0x7e9f2d68, (q31_t)0xed445dd5, - (q31_t)0x7e9e41d9, (q31_t)0xed3e26ad, - (q31_t)0x7e9d55fc, (q31_t)0xed37ef91, (q31_t)0x7e9c69d1, (q31_t)0xed31b881, (q31_t)0x7e9b7d58, (q31_t)0xed2b817d, - (q31_t)0x7e9a9091, (q31_t)0xed254a84, - (q31_t)0x7e99a37c, (q31_t)0xed1f1396, (q31_t)0x7e98b618, (q31_t)0xed18dcb5, (q31_t)0x7e97c867, (q31_t)0xed12a5df, - (q31_t)0x7e96da67, (q31_t)0xed0c6f14, - (q31_t)0x7e95ec1a, (q31_t)0xed063856, (q31_t)0x7e94fd7e, (q31_t)0xed0001a3, (q31_t)0x7e940e94, (q31_t)0xecf9cafb, - (q31_t)0x7e931f5c, (q31_t)0xecf39460, - (q31_t)0x7e922fd6, (q31_t)0xeced5dd0, (q31_t)0x7e914002, (q31_t)0xece7274c, (q31_t)0x7e904fe0, (q31_t)0xece0f0d4, - (q31_t)0x7e8f5f70, (q31_t)0xecdaba67, - (q31_t)0x7e8e6eb2, (q31_t)0xecd48407, (q31_t)0x7e8d7da6, (q31_t)0xecce4db2, (q31_t)0x7e8c8c4b, (q31_t)0xecc81769, - (q31_t)0x7e8b9aa3, (q31_t)0xecc1e12c, - (q31_t)0x7e8aa8ac, (q31_t)0xecbbaafb, (q31_t)0x7e89b668, (q31_t)0xecb574d5, (q31_t)0x7e88c3d5, (q31_t)0xecaf3ebc, - (q31_t)0x7e87d0f5, (q31_t)0xeca908ae, - (q31_t)0x7e86ddc6, (q31_t)0xeca2d2ad, (q31_t)0x7e85ea49, (q31_t)0xec9c9cb7, (q31_t)0x7e84f67e, (q31_t)0xec9666cd, - (q31_t)0x7e840265, (q31_t)0xec9030f0, - (q31_t)0x7e830dff, (q31_t)0xec89fb1e, (q31_t)0x7e82194a, (q31_t)0xec83c558, (q31_t)0x7e812447, (q31_t)0xec7d8f9e, - (q31_t)0x7e802ef6, (q31_t)0xec7759f1, - (q31_t)0x7e7f3957, (q31_t)0xec71244f, (q31_t)0x7e7e436a, (q31_t)0xec6aeeba, (q31_t)0x7e7d4d2f, (q31_t)0xec64b930, - (q31_t)0x7e7c56a5, (q31_t)0xec5e83b3, - (q31_t)0x7e7b5fce, (q31_t)0xec584e41, (q31_t)0x7e7a68a9, (q31_t)0xec5218dc, (q31_t)0x7e797136, (q31_t)0xec4be383, - (q31_t)0x7e787975, (q31_t)0xec45ae36, - (q31_t)0x7e778166, (q31_t)0xec3f78f6, (q31_t)0x7e768908, (q31_t)0xec3943c1, (q31_t)0x7e75905d, (q31_t)0xec330e99, - (q31_t)0x7e749764, (q31_t)0xec2cd97d, - (q31_t)0x7e739e1d, (q31_t)0xec26a46d, (q31_t)0x7e72a488, (q31_t)0xec206f69, (q31_t)0x7e71aaa4, (q31_t)0xec1a3a72, - (q31_t)0x7e70b073, (q31_t)0xec140587, - (q31_t)0x7e6fb5f4, (q31_t)0xec0dd0a8, (q31_t)0x7e6ebb27, (q31_t)0xec079bd6, (q31_t)0x7e6dc00c, (q31_t)0xec01670f, - (q31_t)0x7e6cc4a2, (q31_t)0xebfb3256, - (q31_t)0x7e6bc8eb, (q31_t)0xebf4fda8, (q31_t)0x7e6acce6, (q31_t)0xebeec907, (q31_t)0x7e69d093, (q31_t)0xebe89472, - (q31_t)0x7e68d3f2, (q31_t)0xebe25fea, - (q31_t)0x7e67d703, (q31_t)0xebdc2b6e, (q31_t)0x7e66d9c6, (q31_t)0xebd5f6fe, (q31_t)0x7e65dc3b, (q31_t)0xebcfc29b, - (q31_t)0x7e64de62, (q31_t)0xebc98e45, - (q31_t)0x7e63e03b, (q31_t)0xebc359fb, (q31_t)0x7e62e1c6, (q31_t)0xebbd25bd, (q31_t)0x7e61e303, (q31_t)0xebb6f18c, - (q31_t)0x7e60e3f2, (q31_t)0xebb0bd67, - (q31_t)0x7e5fe493, (q31_t)0xebaa894f, (q31_t)0x7e5ee4e6, (q31_t)0xeba45543, (q31_t)0x7e5de4ec, (q31_t)0xeb9e2144, - (q31_t)0x7e5ce4a3, (q31_t)0xeb97ed52, - (q31_t)0x7e5be40c, (q31_t)0xeb91b96c, (q31_t)0x7e5ae328, (q31_t)0xeb8b8593, (q31_t)0x7e59e1f5, (q31_t)0xeb8551c6, - (q31_t)0x7e58e075, (q31_t)0xeb7f1e06, - (q31_t)0x7e57dea7, (q31_t)0xeb78ea52, (q31_t)0x7e56dc8a, (q31_t)0xeb72b6ac, (q31_t)0x7e55da20, (q31_t)0xeb6c8312, - (q31_t)0x7e54d768, (q31_t)0xeb664f84, - (q31_t)0x7e53d462, (q31_t)0xeb601c04, (q31_t)0x7e52d10e, (q31_t)0xeb59e890, (q31_t)0x7e51cd6c, (q31_t)0xeb53b529, - (q31_t)0x7e50c97c, (q31_t)0xeb4d81ce, - (q31_t)0x7e4fc53e, (q31_t)0xeb474e81, (q31_t)0x7e4ec0b2, (q31_t)0xeb411b40, (q31_t)0x7e4dbbd9, (q31_t)0xeb3ae80c, - (q31_t)0x7e4cb6b1, (q31_t)0xeb34b4e4, - (q31_t)0x7e4bb13c, (q31_t)0xeb2e81ca, (q31_t)0x7e4aab78, (q31_t)0xeb284ebc, (q31_t)0x7e49a567, (q31_t)0xeb221bbb, - (q31_t)0x7e489f08, (q31_t)0xeb1be8c8, - (q31_t)0x7e47985b, (q31_t)0xeb15b5e1, (q31_t)0x7e469160, (q31_t)0xeb0f8307, (q31_t)0x7e458a17, (q31_t)0xeb095039, - (q31_t)0x7e448281, (q31_t)0xeb031d79, - (q31_t)0x7e437a9c, (q31_t)0xeafceac6, (q31_t)0x7e427269, (q31_t)0xeaf6b81f, (q31_t)0x7e4169e9, (q31_t)0xeaf08586, - (q31_t)0x7e40611b, (q31_t)0xeaea52fa, - (q31_t)0x7e3f57ff, (q31_t)0xeae4207a, (q31_t)0x7e3e4e95, (q31_t)0xeaddee08, (q31_t)0x7e3d44dd, (q31_t)0xead7bba3, - (q31_t)0x7e3c3ad7, (q31_t)0xead1894b, - (q31_t)0x7e3b3083, (q31_t)0xeacb56ff, (q31_t)0x7e3a25e2, (q31_t)0xeac524c1, (q31_t)0x7e391af3, (q31_t)0xeabef290, - (q31_t)0x7e380fb5, (q31_t)0xeab8c06c, - (q31_t)0x7e37042a, (q31_t)0xeab28e56, (q31_t)0x7e35f851, (q31_t)0xeaac5c4c, (q31_t)0x7e34ec2b, (q31_t)0xeaa62a4f, - (q31_t)0x7e33dfb6, (q31_t)0xea9ff860, - (q31_t)0x7e32d2f4, (q31_t)0xea99c67e, (q31_t)0x7e31c5e3, (q31_t)0xea9394a9, (q31_t)0x7e30b885, (q31_t)0xea8d62e1, - (q31_t)0x7e2faad9, (q31_t)0xea873127, - (q31_t)0x7e2e9cdf, (q31_t)0xea80ff7a, (q31_t)0x7e2d8e97, (q31_t)0xea7acdda, (q31_t)0x7e2c8002, (q31_t)0xea749c47, - (q31_t)0x7e2b711f, (q31_t)0xea6e6ac2, - (q31_t)0x7e2a61ed, (q31_t)0xea683949, (q31_t)0x7e29526e, (q31_t)0xea6207df, (q31_t)0x7e2842a2, (q31_t)0xea5bd681, - (q31_t)0x7e273287, (q31_t)0xea55a531, - (q31_t)0x7e26221f, (q31_t)0xea4f73ee, (q31_t)0x7e251168, (q31_t)0xea4942b9, (q31_t)0x7e240064, (q31_t)0xea431191, - (q31_t)0x7e22ef12, (q31_t)0xea3ce077, - (q31_t)0x7e21dd73, (q31_t)0xea36af69, (q31_t)0x7e20cb85, (q31_t)0xea307e6a, (q31_t)0x7e1fb94a, (q31_t)0xea2a4d78, - (q31_t)0x7e1ea6c1, (q31_t)0xea241c93, - (q31_t)0x7e1d93ea, (q31_t)0xea1debbb, (q31_t)0x7e1c80c5, (q31_t)0xea17baf2, (q31_t)0x7e1b6d53, (q31_t)0xea118a35, - (q31_t)0x7e1a5992, (q31_t)0xea0b5987, - (q31_t)0x7e194584, (q31_t)0xea0528e5, (q31_t)0x7e183128, (q31_t)0xe9fef852, (q31_t)0x7e171c7f, (q31_t)0xe9f8c7cc, - (q31_t)0x7e160787, (q31_t)0xe9f29753, - (q31_t)0x7e14f242, (q31_t)0xe9ec66e8, (q31_t)0x7e13dcaf, (q31_t)0xe9e6368b, (q31_t)0x7e12c6ce, (q31_t)0xe9e0063c, - (q31_t)0x7e11b0a0, (q31_t)0xe9d9d5fa, - (q31_t)0x7e109a24, (q31_t)0xe9d3a5c5, (q31_t)0x7e0f835a, (q31_t)0xe9cd759f, (q31_t)0x7e0e6c42, (q31_t)0xe9c74586, - (q31_t)0x7e0d54dc, (q31_t)0xe9c1157a, - (q31_t)0x7e0c3d29, (q31_t)0xe9bae57d, (q31_t)0x7e0b2528, (q31_t)0xe9b4b58d, (q31_t)0x7e0a0cd9, (q31_t)0xe9ae85ab, - (q31_t)0x7e08f43d, (q31_t)0xe9a855d7, - (q31_t)0x7e07db52, (q31_t)0xe9a22610, (q31_t)0x7e06c21a, (q31_t)0xe99bf658, (q31_t)0x7e05a894, (q31_t)0xe995c6ad, - (q31_t)0x7e048ec1, (q31_t)0xe98f9710, - (q31_t)0x7e0374a0, (q31_t)0xe9896781, (q31_t)0x7e025a31, (q31_t)0xe98337ff, (q31_t)0x7e013f74, (q31_t)0xe97d088c, - (q31_t)0x7e00246a, (q31_t)0xe976d926, - (q31_t)0x7dff0911, (q31_t)0xe970a9ce, (q31_t)0x7dfded6c, (q31_t)0xe96a7a85, (q31_t)0x7dfcd178, (q31_t)0xe9644b49, - (q31_t)0x7dfbb537, (q31_t)0xe95e1c1b, - (q31_t)0x7dfa98a8, (q31_t)0xe957ecfb, (q31_t)0x7df97bcb, (q31_t)0xe951bde9, (q31_t)0x7df85ea0, (q31_t)0xe94b8ee5, - (q31_t)0x7df74128, (q31_t)0xe9455fef, - (q31_t)0x7df62362, (q31_t)0xe93f3107, (q31_t)0x7df5054f, (q31_t)0xe939022d, (q31_t)0x7df3e6ee, (q31_t)0xe932d361, - (q31_t)0x7df2c83f, (q31_t)0xe92ca4a4, - (q31_t)0x7df1a942, (q31_t)0xe92675f4, (q31_t)0x7df089f8, (q31_t)0xe9204752, (q31_t)0x7def6a60, (q31_t)0xe91a18bf, - (q31_t)0x7dee4a7a, (q31_t)0xe913ea39, - (q31_t)0x7ded2a47, (q31_t)0xe90dbbc2, (q31_t)0x7dec09c6, (q31_t)0xe9078d59, (q31_t)0x7deae8f7, (q31_t)0xe9015efe, - (q31_t)0x7de9c7da, (q31_t)0xe8fb30b1, - (q31_t)0x7de8a670, (q31_t)0xe8f50273, (q31_t)0x7de784b9, (q31_t)0xe8eed443, (q31_t)0x7de662b3, (q31_t)0xe8e8a621, - (q31_t)0x7de54060, (q31_t)0xe8e2780d, - (q31_t)0x7de41dc0, (q31_t)0xe8dc4a07, (q31_t)0x7de2fad1, (q31_t)0xe8d61c10, (q31_t)0x7de1d795, (q31_t)0xe8cfee27, - (q31_t)0x7de0b40b, (q31_t)0xe8c9c04c, - (q31_t)0x7ddf9034, (q31_t)0xe8c39280, (q31_t)0x7dde6c0f, (q31_t)0xe8bd64c2, (q31_t)0x7ddd479d, (q31_t)0xe8b73712, - (q31_t)0x7ddc22dc, (q31_t)0xe8b10971, - (q31_t)0x7ddafdce, (q31_t)0xe8aadbde, (q31_t)0x7dd9d873, (q31_t)0xe8a4ae59, (q31_t)0x7dd8b2ca, (q31_t)0xe89e80e3, - (q31_t)0x7dd78cd3, (q31_t)0xe898537b, - (q31_t)0x7dd6668f, (q31_t)0xe8922622, (q31_t)0x7dd53ffc, (q31_t)0xe88bf8d7, (q31_t)0x7dd4191d, (q31_t)0xe885cb9a, - (q31_t)0x7dd2f1f0, (q31_t)0xe87f9e6c, - (q31_t)0x7dd1ca75, (q31_t)0xe879714d, (q31_t)0x7dd0a2ac, (q31_t)0xe873443c, (q31_t)0x7dcf7a96, (q31_t)0xe86d173a, - (q31_t)0x7dce5232, (q31_t)0xe866ea46, - (q31_t)0x7dcd2981, (q31_t)0xe860bd61, (q31_t)0x7dcc0082, (q31_t)0xe85a908a, (q31_t)0x7dcad736, (q31_t)0xe85463c2, - (q31_t)0x7dc9ad9c, (q31_t)0xe84e3708, - (q31_t)0x7dc883b4, (q31_t)0xe8480a5d, (q31_t)0x7dc7597f, (q31_t)0xe841ddc1, (q31_t)0x7dc62efc, (q31_t)0xe83bb133, - (q31_t)0x7dc5042b, (q31_t)0xe83584b4, - (q31_t)0x7dc3d90d, (q31_t)0xe82f5844, (q31_t)0x7dc2ada2, (q31_t)0xe8292be3, (q31_t)0x7dc181e8, (q31_t)0xe822ff90, - (q31_t)0x7dc055e2, (q31_t)0xe81cd34b, - (q31_t)0x7dbf298d, (q31_t)0xe816a716, (q31_t)0x7dbdfceb, (q31_t)0xe8107aef, (q31_t)0x7dbccffc, (q31_t)0xe80a4ed7, - (q31_t)0x7dbba2bf, (q31_t)0xe80422ce, - (q31_t)0x7dba7534, (q31_t)0xe7fdf6d4, (q31_t)0x7db9475c, (q31_t)0xe7f7cae8, (q31_t)0x7db81936, (q31_t)0xe7f19f0c, - (q31_t)0x7db6eac3, (q31_t)0xe7eb733e, - (q31_t)0x7db5bc02, (q31_t)0xe7e5477f, (q31_t)0x7db48cf4, (q31_t)0xe7df1bcf, (q31_t)0x7db35d98, (q31_t)0xe7d8f02d, - (q31_t)0x7db22def, (q31_t)0xe7d2c49b, - (q31_t)0x7db0fdf8, (q31_t)0xe7cc9917, (q31_t)0x7dafcdb3, (q31_t)0xe7c66da3, (q31_t)0x7dae9d21, (q31_t)0xe7c0423d, - (q31_t)0x7dad6c42, (q31_t)0xe7ba16e7, - (q31_t)0x7dac3b15, (q31_t)0xe7b3eb9f, (q31_t)0x7dab099a, (q31_t)0xe7adc066, (q31_t)0x7da9d7d2, (q31_t)0xe7a7953d, - (q31_t)0x7da8a5bc, (q31_t)0xe7a16a22, - (q31_t)0x7da77359, (q31_t)0xe79b3f16, (q31_t)0x7da640a9, (q31_t)0xe795141a, (q31_t)0x7da50dab, (q31_t)0xe78ee92c, - (q31_t)0x7da3da5f, (q31_t)0xe788be4e, - (q31_t)0x7da2a6c6, (q31_t)0xe782937e, (q31_t)0x7da172df, (q31_t)0xe77c68be, (q31_t)0x7da03eab, (q31_t)0xe7763e0d, - (q31_t)0x7d9f0a29, (q31_t)0xe770136b, - (q31_t)0x7d9dd55a, (q31_t)0xe769e8d8, (q31_t)0x7d9ca03e, (q31_t)0xe763be55, (q31_t)0x7d9b6ad3, (q31_t)0xe75d93e0, - (q31_t)0x7d9a351c, (q31_t)0xe757697b, - (q31_t)0x7d98ff17, (q31_t)0xe7513f25, (q31_t)0x7d97c8c4, (q31_t)0xe74b14de, (q31_t)0x7d969224, (q31_t)0xe744eaa6, - (q31_t)0x7d955b37, (q31_t)0xe73ec07e, - (q31_t)0x7d9423fc, (q31_t)0xe7389665, (q31_t)0x7d92ec73, (q31_t)0xe7326c5b, (q31_t)0x7d91b49e, (q31_t)0xe72c4260, - (q31_t)0x7d907c7a, (q31_t)0xe7261875, - (q31_t)0x7d8f4409, (q31_t)0xe71fee99, (q31_t)0x7d8e0b4b, (q31_t)0xe719c4cd, (q31_t)0x7d8cd240, (q31_t)0xe7139b10, - (q31_t)0x7d8b98e6, (q31_t)0xe70d7162, - (q31_t)0x7d8a5f40, (q31_t)0xe70747c4, (q31_t)0x7d89254c, (q31_t)0xe7011e35, (q31_t)0x7d87eb0a, (q31_t)0xe6faf4b5, - (q31_t)0x7d86b07c, (q31_t)0xe6f4cb45, - (q31_t)0x7d85759f, (q31_t)0xe6eea1e4, (q31_t)0x7d843a76, (q31_t)0xe6e87893, (q31_t)0x7d82fefe, (q31_t)0xe6e24f51, - (q31_t)0x7d81c33a, (q31_t)0xe6dc261f, - (q31_t)0x7d808728, (q31_t)0xe6d5fcfc, (q31_t)0x7d7f4ac8, (q31_t)0xe6cfd3e9, (q31_t)0x7d7e0e1c, (q31_t)0xe6c9aae5, - (q31_t)0x7d7cd121, (q31_t)0xe6c381f1, - (q31_t)0x7d7b93da, (q31_t)0xe6bd590d, (q31_t)0x7d7a5645, (q31_t)0xe6b73038, (q31_t)0x7d791862, (q31_t)0xe6b10772, - (q31_t)0x7d77da32, (q31_t)0xe6aadebc, - (q31_t)0x7d769bb5, (q31_t)0xe6a4b616, (q31_t)0x7d755cea, (q31_t)0xe69e8d80, (q31_t)0x7d741dd2, (q31_t)0xe69864f9, - (q31_t)0x7d72de6d, (q31_t)0xe6923c82, - (q31_t)0x7d719eba, (q31_t)0xe68c141a, (q31_t)0x7d705eba, (q31_t)0xe685ebc2, (q31_t)0x7d6f1e6c, (q31_t)0xe67fc37a, - (q31_t)0x7d6dddd2, (q31_t)0xe6799b42, - (q31_t)0x7d6c9ce9, (q31_t)0xe6737319, (q31_t)0x7d6b5bb4, (q31_t)0xe66d4b01, (q31_t)0x7d6a1a31, (q31_t)0xe66722f7, - (q31_t)0x7d68d860, (q31_t)0xe660fafe, - (q31_t)0x7d679642, (q31_t)0xe65ad315, (q31_t)0x7d6653d7, (q31_t)0xe654ab3b, (q31_t)0x7d65111f, (q31_t)0xe64e8371, - (q31_t)0x7d63ce19, (q31_t)0xe6485bb7, - (q31_t)0x7d628ac6, (q31_t)0xe642340d, (q31_t)0x7d614725, (q31_t)0xe63c0c73, (q31_t)0x7d600338, (q31_t)0xe635e4e9, - (q31_t)0x7d5ebefc, (q31_t)0xe62fbd6e, - (q31_t)0x7d5d7a74, (q31_t)0xe6299604, (q31_t)0x7d5c359e, (q31_t)0xe6236ea9, (q31_t)0x7d5af07b, (q31_t)0xe61d475e, - (q31_t)0x7d59ab0a, (q31_t)0xe6172024, - (q31_t)0x7d58654d, (q31_t)0xe610f8f9, (q31_t)0x7d571f41, (q31_t)0xe60ad1de, (q31_t)0x7d55d8e9, (q31_t)0xe604aad4, - (q31_t)0x7d549243, (q31_t)0xe5fe83d9, - (q31_t)0x7d534b50, (q31_t)0xe5f85cef, (q31_t)0x7d520410, (q31_t)0xe5f23614, (q31_t)0x7d50bc82, (q31_t)0xe5ec0f4a, - (q31_t)0x7d4f74a7, (q31_t)0xe5e5e88f, - (q31_t)0x7d4e2c7f, (q31_t)0xe5dfc1e5, (q31_t)0x7d4ce409, (q31_t)0xe5d99b4b, (q31_t)0x7d4b9b46, (q31_t)0xe5d374c1, - (q31_t)0x7d4a5236, (q31_t)0xe5cd4e47, - (q31_t)0x7d4908d9, (q31_t)0xe5c727dd, (q31_t)0x7d47bf2e, (q31_t)0xe5c10184, (q31_t)0x7d467536, (q31_t)0xe5badb3a, - (q31_t)0x7d452af1, (q31_t)0xe5b4b501, - (q31_t)0x7d43e05e, (q31_t)0xe5ae8ed8, (q31_t)0x7d42957e, (q31_t)0xe5a868bf, (q31_t)0x7d414a51, (q31_t)0xe5a242b7, - (q31_t)0x7d3ffed7, (q31_t)0xe59c1cbf, - (q31_t)0x7d3eb30f, (q31_t)0xe595f6d7, (q31_t)0x7d3d66fa, (q31_t)0xe58fd0ff, (q31_t)0x7d3c1a98, (q31_t)0xe589ab38, - (q31_t)0x7d3acde9, (q31_t)0xe5838581, - (q31_t)0x7d3980ec, (q31_t)0xe57d5fda, (q31_t)0x7d3833a2, (q31_t)0xe5773a44, (q31_t)0x7d36e60b, (q31_t)0xe57114be, - (q31_t)0x7d359827, (q31_t)0xe56aef49, - (q31_t)0x7d3449f5, (q31_t)0xe564c9e3, (q31_t)0x7d32fb76, (q31_t)0xe55ea48f, (q31_t)0x7d31acaa, (q31_t)0xe5587f4a, - (q31_t)0x7d305d91, (q31_t)0xe5525a17, - (q31_t)0x7d2f0e2b, (q31_t)0xe54c34f3, (q31_t)0x7d2dbe77, (q31_t)0xe5460fe0, (q31_t)0x7d2c6e76, (q31_t)0xe53feade, - (q31_t)0x7d2b1e28, (q31_t)0xe539c5ec, - (q31_t)0x7d29cd8c, (q31_t)0xe533a10a, (q31_t)0x7d287ca4, (q31_t)0xe52d7c39, (q31_t)0x7d272b6e, (q31_t)0xe5275779, - (q31_t)0x7d25d9eb, (q31_t)0xe52132c9, - (q31_t)0x7d24881b, (q31_t)0xe51b0e2a, (q31_t)0x7d2335fe, (q31_t)0xe514e99b, (q31_t)0x7d21e393, (q31_t)0xe50ec51d, - (q31_t)0x7d2090db, (q31_t)0xe508a0b0, - (q31_t)0x7d1f3dd6, (q31_t)0xe5027c53, (q31_t)0x7d1dea84, (q31_t)0xe4fc5807, (q31_t)0x7d1c96e5, (q31_t)0xe4f633cc, - (q31_t)0x7d1b42f9, (q31_t)0xe4f00fa1, - (q31_t)0x7d19eebf, (q31_t)0xe4e9eb87, (q31_t)0x7d189a38, (q31_t)0xe4e3c77d, (q31_t)0x7d174564, (q31_t)0xe4dda385, - (q31_t)0x7d15f043, (q31_t)0xe4d77f9d, - (q31_t)0x7d149ad5, (q31_t)0xe4d15bc6, (q31_t)0x7d134519, (q31_t)0xe4cb37ff, (q31_t)0x7d11ef11, (q31_t)0xe4c5144a, - (q31_t)0x7d1098bb, (q31_t)0xe4bef0a5, - (q31_t)0x7d0f4218, (q31_t)0xe4b8cd11, (q31_t)0x7d0deb28, (q31_t)0xe4b2a98e, (q31_t)0x7d0c93eb, (q31_t)0xe4ac861b, - (q31_t)0x7d0b3c60, (q31_t)0xe4a662ba, - (q31_t)0x7d09e489, (q31_t)0xe4a03f69, (q31_t)0x7d088c64, (q31_t)0xe49a1c29, (q31_t)0x7d0733f3, (q31_t)0xe493f8fb, - (q31_t)0x7d05db34, (q31_t)0xe48dd5dd, - (q31_t)0x7d048228, (q31_t)0xe487b2d0, (q31_t)0x7d0328cf, (q31_t)0xe4818fd4, (q31_t)0x7d01cf29, (q31_t)0xe47b6ce9, - (q31_t)0x7d007535, (q31_t)0xe4754a0e, - (q31_t)0x7cff1af5, (q31_t)0xe46f2745, (q31_t)0x7cfdc068, (q31_t)0xe469048d, (q31_t)0x7cfc658d, (q31_t)0xe462e1e6, - (q31_t)0x7cfb0a65, (q31_t)0xe45cbf50, - (q31_t)0x7cf9aef0, (q31_t)0xe4569ccb, (q31_t)0x7cf8532f, (q31_t)0xe4507a57, (q31_t)0x7cf6f720, (q31_t)0xe44a57f4, - (q31_t)0x7cf59ac4, (q31_t)0xe44435a2, - (q31_t)0x7cf43e1a, (q31_t)0xe43e1362, (q31_t)0x7cf2e124, (q31_t)0xe437f132, (q31_t)0x7cf183e1, (q31_t)0xe431cf14, - (q31_t)0x7cf02651, (q31_t)0xe42bad07, - (q31_t)0x7ceec873, (q31_t)0xe4258b0a, (q31_t)0x7ced6a49, (q31_t)0xe41f6920, (q31_t)0x7cec0bd1, (q31_t)0xe4194746, - (q31_t)0x7ceaad0c, (q31_t)0xe413257d, - (q31_t)0x7ce94dfb, (q31_t)0xe40d03c6, (q31_t)0x7ce7ee9c, (q31_t)0xe406e220, (q31_t)0x7ce68ef0, (q31_t)0xe400c08b, - (q31_t)0x7ce52ef7, (q31_t)0xe3fa9f08, - (q31_t)0x7ce3ceb2, (q31_t)0xe3f47d96, (q31_t)0x7ce26e1f, (q31_t)0xe3ee5c35, (q31_t)0x7ce10d3f, (q31_t)0xe3e83ae5, - (q31_t)0x7cdfac12, (q31_t)0xe3e219a7, - (q31_t)0x7cde4a98, (q31_t)0xe3dbf87a, (q31_t)0x7cdce8d1, (q31_t)0xe3d5d75e, (q31_t)0x7cdb86bd, (q31_t)0xe3cfb654, - (q31_t)0x7cda245c, (q31_t)0xe3c9955b, - (q31_t)0x7cd8c1ae, (q31_t)0xe3c37474, (q31_t)0x7cd75eb3, (q31_t)0xe3bd539e, (q31_t)0x7cd5fb6a, (q31_t)0xe3b732d9, - (q31_t)0x7cd497d5, (q31_t)0xe3b11226, - (q31_t)0x7cd333f3, (q31_t)0xe3aaf184, (q31_t)0x7cd1cfc4, (q31_t)0xe3a4d0f4, (q31_t)0x7cd06b48, (q31_t)0xe39eb075, - (q31_t)0x7ccf067f, (q31_t)0xe3989008, - (q31_t)0x7ccda169, (q31_t)0xe3926fad, (q31_t)0x7ccc3c06, (q31_t)0xe38c4f63, (q31_t)0x7ccad656, (q31_t)0xe3862f2a, - (q31_t)0x7cc97059, (q31_t)0xe3800f03, - (q31_t)0x7cc80a0f, (q31_t)0xe379eeed, (q31_t)0x7cc6a378, (q31_t)0xe373ceea, (q31_t)0x7cc53c94, (q31_t)0xe36daef7, - (q31_t)0x7cc3d563, (q31_t)0xe3678f17, - (q31_t)0x7cc26de5, (q31_t)0xe3616f48, (q31_t)0x7cc1061a, (q31_t)0xe35b4f8b, (q31_t)0x7cbf9e03, (q31_t)0xe3552fdf, - (q31_t)0x7cbe359e, (q31_t)0xe34f1045, - (q31_t)0x7cbcccec, (q31_t)0xe348f0bd, (q31_t)0x7cbb63ee, (q31_t)0xe342d146, (q31_t)0x7cb9faa2, (q31_t)0xe33cb1e1, - (q31_t)0x7cb8910a, (q31_t)0xe336928e, - (q31_t)0x7cb72724, (q31_t)0xe330734d, (q31_t)0x7cb5bcf2, (q31_t)0xe32a541d, (q31_t)0x7cb45272, (q31_t)0xe3243500, - (q31_t)0x7cb2e7a6, (q31_t)0xe31e15f4, - (q31_t)0x7cb17c8d, (q31_t)0xe317f6fa, (q31_t)0x7cb01127, (q31_t)0xe311d811, (q31_t)0x7caea574, (q31_t)0xe30bb93b, - (q31_t)0x7cad3974, (q31_t)0xe3059a76, - (q31_t)0x7cabcd28, (q31_t)0xe2ff7bc3, (q31_t)0x7caa608e, (q31_t)0xe2f95d23, (q31_t)0x7ca8f3a7, (q31_t)0xe2f33e94, - (q31_t)0x7ca78674, (q31_t)0xe2ed2017, - (q31_t)0x7ca618f3, (q31_t)0xe2e701ac, (q31_t)0x7ca4ab26, (q31_t)0xe2e0e352, (q31_t)0x7ca33d0c, (q31_t)0xe2dac50b, - (q31_t)0x7ca1cea5, (q31_t)0xe2d4a6d6, - (q31_t)0x7ca05ff1, (q31_t)0xe2ce88b3, (q31_t)0x7c9ef0f0, (q31_t)0xe2c86aa2, (q31_t)0x7c9d81a3, (q31_t)0xe2c24ca2, - (q31_t)0x7c9c1208, (q31_t)0xe2bc2eb5, - (q31_t)0x7c9aa221, (q31_t)0xe2b610da, (q31_t)0x7c9931ec, (q31_t)0xe2aff311, (q31_t)0x7c97c16b, (q31_t)0xe2a9d55a, - (q31_t)0x7c96509d, (q31_t)0xe2a3b7b5, - (q31_t)0x7c94df83, (q31_t)0xe29d9a23, (q31_t)0x7c936e1b, (q31_t)0xe2977ca2, (q31_t)0x7c91fc66, (q31_t)0xe2915f34, - (q31_t)0x7c908a65, (q31_t)0xe28b41d7, - (q31_t)0x7c8f1817, (q31_t)0xe285248d, (q31_t)0x7c8da57c, (q31_t)0xe27f0755, (q31_t)0x7c8c3294, (q31_t)0xe278ea30, - (q31_t)0x7c8abf5f, (q31_t)0xe272cd1c, - (q31_t)0x7c894bde, (q31_t)0xe26cb01b, (q31_t)0x7c87d810, (q31_t)0xe266932c, (q31_t)0x7c8663f4, (q31_t)0xe260764f, - (q31_t)0x7c84ef8c, (q31_t)0xe25a5984, - (q31_t)0x7c837ad8, (q31_t)0xe2543ccc, (q31_t)0x7c8205d6, (q31_t)0xe24e2026, (q31_t)0x7c809088, (q31_t)0xe2480393, - (q31_t)0x7c7f1aed, (q31_t)0xe241e711, - (q31_t)0x7c7da505, (q31_t)0xe23bcaa2, (q31_t)0x7c7c2ed0, (q31_t)0xe235ae46, (q31_t)0x7c7ab84e, (q31_t)0xe22f91fc, - (q31_t)0x7c794180, (q31_t)0xe22975c4, - (q31_t)0x7c77ca65, (q31_t)0xe223599e, (q31_t)0x7c7652fd, (q31_t)0xe21d3d8b, (q31_t)0x7c74db48, (q31_t)0xe217218b, - (q31_t)0x7c736347, (q31_t)0xe211059d, - (q31_t)0x7c71eaf9, (q31_t)0xe20ae9c1, (q31_t)0x7c70725e, (q31_t)0xe204cdf8, (q31_t)0x7c6ef976, (q31_t)0xe1feb241, - (q31_t)0x7c6d8041, (q31_t)0xe1f8969d, - (q31_t)0x7c6c06c0, (q31_t)0xe1f27b0b, (q31_t)0x7c6a8cf2, (q31_t)0xe1ec5f8c, (q31_t)0x7c6912d7, (q31_t)0xe1e64420, - (q31_t)0x7c679870, (q31_t)0xe1e028c6, - (q31_t)0x7c661dbc, (q31_t)0xe1da0d7e, (q31_t)0x7c64a2bb, (q31_t)0xe1d3f24a, (q31_t)0x7c63276d, (q31_t)0xe1cdd727, - (q31_t)0x7c61abd3, (q31_t)0xe1c7bc18, - (q31_t)0x7c602fec, (q31_t)0xe1c1a11b, (q31_t)0x7c5eb3b8, (q31_t)0xe1bb8631, (q31_t)0x7c5d3737, (q31_t)0xe1b56b59, - (q31_t)0x7c5bba6a, (q31_t)0xe1af5094, - (q31_t)0x7c5a3d50, (q31_t)0xe1a935e2, (q31_t)0x7c58bfe9, (q31_t)0xe1a31b42, (q31_t)0x7c574236, (q31_t)0xe19d00b6, - (q31_t)0x7c55c436, (q31_t)0xe196e63c, - (q31_t)0x7c5445e9, (q31_t)0xe190cbd4, (q31_t)0x7c52c74f, (q31_t)0xe18ab180, (q31_t)0x7c514869, (q31_t)0xe184973e, - (q31_t)0x7c4fc936, (q31_t)0xe17e7d0f, - (q31_t)0x7c4e49b7, (q31_t)0xe17862f3, (q31_t)0x7c4cc9ea, (q31_t)0xe17248ea, (q31_t)0x7c4b49d2, (q31_t)0xe16c2ef4, - (q31_t)0x7c49c96c, (q31_t)0xe1661510, - (q31_t)0x7c4848ba, (q31_t)0xe15ffb3f, (q31_t)0x7c46c7bb, (q31_t)0xe159e182, (q31_t)0x7c45466f, (q31_t)0xe153c7d7, - (q31_t)0x7c43c4d7, (q31_t)0xe14dae3f, - (q31_t)0x7c4242f2, (q31_t)0xe14794ba, (q31_t)0x7c40c0c1, (q31_t)0xe1417b48, (q31_t)0x7c3f3e42, (q31_t)0xe13b61e9, - (q31_t)0x7c3dbb78, (q31_t)0xe135489d, - (q31_t)0x7c3c3860, (q31_t)0xe12f2f63, (q31_t)0x7c3ab4fc, (q31_t)0xe129163d, (q31_t)0x7c39314b, (q31_t)0xe122fd2a, - (q31_t)0x7c37ad4e, (q31_t)0xe11ce42a, - (q31_t)0x7c362904, (q31_t)0xe116cb3d, (q31_t)0x7c34a46d, (q31_t)0xe110b263, (q31_t)0x7c331f8a, (q31_t)0xe10a999c, - (q31_t)0x7c319a5a, (q31_t)0xe10480e9, - (q31_t)0x7c3014de, (q31_t)0xe0fe6848, (q31_t)0x7c2e8f15, (q31_t)0xe0f84fbb, (q31_t)0x7c2d08ff, (q31_t)0xe0f23740, - (q31_t)0x7c2b829d, (q31_t)0xe0ec1ed9, - (q31_t)0x7c29fbee, (q31_t)0xe0e60685, (q31_t)0x7c2874f3, (q31_t)0xe0dfee44, (q31_t)0x7c26edab, (q31_t)0xe0d9d616, - (q31_t)0x7c256616, (q31_t)0xe0d3bdfc, - (q31_t)0x7c23de35, (q31_t)0xe0cda5f5, (q31_t)0x7c225607, (q31_t)0xe0c78e01, (q31_t)0x7c20cd8d, (q31_t)0xe0c17620, - (q31_t)0x7c1f44c6, (q31_t)0xe0bb5e53, - (q31_t)0x7c1dbbb3, (q31_t)0xe0b54698, (q31_t)0x7c1c3253, (q31_t)0xe0af2ef2, (q31_t)0x7c1aa8a6, (q31_t)0xe0a9175e, - (q31_t)0x7c191ead, (q31_t)0xe0a2ffde, - (q31_t)0x7c179467, (q31_t)0xe09ce871, (q31_t)0x7c1609d5, (q31_t)0xe096d117, (q31_t)0x7c147ef6, (q31_t)0xe090b9d1, - (q31_t)0x7c12f3cb, (q31_t)0xe08aa29f, - (q31_t)0x7c116853, (q31_t)0xe0848b7f, (q31_t)0x7c0fdc8f, (q31_t)0xe07e7473, (q31_t)0x7c0e507e, (q31_t)0xe0785d7b, - (q31_t)0x7c0cc421, (q31_t)0xe0724696, - (q31_t)0x7c0b3777, (q31_t)0xe06c2fc4, (q31_t)0x7c09aa80, (q31_t)0xe0661906, (q31_t)0x7c081d3d, (q31_t)0xe060025c, - (q31_t)0x7c068fae, (q31_t)0xe059ebc5, - (q31_t)0x7c0501d2, (q31_t)0xe053d541, (q31_t)0x7c0373a9, (q31_t)0xe04dbed1, (q31_t)0x7c01e534, (q31_t)0xe047a875, - (q31_t)0x7c005673, (q31_t)0xe041922c, - (q31_t)0x7bfec765, (q31_t)0xe03b7bf6, (q31_t)0x7bfd380a, (q31_t)0xe03565d5, (q31_t)0x7bfba863, (q31_t)0xe02f4fc6, - (q31_t)0x7bfa1870, (q31_t)0xe02939cc, - (q31_t)0x7bf88830, (q31_t)0xe02323e5, (q31_t)0x7bf6f7a4, (q31_t)0xe01d0e12, (q31_t)0x7bf566cb, (q31_t)0xe016f852, - (q31_t)0x7bf3d5a6, (q31_t)0xe010e2a7, - (q31_t)0x7bf24434, (q31_t)0xe00acd0e, (q31_t)0x7bf0b276, (q31_t)0xe004b78a, (q31_t)0x7bef206b, (q31_t)0xdffea219, - (q31_t)0x7bed8e14, (q31_t)0xdff88cbc, - (q31_t)0x7bebfb70, (q31_t)0xdff27773, (q31_t)0x7bea6880, (q31_t)0xdfec623e, (q31_t)0x7be8d544, (q31_t)0xdfe64d1c, - (q31_t)0x7be741bb, (q31_t)0xdfe0380e, - (q31_t)0x7be5ade6, (q31_t)0xdfda2314, (q31_t)0x7be419c4, (q31_t)0xdfd40e2e, (q31_t)0x7be28556, (q31_t)0xdfcdf95c, - (q31_t)0x7be0f09b, (q31_t)0xdfc7e49d, - (q31_t)0x7bdf5b94, (q31_t)0xdfc1cff3, (q31_t)0x7bddc641, (q31_t)0xdfbbbb5c, (q31_t)0x7bdc30a1, (q31_t)0xdfb5a6d9, - (q31_t)0x7bda9ab5, (q31_t)0xdfaf926a, - (q31_t)0x7bd9047c, (q31_t)0xdfa97e0f, (q31_t)0x7bd76df7, (q31_t)0xdfa369c8, (q31_t)0x7bd5d726, (q31_t)0xdf9d5595, - (q31_t)0x7bd44008, (q31_t)0xdf974176, - (q31_t)0x7bd2a89e, (q31_t)0xdf912d6b, (q31_t)0x7bd110e8, (q31_t)0xdf8b1974, (q31_t)0x7bcf78e5, (q31_t)0xdf850591, - (q31_t)0x7bcde095, (q31_t)0xdf7ef1c2, - (q31_t)0x7bcc47fa, (q31_t)0xdf78de07, (q31_t)0x7bcaaf12, (q31_t)0xdf72ca60, (q31_t)0x7bc915dd, (q31_t)0xdf6cb6cd, - (q31_t)0x7bc77c5d, (q31_t)0xdf66a34e, - (q31_t)0x7bc5e290, (q31_t)0xdf608fe4, (q31_t)0x7bc44876, (q31_t)0xdf5a7c8d, (q31_t)0x7bc2ae10, (q31_t)0xdf54694b, - (q31_t)0x7bc1135e, (q31_t)0xdf4e561c, - (q31_t)0x7bbf7860, (q31_t)0xdf484302, (q31_t)0x7bbddd15, (q31_t)0xdf422ffd, (q31_t)0x7bbc417e, (q31_t)0xdf3c1d0b, - (q31_t)0x7bbaa59a, (q31_t)0xdf360a2d, - (q31_t)0x7bb9096b, (q31_t)0xdf2ff764, (q31_t)0x7bb76cef, (q31_t)0xdf29e4af, (q31_t)0x7bb5d026, (q31_t)0xdf23d20e, - (q31_t)0x7bb43311, (q31_t)0xdf1dbf82, - (q31_t)0x7bb295b0, (q31_t)0xdf17ad0a, (q31_t)0x7bb0f803, (q31_t)0xdf119aa6, (q31_t)0x7baf5a09, (q31_t)0xdf0b8856, - (q31_t)0x7badbbc3, (q31_t)0xdf05761b, - (q31_t)0x7bac1d31, (q31_t)0xdeff63f4, (q31_t)0x7baa7e53, (q31_t)0xdef951e2, (q31_t)0x7ba8df28, (q31_t)0xdef33fe3, - (q31_t)0x7ba73fb1, (q31_t)0xdeed2dfa, - (q31_t)0x7ba59fee, (q31_t)0xdee71c24, (q31_t)0x7ba3ffde, (q31_t)0xdee10a63, (q31_t)0x7ba25f82, (q31_t)0xdedaf8b7, - (q31_t)0x7ba0beda, (q31_t)0xded4e71f, - (q31_t)0x7b9f1de6, (q31_t)0xdeced59b, (q31_t)0x7b9d7ca5, (q31_t)0xdec8c42c, (q31_t)0x7b9bdb18, (q31_t)0xdec2b2d1, - (q31_t)0x7b9a393f, (q31_t)0xdebca18b, - (q31_t)0x7b989719, (q31_t)0xdeb69059, (q31_t)0x7b96f4a8, (q31_t)0xdeb07f3c, (q31_t)0x7b9551ea, (q31_t)0xdeaa6e34, - (q31_t)0x7b93aee0, (q31_t)0xdea45d40, - (q31_t)0x7b920b89, (q31_t)0xde9e4c60, (q31_t)0x7b9067e7, (q31_t)0xde983b95, (q31_t)0x7b8ec3f8, (q31_t)0xde922adf, - (q31_t)0x7b8d1fbd, (q31_t)0xde8c1a3e, - (q31_t)0x7b8b7b36, (q31_t)0xde8609b1, (q31_t)0x7b89d662, (q31_t)0xde7ff938, (q31_t)0x7b883143, (q31_t)0xde79e8d5, - (q31_t)0x7b868bd7, (q31_t)0xde73d886, - (q31_t)0x7b84e61f, (q31_t)0xde6dc84b, (q31_t)0x7b83401b, (q31_t)0xde67b826, (q31_t)0x7b8199ca, (q31_t)0xde61a815, - (q31_t)0x7b7ff32e, (q31_t)0xde5b9819, - (q31_t)0x7b7e4c45, (q31_t)0xde558831, (q31_t)0x7b7ca510, (q31_t)0xde4f785f, (q31_t)0x7b7afd8f, (q31_t)0xde4968a1, - (q31_t)0x7b7955c2, (q31_t)0xde4358f8, - (q31_t)0x7b77ada8, (q31_t)0xde3d4964, (q31_t)0x7b760542, (q31_t)0xde3739e4, (q31_t)0x7b745c91, (q31_t)0xde312a7a, - (q31_t)0x7b72b393, (q31_t)0xde2b1b24, - (q31_t)0x7b710a49, (q31_t)0xde250be3, (q31_t)0x7b6f60b2, (q31_t)0xde1efcb7, (q31_t)0x7b6db6d0, (q31_t)0xde18eda0, - (q31_t)0x7b6c0ca2, (q31_t)0xde12de9e, - (q31_t)0x7b6a6227, (q31_t)0xde0ccfb1, (q31_t)0x7b68b760, (q31_t)0xde06c0d9, (q31_t)0x7b670c4d, (q31_t)0xde00b216, - (q31_t)0x7b6560ee, (q31_t)0xddfaa367, - (q31_t)0x7b63b543, (q31_t)0xddf494ce, (q31_t)0x7b62094c, (q31_t)0xddee8649, (q31_t)0x7b605d09, (q31_t)0xdde877da, - (q31_t)0x7b5eb079, (q31_t)0xdde26980, - (q31_t)0x7b5d039e, (q31_t)0xdddc5b3b, (q31_t)0x7b5b5676, (q31_t)0xddd64d0a, (q31_t)0x7b59a902, (q31_t)0xddd03eef, - (q31_t)0x7b57fb42, (q31_t)0xddca30e9, - (q31_t)0x7b564d36, (q31_t)0xddc422f8, (q31_t)0x7b549ede, (q31_t)0xddbe151d, (q31_t)0x7b52f03a, (q31_t)0xddb80756, - (q31_t)0x7b51414a, (q31_t)0xddb1f9a4, - (q31_t)0x7b4f920e, (q31_t)0xddabec08, (q31_t)0x7b4de286, (q31_t)0xdda5de81, (q31_t)0x7b4c32b1, (q31_t)0xdd9fd10f, - (q31_t)0x7b4a8291, (q31_t)0xdd99c3b2, - (q31_t)0x7b48d225, (q31_t)0xdd93b66a, (q31_t)0x7b47216c, (q31_t)0xdd8da938, (q31_t)0x7b457068, (q31_t)0xdd879c1b, - (q31_t)0x7b43bf17, (q31_t)0xdd818f13, - (q31_t)0x7b420d7a, (q31_t)0xdd7b8220, (q31_t)0x7b405b92, (q31_t)0xdd757543, (q31_t)0x7b3ea95d, (q31_t)0xdd6f687b, - (q31_t)0x7b3cf6dc, (q31_t)0xdd695bc9, - (q31_t)0x7b3b4410, (q31_t)0xdd634f2b, (q31_t)0x7b3990f7, (q31_t)0xdd5d42a3, (q31_t)0x7b37dd92, (q31_t)0xdd573631, - (q31_t)0x7b3629e1, (q31_t)0xdd5129d4, - (q31_t)0x7b3475e5, (q31_t)0xdd4b1d8c, (q31_t)0x7b32c19c, (q31_t)0xdd451159, (q31_t)0x7b310d07, (q31_t)0xdd3f053c, - (q31_t)0x7b2f5826, (q31_t)0xdd38f935, - (q31_t)0x7b2da2fa, (q31_t)0xdd32ed43, (q31_t)0x7b2bed81, (q31_t)0xdd2ce166, (q31_t)0x7b2a37bc, (q31_t)0xdd26d59f, - (q31_t)0x7b2881ac, (q31_t)0xdd20c9ed, - (q31_t)0x7b26cb4f, (q31_t)0xdd1abe51, (q31_t)0x7b2514a6, (q31_t)0xdd14b2ca, (q31_t)0x7b235db2, (q31_t)0xdd0ea759, - (q31_t)0x7b21a671, (q31_t)0xdd089bfe, - (q31_t)0x7b1feee5, (q31_t)0xdd0290b8, (q31_t)0x7b1e370d, (q31_t)0xdcfc8588, (q31_t)0x7b1c7ee8, (q31_t)0xdcf67a6d, - (q31_t)0x7b1ac678, (q31_t)0xdcf06f68, - (q31_t)0x7b190dbc, (q31_t)0xdcea6478, (q31_t)0x7b1754b3, (q31_t)0xdce4599e, (q31_t)0x7b159b5f, (q31_t)0xdcde4eda, - (q31_t)0x7b13e1bf, (q31_t)0xdcd8442b, - (q31_t)0x7b1227d3, (q31_t)0xdcd23993, (q31_t)0x7b106d9b, (q31_t)0xdccc2f0f, (q31_t)0x7b0eb318, (q31_t)0xdcc624a2, - (q31_t)0x7b0cf848, (q31_t)0xdcc01a4a, - (q31_t)0x7b0b3d2c, (q31_t)0xdcba1008, (q31_t)0x7b0981c5, (q31_t)0xdcb405dc, (q31_t)0x7b07c612, (q31_t)0xdcadfbc5, - (q31_t)0x7b060a12, (q31_t)0xdca7f1c5, - (q31_t)0x7b044dc7, (q31_t)0xdca1e7da, (q31_t)0x7b029130, (q31_t)0xdc9bde05, (q31_t)0x7b00d44d, (q31_t)0xdc95d446, - (q31_t)0x7aff171e, (q31_t)0xdc8fca9c, - (q31_t)0x7afd59a4, (q31_t)0xdc89c109, (q31_t)0x7afb9bdd, (q31_t)0xdc83b78b, (q31_t)0x7af9ddcb, (q31_t)0xdc7dae23, - (q31_t)0x7af81f6c, (q31_t)0xdc77a4d2, - (q31_t)0x7af660c2, (q31_t)0xdc719b96, (q31_t)0x7af4a1cc, (q31_t)0xdc6b9270, (q31_t)0x7af2e28b, (q31_t)0xdc658960, - (q31_t)0x7af122fd, (q31_t)0xdc5f8066, - (q31_t)0x7aef6323, (q31_t)0xdc597781, (q31_t)0x7aeda2fe, (q31_t)0xdc536eb3, (q31_t)0x7aebe28d, (q31_t)0xdc4d65fb, - (q31_t)0x7aea21d0, (q31_t)0xdc475d59, - (q31_t)0x7ae860c7, (q31_t)0xdc4154cd, (q31_t)0x7ae69f73, (q31_t)0xdc3b4c57, (q31_t)0x7ae4ddd2, (q31_t)0xdc3543f7, - (q31_t)0x7ae31be6, (q31_t)0xdc2f3bad, - (q31_t)0x7ae159ae, (q31_t)0xdc293379, (q31_t)0x7adf972a, (q31_t)0xdc232b5c, (q31_t)0x7addd45b, (q31_t)0xdc1d2354, - (q31_t)0x7adc113f, (q31_t)0xdc171b63, - (q31_t)0x7ada4dd8, (q31_t)0xdc111388, (q31_t)0x7ad88a25, (q31_t)0xdc0b0bc2, (q31_t)0x7ad6c626, (q31_t)0xdc050414, - (q31_t)0x7ad501dc, (q31_t)0xdbfefc7b, - (q31_t)0x7ad33d45, (q31_t)0xdbf8f4f8, (q31_t)0x7ad17863, (q31_t)0xdbf2ed8c, (q31_t)0x7acfb336, (q31_t)0xdbece636, - (q31_t)0x7acdedbc, (q31_t)0xdbe6def6, - (q31_t)0x7acc27f7, (q31_t)0xdbe0d7cd, (q31_t)0x7aca61e6, (q31_t)0xdbdad0b9, (q31_t)0x7ac89b89, (q31_t)0xdbd4c9bc, - (q31_t)0x7ac6d4e0, (q31_t)0xdbcec2d6, - (q31_t)0x7ac50dec, (q31_t)0xdbc8bc06, (q31_t)0x7ac346ac, (q31_t)0xdbc2b54c, (q31_t)0x7ac17f20, (q31_t)0xdbbcaea8, - (q31_t)0x7abfb749, (q31_t)0xdbb6a81b, - (q31_t)0x7abdef25, (q31_t)0xdbb0a1a4, (q31_t)0x7abc26b7, (q31_t)0xdbaa9b43, (q31_t)0x7aba5dfc, (q31_t)0xdba494f9, - (q31_t)0x7ab894f6, (q31_t)0xdb9e8ec6, - (q31_t)0x7ab6cba4, (q31_t)0xdb9888a8, (q31_t)0x7ab50206, (q31_t)0xdb9282a2, (q31_t)0x7ab3381d, (q31_t)0xdb8c7cb1, - (q31_t)0x7ab16de7, (q31_t)0xdb8676d8, - (q31_t)0x7aafa367, (q31_t)0xdb807114, (q31_t)0x7aadd89a, (q31_t)0xdb7a6b68, (q31_t)0x7aac0d82, (q31_t)0xdb7465d1, - (q31_t)0x7aaa421e, (q31_t)0xdb6e6052, - (q31_t)0x7aa8766f, (q31_t)0xdb685ae9, (q31_t)0x7aa6aa74, (q31_t)0xdb625596, (q31_t)0x7aa4de2d, (q31_t)0xdb5c505a, - (q31_t)0x7aa3119a, (q31_t)0xdb564b35, - (q31_t)0x7aa144bc, (q31_t)0xdb504626, (q31_t)0x7a9f7793, (q31_t)0xdb4a412e, (q31_t)0x7a9daa1d, (q31_t)0xdb443c4c, - (q31_t)0x7a9bdc5c, (q31_t)0xdb3e3781, - (q31_t)0x7a9a0e50, (q31_t)0xdb3832cd, (q31_t)0x7a983ff7, (q31_t)0xdb322e30, (q31_t)0x7a967153, (q31_t)0xdb2c29a9, - (q31_t)0x7a94a264, (q31_t)0xdb262539, - (q31_t)0x7a92d329, (q31_t)0xdb2020e0, (q31_t)0x7a9103a2, (q31_t)0xdb1a1c9d, (q31_t)0x7a8f33d0, (q31_t)0xdb141871, - (q31_t)0x7a8d63b2, (q31_t)0xdb0e145c, - (q31_t)0x7a8b9348, (q31_t)0xdb08105e, (q31_t)0x7a89c293, (q31_t)0xdb020c77, (q31_t)0x7a87f192, (q31_t)0xdafc08a6, - (q31_t)0x7a862046, (q31_t)0xdaf604ec, - (q31_t)0x7a844eae, (q31_t)0xdaf00149, (q31_t)0x7a827ccb, (q31_t)0xdae9fdbd, (q31_t)0x7a80aa9c, (q31_t)0xdae3fa48, - (q31_t)0x7a7ed821, (q31_t)0xdaddf6ea, - (q31_t)0x7a7d055b, (q31_t)0xdad7f3a2, (q31_t)0x7a7b3249, (q31_t)0xdad1f072, (q31_t)0x7a795eec, (q31_t)0xdacbed58, - (q31_t)0x7a778b43, (q31_t)0xdac5ea56, - (q31_t)0x7a75b74f, (q31_t)0xdabfe76a, (q31_t)0x7a73e30f, (q31_t)0xdab9e495, (q31_t)0x7a720e84, (q31_t)0xdab3e1d8, - (q31_t)0x7a7039ad, (q31_t)0xdaaddf31, - (q31_t)0x7a6e648a, (q31_t)0xdaa7dca1, (q31_t)0x7a6c8f1c, (q31_t)0xdaa1da29, (q31_t)0x7a6ab963, (q31_t)0xda9bd7c7, - (q31_t)0x7a68e35e, (q31_t)0xda95d57d, - (q31_t)0x7a670d0d, (q31_t)0xda8fd349, (q31_t)0x7a653671, (q31_t)0xda89d12d, (q31_t)0x7a635f8a, (q31_t)0xda83cf28, - (q31_t)0x7a618857, (q31_t)0xda7dcd3a, - (q31_t)0x7a5fb0d8, (q31_t)0xda77cb63, (q31_t)0x7a5dd90e, (q31_t)0xda71c9a3, (q31_t)0x7a5c00f9, (q31_t)0xda6bc7fa, - (q31_t)0x7a5a2898, (q31_t)0xda65c669, - (q31_t)0x7a584feb, (q31_t)0xda5fc4ef, (q31_t)0x7a5676f3, (q31_t)0xda59c38c, (q31_t)0x7a549db0, (q31_t)0xda53c240, - (q31_t)0x7a52c421, (q31_t)0xda4dc10b, - (q31_t)0x7a50ea47, (q31_t)0xda47bfee, (q31_t)0x7a4f1021, (q31_t)0xda41bee8, (q31_t)0x7a4d35b0, (q31_t)0xda3bbdf9, - (q31_t)0x7a4b5af3, (q31_t)0xda35bd22, - (q31_t)0x7a497feb, (q31_t)0xda2fbc61, (q31_t)0x7a47a498, (q31_t)0xda29bbb9, (q31_t)0x7a45c8f9, (q31_t)0xda23bb27, - (q31_t)0x7a43ed0e, (q31_t)0xda1dbaad, - (q31_t)0x7a4210d8, (q31_t)0xda17ba4a, (q31_t)0x7a403457, (q31_t)0xda11b9ff, (q31_t)0x7a3e578b, (q31_t)0xda0bb9cb, - (q31_t)0x7a3c7a73, (q31_t)0xda05b9ae, - (q31_t)0x7a3a9d0f, (q31_t)0xd9ffb9a9, (q31_t)0x7a38bf60, (q31_t)0xd9f9b9bb, (q31_t)0x7a36e166, (q31_t)0xd9f3b9e5, - (q31_t)0x7a350321, (q31_t)0xd9edba26, - (q31_t)0x7a332490, (q31_t)0xd9e7ba7f, (q31_t)0x7a3145b3, (q31_t)0xd9e1baef, (q31_t)0x7a2f668c, (q31_t)0xd9dbbb77, - (q31_t)0x7a2d8719, (q31_t)0xd9d5bc16, - (q31_t)0x7a2ba75a, (q31_t)0xd9cfbccd, (q31_t)0x7a29c750, (q31_t)0xd9c9bd9b, (q31_t)0x7a27e6fb, (q31_t)0xd9c3be81, - (q31_t)0x7a26065b, (q31_t)0xd9bdbf7e, - (q31_t)0x7a24256f, (q31_t)0xd9b7c094, (q31_t)0x7a224437, (q31_t)0xd9b1c1c0, (q31_t)0x7a2062b5, (q31_t)0xd9abc305, - (q31_t)0x7a1e80e7, (q31_t)0xd9a5c461, - (q31_t)0x7a1c9ece, (q31_t)0xd99fc5d4, (q31_t)0x7a1abc69, (q31_t)0xd999c75f, (q31_t)0x7a18d9b9, (q31_t)0xd993c902, - (q31_t)0x7a16f6be, (q31_t)0xd98dcabd, - (q31_t)0x7a151378, (q31_t)0xd987cc90, (q31_t)0x7a132fe6, (q31_t)0xd981ce7a, (q31_t)0x7a114c09, (q31_t)0xd97bd07c, - (q31_t)0x7a0f67e0, (q31_t)0xd975d295, - (q31_t)0x7a0d836d, (q31_t)0xd96fd4c7, (q31_t)0x7a0b9eae, (q31_t)0xd969d710, (q31_t)0x7a09b9a4, (q31_t)0xd963d971, - (q31_t)0x7a07d44e, (q31_t)0xd95ddbea, - (q31_t)0x7a05eead, (q31_t)0xd957de7a, (q31_t)0x7a0408c1, (q31_t)0xd951e123, (q31_t)0x7a02228a, (q31_t)0xd94be3e3, - (q31_t)0x7a003c07, (q31_t)0xd945e6bb, - (q31_t)0x79fe5539, (q31_t)0xd93fe9ab, (q31_t)0x79fc6e20, (q31_t)0xd939ecb3, (q31_t)0x79fa86bc, (q31_t)0xd933efd3, - (q31_t)0x79f89f0c, (q31_t)0xd92df30b, - (q31_t)0x79f6b711, (q31_t)0xd927f65b, (q31_t)0x79f4cecb, (q31_t)0xd921f9c3, (q31_t)0x79f2e63a, (q31_t)0xd91bfd43, - (q31_t)0x79f0fd5d, (q31_t)0xd91600da, - (q31_t)0x79ef1436, (q31_t)0xd910048a, (q31_t)0x79ed2ac3, (q31_t)0xd90a0852, (q31_t)0x79eb4105, (q31_t)0xd9040c32, - (q31_t)0x79e956fb, (q31_t)0xd8fe1029, - (q31_t)0x79e76ca7, (q31_t)0xd8f81439, (q31_t)0x79e58207, (q31_t)0xd8f21861, (q31_t)0x79e3971c, (q31_t)0xd8ec1ca1, - (q31_t)0x79e1abe6, (q31_t)0xd8e620fa, - (q31_t)0x79dfc064, (q31_t)0xd8e0256a, (q31_t)0x79ddd498, (q31_t)0xd8da29f2, (q31_t)0x79dbe880, (q31_t)0xd8d42e93, - (q31_t)0x79d9fc1d, (q31_t)0xd8ce334c, - (q31_t)0x79d80f6f, (q31_t)0xd8c8381d, (q31_t)0x79d62276, (q31_t)0xd8c23d06, (q31_t)0x79d43532, (q31_t)0xd8bc4207, - (q31_t)0x79d247a2, (q31_t)0xd8b64720, - (q31_t)0x79d059c8, (q31_t)0xd8b04c52, (q31_t)0x79ce6ba2, (q31_t)0xd8aa519c, (q31_t)0x79cc7d31, (q31_t)0xd8a456ff, - (q31_t)0x79ca8e75, (q31_t)0xd89e5c79, - (q31_t)0x79c89f6e, (q31_t)0xd898620c, (q31_t)0x79c6b01b, (q31_t)0xd89267b7, (q31_t)0x79c4c07e, (q31_t)0xd88c6d7b, - (q31_t)0x79c2d095, (q31_t)0xd8867356, - (q31_t)0x79c0e062, (q31_t)0xd880794b, (q31_t)0x79beefe3, (q31_t)0xd87a7f57, (q31_t)0x79bcff19, (q31_t)0xd874857c, - (q31_t)0x79bb0e04, (q31_t)0xd86e8bb9, - (q31_t)0x79b91ca4, (q31_t)0xd868920f, (q31_t)0x79b72af9, (q31_t)0xd862987d, (q31_t)0x79b53903, (q31_t)0xd85c9f04, - (q31_t)0x79b346c2, (q31_t)0xd856a5a3, - (q31_t)0x79b15435, (q31_t)0xd850ac5a, (q31_t)0x79af615e, (q31_t)0xd84ab32a, (q31_t)0x79ad6e3c, (q31_t)0xd844ba13, - (q31_t)0x79ab7ace, (q31_t)0xd83ec114, - (q31_t)0x79a98715, (q31_t)0xd838c82d, (q31_t)0x79a79312, (q31_t)0xd832cf5f, (q31_t)0x79a59ec3, (q31_t)0xd82cd6aa, - (q31_t)0x79a3aa29, (q31_t)0xd826de0d, - (q31_t)0x79a1b545, (q31_t)0xd820e589, (q31_t)0x799fc015, (q31_t)0xd81aed1d, (q31_t)0x799dca9a, (q31_t)0xd814f4ca, - (q31_t)0x799bd4d4, (q31_t)0xd80efc8f, - (q31_t)0x7999dec4, (q31_t)0xd809046e, (q31_t)0x7997e868, (q31_t)0xd8030c64, (q31_t)0x7995f1c1, (q31_t)0xd7fd1474, - (q31_t)0x7993facf, (q31_t)0xd7f71c9c, - (q31_t)0x79920392, (q31_t)0xd7f124dd, (q31_t)0x79900c0a, (q31_t)0xd7eb2d37, (q31_t)0x798e1438, (q31_t)0xd7e535a9, - (q31_t)0x798c1c1a, (q31_t)0xd7df3e34, - (q31_t)0x798a23b1, (q31_t)0xd7d946d8, (q31_t)0x79882afd, (q31_t)0xd7d34f94, (q31_t)0x798631ff, (q31_t)0xd7cd586a, - (q31_t)0x798438b5, (q31_t)0xd7c76158, - (q31_t)0x79823f20, (q31_t)0xd7c16a5f, (q31_t)0x79804541, (q31_t)0xd7bb737f, (q31_t)0x797e4b16, (q31_t)0xd7b57cb7, - (q31_t)0x797c50a1, (q31_t)0xd7af8609, - (q31_t)0x797a55e0, (q31_t)0xd7a98f73, (q31_t)0x79785ad5, (q31_t)0xd7a398f6, (q31_t)0x79765f7f, (q31_t)0xd79da293, - (q31_t)0x797463de, (q31_t)0xd797ac48, - (q31_t)0x797267f2, (q31_t)0xd791b616, (q31_t)0x79706bbb, (q31_t)0xd78bbffc, (q31_t)0x796e6f39, (q31_t)0xd785c9fc, - (q31_t)0x796c726c, (q31_t)0xd77fd415, - (q31_t)0x796a7554, (q31_t)0xd779de47, (q31_t)0x796877f1, (q31_t)0xd773e892, (q31_t)0x79667a44, (q31_t)0xd76df2f6, - (q31_t)0x79647c4c, (q31_t)0xd767fd72, - (q31_t)0x79627e08, (q31_t)0xd7620808, (q31_t)0x79607f7a, (q31_t)0xd75c12b7, (q31_t)0x795e80a1, (q31_t)0xd7561d7f, - (q31_t)0x795c817d, (q31_t)0xd7502860, - (q31_t)0x795a820e, (q31_t)0xd74a335b, (q31_t)0x79588255, (q31_t)0xd7443e6e, (q31_t)0x79568250, (q31_t)0xd73e499a, - (q31_t)0x79548201, (q31_t)0xd73854e0, - (q31_t)0x79528167, (q31_t)0xd732603f, (q31_t)0x79508082, (q31_t)0xd72c6bb6, (q31_t)0x794e7f52, (q31_t)0xd7267748, - (q31_t)0x794c7dd7, (q31_t)0xd72082f2, - (q31_t)0x794a7c12, (q31_t)0xd71a8eb5, (q31_t)0x79487a01, (q31_t)0xd7149a92, (q31_t)0x794677a6, (q31_t)0xd70ea688, - (q31_t)0x79447500, (q31_t)0xd708b297, - (q31_t)0x79427210, (q31_t)0xd702bec0, (q31_t)0x79406ed4, (q31_t)0xd6fccb01, (q31_t)0x793e6b4e, (q31_t)0xd6f6d75d, - (q31_t)0x793c677d, (q31_t)0xd6f0e3d1, - (q31_t)0x793a6361, (q31_t)0xd6eaf05f, (q31_t)0x79385efa, (q31_t)0xd6e4fd06, (q31_t)0x79365a49, (q31_t)0xd6df09c6, - (q31_t)0x7934554d, (q31_t)0xd6d916a0, - (q31_t)0x79325006, (q31_t)0xd6d32393, (q31_t)0x79304a74, (q31_t)0xd6cd30a0, (q31_t)0x792e4497, (q31_t)0xd6c73dc6, - (q31_t)0x792c3e70, (q31_t)0xd6c14b05, - (q31_t)0x792a37fe, (q31_t)0xd6bb585e, (q31_t)0x79283141, (q31_t)0xd6b565d0, (q31_t)0x79262a3a, (q31_t)0xd6af735c, - (q31_t)0x792422e8, (q31_t)0xd6a98101, - (q31_t)0x79221b4b, (q31_t)0xd6a38ec0, (q31_t)0x79201363, (q31_t)0xd69d9c98, (q31_t)0x791e0b31, (q31_t)0xd697aa8a, - (q31_t)0x791c02b4, (q31_t)0xd691b895, - (q31_t)0x7919f9ec, (q31_t)0xd68bc6ba, (q31_t)0x7917f0d9, (q31_t)0xd685d4f9, (q31_t)0x7915e77c, (q31_t)0xd67fe351, - (q31_t)0x7913ddd4, (q31_t)0xd679f1c2, - (q31_t)0x7911d3e2, (q31_t)0xd674004e, (q31_t)0x790fc9a4, (q31_t)0xd66e0ef2, (q31_t)0x790dbf1d, (q31_t)0xd6681db1, - (q31_t)0x790bb44a, (q31_t)0xd6622c89, - (q31_t)0x7909a92d, (q31_t)0xd65c3b7b, (q31_t)0x79079dc5, (q31_t)0xd6564a87, (q31_t)0x79059212, (q31_t)0xd65059ac, - (q31_t)0x79038615, (q31_t)0xd64a68eb, - (q31_t)0x790179cd, (q31_t)0xd6447844, (q31_t)0x78ff6d3b, (q31_t)0xd63e87b6, (q31_t)0x78fd605d, (q31_t)0xd6389742, - (q31_t)0x78fb5336, (q31_t)0xd632a6e8, - (q31_t)0x78f945c3, (q31_t)0xd62cb6a8, (q31_t)0x78f73806, (q31_t)0xd626c681, (q31_t)0x78f529fe, (q31_t)0xd620d675, - (q31_t)0x78f31bac, (q31_t)0xd61ae682, - (q31_t)0x78f10d0f, (q31_t)0xd614f6a9, (q31_t)0x78eefe28, (q31_t)0xd60f06ea, (q31_t)0x78eceef6, (q31_t)0xd6091745, - (q31_t)0x78eadf79, (q31_t)0xd60327b9, - (q31_t)0x78e8cfb2, (q31_t)0xd5fd3848, (q31_t)0x78e6bfa0, (q31_t)0xd5f748f0, (q31_t)0x78e4af44, (q31_t)0xd5f159b3, - (q31_t)0x78e29e9d, (q31_t)0xd5eb6a8f, - (q31_t)0x78e08dab, (q31_t)0xd5e57b85, (q31_t)0x78de7c6f, (q31_t)0xd5df8c96, (q31_t)0x78dc6ae8, (q31_t)0xd5d99dc0, - (q31_t)0x78da5917, (q31_t)0xd5d3af04, - (q31_t)0x78d846fb, (q31_t)0xd5cdc062, (q31_t)0x78d63495, (q31_t)0xd5c7d1db, (q31_t)0x78d421e4, (q31_t)0xd5c1e36d, - (q31_t)0x78d20ee9, (q31_t)0xd5bbf519, - (q31_t)0x78cffba3, (q31_t)0xd5b606e0, (q31_t)0x78cde812, (q31_t)0xd5b018c0, (q31_t)0x78cbd437, (q31_t)0xd5aa2abb, - (q31_t)0x78c9c012, (q31_t)0xd5a43cd0, - (q31_t)0x78c7aba2, (q31_t)0xd59e4eff, (q31_t)0x78c596e7, (q31_t)0xd5986148, (q31_t)0x78c381e2, (q31_t)0xd59273ab, - (q31_t)0x78c16c93, (q31_t)0xd58c8628, - (q31_t)0x78bf56f9, (q31_t)0xd58698c0, (q31_t)0x78bd4114, (q31_t)0xd580ab72, (q31_t)0x78bb2ae5, (q31_t)0xd57abe3d, - (q31_t)0x78b9146c, (q31_t)0xd574d124, - (q31_t)0x78b6fda8, (q31_t)0xd56ee424, (q31_t)0x78b4e69a, (q31_t)0xd568f73f, (q31_t)0x78b2cf41, (q31_t)0xd5630a74, - (q31_t)0x78b0b79e, (q31_t)0xd55d1dc3, - (q31_t)0x78ae9fb0, (q31_t)0xd557312d, (q31_t)0x78ac8778, (q31_t)0xd55144b0, (q31_t)0x78aa6ef5, (q31_t)0xd54b584f, - (q31_t)0x78a85628, (q31_t)0xd5456c07, - (q31_t)0x78a63d11, (q31_t)0xd53f7fda, (q31_t)0x78a423af, (q31_t)0xd53993c7, (q31_t)0x78a20a03, (q31_t)0xd533a7cf, - (q31_t)0x789ff00c, (q31_t)0xd52dbbf1, - (q31_t)0x789dd5cb, (q31_t)0xd527d02e, (q31_t)0x789bbb3f, (q31_t)0xd521e484, (q31_t)0x7899a06a, (q31_t)0xd51bf8f6, - (q31_t)0x78978549, (q31_t)0xd5160d82, - (q31_t)0x789569df, (q31_t)0xd5102228, (q31_t)0x78934e2a, (q31_t)0xd50a36e9, (q31_t)0x7891322a, (q31_t)0xd5044bc4, - (q31_t)0x788f15e0, (q31_t)0xd4fe60ba, - (q31_t)0x788cf94c, (q31_t)0xd4f875ca, (q31_t)0x788adc6e, (q31_t)0xd4f28af5, (q31_t)0x7888bf45, (q31_t)0xd4eca03a, - (q31_t)0x7886a1d1, (q31_t)0xd4e6b59a, - (q31_t)0x78848414, (q31_t)0xd4e0cb15, (q31_t)0x7882660c, (q31_t)0xd4dae0aa, (q31_t)0x788047ba, (q31_t)0xd4d4f65a, - (q31_t)0x787e291d, (q31_t)0xd4cf0c24, - (q31_t)0x787c0a36, (q31_t)0xd4c92209, (q31_t)0x7879eb05, (q31_t)0xd4c33809, (q31_t)0x7877cb89, (q31_t)0xd4bd4e23, - (q31_t)0x7875abc3, (q31_t)0xd4b76458, - (q31_t)0x78738bb3, (q31_t)0xd4b17aa8, (q31_t)0x78716b59, (q31_t)0xd4ab9112, (q31_t)0x786f4ab4, (q31_t)0xd4a5a798, - (q31_t)0x786d29c5, (q31_t)0xd49fbe37, - (q31_t)0x786b088c, (q31_t)0xd499d4f2, (q31_t)0x7868e708, (q31_t)0xd493ebc8, (q31_t)0x7866c53a, (q31_t)0xd48e02b8, - (q31_t)0x7864a322, (q31_t)0xd48819c3, - (q31_t)0x786280bf, (q31_t)0xd48230e9, (q31_t)0x78605e13, (q31_t)0xd47c4829, (q31_t)0x785e3b1c, (q31_t)0xd4765f85, - (q31_t)0x785c17db, (q31_t)0xd47076fb, - (q31_t)0x7859f44f, (q31_t)0xd46a8e8d, (q31_t)0x7857d079, (q31_t)0xd464a639, (q31_t)0x7855ac5a, (q31_t)0xd45ebe00, - (q31_t)0x785387ef, (q31_t)0xd458d5e2, - (q31_t)0x7851633b, (q31_t)0xd452eddf, (q31_t)0x784f3e3c, (q31_t)0xd44d05f6, (q31_t)0x784d18f4, (q31_t)0xd4471e29, - (q31_t)0x784af361, (q31_t)0xd4413677, - (q31_t)0x7848cd83, (q31_t)0xd43b4ee0, (q31_t)0x7846a75c, (q31_t)0xd4356763, (q31_t)0x784480ea, (q31_t)0xd42f8002, - (q31_t)0x78425a2f, (q31_t)0xd42998bc, - (q31_t)0x78403329, (q31_t)0xd423b191, (q31_t)0x783e0bd9, (q31_t)0xd41dca81, (q31_t)0x783be43e, (q31_t)0xd417e38c, - (q31_t)0x7839bc5a, (q31_t)0xd411fcb2, - (q31_t)0x7837942b, (q31_t)0xd40c15f3, (q31_t)0x78356bb2, (q31_t)0xd4062f4f, (q31_t)0x783342ef, (q31_t)0xd40048c6, - (q31_t)0x783119e2, (q31_t)0xd3fa6259, - (q31_t)0x782ef08b, (q31_t)0xd3f47c06, (q31_t)0x782cc6ea, (q31_t)0xd3ee95cf, (q31_t)0x782a9cfe, (q31_t)0xd3e8afb3, - (q31_t)0x782872c8, (q31_t)0xd3e2c9b2, - (q31_t)0x78264849, (q31_t)0xd3dce3cd, (q31_t)0x78241d7f, (q31_t)0xd3d6fe03, (q31_t)0x7821f26b, (q31_t)0xd3d11853, - (q31_t)0x781fc70d, (q31_t)0xd3cb32c0, - (q31_t)0x781d9b65, (q31_t)0xd3c54d47, (q31_t)0x781b6f72, (q31_t)0xd3bf67ea, (q31_t)0x78194336, (q31_t)0xd3b982a8, - (q31_t)0x781716b0, (q31_t)0xd3b39d81, - (q31_t)0x7814e9df, (q31_t)0xd3adb876, (q31_t)0x7812bcc4, (q31_t)0xd3a7d385, (q31_t)0x78108f60, (q31_t)0xd3a1eeb1, - (q31_t)0x780e61b1, (q31_t)0xd39c09f7, - (q31_t)0x780c33b8, (q31_t)0xd396255a, (q31_t)0x780a0575, (q31_t)0xd39040d7, (q31_t)0x7807d6e9, (q31_t)0xd38a5c70, - (q31_t)0x7805a812, (q31_t)0xd3847824, - (q31_t)0x780378f1, (q31_t)0xd37e93f4, (q31_t)0x78014986, (q31_t)0xd378afdf, (q31_t)0x77ff19d1, (q31_t)0xd372cbe6, - (q31_t)0x77fce9d2, (q31_t)0xd36ce808, - (q31_t)0x77fab989, (q31_t)0xd3670446, (q31_t)0x77f888f6, (q31_t)0xd361209f, (q31_t)0x77f65819, (q31_t)0xd35b3d13, - (q31_t)0x77f426f2, (q31_t)0xd35559a4, - (q31_t)0x77f1f581, (q31_t)0xd34f764f, (q31_t)0x77efc3c5, (q31_t)0xd3499317, (q31_t)0x77ed91c0, (q31_t)0xd343affa, - (q31_t)0x77eb5f71, (q31_t)0xd33dccf8, - (q31_t)0x77e92cd9, (q31_t)0xd337ea12, (q31_t)0x77e6f9f6, (q31_t)0xd3320748, (q31_t)0x77e4c6c9, (q31_t)0xd32c2499, - (q31_t)0x77e29352, (q31_t)0xd3264206, - (q31_t)0x77e05f91, (q31_t)0xd3205f8f, (q31_t)0x77de2b86, (q31_t)0xd31a7d33, (q31_t)0x77dbf732, (q31_t)0xd3149af3, - (q31_t)0x77d9c293, (q31_t)0xd30eb8cf, - (q31_t)0x77d78daa, (q31_t)0xd308d6c7, (q31_t)0x77d55878, (q31_t)0xd302f4da, (q31_t)0x77d322fc, (q31_t)0xd2fd1309, - (q31_t)0x77d0ed35, (q31_t)0xd2f73154, - (q31_t)0x77ceb725, (q31_t)0xd2f14fba, (q31_t)0x77cc80cb, (q31_t)0xd2eb6e3c, (q31_t)0x77ca4a27, (q31_t)0xd2e58cdb, - (q31_t)0x77c81339, (q31_t)0xd2dfab95, - (q31_t)0x77c5dc01, (q31_t)0xd2d9ca6a, (q31_t)0x77c3a47f, (q31_t)0xd2d3e95c, (q31_t)0x77c16cb4, (q31_t)0xd2ce0869, - (q31_t)0x77bf349f, (q31_t)0xd2c82793, - (q31_t)0x77bcfc3f, (q31_t)0xd2c246d8, (q31_t)0x77bac396, (q31_t)0xd2bc6639, (q31_t)0x77b88aa3, (q31_t)0xd2b685b6, - (q31_t)0x77b65166, (q31_t)0xd2b0a54f, - (q31_t)0x77b417df, (q31_t)0xd2aac504, (q31_t)0x77b1de0f, (q31_t)0xd2a4e4d5, (q31_t)0x77afa3f5, (q31_t)0xd29f04c2, - (q31_t)0x77ad6990, (q31_t)0xd29924cb, - (q31_t)0x77ab2ee2, (q31_t)0xd29344f0, (q31_t)0x77a8f3ea, (q31_t)0xd28d6531, (q31_t)0x77a6b8a9, (q31_t)0xd287858e, - (q31_t)0x77a47d1d, (q31_t)0xd281a607, - (q31_t)0x77a24148, (q31_t)0xd27bc69c, (q31_t)0x77a00529, (q31_t)0xd275e74d, (q31_t)0x779dc8c0, (q31_t)0xd270081b, - (q31_t)0x779b8c0e, (q31_t)0xd26a2904, - (q31_t)0x77994f11, (q31_t)0xd2644a0a, (q31_t)0x779711cb, (q31_t)0xd25e6b2b, (q31_t)0x7794d43b, (q31_t)0xd2588c69, - (q31_t)0x77929661, (q31_t)0xd252adc3, - (q31_t)0x7790583e, (q31_t)0xd24ccf39, (q31_t)0x778e19d0, (q31_t)0xd246f0cb, (q31_t)0x778bdb19, (q31_t)0xd241127a, - (q31_t)0x77899c19, (q31_t)0xd23b3444, - (q31_t)0x77875cce, (q31_t)0xd235562b, (q31_t)0x77851d3a, (q31_t)0xd22f782f, (q31_t)0x7782dd5c, (q31_t)0xd2299a4e, - (q31_t)0x77809d35, (q31_t)0xd223bc8a, - (q31_t)0x777e5cc3, (q31_t)0xd21ddee2, (q31_t)0x777c1c08, (q31_t)0xd2180156, (q31_t)0x7779db03, (q31_t)0xd21223e7, - (q31_t)0x777799b5, (q31_t)0xd20c4694, - (q31_t)0x7775581d, (q31_t)0xd206695d, (q31_t)0x7773163b, (q31_t)0xd2008c43, (q31_t)0x7770d40f, (q31_t)0xd1faaf45, - (q31_t)0x776e919a, (q31_t)0xd1f4d263, - (q31_t)0x776c4edb, (q31_t)0xd1eef59e, (q31_t)0x776a0bd3, (q31_t)0xd1e918f5, (q31_t)0x7767c880, (q31_t)0xd1e33c69, - (q31_t)0x776584e5, (q31_t)0xd1dd5ff9, - (q31_t)0x776340ff, (q31_t)0xd1d783a6, (q31_t)0x7760fcd0, (q31_t)0xd1d1a76f, (q31_t)0x775eb857, (q31_t)0xd1cbcb54, - (q31_t)0x775c7395, (q31_t)0xd1c5ef56, - (q31_t)0x775a2e89, (q31_t)0xd1c01375, (q31_t)0x7757e933, (q31_t)0xd1ba37b0, (q31_t)0x7755a394, (q31_t)0xd1b45c08, - (q31_t)0x77535dab, (q31_t)0xd1ae807c, - (q31_t)0x77511778, (q31_t)0xd1a8a50d, (q31_t)0x774ed0fc, (q31_t)0xd1a2c9ba, (q31_t)0x774c8a36, (q31_t)0xd19cee84, - (q31_t)0x774a4327, (q31_t)0xd197136b, - (q31_t)0x7747fbce, (q31_t)0xd191386e, (q31_t)0x7745b42c, (q31_t)0xd18b5d8e, (q31_t)0x77436c40, (q31_t)0xd18582ca, - (q31_t)0x7741240a, (q31_t)0xd17fa823, - (q31_t)0x773edb8b, (q31_t)0xd179cd99, (q31_t)0x773c92c2, (q31_t)0xd173f32c, (q31_t)0x773a49b0, (q31_t)0xd16e18db, - (q31_t)0x77380054, (q31_t)0xd1683ea7, - (q31_t)0x7735b6af, (q31_t)0xd1626490, (q31_t)0x77336cc0, (q31_t)0xd15c8a95, (q31_t)0x77312287, (q31_t)0xd156b0b7, - (q31_t)0x772ed805, (q31_t)0xd150d6f6, - (q31_t)0x772c8d3a, (q31_t)0xd14afd52, (q31_t)0x772a4225, (q31_t)0xd14523cb, (q31_t)0x7727f6c6, (q31_t)0xd13f4a60, - (q31_t)0x7725ab1f, (q31_t)0xd1397113, - (q31_t)0x77235f2d, (q31_t)0xd13397e2, (q31_t)0x772112f2, (q31_t)0xd12dbece, (q31_t)0x771ec66e, (q31_t)0xd127e5d7, - (q31_t)0x771c79a0, (q31_t)0xd1220cfc, - (q31_t)0x771a2c88, (q31_t)0xd11c343f, (q31_t)0x7717df27, (q31_t)0xd1165b9f, (q31_t)0x7715917d, (q31_t)0xd110831b, - (q31_t)0x77134389, (q31_t)0xd10aaab5, - (q31_t)0x7710f54c, (q31_t)0xd104d26b, (q31_t)0x770ea6c5, (q31_t)0xd0fefa3f, (q31_t)0x770c57f5, (q31_t)0xd0f9222f, - (q31_t)0x770a08dc, (q31_t)0xd0f34a3d, - (q31_t)0x7707b979, (q31_t)0xd0ed7267, (q31_t)0x770569cc, (q31_t)0xd0e79aaf, (q31_t)0x770319d6, (q31_t)0xd0e1c313, - (q31_t)0x7700c997, (q31_t)0xd0dbeb95, - (q31_t)0x76fe790e, (q31_t)0xd0d61434, (q31_t)0x76fc283c, (q31_t)0xd0d03cf0, (q31_t)0x76f9d721, (q31_t)0xd0ca65c9, - (q31_t)0x76f785bc, (q31_t)0xd0c48ebf, - (q31_t)0x76f5340e, (q31_t)0xd0beb7d2, (q31_t)0x76f2e216, (q31_t)0xd0b8e102, (q31_t)0x76f08fd5, (q31_t)0xd0b30a50, - (q31_t)0x76ee3d4b, (q31_t)0xd0ad33ba, - (q31_t)0x76ebea77, (q31_t)0xd0a75d42, (q31_t)0x76e9975a, (q31_t)0xd0a186e7, (q31_t)0x76e743f4, (q31_t)0xd09bb0aa, - (q31_t)0x76e4f044, (q31_t)0xd095da89, - (q31_t)0x76e29c4b, (q31_t)0xd0900486, (q31_t)0x76e04808, (q31_t)0xd08a2ea0, (q31_t)0x76ddf37c, (q31_t)0xd08458d7, - (q31_t)0x76db9ea7, (q31_t)0xd07e832c, - (q31_t)0x76d94989, (q31_t)0xd078ad9e, (q31_t)0x76d6f421, (q31_t)0xd072d82d, (q31_t)0x76d49e70, (q31_t)0xd06d02da, - (q31_t)0x76d24876, (q31_t)0xd0672da3, - (q31_t)0x76cff232, (q31_t)0xd061588b, (q31_t)0x76cd9ba5, (q31_t)0xd05b838f, (q31_t)0x76cb44cf, (q31_t)0xd055aeb1, - (q31_t)0x76c8edb0, (q31_t)0xd04fd9f1, - (q31_t)0x76c69647, (q31_t)0xd04a054e, (q31_t)0x76c43e95, (q31_t)0xd04430c8, (q31_t)0x76c1e699, (q31_t)0xd03e5c60, - (q31_t)0x76bf8e55, (q31_t)0xd0388815, - (q31_t)0x76bd35c7, (q31_t)0xd032b3e7, (q31_t)0x76badcf0, (q31_t)0xd02cdfd8, (q31_t)0x76b883d0, (q31_t)0xd0270be5, - (q31_t)0x76b62a66, (q31_t)0xd0213810, - (q31_t)0x76b3d0b4, (q31_t)0xd01b6459, (q31_t)0x76b176b8, (q31_t)0xd01590bf, (q31_t)0x76af1c72, (q31_t)0xd00fbd43, - (q31_t)0x76acc1e4, (q31_t)0xd009e9e4, - (q31_t)0x76aa670d, (q31_t)0xd00416a3, (q31_t)0x76a80bec, (q31_t)0xcffe4380, (q31_t)0x76a5b082, (q31_t)0xcff8707a, - (q31_t)0x76a354cf, (q31_t)0xcff29d92, - (q31_t)0x76a0f8d2, (q31_t)0xcfeccac7, (q31_t)0x769e9c8d, (q31_t)0xcfe6f81a, (q31_t)0x769c3ffe, (q31_t)0xcfe1258b, - (q31_t)0x7699e326, (q31_t)0xcfdb531a, - (q31_t)0x76978605, (q31_t)0xcfd580c6, (q31_t)0x7695289b, (q31_t)0xcfcfae8f, (q31_t)0x7692cae8, (q31_t)0xcfc9dc77, - (q31_t)0x76906ceb, (q31_t)0xcfc40a7c, - (q31_t)0x768e0ea6, (q31_t)0xcfbe389f, (q31_t)0x768bb017, (q31_t)0xcfb866e0, (q31_t)0x7689513f, (q31_t)0xcfb2953f, - (q31_t)0x7686f21e, (q31_t)0xcfacc3bb, - (q31_t)0x768492b4, (q31_t)0xcfa6f255, (q31_t)0x76823301, (q31_t)0xcfa1210d, (q31_t)0x767fd304, (q31_t)0xcf9b4fe3, - (q31_t)0x767d72bf, (q31_t)0xcf957ed7, - (q31_t)0x767b1231, (q31_t)0xcf8fade9, (q31_t)0x7678b159, (q31_t)0xcf89dd18, (q31_t)0x76765038, (q31_t)0xcf840c65, - (q31_t)0x7673eecf, (q31_t)0xcf7e3bd1, - (q31_t)0x76718d1c, (q31_t)0xcf786b5a, (q31_t)0x766f2b20, (q31_t)0xcf729b01, (q31_t)0x766cc8db, (q31_t)0xcf6ccac6, - (q31_t)0x766a664d, (q31_t)0xcf66faa9, - (q31_t)0x76680376, (q31_t)0xcf612aaa, (q31_t)0x7665a056, (q31_t)0xcf5b5ac9, (q31_t)0x76633ced, (q31_t)0xcf558b06, - (q31_t)0x7660d93b, (q31_t)0xcf4fbb61, - (q31_t)0x765e7540, (q31_t)0xcf49ebda, (q31_t)0x765c10fc, (q31_t)0xcf441c71, (q31_t)0x7659ac6f, (q31_t)0xcf3e4d26, - (q31_t)0x76574798, (q31_t)0xcf387dfa, - (q31_t)0x7654e279, (q31_t)0xcf32aeeb, (q31_t)0x76527d11, (q31_t)0xcf2cdffa, (q31_t)0x76501760, (q31_t)0xcf271128, - (q31_t)0x764db166, (q31_t)0xcf214274, - (q31_t)0x764b4b23, (q31_t)0xcf1b73de, (q31_t)0x7648e497, (q31_t)0xcf15a566, (q31_t)0x76467dc2, (q31_t)0xcf0fd70c, - (q31_t)0x764416a4, (q31_t)0xcf0a08d0, - (q31_t)0x7641af3d, (q31_t)0xcf043ab3, (q31_t)0x763f478d, (q31_t)0xcefe6cb3, (q31_t)0x763cdf94, (q31_t)0xcef89ed2, - (q31_t)0x763a7752, (q31_t)0xcef2d110, - (q31_t)0x76380ec8, (q31_t)0xceed036b, (q31_t)0x7635a5f4, (q31_t)0xcee735e5, (q31_t)0x76333cd8, (q31_t)0xcee1687d, - (q31_t)0x7630d372, (q31_t)0xcedb9b33, - (q31_t)0x762e69c4, (q31_t)0xced5ce08, (q31_t)0x762bffcd, (q31_t)0xced000fb, (q31_t)0x7629958c, (q31_t)0xceca340c, - (q31_t)0x76272b03, (q31_t)0xcec4673c, - (q31_t)0x7624c031, (q31_t)0xcebe9a8a, (q31_t)0x76225517, (q31_t)0xceb8cdf7, (q31_t)0x761fe9b3, (q31_t)0xceb30181, - (q31_t)0x761d7e06, (q31_t)0xcead352b, - (q31_t)0x761b1211, (q31_t)0xcea768f2, (q31_t)0x7618a5d3, (q31_t)0xcea19cd8, (q31_t)0x7616394c, (q31_t)0xce9bd0dd, - (q31_t)0x7613cc7c, (q31_t)0xce960500, - (q31_t)0x76115f63, (q31_t)0xce903942, (q31_t)0x760ef201, (q31_t)0xce8a6da2, (q31_t)0x760c8457, (q31_t)0xce84a220, - (q31_t)0x760a1664, (q31_t)0xce7ed6bd, - (q31_t)0x7607a828, (q31_t)0xce790b79, (q31_t)0x760539a3, (q31_t)0xce734053, (q31_t)0x7602cad5, (q31_t)0xce6d754c, - (q31_t)0x76005bbf, (q31_t)0xce67aa63, - (q31_t)0x75fdec60, (q31_t)0xce61df99, (q31_t)0x75fb7cb8, (q31_t)0xce5c14ed, (q31_t)0x75f90cc7, (q31_t)0xce564a60, - (q31_t)0x75f69c8d, (q31_t)0xce507ff2, - (q31_t)0x75f42c0b, (q31_t)0xce4ab5a2, (q31_t)0x75f1bb40, (q31_t)0xce44eb71, (q31_t)0x75ef4a2c, (q31_t)0xce3f215f, - (q31_t)0x75ecd8cf, (q31_t)0xce39576c, - (q31_t)0x75ea672a, (q31_t)0xce338d97, (q31_t)0x75e7f53c, (q31_t)0xce2dc3e1, (q31_t)0x75e58305, (q31_t)0xce27fa49, - (q31_t)0x75e31086, (q31_t)0xce2230d0, - (q31_t)0x75e09dbd, (q31_t)0xce1c6777, (q31_t)0x75de2aac, (q31_t)0xce169e3b, (q31_t)0x75dbb753, (q31_t)0xce10d51f, - (q31_t)0x75d943b0, (q31_t)0xce0b0c21, - (q31_t)0x75d6cfc5, (q31_t)0xce054343, (q31_t)0x75d45b92, (q31_t)0xcdff7a83, (q31_t)0x75d1e715, (q31_t)0xcdf9b1e2, - (q31_t)0x75cf7250, (q31_t)0xcdf3e95f, - (q31_t)0x75ccfd42, (q31_t)0xcdee20fc, (q31_t)0x75ca87ec, (q31_t)0xcde858b8, (q31_t)0x75c8124d, (q31_t)0xcde29092, - (q31_t)0x75c59c65, (q31_t)0xcddcc88b, - (q31_t)0x75c32634, (q31_t)0xcdd700a4, (q31_t)0x75c0afbb, (q31_t)0xcdd138db, (q31_t)0x75be38fa, (q31_t)0xcdcb7131, - (q31_t)0x75bbc1ef, (q31_t)0xcdc5a9a6, - (q31_t)0x75b94a9c, (q31_t)0xcdbfe23a, (q31_t)0x75b6d301, (q31_t)0xcdba1aee, (q31_t)0x75b45b1d, (q31_t)0xcdb453c0, - (q31_t)0x75b1e2f0, (q31_t)0xcdae8cb1, - (q31_t)0x75af6a7b, (q31_t)0xcda8c5c1, (q31_t)0x75acf1bd, (q31_t)0xcda2fef0, (q31_t)0x75aa78b6, (q31_t)0xcd9d383f, - (q31_t)0x75a7ff67, (q31_t)0xcd9771ac, - (q31_t)0x75a585cf, (q31_t)0xcd91ab39, (q31_t)0x75a30bef, (q31_t)0xcd8be4e4, (q31_t)0x75a091c6, (q31_t)0xcd861eaf, - (q31_t)0x759e1755, (q31_t)0xcd805899, - (q31_t)0x759b9c9b, (q31_t)0xcd7a92a2, (q31_t)0x75992198, (q31_t)0xcd74ccca, (q31_t)0x7596a64d, (q31_t)0xcd6f0711, - (q31_t)0x75942ab9, (q31_t)0xcd694178, - (q31_t)0x7591aedd, (q31_t)0xcd637bfe, (q31_t)0x758f32b9, (q31_t)0xcd5db6a3, (q31_t)0x758cb64c, (q31_t)0xcd57f167, - (q31_t)0x758a3996, (q31_t)0xcd522c4a, - (q31_t)0x7587bc98, (q31_t)0xcd4c674d, (q31_t)0x75853f51, (q31_t)0xcd46a26f, (q31_t)0x7582c1c2, (q31_t)0xcd40ddb0, - (q31_t)0x758043ea, (q31_t)0xcd3b1911, - (q31_t)0x757dc5ca, (q31_t)0xcd355491, (q31_t)0x757b4762, (q31_t)0xcd2f9030, (q31_t)0x7578c8b0, (q31_t)0xcd29cbee, - (q31_t)0x757649b7, (q31_t)0xcd2407cc, - (q31_t)0x7573ca75, (q31_t)0xcd1e43ca, (q31_t)0x75714aea, (q31_t)0xcd187fe6, (q31_t)0x756ecb18, (q31_t)0xcd12bc22, - (q31_t)0x756c4afc, (q31_t)0xcd0cf87e, - (q31_t)0x7569ca99, (q31_t)0xcd0734f9, (q31_t)0x756749ec, (q31_t)0xcd017193, (q31_t)0x7564c8f8, (q31_t)0xccfbae4d, - (q31_t)0x756247bb, (q31_t)0xccf5eb26, - (q31_t)0x755fc635, (q31_t)0xccf0281f, (q31_t)0x755d4467, (q31_t)0xccea6538, (q31_t)0x755ac251, (q31_t)0xcce4a26f, - (q31_t)0x75583ff3, (q31_t)0xccdedfc7, - (q31_t)0x7555bd4c, (q31_t)0xccd91d3d, (q31_t)0x75533a5c, (q31_t)0xccd35ad4, (q31_t)0x7550b725, (q31_t)0xcccd988a, - (q31_t)0x754e33a4, (q31_t)0xccc7d65f, - (q31_t)0x754bafdc, (q31_t)0xccc21455, (q31_t)0x75492bcb, (q31_t)0xccbc5269, (q31_t)0x7546a772, (q31_t)0xccb6909e, - (q31_t)0x754422d0, (q31_t)0xccb0cef2, - (q31_t)0x75419de7, (q31_t)0xccab0d65, (q31_t)0x753f18b4, (q31_t)0xcca54bf9, (q31_t)0x753c933a, (q31_t)0xcc9f8aac, - (q31_t)0x753a0d77, (q31_t)0xcc99c97e, - (q31_t)0x7537876c, (q31_t)0xcc940871, (q31_t)0x75350118, (q31_t)0xcc8e4783, (q31_t)0x75327a7d, (q31_t)0xcc8886b5, - (q31_t)0x752ff399, (q31_t)0xcc82c607, - (q31_t)0x752d6c6c, (q31_t)0xcc7d0578, (q31_t)0x752ae4f8, (q31_t)0xcc774509, (q31_t)0x75285d3b, (q31_t)0xcc7184ba, - (q31_t)0x7525d536, (q31_t)0xcc6bc48b, - (q31_t)0x75234ce8, (q31_t)0xcc66047b, (q31_t)0x7520c453, (q31_t)0xcc60448c, (q31_t)0x751e3b75, (q31_t)0xcc5a84bc, - (q31_t)0x751bb24f, (q31_t)0xcc54c50c, - (q31_t)0x751928e0, (q31_t)0xcc4f057c, (q31_t)0x75169f2a, (q31_t)0xcc49460c, (q31_t)0x7514152b, (q31_t)0xcc4386bc, - (q31_t)0x75118ae4, (q31_t)0xcc3dc78b, - (q31_t)0x750f0054, (q31_t)0xcc38087b, (q31_t)0x750c757d, (q31_t)0xcc32498a, (q31_t)0x7509ea5d, (q31_t)0xcc2c8aba, - (q31_t)0x75075ef5, (q31_t)0xcc26cc09, - (q31_t)0x7504d345, (q31_t)0xcc210d79, (q31_t)0x7502474d, (q31_t)0xcc1b4f08, (q31_t)0x74ffbb0d, (q31_t)0xcc1590b8, - (q31_t)0x74fd2e84, (q31_t)0xcc0fd287, - (q31_t)0x74faa1b3, (q31_t)0xcc0a1477, (q31_t)0x74f8149a, (q31_t)0xcc045686, (q31_t)0x74f58739, (q31_t)0xcbfe98b6, - (q31_t)0x74f2f990, (q31_t)0xcbf8db05, - (q31_t)0x74f06b9e, (q31_t)0xcbf31d75, (q31_t)0x74eddd65, (q31_t)0xcbed6005, (q31_t)0x74eb4ee3, (q31_t)0xcbe7a2b5, - (q31_t)0x74e8c01a, (q31_t)0xcbe1e585, - (q31_t)0x74e63108, (q31_t)0xcbdc2876, (q31_t)0x74e3a1ae, (q31_t)0xcbd66b86, (q31_t)0x74e1120c, (q31_t)0xcbd0aeb7, - (q31_t)0x74de8221, (q31_t)0xcbcaf208, - (q31_t)0x74dbf1ef, (q31_t)0xcbc53579, (q31_t)0x74d96175, (q31_t)0xcbbf790a, (q31_t)0x74d6d0b2, (q31_t)0xcbb9bcbb, - (q31_t)0x74d43fa8, (q31_t)0xcbb4008d, - (q31_t)0x74d1ae55, (q31_t)0xcbae447f, (q31_t)0x74cf1cbb, (q31_t)0xcba88891, (q31_t)0x74cc8ad8, (q31_t)0xcba2ccc4, - (q31_t)0x74c9f8ad, (q31_t)0xcb9d1117, - (q31_t)0x74c7663a, (q31_t)0xcb97558a, (q31_t)0x74c4d380, (q31_t)0xcb919a1d, (q31_t)0x74c2407d, (q31_t)0xcb8bded1, - (q31_t)0x74bfad32, (q31_t)0xcb8623a5, - (q31_t)0x74bd199f, (q31_t)0xcb80689a, (q31_t)0x74ba85c4, (q31_t)0xcb7aadaf, (q31_t)0x74b7f1a1, (q31_t)0xcb74f2e4, - (q31_t)0x74b55d36, (q31_t)0xcb6f383a, - (q31_t)0x74b2c884, (q31_t)0xcb697db0, (q31_t)0x74b03389, (q31_t)0xcb63c347, (q31_t)0x74ad9e46, (q31_t)0xcb5e08fe, - (q31_t)0x74ab08bb, (q31_t)0xcb584ed6, - (q31_t)0x74a872e8, (q31_t)0xcb5294ce, (q31_t)0x74a5dccd, (q31_t)0xcb4cdae6, (q31_t)0x74a3466b, (q31_t)0xcb47211f, - (q31_t)0x74a0afc0, (q31_t)0xcb416779, - (q31_t)0x749e18cd, (q31_t)0xcb3badf3, (q31_t)0x749b8193, (q31_t)0xcb35f48d, (q31_t)0x7498ea11, (q31_t)0xcb303b49, - (q31_t)0x74965246, (q31_t)0xcb2a8224, - (q31_t)0x7493ba34, (q31_t)0xcb24c921, (q31_t)0x749121da, (q31_t)0xcb1f103e, (q31_t)0x748e8938, (q31_t)0xcb19577b, - (q31_t)0x748bf04d, (q31_t)0xcb139ed9, - (q31_t)0x7489571c, (q31_t)0xcb0de658, (q31_t)0x7486bda2, (q31_t)0xcb082df8, (q31_t)0x748423e0, (q31_t)0xcb0275b8, - (q31_t)0x748189d7, (q31_t)0xcafcbd99, - (q31_t)0x747eef85, (q31_t)0xcaf7059a, (q31_t)0x747c54ec, (q31_t)0xcaf14dbd, (q31_t)0x7479ba0b, (q31_t)0xcaeb9600, - (q31_t)0x74771ee2, (q31_t)0xcae5de64, - (q31_t)0x74748371, (q31_t)0xcae026e8, (q31_t)0x7471e7b8, (q31_t)0xcada6f8d, (q31_t)0x746f4bb8, (q31_t)0xcad4b853, - (q31_t)0x746caf70, (q31_t)0xcacf013a, - (q31_t)0x746a12df, (q31_t)0xcac94a42, (q31_t)0x74677608, (q31_t)0xcac3936b, (q31_t)0x7464d8e8, (q31_t)0xcabddcb4, - (q31_t)0x74623b80, (q31_t)0xcab8261e, - (q31_t)0x745f9dd1, (q31_t)0xcab26fa9, (q31_t)0x745cffda, (q31_t)0xcaacb955, (q31_t)0x745a619b, (q31_t)0xcaa70322, - (q31_t)0x7457c314, (q31_t)0xcaa14d10, - (q31_t)0x74552446, (q31_t)0xca9b971e, (q31_t)0x74528530, (q31_t)0xca95e14e, (q31_t)0x744fe5d2, (q31_t)0xca902b9f, - (q31_t)0x744d462c, (q31_t)0xca8a7610, - (q31_t)0x744aa63f, (q31_t)0xca84c0a3, (q31_t)0x7448060a, (q31_t)0xca7f0b56, (q31_t)0x7445658d, (q31_t)0xca79562b, - (q31_t)0x7442c4c8, (q31_t)0xca73a120, - (q31_t)0x744023bc, (q31_t)0xca6dec37, (q31_t)0x743d8268, (q31_t)0xca68376e, (q31_t)0x743ae0cc, (q31_t)0xca6282c7, - (q31_t)0x74383ee9, (q31_t)0xca5cce40, - (q31_t)0x74359cbd, (q31_t)0xca5719db, (q31_t)0x7432fa4b, (q31_t)0xca516597, (q31_t)0x74305790, (q31_t)0xca4bb174, - (q31_t)0x742db48e, (q31_t)0xca45fd72, - (q31_t)0x742b1144, (q31_t)0xca404992, (q31_t)0x74286db3, (q31_t)0xca3a95d2, (q31_t)0x7425c9da, (q31_t)0xca34e234, - (q31_t)0x742325b9, (q31_t)0xca2f2eb6, - (q31_t)0x74208150, (q31_t)0xca297b5a, (q31_t)0x741ddca0, (q31_t)0xca23c820, (q31_t)0x741b37a9, (q31_t)0xca1e1506, - (q31_t)0x74189269, (q31_t)0xca18620e, - (q31_t)0x7415ece2, (q31_t)0xca12af37, (q31_t)0x74134714, (q31_t)0xca0cfc81, (q31_t)0x7410a0fe, (q31_t)0xca0749ec, - (q31_t)0x740dfaa0, (q31_t)0xca019779, - (q31_t)0x740b53fb, (q31_t)0xc9fbe527, (q31_t)0x7408ad0e, (q31_t)0xc9f632f6, (q31_t)0x740605d9, (q31_t)0xc9f080e7, - (q31_t)0x74035e5d, (q31_t)0xc9eacef9, - (q31_t)0x7400b69a, (q31_t)0xc9e51d2d, (q31_t)0x73fe0e8f, (q31_t)0xc9df6b81, (q31_t)0x73fb663c, (q31_t)0xc9d9b9f7, - (q31_t)0x73f8bda2, (q31_t)0xc9d4088f, - (q31_t)0x73f614c0, (q31_t)0xc9ce5748, (q31_t)0x73f36b97, (q31_t)0xc9c8a622, (q31_t)0x73f0c226, (q31_t)0xc9c2f51e, - (q31_t)0x73ee186e, (q31_t)0xc9bd443c, - (q31_t)0x73eb6e6e, (q31_t)0xc9b7937a, (q31_t)0x73e8c426, (q31_t)0xc9b1e2db, (q31_t)0x73e61997, (q31_t)0xc9ac325d, - (q31_t)0x73e36ec1, (q31_t)0xc9a68200, - (q31_t)0x73e0c3a3, (q31_t)0xc9a0d1c5, (q31_t)0x73de183e, (q31_t)0xc99b21ab, (q31_t)0x73db6c91, (q31_t)0xc99571b3, - (q31_t)0x73d8c09d, (q31_t)0xc98fc1dc, - (q31_t)0x73d61461, (q31_t)0xc98a1227, (q31_t)0x73d367de, (q31_t)0xc9846294, (q31_t)0x73d0bb13, (q31_t)0xc97eb322, - (q31_t)0x73ce0e01, (q31_t)0xc97903d2, - (q31_t)0x73cb60a8, (q31_t)0xc97354a4, (q31_t)0x73c8b307, (q31_t)0xc96da597, (q31_t)0x73c6051f, (q31_t)0xc967f6ac, - (q31_t)0x73c356ef, (q31_t)0xc96247e2, - (q31_t)0x73c0a878, (q31_t)0xc95c993a, (q31_t)0x73bdf9b9, (q31_t)0xc956eab4, (q31_t)0x73bb4ab3, (q31_t)0xc9513c50, - (q31_t)0x73b89b66, (q31_t)0xc94b8e0d, - (q31_t)0x73b5ebd1, (q31_t)0xc945dfec, (q31_t)0x73b33bf5, (q31_t)0xc94031ed, (q31_t)0x73b08bd1, (q31_t)0xc93a8410, - (q31_t)0x73addb67, (q31_t)0xc934d654, - (q31_t)0x73ab2ab4, (q31_t)0xc92f28ba, (q31_t)0x73a879bb, (q31_t)0xc9297b42, (q31_t)0x73a5c87a, (q31_t)0xc923cdec, - (q31_t)0x73a316f2, (q31_t)0xc91e20b8, - (q31_t)0x73a06522, (q31_t)0xc91873a5, (q31_t)0x739db30b, (q31_t)0xc912c6b5, (q31_t)0x739b00ad, (q31_t)0xc90d19e6, - (q31_t)0x73984e07, (q31_t)0xc9076d39, - (q31_t)0x73959b1b, (q31_t)0xc901c0ae, (q31_t)0x7392e7e6, (q31_t)0xc8fc1445, (q31_t)0x7390346b, (q31_t)0xc8f667fe, - (q31_t)0x738d80a8, (q31_t)0xc8f0bbd9, - (q31_t)0x738acc9e, (q31_t)0xc8eb0fd6, (q31_t)0x7388184d, (q31_t)0xc8e563f5, (q31_t)0x738563b5, (q31_t)0xc8dfb836, - (q31_t)0x7382aed5, (q31_t)0xc8da0c99, - (q31_t)0x737ff9ae, (q31_t)0xc8d4611d, (q31_t)0x737d4440, (q31_t)0xc8ceb5c4, (q31_t)0x737a8e8a, (q31_t)0xc8c90a8d, - (q31_t)0x7377d88d, (q31_t)0xc8c35f78, - (q31_t)0x73752249, (q31_t)0xc8bdb485, (q31_t)0x73726bbe, (q31_t)0xc8b809b4, (q31_t)0x736fb4ec, (q31_t)0xc8b25f06, - (q31_t)0x736cfdd2, (q31_t)0xc8acb479, - (q31_t)0x736a4671, (q31_t)0xc8a70a0e, (q31_t)0x73678ec9, (q31_t)0xc8a15fc6, (q31_t)0x7364d6da, (q31_t)0xc89bb5a0, - (q31_t)0x73621ea4, (q31_t)0xc8960b9c, - (q31_t)0x735f6626, (q31_t)0xc89061ba, (q31_t)0x735cad61, (q31_t)0xc88ab7fa, (q31_t)0x7359f456, (q31_t)0xc8850e5d, - (q31_t)0x73573b03, (q31_t)0xc87f64e2, - (q31_t)0x73548168, (q31_t)0xc879bb89, (q31_t)0x7351c787, (q31_t)0xc8741252, (q31_t)0x734f0d5f, (q31_t)0xc86e693d, - (q31_t)0x734c52ef, (q31_t)0xc868c04b, - (q31_t)0x73499838, (q31_t)0xc863177b, (q31_t)0x7346dd3a, (q31_t)0xc85d6ece, (q31_t)0x734421f6, (q31_t)0xc857c642, - (q31_t)0x7341666a, (q31_t)0xc8521dd9, - (q31_t)0x733eaa96, (q31_t)0xc84c7593, (q31_t)0x733bee7c, (q31_t)0xc846cd6e, (q31_t)0x7339321b, (q31_t)0xc841256d, - (q31_t)0x73367572, (q31_t)0xc83b7d8d, - (q31_t)0x7333b883, (q31_t)0xc835d5d0, (q31_t)0x7330fb4d, (q31_t)0xc8302e35, (q31_t)0x732e3dcf, (q31_t)0xc82a86bd, - (q31_t)0x732b800a, (q31_t)0xc824df67, - (q31_t)0x7328c1ff, (q31_t)0xc81f3834, (q31_t)0x732603ac, (q31_t)0xc8199123, (q31_t)0x73234512, (q31_t)0xc813ea35, - (q31_t)0x73208632, (q31_t)0xc80e4369, - (q31_t)0x731dc70a, (q31_t)0xc8089cbf, (q31_t)0x731b079b, (q31_t)0xc802f638, (q31_t)0x731847e5, (q31_t)0xc7fd4fd4, - (q31_t)0x731587e8, (q31_t)0xc7f7a992, - (q31_t)0x7312c7a5, (q31_t)0xc7f20373, (q31_t)0x7310071a, (q31_t)0xc7ec5d76, (q31_t)0x730d4648, (q31_t)0xc7e6b79c, - (q31_t)0x730a8530, (q31_t)0xc7e111e5, - (q31_t)0x7307c3d0, (q31_t)0xc7db6c50, (q31_t)0x73050229, (q31_t)0xc7d5c6de, (q31_t)0x7302403c, (q31_t)0xc7d0218e, - (q31_t)0x72ff7e07, (q31_t)0xc7ca7c61, - (q31_t)0x72fcbb8c, (q31_t)0xc7c4d757, (q31_t)0x72f9f8c9, (q31_t)0xc7bf3270, (q31_t)0x72f735c0, (q31_t)0xc7b98dab, - (q31_t)0x72f47270, (q31_t)0xc7b3e909, - (q31_t)0x72f1aed9, (q31_t)0xc7ae4489, (q31_t)0x72eeeafb, (q31_t)0xc7a8a02c, (q31_t)0x72ec26d6, (q31_t)0xc7a2fbf3, - (q31_t)0x72e9626a, (q31_t)0xc79d57db, - (q31_t)0x72e69db7, (q31_t)0xc797b3e7, (q31_t)0x72e3d8be, (q31_t)0xc7921015, (q31_t)0x72e1137d, (q31_t)0xc78c6c67, - (q31_t)0x72de4df6, (q31_t)0xc786c8db, - (q31_t)0x72db8828, (q31_t)0xc7812572, (q31_t)0x72d8c213, (q31_t)0xc77b822b, (q31_t)0x72d5fbb7, (q31_t)0xc775df08, - (q31_t)0x72d33514, (q31_t)0xc7703c08, - (q31_t)0x72d06e2b, (q31_t)0xc76a992a, (q31_t)0x72cda6fb, (q31_t)0xc764f66f, (q31_t)0x72cadf83, (q31_t)0xc75f53d7, - (q31_t)0x72c817c6, (q31_t)0xc759b163, - (q31_t)0x72c54fc1, (q31_t)0xc7540f11, (q31_t)0x72c28775, (q31_t)0xc74e6ce2, (q31_t)0x72bfbee3, (q31_t)0xc748cad6, - (q31_t)0x72bcf60a, (q31_t)0xc74328ed, - (q31_t)0x72ba2cea, (q31_t)0xc73d8727, (q31_t)0x72b76383, (q31_t)0xc737e584, (q31_t)0x72b499d6, (q31_t)0xc7324404, - (q31_t)0x72b1cfe1, (q31_t)0xc72ca2a7, - (q31_t)0x72af05a7, (q31_t)0xc727016d, (q31_t)0x72ac3b25, (q31_t)0xc7216056, (q31_t)0x72a9705c, (q31_t)0xc71bbf62, - (q31_t)0x72a6a54d, (q31_t)0xc7161e92, - (q31_t)0x72a3d9f7, (q31_t)0xc7107de4, (q31_t)0x72a10e5b, (q31_t)0xc70add5a, (q31_t)0x729e4277, (q31_t)0xc7053cf2, - (q31_t)0x729b764d, (q31_t)0xc6ff9cae, - (q31_t)0x7298a9dd, (q31_t)0xc6f9fc8d, (q31_t)0x7295dd25, (q31_t)0xc6f45c8f, (q31_t)0x72931027, (q31_t)0xc6eebcb5, - (q31_t)0x729042e3, (q31_t)0xc6e91cfd, - (q31_t)0x728d7557, (q31_t)0xc6e37d69, (q31_t)0x728aa785, (q31_t)0xc6ddddf8, (q31_t)0x7287d96c, (q31_t)0xc6d83eab, - (q31_t)0x72850b0d, (q31_t)0xc6d29f80, - (q31_t)0x72823c67, (q31_t)0xc6cd0079, (q31_t)0x727f6d7a, (q31_t)0xc6c76195, (q31_t)0x727c9e47, (q31_t)0xc6c1c2d4, - (q31_t)0x7279cecd, (q31_t)0xc6bc2437, - (q31_t)0x7276ff0d, (q31_t)0xc6b685bd, (q31_t)0x72742f05, (q31_t)0xc6b0e767, (q31_t)0x72715eb8, (q31_t)0xc6ab4933, - (q31_t)0x726e8e23, (q31_t)0xc6a5ab23, - (q31_t)0x726bbd48, (q31_t)0xc6a00d37, (q31_t)0x7268ec27, (q31_t)0xc69a6f6e, (q31_t)0x72661abf, (q31_t)0xc694d1c8, - (q31_t)0x72634910, (q31_t)0xc68f3446, - (q31_t)0x7260771b, (q31_t)0xc68996e7, (q31_t)0x725da4df, (q31_t)0xc683f9ab, (q31_t)0x725ad25d, (q31_t)0xc67e5c93, - (q31_t)0x7257ff94, (q31_t)0xc678bf9f, - (q31_t)0x72552c85, (q31_t)0xc67322ce, (q31_t)0x7252592f, (q31_t)0xc66d8620, (q31_t)0x724f8593, (q31_t)0xc667e996, - (q31_t)0x724cb1b0, (q31_t)0xc6624d30, - (q31_t)0x7249dd86, (q31_t)0xc65cb0ed, (q31_t)0x72470916, (q31_t)0xc65714cd, (q31_t)0x72443460, (q31_t)0xc65178d1, - (q31_t)0x72415f63, (q31_t)0xc64bdcf9, - (q31_t)0x723e8a20, (q31_t)0xc6464144, (q31_t)0x723bb496, (q31_t)0xc640a5b3, (q31_t)0x7238dec5, (q31_t)0xc63b0a46, - (q31_t)0x723608af, (q31_t)0xc6356efc, - (q31_t)0x72333251, (q31_t)0xc62fd3d6, (q31_t)0x72305bae, (q31_t)0xc62a38d4, (q31_t)0x722d84c4, (q31_t)0xc6249df5, - (q31_t)0x722aad93, (q31_t)0xc61f033a, - (q31_t)0x7227d61c, (q31_t)0xc61968a2, (q31_t)0x7224fe5f, (q31_t)0xc613ce2f, (q31_t)0x7222265b, (q31_t)0xc60e33df, - (q31_t)0x721f4e11, (q31_t)0xc60899b2, - (q31_t)0x721c7580, (q31_t)0xc602ffaa, (q31_t)0x72199ca9, (q31_t)0xc5fd65c5, (q31_t)0x7216c38c, (q31_t)0xc5f7cc04, - (q31_t)0x7213ea28, (q31_t)0xc5f23267, - (q31_t)0x7211107e, (q31_t)0xc5ec98ee, (q31_t)0x720e368d, (q31_t)0xc5e6ff98, (q31_t)0x720b5c57, (q31_t)0xc5e16667, - (q31_t)0x720881d9, (q31_t)0xc5dbcd59, - (q31_t)0x7205a716, (q31_t)0xc5d6346f, (q31_t)0x7202cc0c, (q31_t)0xc5d09ba9, (q31_t)0x71fff0bc, (q31_t)0xc5cb0307, - (q31_t)0x71fd1525, (q31_t)0xc5c56a89, - (q31_t)0x71fa3949, (q31_t)0xc5bfd22e, (q31_t)0x71f75d25, (q31_t)0xc5ba39f8, (q31_t)0x71f480bc, (q31_t)0xc5b4a1e5, - (q31_t)0x71f1a40c, (q31_t)0xc5af09f7, - (q31_t)0x71eec716, (q31_t)0xc5a9722c, (q31_t)0x71ebe9da, (q31_t)0xc5a3da86, (q31_t)0x71e90c57, (q31_t)0xc59e4303, - (q31_t)0x71e62e8f, (q31_t)0xc598aba5, - (q31_t)0x71e35080, (q31_t)0xc593146a, (q31_t)0x71e0722a, (q31_t)0xc58d7d54, (q31_t)0x71dd938f, (q31_t)0xc587e661, - (q31_t)0x71dab4ad, (q31_t)0xc5824f93, - (q31_t)0x71d7d585, (q31_t)0xc57cb8e9, (q31_t)0x71d4f617, (q31_t)0xc5772263, (q31_t)0x71d21662, (q31_t)0xc5718c00, - (q31_t)0x71cf3667, (q31_t)0xc56bf5c2, - (q31_t)0x71cc5626, (q31_t)0xc5665fa9, (q31_t)0x71c9759f, (q31_t)0xc560c9b3, (q31_t)0x71c694d2, (q31_t)0xc55b33e2, - (q31_t)0x71c3b3bf, (q31_t)0xc5559e34, - (q31_t)0x71c0d265, (q31_t)0xc55008ab, (q31_t)0x71bdf0c5, (q31_t)0xc54a7346, (q31_t)0x71bb0edf, (q31_t)0xc544de05, - (q31_t)0x71b82cb3, (q31_t)0xc53f48e9, - (q31_t)0x71b54a41, (q31_t)0xc539b3f1, (q31_t)0x71b26788, (q31_t)0xc5341f1d, (q31_t)0x71af848a, (q31_t)0xc52e8a6d, - (q31_t)0x71aca145, (q31_t)0xc528f5e1, - (q31_t)0x71a9bdba, (q31_t)0xc523617a, (q31_t)0x71a6d9e9, (q31_t)0xc51dcd37, (q31_t)0x71a3f5d2, (q31_t)0xc5183919, - (q31_t)0x71a11175, (q31_t)0xc512a51f, - (q31_t)0x719e2cd2, (q31_t)0xc50d1149, (q31_t)0x719b47e9, (q31_t)0xc5077d97, (q31_t)0x719862b9, (q31_t)0xc501ea0a, - (q31_t)0x71957d44, (q31_t)0xc4fc56a2, - (q31_t)0x71929789, (q31_t)0xc4f6c35d, (q31_t)0x718fb187, (q31_t)0xc4f1303d, (q31_t)0x718ccb3f, (q31_t)0xc4eb9d42, - (q31_t)0x7189e4b2, (q31_t)0xc4e60a6b, - (q31_t)0x7186fdde, (q31_t)0xc4e077b8, (q31_t)0x718416c4, (q31_t)0xc4dae52a, (q31_t)0x71812f65, (q31_t)0xc4d552c1, - (q31_t)0x717e47bf, (q31_t)0xc4cfc07c, - (q31_t)0x717b5fd3, (q31_t)0xc4ca2e5b, (q31_t)0x717877a1, (q31_t)0xc4c49c5f, (q31_t)0x71758f29, (q31_t)0xc4bf0a87, - (q31_t)0x7172a66c, (q31_t)0xc4b978d4, - (q31_t)0x716fbd68, (q31_t)0xc4b3e746, (q31_t)0x716cd41e, (q31_t)0xc4ae55dc, (q31_t)0x7169ea8f, (q31_t)0xc4a8c497, - (q31_t)0x716700b9, (q31_t)0xc4a33376, - (q31_t)0x7164169d, (q31_t)0xc49da27a, (q31_t)0x71612c3c, (q31_t)0xc49811a3, (q31_t)0x715e4194, (q31_t)0xc49280f0, - (q31_t)0x715b56a7, (q31_t)0xc48cf062, - (q31_t)0x71586b74, (q31_t)0xc4875ff9, (q31_t)0x71557ffa, (q31_t)0xc481cfb4, (q31_t)0x7152943b, (q31_t)0xc47c3f94, - (q31_t)0x714fa836, (q31_t)0xc476af98, - (q31_t)0x714cbbeb, (q31_t)0xc4711fc2, (q31_t)0x7149cf5a, (q31_t)0xc46b9010, (q31_t)0x7146e284, (q31_t)0xc4660083, - (q31_t)0x7143f567, (q31_t)0xc460711b, - (q31_t)0x71410805, (q31_t)0xc45ae1d7, (q31_t)0x713e1a5c, (q31_t)0xc45552b8, (q31_t)0x713b2c6e, (q31_t)0xc44fc3be, - (q31_t)0x71383e3a, (q31_t)0xc44a34e9, - (q31_t)0x71354fc0, (q31_t)0xc444a639, (q31_t)0x71326101, (q31_t)0xc43f17ad, (q31_t)0x712f71fb, (q31_t)0xc4398947, - (q31_t)0x712c82b0, (q31_t)0xc433fb05, - (q31_t)0x7129931f, (q31_t)0xc42e6ce8, (q31_t)0x7126a348, (q31_t)0xc428def0, (q31_t)0x7123b32b, (q31_t)0xc423511d, - (q31_t)0x7120c2c8, (q31_t)0xc41dc36f, - (q31_t)0x711dd220, (q31_t)0xc41835e6, (q31_t)0x711ae132, (q31_t)0xc412a882, (q31_t)0x7117effe, (q31_t)0xc40d1b42, - (q31_t)0x7114fe84, (q31_t)0xc4078e28, - (q31_t)0x71120cc5, (q31_t)0xc4020133, (q31_t)0x710f1ac0, (q31_t)0xc3fc7462, (q31_t)0x710c2875, (q31_t)0xc3f6e7b7, - (q31_t)0x710935e4, (q31_t)0xc3f15b31, - (q31_t)0x7106430e, (q31_t)0xc3ebced0, (q31_t)0x71034ff2, (q31_t)0xc3e64294, (q31_t)0x71005c90, (q31_t)0xc3e0b67d, - (q31_t)0x70fd68e9, (q31_t)0xc3db2a8b, - (q31_t)0x70fa74fc, (q31_t)0xc3d59ebe, (q31_t)0x70f780c9, (q31_t)0xc3d01316, (q31_t)0x70f48c50, (q31_t)0xc3ca8793, - (q31_t)0x70f19792, (q31_t)0xc3c4fc36, - (q31_t)0x70eea28e, (q31_t)0xc3bf70fd, (q31_t)0x70ebad45, (q31_t)0xc3b9e5ea, (q31_t)0x70e8b7b5, (q31_t)0xc3b45afc, - (q31_t)0x70e5c1e1, (q31_t)0xc3aed034, - (q31_t)0x70e2cbc6, (q31_t)0xc3a94590, (q31_t)0x70dfd566, (q31_t)0xc3a3bb12, (q31_t)0x70dcdec0, (q31_t)0xc39e30b8, - (q31_t)0x70d9e7d5, (q31_t)0xc398a685, - (q31_t)0x70d6f0a4, (q31_t)0xc3931c76, (q31_t)0x70d3f92d, (q31_t)0xc38d928d, (q31_t)0x70d10171, (q31_t)0xc38808c9, - (q31_t)0x70ce096f, (q31_t)0xc3827f2a, - (q31_t)0x70cb1128, (q31_t)0xc37cf5b0, (q31_t)0x70c8189b, (q31_t)0xc3776c5c, (q31_t)0x70c51fc8, (q31_t)0xc371e32d, - (q31_t)0x70c226b0, (q31_t)0xc36c5a24, - (q31_t)0x70bf2d53, (q31_t)0xc366d140, (q31_t)0x70bc33b0, (q31_t)0xc3614881, (q31_t)0x70b939c7, (q31_t)0xc35bbfe8, - (q31_t)0x70b63f99, (q31_t)0xc3563774, - (q31_t)0x70b34525, (q31_t)0xc350af26, (q31_t)0x70b04a6b, (q31_t)0xc34b26fc, (q31_t)0x70ad4f6d, (q31_t)0xc3459ef9, - (q31_t)0x70aa5428, (q31_t)0xc340171b, - (q31_t)0x70a7589f, (q31_t)0xc33a8f62, (q31_t)0x70a45ccf, (q31_t)0xc33507cf, (q31_t)0x70a160ba, (q31_t)0xc32f8061, - (q31_t)0x709e6460, (q31_t)0xc329f919, - (q31_t)0x709b67c0, (q31_t)0xc32471f7, (q31_t)0x70986adb, (q31_t)0xc31eeaf9, (q31_t)0x70956db1, (q31_t)0xc3196422, - (q31_t)0x70927041, (q31_t)0xc313dd70, - (q31_t)0x708f728b, (q31_t)0xc30e56e4, (q31_t)0x708c7490, (q31_t)0xc308d07d, (q31_t)0x70897650, (q31_t)0xc3034a3c, - (q31_t)0x708677ca, (q31_t)0xc2fdc420, - (q31_t)0x708378ff, (q31_t)0xc2f83e2a, (q31_t)0x708079ee, (q31_t)0xc2f2b85a, (q31_t)0x707d7a98, (q31_t)0xc2ed32af, - (q31_t)0x707a7afd, (q31_t)0xc2e7ad2a, - (q31_t)0x70777b1c, (q31_t)0xc2e227cb, (q31_t)0x70747af6, (q31_t)0xc2dca291, (q31_t)0x70717a8a, (q31_t)0xc2d71d7e, - (q31_t)0x706e79d9, (q31_t)0xc2d1988f, - (q31_t)0x706b78e3, (q31_t)0xc2cc13c7, (q31_t)0x706877a7, (q31_t)0xc2c68f24, (q31_t)0x70657626, (q31_t)0xc2c10aa7, - (q31_t)0x70627460, (q31_t)0xc2bb8650, - (q31_t)0x705f7255, (q31_t)0xc2b6021f, (q31_t)0x705c7004, (q31_t)0xc2b07e14, (q31_t)0x70596d6d, (q31_t)0xc2aafa2e, - (q31_t)0x70566a92, (q31_t)0xc2a5766e, - (q31_t)0x70536771, (q31_t)0xc29ff2d4, (q31_t)0x7050640b, (q31_t)0xc29a6f60, (q31_t)0x704d6060, (q31_t)0xc294ec12, - (q31_t)0x704a5c6f, (q31_t)0xc28f68e9, - (q31_t)0x70475839, (q31_t)0xc289e5e7, (q31_t)0x704453be, (q31_t)0xc284630a, (q31_t)0x70414efd, (q31_t)0xc27ee054, - (q31_t)0x703e49f8, (q31_t)0xc2795dc3, - (q31_t)0x703b44ad, (q31_t)0xc273db58, (q31_t)0x70383f1d, (q31_t)0xc26e5913, (q31_t)0x70353947, (q31_t)0xc268d6f5, - (q31_t)0x7032332d, (q31_t)0xc26354fc, - (q31_t)0x702f2ccd, (q31_t)0xc25dd329, (q31_t)0x702c2628, (q31_t)0xc258517c, (q31_t)0x70291f3e, (q31_t)0xc252cff5, - (q31_t)0x7026180e, (q31_t)0xc24d4e95, - (q31_t)0x7023109a, (q31_t)0xc247cd5a, (q31_t)0x702008e0, (q31_t)0xc2424c46, (q31_t)0x701d00e1, (q31_t)0xc23ccb57, - (q31_t)0x7019f89d, (q31_t)0xc2374a8f, - (q31_t)0x7016f014, (q31_t)0xc231c9ec, (q31_t)0x7013e746, (q31_t)0xc22c4970, (q31_t)0x7010de32, (q31_t)0xc226c91a, - (q31_t)0x700dd4da, (q31_t)0xc22148ea, - (q31_t)0x700acb3c, (q31_t)0xc21bc8e1, (q31_t)0x7007c159, (q31_t)0xc21648fd, (q31_t)0x7004b731, (q31_t)0xc210c940, - (q31_t)0x7001acc4, (q31_t)0xc20b49a9, - (q31_t)0x6ffea212, (q31_t)0xc205ca38, (q31_t)0x6ffb971b, (q31_t)0xc2004aed, (q31_t)0x6ff88bde, (q31_t)0xc1facbc9, - (q31_t)0x6ff5805d, (q31_t)0xc1f54cca, - (q31_t)0x6ff27497, (q31_t)0xc1efcdf3, (q31_t)0x6fef688b, (q31_t)0xc1ea4f41, (q31_t)0x6fec5c3b, (q31_t)0xc1e4d0b6, - (q31_t)0x6fe94fa5, (q31_t)0xc1df5251, - (q31_t)0x6fe642ca, (q31_t)0xc1d9d412, (q31_t)0x6fe335ab, (q31_t)0xc1d455f9, (q31_t)0x6fe02846, (q31_t)0xc1ced807, - (q31_t)0x6fdd1a9c, (q31_t)0xc1c95a3c, - (q31_t)0x6fda0cae, (q31_t)0xc1c3dc97, (q31_t)0x6fd6fe7a, (q31_t)0xc1be5f18, (q31_t)0x6fd3f001, (q31_t)0xc1b8e1bf, - (q31_t)0x6fd0e144, (q31_t)0xc1b3648d, - (q31_t)0x6fcdd241, (q31_t)0xc1ade781, (q31_t)0x6fcac2fa, (q31_t)0xc1a86a9c, (q31_t)0x6fc7b36d, (q31_t)0xc1a2edde, - (q31_t)0x6fc4a39c, (q31_t)0xc19d7145, - (q31_t)0x6fc19385, (q31_t)0xc197f4d4, (q31_t)0x6fbe832a, (q31_t)0xc1927888, (q31_t)0x6fbb728a, (q31_t)0xc18cfc63, - (q31_t)0x6fb861a4, (q31_t)0xc1878065, - (q31_t)0x6fb5507a, (q31_t)0xc182048d, (q31_t)0x6fb23f0b, (q31_t)0xc17c88dc, (q31_t)0x6faf2d57, (q31_t)0xc1770d52, - (q31_t)0x6fac1b5f, (q31_t)0xc17191ee, - (q31_t)0x6fa90921, (q31_t)0xc16c16b0, (q31_t)0x6fa5f69e, (q31_t)0xc1669b99, (q31_t)0x6fa2e3d7, (q31_t)0xc16120a9, - (q31_t)0x6f9fd0cb, (q31_t)0xc15ba5df, - (q31_t)0x6f9cbd79, (q31_t)0xc1562b3d, (q31_t)0x6f99a9e3, (q31_t)0xc150b0c0, (q31_t)0x6f969608, (q31_t)0xc14b366b, - (q31_t)0x6f9381e9, (q31_t)0xc145bc3c, - (q31_t)0x6f906d84, (q31_t)0xc1404233, (q31_t)0x6f8d58db, (q31_t)0xc13ac852, (q31_t)0x6f8a43ed, (q31_t)0xc1354e97, - (q31_t)0x6f872eba, (q31_t)0xc12fd503, - (q31_t)0x6f841942, (q31_t)0xc12a5b95, (q31_t)0x6f810386, (q31_t)0xc124e24f, (q31_t)0x6f7ded84, (q31_t)0xc11f692f, - (q31_t)0x6f7ad73e, (q31_t)0xc119f036, - (q31_t)0x6f77c0b3, (q31_t)0xc1147764, (q31_t)0x6f74a9e4, (q31_t)0xc10efeb8, (q31_t)0x6f7192cf, (q31_t)0xc1098634, - (q31_t)0x6f6e7b76, (q31_t)0xc1040dd6, - (q31_t)0x6f6b63d8, (q31_t)0xc0fe959f, (q31_t)0x6f684bf6, (q31_t)0xc0f91d8f, (q31_t)0x6f6533ce, (q31_t)0xc0f3a5a6, - (q31_t)0x6f621b62, (q31_t)0xc0ee2de3, - (q31_t)0x6f5f02b2, (q31_t)0xc0e8b648, (q31_t)0x6f5be9bc, (q31_t)0xc0e33ed4, (q31_t)0x6f58d082, (q31_t)0xc0ddc786, - (q31_t)0x6f55b703, (q31_t)0xc0d8505f, - (q31_t)0x6f529d40, (q31_t)0xc0d2d960, (q31_t)0x6f4f8338, (q31_t)0xc0cd6287, (q31_t)0x6f4c68eb, (q31_t)0xc0c7ebd6, - (q31_t)0x6f494e5a, (q31_t)0xc0c2754b, - (q31_t)0x6f463383, (q31_t)0xc0bcfee7, (q31_t)0x6f431869, (q31_t)0xc0b788ab, (q31_t)0x6f3ffd09, (q31_t)0xc0b21295, - (q31_t)0x6f3ce165, (q31_t)0xc0ac9ca6, - (q31_t)0x6f39c57d, (q31_t)0xc0a726df, (q31_t)0x6f36a94f, (q31_t)0xc0a1b13e, (q31_t)0x6f338cde, (q31_t)0xc09c3bc5, - (q31_t)0x6f307027, (q31_t)0xc096c673, - (q31_t)0x6f2d532c, (q31_t)0xc0915148, (q31_t)0x6f2a35ed, (q31_t)0xc08bdc44, (q31_t)0x6f271868, (q31_t)0xc0866767, - (q31_t)0x6f23faa0, (q31_t)0xc080f2b1, - (q31_t)0x6f20dc92, (q31_t)0xc07b7e23, (q31_t)0x6f1dbe41, (q31_t)0xc07609bb, (q31_t)0x6f1a9faa, (q31_t)0xc070957b, - (q31_t)0x6f1780cf, (q31_t)0xc06b2162, - (q31_t)0x6f1461b0, (q31_t)0xc065ad70, (q31_t)0x6f11424c, (q31_t)0xc06039a6, (q31_t)0x6f0e22a3, (q31_t)0xc05ac603, - (q31_t)0x6f0b02b6, (q31_t)0xc0555287, - (q31_t)0x6f07e285, (q31_t)0xc04fdf32, (q31_t)0x6f04c20f, (q31_t)0xc04a6c05, (q31_t)0x6f01a155, (q31_t)0xc044f8fe, - (q31_t)0x6efe8056, (q31_t)0xc03f8620, - (q31_t)0x6efb5f12, (q31_t)0xc03a1368, (q31_t)0x6ef83d8a, (q31_t)0xc034a0d8, (q31_t)0x6ef51bbe, (q31_t)0xc02f2e6f, - (q31_t)0x6ef1f9ad, (q31_t)0xc029bc2e, - (q31_t)0x6eeed758, (q31_t)0xc0244a14, (q31_t)0x6eebb4bf, (q31_t)0xc01ed821, (q31_t)0x6ee891e1, (q31_t)0xc0196656, - (q31_t)0x6ee56ebe, (q31_t)0xc013f4b2, - (q31_t)0x6ee24b57, (q31_t)0xc00e8336, (q31_t)0x6edf27ac, (q31_t)0xc00911e1, (q31_t)0x6edc03bc, (q31_t)0xc003a0b3, - (q31_t)0x6ed8df88, (q31_t)0xbffe2fad, - (q31_t)0x6ed5bb10, (q31_t)0xbff8bece, (q31_t)0x6ed29653, (q31_t)0xbff34e17, (q31_t)0x6ecf7152, (q31_t)0xbfeddd88, - (q31_t)0x6ecc4c0d, (q31_t)0xbfe86d20, - (q31_t)0x6ec92683, (q31_t)0xbfe2fcdf, (q31_t)0x6ec600b5, (q31_t)0xbfdd8cc6, (q31_t)0x6ec2daa2, (q31_t)0xbfd81cd5, - (q31_t)0x6ebfb44b, (q31_t)0xbfd2ad0b, - (q31_t)0x6ebc8db0, (q31_t)0xbfcd3d69, (q31_t)0x6eb966d1, (q31_t)0xbfc7cdee, (q31_t)0x6eb63fad, (q31_t)0xbfc25e9b, - (q31_t)0x6eb31845, (q31_t)0xbfbcef70, - (q31_t)0x6eaff099, (q31_t)0xbfb7806c, (q31_t)0x6eacc8a8, (q31_t)0xbfb21190, (q31_t)0x6ea9a073, (q31_t)0xbfaca2dc, - (q31_t)0x6ea677fa, (q31_t)0xbfa7344f, - (q31_t)0x6ea34f3d, (q31_t)0xbfa1c5ea, (q31_t)0x6ea0263b, (q31_t)0xbf9c57ac, (q31_t)0x6e9cfcf5, (q31_t)0xbf96e997, - (q31_t)0x6e99d36b, (q31_t)0xbf917ba9, - (q31_t)0x6e96a99d, (q31_t)0xbf8c0de3, (q31_t)0x6e937f8a, (q31_t)0xbf86a044, (q31_t)0x6e905534, (q31_t)0xbf8132ce, - (q31_t)0x6e8d2a99, (q31_t)0xbf7bc57f, - (q31_t)0x6e89ffb9, (q31_t)0xbf765858, (q31_t)0x6e86d496, (q31_t)0xbf70eb59, (q31_t)0x6e83a92f, (q31_t)0xbf6b7e81, - (q31_t)0x6e807d83, (q31_t)0xbf6611d2, - (q31_t)0x6e7d5193, (q31_t)0xbf60a54a, (q31_t)0x6e7a255f, (q31_t)0xbf5b38ea, (q31_t)0x6e76f8e7, (q31_t)0xbf55ccb2, - (q31_t)0x6e73cc2b, (q31_t)0xbf5060a2, - (q31_t)0x6e709f2a, (q31_t)0xbf4af4ba, (q31_t)0x6e6d71e6, (q31_t)0xbf4588fa, (q31_t)0x6e6a445d, (q31_t)0xbf401d61, - (q31_t)0x6e671690, (q31_t)0xbf3ab1f1, - (q31_t)0x6e63e87f, (q31_t)0xbf3546a8, (q31_t)0x6e60ba2a, (q31_t)0xbf2fdb88, (q31_t)0x6e5d8b91, (q31_t)0xbf2a708f, - (q31_t)0x6e5a5cb4, (q31_t)0xbf2505bf, - (q31_t)0x6e572d93, (q31_t)0xbf1f9b16, (q31_t)0x6e53fe2e, (q31_t)0xbf1a3096, (q31_t)0x6e50ce84, (q31_t)0xbf14c63d, - (q31_t)0x6e4d9e97, (q31_t)0xbf0f5c0d, - (q31_t)0x6e4a6e66, (q31_t)0xbf09f205, (q31_t)0x6e473df0, (q31_t)0xbf048824, (q31_t)0x6e440d37, (q31_t)0xbeff1e6c, - (q31_t)0x6e40dc39, (q31_t)0xbef9b4dc, - (q31_t)0x6e3daaf8, (q31_t)0xbef44b74, (q31_t)0x6e3a7972, (q31_t)0xbeeee234, (q31_t)0x6e3747a9, (q31_t)0xbee9791c, - (q31_t)0x6e34159b, (q31_t)0xbee4102d, - (q31_t)0x6e30e34a, (q31_t)0xbedea765, (q31_t)0x6e2db0b4, (q31_t)0xbed93ec6, (q31_t)0x6e2a7ddb, (q31_t)0xbed3d64f, - (q31_t)0x6e274abe, (q31_t)0xbece6e00, - (q31_t)0x6e24175c, (q31_t)0xbec905d9, (q31_t)0x6e20e3b7, (q31_t)0xbec39ddb, (q31_t)0x6e1dafce, (q31_t)0xbebe3605, - (q31_t)0x6e1a7ba1, (q31_t)0xbeb8ce57, - (q31_t)0x6e174730, (q31_t)0xbeb366d1, (q31_t)0x6e14127b, (q31_t)0xbeadff74, (q31_t)0x6e10dd82, (q31_t)0xbea8983f, - (q31_t)0x6e0da845, (q31_t)0xbea33132, - (q31_t)0x6e0a72c5, (q31_t)0xbe9dca4e, (q31_t)0x6e073d00, (q31_t)0xbe986391, (q31_t)0x6e0406f8, (q31_t)0xbe92fcfe, - (q31_t)0x6e00d0ac, (q31_t)0xbe8d9692, - (q31_t)0x6dfd9a1c, (q31_t)0xbe88304f, (q31_t)0x6dfa6348, (q31_t)0xbe82ca35, (q31_t)0x6df72c30, (q31_t)0xbe7d6442, - (q31_t)0x6df3f4d4, (q31_t)0xbe77fe78, - (q31_t)0x6df0bd35, (q31_t)0xbe7298d7, (q31_t)0x6ded8552, (q31_t)0xbe6d335e, (q31_t)0x6dea4d2b, (q31_t)0xbe67ce0d, - (q31_t)0x6de714c0, (q31_t)0xbe6268e5, - (q31_t)0x6de3dc11, (q31_t)0xbe5d03e6, (q31_t)0x6de0a31f, (q31_t)0xbe579f0f, (q31_t)0x6ddd69e9, (q31_t)0xbe523a60, - (q31_t)0x6dda306f, (q31_t)0xbe4cd5da, - (q31_t)0x6dd6f6b1, (q31_t)0xbe47717c, (q31_t)0x6dd3bcaf, (q31_t)0xbe420d47, (q31_t)0x6dd0826a, (q31_t)0xbe3ca93b, - (q31_t)0x6dcd47e1, (q31_t)0xbe374557, - (q31_t)0x6dca0d14, (q31_t)0xbe31e19b, (q31_t)0x6dc6d204, (q31_t)0xbe2c7e09, (q31_t)0x6dc396b0, (q31_t)0xbe271a9f, - (q31_t)0x6dc05b18, (q31_t)0xbe21b75d, - (q31_t)0x6dbd1f3c, (q31_t)0xbe1c5444, (q31_t)0x6db9e31d, (q31_t)0xbe16f154, (q31_t)0x6db6a6ba, (q31_t)0xbe118e8c, - (q31_t)0x6db36a14, (q31_t)0xbe0c2bed, - (q31_t)0x6db02d29, (q31_t)0xbe06c977, (q31_t)0x6daceffb, (q31_t)0xbe01672a, (q31_t)0x6da9b28a, (q31_t)0xbdfc0505, - (q31_t)0x6da674d5, (q31_t)0xbdf6a309, - (q31_t)0x6da336dc, (q31_t)0xbdf14135, (q31_t)0x6d9ff89f, (q31_t)0xbdebdf8b, (q31_t)0x6d9cba1f, (q31_t)0xbde67e09, - (q31_t)0x6d997b5b, (q31_t)0xbde11cb0, - (q31_t)0x6d963c54, (q31_t)0xbddbbb7f, (q31_t)0x6d92fd09, (q31_t)0xbdd65a78, (q31_t)0x6d8fbd7a, (q31_t)0xbdd0f999, - (q31_t)0x6d8c7da8, (q31_t)0xbdcb98e3, - (q31_t)0x6d893d93, (q31_t)0xbdc63856, (q31_t)0x6d85fd39, (q31_t)0xbdc0d7f2, (q31_t)0x6d82bc9d, (q31_t)0xbdbb77b7, - (q31_t)0x6d7f7bbc, (q31_t)0xbdb617a4, - (q31_t)0x6d7c3a98, (q31_t)0xbdb0b7bb, (q31_t)0x6d78f931, (q31_t)0xbdab57fa, (q31_t)0x6d75b786, (q31_t)0xbda5f862, - (q31_t)0x6d727597, (q31_t)0xbda098f3, - (q31_t)0x6d6f3365, (q31_t)0xbd9b39ad, (q31_t)0x6d6bf0f0, (q31_t)0xbd95da91, (q31_t)0x6d68ae37, (q31_t)0xbd907b9d, - (q31_t)0x6d656b3a, (q31_t)0xbd8b1cd2, - (q31_t)0x6d6227fa, (q31_t)0xbd85be30, (q31_t)0x6d5ee477, (q31_t)0xbd805fb7, (q31_t)0x6d5ba0b0, (q31_t)0xbd7b0167, - (q31_t)0x6d585ca6, (q31_t)0xbd75a340, - (q31_t)0x6d551858, (q31_t)0xbd704542, (q31_t)0x6d51d3c6, (q31_t)0xbd6ae76d, (q31_t)0x6d4e8ef2, (q31_t)0xbd6589c1, - (q31_t)0x6d4b49da, (q31_t)0xbd602c3f, - (q31_t)0x6d48047e, (q31_t)0xbd5acee5, (q31_t)0x6d44bedf, (q31_t)0xbd5571b5, (q31_t)0x6d4178fd, (q31_t)0xbd5014ad, - (q31_t)0x6d3e32d7, (q31_t)0xbd4ab7cf, - (q31_t)0x6d3aec6e, (q31_t)0xbd455b1a, (q31_t)0x6d37a5c1, (q31_t)0xbd3ffe8e, (q31_t)0x6d345ed1, (q31_t)0xbd3aa22c, - (q31_t)0x6d31179e, (q31_t)0xbd3545f2, - (q31_t)0x6d2dd027, (q31_t)0xbd2fe9e2, (q31_t)0x6d2a886e, (q31_t)0xbd2a8dfb, (q31_t)0x6d274070, (q31_t)0xbd25323d, - (q31_t)0x6d23f830, (q31_t)0xbd1fd6a8, - (q31_t)0x6d20afac, (q31_t)0xbd1a7b3d, (q31_t)0x6d1d66e4, (q31_t)0xbd151ffb, (q31_t)0x6d1a1dda, (q31_t)0xbd0fc4e2, - (q31_t)0x6d16d48c, (q31_t)0xbd0a69f2, - (q31_t)0x6d138afb, (q31_t)0xbd050f2c, (q31_t)0x6d104126, (q31_t)0xbcffb48f, (q31_t)0x6d0cf70f, (q31_t)0xbcfa5a1b, - (q31_t)0x6d09acb4, (q31_t)0xbcf4ffd1, - (q31_t)0x6d066215, (q31_t)0xbcefa5b0, (q31_t)0x6d031734, (q31_t)0xbcea4bb9, (q31_t)0x6cffcc0f, (q31_t)0xbce4f1eb, - (q31_t)0x6cfc80a7, (q31_t)0xbcdf9846, - (q31_t)0x6cf934fc, (q31_t)0xbcda3ecb, (q31_t)0x6cf5e90d, (q31_t)0xbcd4e579, (q31_t)0x6cf29cdc, (q31_t)0xbccf8c50, - (q31_t)0x6cef5067, (q31_t)0xbcca3351, - (q31_t)0x6cec03af, (q31_t)0xbcc4da7b, (q31_t)0x6ce8b6b4, (q31_t)0xbcbf81cf, (q31_t)0x6ce56975, (q31_t)0xbcba294d, - (q31_t)0x6ce21bf4, (q31_t)0xbcb4d0f4, - (q31_t)0x6cdece2f, (q31_t)0xbcaf78c4, (q31_t)0x6cdb8027, (q31_t)0xbcaa20be, (q31_t)0x6cd831dc, (q31_t)0xbca4c8e1, - (q31_t)0x6cd4e34e, (q31_t)0xbc9f712e, - (q31_t)0x6cd1947c, (q31_t)0xbc9a19a5, (q31_t)0x6cce4568, (q31_t)0xbc94c245, (q31_t)0x6ccaf610, (q31_t)0xbc8f6b0f, - (q31_t)0x6cc7a676, (q31_t)0xbc8a1402, - (q31_t)0x6cc45698, (q31_t)0xbc84bd1f, (q31_t)0x6cc10677, (q31_t)0xbc7f6665, (q31_t)0x6cbdb613, (q31_t)0xbc7a0fd6, - (q31_t)0x6cba656c, (q31_t)0xbc74b96f, - (q31_t)0x6cb71482, (q31_t)0xbc6f6333, (q31_t)0x6cb3c355, (q31_t)0xbc6a0d20, (q31_t)0x6cb071e4, (q31_t)0xbc64b737, - (q31_t)0x6cad2031, (q31_t)0xbc5f6177, - (q31_t)0x6ca9ce3b, (q31_t)0xbc5a0be2, (q31_t)0x6ca67c01, (q31_t)0xbc54b676, (q31_t)0x6ca32985, (q31_t)0xbc4f6134, - (q31_t)0x6c9fd6c6, (q31_t)0xbc4a0c1b, - (q31_t)0x6c9c83c3, (q31_t)0xbc44b72c, (q31_t)0x6c99307e, (q31_t)0xbc3f6267, (q31_t)0x6c95dcf6, (q31_t)0xbc3a0dcc, - (q31_t)0x6c92892a, (q31_t)0xbc34b95b, - (q31_t)0x6c8f351c, (q31_t)0xbc2f6513, (q31_t)0x6c8be0cb, (q31_t)0xbc2a10f6, (q31_t)0x6c888c36, (q31_t)0xbc24bd02, - (q31_t)0x6c85375f, (q31_t)0xbc1f6938, - (q31_t)0x6c81e245, (q31_t)0xbc1a1598, (q31_t)0x6c7e8ce8, (q31_t)0xbc14c221, (q31_t)0x6c7b3748, (q31_t)0xbc0f6ed5, - (q31_t)0x6c77e165, (q31_t)0xbc0a1bb3, - (q31_t)0x6c748b3f, (q31_t)0xbc04c8ba, (q31_t)0x6c7134d7, (q31_t)0xbbff75ec, (q31_t)0x6c6dde2b, (q31_t)0xbbfa2347, - (q31_t)0x6c6a873d, (q31_t)0xbbf4d0cc, - (q31_t)0x6c67300b, (q31_t)0xbbef7e7c, (q31_t)0x6c63d897, (q31_t)0xbbea2c55, (q31_t)0x6c6080e0, (q31_t)0xbbe4da58, - (q31_t)0x6c5d28e6, (q31_t)0xbbdf8885, - (q31_t)0x6c59d0a9, (q31_t)0xbbda36dd, (q31_t)0x6c56782a, (q31_t)0xbbd4e55e, (q31_t)0x6c531f67, (q31_t)0xbbcf940a, - (q31_t)0x6c4fc662, (q31_t)0xbbca42df, - (q31_t)0x6c4c6d1a, (q31_t)0xbbc4f1df, (q31_t)0x6c49138f, (q31_t)0xbbbfa108, (q31_t)0x6c45b9c1, (q31_t)0xbbba505c, - (q31_t)0x6c425fb1, (q31_t)0xbbb4ffda, - (q31_t)0x6c3f055d, (q31_t)0xbbafaf82, (q31_t)0x6c3baac7, (q31_t)0xbbaa5f54, (q31_t)0x6c384fef, (q31_t)0xbba50f50, - (q31_t)0x6c34f4d3, (q31_t)0xbb9fbf77, - (q31_t)0x6c319975, (q31_t)0xbb9a6fc7, (q31_t)0x6c2e3dd4, (q31_t)0xbb952042, (q31_t)0x6c2ae1f0, (q31_t)0xbb8fd0e7, - (q31_t)0x6c2785ca, (q31_t)0xbb8a81b6, - (q31_t)0x6c242960, (q31_t)0xbb8532b0, (q31_t)0x6c20ccb4, (q31_t)0xbb7fe3d3, (q31_t)0x6c1d6fc6, (q31_t)0xbb7a9521, - (q31_t)0x6c1a1295, (q31_t)0xbb754699, - (q31_t)0x6c16b521, (q31_t)0xbb6ff83c, (q31_t)0x6c13576a, (q31_t)0xbb6aaa09, (q31_t)0x6c0ff971, (q31_t)0xbb655c00, - (q31_t)0x6c0c9b35, (q31_t)0xbb600e21, - (q31_t)0x6c093cb6, (q31_t)0xbb5ac06d, (q31_t)0x6c05ddf5, (q31_t)0xbb5572e3, (q31_t)0x6c027ef1, (q31_t)0xbb502583, - (q31_t)0x6bff1faa, (q31_t)0xbb4ad84e, - (q31_t)0x6bfbc021, (q31_t)0xbb458b43, (q31_t)0x6bf86055, (q31_t)0xbb403e63, (q31_t)0x6bf50047, (q31_t)0xbb3af1ad, - (q31_t)0x6bf19ff6, (q31_t)0xbb35a521, - (q31_t)0x6bee3f62, (q31_t)0xbb3058c0, (q31_t)0x6beade8c, (q31_t)0xbb2b0c8a, (q31_t)0x6be77d74, (q31_t)0xbb25c07d, - (q31_t)0x6be41c18, (q31_t)0xbb20749c, - (q31_t)0x6be0ba7b, (q31_t)0xbb1b28e4, (q31_t)0x6bdd589a, (q31_t)0xbb15dd57, (q31_t)0x6bd9f677, (q31_t)0xbb1091f5, - (q31_t)0x6bd69412, (q31_t)0xbb0b46bd, - (q31_t)0x6bd3316a, (q31_t)0xbb05fbb0, (q31_t)0x6bcfce80, (q31_t)0xbb00b0ce, (q31_t)0x6bcc6b53, (q31_t)0xbafb6615, - (q31_t)0x6bc907e3, (q31_t)0xbaf61b88, - (q31_t)0x6bc5a431, (q31_t)0xbaf0d125, (q31_t)0x6bc2403d, (q31_t)0xbaeb86ed, (q31_t)0x6bbedc06, (q31_t)0xbae63cdf, - (q31_t)0x6bbb778d, (q31_t)0xbae0f2fc, - (q31_t)0x6bb812d1, (q31_t)0xbadba943, (q31_t)0x6bb4add3, (q31_t)0xbad65fb5, (q31_t)0x6bb14892, (q31_t)0xbad11652, - (q31_t)0x6bade30f, (q31_t)0xbacbcd1a, - (q31_t)0x6baa7d49, (q31_t)0xbac6840c, (q31_t)0x6ba71741, (q31_t)0xbac13b29, (q31_t)0x6ba3b0f7, (q31_t)0xbabbf270, - (q31_t)0x6ba04a6a, (q31_t)0xbab6a9e3, - (q31_t)0x6b9ce39b, (q31_t)0xbab16180, (q31_t)0x6b997c8a, (q31_t)0xbaac1948, (q31_t)0x6b961536, (q31_t)0xbaa6d13a, - (q31_t)0x6b92ada0, (q31_t)0xbaa18958, - (q31_t)0x6b8f45c7, (q31_t)0xba9c41a0, (q31_t)0x6b8bddac, (q31_t)0xba96fa13, (q31_t)0x6b88754f, (q31_t)0xba91b2b1, - (q31_t)0x6b850caf, (q31_t)0xba8c6b79, - (q31_t)0x6b81a3cd, (q31_t)0xba87246d, (q31_t)0x6b7e3aa9, (q31_t)0xba81dd8b, (q31_t)0x6b7ad142, (q31_t)0xba7c96d4, - (q31_t)0x6b776799, (q31_t)0xba775048, - (q31_t)0x6b73fdae, (q31_t)0xba7209e7, (q31_t)0x6b709381, (q31_t)0xba6cc3b1, (q31_t)0x6b6d2911, (q31_t)0xba677da6, - (q31_t)0x6b69be5f, (q31_t)0xba6237c5, - (q31_t)0x6b66536b, (q31_t)0xba5cf210, (q31_t)0x6b62e834, (q31_t)0xba57ac86, (q31_t)0x6b5f7cbc, (q31_t)0xba526726, - (q31_t)0x6b5c1101, (q31_t)0xba4d21f2, - (q31_t)0x6b58a503, (q31_t)0xba47dce8, (q31_t)0x6b5538c4, (q31_t)0xba42980a, (q31_t)0x6b51cc42, (q31_t)0xba3d5356, - (q31_t)0x6b4e5f7f, (q31_t)0xba380ece, - (q31_t)0x6b4af279, (q31_t)0xba32ca71, (q31_t)0x6b478530, (q31_t)0xba2d863e, (q31_t)0x6b4417a6, (q31_t)0xba284237, - (q31_t)0x6b40a9d9, (q31_t)0xba22fe5b, - (q31_t)0x6b3d3bcb, (q31_t)0xba1dbaaa, (q31_t)0x6b39cd7a, (q31_t)0xba187724, (q31_t)0x6b365ee7, (q31_t)0xba1333c9, - (q31_t)0x6b32f012, (q31_t)0xba0df099, - (q31_t)0x6b2f80fb, (q31_t)0xba08ad95, (q31_t)0x6b2c11a1, (q31_t)0xba036abb, (q31_t)0x6b28a206, (q31_t)0xb9fe280d, - (q31_t)0x6b253228, (q31_t)0xb9f8e58a, - (q31_t)0x6b21c208, (q31_t)0xb9f3a332, (q31_t)0x6b1e51a7, (q31_t)0xb9ee6106, (q31_t)0x6b1ae103, (q31_t)0xb9e91f04, - (q31_t)0x6b17701d, (q31_t)0xb9e3dd2e, - (q31_t)0x6b13fef5, (q31_t)0xb9de9b83, (q31_t)0x6b108d8b, (q31_t)0xb9d95a03, (q31_t)0x6b0d1bdf, (q31_t)0xb9d418af, - (q31_t)0x6b09a9f1, (q31_t)0xb9ced786, - (q31_t)0x6b0637c1, (q31_t)0xb9c99688, (q31_t)0x6b02c54f, (q31_t)0xb9c455b6, (q31_t)0x6aff529a, (q31_t)0xb9bf150e, - (q31_t)0x6afbdfa4, (q31_t)0xb9b9d493, - (q31_t)0x6af86c6c, (q31_t)0xb9b49442, (q31_t)0x6af4f8f2, (q31_t)0xb9af541d, (q31_t)0x6af18536, (q31_t)0xb9aa1423, - (q31_t)0x6aee1138, (q31_t)0xb9a4d455, - (q31_t)0x6aea9cf8, (q31_t)0xb99f94b2, (q31_t)0x6ae72876, (q31_t)0xb99a553a, (q31_t)0x6ae3b3b2, (q31_t)0xb99515ee, - (q31_t)0x6ae03eac, (q31_t)0xb98fd6cd, - (q31_t)0x6adcc964, (q31_t)0xb98a97d8, (q31_t)0x6ad953db, (q31_t)0xb985590e, (q31_t)0x6ad5de0f, (q31_t)0xb9801a70, - (q31_t)0x6ad26802, (q31_t)0xb97adbfd, - (q31_t)0x6acef1b2, (q31_t)0xb9759db6, (q31_t)0x6acb7b21, (q31_t)0xb9705f9a, (q31_t)0x6ac8044e, (q31_t)0xb96b21aa, - (q31_t)0x6ac48d39, (q31_t)0xb965e3e5, - (q31_t)0x6ac115e2, (q31_t)0xb960a64c, (q31_t)0x6abd9e49, (q31_t)0xb95b68de, (q31_t)0x6aba266e, (q31_t)0xb9562b9c, - (q31_t)0x6ab6ae52, (q31_t)0xb950ee86, - (q31_t)0x6ab335f4, (q31_t)0xb94bb19b, (q31_t)0x6aafbd54, (q31_t)0xb94674dc, (q31_t)0x6aac4472, (q31_t)0xb9413848, - (q31_t)0x6aa8cb4e, (q31_t)0xb93bfbe0, - (q31_t)0x6aa551e9, (q31_t)0xb936bfa4, (q31_t)0x6aa1d841, (q31_t)0xb9318393, (q31_t)0x6a9e5e58, (q31_t)0xb92c47ae, - (q31_t)0x6a9ae42e, (q31_t)0xb9270bf5, - (q31_t)0x6a9769c1, (q31_t)0xb921d067, (q31_t)0x6a93ef13, (q31_t)0xb91c9505, (q31_t)0x6a907423, (q31_t)0xb91759cf, - (q31_t)0x6a8cf8f1, (q31_t)0xb9121ec5, - (q31_t)0x6a897d7d, (q31_t)0xb90ce3e6, (q31_t)0x6a8601c8, (q31_t)0xb907a933, (q31_t)0x6a8285d1, (q31_t)0xb9026eac, - (q31_t)0x6a7f0999, (q31_t)0xb8fd3451, - (q31_t)0x6a7b8d1e, (q31_t)0xb8f7fa21, (q31_t)0x6a781062, (q31_t)0xb8f2c01d, (q31_t)0x6a749365, (q31_t)0xb8ed8646, - (q31_t)0x6a711625, (q31_t)0xb8e84c99, - (q31_t)0x6a6d98a4, (q31_t)0xb8e31319, (q31_t)0x6a6a1ae2, (q31_t)0xb8ddd9c5, (q31_t)0x6a669cdd, (q31_t)0xb8d8a09d, - (q31_t)0x6a631e97, (q31_t)0xb8d367a0, - (q31_t)0x6a5fa010, (q31_t)0xb8ce2ecf, (q31_t)0x6a5c2147, (q31_t)0xb8c8f62b, (q31_t)0x6a58a23c, (q31_t)0xb8c3bdb2, - (q31_t)0x6a5522ef, (q31_t)0xb8be8565, - (q31_t)0x6a51a361, (q31_t)0xb8b94d44, (q31_t)0x6a4e2392, (q31_t)0xb8b4154f, (q31_t)0x6a4aa381, (q31_t)0xb8aedd86, - (q31_t)0x6a47232e, (q31_t)0xb8a9a5e9, - (q31_t)0x6a43a29a, (q31_t)0xb8a46e78, (q31_t)0x6a4021c4, (q31_t)0xb89f3733, (q31_t)0x6a3ca0ad, (q31_t)0xb89a001a, - (q31_t)0x6a391f54, (q31_t)0xb894c92d, - (q31_t)0x6a359db9, (q31_t)0xb88f926d, (q31_t)0x6a321bdd, (q31_t)0xb88a5bd8, (q31_t)0x6a2e99c0, (q31_t)0xb885256f, - (q31_t)0x6a2b1761, (q31_t)0xb87fef33, - (q31_t)0x6a2794c1, (q31_t)0xb87ab922, (q31_t)0x6a2411df, (q31_t)0xb875833e, (q31_t)0x6a208ebb, (q31_t)0xb8704d85, - (q31_t)0x6a1d0b57, (q31_t)0xb86b17f9, - (q31_t)0x6a1987b0, (q31_t)0xb865e299, (q31_t)0x6a1603c8, (q31_t)0xb860ad66, (q31_t)0x6a127f9f, (q31_t)0xb85b785e, - (q31_t)0x6a0efb35, (q31_t)0xb8564383, - (q31_t)0x6a0b7689, (q31_t)0xb8510ed4, (q31_t)0x6a07f19b, (q31_t)0xb84bda51, (q31_t)0x6a046c6c, (q31_t)0xb846a5fa, - (q31_t)0x6a00e6fc, (q31_t)0xb84171cf, - (q31_t)0x69fd614a, (q31_t)0xb83c3dd1, (q31_t)0x69f9db57, (q31_t)0xb83709ff, (q31_t)0x69f65523, (q31_t)0xb831d659, - (q31_t)0x69f2cead, (q31_t)0xb82ca2e0, - (q31_t)0x69ef47f6, (q31_t)0xb8276f93, (q31_t)0x69ebc0fe, (q31_t)0xb8223c72, (q31_t)0x69e839c4, (q31_t)0xb81d097e, - (q31_t)0x69e4b249, (q31_t)0xb817d6b6, - (q31_t)0x69e12a8c, (q31_t)0xb812a41a, (q31_t)0x69dda28f, (q31_t)0xb80d71aa, (q31_t)0x69da1a50, (q31_t)0xb8083f67, - (q31_t)0x69d691cf, (q31_t)0xb8030d51, - (q31_t)0x69d3090e, (q31_t)0xb7fddb67, (q31_t)0x69cf800b, (q31_t)0xb7f8a9a9, (q31_t)0x69cbf6c7, (q31_t)0xb7f37818, - (q31_t)0x69c86d41, (q31_t)0xb7ee46b3, - (q31_t)0x69c4e37a, (q31_t)0xb7e9157a, (q31_t)0x69c15973, (q31_t)0xb7e3e46e, (q31_t)0x69bdcf29, (q31_t)0xb7deb38f, - (q31_t)0x69ba449f, (q31_t)0xb7d982dc, - (q31_t)0x69b6b9d3, (q31_t)0xb7d45255, (q31_t)0x69b32ec7, (q31_t)0xb7cf21fb, (q31_t)0x69afa378, (q31_t)0xb7c9f1ce, - (q31_t)0x69ac17e9, (q31_t)0xb7c4c1cd, - (q31_t)0x69a88c19, (q31_t)0xb7bf91f8, (q31_t)0x69a50007, (q31_t)0xb7ba6251, (q31_t)0x69a173b5, (q31_t)0xb7b532d6, - (q31_t)0x699de721, (q31_t)0xb7b00387, - (q31_t)0x699a5a4c, (q31_t)0xb7aad465, (q31_t)0x6996cd35, (q31_t)0xb7a5a570, (q31_t)0x69933fde, (q31_t)0xb7a076a7, - (q31_t)0x698fb246, (q31_t)0xb79b480b, - (q31_t)0x698c246c, (q31_t)0xb796199b, (q31_t)0x69889651, (q31_t)0xb790eb58, (q31_t)0x698507f6, (q31_t)0xb78bbd42, - (q31_t)0x69817959, (q31_t)0xb7868f59, - (q31_t)0x697dea7b, (q31_t)0xb781619c, (q31_t)0x697a5b5c, (q31_t)0xb77c340c, (q31_t)0x6976cbfc, (q31_t)0xb77706a9, - (q31_t)0x69733c5b, (q31_t)0xb771d972, - (q31_t)0x696fac78, (q31_t)0xb76cac69, (q31_t)0x696c1c55, (q31_t)0xb7677f8c, (q31_t)0x69688bf1, (q31_t)0xb76252db, - (q31_t)0x6964fb4c, (q31_t)0xb75d2658, - (q31_t)0x69616a65, (q31_t)0xb757fa01, (q31_t)0x695dd93e, (q31_t)0xb752cdd8, (q31_t)0x695a47d6, (q31_t)0xb74da1db, - (q31_t)0x6956b62d, (q31_t)0xb748760b, - (q31_t)0x69532442, (q31_t)0xb7434a67, (q31_t)0x694f9217, (q31_t)0xb73e1ef1, (q31_t)0x694bffab, (q31_t)0xb738f3a7, - (q31_t)0x69486cfe, (q31_t)0xb733c88b, - (q31_t)0x6944da10, (q31_t)0xb72e9d9b, (q31_t)0x694146e1, (q31_t)0xb72972d8, (q31_t)0x693db371, (q31_t)0xb7244842, - (q31_t)0x693a1fc0, (q31_t)0xb71f1dd9, - (q31_t)0x69368bce, (q31_t)0xb719f39e, (q31_t)0x6932f79b, (q31_t)0xb714c98e, (q31_t)0x692f6328, (q31_t)0xb70f9fac, - (q31_t)0x692bce73, (q31_t)0xb70a75f7, - (q31_t)0x6928397e, (q31_t)0xb7054c6f, (q31_t)0x6924a448, (q31_t)0xb7002314, (q31_t)0x69210ed1, (q31_t)0xb6faf9e6, - (q31_t)0x691d7919, (q31_t)0xb6f5d0e5, - (q31_t)0x6919e320, (q31_t)0xb6f0a812, (q31_t)0x69164ce7, (q31_t)0xb6eb7f6b, (q31_t)0x6912b66c, (q31_t)0xb6e656f1, - (q31_t)0x690f1fb1, (q31_t)0xb6e12ea4, - (q31_t)0x690b88b5, (q31_t)0xb6dc0685, (q31_t)0x6907f178, (q31_t)0xb6d6de92, (q31_t)0x690459fb, (q31_t)0xb6d1b6cd, - (q31_t)0x6900c23c, (q31_t)0xb6cc8f35, - (q31_t)0x68fd2a3d, (q31_t)0xb6c767ca, (q31_t)0x68f991fd, (q31_t)0xb6c2408c, (q31_t)0x68f5f97d, (q31_t)0xb6bd197c, - (q31_t)0x68f260bb, (q31_t)0xb6b7f298, - (q31_t)0x68eec7b9, (q31_t)0xb6b2cbe2, (q31_t)0x68eb2e76, (q31_t)0xb6ada559, (q31_t)0x68e794f3, (q31_t)0xb6a87efd, - (q31_t)0x68e3fb2e, (q31_t)0xb6a358ce, - (q31_t)0x68e06129, (q31_t)0xb69e32cd, (q31_t)0x68dcc6e4, (q31_t)0xb6990cf9, (q31_t)0x68d92c5d, (q31_t)0xb693e752, - (q31_t)0x68d59196, (q31_t)0xb68ec1d9, - (q31_t)0x68d1f68f, (q31_t)0xb6899c8d, (q31_t)0x68ce5b46, (q31_t)0xb684776e, (q31_t)0x68cabfbd, (q31_t)0xb67f527c, - (q31_t)0x68c723f3, (q31_t)0xb67a2db8, - (q31_t)0x68c387e9, (q31_t)0xb6750921, (q31_t)0x68bfeb9e, (q31_t)0xb66fe4b8, (q31_t)0x68bc4f13, (q31_t)0xb66ac07c, - (q31_t)0x68b8b247, (q31_t)0xb6659c6d, - (q31_t)0x68b5153a, (q31_t)0xb660788c, (q31_t)0x68b177ed, (q31_t)0xb65b54d8, (q31_t)0x68adda5f, (q31_t)0xb6563151, - (q31_t)0x68aa3c90, (q31_t)0xb6510df8, - (q31_t)0x68a69e81, (q31_t)0xb64beacd, (q31_t)0x68a30031, (q31_t)0xb646c7ce, (q31_t)0x689f61a1, (q31_t)0xb641a4fe, - (q31_t)0x689bc2d1, (q31_t)0xb63c825b, - (q31_t)0x689823bf, (q31_t)0xb6375fe5, (q31_t)0x6894846e, (q31_t)0xb6323d9d, (q31_t)0x6890e4dc, (q31_t)0xb62d1b82, - (q31_t)0x688d4509, (q31_t)0xb627f995, - (q31_t)0x6889a4f6, (q31_t)0xb622d7d6, (q31_t)0x688604a2, (q31_t)0xb61db644, (q31_t)0x6882640e, (q31_t)0xb61894df, - (q31_t)0x687ec339, (q31_t)0xb61373a9, - (q31_t)0x687b2224, (q31_t)0xb60e529f, (q31_t)0x687780ce, (q31_t)0xb60931c4, (q31_t)0x6873df38, (q31_t)0xb6041116, - (q31_t)0x68703d62, (q31_t)0xb5fef095, - (q31_t)0x686c9b4b, (q31_t)0xb5f9d043, (q31_t)0x6868f8f4, (q31_t)0xb5f4b01e, (q31_t)0x6865565c, (q31_t)0xb5ef9026, - (q31_t)0x6861b384, (q31_t)0xb5ea705d, - (q31_t)0x685e106c, (q31_t)0xb5e550c1, (q31_t)0x685a6d13, (q31_t)0xb5e03153, (q31_t)0x6856c979, (q31_t)0xb5db1212, - (q31_t)0x685325a0, (q31_t)0xb5d5f2ff, - (q31_t)0x684f8186, (q31_t)0xb5d0d41a, (q31_t)0x684bdd2c, (q31_t)0xb5cbb563, (q31_t)0x68483891, (q31_t)0xb5c696da, - (q31_t)0x684493b6, (q31_t)0xb5c1787e, - (q31_t)0x6840ee9b, (q31_t)0xb5bc5a50, (q31_t)0x683d493f, (q31_t)0xb5b73c50, (q31_t)0x6839a3a4, (q31_t)0xb5b21e7e, - (q31_t)0x6835fdc7, (q31_t)0xb5ad00d9, - (q31_t)0x683257ab, (q31_t)0xb5a7e362, (q31_t)0x682eb14e, (q31_t)0xb5a2c61a, (q31_t)0x682b0ab1, (q31_t)0xb59da8ff, - (q31_t)0x682763d4, (q31_t)0xb5988c12, - (q31_t)0x6823bcb7, (q31_t)0xb5936f53, (q31_t)0x68201559, (q31_t)0xb58e52c2, (q31_t)0x681c6dbb, (q31_t)0xb589365e, - (q31_t)0x6818c5dd, (q31_t)0xb5841a29, - (q31_t)0x68151dbe, (q31_t)0xb57efe22, (q31_t)0x68117560, (q31_t)0xb579e248, (q31_t)0x680dccc1, (q31_t)0xb574c69d, - (q31_t)0x680a23e2, (q31_t)0xb56fab1f, - (q31_t)0x68067ac3, (q31_t)0xb56a8fd0, (q31_t)0x6802d164, (q31_t)0xb56574ae, (q31_t)0x67ff27c4, (q31_t)0xb56059bb, - (q31_t)0x67fb7de5, (q31_t)0xb55b3ef5, - (q31_t)0x67f7d3c5, (q31_t)0xb556245e, (q31_t)0x67f42965, (q31_t)0xb55109f5, (q31_t)0x67f07ec5, (q31_t)0xb54befba, - (q31_t)0x67ecd3e5, (q31_t)0xb546d5ac, - (q31_t)0x67e928c5, (q31_t)0xb541bbcd, (q31_t)0x67e57d64, (q31_t)0xb53ca21c, (q31_t)0x67e1d1c4, (q31_t)0xb5378899, - (q31_t)0x67de25e3, (q31_t)0xb5326f45, - (q31_t)0x67da79c3, (q31_t)0xb52d561e, (q31_t)0x67d6cd62, (q31_t)0xb5283d26, (q31_t)0x67d320c1, (q31_t)0xb523245b, - (q31_t)0x67cf73e1, (q31_t)0xb51e0bbf, - (q31_t)0x67cbc6c0, (q31_t)0xb518f351, (q31_t)0x67c8195f, (q31_t)0xb513db12, (q31_t)0x67c46bbe, (q31_t)0xb50ec300, - (q31_t)0x67c0bddd, (q31_t)0xb509ab1d, - (q31_t)0x67bd0fbd, (q31_t)0xb5049368, (q31_t)0x67b9615c, (q31_t)0xb4ff7be1, (q31_t)0x67b5b2bb, (q31_t)0xb4fa6489, - (q31_t)0x67b203da, (q31_t)0xb4f54d5f, - (q31_t)0x67ae54ba, (q31_t)0xb4f03663, (q31_t)0x67aaa559, (q31_t)0xb4eb1f95, (q31_t)0x67a6f5b8, (q31_t)0xb4e608f6, - (q31_t)0x67a345d8, (q31_t)0xb4e0f285, - (q31_t)0x679f95b7, (q31_t)0xb4dbdc42, (q31_t)0x679be557, (q31_t)0xb4d6c62e, (q31_t)0x679834b6, (q31_t)0xb4d1b048, - (q31_t)0x679483d6, (q31_t)0xb4cc9a90, - (q31_t)0x6790d2b6, (q31_t)0xb4c78507, (q31_t)0x678d2156, (q31_t)0xb4c26fad, (q31_t)0x67896fb6, (q31_t)0xb4bd5a80, - (q31_t)0x6785bdd6, (q31_t)0xb4b84582, - (q31_t)0x67820bb7, (q31_t)0xb4b330b3, (q31_t)0x677e5957, (q31_t)0xb4ae1c12, (q31_t)0x677aa6b8, (q31_t)0xb4a9079f, - (q31_t)0x6776f3d9, (q31_t)0xb4a3f35b, - (q31_t)0x677340ba, (q31_t)0xb49edf45, (q31_t)0x676f8d5b, (q31_t)0xb499cb5e, (q31_t)0x676bd9bd, (q31_t)0xb494b7a6, - (q31_t)0x676825de, (q31_t)0xb48fa41c, - (q31_t)0x676471c0, (q31_t)0xb48a90c0, (q31_t)0x6760bd62, (q31_t)0xb4857d93, (q31_t)0x675d08c4, (q31_t)0xb4806a95, - (q31_t)0x675953e7, (q31_t)0xb47b57c5, - (q31_t)0x67559eca, (q31_t)0xb4764523, (q31_t)0x6751e96d, (q31_t)0xb47132b1, (q31_t)0x674e33d0, (q31_t)0xb46c206d, - (q31_t)0x674a7df4, (q31_t)0xb4670e57, - (q31_t)0x6746c7d8, (q31_t)0xb461fc70, (q31_t)0x6743117c, (q31_t)0xb45ceab8, (q31_t)0x673f5ae0, (q31_t)0xb457d92f, - (q31_t)0x673ba405, (q31_t)0xb452c7d4, - (q31_t)0x6737ecea, (q31_t)0xb44db6a8, (q31_t)0x67343590, (q31_t)0xb448a5aa, (q31_t)0x67307df5, (q31_t)0xb44394db, - (q31_t)0x672cc61c, (q31_t)0xb43e843b, - (q31_t)0x67290e02, (q31_t)0xb43973ca, (q31_t)0x672555a9, (q31_t)0xb4346387, (q31_t)0x67219d10, (q31_t)0xb42f5373, - (q31_t)0x671de438, (q31_t)0xb42a438e, - (q31_t)0x671a2b20, (q31_t)0xb42533d8, (q31_t)0x671671c8, (q31_t)0xb4202451, (q31_t)0x6712b831, (q31_t)0xb41b14f8, - (q31_t)0x670efe5a, (q31_t)0xb41605ce, - (q31_t)0x670b4444, (q31_t)0xb410f6d3, (q31_t)0x670789ee, (q31_t)0xb40be807, (q31_t)0x6703cf58, (q31_t)0xb406d969, - (q31_t)0x67001483, (q31_t)0xb401cafb, - (q31_t)0x66fc596f, (q31_t)0xb3fcbcbb, (q31_t)0x66f89e1b, (q31_t)0xb3f7aeaa, (q31_t)0x66f4e287, (q31_t)0xb3f2a0c9, - (q31_t)0x66f126b4, (q31_t)0xb3ed9316, - (q31_t)0x66ed6aa1, (q31_t)0xb3e88592, (q31_t)0x66e9ae4f, (q31_t)0xb3e3783d, (q31_t)0x66e5f1be, (q31_t)0xb3de6b17, - (q31_t)0x66e234ed, (q31_t)0xb3d95e1f, - (q31_t)0x66de77dc, (q31_t)0xb3d45157, (q31_t)0x66daba8c, (q31_t)0xb3cf44be, (q31_t)0x66d6fcfd, (q31_t)0xb3ca3854, - (q31_t)0x66d33f2e, (q31_t)0xb3c52c19, - (q31_t)0x66cf8120, (q31_t)0xb3c0200c, (q31_t)0x66cbc2d2, (q31_t)0xb3bb142f, (q31_t)0x66c80445, (q31_t)0xb3b60881, - (q31_t)0x66c44579, (q31_t)0xb3b0fd02, - (q31_t)0x66c0866d, (q31_t)0xb3abf1b2, (q31_t)0x66bcc721, (q31_t)0xb3a6e691, (q31_t)0x66b90797, (q31_t)0xb3a1dba0, - (q31_t)0x66b547cd, (q31_t)0xb39cd0dd, - (q31_t)0x66b187c3, (q31_t)0xb397c649, (q31_t)0x66adc77b, (q31_t)0xb392bbe5, (q31_t)0x66aa06f3, (q31_t)0xb38db1b0, - (q31_t)0x66a6462b, (q31_t)0xb388a7aa, - (q31_t)0x66a28524, (q31_t)0xb3839dd3, (q31_t)0x669ec3de, (q31_t)0xb37e942b, (q31_t)0x669b0259, (q31_t)0xb3798ab2, - (q31_t)0x66974095, (q31_t)0xb3748169, - (q31_t)0x66937e91, (q31_t)0xb36f784f, (q31_t)0x668fbc4e, (q31_t)0xb36a6f64, (q31_t)0x668bf9cb, (q31_t)0xb36566a8, - (q31_t)0x66883709, (q31_t)0xb3605e1c, - (q31_t)0x66847408, (q31_t)0xb35b55bf, (q31_t)0x6680b0c8, (q31_t)0xb3564d91, (q31_t)0x667ced49, (q31_t)0xb3514592, - (q31_t)0x6679298a, (q31_t)0xb34c3dc3, - (q31_t)0x6675658c, (q31_t)0xb3473623, (q31_t)0x6671a14f, (q31_t)0xb3422eb2, (q31_t)0x666ddcd3, (q31_t)0xb33d2771, - (q31_t)0x666a1818, (q31_t)0xb338205f, - (q31_t)0x6666531d, (q31_t)0xb333197c, (q31_t)0x66628de4, (q31_t)0xb32e12c9, (q31_t)0x665ec86b, (q31_t)0xb3290c45, - (q31_t)0x665b02b3, (q31_t)0xb32405f1, - (q31_t)0x66573cbb, (q31_t)0xb31effcc, (q31_t)0x66537685, (q31_t)0xb319f9d6, (q31_t)0x664fb010, (q31_t)0xb314f410, - (q31_t)0x664be95b, (q31_t)0xb30fee79, - (q31_t)0x66482267, (q31_t)0xb30ae912, (q31_t)0x66445b35, (q31_t)0xb305e3da, (q31_t)0x664093c3, (q31_t)0xb300ded2, - (q31_t)0x663ccc12, (q31_t)0xb2fbd9f9, - (q31_t)0x66390422, (q31_t)0xb2f6d550, (q31_t)0x66353bf3, (q31_t)0xb2f1d0d6, (q31_t)0x66317385, (q31_t)0xb2eccc8c, - (q31_t)0x662daad8, (q31_t)0xb2e7c871, - (q31_t)0x6629e1ec, (q31_t)0xb2e2c486, (q31_t)0x662618c1, (q31_t)0xb2ddc0ca, (q31_t)0x66224f56, (q31_t)0xb2d8bd3e, - (q31_t)0x661e85ad, (q31_t)0xb2d3b9e2, - (q31_t)0x661abbc5, (q31_t)0xb2ceb6b5, (q31_t)0x6616f19e, (q31_t)0xb2c9b3b8, (q31_t)0x66132738, (q31_t)0xb2c4b0ea, - (q31_t)0x660f5c93, (q31_t)0xb2bfae4c, - (q31_t)0x660b91af, (q31_t)0xb2baabde, (q31_t)0x6607c68c, (q31_t)0xb2b5a99f, (q31_t)0x6603fb2a, (q31_t)0xb2b0a790, - (q31_t)0x66002f89, (q31_t)0xb2aba5b1, - (q31_t)0x65fc63a9, (q31_t)0xb2a6a402, (q31_t)0x65f8978b, (q31_t)0xb2a1a282, (q31_t)0x65f4cb2d, (q31_t)0xb29ca132, - (q31_t)0x65f0fe91, (q31_t)0xb297a011, - (q31_t)0x65ed31b5, (q31_t)0xb2929f21, (q31_t)0x65e9649b, (q31_t)0xb28d9e60, (q31_t)0x65e59742, (q31_t)0xb2889dcf, - (q31_t)0x65e1c9aa, (q31_t)0xb2839d6d, - (q31_t)0x65ddfbd3, (q31_t)0xb27e9d3c, (q31_t)0x65da2dbd, (q31_t)0xb2799d3a, (q31_t)0x65d65f69, (q31_t)0xb2749d68, - (q31_t)0x65d290d6, (q31_t)0xb26f9dc6, - (q31_t)0x65cec204, (q31_t)0xb26a9e54, (q31_t)0x65caf2f3, (q31_t)0xb2659f12, (q31_t)0x65c723a3, (q31_t)0xb2609fff, - (q31_t)0x65c35415, (q31_t)0xb25ba11d, - (q31_t)0x65bf8447, (q31_t)0xb256a26a, (q31_t)0x65bbb43b, (q31_t)0xb251a3e7, (q31_t)0x65b7e3f1, (q31_t)0xb24ca594, - (q31_t)0x65b41367, (q31_t)0xb247a771, - (q31_t)0x65b0429f, (q31_t)0xb242a97e, (q31_t)0x65ac7198, (q31_t)0xb23dabbb, (q31_t)0x65a8a052, (q31_t)0xb238ae28, - (q31_t)0x65a4cece, (q31_t)0xb233b0c5, - (q31_t)0x65a0fd0b, (q31_t)0xb22eb392, (q31_t)0x659d2b09, (q31_t)0xb229b68f, (q31_t)0x659958c9, (q31_t)0xb224b9bc, - (q31_t)0x6595864a, (q31_t)0xb21fbd19, - (q31_t)0x6591b38c, (q31_t)0xb21ac0a6, (q31_t)0x658de08f, (q31_t)0xb215c463, (q31_t)0x658a0d54, (q31_t)0xb210c850, - (q31_t)0x658639db, (q31_t)0xb20bcc6d, - (q31_t)0x65826622, (q31_t)0xb206d0ba, (q31_t)0x657e922b, (q31_t)0xb201d537, (q31_t)0x657abdf6, (q31_t)0xb1fcd9e5, - (q31_t)0x6576e982, (q31_t)0xb1f7dec2, - (q31_t)0x657314cf, (q31_t)0xb1f2e3d0, (q31_t)0x656f3fde, (q31_t)0xb1ede90e, (q31_t)0x656b6aae, (q31_t)0xb1e8ee7c, - (q31_t)0x6567953f, (q31_t)0xb1e3f41a, - (q31_t)0x6563bf92, (q31_t)0xb1def9e9, (q31_t)0x655fe9a7, (q31_t)0xb1d9ffe7, (q31_t)0x655c137d, (q31_t)0xb1d50616, - (q31_t)0x65583d14, (q31_t)0xb1d00c75, - (q31_t)0x6554666d, (q31_t)0xb1cb1304, (q31_t)0x65508f87, (q31_t)0xb1c619c3, (q31_t)0x654cb863, (q31_t)0xb1c120b3, - (q31_t)0x6548e101, (q31_t)0xb1bc27d3, - (q31_t)0x6545095f, (q31_t)0xb1b72f23, (q31_t)0x65413180, (q31_t)0xb1b236a4, (q31_t)0x653d5962, (q31_t)0xb1ad3e55, - (q31_t)0x65398105, (q31_t)0xb1a84636, - (q31_t)0x6535a86b, (q31_t)0xb1a34e47, (q31_t)0x6531cf91, (q31_t)0xb19e5689, (q31_t)0x652df679, (q31_t)0xb1995efb, - (q31_t)0x652a1d23, (q31_t)0xb194679e, - (q31_t)0x6526438f, (q31_t)0xb18f7071, (q31_t)0x652269bc, (q31_t)0xb18a7974, (q31_t)0x651e8faa, (q31_t)0xb18582a8, - (q31_t)0x651ab55b, (q31_t)0xb1808c0c, - (q31_t)0x6516dacd, (q31_t)0xb17b95a0, (q31_t)0x65130000, (q31_t)0xb1769f65, (q31_t)0x650f24f5, (q31_t)0xb171a95b, - (q31_t)0x650b49ac, (q31_t)0xb16cb380, - (q31_t)0x65076e25, (q31_t)0xb167bdd7, (q31_t)0x6503925f, (q31_t)0xb162c85d, (q31_t)0x64ffb65b, (q31_t)0xb15dd315, - (q31_t)0x64fbda18, (q31_t)0xb158ddfd, - (q31_t)0x64f7fd98, (q31_t)0xb153e915, (q31_t)0x64f420d9, (q31_t)0xb14ef45e, (q31_t)0x64f043dc, (q31_t)0xb149ffd7, - (q31_t)0x64ec66a0, (q31_t)0xb1450b81, - (q31_t)0x64e88926, (q31_t)0xb140175b, (q31_t)0x64e4ab6e, (q31_t)0xb13b2367, (q31_t)0x64e0cd78, (q31_t)0xb1362fa2, - (q31_t)0x64dcef44, (q31_t)0xb1313c0e, - (q31_t)0x64d910d1, (q31_t)0xb12c48ab, (q31_t)0x64d53220, (q31_t)0xb1275579, (q31_t)0x64d15331, (q31_t)0xb1226277, - (q31_t)0x64cd7404, (q31_t)0xb11d6fa6, - (q31_t)0x64c99498, (q31_t)0xb1187d05, (q31_t)0x64c5b4ef, (q31_t)0xb1138a95, (q31_t)0x64c1d507, (q31_t)0xb10e9856, - (q31_t)0x64bdf4e1, (q31_t)0xb109a648, - (q31_t)0x64ba147d, (q31_t)0xb104b46a, (q31_t)0x64b633da, (q31_t)0xb0ffc2bd, (q31_t)0x64b252fa, (q31_t)0xb0fad140, - (q31_t)0x64ae71dc, (q31_t)0xb0f5dff5, - (q31_t)0x64aa907f, (q31_t)0xb0f0eeda, (q31_t)0x64a6aee4, (q31_t)0xb0ebfdf0, (q31_t)0x64a2cd0c, (q31_t)0xb0e70d37, - (q31_t)0x649eeaf5, (q31_t)0xb0e21cae, - (q31_t)0x649b08a0, (q31_t)0xb0dd2c56, (q31_t)0x6497260d, (q31_t)0xb0d83c2f, (q31_t)0x6493433c, (q31_t)0xb0d34c39, - (q31_t)0x648f602d, (q31_t)0xb0ce5c74, - (q31_t)0x648b7ce0, (q31_t)0xb0c96ce0, (q31_t)0x64879955, (q31_t)0xb0c47d7c, (q31_t)0x6483b58c, (q31_t)0xb0bf8e4a, - (q31_t)0x647fd185, (q31_t)0xb0ba9f48, - (q31_t)0x647bed3f, (q31_t)0xb0b5b077, (q31_t)0x647808bc, (q31_t)0xb0b0c1d7, (q31_t)0x647423fb, (q31_t)0xb0abd368, - (q31_t)0x64703efc, (q31_t)0xb0a6e52a, - (q31_t)0x646c59bf, (q31_t)0xb0a1f71d, (q31_t)0x64687444, (q31_t)0xb09d0941, (q31_t)0x64648e8c, (q31_t)0xb0981b96, - (q31_t)0x6460a895, (q31_t)0xb0932e1b, - (q31_t)0x645cc260, (q31_t)0xb08e40d2, (q31_t)0x6458dbed, (q31_t)0xb08953ba, (q31_t)0x6454f53d, (q31_t)0xb08466d3, - (q31_t)0x64510e4e, (q31_t)0xb07f7a1c, - (q31_t)0x644d2722, (q31_t)0xb07a8d97, (q31_t)0x64493fb8, (q31_t)0xb075a143, (q31_t)0x64455810, (q31_t)0xb070b520, - (q31_t)0x6441702a, (q31_t)0xb06bc92e, - (q31_t)0x643d8806, (q31_t)0xb066dd6d, (q31_t)0x64399fa5, (q31_t)0xb061f1de, (q31_t)0x6435b706, (q31_t)0xb05d067f, - (q31_t)0x6431ce28, (q31_t)0xb0581b51, - (q31_t)0x642de50d, (q31_t)0xb0533055, (q31_t)0x6429fbb5, (q31_t)0xb04e458a, (q31_t)0x6426121e, (q31_t)0xb0495af0, - (q31_t)0x6422284a, (q31_t)0xb0447087, - (q31_t)0x641e3e38, (q31_t)0xb03f864f, (q31_t)0x641a53e8, (q31_t)0xb03a9c49, (q31_t)0x6416695a, (q31_t)0xb035b273, - (q31_t)0x64127e8f, (q31_t)0xb030c8cf, - (q31_t)0x640e9386, (q31_t)0xb02bdf5c, (q31_t)0x640aa83f, (q31_t)0xb026f61b, (q31_t)0x6406bcba, (q31_t)0xb0220d0a, - (q31_t)0x6402d0f8, (q31_t)0xb01d242b, - (q31_t)0x63fee4f8, (q31_t)0xb0183b7d, (q31_t)0x63faf8bb, (q31_t)0xb0135301, (q31_t)0x63f70c3f, (q31_t)0xb00e6ab5, - (q31_t)0x63f31f86, (q31_t)0xb009829c, - (q31_t)0x63ef3290, (q31_t)0xb0049ab3, (q31_t)0x63eb455c, (q31_t)0xafffb2fc, (q31_t)0x63e757ea, (q31_t)0xaffacb76, - (q31_t)0x63e36a3a, (q31_t)0xaff5e421, - (q31_t)0x63df7c4d, (q31_t)0xaff0fcfe, (q31_t)0x63db8e22, (q31_t)0xafec160c, (q31_t)0x63d79fba, (q31_t)0xafe72f4c, - (q31_t)0x63d3b114, (q31_t)0xafe248bd, - (q31_t)0x63cfc231, (q31_t)0xafdd625f, (q31_t)0x63cbd310, (q31_t)0xafd87c33, (q31_t)0x63c7e3b1, (q31_t)0xafd39638, - (q31_t)0x63c3f415, (q31_t)0xafceb06f, - (q31_t)0x63c0043b, (q31_t)0xafc9cad7, (q31_t)0x63bc1424, (q31_t)0xafc4e571, (q31_t)0x63b823cf, (q31_t)0xafc0003c, - (q31_t)0x63b4333d, (q31_t)0xafbb1b39, - (q31_t)0x63b0426d, (q31_t)0xafb63667, (q31_t)0x63ac5160, (q31_t)0xafb151c7, (q31_t)0x63a86015, (q31_t)0xafac6d58, - (q31_t)0x63a46e8d, (q31_t)0xafa7891b, - (q31_t)0x63a07cc7, (q31_t)0xafa2a50f, (q31_t)0x639c8ac4, (q31_t)0xaf9dc135, (q31_t)0x63989884, (q31_t)0xaf98dd8d, - (q31_t)0x6394a606, (q31_t)0xaf93fa16, - (q31_t)0x6390b34a, (q31_t)0xaf8f16d1, (q31_t)0x638cc051, (q31_t)0xaf8a33bd, (q31_t)0x6388cd1b, (q31_t)0xaf8550db, - (q31_t)0x6384d9a7, (q31_t)0xaf806e2b, - (q31_t)0x6380e5f6, (q31_t)0xaf7b8bac, (q31_t)0x637cf208, (q31_t)0xaf76a95f, (q31_t)0x6378fddc, (q31_t)0xaf71c743, - (q31_t)0x63750973, (q31_t)0xaf6ce55a, - (q31_t)0x637114cc, (q31_t)0xaf6803a2, (q31_t)0x636d1fe9, (q31_t)0xaf63221c, (q31_t)0x63692ac7, (q31_t)0xaf5e40c7, - (q31_t)0x63653569, (q31_t)0xaf595fa4, - (q31_t)0x63613fcd, (q31_t)0xaf547eb3, (q31_t)0x635d49f4, (q31_t)0xaf4f9df4, (q31_t)0x635953dd, (q31_t)0xaf4abd66, - (q31_t)0x63555d8a, (q31_t)0xaf45dd0b, - (q31_t)0x635166f9, (q31_t)0xaf40fce1, (q31_t)0x634d702b, (q31_t)0xaf3c1ce9, (q31_t)0x6349791f, (q31_t)0xaf373d22, - (q31_t)0x634581d6, (q31_t)0xaf325d8e, - (q31_t)0x63418a50, (q31_t)0xaf2d7e2b, (q31_t)0x633d928d, (q31_t)0xaf289efa, (q31_t)0x63399a8d, (q31_t)0xaf23bffb, - (q31_t)0x6335a24f, (q31_t)0xaf1ee12e, - (q31_t)0x6331a9d4, (q31_t)0xaf1a0293, (q31_t)0x632db11c, (q31_t)0xaf15242a, (q31_t)0x6329b827, (q31_t)0xaf1045f3, - (q31_t)0x6325bef5, (q31_t)0xaf0b67ed, - (q31_t)0x6321c585, (q31_t)0xaf068a1a, (q31_t)0x631dcbd9, (q31_t)0xaf01ac78, (q31_t)0x6319d1ef, (q31_t)0xaefccf09, - (q31_t)0x6315d7c8, (q31_t)0xaef7f1cb, - (q31_t)0x6311dd64, (q31_t)0xaef314c0, (q31_t)0x630de2c3, (q31_t)0xaeee37e6, (q31_t)0x6309e7e4, (q31_t)0xaee95b3f, - (q31_t)0x6305ecc9, (q31_t)0xaee47ec9, - (q31_t)0x6301f171, (q31_t)0xaedfa285, (q31_t)0x62fdf5db, (q31_t)0xaedac674, (q31_t)0x62f9fa09, (q31_t)0xaed5ea95, - (q31_t)0x62f5fdf9, (q31_t)0xaed10ee7, - (q31_t)0x62f201ac, (q31_t)0xaecc336c, (q31_t)0x62ee0523, (q31_t)0xaec75823, (q31_t)0x62ea085c, (q31_t)0xaec27d0c, - (q31_t)0x62e60b58, (q31_t)0xaebda227, - (q31_t)0x62e20e17, (q31_t)0xaeb8c774, (q31_t)0x62de109a, (q31_t)0xaeb3ecf3, (q31_t)0x62da12df, (q31_t)0xaeaf12a4, - (q31_t)0x62d614e7, (q31_t)0xaeaa3888, - (q31_t)0x62d216b3, (q31_t)0xaea55e9e, (q31_t)0x62ce1841, (q31_t)0xaea084e6, (q31_t)0x62ca1992, (q31_t)0xae9bab60, - (q31_t)0x62c61aa7, (q31_t)0xae96d20c, - (q31_t)0x62c21b7e, (q31_t)0xae91f8eb, (q31_t)0x62be1c19, (q31_t)0xae8d1ffb, (q31_t)0x62ba1c77, (q31_t)0xae88473e, - (q31_t)0x62b61c98, (q31_t)0xae836eb4, - (q31_t)0x62b21c7b, (q31_t)0xae7e965b, (q31_t)0x62ae1c23, (q31_t)0xae79be35, (q31_t)0x62aa1b8d, (q31_t)0xae74e641, - (q31_t)0x62a61aba, (q31_t)0xae700e80, - (q31_t)0x62a219aa, (q31_t)0xae6b36f0, (q31_t)0x629e185e, (q31_t)0xae665f93, (q31_t)0x629a16d5, (q31_t)0xae618869, - (q31_t)0x6296150f, (q31_t)0xae5cb171, - (q31_t)0x6292130c, (q31_t)0xae57daab, (q31_t)0x628e10cc, (q31_t)0xae530417, (q31_t)0x628a0e50, (q31_t)0xae4e2db6, - (q31_t)0x62860b97, (q31_t)0xae495787, - (q31_t)0x628208a1, (q31_t)0xae44818b, (q31_t)0x627e056e, (q31_t)0xae3fabc1, (q31_t)0x627a01fe, (q31_t)0xae3ad629, - (q31_t)0x6275fe52, (q31_t)0xae3600c4, - (q31_t)0x6271fa69, (q31_t)0xae312b92, (q31_t)0x626df643, (q31_t)0xae2c5691, (q31_t)0x6269f1e1, (q31_t)0xae2781c4, - (q31_t)0x6265ed42, (q31_t)0xae22ad29, - (q31_t)0x6261e866, (q31_t)0xae1dd8c0, (q31_t)0x625de34e, (q31_t)0xae19048a, (q31_t)0x6259ddf8, (q31_t)0xae143086, - (q31_t)0x6255d866, (q31_t)0xae0f5cb5, - (q31_t)0x6251d298, (q31_t)0xae0a8916, (q31_t)0x624dcc8d, (q31_t)0xae05b5aa, (q31_t)0x6249c645, (q31_t)0xae00e271, - (q31_t)0x6245bfc0, (q31_t)0xadfc0f6a, - (q31_t)0x6241b8ff, (q31_t)0xadf73c96, (q31_t)0x623db202, (q31_t)0xadf269f4, (q31_t)0x6239aac7, (q31_t)0xaded9785, - (q31_t)0x6235a351, (q31_t)0xade8c548, - (q31_t)0x62319b9d, (q31_t)0xade3f33e, (q31_t)0x622d93ad, (q31_t)0xaddf2167, (q31_t)0x62298b81, (q31_t)0xadda4fc3, - (q31_t)0x62258317, (q31_t)0xadd57e51, - (q31_t)0x62217a72, (q31_t)0xadd0ad12, (q31_t)0x621d7190, (q31_t)0xadcbdc05, (q31_t)0x62196871, (q31_t)0xadc70b2c, - (q31_t)0x62155f16, (q31_t)0xadc23a85, - (q31_t)0x6211557e, (q31_t)0xadbd6a10, (q31_t)0x620d4baa, (q31_t)0xadb899cf, (q31_t)0x62094199, (q31_t)0xadb3c9c0, - (q31_t)0x6205374c, (q31_t)0xadaef9e4, - (q31_t)0x62012cc2, (q31_t)0xadaa2a3b, (q31_t)0x61fd21fc, (q31_t)0xada55ac4, (q31_t)0x61f916f9, (q31_t)0xada08b80, - (q31_t)0x61f50bba, (q31_t)0xad9bbc70, - (q31_t)0x61f1003f, (q31_t)0xad96ed92, (q31_t)0x61ecf487, (q31_t)0xad921ee6, (q31_t)0x61e8e893, (q31_t)0xad8d506e, - (q31_t)0x61e4dc62, (q31_t)0xad888229, - (q31_t)0x61e0cff5, (q31_t)0xad83b416, (q31_t)0x61dcc34c, (q31_t)0xad7ee636, (q31_t)0x61d8b666, (q31_t)0xad7a1889, - (q31_t)0x61d4a944, (q31_t)0xad754b0f, - (q31_t)0x61d09be5, (q31_t)0xad707dc8, (q31_t)0x61cc8e4b, (q31_t)0xad6bb0b4, (q31_t)0x61c88074, (q31_t)0xad66e3d3, - (q31_t)0x61c47260, (q31_t)0xad621725, - (q31_t)0x61c06410, (q31_t)0xad5d4aaa, (q31_t)0x61bc5584, (q31_t)0xad587e61, (q31_t)0x61b846bc, (q31_t)0xad53b24c, - (q31_t)0x61b437b7, (q31_t)0xad4ee66a, - (q31_t)0x61b02876, (q31_t)0xad4a1aba, (q31_t)0x61ac18f9, (q31_t)0xad454f3e, (q31_t)0x61a80940, (q31_t)0xad4083f5, - (q31_t)0x61a3f94a, (q31_t)0xad3bb8df, - (q31_t)0x619fe918, (q31_t)0xad36edfc, (q31_t)0x619bd8aa, (q31_t)0xad32234b, (q31_t)0x6197c800, (q31_t)0xad2d58ce, - (q31_t)0x6193b719, (q31_t)0xad288e85, - (q31_t)0x618fa5f7, (q31_t)0xad23c46e, (q31_t)0x618b9498, (q31_t)0xad1efa8a, (q31_t)0x618782fd, (q31_t)0xad1a30d9, - (q31_t)0x61837126, (q31_t)0xad15675c, - (q31_t)0x617f5f12, (q31_t)0xad109e12, (q31_t)0x617b4cc3, (q31_t)0xad0bd4fb, (q31_t)0x61773a37, (q31_t)0xad070c17, - (q31_t)0x61732770, (q31_t)0xad024366, - (q31_t)0x616f146c, (q31_t)0xacfd7ae8, (q31_t)0x616b012c, (q31_t)0xacf8b29e, (q31_t)0x6166edb0, (q31_t)0xacf3ea87, - (q31_t)0x6162d9f8, (q31_t)0xacef22a3, - (q31_t)0x615ec603, (q31_t)0xacea5af2, (q31_t)0x615ab1d3, (q31_t)0xace59375, (q31_t)0x61569d67, (q31_t)0xace0cc2b, - (q31_t)0x615288be, (q31_t)0xacdc0514, - (q31_t)0x614e73da, (q31_t)0xacd73e30, (q31_t)0x614a5eba, (q31_t)0xacd27780, (q31_t)0x6146495d, (q31_t)0xaccdb103, - (q31_t)0x614233c5, (q31_t)0xacc8eab9, - (q31_t)0x613e1df0, (q31_t)0xacc424a3, (q31_t)0x613a07e0, (q31_t)0xacbf5ec0, (q31_t)0x6135f193, (q31_t)0xacba9910, - (q31_t)0x6131db0b, (q31_t)0xacb5d394, - (q31_t)0x612dc447, (q31_t)0xacb10e4b, (q31_t)0x6129ad46, (q31_t)0xacac4935, (q31_t)0x6125960a, (q31_t)0xaca78453, - (q31_t)0x61217e92, (q31_t)0xaca2bfa4, - (q31_t)0x611d66de, (q31_t)0xac9dfb29, (q31_t)0x61194eee, (q31_t)0xac9936e1, (q31_t)0x611536c2, (q31_t)0xac9472cd, - (q31_t)0x61111e5b, (q31_t)0xac8faeec, - (q31_t)0x610d05b7, (q31_t)0xac8aeb3e, (q31_t)0x6108ecd8, (q31_t)0xac8627c4, (q31_t)0x6104d3bc, (q31_t)0xac81647e, - (q31_t)0x6100ba65, (q31_t)0xac7ca16b, - (q31_t)0x60fca0d2, (q31_t)0xac77de8b, (q31_t)0x60f88703, (q31_t)0xac731bdf, (q31_t)0x60f46cf9, (q31_t)0xac6e5967, - (q31_t)0x60f052b2, (q31_t)0xac699722, - (q31_t)0x60ec3830, (q31_t)0xac64d510, (q31_t)0x60e81d72, (q31_t)0xac601333, (q31_t)0x60e40278, (q31_t)0xac5b5189, - (q31_t)0x60dfe743, (q31_t)0xac569012, - (q31_t)0x60dbcbd1, (q31_t)0xac51cecf, (q31_t)0x60d7b024, (q31_t)0xac4d0dc0, (q31_t)0x60d3943b, (q31_t)0xac484ce4, - (q31_t)0x60cf7817, (q31_t)0xac438c3c, - (q31_t)0x60cb5bb7, (q31_t)0xac3ecbc7, (q31_t)0x60c73f1b, (q31_t)0xac3a0b87, (q31_t)0x60c32243, (q31_t)0xac354b7a, - (q31_t)0x60bf0530, (q31_t)0xac308ba0, - (q31_t)0x60bae7e1, (q31_t)0xac2bcbfa, (q31_t)0x60b6ca56, (q31_t)0xac270c88, (q31_t)0x60b2ac8f, (q31_t)0xac224d4a, - (q31_t)0x60ae8e8d, (q31_t)0xac1d8e40, - (q31_t)0x60aa7050, (q31_t)0xac18cf69, (q31_t)0x60a651d7, (q31_t)0xac1410c6, (q31_t)0x60a23322, (q31_t)0xac0f5256, - (q31_t)0x609e1431, (q31_t)0xac0a941b, - (q31_t)0x6099f505, (q31_t)0xac05d613, (q31_t)0x6095d59d, (q31_t)0xac01183f, (q31_t)0x6091b5fa, (q31_t)0xabfc5a9f, - (q31_t)0x608d961b, (q31_t)0xabf79d33, - (q31_t)0x60897601, (q31_t)0xabf2dffb, (q31_t)0x608555ab, (q31_t)0xabee22f6, (q31_t)0x60813519, (q31_t)0xabe96625, - (q31_t)0x607d144c, (q31_t)0xabe4a988, - (q31_t)0x6078f344, (q31_t)0xabdfed1f, (q31_t)0x6074d200, (q31_t)0xabdb30ea, (q31_t)0x6070b080, (q31_t)0xabd674e9, - (q31_t)0x606c8ec5, (q31_t)0xabd1b91c, - (q31_t)0x60686ccf, (q31_t)0xabccfd83, (q31_t)0x60644a9d, (q31_t)0xabc8421d, (q31_t)0x6060282f, (q31_t)0xabc386ec, - (q31_t)0x605c0587, (q31_t)0xabbecbee, - (q31_t)0x6057e2a2, (q31_t)0xabba1125, (q31_t)0x6053bf82, (q31_t)0xabb5568f, (q31_t)0x604f9c27, (q31_t)0xabb09c2e, - (q31_t)0x604b7891, (q31_t)0xababe200, - (q31_t)0x604754bf, (q31_t)0xaba72807, (q31_t)0x604330b1, (q31_t)0xaba26e41, (q31_t)0x603f0c69, (q31_t)0xab9db4b0, - (q31_t)0x603ae7e5, (q31_t)0xab98fb52, - (q31_t)0x6036c325, (q31_t)0xab944229, (q31_t)0x60329e2a, (q31_t)0xab8f8934, (q31_t)0x602e78f4, (q31_t)0xab8ad073, - (q31_t)0x602a5383, (q31_t)0xab8617e6, - (q31_t)0x60262dd6, (q31_t)0xab815f8d, (q31_t)0x602207ee, (q31_t)0xab7ca768, (q31_t)0x601de1ca, (q31_t)0xab77ef77, - (q31_t)0x6019bb6b, (q31_t)0xab7337bb, - (q31_t)0x601594d1, (q31_t)0xab6e8032, (q31_t)0x60116dfc, (q31_t)0xab69c8de, (q31_t)0x600d46ec, (q31_t)0xab6511be, - (q31_t)0x60091fa0, (q31_t)0xab605ad2, - (q31_t)0x6004f819, (q31_t)0xab5ba41a, (q31_t)0x6000d057, (q31_t)0xab56ed97, (q31_t)0x5ffca859, (q31_t)0xab523748, - (q31_t)0x5ff88021, (q31_t)0xab4d812d, - (q31_t)0x5ff457ad, (q31_t)0xab48cb46, (q31_t)0x5ff02efe, (q31_t)0xab441593, (q31_t)0x5fec0613, (q31_t)0xab3f6015, - (q31_t)0x5fe7dcee, (q31_t)0xab3aaacb, - (q31_t)0x5fe3b38d, (q31_t)0xab35f5b5, (q31_t)0x5fdf89f2, (q31_t)0xab3140d4, (q31_t)0x5fdb601b, (q31_t)0xab2c8c27, - (q31_t)0x5fd73609, (q31_t)0xab27d7ae, - (q31_t)0x5fd30bbc, (q31_t)0xab23236a, (q31_t)0x5fcee133, (q31_t)0xab1e6f5a, (q31_t)0x5fcab670, (q31_t)0xab19bb7e, - (q31_t)0x5fc68b72, (q31_t)0xab1507d7, - (q31_t)0x5fc26038, (q31_t)0xab105464, (q31_t)0x5fbe34c4, (q31_t)0xab0ba125, (q31_t)0x5fba0914, (q31_t)0xab06ee1b, - (q31_t)0x5fb5dd29, (q31_t)0xab023b46, - (q31_t)0x5fb1b104, (q31_t)0xaafd88a4, (q31_t)0x5fad84a3, (q31_t)0xaaf8d637, (q31_t)0x5fa95807, (q31_t)0xaaf423ff, - (q31_t)0x5fa52b31, (q31_t)0xaaef71fb, - (q31_t)0x5fa0fe1f, (q31_t)0xaaeac02c, (q31_t)0x5f9cd0d2, (q31_t)0xaae60e91, (q31_t)0x5f98a34a, (q31_t)0xaae15d2a, - (q31_t)0x5f947588, (q31_t)0xaadcabf8, - (q31_t)0x5f90478a, (q31_t)0xaad7fafb, (q31_t)0x5f8c1951, (q31_t)0xaad34a32, (q31_t)0x5f87eade, (q31_t)0xaace999d, - (q31_t)0x5f83bc2f, (q31_t)0xaac9e93e, - (q31_t)0x5f7f8d46, (q31_t)0xaac53912, (q31_t)0x5f7b5e22, (q31_t)0xaac0891c, (q31_t)0x5f772ec2, (q31_t)0xaabbd959, - (q31_t)0x5f72ff28, (q31_t)0xaab729cc, - (q31_t)0x5f6ecf53, (q31_t)0xaab27a73, (q31_t)0x5f6a9f44, (q31_t)0xaaadcb4f, (q31_t)0x5f666ef9, (q31_t)0xaaa91c5f, - (q31_t)0x5f623e73, (q31_t)0xaaa46da4, - (q31_t)0x5f5e0db3, (q31_t)0xaa9fbf1e, (q31_t)0x5f59dcb8, (q31_t)0xaa9b10cc, (q31_t)0x5f55ab82, (q31_t)0xaa9662af, - (q31_t)0x5f517a11, (q31_t)0xaa91b4c7, - (q31_t)0x5f4d4865, (q31_t)0xaa8d0713, (q31_t)0x5f49167f, (q31_t)0xaa885994, (q31_t)0x5f44e45e, (q31_t)0xaa83ac4a, - (q31_t)0x5f40b202, (q31_t)0xaa7eff34, - (q31_t)0x5f3c7f6b, (q31_t)0xaa7a5253, (q31_t)0x5f384c9a, (q31_t)0xaa75a5a8, (q31_t)0x5f34198e, (q31_t)0xaa70f930, - (q31_t)0x5f2fe647, (q31_t)0xaa6c4cee, - (q31_t)0x5f2bb2c5, (q31_t)0xaa67a0e0, (q31_t)0x5f277f09, (q31_t)0xaa62f507, (q31_t)0x5f234b12, (q31_t)0xaa5e4963, - (q31_t)0x5f1f16e0, (q31_t)0xaa599df4, - (q31_t)0x5f1ae274, (q31_t)0xaa54f2ba, (q31_t)0x5f16adcc, (q31_t)0xaa5047b4, (q31_t)0x5f1278eb, (q31_t)0xaa4b9ce3, - (q31_t)0x5f0e43ce, (q31_t)0xaa46f248, - (q31_t)0x5f0a0e77, (q31_t)0xaa4247e1, (q31_t)0x5f05d8e6, (q31_t)0xaa3d9daf, (q31_t)0x5f01a31a, (q31_t)0xaa38f3b1, - (q31_t)0x5efd6d13, (q31_t)0xaa3449e9, - (q31_t)0x5ef936d1, (q31_t)0xaa2fa056, (q31_t)0x5ef50055, (q31_t)0xaa2af6f7, (q31_t)0x5ef0c99f, (q31_t)0xaa264dce, - (q31_t)0x5eec92ae, (q31_t)0xaa21a4d9, - (q31_t)0x5ee85b82, (q31_t)0xaa1cfc1a, (q31_t)0x5ee4241c, (q31_t)0xaa18538f, (q31_t)0x5edfec7b, (q31_t)0xaa13ab3a, - (q31_t)0x5edbb49f, (q31_t)0xaa0f0319, - (q31_t)0x5ed77c8a, (q31_t)0xaa0a5b2e, (q31_t)0x5ed34439, (q31_t)0xaa05b377, (q31_t)0x5ecf0baf, (q31_t)0xaa010bf6, - (q31_t)0x5ecad2e9, (q31_t)0xa9fc64a9, - (q31_t)0x5ec699e9, (q31_t)0xa9f7bd92, (q31_t)0x5ec260af, (q31_t)0xa9f316b0, (q31_t)0x5ebe273b, (q31_t)0xa9ee7002, - (q31_t)0x5eb9ed8b, (q31_t)0xa9e9c98a, - (q31_t)0x5eb5b3a2, (q31_t)0xa9e52347, (q31_t)0x5eb1797e, (q31_t)0xa9e07d39, (q31_t)0x5ead3f1f, (q31_t)0xa9dbd761, - (q31_t)0x5ea90487, (q31_t)0xa9d731bd, - (q31_t)0x5ea4c9b3, (q31_t)0xa9d28c4e, (q31_t)0x5ea08ea6, (q31_t)0xa9cde715, (q31_t)0x5e9c535e, (q31_t)0xa9c94211, - (q31_t)0x5e9817dc, (q31_t)0xa9c49d42, - (q31_t)0x5e93dc1f, (q31_t)0xa9bff8a8, (q31_t)0x5e8fa028, (q31_t)0xa9bb5444, (q31_t)0x5e8b63f7, (q31_t)0xa9b6b014, - (q31_t)0x5e87278b, (q31_t)0xa9b20c1a, - (q31_t)0x5e82eae5, (q31_t)0xa9ad6855, (q31_t)0x5e7eae05, (q31_t)0xa9a8c4c5, (q31_t)0x5e7a70ea, (q31_t)0xa9a4216b, - (q31_t)0x5e763395, (q31_t)0xa99f7e46, - (q31_t)0x5e71f606, (q31_t)0xa99adb56, (q31_t)0x5e6db83d, (q31_t)0xa996389b, (q31_t)0x5e697a39, (q31_t)0xa9919616, - (q31_t)0x5e653bfc, (q31_t)0xa98cf3c6, - (q31_t)0x5e60fd84, (q31_t)0xa98851ac, (q31_t)0x5e5cbed1, (q31_t)0xa983afc6, (q31_t)0x5e587fe5, (q31_t)0xa97f0e16, - (q31_t)0x5e5440be, (q31_t)0xa97a6c9c, - (q31_t)0x5e50015d, (q31_t)0xa975cb57, (q31_t)0x5e4bc1c2, (q31_t)0xa9712a47, (q31_t)0x5e4781ed, (q31_t)0xa96c896c, - (q31_t)0x5e4341de, (q31_t)0xa967e8c7, - (q31_t)0x5e3f0194, (q31_t)0xa9634858, (q31_t)0x5e3ac110, (q31_t)0xa95ea81d, (q31_t)0x5e368053, (q31_t)0xa95a0819, - (q31_t)0x5e323f5b, (q31_t)0xa9556849, - (q31_t)0x5e2dfe29, (q31_t)0xa950c8b0, (q31_t)0x5e29bcbd, (q31_t)0xa94c294b, (q31_t)0x5e257b17, (q31_t)0xa9478a1c, - (q31_t)0x5e213936, (q31_t)0xa942eb23, - (q31_t)0x5e1cf71c, (q31_t)0xa93e4c5f, (q31_t)0x5e18b4c8, (q31_t)0xa939add1, (q31_t)0x5e147239, (q31_t)0xa9350f78, - (q31_t)0x5e102f71, (q31_t)0xa9307155, - (q31_t)0x5e0bec6e, (q31_t)0xa92bd367, (q31_t)0x5e07a932, (q31_t)0xa92735af, (q31_t)0x5e0365bb, (q31_t)0xa922982c, - (q31_t)0x5dff220b, (q31_t)0xa91dfadf, - (q31_t)0x5dfade20, (q31_t)0xa9195dc7, (q31_t)0x5df699fc, (q31_t)0xa914c0e6, (q31_t)0x5df2559e, (q31_t)0xa9102439, - (q31_t)0x5dee1105, (q31_t)0xa90b87c3, - (q31_t)0x5de9cc33, (q31_t)0xa906eb82, (q31_t)0x5de58727, (q31_t)0xa9024f76, (q31_t)0x5de141e1, (q31_t)0xa8fdb3a1, - (q31_t)0x5ddcfc61, (q31_t)0xa8f91801, - (q31_t)0x5dd8b6a7, (q31_t)0xa8f47c97, (q31_t)0x5dd470b3, (q31_t)0xa8efe162, (q31_t)0x5dd02a85, (q31_t)0xa8eb4663, - (q31_t)0x5dcbe41d, (q31_t)0xa8e6ab9a, - (q31_t)0x5dc79d7c, (q31_t)0xa8e21106, (q31_t)0x5dc356a1, (q31_t)0xa8dd76a9, (q31_t)0x5dbf0f8c, (q31_t)0xa8d8dc81, - (q31_t)0x5dbac83d, (q31_t)0xa8d4428f, - (q31_t)0x5db680b4, (q31_t)0xa8cfa8d2, (q31_t)0x5db238f1, (q31_t)0xa8cb0f4b, (q31_t)0x5dadf0f5, (q31_t)0xa8c675fb, - (q31_t)0x5da9a8bf, (q31_t)0xa8c1dce0, - (q31_t)0x5da5604f, (q31_t)0xa8bd43fa, (q31_t)0x5da117a5, (q31_t)0xa8b8ab4b, (q31_t)0x5d9ccec2, (q31_t)0xa8b412d1, - (q31_t)0x5d9885a5, (q31_t)0xa8af7a8e, - (q31_t)0x5d943c4e, (q31_t)0xa8aae280, (q31_t)0x5d8ff2bd, (q31_t)0xa8a64aa8, (q31_t)0x5d8ba8f3, (q31_t)0xa8a1b306, - (q31_t)0x5d875eef, (q31_t)0xa89d1b99, - (q31_t)0x5d8314b1, (q31_t)0xa8988463, (q31_t)0x5d7eca39, (q31_t)0xa893ed63, (q31_t)0x5d7a7f88, (q31_t)0xa88f5698, - (q31_t)0x5d76349d, (q31_t)0xa88ac004, - (q31_t)0x5d71e979, (q31_t)0xa88629a5, (q31_t)0x5d6d9e1b, (q31_t)0xa881937c, (q31_t)0x5d695283, (q31_t)0xa87cfd8a, - (q31_t)0x5d6506b2, (q31_t)0xa87867cd, - (q31_t)0x5d60baa7, (q31_t)0xa873d246, (q31_t)0x5d5c6e62, (q31_t)0xa86f3cf6, (q31_t)0x5d5821e4, (q31_t)0xa86aa7db, - (q31_t)0x5d53d52d, (q31_t)0xa86612f6, - (q31_t)0x5d4f883b, (q31_t)0xa8617e48, (q31_t)0x5d4b3b10, (q31_t)0xa85ce9cf, (q31_t)0x5d46edac, (q31_t)0xa858558d, - (q31_t)0x5d42a00e, (q31_t)0xa853c180, - (q31_t)0x5d3e5237, (q31_t)0xa84f2daa, (q31_t)0x5d3a0426, (q31_t)0xa84a9a0a, (q31_t)0x5d35b5db, (q31_t)0xa84606a0, - (q31_t)0x5d316757, (q31_t)0xa841736c, - (q31_t)0x5d2d189a, (q31_t)0xa83ce06e, (q31_t)0x5d28c9a3, (q31_t)0xa8384da6, (q31_t)0x5d247a72, (q31_t)0xa833bb14, - (q31_t)0x5d202b09, (q31_t)0xa82f28b9, - (q31_t)0x5d1bdb65, (q31_t)0xa82a9693, (q31_t)0x5d178b89, (q31_t)0xa82604a4, (q31_t)0x5d133b72, (q31_t)0xa82172eb, - (q31_t)0x5d0eeb23, (q31_t)0xa81ce169, - (q31_t)0x5d0a9a9a, (q31_t)0xa818501c, (q31_t)0x5d0649d7, (q31_t)0xa813bf06, (q31_t)0x5d01f8dc, (q31_t)0xa80f2e26, - (q31_t)0x5cfda7a7, (q31_t)0xa80a9d7c, - (q31_t)0x5cf95638, (q31_t)0xa8060d08, (q31_t)0x5cf50490, (q31_t)0xa8017ccb, (q31_t)0x5cf0b2af, (q31_t)0xa7fcecc4, - (q31_t)0x5cec6095, (q31_t)0xa7f85cf3, - (q31_t)0x5ce80e41, (q31_t)0xa7f3cd59, (q31_t)0x5ce3bbb4, (q31_t)0xa7ef3df5, (q31_t)0x5cdf68ed, (q31_t)0xa7eaaec7, - (q31_t)0x5cdb15ed, (q31_t)0xa7e61fd0, - (q31_t)0x5cd6c2b5, (q31_t)0xa7e1910f, (q31_t)0x5cd26f42, (q31_t)0xa7dd0284, (q31_t)0x5cce1b97, (q31_t)0xa7d8742f, - (q31_t)0x5cc9c7b2, (q31_t)0xa7d3e611, - (q31_t)0x5cc57394, (q31_t)0xa7cf582a, (q31_t)0x5cc11f3d, (q31_t)0xa7caca79, (q31_t)0x5cbccaac, (q31_t)0xa7c63cfe, - (q31_t)0x5cb875e3, (q31_t)0xa7c1afb9, - (q31_t)0x5cb420e0, (q31_t)0xa7bd22ac, (q31_t)0x5cafcba4, (q31_t)0xa7b895d4, (q31_t)0x5cab762f, (q31_t)0xa7b40933, - (q31_t)0x5ca72080, (q31_t)0xa7af7cc8, - (q31_t)0x5ca2ca99, (q31_t)0xa7aaf094, (q31_t)0x5c9e7478, (q31_t)0xa7a66497, (q31_t)0x5c9a1e1e, (q31_t)0xa7a1d8d0, - (q31_t)0x5c95c78b, (q31_t)0xa79d4d3f, - (q31_t)0x5c9170bf, (q31_t)0xa798c1e5, (q31_t)0x5c8d19ba, (q31_t)0xa79436c1, (q31_t)0x5c88c27c, (q31_t)0xa78fabd4, - (q31_t)0x5c846b05, (q31_t)0xa78b211e, - (q31_t)0x5c801354, (q31_t)0xa786969e, (q31_t)0x5c7bbb6b, (q31_t)0xa7820c55, (q31_t)0x5c776348, (q31_t)0xa77d8242, - (q31_t)0x5c730aed, (q31_t)0xa778f866, - (q31_t)0x5c6eb258, (q31_t)0xa7746ec0, (q31_t)0x5c6a598b, (q31_t)0xa76fe551, (q31_t)0x5c660084, (q31_t)0xa76b5c19, - (q31_t)0x5c61a745, (q31_t)0xa766d317, - (q31_t)0x5c5d4dcc, (q31_t)0xa7624a4d, (q31_t)0x5c58f41a, (q31_t)0xa75dc1b8, (q31_t)0x5c549a30, (q31_t)0xa759395b, - (q31_t)0x5c50400d, (q31_t)0xa754b134, - (q31_t)0x5c4be5b0, (q31_t)0xa7502943, (q31_t)0x5c478b1b, (q31_t)0xa74ba18a, (q31_t)0x5c43304d, (q31_t)0xa7471a07, - (q31_t)0x5c3ed545, (q31_t)0xa74292bb, - (q31_t)0x5c3a7a05, (q31_t)0xa73e0ba5, (q31_t)0x5c361e8c, (q31_t)0xa73984c7, (q31_t)0x5c31c2db, (q31_t)0xa734fe1f, - (q31_t)0x5c2d66f0, (q31_t)0xa73077ae, - (q31_t)0x5c290acc, (q31_t)0xa72bf174, (q31_t)0x5c24ae70, (q31_t)0xa7276b70, (q31_t)0x5c2051db, (q31_t)0xa722e5a3, - (q31_t)0x5c1bf50d, (q31_t)0xa71e600d, - (q31_t)0x5c179806, (q31_t)0xa719daae, (q31_t)0x5c133ac6, (q31_t)0xa7155586, (q31_t)0x5c0edd4e, (q31_t)0xa710d095, - (q31_t)0x5c0a7f9c, (q31_t)0xa70c4bda, - (q31_t)0x5c0621b2, (q31_t)0xa707c757, (q31_t)0x5c01c38f, (q31_t)0xa703430a, (q31_t)0x5bfd6534, (q31_t)0xa6febef4, - (q31_t)0x5bf906a0, (q31_t)0xa6fa3b15, - (q31_t)0x5bf4a7d2, (q31_t)0xa6f5b76d, (q31_t)0x5bf048cd, (q31_t)0xa6f133fc, (q31_t)0x5bebe98e, (q31_t)0xa6ecb0c2, - (q31_t)0x5be78a17, (q31_t)0xa6e82dbe, - (q31_t)0x5be32a67, (q31_t)0xa6e3aaf2, (q31_t)0x5bdeca7f, (q31_t)0xa6df285d, (q31_t)0x5bda6a5d, (q31_t)0xa6daa5fe, - (q31_t)0x5bd60a03, (q31_t)0xa6d623d7, - (q31_t)0x5bd1a971, (q31_t)0xa6d1a1e7, (q31_t)0x5bcd48a6, (q31_t)0xa6cd202d, (q31_t)0x5bc8e7a2, (q31_t)0xa6c89eab, - (q31_t)0x5bc48666, (q31_t)0xa6c41d60, - (q31_t)0x5bc024f0, (q31_t)0xa6bf9c4b, (q31_t)0x5bbbc343, (q31_t)0xa6bb1b6e, (q31_t)0x5bb7615d, (q31_t)0xa6b69ac8, - (q31_t)0x5bb2ff3e, (q31_t)0xa6b21a59, - (q31_t)0x5bae9ce7, (q31_t)0xa6ad9a21, (q31_t)0x5baa3a57, (q31_t)0xa6a91a20, (q31_t)0x5ba5d78e, (q31_t)0xa6a49a56, - (q31_t)0x5ba1748d, (q31_t)0xa6a01ac4, - (q31_t)0x5b9d1154, (q31_t)0xa69b9b68, (q31_t)0x5b98ade2, (q31_t)0xa6971c44, (q31_t)0x5b944a37, (q31_t)0xa6929d57, - (q31_t)0x5b8fe654, (q31_t)0xa68e1ea1, - (q31_t)0x5b8b8239, (q31_t)0xa689a022, (q31_t)0x5b871de5, (q31_t)0xa68521da, (q31_t)0x5b82b958, (q31_t)0xa680a3ca, - (q31_t)0x5b7e5493, (q31_t)0xa67c25f0, - (q31_t)0x5b79ef96, (q31_t)0xa677a84e, (q31_t)0x5b758a60, (q31_t)0xa6732ae3, (q31_t)0x5b7124f2, (q31_t)0xa66eadb0, - (q31_t)0x5b6cbf4c, (q31_t)0xa66a30b3, - (q31_t)0x5b68596d, (q31_t)0xa665b3ee, (q31_t)0x5b63f355, (q31_t)0xa6613760, (q31_t)0x5b5f8d06, (q31_t)0xa65cbb0a, - (q31_t)0x5b5b267e, (q31_t)0xa6583eeb, - (q31_t)0x5b56bfbd, (q31_t)0xa653c303, (q31_t)0x5b5258c4, (q31_t)0xa64f4752, (q31_t)0x5b4df193, (q31_t)0xa64acbd9, - (q31_t)0x5b498a2a, (q31_t)0xa6465097, - (q31_t)0x5b452288, (q31_t)0xa641d58c, (q31_t)0x5b40baae, (q31_t)0xa63d5ab9, (q31_t)0x5b3c529c, (q31_t)0xa638e01d, - (q31_t)0x5b37ea51, (q31_t)0xa63465b9, - (q31_t)0x5b3381ce, (q31_t)0xa62feb8b, (q31_t)0x5b2f1913, (q31_t)0xa62b7196, (q31_t)0x5b2ab020, (q31_t)0xa626f7d7, - (q31_t)0x5b2646f4, (q31_t)0xa6227e50, - (q31_t)0x5b21dd90, (q31_t)0xa61e0501, (q31_t)0x5b1d73f4, (q31_t)0xa6198be9, (q31_t)0x5b190a20, (q31_t)0xa6151308, - (q31_t)0x5b14a014, (q31_t)0xa6109a5f, - (q31_t)0x5b1035cf, (q31_t)0xa60c21ee, (q31_t)0x5b0bcb52, (q31_t)0xa607a9b4, (q31_t)0x5b07609d, (q31_t)0xa60331b1, - (q31_t)0x5b02f5b0, (q31_t)0xa5feb9e6, - (q31_t)0x5afe8a8b, (q31_t)0xa5fa4252, (q31_t)0x5afa1f2e, (q31_t)0xa5f5caf6, (q31_t)0x5af5b398, (q31_t)0xa5f153d2, - (q31_t)0x5af147ca, (q31_t)0xa5ecdce5, - (q31_t)0x5aecdbc5, (q31_t)0xa5e8662f, (q31_t)0x5ae86f87, (q31_t)0xa5e3efb1, (q31_t)0x5ae40311, (q31_t)0xa5df796b, - (q31_t)0x5adf9663, (q31_t)0xa5db035c, - (q31_t)0x5adb297d, (q31_t)0xa5d68d85, (q31_t)0x5ad6bc5f, (q31_t)0xa5d217e6, (q31_t)0x5ad24f09, (q31_t)0xa5cda27e, - (q31_t)0x5acde17b, (q31_t)0xa5c92d4e, - (q31_t)0x5ac973b5, (q31_t)0xa5c4b855, (q31_t)0x5ac505b7, (q31_t)0xa5c04395, (q31_t)0x5ac09781, (q31_t)0xa5bbcf0b, - (q31_t)0x5abc2912, (q31_t)0xa5b75aba, - (q31_t)0x5ab7ba6c, (q31_t)0xa5b2e6a0, (q31_t)0x5ab34b8e, (q31_t)0xa5ae72be, (q31_t)0x5aaedc78, (q31_t)0xa5a9ff14, - (q31_t)0x5aaa6d2b, (q31_t)0xa5a58ba1, - (q31_t)0x5aa5fda5, (q31_t)0xa5a11866, (q31_t)0x5aa18de7, (q31_t)0xa59ca563, (q31_t)0x5a9d1df1, (q31_t)0xa5983297, - (q31_t)0x5a98adc4, (q31_t)0xa593c004, - (q31_t)0x5a943d5e, (q31_t)0xa58f4da8, (q31_t)0x5a8fccc1, (q31_t)0xa58adb84, (q31_t)0x5a8b5bec, (q31_t)0xa5866997, - (q31_t)0x5a86eadf, (q31_t)0xa581f7e3, - (q31_t)0x5a82799a, (q31_t)0xa57d8666, (q31_t)0x5a7e081d, (q31_t)0xa5791521, (q31_t)0x5a799669, (q31_t)0xa574a414, - (q31_t)0x5a75247c, (q31_t)0xa570333f, - (q31_t)0x5a70b258, (q31_t)0xa56bc2a2, (q31_t)0x5a6c3ffc, (q31_t)0xa567523c, (q31_t)0x5a67cd69, (q31_t)0xa562e20f, - (q31_t)0x5a635a9d, (q31_t)0xa55e7219, - (q31_t)0x5a5ee79a, (q31_t)0xa55a025b, (q31_t)0x5a5a745f, (q31_t)0xa55592d5, (q31_t)0x5a5600ec, (q31_t)0xa5512388, - (q31_t)0x5a518d42, (q31_t)0xa54cb472, - (q31_t)0x5a4d1960, (q31_t)0xa5484594, (q31_t)0x5a48a546, (q31_t)0xa543d6ee, (q31_t)0x5a4430f5, (q31_t)0xa53f687f, - (q31_t)0x5a3fbc6b, (q31_t)0xa53afa49, - (q31_t)0x5a3b47ab, (q31_t)0xa5368c4b, (q31_t)0x5a36d2b2, (q31_t)0xa5321e85, (q31_t)0x5a325d82, (q31_t)0xa52db0f7, - (q31_t)0x5a2de81a, (q31_t)0xa52943a1, - (q31_t)0x5a29727b, (q31_t)0xa524d683, (q31_t)0x5a24fca4, (q31_t)0xa520699d, (q31_t)0x5a208695, (q31_t)0xa51bfcef, - (q31_t)0x5a1c104f, (q31_t)0xa5179079, - (q31_t)0x5a1799d1, (q31_t)0xa513243b, (q31_t)0x5a13231b, (q31_t)0xa50eb836, (q31_t)0x5a0eac2e, (q31_t)0xa50a4c68, - (q31_t)0x5a0a350a, (q31_t)0xa505e0d2, - (q31_t)0x5a05bdae, (q31_t)0xa5017575, (q31_t)0x5a01461a, (q31_t)0xa4fd0a50, (q31_t)0x59fcce4f, (q31_t)0xa4f89f63, - (q31_t)0x59f8564c, (q31_t)0xa4f434ae, - (q31_t)0x59f3de12, (q31_t)0xa4efca31, (q31_t)0x59ef65a1, (q31_t)0xa4eb5fec, (q31_t)0x59eaecf8, (q31_t)0xa4e6f5e0, - (q31_t)0x59e67417, (q31_t)0xa4e28c0c, - (q31_t)0x59e1faff, (q31_t)0xa4de2270, (q31_t)0x59dd81b0, (q31_t)0xa4d9b90c, (q31_t)0x59d90829, (q31_t)0xa4d54fe0, - (q31_t)0x59d48e6a, (q31_t)0xa4d0e6ed, - (q31_t)0x59d01475, (q31_t)0xa4cc7e32, (q31_t)0x59cb9a47, (q31_t)0xa4c815af, (q31_t)0x59c71fe3, (q31_t)0xa4c3ad64, - (q31_t)0x59c2a547, (q31_t)0xa4bf4552, - (q31_t)0x59be2a74, (q31_t)0xa4badd78, (q31_t)0x59b9af69, (q31_t)0xa4b675d6, (q31_t)0x59b53427, (q31_t)0xa4b20e6d, - (q31_t)0x59b0b8ae, (q31_t)0xa4ada73c, - (q31_t)0x59ac3cfd, (q31_t)0xa4a94043, (q31_t)0x59a7c115, (q31_t)0xa4a4d982, (q31_t)0x59a344f6, (q31_t)0xa4a072fa, - (q31_t)0x599ec8a0, (q31_t)0xa49c0cab, - (q31_t)0x599a4c12, (q31_t)0xa497a693, (q31_t)0x5995cf4d, (q31_t)0xa49340b4, (q31_t)0x59915250, (q31_t)0xa48edb0e, - (q31_t)0x598cd51d, (q31_t)0xa48a75a0, - (q31_t)0x598857b2, (q31_t)0xa486106a, (q31_t)0x5983da10, (q31_t)0xa481ab6d, (q31_t)0x597f5c36, (q31_t)0xa47d46a8, - (q31_t)0x597ade26, (q31_t)0xa478e21b, - (q31_t)0x59765fde, (q31_t)0xa4747dc7, (q31_t)0x5971e15f, (q31_t)0xa47019ac, (q31_t)0x596d62a9, (q31_t)0xa46bb5c9, - (q31_t)0x5968e3bc, (q31_t)0xa467521e, - (q31_t)0x59646498, (q31_t)0xa462eeac, (q31_t)0x595fe53c, (q31_t)0xa45e8b73, (q31_t)0x595b65aa, (q31_t)0xa45a2872, - (q31_t)0x5956e5e0, (q31_t)0xa455c5a9, - (q31_t)0x595265df, (q31_t)0xa4516319, (q31_t)0x594de5a7, (q31_t)0xa44d00c2, (q31_t)0x59496538, (q31_t)0xa4489ea3, - (q31_t)0x5944e492, (q31_t)0xa4443cbd, - (q31_t)0x594063b5, (q31_t)0xa43fdb10, (q31_t)0x593be2a0, (q31_t)0xa43b799a, (q31_t)0x59376155, (q31_t)0xa437185e, - (q31_t)0x5932dfd3, (q31_t)0xa432b75a, - (q31_t)0x592e5e19, (q31_t)0xa42e568f, (q31_t)0x5929dc29, (q31_t)0xa429f5fd, (q31_t)0x59255a02, (q31_t)0xa42595a3, - (q31_t)0x5920d7a3, (q31_t)0xa4213581, - (q31_t)0x591c550e, (q31_t)0xa41cd599, (q31_t)0x5917d242, (q31_t)0xa41875e9, (q31_t)0x59134f3e, (q31_t)0xa4141672, - (q31_t)0x590ecc04, (q31_t)0xa40fb733, - (q31_t)0x590a4893, (q31_t)0xa40b582e, (q31_t)0x5905c4eb, (q31_t)0xa406f960, (q31_t)0x5901410c, (q31_t)0xa4029acc, - (q31_t)0x58fcbcf6, (q31_t)0xa3fe3c71, - (q31_t)0x58f838a9, (q31_t)0xa3f9de4e, (q31_t)0x58f3b426, (q31_t)0xa3f58064, (q31_t)0x58ef2f6b, (q31_t)0xa3f122b2, - (q31_t)0x58eaaa7a, (q31_t)0xa3ecc53a, - (q31_t)0x58e62552, (q31_t)0xa3e867fa, (q31_t)0x58e19ff3, (q31_t)0xa3e40af3, (q31_t)0x58dd1a5d, (q31_t)0xa3dfae25, - (q31_t)0x58d89490, (q31_t)0xa3db5190, - (q31_t)0x58d40e8c, (q31_t)0xa3d6f534, (q31_t)0x58cf8852, (q31_t)0xa3d29910, (q31_t)0x58cb01e1, (q31_t)0xa3ce3d25, - (q31_t)0x58c67b39, (q31_t)0xa3c9e174, - (q31_t)0x58c1f45b, (q31_t)0xa3c585fb, (q31_t)0x58bd6d45, (q31_t)0xa3c12abb, (q31_t)0x58b8e5f9, (q31_t)0xa3bccfb3, - (q31_t)0x58b45e76, (q31_t)0xa3b874e5, - (q31_t)0x58afd6bd, (q31_t)0xa3b41a50, (q31_t)0x58ab4ecc, (q31_t)0xa3afbff3, (q31_t)0x58a6c6a5, (q31_t)0xa3ab65d0, - (q31_t)0x58a23e48, (q31_t)0xa3a70be6, - (q31_t)0x589db5b3, (q31_t)0xa3a2b234, (q31_t)0x58992ce9, (q31_t)0xa39e58bb, (q31_t)0x5894a3e7, (q31_t)0xa399ff7c, - (q31_t)0x58901aaf, (q31_t)0xa395a675, - (q31_t)0x588b9140, (q31_t)0xa3914da8, (q31_t)0x5887079a, (q31_t)0xa38cf513, (q31_t)0x58827dbe, (q31_t)0xa3889cb8, - (q31_t)0x587df3ab, (q31_t)0xa3844495, - (q31_t)0x58796962, (q31_t)0xa37fecac, (q31_t)0x5874dee2, (q31_t)0xa37b94fb, (q31_t)0x5870542c, (q31_t)0xa3773d84, - (q31_t)0x586bc93f, (q31_t)0xa372e646, - (q31_t)0x58673e1b, (q31_t)0xa36e8f41, (q31_t)0x5862b2c1, (q31_t)0xa36a3875, (q31_t)0x585e2730, (q31_t)0xa365e1e2, - (q31_t)0x58599b69, (q31_t)0xa3618b88, - (q31_t)0x58550f6c, (q31_t)0xa35d3567, (q31_t)0x58508338, (q31_t)0xa358df80, (q31_t)0x584bf6cd, (q31_t)0xa35489d1, - (q31_t)0x58476a2c, (q31_t)0xa350345c, - (q31_t)0x5842dd54, (q31_t)0xa34bdf20, (q31_t)0x583e5047, (q31_t)0xa3478a1d, (q31_t)0x5839c302, (q31_t)0xa3433554, - (q31_t)0x58353587, (q31_t)0xa33ee0c3, - (q31_t)0x5830a7d6, (q31_t)0xa33a8c6c, (q31_t)0x582c19ef, (q31_t)0xa336384e, (q31_t)0x58278bd1, (q31_t)0xa331e469, - (q31_t)0x5822fd7c, (q31_t)0xa32d90be, - (q31_t)0x581e6ef1, (q31_t)0xa3293d4b, (q31_t)0x5819e030, (q31_t)0xa324ea13, (q31_t)0x58155139, (q31_t)0xa3209713, - (q31_t)0x5810c20b, (q31_t)0xa31c444c, - (q31_t)0x580c32a7, (q31_t)0xa317f1bf, (q31_t)0x5807a30d, (q31_t)0xa3139f6b, (q31_t)0x5803133c, (q31_t)0xa30f4d51, - (q31_t)0x57fe8335, (q31_t)0xa30afb70, - (q31_t)0x57f9f2f8, (q31_t)0xa306a9c8, (q31_t)0x57f56284, (q31_t)0xa3025859, (q31_t)0x57f0d1da, (q31_t)0xa2fe0724, - (q31_t)0x57ec40fa, (q31_t)0xa2f9b629, - (q31_t)0x57e7afe4, (q31_t)0xa2f56566, (q31_t)0x57e31e97, (q31_t)0xa2f114dd, (q31_t)0x57de8d15, (q31_t)0xa2ecc48e, - (q31_t)0x57d9fb5c, (q31_t)0xa2e87477, - (q31_t)0x57d5696d, (q31_t)0xa2e4249b, (q31_t)0x57d0d747, (q31_t)0xa2dfd4f7, (q31_t)0x57cc44ec, (q31_t)0xa2db858e, - (q31_t)0x57c7b25a, (q31_t)0xa2d7365d, - (q31_t)0x57c31f92, (q31_t)0xa2d2e766, (q31_t)0x57be8c94, (q31_t)0xa2ce98a9, (q31_t)0x57b9f960, (q31_t)0xa2ca4a25, - (q31_t)0x57b565f6, (q31_t)0xa2c5fbda, - (q31_t)0x57b0d256, (q31_t)0xa2c1adc9, (q31_t)0x57ac3e80, (q31_t)0xa2bd5ff2, (q31_t)0x57a7aa73, (q31_t)0xa2b91254, - (q31_t)0x57a31631, (q31_t)0xa2b4c4f0, - (q31_t)0x579e81b8, (q31_t)0xa2b077c5, (q31_t)0x5799ed0a, (q31_t)0xa2ac2ad3, (q31_t)0x57955825, (q31_t)0xa2a7de1c, - (q31_t)0x5790c30a, (q31_t)0xa2a3919e, - (q31_t)0x578c2dba, (q31_t)0xa29f4559, (q31_t)0x57879833, (q31_t)0xa29af94e, (q31_t)0x57830276, (q31_t)0xa296ad7d, - (q31_t)0x577e6c84, (q31_t)0xa29261e5, - (q31_t)0x5779d65b, (q31_t)0xa28e1687, (q31_t)0x57753ffc, (q31_t)0xa289cb63, (q31_t)0x5770a968, (q31_t)0xa2858078, - (q31_t)0x576c129d, (q31_t)0xa28135c7, - (q31_t)0x57677b9d, (q31_t)0xa27ceb4f, (q31_t)0x5762e467, (q31_t)0xa278a111, (q31_t)0x575e4cfa, (q31_t)0xa274570d, - (q31_t)0x5759b558, (q31_t)0xa2700d43, - (q31_t)0x57551d80, (q31_t)0xa26bc3b2, (q31_t)0x57508572, (q31_t)0xa2677a5b, (q31_t)0x574bed2f, (q31_t)0xa263313e, - (q31_t)0x574754b5, (q31_t)0xa25ee85b, - (q31_t)0x5742bc06, (q31_t)0xa25a9fb1, (q31_t)0x573e2320, (q31_t)0xa2565741, (q31_t)0x57398a05, (q31_t)0xa2520f0b, - (q31_t)0x5734f0b5, (q31_t)0xa24dc70f, - (q31_t)0x5730572e, (q31_t)0xa2497f4c, (q31_t)0x572bbd71, (q31_t)0xa24537c3, (q31_t)0x5727237f, (q31_t)0xa240f074, - (q31_t)0x57228957, (q31_t)0xa23ca95f, - (q31_t)0x571deefa, (q31_t)0xa2386284, (q31_t)0x57195466, (q31_t)0xa2341be3, (q31_t)0x5714b99d, (q31_t)0xa22fd57b, - (q31_t)0x57101e9e, (q31_t)0xa22b8f4d, - (q31_t)0x570b8369, (q31_t)0xa2274959, (q31_t)0x5706e7ff, (q31_t)0xa223039f, (q31_t)0x57024c5f, (q31_t)0xa21ebe1f, - (q31_t)0x56fdb08a, (q31_t)0xa21a78d9, - (q31_t)0x56f9147e, (q31_t)0xa21633cd, (q31_t)0x56f4783d, (q31_t)0xa211eefb, (q31_t)0x56efdbc7, (q31_t)0xa20daa62, - (q31_t)0x56eb3f1a, (q31_t)0xa2096604, - (q31_t)0x56e6a239, (q31_t)0xa20521e0, (q31_t)0x56e20521, (q31_t)0xa200ddf5, (q31_t)0x56dd67d4, (q31_t)0xa1fc9a45, - (q31_t)0x56d8ca51, (q31_t)0xa1f856ce, - (q31_t)0x56d42c99, (q31_t)0xa1f41392, (q31_t)0x56cf8eab, (q31_t)0xa1efd08f, (q31_t)0x56caf088, (q31_t)0xa1eb8dc7, - (q31_t)0x56c6522f, (q31_t)0xa1e74b38, - (q31_t)0x56c1b3a1, (q31_t)0xa1e308e4, (q31_t)0x56bd14dd, (q31_t)0xa1dec6ca, (q31_t)0x56b875e4, (q31_t)0xa1da84e9, - (q31_t)0x56b3d6b5, (q31_t)0xa1d64343, - (q31_t)0x56af3750, (q31_t)0xa1d201d7, (q31_t)0x56aa97b7, (q31_t)0xa1cdc0a5, (q31_t)0x56a5f7e7, (q31_t)0xa1c97fad, - (q31_t)0x56a157e3, (q31_t)0xa1c53ef0, - (q31_t)0x569cb7a8, (q31_t)0xa1c0fe6c, (q31_t)0x56981739, (q31_t)0xa1bcbe22, (q31_t)0x56937694, (q31_t)0xa1b87e13, - (q31_t)0x568ed5b9, (q31_t)0xa1b43e3e, - (q31_t)0x568a34a9, (q31_t)0xa1affea3, (q31_t)0x56859364, (q31_t)0xa1abbf42, (q31_t)0x5680f1ea, (q31_t)0xa1a7801b, - (q31_t)0x567c503a, (q31_t)0xa1a3412f, - (q31_t)0x5677ae54, (q31_t)0xa19f027c, (q31_t)0x56730c3a, (q31_t)0xa19ac404, (q31_t)0x566e69ea, (q31_t)0xa19685c7, - (q31_t)0x5669c765, (q31_t)0xa19247c3, - (q31_t)0x566524aa, (q31_t)0xa18e09fa, (q31_t)0x566081ba, (q31_t)0xa189cc6b, (q31_t)0x565bde95, (q31_t)0xa1858f16, - (q31_t)0x56573b3b, (q31_t)0xa18151fb, - (q31_t)0x565297ab, (q31_t)0xa17d151b, (q31_t)0x564df3e6, (q31_t)0xa178d875, (q31_t)0x56494fec, (q31_t)0xa1749c09, - (q31_t)0x5644abbc, (q31_t)0xa1705fd8, - (q31_t)0x56400758, (q31_t)0xa16c23e1, (q31_t)0x563b62be, (q31_t)0xa167e824, (q31_t)0x5636bdef, (q31_t)0xa163aca2, - (q31_t)0x563218eb, (q31_t)0xa15f715a, - (q31_t)0x562d73b2, (q31_t)0xa15b364d, (q31_t)0x5628ce43, (q31_t)0xa156fb79, (q31_t)0x5624289f, (q31_t)0xa152c0e1, - (q31_t)0x561f82c7, (q31_t)0xa14e8682, - (q31_t)0x561adcb9, (q31_t)0xa14a4c5e, (q31_t)0x56163676, (q31_t)0xa1461275, (q31_t)0x56118ffe, (q31_t)0xa141d8c5, - (q31_t)0x560ce950, (q31_t)0xa13d9f51, - (q31_t)0x5608426e, (q31_t)0xa1396617, (q31_t)0x56039b57, (q31_t)0xa1352d17, (q31_t)0x55fef40a, (q31_t)0xa130f451, - (q31_t)0x55fa4c89, (q31_t)0xa12cbbc7, - (q31_t)0x55f5a4d2, (q31_t)0xa1288376, (q31_t)0x55f0fce7, (q31_t)0xa1244b61, (q31_t)0x55ec54c6, (q31_t)0xa1201385, - (q31_t)0x55e7ac71, (q31_t)0xa11bdbe4, - (q31_t)0x55e303e6, (q31_t)0xa117a47e, (q31_t)0x55de5b27, (q31_t)0xa1136d52, (q31_t)0x55d9b232, (q31_t)0xa10f3661, - (q31_t)0x55d50909, (q31_t)0xa10affab, - (q31_t)0x55d05faa, (q31_t)0xa106c92f, (q31_t)0x55cbb617, (q31_t)0xa10292ed, (q31_t)0x55c70c4f, (q31_t)0xa0fe5ce6, - (q31_t)0x55c26251, (q31_t)0xa0fa271a, - (q31_t)0x55bdb81f, (q31_t)0xa0f5f189, (q31_t)0x55b90db8, (q31_t)0xa0f1bc32, (q31_t)0x55b4631d, (q31_t)0xa0ed8715, - (q31_t)0x55afb84c, (q31_t)0xa0e95234, - (q31_t)0x55ab0d46, (q31_t)0xa0e51d8c, (q31_t)0x55a6620c, (q31_t)0xa0e0e920, (q31_t)0x55a1b69d, (q31_t)0xa0dcb4ee, - (q31_t)0x559d0af9, (q31_t)0xa0d880f7, - (q31_t)0x55985f20, (q31_t)0xa0d44d3b, (q31_t)0x5593b312, (q31_t)0xa0d019b9, (q31_t)0x558f06d0, (q31_t)0xa0cbe672, - (q31_t)0x558a5a58, (q31_t)0xa0c7b366, - (q31_t)0x5585adad, (q31_t)0xa0c38095, (q31_t)0x558100cc, (q31_t)0xa0bf4dfe, (q31_t)0x557c53b6, (q31_t)0xa0bb1ba2, - (q31_t)0x5577a66c, (q31_t)0xa0b6e981, - (q31_t)0x5572f8ed, (q31_t)0xa0b2b79b, (q31_t)0x556e4b39, (q31_t)0xa0ae85ef, (q31_t)0x55699d51, (q31_t)0xa0aa547e, - (q31_t)0x5564ef34, (q31_t)0xa0a62348, - (q31_t)0x556040e2, (q31_t)0xa0a1f24d, (q31_t)0x555b925c, (q31_t)0xa09dc18d, (q31_t)0x5556e3a1, (q31_t)0xa0999107, - (q31_t)0x555234b1, (q31_t)0xa09560bc, - (q31_t)0x554d858d, (q31_t)0xa09130ad, (q31_t)0x5548d634, (q31_t)0xa08d00d8, (q31_t)0x554426a7, (q31_t)0xa088d13e, - (q31_t)0x553f76e4, (q31_t)0xa084a1de, - (q31_t)0x553ac6ee, (q31_t)0xa08072ba, (q31_t)0x553616c2, (q31_t)0xa07c43d1, (q31_t)0x55316663, (q31_t)0xa0781522, - (q31_t)0x552cb5ce, (q31_t)0xa073e6af, - (q31_t)0x55280505, (q31_t)0xa06fb876, (q31_t)0x55235408, (q31_t)0xa06b8a78, (q31_t)0x551ea2d6, (q31_t)0xa0675cb6, - (q31_t)0x5519f16f, (q31_t)0xa0632f2e, - (q31_t)0x55153fd4, (q31_t)0xa05f01e1, (q31_t)0x55108e05, (q31_t)0xa05ad4cf, (q31_t)0x550bdc01, (q31_t)0xa056a7f9, - (q31_t)0x550729c9, (q31_t)0xa0527b5d, - (q31_t)0x5502775c, (q31_t)0xa04e4efc, (q31_t)0x54fdc4ba, (q31_t)0xa04a22d7, (q31_t)0x54f911e5, (q31_t)0xa045f6ec, - (q31_t)0x54f45edb, (q31_t)0xa041cb3c, - (q31_t)0x54efab9c, (q31_t)0xa03d9fc8, (q31_t)0x54eaf829, (q31_t)0xa039748e, (q31_t)0x54e64482, (q31_t)0xa0354990, - (q31_t)0x54e190a6, (q31_t)0xa0311ecd, - (q31_t)0x54dcdc96, (q31_t)0xa02cf444, (q31_t)0x54d82852, (q31_t)0xa028c9f7, (q31_t)0x54d373d9, (q31_t)0xa0249fe5, - (q31_t)0x54cebf2c, (q31_t)0xa020760e, - (q31_t)0x54ca0a4b, (q31_t)0xa01c4c73, (q31_t)0x54c55535, (q31_t)0xa0182312, (q31_t)0x54c09feb, (q31_t)0xa013f9ed, - (q31_t)0x54bbea6d, (q31_t)0xa00fd102, - (q31_t)0x54b734ba, (q31_t)0xa00ba853, (q31_t)0x54b27ed3, (q31_t)0xa0077fdf, (q31_t)0x54adc8b8, (q31_t)0xa00357a7, - (q31_t)0x54a91269, (q31_t)0x9fff2fa9, - (q31_t)0x54a45be6, (q31_t)0x9ffb07e7, (q31_t)0x549fa52e, (q31_t)0x9ff6e060, (q31_t)0x549aee42, (q31_t)0x9ff2b914, - (q31_t)0x54963722, (q31_t)0x9fee9204, - (q31_t)0x54917fce, (q31_t)0x9fea6b2f, (q31_t)0x548cc845, (q31_t)0x9fe64495, (q31_t)0x54881089, (q31_t)0x9fe21e36, - (q31_t)0x54835898, (q31_t)0x9fddf812, - (q31_t)0x547ea073, (q31_t)0x9fd9d22a, (q31_t)0x5479e81a, (q31_t)0x9fd5ac7d, (q31_t)0x54752f8d, (q31_t)0x9fd1870c, - (q31_t)0x547076cc, (q31_t)0x9fcd61d6, - (q31_t)0x546bbdd7, (q31_t)0x9fc93cdb, (q31_t)0x546704ae, (q31_t)0x9fc5181b, (q31_t)0x54624b50, (q31_t)0x9fc0f397, - (q31_t)0x545d91bf, (q31_t)0x9fbccf4f, - (q31_t)0x5458d7f9, (q31_t)0x9fb8ab41, (q31_t)0x54541e00, (q31_t)0x9fb4876f, (q31_t)0x544f63d2, (q31_t)0x9fb063d9, - (q31_t)0x544aa971, (q31_t)0x9fac407e, - (q31_t)0x5445eedb, (q31_t)0x9fa81d5e, (q31_t)0x54413412, (q31_t)0x9fa3fa79, (q31_t)0x543c7914, (q31_t)0x9f9fd7d1, - (q31_t)0x5437bde3, (q31_t)0x9f9bb563, - (q31_t)0x5433027d, (q31_t)0x9f979331, (q31_t)0x542e46e4, (q31_t)0x9f93713b, (q31_t)0x54298b17, (q31_t)0x9f8f4f80, - (q31_t)0x5424cf16, (q31_t)0x9f8b2e00, - (q31_t)0x542012e1, (q31_t)0x9f870cbc, (q31_t)0x541b5678, (q31_t)0x9f82ebb4, (q31_t)0x541699db, (q31_t)0x9f7ecae7, - (q31_t)0x5411dd0a, (q31_t)0x9f7aaa55, - (q31_t)0x540d2005, (q31_t)0x9f7689ff, (q31_t)0x540862cd, (q31_t)0x9f7269e5, (q31_t)0x5403a561, (q31_t)0x9f6e4a06, - (q31_t)0x53fee7c1, (q31_t)0x9f6a2a63, - (q31_t)0x53fa29ed, (q31_t)0x9f660afb, (q31_t)0x53f56be5, (q31_t)0x9f61ebcf, (q31_t)0x53f0adaa, (q31_t)0x9f5dccde, - (q31_t)0x53ebef3a, (q31_t)0x9f59ae29, - (q31_t)0x53e73097, (q31_t)0x9f558fb0, (q31_t)0x53e271c0, (q31_t)0x9f517173, (q31_t)0x53ddb2b6, (q31_t)0x9f4d5371, - (q31_t)0x53d8f378, (q31_t)0x9f4935aa, - (q31_t)0x53d43406, (q31_t)0x9f45181f, (q31_t)0x53cf7460, (q31_t)0x9f40fad0, (q31_t)0x53cab486, (q31_t)0x9f3cddbd, - (q31_t)0x53c5f479, (q31_t)0x9f38c0e5, - (q31_t)0x53c13439, (q31_t)0x9f34a449, (q31_t)0x53bc73c4, (q31_t)0x9f3087e9, (q31_t)0x53b7b31c, (q31_t)0x9f2c6bc5, - (q31_t)0x53b2f240, (q31_t)0x9f284fdc, - (q31_t)0x53ae3131, (q31_t)0x9f24342f, (q31_t)0x53a96fee, (q31_t)0x9f2018bd, (q31_t)0x53a4ae77, (q31_t)0x9f1bfd88, - (q31_t)0x539feccd, (q31_t)0x9f17e28e, - (q31_t)0x539b2af0, (q31_t)0x9f13c7d0, (q31_t)0x539668de, (q31_t)0x9f0fad4e, (q31_t)0x5391a699, (q31_t)0x9f0b9307, - (q31_t)0x538ce421, (q31_t)0x9f0778fd, - (q31_t)0x53882175, (q31_t)0x9f035f2e, (q31_t)0x53835e95, (q31_t)0x9eff459b, (q31_t)0x537e9b82, (q31_t)0x9efb2c44, - (q31_t)0x5379d83c, (q31_t)0x9ef71328, - (q31_t)0x537514c2, (q31_t)0x9ef2fa49, (q31_t)0x53705114, (q31_t)0x9eeee1a5, (q31_t)0x536b8d33, (q31_t)0x9eeac93e, - (q31_t)0x5366c91f, (q31_t)0x9ee6b112, - (q31_t)0x536204d7, (q31_t)0x9ee29922, (q31_t)0x535d405c, (q31_t)0x9ede816e, (q31_t)0x53587bad, (q31_t)0x9eda69f6, - (q31_t)0x5353b6cb, (q31_t)0x9ed652ba, - (q31_t)0x534ef1b5, (q31_t)0x9ed23bb9, (q31_t)0x534a2c6c, (q31_t)0x9ece24f5, (q31_t)0x534566f0, (q31_t)0x9eca0e6d, - (q31_t)0x5340a140, (q31_t)0x9ec5f820, - (q31_t)0x533bdb5d, (q31_t)0x9ec1e210, (q31_t)0x53371547, (q31_t)0x9ebdcc3b, (q31_t)0x53324efd, (q31_t)0x9eb9b6a3, - (q31_t)0x532d8880, (q31_t)0x9eb5a146, - (q31_t)0x5328c1d0, (q31_t)0x9eb18c26, (q31_t)0x5323faec, (q31_t)0x9ead7742, (q31_t)0x531f33d5, (q31_t)0x9ea96299, - (q31_t)0x531a6c8b, (q31_t)0x9ea54e2d, - (q31_t)0x5315a50e, (q31_t)0x9ea139fd, (q31_t)0x5310dd5d, (q31_t)0x9e9d2608, (q31_t)0x530c1579, (q31_t)0x9e991250, - (q31_t)0x53074d62, (q31_t)0x9e94fed4, - (q31_t)0x53028518, (q31_t)0x9e90eb94, (q31_t)0x52fdbc9a, (q31_t)0x9e8cd890, (q31_t)0x52f8f3e9, (q31_t)0x9e88c5c9, - (q31_t)0x52f42b05, (q31_t)0x9e84b33d, - (q31_t)0x52ef61ee, (q31_t)0x9e80a0ee, (q31_t)0x52ea98a4, (q31_t)0x9e7c8eda, (q31_t)0x52e5cf27, (q31_t)0x9e787d03, - (q31_t)0x52e10576, (q31_t)0x9e746b68, - (q31_t)0x52dc3b92, (q31_t)0x9e705a09, (q31_t)0x52d7717b, (q31_t)0x9e6c48e7, (q31_t)0x52d2a732, (q31_t)0x9e683800, - (q31_t)0x52cddcb5, (q31_t)0x9e642756, - (q31_t)0x52c91204, (q31_t)0x9e6016e8, (q31_t)0x52c44721, (q31_t)0x9e5c06b6, (q31_t)0x52bf7c0b, (q31_t)0x9e57f6c0, - (q31_t)0x52bab0c2, (q31_t)0x9e53e707, - (q31_t)0x52b5e546, (q31_t)0x9e4fd78a, (q31_t)0x52b11996, (q31_t)0x9e4bc849, (q31_t)0x52ac4db4, (q31_t)0x9e47b944, - (q31_t)0x52a7819f, (q31_t)0x9e43aa7c, - (q31_t)0x52a2b556, (q31_t)0x9e3f9bf0, (q31_t)0x529de8db, (q31_t)0x9e3b8da0, (q31_t)0x52991c2d, (q31_t)0x9e377f8c, - (q31_t)0x52944f4c, (q31_t)0x9e3371b5, - (q31_t)0x528f8238, (q31_t)0x9e2f641b, (q31_t)0x528ab4f1, (q31_t)0x9e2b56bc, (q31_t)0x5285e777, (q31_t)0x9e27499a, - (q31_t)0x528119ca, (q31_t)0x9e233cb4, - (q31_t)0x527c4bea, (q31_t)0x9e1f300b, (q31_t)0x52777dd7, (q31_t)0x9e1b239e, (q31_t)0x5272af92, (q31_t)0x9e17176d, - (q31_t)0x526de11a, (q31_t)0x9e130b79, - (q31_t)0x5269126e, (q31_t)0x9e0effc1, (q31_t)0x52644390, (q31_t)0x9e0af446, (q31_t)0x525f7480, (q31_t)0x9e06e907, - (q31_t)0x525aa53c, (q31_t)0x9e02de04, - (q31_t)0x5255d5c5, (q31_t)0x9dfed33e, (q31_t)0x5251061c, (q31_t)0x9dfac8b4, (q31_t)0x524c3640, (q31_t)0x9df6be67, - (q31_t)0x52476631, (q31_t)0x9df2b456, - (q31_t)0x524295f0, (q31_t)0x9deeaa82, (q31_t)0x523dc57b, (q31_t)0x9deaa0ea, (q31_t)0x5238f4d4, (q31_t)0x9de6978f, - (q31_t)0x523423fb, (q31_t)0x9de28e70, - (q31_t)0x522f52ee, (q31_t)0x9dde858e, (q31_t)0x522a81af, (q31_t)0x9dda7ce9, (q31_t)0x5225b03d, (q31_t)0x9dd6747f, - (q31_t)0x5220de99, (q31_t)0x9dd26c53, - (q31_t)0x521c0cc2, (q31_t)0x9dce6463, (q31_t)0x52173ab8, (q31_t)0x9dca5caf, (q31_t)0x5212687b, (q31_t)0x9dc65539, - (q31_t)0x520d960c, (q31_t)0x9dc24dfe, - (q31_t)0x5208c36a, (q31_t)0x9dbe4701, (q31_t)0x5203f096, (q31_t)0x9dba4040, (q31_t)0x51ff1d8f, (q31_t)0x9db639bb, - (q31_t)0x51fa4a56, (q31_t)0x9db23373, - (q31_t)0x51f576ea, (q31_t)0x9dae2d68, (q31_t)0x51f0a34b, (q31_t)0x9daa279a, (q31_t)0x51ebcf7a, (q31_t)0x9da62208, - (q31_t)0x51e6fb76, (q31_t)0x9da21cb2, - (q31_t)0x51e22740, (q31_t)0x9d9e179a, (q31_t)0x51dd52d7, (q31_t)0x9d9a12be, (q31_t)0x51d87e3c, (q31_t)0x9d960e1f, - (q31_t)0x51d3a96f, (q31_t)0x9d9209bd, - (q31_t)0x51ced46e, (q31_t)0x9d8e0597, (q31_t)0x51c9ff3c, (q31_t)0x9d8a01ae, (q31_t)0x51c529d7, (q31_t)0x9d85fe02, - (q31_t)0x51c0543f, (q31_t)0x9d81fa92, - (q31_t)0x51bb7e75, (q31_t)0x9d7df75f, (q31_t)0x51b6a879, (q31_t)0x9d79f469, (q31_t)0x51b1d24a, (q31_t)0x9d75f1b0, - (q31_t)0x51acfbe9, (q31_t)0x9d71ef34, - (q31_t)0x51a82555, (q31_t)0x9d6decf4, (q31_t)0x51a34e8f, (q31_t)0x9d69eaf1, (q31_t)0x519e7797, (q31_t)0x9d65e92b, - (q31_t)0x5199a06d, (q31_t)0x9d61e7a2, - (q31_t)0x5194c910, (q31_t)0x9d5de656, (q31_t)0x518ff180, (q31_t)0x9d59e546, (q31_t)0x518b19bf, (q31_t)0x9d55e473, - (q31_t)0x518641cb, (q31_t)0x9d51e3dd, - (q31_t)0x518169a5, (q31_t)0x9d4de385, (q31_t)0x517c914c, (q31_t)0x9d49e368, (q31_t)0x5177b8c2, (q31_t)0x9d45e389, - (q31_t)0x5172e005, (q31_t)0x9d41e3e7, - (q31_t)0x516e0715, (q31_t)0x9d3de482, (q31_t)0x51692df4, (q31_t)0x9d39e559, (q31_t)0x516454a0, (q31_t)0x9d35e66e, - (q31_t)0x515f7b1a, (q31_t)0x9d31e7bf, - (q31_t)0x515aa162, (q31_t)0x9d2de94d, (q31_t)0x5155c778, (q31_t)0x9d29eb19, (q31_t)0x5150ed5c, (q31_t)0x9d25ed21, - (q31_t)0x514c130d, (q31_t)0x9d21ef66, - (q31_t)0x5147388c, (q31_t)0x9d1df1e9, (q31_t)0x51425dd9, (q31_t)0x9d19f4a8, (q31_t)0x513d82f4, (q31_t)0x9d15f7a4, - (q31_t)0x5138a7dd, (q31_t)0x9d11fadd, - (q31_t)0x5133cc94, (q31_t)0x9d0dfe54, (q31_t)0x512ef119, (q31_t)0x9d0a0207, (q31_t)0x512a156b, (q31_t)0x9d0605f7, - (q31_t)0x5125398c, (q31_t)0x9d020a25, - (q31_t)0x51205d7b, (q31_t)0x9cfe0e8f, (q31_t)0x511b8137, (q31_t)0x9cfa1337, (q31_t)0x5116a4c1, (q31_t)0x9cf6181c, - (q31_t)0x5111c81a, (q31_t)0x9cf21d3d, - (q31_t)0x510ceb40, (q31_t)0x9cee229c, (q31_t)0x51080e35, (q31_t)0x9cea2838, (q31_t)0x510330f7, (q31_t)0x9ce62e11, - (q31_t)0x50fe5388, (q31_t)0x9ce23427, - (q31_t)0x50f975e6, (q31_t)0x9cde3a7b, (q31_t)0x50f49813, (q31_t)0x9cda410b, (q31_t)0x50efba0d, (q31_t)0x9cd647d9, - (q31_t)0x50eadbd6, (q31_t)0x9cd24ee4, - (q31_t)0x50e5fd6d, (q31_t)0x9cce562c, (q31_t)0x50e11ed2, (q31_t)0x9cca5db1, (q31_t)0x50dc4005, (q31_t)0x9cc66573, - (q31_t)0x50d76106, (q31_t)0x9cc26d73, - (q31_t)0x50d281d5, (q31_t)0x9cbe75b0, (q31_t)0x50cda272, (q31_t)0x9cba7e2a, (q31_t)0x50c8c2de, (q31_t)0x9cb686e1, - (q31_t)0x50c3e317, (q31_t)0x9cb28fd5, - (q31_t)0x50bf031f, (q31_t)0x9cae9907, (q31_t)0x50ba22f5, (q31_t)0x9caaa276, (q31_t)0x50b5429a, (q31_t)0x9ca6ac23, - (q31_t)0x50b0620c, (q31_t)0x9ca2b60c, - (q31_t)0x50ab814d, (q31_t)0x9c9ec033, (q31_t)0x50a6a05c, (q31_t)0x9c9aca97, (q31_t)0x50a1bf39, (q31_t)0x9c96d539, - (q31_t)0x509cdde4, (q31_t)0x9c92e017, - (q31_t)0x5097fc5e, (q31_t)0x9c8eeb34, (q31_t)0x50931aa6, (q31_t)0x9c8af68d, (q31_t)0x508e38bd, (q31_t)0x9c870224, - (q31_t)0x508956a1, (q31_t)0x9c830df8, - (q31_t)0x50847454, (q31_t)0x9c7f1a0a, (q31_t)0x507f91d5, (q31_t)0x9c7b2659, (q31_t)0x507aaf25, (q31_t)0x9c7732e5, - (q31_t)0x5075cc43, (q31_t)0x9c733faf, - (q31_t)0x5070e92f, (q31_t)0x9c6f4cb6, (q31_t)0x506c05ea, (q31_t)0x9c6b59fa, (q31_t)0x50672273, (q31_t)0x9c67677c, - (q31_t)0x50623ecb, (q31_t)0x9c63753c, - (q31_t)0x505d5af1, (q31_t)0x9c5f8339, (q31_t)0x505876e5, (q31_t)0x9c5b9173, (q31_t)0x505392a8, (q31_t)0x9c579feb, - (q31_t)0x504eae39, (q31_t)0x9c53aea0, - (q31_t)0x5049c999, (q31_t)0x9c4fbd93, (q31_t)0x5044e4c7, (q31_t)0x9c4bccc3, (q31_t)0x503fffc4, (q31_t)0x9c47dc31, - (q31_t)0x503b1a8f, (q31_t)0x9c43ebdc, - (q31_t)0x50363529, (q31_t)0x9c3ffbc5, (q31_t)0x50314f91, (q31_t)0x9c3c0beb, (q31_t)0x502c69c8, (q31_t)0x9c381c4f, - (q31_t)0x502783cd, (q31_t)0x9c342cf0, - (q31_t)0x50229da1, (q31_t)0x9c303dcf, (q31_t)0x501db743, (q31_t)0x9c2c4eec, (q31_t)0x5018d0b4, (q31_t)0x9c286046, - (q31_t)0x5013e9f4, (q31_t)0x9c2471de, - (q31_t)0x500f0302, (q31_t)0x9c2083b3, (q31_t)0x500a1bdf, (q31_t)0x9c1c95c6, (q31_t)0x5005348a, (q31_t)0x9c18a816, - (q31_t)0x50004d04, (q31_t)0x9c14baa4, - (q31_t)0x4ffb654d, (q31_t)0x9c10cd70, (q31_t)0x4ff67d64, (q31_t)0x9c0ce07a, (q31_t)0x4ff1954b, (q31_t)0x9c08f3c1, - (q31_t)0x4fecacff, (q31_t)0x9c050745, - (q31_t)0x4fe7c483, (q31_t)0x9c011b08, (q31_t)0x4fe2dbd5, (q31_t)0x9bfd2f08, (q31_t)0x4fddf2f6, (q31_t)0x9bf94346, - (q31_t)0x4fd909e5, (q31_t)0x9bf557c1, - (q31_t)0x4fd420a4, (q31_t)0x9bf16c7a, (q31_t)0x4fcf3731, (q31_t)0x9bed8171, (q31_t)0x4fca4d8d, (q31_t)0x9be996a6, - (q31_t)0x4fc563b7, (q31_t)0x9be5ac18, - (q31_t)0x4fc079b1, (q31_t)0x9be1c1c8, (q31_t)0x4fbb8f79, (q31_t)0x9bddd7b6, (q31_t)0x4fb6a510, (q31_t)0x9bd9ede2, - (q31_t)0x4fb1ba76, (q31_t)0x9bd6044b, - (q31_t)0x4faccfab, (q31_t)0x9bd21af3, (q31_t)0x4fa7e4af, (q31_t)0x9bce31d8, (q31_t)0x4fa2f981, (q31_t)0x9bca48fa, - (q31_t)0x4f9e0e22, (q31_t)0x9bc6605b, - (q31_t)0x4f992293, (q31_t)0x9bc277fa, (q31_t)0x4f9436d2, (q31_t)0x9bbe8fd6, (q31_t)0x4f8f4ae0, (q31_t)0x9bbaa7f0, - (q31_t)0x4f8a5ebd, (q31_t)0x9bb6c048, - (q31_t)0x4f857269, (q31_t)0x9bb2d8de, (q31_t)0x4f8085e4, (q31_t)0x9baef1b2, (q31_t)0x4f7b992d, (q31_t)0x9bab0ac3, - (q31_t)0x4f76ac46, (q31_t)0x9ba72413, - (q31_t)0x4f71bf2e, (q31_t)0x9ba33da0, (q31_t)0x4f6cd1e5, (q31_t)0x9b9f576b, (q31_t)0x4f67e46a, (q31_t)0x9b9b7174, - (q31_t)0x4f62f6bf, (q31_t)0x9b978bbc, - (q31_t)0x4f5e08e3, (q31_t)0x9b93a641, (q31_t)0x4f591ad6, (q31_t)0x9b8fc104, (q31_t)0x4f542c98, (q31_t)0x9b8bdc05, - (q31_t)0x4f4f3e29, (q31_t)0x9b87f744, - (q31_t)0x4f4a4f89, (q31_t)0x9b8412c1, (q31_t)0x4f4560b8, (q31_t)0x9b802e7b, (q31_t)0x4f4071b6, (q31_t)0x9b7c4a74, - (q31_t)0x4f3b8284, (q31_t)0x9b7866ab, - (q31_t)0x4f369320, (q31_t)0x9b748320, (q31_t)0x4f31a38c, (q31_t)0x9b709fd3, (q31_t)0x4f2cb3c7, (q31_t)0x9b6cbcc4, - (q31_t)0x4f27c3d1, (q31_t)0x9b68d9f3, - (q31_t)0x4f22d3aa, (q31_t)0x9b64f760, (q31_t)0x4f1de352, (q31_t)0x9b61150b, (q31_t)0x4f18f2c9, (q31_t)0x9b5d32f4, - (q31_t)0x4f140210, (q31_t)0x9b59511c, - (q31_t)0x4f0f1126, (q31_t)0x9b556f81, (q31_t)0x4f0a200b, (q31_t)0x9b518e24, (q31_t)0x4f052ec0, (q31_t)0x9b4dad06, - (q31_t)0x4f003d43, (q31_t)0x9b49cc26, - (q31_t)0x4efb4b96, (q31_t)0x9b45eb83, (q31_t)0x4ef659b8, (q31_t)0x9b420b1f, (q31_t)0x4ef167aa, (q31_t)0x9b3e2af9, - (q31_t)0x4eec756b, (q31_t)0x9b3a4b11, - (q31_t)0x4ee782fb, (q31_t)0x9b366b68, (q31_t)0x4ee2905a, (q31_t)0x9b328bfc, (q31_t)0x4edd9d89, (q31_t)0x9b2eaccf, - (q31_t)0x4ed8aa87, (q31_t)0x9b2acde0, - (q31_t)0x4ed3b755, (q31_t)0x9b26ef2f, (q31_t)0x4ecec3f2, (q31_t)0x9b2310bc, (q31_t)0x4ec9d05e, (q31_t)0x9b1f3288, - (q31_t)0x4ec4dc99, (q31_t)0x9b1b5492, - (q31_t)0x4ebfe8a5, (q31_t)0x9b1776da, (q31_t)0x4ebaf47f, (q31_t)0x9b139960, (q31_t)0x4eb60029, (q31_t)0x9b0fbc24, - (q31_t)0x4eb10ba2, (q31_t)0x9b0bdf27, - (q31_t)0x4eac16eb, (q31_t)0x9b080268, (q31_t)0x4ea72203, (q31_t)0x9b0425e8, (q31_t)0x4ea22ceb, (q31_t)0x9b0049a5, - (q31_t)0x4e9d37a3, (q31_t)0x9afc6da1, - (q31_t)0x4e984229, (q31_t)0x9af891db, (q31_t)0x4e934c80, (q31_t)0x9af4b654, (q31_t)0x4e8e56a5, (q31_t)0x9af0db0b, - (q31_t)0x4e89609b, (q31_t)0x9aed0000, - (q31_t)0x4e846a60, (q31_t)0x9ae92533, (q31_t)0x4e7f73f4, (q31_t)0x9ae54aa5, (q31_t)0x4e7a7d58, (q31_t)0x9ae17056, - (q31_t)0x4e75868c, (q31_t)0x9add9644, - (q31_t)0x4e708f8f, (q31_t)0x9ad9bc71, (q31_t)0x4e6b9862, (q31_t)0x9ad5e2dd, (q31_t)0x4e66a105, (q31_t)0x9ad20987, - (q31_t)0x4e61a977, (q31_t)0x9ace306f, - (q31_t)0x4e5cb1b9, (q31_t)0x9aca5795, (q31_t)0x4e57b9ca, (q31_t)0x9ac67efb, (q31_t)0x4e52c1ab, (q31_t)0x9ac2a69e, - (q31_t)0x4e4dc95c, (q31_t)0x9abece80, - (q31_t)0x4e48d0dd, (q31_t)0x9abaf6a1, (q31_t)0x4e43d82d, (q31_t)0x9ab71eff, (q31_t)0x4e3edf4d, (q31_t)0x9ab3479d, - (q31_t)0x4e39e63d, (q31_t)0x9aaf7079, - (q31_t)0x4e34ecfc, (q31_t)0x9aab9993, (q31_t)0x4e2ff38b, (q31_t)0x9aa7c2ec, (q31_t)0x4e2af9ea, (q31_t)0x9aa3ec83, - (q31_t)0x4e260019, (q31_t)0x9aa01659, - (q31_t)0x4e210617, (q31_t)0x9a9c406e, (q31_t)0x4e1c0be6, (q31_t)0x9a986ac1, (q31_t)0x4e171184, (q31_t)0x9a949552, - (q31_t)0x4e1216f2, (q31_t)0x9a90c022, - (q31_t)0x4e0d1c30, (q31_t)0x9a8ceb31, (q31_t)0x4e08213e, (q31_t)0x9a89167e, (q31_t)0x4e03261b, (q31_t)0x9a85420a, - (q31_t)0x4dfe2ac9, (q31_t)0x9a816dd5, - (q31_t)0x4df92f46, (q31_t)0x9a7d99de, (q31_t)0x4df43393, (q31_t)0x9a79c625, (q31_t)0x4def37b0, (q31_t)0x9a75f2ac, - (q31_t)0x4dea3b9d, (q31_t)0x9a721f71, - (q31_t)0x4de53f5a, (q31_t)0x9a6e4c74, (q31_t)0x4de042e7, (q31_t)0x9a6a79b6, (q31_t)0x4ddb4644, (q31_t)0x9a66a737, - (q31_t)0x4dd64971, (q31_t)0x9a62d4f7, - (q31_t)0x4dd14c6e, (q31_t)0x9a5f02f5, (q31_t)0x4dcc4f3b, (q31_t)0x9a5b3132, (q31_t)0x4dc751d8, (q31_t)0x9a575fae, - (q31_t)0x4dc25445, (q31_t)0x9a538e68, - (q31_t)0x4dbd5682, (q31_t)0x9a4fbd61, (q31_t)0x4db8588f, (q31_t)0x9a4bec99, (q31_t)0x4db35a6c, (q31_t)0x9a481c0f, - (q31_t)0x4dae5c19, (q31_t)0x9a444bc5, - (q31_t)0x4da95d96, (q31_t)0x9a407bb9, (q31_t)0x4da45ee3, (q31_t)0x9a3cabeb, (q31_t)0x4d9f6001, (q31_t)0x9a38dc5d, - (q31_t)0x4d9a60ee, (q31_t)0x9a350d0d, - (q31_t)0x4d9561ac, (q31_t)0x9a313dfc, (q31_t)0x4d90623a, (q31_t)0x9a2d6f2a, (q31_t)0x4d8b6298, (q31_t)0x9a29a097, - (q31_t)0x4d8662c6, (q31_t)0x9a25d243, - (q31_t)0x4d8162c4, (q31_t)0x9a22042d, (q31_t)0x4d7c6293, (q31_t)0x9a1e3656, (q31_t)0x4d776231, (q31_t)0x9a1a68be, - (q31_t)0x4d7261a0, (q31_t)0x9a169b65, - (q31_t)0x4d6d60df, (q31_t)0x9a12ce4b, (q31_t)0x4d685fef, (q31_t)0x9a0f016f, (q31_t)0x4d635ece, (q31_t)0x9a0b34d3, - (q31_t)0x4d5e5d7e, (q31_t)0x9a076875, - (q31_t)0x4d595bfe, (q31_t)0x9a039c57, (q31_t)0x4d545a4f, (q31_t)0x99ffd077, (q31_t)0x4d4f5870, (q31_t)0x99fc04d6, - (q31_t)0x4d4a5661, (q31_t)0x99f83974, - (q31_t)0x4d455422, (q31_t)0x99f46e51, (q31_t)0x4d4051b4, (q31_t)0x99f0a36d, (q31_t)0x4d3b4f16, (q31_t)0x99ecd8c8, - (q31_t)0x4d364c48, (q31_t)0x99e90e62, - (q31_t)0x4d31494b, (q31_t)0x99e5443b, (q31_t)0x4d2c461e, (q31_t)0x99e17a53, (q31_t)0x4d2742c2, (q31_t)0x99ddb0aa, - (q31_t)0x4d223f36, (q31_t)0x99d9e73f, - (q31_t)0x4d1d3b7a, (q31_t)0x99d61e14, (q31_t)0x4d18378f, (q31_t)0x99d25528, (q31_t)0x4d133374, (q31_t)0x99ce8c7b, - (q31_t)0x4d0e2f2a, (q31_t)0x99cac40d, - (q31_t)0x4d092ab0, (q31_t)0x99c6fbde, (q31_t)0x4d042607, (q31_t)0x99c333ee, (q31_t)0x4cff212e, (q31_t)0x99bf6c3d, - (q31_t)0x4cfa1c26, (q31_t)0x99bba4cb, - (q31_t)0x4cf516ee, (q31_t)0x99b7dd99, (q31_t)0x4cf01187, (q31_t)0x99b416a5, (q31_t)0x4ceb0bf0, (q31_t)0x99b04ff0, - (q31_t)0x4ce6062a, (q31_t)0x99ac897b, - (q31_t)0x4ce10034, (q31_t)0x99a8c345, (q31_t)0x4cdbfa0f, (q31_t)0x99a4fd4d, (q31_t)0x4cd6f3bb, (q31_t)0x99a13795, - (q31_t)0x4cd1ed37, (q31_t)0x999d721c, - (q31_t)0x4ccce684, (q31_t)0x9999ace3, (q31_t)0x4cc7dfa1, (q31_t)0x9995e7e8, (q31_t)0x4cc2d88f, (q31_t)0x9992232d, - (q31_t)0x4cbdd14e, (q31_t)0x998e5eb1, - (q31_t)0x4cb8c9dd, (q31_t)0x998a9a74, (q31_t)0x4cb3c23d, (q31_t)0x9986d676, (q31_t)0x4caeba6e, (q31_t)0x998312b7, - (q31_t)0x4ca9b26f, (q31_t)0x997f4f38, - (q31_t)0x4ca4aa41, (q31_t)0x997b8bf8, (q31_t)0x4c9fa1e4, (q31_t)0x9977c8f7, (q31_t)0x4c9a9958, (q31_t)0x99740635, - (q31_t)0x4c95909c, (q31_t)0x997043b2, - (q31_t)0x4c9087b1, (q31_t)0x996c816f, (q31_t)0x4c8b7e97, (q31_t)0x9968bf6b, (q31_t)0x4c86754e, (q31_t)0x9964fda7, - (q31_t)0x4c816bd5, (q31_t)0x99613c22, - (q31_t)0x4c7c622d, (q31_t)0x995d7adc, (q31_t)0x4c775856, (q31_t)0x9959b9d5, (q31_t)0x4c724e50, (q31_t)0x9955f90d, - (q31_t)0x4c6d441b, (q31_t)0x99523885, - (q31_t)0x4c6839b7, (q31_t)0x994e783d, (q31_t)0x4c632f23, (q31_t)0x994ab833, (q31_t)0x4c5e2460, (q31_t)0x9946f869, - (q31_t)0x4c59196f, (q31_t)0x994338df, - (q31_t)0x4c540e4e, (q31_t)0x993f7993, (q31_t)0x4c4f02fe, (q31_t)0x993bba87, (q31_t)0x4c49f77f, (q31_t)0x9937fbbb, - (q31_t)0x4c44ebd1, (q31_t)0x99343d2e, - (q31_t)0x4c3fdff4, (q31_t)0x99307ee0, (q31_t)0x4c3ad3e7, (q31_t)0x992cc0d2, (q31_t)0x4c35c7ac, (q31_t)0x99290303, - (q31_t)0x4c30bb42, (q31_t)0x99254574, - (q31_t)0x4c2baea9, (q31_t)0x99218824, (q31_t)0x4c26a1e1, (q31_t)0x991dcb13, (q31_t)0x4c2194e9, (q31_t)0x991a0e42, - (q31_t)0x4c1c87c3, (q31_t)0x991651b1, - (q31_t)0x4c177a6e, (q31_t)0x9912955f, (q31_t)0x4c126cea, (q31_t)0x990ed94c, (q31_t)0x4c0d5f37, (q31_t)0x990b1d79, - (q31_t)0x4c085156, (q31_t)0x990761e5, - (q31_t)0x4c034345, (q31_t)0x9903a691, (q31_t)0x4bfe3505, (q31_t)0x98ffeb7d, (q31_t)0x4bf92697, (q31_t)0x98fc30a8, - (q31_t)0x4bf417f9, (q31_t)0x98f87612, - (q31_t)0x4bef092d, (q31_t)0x98f4bbbc, (q31_t)0x4be9fa32, (q31_t)0x98f101a6, (q31_t)0x4be4eb08, (q31_t)0x98ed47cf, - (q31_t)0x4bdfdbaf, (q31_t)0x98e98e38, - (q31_t)0x4bdacc28, (q31_t)0x98e5d4e0, (q31_t)0x4bd5bc72, (q31_t)0x98e21bc8, (q31_t)0x4bd0ac8d, (q31_t)0x98de62f0, - (q31_t)0x4bcb9c79, (q31_t)0x98daaa57, - (q31_t)0x4bc68c36, (q31_t)0x98d6f1fe, (q31_t)0x4bc17bc5, (q31_t)0x98d339e4, (q31_t)0x4bbc6b25, (q31_t)0x98cf820b, - (q31_t)0x4bb75a56, (q31_t)0x98cbca70, - (q31_t)0x4bb24958, (q31_t)0x98c81316, (q31_t)0x4bad382c, (q31_t)0x98c45bfb, (q31_t)0x4ba826d1, (q31_t)0x98c0a520, - (q31_t)0x4ba31548, (q31_t)0x98bcee84, - (q31_t)0x4b9e0390, (q31_t)0x98b93828, (q31_t)0x4b98f1a9, (q31_t)0x98b5820c, (q31_t)0x4b93df93, (q31_t)0x98b1cc30, - (q31_t)0x4b8ecd4f, (q31_t)0x98ae1693, - (q31_t)0x4b89badd, (q31_t)0x98aa6136, (q31_t)0x4b84a83b, (q31_t)0x98a6ac19, (q31_t)0x4b7f956b, (q31_t)0x98a2f73c, - (q31_t)0x4b7a826d, (q31_t)0x989f429e, - (q31_t)0x4b756f40, (q31_t)0x989b8e40, (q31_t)0x4b705be4, (q31_t)0x9897da22, (q31_t)0x4b6b485a, (q31_t)0x98942643, - (q31_t)0x4b6634a2, (q31_t)0x989072a5, - (q31_t)0x4b6120bb, (q31_t)0x988cbf46, (q31_t)0x4b5c0ca5, (q31_t)0x98890c27, (q31_t)0x4b56f861, (q31_t)0x98855948, - (q31_t)0x4b51e3ee, (q31_t)0x9881a6a9, - (q31_t)0x4b4ccf4d, (q31_t)0x987df449, (q31_t)0x4b47ba7e, (q31_t)0x987a422a, (q31_t)0x4b42a580, (q31_t)0x9876904a, - (q31_t)0x4b3d9053, (q31_t)0x9872deaa, - (q31_t)0x4b387af9, (q31_t)0x986f2d4a, (q31_t)0x4b336570, (q31_t)0x986b7c2a, (q31_t)0x4b2e4fb8, (q31_t)0x9867cb4a, - (q31_t)0x4b2939d2, (q31_t)0x98641aa9, - (q31_t)0x4b2423be, (q31_t)0x98606a49, (q31_t)0x4b1f0d7b, (q31_t)0x985cba28, (q31_t)0x4b19f70a, (q31_t)0x98590a48, - (q31_t)0x4b14e06b, (q31_t)0x98555aa7, - (q31_t)0x4b0fc99d, (q31_t)0x9851ab46, (q31_t)0x4b0ab2a1, (q31_t)0x984dfc26, (q31_t)0x4b059b77, (q31_t)0x984a4d45, - (q31_t)0x4b00841f, (q31_t)0x98469ea4, - (q31_t)0x4afb6c98, (q31_t)0x9842f043, (q31_t)0x4af654e3, (q31_t)0x983f4223, (q31_t)0x4af13d00, (q31_t)0x983b9442, - (q31_t)0x4aec24ee, (q31_t)0x9837e6a1, - (q31_t)0x4ae70caf, (q31_t)0x98343940, (q31_t)0x4ae1f441, (q31_t)0x98308c1f, (q31_t)0x4adcdba5, (q31_t)0x982cdf3f, - (q31_t)0x4ad7c2da, (q31_t)0x9829329e, - (q31_t)0x4ad2a9e2, (q31_t)0x9825863d, (q31_t)0x4acd90bb, (q31_t)0x9821da1d, (q31_t)0x4ac87767, (q31_t)0x981e2e3c, - (q31_t)0x4ac35de4, (q31_t)0x981a829c, - (q31_t)0x4abe4433, (q31_t)0x9816d73b, (q31_t)0x4ab92a54, (q31_t)0x98132c1b, (q31_t)0x4ab41046, (q31_t)0x980f813b, - (q31_t)0x4aaef60b, (q31_t)0x980bd69b, - (q31_t)0x4aa9dba2, (q31_t)0x98082c3b, (q31_t)0x4aa4c10b, (q31_t)0x9804821b, (q31_t)0x4a9fa645, (q31_t)0x9800d83c, - (q31_t)0x4a9a8b52, (q31_t)0x97fd2e9c, - (q31_t)0x4a957030, (q31_t)0x97f9853d, (q31_t)0x4a9054e1, (q31_t)0x97f5dc1e, (q31_t)0x4a8b3963, (q31_t)0x97f2333f, - (q31_t)0x4a861db8, (q31_t)0x97ee8aa0, - (q31_t)0x4a8101de, (q31_t)0x97eae242, (q31_t)0x4a7be5d7, (q31_t)0x97e73a23, (q31_t)0x4a76c9a2, (q31_t)0x97e39245, - (q31_t)0x4a71ad3e, (q31_t)0x97dfeaa7, - (q31_t)0x4a6c90ad, (q31_t)0x97dc4349, (q31_t)0x4a6773ee, (q31_t)0x97d89c2c, (q31_t)0x4a625701, (q31_t)0x97d4f54f, - (q31_t)0x4a5d39e6, (q31_t)0x97d14eb2, - (q31_t)0x4a581c9e, (q31_t)0x97cda855, (q31_t)0x4a52ff27, (q31_t)0x97ca0239, (q31_t)0x4a4de182, (q31_t)0x97c65c5c, - (q31_t)0x4a48c3b0, (q31_t)0x97c2b6c1, - (q31_t)0x4a43a5b0, (q31_t)0x97bf1165, (q31_t)0x4a3e8782, (q31_t)0x97bb6c4a, (q31_t)0x4a396926, (q31_t)0x97b7c76f, - (q31_t)0x4a344a9d, (q31_t)0x97b422d4, - (q31_t)0x4a2f2be6, (q31_t)0x97b07e7a, (q31_t)0x4a2a0d01, (q31_t)0x97acda60, (q31_t)0x4a24edee, (q31_t)0x97a93687, - (q31_t)0x4a1fcead, (q31_t)0x97a592ed, - (q31_t)0x4a1aaf3f, (q31_t)0x97a1ef94, (q31_t)0x4a158fa3, (q31_t)0x979e4c7c, (q31_t)0x4a106fda, (q31_t)0x979aa9a4, - (q31_t)0x4a0b4fe2, (q31_t)0x9797070c, - (q31_t)0x4a062fbd, (q31_t)0x979364b5, (q31_t)0x4a010f6b, (q31_t)0x978fc29e, (q31_t)0x49fbeeea, (q31_t)0x978c20c8, - (q31_t)0x49f6ce3c, (q31_t)0x97887f32, - (q31_t)0x49f1ad61, (q31_t)0x9784dddc, (q31_t)0x49ec8c57, (q31_t)0x97813cc7, (q31_t)0x49e76b21, (q31_t)0x977d9bf2, - (q31_t)0x49e249bc, (q31_t)0x9779fb5e, - (q31_t)0x49dd282a, (q31_t)0x97765b0a, (q31_t)0x49d8066b, (q31_t)0x9772baf7, (q31_t)0x49d2e47e, (q31_t)0x976f1b24, - (q31_t)0x49cdc263, (q31_t)0x976b7b92, - (q31_t)0x49c8a01b, (q31_t)0x9767dc41, (q31_t)0x49c37da5, (q31_t)0x97643d2f, (q31_t)0x49be5b02, (q31_t)0x97609e5f, - (q31_t)0x49b93832, (q31_t)0x975cffcf, - (q31_t)0x49b41533, (q31_t)0x9759617f, (q31_t)0x49aef208, (q31_t)0x9755c370, (q31_t)0x49a9ceaf, (q31_t)0x975225a1, - (q31_t)0x49a4ab28, (q31_t)0x974e8813, - (q31_t)0x499f8774, (q31_t)0x974aeac6, (q31_t)0x499a6393, (q31_t)0x97474db9, (q31_t)0x49953f84, (q31_t)0x9743b0ed, - (q31_t)0x49901b48, (q31_t)0x97401462, - (q31_t)0x498af6df, (q31_t)0x973c7817, (q31_t)0x4985d248, (q31_t)0x9738dc0d, (q31_t)0x4980ad84, (q31_t)0x97354043, - (q31_t)0x497b8892, (q31_t)0x9731a4ba, - (q31_t)0x49766373, (q31_t)0x972e0971, (q31_t)0x49713e27, (q31_t)0x972a6e6a, (q31_t)0x496c18ae, (q31_t)0x9726d3a3, - (q31_t)0x4966f307, (q31_t)0x9723391c, - (q31_t)0x4961cd33, (q31_t)0x971f9ed7, (q31_t)0x495ca732, (q31_t)0x971c04d2, (q31_t)0x49578103, (q31_t)0x97186b0d, - (q31_t)0x49525aa7, (q31_t)0x9714d18a, - (q31_t)0x494d341e, (q31_t)0x97113847, (q31_t)0x49480d68, (q31_t)0x970d9f45, (q31_t)0x4942e684, (q31_t)0x970a0683, - (q31_t)0x493dbf74, (q31_t)0x97066e03, - (q31_t)0x49389836, (q31_t)0x9702d5c3, (q31_t)0x493370cb, (q31_t)0x96ff3dc4, (q31_t)0x492e4933, (q31_t)0x96fba605, - (q31_t)0x4929216e, (q31_t)0x96f80e88, - (q31_t)0x4923f97b, (q31_t)0x96f4774b, (q31_t)0x491ed15c, (q31_t)0x96f0e04f, (q31_t)0x4919a90f, (q31_t)0x96ed4994, - (q31_t)0x49148095, (q31_t)0x96e9b319, - (q31_t)0x490f57ee, (q31_t)0x96e61ce0, (q31_t)0x490a2f1b, (q31_t)0x96e286e7, (q31_t)0x4905061a, (q31_t)0x96def12f, - (q31_t)0x48ffdcec, (q31_t)0x96db5bb8, - (q31_t)0x48fab391, (q31_t)0x96d7c682, (q31_t)0x48f58a09, (q31_t)0x96d4318d, (q31_t)0x48f06054, (q31_t)0x96d09cd8, - (q31_t)0x48eb3672, (q31_t)0x96cd0865, - (q31_t)0x48e60c62, (q31_t)0x96c97432, (q31_t)0x48e0e227, (q31_t)0x96c5e040, (q31_t)0x48dbb7be, (q31_t)0x96c24c8f, - (q31_t)0x48d68d28, (q31_t)0x96beb91f, - (q31_t)0x48d16265, (q31_t)0x96bb25f0, (q31_t)0x48cc3775, (q31_t)0x96b79302, (q31_t)0x48c70c59, (q31_t)0x96b40055, - (q31_t)0x48c1e10f, (q31_t)0x96b06de9, - (q31_t)0x48bcb599, (q31_t)0x96acdbbe, (q31_t)0x48b789f5, (q31_t)0x96a949d3, (q31_t)0x48b25e25, (q31_t)0x96a5b82a, - (q31_t)0x48ad3228, (q31_t)0x96a226c2, - (q31_t)0x48a805ff, (q31_t)0x969e959b, (q31_t)0x48a2d9a8, (q31_t)0x969b04b4, (q31_t)0x489dad25, (q31_t)0x9697740f, - (q31_t)0x48988074, (q31_t)0x9693e3ab, - (q31_t)0x48935397, (q31_t)0x96905388, (q31_t)0x488e268e, (q31_t)0x968cc3a5, (q31_t)0x4888f957, (q31_t)0x96893404, - (q31_t)0x4883cbf4, (q31_t)0x9685a4a4, - (q31_t)0x487e9e64, (q31_t)0x96821585, (q31_t)0x487970a7, (q31_t)0x967e86a7, (q31_t)0x487442be, (q31_t)0x967af80a, - (q31_t)0x486f14a8, (q31_t)0x967769af, - (q31_t)0x4869e665, (q31_t)0x9673db94, (q31_t)0x4864b7f5, (q31_t)0x96704dba, (q31_t)0x485f8959, (q31_t)0x966cc022, - (q31_t)0x485a5a90, (q31_t)0x966932cb, - (q31_t)0x48552b9b, (q31_t)0x9665a5b4, (q31_t)0x484ffc79, (q31_t)0x966218df, (q31_t)0x484acd2a, (q31_t)0x965e8c4b, - (q31_t)0x48459daf, (q31_t)0x965afff9, - (q31_t)0x48406e08, (q31_t)0x965773e7, (q31_t)0x483b3e33, (q31_t)0x9653e817, (q31_t)0x48360e32, (q31_t)0x96505c88, - (q31_t)0x4830de05, (q31_t)0x964cd139, - (q31_t)0x482badab, (q31_t)0x9649462d, (q31_t)0x48267d24, (q31_t)0x9645bb61, (q31_t)0x48214c71, (q31_t)0x964230d7, - (q31_t)0x481c1b92, (q31_t)0x963ea68d, - (q31_t)0x4816ea86, (q31_t)0x963b1c86, (q31_t)0x4811b94d, (q31_t)0x963792bf, (q31_t)0x480c87e8, (q31_t)0x96340939, - (q31_t)0x48075657, (q31_t)0x96307ff5, - (q31_t)0x48022499, (q31_t)0x962cf6f2, (q31_t)0x47fcf2af, (q31_t)0x96296e31, (q31_t)0x47f7c099, (q31_t)0x9625e5b0, - (q31_t)0x47f28e56, (q31_t)0x96225d71, - (q31_t)0x47ed5be6, (q31_t)0x961ed574, (q31_t)0x47e8294a, (q31_t)0x961b4db7, (q31_t)0x47e2f682, (q31_t)0x9617c63c, - (q31_t)0x47ddc38e, (q31_t)0x96143f02, - (q31_t)0x47d8906d, (q31_t)0x9610b80a, (q31_t)0x47d35d20, (q31_t)0x960d3153, (q31_t)0x47ce29a7, (q31_t)0x9609aadd, - (q31_t)0x47c8f601, (q31_t)0x960624a9, - (q31_t)0x47c3c22f, (q31_t)0x96029eb6, (q31_t)0x47be8e31, (q31_t)0x95ff1904, (q31_t)0x47b95a06, (q31_t)0x95fb9394, - (q31_t)0x47b425af, (q31_t)0x95f80e65, - (q31_t)0x47aef12c, (q31_t)0x95f48977, (q31_t)0x47a9bc7d, (q31_t)0x95f104cb, (q31_t)0x47a487a2, (q31_t)0x95ed8061, - (q31_t)0x479f529a, (q31_t)0x95e9fc38, - (q31_t)0x479a1d67, (q31_t)0x95e67850, (q31_t)0x4794e807, (q31_t)0x95e2f4a9, (q31_t)0x478fb27b, (q31_t)0x95df7145, - (q31_t)0x478a7cc2, (q31_t)0x95dbee21, - (q31_t)0x478546de, (q31_t)0x95d86b3f, (q31_t)0x478010cd, (q31_t)0x95d4e89f, (q31_t)0x477ada91, (q31_t)0x95d16640, - (q31_t)0x4775a428, (q31_t)0x95cde423, - (q31_t)0x47706d93, (q31_t)0x95ca6247, (q31_t)0x476b36d3, (q31_t)0x95c6e0ac, (q31_t)0x4765ffe6, (q31_t)0x95c35f53, - (q31_t)0x4760c8cd, (q31_t)0x95bfde3c, - (q31_t)0x475b9188, (q31_t)0x95bc5d66, (q31_t)0x47565a17, (q31_t)0x95b8dcd2, (q31_t)0x4751227a, (q31_t)0x95b55c7f, - (q31_t)0x474beab1, (q31_t)0x95b1dc6e, - (q31_t)0x4746b2bc, (q31_t)0x95ae5c9f, (q31_t)0x47417a9b, (q31_t)0x95aadd11, (q31_t)0x473c424e, (q31_t)0x95a75dc4, - (q31_t)0x473709d5, (q31_t)0x95a3deb9, - (q31_t)0x4731d131, (q31_t)0x95a05ff0, (q31_t)0x472c9860, (q31_t)0x959ce169, (q31_t)0x47275f63, (q31_t)0x95996323, - (q31_t)0x4722263b, (q31_t)0x9595e51e, - (q31_t)0x471cece7, (q31_t)0x9592675c, (q31_t)0x4717b367, (q31_t)0x958ee9db, (q31_t)0x471279ba, (q31_t)0x958b6c9b, - (q31_t)0x470d3fe3, (q31_t)0x9587ef9e, - (q31_t)0x470805df, (q31_t)0x958472e2, (q31_t)0x4702cbaf, (q31_t)0x9580f667, (q31_t)0x46fd9154, (q31_t)0x957d7a2f, - (q31_t)0x46f856cd, (q31_t)0x9579fe38, - (q31_t)0x46f31c1a, (q31_t)0x95768283, (q31_t)0x46ede13b, (q31_t)0x9573070f, (q31_t)0x46e8a631, (q31_t)0x956f8bdd, - (q31_t)0x46e36afb, (q31_t)0x956c10ed, - (q31_t)0x46de2f99, (q31_t)0x9568963f, (q31_t)0x46d8f40b, (q31_t)0x95651bd2, (q31_t)0x46d3b852, (q31_t)0x9561a1a8, - (q31_t)0x46ce7c6d, (q31_t)0x955e27bf, - (q31_t)0x46c9405c, (q31_t)0x955aae17, (q31_t)0x46c40420, (q31_t)0x955734b2, (q31_t)0x46bec7b8, (q31_t)0x9553bb8e, - (q31_t)0x46b98b24, (q31_t)0x955042ac, - (q31_t)0x46b44e65, (q31_t)0x954cca0c, (q31_t)0x46af117a, (q31_t)0x954951ae, (q31_t)0x46a9d464, (q31_t)0x9545d992, - (q31_t)0x46a49722, (q31_t)0x954261b7, - (q31_t)0x469f59b4, (q31_t)0x953eea1e, (q31_t)0x469a1c1b, (q31_t)0x953b72c7, (q31_t)0x4694de56, (q31_t)0x9537fbb2, - (q31_t)0x468fa066, (q31_t)0x953484df, - (q31_t)0x468a624a, (q31_t)0x95310e4e, (q31_t)0x46852403, (q31_t)0x952d97fe, (q31_t)0x467fe590, (q31_t)0x952a21f1, - (q31_t)0x467aa6f2, (q31_t)0x9526ac25, - (q31_t)0x46756828, (q31_t)0x9523369c, (q31_t)0x46702933, (q31_t)0x951fc154, (q31_t)0x466aea12, (q31_t)0x951c4c4e, - (q31_t)0x4665aac6, (q31_t)0x9518d78a, - (q31_t)0x46606b4e, (q31_t)0x95156308, (q31_t)0x465b2bab, (q31_t)0x9511eec8, (q31_t)0x4655ebdd, (q31_t)0x950e7aca, - (q31_t)0x4650abe3, (q31_t)0x950b070e, - (q31_t)0x464b6bbe, (q31_t)0x95079394, (q31_t)0x46462b6d, (q31_t)0x9504205c, (q31_t)0x4640eaf2, (q31_t)0x9500ad66, - (q31_t)0x463baa4a, (q31_t)0x94fd3ab1, - (q31_t)0x46366978, (q31_t)0x94f9c83f, (q31_t)0x4631287a, (q31_t)0x94f6560f, (q31_t)0x462be751, (q31_t)0x94f2e421, - (q31_t)0x4626a5fd, (q31_t)0x94ef7275, - (q31_t)0x4621647d, (q31_t)0x94ec010b, (q31_t)0x461c22d2, (q31_t)0x94e88fe3, (q31_t)0x4616e0fc, (q31_t)0x94e51efd, - (q31_t)0x46119efa, (q31_t)0x94e1ae59, - (q31_t)0x460c5cce, (q31_t)0x94de3df8, (q31_t)0x46071a76, (q31_t)0x94dacdd8, (q31_t)0x4601d7f3, (q31_t)0x94d75dfa, - (q31_t)0x45fc9545, (q31_t)0x94d3ee5f, - (q31_t)0x45f7526b, (q31_t)0x94d07f05, (q31_t)0x45f20f67, (q31_t)0x94cd0fee, (q31_t)0x45eccc37, (q31_t)0x94c9a119, - (q31_t)0x45e788dc, (q31_t)0x94c63286, - (q31_t)0x45e24556, (q31_t)0x94c2c435, (q31_t)0x45dd01a5, (q31_t)0x94bf5627, (q31_t)0x45d7bdc9, (q31_t)0x94bbe85a, - (q31_t)0x45d279c2, (q31_t)0x94b87ad0, - (q31_t)0x45cd358f, (q31_t)0x94b50d87, (q31_t)0x45c7f132, (q31_t)0x94b1a081, (q31_t)0x45c2acaa, (q31_t)0x94ae33be, - (q31_t)0x45bd67f6, (q31_t)0x94aac73c, - (q31_t)0x45b82318, (q31_t)0x94a75afd, (q31_t)0x45b2de0e, (q31_t)0x94a3eeff, (q31_t)0x45ad98da, (q31_t)0x94a08344, - (q31_t)0x45a8537a, (q31_t)0x949d17cc, - (q31_t)0x45a30df0, (q31_t)0x9499ac95, (q31_t)0x459dc83b, (q31_t)0x949641a1, (q31_t)0x4598825a, (q31_t)0x9492d6ef, - (q31_t)0x45933c4f, (q31_t)0x948f6c7f, - (q31_t)0x458df619, (q31_t)0x948c0252, (q31_t)0x4588afb8, (q31_t)0x94889867, (q31_t)0x4583692c, (q31_t)0x94852ebe, - (q31_t)0x457e2275, (q31_t)0x9481c557, - (q31_t)0x4578db93, (q31_t)0x947e5c33, (q31_t)0x45739487, (q31_t)0x947af351, (q31_t)0x456e4d4f, (q31_t)0x94778ab1, - (q31_t)0x456905ed, (q31_t)0x94742254, - (q31_t)0x4563be60, (q31_t)0x9470ba39, (q31_t)0x455e76a8, (q31_t)0x946d5260, (q31_t)0x45592ec6, (q31_t)0x9469eaca, - (q31_t)0x4553e6b8, (q31_t)0x94668376, - (q31_t)0x454e9e80, (q31_t)0x94631c65, (q31_t)0x4549561d, (q31_t)0x945fb596, (q31_t)0x45440d90, (q31_t)0x945c4f09, - (q31_t)0x453ec4d7, (q31_t)0x9458e8bf, - (q31_t)0x45397bf4, (q31_t)0x945582b7, (q31_t)0x453432e6, (q31_t)0x94521cf1, (q31_t)0x452ee9ae, (q31_t)0x944eb76e, - (q31_t)0x4529a04b, (q31_t)0x944b522d, - (q31_t)0x452456bd, (q31_t)0x9447ed2f, (q31_t)0x451f0d04, (q31_t)0x94448873, (q31_t)0x4519c321, (q31_t)0x944123fa, - (q31_t)0x45147913, (q31_t)0x943dbfc3, - (q31_t)0x450f2edb, (q31_t)0x943a5bcf, (q31_t)0x4509e478, (q31_t)0x9436f81d, (q31_t)0x450499eb, (q31_t)0x943394ad, - (q31_t)0x44ff4f32, (q31_t)0x94303180, - (q31_t)0x44fa0450, (q31_t)0x942cce96, (q31_t)0x44f4b943, (q31_t)0x94296bee, (q31_t)0x44ef6e0b, (q31_t)0x94260989, - (q31_t)0x44ea22a9, (q31_t)0x9422a766, - (q31_t)0x44e4d71c, (q31_t)0x941f4585, (q31_t)0x44df8b64, (q31_t)0x941be3e8, (q31_t)0x44da3f83, (q31_t)0x9418828c, - (q31_t)0x44d4f376, (q31_t)0x94152174, - (q31_t)0x44cfa740, (q31_t)0x9411c09e, (q31_t)0x44ca5adf, (q31_t)0x940e600a, (q31_t)0x44c50e53, (q31_t)0x940affb9, - (q31_t)0x44bfc19d, (q31_t)0x94079fab, - (q31_t)0x44ba74bd, (q31_t)0x94043fdf, (q31_t)0x44b527b2, (q31_t)0x9400e056, (q31_t)0x44afda7d, (q31_t)0x93fd810f, - (q31_t)0x44aa8d1d, (q31_t)0x93fa220b, - (q31_t)0x44a53f93, (q31_t)0x93f6c34a, (q31_t)0x449ff1df, (q31_t)0x93f364cb, (q31_t)0x449aa400, (q31_t)0x93f0068f, - (q31_t)0x449555f7, (q31_t)0x93eca896, - (q31_t)0x449007c4, (q31_t)0x93e94adf, (q31_t)0x448ab967, (q31_t)0x93e5ed6b, (q31_t)0x44856adf, (q31_t)0x93e2903a, - (q31_t)0x44801c2d, (q31_t)0x93df334c, - (q31_t)0x447acd50, (q31_t)0x93dbd6a0, (q31_t)0x44757e4a, (q31_t)0x93d87a36, (q31_t)0x44702f19, (q31_t)0x93d51e10, - (q31_t)0x446adfbe, (q31_t)0x93d1c22c, - (q31_t)0x44659039, (q31_t)0x93ce668b, (q31_t)0x44604089, (q31_t)0x93cb0b2d, (q31_t)0x445af0b0, (q31_t)0x93c7b011, - (q31_t)0x4455a0ac, (q31_t)0x93c45539, - (q31_t)0x4450507e, (q31_t)0x93c0faa3, (q31_t)0x444b0026, (q31_t)0x93bda04f, (q31_t)0x4445afa4, (q31_t)0x93ba463f, - (q31_t)0x44405ef8, (q31_t)0x93b6ec71, - (q31_t)0x443b0e21, (q31_t)0x93b392e6, (q31_t)0x4435bd21, (q31_t)0x93b0399e, (q31_t)0x44306bf6, (q31_t)0x93ace099, - (q31_t)0x442b1aa2, (q31_t)0x93a987d6, - (q31_t)0x4425c923, (q31_t)0x93a62f57, (q31_t)0x4420777b, (q31_t)0x93a2d71a, (q31_t)0x441b25a8, (q31_t)0x939f7f20, - (q31_t)0x4415d3ab, (q31_t)0x939c2769, - (q31_t)0x44108184, (q31_t)0x9398cff5, (q31_t)0x440b2f34, (q31_t)0x939578c3, (q31_t)0x4405dcb9, (q31_t)0x939221d5, - (q31_t)0x44008a14, (q31_t)0x938ecb29, - (q31_t)0x43fb3746, (q31_t)0x938b74c1, (q31_t)0x43f5e44d, (q31_t)0x93881e9b, (q31_t)0x43f0912b, (q31_t)0x9384c8b8, - (q31_t)0x43eb3ddf, (q31_t)0x93817318, - (q31_t)0x43e5ea68, (q31_t)0x937e1dbb, (q31_t)0x43e096c8, (q31_t)0x937ac8a1, (q31_t)0x43db42fe, (q31_t)0x937773ca, - (q31_t)0x43d5ef0a, (q31_t)0x93741f35, - (q31_t)0x43d09aed, (q31_t)0x9370cae4, (q31_t)0x43cb46a5, (q31_t)0x936d76d6, (q31_t)0x43c5f234, (q31_t)0x936a230a, - (q31_t)0x43c09d99, (q31_t)0x9366cf82, - (q31_t)0x43bb48d4, (q31_t)0x93637c3d, (q31_t)0x43b5f3e5, (q31_t)0x9360293a, (q31_t)0x43b09ecc, (q31_t)0x935cd67b, - (q31_t)0x43ab498a, (q31_t)0x935983ff, - (q31_t)0x43a5f41e, (q31_t)0x935631c5, (q31_t)0x43a09e89, (q31_t)0x9352dfcf, (q31_t)0x439b48c9, (q31_t)0x934f8e1c, - (q31_t)0x4395f2e0, (q31_t)0x934c3cab, - (q31_t)0x43909ccd, (q31_t)0x9348eb7e, (q31_t)0x438b4691, (q31_t)0x93459a94, (q31_t)0x4385f02a, (q31_t)0x934249ed, - (q31_t)0x4380999b, (q31_t)0x933ef989, - (q31_t)0x437b42e1, (q31_t)0x933ba968, (q31_t)0x4375ebfe, (q31_t)0x9338598a, (q31_t)0x437094f1, (q31_t)0x933509f0, - (q31_t)0x436b3dbb, (q31_t)0x9331ba98, - (q31_t)0x4365e65b, (q31_t)0x932e6b84, (q31_t)0x43608ed2, (q31_t)0x932b1cb2, (q31_t)0x435b371f, (q31_t)0x9327ce24, - (q31_t)0x4355df42, (q31_t)0x93247fd9, - (q31_t)0x4350873c, (q31_t)0x932131d1, (q31_t)0x434b2f0c, (q31_t)0x931de40c, (q31_t)0x4345d6b3, (q31_t)0x931a968b, - (q31_t)0x43407e31, (q31_t)0x9317494c, - (q31_t)0x433b2585, (q31_t)0x9313fc51, (q31_t)0x4335ccaf, (q31_t)0x9310af99, (q31_t)0x433073b0, (q31_t)0x930d6324, - (q31_t)0x432b1a87, (q31_t)0x930a16f3, - (q31_t)0x4325c135, (q31_t)0x9306cb04, (q31_t)0x432067ba, (q31_t)0x93037f59, (q31_t)0x431b0e15, (q31_t)0x930033f1, - (q31_t)0x4315b447, (q31_t)0x92fce8cc, - (q31_t)0x43105a50, (q31_t)0x92f99deb, (q31_t)0x430b002f, (q31_t)0x92f6534c, (q31_t)0x4305a5e5, (q31_t)0x92f308f1, - (q31_t)0x43004b71, (q31_t)0x92efbeda, - (q31_t)0x42faf0d4, (q31_t)0x92ec7505, (q31_t)0x42f5960e, (q31_t)0x92e92b74, (q31_t)0x42f03b1e, (q31_t)0x92e5e226, - (q31_t)0x42eae005, (q31_t)0x92e2991c, - (q31_t)0x42e584c3, (q31_t)0x92df5054, (q31_t)0x42e02958, (q31_t)0x92dc07d0, (q31_t)0x42dacdc3, (q31_t)0x92d8bf90, - (q31_t)0x42d57205, (q31_t)0x92d57792, - (q31_t)0x42d0161e, (q31_t)0x92d22fd9, (q31_t)0x42caba0e, (q31_t)0x92cee862, (q31_t)0x42c55dd4, (q31_t)0x92cba12f, - (q31_t)0x42c00172, (q31_t)0x92c85a3f, - (q31_t)0x42baa4e6, (q31_t)0x92c51392, (q31_t)0x42b54831, (q31_t)0x92c1cd29, (q31_t)0x42afeb53, (q31_t)0x92be8703, - (q31_t)0x42aa8e4b, (q31_t)0x92bb4121, - (q31_t)0x42a5311b, (q31_t)0x92b7fb82, (q31_t)0x429fd3c1, (q31_t)0x92b4b626, (q31_t)0x429a763f, (q31_t)0x92b1710e, - (q31_t)0x42951893, (q31_t)0x92ae2c3a, - (q31_t)0x428fbabe, (q31_t)0x92aae7a8, (q31_t)0x428a5cc0, (q31_t)0x92a7a35a, (q31_t)0x4284fe99, (q31_t)0x92a45f50, - (q31_t)0x427fa049, (q31_t)0x92a11b89, - (q31_t)0x427a41d0, (q31_t)0x929dd806, (q31_t)0x4274e32e, (q31_t)0x929a94c6, (q31_t)0x426f8463, (q31_t)0x929751c9, - (q31_t)0x426a256f, (q31_t)0x92940f10, - (q31_t)0x4264c653, (q31_t)0x9290cc9b, (q31_t)0x425f670d, (q31_t)0x928d8a69, (q31_t)0x425a079e, (q31_t)0x928a487a, - (q31_t)0x4254a806, (q31_t)0x928706cf, - (q31_t)0x424f4845, (q31_t)0x9283c568, (q31_t)0x4249e85c, (q31_t)0x92808444, (q31_t)0x42448849, (q31_t)0x927d4363, - (q31_t)0x423f280e, (q31_t)0x927a02c7, - (q31_t)0x4239c7aa, (q31_t)0x9276c26d, (q31_t)0x4234671d, (q31_t)0x92738258, (q31_t)0x422f0667, (q31_t)0x92704286, - (q31_t)0x4229a588, (q31_t)0x926d02f7, - (q31_t)0x42244481, (q31_t)0x9269c3ac, (q31_t)0x421ee350, (q31_t)0x926684a5, (q31_t)0x421981f7, (q31_t)0x926345e1, - (q31_t)0x42142075, (q31_t)0x92600761, - (q31_t)0x420ebecb, (q31_t)0x925cc924, (q31_t)0x42095cf7, (q31_t)0x92598b2b, (q31_t)0x4203fafb, (q31_t)0x92564d76, - (q31_t)0x41fe98d6, (q31_t)0x92531005, - (q31_t)0x41f93689, (q31_t)0x924fd2d7, (q31_t)0x41f3d413, (q31_t)0x924c95ec, (q31_t)0x41ee7174, (q31_t)0x92495946, - (q31_t)0x41e90eac, (q31_t)0x92461ce3, - (q31_t)0x41e3abbc, (q31_t)0x9242e0c4, (q31_t)0x41de48a3, (q31_t)0x923fa4e8, (q31_t)0x41d8e561, (q31_t)0x923c6950, - (q31_t)0x41d381f7, (q31_t)0x92392dfc, - (q31_t)0x41ce1e65, (q31_t)0x9235f2ec, (q31_t)0x41c8baa9, (q31_t)0x9232b81f, (q31_t)0x41c356c5, (q31_t)0x922f7d96, - (q31_t)0x41bdf2b9, (q31_t)0x922c4351, - (q31_t)0x41b88e84, (q31_t)0x9229094f, (q31_t)0x41b32a26, (q31_t)0x9225cf91, (q31_t)0x41adc5a0, (q31_t)0x92229617, - (q31_t)0x41a860f1, (q31_t)0x921f5ce1, - (q31_t)0x41a2fc1a, (q31_t)0x921c23ef, (q31_t)0x419d971b, (q31_t)0x9218eb40, (q31_t)0x419831f3, (q31_t)0x9215b2d5, - (q31_t)0x4192cca2, (q31_t)0x92127aae, - (q31_t)0x418d6729, (q31_t)0x920f42cb, (q31_t)0x41880188, (q31_t)0x920c0b2c, (q31_t)0x41829bbe, (q31_t)0x9208d3d0, - (q31_t)0x417d35cb, (q31_t)0x92059cb8, - (q31_t)0x4177cfb1, (q31_t)0x920265e4, (q31_t)0x4172696e, (q31_t)0x91ff2f54, (q31_t)0x416d0302, (q31_t)0x91fbf908, - (q31_t)0x41679c6f, (q31_t)0x91f8c300, - (q31_t)0x416235b2, (q31_t)0x91f58d3b, (q31_t)0x415ccece, (q31_t)0x91f257bb, (q31_t)0x415767c1, (q31_t)0x91ef227e, - (q31_t)0x4152008c, (q31_t)0x91ebed85, - (q31_t)0x414c992f, (q31_t)0x91e8b8d0, (q31_t)0x414731a9, (q31_t)0x91e5845f, (q31_t)0x4141c9fb, (q31_t)0x91e25032, - (q31_t)0x413c6225, (q31_t)0x91df1c49, - (q31_t)0x4136fa27, (q31_t)0x91dbe8a4, (q31_t)0x41319200, (q31_t)0x91d8b542, (q31_t)0x412c29b1, (q31_t)0x91d58225, - (q31_t)0x4126c13a, (q31_t)0x91d24f4c, - (q31_t)0x4121589b, (q31_t)0x91cf1cb6, (q31_t)0x411befd3, (q31_t)0x91cbea65, (q31_t)0x411686e4, (q31_t)0x91c8b857, - (q31_t)0x41111dcc, (q31_t)0x91c5868e, - (q31_t)0x410bb48c, (q31_t)0x91c25508, (q31_t)0x41064b24, (q31_t)0x91bf23c7, (q31_t)0x4100e194, (q31_t)0x91bbf2c9, - (q31_t)0x40fb77dc, (q31_t)0x91b8c210, - (q31_t)0x40f60dfb, (q31_t)0x91b5919a, (q31_t)0x40f0a3f3, (q31_t)0x91b26169, (q31_t)0x40eb39c3, (q31_t)0x91af317c, - (q31_t)0x40e5cf6a, (q31_t)0x91ac01d2, - (q31_t)0x40e064ea, (q31_t)0x91a8d26d, (q31_t)0x40dafa41, (q31_t)0x91a5a34c, (q31_t)0x40d58f71, (q31_t)0x91a2746f, - (q31_t)0x40d02478, (q31_t)0x919f45d6, - (q31_t)0x40cab958, (q31_t)0x919c1781, (q31_t)0x40c54e0f, (q31_t)0x9198e970, (q31_t)0x40bfe29f, (q31_t)0x9195bba3, - (q31_t)0x40ba7706, (q31_t)0x91928e1a, - (q31_t)0x40b50b46, (q31_t)0x918f60d6, (q31_t)0x40af9f5e, (q31_t)0x918c33d5, (q31_t)0x40aa334e, (q31_t)0x91890719, - (q31_t)0x40a4c716, (q31_t)0x9185daa1, - (q31_t)0x409f5ab6, (q31_t)0x9182ae6d, (q31_t)0x4099ee2e, (q31_t)0x917f827d, (q31_t)0x4094817f, (q31_t)0x917c56d1, - (q31_t)0x408f14a7, (q31_t)0x91792b6a, - (q31_t)0x4089a7a8, (q31_t)0x91760047, (q31_t)0x40843a81, (q31_t)0x9172d567, (q31_t)0x407ecd32, (q31_t)0x916faacc, - (q31_t)0x40795fbc, (q31_t)0x916c8076, - (q31_t)0x4073f21d, (q31_t)0x91695663, (q31_t)0x406e8457, (q31_t)0x91662c95, (q31_t)0x40691669, (q31_t)0x9163030b, - (q31_t)0x4063a854, (q31_t)0x915fd9c5, - (q31_t)0x405e3a16, (q31_t)0x915cb0c3, (q31_t)0x4058cbb1, (q31_t)0x91598806, (q31_t)0x40535d24, (q31_t)0x91565f8d, - (q31_t)0x404dee70, (q31_t)0x91533758, - (q31_t)0x40487f94, (q31_t)0x91500f67, (q31_t)0x40431090, (q31_t)0x914ce7bb, (q31_t)0x403da165, (q31_t)0x9149c053, - (q31_t)0x40383212, (q31_t)0x9146992f, - (q31_t)0x4032c297, (q31_t)0x91437250, (q31_t)0x402d52f5, (q31_t)0x91404bb5, (q31_t)0x4027e32b, (q31_t)0x913d255e, - (q31_t)0x4022733a, (q31_t)0x9139ff4b, - (q31_t)0x401d0321, (q31_t)0x9136d97d, (q31_t)0x401792e0, (q31_t)0x9133b3f3, (q31_t)0x40122278, (q31_t)0x91308eae, - (q31_t)0x400cb1e9, (q31_t)0x912d69ad, - (q31_t)0x40074132, (q31_t)0x912a44f0, (q31_t)0x4001d053, (q31_t)0x91272078, (q31_t)0x3ffc5f4d, (q31_t)0x9123fc44, - (q31_t)0x3ff6ee1f, (q31_t)0x9120d854, - (q31_t)0x3ff17cca, (q31_t)0x911db4a9, (q31_t)0x3fec0b4e, (q31_t)0x911a9142, (q31_t)0x3fe699aa, (q31_t)0x91176e1f, - (q31_t)0x3fe127df, (q31_t)0x91144b41, - (q31_t)0x3fdbb5ec, (q31_t)0x911128a8, (q31_t)0x3fd643d2, (q31_t)0x910e0653, (q31_t)0x3fd0d191, (q31_t)0x910ae442, - (q31_t)0x3fcb5f28, (q31_t)0x9107c276, - (q31_t)0x3fc5ec98, (q31_t)0x9104a0ee, (q31_t)0x3fc079e0, (q31_t)0x91017faa, (q31_t)0x3fbb0702, (q31_t)0x90fe5eab, - (q31_t)0x3fb593fb, (q31_t)0x90fb3df1, - (q31_t)0x3fb020ce, (q31_t)0x90f81d7b, (q31_t)0x3faaad79, (q31_t)0x90f4fd4a, (q31_t)0x3fa539fd, (q31_t)0x90f1dd5d, - (q31_t)0x3f9fc65a, (q31_t)0x90eebdb4, - (q31_t)0x3f9a5290, (q31_t)0x90eb9e50, (q31_t)0x3f94de9e, (q31_t)0x90e87f31, (q31_t)0x3f8f6a85, (q31_t)0x90e56056, - (q31_t)0x3f89f645, (q31_t)0x90e241bf, - (q31_t)0x3f8481dd, (q31_t)0x90df236e, (q31_t)0x3f7f0d4f, (q31_t)0x90dc0560, (q31_t)0x3f799899, (q31_t)0x90d8e798, - (q31_t)0x3f7423bc, (q31_t)0x90d5ca13, - (q31_t)0x3f6eaeb8, (q31_t)0x90d2acd4, (q31_t)0x3f69398d, (q31_t)0x90cf8fd9, (q31_t)0x3f63c43b, (q31_t)0x90cc7322, - (q31_t)0x3f5e4ec2, (q31_t)0x90c956b1, - (q31_t)0x3f58d921, (q31_t)0x90c63a83, (q31_t)0x3f53635a, (q31_t)0x90c31e9b, (q31_t)0x3f4ded6b, (q31_t)0x90c002f7, - (q31_t)0x3f487755, (q31_t)0x90bce797, - (q31_t)0x3f430119, (q31_t)0x90b9cc7d, (q31_t)0x3f3d8ab5, (q31_t)0x90b6b1a6, (q31_t)0x3f38142a, (q31_t)0x90b39715, - (q31_t)0x3f329d79, (q31_t)0x90b07cc8, - (q31_t)0x3f2d26a0, (q31_t)0x90ad62c0, (q31_t)0x3f27afa1, (q31_t)0x90aa48fd, (q31_t)0x3f22387a, (q31_t)0x90a72f7e, - (q31_t)0x3f1cc12c, (q31_t)0x90a41644, - (q31_t)0x3f1749b8, (q31_t)0x90a0fd4e, (q31_t)0x3f11d21d, (q31_t)0x909de49e, (q31_t)0x3f0c5a5a, (q31_t)0x909acc32, - (q31_t)0x3f06e271, (q31_t)0x9097b40a, - (q31_t)0x3f016a61, (q31_t)0x90949c28, (q31_t)0x3efbf22a, (q31_t)0x9091848a, (q31_t)0x3ef679cc, (q31_t)0x908e6d31, - (q31_t)0x3ef10148, (q31_t)0x908b561c, - (q31_t)0x3eeb889c, (q31_t)0x90883f4d, (q31_t)0x3ee60fca, (q31_t)0x908528c2, (q31_t)0x3ee096d1, (q31_t)0x9082127c, - (q31_t)0x3edb1db1, (q31_t)0x907efc7a, - (q31_t)0x3ed5a46b, (q31_t)0x907be6be, (q31_t)0x3ed02afd, (q31_t)0x9078d146, (q31_t)0x3ecab169, (q31_t)0x9075bc13, - (q31_t)0x3ec537ae, (q31_t)0x9072a725, - (q31_t)0x3ebfbdcd, (q31_t)0x906f927c, (q31_t)0x3eba43c4, (q31_t)0x906c7e17, (q31_t)0x3eb4c995, (q31_t)0x906969f8, - (q31_t)0x3eaf4f40, (q31_t)0x9066561d, - (q31_t)0x3ea9d4c3, (q31_t)0x90634287, (q31_t)0x3ea45a21, (q31_t)0x90602f35, (q31_t)0x3e9edf57, (q31_t)0x905d1c29, - (q31_t)0x3e996467, (q31_t)0x905a0962, - (q31_t)0x3e93e950, (q31_t)0x9056f6df, (q31_t)0x3e8e6e12, (q31_t)0x9053e4a1, (q31_t)0x3e88f2ae, (q31_t)0x9050d2a9, - (q31_t)0x3e837724, (q31_t)0x904dc0f5, - (q31_t)0x3e7dfb73, (q31_t)0x904aaf86, (q31_t)0x3e787f9b, (q31_t)0x90479e5c, (q31_t)0x3e73039d, (q31_t)0x90448d76, - (q31_t)0x3e6d8778, (q31_t)0x90417cd6, - (q31_t)0x3e680b2c, (q31_t)0x903e6c7b, (q31_t)0x3e628ebb, (q31_t)0x903b5c64, (q31_t)0x3e5d1222, (q31_t)0x90384c93, - (q31_t)0x3e579564, (q31_t)0x90353d06, - (q31_t)0x3e52187f, (q31_t)0x90322dbf, (q31_t)0x3e4c9b73, (q31_t)0x902f1ebc, (q31_t)0x3e471e41, (q31_t)0x902c0fff, - (q31_t)0x3e41a0e8, (q31_t)0x90290186, - (q31_t)0x3e3c2369, (q31_t)0x9025f352, (q31_t)0x3e36a5c4, (q31_t)0x9022e564, (q31_t)0x3e3127f9, (q31_t)0x901fd7ba, - (q31_t)0x3e2baa07, (q31_t)0x901cca55, - (q31_t)0x3e262bee, (q31_t)0x9019bd36, (q31_t)0x3e20adaf, (q31_t)0x9016b05b, (q31_t)0x3e1b2f4a, (q31_t)0x9013a3c5, - (q31_t)0x3e15b0bf, (q31_t)0x90109775, - (q31_t)0x3e10320d, (q31_t)0x900d8b69, (q31_t)0x3e0ab336, (q31_t)0x900a7fa3, (q31_t)0x3e053437, (q31_t)0x90077422, - (q31_t)0x3dffb513, (q31_t)0x900468e5, - (q31_t)0x3dfa35c8, (q31_t)0x90015dee, (q31_t)0x3df4b657, (q31_t)0x8ffe533c, (q31_t)0x3def36c0, (q31_t)0x8ffb48cf, - (q31_t)0x3de9b703, (q31_t)0x8ff83ea7, - (q31_t)0x3de4371f, (q31_t)0x8ff534c4, (q31_t)0x3ddeb716, (q31_t)0x8ff22b26, (q31_t)0x3dd936e6, (q31_t)0x8fef21ce, - (q31_t)0x3dd3b690, (q31_t)0x8fec18ba, - (q31_t)0x3dce3614, (q31_t)0x8fe90fec, (q31_t)0x3dc8b571, (q31_t)0x8fe60763, (q31_t)0x3dc334a9, (q31_t)0x8fe2ff1f, - (q31_t)0x3dbdb3ba, (q31_t)0x8fdff720, - (q31_t)0x3db832a6, (q31_t)0x8fdcef66, (q31_t)0x3db2b16b, (q31_t)0x8fd9e7f2, (q31_t)0x3dad300b, (q31_t)0x8fd6e0c2, - (q31_t)0x3da7ae84, (q31_t)0x8fd3d9d8, - (q31_t)0x3da22cd7, (q31_t)0x8fd0d333, (q31_t)0x3d9cab04, (q31_t)0x8fcdccd3, (q31_t)0x3d97290b, (q31_t)0x8fcac6b9, - (q31_t)0x3d91a6ed, (q31_t)0x8fc7c0e3, - (q31_t)0x3d8c24a8, (q31_t)0x8fc4bb53, (q31_t)0x3d86a23d, (q31_t)0x8fc1b608, (q31_t)0x3d811fac, (q31_t)0x8fbeb103, - (q31_t)0x3d7b9cf6, (q31_t)0x8fbbac42, - (q31_t)0x3d761a19, (q31_t)0x8fb8a7c7, (q31_t)0x3d709717, (q31_t)0x8fb5a391, (q31_t)0x3d6b13ee, (q31_t)0x8fb29fa0, - (q31_t)0x3d6590a0, (q31_t)0x8faf9bf5, - (q31_t)0x3d600d2c, (q31_t)0x8fac988f, (q31_t)0x3d5a8992, (q31_t)0x8fa9956e, (q31_t)0x3d5505d2, (q31_t)0x8fa69293, - (q31_t)0x3d4f81ec, (q31_t)0x8fa38ffc, - (q31_t)0x3d49fde1, (q31_t)0x8fa08dab, (q31_t)0x3d4479b0, (q31_t)0x8f9d8ba0, (q31_t)0x3d3ef559, (q31_t)0x8f9a89da, - (q31_t)0x3d3970dc, (q31_t)0x8f978859, - (q31_t)0x3d33ec39, (q31_t)0x8f94871d, (q31_t)0x3d2e6771, (q31_t)0x8f918627, (q31_t)0x3d28e282, (q31_t)0x8f8e8576, - (q31_t)0x3d235d6f, (q31_t)0x8f8b850a, - (q31_t)0x3d1dd835, (q31_t)0x8f8884e4, (q31_t)0x3d1852d6, (q31_t)0x8f858503, (q31_t)0x3d12cd51, (q31_t)0x8f828568, - (q31_t)0x3d0d47a6, (q31_t)0x8f7f8612, - (q31_t)0x3d07c1d6, (q31_t)0x8f7c8701, (q31_t)0x3d023be0, (q31_t)0x8f798836, (q31_t)0x3cfcb5c4, (q31_t)0x8f7689b0, - (q31_t)0x3cf72f83, (q31_t)0x8f738b70, - (q31_t)0x3cf1a91c, (q31_t)0x8f708d75, (q31_t)0x3cec2290, (q31_t)0x8f6d8fbf, (q31_t)0x3ce69bde, (q31_t)0x8f6a924f, - (q31_t)0x3ce11507, (q31_t)0x8f679525, - (q31_t)0x3cdb8e09, (q31_t)0x8f649840, (q31_t)0x3cd606e7, (q31_t)0x8f619ba0, (q31_t)0x3cd07f9f, (q31_t)0x8f5e9f46, - (q31_t)0x3ccaf831, (q31_t)0x8f5ba331, - (q31_t)0x3cc5709e, (q31_t)0x8f58a761, (q31_t)0x3cbfe8e5, (q31_t)0x8f55abd8, (q31_t)0x3cba6107, (q31_t)0x8f52b093, - (q31_t)0x3cb4d904, (q31_t)0x8f4fb595, - (q31_t)0x3caf50da, (q31_t)0x8f4cbadb, (q31_t)0x3ca9c88c, (q31_t)0x8f49c067, (q31_t)0x3ca44018, (q31_t)0x8f46c639, - (q31_t)0x3c9eb77f, (q31_t)0x8f43cc50, - (q31_t)0x3c992ec0, (q31_t)0x8f40d2ad, (q31_t)0x3c93a5dc, (q31_t)0x8f3dd950, (q31_t)0x3c8e1cd3, (q31_t)0x8f3ae038, - (q31_t)0x3c8893a4, (q31_t)0x8f37e765, - (q31_t)0x3c830a50, (q31_t)0x8f34eed8, (q31_t)0x3c7d80d6, (q31_t)0x8f31f691, (q31_t)0x3c77f737, (q31_t)0x8f2efe8f, - (q31_t)0x3c726d73, (q31_t)0x8f2c06d3, - (q31_t)0x3c6ce38a, (q31_t)0x8f290f5c, (q31_t)0x3c67597b, (q31_t)0x8f26182b, (q31_t)0x3c61cf48, (q31_t)0x8f232140, - (q31_t)0x3c5c44ee, (q31_t)0x8f202a9a, - (q31_t)0x3c56ba70, (q31_t)0x8f1d343a, (q31_t)0x3c512fcc, (q31_t)0x8f1a3e1f, (q31_t)0x3c4ba504, (q31_t)0x8f17484b, - (q31_t)0x3c461a16, (q31_t)0x8f1452bb, - (q31_t)0x3c408f03, (q31_t)0x8f115d72, (q31_t)0x3c3b03ca, (q31_t)0x8f0e686e, (q31_t)0x3c35786d, (q31_t)0x8f0b73b0, - (q31_t)0x3c2fecea, (q31_t)0x8f087f37, - (q31_t)0x3c2a6142, (q31_t)0x8f058b04, (q31_t)0x3c24d575, (q31_t)0x8f029717, (q31_t)0x3c1f4983, (q31_t)0x8effa370, - (q31_t)0x3c19bd6c, (q31_t)0x8efcb00e, - (q31_t)0x3c143130, (q31_t)0x8ef9bcf2, (q31_t)0x3c0ea4cf, (q31_t)0x8ef6ca1c, (q31_t)0x3c091849, (q31_t)0x8ef3d78b, - (q31_t)0x3c038b9e, (q31_t)0x8ef0e540, - (q31_t)0x3bfdfecd, (q31_t)0x8eedf33b, (q31_t)0x3bf871d8, (q31_t)0x8eeb017c, (q31_t)0x3bf2e4be, (q31_t)0x8ee81002, - (q31_t)0x3bed577e, (q31_t)0x8ee51ece, - (q31_t)0x3be7ca1a, (q31_t)0x8ee22de0, (q31_t)0x3be23c91, (q31_t)0x8edf3d38, (q31_t)0x3bdcaee3, (q31_t)0x8edc4cd5, - (q31_t)0x3bd72110, (q31_t)0x8ed95cb8, - (q31_t)0x3bd19318, (q31_t)0x8ed66ce1, (q31_t)0x3bcc04fb, (q31_t)0x8ed37d50, (q31_t)0x3bc676b9, (q31_t)0x8ed08e05, - (q31_t)0x3bc0e853, (q31_t)0x8ecd9eff, - (q31_t)0x3bbb59c7, (q31_t)0x8ecab040, (q31_t)0x3bb5cb17, (q31_t)0x8ec7c1c6, (q31_t)0x3bb03c42, (q31_t)0x8ec4d392, - (q31_t)0x3baaad48, (q31_t)0x8ec1e5a4, - (q31_t)0x3ba51e29, (q31_t)0x8ebef7fb, (q31_t)0x3b9f8ee5, (q31_t)0x8ebc0a99, (q31_t)0x3b99ff7d, (q31_t)0x8eb91d7c, - (q31_t)0x3b946ff0, (q31_t)0x8eb630a6, - (q31_t)0x3b8ee03e, (q31_t)0x8eb34415, (q31_t)0x3b895068, (q31_t)0x8eb057ca, (q31_t)0x3b83c06c, (q31_t)0x8ead6bc5, - (q31_t)0x3b7e304c, (q31_t)0x8eaa8006, - (q31_t)0x3b78a007, (q31_t)0x8ea7948c, (q31_t)0x3b730f9e, (q31_t)0x8ea4a959, (q31_t)0x3b6d7f10, (q31_t)0x8ea1be6c, - (q31_t)0x3b67ee5d, (q31_t)0x8e9ed3c4, - (q31_t)0x3b625d86, (q31_t)0x8e9be963, (q31_t)0x3b5ccc8a, (q31_t)0x8e98ff47, (q31_t)0x3b573b69, (q31_t)0x8e961571, - (q31_t)0x3b51aa24, (q31_t)0x8e932be2, - (q31_t)0x3b4c18ba, (q31_t)0x8e904298, (q31_t)0x3b46872c, (q31_t)0x8e8d5994, (q31_t)0x3b40f579, (q31_t)0x8e8a70d7, - (q31_t)0x3b3b63a1, (q31_t)0x8e87885f, - (q31_t)0x3b35d1a5, (q31_t)0x8e84a02d, (q31_t)0x3b303f84, (q31_t)0x8e81b841, (q31_t)0x3b2aad3f, (q31_t)0x8e7ed09b, - (q31_t)0x3b251ad6, (q31_t)0x8e7be93c, - (q31_t)0x3b1f8848, (q31_t)0x8e790222, (q31_t)0x3b19f595, (q31_t)0x8e761b4e, (q31_t)0x3b1462be, (q31_t)0x8e7334c1, - (q31_t)0x3b0ecfc3, (q31_t)0x8e704e79, - (q31_t)0x3b093ca3, (q31_t)0x8e6d6877, (q31_t)0x3b03a95e, (q31_t)0x8e6a82bc, (q31_t)0x3afe15f6, (q31_t)0x8e679d47, - (q31_t)0x3af88269, (q31_t)0x8e64b817, - (q31_t)0x3af2eeb7, (q31_t)0x8e61d32e, (q31_t)0x3aed5ae1, (q31_t)0x8e5eee8b, (q31_t)0x3ae7c6e7, (q31_t)0x8e5c0a2e, - (q31_t)0x3ae232c9, (q31_t)0x8e592617, - (q31_t)0x3adc9e86, (q31_t)0x8e564246, (q31_t)0x3ad70a1f, (q31_t)0x8e535ebb, (q31_t)0x3ad17593, (q31_t)0x8e507b76, - (q31_t)0x3acbe0e3, (q31_t)0x8e4d9878, - (q31_t)0x3ac64c0f, (q31_t)0x8e4ab5bf, (q31_t)0x3ac0b717, (q31_t)0x8e47d34d, (q31_t)0x3abb21fb, (q31_t)0x8e44f121, - (q31_t)0x3ab58cba, (q31_t)0x8e420f3b, - (q31_t)0x3aaff755, (q31_t)0x8e3f2d9b, (q31_t)0x3aaa61cc, (q31_t)0x8e3c4c41, (q31_t)0x3aa4cc1e, (q31_t)0x8e396b2e, - (q31_t)0x3a9f364d, (q31_t)0x8e368a61, - (q31_t)0x3a99a057, (q31_t)0x8e33a9da, (q31_t)0x3a940a3e, (q31_t)0x8e30c999, (q31_t)0x3a8e7400, (q31_t)0x8e2de99e, - (q31_t)0x3a88dd9d, (q31_t)0x8e2b09e9, - (q31_t)0x3a834717, (q31_t)0x8e282a7b, (q31_t)0x3a7db06d, (q31_t)0x8e254b53, (q31_t)0x3a78199f, (q31_t)0x8e226c71, - (q31_t)0x3a7282ac, (q31_t)0x8e1f8dd6, - (q31_t)0x3a6ceb96, (q31_t)0x8e1caf80, (q31_t)0x3a67545b, (q31_t)0x8e19d171, (q31_t)0x3a61bcfd, (q31_t)0x8e16f3a9, - (q31_t)0x3a5c257a, (q31_t)0x8e141626, - (q31_t)0x3a568dd4, (q31_t)0x8e1138ea, (q31_t)0x3a50f609, (q31_t)0x8e0e5bf4, (q31_t)0x3a4b5e1b, (q31_t)0x8e0b7f44, - (q31_t)0x3a45c608, (q31_t)0x8e08a2db, - (q31_t)0x3a402dd2, (q31_t)0x8e05c6b7, (q31_t)0x3a3a9577, (q31_t)0x8e02eadb, (q31_t)0x3a34fcf9, (q31_t)0x8e000f44, - (q31_t)0x3a2f6457, (q31_t)0x8dfd33f4, - (q31_t)0x3a29cb91, (q31_t)0x8dfa58ea, (q31_t)0x3a2432a7, (q31_t)0x8df77e27, (q31_t)0x3a1e9999, (q31_t)0x8df4a3a9, - (q31_t)0x3a190068, (q31_t)0x8df1c973, - (q31_t)0x3a136712, (q31_t)0x8deeef82, (q31_t)0x3a0dcd99, (q31_t)0x8dec15d8, (q31_t)0x3a0833fc, (q31_t)0x8de93c74, - (q31_t)0x3a029a3b, (q31_t)0x8de66357, - (q31_t)0x39fd0056, (q31_t)0x8de38a80, (q31_t)0x39f7664e, (q31_t)0x8de0b1ef, (q31_t)0x39f1cc21, (q31_t)0x8dddd9a5, - (q31_t)0x39ec31d1, (q31_t)0x8ddb01a1, - (q31_t)0x39e6975e, (q31_t)0x8dd829e4, (q31_t)0x39e0fcc6, (q31_t)0x8dd5526d, (q31_t)0x39db620b, (q31_t)0x8dd27b3c, - (q31_t)0x39d5c72c, (q31_t)0x8dcfa452, - (q31_t)0x39d02c2a, (q31_t)0x8dcccdaf, (q31_t)0x39ca9104, (q31_t)0x8dc9f751, (q31_t)0x39c4f5ba, (q31_t)0x8dc7213b, - (q31_t)0x39bf5a4d, (q31_t)0x8dc44b6a, - (q31_t)0x39b9bebc, (q31_t)0x8dc175e0, (q31_t)0x39b42307, (q31_t)0x8dbea09d, (q31_t)0x39ae872f, (q31_t)0x8dbbcba0, - (q31_t)0x39a8eb33, (q31_t)0x8db8f6ea, - (q31_t)0x39a34f13, (q31_t)0x8db6227a, (q31_t)0x399db2d0, (q31_t)0x8db34e50, (q31_t)0x3998166a, (q31_t)0x8db07a6d, - (q31_t)0x399279e0, (q31_t)0x8dada6d1, - (q31_t)0x398cdd32, (q31_t)0x8daad37b, (q31_t)0x39874061, (q31_t)0x8da8006c, (q31_t)0x3981a36d, (q31_t)0x8da52da3, - (q31_t)0x397c0655, (q31_t)0x8da25b21, - (q31_t)0x39766919, (q31_t)0x8d9f88e5, (q31_t)0x3970cbba, (q31_t)0x8d9cb6f0, (q31_t)0x396b2e38, (q31_t)0x8d99e541, - (q31_t)0x39659092, (q31_t)0x8d9713d9, - (q31_t)0x395ff2c9, (q31_t)0x8d9442b8, (q31_t)0x395a54dd, (q31_t)0x8d9171dd, (q31_t)0x3954b6cd, (q31_t)0x8d8ea148, - (q31_t)0x394f1899, (q31_t)0x8d8bd0fb, - (q31_t)0x39497a43, (q31_t)0x8d8900f3, (q31_t)0x3943dbc9, (q31_t)0x8d863133, (q31_t)0x393e3d2c, (q31_t)0x8d8361b9, - (q31_t)0x39389e6b, (q31_t)0x8d809286, - (q31_t)0x3932ff87, (q31_t)0x8d7dc399, (q31_t)0x392d6080, (q31_t)0x8d7af4f3, (q31_t)0x3927c155, (q31_t)0x8d782694, - (q31_t)0x39222208, (q31_t)0x8d75587b, - (q31_t)0x391c8297, (q31_t)0x8d728aa9, (q31_t)0x3916e303, (q31_t)0x8d6fbd1d, (q31_t)0x3911434b, (q31_t)0x8d6cefd9, - (q31_t)0x390ba371, (q31_t)0x8d6a22db, - (q31_t)0x39060373, (q31_t)0x8d675623, (q31_t)0x39006352, (q31_t)0x8d6489b3, (q31_t)0x38fac30e, (q31_t)0x8d61bd89, - (q31_t)0x38f522a6, (q31_t)0x8d5ef1a5, - (q31_t)0x38ef821c, (q31_t)0x8d5c2609, (q31_t)0x38e9e16e, (q31_t)0x8d595ab3, (q31_t)0x38e4409e, (q31_t)0x8d568fa4, - (q31_t)0x38de9faa, (q31_t)0x8d53c4db, - (q31_t)0x38d8fe93, (q31_t)0x8d50fa59, (q31_t)0x38d35d59, (q31_t)0x8d4e301f, (q31_t)0x38cdbbfc, (q31_t)0x8d4b662a, - (q31_t)0x38c81a7c, (q31_t)0x8d489c7d, - (q31_t)0x38c278d9, (q31_t)0x8d45d316, (q31_t)0x38bcd713, (q31_t)0x8d4309f6, (q31_t)0x38b7352a, (q31_t)0x8d40411d, - (q31_t)0x38b1931e, (q31_t)0x8d3d788b, - (q31_t)0x38abf0ef, (q31_t)0x8d3ab03f, (q31_t)0x38a64e9d, (q31_t)0x8d37e83a, (q31_t)0x38a0ac29, (q31_t)0x8d35207d, - (q31_t)0x389b0991, (q31_t)0x8d325905, - (q31_t)0x389566d6, (q31_t)0x8d2f91d5, (q31_t)0x388fc3f8, (q31_t)0x8d2ccaec, (q31_t)0x388a20f8, (q31_t)0x8d2a0449, - (q31_t)0x38847dd5, (q31_t)0x8d273ded, - (q31_t)0x387eda8e, (q31_t)0x8d2477d8, (q31_t)0x38793725, (q31_t)0x8d21b20a, (q31_t)0x38739399, (q31_t)0x8d1eec83, - (q31_t)0x386defeb, (q31_t)0x8d1c2742, - (q31_t)0x38684c19, (q31_t)0x8d196249, (q31_t)0x3862a825, (q31_t)0x8d169d96, (q31_t)0x385d040d, (q31_t)0x8d13d92a, - (q31_t)0x38575fd4, (q31_t)0x8d111505, - (q31_t)0x3851bb77, (q31_t)0x8d0e5127, (q31_t)0x384c16f7, (q31_t)0x8d0b8d90, (q31_t)0x38467255, (q31_t)0x8d08ca40, - (q31_t)0x3840cd90, (q31_t)0x8d060737, - (q31_t)0x383b28a9, (q31_t)0x8d034474, (q31_t)0x3835839f, (q31_t)0x8d0081f9, (q31_t)0x382fde72, (q31_t)0x8cfdbfc4, - (q31_t)0x382a3922, (q31_t)0x8cfafdd7, - (q31_t)0x382493b0, (q31_t)0x8cf83c30, (q31_t)0x381eee1b, (q31_t)0x8cf57ad0, (q31_t)0x38194864, (q31_t)0x8cf2b9b8, - (q31_t)0x3813a28a, (q31_t)0x8ceff8e6, - (q31_t)0x380dfc8d, (q31_t)0x8ced385b, (q31_t)0x3808566e, (q31_t)0x8cea7818, (q31_t)0x3802b02c, (q31_t)0x8ce7b81b, - (q31_t)0x37fd09c8, (q31_t)0x8ce4f865, - (q31_t)0x37f76341, (q31_t)0x8ce238f6, (q31_t)0x37f1bc97, (q31_t)0x8cdf79ce, (q31_t)0x37ec15cb, (q31_t)0x8cdcbaee, - (q31_t)0x37e66edd, (q31_t)0x8cd9fc54, - (q31_t)0x37e0c7cc, (q31_t)0x8cd73e01, (q31_t)0x37db2099, (q31_t)0x8cd47ff6, (q31_t)0x37d57943, (q31_t)0x8cd1c231, - (q31_t)0x37cfd1cb, (q31_t)0x8ccf04b3, - (q31_t)0x37ca2a30, (q31_t)0x8ccc477d, (q31_t)0x37c48273, (q31_t)0x8cc98a8e, (q31_t)0x37beda93, (q31_t)0x8cc6cde5, - (q31_t)0x37b93292, (q31_t)0x8cc41184, - (q31_t)0x37b38a6d, (q31_t)0x8cc1556a, (q31_t)0x37ade227, (q31_t)0x8cbe9996, (q31_t)0x37a839be, (q31_t)0x8cbbde0a, - (q31_t)0x37a29132, (q31_t)0x8cb922c6, - (q31_t)0x379ce885, (q31_t)0x8cb667c8, (q31_t)0x37973fb5, (q31_t)0x8cb3ad11, (q31_t)0x379196c3, (q31_t)0x8cb0f2a1, - (q31_t)0x378bedae, (q31_t)0x8cae3879, - (q31_t)0x37864477, (q31_t)0x8cab7e98, (q31_t)0x37809b1e, (q31_t)0x8ca8c4fd, (q31_t)0x377af1a3, (q31_t)0x8ca60baa, - (q31_t)0x37754806, (q31_t)0x8ca3529f, - (q31_t)0x376f9e46, (q31_t)0x8ca099da, (q31_t)0x3769f464, (q31_t)0x8c9de15c, (q31_t)0x37644a60, (q31_t)0x8c9b2926, - (q31_t)0x375ea03a, (q31_t)0x8c987137, - (q31_t)0x3758f5f2, (q31_t)0x8c95b98f, (q31_t)0x37534b87, (q31_t)0x8c93022e, (q31_t)0x374da0fa, (q31_t)0x8c904b14, - (q31_t)0x3747f64c, (q31_t)0x8c8d9442, - (q31_t)0x37424b7b, (q31_t)0x8c8addb7, (q31_t)0x373ca088, (q31_t)0x8c882773, (q31_t)0x3736f573, (q31_t)0x8c857176, - (q31_t)0x37314a3c, (q31_t)0x8c82bbc0, - (q31_t)0x372b9ee3, (q31_t)0x8c800652, (q31_t)0x3725f367, (q31_t)0x8c7d512b, (q31_t)0x372047ca, (q31_t)0x8c7a9c4b, - (q31_t)0x371a9c0b, (q31_t)0x8c77e7b3, - (q31_t)0x3714f02a, (q31_t)0x8c753362, (q31_t)0x370f4427, (q31_t)0x8c727f58, (q31_t)0x37099802, (q31_t)0x8c6fcb95, - (q31_t)0x3703ebbb, (q31_t)0x8c6d181a, - (q31_t)0x36fe3f52, (q31_t)0x8c6a64e5, (q31_t)0x36f892c7, (q31_t)0x8c67b1f9, (q31_t)0x36f2e61a, (q31_t)0x8c64ff53, - (q31_t)0x36ed394b, (q31_t)0x8c624cf5, - (q31_t)0x36e78c5b, (q31_t)0x8c5f9ade, (q31_t)0x36e1df48, (q31_t)0x8c5ce90e, (q31_t)0x36dc3214, (q31_t)0x8c5a3786, - (q31_t)0x36d684be, (q31_t)0x8c578645, - (q31_t)0x36d0d746, (q31_t)0x8c54d54c, (q31_t)0x36cb29ac, (q31_t)0x8c522499, (q31_t)0x36c57bf0, (q31_t)0x8c4f742f, - (q31_t)0x36bfce13, (q31_t)0x8c4cc40b, - (q31_t)0x36ba2014, (q31_t)0x8c4a142f, (q31_t)0x36b471f3, (q31_t)0x8c47649a, (q31_t)0x36aec3b0, (q31_t)0x8c44b54d, - (q31_t)0x36a9154c, (q31_t)0x8c420647, - (q31_t)0x36a366c6, (q31_t)0x8c3f5788, (q31_t)0x369db81e, (q31_t)0x8c3ca911, (q31_t)0x36980954, (q31_t)0x8c39fae1, - (q31_t)0x36925a69, (q31_t)0x8c374cf9, - (q31_t)0x368cab5c, (q31_t)0x8c349f58, (q31_t)0x3686fc2e, (q31_t)0x8c31f1ff, (q31_t)0x36814cde, (q31_t)0x8c2f44ed, - (q31_t)0x367b9d6c, (q31_t)0x8c2c9822, - (q31_t)0x3675edd9, (q31_t)0x8c29eb9f, (q31_t)0x36703e24, (q31_t)0x8c273f63, (q31_t)0x366a8e4d, (q31_t)0x8c24936f, - (q31_t)0x3664de55, (q31_t)0x8c21e7c2, - (q31_t)0x365f2e3b, (q31_t)0x8c1f3c5d, (q31_t)0x36597e00, (q31_t)0x8c1c913f, (q31_t)0x3653cda3, (q31_t)0x8c19e669, - (q31_t)0x364e1d25, (q31_t)0x8c173bda, - (q31_t)0x36486c86, (q31_t)0x8c149192, (q31_t)0x3642bbc4, (q31_t)0x8c11e792, (q31_t)0x363d0ae2, (q31_t)0x8c0f3dda, - (q31_t)0x363759de, (q31_t)0x8c0c9469, - (q31_t)0x3631a8b8, (q31_t)0x8c09eb40, (q31_t)0x362bf771, (q31_t)0x8c07425e, (q31_t)0x36264609, (q31_t)0x8c0499c4, - (q31_t)0x3620947f, (q31_t)0x8c01f171, - (q31_t)0x361ae2d3, (q31_t)0x8bff4966, (q31_t)0x36153107, (q31_t)0x8bfca1a3, (q31_t)0x360f7f19, (q31_t)0x8bf9fa27, - (q31_t)0x3609cd0a, (q31_t)0x8bf752f2, - (q31_t)0x36041ad9, (q31_t)0x8bf4ac05, (q31_t)0x35fe6887, (q31_t)0x8bf20560, (q31_t)0x35f8b614, (q31_t)0x8bef5f02, - (q31_t)0x35f3037f, (q31_t)0x8becb8ec, - (q31_t)0x35ed50c9, (q31_t)0x8bea131e, (q31_t)0x35e79df2, (q31_t)0x8be76d97, (q31_t)0x35e1eafa, (q31_t)0x8be4c857, - (q31_t)0x35dc37e0, (q31_t)0x8be22360, - (q31_t)0x35d684a6, (q31_t)0x8bdf7eb0, (q31_t)0x35d0d14a, (q31_t)0x8bdcda47, (q31_t)0x35cb1dcc, (q31_t)0x8bda3626, - (q31_t)0x35c56a2e, (q31_t)0x8bd7924d, - (q31_t)0x35bfb66e, (q31_t)0x8bd4eebc, (q31_t)0x35ba028e, (q31_t)0x8bd24b72, (q31_t)0x35b44e8c, (q31_t)0x8bcfa870, - (q31_t)0x35ae9a69, (q31_t)0x8bcd05b5, - (q31_t)0x35a8e625, (q31_t)0x8bca6343, (q31_t)0x35a331c0, (q31_t)0x8bc7c117, (q31_t)0x359d7d39, (q31_t)0x8bc51f34, - (q31_t)0x3597c892, (q31_t)0x8bc27d98, - (q31_t)0x359213c9, (q31_t)0x8bbfdc44, (q31_t)0x358c5ee0, (q31_t)0x8bbd3b38, (q31_t)0x3586a9d5, (q31_t)0x8bba9a73, - (q31_t)0x3580f4aa, (q31_t)0x8bb7f9f6, - (q31_t)0x357b3f5d, (q31_t)0x8bb559c1, (q31_t)0x357589f0, (q31_t)0x8bb2b9d4, (q31_t)0x356fd461, (q31_t)0x8bb01a2e, - (q31_t)0x356a1eb2, (q31_t)0x8bad7ad0, - (q31_t)0x356468e2, (q31_t)0x8baadbba, (q31_t)0x355eb2f0, (q31_t)0x8ba83cec, (q31_t)0x3558fcde, (q31_t)0x8ba59e65, - (q31_t)0x355346ab, (q31_t)0x8ba30026, - (q31_t)0x354d9057, (q31_t)0x8ba0622f, (q31_t)0x3547d9e2, (q31_t)0x8b9dc480, (q31_t)0x3542234c, (q31_t)0x8b9b2718, - (q31_t)0x353c6c95, (q31_t)0x8b9889f8, - (q31_t)0x3536b5be, (q31_t)0x8b95ed21, (q31_t)0x3530fec6, (q31_t)0x8b935090, (q31_t)0x352b47ad, (q31_t)0x8b90b448, - (q31_t)0x35259073, (q31_t)0x8b8e1848, - (q31_t)0x351fd918, (q31_t)0x8b8b7c8f, (q31_t)0x351a219c, (q31_t)0x8b88e11e, (q31_t)0x35146a00, (q31_t)0x8b8645f5, - (q31_t)0x350eb243, (q31_t)0x8b83ab14, - (q31_t)0x3508fa66, (q31_t)0x8b81107b, (q31_t)0x35034267, (q31_t)0x8b7e7629, (q31_t)0x34fd8a48, (q31_t)0x8b7bdc20, - (q31_t)0x34f7d208, (q31_t)0x8b79425e, - (q31_t)0x34f219a8, (q31_t)0x8b76a8e4, (q31_t)0x34ec6127, (q31_t)0x8b740fb3, (q31_t)0x34e6a885, (q31_t)0x8b7176c8, - (q31_t)0x34e0efc2, (q31_t)0x8b6ede26, - (q31_t)0x34db36df, (q31_t)0x8b6c45cc, (q31_t)0x34d57ddc, (q31_t)0x8b69adba, (q31_t)0x34cfc4b7, (q31_t)0x8b6715ef, - (q31_t)0x34ca0b73, (q31_t)0x8b647e6d, - (q31_t)0x34c4520d, (q31_t)0x8b61e733, (q31_t)0x34be9887, (q31_t)0x8b5f5040, (q31_t)0x34b8dee1, (q31_t)0x8b5cb995, - (q31_t)0x34b3251a, (q31_t)0x8b5a2333, - (q31_t)0x34ad6b32, (q31_t)0x8b578d18, (q31_t)0x34a7b12a, (q31_t)0x8b54f745, (q31_t)0x34a1f702, (q31_t)0x8b5261ba, - (q31_t)0x349c3cb9, (q31_t)0x8b4fcc77, - (q31_t)0x34968250, (q31_t)0x8b4d377c, (q31_t)0x3490c7c6, (q31_t)0x8b4aa2ca, (q31_t)0x348b0d1c, (q31_t)0x8b480e5f, - (q31_t)0x34855251, (q31_t)0x8b457a3c, - (q31_t)0x347f9766, (q31_t)0x8b42e661, (q31_t)0x3479dc5b, (q31_t)0x8b4052ce, (q31_t)0x3474212f, (q31_t)0x8b3dbf83, - (q31_t)0x346e65e3, (q31_t)0x8b3b2c80, - (q31_t)0x3468aa76, (q31_t)0x8b3899c6, (q31_t)0x3462eee9, (q31_t)0x8b360753, (q31_t)0x345d333c, (q31_t)0x8b337528, - (q31_t)0x3457776f, (q31_t)0x8b30e345, - (q31_t)0x3451bb81, (q31_t)0x8b2e51ab, (q31_t)0x344bff73, (q31_t)0x8b2bc058, (q31_t)0x34464345, (q31_t)0x8b292f4e, - (q31_t)0x344086f6, (q31_t)0x8b269e8b, - (q31_t)0x343aca87, (q31_t)0x8b240e11, (q31_t)0x34350df8, (q31_t)0x8b217ddf, (q31_t)0x342f5149, (q31_t)0x8b1eedf4, - (q31_t)0x3429947a, (q31_t)0x8b1c5e52, - (q31_t)0x3423d78a, (q31_t)0x8b19cef8, (q31_t)0x341e1a7b, (q31_t)0x8b173fe6, (q31_t)0x34185d4b, (q31_t)0x8b14b11d, - (q31_t)0x34129ffb, (q31_t)0x8b12229b, - (q31_t)0x340ce28b, (q31_t)0x8b0f9462, (q31_t)0x340724fb, (q31_t)0x8b0d0670, (q31_t)0x3401674a, (q31_t)0x8b0a78c7, - (q31_t)0x33fba97a, (q31_t)0x8b07eb66, - (q31_t)0x33f5eb89, (q31_t)0x8b055e4d, (q31_t)0x33f02d79, (q31_t)0x8b02d17c, (q31_t)0x33ea6f48, (q31_t)0x8b0044f3, - (q31_t)0x33e4b0f8, (q31_t)0x8afdb8b3, - (q31_t)0x33def287, (q31_t)0x8afb2cbb, (q31_t)0x33d933f7, (q31_t)0x8af8a10b, (q31_t)0x33d37546, (q31_t)0x8af615a3, - (q31_t)0x33cdb676, (q31_t)0x8af38a83, - (q31_t)0x33c7f785, (q31_t)0x8af0ffac, (q31_t)0x33c23875, (q31_t)0x8aee751c, (q31_t)0x33bc7944, (q31_t)0x8aebead5, - (q31_t)0x33b6b9f4, (q31_t)0x8ae960d6, - (q31_t)0x33b0fa84, (q31_t)0x8ae6d720, (q31_t)0x33ab3af4, (q31_t)0x8ae44db1, (q31_t)0x33a57b44, (q31_t)0x8ae1c48b, - (q31_t)0x339fbb74, (q31_t)0x8adf3bad, - (q31_t)0x3399fb85, (q31_t)0x8adcb318, (q31_t)0x33943b75, (q31_t)0x8ada2aca, (q31_t)0x338e7b46, (q31_t)0x8ad7a2c5, - (q31_t)0x3388baf7, (q31_t)0x8ad51b08, - (q31_t)0x3382fa88, (q31_t)0x8ad29394, (q31_t)0x337d39f9, (q31_t)0x8ad00c67, (q31_t)0x3377794b, (q31_t)0x8acd8583, - (q31_t)0x3371b87d, (q31_t)0x8acafee8, - (q31_t)0x336bf78f, (q31_t)0x8ac87894, (q31_t)0x33663682, (q31_t)0x8ac5f289, (q31_t)0x33607554, (q31_t)0x8ac36cc6, - (q31_t)0x335ab407, (q31_t)0x8ac0e74c, - (q31_t)0x3354f29b, (q31_t)0x8abe6219, (q31_t)0x334f310e, (q31_t)0x8abbdd30, (q31_t)0x33496f62, (q31_t)0x8ab9588e, - (q31_t)0x3343ad97, (q31_t)0x8ab6d435, - (q31_t)0x333debab, (q31_t)0x8ab45024, (q31_t)0x333829a1, (q31_t)0x8ab1cc5c, (q31_t)0x33326776, (q31_t)0x8aaf48db, - (q31_t)0x332ca52c, (q31_t)0x8aacc5a4, - (q31_t)0x3326e2c3, (q31_t)0x8aaa42b4, (q31_t)0x33212039, (q31_t)0x8aa7c00d, (q31_t)0x331b5d91, (q31_t)0x8aa53daf, - (q31_t)0x33159ac8, (q31_t)0x8aa2bb99, - (q31_t)0x330fd7e1, (q31_t)0x8aa039cb, (q31_t)0x330a14da, (q31_t)0x8a9db845, (q31_t)0x330451b3, (q31_t)0x8a9b3708, - (q31_t)0x32fe8e6d, (q31_t)0x8a98b614, - (q31_t)0x32f8cb07, (q31_t)0x8a963567, (q31_t)0x32f30782, (q31_t)0x8a93b504, (q31_t)0x32ed43de, (q31_t)0x8a9134e8, - (q31_t)0x32e7801a, (q31_t)0x8a8eb516, - (q31_t)0x32e1bc36, (q31_t)0x8a8c358b, (q31_t)0x32dbf834, (q31_t)0x8a89b649, (q31_t)0x32d63412, (q31_t)0x8a873750, - (q31_t)0x32d06fd0, (q31_t)0x8a84b89e, - (q31_t)0x32caab6f, (q31_t)0x8a823a36, (q31_t)0x32c4e6ef, (q31_t)0x8a7fbc16, (q31_t)0x32bf2250, (q31_t)0x8a7d3e3e, - (q31_t)0x32b95d91, (q31_t)0x8a7ac0af, - (q31_t)0x32b398b3, (q31_t)0x8a784368, (q31_t)0x32add3b6, (q31_t)0x8a75c66a, (q31_t)0x32a80e99, (q31_t)0x8a7349b4, - (q31_t)0x32a2495d, (q31_t)0x8a70cd47, - (q31_t)0x329c8402, (q31_t)0x8a6e5123, (q31_t)0x3296be88, (q31_t)0x8a6bd547, (q31_t)0x3290f8ef, (q31_t)0x8a6959b3, - (q31_t)0x328b3336, (q31_t)0x8a66de68, - (q31_t)0x32856d5e, (q31_t)0x8a646365, (q31_t)0x327fa767, (q31_t)0x8a61e8ab, (q31_t)0x3279e151, (q31_t)0x8a5f6e3a, - (q31_t)0x32741b1c, (q31_t)0x8a5cf411, - (q31_t)0x326e54c7, (q31_t)0x8a5a7a31, (q31_t)0x32688e54, (q31_t)0x8a580099, (q31_t)0x3262c7c1, (q31_t)0x8a55874a, - (q31_t)0x325d0110, (q31_t)0x8a530e43, - (q31_t)0x32573a3f, (q31_t)0x8a509585, (q31_t)0x3251734f, (q31_t)0x8a4e1d10, (q31_t)0x324bac40, (q31_t)0x8a4ba4e3, - (q31_t)0x3245e512, (q31_t)0x8a492cff, - (q31_t)0x32401dc6, (q31_t)0x8a46b564, (q31_t)0x323a565a, (q31_t)0x8a443e11, (q31_t)0x32348ecf, (q31_t)0x8a41c706, - (q31_t)0x322ec725, (q31_t)0x8a3f5045, - (q31_t)0x3228ff5c, (q31_t)0x8a3cd9cc, (q31_t)0x32233775, (q31_t)0x8a3a639b, (q31_t)0x321d6f6e, (q31_t)0x8a37edb3, - (q31_t)0x3217a748, (q31_t)0x8a357814, - (q31_t)0x3211df04, (q31_t)0x8a3302be, (q31_t)0x320c16a1, (q31_t)0x8a308db0, (q31_t)0x32064e1e, (q31_t)0x8a2e18eb, - (q31_t)0x3200857d, (q31_t)0x8a2ba46e, - (q31_t)0x31fabcbd, (q31_t)0x8a29303b, (q31_t)0x31f4f3df, (q31_t)0x8a26bc50, (q31_t)0x31ef2ae1, (q31_t)0x8a2448ad, - (q31_t)0x31e961c5, (q31_t)0x8a21d554, - (q31_t)0x31e39889, (q31_t)0x8a1f6243, (q31_t)0x31ddcf30, (q31_t)0x8a1cef7a, (q31_t)0x31d805b7, (q31_t)0x8a1a7cfb, - (q31_t)0x31d23c1f, (q31_t)0x8a180ac4, - (q31_t)0x31cc7269, (q31_t)0x8a1598d6, (q31_t)0x31c6a894, (q31_t)0x8a132731, (q31_t)0x31c0dea1, (q31_t)0x8a10b5d4, - (q31_t)0x31bb148f, (q31_t)0x8a0e44c0, - (q31_t)0x31b54a5e, (q31_t)0x8a0bd3f5, (q31_t)0x31af800e, (q31_t)0x8a096373, (q31_t)0x31a9b5a0, (q31_t)0x8a06f339, - (q31_t)0x31a3eb13, (q31_t)0x8a048348, - (q31_t)0x319e2067, (q31_t)0x8a0213a0, (q31_t)0x3198559d, (q31_t)0x89ffa441, (q31_t)0x31928ab4, (q31_t)0x89fd352b, - (q31_t)0x318cbfad, (q31_t)0x89fac65d, - (q31_t)0x3186f487, (q31_t)0x89f857d8, (q31_t)0x31812943, (q31_t)0x89f5e99c, (q31_t)0x317b5de0, (q31_t)0x89f37ba9, - (q31_t)0x3175925e, (q31_t)0x89f10dff, - (q31_t)0x316fc6be, (q31_t)0x89eea09d, (q31_t)0x3169fb00, (q31_t)0x89ec3384, (q31_t)0x31642f23, (q31_t)0x89e9c6b4, - (q31_t)0x315e6328, (q31_t)0x89e75a2d, - (q31_t)0x3158970e, (q31_t)0x89e4edef, (q31_t)0x3152cad5, (q31_t)0x89e281fa, (q31_t)0x314cfe7f, (q31_t)0x89e0164d, - (q31_t)0x31473209, (q31_t)0x89ddaae9, - (q31_t)0x31416576, (q31_t)0x89db3fcf, (q31_t)0x313b98c4, (q31_t)0x89d8d4fd, (q31_t)0x3135cbf4, (q31_t)0x89d66a74, - (q31_t)0x312fff05, (q31_t)0x89d40033, - (q31_t)0x312a31f8, (q31_t)0x89d1963c, (q31_t)0x312464cd, (q31_t)0x89cf2c8e, (q31_t)0x311e9783, (q31_t)0x89ccc328, - (q31_t)0x3118ca1b, (q31_t)0x89ca5a0c, - (q31_t)0x3112fc95, (q31_t)0x89c7f138, (q31_t)0x310d2ef0, (q31_t)0x89c588ae, (q31_t)0x3107612e, (q31_t)0x89c3206c, - (q31_t)0x3101934d, (q31_t)0x89c0b873, - (q31_t)0x30fbc54d, (q31_t)0x89be50c3, (q31_t)0x30f5f730, (q31_t)0x89bbe95c, (q31_t)0x30f028f4, (q31_t)0x89b9823e, - (q31_t)0x30ea5a9a, (q31_t)0x89b71b69, - (q31_t)0x30e48c22, (q31_t)0x89b4b4dd, (q31_t)0x30debd8c, (q31_t)0x89b24e9a, (q31_t)0x30d8eed8, (q31_t)0x89afe8a0, - (q31_t)0x30d32006, (q31_t)0x89ad82ef, - (q31_t)0x30cd5115, (q31_t)0x89ab1d87, (q31_t)0x30c78206, (q31_t)0x89a8b868, (q31_t)0x30c1b2da, (q31_t)0x89a65391, - (q31_t)0x30bbe38f, (q31_t)0x89a3ef04, - (q31_t)0x30b61426, (q31_t)0x89a18ac0, (q31_t)0x30b0449f, (q31_t)0x899f26c5, (q31_t)0x30aa74fa, (q31_t)0x899cc313, - (q31_t)0x30a4a537, (q31_t)0x899a5faa, - (q31_t)0x309ed556, (q31_t)0x8997fc8a, (q31_t)0x30990557, (q31_t)0x899599b3, (q31_t)0x3093353a, (q31_t)0x89933725, - (q31_t)0x308d64ff, (q31_t)0x8990d4e0, - (q31_t)0x308794a6, (q31_t)0x898e72e4, (q31_t)0x3081c42f, (q31_t)0x898c1131, (q31_t)0x307bf39b, (q31_t)0x8989afc8, - (q31_t)0x307622e8, (q31_t)0x89874ea7, - (q31_t)0x30705217, (q31_t)0x8984edcf, (q31_t)0x306a8129, (q31_t)0x89828d41, (q31_t)0x3064b01d, (q31_t)0x89802cfc, - (q31_t)0x305edef3, (q31_t)0x897dccff, - (q31_t)0x30590dab, (q31_t)0x897b6d4c, (q31_t)0x30533c45, (q31_t)0x89790de2, (q31_t)0x304d6ac1, (q31_t)0x8976aec1, - (q31_t)0x30479920, (q31_t)0x89744fe9, - (q31_t)0x3041c761, (q31_t)0x8971f15a, (q31_t)0x303bf584, (q31_t)0x896f9315, (q31_t)0x30362389, (q31_t)0x896d3518, - (q31_t)0x30305171, (q31_t)0x896ad765, - (q31_t)0x302a7f3a, (q31_t)0x896879fb, (q31_t)0x3024ace6, (q31_t)0x89661cda, (q31_t)0x301eda75, (q31_t)0x8963c002, - (q31_t)0x301907e6, (q31_t)0x89616373, - (q31_t)0x30133539, (q31_t)0x895f072e, (q31_t)0x300d626e, (q31_t)0x895cab31, (q31_t)0x30078f86, (q31_t)0x895a4f7e, - (q31_t)0x3001bc80, (q31_t)0x8957f414, - (q31_t)0x2ffbe95d, (q31_t)0x895598f3, (q31_t)0x2ff6161c, (q31_t)0x89533e1c, (q31_t)0x2ff042bd, (q31_t)0x8950e38e, - (q31_t)0x2fea6f41, (q31_t)0x894e8948, - (q31_t)0x2fe49ba7, (q31_t)0x894c2f4c, (q31_t)0x2fdec7f0, (q31_t)0x8949d59a, (q31_t)0x2fd8f41b, (q31_t)0x89477c30, - (q31_t)0x2fd32028, (q31_t)0x89452310, - (q31_t)0x2fcd4c19, (q31_t)0x8942ca39, (q31_t)0x2fc777eb, (q31_t)0x894071ab, (q31_t)0x2fc1a3a0, (q31_t)0x893e1967, - (q31_t)0x2fbbcf38, (q31_t)0x893bc16b, - (q31_t)0x2fb5fab2, (q31_t)0x893969b9, (q31_t)0x2fb0260f, (q31_t)0x89371250, (q31_t)0x2faa514f, (q31_t)0x8934bb31, - (q31_t)0x2fa47c71, (q31_t)0x8932645b, - (q31_t)0x2f9ea775, (q31_t)0x89300dce, (q31_t)0x2f98d25d, (q31_t)0x892db78a, (q31_t)0x2f92fd26, (q31_t)0x892b6190, - (q31_t)0x2f8d27d3, (q31_t)0x89290bdf, - (q31_t)0x2f875262, (q31_t)0x8926b677, (q31_t)0x2f817cd4, (q31_t)0x89246159, (q31_t)0x2f7ba729, (q31_t)0x89220c84, - (q31_t)0x2f75d160, (q31_t)0x891fb7f8, - (q31_t)0x2f6ffb7a, (q31_t)0x891d63b5, (q31_t)0x2f6a2577, (q31_t)0x891b0fbc, (q31_t)0x2f644f56, (q31_t)0x8918bc0c, - (q31_t)0x2f5e7919, (q31_t)0x891668a6, - (q31_t)0x2f58a2be, (q31_t)0x89141589, (q31_t)0x2f52cc46, (q31_t)0x8911c2b5, (q31_t)0x2f4cf5b0, (q31_t)0x890f702b, - (q31_t)0x2f471efe, (q31_t)0x890d1dea, - (q31_t)0x2f41482e, (q31_t)0x890acbf2, (q31_t)0x2f3b7141, (q31_t)0x89087a44, (q31_t)0x2f359a37, (q31_t)0x890628df, - (q31_t)0x2f2fc310, (q31_t)0x8903d7c4, - (q31_t)0x2f29ebcc, (q31_t)0x890186f2, (q31_t)0x2f24146b, (q31_t)0x88ff3669, (q31_t)0x2f1e3ced, (q31_t)0x88fce62a, - (q31_t)0x2f186551, (q31_t)0x88fa9634, - (q31_t)0x2f128d99, (q31_t)0x88f84687, (q31_t)0x2f0cb5c3, (q31_t)0x88f5f724, (q31_t)0x2f06ddd1, (q31_t)0x88f3a80b, - (q31_t)0x2f0105c1, (q31_t)0x88f1593b, - (q31_t)0x2efb2d95, (q31_t)0x88ef0ab4, (q31_t)0x2ef5554b, (q31_t)0x88ecbc77, (q31_t)0x2eef7ce5, (q31_t)0x88ea6e83, - (q31_t)0x2ee9a461, (q31_t)0x88e820d9, - (q31_t)0x2ee3cbc1, (q31_t)0x88e5d378, (q31_t)0x2eddf304, (q31_t)0x88e38660, (q31_t)0x2ed81a29, (q31_t)0x88e13992, - (q31_t)0x2ed24132, (q31_t)0x88deed0e, - (q31_t)0x2ecc681e, (q31_t)0x88dca0d3, (q31_t)0x2ec68eed, (q31_t)0x88da54e1, (q31_t)0x2ec0b5a0, (q31_t)0x88d8093a, - (q31_t)0x2ebadc35, (q31_t)0x88d5bddb, - (q31_t)0x2eb502ae, (q31_t)0x88d372c6, (q31_t)0x2eaf290a, (q31_t)0x88d127fb, (q31_t)0x2ea94f49, (q31_t)0x88cedd79, - (q31_t)0x2ea3756b, (q31_t)0x88cc9340, - (q31_t)0x2e9d9b70, (q31_t)0x88ca4951, (q31_t)0x2e97c159, (q31_t)0x88c7ffac, (q31_t)0x2e91e725, (q31_t)0x88c5b650, - (q31_t)0x2e8c0cd4, (q31_t)0x88c36d3e, - (q31_t)0x2e863267, (q31_t)0x88c12475, (q31_t)0x2e8057dd, (q31_t)0x88bedbf6, (q31_t)0x2e7a7d36, (q31_t)0x88bc93c0, - (q31_t)0x2e74a272, (q31_t)0x88ba4bd4, - (q31_t)0x2e6ec792, (q31_t)0x88b80432, (q31_t)0x2e68ec95, (q31_t)0x88b5bcd9, (q31_t)0x2e63117c, (q31_t)0x88b375ca, - (q31_t)0x2e5d3646, (q31_t)0x88b12f04, - (q31_t)0x2e575af3, (q31_t)0x88aee888, (q31_t)0x2e517f84, (q31_t)0x88aca255, (q31_t)0x2e4ba3f8, (q31_t)0x88aa5c6c, - (q31_t)0x2e45c850, (q31_t)0x88a816cd, - (q31_t)0x2e3fec8b, (q31_t)0x88a5d177, (q31_t)0x2e3a10aa, (q31_t)0x88a38c6b, (q31_t)0x2e3434ac, (q31_t)0x88a147a9, - (q31_t)0x2e2e5891, (q31_t)0x889f0330, - (q31_t)0x2e287c5a, (q31_t)0x889cbf01, (q31_t)0x2e22a007, (q31_t)0x889a7b1b, (q31_t)0x2e1cc397, (q31_t)0x88983780, - (q31_t)0x2e16e70b, (q31_t)0x8895f42d, - (q31_t)0x2e110a62, (q31_t)0x8893b125, (q31_t)0x2e0b2d9d, (q31_t)0x88916e66, (q31_t)0x2e0550bb, (q31_t)0x888f2bf1, - (q31_t)0x2dff73bd, (q31_t)0x888ce9c5, - (q31_t)0x2df996a3, (q31_t)0x888aa7e3, (q31_t)0x2df3b96c, (q31_t)0x8888664b, (q31_t)0x2deddc19, (q31_t)0x888624fd, - (q31_t)0x2de7feaa, (q31_t)0x8883e3f8, - (q31_t)0x2de2211e, (q31_t)0x8881a33d, (q31_t)0x2ddc4376, (q31_t)0x887f62cb, (q31_t)0x2dd665b2, (q31_t)0x887d22a4, - (q31_t)0x2dd087d1, (q31_t)0x887ae2c6, - (q31_t)0x2dcaa9d5, (q31_t)0x8878a332, (q31_t)0x2dc4cbbc, (q31_t)0x887663e7, (q31_t)0x2dbeed86, (q31_t)0x887424e7, - (q31_t)0x2db90f35, (q31_t)0x8871e630, - (q31_t)0x2db330c7, (q31_t)0x886fa7c2, (q31_t)0x2dad523d, (q31_t)0x886d699f, (q31_t)0x2da77397, (q31_t)0x886b2bc5, - (q31_t)0x2da194d5, (q31_t)0x8868ee35, - (q31_t)0x2d9bb5f6, (q31_t)0x8866b0ef, (q31_t)0x2d95d6fc, (q31_t)0x886473f2, (q31_t)0x2d8ff7e5, (q31_t)0x88623740, - (q31_t)0x2d8a18b3, (q31_t)0x885ffad7, - (q31_t)0x2d843964, (q31_t)0x885dbeb8, (q31_t)0x2d7e59f9, (q31_t)0x885b82e3, (q31_t)0x2d787a72, (q31_t)0x88594757, - (q31_t)0x2d729acf, (q31_t)0x88570c16, - (q31_t)0x2d6cbb10, (q31_t)0x8854d11e, (q31_t)0x2d66db35, (q31_t)0x88529670, (q31_t)0x2d60fb3e, (q31_t)0x88505c0b, - (q31_t)0x2d5b1b2b, (q31_t)0x884e21f1, - (q31_t)0x2d553afc, (q31_t)0x884be821, (q31_t)0x2d4f5ab1, (q31_t)0x8849ae9a, (q31_t)0x2d497a4a, (q31_t)0x8847755d, - (q31_t)0x2d4399c7, (q31_t)0x88453c6a, - (q31_t)0x2d3db928, (q31_t)0x884303c1, (q31_t)0x2d37d86d, (q31_t)0x8840cb61, (q31_t)0x2d31f797, (q31_t)0x883e934c, - (q31_t)0x2d2c16a4, (q31_t)0x883c5b81, - (q31_t)0x2d263596, (q31_t)0x883a23ff, (q31_t)0x2d20546b, (q31_t)0x8837ecc7, (q31_t)0x2d1a7325, (q31_t)0x8835b5d9, - (q31_t)0x2d1491c4, (q31_t)0x88337f35, - (q31_t)0x2d0eb046, (q31_t)0x883148db, (q31_t)0x2d08ceac, (q31_t)0x882f12cb, (q31_t)0x2d02ecf7, (q31_t)0x882cdd04, - (q31_t)0x2cfd0b26, (q31_t)0x882aa788, - (q31_t)0x2cf72939, (q31_t)0x88287256, (q31_t)0x2cf14731, (q31_t)0x88263d6d, (q31_t)0x2ceb650d, (q31_t)0x882408ce, - (q31_t)0x2ce582cd, (q31_t)0x8821d47a, - (q31_t)0x2cdfa071, (q31_t)0x881fa06f, (q31_t)0x2cd9bdfa, (q31_t)0x881d6cae, (q31_t)0x2cd3db67, (q31_t)0x881b3937, - (q31_t)0x2ccdf8b8, (q31_t)0x8819060a, - (q31_t)0x2cc815ee, (q31_t)0x8816d327, (q31_t)0x2cc23308, (q31_t)0x8814a08f, (q31_t)0x2cbc5006, (q31_t)0x88126e40, - (q31_t)0x2cb66ce9, (q31_t)0x88103c3b, - (q31_t)0x2cb089b1, (q31_t)0x880e0a7f, (q31_t)0x2caaa65c, (q31_t)0x880bd90e, (q31_t)0x2ca4c2ed, (q31_t)0x8809a7e7, - (q31_t)0x2c9edf61, (q31_t)0x8807770a, - (q31_t)0x2c98fbba, (q31_t)0x88054677, (q31_t)0x2c9317f8, (q31_t)0x8803162e, (q31_t)0x2c8d341a, (q31_t)0x8800e62f, - (q31_t)0x2c875021, (q31_t)0x87feb67a, - (q31_t)0x2c816c0c, (q31_t)0x87fc870f, (q31_t)0x2c7b87dc, (q31_t)0x87fa57ee, (q31_t)0x2c75a390, (q31_t)0x87f82917, - (q31_t)0x2c6fbf29, (q31_t)0x87f5fa8b, - (q31_t)0x2c69daa6, (q31_t)0x87f3cc48, (q31_t)0x2c63f609, (q31_t)0x87f19e4f, (q31_t)0x2c5e114f, (q31_t)0x87ef70a0, - (q31_t)0x2c582c7b, (q31_t)0x87ed433c, - (q31_t)0x2c52478a, (q31_t)0x87eb1621, (q31_t)0x2c4c627f, (q31_t)0x87e8e950, (q31_t)0x2c467d58, (q31_t)0x87e6bcca, - (q31_t)0x2c409816, (q31_t)0x87e4908e, - (q31_t)0x2c3ab2b9, (q31_t)0x87e2649b, (q31_t)0x2c34cd40, (q31_t)0x87e038f3, (q31_t)0x2c2ee7ad, (q31_t)0x87de0d95, - (q31_t)0x2c2901fd, (q31_t)0x87dbe281, - (q31_t)0x2c231c33, (q31_t)0x87d9b7b7, (q31_t)0x2c1d364e, (q31_t)0x87d78d38, (q31_t)0x2c17504d, (q31_t)0x87d56302, - (q31_t)0x2c116a31, (q31_t)0x87d33916, - (q31_t)0x2c0b83fa, (q31_t)0x87d10f75, (q31_t)0x2c059da7, (q31_t)0x87cee61e, (q31_t)0x2bffb73a, (q31_t)0x87ccbd11, - (q31_t)0x2bf9d0b1, (q31_t)0x87ca944e, - (q31_t)0x2bf3ea0d, (q31_t)0x87c86bd5, (q31_t)0x2bee034e, (q31_t)0x87c643a6, (q31_t)0x2be81c74, (q31_t)0x87c41bc2, - (q31_t)0x2be2357f, (q31_t)0x87c1f427, - (q31_t)0x2bdc4e6f, (q31_t)0x87bfccd7, (q31_t)0x2bd66744, (q31_t)0x87bda5d1, (q31_t)0x2bd07ffe, (q31_t)0x87bb7f16, - (q31_t)0x2bca989d, (q31_t)0x87b958a4, - (q31_t)0x2bc4b120, (q31_t)0x87b7327d, (q31_t)0x2bbec989, (q31_t)0x87b50c9f, (q31_t)0x2bb8e1d7, (q31_t)0x87b2e70c, - (q31_t)0x2bb2fa0a, (q31_t)0x87b0c1c4, - (q31_t)0x2bad1221, (q31_t)0x87ae9cc5, (q31_t)0x2ba72a1e, (q31_t)0x87ac7811, (q31_t)0x2ba14200, (q31_t)0x87aa53a6, - (q31_t)0x2b9b59c7, (q31_t)0x87a82f87, - (q31_t)0x2b957173, (q31_t)0x87a60bb1, (q31_t)0x2b8f8905, (q31_t)0x87a3e825, (q31_t)0x2b89a07b, (q31_t)0x87a1c4e4, - (q31_t)0x2b83b7d7, (q31_t)0x879fa1ed, - (q31_t)0x2b7dcf17, (q31_t)0x879d7f41, (q31_t)0x2b77e63d, (q31_t)0x879b5cde, (q31_t)0x2b71fd48, (q31_t)0x87993ac6, - (q31_t)0x2b6c1438, (q31_t)0x879718f8, - (q31_t)0x2b662b0e, (q31_t)0x8794f774, (q31_t)0x2b6041c9, (q31_t)0x8792d63b, (q31_t)0x2b5a5868, (q31_t)0x8790b54c, - (q31_t)0x2b546eee, (q31_t)0x878e94a7, - (q31_t)0x2b4e8558, (q31_t)0x878c744d, (q31_t)0x2b489ba8, (q31_t)0x878a543d, (q31_t)0x2b42b1dd, (q31_t)0x87883477, - (q31_t)0x2b3cc7f7, (q31_t)0x878614fb, - (q31_t)0x2b36ddf7, (q31_t)0x8783f5ca, (q31_t)0x2b30f3dc, (q31_t)0x8781d6e3, (q31_t)0x2b2b09a6, (q31_t)0x877fb846, - (q31_t)0x2b251f56, (q31_t)0x877d99f4, - (q31_t)0x2b1f34eb, (q31_t)0x877b7bec, (q31_t)0x2b194a66, (q31_t)0x87795e2f, (q31_t)0x2b135fc6, (q31_t)0x877740bb, - (q31_t)0x2b0d750b, (q31_t)0x87752392, - (q31_t)0x2b078a36, (q31_t)0x877306b4, (q31_t)0x2b019f46, (q31_t)0x8770ea20, (q31_t)0x2afbb43c, (q31_t)0x876ecdd6, - (q31_t)0x2af5c917, (q31_t)0x876cb1d6, - (q31_t)0x2aefddd8, (q31_t)0x876a9621, (q31_t)0x2ae9f27e, (q31_t)0x87687ab7, (q31_t)0x2ae4070a, (q31_t)0x87665f96, - (q31_t)0x2ade1b7c, (q31_t)0x876444c1, - (q31_t)0x2ad82fd2, (q31_t)0x87622a35, (q31_t)0x2ad2440f, (q31_t)0x87600ff4, (q31_t)0x2acc5831, (q31_t)0x875df5fd, - (q31_t)0x2ac66c39, (q31_t)0x875bdc51, - (q31_t)0x2ac08026, (q31_t)0x8759c2ef, (q31_t)0x2aba93f9, (q31_t)0x8757a9d8, (q31_t)0x2ab4a7b1, (q31_t)0x8755910b, - (q31_t)0x2aaebb50, (q31_t)0x87537888, - (q31_t)0x2aa8ced3, (q31_t)0x87516050, (q31_t)0x2aa2e23d, (q31_t)0x874f4862, (q31_t)0x2a9cf58c, (q31_t)0x874d30bf, - (q31_t)0x2a9708c1, (q31_t)0x874b1966, - (q31_t)0x2a911bdc, (q31_t)0x87490258, (q31_t)0x2a8b2edc, (q31_t)0x8746eb94, (q31_t)0x2a8541c3, (q31_t)0x8744d51b, - (q31_t)0x2a7f548e, (q31_t)0x8742beec, - (q31_t)0x2a796740, (q31_t)0x8740a907, (q31_t)0x2a7379d8, (q31_t)0x873e936d, (q31_t)0x2a6d8c55, (q31_t)0x873c7e1e, - (q31_t)0x2a679eb8, (q31_t)0x873a6919, - (q31_t)0x2a61b101, (q31_t)0x8738545e, (q31_t)0x2a5bc330, (q31_t)0x87363fee, (q31_t)0x2a55d545, (q31_t)0x87342bc9, - (q31_t)0x2a4fe740, (q31_t)0x873217ee, - (q31_t)0x2a49f920, (q31_t)0x8730045d, (q31_t)0x2a440ae7, (q31_t)0x872df117, (q31_t)0x2a3e1c93, (q31_t)0x872bde1c, - (q31_t)0x2a382e25, (q31_t)0x8729cb6b, - (q31_t)0x2a323f9e, (q31_t)0x8727b905, (q31_t)0x2a2c50fc, (q31_t)0x8725a6e9, (q31_t)0x2a266240, (q31_t)0x87239518, - (q31_t)0x2a20736a, (q31_t)0x87218391, - (q31_t)0x2a1a847b, (q31_t)0x871f7255, (q31_t)0x2a149571, (q31_t)0x871d6163, (q31_t)0x2a0ea64d, (q31_t)0x871b50bc, - (q31_t)0x2a08b710, (q31_t)0x87194060, - (q31_t)0x2a02c7b8, (q31_t)0x8717304e, (q31_t)0x29fcd847, (q31_t)0x87152087, (q31_t)0x29f6e8bb, (q31_t)0x8713110a, - (q31_t)0x29f0f916, (q31_t)0x871101d8, - (q31_t)0x29eb0957, (q31_t)0x870ef2f1, (q31_t)0x29e5197e, (q31_t)0x870ce454, (q31_t)0x29df298b, (q31_t)0x870ad602, - (q31_t)0x29d9397f, (q31_t)0x8708c7fa, - (q31_t)0x29d34958, (q31_t)0x8706ba3d, (q31_t)0x29cd5918, (q31_t)0x8704acca, (q31_t)0x29c768be, (q31_t)0x87029fa3, - (q31_t)0x29c1784a, (q31_t)0x870092c5, - (q31_t)0x29bb87bc, (q31_t)0x86fe8633, (q31_t)0x29b59715, (q31_t)0x86fc79eb, (q31_t)0x29afa654, (q31_t)0x86fa6dee, - (q31_t)0x29a9b579, (q31_t)0x86f8623b, - (q31_t)0x29a3c485, (q31_t)0x86f656d3, (q31_t)0x299dd377, (q31_t)0x86f44bb6, (q31_t)0x2997e24f, (q31_t)0x86f240e3, - (q31_t)0x2991f10e, (q31_t)0x86f0365c, - (q31_t)0x298bffb2, (q31_t)0x86ee2c1e, (q31_t)0x29860e3e, (q31_t)0x86ec222c, (q31_t)0x29801caf, (q31_t)0x86ea1884, - (q31_t)0x297a2b07, (q31_t)0x86e80f27, - (q31_t)0x29743946, (q31_t)0x86e60614, (q31_t)0x296e476b, (q31_t)0x86e3fd4c, (q31_t)0x29685576, (q31_t)0x86e1f4cf, - (q31_t)0x29626368, (q31_t)0x86dfec9d, - (q31_t)0x295c7140, (q31_t)0x86dde4b5, (q31_t)0x29567eff, (q31_t)0x86dbdd18, (q31_t)0x29508ca4, (q31_t)0x86d9d5c6, - (q31_t)0x294a9a30, (q31_t)0x86d7cebf, - (q31_t)0x2944a7a2, (q31_t)0x86d5c802, (q31_t)0x293eb4fb, (q31_t)0x86d3c190, (q31_t)0x2938c23a, (q31_t)0x86d1bb69, - (q31_t)0x2932cf60, (q31_t)0x86cfb58c, - (q31_t)0x292cdc6d, (q31_t)0x86cdaffa, (q31_t)0x2926e960, (q31_t)0x86cbaab3, (q31_t)0x2920f63a, (q31_t)0x86c9a5b7, - (q31_t)0x291b02fa, (q31_t)0x86c7a106, - (q31_t)0x29150fa1, (q31_t)0x86c59c9f, (q31_t)0x290f1c2f, (q31_t)0x86c39883, (q31_t)0x290928a3, (q31_t)0x86c194b2, - (q31_t)0x290334ff, (q31_t)0x86bf912c, - (q31_t)0x28fd4140, (q31_t)0x86bd8df0, (q31_t)0x28f74d69, (q31_t)0x86bb8b00, (q31_t)0x28f15978, (q31_t)0x86b9885a, - (q31_t)0x28eb656e, (q31_t)0x86b785ff, - (q31_t)0x28e5714b, (q31_t)0x86b583ee, (q31_t)0x28df7d0e, (q31_t)0x86b38229, (q31_t)0x28d988b8, (q31_t)0x86b180ae, - (q31_t)0x28d3944a, (q31_t)0x86af7f7e, - (q31_t)0x28cd9fc1, (q31_t)0x86ad7e99, (q31_t)0x28c7ab20, (q31_t)0x86ab7dff, (q31_t)0x28c1b666, (q31_t)0x86a97db0, - (q31_t)0x28bbc192, (q31_t)0x86a77dab, - (q31_t)0x28b5cca5, (q31_t)0x86a57df2, (q31_t)0x28afd7a0, (q31_t)0x86a37e83, (q31_t)0x28a9e281, (q31_t)0x86a17f5f, - (q31_t)0x28a3ed49, (q31_t)0x869f8086, - (q31_t)0x289df7f8, (q31_t)0x869d81f8, (q31_t)0x2898028e, (q31_t)0x869b83b4, (q31_t)0x28920d0a, (q31_t)0x869985bc, - (q31_t)0x288c176e, (q31_t)0x8697880f, - (q31_t)0x288621b9, (q31_t)0x86958aac, (q31_t)0x28802beb, (q31_t)0x86938d94, (q31_t)0x287a3604, (q31_t)0x869190c7, - (q31_t)0x28744004, (q31_t)0x868f9445, - (q31_t)0x286e49ea, (q31_t)0x868d980e, (q31_t)0x286853b8, (q31_t)0x868b9c22, (q31_t)0x28625d6d, (q31_t)0x8689a081, - (q31_t)0x285c670a, (q31_t)0x8687a52b, - (q31_t)0x2856708d, (q31_t)0x8685aa20, (q31_t)0x285079f7, (q31_t)0x8683af5f, (q31_t)0x284a8349, (q31_t)0x8681b4ea, - (q31_t)0x28448c81, (q31_t)0x867fbabf, - (q31_t)0x283e95a1, (q31_t)0x867dc0e0, (q31_t)0x28389ea8, (q31_t)0x867bc74b, (q31_t)0x2832a796, (q31_t)0x8679ce01, - (q31_t)0x282cb06c, (q31_t)0x8677d503, - (q31_t)0x2826b928, (q31_t)0x8675dc4f, (q31_t)0x2820c1cc, (q31_t)0x8673e3e6, (q31_t)0x281aca57, (q31_t)0x8671ebc8, - (q31_t)0x2814d2c9, (q31_t)0x866ff3f6, - (q31_t)0x280edb23, (q31_t)0x866dfc6e, (q31_t)0x2808e364, (q31_t)0x866c0531, (q31_t)0x2802eb8c, (q31_t)0x866a0e3f, - (q31_t)0x27fcf39c, (q31_t)0x86681798, - (q31_t)0x27f6fb92, (q31_t)0x8666213c, (q31_t)0x27f10371, (q31_t)0x86642b2c, (q31_t)0x27eb0b36, (q31_t)0x86623566, - (q31_t)0x27e512e3, (q31_t)0x86603feb, - (q31_t)0x27df1a77, (q31_t)0x865e4abb, (q31_t)0x27d921f3, (q31_t)0x865c55d7, (q31_t)0x27d32956, (q31_t)0x865a613d, - (q31_t)0x27cd30a1, (q31_t)0x86586cee, - (q31_t)0x27c737d3, (q31_t)0x865678eb, (q31_t)0x27c13eec, (q31_t)0x86548532, (q31_t)0x27bb45ed, (q31_t)0x865291c4, - (q31_t)0x27b54cd6, (q31_t)0x86509ea2, - (q31_t)0x27af53a6, (q31_t)0x864eabcb, (q31_t)0x27a95a5d, (q31_t)0x864cb93e, (q31_t)0x27a360fc, (q31_t)0x864ac6fd, - (q31_t)0x279d6783, (q31_t)0x8648d507, - (q31_t)0x27976df1, (q31_t)0x8646e35c, (q31_t)0x27917447, (q31_t)0x8644f1fc, (q31_t)0x278b7a84, (q31_t)0x864300e7, - (q31_t)0x278580a9, (q31_t)0x8641101d, - (q31_t)0x277f86b5, (q31_t)0x863f1f9e, (q31_t)0x27798caa, (q31_t)0x863d2f6b, (q31_t)0x27739285, (q31_t)0x863b3f82, - (q31_t)0x276d9849, (q31_t)0x86394fe5, - (q31_t)0x27679df4, (q31_t)0x86376092, (q31_t)0x2761a387, (q31_t)0x8635718b, (q31_t)0x275ba901, (q31_t)0x863382cf, - (q31_t)0x2755ae64, (q31_t)0x8631945e, - (q31_t)0x274fb3ae, (q31_t)0x862fa638, (q31_t)0x2749b8e0, (q31_t)0x862db85e, (q31_t)0x2743bdf9, (q31_t)0x862bcace, - (q31_t)0x273dc2fa, (q31_t)0x8629dd8a, - (q31_t)0x2737c7e3, (q31_t)0x8627f091, (q31_t)0x2731ccb4, (q31_t)0x862603e3, (q31_t)0x272bd16d, (q31_t)0x86241780, - (q31_t)0x2725d60e, (q31_t)0x86222b68, - (q31_t)0x271fda96, (q31_t)0x86203f9c, (q31_t)0x2719df06, (q31_t)0x861e541a, (q31_t)0x2713e35f, (q31_t)0x861c68e4, - (q31_t)0x270de79f, (q31_t)0x861a7df9, - (q31_t)0x2707ebc7, (q31_t)0x86189359, (q31_t)0x2701efd7, (q31_t)0x8616a905, (q31_t)0x26fbf3ce, (q31_t)0x8614befb, - (q31_t)0x26f5f7ae, (q31_t)0x8612d53d, - (q31_t)0x26effb76, (q31_t)0x8610ebca, (q31_t)0x26e9ff26, (q31_t)0x860f02a3, (q31_t)0x26e402bd, (q31_t)0x860d19c6, - (q31_t)0x26de063d, (q31_t)0x860b3135, - (q31_t)0x26d809a5, (q31_t)0x860948ef, (q31_t)0x26d20cf5, (q31_t)0x860760f4, (q31_t)0x26cc102d, (q31_t)0x86057944, - (q31_t)0x26c6134d, (q31_t)0x860391e0, - (q31_t)0x26c01655, (q31_t)0x8601aac7, (q31_t)0x26ba1945, (q31_t)0x85ffc3f9, (q31_t)0x26b41c1d, (q31_t)0x85fddd76, - (q31_t)0x26ae1edd, (q31_t)0x85fbf73f, - (q31_t)0x26a82186, (q31_t)0x85fa1153, (q31_t)0x26a22416, (q31_t)0x85f82bb2, (q31_t)0x269c268f, (q31_t)0x85f6465c, - (q31_t)0x269628f0, (q31_t)0x85f46152, - (q31_t)0x26902b39, (q31_t)0x85f27c93, (q31_t)0x268a2d6b, (q31_t)0x85f09820, (q31_t)0x26842f84, (q31_t)0x85eeb3f7, - (q31_t)0x267e3186, (q31_t)0x85ecd01a, - (q31_t)0x26783370, (q31_t)0x85eaec88, (q31_t)0x26723543, (q31_t)0x85e90942, (q31_t)0x266c36fe, (q31_t)0x85e72647, - (q31_t)0x266638a1, (q31_t)0x85e54397, - (q31_t)0x26603a2c, (q31_t)0x85e36132, (q31_t)0x265a3b9f, (q31_t)0x85e17f19, (q31_t)0x26543cfb, (q31_t)0x85df9d4b, - (q31_t)0x264e3e40, (q31_t)0x85ddbbc9, - (q31_t)0x26483f6c, (q31_t)0x85dbda91, (q31_t)0x26424082, (q31_t)0x85d9f9a5, (q31_t)0x263c417f, (q31_t)0x85d81905, - (q31_t)0x26364265, (q31_t)0x85d638b0, - (q31_t)0x26304333, (q31_t)0x85d458a6, (q31_t)0x262a43ea, (q31_t)0x85d278e7, (q31_t)0x26244489, (q31_t)0x85d09974, - (q31_t)0x261e4511, (q31_t)0x85ceba4d, - (q31_t)0x26184581, (q31_t)0x85ccdb70, (q31_t)0x261245da, (q31_t)0x85cafcdf, (q31_t)0x260c461b, (q31_t)0x85c91e9a, - (q31_t)0x26064645, (q31_t)0x85c740a0, - (q31_t)0x26004657, (q31_t)0x85c562f1, (q31_t)0x25fa4652, (q31_t)0x85c3858d, (q31_t)0x25f44635, (q31_t)0x85c1a875, - (q31_t)0x25ee4601, (q31_t)0x85bfcba9, - (q31_t)0x25e845b6, (q31_t)0x85bdef28, (q31_t)0x25e24553, (q31_t)0x85bc12f2, (q31_t)0x25dc44d9, (q31_t)0x85ba3707, - (q31_t)0x25d64447, (q31_t)0x85b85b68, - (q31_t)0x25d0439f, (q31_t)0x85b68015, (q31_t)0x25ca42de, (q31_t)0x85b4a50d, (q31_t)0x25c44207, (q31_t)0x85b2ca50, - (q31_t)0x25be4118, (q31_t)0x85b0efdf, - (q31_t)0x25b84012, (q31_t)0x85af15b9, (q31_t)0x25b23ef5, (q31_t)0x85ad3bdf, (q31_t)0x25ac3dc0, (q31_t)0x85ab6250, - (q31_t)0x25a63c74, (q31_t)0x85a9890d, - (q31_t)0x25a03b11, (q31_t)0x85a7b015, (q31_t)0x259a3997, (q31_t)0x85a5d768, (q31_t)0x25943806, (q31_t)0x85a3ff07, - (q31_t)0x258e365d, (q31_t)0x85a226f2, - (q31_t)0x2588349d, (q31_t)0x85a04f28, (q31_t)0x258232c6, (q31_t)0x859e77a9, (q31_t)0x257c30d8, (q31_t)0x859ca076, - (q31_t)0x25762ed3, (q31_t)0x859ac98f, - (q31_t)0x25702cb7, (q31_t)0x8598f2f3, (q31_t)0x256a2a83, (q31_t)0x85971ca2, (q31_t)0x25642839, (q31_t)0x8595469d, - (q31_t)0x255e25d7, (q31_t)0x859370e4, - (q31_t)0x2558235f, (q31_t)0x85919b76, (q31_t)0x255220cf, (q31_t)0x858fc653, (q31_t)0x254c1e28, (q31_t)0x858df17c, - (q31_t)0x25461b6b, (q31_t)0x858c1cf1, - (q31_t)0x25401896, (q31_t)0x858a48b1, (q31_t)0x253a15aa, (q31_t)0x858874bd, (q31_t)0x253412a8, (q31_t)0x8586a114, - (q31_t)0x252e0f8e, (q31_t)0x8584cdb7, - (q31_t)0x25280c5e, (q31_t)0x8582faa5, (q31_t)0x25220916, (q31_t)0x858127df, (q31_t)0x251c05b8, (q31_t)0x857f5564, - (q31_t)0x25160243, (q31_t)0x857d8335, - (q31_t)0x250ffeb7, (q31_t)0x857bb152, (q31_t)0x2509fb14, (q31_t)0x8579dfba, (q31_t)0x2503f75a, (q31_t)0x85780e6e, - (q31_t)0x24fdf389, (q31_t)0x85763d6d, - (q31_t)0x24f7efa2, (q31_t)0x85746cb8, (q31_t)0x24f1eba4, (q31_t)0x85729c4e, (q31_t)0x24ebe78f, (q31_t)0x8570cc30, - (q31_t)0x24e5e363, (q31_t)0x856efc5e, - (q31_t)0x24dfdf20, (q31_t)0x856d2cd7, (q31_t)0x24d9dac7, (q31_t)0x856b5d9c, (q31_t)0x24d3d657, (q31_t)0x85698ead, - (q31_t)0x24cdd1d0, (q31_t)0x8567c009, - (q31_t)0x24c7cd33, (q31_t)0x8565f1b0, (q31_t)0x24c1c87f, (q31_t)0x856423a4, (q31_t)0x24bbc3b4, (q31_t)0x856255e3, - (q31_t)0x24b5bed2, (q31_t)0x8560886d, - (q31_t)0x24afb9da, (q31_t)0x855ebb44, (q31_t)0x24a9b4cb, (q31_t)0x855cee66, (q31_t)0x24a3afa6, (q31_t)0x855b21d3, - (q31_t)0x249daa6a, (q31_t)0x8559558c, - (q31_t)0x2497a517, (q31_t)0x85578991, (q31_t)0x24919fae, (q31_t)0x8555bde2, (q31_t)0x248b9a2f, (q31_t)0x8553f27e, - (q31_t)0x24859498, (q31_t)0x85522766, - (q31_t)0x247f8eec, (q31_t)0x85505c99, (q31_t)0x24798928, (q31_t)0x854e9219, (q31_t)0x2473834f, (q31_t)0x854cc7e3, - (q31_t)0x246d7d5e, (q31_t)0x854afdfa, - (q31_t)0x24677758, (q31_t)0x8549345c, (q31_t)0x2461713a, (q31_t)0x85476b0a, (q31_t)0x245b6b07, (q31_t)0x8545a204, - (q31_t)0x245564bd, (q31_t)0x8543d949, - (q31_t)0x244f5e5c, (q31_t)0x854210db, (q31_t)0x244957e5, (q31_t)0x854048b7, (q31_t)0x24435158, (q31_t)0x853e80e0, - (q31_t)0x243d4ab4, (q31_t)0x853cb954, - (q31_t)0x243743fa, (q31_t)0x853af214, (q31_t)0x24313d2a, (q31_t)0x85392b20, (q31_t)0x242b3644, (q31_t)0x85376477, - (q31_t)0x24252f47, (q31_t)0x85359e1a, - (q31_t)0x241f2833, (q31_t)0x8533d809, (q31_t)0x2419210a, (q31_t)0x85321244, (q31_t)0x241319ca, (q31_t)0x85304cca, - (q31_t)0x240d1274, (q31_t)0x852e879d, - (q31_t)0x24070b08, (q31_t)0x852cc2bb, (q31_t)0x24010385, (q31_t)0x852afe24, (q31_t)0x23fafbec, (q31_t)0x852939da, - (q31_t)0x23f4f43e, (q31_t)0x852775db, - (q31_t)0x23eeec78, (q31_t)0x8525b228, (q31_t)0x23e8e49d, (q31_t)0x8523eec1, (q31_t)0x23e2dcac, (q31_t)0x85222ba5, - (q31_t)0x23dcd4a4, (q31_t)0x852068d6, - (q31_t)0x23d6cc87, (q31_t)0x851ea652, (q31_t)0x23d0c453, (q31_t)0x851ce41a, (q31_t)0x23cabc09, (q31_t)0x851b222e, - (q31_t)0x23c4b3a9, (q31_t)0x8519608d, - (q31_t)0x23beab33, (q31_t)0x85179f39, (q31_t)0x23b8a2a7, (q31_t)0x8515de30, (q31_t)0x23b29a05, (q31_t)0x85141d73, - (q31_t)0x23ac914d, (q31_t)0x85125d02, - (q31_t)0x23a6887f, (q31_t)0x85109cdd, (q31_t)0x23a07f9a, (q31_t)0x850edd03, (q31_t)0x239a76a0, (q31_t)0x850d1d75, - (q31_t)0x23946d90, (q31_t)0x850b5e34, - (q31_t)0x238e646a, (q31_t)0x85099f3e, (q31_t)0x23885b2e, (q31_t)0x8507e094, (q31_t)0x238251dd, (q31_t)0x85062235, - (q31_t)0x237c4875, (q31_t)0x85046423, - (q31_t)0x23763ef7, (q31_t)0x8502a65c, (q31_t)0x23703564, (q31_t)0x8500e8e2, (q31_t)0x236a2bba, (q31_t)0x84ff2bb3, - (q31_t)0x236421fb, (q31_t)0x84fd6ed0, - (q31_t)0x235e1826, (q31_t)0x84fbb239, (q31_t)0x23580e3b, (q31_t)0x84f9f5ee, (q31_t)0x2352043b, (q31_t)0x84f839ee, - (q31_t)0x234bfa24, (q31_t)0x84f67e3b, - (q31_t)0x2345eff8, (q31_t)0x84f4c2d4, (q31_t)0x233fe5b6, (q31_t)0x84f307b8, (q31_t)0x2339db5e, (q31_t)0x84f14ce8, - (q31_t)0x2333d0f1, (q31_t)0x84ef9265, - (q31_t)0x232dc66d, (q31_t)0x84edd82d, (q31_t)0x2327bbd5, (q31_t)0x84ec1e41, (q31_t)0x2321b126, (q31_t)0x84ea64a1, - (q31_t)0x231ba662, (q31_t)0x84e8ab4d, - (q31_t)0x23159b88, (q31_t)0x84e6f244, (q31_t)0x230f9098, (q31_t)0x84e53988, (q31_t)0x23098593, (q31_t)0x84e38118, - (q31_t)0x23037a78, (q31_t)0x84e1c8f3, - (q31_t)0x22fd6f48, (q31_t)0x84e0111b, (q31_t)0x22f76402, (q31_t)0x84de598f, (q31_t)0x22f158a7, (q31_t)0x84dca24e, - (q31_t)0x22eb4d36, (q31_t)0x84daeb5a, - (q31_t)0x22e541af, (q31_t)0x84d934b1, (q31_t)0x22df3613, (q31_t)0x84d77e54, (q31_t)0x22d92a61, (q31_t)0x84d5c844, - (q31_t)0x22d31e9a, (q31_t)0x84d4127f, - (q31_t)0x22cd12bd, (q31_t)0x84d25d06, (q31_t)0x22c706cb, (q31_t)0x84d0a7da, (q31_t)0x22c0fac4, (q31_t)0x84cef2f9, - (q31_t)0x22baeea7, (q31_t)0x84cd3e64, - (q31_t)0x22b4e274, (q31_t)0x84cb8a1b, (q31_t)0x22aed62c, (q31_t)0x84c9d61f, (q31_t)0x22a8c9cf, (q31_t)0x84c8226e, - (q31_t)0x22a2bd5d, (q31_t)0x84c66f09, - (q31_t)0x229cb0d5, (q31_t)0x84c4bbf0, (q31_t)0x2296a437, (q31_t)0x84c30924, (q31_t)0x22909785, (q31_t)0x84c156a3, - (q31_t)0x228a8abd, (q31_t)0x84bfa46e, - (q31_t)0x22847de0, (q31_t)0x84bdf286, (q31_t)0x227e70ed, (q31_t)0x84bc40e9, (q31_t)0x227863e5, (q31_t)0x84ba8f98, - (q31_t)0x227256c8, (q31_t)0x84b8de94, - (q31_t)0x226c4996, (q31_t)0x84b72ddb, (q31_t)0x22663c4e, (q31_t)0x84b57d6f, (q31_t)0x22602ef1, (q31_t)0x84b3cd4f, - (q31_t)0x225a217f, (q31_t)0x84b21d7a, - (q31_t)0x225413f8, (q31_t)0x84b06df2, (q31_t)0x224e065c, (q31_t)0x84aebeb6, (q31_t)0x2247f8aa, (q31_t)0x84ad0fc6, - (q31_t)0x2241eae3, (q31_t)0x84ab6122, - (q31_t)0x223bdd08, (q31_t)0x84a9b2ca, (q31_t)0x2235cf17, (q31_t)0x84a804be, (q31_t)0x222fc111, (q31_t)0x84a656fe, - (q31_t)0x2229b2f6, (q31_t)0x84a4a98a, - (q31_t)0x2223a4c5, (q31_t)0x84a2fc62, (q31_t)0x221d9680, (q31_t)0x84a14f87, (q31_t)0x22178826, (q31_t)0x849fa2f7, - (q31_t)0x221179b7, (q31_t)0x849df6b4, - (q31_t)0x220b6b32, (q31_t)0x849c4abd, (q31_t)0x22055c99, (q31_t)0x849a9f12, (q31_t)0x21ff4dea, (q31_t)0x8498f3b3, - (q31_t)0x21f93f27, (q31_t)0x849748a0, - (q31_t)0x21f3304f, (q31_t)0x84959dd9, (q31_t)0x21ed2162, (q31_t)0x8493f35e, (q31_t)0x21e71260, (q31_t)0x84924930, - (q31_t)0x21e10349, (q31_t)0x84909f4e, - (q31_t)0x21daf41d, (q31_t)0x848ef5b7, (q31_t)0x21d4e4dc, (q31_t)0x848d4c6d, (q31_t)0x21ced586, (q31_t)0x848ba36f, - (q31_t)0x21c8c61c, (q31_t)0x8489fabe, - (q31_t)0x21c2b69c, (q31_t)0x84885258, (q31_t)0x21bca708, (q31_t)0x8486aa3e, (q31_t)0x21b6975f, (q31_t)0x84850271, - (q31_t)0x21b087a1, (q31_t)0x84835af0, - (q31_t)0x21aa77cf, (q31_t)0x8481b3bb, (q31_t)0x21a467e7, (q31_t)0x84800cd2, (q31_t)0x219e57eb, (q31_t)0x847e6636, - (q31_t)0x219847da, (q31_t)0x847cbfe5, - (q31_t)0x219237b5, (q31_t)0x847b19e1, (q31_t)0x218c277a, (q31_t)0x84797429, (q31_t)0x2186172b, (q31_t)0x8477cebd, - (q31_t)0x218006c8, (q31_t)0x8476299e, - (q31_t)0x2179f64f, (q31_t)0x847484ca, (q31_t)0x2173e5c2, (q31_t)0x8472e043, (q31_t)0x216dd521, (q31_t)0x84713c08, - (q31_t)0x2167c46b, (q31_t)0x846f9819, - (q31_t)0x2161b3a0, (q31_t)0x846df477, (q31_t)0x215ba2c0, (q31_t)0x846c5120, (q31_t)0x215591cc, (q31_t)0x846aae16, - (q31_t)0x214f80c4, (q31_t)0x84690b58, - (q31_t)0x21496fa7, (q31_t)0x846768e7, (q31_t)0x21435e75, (q31_t)0x8465c6c1, (q31_t)0x213d4d2f, (q31_t)0x846424e8, - (q31_t)0x21373bd4, (q31_t)0x8462835b, - (q31_t)0x21312a65, (q31_t)0x8460e21a, (q31_t)0x212b18e1, (q31_t)0x845f4126, (q31_t)0x21250749, (q31_t)0x845da07e, - (q31_t)0x211ef59d, (q31_t)0x845c0022, - (q31_t)0x2118e3dc, (q31_t)0x845a6012, (q31_t)0x2112d206, (q31_t)0x8458c04f, (q31_t)0x210cc01d, (q31_t)0x845720d8, - (q31_t)0x2106ae1e, (q31_t)0x845581ad, - (q31_t)0x21009c0c, (q31_t)0x8453e2cf, (q31_t)0x20fa89e5, (q31_t)0x8452443d, (q31_t)0x20f477aa, (q31_t)0x8450a5f7, - (q31_t)0x20ee655a, (q31_t)0x844f07fd, - (q31_t)0x20e852f6, (q31_t)0x844d6a50, (q31_t)0x20e2407e, (q31_t)0x844bccef, (q31_t)0x20dc2df2, (q31_t)0x844a2fda, - (q31_t)0x20d61b51, (q31_t)0x84489311, - (q31_t)0x20d0089c, (q31_t)0x8446f695, (q31_t)0x20c9f5d3, (q31_t)0x84455a66, (q31_t)0x20c3e2f5, (q31_t)0x8443be82, - (q31_t)0x20bdd003, (q31_t)0x844222eb, - (q31_t)0x20b7bcfe, (q31_t)0x844087a0, (q31_t)0x20b1a9e4, (q31_t)0x843eeca2, (q31_t)0x20ab96b5, (q31_t)0x843d51f0, - (q31_t)0x20a58373, (q31_t)0x843bb78a, - (q31_t)0x209f701c, (q31_t)0x843a1d70, (q31_t)0x20995cb2, (q31_t)0x843883a3, (q31_t)0x20934933, (q31_t)0x8436ea23, - (q31_t)0x208d35a0, (q31_t)0x843550ee, - (q31_t)0x208721f9, (q31_t)0x8433b806, (q31_t)0x20810e3e, (q31_t)0x84321f6b, (q31_t)0x207afa6f, (q31_t)0x8430871b, - (q31_t)0x2074e68c, (q31_t)0x842eef18, - (q31_t)0x206ed295, (q31_t)0x842d5762, (q31_t)0x2068be8a, (q31_t)0x842bbff8, (q31_t)0x2062aa6b, (q31_t)0x842a28da, - (q31_t)0x205c9638, (q31_t)0x84289209, - (q31_t)0x205681f1, (q31_t)0x8426fb84, (q31_t)0x20506d96, (q31_t)0x8425654b, (q31_t)0x204a5927, (q31_t)0x8423cf5f, - (q31_t)0x204444a4, (q31_t)0x842239bf, - (q31_t)0x203e300d, (q31_t)0x8420a46c, (q31_t)0x20381b63, (q31_t)0x841f0f65, (q31_t)0x203206a4, (q31_t)0x841d7aaa, - (q31_t)0x202bf1d2, (q31_t)0x841be63c, - (q31_t)0x2025dcec, (q31_t)0x841a521a, (q31_t)0x201fc7f2, (q31_t)0x8418be45, (q31_t)0x2019b2e4, (q31_t)0x84172abc, - (q31_t)0x20139dc2, (q31_t)0x84159780, - (q31_t)0x200d888d, (q31_t)0x84140490, (q31_t)0x20077344, (q31_t)0x841271ec, (q31_t)0x20015de7, (q31_t)0x8410df95, - (q31_t)0x1ffb4876, (q31_t)0x840f4d8a, - (q31_t)0x1ff532f2, (q31_t)0x840dbbcc, (q31_t)0x1fef1d59, (q31_t)0x840c2a5a, (q31_t)0x1fe907ae, (q31_t)0x840a9935, - (q31_t)0x1fe2f1ee, (q31_t)0x8409085c, - (q31_t)0x1fdcdc1b, (q31_t)0x840777d0, (q31_t)0x1fd6c634, (q31_t)0x8405e790, (q31_t)0x1fd0b03a, (q31_t)0x8404579d, - (q31_t)0x1fca9a2b, (q31_t)0x8402c7f6, - (q31_t)0x1fc4840a, (q31_t)0x8401389b, (q31_t)0x1fbe6dd4, (q31_t)0x83ffa98d, (q31_t)0x1fb8578b, (q31_t)0x83fe1acc, - (q31_t)0x1fb2412f, (q31_t)0x83fc8c57, - (q31_t)0x1fac2abf, (q31_t)0x83fafe2e, (q31_t)0x1fa6143b, (q31_t)0x83f97052, (q31_t)0x1f9ffda4, (q31_t)0x83f7e2c3, - (q31_t)0x1f99e6fa, (q31_t)0x83f65580, - (q31_t)0x1f93d03c, (q31_t)0x83f4c889, (q31_t)0x1f8db96a, (q31_t)0x83f33bdf, (q31_t)0x1f87a285, (q31_t)0x83f1af82, - (q31_t)0x1f818b8d, (q31_t)0x83f02371, - (q31_t)0x1f7b7481, (q31_t)0x83ee97ad, (q31_t)0x1f755d61, (q31_t)0x83ed0c35, (q31_t)0x1f6f462f, (q31_t)0x83eb810a, - (q31_t)0x1f692ee9, (q31_t)0x83e9f62b, - (q31_t)0x1f63178f, (q31_t)0x83e86b99, (q31_t)0x1f5d0022, (q31_t)0x83e6e153, (q31_t)0x1f56e8a2, (q31_t)0x83e5575a, - (q31_t)0x1f50d10e, (q31_t)0x83e3cdad, - (q31_t)0x1f4ab968, (q31_t)0x83e2444d, (q31_t)0x1f44a1ad, (q31_t)0x83e0bb3a, (q31_t)0x1f3e89e0, (q31_t)0x83df3273, - (q31_t)0x1f3871ff, (q31_t)0x83dda9f9, - (q31_t)0x1f325a0b, (q31_t)0x83dc21cb, (q31_t)0x1f2c4204, (q31_t)0x83da99ea, (q31_t)0x1f2629ea, (q31_t)0x83d91255, - (q31_t)0x1f2011bc, (q31_t)0x83d78b0d, - (q31_t)0x1f19f97b, (q31_t)0x83d60412, (q31_t)0x1f13e127, (q31_t)0x83d47d63, (q31_t)0x1f0dc8c0, (q31_t)0x83d2f701, - (q31_t)0x1f07b045, (q31_t)0x83d170eb, - (q31_t)0x1f0197b8, (q31_t)0x83cfeb22, (q31_t)0x1efb7f17, (q31_t)0x83ce65a6, (q31_t)0x1ef56664, (q31_t)0x83cce076, - (q31_t)0x1eef4d9d, (q31_t)0x83cb5b93, - (q31_t)0x1ee934c3, (q31_t)0x83c9d6fc, (q31_t)0x1ee31bd6, (q31_t)0x83c852b2, (q31_t)0x1edd02d6, (q31_t)0x83c6ceb5, - (q31_t)0x1ed6e9c3, (q31_t)0x83c54b04, - (q31_t)0x1ed0d09d, (q31_t)0x83c3c7a0, (q31_t)0x1ecab763, (q31_t)0x83c24488, (q31_t)0x1ec49e17, (q31_t)0x83c0c1be, - (q31_t)0x1ebe84b8, (q31_t)0x83bf3f3f, - (q31_t)0x1eb86b46, (q31_t)0x83bdbd0e, (q31_t)0x1eb251c1, (q31_t)0x83bc3b29, (q31_t)0x1eac3829, (q31_t)0x83bab991, - (q31_t)0x1ea61e7e, (q31_t)0x83b93845, - (q31_t)0x1ea004c1, (q31_t)0x83b7b746, (q31_t)0x1e99eaf0, (q31_t)0x83b63694, (q31_t)0x1e93d10c, (q31_t)0x83b4b62e, - (q31_t)0x1e8db716, (q31_t)0x83b33616, - (q31_t)0x1e879d0d, (q31_t)0x83b1b649, (q31_t)0x1e8182f1, (q31_t)0x83b036ca, (q31_t)0x1e7b68c2, (q31_t)0x83aeb797, - (q31_t)0x1e754e80, (q31_t)0x83ad38b1, - (q31_t)0x1e6f342c, (q31_t)0x83abba17, (q31_t)0x1e6919c4, (q31_t)0x83aa3bca, (q31_t)0x1e62ff4a, (q31_t)0x83a8bdca, - (q31_t)0x1e5ce4be, (q31_t)0x83a74017, - (q31_t)0x1e56ca1e, (q31_t)0x83a5c2b0, (q31_t)0x1e50af6c, (q31_t)0x83a44596, (q31_t)0x1e4a94a7, (q31_t)0x83a2c8c9, - (q31_t)0x1e4479cf, (q31_t)0x83a14c48, - (q31_t)0x1e3e5ee5, (q31_t)0x839fd014, (q31_t)0x1e3843e8, (q31_t)0x839e542d, (q31_t)0x1e3228d9, (q31_t)0x839cd893, - (q31_t)0x1e2c0db6, (q31_t)0x839b5d45, - (q31_t)0x1e25f282, (q31_t)0x8399e244, (q31_t)0x1e1fd73a, (q31_t)0x83986790, (q31_t)0x1e19bbe0, (q31_t)0x8396ed29, - (q31_t)0x1e13a074, (q31_t)0x8395730e, - (q31_t)0x1e0d84f5, (q31_t)0x8393f940, (q31_t)0x1e076963, (q31_t)0x83927fbf, (q31_t)0x1e014dbf, (q31_t)0x8391068a, - (q31_t)0x1dfb3208, (q31_t)0x838f8da2, - (q31_t)0x1df5163f, (q31_t)0x838e1507, (q31_t)0x1deefa63, (q31_t)0x838c9cb9, (q31_t)0x1de8de75, (q31_t)0x838b24b8, - (q31_t)0x1de2c275, (q31_t)0x8389ad03, - (q31_t)0x1ddca662, (q31_t)0x8388359b, (q31_t)0x1dd68a3c, (q31_t)0x8386be80, (q31_t)0x1dd06e04, (q31_t)0x838547b2, - (q31_t)0x1dca51ba, (q31_t)0x8383d130, - (q31_t)0x1dc4355e, (q31_t)0x83825afb, (q31_t)0x1dbe18ef, (q31_t)0x8380e513, (q31_t)0x1db7fc6d, (q31_t)0x837f6f78, - (q31_t)0x1db1dfda, (q31_t)0x837dfa2a, - (q31_t)0x1dabc334, (q31_t)0x837c8528, (q31_t)0x1da5a67c, (q31_t)0x837b1074, (q31_t)0x1d9f89b1, (q31_t)0x83799c0c, - (q31_t)0x1d996cd4, (q31_t)0x837827f0, - (q31_t)0x1d934fe5, (q31_t)0x8376b422, (q31_t)0x1d8d32e4, (q31_t)0x837540a1, (q31_t)0x1d8715d0, (q31_t)0x8373cd6c, - (q31_t)0x1d80f8ab, (q31_t)0x83725a84, - (q31_t)0x1d7adb73, (q31_t)0x8370e7e9, (q31_t)0x1d74be29, (q31_t)0x836f759b, (q31_t)0x1d6ea0cc, (q31_t)0x836e039a, - (q31_t)0x1d68835e, (q31_t)0x836c91e5, - (q31_t)0x1d6265dd, (q31_t)0x836b207d, (q31_t)0x1d5c484b, (q31_t)0x8369af63, (q31_t)0x1d562aa6, (q31_t)0x83683e95, - (q31_t)0x1d500cef, (q31_t)0x8366ce14, - (q31_t)0x1d49ef26, (q31_t)0x83655ddf, (q31_t)0x1d43d14b, (q31_t)0x8363edf8, (q31_t)0x1d3db35e, (q31_t)0x83627e5d, - (q31_t)0x1d37955e, (q31_t)0x83610f10, - (q31_t)0x1d31774d, (q31_t)0x835fa00f, (q31_t)0x1d2b592a, (q31_t)0x835e315b, (q31_t)0x1d253af5, (q31_t)0x835cc2f4, - (q31_t)0x1d1f1cae, (q31_t)0x835b54da, - (q31_t)0x1d18fe54, (q31_t)0x8359e70d, (q31_t)0x1d12dfe9, (q31_t)0x8358798c, (q31_t)0x1d0cc16c, (q31_t)0x83570c59, - (q31_t)0x1d06a2dd, (q31_t)0x83559f72, - (q31_t)0x1d00843d, (q31_t)0x835432d8, (q31_t)0x1cfa658a, (q31_t)0x8352c68c, (q31_t)0x1cf446c5, (q31_t)0x83515a8c, - (q31_t)0x1cee27ef, (q31_t)0x834feed9, - (q31_t)0x1ce80906, (q31_t)0x834e8373, (q31_t)0x1ce1ea0c, (q31_t)0x834d185a, (q31_t)0x1cdbcb00, (q31_t)0x834bad8e, - (q31_t)0x1cd5abe3, (q31_t)0x834a430e, - (q31_t)0x1ccf8cb3, (q31_t)0x8348d8dc, (q31_t)0x1cc96d72, (q31_t)0x83476ef6, (q31_t)0x1cc34e1f, (q31_t)0x8346055e, - (q31_t)0x1cbd2eba, (q31_t)0x83449c12, - (q31_t)0x1cb70f43, (q31_t)0x83433314, (q31_t)0x1cb0efbb, (q31_t)0x8341ca62, (q31_t)0x1caad021, (q31_t)0x834061fd, - (q31_t)0x1ca4b075, (q31_t)0x833ef9e6, - (q31_t)0x1c9e90b8, (q31_t)0x833d921b, (q31_t)0x1c9870e9, (q31_t)0x833c2a9d, (q31_t)0x1c925109, (q31_t)0x833ac36c, - (q31_t)0x1c8c3116, (q31_t)0x83395c88, - (q31_t)0x1c861113, (q31_t)0x8337f5f1, (q31_t)0x1c7ff0fd, (q31_t)0x83368fa7, (q31_t)0x1c79d0d6, (q31_t)0x833529aa, - (q31_t)0x1c73b09d, (q31_t)0x8333c3fa, - (q31_t)0x1c6d9053, (q31_t)0x83325e97, (q31_t)0x1c676ff8, (q31_t)0x8330f981, (q31_t)0x1c614f8b, (q31_t)0x832f94b8, - (q31_t)0x1c5b2f0c, (q31_t)0x832e303c, - (q31_t)0x1c550e7c, (q31_t)0x832ccc0d, (q31_t)0x1c4eedda, (q31_t)0x832b682b, (q31_t)0x1c48cd27, (q31_t)0x832a0496, - (q31_t)0x1c42ac62, (q31_t)0x8328a14d, - (q31_t)0x1c3c8b8c, (q31_t)0x83273e52, (q31_t)0x1c366aa5, (q31_t)0x8325dba4, (q31_t)0x1c3049ac, (q31_t)0x83247943, - (q31_t)0x1c2a28a2, (q31_t)0x8323172f, - (q31_t)0x1c240786, (q31_t)0x8321b568, (q31_t)0x1c1de659, (q31_t)0x832053ee, (q31_t)0x1c17c51b, (q31_t)0x831ef2c1, - (q31_t)0x1c11a3cb, (q31_t)0x831d91e1, - (q31_t)0x1c0b826a, (q31_t)0x831c314e, (q31_t)0x1c0560f8, (q31_t)0x831ad109, (q31_t)0x1bff3f75, (q31_t)0x83197110, - (q31_t)0x1bf91de0, (q31_t)0x83181164, - (q31_t)0x1bf2fc3a, (q31_t)0x8316b205, (q31_t)0x1becda83, (q31_t)0x831552f4, (q31_t)0x1be6b8ba, (q31_t)0x8313f42f, - (q31_t)0x1be096e0, (q31_t)0x831295b7, - (q31_t)0x1bda74f6, (q31_t)0x8311378d, (q31_t)0x1bd452f9, (q31_t)0x830fd9af, (q31_t)0x1bce30ec, (q31_t)0x830e7c1f, - (q31_t)0x1bc80ece, (q31_t)0x830d1edc, - (q31_t)0x1bc1ec9e, (q31_t)0x830bc1e6, (q31_t)0x1bbbca5e, (q31_t)0x830a653c, (q31_t)0x1bb5a80c, (q31_t)0x830908e0, - (q31_t)0x1baf85a9, (q31_t)0x8307acd1, - (q31_t)0x1ba96335, (q31_t)0x83065110, (q31_t)0x1ba340b0, (q31_t)0x8304f59b, (q31_t)0x1b9d1e1a, (q31_t)0x83039a73, - (q31_t)0x1b96fb73, (q31_t)0x83023f98, - (q31_t)0x1b90d8bb, (q31_t)0x8300e50b, (q31_t)0x1b8ab5f2, (q31_t)0x82ff8acb, (q31_t)0x1b849317, (q31_t)0x82fe30d7, - (q31_t)0x1b7e702c, (q31_t)0x82fcd731, - (q31_t)0x1b784d30, (q31_t)0x82fb7dd8, (q31_t)0x1b722a23, (q31_t)0x82fa24cc, (q31_t)0x1b6c0705, (q31_t)0x82f8cc0d, - (q31_t)0x1b65e3d7, (q31_t)0x82f7739c, - (q31_t)0x1b5fc097, (q31_t)0x82f61b77, (q31_t)0x1b599d46, (q31_t)0x82f4c3a0, (q31_t)0x1b5379e5, (q31_t)0x82f36c15, - (q31_t)0x1b4d5672, (q31_t)0x82f214d8, - (q31_t)0x1b4732ef, (q31_t)0x82f0bde8, (q31_t)0x1b410f5b, (q31_t)0x82ef6745, (q31_t)0x1b3aebb6, (q31_t)0x82ee10ef, - (q31_t)0x1b34c801, (q31_t)0x82ecbae7, - (q31_t)0x1b2ea43a, (q31_t)0x82eb652b, (q31_t)0x1b288063, (q31_t)0x82ea0fbd, (q31_t)0x1b225c7b, (q31_t)0x82e8ba9c, - (q31_t)0x1b1c3883, (q31_t)0x82e765c8, - (q31_t)0x1b161479, (q31_t)0x82e61141, (q31_t)0x1b0ff05f, (q31_t)0x82e4bd07, (q31_t)0x1b09cc34, (q31_t)0x82e3691b, - (q31_t)0x1b03a7f9, (q31_t)0x82e2157c, - (q31_t)0x1afd83ad, (q31_t)0x82e0c22a, (q31_t)0x1af75f50, (q31_t)0x82df6f25, (q31_t)0x1af13ae3, (q31_t)0x82de1c6d, - (q31_t)0x1aeb1665, (q31_t)0x82dcca02, - (q31_t)0x1ae4f1d6, (q31_t)0x82db77e5, (q31_t)0x1adecd37, (q31_t)0x82da2615, (q31_t)0x1ad8a887, (q31_t)0x82d8d492, - (q31_t)0x1ad283c7, (q31_t)0x82d7835c, - (q31_t)0x1acc5ef6, (q31_t)0x82d63274, (q31_t)0x1ac63a14, (q31_t)0x82d4e1d8, (q31_t)0x1ac01522, (q31_t)0x82d3918a, - (q31_t)0x1ab9f020, (q31_t)0x82d24189, - (q31_t)0x1ab3cb0d, (q31_t)0x82d0f1d5, (q31_t)0x1aada5e9, (q31_t)0x82cfa26f, (q31_t)0x1aa780b6, (q31_t)0x82ce5356, - (q31_t)0x1aa15b71, (q31_t)0x82cd048a, - (q31_t)0x1a9b361d, (q31_t)0x82cbb60b, (q31_t)0x1a9510b7, (q31_t)0x82ca67d9, (q31_t)0x1a8eeb42, (q31_t)0x82c919f5, - (q31_t)0x1a88c5bc, (q31_t)0x82c7cc5e, - (q31_t)0x1a82a026, (q31_t)0x82c67f14, (q31_t)0x1a7c7a7f, (q31_t)0x82c53217, (q31_t)0x1a7654c8, (q31_t)0x82c3e568, - (q31_t)0x1a702f01, (q31_t)0x82c29906, - (q31_t)0x1a6a0929, (q31_t)0x82c14cf1, (q31_t)0x1a63e341, (q31_t)0x82c00129, (q31_t)0x1a5dbd49, (q31_t)0x82beb5af, - (q31_t)0x1a579741, (q31_t)0x82bd6a82, - (q31_t)0x1a517128, (q31_t)0x82bc1fa2, (q31_t)0x1a4b4aff, (q31_t)0x82bad50f, (q31_t)0x1a4524c6, (q31_t)0x82b98aca, - (q31_t)0x1a3efe7c, (q31_t)0x82b840d2, - (q31_t)0x1a38d823, (q31_t)0x82b6f727, (q31_t)0x1a32b1b9, (q31_t)0x82b5adca, (q31_t)0x1a2c8b3f, (q31_t)0x82b464ba, - (q31_t)0x1a2664b5, (q31_t)0x82b31bf7, - (q31_t)0x1a203e1b, (q31_t)0x82b1d381, (q31_t)0x1a1a1771, (q31_t)0x82b08b59, (q31_t)0x1a13f0b6, (q31_t)0x82af437e, - (q31_t)0x1a0dc9ec, (q31_t)0x82adfbf0, - (q31_t)0x1a07a311, (q31_t)0x82acb4b0, (q31_t)0x1a017c27, (q31_t)0x82ab6dbd, (q31_t)0x19fb552c, (q31_t)0x82aa2717, - (q31_t)0x19f52e22, (q31_t)0x82a8e0bf, - (q31_t)0x19ef0707, (q31_t)0x82a79ab3, (q31_t)0x19e8dfdc, (q31_t)0x82a654f6, (q31_t)0x19e2b8a2, (q31_t)0x82a50f85, - (q31_t)0x19dc9157, (q31_t)0x82a3ca62, - (q31_t)0x19d669fc, (q31_t)0x82a2858c, (q31_t)0x19d04292, (q31_t)0x82a14104, (q31_t)0x19ca1b17, (q31_t)0x829ffcc8, - (q31_t)0x19c3f38d, (q31_t)0x829eb8db, - (q31_t)0x19bdcbf3, (q31_t)0x829d753a, (q31_t)0x19b7a449, (q31_t)0x829c31e7, (q31_t)0x19b17c8f, (q31_t)0x829aeee1, - (q31_t)0x19ab54c5, (q31_t)0x8299ac29, - (q31_t)0x19a52ceb, (q31_t)0x829869be, (q31_t)0x199f0502, (q31_t)0x829727a0, (q31_t)0x1998dd09, (q31_t)0x8295e5cf, - (q31_t)0x1992b4ff, (q31_t)0x8294a44c, - (q31_t)0x198c8ce7, (q31_t)0x82936317, (q31_t)0x198664be, (q31_t)0x8292222e, (q31_t)0x19803c86, (q31_t)0x8290e194, - (q31_t)0x197a143e, (q31_t)0x828fa146, - (q31_t)0x1973ebe6, (q31_t)0x828e6146, (q31_t)0x196dc37e, (q31_t)0x828d2193, (q31_t)0x19679b07, (q31_t)0x828be22e, - (q31_t)0x19617280, (q31_t)0x828aa316, - (q31_t)0x195b49ea, (q31_t)0x8289644b, (q31_t)0x19552144, (q31_t)0x828825ce, (q31_t)0x194ef88e, (q31_t)0x8286e79e, - (q31_t)0x1948cfc8, (q31_t)0x8285a9bb, - (q31_t)0x1942a6f3, (q31_t)0x82846c26, (q31_t)0x193c7e0f, (q31_t)0x82832edf, (q31_t)0x1936551b, (q31_t)0x8281f1e4, - (q31_t)0x19302c17, (q31_t)0x8280b538, - (q31_t)0x192a0304, (q31_t)0x827f78d8, (q31_t)0x1923d9e1, (q31_t)0x827e3cc6, (q31_t)0x191db0af, (q31_t)0x827d0102, - (q31_t)0x1917876d, (q31_t)0x827bc58a, - (q31_t)0x19115e1c, (q31_t)0x827a8a61, (q31_t)0x190b34bb, (q31_t)0x82794f84, (q31_t)0x19050b4b, (q31_t)0x827814f6, - (q31_t)0x18fee1cb, (q31_t)0x8276dab4, - (q31_t)0x18f8b83c, (q31_t)0x8275a0c0, (q31_t)0x18f28e9e, (q31_t)0x8274671a, (q31_t)0x18ec64f0, (q31_t)0x82732dc0, - (q31_t)0x18e63b33, (q31_t)0x8271f4b5, - (q31_t)0x18e01167, (q31_t)0x8270bbf7, (q31_t)0x18d9e78b, (q31_t)0x826f8386, (q31_t)0x18d3bda0, (q31_t)0x826e4b62, - (q31_t)0x18cd93a5, (q31_t)0x826d138d, - (q31_t)0x18c7699b, (q31_t)0x826bdc04, (q31_t)0x18c13f82, (q31_t)0x826aa4c9, (q31_t)0x18bb155a, (q31_t)0x82696ddc, - (q31_t)0x18b4eb22, (q31_t)0x8268373c, - (q31_t)0x18aec0db, (q31_t)0x826700e9, (q31_t)0x18a89685, (q31_t)0x8265cae4, (q31_t)0x18a26c20, (q31_t)0x8264952d, - (q31_t)0x189c41ab, (q31_t)0x82635fc2, - (q31_t)0x18961728, (q31_t)0x82622aa6, (q31_t)0x188fec95, (q31_t)0x8260f5d7, (q31_t)0x1889c1f3, (q31_t)0x825fc155, - (q31_t)0x18839742, (q31_t)0x825e8d21, - (q31_t)0x187d6c82, (q31_t)0x825d593a, (q31_t)0x187741b2, (q31_t)0x825c25a1, (q31_t)0x187116d4, (q31_t)0x825af255, - (q31_t)0x186aebe6, (q31_t)0x8259bf57, - (q31_t)0x1864c0ea, (q31_t)0x82588ca7, (q31_t)0x185e95de, (q31_t)0x82575a44, (q31_t)0x18586ac3, (q31_t)0x8256282e, - (q31_t)0x18523f9a, (q31_t)0x8254f666, - (q31_t)0x184c1461, (q31_t)0x8253c4eb, (q31_t)0x1845e919, (q31_t)0x825293be, (q31_t)0x183fbdc3, (q31_t)0x825162df, - (q31_t)0x1839925d, (q31_t)0x8250324d, - (q31_t)0x183366e9, (q31_t)0x824f0208, (q31_t)0x182d3b65, (q31_t)0x824dd211, (q31_t)0x18270fd3, (q31_t)0x824ca268, - (q31_t)0x1820e431, (q31_t)0x824b730c, - (q31_t)0x181ab881, (q31_t)0x824a43fe, (q31_t)0x18148cc2, (q31_t)0x8249153d, (q31_t)0x180e60f4, (q31_t)0x8247e6ca, - (q31_t)0x18083518, (q31_t)0x8246b8a4, - (q31_t)0x1802092c, (q31_t)0x82458acc, (q31_t)0x17fbdd32, (q31_t)0x82445d41, (q31_t)0x17f5b129, (q31_t)0x82433004, - (q31_t)0x17ef8511, (q31_t)0x82420315, - (q31_t)0x17e958ea, (q31_t)0x8240d673, (q31_t)0x17e32cb5, (q31_t)0x823faa1e, (q31_t)0x17dd0070, (q31_t)0x823e7e18, - (q31_t)0x17d6d41d, (q31_t)0x823d525e, - (q31_t)0x17d0a7bc, (q31_t)0x823c26f3, (q31_t)0x17ca7b4c, (q31_t)0x823afbd5, (q31_t)0x17c44ecd, (q31_t)0x8239d104, - (q31_t)0x17be223f, (q31_t)0x8238a681, - (q31_t)0x17b7f5a3, (q31_t)0x82377c4c, (q31_t)0x17b1c8f8, (q31_t)0x82365264, (q31_t)0x17ab9c3e, (q31_t)0x823528ca, - (q31_t)0x17a56f76, (q31_t)0x8233ff7e, - (q31_t)0x179f429f, (q31_t)0x8232d67f, (q31_t)0x179915ba, (q31_t)0x8231adce, (q31_t)0x1792e8c6, (q31_t)0x8230856a, - (q31_t)0x178cbbc4, (q31_t)0x822f5d54, - (q31_t)0x17868eb3, (q31_t)0x822e358b, (q31_t)0x17806194, (q31_t)0x822d0e10, (q31_t)0x177a3466, (q31_t)0x822be6e3, - (q31_t)0x17740729, (q31_t)0x822ac004, - (q31_t)0x176dd9de, (q31_t)0x82299971, (q31_t)0x1767ac85, (q31_t)0x8228732d, (q31_t)0x17617f1d, (q31_t)0x82274d36, - (q31_t)0x175b51a7, (q31_t)0x8226278d, - (q31_t)0x17552422, (q31_t)0x82250232, (q31_t)0x174ef68f, (q31_t)0x8223dd24, (q31_t)0x1748c8ee, (q31_t)0x8222b863, - (q31_t)0x17429b3e, (q31_t)0x822193f1, - (q31_t)0x173c6d80, (q31_t)0x82206fcc, (q31_t)0x17363fb4, (q31_t)0x821f4bf5, (q31_t)0x173011d9, (q31_t)0x821e286b, - (q31_t)0x1729e3f0, (q31_t)0x821d052f, - (q31_t)0x1723b5f9, (q31_t)0x821be240, (q31_t)0x171d87f3, (q31_t)0x821abfa0, (q31_t)0x171759df, (q31_t)0x82199d4d, - (q31_t)0x17112bbd, (q31_t)0x82187b47, - (q31_t)0x170afd8d, (q31_t)0x82175990, (q31_t)0x1704cf4f, (q31_t)0x82163826, (q31_t)0x16fea102, (q31_t)0x82151709, - (q31_t)0x16f872a7, (q31_t)0x8213f63a, - (q31_t)0x16f2443e, (q31_t)0x8212d5b9, (q31_t)0x16ec15c7, (q31_t)0x8211b586, (q31_t)0x16e5e741, (q31_t)0x821095a0, - (q31_t)0x16dfb8ae, (q31_t)0x820f7608, - (q31_t)0x16d98a0c, (q31_t)0x820e56be, (q31_t)0x16d35b5c, (q31_t)0x820d37c1, (q31_t)0x16cd2c9f, (q31_t)0x820c1912, - (q31_t)0x16c6fdd3, (q31_t)0x820afab1, - (q31_t)0x16c0cef9, (q31_t)0x8209dc9e, (q31_t)0x16baa011, (q31_t)0x8208bed8, (q31_t)0x16b4711b, (q31_t)0x8207a160, - (q31_t)0x16ae4217, (q31_t)0x82068435, - (q31_t)0x16a81305, (q31_t)0x82056758, (q31_t)0x16a1e3e5, (q31_t)0x82044ac9, (q31_t)0x169bb4b7, (q31_t)0x82032e88, - (q31_t)0x1695857b, (q31_t)0x82021294, - (q31_t)0x168f5632, (q31_t)0x8200f6ef, (q31_t)0x168926da, (q31_t)0x81ffdb96, (q31_t)0x1682f774, (q31_t)0x81fec08c, - (q31_t)0x167cc801, (q31_t)0x81fda5cf, - (q31_t)0x1676987f, (q31_t)0x81fc8b60, (q31_t)0x167068f0, (q31_t)0x81fb713f, (q31_t)0x166a3953, (q31_t)0x81fa576c, - (q31_t)0x166409a8, (q31_t)0x81f93de6, - (q31_t)0x165dd9f0, (q31_t)0x81f824ae, (q31_t)0x1657aa29, (q31_t)0x81f70bc3, (q31_t)0x16517a55, (q31_t)0x81f5f327, - (q31_t)0x164b4a73, (q31_t)0x81f4dad8, - (q31_t)0x16451a83, (q31_t)0x81f3c2d7, (q31_t)0x163eea86, (q31_t)0x81f2ab24, (q31_t)0x1638ba7a, (q31_t)0x81f193be, - (q31_t)0x16328a61, (q31_t)0x81f07ca6, - (q31_t)0x162c5a3b, (q31_t)0x81ef65dc, (q31_t)0x16262a06, (q31_t)0x81ee4f60, (q31_t)0x161ff9c4, (q31_t)0x81ed3932, - (q31_t)0x1619c975, (q31_t)0x81ec2351, - (q31_t)0x16139918, (q31_t)0x81eb0dbe, (q31_t)0x160d68ad, (q31_t)0x81e9f879, (q31_t)0x16073834, (q31_t)0x81e8e381, - (q31_t)0x160107ae, (q31_t)0x81e7ced8, - (q31_t)0x15fad71b, (q31_t)0x81e6ba7c, (q31_t)0x15f4a679, (q31_t)0x81e5a66e, (q31_t)0x15ee75cb, (q31_t)0x81e492ad, - (q31_t)0x15e8450e, (q31_t)0x81e37f3b, - (q31_t)0x15e21445, (q31_t)0x81e26c16, (q31_t)0x15dbe36d, (q31_t)0x81e1593f, (q31_t)0x15d5b288, (q31_t)0x81e046b6, - (q31_t)0x15cf8196, (q31_t)0x81df347b, - (q31_t)0x15c95097, (q31_t)0x81de228d, (q31_t)0x15c31f89, (q31_t)0x81dd10ee, (q31_t)0x15bcee6f, (q31_t)0x81dbff9c, - (q31_t)0x15b6bd47, (q31_t)0x81daee98, - (q31_t)0x15b08c12, (q31_t)0x81d9dde1, (q31_t)0x15aa5acf, (q31_t)0x81d8cd79, (q31_t)0x15a4297f, (q31_t)0x81d7bd5e, - (q31_t)0x159df821, (q31_t)0x81d6ad92, - (q31_t)0x1597c6b7, (q31_t)0x81d59e13, (q31_t)0x1591953e, (q31_t)0x81d48ee1, (q31_t)0x158b63b9, (q31_t)0x81d37ffe, - (q31_t)0x15853226, (q31_t)0x81d27169, - (q31_t)0x157f0086, (q31_t)0x81d16321, (q31_t)0x1578ced9, (q31_t)0x81d05527, (q31_t)0x15729d1f, (q31_t)0x81cf477b, - (q31_t)0x156c6b57, (q31_t)0x81ce3a1d, - (q31_t)0x15663982, (q31_t)0x81cd2d0c, (q31_t)0x156007a0, (q31_t)0x81cc204a, (q31_t)0x1559d5b1, (q31_t)0x81cb13d5, - (q31_t)0x1553a3b4, (q31_t)0x81ca07af, - (q31_t)0x154d71aa, (q31_t)0x81c8fbd6, (q31_t)0x15473f94, (q31_t)0x81c7f04b, (q31_t)0x15410d70, (q31_t)0x81c6e50d, - (q31_t)0x153adb3f, (q31_t)0x81c5da1e, - (q31_t)0x1534a901, (q31_t)0x81c4cf7d, (q31_t)0x152e76b5, (q31_t)0x81c3c529, (q31_t)0x1528445d, (q31_t)0x81c2bb23, - (q31_t)0x152211f8, (q31_t)0x81c1b16b, - (q31_t)0x151bdf86, (q31_t)0x81c0a801, (q31_t)0x1515ad06, (q31_t)0x81bf9ee5, (q31_t)0x150f7a7a, (q31_t)0x81be9617, - (q31_t)0x150947e1, (q31_t)0x81bd8d97, - (q31_t)0x1503153a, (q31_t)0x81bc8564, (q31_t)0x14fce287, (q31_t)0x81bb7d7f, (q31_t)0x14f6afc7, (q31_t)0x81ba75e9, - (q31_t)0x14f07cf9, (q31_t)0x81b96ea0, - (q31_t)0x14ea4a1f, (q31_t)0x81b867a5, (q31_t)0x14e41738, (q31_t)0x81b760f8, (q31_t)0x14dde445, (q31_t)0x81b65a99, - (q31_t)0x14d7b144, (q31_t)0x81b55488, - (q31_t)0x14d17e36, (q31_t)0x81b44ec4, (q31_t)0x14cb4b1c, (q31_t)0x81b3494f, (q31_t)0x14c517f4, (q31_t)0x81b24427, - (q31_t)0x14bee4c0, (q31_t)0x81b13f4e, - (q31_t)0x14b8b17f, (q31_t)0x81b03ac2, (q31_t)0x14b27e32, (q31_t)0x81af3684, (q31_t)0x14ac4ad7, (q31_t)0x81ae3294, - (q31_t)0x14a61770, (q31_t)0x81ad2ef2, - (q31_t)0x149fe3fc, (q31_t)0x81ac2b9e, (q31_t)0x1499b07c, (q31_t)0x81ab2898, (q31_t)0x14937cee, (q31_t)0x81aa25e0, - (q31_t)0x148d4954, (q31_t)0x81a92376, - (q31_t)0x148715ae, (q31_t)0x81a82159, (q31_t)0x1480e1fa, (q31_t)0x81a71f8b, (q31_t)0x147aae3a, (q31_t)0x81a61e0b, - (q31_t)0x14747a6d, (q31_t)0x81a51cd8, - (q31_t)0x146e4694, (q31_t)0x81a41bf4, (q31_t)0x146812ae, (q31_t)0x81a31b5d, (q31_t)0x1461debc, (q31_t)0x81a21b14, - (q31_t)0x145baabd, (q31_t)0x81a11b1a, - (q31_t)0x145576b1, (q31_t)0x81a01b6d, (q31_t)0x144f4299, (q31_t)0x819f1c0e, (q31_t)0x14490e74, (q31_t)0x819e1cfd, - (q31_t)0x1442da43, (q31_t)0x819d1e3a, - (q31_t)0x143ca605, (q31_t)0x819c1fc5, (q31_t)0x143671bb, (q31_t)0x819b219e, (q31_t)0x14303d65, (q31_t)0x819a23c5, - (q31_t)0x142a0902, (q31_t)0x8199263a, - (q31_t)0x1423d492, (q31_t)0x819828fd, (q31_t)0x141da016, (q31_t)0x81972c0e, (q31_t)0x14176b8e, (q31_t)0x81962f6d, - (q31_t)0x141136f9, (q31_t)0x8195331a, - (q31_t)0x140b0258, (q31_t)0x81943715, (q31_t)0x1404cdaa, (q31_t)0x81933b5e, (q31_t)0x13fe98f1, (q31_t)0x81923ff4, - (q31_t)0x13f8642a, (q31_t)0x819144d9, - (q31_t)0x13f22f58, (q31_t)0x81904a0c, (q31_t)0x13ebfa79, (q31_t)0x818f4f8d, (q31_t)0x13e5c58e, (q31_t)0x818e555c, - (q31_t)0x13df9097, (q31_t)0x818d5b78, - (q31_t)0x13d95b93, (q31_t)0x818c61e3, (q31_t)0x13d32683, (q31_t)0x818b689c, (q31_t)0x13ccf167, (q31_t)0x818a6fa3, - (q31_t)0x13c6bc3f, (q31_t)0x818976f8, - (q31_t)0x13c0870a, (q31_t)0x81887e9a, (q31_t)0x13ba51ca, (q31_t)0x8187868b, (q31_t)0x13b41c7d, (q31_t)0x81868eca, - (q31_t)0x13ade724, (q31_t)0x81859757, - (q31_t)0x13a7b1bf, (q31_t)0x8184a032, (q31_t)0x13a17c4d, (q31_t)0x8183a95b, (q31_t)0x139b46d0, (q31_t)0x8182b2d1, - (q31_t)0x13951146, (q31_t)0x8181bc96, - (q31_t)0x138edbb1, (q31_t)0x8180c6a9, (q31_t)0x1388a60f, (q31_t)0x817fd10a, (q31_t)0x13827062, (q31_t)0x817edbb9, - (q31_t)0x137c3aa8, (q31_t)0x817de6b6, - (q31_t)0x137604e2, (q31_t)0x817cf201, (q31_t)0x136fcf10, (q31_t)0x817bfd9b, (q31_t)0x13699933, (q31_t)0x817b0982, - (q31_t)0x13636349, (q31_t)0x817a15b7, - (q31_t)0x135d2d53, (q31_t)0x8179223a, (q31_t)0x1356f752, (q31_t)0x81782f0b, (q31_t)0x1350c144, (q31_t)0x81773c2b, - (q31_t)0x134a8b2b, (q31_t)0x81764998, - (q31_t)0x13445505, (q31_t)0x81755754, (q31_t)0x133e1ed4, (q31_t)0x8174655d, (q31_t)0x1337e897, (q31_t)0x817373b5, - (q31_t)0x1331b24e, (q31_t)0x8172825a, - (q31_t)0x132b7bf9, (q31_t)0x8171914e, (q31_t)0x13254599, (q31_t)0x8170a090, (q31_t)0x131f0f2c, (q31_t)0x816fb020, - (q31_t)0x1318d8b4, (q31_t)0x816ebffe, - (q31_t)0x1312a230, (q31_t)0x816dd02a, (q31_t)0x130c6ba0, (q31_t)0x816ce0a4, (q31_t)0x13063505, (q31_t)0x816bf16c, - (q31_t)0x12fffe5d, (q31_t)0x816b0282, - (q31_t)0x12f9c7aa, (q31_t)0x816a13e6, (q31_t)0x12f390ec, (q31_t)0x81692599, (q31_t)0x12ed5a21, (q31_t)0x81683799, - (q31_t)0x12e7234b, (q31_t)0x816749e8, - (q31_t)0x12e0ec6a, (q31_t)0x81665c84, (q31_t)0x12dab57c, (q31_t)0x81656f6f, (q31_t)0x12d47e83, (q31_t)0x816482a8, - (q31_t)0x12ce477f, (q31_t)0x8163962f, - (q31_t)0x12c8106f, (q31_t)0x8162aa04, (q31_t)0x12c1d953, (q31_t)0x8161be27, (q31_t)0x12bba22b, (q31_t)0x8160d298, - (q31_t)0x12b56af9, (q31_t)0x815fe758, - (q31_t)0x12af33ba, (q31_t)0x815efc65, (q31_t)0x12a8fc70, (q31_t)0x815e11c1, (q31_t)0x12a2c51b, (q31_t)0x815d276a, - (q31_t)0x129c8dba, (q31_t)0x815c3d62, - (q31_t)0x1296564d, (q31_t)0x815b53a8, (q31_t)0x12901ed5, (q31_t)0x815a6a3c, (q31_t)0x1289e752, (q31_t)0x8159811e, - (q31_t)0x1283afc3, (q31_t)0x8158984e, - (q31_t)0x127d7829, (q31_t)0x8157afcd, (q31_t)0x12774083, (q31_t)0x8156c799, (q31_t)0x127108d2, (q31_t)0x8155dfb4, - (q31_t)0x126ad116, (q31_t)0x8154f81d, - (q31_t)0x1264994e, (q31_t)0x815410d4, (q31_t)0x125e617b, (q31_t)0x815329d9, (q31_t)0x1258299c, (q31_t)0x8152432c, - (q31_t)0x1251f1b3, (q31_t)0x81515ccd, - (q31_t)0x124bb9be, (q31_t)0x815076bd, (q31_t)0x124581bd, (q31_t)0x814f90fb, (q31_t)0x123f49b2, (q31_t)0x814eab86, - (q31_t)0x1239119b, (q31_t)0x814dc660, - (q31_t)0x1232d979, (q31_t)0x814ce188, (q31_t)0x122ca14b, (q31_t)0x814bfcff, (q31_t)0x12266913, (q31_t)0x814b18c3, - (q31_t)0x122030cf, (q31_t)0x814a34d6, - (q31_t)0x1219f880, (q31_t)0x81495136, (q31_t)0x1213c026, (q31_t)0x81486de5, (q31_t)0x120d87c1, (q31_t)0x81478ae2, - (q31_t)0x12074f50, (q31_t)0x8146a82e, - (q31_t)0x120116d5, (q31_t)0x8145c5c7, (q31_t)0x11fade4e, (q31_t)0x8144e3ae, (q31_t)0x11f4a5bd, (q31_t)0x814401e4, - (q31_t)0x11ee6d20, (q31_t)0x81432068, - (q31_t)0x11e83478, (q31_t)0x81423f3a, (q31_t)0x11e1fbc5, (q31_t)0x81415e5a, (q31_t)0x11dbc307, (q31_t)0x81407dc9, - (q31_t)0x11d58a3e, (q31_t)0x813f9d86, - (q31_t)0x11cf516a, (q31_t)0x813ebd90, (q31_t)0x11c9188b, (q31_t)0x813ddde9, (q31_t)0x11c2dfa2, (q31_t)0x813cfe91, - (q31_t)0x11bca6ad, (q31_t)0x813c1f86, - (q31_t)0x11b66dad, (q31_t)0x813b40ca, (q31_t)0x11b034a2, (q31_t)0x813a625b, (q31_t)0x11a9fb8d, (q31_t)0x8139843b, - (q31_t)0x11a3c26c, (q31_t)0x8138a66a, - (q31_t)0x119d8941, (q31_t)0x8137c8e6, (q31_t)0x1197500a, (q31_t)0x8136ebb1, (q31_t)0x119116c9, (q31_t)0x81360ec9, - (q31_t)0x118add7d, (q31_t)0x81353230, - (q31_t)0x1184a427, (q31_t)0x813455e6, (q31_t)0x117e6ac5, (q31_t)0x813379e9, (q31_t)0x11783159, (q31_t)0x81329e3b, - (q31_t)0x1171f7e2, (q31_t)0x8131c2db, - (q31_t)0x116bbe60, (q31_t)0x8130e7c9, (q31_t)0x116584d3, (q31_t)0x81300d05, (q31_t)0x115f4b3c, (q31_t)0x812f3290, - (q31_t)0x1159119a, (q31_t)0x812e5868, - (q31_t)0x1152d7ed, (q31_t)0x812d7e8f, (q31_t)0x114c9e35, (q31_t)0x812ca505, (q31_t)0x11466473, (q31_t)0x812bcbc8, - (q31_t)0x11402aa6, (q31_t)0x812af2da, - (q31_t)0x1139f0cf, (q31_t)0x812a1a3a, (q31_t)0x1133b6ed, (q31_t)0x812941e8, (q31_t)0x112d7d00, (q31_t)0x812869e4, - (q31_t)0x11274309, (q31_t)0x8127922f, - (q31_t)0x11210907, (q31_t)0x8126bac8, (q31_t)0x111acefb, (q31_t)0x8125e3af, (q31_t)0x111494e4, (q31_t)0x81250ce4, - (q31_t)0x110e5ac2, (q31_t)0x81243668, - (q31_t)0x11082096, (q31_t)0x8123603a, (q31_t)0x1101e65f, (q31_t)0x81228a5a, (q31_t)0x10fbac1e, (q31_t)0x8121b4c8, - (q31_t)0x10f571d3, (q31_t)0x8120df85, - (q31_t)0x10ef377d, (q31_t)0x81200a90, (q31_t)0x10e8fd1c, (q31_t)0x811f35e9, (q31_t)0x10e2c2b2, (q31_t)0x811e6191, - (q31_t)0x10dc883c, (q31_t)0x811d8d86, - (q31_t)0x10d64dbd, (q31_t)0x811cb9ca, (q31_t)0x10d01333, (q31_t)0x811be65d, (q31_t)0x10c9d89e, (q31_t)0x811b133d, - (q31_t)0x10c39dff, (q31_t)0x811a406c, - (q31_t)0x10bd6356, (q31_t)0x81196de9, (q31_t)0x10b728a3, (q31_t)0x81189bb4, (q31_t)0x10b0ede5, (q31_t)0x8117c9ce, - (q31_t)0x10aab31d, (q31_t)0x8116f836, - (q31_t)0x10a4784b, (q31_t)0x811626ec, (q31_t)0x109e3d6e, (q31_t)0x811555f1, (q31_t)0x10980287, (q31_t)0x81148544, - (q31_t)0x1091c796, (q31_t)0x8113b4e5, - (q31_t)0x108b8c9b, (q31_t)0x8112e4d4, (q31_t)0x10855195, (q31_t)0x81121512, (q31_t)0x107f1686, (q31_t)0x8111459e, - (q31_t)0x1078db6c, (q31_t)0x81107678, - (q31_t)0x1072a048, (q31_t)0x810fa7a0, (q31_t)0x106c651a, (q31_t)0x810ed917, (q31_t)0x106629e1, (q31_t)0x810e0adc, - (q31_t)0x105fee9f, (q31_t)0x810d3cf0, - (q31_t)0x1059b352, (q31_t)0x810c6f52, (q31_t)0x105377fc, (q31_t)0x810ba202, (q31_t)0x104d3c9b, (q31_t)0x810ad500, - (q31_t)0x10470130, (q31_t)0x810a084d, - (q31_t)0x1040c5bb, (q31_t)0x81093be8, (q31_t)0x103a8a3d, (q31_t)0x81086fd1, (q31_t)0x10344eb4, (q31_t)0x8107a409, - (q31_t)0x102e1321, (q31_t)0x8106d88f, - (q31_t)0x1027d784, (q31_t)0x81060d63, (q31_t)0x10219bdd, (q31_t)0x81054286, (q31_t)0x101b602d, (q31_t)0x810477f7, - (q31_t)0x10152472, (q31_t)0x8103adb6, - (q31_t)0x100ee8ad, (q31_t)0x8102e3c4, (q31_t)0x1008acdf, (q31_t)0x81021a20, (q31_t)0x10027107, (q31_t)0x810150ca, - (q31_t)0xffc3524, (q31_t)0x810087c3, - (q31_t)0xff5f938, (q31_t)0x80ffbf0a, (q31_t)0xfefbd42, (q31_t)0x80fef69f, (q31_t)0xfe98143, (q31_t)0x80fe2e83, - (q31_t)0xfe34539, (q31_t)0x80fd66b5, - (q31_t)0xfdd0926, (q31_t)0x80fc9f35, (q31_t)0xfd6cd08, (q31_t)0x80fbd804, (q31_t)0xfd090e1, (q31_t)0x80fb1121, - (q31_t)0xfca54b1, (q31_t)0x80fa4a8c, - (q31_t)0xfc41876, (q31_t)0x80f98446, (q31_t)0xfbddc32, (q31_t)0x80f8be4e, (q31_t)0xfb79fe4, (q31_t)0x80f7f8a4, - (q31_t)0xfb1638d, (q31_t)0x80f73349, - (q31_t)0xfab272b, (q31_t)0x80f66e3c, (q31_t)0xfa4eac0, (q31_t)0x80f5a97e, (q31_t)0xf9eae4c, (q31_t)0x80f4e50e, - (q31_t)0xf9871ce, (q31_t)0x80f420ec, - (q31_t)0xf923546, (q31_t)0x80f35d19, (q31_t)0xf8bf8b4, (q31_t)0x80f29994, (q31_t)0xf85bc19, (q31_t)0x80f1d65d, - (q31_t)0xf7f7f75, (q31_t)0x80f11375, - (q31_t)0xf7942c7, (q31_t)0x80f050db, (q31_t)0xf73060f, (q31_t)0x80ef8e90, (q31_t)0xf6cc94e, (q31_t)0x80eecc93, - (q31_t)0xf668c83, (q31_t)0x80ee0ae4, - (q31_t)0xf604faf, (q31_t)0x80ed4984, (q31_t)0xf5a12d1, (q31_t)0x80ec8872, (q31_t)0xf53d5ea, (q31_t)0x80ebc7ae, - (q31_t)0xf4d98f9, (q31_t)0x80eb0739, - (q31_t)0xf475bff, (q31_t)0x80ea4712, (q31_t)0xf411efb, (q31_t)0x80e9873a, (q31_t)0xf3ae1ee, (q31_t)0x80e8c7b0, - (q31_t)0xf34a4d8, (q31_t)0x80e80874, - (q31_t)0xf2e67b8, (q31_t)0x80e74987, (q31_t)0xf282a8f, (q31_t)0x80e68ae8, (q31_t)0xf21ed5d, (q31_t)0x80e5cc98, - (q31_t)0xf1bb021, (q31_t)0x80e50e96, - (q31_t)0xf1572dc, (q31_t)0x80e450e2, (q31_t)0xf0f358e, (q31_t)0x80e3937d, (q31_t)0xf08f836, (q31_t)0x80e2d666, - (q31_t)0xf02bad5, (q31_t)0x80e2199e, - (q31_t)0xefc7d6b, (q31_t)0x80e15d24, (q31_t)0xef63ff7, (q31_t)0x80e0a0f8, (q31_t)0xef0027b, (q31_t)0x80dfe51b, - (q31_t)0xee9c4f5, (q31_t)0x80df298c, - (q31_t)0xee38766, (q31_t)0x80de6e4c, (q31_t)0xedd49ce, (q31_t)0x80ddb35a, (q31_t)0xed70c2c, (q31_t)0x80dcf8b7, - (q31_t)0xed0ce82, (q31_t)0x80dc3e62, - (q31_t)0xeca90ce, (q31_t)0x80db845b, (q31_t)0xec45311, (q31_t)0x80dacaa3, (q31_t)0xebe154b, (q31_t)0x80da1139, - (q31_t)0xeb7d77c, (q31_t)0x80d9581e, - (q31_t)0xeb199a4, (q31_t)0x80d89f51, (q31_t)0xeab5bc3, (q31_t)0x80d7e6d3, (q31_t)0xea51dd8, (q31_t)0x80d72ea3, - (q31_t)0xe9edfe5, (q31_t)0x80d676c1, - (q31_t)0xe98a1e9, (q31_t)0x80d5bf2e, (q31_t)0xe9263e3, (q31_t)0x80d507e9, (q31_t)0xe8c25d5, (q31_t)0x80d450f3, - (q31_t)0xe85e7be, (q31_t)0x80d39a4b, - (q31_t)0xe7fa99e, (q31_t)0x80d2e3f2, (q31_t)0xe796b74, (q31_t)0x80d22de7, (q31_t)0xe732d42, (q31_t)0x80d1782a, - (q31_t)0xe6cef07, (q31_t)0x80d0c2bc, - (q31_t)0xe66b0c3, (q31_t)0x80d00d9d, (q31_t)0xe607277, (q31_t)0x80cf58cc, (q31_t)0xe5a3421, (q31_t)0x80cea449, - (q31_t)0xe53f5c2, (q31_t)0x80cdf015, - (q31_t)0xe4db75b, (q31_t)0x80cd3c2f, (q31_t)0xe4778eb, (q31_t)0x80cc8898, (q31_t)0xe413a72, (q31_t)0x80cbd54f, - (q31_t)0xe3afbf0, (q31_t)0x80cb2255, - (q31_t)0xe34bd66, (q31_t)0x80ca6fa9, (q31_t)0xe2e7ed2, (q31_t)0x80c9bd4c, (q31_t)0xe284036, (q31_t)0x80c90b3d, - (q31_t)0xe220191, (q31_t)0x80c8597c, - (q31_t)0xe1bc2e4, (q31_t)0x80c7a80a, (q31_t)0xe15842e, (q31_t)0x80c6f6e7, (q31_t)0xe0f456f, (q31_t)0x80c64612, - (q31_t)0xe0906a7, (q31_t)0x80c5958b, - (q31_t)0xe02c7d7, (q31_t)0x80c4e553, (q31_t)0xdfc88fe, (q31_t)0x80c4356a, (q31_t)0xdf64a1c, (q31_t)0x80c385cf, - (q31_t)0xdf00b32, (q31_t)0x80c2d682, - (q31_t)0xde9cc40, (q31_t)0x80c22784, (q31_t)0xde38d44, (q31_t)0x80c178d4, (q31_t)0xddd4e40, (q31_t)0x80c0ca73, - (q31_t)0xdd70f34, (q31_t)0x80c01c60, - (q31_t)0xdd0d01f, (q31_t)0x80bf6e9c, (q31_t)0xdca9102, (q31_t)0x80bec127, (q31_t)0xdc451dc, (q31_t)0x80be13ff, - (q31_t)0xdbe12ad, (q31_t)0x80bd6727, - (q31_t)0xdb7d376, (q31_t)0x80bcba9d, (q31_t)0xdb19437, (q31_t)0x80bc0e61, (q31_t)0xdab54ef, (q31_t)0x80bb6274, - (q31_t)0xda5159f, (q31_t)0x80bab6d5, - (q31_t)0xd9ed646, (q31_t)0x80ba0b85, (q31_t)0xd9896e5, (q31_t)0x80b96083, (q31_t)0xd92577b, (q31_t)0x80b8b5d0, - (q31_t)0xd8c1809, (q31_t)0x80b80b6c, - (q31_t)0xd85d88f, (q31_t)0x80b76156, (q31_t)0xd7f990c, (q31_t)0x80b6b78e, (q31_t)0xd795982, (q31_t)0x80b60e15, - (q31_t)0xd7319ee, (q31_t)0x80b564ea, - (q31_t)0xd6cda53, (q31_t)0x80b4bc0e, (q31_t)0xd669aaf, (q31_t)0x80b41381, (q31_t)0xd605b03, (q31_t)0x80b36b42, - (q31_t)0xd5a1b4f, (q31_t)0x80b2c351, - (q31_t)0xd53db92, (q31_t)0x80b21baf, (q31_t)0xd4d9bcd, (q31_t)0x80b1745c, (q31_t)0xd475c00, (q31_t)0x80b0cd57, - (q31_t)0xd411c2b, (q31_t)0x80b026a1, - (q31_t)0xd3adc4e, (q31_t)0x80af8039, (q31_t)0xd349c68, (q31_t)0x80aeda20, (q31_t)0xd2e5c7b, (q31_t)0x80ae3455, - (q31_t)0xd281c85, (q31_t)0x80ad8ed9, - (q31_t)0xd21dc87, (q31_t)0x80ace9ab, (q31_t)0xd1b9c81, (q31_t)0x80ac44cc, (q31_t)0xd155c73, (q31_t)0x80aba03b, - (q31_t)0xd0f1c5d, (q31_t)0x80aafbf9, - (q31_t)0xd08dc3f, (q31_t)0x80aa5806, (q31_t)0xd029c18, (q31_t)0x80a9b461, (q31_t)0xcfc5bea, (q31_t)0x80a9110b, - (q31_t)0xcf61bb4, (q31_t)0x80a86e03, - (q31_t)0xcefdb76, (q31_t)0x80a7cb49, (q31_t)0xce99b2f, (q31_t)0x80a728df, (q31_t)0xce35ae1, (q31_t)0x80a686c2, - (q31_t)0xcdd1a8b, (q31_t)0x80a5e4f5, - (q31_t)0xcd6da2d, (q31_t)0x80a54376, (q31_t)0xcd099c7, (q31_t)0x80a4a245, (q31_t)0xcca5959, (q31_t)0x80a40163, - (q31_t)0xcc418e3, (q31_t)0x80a360d0, - (q31_t)0xcbdd865, (q31_t)0x80a2c08b, (q31_t)0xcb797e0, (q31_t)0x80a22095, (q31_t)0xcb15752, (q31_t)0x80a180ed, - (q31_t)0xcab16bd, (q31_t)0x80a0e194, - (q31_t)0xca4d620, (q31_t)0x80a04289, (q31_t)0xc9e957b, (q31_t)0x809fa3cd, (q31_t)0xc9854cf, (q31_t)0x809f0560, - (q31_t)0xc92141a, (q31_t)0x809e6741, - (q31_t)0xc8bd35e, (q31_t)0x809dc971, (q31_t)0xc85929a, (q31_t)0x809d2bef, (q31_t)0xc7f51cf, (q31_t)0x809c8ebc, - (q31_t)0xc7910fb, (q31_t)0x809bf1d7, - (q31_t)0xc72d020, (q31_t)0x809b5541, (q31_t)0xc6c8f3e, (q31_t)0x809ab8fa, (q31_t)0xc664e53, (q31_t)0x809a1d01, - (q31_t)0xc600d61, (q31_t)0x80998157, - (q31_t)0xc59cc68, (q31_t)0x8098e5fb, (q31_t)0xc538b66, (q31_t)0x80984aee, (q31_t)0xc4d4a5d, (q31_t)0x8097b030, - (q31_t)0xc47094d, (q31_t)0x809715c0, - (q31_t)0xc40c835, (q31_t)0x80967b9f, (q31_t)0xc3a8715, (q31_t)0x8095e1cc, (q31_t)0xc3445ee, (q31_t)0x80954848, - (q31_t)0xc2e04c0, (q31_t)0x8094af13, - (q31_t)0xc27c389, (q31_t)0x8094162c, (q31_t)0xc21824c, (q31_t)0x80937d93, (q31_t)0xc1b4107, (q31_t)0x8092e54a, - (q31_t)0xc14ffba, (q31_t)0x80924d4f, - (q31_t)0xc0ebe66, (q31_t)0x8091b5a2, (q31_t)0xc087d0a, (q31_t)0x80911e44, (q31_t)0xc023ba7, (q31_t)0x80908735, - (q31_t)0xbfbfa3d, (q31_t)0x808ff074, - (q31_t)0xbf5b8cb, (q31_t)0x808f5a02, (q31_t)0xbef7752, (q31_t)0x808ec3df, (q31_t)0xbe935d2, (q31_t)0x808e2e0a, - (q31_t)0xbe2f44a, (q31_t)0x808d9884, - (q31_t)0xbdcb2bb, (q31_t)0x808d034c, (q31_t)0xbd67124, (q31_t)0x808c6e63, (q31_t)0xbd02f87, (q31_t)0x808bd9c9, - (q31_t)0xbc9ede2, (q31_t)0x808b457d, - (q31_t)0xbc3ac35, (q31_t)0x808ab180, (q31_t)0xbbd6a82, (q31_t)0x808a1dd2, (q31_t)0xbb728c7, (q31_t)0x80898a72, - (q31_t)0xbb0e705, (q31_t)0x8088f761, - (q31_t)0xbaaa53b, (q31_t)0x8088649e, (q31_t)0xba4636b, (q31_t)0x8087d22a, (q31_t)0xb9e2193, (q31_t)0x80874005, - (q31_t)0xb97dfb5, (q31_t)0x8086ae2e, - (q31_t)0xb919dcf, (q31_t)0x80861ca6, (q31_t)0xb8b5be1, (q31_t)0x80858b6c, (q31_t)0xb8519ed, (q31_t)0x8084fa82, - (q31_t)0xb7ed7f2, (q31_t)0x808469e5, - (q31_t)0xb7895f0, (q31_t)0x8083d998, (q31_t)0xb7253e6, (q31_t)0x80834999, (q31_t)0xb6c11d5, (q31_t)0x8082b9e9, - (q31_t)0xb65cfbe, (q31_t)0x80822a87, - (q31_t)0xb5f8d9f, (q31_t)0x80819b74, (q31_t)0xb594b7a, (q31_t)0x80810cb0, (q31_t)0xb53094d, (q31_t)0x80807e3a, - (q31_t)0xb4cc719, (q31_t)0x807ff013, - (q31_t)0xb4684df, (q31_t)0x807f623b, (q31_t)0xb40429d, (q31_t)0x807ed4b1, (q31_t)0xb3a0055, (q31_t)0x807e4776, - (q31_t)0xb33be05, (q31_t)0x807dba89, - (q31_t)0xb2d7baf, (q31_t)0x807d2dec, (q31_t)0xb273952, (q31_t)0x807ca19c, (q31_t)0xb20f6ee, (q31_t)0x807c159c, - (q31_t)0xb1ab483, (q31_t)0x807b89ea, - (q31_t)0xb147211, (q31_t)0x807afe87, (q31_t)0xb0e2f98, (q31_t)0x807a7373, (q31_t)0xb07ed19, (q31_t)0x8079e8ad, - (q31_t)0xb01aa92, (q31_t)0x80795e36, - (q31_t)0xafb6805, (q31_t)0x8078d40d, (q31_t)0xaf52571, (q31_t)0x80784a33, (q31_t)0xaeee2d7, (q31_t)0x8077c0a8, - (q31_t)0xae8a036, (q31_t)0x8077376c, - (q31_t)0xae25d8d, (q31_t)0x8076ae7e, (q31_t)0xadc1adf, (q31_t)0x807625df, (q31_t)0xad5d829, (q31_t)0x80759d8e, - (q31_t)0xacf956d, (q31_t)0x8075158c, - (q31_t)0xac952aa, (q31_t)0x80748dd9, (q31_t)0xac30fe1, (q31_t)0x80740675, (q31_t)0xabccd11, (q31_t)0x80737f5f, - (q31_t)0xab68a3a, (q31_t)0x8072f898, - (q31_t)0xab0475c, (q31_t)0x8072721f, (q31_t)0xaaa0478, (q31_t)0x8071ebf6, (q31_t)0xaa3c18e, (q31_t)0x8071661a, - (q31_t)0xa9d7e9d, (q31_t)0x8070e08e, - (q31_t)0xa973ba5, (q31_t)0x80705b50, (q31_t)0xa90f8a7, (q31_t)0x806fd661, (q31_t)0xa8ab5a2, (q31_t)0x806f51c1, - (q31_t)0xa847297, (q31_t)0x806ecd6f, - (q31_t)0xa7e2f85, (q31_t)0x806e496c, (q31_t)0xa77ec6d, (q31_t)0x806dc5b8, (q31_t)0xa71a94f, (q31_t)0x806d4253, - (q31_t)0xa6b662a, (q31_t)0x806cbf3c, - (q31_t)0xa6522fe, (q31_t)0x806c3c74, (q31_t)0xa5edfcc, (q31_t)0x806bb9fa, (q31_t)0xa589c94, (q31_t)0x806b37cf, - (q31_t)0xa525955, (q31_t)0x806ab5f3, - (q31_t)0xa4c1610, (q31_t)0x806a3466, (q31_t)0xa45d2c5, (q31_t)0x8069b327, (q31_t)0xa3f8f73, (q31_t)0x80693237, - (q31_t)0xa394c1b, (q31_t)0x8068b196, - (q31_t)0xa3308bd, (q31_t)0x80683143, (q31_t)0xa2cc558, (q31_t)0x8067b13f, (q31_t)0xa2681ed, (q31_t)0x8067318a, - (q31_t)0xa203e7c, (q31_t)0x8066b224, - (q31_t)0xa19fb04, (q31_t)0x8066330c, (q31_t)0xa13b787, (q31_t)0x8065b443, (q31_t)0xa0d7403, (q31_t)0x806535c9, - (q31_t)0xa073079, (q31_t)0x8064b79d, - (q31_t)0xa00ece8, (q31_t)0x806439c0, (q31_t)0x9faa952, (q31_t)0x8063bc32, (q31_t)0x9f465b5, (q31_t)0x80633ef3, - (q31_t)0x9ee2213, (q31_t)0x8062c202, - (q31_t)0x9e7de6a, (q31_t)0x80624560, (q31_t)0x9e19abb, (q31_t)0x8061c90c, (q31_t)0x9db5706, (q31_t)0x80614d08, - (q31_t)0x9d5134b, (q31_t)0x8060d152, - (q31_t)0x9cecf89, (q31_t)0x806055eb, (q31_t)0x9c88bc2, (q31_t)0x805fdad2, (q31_t)0x9c247f5, (q31_t)0x805f6009, - (q31_t)0x9bc0421, (q31_t)0x805ee58e, - (q31_t)0x9b5c048, (q31_t)0x805e6b62, (q31_t)0x9af7c69, (q31_t)0x805df184, (q31_t)0x9a93884, (q31_t)0x805d77f5, - (q31_t)0x9a2f498, (q31_t)0x805cfeb5, - (q31_t)0x99cb0a7, (q31_t)0x805c85c4, (q31_t)0x9966cb0, (q31_t)0x805c0d21, (q31_t)0x99028b3, (q31_t)0x805b94ce, - (q31_t)0x989e4b0, (q31_t)0x805b1cc8, - (q31_t)0x983a0a7, (q31_t)0x805aa512, (q31_t)0x97d5c99, (q31_t)0x805a2daa, (q31_t)0x9771884, (q31_t)0x8059b692, - (q31_t)0x970d46a, (q31_t)0x80593fc7, - (q31_t)0x96a9049, (q31_t)0x8058c94c, (q31_t)0x9644c23, (q31_t)0x8058531f, (q31_t)0x95e07f8, (q31_t)0x8057dd41, - (q31_t)0x957c3c6, (q31_t)0x805767b2, - (q31_t)0x9517f8f, (q31_t)0x8056f272, (q31_t)0x94b3b52, (q31_t)0x80567d80, (q31_t)0x944f70f, (q31_t)0x805608dd, - (q31_t)0x93eb2c6, (q31_t)0x80559489, - (q31_t)0x9386e78, (q31_t)0x80552084, (q31_t)0x9322a24, (q31_t)0x8054accd, (q31_t)0x92be5ca, (q31_t)0x80543965, - (q31_t)0x925a16b, (q31_t)0x8053c64c, - (q31_t)0x91f5d06, (q31_t)0x80535381, (q31_t)0x919189c, (q31_t)0x8052e106, (q31_t)0x912d42c, (q31_t)0x80526ed9, - (q31_t)0x90c8fb6, (q31_t)0x8051fcfb, - (q31_t)0x9064b3a, (q31_t)0x80518b6b, (q31_t)0x90006ba, (q31_t)0x80511a2b, (q31_t)0x8f9c233, (q31_t)0x8050a939, - (q31_t)0x8f37da7, (q31_t)0x80503896, - (q31_t)0x8ed3916, (q31_t)0x804fc841, (q31_t)0x8e6f47f, (q31_t)0x804f583c, (q31_t)0x8e0afe2, (q31_t)0x804ee885, - (q31_t)0x8da6b40, (q31_t)0x804e791d, - (q31_t)0x8d42699, (q31_t)0x804e0a04, (q31_t)0x8cde1ec, (q31_t)0x804d9b39, (q31_t)0x8c79d3a, (q31_t)0x804d2cbd, - (q31_t)0x8c15882, (q31_t)0x804cbe90, - (q31_t)0x8bb13c5, (q31_t)0x804c50b2, (q31_t)0x8b4cf02, (q31_t)0x804be323, (q31_t)0x8ae8a3a, (q31_t)0x804b75e2, - (q31_t)0x8a8456d, (q31_t)0x804b08f0, - (q31_t)0x8a2009a, (q31_t)0x804a9c4d, (q31_t)0x89bbbc3, (q31_t)0x804a2ff9, (q31_t)0x89576e5, (q31_t)0x8049c3f3, - (q31_t)0x88f3203, (q31_t)0x8049583d, - (q31_t)0x888ed1b, (q31_t)0x8048ecd5, (q31_t)0x882a82e, (q31_t)0x804881bb, (q31_t)0x87c633c, (q31_t)0x804816f1, - (q31_t)0x8761e44, (q31_t)0x8047ac75, - (q31_t)0x86fd947, (q31_t)0x80474248, (q31_t)0x8699445, (q31_t)0x8046d86a, (q31_t)0x8634f3e, (q31_t)0x80466edb, - (q31_t)0x85d0a32, (q31_t)0x8046059b, - (q31_t)0x856c520, (q31_t)0x80459ca9, (q31_t)0x850800a, (q31_t)0x80453406, (q31_t)0x84a3aee, (q31_t)0x8044cbb2, - (q31_t)0x843f5cd, (q31_t)0x804463ad, - (q31_t)0x83db0a7, (q31_t)0x8043fbf6, (q31_t)0x8376b7c, (q31_t)0x8043948e, (q31_t)0x831264c, (q31_t)0x80432d75, - (q31_t)0x82ae117, (q31_t)0x8042c6ab, - (q31_t)0x8249bdd, (q31_t)0x80426030, (q31_t)0x81e569d, (q31_t)0x8041fa03, (q31_t)0x8181159, (q31_t)0x80419425, - (q31_t)0x811cc10, (q31_t)0x80412e96, - (q31_t)0x80b86c2, (q31_t)0x8040c956, (q31_t)0x805416e, (q31_t)0x80406465, (q31_t)0x7fefc16, (q31_t)0x803fffc2, - (q31_t)0x7f8b6b9, (q31_t)0x803f9b6f, - (q31_t)0x7f27157, (q31_t)0x803f376a, (q31_t)0x7ec2bf0, (q31_t)0x803ed3b3, (q31_t)0x7e5e685, (q31_t)0x803e704c, - (q31_t)0x7dfa114, (q31_t)0x803e0d34, - (q31_t)0x7d95b9e, (q31_t)0x803daa6a, (q31_t)0x7d31624, (q31_t)0x803d47ef, (q31_t)0x7ccd0a5, (q31_t)0x803ce5c3, - (q31_t)0x7c68b21, (q31_t)0x803c83e5, - (q31_t)0x7c04598, (q31_t)0x803c2257, (q31_t)0x7ba000b, (q31_t)0x803bc117, (q31_t)0x7b3ba78, (q31_t)0x803b6026, - (q31_t)0x7ad74e1, (q31_t)0x803aff84, - (q31_t)0x7a72f45, (q31_t)0x803a9f31, (q31_t)0x7a0e9a5, (q31_t)0x803a3f2d, (q31_t)0x79aa400, (q31_t)0x8039df77, - (q31_t)0x7945e56, (q31_t)0x80398010, - (q31_t)0x78e18a7, (q31_t)0x803920f8, (q31_t)0x787d2f4, (q31_t)0x8038c22f, (q31_t)0x7818d3c, (q31_t)0x803863b5, - (q31_t)0x77b4780, (q31_t)0x80380589, - (q31_t)0x77501be, (q31_t)0x8037a7ac, (q31_t)0x76ebbf9, (q31_t)0x80374a1f, (q31_t)0x768762e, (q31_t)0x8036ece0, - (q31_t)0x762305f, (q31_t)0x80368fef, - (q31_t)0x75bea8c, (q31_t)0x8036334e, (q31_t)0x755a4b4, (q31_t)0x8035d6fb, (q31_t)0x74f5ed7, (q31_t)0x80357af8, - (q31_t)0x74918f6, (q31_t)0x80351f43, - (q31_t)0x742d311, (q31_t)0x8034c3dd, (q31_t)0x73c8d27, (q31_t)0x803468c5, (q31_t)0x7364738, (q31_t)0x80340dfd, - (q31_t)0x7300145, (q31_t)0x8033b383, - (q31_t)0x729bb4e, (q31_t)0x80335959, (q31_t)0x7237552, (q31_t)0x8032ff7d, (q31_t)0x71d2f52, (q31_t)0x8032a5ef, - (q31_t)0x716e94e, (q31_t)0x80324cb1, - (q31_t)0x710a345, (q31_t)0x8031f3c2, (q31_t)0x70a5d37, (q31_t)0x80319b21, (q31_t)0x7041726, (q31_t)0x803142cf, - (q31_t)0x6fdd110, (q31_t)0x8030eacd, - (q31_t)0x6f78af6, (q31_t)0x80309318, (q31_t)0x6f144d7, (q31_t)0x80303bb3, (q31_t)0x6eafeb4, (q31_t)0x802fe49d, - (q31_t)0x6e4b88d, (q31_t)0x802f8dd5, - (q31_t)0x6de7262, (q31_t)0x802f375d, (q31_t)0x6d82c32, (q31_t)0x802ee133, (q31_t)0x6d1e5fe, (q31_t)0x802e8b58, - (q31_t)0x6cb9fc6, (q31_t)0x802e35cb, - (q31_t)0x6c5598a, (q31_t)0x802de08e, (q31_t)0x6bf1349, (q31_t)0x802d8ba0, (q31_t)0x6b8cd05, (q31_t)0x802d3700, - (q31_t)0x6b286bc, (q31_t)0x802ce2af, - (q31_t)0x6ac406f, (q31_t)0x802c8ead, (q31_t)0x6a5fa1e, (q31_t)0x802c3afa, (q31_t)0x69fb3c9, (q31_t)0x802be796, - (q31_t)0x6996d70, (q31_t)0x802b9480, - (q31_t)0x6932713, (q31_t)0x802b41ba, (q31_t)0x68ce0b2, (q31_t)0x802aef42, (q31_t)0x6869a4c, (q31_t)0x802a9d19, - (q31_t)0x68053e3, (q31_t)0x802a4b3f, - (q31_t)0x67a0d76, (q31_t)0x8029f9b4, (q31_t)0x673c704, (q31_t)0x8029a878, (q31_t)0x66d808f, (q31_t)0x8029578b, - (q31_t)0x6673a16, (q31_t)0x802906ec, - (q31_t)0x660f398, (q31_t)0x8028b69c, (q31_t)0x65aad17, (q31_t)0x8028669b, (q31_t)0x6546692, (q31_t)0x802816e9, - (q31_t)0x64e2009, (q31_t)0x8027c786, - (q31_t)0x647d97c, (q31_t)0x80277872, (q31_t)0x64192eb, (q31_t)0x802729ad, (q31_t)0x63b4c57, (q31_t)0x8026db36, - (q31_t)0x63505be, (q31_t)0x80268d0e, - (q31_t)0x62ebf22, (q31_t)0x80263f36, (q31_t)0x6287882, (q31_t)0x8025f1ac, (q31_t)0x62231de, (q31_t)0x8025a471, - (q31_t)0x61beb36, (q31_t)0x80255784, - (q31_t)0x615a48b, (q31_t)0x80250ae7, (q31_t)0x60f5ddc, (q31_t)0x8024be99, (q31_t)0x6091729, (q31_t)0x80247299, - (q31_t)0x602d072, (q31_t)0x802426e8, - (q31_t)0x5fc89b8, (q31_t)0x8023db86, (q31_t)0x5f642fa, (q31_t)0x80239073, (q31_t)0x5effc38, (q31_t)0x802345af, - (q31_t)0x5e9b572, (q31_t)0x8022fb3a, - (q31_t)0x5e36ea9, (q31_t)0x8022b114, (q31_t)0x5dd27dd, (q31_t)0x8022673c, (q31_t)0x5d6e10c, (q31_t)0x80221db3, - (q31_t)0x5d09a38, (q31_t)0x8021d47a, - (q31_t)0x5ca5361, (q31_t)0x80218b8f, (q31_t)0x5c40c86, (q31_t)0x802142f3, (q31_t)0x5bdc5a7, (q31_t)0x8020faa6, - (q31_t)0x5b77ec5, (q31_t)0x8020b2a7, - (q31_t)0x5b137df, (q31_t)0x80206af8, (q31_t)0x5aaf0f6, (q31_t)0x80202397, (q31_t)0x5a4aa09, (q31_t)0x801fdc86, - (q31_t)0x59e6319, (q31_t)0x801f95c3, - (q31_t)0x5981c26, (q31_t)0x801f4f4f, (q31_t)0x591d52f, (q31_t)0x801f092a, (q31_t)0x58b8e34, (q31_t)0x801ec354, - (q31_t)0x5854736, (q31_t)0x801e7dcd, - (q31_t)0x57f0035, (q31_t)0x801e3895, (q31_t)0x578b930, (q31_t)0x801df3ab, (q31_t)0x5727228, (q31_t)0x801daf11, - (q31_t)0x56c2b1c, (q31_t)0x801d6ac5, - (q31_t)0x565e40d, (q31_t)0x801d26c8, (q31_t)0x55f9cfb, (q31_t)0x801ce31a, (q31_t)0x55955e6, (q31_t)0x801c9fbb, - (q31_t)0x5530ecd, (q31_t)0x801c5cab, - (q31_t)0x54cc7b1, (q31_t)0x801c19ea, (q31_t)0x5468092, (q31_t)0x801bd777, (q31_t)0x540396f, (q31_t)0x801b9554, - (q31_t)0x539f249, (q31_t)0x801b537f, - (q31_t)0x533ab20, (q31_t)0x801b11fa, (q31_t)0x52d63f4, (q31_t)0x801ad0c3, (q31_t)0x5271cc4, (q31_t)0x801a8fdb, - (q31_t)0x520d592, (q31_t)0x801a4f42, - (q31_t)0x51a8e5c, (q31_t)0x801a0ef8, (q31_t)0x5144723, (q31_t)0x8019cefd, (q31_t)0x50dffe7, (q31_t)0x80198f50, - (q31_t)0x507b8a8, (q31_t)0x80194ff3, - (q31_t)0x5017165, (q31_t)0x801910e4, (q31_t)0x4fb2a20, (q31_t)0x8018d225, (q31_t)0x4f4e2d8, (q31_t)0x801893b4, - (q31_t)0x4ee9b8c, (q31_t)0x80185592, - (q31_t)0x4e8543e, (q31_t)0x801817bf, (q31_t)0x4e20cec, (q31_t)0x8017da3b, (q31_t)0x4dbc597, (q31_t)0x80179d06, - (q31_t)0x4d57e40, (q31_t)0x80176020, - (q31_t)0x4cf36e5, (q31_t)0x80172388, (q31_t)0x4c8ef88, (q31_t)0x8016e740, (q31_t)0x4c2a827, (q31_t)0x8016ab46, - (q31_t)0x4bc60c4, (q31_t)0x80166f9c, - (q31_t)0x4b6195d, (q31_t)0x80163440, (q31_t)0x4afd1f4, (q31_t)0x8015f933, (q31_t)0x4a98a88, (q31_t)0x8015be75, - (q31_t)0x4a34319, (q31_t)0x80158406, - (q31_t)0x49cfba7, (q31_t)0x801549e6, (q31_t)0x496b432, (q31_t)0x80151015, (q31_t)0x4906cbb, (q31_t)0x8014d693, - (q31_t)0x48a2540, (q31_t)0x80149d5f, - (q31_t)0x483ddc3, (q31_t)0x8014647b, (q31_t)0x47d9643, (q31_t)0x80142be5, (q31_t)0x4774ec1, (q31_t)0x8013f39e, - (q31_t)0x471073b, (q31_t)0x8013bba7, - (q31_t)0x46abfb3, (q31_t)0x801383fe, (q31_t)0x4647828, (q31_t)0x80134ca4, (q31_t)0x45e309a, (q31_t)0x80131599, - (q31_t)0x457e90a, (q31_t)0x8012dedd, - (q31_t)0x451a177, (q31_t)0x8012a86f, (q31_t)0x44b59e1, (q31_t)0x80127251, (q31_t)0x4451249, (q31_t)0x80123c82, - (q31_t)0x43ecaae, (q31_t)0x80120701, - (q31_t)0x4388310, (q31_t)0x8011d1d0, (q31_t)0x4323b70, (q31_t)0x80119ced, (q31_t)0x42bf3cd, (q31_t)0x80116859, - (q31_t)0x425ac28, (q31_t)0x80113414, - (q31_t)0x41f6480, (q31_t)0x8011001f, (q31_t)0x4191cd5, (q31_t)0x8010cc78, (q31_t)0x412d528, (q31_t)0x8010991f, - (q31_t)0x40c8d79, (q31_t)0x80106616, - (q31_t)0x40645c7, (q31_t)0x8010335c, (q31_t)0x3fffe12, (q31_t)0x801000f1, (q31_t)0x3f9b65b, (q31_t)0x800fced4, - (q31_t)0x3f36ea2, (q31_t)0x800f9d07, - (q31_t)0x3ed26e6, (q31_t)0x800f6b88, (q31_t)0x3e6df28, (q31_t)0x800f3a59, (q31_t)0x3e09767, (q31_t)0x800f0978, - (q31_t)0x3da4fa4, (q31_t)0x800ed8e6, - (q31_t)0x3d407df, (q31_t)0x800ea8a3, (q31_t)0x3cdc017, (q31_t)0x800e78af, (q31_t)0x3c7784d, (q31_t)0x800e490a, - (q31_t)0x3c13080, (q31_t)0x800e19b4, - (q31_t)0x3bae8b2, (q31_t)0x800deaad, (q31_t)0x3b4a0e0, (q31_t)0x800dbbf5, (q31_t)0x3ae590d, (q31_t)0x800d8d8b, - (q31_t)0x3a81137, (q31_t)0x800d5f71, - (q31_t)0x3a1c960, (q31_t)0x800d31a5, (q31_t)0x39b8185, (q31_t)0x800d0429, (q31_t)0x39539a9, (q31_t)0x800cd6fb, - (q31_t)0x38ef1ca, (q31_t)0x800caa1c, - (q31_t)0x388a9ea, (q31_t)0x800c7d8c, (q31_t)0x3826207, (q31_t)0x800c514c, (q31_t)0x37c1a22, (q31_t)0x800c255a, - (q31_t)0x375d23a, (q31_t)0x800bf9b7, - (q31_t)0x36f8a51, (q31_t)0x800bce63, (q31_t)0x3694265, (q31_t)0x800ba35d, (q31_t)0x362fa78, (q31_t)0x800b78a7, - (q31_t)0x35cb288, (q31_t)0x800b4e40, - (q31_t)0x3566a96, (q31_t)0x800b2427, (q31_t)0x35022a2, (q31_t)0x800afa5e, (q31_t)0x349daac, (q31_t)0x800ad0e3, - (q31_t)0x34392b4, (q31_t)0x800aa7b8, - (q31_t)0x33d4abb, (q31_t)0x800a7edb, (q31_t)0x33702bf, (q31_t)0x800a564e, (q31_t)0x330bac1, (q31_t)0x800a2e0f, - (q31_t)0x32a72c1, (q31_t)0x800a061f, - (q31_t)0x3242abf, (q31_t)0x8009de7e, (q31_t)0x31de2bb, (q31_t)0x8009b72c, (q31_t)0x3179ab5, (q31_t)0x80099029, - (q31_t)0x31152ae, (q31_t)0x80096975, - (q31_t)0x30b0aa4, (q31_t)0x80094310, (q31_t)0x304c299, (q31_t)0x80091cf9, (q31_t)0x2fe7a8c, (q31_t)0x8008f732, - (q31_t)0x2f8327d, (q31_t)0x8008d1ba, - (q31_t)0x2f1ea6c, (q31_t)0x8008ac90, (q31_t)0x2eba259, (q31_t)0x800887b6, (q31_t)0x2e55a44, (q31_t)0x8008632a, - (q31_t)0x2df122e, (q31_t)0x80083eed, - (q31_t)0x2d8ca16, (q31_t)0x80081b00, (q31_t)0x2d281fc, (q31_t)0x8007f761, (q31_t)0x2cc39e1, (q31_t)0x8007d411, - (q31_t)0x2c5f1c3, (q31_t)0x8007b110, - (q31_t)0x2bfa9a4, (q31_t)0x80078e5e, (q31_t)0x2b96184, (q31_t)0x80076bfb, (q31_t)0x2b31961, (q31_t)0x800749e7, - (q31_t)0x2acd13d, (q31_t)0x80072822, - (q31_t)0x2a68917, (q31_t)0x800706ac, (q31_t)0x2a040f0, (q31_t)0x8006e585, (q31_t)0x299f8c7, (q31_t)0x8006c4ac, - (q31_t)0x293b09c, (q31_t)0x8006a423, - (q31_t)0x28d6870, (q31_t)0x800683e8, (q31_t)0x2872043, (q31_t)0x800663fd, (q31_t)0x280d813, (q31_t)0x80064460, - (q31_t)0x27a8fe2, (q31_t)0x80062513, - (q31_t)0x27447b0, (q31_t)0x80060614, (q31_t)0x26dff7c, (q31_t)0x8005e764, (q31_t)0x267b747, (q31_t)0x8005c904, - (q31_t)0x2616f10, (q31_t)0x8005aaf2, - (q31_t)0x25b26d7, (q31_t)0x80058d2f, (q31_t)0x254de9e, (q31_t)0x80056fbb, (q31_t)0x24e9662, (q31_t)0x80055296, - (q31_t)0x2484e26, (q31_t)0x800535c0, - (q31_t)0x24205e8, (q31_t)0x80051939, (q31_t)0x23bbda8, (q31_t)0x8004fd00, (q31_t)0x2357567, (q31_t)0x8004e117, - (q31_t)0x22f2d25, (q31_t)0x8004c57d, - (q31_t)0x228e4e2, (q31_t)0x8004aa32, (q31_t)0x2229c9d, (q31_t)0x80048f35, (q31_t)0x21c5457, (q31_t)0x80047488, - (q31_t)0x2160c0f, (q31_t)0x80045a29, - (q31_t)0x20fc3c6, (q31_t)0x8004401a, (q31_t)0x2097b7c, (q31_t)0x80042659, (q31_t)0x2033331, (q31_t)0x80040ce7, - (q31_t)0x1fceae4, (q31_t)0x8003f3c5, - (q31_t)0x1f6a297, (q31_t)0x8003daf1, (q31_t)0x1f05a48, (q31_t)0x8003c26c, (q31_t)0x1ea11f7, (q31_t)0x8003aa36, - (q31_t)0x1e3c9a6, (q31_t)0x8003924f, - (q31_t)0x1dd8154, (q31_t)0x80037ab7, (q31_t)0x1d73900, (q31_t)0x8003636e, (q31_t)0x1d0f0ab, (q31_t)0x80034c74, - (q31_t)0x1caa855, (q31_t)0x800335c9, - (q31_t)0x1c45ffe, (q31_t)0x80031f6d, (q31_t)0x1be17a6, (q31_t)0x80030960, (q31_t)0x1b7cf4d, (q31_t)0x8002f3a1, - (q31_t)0x1b186f3, (q31_t)0x8002de32, - (q31_t)0x1ab3e97, (q31_t)0x8002c912, (q31_t)0x1a4f63b, (q31_t)0x8002b440, (q31_t)0x19eaddd, (q31_t)0x80029fbe, - (q31_t)0x198657f, (q31_t)0x80028b8a, - (q31_t)0x1921d20, (q31_t)0x800277a6, (q31_t)0x18bd4bf, (q31_t)0x80026410, (q31_t)0x1858c5e, (q31_t)0x800250c9, - (q31_t)0x17f43fc, (q31_t)0x80023dd2, - (q31_t)0x178fb99, (q31_t)0x80022b29, (q31_t)0x172b335, (q31_t)0x800218cf, (q31_t)0x16c6ad0, (q31_t)0x800206c4, - (q31_t)0x166226a, (q31_t)0x8001f508, - (q31_t)0x15fda03, (q31_t)0x8001e39b, (q31_t)0x159919c, (q31_t)0x8001d27d, (q31_t)0x1534934, (q31_t)0x8001c1ae, - (q31_t)0x14d00ca, (q31_t)0x8001b12e, - (q31_t)0x146b860, (q31_t)0x8001a0fd, (q31_t)0x1406ff6, (q31_t)0x8001911b, (q31_t)0x13a278a, (q31_t)0x80018187, - (q31_t)0x133df1e, (q31_t)0x80017243, - (q31_t)0x12d96b1, (q31_t)0x8001634e, (q31_t)0x1274e43, (q31_t)0x800154a7, (q31_t)0x12105d5, (q31_t)0x80014650, - (q31_t)0x11abd66, (q31_t)0x80013847, - (q31_t)0x11474f6, (q31_t)0x80012a8e, (q31_t)0x10e2c85, (q31_t)0x80011d23, (q31_t)0x107e414, (q31_t)0x80011008, - (q31_t)0x1019ba2, (q31_t)0x8001033b, - (q31_t)0xfb5330, (q31_t)0x8000f6bd, (q31_t)0xf50abd, (q31_t)0x8000ea8e, (q31_t)0xeec249, (q31_t)0x8000deaf, (q31_t)0xe879d5, - (q31_t)0x8000d31e, - (q31_t)0xe23160, (q31_t)0x8000c7dc, (q31_t)0xdbe8eb, (q31_t)0x8000bce9, (q31_t)0xd5a075, (q31_t)0x8000b245, (q31_t)0xcf57ff, - (q31_t)0x8000a7f0, - (q31_t)0xc90f88, (q31_t)0x80009dea, (q31_t)0xc2c711, (q31_t)0x80009433, (q31_t)0xbc7e99, (q31_t)0x80008aca, (q31_t)0xb63621, - (q31_t)0x800081b1, - (q31_t)0xafeda8, (q31_t)0x800078e7, (q31_t)0xa9a52f, (q31_t)0x8000706c, (q31_t)0xa35cb5, (q31_t)0x8000683f, (q31_t)0x9d143b, - (q31_t)0x80006062, - (q31_t)0x96cbc1, (q31_t)0x800058d4, (q31_t)0x908346, (q31_t)0x80005194, (q31_t)0x8a3acb, (q31_t)0x80004aa4, (q31_t)0x83f250, - (q31_t)0x80004402, - (q31_t)0x7da9d4, (q31_t)0x80003daf, (q31_t)0x776159, (q31_t)0x800037ac, (q31_t)0x7118dc, (q31_t)0x800031f7, (q31_t)0x6ad060, - (q31_t)0x80002c91, - (q31_t)0x6487e3, (q31_t)0x8000277a, (q31_t)0x5e3f66, (q31_t)0x800022b3, (q31_t)0x57f6e9, (q31_t)0x80001e3a, (q31_t)0x51ae6b, - (q31_t)0x80001a10, - (q31_t)0x4b65ee, (q31_t)0x80001635, (q31_t)0x451d70, (q31_t)0x800012a9, (q31_t)0x3ed4f2, (q31_t)0x80000f6c, (q31_t)0x388c74, - (q31_t)0x80000c7e, - (q31_t)0x3243f5, (q31_t)0x800009df, (q31_t)0x2bfb77, (q31_t)0x8000078e, (q31_t)0x25b2f8, (q31_t)0x8000058d, (q31_t)0x1f6a7a, - (q31_t)0x800003db, - (q31_t)0x1921fb, (q31_t)0x80000278, (q31_t)0x12d97c, (q31_t)0x80000163, (q31_t)0xc90fe, (q31_t)0x8000009e, (q31_t)0x6487f, - (q31_t)0x80000027 - -}; - -/** -* \par -* cosFactor tables are generated using the formula :
cos_factors[n] = 2 * cos((2n+1)*pi/(4*N))
-* \par -* C command to generate the table -*
-* for(i = 0; i< N; i++)
-* {
-*   cos_factors[i]= 2 * cos((2*i+1)*c/2);
-* } 
-* \par -* where N is the number of factors to generate and c is pi/(2*N) -* \par -* Then converted to q31 format by multiplying with 2^31 and saturated if required. -*/ - - -static const q31_t cos_factorsQ31_128[128] = { - (q31_t)0x7fff6216, (q31_t)0x7ffa72d1, (q31_t)0x7ff09478, (q31_t)0x7fe1c76b, (q31_t)0x7fce0c3e, (q31_t)0x7fb563b3, - (q31_t)0x7f97cebd, (q31_t)0x7f754e80, - (q31_t)0x7f4de451, (q31_t)0x7f2191b4, (q31_t)0x7ef05860, (q31_t)0x7eba3a39, (q31_t)0x7e7f3957, (q31_t)0x7e3f57ff, - (q31_t)0x7dfa98a8, (q31_t)0x7db0fdf8, - (q31_t)0x7d628ac6, (q31_t)0x7d0f4218, (q31_t)0x7cb72724, (q31_t)0x7c5a3d50, (q31_t)0x7bf88830, (q31_t)0x7b920b89, - (q31_t)0x7b26cb4f, (q31_t)0x7ab6cba4, - (q31_t)0x7a4210d8, (q31_t)0x79c89f6e, (q31_t)0x794a7c12, (q31_t)0x78c7aba2, (q31_t)0x78403329, (q31_t)0x77b417df, - (q31_t)0x77235f2d, (q31_t)0x768e0ea6, - (q31_t)0x75f42c0b, (q31_t)0x7555bd4c, (q31_t)0x74b2c884, (q31_t)0x740b53fb, (q31_t)0x735f6626, (q31_t)0x72af05a7, - (q31_t)0x71fa3949, (q31_t)0x71410805, - (q31_t)0x708378ff, (q31_t)0x6fc19385, (q31_t)0x6efb5f12, (q31_t)0x6e30e34a, (q31_t)0x6d6227fa, (q31_t)0x6c8f351c, - (q31_t)0x6bb812d1, (q31_t)0x6adcc964, - (q31_t)0x69fd614a, (q31_t)0x6919e320, (q31_t)0x683257ab, (q31_t)0x6746c7d8, (q31_t)0x66573cbb, (q31_t)0x6563bf92, - (q31_t)0x646c59bf, (q31_t)0x637114cc, - (q31_t)0x6271fa69, (q31_t)0x616f146c, (q31_t)0x60686ccf, (q31_t)0x5f5e0db3, (q31_t)0x5e50015d, (q31_t)0x5d3e5237, - (q31_t)0x5c290acc, (q31_t)0x5b1035cf, - (q31_t)0x59f3de12, (q31_t)0x58d40e8c, (q31_t)0x57b0d256, (q31_t)0x568a34a9, (q31_t)0x556040e2, (q31_t)0x5433027d, - (q31_t)0x53028518, (q31_t)0x51ced46e, - (q31_t)0x5097fc5e, (q31_t)0x4f5e08e3, (q31_t)0x4e210617, (q31_t)0x4ce10034, (q31_t)0x4b9e0390, (q31_t)0x4a581c9e, - (q31_t)0x490f57ee, (q31_t)0x47c3c22f, - (q31_t)0x46756828, (q31_t)0x452456bd, (q31_t)0x43d09aed, (q31_t)0x427a41d0, (q31_t)0x4121589b, (q31_t)0x3fc5ec98, - (q31_t)0x3e680b2c, (q31_t)0x3d07c1d6, - (q31_t)0x3ba51e29, (q31_t)0x3a402dd2, (q31_t)0x38d8fe93, (q31_t)0x376f9e46, (q31_t)0x36041ad9, (q31_t)0x34968250, - (q31_t)0x3326e2c3, (q31_t)0x31b54a5e, - (q31_t)0x3041c761, (q31_t)0x2ecc681e, (q31_t)0x2d553afc, (q31_t)0x2bdc4e6f, (q31_t)0x2a61b101, (q31_t)0x28e5714b, - (q31_t)0x27679df4, (q31_t)0x25e845b6, - (q31_t)0x24677758, (q31_t)0x22e541af, (q31_t)0x2161b3a0, (q31_t)0x1fdcdc1b, (q31_t)0x1e56ca1e, (q31_t)0x1ccf8cb3, - (q31_t)0x1b4732ef, (q31_t)0x19bdcbf3, - (q31_t)0x183366e9, (q31_t)0x16a81305, (q31_t)0x151bdf86, (q31_t)0x138edbb1, (q31_t)0x120116d5, (q31_t)0x1072a048, - (q31_t)0xee38766, (q31_t)0xd53db92, - (q31_t)0xbc3ac35, (q31_t)0xa3308bd, (q31_t)0x8a2009a, (q31_t)0x710a345, (q31_t)0x57f0035, (q31_t)0x3ed26e6, (q31_t)0x25b26d7, - (q31_t)0xc90f88 -}; - -static const q31_t cos_factorsQ31_512[512] = { - (q31_t)0x7ffff621, (q31_t)0x7fffa72c, (q31_t)0x7fff0943, (q31_t)0x7ffe1c65, (q31_t)0x7ffce093, (q31_t)0x7ffb55ce, - (q31_t)0x7ff97c18, (q31_t)0x7ff75370, - (q31_t)0x7ff4dbd9, (q31_t)0x7ff21553, (q31_t)0x7feeffe1, (q31_t)0x7feb9b85, (q31_t)0x7fe7e841, (q31_t)0x7fe3e616, - (q31_t)0x7fdf9508, (q31_t)0x7fdaf519, - (q31_t)0x7fd6064c, (q31_t)0x7fd0c8a3, (q31_t)0x7fcb3c23, (q31_t)0x7fc560cf, (q31_t)0x7fbf36aa, (q31_t)0x7fb8bdb8, - (q31_t)0x7fb1f5fc, (q31_t)0x7faadf7c, - (q31_t)0x7fa37a3c, (q31_t)0x7f9bc640, (q31_t)0x7f93c38c, (q31_t)0x7f8b7227, (q31_t)0x7f82d214, (q31_t)0x7f79e35a, - (q31_t)0x7f70a5fe, (q31_t)0x7f671a05, - (q31_t)0x7f5d3f75, (q31_t)0x7f531655, (q31_t)0x7f489eaa, (q31_t)0x7f3dd87c, (q31_t)0x7f32c3d1, (q31_t)0x7f2760af, - (q31_t)0x7f1baf1e, (q31_t)0x7f0faf25, - (q31_t)0x7f0360cb, (q31_t)0x7ef6c418, (q31_t)0x7ee9d914, (q31_t)0x7edc9fc6, (q31_t)0x7ecf1837, (q31_t)0x7ec14270, - (q31_t)0x7eb31e78, (q31_t)0x7ea4ac58, - (q31_t)0x7e95ec1a, (q31_t)0x7e86ddc6, (q31_t)0x7e778166, (q31_t)0x7e67d703, (q31_t)0x7e57dea7, (q31_t)0x7e47985b, - (q31_t)0x7e37042a, (q31_t)0x7e26221f, - (q31_t)0x7e14f242, (q31_t)0x7e0374a0, (q31_t)0x7df1a942, (q31_t)0x7ddf9034, (q31_t)0x7dcd2981, (q31_t)0x7dba7534, - (q31_t)0x7da77359, (q31_t)0x7d9423fc, - (q31_t)0x7d808728, (q31_t)0x7d6c9ce9, (q31_t)0x7d58654d, (q31_t)0x7d43e05e, (q31_t)0x7d2f0e2b, (q31_t)0x7d19eebf, - (q31_t)0x7d048228, (q31_t)0x7ceec873, - (q31_t)0x7cd8c1ae, (q31_t)0x7cc26de5, (q31_t)0x7cabcd28, (q31_t)0x7c94df83, (q31_t)0x7c7da505, (q31_t)0x7c661dbc, - (q31_t)0x7c4e49b7, (q31_t)0x7c362904, - (q31_t)0x7c1dbbb3, (q31_t)0x7c0501d2, (q31_t)0x7bebfb70, (q31_t)0x7bd2a89e, (q31_t)0x7bb9096b, (q31_t)0x7b9f1de6, - (q31_t)0x7b84e61f, (q31_t)0x7b6a6227, - (q31_t)0x7b4f920e, (q31_t)0x7b3475e5, (q31_t)0x7b190dbc, (q31_t)0x7afd59a4, (q31_t)0x7ae159ae, (q31_t)0x7ac50dec, - (q31_t)0x7aa8766f, (q31_t)0x7a8b9348, - (q31_t)0x7a6e648a, (q31_t)0x7a50ea47, (q31_t)0x7a332490, (q31_t)0x7a151378, (q31_t)0x79f6b711, (q31_t)0x79d80f6f, - (q31_t)0x79b91ca4, (q31_t)0x7999dec4, - (q31_t)0x797a55e0, (q31_t)0x795a820e, (q31_t)0x793a6361, (q31_t)0x7919f9ec, (q31_t)0x78f945c3, (q31_t)0x78d846fb, - (q31_t)0x78b6fda8, (q31_t)0x789569df, - (q31_t)0x78738bb3, (q31_t)0x7851633b, (q31_t)0x782ef08b, (q31_t)0x780c33b8, (q31_t)0x77e92cd9, (q31_t)0x77c5dc01, - (q31_t)0x77a24148, (q31_t)0x777e5cc3, - (q31_t)0x775a2e89, (q31_t)0x7735b6af, (q31_t)0x7710f54c, (q31_t)0x76ebea77, (q31_t)0x76c69647, (q31_t)0x76a0f8d2, - (q31_t)0x767b1231, (q31_t)0x7654e279, - (q31_t)0x762e69c4, (q31_t)0x7607a828, (q31_t)0x75e09dbd, (q31_t)0x75b94a9c, (q31_t)0x7591aedd, (q31_t)0x7569ca99, - (q31_t)0x75419de7, (q31_t)0x751928e0, - (q31_t)0x74f06b9e, (q31_t)0x74c7663a, (q31_t)0x749e18cd, (q31_t)0x74748371, (q31_t)0x744aa63f, (q31_t)0x74208150, - (q31_t)0x73f614c0, (q31_t)0x73cb60a8, - (q31_t)0x73a06522, (q31_t)0x73752249, (q31_t)0x73499838, (q31_t)0x731dc70a, (q31_t)0x72f1aed9, (q31_t)0x72c54fc1, - (q31_t)0x7298a9dd, (q31_t)0x726bbd48, - (q31_t)0x723e8a20, (q31_t)0x7211107e, (q31_t)0x71e35080, (q31_t)0x71b54a41, (q31_t)0x7186fdde, (q31_t)0x71586b74, - (q31_t)0x7129931f, (q31_t)0x70fa74fc, - (q31_t)0x70cb1128, (q31_t)0x709b67c0, (q31_t)0x706b78e3, (q31_t)0x703b44ad, (q31_t)0x700acb3c, (q31_t)0x6fda0cae, - (q31_t)0x6fa90921, (q31_t)0x6f77c0b3, - (q31_t)0x6f463383, (q31_t)0x6f1461b0, (q31_t)0x6ee24b57, (q31_t)0x6eaff099, (q31_t)0x6e7d5193, (q31_t)0x6e4a6e66, - (q31_t)0x6e174730, (q31_t)0x6de3dc11, - (q31_t)0x6db02d29, (q31_t)0x6d7c3a98, (q31_t)0x6d48047e, (q31_t)0x6d138afb, (q31_t)0x6cdece2f, (q31_t)0x6ca9ce3b, - (q31_t)0x6c748b3f, (q31_t)0x6c3f055d, - (q31_t)0x6c093cb6, (q31_t)0x6bd3316a, (q31_t)0x6b9ce39b, (q31_t)0x6b66536b, (q31_t)0x6b2f80fb, (q31_t)0x6af86c6c, - (q31_t)0x6ac115e2, (q31_t)0x6a897d7d, - (q31_t)0x6a51a361, (q31_t)0x6a1987b0, (q31_t)0x69e12a8c, (q31_t)0x69a88c19, (q31_t)0x696fac78, (q31_t)0x69368bce, - (q31_t)0x68fd2a3d, (q31_t)0x68c387e9, - (q31_t)0x6889a4f6, (q31_t)0x684f8186, (q31_t)0x68151dbe, (q31_t)0x67da79c3, (q31_t)0x679f95b7, (q31_t)0x676471c0, - (q31_t)0x67290e02, (q31_t)0x66ed6aa1, - (q31_t)0x66b187c3, (q31_t)0x6675658c, (q31_t)0x66390422, (q31_t)0x65fc63a9, (q31_t)0x65bf8447, (q31_t)0x65826622, - (q31_t)0x6545095f, (q31_t)0x65076e25, - (q31_t)0x64c99498, (q31_t)0x648b7ce0, (q31_t)0x644d2722, (q31_t)0x640e9386, (q31_t)0x63cfc231, (q31_t)0x6390b34a, - (q31_t)0x635166f9, (q31_t)0x6311dd64, - (q31_t)0x62d216b3, (q31_t)0x6292130c, (q31_t)0x6251d298, (q31_t)0x6211557e, (q31_t)0x61d09be5, (q31_t)0x618fa5f7, - (q31_t)0x614e73da, (q31_t)0x610d05b7, - (q31_t)0x60cb5bb7, (q31_t)0x60897601, (q31_t)0x604754bf, (q31_t)0x6004f819, (q31_t)0x5fc26038, (q31_t)0x5f7f8d46, - (q31_t)0x5f3c7f6b, (q31_t)0x5ef936d1, - (q31_t)0x5eb5b3a2, (q31_t)0x5e71f606, (q31_t)0x5e2dfe29, (q31_t)0x5de9cc33, (q31_t)0x5da5604f, (q31_t)0x5d60baa7, - (q31_t)0x5d1bdb65, (q31_t)0x5cd6c2b5, - (q31_t)0x5c9170bf, (q31_t)0x5c4be5b0, (q31_t)0x5c0621b2, (q31_t)0x5bc024f0, (q31_t)0x5b79ef96, (q31_t)0x5b3381ce, - (q31_t)0x5aecdbc5, (q31_t)0x5aa5fda5, - (q31_t)0x5a5ee79a, (q31_t)0x5a1799d1, (q31_t)0x59d01475, (q31_t)0x598857b2, (q31_t)0x594063b5, (q31_t)0x58f838a9, - (q31_t)0x58afd6bd, (q31_t)0x58673e1b, - (q31_t)0x581e6ef1, (q31_t)0x57d5696d, (q31_t)0x578c2dba, (q31_t)0x5742bc06, (q31_t)0x56f9147e, (q31_t)0x56af3750, - (q31_t)0x566524aa, (q31_t)0x561adcb9, - (q31_t)0x55d05faa, (q31_t)0x5585adad, (q31_t)0x553ac6ee, (q31_t)0x54efab9c, (q31_t)0x54a45be6, (q31_t)0x5458d7f9, - (q31_t)0x540d2005, (q31_t)0x53c13439, - (q31_t)0x537514c2, (q31_t)0x5328c1d0, (q31_t)0x52dc3b92, (q31_t)0x528f8238, (q31_t)0x524295f0, (q31_t)0x51f576ea, - (q31_t)0x51a82555, (q31_t)0x515aa162, - (q31_t)0x510ceb40, (q31_t)0x50bf031f, (q31_t)0x5070e92f, (q31_t)0x50229da1, (q31_t)0x4fd420a4, (q31_t)0x4f857269, - (q31_t)0x4f369320, (q31_t)0x4ee782fb, - (q31_t)0x4e984229, (q31_t)0x4e48d0dd, (q31_t)0x4df92f46, (q31_t)0x4da95d96, (q31_t)0x4d595bfe, (q31_t)0x4d092ab0, - (q31_t)0x4cb8c9dd, (q31_t)0x4c6839b7, - (q31_t)0x4c177a6e, (q31_t)0x4bc68c36, (q31_t)0x4b756f40, (q31_t)0x4b2423be, (q31_t)0x4ad2a9e2, (q31_t)0x4a8101de, - (q31_t)0x4a2f2be6, (q31_t)0x49dd282a, - (q31_t)0x498af6df, (q31_t)0x49389836, (q31_t)0x48e60c62, (q31_t)0x48935397, (q31_t)0x48406e08, (q31_t)0x47ed5be6, - (q31_t)0x479a1d67, (q31_t)0x4746b2bc, - (q31_t)0x46f31c1a, (q31_t)0x469f59b4, (q31_t)0x464b6bbe, (q31_t)0x45f7526b, (q31_t)0x45a30df0, (q31_t)0x454e9e80, - (q31_t)0x44fa0450, (q31_t)0x44a53f93, - (q31_t)0x4450507e, (q31_t)0x43fb3746, (q31_t)0x43a5f41e, (q31_t)0x4350873c, (q31_t)0x42faf0d4, (q31_t)0x42a5311b, - (q31_t)0x424f4845, (q31_t)0x41f93689, - (q31_t)0x41a2fc1a, (q31_t)0x414c992f, (q31_t)0x40f60dfb, (q31_t)0x409f5ab6, (q31_t)0x40487f94, (q31_t)0x3ff17cca, - (q31_t)0x3f9a5290, (q31_t)0x3f430119, - (q31_t)0x3eeb889c, (q31_t)0x3e93e950, (q31_t)0x3e3c2369, (q31_t)0x3de4371f, (q31_t)0x3d8c24a8, (q31_t)0x3d33ec39, - (q31_t)0x3cdb8e09, (q31_t)0x3c830a50, - (q31_t)0x3c2a6142, (q31_t)0x3bd19318, (q31_t)0x3b78a007, (q31_t)0x3b1f8848, (q31_t)0x3ac64c0f, (q31_t)0x3a6ceb96, - (q31_t)0x3a136712, (q31_t)0x39b9bebc, - (q31_t)0x395ff2c9, (q31_t)0x39060373, (q31_t)0x38abf0ef, (q31_t)0x3851bb77, (q31_t)0x37f76341, (q31_t)0x379ce885, - (q31_t)0x37424b7b, (q31_t)0x36e78c5b, - (q31_t)0x368cab5c, (q31_t)0x3631a8b8, (q31_t)0x35d684a6, (q31_t)0x357b3f5d, (q31_t)0x351fd918, (q31_t)0x34c4520d, - (q31_t)0x3468aa76, (q31_t)0x340ce28b, - (q31_t)0x33b0fa84, (q31_t)0x3354f29b, (q31_t)0x32f8cb07, (q31_t)0x329c8402, (q31_t)0x32401dc6, (q31_t)0x31e39889, - (q31_t)0x3186f487, (q31_t)0x312a31f8, - (q31_t)0x30cd5115, (q31_t)0x30705217, (q31_t)0x30133539, (q31_t)0x2fb5fab2, (q31_t)0x2f58a2be, (q31_t)0x2efb2d95, - (q31_t)0x2e9d9b70, (q31_t)0x2e3fec8b, - (q31_t)0x2de2211e, (q31_t)0x2d843964, (q31_t)0x2d263596, (q31_t)0x2cc815ee, (q31_t)0x2c69daa6, (q31_t)0x2c0b83fa, - (q31_t)0x2bad1221, (q31_t)0x2b4e8558, - (q31_t)0x2aefddd8, (q31_t)0x2a911bdc, (q31_t)0x2a323f9e, (q31_t)0x29d34958, (q31_t)0x29743946, (q31_t)0x29150fa1, - (q31_t)0x28b5cca5, (q31_t)0x2856708d, - (q31_t)0x27f6fb92, (q31_t)0x27976df1, (q31_t)0x2737c7e3, (q31_t)0x26d809a5, (q31_t)0x26783370, (q31_t)0x26184581, - (q31_t)0x25b84012, (q31_t)0x2558235f, - (q31_t)0x24f7efa2, (q31_t)0x2497a517, (q31_t)0x243743fa, (q31_t)0x23d6cc87, (q31_t)0x23763ef7, (q31_t)0x23159b88, - (q31_t)0x22b4e274, (q31_t)0x225413f8, - (q31_t)0x21f3304f, (q31_t)0x219237b5, (q31_t)0x21312a65, (q31_t)0x20d0089c, (q31_t)0x206ed295, (q31_t)0x200d888d, - (q31_t)0x1fac2abf, (q31_t)0x1f4ab968, - (q31_t)0x1ee934c3, (q31_t)0x1e879d0d, (q31_t)0x1e25f282, (q31_t)0x1dc4355e, (q31_t)0x1d6265dd, (q31_t)0x1d00843d, - (q31_t)0x1c9e90b8, (q31_t)0x1c3c8b8c, - (q31_t)0x1bda74f6, (q31_t)0x1b784d30, (q31_t)0x1b161479, (q31_t)0x1ab3cb0d, (q31_t)0x1a517128, (q31_t)0x19ef0707, - (q31_t)0x198c8ce7, (q31_t)0x192a0304, - (q31_t)0x18c7699b, (q31_t)0x1864c0ea, (q31_t)0x1802092c, (q31_t)0x179f429f, (q31_t)0x173c6d80, (q31_t)0x16d98a0c, - (q31_t)0x1676987f, (q31_t)0x16139918, - (q31_t)0x15b08c12, (q31_t)0x154d71aa, (q31_t)0x14ea4a1f, (q31_t)0x148715ae, (q31_t)0x1423d492, (q31_t)0x13c0870a, - (q31_t)0x135d2d53, (q31_t)0x12f9c7aa, - (q31_t)0x1296564d, (q31_t)0x1232d979, (q31_t)0x11cf516a, (q31_t)0x116bbe60, (q31_t)0x11082096, (q31_t)0x10a4784b, - (q31_t)0x1040c5bb, (q31_t)0xfdd0926, - (q31_t)0xf7942c7, (q31_t)0xf1572dc, (q31_t)0xeb199a4, (q31_t)0xe4db75b, (q31_t)0xde9cc40, (q31_t)0xd85d88f, (q31_t)0xd21dc87, - (q31_t)0xcbdd865, - (q31_t)0xc59cc68, (q31_t)0xbf5b8cb, (q31_t)0xb919dcf, (q31_t)0xb2d7baf, (q31_t)0xac952aa, (q31_t)0xa6522fe, (q31_t)0xa00ece8, - (q31_t)0x99cb0a7, - (q31_t)0x9386e78, (q31_t)0x8d42699, (q31_t)0x86fd947, (q31_t)0x80b86c2, (q31_t)0x7a72f45, (q31_t)0x742d311, (q31_t)0x6de7262, - (q31_t)0x67a0d76, - (q31_t)0x615a48b, (q31_t)0x5b137df, (q31_t)0x54cc7b1, (q31_t)0x4e8543e, (q31_t)0x483ddc3, (q31_t)0x41f6480, (q31_t)0x3bae8b2, - (q31_t)0x3566a96, - (q31_t)0x2f1ea6c, (q31_t)0x28d6870, (q31_t)0x228e4e2, (q31_t)0x1c45ffe, (q31_t)0x15fda03, (q31_t)0xfb5330, (q31_t)0x96cbc1, - (q31_t)0x3243f5 -}; - -static const q31_t cos_factorsQ31_2048[2048] = { - (q31_t)0x7fffff62, (q31_t)0x7ffffa73, (q31_t)0x7ffff094, (q31_t)0x7fffe1c6, (q31_t)0x7fffce09, (q31_t)0x7fffb55c, - (q31_t)0x7fff97c1, (q31_t)0x7fff7536, - (q31_t)0x7fff4dbb, (q31_t)0x7fff2151, (q31_t)0x7ffeeff8, (q31_t)0x7ffeb9b0, (q31_t)0x7ffe7e79, (q31_t)0x7ffe3e52, - (q31_t)0x7ffdf93c, (q31_t)0x7ffdaf37, - (q31_t)0x7ffd6042, (q31_t)0x7ffd0c5f, (q31_t)0x7ffcb38c, (q31_t)0x7ffc55ca, (q31_t)0x7ffbf319, (q31_t)0x7ffb8b78, - (q31_t)0x7ffb1ee9, (q31_t)0x7ffaad6a, - (q31_t)0x7ffa36fc, (q31_t)0x7ff9bba0, (q31_t)0x7ff93b54, (q31_t)0x7ff8b619, (q31_t)0x7ff82bef, (q31_t)0x7ff79cd6, - (q31_t)0x7ff708ce, (q31_t)0x7ff66fd7, - (q31_t)0x7ff5d1f1, (q31_t)0x7ff52f1d, (q31_t)0x7ff48759, (q31_t)0x7ff3daa6, (q31_t)0x7ff32905, (q31_t)0x7ff27275, - (q31_t)0x7ff1b6f6, (q31_t)0x7ff0f688, - (q31_t)0x7ff0312c, (q31_t)0x7fef66e1, (q31_t)0x7fee97a7, (q31_t)0x7fedc37e, (q31_t)0x7fecea67, (q31_t)0x7fec0c62, - (q31_t)0x7feb296d, (q31_t)0x7fea418b, - (q31_t)0x7fe954ba, (q31_t)0x7fe862fa, (q31_t)0x7fe76c4c, (q31_t)0x7fe670b0, (q31_t)0x7fe57025, (q31_t)0x7fe46aac, - (q31_t)0x7fe36045, (q31_t)0x7fe250ef, - (q31_t)0x7fe13cac, (q31_t)0x7fe0237a, (q31_t)0x7fdf055a, (q31_t)0x7fdde24d, (q31_t)0x7fdcba51, (q31_t)0x7fdb8d67, - (q31_t)0x7fda5b8f, (q31_t)0x7fd924ca, - (q31_t)0x7fd7e917, (q31_t)0x7fd6a875, (q31_t)0x7fd562e7, (q31_t)0x7fd4186a, (q31_t)0x7fd2c900, (q31_t)0x7fd174a8, - (q31_t)0x7fd01b63, (q31_t)0x7fcebd31, - (q31_t)0x7fcd5a11, (q31_t)0x7fcbf203, (q31_t)0x7fca8508, (q31_t)0x7fc91320, (q31_t)0x7fc79c4b, (q31_t)0x7fc62089, - (q31_t)0x7fc49fda, (q31_t)0x7fc31a3d, - (q31_t)0x7fc18fb4, (q31_t)0x7fc0003e, (q31_t)0x7fbe6bdb, (q31_t)0x7fbcd28b, (q31_t)0x7fbb344e, (q31_t)0x7fb99125, - (q31_t)0x7fb7e90f, (q31_t)0x7fb63c0d, - (q31_t)0x7fb48a1e, (q31_t)0x7fb2d343, (q31_t)0x7fb1177b, (q31_t)0x7faf56c7, (q31_t)0x7fad9127, (q31_t)0x7fabc69b, - (q31_t)0x7fa9f723, (q31_t)0x7fa822bf, - (q31_t)0x7fa6496e, (q31_t)0x7fa46b32, (q31_t)0x7fa2880b, (q31_t)0x7fa09ff7, (q31_t)0x7f9eb2f8, (q31_t)0x7f9cc10d, - (q31_t)0x7f9aca37, (q31_t)0x7f98ce76, - (q31_t)0x7f96cdc9, (q31_t)0x7f94c831, (q31_t)0x7f92bdad, (q31_t)0x7f90ae3f, (q31_t)0x7f8e99e6, (q31_t)0x7f8c80a1, - (q31_t)0x7f8a6272, (q31_t)0x7f883f58, - (q31_t)0x7f861753, (q31_t)0x7f83ea64, (q31_t)0x7f81b88a, (q31_t)0x7f7f81c6, (q31_t)0x7f7d4617, (q31_t)0x7f7b057e, - (q31_t)0x7f78bffb, (q31_t)0x7f76758e, - (q31_t)0x7f742637, (q31_t)0x7f71d1f6, (q31_t)0x7f6f78cb, (q31_t)0x7f6d1ab6, (q31_t)0x7f6ab7b8, (q31_t)0x7f684fd0, - (q31_t)0x7f65e2ff, (q31_t)0x7f637144, - (q31_t)0x7f60faa0, (q31_t)0x7f5e7f13, (q31_t)0x7f5bfe9d, (q31_t)0x7f59793e, (q31_t)0x7f56eef5, (q31_t)0x7f545fc5, - (q31_t)0x7f51cbab, (q31_t)0x7f4f32a9, - (q31_t)0x7f4c94be, (q31_t)0x7f49f1eb, (q31_t)0x7f474a30, (q31_t)0x7f449d8c, (q31_t)0x7f41ec01, (q31_t)0x7f3f358d, - (q31_t)0x7f3c7a31, (q31_t)0x7f39b9ee, - (q31_t)0x7f36f4c3, (q31_t)0x7f342ab1, (q31_t)0x7f315bb7, (q31_t)0x7f2e87d6, (q31_t)0x7f2baf0d, (q31_t)0x7f28d15d, - (q31_t)0x7f25eec7, (q31_t)0x7f230749, - (q31_t)0x7f201ae5, (q31_t)0x7f1d299a, (q31_t)0x7f1a3368, (q31_t)0x7f173850, (q31_t)0x7f143852, (q31_t)0x7f11336d, - (q31_t)0x7f0e29a3, (q31_t)0x7f0b1af2, - (q31_t)0x7f08075c, (q31_t)0x7f04eedf, (q31_t)0x7f01d17d, (q31_t)0x7efeaf36, (q31_t)0x7efb8809, (q31_t)0x7ef85bf7, - (q31_t)0x7ef52b00, (q31_t)0x7ef1f524, - (q31_t)0x7eeeba62, (q31_t)0x7eeb7abc, (q31_t)0x7ee83632, (q31_t)0x7ee4ecc3, (q31_t)0x7ee19e6f, (q31_t)0x7ede4b38, - (q31_t)0x7edaf31c, (q31_t)0x7ed7961c, - (q31_t)0x7ed43438, (q31_t)0x7ed0cd70, (q31_t)0x7ecd61c5, (q31_t)0x7ec9f137, (q31_t)0x7ec67bc5, (q31_t)0x7ec3016f, - (q31_t)0x7ebf8237, (q31_t)0x7ebbfe1c, - (q31_t)0x7eb8751e, (q31_t)0x7eb4e73d, (q31_t)0x7eb1547a, (q31_t)0x7eadbcd4, (q31_t)0x7eaa204c, (q31_t)0x7ea67ee2, - (q31_t)0x7ea2d896, (q31_t)0x7e9f2d68, - (q31_t)0x7e9b7d58, (q31_t)0x7e97c867, (q31_t)0x7e940e94, (q31_t)0x7e904fe0, (q31_t)0x7e8c8c4b, (q31_t)0x7e88c3d5, - (q31_t)0x7e84f67e, (q31_t)0x7e812447, - (q31_t)0x7e7d4d2f, (q31_t)0x7e797136, (q31_t)0x7e75905d, (q31_t)0x7e71aaa4, (q31_t)0x7e6dc00c, (q31_t)0x7e69d093, - (q31_t)0x7e65dc3b, (q31_t)0x7e61e303, - (q31_t)0x7e5de4ec, (q31_t)0x7e59e1f5, (q31_t)0x7e55da20, (q31_t)0x7e51cd6c, (q31_t)0x7e4dbbd9, (q31_t)0x7e49a567, - (q31_t)0x7e458a17, (q31_t)0x7e4169e9, - (q31_t)0x7e3d44dd, (q31_t)0x7e391af3, (q31_t)0x7e34ec2b, (q31_t)0x7e30b885, (q31_t)0x7e2c8002, (q31_t)0x7e2842a2, - (q31_t)0x7e240064, (q31_t)0x7e1fb94a, - (q31_t)0x7e1b6d53, (q31_t)0x7e171c7f, (q31_t)0x7e12c6ce, (q31_t)0x7e0e6c42, (q31_t)0x7e0a0cd9, (q31_t)0x7e05a894, - (q31_t)0x7e013f74, (q31_t)0x7dfcd178, - (q31_t)0x7df85ea0, (q31_t)0x7df3e6ee, (q31_t)0x7def6a60, (q31_t)0x7deae8f7, (q31_t)0x7de662b3, (q31_t)0x7de1d795, - (q31_t)0x7ddd479d, (q31_t)0x7dd8b2ca, - (q31_t)0x7dd4191d, (q31_t)0x7dcf7a96, (q31_t)0x7dcad736, (q31_t)0x7dc62efc, (q31_t)0x7dc181e8, (q31_t)0x7dbccffc, - (q31_t)0x7db81936, (q31_t)0x7db35d98, - (q31_t)0x7dae9d21, (q31_t)0x7da9d7d2, (q31_t)0x7da50dab, (q31_t)0x7da03eab, (q31_t)0x7d9b6ad3, (q31_t)0x7d969224, - (q31_t)0x7d91b49e, (q31_t)0x7d8cd240, - (q31_t)0x7d87eb0a, (q31_t)0x7d82fefe, (q31_t)0x7d7e0e1c, (q31_t)0x7d791862, (q31_t)0x7d741dd2, (q31_t)0x7d6f1e6c, - (q31_t)0x7d6a1a31, (q31_t)0x7d65111f, - (q31_t)0x7d600338, (q31_t)0x7d5af07b, (q31_t)0x7d55d8e9, (q31_t)0x7d50bc82, (q31_t)0x7d4b9b46, (q31_t)0x7d467536, - (q31_t)0x7d414a51, (q31_t)0x7d3c1a98, - (q31_t)0x7d36e60b, (q31_t)0x7d31acaa, (q31_t)0x7d2c6e76, (q31_t)0x7d272b6e, (q31_t)0x7d21e393, (q31_t)0x7d1c96e5, - (q31_t)0x7d174564, (q31_t)0x7d11ef11, - (q31_t)0x7d0c93eb, (q31_t)0x7d0733f3, (q31_t)0x7d01cf29, (q31_t)0x7cfc658d, (q31_t)0x7cf6f720, (q31_t)0x7cf183e1, - (q31_t)0x7cec0bd1, (q31_t)0x7ce68ef0, - (q31_t)0x7ce10d3f, (q31_t)0x7cdb86bd, (q31_t)0x7cd5fb6a, (q31_t)0x7cd06b48, (q31_t)0x7ccad656, (q31_t)0x7cc53c94, - (q31_t)0x7cbf9e03, (q31_t)0x7cb9faa2, - (q31_t)0x7cb45272, (q31_t)0x7caea574, (q31_t)0x7ca8f3a7, (q31_t)0x7ca33d0c, (q31_t)0x7c9d81a3, (q31_t)0x7c97c16b, - (q31_t)0x7c91fc66, (q31_t)0x7c8c3294, - (q31_t)0x7c8663f4, (q31_t)0x7c809088, (q31_t)0x7c7ab84e, (q31_t)0x7c74db48, (q31_t)0x7c6ef976, (q31_t)0x7c6912d7, - (q31_t)0x7c63276d, (q31_t)0x7c5d3737, - (q31_t)0x7c574236, (q31_t)0x7c514869, (q31_t)0x7c4b49d2, (q31_t)0x7c45466f, (q31_t)0x7c3f3e42, (q31_t)0x7c39314b, - (q31_t)0x7c331f8a, (q31_t)0x7c2d08ff, - (q31_t)0x7c26edab, (q31_t)0x7c20cd8d, (q31_t)0x7c1aa8a6, (q31_t)0x7c147ef6, (q31_t)0x7c0e507e, (q31_t)0x7c081d3d, - (q31_t)0x7c01e534, (q31_t)0x7bfba863, - (q31_t)0x7bf566cb, (q31_t)0x7bef206b, (q31_t)0x7be8d544, (q31_t)0x7be28556, (q31_t)0x7bdc30a1, (q31_t)0x7bd5d726, - (q31_t)0x7bcf78e5, (q31_t)0x7bc915dd, - (q31_t)0x7bc2ae10, (q31_t)0x7bbc417e, (q31_t)0x7bb5d026, (q31_t)0x7baf5a09, (q31_t)0x7ba8df28, (q31_t)0x7ba25f82, - (q31_t)0x7b9bdb18, (q31_t)0x7b9551ea, - (q31_t)0x7b8ec3f8, (q31_t)0x7b883143, (q31_t)0x7b8199ca, (q31_t)0x7b7afd8f, (q31_t)0x7b745c91, (q31_t)0x7b6db6d0, - (q31_t)0x7b670c4d, (q31_t)0x7b605d09, - (q31_t)0x7b59a902, (q31_t)0x7b52f03a, (q31_t)0x7b4c32b1, (q31_t)0x7b457068, (q31_t)0x7b3ea95d, (q31_t)0x7b37dd92, - (q31_t)0x7b310d07, (q31_t)0x7b2a37bc, - (q31_t)0x7b235db2, (q31_t)0x7b1c7ee8, (q31_t)0x7b159b5f, (q31_t)0x7b0eb318, (q31_t)0x7b07c612, (q31_t)0x7b00d44d, - (q31_t)0x7af9ddcb, (q31_t)0x7af2e28b, - (q31_t)0x7aebe28d, (q31_t)0x7ae4ddd2, (q31_t)0x7addd45b, (q31_t)0x7ad6c626, (q31_t)0x7acfb336, (q31_t)0x7ac89b89, - (q31_t)0x7ac17f20, (q31_t)0x7aba5dfc, - (q31_t)0x7ab3381d, (q31_t)0x7aac0d82, (q31_t)0x7aa4de2d, (q31_t)0x7a9daa1d, (q31_t)0x7a967153, (q31_t)0x7a8f33d0, - (q31_t)0x7a87f192, (q31_t)0x7a80aa9c, - (q31_t)0x7a795eec, (q31_t)0x7a720e84, (q31_t)0x7a6ab963, (q31_t)0x7a635f8a, (q31_t)0x7a5c00f9, (q31_t)0x7a549db0, - (q31_t)0x7a4d35b0, (q31_t)0x7a45c8f9, - (q31_t)0x7a3e578b, (q31_t)0x7a36e166, (q31_t)0x7a2f668c, (q31_t)0x7a27e6fb, (q31_t)0x7a2062b5, (q31_t)0x7a18d9b9, - (q31_t)0x7a114c09, (q31_t)0x7a09b9a4, - (q31_t)0x7a02228a, (q31_t)0x79fa86bc, (q31_t)0x79f2e63a, (q31_t)0x79eb4105, (q31_t)0x79e3971c, (q31_t)0x79dbe880, - (q31_t)0x79d43532, (q31_t)0x79cc7d31, - (q31_t)0x79c4c07e, (q31_t)0x79bcff19, (q31_t)0x79b53903, (q31_t)0x79ad6e3c, (q31_t)0x79a59ec3, (q31_t)0x799dca9a, - (q31_t)0x7995f1c1, (q31_t)0x798e1438, - (q31_t)0x798631ff, (q31_t)0x797e4b16, (q31_t)0x79765f7f, (q31_t)0x796e6f39, (q31_t)0x79667a44, (q31_t)0x795e80a1, - (q31_t)0x79568250, (q31_t)0x794e7f52, - (q31_t)0x794677a6, (q31_t)0x793e6b4e, (q31_t)0x79365a49, (q31_t)0x792e4497, (q31_t)0x79262a3a, (q31_t)0x791e0b31, - (q31_t)0x7915e77c, (q31_t)0x790dbf1d, - (q31_t)0x79059212, (q31_t)0x78fd605d, (q31_t)0x78f529fe, (q31_t)0x78eceef6, (q31_t)0x78e4af44, (q31_t)0x78dc6ae8, - (q31_t)0x78d421e4, (q31_t)0x78cbd437, - (q31_t)0x78c381e2, (q31_t)0x78bb2ae5, (q31_t)0x78b2cf41, (q31_t)0x78aa6ef5, (q31_t)0x78a20a03, (q31_t)0x7899a06a, - (q31_t)0x7891322a, (q31_t)0x7888bf45, - (q31_t)0x788047ba, (q31_t)0x7877cb89, (q31_t)0x786f4ab4, (q31_t)0x7866c53a, (q31_t)0x785e3b1c, (q31_t)0x7855ac5a, - (q31_t)0x784d18f4, (q31_t)0x784480ea, - (q31_t)0x783be43e, (q31_t)0x783342ef, (q31_t)0x782a9cfe, (q31_t)0x7821f26b, (q31_t)0x78194336, (q31_t)0x78108f60, - (q31_t)0x7807d6e9, (q31_t)0x77ff19d1, - (q31_t)0x77f65819, (q31_t)0x77ed91c0, (q31_t)0x77e4c6c9, (q31_t)0x77dbf732, (q31_t)0x77d322fc, (q31_t)0x77ca4a27, - (q31_t)0x77c16cb4, (q31_t)0x77b88aa3, - (q31_t)0x77afa3f5, (q31_t)0x77a6b8a9, (q31_t)0x779dc8c0, (q31_t)0x7794d43b, (q31_t)0x778bdb19, (q31_t)0x7782dd5c, - (q31_t)0x7779db03, (q31_t)0x7770d40f, - (q31_t)0x7767c880, (q31_t)0x775eb857, (q31_t)0x7755a394, (q31_t)0x774c8a36, (q31_t)0x77436c40, (q31_t)0x773a49b0, - (q31_t)0x77312287, (q31_t)0x7727f6c6, - (q31_t)0x771ec66e, (q31_t)0x7715917d, (q31_t)0x770c57f5, (q31_t)0x770319d6, (q31_t)0x76f9d721, (q31_t)0x76f08fd5, - (q31_t)0x76e743f4, (q31_t)0x76ddf37c, - (q31_t)0x76d49e70, (q31_t)0x76cb44cf, (q31_t)0x76c1e699, (q31_t)0x76b883d0, (q31_t)0x76af1c72, (q31_t)0x76a5b082, - (q31_t)0x769c3ffe, (q31_t)0x7692cae8, - (q31_t)0x7689513f, (q31_t)0x767fd304, (q31_t)0x76765038, (q31_t)0x766cc8db, (q31_t)0x76633ced, (q31_t)0x7659ac6f, - (q31_t)0x76501760, (q31_t)0x76467dc2, - (q31_t)0x763cdf94, (q31_t)0x76333cd8, (q31_t)0x7629958c, (q31_t)0x761fe9b3, (q31_t)0x7616394c, (q31_t)0x760c8457, - (q31_t)0x7602cad5, (q31_t)0x75f90cc7, - (q31_t)0x75ef4a2c, (q31_t)0x75e58305, (q31_t)0x75dbb753, (q31_t)0x75d1e715, (q31_t)0x75c8124d, (q31_t)0x75be38fa, - (q31_t)0x75b45b1d, (q31_t)0x75aa78b6, - (q31_t)0x75a091c6, (q31_t)0x7596a64d, (q31_t)0x758cb64c, (q31_t)0x7582c1c2, (q31_t)0x7578c8b0, (q31_t)0x756ecb18, - (q31_t)0x7564c8f8, (q31_t)0x755ac251, - (q31_t)0x7550b725, (q31_t)0x7546a772, (q31_t)0x753c933a, (q31_t)0x75327a7d, (q31_t)0x75285d3b, (q31_t)0x751e3b75, - (q31_t)0x7514152b, (q31_t)0x7509ea5d, - (q31_t)0x74ffbb0d, (q31_t)0x74f58739, (q31_t)0x74eb4ee3, (q31_t)0x74e1120c, (q31_t)0x74d6d0b2, (q31_t)0x74cc8ad8, - (q31_t)0x74c2407d, (q31_t)0x74b7f1a1, - (q31_t)0x74ad9e46, (q31_t)0x74a3466b, (q31_t)0x7498ea11, (q31_t)0x748e8938, (q31_t)0x748423e0, (q31_t)0x7479ba0b, - (q31_t)0x746f4bb8, (q31_t)0x7464d8e8, - (q31_t)0x745a619b, (q31_t)0x744fe5d2, (q31_t)0x7445658d, (q31_t)0x743ae0cc, (q31_t)0x74305790, (q31_t)0x7425c9da, - (q31_t)0x741b37a9, (q31_t)0x7410a0fe, - (q31_t)0x740605d9, (q31_t)0x73fb663c, (q31_t)0x73f0c226, (q31_t)0x73e61997, (q31_t)0x73db6c91, (q31_t)0x73d0bb13, - (q31_t)0x73c6051f, (q31_t)0x73bb4ab3, - (q31_t)0x73b08bd1, (q31_t)0x73a5c87a, (q31_t)0x739b00ad, (q31_t)0x7390346b, (q31_t)0x738563b5, (q31_t)0x737a8e8a, - (q31_t)0x736fb4ec, (q31_t)0x7364d6da, - (q31_t)0x7359f456, (q31_t)0x734f0d5f, (q31_t)0x734421f6, (q31_t)0x7339321b, (q31_t)0x732e3dcf, (q31_t)0x73234512, - (q31_t)0x731847e5, (q31_t)0x730d4648, - (q31_t)0x7302403c, (q31_t)0x72f735c0, (q31_t)0x72ec26d6, (q31_t)0x72e1137d, (q31_t)0x72d5fbb7, (q31_t)0x72cadf83, - (q31_t)0x72bfbee3, (q31_t)0x72b499d6, - (q31_t)0x72a9705c, (q31_t)0x729e4277, (q31_t)0x72931027, (q31_t)0x7287d96c, (q31_t)0x727c9e47, (q31_t)0x72715eb8, - (q31_t)0x72661abf, (q31_t)0x725ad25d, - (q31_t)0x724f8593, (q31_t)0x72443460, (q31_t)0x7238dec5, (q31_t)0x722d84c4, (q31_t)0x7222265b, (q31_t)0x7216c38c, - (q31_t)0x720b5c57, (q31_t)0x71fff0bc, - (q31_t)0x71f480bc, (q31_t)0x71e90c57, (q31_t)0x71dd938f, (q31_t)0x71d21662, (q31_t)0x71c694d2, (q31_t)0x71bb0edf, - (q31_t)0x71af848a, (q31_t)0x71a3f5d2, - (q31_t)0x719862b9, (q31_t)0x718ccb3f, (q31_t)0x71812f65, (q31_t)0x71758f29, (q31_t)0x7169ea8f, (q31_t)0x715e4194, - (q31_t)0x7152943b, (q31_t)0x7146e284, - (q31_t)0x713b2c6e, (q31_t)0x712f71fb, (q31_t)0x7123b32b, (q31_t)0x7117effe, (q31_t)0x710c2875, (q31_t)0x71005c90, - (q31_t)0x70f48c50, (q31_t)0x70e8b7b5, - (q31_t)0x70dcdec0, (q31_t)0x70d10171, (q31_t)0x70c51fc8, (q31_t)0x70b939c7, (q31_t)0x70ad4f6d, (q31_t)0x70a160ba, - (q31_t)0x70956db1, (q31_t)0x70897650, - (q31_t)0x707d7a98, (q31_t)0x70717a8a, (q31_t)0x70657626, (q31_t)0x70596d6d, (q31_t)0x704d6060, (q31_t)0x70414efd, - (q31_t)0x70353947, (q31_t)0x70291f3e, - (q31_t)0x701d00e1, (q31_t)0x7010de32, (q31_t)0x7004b731, (q31_t)0x6ff88bde, (q31_t)0x6fec5c3b, (q31_t)0x6fe02846, - (q31_t)0x6fd3f001, (q31_t)0x6fc7b36d, - (q31_t)0x6fbb728a, (q31_t)0x6faf2d57, (q31_t)0x6fa2e3d7, (q31_t)0x6f969608, (q31_t)0x6f8a43ed, (q31_t)0x6f7ded84, - (q31_t)0x6f7192cf, (q31_t)0x6f6533ce, - (q31_t)0x6f58d082, (q31_t)0x6f4c68eb, (q31_t)0x6f3ffd09, (q31_t)0x6f338cde, (q31_t)0x6f271868, (q31_t)0x6f1a9faa, - (q31_t)0x6f0e22a3, (q31_t)0x6f01a155, - (q31_t)0x6ef51bbe, (q31_t)0x6ee891e1, (q31_t)0x6edc03bc, (q31_t)0x6ecf7152, (q31_t)0x6ec2daa2, (q31_t)0x6eb63fad, - (q31_t)0x6ea9a073, (q31_t)0x6e9cfcf5, - (q31_t)0x6e905534, (q31_t)0x6e83a92f, (q31_t)0x6e76f8e7, (q31_t)0x6e6a445d, (q31_t)0x6e5d8b91, (q31_t)0x6e50ce84, - (q31_t)0x6e440d37, (q31_t)0x6e3747a9, - (q31_t)0x6e2a7ddb, (q31_t)0x6e1dafce, (q31_t)0x6e10dd82, (q31_t)0x6e0406f8, (q31_t)0x6df72c30, (q31_t)0x6dea4d2b, - (q31_t)0x6ddd69e9, (q31_t)0x6dd0826a, - (q31_t)0x6dc396b0, (q31_t)0x6db6a6ba, (q31_t)0x6da9b28a, (q31_t)0x6d9cba1f, (q31_t)0x6d8fbd7a, (q31_t)0x6d82bc9d, - (q31_t)0x6d75b786, (q31_t)0x6d68ae37, - (q31_t)0x6d5ba0b0, (q31_t)0x6d4e8ef2, (q31_t)0x6d4178fd, (q31_t)0x6d345ed1, (q31_t)0x6d274070, (q31_t)0x6d1a1dda, - (q31_t)0x6d0cf70f, (q31_t)0x6cffcc0f, - (q31_t)0x6cf29cdc, (q31_t)0x6ce56975, (q31_t)0x6cd831dc, (q31_t)0x6ccaf610, (q31_t)0x6cbdb613, (q31_t)0x6cb071e4, - (q31_t)0x6ca32985, (q31_t)0x6c95dcf6, - (q31_t)0x6c888c36, (q31_t)0x6c7b3748, (q31_t)0x6c6dde2b, (q31_t)0x6c6080e0, (q31_t)0x6c531f67, (q31_t)0x6c45b9c1, - (q31_t)0x6c384fef, (q31_t)0x6c2ae1f0, - (q31_t)0x6c1d6fc6, (q31_t)0x6c0ff971, (q31_t)0x6c027ef1, (q31_t)0x6bf50047, (q31_t)0x6be77d74, (q31_t)0x6bd9f677, - (q31_t)0x6bcc6b53, (q31_t)0x6bbedc06, - (q31_t)0x6bb14892, (q31_t)0x6ba3b0f7, (q31_t)0x6b961536, (q31_t)0x6b88754f, (q31_t)0x6b7ad142, (q31_t)0x6b6d2911, - (q31_t)0x6b5f7cbc, (q31_t)0x6b51cc42, - (q31_t)0x6b4417a6, (q31_t)0x6b365ee7, (q31_t)0x6b28a206, (q31_t)0x6b1ae103, (q31_t)0x6b0d1bdf, (q31_t)0x6aff529a, - (q31_t)0x6af18536, (q31_t)0x6ae3b3b2, - (q31_t)0x6ad5de0f, (q31_t)0x6ac8044e, (q31_t)0x6aba266e, (q31_t)0x6aac4472, (q31_t)0x6a9e5e58, (q31_t)0x6a907423, - (q31_t)0x6a8285d1, (q31_t)0x6a749365, - (q31_t)0x6a669cdd, (q31_t)0x6a58a23c, (q31_t)0x6a4aa381, (q31_t)0x6a3ca0ad, (q31_t)0x6a2e99c0, (q31_t)0x6a208ebb, - (q31_t)0x6a127f9f, (q31_t)0x6a046c6c, - (q31_t)0x69f65523, (q31_t)0x69e839c4, (q31_t)0x69da1a50, (q31_t)0x69cbf6c7, (q31_t)0x69bdcf29, (q31_t)0x69afa378, - (q31_t)0x69a173b5, (q31_t)0x69933fde, - (q31_t)0x698507f6, (q31_t)0x6976cbfc, (q31_t)0x69688bf1, (q31_t)0x695a47d6, (q31_t)0x694bffab, (q31_t)0x693db371, - (q31_t)0x692f6328, (q31_t)0x69210ed1, - (q31_t)0x6912b66c, (q31_t)0x690459fb, (q31_t)0x68f5f97d, (q31_t)0x68e794f3, (q31_t)0x68d92c5d, (q31_t)0x68cabfbd, - (q31_t)0x68bc4f13, (q31_t)0x68adda5f, - (q31_t)0x689f61a1, (q31_t)0x6890e4dc, (q31_t)0x6882640e, (q31_t)0x6873df38, (q31_t)0x6865565c, (q31_t)0x6856c979, - (q31_t)0x68483891, (q31_t)0x6839a3a4, - (q31_t)0x682b0ab1, (q31_t)0x681c6dbb, (q31_t)0x680dccc1, (q31_t)0x67ff27c4, (q31_t)0x67f07ec5, (q31_t)0x67e1d1c4, - (q31_t)0x67d320c1, (q31_t)0x67c46bbe, - (q31_t)0x67b5b2bb, (q31_t)0x67a6f5b8, (q31_t)0x679834b6, (q31_t)0x67896fb6, (q31_t)0x677aa6b8, (q31_t)0x676bd9bd, - (q31_t)0x675d08c4, (q31_t)0x674e33d0, - (q31_t)0x673f5ae0, (q31_t)0x67307df5, (q31_t)0x67219d10, (q31_t)0x6712b831, (q31_t)0x6703cf58, (q31_t)0x66f4e287, - (q31_t)0x66e5f1be, (q31_t)0x66d6fcfd, - (q31_t)0x66c80445, (q31_t)0x66b90797, (q31_t)0x66aa06f3, (q31_t)0x669b0259, (q31_t)0x668bf9cb, (q31_t)0x667ced49, - (q31_t)0x666ddcd3, (q31_t)0x665ec86b, - (q31_t)0x664fb010, (q31_t)0x664093c3, (q31_t)0x66317385, (q31_t)0x66224f56, (q31_t)0x66132738, (q31_t)0x6603fb2a, - (q31_t)0x65f4cb2d, (q31_t)0x65e59742, - (q31_t)0x65d65f69, (q31_t)0x65c723a3, (q31_t)0x65b7e3f1, (q31_t)0x65a8a052, (q31_t)0x659958c9, (q31_t)0x658a0d54, - (q31_t)0x657abdf6, (q31_t)0x656b6aae, - (q31_t)0x655c137d, (q31_t)0x654cb863, (q31_t)0x653d5962, (q31_t)0x652df679, (q31_t)0x651e8faa, (q31_t)0x650f24f5, - (q31_t)0x64ffb65b, (q31_t)0x64f043dc, - (q31_t)0x64e0cd78, (q31_t)0x64d15331, (q31_t)0x64c1d507, (q31_t)0x64b252fa, (q31_t)0x64a2cd0c, (q31_t)0x6493433c, - (q31_t)0x6483b58c, (q31_t)0x647423fb, - (q31_t)0x64648e8c, (q31_t)0x6454f53d, (q31_t)0x64455810, (q31_t)0x6435b706, (q31_t)0x6426121e, (q31_t)0x6416695a, - (q31_t)0x6406bcba, (q31_t)0x63f70c3f, - (q31_t)0x63e757ea, (q31_t)0x63d79fba, (q31_t)0x63c7e3b1, (q31_t)0x63b823cf, (q31_t)0x63a86015, (q31_t)0x63989884, - (q31_t)0x6388cd1b, (q31_t)0x6378fddc, - (q31_t)0x63692ac7, (q31_t)0x635953dd, (q31_t)0x6349791f, (q31_t)0x63399a8d, (q31_t)0x6329b827, (q31_t)0x6319d1ef, - (q31_t)0x6309e7e4, (q31_t)0x62f9fa09, - (q31_t)0x62ea085c, (q31_t)0x62da12df, (q31_t)0x62ca1992, (q31_t)0x62ba1c77, (q31_t)0x62aa1b8d, (q31_t)0x629a16d5, - (q31_t)0x628a0e50, (q31_t)0x627a01fe, - (q31_t)0x6269f1e1, (q31_t)0x6259ddf8, (q31_t)0x6249c645, (q31_t)0x6239aac7, (q31_t)0x62298b81, (q31_t)0x62196871, - (q31_t)0x62094199, (q31_t)0x61f916f9, - (q31_t)0x61e8e893, (q31_t)0x61d8b666, (q31_t)0x61c88074, (q31_t)0x61b846bc, (q31_t)0x61a80940, (q31_t)0x6197c800, - (q31_t)0x618782fd, (q31_t)0x61773a37, - (q31_t)0x6166edb0, (q31_t)0x61569d67, (q31_t)0x6146495d, (q31_t)0x6135f193, (q31_t)0x6125960a, (q31_t)0x611536c2, - (q31_t)0x6104d3bc, (q31_t)0x60f46cf9, - (q31_t)0x60e40278, (q31_t)0x60d3943b, (q31_t)0x60c32243, (q31_t)0x60b2ac8f, (q31_t)0x60a23322, (q31_t)0x6091b5fa, - (q31_t)0x60813519, (q31_t)0x6070b080, - (q31_t)0x6060282f, (q31_t)0x604f9c27, (q31_t)0x603f0c69, (q31_t)0x602e78f4, (q31_t)0x601de1ca, (q31_t)0x600d46ec, - (q31_t)0x5ffca859, (q31_t)0x5fec0613, - (q31_t)0x5fdb601b, (q31_t)0x5fcab670, (q31_t)0x5fba0914, (q31_t)0x5fa95807, (q31_t)0x5f98a34a, (q31_t)0x5f87eade, - (q31_t)0x5f772ec2, (q31_t)0x5f666ef9, - (q31_t)0x5f55ab82, (q31_t)0x5f44e45e, (q31_t)0x5f34198e, (q31_t)0x5f234b12, (q31_t)0x5f1278eb, (q31_t)0x5f01a31a, - (q31_t)0x5ef0c99f, (q31_t)0x5edfec7b, - (q31_t)0x5ecf0baf, (q31_t)0x5ebe273b, (q31_t)0x5ead3f1f, (q31_t)0x5e9c535e, (q31_t)0x5e8b63f7, (q31_t)0x5e7a70ea, - (q31_t)0x5e697a39, (q31_t)0x5e587fe5, - (q31_t)0x5e4781ed, (q31_t)0x5e368053, (q31_t)0x5e257b17, (q31_t)0x5e147239, (q31_t)0x5e0365bb, (q31_t)0x5df2559e, - (q31_t)0x5de141e1, (q31_t)0x5dd02a85, - (q31_t)0x5dbf0f8c, (q31_t)0x5dadf0f5, (q31_t)0x5d9ccec2, (q31_t)0x5d8ba8f3, (q31_t)0x5d7a7f88, (q31_t)0x5d695283, - (q31_t)0x5d5821e4, (q31_t)0x5d46edac, - (q31_t)0x5d35b5db, (q31_t)0x5d247a72, (q31_t)0x5d133b72, (q31_t)0x5d01f8dc, (q31_t)0x5cf0b2af, (q31_t)0x5cdf68ed, - (q31_t)0x5cce1b97, (q31_t)0x5cbccaac, - (q31_t)0x5cab762f, (q31_t)0x5c9a1e1e, (q31_t)0x5c88c27c, (q31_t)0x5c776348, (q31_t)0x5c660084, (q31_t)0x5c549a30, - (q31_t)0x5c43304d, (q31_t)0x5c31c2db, - (q31_t)0x5c2051db, (q31_t)0x5c0edd4e, (q31_t)0x5bfd6534, (q31_t)0x5bebe98e, (q31_t)0x5bda6a5d, (q31_t)0x5bc8e7a2, - (q31_t)0x5bb7615d, (q31_t)0x5ba5d78e, - (q31_t)0x5b944a37, (q31_t)0x5b82b958, (q31_t)0x5b7124f2, (q31_t)0x5b5f8d06, (q31_t)0x5b4df193, (q31_t)0x5b3c529c, - (q31_t)0x5b2ab020, (q31_t)0x5b190a20, - (q31_t)0x5b07609d, (q31_t)0x5af5b398, (q31_t)0x5ae40311, (q31_t)0x5ad24f09, (q31_t)0x5ac09781, (q31_t)0x5aaedc78, - (q31_t)0x5a9d1df1, (q31_t)0x5a8b5bec, - (q31_t)0x5a799669, (q31_t)0x5a67cd69, (q31_t)0x5a5600ec, (q31_t)0x5a4430f5, (q31_t)0x5a325d82, (q31_t)0x5a208695, - (q31_t)0x5a0eac2e, (q31_t)0x59fcce4f, - (q31_t)0x59eaecf8, (q31_t)0x59d90829, (q31_t)0x59c71fe3, (q31_t)0x59b53427, (q31_t)0x59a344f6, (q31_t)0x59915250, - (q31_t)0x597f5c36, (q31_t)0x596d62a9, - (q31_t)0x595b65aa, (q31_t)0x59496538, (q31_t)0x59376155, (q31_t)0x59255a02, (q31_t)0x59134f3e, (q31_t)0x5901410c, - (q31_t)0x58ef2f6b, (q31_t)0x58dd1a5d, - (q31_t)0x58cb01e1, (q31_t)0x58b8e5f9, (q31_t)0x58a6c6a5, (q31_t)0x5894a3e7, (q31_t)0x58827dbe, (q31_t)0x5870542c, - (q31_t)0x585e2730, (q31_t)0x584bf6cd, - (q31_t)0x5839c302, (q31_t)0x58278bd1, (q31_t)0x58155139, (q31_t)0x5803133c, (q31_t)0x57f0d1da, (q31_t)0x57de8d15, - (q31_t)0x57cc44ec, (q31_t)0x57b9f960, - (q31_t)0x57a7aa73, (q31_t)0x57955825, (q31_t)0x57830276, (q31_t)0x5770a968, (q31_t)0x575e4cfa, (q31_t)0x574bed2f, - (q31_t)0x57398a05, (q31_t)0x5727237f, - (q31_t)0x5714b99d, (q31_t)0x57024c5f, (q31_t)0x56efdbc7, (q31_t)0x56dd67d4, (q31_t)0x56caf088, (q31_t)0x56b875e4, - (q31_t)0x56a5f7e7, (q31_t)0x56937694, - (q31_t)0x5680f1ea, (q31_t)0x566e69ea, (q31_t)0x565bde95, (q31_t)0x56494fec, (q31_t)0x5636bdef, (q31_t)0x5624289f, - (q31_t)0x56118ffe, (q31_t)0x55fef40a, - (q31_t)0x55ec54c6, (q31_t)0x55d9b232, (q31_t)0x55c70c4f, (q31_t)0x55b4631d, (q31_t)0x55a1b69d, (q31_t)0x558f06d0, - (q31_t)0x557c53b6, (q31_t)0x55699d51, - (q31_t)0x5556e3a1, (q31_t)0x554426a7, (q31_t)0x55316663, (q31_t)0x551ea2d6, (q31_t)0x550bdc01, (q31_t)0x54f911e5, - (q31_t)0x54e64482, (q31_t)0x54d373d9, - (q31_t)0x54c09feb, (q31_t)0x54adc8b8, (q31_t)0x549aee42, (q31_t)0x54881089, (q31_t)0x54752f8d, (q31_t)0x54624b50, - (q31_t)0x544f63d2, (q31_t)0x543c7914, - (q31_t)0x54298b17, (q31_t)0x541699db, (q31_t)0x5403a561, (q31_t)0x53f0adaa, (q31_t)0x53ddb2b6, (q31_t)0x53cab486, - (q31_t)0x53b7b31c, (q31_t)0x53a4ae77, - (q31_t)0x5391a699, (q31_t)0x537e9b82, (q31_t)0x536b8d33, (q31_t)0x53587bad, (q31_t)0x534566f0, (q31_t)0x53324efd, - (q31_t)0x531f33d5, (q31_t)0x530c1579, - (q31_t)0x52f8f3e9, (q31_t)0x52e5cf27, (q31_t)0x52d2a732, (q31_t)0x52bf7c0b, (q31_t)0x52ac4db4, (q31_t)0x52991c2d, - (q31_t)0x5285e777, (q31_t)0x5272af92, - (q31_t)0x525f7480, (q31_t)0x524c3640, (q31_t)0x5238f4d4, (q31_t)0x5225b03d, (q31_t)0x5212687b, (q31_t)0x51ff1d8f, - (q31_t)0x51ebcf7a, (q31_t)0x51d87e3c, - (q31_t)0x51c529d7, (q31_t)0x51b1d24a, (q31_t)0x519e7797, (q31_t)0x518b19bf, (q31_t)0x5177b8c2, (q31_t)0x516454a0, - (q31_t)0x5150ed5c, (q31_t)0x513d82f4, - (q31_t)0x512a156b, (q31_t)0x5116a4c1, (q31_t)0x510330f7, (q31_t)0x50efba0d, (q31_t)0x50dc4005, (q31_t)0x50c8c2de, - (q31_t)0x50b5429a, (q31_t)0x50a1bf39, - (q31_t)0x508e38bd, (q31_t)0x507aaf25, (q31_t)0x50672273, (q31_t)0x505392a8, (q31_t)0x503fffc4, (q31_t)0x502c69c8, - (q31_t)0x5018d0b4, (q31_t)0x5005348a, - (q31_t)0x4ff1954b, (q31_t)0x4fddf2f6, (q31_t)0x4fca4d8d, (q31_t)0x4fb6a510, (q31_t)0x4fa2f981, (q31_t)0x4f8f4ae0, - (q31_t)0x4f7b992d, (q31_t)0x4f67e46a, - (q31_t)0x4f542c98, (q31_t)0x4f4071b6, (q31_t)0x4f2cb3c7, (q31_t)0x4f18f2c9, (q31_t)0x4f052ec0, (q31_t)0x4ef167aa, - (q31_t)0x4edd9d89, (q31_t)0x4ec9d05e, - (q31_t)0x4eb60029, (q31_t)0x4ea22ceb, (q31_t)0x4e8e56a5, (q31_t)0x4e7a7d58, (q31_t)0x4e66a105, (q31_t)0x4e52c1ab, - (q31_t)0x4e3edf4d, (q31_t)0x4e2af9ea, - (q31_t)0x4e171184, (q31_t)0x4e03261b, (q31_t)0x4def37b0, (q31_t)0x4ddb4644, (q31_t)0x4dc751d8, (q31_t)0x4db35a6c, - (q31_t)0x4d9f6001, (q31_t)0x4d8b6298, - (q31_t)0x4d776231, (q31_t)0x4d635ece, (q31_t)0x4d4f5870, (q31_t)0x4d3b4f16, (q31_t)0x4d2742c2, (q31_t)0x4d133374, - (q31_t)0x4cff212e, (q31_t)0x4ceb0bf0, - (q31_t)0x4cd6f3bb, (q31_t)0x4cc2d88f, (q31_t)0x4caeba6e, (q31_t)0x4c9a9958, (q31_t)0x4c86754e, (q31_t)0x4c724e50, - (q31_t)0x4c5e2460, (q31_t)0x4c49f77f, - (q31_t)0x4c35c7ac, (q31_t)0x4c2194e9, (q31_t)0x4c0d5f37, (q31_t)0x4bf92697, (q31_t)0x4be4eb08, (q31_t)0x4bd0ac8d, - (q31_t)0x4bbc6b25, (q31_t)0x4ba826d1, - (q31_t)0x4b93df93, (q31_t)0x4b7f956b, (q31_t)0x4b6b485a, (q31_t)0x4b56f861, (q31_t)0x4b42a580, (q31_t)0x4b2e4fb8, - (q31_t)0x4b19f70a, (q31_t)0x4b059b77, - (q31_t)0x4af13d00, (q31_t)0x4adcdba5, (q31_t)0x4ac87767, (q31_t)0x4ab41046, (q31_t)0x4a9fa645, (q31_t)0x4a8b3963, - (q31_t)0x4a76c9a2, (q31_t)0x4a625701, - (q31_t)0x4a4de182, (q31_t)0x4a396926, (q31_t)0x4a24edee, (q31_t)0x4a106fda, (q31_t)0x49fbeeea, (q31_t)0x49e76b21, - (q31_t)0x49d2e47e, (q31_t)0x49be5b02, - (q31_t)0x49a9ceaf, (q31_t)0x49953f84, (q31_t)0x4980ad84, (q31_t)0x496c18ae, (q31_t)0x49578103, (q31_t)0x4942e684, - (q31_t)0x492e4933, (q31_t)0x4919a90f, - (q31_t)0x4905061a, (q31_t)0x48f06054, (q31_t)0x48dbb7be, (q31_t)0x48c70c59, (q31_t)0x48b25e25, (q31_t)0x489dad25, - (q31_t)0x4888f957, (q31_t)0x487442be, - (q31_t)0x485f8959, (q31_t)0x484acd2a, (q31_t)0x48360e32, (q31_t)0x48214c71, (q31_t)0x480c87e8, (q31_t)0x47f7c099, - (q31_t)0x47e2f682, (q31_t)0x47ce29a7, - (q31_t)0x47b95a06, (q31_t)0x47a487a2, (q31_t)0x478fb27b, (q31_t)0x477ada91, (q31_t)0x4765ffe6, (q31_t)0x4751227a, - (q31_t)0x473c424e, (q31_t)0x47275f63, - (q31_t)0x471279ba, (q31_t)0x46fd9154, (q31_t)0x46e8a631, (q31_t)0x46d3b852, (q31_t)0x46bec7b8, (q31_t)0x46a9d464, - (q31_t)0x4694de56, (q31_t)0x467fe590, - (q31_t)0x466aea12, (q31_t)0x4655ebdd, (q31_t)0x4640eaf2, (q31_t)0x462be751, (q31_t)0x4616e0fc, (q31_t)0x4601d7f3, - (q31_t)0x45eccc37, (q31_t)0x45d7bdc9, - (q31_t)0x45c2acaa, (q31_t)0x45ad98da, (q31_t)0x4598825a, (q31_t)0x4583692c, (q31_t)0x456e4d4f, (q31_t)0x45592ec6, - (q31_t)0x45440d90, (q31_t)0x452ee9ae, - (q31_t)0x4519c321, (q31_t)0x450499eb, (q31_t)0x44ef6e0b, (q31_t)0x44da3f83, (q31_t)0x44c50e53, (q31_t)0x44afda7d, - (q31_t)0x449aa400, (q31_t)0x44856adf, - (q31_t)0x44702f19, (q31_t)0x445af0b0, (q31_t)0x4445afa4, (q31_t)0x44306bf6, (q31_t)0x441b25a8, (q31_t)0x4405dcb9, - (q31_t)0x43f0912b, (q31_t)0x43db42fe, - (q31_t)0x43c5f234, (q31_t)0x43b09ecc, (q31_t)0x439b48c9, (q31_t)0x4385f02a, (q31_t)0x437094f1, (q31_t)0x435b371f, - (q31_t)0x4345d6b3, (q31_t)0x433073b0, - (q31_t)0x431b0e15, (q31_t)0x4305a5e5, (q31_t)0x42f03b1e, (q31_t)0x42dacdc3, (q31_t)0x42c55dd4, (q31_t)0x42afeb53, - (q31_t)0x429a763f, (q31_t)0x4284fe99, - (q31_t)0x426f8463, (q31_t)0x425a079e, (q31_t)0x42448849, (q31_t)0x422f0667, (q31_t)0x421981f7, (q31_t)0x4203fafb, - (q31_t)0x41ee7174, (q31_t)0x41d8e561, - (q31_t)0x41c356c5, (q31_t)0x41adc5a0, (q31_t)0x419831f3, (q31_t)0x41829bbe, (q31_t)0x416d0302, (q31_t)0x415767c1, - (q31_t)0x4141c9fb, (q31_t)0x412c29b1, - (q31_t)0x411686e4, (q31_t)0x4100e194, (q31_t)0x40eb39c3, (q31_t)0x40d58f71, (q31_t)0x40bfe29f, (q31_t)0x40aa334e, - (q31_t)0x4094817f, (q31_t)0x407ecd32, - (q31_t)0x40691669, (q31_t)0x40535d24, (q31_t)0x403da165, (q31_t)0x4027e32b, (q31_t)0x40122278, (q31_t)0x3ffc5f4d, - (q31_t)0x3fe699aa, (q31_t)0x3fd0d191, - (q31_t)0x3fbb0702, (q31_t)0x3fa539fd, (q31_t)0x3f8f6a85, (q31_t)0x3f799899, (q31_t)0x3f63c43b, (q31_t)0x3f4ded6b, - (q31_t)0x3f38142a, (q31_t)0x3f22387a, - (q31_t)0x3f0c5a5a, (q31_t)0x3ef679cc, (q31_t)0x3ee096d1, (q31_t)0x3ecab169, (q31_t)0x3eb4c995, (q31_t)0x3e9edf57, - (q31_t)0x3e88f2ae, (q31_t)0x3e73039d, - (q31_t)0x3e5d1222, (q31_t)0x3e471e41, (q31_t)0x3e3127f9, (q31_t)0x3e1b2f4a, (q31_t)0x3e053437, (q31_t)0x3def36c0, - (q31_t)0x3dd936e6, (q31_t)0x3dc334a9, - (q31_t)0x3dad300b, (q31_t)0x3d97290b, (q31_t)0x3d811fac, (q31_t)0x3d6b13ee, (q31_t)0x3d5505d2, (q31_t)0x3d3ef559, - (q31_t)0x3d28e282, (q31_t)0x3d12cd51, - (q31_t)0x3cfcb5c4, (q31_t)0x3ce69bde, (q31_t)0x3cd07f9f, (q31_t)0x3cba6107, (q31_t)0x3ca44018, (q31_t)0x3c8e1cd3, - (q31_t)0x3c77f737, (q31_t)0x3c61cf48, - (q31_t)0x3c4ba504, (q31_t)0x3c35786d, (q31_t)0x3c1f4983, (q31_t)0x3c091849, (q31_t)0x3bf2e4be, (q31_t)0x3bdcaee3, - (q31_t)0x3bc676b9, (q31_t)0x3bb03c42, - (q31_t)0x3b99ff7d, (q31_t)0x3b83c06c, (q31_t)0x3b6d7f10, (q31_t)0x3b573b69, (q31_t)0x3b40f579, (q31_t)0x3b2aad3f, - (q31_t)0x3b1462be, (q31_t)0x3afe15f6, - (q31_t)0x3ae7c6e7, (q31_t)0x3ad17593, (q31_t)0x3abb21fb, (q31_t)0x3aa4cc1e, (q31_t)0x3a8e7400, (q31_t)0x3a78199f, - (q31_t)0x3a61bcfd, (q31_t)0x3a4b5e1b, - (q31_t)0x3a34fcf9, (q31_t)0x3a1e9999, (q31_t)0x3a0833fc, (q31_t)0x39f1cc21, (q31_t)0x39db620b, (q31_t)0x39c4f5ba, - (q31_t)0x39ae872f, (q31_t)0x3998166a, - (q31_t)0x3981a36d, (q31_t)0x396b2e38, (q31_t)0x3954b6cd, (q31_t)0x393e3d2c, (q31_t)0x3927c155, (q31_t)0x3911434b, - (q31_t)0x38fac30e, (q31_t)0x38e4409e, - (q31_t)0x38cdbbfc, (q31_t)0x38b7352a, (q31_t)0x38a0ac29, (q31_t)0x388a20f8, (q31_t)0x38739399, (q31_t)0x385d040d, - (q31_t)0x38467255, (q31_t)0x382fde72, - (q31_t)0x38194864, (q31_t)0x3802b02c, (q31_t)0x37ec15cb, (q31_t)0x37d57943, (q31_t)0x37beda93, (q31_t)0x37a839be, - (q31_t)0x379196c3, (q31_t)0x377af1a3, - (q31_t)0x37644a60, (q31_t)0x374da0fa, (q31_t)0x3736f573, (q31_t)0x372047ca, (q31_t)0x37099802, (q31_t)0x36f2e61a, - (q31_t)0x36dc3214, (q31_t)0x36c57bf0, - (q31_t)0x36aec3b0, (q31_t)0x36980954, (q31_t)0x36814cde, (q31_t)0x366a8e4d, (q31_t)0x3653cda3, (q31_t)0x363d0ae2, - (q31_t)0x36264609, (q31_t)0x360f7f19, - (q31_t)0x35f8b614, (q31_t)0x35e1eafa, (q31_t)0x35cb1dcc, (q31_t)0x35b44e8c, (q31_t)0x359d7d39, (q31_t)0x3586a9d5, - (q31_t)0x356fd461, (q31_t)0x3558fcde, - (q31_t)0x3542234c, (q31_t)0x352b47ad, (q31_t)0x35146a00, (q31_t)0x34fd8a48, (q31_t)0x34e6a885, (q31_t)0x34cfc4b7, - (q31_t)0x34b8dee1, (q31_t)0x34a1f702, - (q31_t)0x348b0d1c, (q31_t)0x3474212f, (q31_t)0x345d333c, (q31_t)0x34464345, (q31_t)0x342f5149, (q31_t)0x34185d4b, - (q31_t)0x3401674a, (q31_t)0x33ea6f48, - (q31_t)0x33d37546, (q31_t)0x33bc7944, (q31_t)0x33a57b44, (q31_t)0x338e7b46, (q31_t)0x3377794b, (q31_t)0x33607554, - (q31_t)0x33496f62, (q31_t)0x33326776, - (q31_t)0x331b5d91, (q31_t)0x330451b3, (q31_t)0x32ed43de, (q31_t)0x32d63412, (q31_t)0x32bf2250, (q31_t)0x32a80e99, - (q31_t)0x3290f8ef, (q31_t)0x3279e151, - (q31_t)0x3262c7c1, (q31_t)0x324bac40, (q31_t)0x32348ecf, (q31_t)0x321d6f6e, (q31_t)0x32064e1e, (q31_t)0x31ef2ae1, - (q31_t)0x31d805b7, (q31_t)0x31c0dea1, - (q31_t)0x31a9b5a0, (q31_t)0x31928ab4, (q31_t)0x317b5de0, (q31_t)0x31642f23, (q31_t)0x314cfe7f, (q31_t)0x3135cbf4, - (q31_t)0x311e9783, (q31_t)0x3107612e, - (q31_t)0x30f028f4, (q31_t)0x30d8eed8, (q31_t)0x30c1b2da, (q31_t)0x30aa74fa, (q31_t)0x3093353a, (q31_t)0x307bf39b, - (q31_t)0x3064b01d, (q31_t)0x304d6ac1, - (q31_t)0x30362389, (q31_t)0x301eda75, (q31_t)0x30078f86, (q31_t)0x2ff042bd, (q31_t)0x2fd8f41b, (q31_t)0x2fc1a3a0, - (q31_t)0x2faa514f, (q31_t)0x2f92fd26, - (q31_t)0x2f7ba729, (q31_t)0x2f644f56, (q31_t)0x2f4cf5b0, (q31_t)0x2f359a37, (q31_t)0x2f1e3ced, (q31_t)0x2f06ddd1, - (q31_t)0x2eef7ce5, (q31_t)0x2ed81a29, - (q31_t)0x2ec0b5a0, (q31_t)0x2ea94f49, (q31_t)0x2e91e725, (q31_t)0x2e7a7d36, (q31_t)0x2e63117c, (q31_t)0x2e4ba3f8, - (q31_t)0x2e3434ac, (q31_t)0x2e1cc397, - (q31_t)0x2e0550bb, (q31_t)0x2deddc19, (q31_t)0x2dd665b2, (q31_t)0x2dbeed86, (q31_t)0x2da77397, (q31_t)0x2d8ff7e5, - (q31_t)0x2d787a72, (q31_t)0x2d60fb3e, - (q31_t)0x2d497a4a, (q31_t)0x2d31f797, (q31_t)0x2d1a7325, (q31_t)0x2d02ecf7, (q31_t)0x2ceb650d, (q31_t)0x2cd3db67, - (q31_t)0x2cbc5006, (q31_t)0x2ca4c2ed, - (q31_t)0x2c8d341a, (q31_t)0x2c75a390, (q31_t)0x2c5e114f, (q31_t)0x2c467d58, (q31_t)0x2c2ee7ad, (q31_t)0x2c17504d, - (q31_t)0x2bffb73a, (q31_t)0x2be81c74, - (q31_t)0x2bd07ffe, (q31_t)0x2bb8e1d7, (q31_t)0x2ba14200, (q31_t)0x2b89a07b, (q31_t)0x2b71fd48, (q31_t)0x2b5a5868, - (q31_t)0x2b42b1dd, (q31_t)0x2b2b09a6, - (q31_t)0x2b135fc6, (q31_t)0x2afbb43c, (q31_t)0x2ae4070a, (q31_t)0x2acc5831, (q31_t)0x2ab4a7b1, (q31_t)0x2a9cf58c, - (q31_t)0x2a8541c3, (q31_t)0x2a6d8c55, - (q31_t)0x2a55d545, (q31_t)0x2a3e1c93, (q31_t)0x2a266240, (q31_t)0x2a0ea64d, (q31_t)0x29f6e8bb, (q31_t)0x29df298b, - (q31_t)0x29c768be, (q31_t)0x29afa654, - (q31_t)0x2997e24f, (q31_t)0x29801caf, (q31_t)0x29685576, (q31_t)0x29508ca4, (q31_t)0x2938c23a, (q31_t)0x2920f63a, - (q31_t)0x290928a3, (q31_t)0x28f15978, - (q31_t)0x28d988b8, (q31_t)0x28c1b666, (q31_t)0x28a9e281, (q31_t)0x28920d0a, (q31_t)0x287a3604, (q31_t)0x28625d6d, - (q31_t)0x284a8349, (q31_t)0x2832a796, - (q31_t)0x281aca57, (q31_t)0x2802eb8c, (q31_t)0x27eb0b36, (q31_t)0x27d32956, (q31_t)0x27bb45ed, (q31_t)0x27a360fc, - (q31_t)0x278b7a84, (q31_t)0x27739285, - (q31_t)0x275ba901, (q31_t)0x2743bdf9, (q31_t)0x272bd16d, (q31_t)0x2713e35f, (q31_t)0x26fbf3ce, (q31_t)0x26e402bd, - (q31_t)0x26cc102d, (q31_t)0x26b41c1d, - (q31_t)0x269c268f, (q31_t)0x26842f84, (q31_t)0x266c36fe, (q31_t)0x26543cfb, (q31_t)0x263c417f, (q31_t)0x26244489, - (q31_t)0x260c461b, (q31_t)0x25f44635, - (q31_t)0x25dc44d9, (q31_t)0x25c44207, (q31_t)0x25ac3dc0, (q31_t)0x25943806, (q31_t)0x257c30d8, (q31_t)0x25642839, - (q31_t)0x254c1e28, (q31_t)0x253412a8, - (q31_t)0x251c05b8, (q31_t)0x2503f75a, (q31_t)0x24ebe78f, (q31_t)0x24d3d657, (q31_t)0x24bbc3b4, (q31_t)0x24a3afa6, - (q31_t)0x248b9a2f, (q31_t)0x2473834f, - (q31_t)0x245b6b07, (q31_t)0x24435158, (q31_t)0x242b3644, (q31_t)0x241319ca, (q31_t)0x23fafbec, (q31_t)0x23e2dcac, - (q31_t)0x23cabc09, (q31_t)0x23b29a05, - (q31_t)0x239a76a0, (q31_t)0x238251dd, (q31_t)0x236a2bba, (q31_t)0x2352043b, (q31_t)0x2339db5e, (q31_t)0x2321b126, - (q31_t)0x23098593, (q31_t)0x22f158a7, - (q31_t)0x22d92a61, (q31_t)0x22c0fac4, (q31_t)0x22a8c9cf, (q31_t)0x22909785, (q31_t)0x227863e5, (q31_t)0x22602ef1, - (q31_t)0x2247f8aa, (q31_t)0x222fc111, - (q31_t)0x22178826, (q31_t)0x21ff4dea, (q31_t)0x21e71260, (q31_t)0x21ced586, (q31_t)0x21b6975f, (q31_t)0x219e57eb, - (q31_t)0x2186172b, (q31_t)0x216dd521, - (q31_t)0x215591cc, (q31_t)0x213d4d2f, (q31_t)0x21250749, (q31_t)0x210cc01d, (q31_t)0x20f477aa, (q31_t)0x20dc2df2, - (q31_t)0x20c3e2f5, (q31_t)0x20ab96b5, - (q31_t)0x20934933, (q31_t)0x207afa6f, (q31_t)0x2062aa6b, (q31_t)0x204a5927, (q31_t)0x203206a4, (q31_t)0x2019b2e4, - (q31_t)0x20015de7, (q31_t)0x1fe907ae, - (q31_t)0x1fd0b03a, (q31_t)0x1fb8578b, (q31_t)0x1f9ffda4, (q31_t)0x1f87a285, (q31_t)0x1f6f462f, (q31_t)0x1f56e8a2, - (q31_t)0x1f3e89e0, (q31_t)0x1f2629ea, - (q31_t)0x1f0dc8c0, (q31_t)0x1ef56664, (q31_t)0x1edd02d6, (q31_t)0x1ec49e17, (q31_t)0x1eac3829, (q31_t)0x1e93d10c, - (q31_t)0x1e7b68c2, (q31_t)0x1e62ff4a, - (q31_t)0x1e4a94a7, (q31_t)0x1e3228d9, (q31_t)0x1e19bbe0, (q31_t)0x1e014dbf, (q31_t)0x1de8de75, (q31_t)0x1dd06e04, - (q31_t)0x1db7fc6d, (q31_t)0x1d9f89b1, - (q31_t)0x1d8715d0, (q31_t)0x1d6ea0cc, (q31_t)0x1d562aa6, (q31_t)0x1d3db35e, (q31_t)0x1d253af5, (q31_t)0x1d0cc16c, - (q31_t)0x1cf446c5, (q31_t)0x1cdbcb00, - (q31_t)0x1cc34e1f, (q31_t)0x1caad021, (q31_t)0x1c925109, (q31_t)0x1c79d0d6, (q31_t)0x1c614f8b, (q31_t)0x1c48cd27, - (q31_t)0x1c3049ac, (q31_t)0x1c17c51b, - (q31_t)0x1bff3f75, (q31_t)0x1be6b8ba, (q31_t)0x1bce30ec, (q31_t)0x1bb5a80c, (q31_t)0x1b9d1e1a, (q31_t)0x1b849317, - (q31_t)0x1b6c0705, (q31_t)0x1b5379e5, - (q31_t)0x1b3aebb6, (q31_t)0x1b225c7b, (q31_t)0x1b09cc34, (q31_t)0x1af13ae3, (q31_t)0x1ad8a887, (q31_t)0x1ac01522, - (q31_t)0x1aa780b6, (q31_t)0x1a8eeb42, - (q31_t)0x1a7654c8, (q31_t)0x1a5dbd49, (q31_t)0x1a4524c6, (q31_t)0x1a2c8b3f, (q31_t)0x1a13f0b6, (q31_t)0x19fb552c, - (q31_t)0x19e2b8a2, (q31_t)0x19ca1b17, - (q31_t)0x19b17c8f, (q31_t)0x1998dd09, (q31_t)0x19803c86, (q31_t)0x19679b07, (q31_t)0x194ef88e, (q31_t)0x1936551b, - (q31_t)0x191db0af, (q31_t)0x19050b4b, - (q31_t)0x18ec64f0, (q31_t)0x18d3bda0, (q31_t)0x18bb155a, (q31_t)0x18a26c20, (q31_t)0x1889c1f3, (q31_t)0x187116d4, - (q31_t)0x18586ac3, (q31_t)0x183fbdc3, - (q31_t)0x18270fd3, (q31_t)0x180e60f4, (q31_t)0x17f5b129, (q31_t)0x17dd0070, (q31_t)0x17c44ecd, (q31_t)0x17ab9c3e, - (q31_t)0x1792e8c6, (q31_t)0x177a3466, - (q31_t)0x17617f1d, (q31_t)0x1748c8ee, (q31_t)0x173011d9, (q31_t)0x171759df, (q31_t)0x16fea102, (q31_t)0x16e5e741, - (q31_t)0x16cd2c9f, (q31_t)0x16b4711b, - (q31_t)0x169bb4b7, (q31_t)0x1682f774, (q31_t)0x166a3953, (q31_t)0x16517a55, (q31_t)0x1638ba7a, (q31_t)0x161ff9c4, - (q31_t)0x16073834, (q31_t)0x15ee75cb, - (q31_t)0x15d5b288, (q31_t)0x15bcee6f, (q31_t)0x15a4297f, (q31_t)0x158b63b9, (q31_t)0x15729d1f, (q31_t)0x1559d5b1, - (q31_t)0x15410d70, (q31_t)0x1528445d, - (q31_t)0x150f7a7a, (q31_t)0x14f6afc7, (q31_t)0x14dde445, (q31_t)0x14c517f4, (q31_t)0x14ac4ad7, (q31_t)0x14937cee, - (q31_t)0x147aae3a, (q31_t)0x1461debc, - (q31_t)0x14490e74, (q31_t)0x14303d65, (q31_t)0x14176b8e, (q31_t)0x13fe98f1, (q31_t)0x13e5c58e, (q31_t)0x13ccf167, - (q31_t)0x13b41c7d, (q31_t)0x139b46d0, - (q31_t)0x13827062, (q31_t)0x13699933, (q31_t)0x1350c144, (q31_t)0x1337e897, (q31_t)0x131f0f2c, (q31_t)0x13063505, - (q31_t)0x12ed5a21, (q31_t)0x12d47e83, - (q31_t)0x12bba22b, (q31_t)0x12a2c51b, (q31_t)0x1289e752, (q31_t)0x127108d2, (q31_t)0x1258299c, (q31_t)0x123f49b2, - (q31_t)0x12266913, (q31_t)0x120d87c1, - (q31_t)0x11f4a5bd, (q31_t)0x11dbc307, (q31_t)0x11c2dfa2, (q31_t)0x11a9fb8d, (q31_t)0x119116c9, (q31_t)0x11783159, - (q31_t)0x115f4b3c, (q31_t)0x11466473, - (q31_t)0x112d7d00, (q31_t)0x111494e4, (q31_t)0x10fbac1e, (q31_t)0x10e2c2b2, (q31_t)0x10c9d89e, (q31_t)0x10b0ede5, - (q31_t)0x10980287, (q31_t)0x107f1686, - (q31_t)0x106629e1, (q31_t)0x104d3c9b, (q31_t)0x10344eb4, (q31_t)0x101b602d, (q31_t)0x10027107, (q31_t)0xfe98143, - (q31_t)0xfd090e1, (q31_t)0xfb79fe4, - (q31_t)0xf9eae4c, (q31_t)0xf85bc19, (q31_t)0xf6cc94e, (q31_t)0xf53d5ea, (q31_t)0xf3ae1ee, (q31_t)0xf21ed5d, (q31_t)0xf08f836, - (q31_t)0xef0027b, - (q31_t)0xed70c2c, (q31_t)0xebe154b, (q31_t)0xea51dd8, (q31_t)0xe8c25d5, (q31_t)0xe732d42, (q31_t)0xe5a3421, (q31_t)0xe413a72, - (q31_t)0xe284036, - (q31_t)0xe0f456f, (q31_t)0xdf64a1c, (q31_t)0xddd4e40, (q31_t)0xdc451dc, (q31_t)0xdab54ef, (q31_t)0xd92577b, (q31_t)0xd795982, - (q31_t)0xd605b03, - (q31_t)0xd475c00, (q31_t)0xd2e5c7b, (q31_t)0xd155c73, (q31_t)0xcfc5bea, (q31_t)0xce35ae1, (q31_t)0xcca5959, (q31_t)0xcb15752, - (q31_t)0xc9854cf, - (q31_t)0xc7f51cf, (q31_t)0xc664e53, (q31_t)0xc4d4a5d, (q31_t)0xc3445ee, (q31_t)0xc1b4107, (q31_t)0xc023ba7, (q31_t)0xbe935d2, - (q31_t)0xbd02f87, - (q31_t)0xbb728c7, (q31_t)0xb9e2193, (q31_t)0xb8519ed, (q31_t)0xb6c11d5, (q31_t)0xb53094d, (q31_t)0xb3a0055, (q31_t)0xb20f6ee, - (q31_t)0xb07ed19, - (q31_t)0xaeee2d7, (q31_t)0xad5d829, (q31_t)0xabccd11, (q31_t)0xaa3c18e, (q31_t)0xa8ab5a2, (q31_t)0xa71a94f, (q31_t)0xa589c94, - (q31_t)0xa3f8f73, - (q31_t)0xa2681ed, (q31_t)0xa0d7403, (q31_t)0x9f465b5, (q31_t)0x9db5706, (q31_t)0x9c247f5, (q31_t)0x9a93884, (q31_t)0x99028b3, - (q31_t)0x9771884, - (q31_t)0x95e07f8, (q31_t)0x944f70f, (q31_t)0x92be5ca, (q31_t)0x912d42c, (q31_t)0x8f9c233, (q31_t)0x8e0afe2, (q31_t)0x8c79d3a, - (q31_t)0x8ae8a3a, - (q31_t)0x89576e5, (q31_t)0x87c633c, (q31_t)0x8634f3e, (q31_t)0x84a3aee, (q31_t)0x831264c, (q31_t)0x8181159, (q31_t)0x7fefc16, - (q31_t)0x7e5e685, - (q31_t)0x7ccd0a5, (q31_t)0x7b3ba78, (q31_t)0x79aa400, (q31_t)0x7818d3c, (q31_t)0x768762e, (q31_t)0x74f5ed7, (q31_t)0x7364738, - (q31_t)0x71d2f52, - (q31_t)0x7041726, (q31_t)0x6eafeb4, (q31_t)0x6d1e5fe, (q31_t)0x6b8cd05, (q31_t)0x69fb3c9, (q31_t)0x6869a4c, (q31_t)0x66d808f, - (q31_t)0x6546692, - (q31_t)0x63b4c57, (q31_t)0x62231de, (q31_t)0x6091729, (q31_t)0x5effc38, (q31_t)0x5d6e10c, (q31_t)0x5bdc5a7, (q31_t)0x5a4aa09, - (q31_t)0x58b8e34, - (q31_t)0x5727228, (q31_t)0x55955e6, (q31_t)0x540396f, (q31_t)0x5271cc4, (q31_t)0x50dffe7, (q31_t)0x4f4e2d8, (q31_t)0x4dbc597, - (q31_t)0x4c2a827, - (q31_t)0x4a98a88, (q31_t)0x4906cbb, (q31_t)0x4774ec1, (q31_t)0x45e309a, (q31_t)0x4451249, (q31_t)0x42bf3cd, (q31_t)0x412d528, - (q31_t)0x3f9b65b, - (q31_t)0x3e09767, (q31_t)0x3c7784d, (q31_t)0x3ae590d, (q31_t)0x39539a9, (q31_t)0x37c1a22, (q31_t)0x362fa78, (q31_t)0x349daac, - (q31_t)0x330bac1, - (q31_t)0x3179ab5, (q31_t)0x2fe7a8c, (q31_t)0x2e55a44, (q31_t)0x2cc39e1, (q31_t)0x2b31961, (q31_t)0x299f8c7, (q31_t)0x280d813, - (q31_t)0x267b747, - (q31_t)0x24e9662, (q31_t)0x2357567, (q31_t)0x21c5457, (q31_t)0x2033331, (q31_t)0x1ea11f7, (q31_t)0x1d0f0ab, (q31_t)0x1b7cf4d, - (q31_t)0x19eaddd, - (q31_t)0x1858c5e, (q31_t)0x16c6ad0, (q31_t)0x1534934, (q31_t)0x13a278a, (q31_t)0x12105d5, (q31_t)0x107e414, (q31_t)0xeec249, - (q31_t)0xd5a075, - (q31_t)0xbc7e99, (q31_t)0xa35cb5, (q31_t)0x8a3acb, (q31_t)0x7118dc, (q31_t)0x57f6e9, (q31_t)0x3ed4f2, (q31_t)0x25b2f8, - (q31_t)0xc90fe -}; - -static const q31_t cos_factorsQ31_8192[8192] = { - (q31_t)0x7ffffff6, (q31_t)0x7fffffa7, (q31_t)0x7fffff09, (q31_t)0x7ffffe1c, (q31_t)0x7ffffce1, (q31_t)0x7ffffb56, - (q31_t)0x7ffff97c, (q31_t)0x7ffff753, - (q31_t)0x7ffff4dc, (q31_t)0x7ffff215, (q31_t)0x7fffef00, (q31_t)0x7fffeb9b, (q31_t)0x7fffe7e8, (q31_t)0x7fffe3e5, - (q31_t)0x7fffdf94, (q31_t)0x7fffdaf3, - (q31_t)0x7fffd604, (q31_t)0x7fffd0c6, (q31_t)0x7fffcb39, (q31_t)0x7fffc55c, (q31_t)0x7fffbf31, (q31_t)0x7fffb8b7, - (q31_t)0x7fffb1ee, (q31_t)0x7fffaad6, - (q31_t)0x7fffa36f, (q31_t)0x7fff9bb9, (q31_t)0x7fff93b4, (q31_t)0x7fff8b61, (q31_t)0x7fff82be, (q31_t)0x7fff79cc, - (q31_t)0x7fff708b, (q31_t)0x7fff66fc, - (q31_t)0x7fff5d1d, (q31_t)0x7fff52ef, (q31_t)0x7fff4873, (q31_t)0x7fff3da8, (q31_t)0x7fff328d, (q31_t)0x7fff2724, - (q31_t)0x7fff1b6b, (q31_t)0x7fff0f64, - (q31_t)0x7fff030e, (q31_t)0x7ffef669, (q31_t)0x7ffee975, (q31_t)0x7ffedc31, (q31_t)0x7ffece9f, (q31_t)0x7ffec0be, - (q31_t)0x7ffeb28e, (q31_t)0x7ffea40f, - (q31_t)0x7ffe9542, (q31_t)0x7ffe8625, (q31_t)0x7ffe76b9, (q31_t)0x7ffe66fe, (q31_t)0x7ffe56f5, (q31_t)0x7ffe469c, - (q31_t)0x7ffe35f4, (q31_t)0x7ffe24fe, - (q31_t)0x7ffe13b8, (q31_t)0x7ffe0224, (q31_t)0x7ffdf040, (q31_t)0x7ffdde0e, (q31_t)0x7ffdcb8d, (q31_t)0x7ffdb8bc, - (q31_t)0x7ffda59d, (q31_t)0x7ffd922f, - (q31_t)0x7ffd7e72, (q31_t)0x7ffd6a66, (q31_t)0x7ffd560b, (q31_t)0x7ffd4161, (q31_t)0x7ffd2c68, (q31_t)0x7ffd1720, - (q31_t)0x7ffd0189, (q31_t)0x7ffceba4, - (q31_t)0x7ffcd56f, (q31_t)0x7ffcbeeb, (q31_t)0x7ffca819, (q31_t)0x7ffc90f7, (q31_t)0x7ffc7987, (q31_t)0x7ffc61c7, - (q31_t)0x7ffc49b9, (q31_t)0x7ffc315b, - (q31_t)0x7ffc18af, (q31_t)0x7ffbffb4, (q31_t)0x7ffbe66a, (q31_t)0x7ffbccd0, (q31_t)0x7ffbb2e8, (q31_t)0x7ffb98b1, - (q31_t)0x7ffb7e2b, (q31_t)0x7ffb6356, - (q31_t)0x7ffb4833, (q31_t)0x7ffb2cc0, (q31_t)0x7ffb10fe, (q31_t)0x7ffaf4ed, (q31_t)0x7ffad88e, (q31_t)0x7ffabbdf, - (q31_t)0x7ffa9ee2, (q31_t)0x7ffa8195, - (q31_t)0x7ffa63fa, (q31_t)0x7ffa460f, (q31_t)0x7ffa27d6, (q31_t)0x7ffa094e, (q31_t)0x7ff9ea76, (q31_t)0x7ff9cb50, - (q31_t)0x7ff9abdb, (q31_t)0x7ff98c17, - (q31_t)0x7ff96c04, (q31_t)0x7ff94ba2, (q31_t)0x7ff92af1, (q31_t)0x7ff909f2, (q31_t)0x7ff8e8a3, (q31_t)0x7ff8c705, - (q31_t)0x7ff8a519, (q31_t)0x7ff882dd, - (q31_t)0x7ff86053, (q31_t)0x7ff83d79, (q31_t)0x7ff81a51, (q31_t)0x7ff7f6da, (q31_t)0x7ff7d313, (q31_t)0x7ff7aefe, - (q31_t)0x7ff78a9a, (q31_t)0x7ff765e7, - (q31_t)0x7ff740e5, (q31_t)0x7ff71b94, (q31_t)0x7ff6f5f4, (q31_t)0x7ff6d005, (q31_t)0x7ff6a9c8, (q31_t)0x7ff6833b, - (q31_t)0x7ff65c5f, (q31_t)0x7ff63535, - (q31_t)0x7ff60dbb, (q31_t)0x7ff5e5f3, (q31_t)0x7ff5bddc, (q31_t)0x7ff59576, (q31_t)0x7ff56cc0, (q31_t)0x7ff543bc, - (q31_t)0x7ff51a69, (q31_t)0x7ff4f0c7, - (q31_t)0x7ff4c6d6, (q31_t)0x7ff49c96, (q31_t)0x7ff47208, (q31_t)0x7ff4472a, (q31_t)0x7ff41bfd, (q31_t)0x7ff3f082, - (q31_t)0x7ff3c4b7, (q31_t)0x7ff3989e, - (q31_t)0x7ff36c36, (q31_t)0x7ff33f7e, (q31_t)0x7ff31278, (q31_t)0x7ff2e523, (q31_t)0x7ff2b77f, (q31_t)0x7ff2898c, - (q31_t)0x7ff25b4a, (q31_t)0x7ff22cb9, - (q31_t)0x7ff1fdd9, (q31_t)0x7ff1ceab, (q31_t)0x7ff19f2d, (q31_t)0x7ff16f61, (q31_t)0x7ff13f45, (q31_t)0x7ff10edb, - (q31_t)0x7ff0de22, (q31_t)0x7ff0ad19, - (q31_t)0x7ff07bc2, (q31_t)0x7ff04a1c, (q31_t)0x7ff01827, (q31_t)0x7fefe5e4, (q31_t)0x7fefb351, (q31_t)0x7fef806f, - (q31_t)0x7fef4d3e, (q31_t)0x7fef19bf, - (q31_t)0x7feee5f0, (q31_t)0x7feeb1d3, (q31_t)0x7fee7d67, (q31_t)0x7fee48ac, (q31_t)0x7fee13a1, (q31_t)0x7fedde48, - (q31_t)0x7feda8a0, (q31_t)0x7fed72aa, - (q31_t)0x7fed3c64, (q31_t)0x7fed05cf, (q31_t)0x7fecceec, (q31_t)0x7fec97b9, (q31_t)0x7fec6038, (q31_t)0x7fec2867, - (q31_t)0x7febf048, (q31_t)0x7febb7da, - (q31_t)0x7feb7f1d, (q31_t)0x7feb4611, (q31_t)0x7feb0cb6, (q31_t)0x7fead30c, (q31_t)0x7fea9914, (q31_t)0x7fea5ecc, - (q31_t)0x7fea2436, (q31_t)0x7fe9e950, - (q31_t)0x7fe9ae1c, (q31_t)0x7fe97299, (q31_t)0x7fe936c7, (q31_t)0x7fe8faa6, (q31_t)0x7fe8be36, (q31_t)0x7fe88177, - (q31_t)0x7fe84469, (q31_t)0x7fe8070d, - (q31_t)0x7fe7c961, (q31_t)0x7fe78b67, (q31_t)0x7fe74d1e, (q31_t)0x7fe70e85, (q31_t)0x7fe6cf9e, (q31_t)0x7fe69068, - (q31_t)0x7fe650e3, (q31_t)0x7fe61110, - (q31_t)0x7fe5d0ed, (q31_t)0x7fe5907b, (q31_t)0x7fe54fbb, (q31_t)0x7fe50eac, (q31_t)0x7fe4cd4d, (q31_t)0x7fe48ba0, - (q31_t)0x7fe449a4, (q31_t)0x7fe40759, - (q31_t)0x7fe3c4bf, (q31_t)0x7fe381d7, (q31_t)0x7fe33e9f, (q31_t)0x7fe2fb19, (q31_t)0x7fe2b743, (q31_t)0x7fe2731f, - (q31_t)0x7fe22eac, (q31_t)0x7fe1e9ea, - (q31_t)0x7fe1a4d9, (q31_t)0x7fe15f79, (q31_t)0x7fe119cb, (q31_t)0x7fe0d3cd, (q31_t)0x7fe08d81, (q31_t)0x7fe046e5, - (q31_t)0x7fdffffb, (q31_t)0x7fdfb8c2, - (q31_t)0x7fdf713a, (q31_t)0x7fdf2963, (q31_t)0x7fdee13e, (q31_t)0x7fde98c9, (q31_t)0x7fde5006, (q31_t)0x7fde06f3, - (q31_t)0x7fddbd92, (q31_t)0x7fdd73e2, - (q31_t)0x7fdd29e3, (q31_t)0x7fdcdf95, (q31_t)0x7fdc94f9, (q31_t)0x7fdc4a0d, (q31_t)0x7fdbfed3, (q31_t)0x7fdbb349, - (q31_t)0x7fdb6771, (q31_t)0x7fdb1b4a, - (q31_t)0x7fdaced4, (q31_t)0x7fda820f, (q31_t)0x7fda34fc, (q31_t)0x7fd9e799, (q31_t)0x7fd999e8, (q31_t)0x7fd94be8, - (q31_t)0x7fd8fd98, (q31_t)0x7fd8aefa, - (q31_t)0x7fd8600e, (q31_t)0x7fd810d2, (q31_t)0x7fd7c147, (q31_t)0x7fd7716e, (q31_t)0x7fd72146, (q31_t)0x7fd6d0cf, - (q31_t)0x7fd68009, (q31_t)0x7fd62ef4, - (q31_t)0x7fd5dd90, (q31_t)0x7fd58bdd, (q31_t)0x7fd539dc, (q31_t)0x7fd4e78c, (q31_t)0x7fd494ed, (q31_t)0x7fd441ff, - (q31_t)0x7fd3eec2, (q31_t)0x7fd39b36, - (q31_t)0x7fd3475c, (q31_t)0x7fd2f332, (q31_t)0x7fd29eba, (q31_t)0x7fd249f3, (q31_t)0x7fd1f4dd, (q31_t)0x7fd19f78, - (q31_t)0x7fd149c5, (q31_t)0x7fd0f3c2, - (q31_t)0x7fd09d71, (q31_t)0x7fd046d1, (q31_t)0x7fcfefe2, (q31_t)0x7fcf98a4, (q31_t)0x7fcf4117, (q31_t)0x7fcee93c, - (q31_t)0x7fce9112, (q31_t)0x7fce3898, - (q31_t)0x7fcddfd0, (q31_t)0x7fcd86b9, (q31_t)0x7fcd2d54, (q31_t)0x7fccd39f, (q31_t)0x7fcc799c, (q31_t)0x7fcc1f4a, - (q31_t)0x7fcbc4a9, (q31_t)0x7fcb69b9, - (q31_t)0x7fcb0e7a, (q31_t)0x7fcab2ed, (q31_t)0x7fca5710, (q31_t)0x7fc9fae5, (q31_t)0x7fc99e6b, (q31_t)0x7fc941a2, - (q31_t)0x7fc8e48b, (q31_t)0x7fc88724, - (q31_t)0x7fc8296f, (q31_t)0x7fc7cb6b, (q31_t)0x7fc76d18, (q31_t)0x7fc70e76, (q31_t)0x7fc6af86, (q31_t)0x7fc65046, - (q31_t)0x7fc5f0b8, (q31_t)0x7fc590db, - (q31_t)0x7fc530af, (q31_t)0x7fc4d035, (q31_t)0x7fc46f6b, (q31_t)0x7fc40e53, (q31_t)0x7fc3acec, (q31_t)0x7fc34b36, - (q31_t)0x7fc2e931, (q31_t)0x7fc286de, - (q31_t)0x7fc2243b, (q31_t)0x7fc1c14a, (q31_t)0x7fc15e0a, (q31_t)0x7fc0fa7b, (q31_t)0x7fc0969e, (q31_t)0x7fc03271, - (q31_t)0x7fbfcdf6, (q31_t)0x7fbf692c, - (q31_t)0x7fbf0414, (q31_t)0x7fbe9eac, (q31_t)0x7fbe38f6, (q31_t)0x7fbdd2f0, (q31_t)0x7fbd6c9c, (q31_t)0x7fbd05fa, - (q31_t)0x7fbc9f08, (q31_t)0x7fbc37c8, - (q31_t)0x7fbbd039, (q31_t)0x7fbb685b, (q31_t)0x7fbb002e, (q31_t)0x7fba97b2, (q31_t)0x7fba2ee8, (q31_t)0x7fb9c5cf, - (q31_t)0x7fb95c67, (q31_t)0x7fb8f2b0, - (q31_t)0x7fb888ab, (q31_t)0x7fb81e57, (q31_t)0x7fb7b3b4, (q31_t)0x7fb748c2, (q31_t)0x7fb6dd81, (q31_t)0x7fb671f2, - (q31_t)0x7fb60614, (q31_t)0x7fb599e7, - (q31_t)0x7fb52d6b, (q31_t)0x7fb4c0a1, (q31_t)0x7fb45387, (q31_t)0x7fb3e61f, (q31_t)0x7fb37869, (q31_t)0x7fb30a63, - (q31_t)0x7fb29c0f, (q31_t)0x7fb22d6c, - (q31_t)0x7fb1be7a, (q31_t)0x7fb14f39, (q31_t)0x7fb0dfaa, (q31_t)0x7fb06fcb, (q31_t)0x7fafff9e, (q31_t)0x7faf8f23, - (q31_t)0x7faf1e58, (q31_t)0x7faead3f, - (q31_t)0x7fae3bd7, (q31_t)0x7fadca20, (q31_t)0x7fad581b, (q31_t)0x7face5c6, (q31_t)0x7fac7323, (q31_t)0x7fac0031, - (q31_t)0x7fab8cf1, (q31_t)0x7fab1962, - (q31_t)0x7faaa584, (q31_t)0x7faa3157, (q31_t)0x7fa9bcdb, (q31_t)0x7fa94811, (q31_t)0x7fa8d2f8, (q31_t)0x7fa85d90, - (q31_t)0x7fa7e7d9, (q31_t)0x7fa771d4, - (q31_t)0x7fa6fb80, (q31_t)0x7fa684dd, (q31_t)0x7fa60dec, (q31_t)0x7fa596ac, (q31_t)0x7fa51f1d, (q31_t)0x7fa4a73f, - (q31_t)0x7fa42f12, (q31_t)0x7fa3b697, - (q31_t)0x7fa33dcd, (q31_t)0x7fa2c4b5, (q31_t)0x7fa24b4d, (q31_t)0x7fa1d197, (q31_t)0x7fa15792, (q31_t)0x7fa0dd3f, - (q31_t)0x7fa0629c, (q31_t)0x7f9fe7ab, - (q31_t)0x7f9f6c6b, (q31_t)0x7f9ef0dd, (q31_t)0x7f9e7500, (q31_t)0x7f9df8d4, (q31_t)0x7f9d7c59, (q31_t)0x7f9cff90, - (q31_t)0x7f9c8278, (q31_t)0x7f9c0511, - (q31_t)0x7f9b875b, (q31_t)0x7f9b0957, (q31_t)0x7f9a8b04, (q31_t)0x7f9a0c62, (q31_t)0x7f998d72, (q31_t)0x7f990e33, - (q31_t)0x7f988ea5, (q31_t)0x7f980ec8, - (q31_t)0x7f978e9d, (q31_t)0x7f970e23, (q31_t)0x7f968d5b, (q31_t)0x7f960c43, (q31_t)0x7f958add, (q31_t)0x7f950929, - (q31_t)0x7f948725, (q31_t)0x7f9404d3, - (q31_t)0x7f938232, (q31_t)0x7f92ff43, (q31_t)0x7f927c04, (q31_t)0x7f91f878, (q31_t)0x7f91749c, (q31_t)0x7f90f072, - (q31_t)0x7f906bf9, (q31_t)0x7f8fe731, - (q31_t)0x7f8f621b, (q31_t)0x7f8edcb6, (q31_t)0x7f8e5702, (q31_t)0x7f8dd0ff, (q31_t)0x7f8d4aae, (q31_t)0x7f8cc40f, - (q31_t)0x7f8c3d20, (q31_t)0x7f8bb5e3, - (q31_t)0x7f8b2e57, (q31_t)0x7f8aa67d, (q31_t)0x7f8a1e54, (q31_t)0x7f8995dc, (q31_t)0x7f890d15, (q31_t)0x7f888400, - (q31_t)0x7f87fa9c, (q31_t)0x7f8770ea, - (q31_t)0x7f86e6e9, (q31_t)0x7f865c99, (q31_t)0x7f85d1fa, (q31_t)0x7f85470d, (q31_t)0x7f84bbd1, (q31_t)0x7f843047, - (q31_t)0x7f83a46e, (q31_t)0x7f831846, - (q31_t)0x7f828bcf, (q31_t)0x7f81ff0a, (q31_t)0x7f8171f6, (q31_t)0x7f80e494, (q31_t)0x7f8056e3, (q31_t)0x7f7fc8e3, - (q31_t)0x7f7f3a95, (q31_t)0x7f7eabf8, - (q31_t)0x7f7e1d0c, (q31_t)0x7f7d8dd2, (q31_t)0x7f7cfe49, (q31_t)0x7f7c6e71, (q31_t)0x7f7bde4b, (q31_t)0x7f7b4dd6, - (q31_t)0x7f7abd13, (q31_t)0x7f7a2c01, - (q31_t)0x7f799aa0, (q31_t)0x7f7908f0, (q31_t)0x7f7876f2, (q31_t)0x7f77e4a6, (q31_t)0x7f77520a, (q31_t)0x7f76bf21, - (q31_t)0x7f762be8, (q31_t)0x7f759861, - (q31_t)0x7f75048b, (q31_t)0x7f747067, (q31_t)0x7f73dbf4, (q31_t)0x7f734732, (q31_t)0x7f72b222, (q31_t)0x7f721cc3, - (q31_t)0x7f718715, (q31_t)0x7f70f119, - (q31_t)0x7f705ace, (q31_t)0x7f6fc435, (q31_t)0x7f6f2d4d, (q31_t)0x7f6e9617, (q31_t)0x7f6dfe91, (q31_t)0x7f6d66be, - (q31_t)0x7f6cce9b, (q31_t)0x7f6c362a, - (q31_t)0x7f6b9d6b, (q31_t)0x7f6b045d, (q31_t)0x7f6a6b00, (q31_t)0x7f69d154, (q31_t)0x7f69375a, (q31_t)0x7f689d12, - (q31_t)0x7f68027b, (q31_t)0x7f676795, - (q31_t)0x7f66cc61, (q31_t)0x7f6630de, (q31_t)0x7f65950c, (q31_t)0x7f64f8ec, (q31_t)0x7f645c7d, (q31_t)0x7f63bfc0, - (q31_t)0x7f6322b4, (q31_t)0x7f62855a, - (q31_t)0x7f61e7b1, (q31_t)0x7f6149b9, (q31_t)0x7f60ab73, (q31_t)0x7f600cdf, (q31_t)0x7f5f6dfb, (q31_t)0x7f5ecec9, - (q31_t)0x7f5e2f49, (q31_t)0x7f5d8f7a, - (q31_t)0x7f5cef5c, (q31_t)0x7f5c4ef0, (q31_t)0x7f5bae36, (q31_t)0x7f5b0d2c, (q31_t)0x7f5a6bd5, (q31_t)0x7f59ca2e, - (q31_t)0x7f592839, (q31_t)0x7f5885f6, - (q31_t)0x7f57e364, (q31_t)0x7f574083, (q31_t)0x7f569d54, (q31_t)0x7f55f9d6, (q31_t)0x7f55560a, (q31_t)0x7f54b1ef, - (q31_t)0x7f540d86, (q31_t)0x7f5368ce, - (q31_t)0x7f52c3c8, (q31_t)0x7f521e73, (q31_t)0x7f5178cf, (q31_t)0x7f50d2dd, (q31_t)0x7f502c9d, (q31_t)0x7f4f860e, - (q31_t)0x7f4edf30, (q31_t)0x7f4e3804, - (q31_t)0x7f4d9089, (q31_t)0x7f4ce8c0, (q31_t)0x7f4c40a8, (q31_t)0x7f4b9842, (q31_t)0x7f4aef8d, (q31_t)0x7f4a468a, - (q31_t)0x7f499d38, (q31_t)0x7f48f398, - (q31_t)0x7f4849a9, (q31_t)0x7f479f6c, (q31_t)0x7f46f4e0, (q31_t)0x7f464a06, (q31_t)0x7f459edd, (q31_t)0x7f44f365, - (q31_t)0x7f44479f, (q31_t)0x7f439b8b, - (q31_t)0x7f42ef28, (q31_t)0x7f424277, (q31_t)0x7f419577, (q31_t)0x7f40e828, (q31_t)0x7f403a8b, (q31_t)0x7f3f8ca0, - (q31_t)0x7f3ede66, (q31_t)0x7f3e2fde, - (q31_t)0x7f3d8107, (q31_t)0x7f3cd1e2, (q31_t)0x7f3c226e, (q31_t)0x7f3b72ab, (q31_t)0x7f3ac29b, (q31_t)0x7f3a123b, - (q31_t)0x7f39618e, (q31_t)0x7f38b091, - (q31_t)0x7f37ff47, (q31_t)0x7f374dad, (q31_t)0x7f369bc6, (q31_t)0x7f35e990, (q31_t)0x7f35370b, (q31_t)0x7f348438, - (q31_t)0x7f33d116, (q31_t)0x7f331da6, - (q31_t)0x7f3269e8, (q31_t)0x7f31b5db, (q31_t)0x7f31017f, (q31_t)0x7f304cd6, (q31_t)0x7f2f97dd, (q31_t)0x7f2ee296, - (q31_t)0x7f2e2d01, (q31_t)0x7f2d771e, - (q31_t)0x7f2cc0eb, (q31_t)0x7f2c0a6b, (q31_t)0x7f2b539c, (q31_t)0x7f2a9c7e, (q31_t)0x7f29e512, (q31_t)0x7f292d58, - (q31_t)0x7f28754f, (q31_t)0x7f27bcf8, - (q31_t)0x7f270452, (q31_t)0x7f264b5e, (q31_t)0x7f25921c, (q31_t)0x7f24d88b, (q31_t)0x7f241eab, (q31_t)0x7f23647e, - (q31_t)0x7f22aa01, (q31_t)0x7f21ef37, - (q31_t)0x7f21341e, (q31_t)0x7f2078b6, (q31_t)0x7f1fbd00, (q31_t)0x7f1f00fc, (q31_t)0x7f1e44a9, (q31_t)0x7f1d8808, - (q31_t)0x7f1ccb18, (q31_t)0x7f1c0dda, - (q31_t)0x7f1b504e, (q31_t)0x7f1a9273, (q31_t)0x7f19d44a, (q31_t)0x7f1915d2, (q31_t)0x7f18570c, (q31_t)0x7f1797f8, - (q31_t)0x7f16d895, (q31_t)0x7f1618e4, - (q31_t)0x7f1558e4, (q31_t)0x7f149896, (q31_t)0x7f13d7fa, (q31_t)0x7f13170f, (q31_t)0x7f1255d6, (q31_t)0x7f11944f, - (q31_t)0x7f10d279, (q31_t)0x7f101054, - (q31_t)0x7f0f4de2, (q31_t)0x7f0e8b21, (q31_t)0x7f0dc811, (q31_t)0x7f0d04b3, (q31_t)0x7f0c4107, (q31_t)0x7f0b7d0d, - (q31_t)0x7f0ab8c4, (q31_t)0x7f09f42d, - (q31_t)0x7f092f47, (q31_t)0x7f086a13, (q31_t)0x7f07a491, (q31_t)0x7f06dec0, (q31_t)0x7f0618a1, (q31_t)0x7f055233, - (q31_t)0x7f048b78, (q31_t)0x7f03c46d, - (q31_t)0x7f02fd15, (q31_t)0x7f02356e, (q31_t)0x7f016d79, (q31_t)0x7f00a535, (q31_t)0x7effdca4, (q31_t)0x7eff13c3, - (q31_t)0x7efe4a95, (q31_t)0x7efd8118, - (q31_t)0x7efcb74d, (q31_t)0x7efbed33, (q31_t)0x7efb22cb, (q31_t)0x7efa5815, (q31_t)0x7ef98d11, (q31_t)0x7ef8c1be, - (q31_t)0x7ef7f61d, (q31_t)0x7ef72a2d, - (q31_t)0x7ef65def, (q31_t)0x7ef59163, (q31_t)0x7ef4c489, (q31_t)0x7ef3f760, (q31_t)0x7ef329e9, (q31_t)0x7ef25c24, - (q31_t)0x7ef18e10, (q31_t)0x7ef0bfae, - (q31_t)0x7eeff0fe, (q31_t)0x7eef21ff, (q31_t)0x7eee52b2, (q31_t)0x7eed8317, (q31_t)0x7eecb32d, (q31_t)0x7eebe2f6, - (q31_t)0x7eeb1270, (q31_t)0x7eea419b, - (q31_t)0x7ee97079, (q31_t)0x7ee89f08, (q31_t)0x7ee7cd49, (q31_t)0x7ee6fb3b, (q31_t)0x7ee628df, (q31_t)0x7ee55635, - (q31_t)0x7ee4833d, (q31_t)0x7ee3aff6, - (q31_t)0x7ee2dc61, (q31_t)0x7ee2087e, (q31_t)0x7ee1344d, (q31_t)0x7ee05fcd, (q31_t)0x7edf8aff, (q31_t)0x7edeb5e3, - (q31_t)0x7edde079, (q31_t)0x7edd0ac0, - (q31_t)0x7edc34b9, (q31_t)0x7edb5e64, (q31_t)0x7eda87c0, (q31_t)0x7ed9b0ce, (q31_t)0x7ed8d98e, (q31_t)0x7ed80200, - (q31_t)0x7ed72a24, (q31_t)0x7ed651f9, - (q31_t)0x7ed57980, (q31_t)0x7ed4a0b9, (q31_t)0x7ed3c7a3, (q31_t)0x7ed2ee40, (q31_t)0x7ed2148e, (q31_t)0x7ed13a8e, - (q31_t)0x7ed0603f, (q31_t)0x7ecf85a3, - (q31_t)0x7eceaab8, (q31_t)0x7ecdcf7f, (q31_t)0x7eccf3f8, (q31_t)0x7ecc1822, (q31_t)0x7ecb3bff, (q31_t)0x7eca5f8d, - (q31_t)0x7ec982cd, (q31_t)0x7ec8a5bf, - (q31_t)0x7ec7c862, (q31_t)0x7ec6eab7, (q31_t)0x7ec60cbe, (q31_t)0x7ec52e77, (q31_t)0x7ec44fe2, (q31_t)0x7ec370fe, - (q31_t)0x7ec291cd, (q31_t)0x7ec1b24d, - (q31_t)0x7ec0d27f, (q31_t)0x7ebff263, (q31_t)0x7ebf11f8, (q31_t)0x7ebe313f, (q31_t)0x7ebd5039, (q31_t)0x7ebc6ee4, - (q31_t)0x7ebb8d40, (q31_t)0x7ebaab4f, - (q31_t)0x7eb9c910, (q31_t)0x7eb8e682, (q31_t)0x7eb803a6, (q31_t)0x7eb7207c, (q31_t)0x7eb63d04, (q31_t)0x7eb5593d, - (q31_t)0x7eb47529, (q31_t)0x7eb390c6, - (q31_t)0x7eb2ac15, (q31_t)0x7eb1c716, (q31_t)0x7eb0e1c9, (q31_t)0x7eaffc2e, (q31_t)0x7eaf1645, (q31_t)0x7eae300d, - (q31_t)0x7ead4987, (q31_t)0x7eac62b3, - (q31_t)0x7eab7b91, (q31_t)0x7eaa9421, (q31_t)0x7ea9ac63, (q31_t)0x7ea8c457, (q31_t)0x7ea7dbfc, (q31_t)0x7ea6f353, - (q31_t)0x7ea60a5d, (q31_t)0x7ea52118, - (q31_t)0x7ea43785, (q31_t)0x7ea34da4, (q31_t)0x7ea26374, (q31_t)0x7ea178f7, (q31_t)0x7ea08e2b, (q31_t)0x7e9fa312, - (q31_t)0x7e9eb7aa, (q31_t)0x7e9dcbf4, - (q31_t)0x7e9cdff0, (q31_t)0x7e9bf39e, (q31_t)0x7e9b06fe, (q31_t)0x7e9a1a10, (q31_t)0x7e992cd4, (q31_t)0x7e983f49, - (q31_t)0x7e975171, (q31_t)0x7e96634a, - (q31_t)0x7e9574d6, (q31_t)0x7e948613, (q31_t)0x7e939702, (q31_t)0x7e92a7a3, (q31_t)0x7e91b7f6, (q31_t)0x7e90c7fb, - (q31_t)0x7e8fd7b2, (q31_t)0x7e8ee71b, - (q31_t)0x7e8df636, (q31_t)0x7e8d0502, (q31_t)0x7e8c1381, (q31_t)0x7e8b21b1, (q31_t)0x7e8a2f94, (q31_t)0x7e893d28, - (q31_t)0x7e884a6f, (q31_t)0x7e875767, - (q31_t)0x7e866411, (q31_t)0x7e85706d, (q31_t)0x7e847c7c, (q31_t)0x7e83883c, (q31_t)0x7e8293ae, (q31_t)0x7e819ed2, - (q31_t)0x7e80a9a8, (q31_t)0x7e7fb430, - (q31_t)0x7e7ebe6a, (q31_t)0x7e7dc856, (q31_t)0x7e7cd1f4, (q31_t)0x7e7bdb44, (q31_t)0x7e7ae446, (q31_t)0x7e79ecf9, - (q31_t)0x7e78f55f, (q31_t)0x7e77fd77, - (q31_t)0x7e770541, (q31_t)0x7e760cbd, (q31_t)0x7e7513ea, (q31_t)0x7e741aca, (q31_t)0x7e73215c, (q31_t)0x7e7227a0, - (q31_t)0x7e712d96, (q31_t)0x7e70333d, - (q31_t)0x7e6f3897, (q31_t)0x7e6e3da3, (q31_t)0x7e6d4261, (q31_t)0x7e6c46d1, (q31_t)0x7e6b4af2, (q31_t)0x7e6a4ec6, - (q31_t)0x7e69524c, (q31_t)0x7e685584, - (q31_t)0x7e67586e, (q31_t)0x7e665b0a, (q31_t)0x7e655d58, (q31_t)0x7e645f58, (q31_t)0x7e63610a, (q31_t)0x7e62626e, - (q31_t)0x7e616384, (q31_t)0x7e60644c, - (q31_t)0x7e5f64c7, (q31_t)0x7e5e64f3, (q31_t)0x7e5d64d1, (q31_t)0x7e5c6461, (q31_t)0x7e5b63a4, (q31_t)0x7e5a6298, - (q31_t)0x7e59613f, (q31_t)0x7e585f97, - (q31_t)0x7e575da2, (q31_t)0x7e565b5f, (q31_t)0x7e5558ce, (q31_t)0x7e5455ef, (q31_t)0x7e5352c1, (q31_t)0x7e524f46, - (q31_t)0x7e514b7e, (q31_t)0x7e504767, - (q31_t)0x7e4f4302, (q31_t)0x7e4e3e4f, (q31_t)0x7e4d394f, (q31_t)0x7e4c3400, (q31_t)0x7e4b2e64, (q31_t)0x7e4a287a, - (q31_t)0x7e492241, (q31_t)0x7e481bbb, - (q31_t)0x7e4714e7, (q31_t)0x7e460dc5, (q31_t)0x7e450656, (q31_t)0x7e43fe98, (q31_t)0x7e42f68c, (q31_t)0x7e41ee33, - (q31_t)0x7e40e58c, (q31_t)0x7e3fdc97, - (q31_t)0x7e3ed353, (q31_t)0x7e3dc9c3, (q31_t)0x7e3cbfe4, (q31_t)0x7e3bb5b7, (q31_t)0x7e3aab3c, (q31_t)0x7e39a074, - (q31_t)0x7e38955e, (q31_t)0x7e3789fa, - (q31_t)0x7e367e48, (q31_t)0x7e357248, (q31_t)0x7e3465fa, (q31_t)0x7e33595e, (q31_t)0x7e324c75, (q31_t)0x7e313f3e, - (q31_t)0x7e3031b9, (q31_t)0x7e2f23e6, - (q31_t)0x7e2e15c5, (q31_t)0x7e2d0756, (q31_t)0x7e2bf89a, (q31_t)0x7e2ae990, (q31_t)0x7e29da38, (q31_t)0x7e28ca92, - (q31_t)0x7e27ba9e, (q31_t)0x7e26aa5d, - (q31_t)0x7e2599cd, (q31_t)0x7e2488f0, (q31_t)0x7e2377c5, (q31_t)0x7e22664c, (q31_t)0x7e215486, (q31_t)0x7e204271, - (q31_t)0x7e1f300f, (q31_t)0x7e1e1d5f, - (q31_t)0x7e1d0a61, (q31_t)0x7e1bf716, (q31_t)0x7e1ae37c, (q31_t)0x7e19cf95, (q31_t)0x7e18bb60, (q31_t)0x7e17a6dd, - (q31_t)0x7e16920d, (q31_t)0x7e157cee, - (q31_t)0x7e146782, (q31_t)0x7e1351c9, (q31_t)0x7e123bc1, (q31_t)0x7e11256c, (q31_t)0x7e100ec8, (q31_t)0x7e0ef7d7, - (q31_t)0x7e0de099, (q31_t)0x7e0cc90c, - (q31_t)0x7e0bb132, (q31_t)0x7e0a990a, (q31_t)0x7e098095, (q31_t)0x7e0867d1, (q31_t)0x7e074ec0, (q31_t)0x7e063561, - (q31_t)0x7e051bb4, (q31_t)0x7e0401ba, - (q31_t)0x7e02e772, (q31_t)0x7e01ccdc, (q31_t)0x7e00b1f9, (q31_t)0x7dff96c7, (q31_t)0x7dfe7b48, (q31_t)0x7dfd5f7b, - (q31_t)0x7dfc4361, (q31_t)0x7dfb26f9, - (q31_t)0x7dfa0a43, (q31_t)0x7df8ed3f, (q31_t)0x7df7cfee, (q31_t)0x7df6b24f, (q31_t)0x7df59462, (q31_t)0x7df47628, - (q31_t)0x7df357a0, (q31_t)0x7df238ca, - (q31_t)0x7df119a7, (q31_t)0x7deffa35, (q31_t)0x7deeda77, (q31_t)0x7dedba6a, (q31_t)0x7dec9a10, (q31_t)0x7deb7968, - (q31_t)0x7dea5872, (q31_t)0x7de9372f, - (q31_t)0x7de8159e, (q31_t)0x7de6f3c0, (q31_t)0x7de5d193, (q31_t)0x7de4af1a, (q31_t)0x7de38c52, (q31_t)0x7de2693d, - (q31_t)0x7de145da, (q31_t)0x7de02229, - (q31_t)0x7ddefe2b, (q31_t)0x7dddd9e0, (q31_t)0x7ddcb546, (q31_t)0x7ddb905f, (q31_t)0x7dda6b2a, (q31_t)0x7dd945a8, - (q31_t)0x7dd81fd8, (q31_t)0x7dd6f9ba, - (q31_t)0x7dd5d34f, (q31_t)0x7dd4ac96, (q31_t)0x7dd38590, (q31_t)0x7dd25e3c, (q31_t)0x7dd1369a, (q31_t)0x7dd00eab, - (q31_t)0x7dcee66e, (q31_t)0x7dcdbde3, - (q31_t)0x7dcc950b, (q31_t)0x7dcb6be6, (q31_t)0x7dca4272, (q31_t)0x7dc918b1, (q31_t)0x7dc7eea3, (q31_t)0x7dc6c447, - (q31_t)0x7dc5999d, (q31_t)0x7dc46ea6, - (q31_t)0x7dc34361, (q31_t)0x7dc217cf, (q31_t)0x7dc0ebef, (q31_t)0x7dbfbfc1, (q31_t)0x7dbe9346, (q31_t)0x7dbd667d, - (q31_t)0x7dbc3967, (q31_t)0x7dbb0c03, - (q31_t)0x7db9de52, (q31_t)0x7db8b053, (q31_t)0x7db78207, (q31_t)0x7db6536d, (q31_t)0x7db52485, (q31_t)0x7db3f550, - (q31_t)0x7db2c5cd, (q31_t)0x7db195fd, - (q31_t)0x7db065df, (q31_t)0x7daf3574, (q31_t)0x7dae04bb, (q31_t)0x7dacd3b5, (q31_t)0x7daba261, (q31_t)0x7daa70c0, - (q31_t)0x7da93ed1, (q31_t)0x7da80c95, - (q31_t)0x7da6da0b, (q31_t)0x7da5a733, (q31_t)0x7da4740e, (q31_t)0x7da3409c, (q31_t)0x7da20cdc, (q31_t)0x7da0d8cf, - (q31_t)0x7d9fa474, (q31_t)0x7d9e6fcb, - (q31_t)0x7d9d3ad6, (q31_t)0x7d9c0592, (q31_t)0x7d9ad001, (q31_t)0x7d999a23, (q31_t)0x7d9863f7, (q31_t)0x7d972d7e, - (q31_t)0x7d95f6b7, (q31_t)0x7d94bfa3, - (q31_t)0x7d938841, (q31_t)0x7d925092, (q31_t)0x7d911896, (q31_t)0x7d8fe04c, (q31_t)0x7d8ea7b4, (q31_t)0x7d8d6ecf, - (q31_t)0x7d8c359d, (q31_t)0x7d8afc1d, - (q31_t)0x7d89c250, (q31_t)0x7d888835, (q31_t)0x7d874dcd, (q31_t)0x7d861317, (q31_t)0x7d84d814, (q31_t)0x7d839cc4, - (q31_t)0x7d826126, (q31_t)0x7d81253a, - (q31_t)0x7d7fe902, (q31_t)0x7d7eac7c, (q31_t)0x7d7d6fa8, (q31_t)0x7d7c3287, (q31_t)0x7d7af519, (q31_t)0x7d79b75d, - (q31_t)0x7d787954, (q31_t)0x7d773afd, - (q31_t)0x7d75fc59, (q31_t)0x7d74bd68, (q31_t)0x7d737e29, (q31_t)0x7d723e9d, (q31_t)0x7d70fec4, (q31_t)0x7d6fbe9d, - (q31_t)0x7d6e7e29, (q31_t)0x7d6d3d67, - (q31_t)0x7d6bfc58, (q31_t)0x7d6abafc, (q31_t)0x7d697952, (q31_t)0x7d68375b, (q31_t)0x7d66f517, (q31_t)0x7d65b285, - (q31_t)0x7d646fa6, (q31_t)0x7d632c79, - (q31_t)0x7d61e8ff, (q31_t)0x7d60a538, (q31_t)0x7d5f6124, (q31_t)0x7d5e1cc2, (q31_t)0x7d5cd813, (q31_t)0x7d5b9316, - (q31_t)0x7d5a4dcc, (q31_t)0x7d590835, - (q31_t)0x7d57c251, (q31_t)0x7d567c1f, (q31_t)0x7d5535a0, (q31_t)0x7d53eed3, (q31_t)0x7d52a7ba, (q31_t)0x7d516053, - (q31_t)0x7d50189e, (q31_t)0x7d4ed09d, - (q31_t)0x7d4d884e, (q31_t)0x7d4c3fb1, (q31_t)0x7d4af6c8, (q31_t)0x7d49ad91, (q31_t)0x7d48640d, (q31_t)0x7d471a3c, - (q31_t)0x7d45d01d, (q31_t)0x7d4485b1, - (q31_t)0x7d433af8, (q31_t)0x7d41eff1, (q31_t)0x7d40a49e, (q31_t)0x7d3f58fd, (q31_t)0x7d3e0d0e, (q31_t)0x7d3cc0d3, - (q31_t)0x7d3b744a, (q31_t)0x7d3a2774, - (q31_t)0x7d38da51, (q31_t)0x7d378ce0, (q31_t)0x7d363f23, (q31_t)0x7d34f118, (q31_t)0x7d33a2bf, (q31_t)0x7d32541a, - (q31_t)0x7d310527, (q31_t)0x7d2fb5e7, - (q31_t)0x7d2e665a, (q31_t)0x7d2d1680, (q31_t)0x7d2bc659, (q31_t)0x7d2a75e4, (q31_t)0x7d292522, (q31_t)0x7d27d413, - (q31_t)0x7d2682b6, (q31_t)0x7d25310d, - (q31_t)0x7d23df16, (q31_t)0x7d228cd2, (q31_t)0x7d213a41, (q31_t)0x7d1fe762, (q31_t)0x7d1e9437, (q31_t)0x7d1d40be, - (q31_t)0x7d1becf8, (q31_t)0x7d1a98e5, - (q31_t)0x7d194485, (q31_t)0x7d17efd8, (q31_t)0x7d169add, (q31_t)0x7d154595, (q31_t)0x7d13f001, (q31_t)0x7d129a1f, - (q31_t)0x7d1143ef, (q31_t)0x7d0fed73, - (q31_t)0x7d0e96aa, (q31_t)0x7d0d3f93, (q31_t)0x7d0be82f, (q31_t)0x7d0a907e, (q31_t)0x7d093880, (q31_t)0x7d07e035, - (q31_t)0x7d06879d, (q31_t)0x7d052eb8, - (q31_t)0x7d03d585, (q31_t)0x7d027c05, (q31_t)0x7d012239, (q31_t)0x7cffc81f, (q31_t)0x7cfe6db8, (q31_t)0x7cfd1304, - (q31_t)0x7cfbb803, (q31_t)0x7cfa5cb4, - (q31_t)0x7cf90119, (q31_t)0x7cf7a531, (q31_t)0x7cf648fb, (q31_t)0x7cf4ec79, (q31_t)0x7cf38fa9, (q31_t)0x7cf2328c, - (q31_t)0x7cf0d522, (q31_t)0x7cef776b, - (q31_t)0x7cee1967, (q31_t)0x7cecbb16, (q31_t)0x7ceb5c78, (q31_t)0x7ce9fd8d, (q31_t)0x7ce89e55, (q31_t)0x7ce73ed0, - (q31_t)0x7ce5defd, (q31_t)0x7ce47ede, - (q31_t)0x7ce31e72, (q31_t)0x7ce1bdb8, (q31_t)0x7ce05cb2, (q31_t)0x7cdefb5e, (q31_t)0x7cdd99be, (q31_t)0x7cdc37d0, - (q31_t)0x7cdad596, (q31_t)0x7cd9730e, - (q31_t)0x7cd8103a, (q31_t)0x7cd6ad18, (q31_t)0x7cd549aa, (q31_t)0x7cd3e5ee, (q31_t)0x7cd281e5, (q31_t)0x7cd11d90, - (q31_t)0x7ccfb8ed, (q31_t)0x7cce53fe, - (q31_t)0x7ccceec1, (q31_t)0x7ccb8937, (q31_t)0x7cca2361, (q31_t)0x7cc8bd3d, (q31_t)0x7cc756cd, (q31_t)0x7cc5f010, - (q31_t)0x7cc48905, (q31_t)0x7cc321ae, - (q31_t)0x7cc1ba09, (q31_t)0x7cc05218, (q31_t)0x7cbee9da, (q31_t)0x7cbd814f, (q31_t)0x7cbc1877, (q31_t)0x7cbaaf51, - (q31_t)0x7cb945df, (q31_t)0x7cb7dc20, - (q31_t)0x7cb67215, (q31_t)0x7cb507bc, (q31_t)0x7cb39d16, (q31_t)0x7cb23223, (q31_t)0x7cb0c6e4, (q31_t)0x7caf5b57, - (q31_t)0x7cadef7e, (q31_t)0x7cac8358, - (q31_t)0x7cab16e4, (q31_t)0x7ca9aa24, (q31_t)0x7ca83d17, (q31_t)0x7ca6cfbd, (q31_t)0x7ca56216, (q31_t)0x7ca3f423, - (q31_t)0x7ca285e2, (q31_t)0x7ca11755, - (q31_t)0x7c9fa87a, (q31_t)0x7c9e3953, (q31_t)0x7c9cc9df, (q31_t)0x7c9b5a1e, (q31_t)0x7c99ea10, (q31_t)0x7c9879b6, - (q31_t)0x7c97090e, (q31_t)0x7c95981a, - (q31_t)0x7c9426d8, (q31_t)0x7c92b54a, (q31_t)0x7c91436f, (q31_t)0x7c8fd148, (q31_t)0x7c8e5ed3, (q31_t)0x7c8cec12, - (q31_t)0x7c8b7903, (q31_t)0x7c8a05a8, - (q31_t)0x7c889200, (q31_t)0x7c871e0c, (q31_t)0x7c85a9ca, (q31_t)0x7c84353c, (q31_t)0x7c82c060, (q31_t)0x7c814b39, - (q31_t)0x7c7fd5c4, (q31_t)0x7c7e6002, - (q31_t)0x7c7ce9f4, (q31_t)0x7c7b7399, (q31_t)0x7c79fcf1, (q31_t)0x7c7885fc, (q31_t)0x7c770eba, (q31_t)0x7c75972c, - (q31_t)0x7c741f51, (q31_t)0x7c72a729, - (q31_t)0x7c712eb5, (q31_t)0x7c6fb5f3, (q31_t)0x7c6e3ce5, (q31_t)0x7c6cc38a, (q31_t)0x7c6b49e3, (q31_t)0x7c69cfee, - (q31_t)0x7c6855ad, (q31_t)0x7c66db1f, - (q31_t)0x7c656045, (q31_t)0x7c63e51e, (q31_t)0x7c6269aa, (q31_t)0x7c60ede9, (q31_t)0x7c5f71db, (q31_t)0x7c5df581, - (q31_t)0x7c5c78da, (q31_t)0x7c5afbe6, - (q31_t)0x7c597ea6, (q31_t)0x7c580119, (q31_t)0x7c56833f, (q31_t)0x7c550519, (q31_t)0x7c5386a6, (q31_t)0x7c5207e6, - (q31_t)0x7c5088d9, (q31_t)0x7c4f0980, - (q31_t)0x7c4d89da, (q31_t)0x7c4c09e8, (q31_t)0x7c4a89a8, (q31_t)0x7c49091c, (q31_t)0x7c478844, (q31_t)0x7c46071f, - (q31_t)0x7c4485ad, (q31_t)0x7c4303ee, - (q31_t)0x7c4181e3, (q31_t)0x7c3fff8b, (q31_t)0x7c3e7ce7, (q31_t)0x7c3cf9f5, (q31_t)0x7c3b76b8, (q31_t)0x7c39f32d, - (q31_t)0x7c386f56, (q31_t)0x7c36eb33, - (q31_t)0x7c3566c2, (q31_t)0x7c33e205, (q31_t)0x7c325cfc, (q31_t)0x7c30d7a6, (q31_t)0x7c2f5203, (q31_t)0x7c2dcc14, - (q31_t)0x7c2c45d8, (q31_t)0x7c2abf4f, - (q31_t)0x7c29387a, (q31_t)0x7c27b158, (q31_t)0x7c2629ea, (q31_t)0x7c24a22f, (q31_t)0x7c231a28, (q31_t)0x7c2191d4, - (q31_t)0x7c200933, (q31_t)0x7c1e8046, - (q31_t)0x7c1cf70c, (q31_t)0x7c1b6d86, (q31_t)0x7c19e3b3, (q31_t)0x7c185994, (q31_t)0x7c16cf28, (q31_t)0x7c15446f, - (q31_t)0x7c13b96a, (q31_t)0x7c122e19, - (q31_t)0x7c10a27b, (q31_t)0x7c0f1690, (q31_t)0x7c0d8a59, (q31_t)0x7c0bfdd5, (q31_t)0x7c0a7105, (q31_t)0x7c08e3e8, - (q31_t)0x7c07567f, (q31_t)0x7c05c8c9, - (q31_t)0x7c043ac7, (q31_t)0x7c02ac78, (q31_t)0x7c011ddd, (q31_t)0x7bff8ef5, (q31_t)0x7bfdffc1, (q31_t)0x7bfc7041, - (q31_t)0x7bfae073, (q31_t)0x7bf9505a, - (q31_t)0x7bf7bff4, (q31_t)0x7bf62f41, (q31_t)0x7bf49e42, (q31_t)0x7bf30cf6, (q31_t)0x7bf17b5e, (q31_t)0x7befe97a, - (q31_t)0x7bee5749, (q31_t)0x7becc4cc, - (q31_t)0x7beb3202, (q31_t)0x7be99eec, (q31_t)0x7be80b89, (q31_t)0x7be677da, (q31_t)0x7be4e3df, (q31_t)0x7be34f97, - (q31_t)0x7be1bb02, (q31_t)0x7be02621, - (q31_t)0x7bde90f4, (q31_t)0x7bdcfb7b, (q31_t)0x7bdb65b5, (q31_t)0x7bd9cfa2, (q31_t)0x7bd83944, (q31_t)0x7bd6a298, - (q31_t)0x7bd50ba1, (q31_t)0x7bd3745d, - (q31_t)0x7bd1dccc, (q31_t)0x7bd044f0, (q31_t)0x7bceacc7, (q31_t)0x7bcd1451, (q31_t)0x7bcb7b8f, (q31_t)0x7bc9e281, - (q31_t)0x7bc84927, (q31_t)0x7bc6af80, - (q31_t)0x7bc5158c, (q31_t)0x7bc37b4d, (q31_t)0x7bc1e0c1, (q31_t)0x7bc045e9, (q31_t)0x7bbeaac4, (q31_t)0x7bbd0f53, - (q31_t)0x7bbb7396, (q31_t)0x7bb9d78c, - (q31_t)0x7bb83b36, (q31_t)0x7bb69e94, (q31_t)0x7bb501a5, (q31_t)0x7bb3646a, (q31_t)0x7bb1c6e3, (q31_t)0x7bb02910, - (q31_t)0x7bae8af0, (q31_t)0x7bacec84, - (q31_t)0x7bab4dcc, (q31_t)0x7ba9aec7, (q31_t)0x7ba80f76, (q31_t)0x7ba66fd9, (q31_t)0x7ba4cfef, (q31_t)0x7ba32fba, - (q31_t)0x7ba18f38, (q31_t)0x7b9fee69, - (q31_t)0x7b9e4d4f, (q31_t)0x7b9cabe8, (q31_t)0x7b9b0a35, (q31_t)0x7b996836, (q31_t)0x7b97c5ea, (q31_t)0x7b962352, - (q31_t)0x7b94806e, (q31_t)0x7b92dd3e, - (q31_t)0x7b9139c2, (q31_t)0x7b8f95f9, (q31_t)0x7b8df1e4, (q31_t)0x7b8c4d83, (q31_t)0x7b8aa8d6, (q31_t)0x7b8903dc, - (q31_t)0x7b875e96, (q31_t)0x7b85b904, - (q31_t)0x7b841326, (q31_t)0x7b826cfc, (q31_t)0x7b80c686, (q31_t)0x7b7f1fc3, (q31_t)0x7b7d78b4, (q31_t)0x7b7bd159, - (q31_t)0x7b7a29b2, (q31_t)0x7b7881be, - (q31_t)0x7b76d97f, (q31_t)0x7b7530f3, (q31_t)0x7b73881b, (q31_t)0x7b71def7, (q31_t)0x7b703587, (q31_t)0x7b6e8bcb, - (q31_t)0x7b6ce1c2, (q31_t)0x7b6b376e, - (q31_t)0x7b698ccd, (q31_t)0x7b67e1e0, (q31_t)0x7b6636a7, (q31_t)0x7b648b22, (q31_t)0x7b62df51, (q31_t)0x7b613334, - (q31_t)0x7b5f86ca, (q31_t)0x7b5dda15, - (q31_t)0x7b5c2d13, (q31_t)0x7b5a7fc6, (q31_t)0x7b58d22c, (q31_t)0x7b572446, (q31_t)0x7b557614, (q31_t)0x7b53c796, - (q31_t)0x7b5218cc, (q31_t)0x7b5069b6, - (q31_t)0x7b4eba53, (q31_t)0x7b4d0aa5, (q31_t)0x7b4b5aab, (q31_t)0x7b49aa64, (q31_t)0x7b47f9d2, (q31_t)0x7b4648f3, - (q31_t)0x7b4497c9, (q31_t)0x7b42e652, - (q31_t)0x7b413490, (q31_t)0x7b3f8281, (q31_t)0x7b3dd026, (q31_t)0x7b3c1d80, (q31_t)0x7b3a6a8d, (q31_t)0x7b38b74e, - (q31_t)0x7b3703c3, (q31_t)0x7b354fed, - (q31_t)0x7b339bca, (q31_t)0x7b31e75b, (q31_t)0x7b3032a0, (q31_t)0x7b2e7d9a, (q31_t)0x7b2cc847, (q31_t)0x7b2b12a8, - (q31_t)0x7b295cbe, (q31_t)0x7b27a687, - (q31_t)0x7b25f004, (q31_t)0x7b243936, (q31_t)0x7b22821b, (q31_t)0x7b20cab5, (q31_t)0x7b1f1302, (q31_t)0x7b1d5b04, - (q31_t)0x7b1ba2b9, (q31_t)0x7b19ea23, - (q31_t)0x7b183141, (q31_t)0x7b167813, (q31_t)0x7b14be99, (q31_t)0x7b1304d3, (q31_t)0x7b114ac1, (q31_t)0x7b0f9063, - (q31_t)0x7b0dd5b9, (q31_t)0x7b0c1ac4, - (q31_t)0x7b0a5f82, (q31_t)0x7b08a3f5, (q31_t)0x7b06e81b, (q31_t)0x7b052bf6, (q31_t)0x7b036f85, (q31_t)0x7b01b2c8, - (q31_t)0x7afff5bf, (q31_t)0x7afe386a, - (q31_t)0x7afc7aca, (q31_t)0x7afabcdd, (q31_t)0x7af8fea5, (q31_t)0x7af74021, (q31_t)0x7af58151, (q31_t)0x7af3c235, - (q31_t)0x7af202cd, (q31_t)0x7af0431a, - (q31_t)0x7aee831a, (q31_t)0x7aecc2cf, (q31_t)0x7aeb0238, (q31_t)0x7ae94155, (q31_t)0x7ae78026, (q31_t)0x7ae5beac, - (q31_t)0x7ae3fce6, (q31_t)0x7ae23ad4, - (q31_t)0x7ae07876, (q31_t)0x7adeb5cc, (q31_t)0x7adcf2d6, (q31_t)0x7adb2f95, (q31_t)0x7ad96c08, (q31_t)0x7ad7a82f, - (q31_t)0x7ad5e40a, (q31_t)0x7ad41f9a, - (q31_t)0x7ad25ade, (q31_t)0x7ad095d6, (q31_t)0x7aced082, (q31_t)0x7acd0ae3, (q31_t)0x7acb44f8, (q31_t)0x7ac97ec1, - (q31_t)0x7ac7b83e, (q31_t)0x7ac5f170, - (q31_t)0x7ac42a55, (q31_t)0x7ac262ef, (q31_t)0x7ac09b3e, (q31_t)0x7abed341, (q31_t)0x7abd0af7, (q31_t)0x7abb4263, - (q31_t)0x7ab97982, (q31_t)0x7ab7b056, - (q31_t)0x7ab5e6de, (q31_t)0x7ab41d1b, (q31_t)0x7ab2530b, (q31_t)0x7ab088b0, (q31_t)0x7aaebe0a, (q31_t)0x7aacf318, - (q31_t)0x7aab27da, (q31_t)0x7aa95c50, - (q31_t)0x7aa7907b, (q31_t)0x7aa5c45a, (q31_t)0x7aa3f7ed, (q31_t)0x7aa22b35, (q31_t)0x7aa05e31, (q31_t)0x7a9e90e1, - (q31_t)0x7a9cc346, (q31_t)0x7a9af55f, - (q31_t)0x7a99272d, (q31_t)0x7a9758af, (q31_t)0x7a9589e5, (q31_t)0x7a93bad0, (q31_t)0x7a91eb6f, (q31_t)0x7a901bc2, - (q31_t)0x7a8e4bca, (q31_t)0x7a8c7b87, - (q31_t)0x7a8aaaf7, (q31_t)0x7a88da1c, (q31_t)0x7a8708f6, (q31_t)0x7a853784, (q31_t)0x7a8365c6, (q31_t)0x7a8193bd, - (q31_t)0x7a7fc168, (q31_t)0x7a7deec8, - (q31_t)0x7a7c1bdc, (q31_t)0x7a7a48a4, (q31_t)0x7a787521, (q31_t)0x7a76a153, (q31_t)0x7a74cd38, (q31_t)0x7a72f8d3, - (q31_t)0x7a712422, (q31_t)0x7a6f4f25, - (q31_t)0x7a6d79dd, (q31_t)0x7a6ba449, (q31_t)0x7a69ce6a, (q31_t)0x7a67f83f, (q31_t)0x7a6621c9, (q31_t)0x7a644b07, - (q31_t)0x7a6273fa, (q31_t)0x7a609ca1, - (q31_t)0x7a5ec4fc, (q31_t)0x7a5ced0d, (q31_t)0x7a5b14d1, (q31_t)0x7a593c4b, (q31_t)0x7a576379, (q31_t)0x7a558a5b, - (q31_t)0x7a53b0f2, (q31_t)0x7a51d73d, - (q31_t)0x7a4ffd3d, (q31_t)0x7a4e22f2, (q31_t)0x7a4c485b, (q31_t)0x7a4a6d78, (q31_t)0x7a48924b, (q31_t)0x7a46b6d1, - (q31_t)0x7a44db0d, (q31_t)0x7a42fefd, - (q31_t)0x7a4122a1, (q31_t)0x7a3f45fa, (q31_t)0x7a3d6908, (q31_t)0x7a3b8bca, (q31_t)0x7a39ae41, (q31_t)0x7a37d06d, - (q31_t)0x7a35f24d, (q31_t)0x7a3413e2, - (q31_t)0x7a32352b, (q31_t)0x7a305629, (q31_t)0x7a2e76dc, (q31_t)0x7a2c9743, (q31_t)0x7a2ab75f, (q31_t)0x7a28d72f, - (q31_t)0x7a26f6b4, (q31_t)0x7a2515ee, - (q31_t)0x7a2334dd, (q31_t)0x7a215380, (q31_t)0x7a1f71d7, (q31_t)0x7a1d8fe4, (q31_t)0x7a1bada5, (q31_t)0x7a19cb1b, - (q31_t)0x7a17e845, (q31_t)0x7a160524, - (q31_t)0x7a1421b8, (q31_t)0x7a123e01, (q31_t)0x7a1059fe, (q31_t)0x7a0e75b0, (q31_t)0x7a0c9117, (q31_t)0x7a0aac32, - (q31_t)0x7a08c702, (q31_t)0x7a06e187, - (q31_t)0x7a04fbc1, (q31_t)0x7a0315af, (q31_t)0x7a012f52, (q31_t)0x79ff48aa, (q31_t)0x79fd61b6, (q31_t)0x79fb7a77, - (q31_t)0x79f992ed, (q31_t)0x79f7ab18, - (q31_t)0x79f5c2f8, (q31_t)0x79f3da8c, (q31_t)0x79f1f1d5, (q31_t)0x79f008d3, (q31_t)0x79ee1f86, (q31_t)0x79ec35ed, - (q31_t)0x79ea4c09, (q31_t)0x79e861da, - (q31_t)0x79e67760, (q31_t)0x79e48c9b, (q31_t)0x79e2a18a, (q31_t)0x79e0b62e, (q31_t)0x79deca87, (q31_t)0x79dcde95, - (q31_t)0x79daf258, (q31_t)0x79d905d0, - (q31_t)0x79d718fc, (q31_t)0x79d52bdd, (q31_t)0x79d33e73, (q31_t)0x79d150be, (q31_t)0x79cf62be, (q31_t)0x79cd7473, - (q31_t)0x79cb85dc, (q31_t)0x79c996fb, - (q31_t)0x79c7a7ce, (q31_t)0x79c5b856, (q31_t)0x79c3c893, (q31_t)0x79c1d885, (q31_t)0x79bfe82c, (q31_t)0x79bdf788, - (q31_t)0x79bc0698, (q31_t)0x79ba155e, - (q31_t)0x79b823d8, (q31_t)0x79b63207, (q31_t)0x79b43fec, (q31_t)0x79b24d85, (q31_t)0x79b05ad3, (q31_t)0x79ae67d6, - (q31_t)0x79ac748e, (q31_t)0x79aa80fb, - (q31_t)0x79a88d1d, (q31_t)0x79a698f4, (q31_t)0x79a4a480, (q31_t)0x79a2afc1, (q31_t)0x79a0bab6, (q31_t)0x799ec561, - (q31_t)0x799ccfc1, (q31_t)0x799ad9d5, - (q31_t)0x7998e39f, (q31_t)0x7996ed1e, (q31_t)0x7994f651, (q31_t)0x7992ff3a, (q31_t)0x799107d8, (q31_t)0x798f102a, - (q31_t)0x798d1832, (q31_t)0x798b1fef, - (q31_t)0x79892761, (q31_t)0x79872e87, (q31_t)0x79853563, (q31_t)0x79833bf4, (q31_t)0x7981423a, (q31_t)0x797f4835, - (q31_t)0x797d4de5, (q31_t)0x797b534a, - (q31_t)0x79795864, (q31_t)0x79775d33, (q31_t)0x797561b8, (q31_t)0x797365f1, (q31_t)0x797169df, (q31_t)0x796f6d83, - (q31_t)0x796d70dc, (q31_t)0x796b73e9, - (q31_t)0x796976ac, (q31_t)0x79677924, (q31_t)0x79657b51, (q31_t)0x79637d33, (q31_t)0x79617eca, (q31_t)0x795f8017, - (q31_t)0x795d8118, (q31_t)0x795b81cf, - (q31_t)0x7959823b, (q31_t)0x7957825c, (q31_t)0x79558232, (q31_t)0x795381bd, (q31_t)0x795180fe, (q31_t)0x794f7ff3, - (q31_t)0x794d7e9e, (q31_t)0x794b7cfe, - (q31_t)0x79497b13, (q31_t)0x794778dd, (q31_t)0x7945765d, (q31_t)0x79437391, (q31_t)0x7941707b, (q31_t)0x793f6d1a, - (q31_t)0x793d696f, (q31_t)0x793b6578, - (q31_t)0x79396137, (q31_t)0x79375cab, (q31_t)0x793557d4, (q31_t)0x793352b2, (q31_t)0x79314d46, (q31_t)0x792f478f, - (q31_t)0x792d418d, (q31_t)0x792b3b40, - (q31_t)0x792934a9, (q31_t)0x79272dc7, (q31_t)0x7925269a, (q31_t)0x79231f22, (q31_t)0x79211760, (q31_t)0x791f0f53, - (q31_t)0x791d06fb, (q31_t)0x791afe59, - (q31_t)0x7918f56c, (q31_t)0x7916ec34, (q31_t)0x7914e2b2, (q31_t)0x7912d8e4, (q31_t)0x7910cecc, (q31_t)0x790ec46a, - (q31_t)0x790cb9bd, (q31_t)0x790aaec5, - (q31_t)0x7908a382, (q31_t)0x790697f5, (q31_t)0x79048c1d, (q31_t)0x79027ffa, (q31_t)0x7900738d, (q31_t)0x78fe66d5, - (q31_t)0x78fc59d3, (q31_t)0x78fa4c86, - (q31_t)0x78f83eee, (q31_t)0x78f6310c, (q31_t)0x78f422df, (q31_t)0x78f21467, (q31_t)0x78f005a5, (q31_t)0x78edf698, - (q31_t)0x78ebe741, (q31_t)0x78e9d79f, - (q31_t)0x78e7c7b2, (q31_t)0x78e5b77b, (q31_t)0x78e3a6f9, (q31_t)0x78e1962d, (q31_t)0x78df8516, (q31_t)0x78dd73b5, - (q31_t)0x78db6209, (q31_t)0x78d95012, - (q31_t)0x78d73dd1, (q31_t)0x78d52b46, (q31_t)0x78d31870, (q31_t)0x78d1054f, (q31_t)0x78cef1e4, (q31_t)0x78ccde2e, - (q31_t)0x78caca2e, (q31_t)0x78c8b5e3, - (q31_t)0x78c6a14e, (q31_t)0x78c48c6e, (q31_t)0x78c27744, (q31_t)0x78c061cf, (q31_t)0x78be4c10, (q31_t)0x78bc3606, - (q31_t)0x78ba1fb2, (q31_t)0x78b80913, - (q31_t)0x78b5f22a, (q31_t)0x78b3daf7, (q31_t)0x78b1c379, (q31_t)0x78afabb0, (q31_t)0x78ad939d, (q31_t)0x78ab7b40, - (q31_t)0x78a96298, (q31_t)0x78a749a6, - (q31_t)0x78a53069, (q31_t)0x78a316e2, (q31_t)0x78a0fd11, (q31_t)0x789ee2f5, (q31_t)0x789cc88f, (q31_t)0x789aadde, - (q31_t)0x789892e3, (q31_t)0x7896779d, - (q31_t)0x78945c0d, (q31_t)0x78924033, (q31_t)0x7890240e, (q31_t)0x788e07a0, (q31_t)0x788beae6, (q31_t)0x7889cde2, - (q31_t)0x7887b094, (q31_t)0x788592fc, - (q31_t)0x78837519, (q31_t)0x788156ec, (q31_t)0x787f3875, (q31_t)0x787d19b3, (q31_t)0x787afaa7, (q31_t)0x7878db50, - (q31_t)0x7876bbb0, (q31_t)0x78749bc5, - (q31_t)0x78727b8f, (q31_t)0x78705b10, (q31_t)0x786e3a46, (q31_t)0x786c1932, (q31_t)0x7869f7d3, (q31_t)0x7867d62a, - (q31_t)0x7865b437, (q31_t)0x786391fa, - (q31_t)0x78616f72, (q31_t)0x785f4ca1, (q31_t)0x785d2984, (q31_t)0x785b061e, (q31_t)0x7858e26e, (q31_t)0x7856be73, - (q31_t)0x78549a2e, (q31_t)0x7852759e, - (q31_t)0x785050c5, (q31_t)0x784e2ba1, (q31_t)0x784c0633, (q31_t)0x7849e07b, (q31_t)0x7847ba79, (q31_t)0x7845942c, - (q31_t)0x78436d96, (q31_t)0x784146b5, - (q31_t)0x783f1f8a, (q31_t)0x783cf815, (q31_t)0x783ad055, (q31_t)0x7838a84c, (q31_t)0x78367ff8, (q31_t)0x7834575a, - (q31_t)0x78322e72, (q31_t)0x78300540, - (q31_t)0x782ddbc4, (q31_t)0x782bb1fd, (q31_t)0x782987ed, (q31_t)0x78275d92, (q31_t)0x782532ed, (q31_t)0x782307fe, - (q31_t)0x7820dcc5, (q31_t)0x781eb142, - (q31_t)0x781c8575, (q31_t)0x781a595d, (q31_t)0x78182cfc, (q31_t)0x78160051, (q31_t)0x7813d35b, (q31_t)0x7811a61b, - (q31_t)0x780f7892, (q31_t)0x780d4abe, - (q31_t)0x780b1ca0, (q31_t)0x7808ee38, (q31_t)0x7806bf86, (q31_t)0x7804908a, (q31_t)0x78026145, (q31_t)0x780031b5, - (q31_t)0x77fe01db, (q31_t)0x77fbd1b6, - (q31_t)0x77f9a148, (q31_t)0x77f77090, (q31_t)0x77f53f8e, (q31_t)0x77f30e42, (q31_t)0x77f0dcac, (q31_t)0x77eeaacc, - (q31_t)0x77ec78a2, (q31_t)0x77ea462e, - (q31_t)0x77e81370, (q31_t)0x77e5e068, (q31_t)0x77e3ad17, (q31_t)0x77e1797b, (q31_t)0x77df4595, (q31_t)0x77dd1165, - (q31_t)0x77dadcec, (q31_t)0x77d8a828, - (q31_t)0x77d6731a, (q31_t)0x77d43dc3, (q31_t)0x77d20822, (q31_t)0x77cfd236, (q31_t)0x77cd9c01, (q31_t)0x77cb6582, - (q31_t)0x77c92eb9, (q31_t)0x77c6f7a6, - (q31_t)0x77c4c04a, (q31_t)0x77c288a3, (q31_t)0x77c050b2, (q31_t)0x77be1878, (q31_t)0x77bbdff4, (q31_t)0x77b9a726, - (q31_t)0x77b76e0e, (q31_t)0x77b534ac, - (q31_t)0x77b2fb00, (q31_t)0x77b0c10b, (q31_t)0x77ae86cc, (q31_t)0x77ac4c43, (q31_t)0x77aa1170, (q31_t)0x77a7d653, - (q31_t)0x77a59aec, (q31_t)0x77a35f3c, - (q31_t)0x77a12342, (q31_t)0x779ee6fe, (q31_t)0x779caa70, (q31_t)0x779a6d99, (q31_t)0x77983077, (q31_t)0x7795f30c, - (q31_t)0x7793b557, (q31_t)0x77917759, - (q31_t)0x778f3910, (q31_t)0x778cfa7e, (q31_t)0x778abba2, (q31_t)0x77887c7d, (q31_t)0x77863d0d, (q31_t)0x7783fd54, - (q31_t)0x7781bd52, (q31_t)0x777f7d05, - (q31_t)0x777d3c6f, (q31_t)0x777afb8f, (q31_t)0x7778ba65, (q31_t)0x777678f2, (q31_t)0x77743735, (q31_t)0x7771f52e, - (q31_t)0x776fb2de, (q31_t)0x776d7044, - (q31_t)0x776b2d60, (q31_t)0x7768ea33, (q31_t)0x7766a6bc, (q31_t)0x776462fb, (q31_t)0x77621ef1, (q31_t)0x775fda9d, - (q31_t)0x775d95ff, (q31_t)0x775b5118, - (q31_t)0x77590be7, (q31_t)0x7756c66c, (q31_t)0x775480a8, (q31_t)0x77523a9b, (q31_t)0x774ff443, (q31_t)0x774dada2, - (q31_t)0x774b66b8, (q31_t)0x77491f84, - (q31_t)0x7746d806, (q31_t)0x7744903f, (q31_t)0x7742482e, (q31_t)0x773fffd4, (q31_t)0x773db730, (q31_t)0x773b6e42, - (q31_t)0x7739250b, (q31_t)0x7736db8b, - (q31_t)0x773491c0, (q31_t)0x773247ad, (q31_t)0x772ffd50, (q31_t)0x772db2a9, (q31_t)0x772b67b9, (q31_t)0x77291c7f, - (q31_t)0x7726d0fc, (q31_t)0x7724852f, - (q31_t)0x77223919, (q31_t)0x771fecb9, (q31_t)0x771da010, (q31_t)0x771b531d, (q31_t)0x771905e1, (q31_t)0x7716b85b, - (q31_t)0x77146a8c, (q31_t)0x77121c74, - (q31_t)0x770fce12, (q31_t)0x770d7f66, (q31_t)0x770b3072, (q31_t)0x7708e133, (q31_t)0x770691ab, (q31_t)0x770441da, - (q31_t)0x7701f1c0, (q31_t)0x76ffa15c, - (q31_t)0x76fd50ae, (q31_t)0x76faffb8, (q31_t)0x76f8ae78, (q31_t)0x76f65cee, (q31_t)0x76f40b1b, (q31_t)0x76f1b8ff, - (q31_t)0x76ef6699, (q31_t)0x76ed13ea, - (q31_t)0x76eac0f2, (q31_t)0x76e86db0, (q31_t)0x76e61a25, (q31_t)0x76e3c650, (q31_t)0x76e17233, (q31_t)0x76df1dcb, - (q31_t)0x76dcc91b, (q31_t)0x76da7421, - (q31_t)0x76d81ede, (q31_t)0x76d5c952, (q31_t)0x76d3737c, (q31_t)0x76d11d5d, (q31_t)0x76cec6f5, (q31_t)0x76cc7043, - (q31_t)0x76ca1948, (q31_t)0x76c7c204, - (q31_t)0x76c56a77, (q31_t)0x76c312a0, (q31_t)0x76c0ba80, (q31_t)0x76be6217, (q31_t)0x76bc0965, (q31_t)0x76b9b069, - (q31_t)0x76b75724, (q31_t)0x76b4fd96, - (q31_t)0x76b2a3bf, (q31_t)0x76b0499e, (q31_t)0x76adef34, (q31_t)0x76ab9481, (q31_t)0x76a93985, (q31_t)0x76a6de40, - (q31_t)0x76a482b1, (q31_t)0x76a226da, - (q31_t)0x769fcab9, (q31_t)0x769d6e4f, (q31_t)0x769b119b, (q31_t)0x7698b49f, (q31_t)0x76965759, (q31_t)0x7693f9ca, - (q31_t)0x76919bf3, (q31_t)0x768f3dd2, - (q31_t)0x768cdf67, (q31_t)0x768a80b4, (q31_t)0x768821b8, (q31_t)0x7685c272, (q31_t)0x768362e4, (q31_t)0x7681030c, - (q31_t)0x767ea2eb, (q31_t)0x767c4281, - (q31_t)0x7679e1ce, (q31_t)0x767780d2, (q31_t)0x76751f8d, (q31_t)0x7672bdfe, (q31_t)0x76705c27, (q31_t)0x766dfa07, - (q31_t)0x766b979d, (q31_t)0x766934eb, - (q31_t)0x7666d1ef, (q31_t)0x76646eab, (q31_t)0x76620b1d, (q31_t)0x765fa747, (q31_t)0x765d4327, (q31_t)0x765adebe, - (q31_t)0x76587a0d, (q31_t)0x76561512, - (q31_t)0x7653afce, (q31_t)0x76514a42, (q31_t)0x764ee46c, (q31_t)0x764c7e4d, (q31_t)0x764a17e6, (q31_t)0x7647b135, - (q31_t)0x76454a3c, (q31_t)0x7642e2f9, - (q31_t)0x76407b6e, (q31_t)0x763e139a, (q31_t)0x763bab7c, (q31_t)0x76394316, (q31_t)0x7636da67, (q31_t)0x7634716f, - (q31_t)0x7632082e, (q31_t)0x762f9ea4, - (q31_t)0x762d34d1, (q31_t)0x762acab6, (q31_t)0x76286051, (q31_t)0x7625f5a3, (q31_t)0x76238aad, (q31_t)0x76211f6e, - (q31_t)0x761eb3e6, (q31_t)0x761c4815, - (q31_t)0x7619dbfb, (q31_t)0x76176f98, (q31_t)0x761502ed, (q31_t)0x761295f9, (q31_t)0x761028bb, (q31_t)0x760dbb35, - (q31_t)0x760b4d67, (q31_t)0x7608df4f, - (q31_t)0x760670ee, (q31_t)0x76040245, (q31_t)0x76019353, (q31_t)0x75ff2418, (q31_t)0x75fcb495, (q31_t)0x75fa44c8, - (q31_t)0x75f7d4b3, (q31_t)0x75f56455, - (q31_t)0x75f2f3ae, (q31_t)0x75f082bf, (q31_t)0x75ee1187, (q31_t)0x75eba006, (q31_t)0x75e92e3c, (q31_t)0x75e6bc2a, - (q31_t)0x75e449ce, (q31_t)0x75e1d72b, - (q31_t)0x75df643e, (q31_t)0x75dcf109, (q31_t)0x75da7d8b, (q31_t)0x75d809c4, (q31_t)0x75d595b4, (q31_t)0x75d3215c, - (q31_t)0x75d0acbc, (q31_t)0x75ce37d2, - (q31_t)0x75cbc2a0, (q31_t)0x75c94d25, (q31_t)0x75c6d762, (q31_t)0x75c46156, (q31_t)0x75c1eb01, (q31_t)0x75bf7464, - (q31_t)0x75bcfd7e, (q31_t)0x75ba864f, - (q31_t)0x75b80ed8, (q31_t)0x75b59718, (q31_t)0x75b31f0f, (q31_t)0x75b0a6be, (q31_t)0x75ae2e25, (q31_t)0x75abb542, - (q31_t)0x75a93c18, (q31_t)0x75a6c2a4, - (q31_t)0x75a448e8, (q31_t)0x75a1cee4, (q31_t)0x759f5496, (q31_t)0x759cda01, (q31_t)0x759a5f22, (q31_t)0x7597e3fc, - (q31_t)0x7595688c, (q31_t)0x7592ecd4, - (q31_t)0x759070d4, (q31_t)0x758df48b, (q31_t)0x758b77fa, (q31_t)0x7588fb20, (q31_t)0x75867dfd, (q31_t)0x75840093, - (q31_t)0x758182df, (q31_t)0x757f04e3, - (q31_t)0x757c869f, (q31_t)0x757a0812, (q31_t)0x7577893d, (q31_t)0x75750a1f, (q31_t)0x75728ab9, (q31_t)0x75700b0a, - (q31_t)0x756d8b13, (q31_t)0x756b0ad3, - (q31_t)0x75688a4b, (q31_t)0x7566097b, (q31_t)0x75638862, (q31_t)0x75610701, (q31_t)0x755e8557, (q31_t)0x755c0365, - (q31_t)0x7559812b, (q31_t)0x7556fea8, - (q31_t)0x75547bdd, (q31_t)0x7551f8c9, (q31_t)0x754f756e, (q31_t)0x754cf1c9, (q31_t)0x754a6ddd, (q31_t)0x7547e9a8, - (q31_t)0x7545652a, (q31_t)0x7542e065, - (q31_t)0x75405b57, (q31_t)0x753dd600, (q31_t)0x753b5061, (q31_t)0x7538ca7b, (q31_t)0x7536444b, (q31_t)0x7533bdd4, - (q31_t)0x75313714, (q31_t)0x752eb00c, - (q31_t)0x752c28bb, (q31_t)0x7529a122, (q31_t)0x75271941, (q31_t)0x75249118, (q31_t)0x752208a7, (q31_t)0x751f7fed, - (q31_t)0x751cf6eb, (q31_t)0x751a6da0, - (q31_t)0x7517e40e, (q31_t)0x75155a33, (q31_t)0x7512d010, (q31_t)0x751045a5, (q31_t)0x750dbaf2, (q31_t)0x750b2ff6, - (q31_t)0x7508a4b2, (q31_t)0x75061926, - (q31_t)0x75038d52, (q31_t)0x75010136, (q31_t)0x74fe74d1, (q31_t)0x74fbe825, (q31_t)0x74f95b30, (q31_t)0x74f6cdf3, - (q31_t)0x74f4406d, (q31_t)0x74f1b2a0, - (q31_t)0x74ef248b, (q31_t)0x74ec962d, (q31_t)0x74ea0787, (q31_t)0x74e7789a, (q31_t)0x74e4e964, (q31_t)0x74e259e6, - (q31_t)0x74dfca20, (q31_t)0x74dd3a11, - (q31_t)0x74daa9bb, (q31_t)0x74d8191d, (q31_t)0x74d58836, (q31_t)0x74d2f708, (q31_t)0x74d06591, (q31_t)0x74cdd3d2, - (q31_t)0x74cb41cc, (q31_t)0x74c8af7d, - (q31_t)0x74c61ce6, (q31_t)0x74c38a07, (q31_t)0x74c0f6e0, (q31_t)0x74be6372, (q31_t)0x74bbcfbb, (q31_t)0x74b93bbc, - (q31_t)0x74b6a775, (q31_t)0x74b412e6, - (q31_t)0x74b17e0f, (q31_t)0x74aee8f0, (q31_t)0x74ac5389, (q31_t)0x74a9bddb, (q31_t)0x74a727e4, (q31_t)0x74a491a5, - (q31_t)0x74a1fb1e, (q31_t)0x749f6450, - (q31_t)0x749ccd39, (q31_t)0x749a35db, (q31_t)0x74979e34, (q31_t)0x74950646, (q31_t)0x74926e10, (q31_t)0x748fd592, - (q31_t)0x748d3ccb, (q31_t)0x748aa3be, - (q31_t)0x74880a68, (q31_t)0x748570ca, (q31_t)0x7482d6e4, (q31_t)0x74803cb7, (q31_t)0x747da242, (q31_t)0x747b0784, - (q31_t)0x74786c7f, (q31_t)0x7475d132, - (q31_t)0x7473359e, (q31_t)0x747099c1, (q31_t)0x746dfd9d, (q31_t)0x746b6131, (q31_t)0x7468c47c, (q31_t)0x74662781, - (q31_t)0x74638a3d, (q31_t)0x7460ecb2, - (q31_t)0x745e4ede, (q31_t)0x745bb0c3, (q31_t)0x74591261, (q31_t)0x745673b6, (q31_t)0x7453d4c4, (q31_t)0x7451358a, - (q31_t)0x744e9608, (q31_t)0x744bf63e, - (q31_t)0x7449562d, (q31_t)0x7446b5d4, (q31_t)0x74441533, (q31_t)0x7441744b, (q31_t)0x743ed31b, (q31_t)0x743c31a3, - (q31_t)0x74398fe3, (q31_t)0x7436eddc, - (q31_t)0x74344b8d, (q31_t)0x7431a8f6, (q31_t)0x742f0618, (q31_t)0x742c62f2, (q31_t)0x7429bf84, (q31_t)0x74271bcf, - (q31_t)0x742477d2, (q31_t)0x7421d38e, - (q31_t)0x741f2f01, (q31_t)0x741c8a2d, (q31_t)0x7419e512, (q31_t)0x74173faf, (q31_t)0x74149a04, (q31_t)0x7411f412, - (q31_t)0x740f4dd8, (q31_t)0x740ca756, - (q31_t)0x740a008d, (q31_t)0x7407597d, (q31_t)0x7404b224, (q31_t)0x74020a85, (q31_t)0x73ff629d, (q31_t)0x73fcba6e, - (q31_t)0x73fa11f8, (q31_t)0x73f7693a, - (q31_t)0x73f4c034, (q31_t)0x73f216e7, (q31_t)0x73ef6d53, (q31_t)0x73ecc377, (q31_t)0x73ea1953, (q31_t)0x73e76ee8, - (q31_t)0x73e4c435, (q31_t)0x73e2193b, - (q31_t)0x73df6df9, (q31_t)0x73dcc270, (q31_t)0x73da16a0, (q31_t)0x73d76a88, (q31_t)0x73d4be28, (q31_t)0x73d21182, - (q31_t)0x73cf6493, (q31_t)0x73ccb75d, - (q31_t)0x73ca09e0, (q31_t)0x73c75c1c, (q31_t)0x73c4ae10, (q31_t)0x73c1ffbc, (q31_t)0x73bf5121, (q31_t)0x73bca23f, - (q31_t)0x73b9f315, (q31_t)0x73b743a4, - (q31_t)0x73b493ec, (q31_t)0x73b1e3ec, (q31_t)0x73af33a5, (q31_t)0x73ac8316, (q31_t)0x73a9d240, (q31_t)0x73a72123, - (q31_t)0x73a46fbf, (q31_t)0x73a1be13, - (q31_t)0x739f0c20, (q31_t)0x739c59e5, (q31_t)0x7399a763, (q31_t)0x7396f49a, (q31_t)0x73944189, (q31_t)0x73918e32, - (q31_t)0x738eda93, (q31_t)0x738c26ac, - (q31_t)0x7389727f, (q31_t)0x7386be0a, (q31_t)0x7384094e, (q31_t)0x7381544a, (q31_t)0x737e9f00, (q31_t)0x737be96e, - (q31_t)0x73793395, (q31_t)0x73767d74, - (q31_t)0x7373c70d, (q31_t)0x7371105e, (q31_t)0x736e5968, (q31_t)0x736ba22b, (q31_t)0x7368eaa6, (q31_t)0x736632db, - (q31_t)0x73637ac8, (q31_t)0x7360c26e, - (q31_t)0x735e09cd, (q31_t)0x735b50e4, (q31_t)0x735897b5, (q31_t)0x7355de3e, (q31_t)0x73532481, (q31_t)0x73506a7c, - (q31_t)0x734db030, (q31_t)0x734af59d, - (q31_t)0x73483ac2, (q31_t)0x73457fa1, (q31_t)0x7342c438, (q31_t)0x73400889, (q31_t)0x733d4c92, (q31_t)0x733a9054, - (q31_t)0x7337d3d0, (q31_t)0x73351704, - (q31_t)0x733259f1, (q31_t)0x732f9c97, (q31_t)0x732cdef6, (q31_t)0x732a210d, (q31_t)0x732762de, (q31_t)0x7324a468, - (q31_t)0x7321e5ab, (q31_t)0x731f26a7, - (q31_t)0x731c675b, (q31_t)0x7319a7c9, (q31_t)0x7316e7f0, (q31_t)0x731427cf, (q31_t)0x73116768, (q31_t)0x730ea6ba, - (q31_t)0x730be5c5, (q31_t)0x73092489, - (q31_t)0x73066306, (q31_t)0x7303a13b, (q31_t)0x7300df2a, (q31_t)0x72fe1cd2, (q31_t)0x72fb5a34, (q31_t)0x72f8974e, - (q31_t)0x72f5d421, (q31_t)0x72f310ad, - (q31_t)0x72f04cf3, (q31_t)0x72ed88f1, (q31_t)0x72eac4a9, (q31_t)0x72e8001a, (q31_t)0x72e53b44, (q31_t)0x72e27627, - (q31_t)0x72dfb0c3, (q31_t)0x72dceb18, - (q31_t)0x72da2526, (q31_t)0x72d75eee, (q31_t)0x72d4986f, (q31_t)0x72d1d1a9, (q31_t)0x72cf0a9c, (q31_t)0x72cc4348, - (q31_t)0x72c97bad, (q31_t)0x72c6b3cc, - (q31_t)0x72c3eba4, (q31_t)0x72c12335, (q31_t)0x72be5a7f, (q31_t)0x72bb9183, (q31_t)0x72b8c83f, (q31_t)0x72b5feb5, - (q31_t)0x72b334e4, (q31_t)0x72b06acd, - (q31_t)0x72ada06f, (q31_t)0x72aad5c9, (q31_t)0x72a80ade, (q31_t)0x72a53fab, (q31_t)0x72a27432, (q31_t)0x729fa872, - (q31_t)0x729cdc6b, (q31_t)0x729a101e, - (q31_t)0x7297438a, (q31_t)0x729476af, (q31_t)0x7291a98e, (q31_t)0x728edc26, (q31_t)0x728c0e77, (q31_t)0x72894082, - (q31_t)0x72867245, (q31_t)0x7283a3c3, - (q31_t)0x7280d4f9, (q31_t)0x727e05e9, (q31_t)0x727b3693, (q31_t)0x727866f6, (q31_t)0x72759712, (q31_t)0x7272c6e7, - (q31_t)0x726ff676, (q31_t)0x726d25bf, - (q31_t)0x726a54c1, (q31_t)0x7267837c, (q31_t)0x7264b1f0, (q31_t)0x7261e01e, (q31_t)0x725f0e06, (q31_t)0x725c3ba7, - (q31_t)0x72596901, (q31_t)0x72569615, - (q31_t)0x7253c2e3, (q31_t)0x7250ef6a, (q31_t)0x724e1baa, (q31_t)0x724b47a4, (q31_t)0x72487357, (q31_t)0x72459ec4, - (q31_t)0x7242c9ea, (q31_t)0x723ff4ca, - (q31_t)0x723d1f63, (q31_t)0x723a49b6, (q31_t)0x723773c3, (q31_t)0x72349d89, (q31_t)0x7231c708, (q31_t)0x722ef041, - (q31_t)0x722c1934, (q31_t)0x722941e0, - (q31_t)0x72266a46, (q31_t)0x72239266, (q31_t)0x7220ba3f, (q31_t)0x721de1d1, (q31_t)0x721b091d, (q31_t)0x72183023, - (q31_t)0x721556e3, (q31_t)0x72127d5c, - (q31_t)0x720fa38e, (q31_t)0x720cc97b, (q31_t)0x7209ef21, (q31_t)0x72071480, (q31_t)0x7204399a, (q31_t)0x72015e6d, - (q31_t)0x71fe82f9, (q31_t)0x71fba740, - (q31_t)0x71f8cb40, (q31_t)0x71f5eefa, (q31_t)0x71f3126d, (q31_t)0x71f0359a, (q31_t)0x71ed5881, (q31_t)0x71ea7b22, - (q31_t)0x71e79d7c, (q31_t)0x71e4bf90, - (q31_t)0x71e1e15e, (q31_t)0x71df02e5, (q31_t)0x71dc2427, (q31_t)0x71d94522, (q31_t)0x71d665d6, (q31_t)0x71d38645, - (q31_t)0x71d0a66d, (q31_t)0x71cdc650, - (q31_t)0x71cae5ec, (q31_t)0x71c80542, (q31_t)0x71c52451, (q31_t)0x71c2431b, (q31_t)0x71bf619e, (q31_t)0x71bc7fdb, - (q31_t)0x71b99dd2, (q31_t)0x71b6bb83, - (q31_t)0x71b3d8ed, (q31_t)0x71b0f612, (q31_t)0x71ae12f0, (q31_t)0x71ab2f89, (q31_t)0x71a84bdb, (q31_t)0x71a567e7, - (q31_t)0x71a283ad, (q31_t)0x719f9f2c, - (q31_t)0x719cba66, (q31_t)0x7199d55a, (q31_t)0x7196f008, (q31_t)0x71940a6f, (q31_t)0x71912490, (q31_t)0x718e3e6c, - (q31_t)0x718b5801, (q31_t)0x71887151, - (q31_t)0x71858a5a, (q31_t)0x7182a31d, (q31_t)0x717fbb9a, (q31_t)0x717cd3d2, (q31_t)0x7179ebc3, (q31_t)0x7177036e, - (q31_t)0x71741ad3, (q31_t)0x717131f3, - (q31_t)0x716e48cc, (q31_t)0x716b5f5f, (q31_t)0x716875ad, (q31_t)0x71658bb4, (q31_t)0x7162a175, (q31_t)0x715fb6f1, - (q31_t)0x715ccc26, (q31_t)0x7159e116, - (q31_t)0x7156f5c0, (q31_t)0x71540a24, (q31_t)0x71511e42, (q31_t)0x714e321a, (q31_t)0x714b45ac, (q31_t)0x714858f8, - (q31_t)0x71456bfe, (q31_t)0x71427ebf, - (q31_t)0x713f9139, (q31_t)0x713ca36e, (q31_t)0x7139b55d, (q31_t)0x7136c706, (q31_t)0x7133d869, (q31_t)0x7130e987, - (q31_t)0x712dfa5e, (q31_t)0x712b0af0, - (q31_t)0x71281b3c, (q31_t)0x71252b42, (q31_t)0x71223b02, (q31_t)0x711f4a7d, (q31_t)0x711c59b2, (q31_t)0x711968a1, - (q31_t)0x7116774a, (q31_t)0x711385ad, - (q31_t)0x711093cb, (q31_t)0x710da1a3, (q31_t)0x710aaf35, (q31_t)0x7107bc82, (q31_t)0x7104c989, (q31_t)0x7101d64a, - (q31_t)0x70fee2c5, (q31_t)0x70fbeefb, - (q31_t)0x70f8faeb, (q31_t)0x70f60695, (q31_t)0x70f311fa, (q31_t)0x70f01d19, (q31_t)0x70ed27f2, (q31_t)0x70ea3286, - (q31_t)0x70e73cd4, (q31_t)0x70e446dc, - (q31_t)0x70e1509f, (q31_t)0x70de5a1c, (q31_t)0x70db6353, (q31_t)0x70d86c45, (q31_t)0x70d574f1, (q31_t)0x70d27d58, - (q31_t)0x70cf8579, (q31_t)0x70cc8d54, - (q31_t)0x70c994ea, (q31_t)0x70c69c3a, (q31_t)0x70c3a345, (q31_t)0x70c0aa0a, (q31_t)0x70bdb08a, (q31_t)0x70bab6c4, - (q31_t)0x70b7bcb8, (q31_t)0x70b4c267, - (q31_t)0x70b1c7d1, (q31_t)0x70aeccf5, (q31_t)0x70abd1d3, (q31_t)0x70a8d66c, (q31_t)0x70a5dac0, (q31_t)0x70a2dece, - (q31_t)0x709fe296, (q31_t)0x709ce619, - (q31_t)0x7099e957, (q31_t)0x7096ec4f, (q31_t)0x7093ef01, (q31_t)0x7090f16e, (q31_t)0x708df396, (q31_t)0x708af579, - (q31_t)0x7087f715, (q31_t)0x7084f86d, - (q31_t)0x7081f97f, (q31_t)0x707efa4c, (q31_t)0x707bfad3, (q31_t)0x7078fb15, (q31_t)0x7075fb11, (q31_t)0x7072fac9, - (q31_t)0x706ffa3a, (q31_t)0x706cf967, - (q31_t)0x7069f84e, (q31_t)0x7066f6f0, (q31_t)0x7063f54c, (q31_t)0x7060f363, (q31_t)0x705df135, (q31_t)0x705aeec1, - (q31_t)0x7057ec08, (q31_t)0x7054e90a, - (q31_t)0x7051e5c7, (q31_t)0x704ee23e, (q31_t)0x704bde70, (q31_t)0x7048da5d, (q31_t)0x7045d604, (q31_t)0x7042d166, - (q31_t)0x703fcc83, (q31_t)0x703cc75b, - (q31_t)0x7039c1ed, (q31_t)0x7036bc3b, (q31_t)0x7033b643, (q31_t)0x7030b005, (q31_t)0x702da983, (q31_t)0x702aa2bb, - (q31_t)0x70279baf, (q31_t)0x7024945d, - (q31_t)0x70218cc6, (q31_t)0x701e84e9, (q31_t)0x701b7cc8, (q31_t)0x70187461, (q31_t)0x70156bb5, (q31_t)0x701262c4, - (q31_t)0x700f598e, (q31_t)0x700c5013, - (q31_t)0x70094653, (q31_t)0x70063c4e, (q31_t)0x70033203, (q31_t)0x70002774, (q31_t)0x6ffd1c9f, (q31_t)0x6ffa1185, - (q31_t)0x6ff70626, (q31_t)0x6ff3fa82, - (q31_t)0x6ff0ee99, (q31_t)0x6fede26b, (q31_t)0x6fead5f8, (q31_t)0x6fe7c940, (q31_t)0x6fe4bc43, (q31_t)0x6fe1af01, - (q31_t)0x6fdea17a, (q31_t)0x6fdb93ae, - (q31_t)0x6fd8859d, (q31_t)0x6fd57746, (q31_t)0x6fd268ab, (q31_t)0x6fcf59cb, (q31_t)0x6fcc4aa6, (q31_t)0x6fc93b3c, - (q31_t)0x6fc62b8d, (q31_t)0x6fc31b99, - (q31_t)0x6fc00b60, (q31_t)0x6fbcfae2, (q31_t)0x6fb9ea20, (q31_t)0x6fb6d918, (q31_t)0x6fb3c7cb, (q31_t)0x6fb0b63a, - (q31_t)0x6fada464, (q31_t)0x6faa9248, - (q31_t)0x6fa77fe8, (q31_t)0x6fa46d43, (q31_t)0x6fa15a59, (q31_t)0x6f9e472b, (q31_t)0x6f9b33b7, (q31_t)0x6f981fff, - (q31_t)0x6f950c01, (q31_t)0x6f91f7bf, - (q31_t)0x6f8ee338, (q31_t)0x6f8bce6c, (q31_t)0x6f88b95c, (q31_t)0x6f85a407, (q31_t)0x6f828e6c, (q31_t)0x6f7f788d, - (q31_t)0x6f7c626a, (q31_t)0x6f794c01, - (q31_t)0x6f763554, (q31_t)0x6f731e62, (q31_t)0x6f70072b, (q31_t)0x6f6cefb0, (q31_t)0x6f69d7f0, (q31_t)0x6f66bfeb, - (q31_t)0x6f63a7a1, (q31_t)0x6f608f13, - (q31_t)0x6f5d7640, (q31_t)0x6f5a5d28, (q31_t)0x6f5743cb, (q31_t)0x6f542a2a, (q31_t)0x6f511044, (q31_t)0x6f4df61a, - (q31_t)0x6f4adbab, (q31_t)0x6f47c0f7, - (q31_t)0x6f44a5ff, (q31_t)0x6f418ac2, (q31_t)0x6f3e6f40, (q31_t)0x6f3b537a, (q31_t)0x6f38376f, (q31_t)0x6f351b1f, - (q31_t)0x6f31fe8b, (q31_t)0x6f2ee1b2, - (q31_t)0x6f2bc495, (q31_t)0x6f28a733, (q31_t)0x6f25898d, (q31_t)0x6f226ba2, (q31_t)0x6f1f4d72, (q31_t)0x6f1c2efe, - (q31_t)0x6f191045, (q31_t)0x6f15f148, - (q31_t)0x6f12d206, (q31_t)0x6f0fb280, (q31_t)0x6f0c92b6, (q31_t)0x6f0972a6, (q31_t)0x6f065253, (q31_t)0x6f0331ba, - (q31_t)0x6f0010de, (q31_t)0x6efcefbd, - (q31_t)0x6ef9ce57, (q31_t)0x6ef6acad, (q31_t)0x6ef38abe, (q31_t)0x6ef0688b, (q31_t)0x6eed4614, (q31_t)0x6eea2358, - (q31_t)0x6ee70058, (q31_t)0x6ee3dd13, - (q31_t)0x6ee0b98a, (q31_t)0x6edd95bd, (q31_t)0x6eda71ab, (q31_t)0x6ed74d55, (q31_t)0x6ed428ba, (q31_t)0x6ed103db, - (q31_t)0x6ecddeb8, (q31_t)0x6ecab950, - (q31_t)0x6ec793a4, (q31_t)0x6ec46db4, (q31_t)0x6ec1477f, (q31_t)0x6ebe2106, (q31_t)0x6ebafa49, (q31_t)0x6eb7d347, - (q31_t)0x6eb4ac02, (q31_t)0x6eb18477, - (q31_t)0x6eae5ca9, (q31_t)0x6eab3496, (q31_t)0x6ea80c3f, (q31_t)0x6ea4e3a4, (q31_t)0x6ea1bac4, (q31_t)0x6e9e91a1, - (q31_t)0x6e9b6839, (q31_t)0x6e983e8d, - (q31_t)0x6e95149c, (q31_t)0x6e91ea67, (q31_t)0x6e8ebfef, (q31_t)0x6e8b9532, (q31_t)0x6e886a30, (q31_t)0x6e853eeb, - (q31_t)0x6e821361, (q31_t)0x6e7ee794, - (q31_t)0x6e7bbb82, (q31_t)0x6e788f2c, (q31_t)0x6e756291, (q31_t)0x6e7235b3, (q31_t)0x6e6f0890, (q31_t)0x6e6bdb2a, - (q31_t)0x6e68ad7f, (q31_t)0x6e657f90, - (q31_t)0x6e62515d, (q31_t)0x6e5f22e6, (q31_t)0x6e5bf42b, (q31_t)0x6e58c52c, (q31_t)0x6e5595e9, (q31_t)0x6e526662, - (q31_t)0x6e4f3696, (q31_t)0x6e4c0687, - (q31_t)0x6e48d633, (q31_t)0x6e45a59c, (q31_t)0x6e4274c1, (q31_t)0x6e3f43a1, (q31_t)0x6e3c123e, (q31_t)0x6e38e096, - (q31_t)0x6e35aeab, (q31_t)0x6e327c7b, - (q31_t)0x6e2f4a08, (q31_t)0x6e2c1750, (q31_t)0x6e28e455, (q31_t)0x6e25b115, (q31_t)0x6e227d92, (q31_t)0x6e1f49cb, - (q31_t)0x6e1c15c0, (q31_t)0x6e18e171, - (q31_t)0x6e15acde, (q31_t)0x6e127807, (q31_t)0x6e0f42ec, (q31_t)0x6e0c0d8e, (q31_t)0x6e08d7eb, (q31_t)0x6e05a205, - (q31_t)0x6e026bda, (q31_t)0x6dff356c, - (q31_t)0x6dfbfeba, (q31_t)0x6df8c7c4, (q31_t)0x6df5908b, (q31_t)0x6df2590d, (q31_t)0x6def214c, (q31_t)0x6debe947, - (q31_t)0x6de8b0fe, (q31_t)0x6de57871, - (q31_t)0x6de23fa0, (q31_t)0x6ddf068c, (q31_t)0x6ddbcd34, (q31_t)0x6dd89398, (q31_t)0x6dd559b9, (q31_t)0x6dd21f95, - (q31_t)0x6dcee52e, (q31_t)0x6dcbaa83, - (q31_t)0x6dc86f95, (q31_t)0x6dc53462, (q31_t)0x6dc1f8ec, (q31_t)0x6dbebd33, (q31_t)0x6dbb8135, (q31_t)0x6db844f4, - (q31_t)0x6db5086f, (q31_t)0x6db1cba7, - (q31_t)0x6dae8e9b, (q31_t)0x6dab514b, (q31_t)0x6da813b8, (q31_t)0x6da4d5e1, (q31_t)0x6da197c6, (q31_t)0x6d9e5968, - (q31_t)0x6d9b1ac6, (q31_t)0x6d97dbe0, - (q31_t)0x6d949cb7, (q31_t)0x6d915d4a, (q31_t)0x6d8e1d9a, (q31_t)0x6d8adda6, (q31_t)0x6d879d6e, (q31_t)0x6d845cf3, - (q31_t)0x6d811c35, (q31_t)0x6d7ddb33, - (q31_t)0x6d7a99ed, (q31_t)0x6d775864, (q31_t)0x6d741697, (q31_t)0x6d70d487, (q31_t)0x6d6d9233, (q31_t)0x6d6a4f9c, - (q31_t)0x6d670cc1, (q31_t)0x6d63c9a3, - (q31_t)0x6d608641, (q31_t)0x6d5d429c, (q31_t)0x6d59feb3, (q31_t)0x6d56ba87, (q31_t)0x6d537617, (q31_t)0x6d503164, - (q31_t)0x6d4cec6e, (q31_t)0x6d49a734, - (q31_t)0x6d4661b7, (q31_t)0x6d431bf6, (q31_t)0x6d3fd5f2, (q31_t)0x6d3c8fab, (q31_t)0x6d394920, (q31_t)0x6d360252, - (q31_t)0x6d32bb40, (q31_t)0x6d2f73eb, - (q31_t)0x6d2c2c53, (q31_t)0x6d28e477, (q31_t)0x6d259c58, (q31_t)0x6d2253f6, (q31_t)0x6d1f0b50, (q31_t)0x6d1bc267, - (q31_t)0x6d18793b, (q31_t)0x6d152fcc, - (q31_t)0x6d11e619, (q31_t)0x6d0e9c23, (q31_t)0x6d0b51e9, (q31_t)0x6d08076d, (q31_t)0x6d04bcad, (q31_t)0x6d0171aa, - (q31_t)0x6cfe2663, (q31_t)0x6cfadada, - (q31_t)0x6cf78f0d, (q31_t)0x6cf442fd, (q31_t)0x6cf0f6aa, (q31_t)0x6cedaa13, (q31_t)0x6cea5d3a, (q31_t)0x6ce7101d, - (q31_t)0x6ce3c2bd, (q31_t)0x6ce0751a, - (q31_t)0x6cdd2733, (q31_t)0x6cd9d90a, (q31_t)0x6cd68a9d, (q31_t)0x6cd33bed, (q31_t)0x6ccfecfa, (q31_t)0x6ccc9dc4, - (q31_t)0x6cc94e4b, (q31_t)0x6cc5fe8f, - (q31_t)0x6cc2ae90, (q31_t)0x6cbf5e4d, (q31_t)0x6cbc0dc8, (q31_t)0x6cb8bcff, (q31_t)0x6cb56bf4, (q31_t)0x6cb21aa5, - (q31_t)0x6caec913, (q31_t)0x6cab773e, - (q31_t)0x6ca82527, (q31_t)0x6ca4d2cc, (q31_t)0x6ca1802e, (q31_t)0x6c9e2d4d, (q31_t)0x6c9ada29, (q31_t)0x6c9786c2, - (q31_t)0x6c943318, (q31_t)0x6c90df2c, - (q31_t)0x6c8d8afc, (q31_t)0x6c8a3689, (q31_t)0x6c86e1d3, (q31_t)0x6c838cdb, (q31_t)0x6c80379f, (q31_t)0x6c7ce220, - (q31_t)0x6c798c5f, (q31_t)0x6c76365b, - (q31_t)0x6c72e013, (q31_t)0x6c6f8989, (q31_t)0x6c6c32bc, (q31_t)0x6c68dbac, (q31_t)0x6c658459, (q31_t)0x6c622cc4, - (q31_t)0x6c5ed4eb, (q31_t)0x6c5b7cd0, - (q31_t)0x6c582472, (q31_t)0x6c54cbd1, (q31_t)0x6c5172ed, (q31_t)0x6c4e19c6, (q31_t)0x6c4ac05d, (q31_t)0x6c4766b0, - (q31_t)0x6c440cc1, (q31_t)0x6c40b28f, - (q31_t)0x6c3d581b, (q31_t)0x6c39fd63, (q31_t)0x6c36a269, (q31_t)0x6c33472c, (q31_t)0x6c2febad, (q31_t)0x6c2c8fea, - (q31_t)0x6c2933e5, (q31_t)0x6c25d79d, - (q31_t)0x6c227b13, (q31_t)0x6c1f1e45, (q31_t)0x6c1bc136, (q31_t)0x6c1863e3, (q31_t)0x6c15064e, (q31_t)0x6c11a876, - (q31_t)0x6c0e4a5b, (q31_t)0x6c0aebfe, - (q31_t)0x6c078d5e, (q31_t)0x6c042e7b, (q31_t)0x6c00cf56, (q31_t)0x6bfd6fee, (q31_t)0x6bfa1044, (q31_t)0x6bf6b056, - (q31_t)0x6bf35027, (q31_t)0x6befefb5, - (q31_t)0x6bec8f00, (q31_t)0x6be92e08, (q31_t)0x6be5ccce, (q31_t)0x6be26b52, (q31_t)0x6bdf0993, (q31_t)0x6bdba791, - (q31_t)0x6bd8454d, (q31_t)0x6bd4e2c6, - (q31_t)0x6bd17ffd, (q31_t)0x6bce1cf1, (q31_t)0x6bcab9a3, (q31_t)0x6bc75613, (q31_t)0x6bc3f23f, (q31_t)0x6bc08e2a, - (q31_t)0x6bbd29d2, (q31_t)0x6bb9c537, - (q31_t)0x6bb6605a, (q31_t)0x6bb2fb3b, (q31_t)0x6baf95d9, (q31_t)0x6bac3034, (q31_t)0x6ba8ca4e, (q31_t)0x6ba56425, - (q31_t)0x6ba1fdb9, (q31_t)0x6b9e970b, - (q31_t)0x6b9b301b, (q31_t)0x6b97c8e8, (q31_t)0x6b946173, (q31_t)0x6b90f9bc, (q31_t)0x6b8d91c2, (q31_t)0x6b8a2986, - (q31_t)0x6b86c107, (q31_t)0x6b835846, - (q31_t)0x6b7fef43, (q31_t)0x6b7c85fe, (q31_t)0x6b791c76, (q31_t)0x6b75b2ac, (q31_t)0x6b7248a0, (q31_t)0x6b6ede51, - (q31_t)0x6b6b73c0, (q31_t)0x6b6808ed, - (q31_t)0x6b649dd8, (q31_t)0x6b613280, (q31_t)0x6b5dc6e6, (q31_t)0x6b5a5b0a, (q31_t)0x6b56eeec, (q31_t)0x6b53828b, - (q31_t)0x6b5015e9, (q31_t)0x6b4ca904, - (q31_t)0x6b493bdd, (q31_t)0x6b45ce73, (q31_t)0x6b4260c8, (q31_t)0x6b3ef2da, (q31_t)0x6b3b84ab, (q31_t)0x6b381639, - (q31_t)0x6b34a785, (q31_t)0x6b31388e, - (q31_t)0x6b2dc956, (q31_t)0x6b2a59dc, (q31_t)0x6b26ea1f, (q31_t)0x6b237a21, (q31_t)0x6b2009e0, (q31_t)0x6b1c995d, - (q31_t)0x6b192898, (q31_t)0x6b15b791, - (q31_t)0x6b124648, (q31_t)0x6b0ed4bd, (q31_t)0x6b0b62f0, (q31_t)0x6b07f0e1, (q31_t)0x6b047e90, (q31_t)0x6b010bfd, - (q31_t)0x6afd9928, (q31_t)0x6afa2610, - (q31_t)0x6af6b2b7, (q31_t)0x6af33f1c, (q31_t)0x6aefcb3f, (q31_t)0x6aec5720, (q31_t)0x6ae8e2bf, (q31_t)0x6ae56e1c, - (q31_t)0x6ae1f937, (q31_t)0x6ade8410, - (q31_t)0x6adb0ea8, (q31_t)0x6ad798fd, (q31_t)0x6ad42311, (q31_t)0x6ad0ace2, (q31_t)0x6acd3672, (q31_t)0x6ac9bfc0, - (q31_t)0x6ac648cb, (q31_t)0x6ac2d195, - (q31_t)0x6abf5a1e, (q31_t)0x6abbe264, (q31_t)0x6ab86a68, (q31_t)0x6ab4f22b, (q31_t)0x6ab179ac, (q31_t)0x6aae00eb, - (q31_t)0x6aaa87e8, (q31_t)0x6aa70ea4, - (q31_t)0x6aa3951d, (q31_t)0x6aa01b55, (q31_t)0x6a9ca14b, (q31_t)0x6a992700, (q31_t)0x6a95ac72, (q31_t)0x6a9231a3, - (q31_t)0x6a8eb692, (q31_t)0x6a8b3b3f, - (q31_t)0x6a87bfab, (q31_t)0x6a8443d5, (q31_t)0x6a80c7bd, (q31_t)0x6a7d4b64, (q31_t)0x6a79cec8, (q31_t)0x6a7651ec, - (q31_t)0x6a72d4cd, (q31_t)0x6a6f576d, - (q31_t)0x6a6bd9cb, (q31_t)0x6a685be8, (q31_t)0x6a64ddc2, (q31_t)0x6a615f5c, (q31_t)0x6a5de0b3, (q31_t)0x6a5a61c9, - (q31_t)0x6a56e29e, (q31_t)0x6a536331, - (q31_t)0x6a4fe382, (q31_t)0x6a4c6391, (q31_t)0x6a48e360, (q31_t)0x6a4562ec, (q31_t)0x6a41e237, (q31_t)0x6a3e6140, - (q31_t)0x6a3ae008, (q31_t)0x6a375e8f, - (q31_t)0x6a33dcd4, (q31_t)0x6a305ad7, (q31_t)0x6a2cd899, (q31_t)0x6a295619, (q31_t)0x6a25d358, (q31_t)0x6a225055, - (q31_t)0x6a1ecd11, (q31_t)0x6a1b498c, - (q31_t)0x6a17c5c5, (q31_t)0x6a1441bc, (q31_t)0x6a10bd72, (q31_t)0x6a0d38e7, (q31_t)0x6a09b41a, (q31_t)0x6a062f0c, - (q31_t)0x6a02a9bc, (q31_t)0x69ff242b, - (q31_t)0x69fb9e59, (q31_t)0x69f81845, (q31_t)0x69f491f0, (q31_t)0x69f10b5a, (q31_t)0x69ed8482, (q31_t)0x69e9fd69, - (q31_t)0x69e6760f, (q31_t)0x69e2ee73, - (q31_t)0x69df6696, (q31_t)0x69dbde77, (q31_t)0x69d85618, (q31_t)0x69d4cd77, (q31_t)0x69d14494, (q31_t)0x69cdbb71, - (q31_t)0x69ca320c, (q31_t)0x69c6a866, - (q31_t)0x69c31e7f, (q31_t)0x69bf9456, (q31_t)0x69bc09ec, (q31_t)0x69b87f41, (q31_t)0x69b4f455, (q31_t)0x69b16928, - (q31_t)0x69adddb9, (q31_t)0x69aa5209, - (q31_t)0x69a6c618, (q31_t)0x69a339e6, (q31_t)0x699fad73, (q31_t)0x699c20be, (q31_t)0x699893c9, (q31_t)0x69950692, - (q31_t)0x6991791a, (q31_t)0x698deb61, - (q31_t)0x698a5d67, (q31_t)0x6986cf2c, (q31_t)0x698340af, (q31_t)0x697fb1f2, (q31_t)0x697c22f3, (q31_t)0x697893b4, - (q31_t)0x69750433, (q31_t)0x69717472, - (q31_t)0x696de46f, (q31_t)0x696a542b, (q31_t)0x6966c3a6, (q31_t)0x696332e1, (q31_t)0x695fa1da, (q31_t)0x695c1092, - (q31_t)0x69587f09, (q31_t)0x6954ed40, - (q31_t)0x69515b35, (q31_t)0x694dc8e9, (q31_t)0x694a365c, (q31_t)0x6946a38f, (q31_t)0x69431080, (q31_t)0x693f7d31, - (q31_t)0x693be9a0, (q31_t)0x693855cf, - (q31_t)0x6934c1bd, (q31_t)0x69312d6a, (q31_t)0x692d98d6, (q31_t)0x692a0401, (q31_t)0x69266eeb, (q31_t)0x6922d995, - (q31_t)0x691f43fd, (q31_t)0x691bae25, - (q31_t)0x6918180c, (q31_t)0x691481b2, (q31_t)0x6910eb17, (q31_t)0x690d543b, (q31_t)0x6909bd1f, (q31_t)0x690625c2, - (q31_t)0x69028e24, (q31_t)0x68fef645, - (q31_t)0x68fb5e25, (q31_t)0x68f7c5c5, (q31_t)0x68f42d24, (q31_t)0x68f09442, (q31_t)0x68ecfb20, (q31_t)0x68e961bd, - (q31_t)0x68e5c819, (q31_t)0x68e22e34, - (q31_t)0x68de940f, (q31_t)0x68daf9a9, (q31_t)0x68d75f02, (q31_t)0x68d3c41b, (q31_t)0x68d028f2, (q31_t)0x68cc8d8a, - (q31_t)0x68c8f1e0, (q31_t)0x68c555f6, - (q31_t)0x68c1b9cc, (q31_t)0x68be1d61, (q31_t)0x68ba80b5, (q31_t)0x68b6e3c8, (q31_t)0x68b3469b, (q31_t)0x68afa92e, - (q31_t)0x68ac0b7f, (q31_t)0x68a86d91, - (q31_t)0x68a4cf61, (q31_t)0x68a130f1, (q31_t)0x689d9241, (q31_t)0x6899f350, (q31_t)0x6896541f, (q31_t)0x6892b4ad, - (q31_t)0x688f14fa, (q31_t)0x688b7507, - (q31_t)0x6887d4d4, (q31_t)0x68843460, (q31_t)0x688093ab, (q31_t)0x687cf2b6, (q31_t)0x68795181, (q31_t)0x6875b00b, - (q31_t)0x68720e55, (q31_t)0x686e6c5e, - (q31_t)0x686aca27, (q31_t)0x686727b0, (q31_t)0x686384f8, (q31_t)0x685fe200, (q31_t)0x685c3ec7, (q31_t)0x68589b4e, - (q31_t)0x6854f795, (q31_t)0x6851539b, - (q31_t)0x684daf61, (q31_t)0x684a0ae6, (q31_t)0x6846662c, (q31_t)0x6842c131, (q31_t)0x683f1bf5, (q31_t)0x683b7679, - (q31_t)0x6837d0bd, (q31_t)0x68342ac1, - (q31_t)0x68308485, (q31_t)0x682cde08, (q31_t)0x6829374b, (q31_t)0x6825904d, (q31_t)0x6821e910, (q31_t)0x681e4192, - (q31_t)0x681a99d4, (q31_t)0x6816f1d6, - (q31_t)0x68134997, (q31_t)0x680fa118, (q31_t)0x680bf85a, (q31_t)0x68084f5a, (q31_t)0x6804a61b, (q31_t)0x6800fc9c, - (q31_t)0x67fd52dc, (q31_t)0x67f9a8dd, - (q31_t)0x67f5fe9d, (q31_t)0x67f2541d, (q31_t)0x67eea95d, (q31_t)0x67eafe5d, (q31_t)0x67e7531c, (q31_t)0x67e3a79c, - (q31_t)0x67dffbdc, (q31_t)0x67dc4fdb, - (q31_t)0x67d8a39a, (q31_t)0x67d4f71a, (q31_t)0x67d14a59, (q31_t)0x67cd9d58, (q31_t)0x67c9f017, (q31_t)0x67c64297, - (q31_t)0x67c294d6, (q31_t)0x67bee6d5, - (q31_t)0x67bb3894, (q31_t)0x67b78a13, (q31_t)0x67b3db53, (q31_t)0x67b02c52, (q31_t)0x67ac7d11, (q31_t)0x67a8cd91, - (q31_t)0x67a51dd0, (q31_t)0x67a16dcf, - (q31_t)0x679dbd8f, (q31_t)0x679a0d0f, (q31_t)0x67965c4e, (q31_t)0x6792ab4e, (q31_t)0x678efa0e, (q31_t)0x678b488e, - (q31_t)0x678796ce, (q31_t)0x6783e4cf, - (q31_t)0x6780328f, (q31_t)0x677c8010, (q31_t)0x6778cd50, (q31_t)0x67751a51, (q31_t)0x67716713, (q31_t)0x676db394, - (q31_t)0x6769ffd5, (q31_t)0x67664bd7, - (q31_t)0x67629799, (q31_t)0x675ee31b, (q31_t)0x675b2e5e, (q31_t)0x67577960, (q31_t)0x6753c423, (q31_t)0x67500ea7, - (q31_t)0x674c58ea, (q31_t)0x6748a2ee, - (q31_t)0x6744ecb2, (q31_t)0x67413636, (q31_t)0x673d7f7b, (q31_t)0x6739c880, (q31_t)0x67361145, (q31_t)0x673259ca, - (q31_t)0x672ea210, (q31_t)0x672aea17, - (q31_t)0x672731dd, (q31_t)0x67237964, (q31_t)0x671fc0ac, (q31_t)0x671c07b4, (q31_t)0x67184e7c, (q31_t)0x67149504, - (q31_t)0x6710db4d, (q31_t)0x670d2157, - (q31_t)0x67096721, (q31_t)0x6705acab, (q31_t)0x6701f1f6, (q31_t)0x66fe3701, (q31_t)0x66fa7bcd, (q31_t)0x66f6c059, - (q31_t)0x66f304a6, (q31_t)0x66ef48b3, - (q31_t)0x66eb8c80, (q31_t)0x66e7d00f, (q31_t)0x66e4135d, (q31_t)0x66e0566c, (q31_t)0x66dc993c, (q31_t)0x66d8dbcd, - (q31_t)0x66d51e1d, (q31_t)0x66d1602f, - (q31_t)0x66cda201, (q31_t)0x66c9e393, (q31_t)0x66c624e7, (q31_t)0x66c265fa, (q31_t)0x66bea6cf, (q31_t)0x66bae764, - (q31_t)0x66b727ba, (q31_t)0x66b367d0, - (q31_t)0x66afa7a7, (q31_t)0x66abe73f, (q31_t)0x66a82697, (q31_t)0x66a465b0, (q31_t)0x66a0a489, (q31_t)0x669ce324, - (q31_t)0x6699217f, (q31_t)0x66955f9b, - (q31_t)0x66919d77, (q31_t)0x668ddb14, (q31_t)0x668a1872, (q31_t)0x66865591, (q31_t)0x66829270, (q31_t)0x667ecf11, - (q31_t)0x667b0b72, (q31_t)0x66774793, - (q31_t)0x66738376, (q31_t)0x666fbf19, (q31_t)0x666bfa7d, (q31_t)0x666835a2, (q31_t)0x66647088, (q31_t)0x6660ab2f, - (q31_t)0x665ce596, (q31_t)0x66591fbf, - (q31_t)0x665559a8, (q31_t)0x66519352, (q31_t)0x664dccbd, (q31_t)0x664a05e9, (q31_t)0x66463ed6, (q31_t)0x66427784, - (q31_t)0x663eaff2, (q31_t)0x663ae822, - (q31_t)0x66372012, (q31_t)0x663357c4, (q31_t)0x662f8f36, (q31_t)0x662bc66a, (q31_t)0x6627fd5e, (q31_t)0x66243413, - (q31_t)0x66206a8a, (q31_t)0x661ca0c1, - (q31_t)0x6618d6b9, (q31_t)0x66150c73, (q31_t)0x661141ed, (q31_t)0x660d7729, (q31_t)0x6609ac25, (q31_t)0x6605e0e3, - (q31_t)0x66021561, (q31_t)0x65fe49a1, - (q31_t)0x65fa7da2, (q31_t)0x65f6b164, (q31_t)0x65f2e4e7, (q31_t)0x65ef182b, (q31_t)0x65eb4b30, (q31_t)0x65e77df6, - (q31_t)0x65e3b07e, (q31_t)0x65dfe2c6, - (q31_t)0x65dc14d0, (q31_t)0x65d8469b, (q31_t)0x65d47827, (q31_t)0x65d0a975, (q31_t)0x65ccda83, (q31_t)0x65c90b53, - (q31_t)0x65c53be4, (q31_t)0x65c16c36, - (q31_t)0x65bd9c49, (q31_t)0x65b9cc1e, (q31_t)0x65b5fbb4, (q31_t)0x65b22b0b, (q31_t)0x65ae5a23, (q31_t)0x65aa88fd, - (q31_t)0x65a6b798, (q31_t)0x65a2e5f4, - (q31_t)0x659f1412, (q31_t)0x659b41f1, (q31_t)0x65976f91, (q31_t)0x65939cf3, (q31_t)0x658fca15, (q31_t)0x658bf6fa, - (q31_t)0x6588239f, (q31_t)0x65845006, - (q31_t)0x65807c2f, (q31_t)0x657ca818, (q31_t)0x6578d3c4, (q31_t)0x6574ff30, (q31_t)0x65712a5e, (q31_t)0x656d554d, - (q31_t)0x65697ffe, (q31_t)0x6565aa71, - (q31_t)0x6561d4a4, (q31_t)0x655dfe99, (q31_t)0x655a2850, (q31_t)0x655651c8, (q31_t)0x65527b02, (q31_t)0x654ea3fd, - (q31_t)0x654accba, (q31_t)0x6546f538, - (q31_t)0x65431d77, (q31_t)0x653f4579, (q31_t)0x653b6d3b, (q31_t)0x653794c0, (q31_t)0x6533bc06, (q31_t)0x652fe30d, - (q31_t)0x652c09d6, (q31_t)0x65283061, - (q31_t)0x652456ad, (q31_t)0x65207cbb, (q31_t)0x651ca28a, (q31_t)0x6518c81b, (q31_t)0x6514ed6e, (q31_t)0x65111283, - (q31_t)0x650d3759, (q31_t)0x65095bf0, - (q31_t)0x6505804a, (q31_t)0x6501a465, (q31_t)0x64fdc841, (q31_t)0x64f9ebe0, (q31_t)0x64f60f40, (q31_t)0x64f23262, - (q31_t)0x64ee5546, (q31_t)0x64ea77eb, - (q31_t)0x64e69a52, (q31_t)0x64e2bc7b, (q31_t)0x64dede66, (q31_t)0x64db0012, (q31_t)0x64d72180, (q31_t)0x64d342b0, - (q31_t)0x64cf63a2, (q31_t)0x64cb8456, - (q31_t)0x64c7a4cb, (q31_t)0x64c3c502, (q31_t)0x64bfe4fc, (q31_t)0x64bc04b6, (q31_t)0x64b82433, (q31_t)0x64b44372, - (q31_t)0x64b06273, (q31_t)0x64ac8135, - (q31_t)0x64a89fba, (q31_t)0x64a4be00, (q31_t)0x64a0dc08, (q31_t)0x649cf9d2, (q31_t)0x6499175e, (q31_t)0x649534ac, - (q31_t)0x649151bc, (q31_t)0x648d6e8e, - (q31_t)0x64898b22, (q31_t)0x6485a778, (q31_t)0x6481c390, (q31_t)0x647ddf6a, (q31_t)0x6479fb06, (q31_t)0x64761664, - (q31_t)0x64723184, (q31_t)0x646e4c66, - (q31_t)0x646a670a, (q31_t)0x64668170, (q31_t)0x64629b98, (q31_t)0x645eb582, (q31_t)0x645acf2e, (q31_t)0x6456e89d, - (q31_t)0x645301cd, (q31_t)0x644f1ac0, - (q31_t)0x644b3375, (q31_t)0x64474bec, (q31_t)0x64436425, (q31_t)0x643f7c20, (q31_t)0x643b93dd, (q31_t)0x6437ab5d, - (q31_t)0x6433c29f, (q31_t)0x642fd9a3, - (q31_t)0x642bf069, (q31_t)0x642806f1, (q31_t)0x64241d3c, (q31_t)0x64203348, (q31_t)0x641c4917, (q31_t)0x64185ea9, - (q31_t)0x641473fc, (q31_t)0x64108912, - (q31_t)0x640c9dea, (q31_t)0x6408b284, (q31_t)0x6404c6e1, (q31_t)0x6400db00, (q31_t)0x63fceee1, (q31_t)0x63f90285, - (q31_t)0x63f515eb, (q31_t)0x63f12913, - (q31_t)0x63ed3bfd, (q31_t)0x63e94eaa, (q31_t)0x63e5611a, (q31_t)0x63e1734b, (q31_t)0x63dd853f, (q31_t)0x63d996f6, - (q31_t)0x63d5a86f, (q31_t)0x63d1b9aa, - (q31_t)0x63cdcaa8, (q31_t)0x63c9db68, (q31_t)0x63c5ebeb, (q31_t)0x63c1fc30, (q31_t)0x63be0c37, (q31_t)0x63ba1c01, - (q31_t)0x63b62b8e, (q31_t)0x63b23add, - (q31_t)0x63ae49ee, (q31_t)0x63aa58c2, (q31_t)0x63a66759, (q31_t)0x63a275b2, (q31_t)0x639e83cd, (q31_t)0x639a91ac, - (q31_t)0x63969f4c, (q31_t)0x6392acaf, - (q31_t)0x638eb9d5, (q31_t)0x638ac6be, (q31_t)0x6386d369, (q31_t)0x6382dfd6, (q31_t)0x637eec07, (q31_t)0x637af7fa, - (q31_t)0x637703af, (q31_t)0x63730f27, - (q31_t)0x636f1a62, (q31_t)0x636b2560, (q31_t)0x63673020, (q31_t)0x63633aa3, (q31_t)0x635f44e8, (q31_t)0x635b4ef0, - (q31_t)0x635758bb, (q31_t)0x63536249, - (q31_t)0x634f6b99, (q31_t)0x634b74ad, (q31_t)0x63477d82, (q31_t)0x6343861b, (q31_t)0x633f8e76, (q31_t)0x633b9695, - (q31_t)0x63379e76, (q31_t)0x6333a619, - (q31_t)0x632fad80, (q31_t)0x632bb4a9, (q31_t)0x6327bb96, (q31_t)0x6323c245, (q31_t)0x631fc8b7, (q31_t)0x631bceeb, - (q31_t)0x6317d4e3, (q31_t)0x6313da9e, - (q31_t)0x630fe01b, (q31_t)0x630be55b, (q31_t)0x6307ea5e, (q31_t)0x6303ef25, (q31_t)0x62fff3ae, (q31_t)0x62fbf7fa, - (q31_t)0x62f7fc08, (q31_t)0x62f3ffda, - (q31_t)0x62f0036f, (q31_t)0x62ec06c7, (q31_t)0x62e809e2, (q31_t)0x62e40cbf, (q31_t)0x62e00f60, (q31_t)0x62dc11c4, - (q31_t)0x62d813eb, (q31_t)0x62d415d4, - (q31_t)0x62d01781, (q31_t)0x62cc18f1, (q31_t)0x62c81a24, (q31_t)0x62c41b1a, (q31_t)0x62c01bd3, (q31_t)0x62bc1c4f, - (q31_t)0x62b81c8f, (q31_t)0x62b41c91, - (q31_t)0x62b01c57, (q31_t)0x62ac1bdf, (q31_t)0x62a81b2b, (q31_t)0x62a41a3a, (q31_t)0x62a0190c, (q31_t)0x629c17a1, - (q31_t)0x629815fa, (q31_t)0x62941415, - (q31_t)0x629011f4, (q31_t)0x628c0f96, (q31_t)0x62880cfb, (q31_t)0x62840a23, (q31_t)0x6280070f, (q31_t)0x627c03be, - (q31_t)0x62780030, (q31_t)0x6273fc65, - (q31_t)0x626ff85e, (q31_t)0x626bf41a, (q31_t)0x6267ef99, (q31_t)0x6263eadc, (q31_t)0x625fe5e1, (q31_t)0x625be0ab, - (q31_t)0x6257db37, (q31_t)0x6253d587, - (q31_t)0x624fcf9a, (q31_t)0x624bc970, (q31_t)0x6247c30a, (q31_t)0x6243bc68, (q31_t)0x623fb588, (q31_t)0x623bae6c, - (q31_t)0x6237a714, (q31_t)0x62339f7e, - (q31_t)0x622f97ad, (q31_t)0x622b8f9e, (q31_t)0x62278754, (q31_t)0x62237ecc, (q31_t)0x621f7608, (q31_t)0x621b6d08, - (q31_t)0x621763cb, (q31_t)0x62135a51, - (q31_t)0x620f509b, (q31_t)0x620b46a9, (q31_t)0x62073c7a, (q31_t)0x6203320e, (q31_t)0x61ff2766, (q31_t)0x61fb1c82, - (q31_t)0x61f71161, (q31_t)0x61f30604, - (q31_t)0x61eefa6b, (q31_t)0x61eaee95, (q31_t)0x61e6e282, (q31_t)0x61e2d633, (q31_t)0x61dec9a8, (q31_t)0x61dabce0, - (q31_t)0x61d6afdd, (q31_t)0x61d2a29c, - (q31_t)0x61ce9520, (q31_t)0x61ca8767, (q31_t)0x61c67971, (q31_t)0x61c26b40, (q31_t)0x61be5cd2, (q31_t)0x61ba4e28, - (q31_t)0x61b63f41, (q31_t)0x61b2301e, - (q31_t)0x61ae20bf, (q31_t)0x61aa1124, (q31_t)0x61a6014d, (q31_t)0x61a1f139, (q31_t)0x619de0e9, (q31_t)0x6199d05d, - (q31_t)0x6195bf94, (q31_t)0x6191ae90, - (q31_t)0x618d9d4f, (q31_t)0x61898bd2, (q31_t)0x61857a19, (q31_t)0x61816824, (q31_t)0x617d55f2, (q31_t)0x61794385, - (q31_t)0x617530db, (q31_t)0x61711df5, - (q31_t)0x616d0ad3, (q31_t)0x6168f775, (q31_t)0x6164e3db, (q31_t)0x6160d005, (q31_t)0x615cbbf3, (q31_t)0x6158a7a4, - (q31_t)0x6154931a, (q31_t)0x61507e54, - (q31_t)0x614c6951, (q31_t)0x61485413, (q31_t)0x61443e98, (q31_t)0x614028e2, (q31_t)0x613c12f0, (q31_t)0x6137fcc1, - (q31_t)0x6133e657, (q31_t)0x612fcfb0, - (q31_t)0x612bb8ce, (q31_t)0x6127a1b0, (q31_t)0x61238a56, (q31_t)0x611f72c0, (q31_t)0x611b5aee, (q31_t)0x611742e0, - (q31_t)0x61132a96, (q31_t)0x610f1210, - (q31_t)0x610af94f, (q31_t)0x6106e051, (q31_t)0x6102c718, (q31_t)0x60feada3, (q31_t)0x60fa93f2, (q31_t)0x60f67a05, - (q31_t)0x60f25fdd, (q31_t)0x60ee4579, - (q31_t)0x60ea2ad8, (q31_t)0x60e60ffd, (q31_t)0x60e1f4e5, (q31_t)0x60ddd991, (q31_t)0x60d9be02, (q31_t)0x60d5a237, - (q31_t)0x60d18631, (q31_t)0x60cd69ee, - (q31_t)0x60c94d70, (q31_t)0x60c530b6, (q31_t)0x60c113c1, (q31_t)0x60bcf690, (q31_t)0x60b8d923, (q31_t)0x60b4bb7a, - (q31_t)0x60b09d96, (q31_t)0x60ac7f76, - (q31_t)0x60a8611b, (q31_t)0x60a44284, (q31_t)0x60a023b1, (q31_t)0x609c04a3, (q31_t)0x6097e559, (q31_t)0x6093c5d3, - (q31_t)0x608fa612, (q31_t)0x608b8616, - (q31_t)0x608765dd, (q31_t)0x6083456a, (q31_t)0x607f24ba, (q31_t)0x607b03d0, (q31_t)0x6076e2a9, (q31_t)0x6072c148, - (q31_t)0x606e9faa, (q31_t)0x606a7dd2, - (q31_t)0x60665bbd, (q31_t)0x6062396e, (q31_t)0x605e16e2, (q31_t)0x6059f41c, (q31_t)0x6055d11a, (q31_t)0x6051addc, - (q31_t)0x604d8a63, (q31_t)0x604966af, - (q31_t)0x604542bf, (q31_t)0x60411e94, (q31_t)0x603cfa2e, (q31_t)0x6038d58c, (q31_t)0x6034b0af, (q31_t)0x60308b97, - (q31_t)0x602c6643, (q31_t)0x602840b4, - (q31_t)0x60241ae9, (q31_t)0x601ff4e3, (q31_t)0x601bcea2, (q31_t)0x6017a826, (q31_t)0x6013816e, (q31_t)0x600f5a7b, - (q31_t)0x600b334d, (q31_t)0x60070be4, - (q31_t)0x6002e43f, (q31_t)0x5ffebc5f, (q31_t)0x5ffa9444, (q31_t)0x5ff66bee, (q31_t)0x5ff2435d, (q31_t)0x5fee1a90, - (q31_t)0x5fe9f188, (q31_t)0x5fe5c845, - (q31_t)0x5fe19ec7, (q31_t)0x5fdd750e, (q31_t)0x5fd94b19, (q31_t)0x5fd520ea, (q31_t)0x5fd0f67f, (q31_t)0x5fcccbd9, - (q31_t)0x5fc8a0f8, (q31_t)0x5fc475dc, - (q31_t)0x5fc04a85, (q31_t)0x5fbc1ef3, (q31_t)0x5fb7f326, (q31_t)0x5fb3c71e, (q31_t)0x5faf9adb, (q31_t)0x5fab6e5d, - (q31_t)0x5fa741a3, (q31_t)0x5fa314af, - (q31_t)0x5f9ee780, (q31_t)0x5f9aba16, (q31_t)0x5f968c70, (q31_t)0x5f925e90, (q31_t)0x5f8e3075, (q31_t)0x5f8a021f, - (q31_t)0x5f85d38e, (q31_t)0x5f81a4c2, - (q31_t)0x5f7d75bb, (q31_t)0x5f794679, (q31_t)0x5f7516fd, (q31_t)0x5f70e745, (q31_t)0x5f6cb753, (q31_t)0x5f688726, - (q31_t)0x5f6456be, (q31_t)0x5f60261b, - (q31_t)0x5f5bf53d, (q31_t)0x5f57c424, (q31_t)0x5f5392d1, (q31_t)0x5f4f6143, (q31_t)0x5f4b2f7a, (q31_t)0x5f46fd76, - (q31_t)0x5f42cb37, (q31_t)0x5f3e98be, - (q31_t)0x5f3a660a, (q31_t)0x5f36331b, (q31_t)0x5f31fff1, (q31_t)0x5f2dcc8d, (q31_t)0x5f2998ee, (q31_t)0x5f256515, - (q31_t)0x5f213100, (q31_t)0x5f1cfcb1, - (q31_t)0x5f18c827, (q31_t)0x5f149363, (q31_t)0x5f105e64, (q31_t)0x5f0c292a, (q31_t)0x5f07f3b6, (q31_t)0x5f03be07, - (q31_t)0x5eff881d, (q31_t)0x5efb51f9, - (q31_t)0x5ef71b9b, (q31_t)0x5ef2e501, (q31_t)0x5eeeae2d, (q31_t)0x5eea771f, (q31_t)0x5ee63fd6, (q31_t)0x5ee20853, - (q31_t)0x5eddd094, (q31_t)0x5ed9989c, - (q31_t)0x5ed56069, (q31_t)0x5ed127fb, (q31_t)0x5eccef53, (q31_t)0x5ec8b671, (q31_t)0x5ec47d54, (q31_t)0x5ec043fc, - (q31_t)0x5ebc0a6a, (q31_t)0x5eb7d09e, - (q31_t)0x5eb39697, (q31_t)0x5eaf5c56, (q31_t)0x5eab21da, (q31_t)0x5ea6e724, (q31_t)0x5ea2ac34, (q31_t)0x5e9e7109, - (q31_t)0x5e9a35a4, (q31_t)0x5e95fa05, - (q31_t)0x5e91be2b, (q31_t)0x5e8d8217, (q31_t)0x5e8945c8, (q31_t)0x5e85093f, (q31_t)0x5e80cc7c, (q31_t)0x5e7c8f7f, - (q31_t)0x5e785247, (q31_t)0x5e7414d5, - (q31_t)0x5e6fd729, (q31_t)0x5e6b9943, (q31_t)0x5e675b22, (q31_t)0x5e631cc7, (q31_t)0x5e5ede32, (q31_t)0x5e5a9f62, - (q31_t)0x5e566059, (q31_t)0x5e522115, - (q31_t)0x5e4de197, (q31_t)0x5e49a1df, (q31_t)0x5e4561ed, (q31_t)0x5e4121c0, (q31_t)0x5e3ce15a, (q31_t)0x5e38a0b9, - (q31_t)0x5e345fde, (q31_t)0x5e301ec9, - (q31_t)0x5e2bdd7a, (q31_t)0x5e279bf1, (q31_t)0x5e235a2e, (q31_t)0x5e1f1830, (q31_t)0x5e1ad5f9, (q31_t)0x5e169388, - (q31_t)0x5e1250dc, (q31_t)0x5e0e0df7, - (q31_t)0x5e09cad7, (q31_t)0x5e05877e, (q31_t)0x5e0143ea, (q31_t)0x5dfd001d, (q31_t)0x5df8bc15, (q31_t)0x5df477d4, - (q31_t)0x5df03359, (q31_t)0x5debeea3, - (q31_t)0x5de7a9b4, (q31_t)0x5de3648b, (q31_t)0x5ddf1f28, (q31_t)0x5ddad98b, (q31_t)0x5dd693b4, (q31_t)0x5dd24da3, - (q31_t)0x5dce0759, (q31_t)0x5dc9c0d4, - (q31_t)0x5dc57a16, (q31_t)0x5dc1331d, (q31_t)0x5dbcebeb, (q31_t)0x5db8a480, (q31_t)0x5db45cda, (q31_t)0x5db014fa, - (q31_t)0x5dabcce1, (q31_t)0x5da7848e, - (q31_t)0x5da33c01, (q31_t)0x5d9ef33b, (q31_t)0x5d9aaa3a, (q31_t)0x5d966100, (q31_t)0x5d92178d, (q31_t)0x5d8dcddf, - (q31_t)0x5d8983f8, (q31_t)0x5d8539d7, - (q31_t)0x5d80ef7c, (q31_t)0x5d7ca4e8, (q31_t)0x5d785a1a, (q31_t)0x5d740f12, (q31_t)0x5d6fc3d1, (q31_t)0x5d6b7856, - (q31_t)0x5d672ca2, (q31_t)0x5d62e0b4, - (q31_t)0x5d5e948c, (q31_t)0x5d5a482a, (q31_t)0x5d55fb90, (q31_t)0x5d51aebb, (q31_t)0x5d4d61ad, (q31_t)0x5d491465, - (q31_t)0x5d44c6e4, (q31_t)0x5d40792a, - (q31_t)0x5d3c2b35, (q31_t)0x5d37dd08, (q31_t)0x5d338ea0, (q31_t)0x5d2f4000, (q31_t)0x5d2af125, (q31_t)0x5d26a212, - (q31_t)0x5d2252c5, (q31_t)0x5d1e033e, - (q31_t)0x5d19b37e, (q31_t)0x5d156385, (q31_t)0x5d111352, (q31_t)0x5d0cc2e5, (q31_t)0x5d087240, (q31_t)0x5d042161, - (q31_t)0x5cffd048, (q31_t)0x5cfb7ef7, - (q31_t)0x5cf72d6b, (q31_t)0x5cf2dba7, (q31_t)0x5cee89a9, (q31_t)0x5cea3772, (q31_t)0x5ce5e501, (q31_t)0x5ce19258, - (q31_t)0x5cdd3f75, (q31_t)0x5cd8ec58, - (q31_t)0x5cd49903, (q31_t)0x5cd04574, (q31_t)0x5ccbf1ab, (q31_t)0x5cc79daa, (q31_t)0x5cc3496f, (q31_t)0x5cbef4fc, - (q31_t)0x5cbaa04f, (q31_t)0x5cb64b68, - (q31_t)0x5cb1f649, (q31_t)0x5cada0f0, (q31_t)0x5ca94b5e, (q31_t)0x5ca4f594, (q31_t)0x5ca09f8f, (q31_t)0x5c9c4952, - (q31_t)0x5c97f2dc, (q31_t)0x5c939c2c, - (q31_t)0x5c8f4544, (q31_t)0x5c8aee22, (q31_t)0x5c8696c7, (q31_t)0x5c823f34, (q31_t)0x5c7de767, (q31_t)0x5c798f61, - (q31_t)0x5c753722, (q31_t)0x5c70deaa, - (q31_t)0x5c6c85f9, (q31_t)0x5c682d0f, (q31_t)0x5c63d3eb, (q31_t)0x5c5f7a8f, (q31_t)0x5c5b20fa, (q31_t)0x5c56c72c, - (q31_t)0x5c526d25, (q31_t)0x5c4e12e5, - (q31_t)0x5c49b86d, (q31_t)0x5c455dbb, (q31_t)0x5c4102d0, (q31_t)0x5c3ca7ad, (q31_t)0x5c384c50, (q31_t)0x5c33f0bb, - (q31_t)0x5c2f94ec, (q31_t)0x5c2b38e5, - (q31_t)0x5c26dca5, (q31_t)0x5c22802c, (q31_t)0x5c1e237b, (q31_t)0x5c19c690, (q31_t)0x5c15696d, (q31_t)0x5c110c11, - (q31_t)0x5c0cae7c, (q31_t)0x5c0850ae, - (q31_t)0x5c03f2a8, (q31_t)0x5bff9469, (q31_t)0x5bfb35f1, (q31_t)0x5bf6d740, (q31_t)0x5bf27857, (q31_t)0x5bee1935, - (q31_t)0x5be9b9da, (q31_t)0x5be55a46, - (q31_t)0x5be0fa7a, (q31_t)0x5bdc9a75, (q31_t)0x5bd83a37, (q31_t)0x5bd3d9c1, (q31_t)0x5bcf7912, (q31_t)0x5bcb182b, - (q31_t)0x5bc6b70b, (q31_t)0x5bc255b2, - (q31_t)0x5bbdf421, (q31_t)0x5bb99257, (q31_t)0x5bb53054, (q31_t)0x5bb0ce19, (q31_t)0x5bac6ba6, (q31_t)0x5ba808f9, - (q31_t)0x5ba3a615, (q31_t)0x5b9f42f7, - (q31_t)0x5b9adfa2, (q31_t)0x5b967c13, (q31_t)0x5b92184d, (q31_t)0x5b8db44d, (q31_t)0x5b895016, (q31_t)0x5b84eba6, - (q31_t)0x5b8086fd, (q31_t)0x5b7c221c, - (q31_t)0x5b77bd02, (q31_t)0x5b7357b0, (q31_t)0x5b6ef226, (q31_t)0x5b6a8c63, (q31_t)0x5b662668, (q31_t)0x5b61c035, - (q31_t)0x5b5d59c9, (q31_t)0x5b58f324, - (q31_t)0x5b548c48, (q31_t)0x5b502533, (q31_t)0x5b4bbde6, (q31_t)0x5b475660, (q31_t)0x5b42eea2, (q31_t)0x5b3e86ac, - (q31_t)0x5b3a1e7e, (q31_t)0x5b35b617, - (q31_t)0x5b314d78, (q31_t)0x5b2ce4a1, (q31_t)0x5b287b91, (q31_t)0x5b241249, (q31_t)0x5b1fa8c9, (q31_t)0x5b1b3f11, - (q31_t)0x5b16d521, (q31_t)0x5b126af8, - (q31_t)0x5b0e0098, (q31_t)0x5b0995ff, (q31_t)0x5b052b2e, (q31_t)0x5b00c025, (q31_t)0x5afc54e3, (q31_t)0x5af7e96a, - (q31_t)0x5af37db8, (q31_t)0x5aef11cf, - (q31_t)0x5aeaa5ad, (q31_t)0x5ae63953, (q31_t)0x5ae1ccc1, (q31_t)0x5add5ff7, (q31_t)0x5ad8f2f5, (q31_t)0x5ad485bb, - (q31_t)0x5ad01849, (q31_t)0x5acbaa9f, - (q31_t)0x5ac73cbd, (q31_t)0x5ac2cea3, (q31_t)0x5abe6050, (q31_t)0x5ab9f1c6, (q31_t)0x5ab58304, (q31_t)0x5ab1140a, - (q31_t)0x5aaca4d8, (q31_t)0x5aa8356f, - (q31_t)0x5aa3c5cd, (q31_t)0x5a9f55f3, (q31_t)0x5a9ae5e2, (q31_t)0x5a967598, (q31_t)0x5a920517, (q31_t)0x5a8d945d, - (q31_t)0x5a89236c, (q31_t)0x5a84b243, - (q31_t)0x5a8040e3, (q31_t)0x5a7bcf4a, (q31_t)0x5a775d7a, (q31_t)0x5a72eb71, (q31_t)0x5a6e7931, (q31_t)0x5a6a06ba, - (q31_t)0x5a65940a, (q31_t)0x5a612123, - (q31_t)0x5a5cae04, (q31_t)0x5a583aad, (q31_t)0x5a53c71e, (q31_t)0x5a4f5358, (q31_t)0x5a4adf5a, (q31_t)0x5a466b24, - (q31_t)0x5a41f6b7, (q31_t)0x5a3d8212, - (q31_t)0x5a390d35, (q31_t)0x5a349821, (q31_t)0x5a3022d5, (q31_t)0x5a2bad51, (q31_t)0x5a273796, (q31_t)0x5a22c1a3, - (q31_t)0x5a1e4b79, (q31_t)0x5a19d517, - (q31_t)0x5a155e7d, (q31_t)0x5a10e7ac, (q31_t)0x5a0c70a3, (q31_t)0x5a07f963, (q31_t)0x5a0381eb, (q31_t)0x59ff0a3c, - (q31_t)0x59fa9255, (q31_t)0x59f61a36, - (q31_t)0x59f1a1e0, (q31_t)0x59ed2953, (q31_t)0x59e8b08e, (q31_t)0x59e43792, (q31_t)0x59dfbe5e, (q31_t)0x59db44f3, - (q31_t)0x59d6cb50, (q31_t)0x59d25176, - (q31_t)0x59cdd765, (q31_t)0x59c95d1c, (q31_t)0x59c4e29c, (q31_t)0x59c067e4, (q31_t)0x59bbecf5, (q31_t)0x59b771cf, - (q31_t)0x59b2f671, (q31_t)0x59ae7add, - (q31_t)0x59a9ff10, (q31_t)0x59a5830d, (q31_t)0x59a106d2, (q31_t)0x599c8a60, (q31_t)0x59980db6, (q31_t)0x599390d5, - (q31_t)0x598f13bd, (q31_t)0x598a966e, - (q31_t)0x598618e8, (q31_t)0x59819b2a, (q31_t)0x597d1d35, (q31_t)0x59789f09, (q31_t)0x597420a6, (q31_t)0x596fa20b, - (q31_t)0x596b233a, (q31_t)0x5966a431, - (q31_t)0x596224f1, (q31_t)0x595da57a, (q31_t)0x595925cc, (q31_t)0x5954a5e6, (q31_t)0x595025ca, (q31_t)0x594ba576, - (q31_t)0x594724ec, (q31_t)0x5942a42a, - (q31_t)0x593e2331, (q31_t)0x5939a202, (q31_t)0x5935209b, (q31_t)0x59309efd, (q31_t)0x592c1d28, (q31_t)0x59279b1c, - (q31_t)0x592318d9, (q31_t)0x591e9660, - (q31_t)0x591a13af, (q31_t)0x591590c7, (q31_t)0x59110da8, (q31_t)0x590c8a53, (q31_t)0x590806c6, (q31_t)0x59038302, - (q31_t)0x58feff08, (q31_t)0x58fa7ad7, - (q31_t)0x58f5f66e, (q31_t)0x58f171cf, (q31_t)0x58ececf9, (q31_t)0x58e867ed, (q31_t)0x58e3e2a9, (q31_t)0x58df5d2e, - (q31_t)0x58dad77d, (q31_t)0x58d65195, - (q31_t)0x58d1cb76, (q31_t)0x58cd4520, (q31_t)0x58c8be94, (q31_t)0x58c437d1, (q31_t)0x58bfb0d7, (q31_t)0x58bb29a6, - (q31_t)0x58b6a23e, (q31_t)0x58b21aa0, - (q31_t)0x58ad92cb, (q31_t)0x58a90ac0, (q31_t)0x58a4827d, (q31_t)0x589ffa04, (q31_t)0x589b7155, (q31_t)0x5896e86f, - (q31_t)0x58925f52, (q31_t)0x588dd5fe, - (q31_t)0x58894c74, (q31_t)0x5884c2b3, (q31_t)0x588038bb, (q31_t)0x587bae8d, (q31_t)0x58772429, (q31_t)0x5872998e, - (q31_t)0x586e0ebc, (q31_t)0x586983b4, - (q31_t)0x5864f875, (q31_t)0x58606d00, (q31_t)0x585be154, (q31_t)0x58575571, (q31_t)0x5852c958, (q31_t)0x584e3d09, - (q31_t)0x5849b083, (q31_t)0x584523c7, - (q31_t)0x584096d4, (q31_t)0x583c09ab, (q31_t)0x58377c4c, (q31_t)0x5832eeb6, (q31_t)0x582e60e9, (q31_t)0x5829d2e6, - (q31_t)0x582544ad, (q31_t)0x5820b63e, - (q31_t)0x581c2798, (q31_t)0x581798bb, (q31_t)0x581309a9, (q31_t)0x580e7a60, (q31_t)0x5809eae1, (q31_t)0x58055b2b, - (q31_t)0x5800cb3f, (q31_t)0x57fc3b1d, - (q31_t)0x57f7aac5, (q31_t)0x57f31a36, (q31_t)0x57ee8971, (q31_t)0x57e9f876, (q31_t)0x57e56744, (q31_t)0x57e0d5dd, - (q31_t)0x57dc443f, (q31_t)0x57d7b26b, - (q31_t)0x57d32061, (q31_t)0x57ce8e20, (q31_t)0x57c9fbaa, (q31_t)0x57c568fd, (q31_t)0x57c0d61a, (q31_t)0x57bc4301, - (q31_t)0x57b7afb2, (q31_t)0x57b31c2d, - (q31_t)0x57ae8872, (q31_t)0x57a9f480, (q31_t)0x57a56059, (q31_t)0x57a0cbfb, (q31_t)0x579c3768, (q31_t)0x5797a29e, - (q31_t)0x57930d9e, (q31_t)0x578e7869, - (q31_t)0x5789e2fd, (q31_t)0x57854d5b, (q31_t)0x5780b784, (q31_t)0x577c2176, (q31_t)0x57778b32, (q31_t)0x5772f4b9, - (q31_t)0x576e5e09, (q31_t)0x5769c724, - (q31_t)0x57653009, (q31_t)0x576098b7, (q31_t)0x575c0130, (q31_t)0x57576973, (q31_t)0x5752d180, (q31_t)0x574e3957, - (q31_t)0x5749a0f9, (q31_t)0x57450864, - (q31_t)0x57406f9a, (q31_t)0x573bd69a, (q31_t)0x57373d64, (q31_t)0x5732a3f8, (q31_t)0x572e0a56, (q31_t)0x5729707f, - (q31_t)0x5724d672, (q31_t)0x57203c2f, - (q31_t)0x571ba1b7, (q31_t)0x57170708, (q31_t)0x57126c24, (q31_t)0x570dd10a, (q31_t)0x570935bb, (q31_t)0x57049a36, - (q31_t)0x56fffe7b, (q31_t)0x56fb628b, - (q31_t)0x56f6c664, (q31_t)0x56f22a09, (q31_t)0x56ed8d77, (q31_t)0x56e8f0b0, (q31_t)0x56e453b4, (q31_t)0x56dfb681, - (q31_t)0x56db1919, (q31_t)0x56d67b7c, - (q31_t)0x56d1dda9, (q31_t)0x56cd3fa1, (q31_t)0x56c8a162, (q31_t)0x56c402ef, (q31_t)0x56bf6446, (q31_t)0x56bac567, - (q31_t)0x56b62653, (q31_t)0x56b18709, - (q31_t)0x56ace78a, (q31_t)0x56a847d6, (q31_t)0x56a3a7ec, (q31_t)0x569f07cc, (q31_t)0x569a6777, (q31_t)0x5695c6ed, - (q31_t)0x5691262d, (q31_t)0x568c8538, - (q31_t)0x5687e40e, (q31_t)0x568342ae, (q31_t)0x567ea118, (q31_t)0x5679ff4e, (q31_t)0x56755d4e, (q31_t)0x5670bb19, - (q31_t)0x566c18ae, (q31_t)0x5667760e, - (q31_t)0x5662d339, (q31_t)0x565e302e, (q31_t)0x56598cee, (q31_t)0x5654e979, (q31_t)0x565045cf, (q31_t)0x564ba1f0, - (q31_t)0x5646fddb, (q31_t)0x56425991, - (q31_t)0x563db512, (q31_t)0x5639105d, (q31_t)0x56346b74, (q31_t)0x562fc655, (q31_t)0x562b2101, (q31_t)0x56267b78, - (q31_t)0x5621d5ba, (q31_t)0x561d2fc6, - (q31_t)0x5618899e, (q31_t)0x5613e340, (q31_t)0x560f3cae, (q31_t)0x560a95e6, (q31_t)0x5605eee9, (q31_t)0x560147b7, - (q31_t)0x55fca050, (q31_t)0x55f7f8b4, - (q31_t)0x55f350e3, (q31_t)0x55eea8dd, (q31_t)0x55ea00a2, (q31_t)0x55e55832, (q31_t)0x55e0af8d, (q31_t)0x55dc06b3, - (q31_t)0x55d75da4, (q31_t)0x55d2b460, - (q31_t)0x55ce0ae7, (q31_t)0x55c96139, (q31_t)0x55c4b757, (q31_t)0x55c00d3f, (q31_t)0x55bb62f3, (q31_t)0x55b6b871, - (q31_t)0x55b20dbb, (q31_t)0x55ad62d0, - (q31_t)0x55a8b7b0, (q31_t)0x55a40c5b, (q31_t)0x559f60d1, (q31_t)0x559ab513, (q31_t)0x55960920, (q31_t)0x55915cf8, - (q31_t)0x558cb09b, (q31_t)0x55880409, - (q31_t)0x55835743, (q31_t)0x557eaa48, (q31_t)0x5579fd18, (q31_t)0x55754fb3, (q31_t)0x5570a21a, (q31_t)0x556bf44c, - (q31_t)0x55674649, (q31_t)0x55629812, - (q31_t)0x555de9a6, (q31_t)0x55593b05, (q31_t)0x55548c30, (q31_t)0x554fdd26, (q31_t)0x554b2de7, (q31_t)0x55467e74, - (q31_t)0x5541cecc, (q31_t)0x553d1ef0, - (q31_t)0x55386edf, (q31_t)0x5533be99, (q31_t)0x552f0e1f, (q31_t)0x552a5d70, (q31_t)0x5525ac8d, (q31_t)0x5520fb75, - (q31_t)0x551c4a29, (q31_t)0x551798a8, - (q31_t)0x5512e6f3, (q31_t)0x550e3509, (q31_t)0x550982eb, (q31_t)0x5504d099, (q31_t)0x55001e12, (q31_t)0x54fb6b56, - (q31_t)0x54f6b866, (q31_t)0x54f20542, - (q31_t)0x54ed51e9, (q31_t)0x54e89e5c, (q31_t)0x54e3ea9a, (q31_t)0x54df36a5, (q31_t)0x54da827a, (q31_t)0x54d5ce1c, - (q31_t)0x54d11989, (q31_t)0x54cc64c2, - (q31_t)0x54c7afc6, (q31_t)0x54c2fa96, (q31_t)0x54be4532, (q31_t)0x54b98f9a, (q31_t)0x54b4d9cd, (q31_t)0x54b023cc, - (q31_t)0x54ab6d97, (q31_t)0x54a6b72e, - (q31_t)0x54a20090, (q31_t)0x549d49bf, (q31_t)0x549892b9, (q31_t)0x5493db7f, (q31_t)0x548f2410, (q31_t)0x548a6c6e, - (q31_t)0x5485b497, (q31_t)0x5480fc8c, - (q31_t)0x547c444d, (q31_t)0x54778bda, (q31_t)0x5472d333, (q31_t)0x546e1a58, (q31_t)0x54696149, (q31_t)0x5464a805, - (q31_t)0x545fee8e, (q31_t)0x545b34e3, - (q31_t)0x54567b03, (q31_t)0x5451c0f0, (q31_t)0x544d06a8, (q31_t)0x54484c2d, (q31_t)0x5443917d, (q31_t)0x543ed699, - (q31_t)0x543a1b82, (q31_t)0x54356037, - (q31_t)0x5430a4b7, (q31_t)0x542be904, (q31_t)0x54272d1d, (q31_t)0x54227102, (q31_t)0x541db4b3, (q31_t)0x5418f830, - (q31_t)0x54143b79, (q31_t)0x540f7e8e, - (q31_t)0x540ac170, (q31_t)0x5406041d, (q31_t)0x54014697, (q31_t)0x53fc88dd, (q31_t)0x53f7caef, (q31_t)0x53f30cce, - (q31_t)0x53ee4e78, (q31_t)0x53e98fef, - (q31_t)0x53e4d132, (q31_t)0x53e01242, (q31_t)0x53db531d, (q31_t)0x53d693c5, (q31_t)0x53d1d439, (q31_t)0x53cd147a, - (q31_t)0x53c85486, (q31_t)0x53c3945f, - (q31_t)0x53bed405, (q31_t)0x53ba1377, (q31_t)0x53b552b5, (q31_t)0x53b091bf, (q31_t)0x53abd096, (q31_t)0x53a70f39, - (q31_t)0x53a24da9, (q31_t)0x539d8be5, - (q31_t)0x5398c9ed, (q31_t)0x539407c2, (q31_t)0x538f4564, (q31_t)0x538a82d1, (q31_t)0x5385c00c, (q31_t)0x5380fd12, - (q31_t)0x537c39e6, (q31_t)0x53777685, - (q31_t)0x5372b2f2, (q31_t)0x536def2a, (q31_t)0x53692b30, (q31_t)0x53646701, (q31_t)0x535fa2a0, (q31_t)0x535ade0b, - (q31_t)0x53561942, (q31_t)0x53515447, - (q31_t)0x534c8f17, (q31_t)0x5347c9b5, (q31_t)0x5343041f, (q31_t)0x533e3e55, (q31_t)0x53397859, (q31_t)0x5334b229, - (q31_t)0x532febc5, (q31_t)0x532b252f, - (q31_t)0x53265e65, (q31_t)0x53219767, (q31_t)0x531cd037, (q31_t)0x531808d3, (q31_t)0x5313413c, (q31_t)0x530e7972, - (q31_t)0x5309b174, (q31_t)0x5304e943, - (q31_t)0x530020df, (q31_t)0x52fb5848, (q31_t)0x52f68f7e, (q31_t)0x52f1c680, (q31_t)0x52ecfd4f, (q31_t)0x52e833ec, - (q31_t)0x52e36a55, (q31_t)0x52dea08a, - (q31_t)0x52d9d68d, (q31_t)0x52d50c5d, (q31_t)0x52d041f9, (q31_t)0x52cb7763, (q31_t)0x52c6ac99, (q31_t)0x52c1e19d, - (q31_t)0x52bd166d, (q31_t)0x52b84b0a, - (q31_t)0x52b37f74, (q31_t)0x52aeb3ac, (q31_t)0x52a9e7b0, (q31_t)0x52a51b81, (q31_t)0x52a04f1f, (q31_t)0x529b828a, - (q31_t)0x5296b5c3, (q31_t)0x5291e8c8, - (q31_t)0x528d1b9b, (q31_t)0x52884e3a, (q31_t)0x528380a7, (q31_t)0x527eb2e0, (q31_t)0x5279e4e7, (q31_t)0x527516bb, - (q31_t)0x5270485c, (q31_t)0x526b79ca, - (q31_t)0x5266ab06, (q31_t)0x5261dc0e, (q31_t)0x525d0ce4, (q31_t)0x52583d87, (q31_t)0x52536df7, (q31_t)0x524e9e34, - (q31_t)0x5249ce3f, (q31_t)0x5244fe17, - (q31_t)0x52402dbc, (q31_t)0x523b5d2e, (q31_t)0x52368c6e, (q31_t)0x5231bb7b, (q31_t)0x522cea55, (q31_t)0x522818fc, - (q31_t)0x52234771, (q31_t)0x521e75b3, - (q31_t)0x5219a3c3, (q31_t)0x5214d1a0, (q31_t)0x520fff4a, (q31_t)0x520b2cc2, (q31_t)0x52065a07, (q31_t)0x52018719, - (q31_t)0x51fcb3f9, (q31_t)0x51f7e0a6, - (q31_t)0x51f30d21, (q31_t)0x51ee3969, (q31_t)0x51e9657e, (q31_t)0x51e49162, (q31_t)0x51dfbd12, (q31_t)0x51dae890, - (q31_t)0x51d613dc, (q31_t)0x51d13ef5, - (q31_t)0x51cc69db, (q31_t)0x51c79490, (q31_t)0x51c2bf11, (q31_t)0x51bde960, (q31_t)0x51b9137d, (q31_t)0x51b43d68, - (q31_t)0x51af6720, (q31_t)0x51aa90a5, - (q31_t)0x51a5b9f9, (q31_t)0x51a0e31a, (q31_t)0x519c0c08, (q31_t)0x519734c4, (q31_t)0x51925d4e, (q31_t)0x518d85a6, - (q31_t)0x5188adcb, (q31_t)0x5183d5be, - (q31_t)0x517efd7f, (q31_t)0x517a250d, (q31_t)0x51754c69, (q31_t)0x51707393, (q31_t)0x516b9a8b, (q31_t)0x5166c150, - (q31_t)0x5161e7e4, (q31_t)0x515d0e45, - (q31_t)0x51583473, (q31_t)0x51535a70, (q31_t)0x514e803b, (q31_t)0x5149a5d3, (q31_t)0x5144cb39, (q31_t)0x513ff06d, - (q31_t)0x513b156f, (q31_t)0x51363a3f, - (q31_t)0x51315edd, (q31_t)0x512c8348, (q31_t)0x5127a782, (q31_t)0x5122cb8a, (q31_t)0x511def5f, (q31_t)0x51191302, - (q31_t)0x51143674, (q31_t)0x510f59b3, - (q31_t)0x510a7cc1, (q31_t)0x51059f9c, (q31_t)0x5100c246, (q31_t)0x50fbe4bd, (q31_t)0x50f70703, (q31_t)0x50f22916, - (q31_t)0x50ed4af8, (q31_t)0x50e86ca8, - (q31_t)0x50e38e25, (q31_t)0x50deaf71, (q31_t)0x50d9d08b, (q31_t)0x50d4f173, (q31_t)0x50d0122a, (q31_t)0x50cb32ae, - (q31_t)0x50c65301, (q31_t)0x50c17322, - (q31_t)0x50bc9311, (q31_t)0x50b7b2ce, (q31_t)0x50b2d259, (q31_t)0x50adf1b3, (q31_t)0x50a910db, (q31_t)0x50a42fd1, - (q31_t)0x509f4e95, (q31_t)0x509a6d28, - (q31_t)0x50958b88, (q31_t)0x5090a9b8, (q31_t)0x508bc7b5, (q31_t)0x5086e581, (q31_t)0x5082031b, (q31_t)0x507d2083, - (q31_t)0x50783dba, (q31_t)0x50735abf, - (q31_t)0x506e7793, (q31_t)0x50699435, (q31_t)0x5064b0a5, (q31_t)0x505fcce4, (q31_t)0x505ae8f1, (q31_t)0x505604cd, - (q31_t)0x50512077, (q31_t)0x504c3bef, - (q31_t)0x50475736, (q31_t)0x5042724c, (q31_t)0x503d8d30, (q31_t)0x5038a7e2, (q31_t)0x5033c263, (q31_t)0x502edcb2, - (q31_t)0x5029f6d1, (q31_t)0x502510bd, - (q31_t)0x50202a78, (q31_t)0x501b4402, (q31_t)0x50165d5a, (q31_t)0x50117681, (q31_t)0x500c8f77, (q31_t)0x5007a83b, - (q31_t)0x5002c0cd, (q31_t)0x4ffdd92f, - (q31_t)0x4ff8f15f, (q31_t)0x4ff4095e, (q31_t)0x4fef212b, (q31_t)0x4fea38c7, (q31_t)0x4fe55032, (q31_t)0x4fe0676c, - (q31_t)0x4fdb7e74, (q31_t)0x4fd6954b, - (q31_t)0x4fd1abf0, (q31_t)0x4fccc265, (q31_t)0x4fc7d8a8, (q31_t)0x4fc2eeba, (q31_t)0x4fbe049b, (q31_t)0x4fb91a4b, - (q31_t)0x4fb42fc9, (q31_t)0x4faf4517, - (q31_t)0x4faa5a33, (q31_t)0x4fa56f1e, (q31_t)0x4fa083d8, (q31_t)0x4f9b9861, (q31_t)0x4f96acb8, (q31_t)0x4f91c0df, - (q31_t)0x4f8cd4d4, (q31_t)0x4f87e899, - (q31_t)0x4f82fc2c, (q31_t)0x4f7e0f8f, (q31_t)0x4f7922c0, (q31_t)0x4f7435c0, (q31_t)0x4f6f488f, (q31_t)0x4f6a5b2e, - (q31_t)0x4f656d9b, (q31_t)0x4f607fd7, - (q31_t)0x4f5b91e3, (q31_t)0x4f56a3bd, (q31_t)0x4f51b566, (q31_t)0x4f4cc6df, (q31_t)0x4f47d827, (q31_t)0x4f42e93d, - (q31_t)0x4f3dfa23, (q31_t)0x4f390ad8, - (q31_t)0x4f341b5c, (q31_t)0x4f2f2baf, (q31_t)0x4f2a3bd2, (q31_t)0x4f254bc3, (q31_t)0x4f205b84, (q31_t)0x4f1b6b14, - (q31_t)0x4f167a73, (q31_t)0x4f1189a1, - (q31_t)0x4f0c989f, (q31_t)0x4f07a76b, (q31_t)0x4f02b608, (q31_t)0x4efdc473, (q31_t)0x4ef8d2ad, (q31_t)0x4ef3e0b7, - (q31_t)0x4eeeee90, (q31_t)0x4ee9fc39, - (q31_t)0x4ee509b1, (q31_t)0x4ee016f8, (q31_t)0x4edb240e, (q31_t)0x4ed630f4, (q31_t)0x4ed13da9, (q31_t)0x4ecc4a2e, - (q31_t)0x4ec75682, (q31_t)0x4ec262a5, - (q31_t)0x4ebd6e98, (q31_t)0x4eb87a5a, (q31_t)0x4eb385ec, (q31_t)0x4eae914d, (q31_t)0x4ea99c7d, (q31_t)0x4ea4a77d, - (q31_t)0x4e9fb24d, (q31_t)0x4e9abcec, - (q31_t)0x4e95c75b, (q31_t)0x4e90d199, (q31_t)0x4e8bdba6, (q31_t)0x4e86e583, (q31_t)0x4e81ef30, (q31_t)0x4e7cf8ac, - (q31_t)0x4e7801f8, (q31_t)0x4e730b14, - (q31_t)0x4e6e13ff, (q31_t)0x4e691cba, (q31_t)0x4e642544, (q31_t)0x4e5f2d9e, (q31_t)0x4e5a35c7, (q31_t)0x4e553dc1, - (q31_t)0x4e50458a, (q31_t)0x4e4b4d22, - (q31_t)0x4e46548b, (q31_t)0x4e415bc3, (q31_t)0x4e3c62cb, (q31_t)0x4e3769a2, (q31_t)0x4e32704a, (q31_t)0x4e2d76c1, - (q31_t)0x4e287d08, (q31_t)0x4e23831e, - (q31_t)0x4e1e8905, (q31_t)0x4e198ebb, (q31_t)0x4e149441, (q31_t)0x4e0f9997, (q31_t)0x4e0a9ebd, (q31_t)0x4e05a3b2, - (q31_t)0x4e00a878, (q31_t)0x4dfbad0d, - (q31_t)0x4df6b173, (q31_t)0x4df1b5a8, (q31_t)0x4decb9ad, (q31_t)0x4de7bd82, (q31_t)0x4de2c127, (q31_t)0x4dddc49c, - (q31_t)0x4dd8c7e1, (q31_t)0x4dd3caf6, - (q31_t)0x4dcecdda, (q31_t)0x4dc9d08f, (q31_t)0x4dc4d314, (q31_t)0x4dbfd569, (q31_t)0x4dbad78e, (q31_t)0x4db5d983, - (q31_t)0x4db0db48, (q31_t)0x4dabdcdd, - (q31_t)0x4da6de43, (q31_t)0x4da1df78, (q31_t)0x4d9ce07d, (q31_t)0x4d97e153, (q31_t)0x4d92e1f9, (q31_t)0x4d8de26f, - (q31_t)0x4d88e2b5, (q31_t)0x4d83e2cb, - (q31_t)0x4d7ee2b1, (q31_t)0x4d79e268, (q31_t)0x4d74e1ef, (q31_t)0x4d6fe146, (q31_t)0x4d6ae06d, (q31_t)0x4d65df64, - (q31_t)0x4d60de2c, (q31_t)0x4d5bdcc4, - (q31_t)0x4d56db2d, (q31_t)0x4d51d965, (q31_t)0x4d4cd76e, (q31_t)0x4d47d547, (q31_t)0x4d42d2f1, (q31_t)0x4d3dd06b, - (q31_t)0x4d38cdb5, (q31_t)0x4d33cad0, - (q31_t)0x4d2ec7bb, (q31_t)0x4d29c476, (q31_t)0x4d24c102, (q31_t)0x4d1fbd5e, (q31_t)0x4d1ab98b, (q31_t)0x4d15b588, - (q31_t)0x4d10b155, (q31_t)0x4d0bacf3, - (q31_t)0x4d06a862, (q31_t)0x4d01a3a0, (q31_t)0x4cfc9eb0, (q31_t)0x4cf79990, (q31_t)0x4cf29440, (q31_t)0x4ced8ec1, - (q31_t)0x4ce88913, (q31_t)0x4ce38335, - (q31_t)0x4cde7d28, (q31_t)0x4cd976eb, (q31_t)0x4cd4707f, (q31_t)0x4ccf69e3, (q31_t)0x4cca6318, (q31_t)0x4cc55c1e, - (q31_t)0x4cc054f4, (q31_t)0x4cbb4d9b, - (q31_t)0x4cb64613, (q31_t)0x4cb13e5b, (q31_t)0x4cac3674, (q31_t)0x4ca72e5e, (q31_t)0x4ca22619, (q31_t)0x4c9d1da4, - (q31_t)0x4c981500, (q31_t)0x4c930c2d, - (q31_t)0x4c8e032a, (q31_t)0x4c88f9f8, (q31_t)0x4c83f097, (q31_t)0x4c7ee707, (q31_t)0x4c79dd48, (q31_t)0x4c74d359, - (q31_t)0x4c6fc93b, (q31_t)0x4c6abeef, - (q31_t)0x4c65b473, (q31_t)0x4c60a9c8, (q31_t)0x4c5b9eed, (q31_t)0x4c5693e4, (q31_t)0x4c5188ac, (q31_t)0x4c4c7d44, - (q31_t)0x4c4771ae, (q31_t)0x4c4265e8, - (q31_t)0x4c3d59f3, (q31_t)0x4c384dd0, (q31_t)0x4c33417d, (q31_t)0x4c2e34fb, (q31_t)0x4c29284b, (q31_t)0x4c241b6b, - (q31_t)0x4c1f0e5c, (q31_t)0x4c1a011f, - (q31_t)0x4c14f3b2, (q31_t)0x4c0fe617, (q31_t)0x4c0ad84c, (q31_t)0x4c05ca53, (q31_t)0x4c00bc2b, (q31_t)0x4bfbadd4, - (q31_t)0x4bf69f4e, (q31_t)0x4bf19099, - (q31_t)0x4bec81b5, (q31_t)0x4be772a3, (q31_t)0x4be26362, (q31_t)0x4bdd53f2, (q31_t)0x4bd84453, (q31_t)0x4bd33485, - (q31_t)0x4bce2488, (q31_t)0x4bc9145d, - (q31_t)0x4bc40403, (q31_t)0x4bbef37b, (q31_t)0x4bb9e2c3, (q31_t)0x4bb4d1dd, (q31_t)0x4bafc0c8, (q31_t)0x4baaaf85, - (q31_t)0x4ba59e12, (q31_t)0x4ba08c72, - (q31_t)0x4b9b7aa2, (q31_t)0x4b9668a4, (q31_t)0x4b915677, (q31_t)0x4b8c441c, (q31_t)0x4b873192, (q31_t)0x4b821ed9, - (q31_t)0x4b7d0bf2, (q31_t)0x4b77f8dc, - (q31_t)0x4b72e598, (q31_t)0x4b6dd225, (q31_t)0x4b68be84, (q31_t)0x4b63aab4, (q31_t)0x4b5e96b6, (q31_t)0x4b598289, - (q31_t)0x4b546e2d, (q31_t)0x4b4f59a4, - (q31_t)0x4b4a44eb, (q31_t)0x4b453005, (q31_t)0x4b401aef, (q31_t)0x4b3b05ac, (q31_t)0x4b35f03a, (q31_t)0x4b30da9a, - (q31_t)0x4b2bc4cb, (q31_t)0x4b26aece, - (q31_t)0x4b2198a2, (q31_t)0x4b1c8248, (q31_t)0x4b176bc0, (q31_t)0x4b12550a, (q31_t)0x4b0d3e25, (q31_t)0x4b082712, - (q31_t)0x4b030fd1, (q31_t)0x4afdf861, - (q31_t)0x4af8e0c3, (q31_t)0x4af3c8f7, (q31_t)0x4aeeb0fd, (q31_t)0x4ae998d4, (q31_t)0x4ae4807d, (q31_t)0x4adf67f8, - (q31_t)0x4ada4f45, (q31_t)0x4ad53664, - (q31_t)0x4ad01d54, (q31_t)0x4acb0417, (q31_t)0x4ac5eaab, (q31_t)0x4ac0d111, (q31_t)0x4abbb749, (q31_t)0x4ab69d53, - (q31_t)0x4ab1832f, (q31_t)0x4aac68dc, - (q31_t)0x4aa74e5c, (q31_t)0x4aa233ae, (q31_t)0x4a9d18d1, (q31_t)0x4a97fdc7, (q31_t)0x4a92e28e, (q31_t)0x4a8dc728, - (q31_t)0x4a88ab93, (q31_t)0x4a838fd1, - (q31_t)0x4a7e73e0, (q31_t)0x4a7957c2, (q31_t)0x4a743b76, (q31_t)0x4a6f1efc, (q31_t)0x4a6a0253, (q31_t)0x4a64e57d, - (q31_t)0x4a5fc879, (q31_t)0x4a5aab48, - (q31_t)0x4a558de8, (q31_t)0x4a50705a, (q31_t)0x4a4b529f, (q31_t)0x4a4634b6, (q31_t)0x4a41169f, (q31_t)0x4a3bf85a, - (q31_t)0x4a36d9e7, (q31_t)0x4a31bb47, - (q31_t)0x4a2c9c79, (q31_t)0x4a277d7d, (q31_t)0x4a225e53, (q31_t)0x4a1d3efc, (q31_t)0x4a181f77, (q31_t)0x4a12ffc4, - (q31_t)0x4a0ddfe4, (q31_t)0x4a08bfd5, - (q31_t)0x4a039f9a, (q31_t)0x49fe7f30, (q31_t)0x49f95e99, (q31_t)0x49f43dd4, (q31_t)0x49ef1ce2, (q31_t)0x49e9fbc2, - (q31_t)0x49e4da74, (q31_t)0x49dfb8f9, - (q31_t)0x49da9750, (q31_t)0x49d5757a, (q31_t)0x49d05376, (q31_t)0x49cb3145, (q31_t)0x49c60ee6, (q31_t)0x49c0ec59, - (q31_t)0x49bbc9a0, (q31_t)0x49b6a6b8, - (q31_t)0x49b183a3, (q31_t)0x49ac6061, (q31_t)0x49a73cf1, (q31_t)0x49a21954, (q31_t)0x499cf589, (q31_t)0x4997d191, - (q31_t)0x4992ad6c, (q31_t)0x498d8919, - (q31_t)0x49886499, (q31_t)0x49833fec, (q31_t)0x497e1b11, (q31_t)0x4978f609, (q31_t)0x4973d0d3, (q31_t)0x496eab70, - (q31_t)0x496985e0, (q31_t)0x49646023, - (q31_t)0x495f3a38, (q31_t)0x495a1420, (q31_t)0x4954eddb, (q31_t)0x494fc768, (q31_t)0x494aa0c9, (q31_t)0x494579fc, - (q31_t)0x49405302, (q31_t)0x493b2bdb, - (q31_t)0x49360486, (q31_t)0x4930dd05, (q31_t)0x492bb556, (q31_t)0x49268d7a, (q31_t)0x49216571, (q31_t)0x491c3d3b, - (q31_t)0x491714d8, (q31_t)0x4911ec47, - (q31_t)0x490cc38a, (q31_t)0x49079aa0, (q31_t)0x49027188, (q31_t)0x48fd4844, (q31_t)0x48f81ed2, (q31_t)0x48f2f534, - (q31_t)0x48edcb68, (q31_t)0x48e8a170, - (q31_t)0x48e3774a, (q31_t)0x48de4cf8, (q31_t)0x48d92278, (q31_t)0x48d3f7cc, (q31_t)0x48ceccf3, (q31_t)0x48c9a1ed, - (q31_t)0x48c476b9, (q31_t)0x48bf4b59, - (q31_t)0x48ba1fcd, (q31_t)0x48b4f413, (q31_t)0x48afc82c, (q31_t)0x48aa9c19, (q31_t)0x48a56fd9, (q31_t)0x48a0436c, - (q31_t)0x489b16d2, (q31_t)0x4895ea0b, - (q31_t)0x4890bd18, (q31_t)0x488b8ff8, (q31_t)0x488662ab, (q31_t)0x48813531, (q31_t)0x487c078b, (q31_t)0x4876d9b8, - (q31_t)0x4871abb8, (q31_t)0x486c7d8c, - (q31_t)0x48674f33, (q31_t)0x486220ad, (q31_t)0x485cf1fa, (q31_t)0x4857c31b, (q31_t)0x48529410, (q31_t)0x484d64d7, - (q31_t)0x48483572, (q31_t)0x484305e1, - (q31_t)0x483dd623, (q31_t)0x4838a638, (q31_t)0x48337621, (q31_t)0x482e45dd, (q31_t)0x4829156d, (q31_t)0x4823e4d0, - (q31_t)0x481eb407, (q31_t)0x48198311, - (q31_t)0x481451ef, (q31_t)0x480f20a0, (q31_t)0x4809ef25, (q31_t)0x4804bd7e, (q31_t)0x47ff8baa, (q31_t)0x47fa59a9, - (q31_t)0x47f5277d, (q31_t)0x47eff523, - (q31_t)0x47eac29e, (q31_t)0x47e58fec, (q31_t)0x47e05d0e, (q31_t)0x47db2a03, (q31_t)0x47d5f6cc, (q31_t)0x47d0c369, - (q31_t)0x47cb8fd9, (q31_t)0x47c65c1d, - (q31_t)0x47c12835, (q31_t)0x47bbf421, (q31_t)0x47b6bfe0, (q31_t)0x47b18b74, (q31_t)0x47ac56da, (q31_t)0x47a72215, - (q31_t)0x47a1ed24, (q31_t)0x479cb806, - (q31_t)0x479782bc, (q31_t)0x47924d46, (q31_t)0x478d17a4, (q31_t)0x4787e1d6, (q31_t)0x4782abdb, (q31_t)0x477d75b5, - (q31_t)0x47783f62, (q31_t)0x477308e3, - (q31_t)0x476dd239, (q31_t)0x47689b62, (q31_t)0x4763645f, (q31_t)0x475e2d30, (q31_t)0x4758f5d5, (q31_t)0x4753be4e, - (q31_t)0x474e869b, (q31_t)0x47494ebc, - (q31_t)0x474416b1, (q31_t)0x473ede7a, (q31_t)0x4739a617, (q31_t)0x47346d89, (q31_t)0x472f34ce, (q31_t)0x4729fbe7, - (q31_t)0x4724c2d5, (q31_t)0x471f8996, - (q31_t)0x471a502c, (q31_t)0x47151696, (q31_t)0x470fdcd4, (q31_t)0x470aa2e6, (q31_t)0x470568cd, (q31_t)0x47002e87, - (q31_t)0x46faf416, (q31_t)0x46f5b979, - (q31_t)0x46f07eb0, (q31_t)0x46eb43bc, (q31_t)0x46e6089b, (q31_t)0x46e0cd4f, (q31_t)0x46db91d8, (q31_t)0x46d65634, - (q31_t)0x46d11a65, (q31_t)0x46cbde6a, - (q31_t)0x46c6a244, (q31_t)0x46c165f1, (q31_t)0x46bc2974, (q31_t)0x46b6ecca, (q31_t)0x46b1aff5, (q31_t)0x46ac72f4, - (q31_t)0x46a735c8, (q31_t)0x46a1f870, - (q31_t)0x469cbaed, (q31_t)0x46977d3e, (q31_t)0x46923f63, (q31_t)0x468d015d, (q31_t)0x4687c32c, (q31_t)0x468284cf, - (q31_t)0x467d4646, (q31_t)0x46780792, - (q31_t)0x4672c8b3, (q31_t)0x466d89a8, (q31_t)0x46684a71, (q31_t)0x46630b0f, (q31_t)0x465dcb82, (q31_t)0x46588bc9, - (q31_t)0x46534be5, (q31_t)0x464e0bd6, - (q31_t)0x4648cb9b, (q31_t)0x46438b35, (q31_t)0x463e4aa3, (q31_t)0x463909e7, (q31_t)0x4633c8fe, (q31_t)0x462e87eb, - (q31_t)0x462946ac, (q31_t)0x46240542, - (q31_t)0x461ec3ad, (q31_t)0x461981ec, (q31_t)0x46144001, (q31_t)0x460efde9, (q31_t)0x4609bba7, (q31_t)0x4604793a, - (q31_t)0x45ff36a1, (q31_t)0x45f9f3dd, - (q31_t)0x45f4b0ee, (q31_t)0x45ef6dd4, (q31_t)0x45ea2a8f, (q31_t)0x45e4e71f, (q31_t)0x45dfa383, (q31_t)0x45da5fbc, - (q31_t)0x45d51bcb, (q31_t)0x45cfd7ae, - (q31_t)0x45ca9366, (q31_t)0x45c54ef3, (q31_t)0x45c00a55, (q31_t)0x45bac58c, (q31_t)0x45b58098, (q31_t)0x45b03b79, - (q31_t)0x45aaf630, (q31_t)0x45a5b0bb, - (q31_t)0x45a06b1b, (q31_t)0x459b2550, (q31_t)0x4595df5a, (q31_t)0x45909939, (q31_t)0x458b52ee, (q31_t)0x45860c77, - (q31_t)0x4580c5d6, (q31_t)0x457b7f0a, - (q31_t)0x45763813, (q31_t)0x4570f0f1, (q31_t)0x456ba9a4, (q31_t)0x4566622c, (q31_t)0x45611a8a, (q31_t)0x455bd2bc, - (q31_t)0x45568ac4, (q31_t)0x455142a2, - (q31_t)0x454bfa54, (q31_t)0x4546b1dc, (q31_t)0x45416939, (q31_t)0x453c206b, (q31_t)0x4536d773, (q31_t)0x45318e4f, - (q31_t)0x452c4502, (q31_t)0x4526fb89, - (q31_t)0x4521b1e6, (q31_t)0x451c6818, (q31_t)0x45171e20, (q31_t)0x4511d3fd, (q31_t)0x450c89af, (q31_t)0x45073f37, - (q31_t)0x4501f494, (q31_t)0x44fca9c6, - (q31_t)0x44f75ecf, (q31_t)0x44f213ac, (q31_t)0x44ecc85f, (q31_t)0x44e77ce7, (q31_t)0x44e23145, (q31_t)0x44dce579, - (q31_t)0x44d79982, (q31_t)0x44d24d60, - (q31_t)0x44cd0114, (q31_t)0x44c7b49e, (q31_t)0x44c267fd, (q31_t)0x44bd1b32, (q31_t)0x44b7ce3c, (q31_t)0x44b2811c, - (q31_t)0x44ad33d2, (q31_t)0x44a7e65d, - (q31_t)0x44a298be, (q31_t)0x449d4af5, (q31_t)0x4497fd01, (q31_t)0x4492aee3, (q31_t)0x448d609b, (q31_t)0x44881228, - (q31_t)0x4482c38b, (q31_t)0x447d74c4, - (q31_t)0x447825d2, (q31_t)0x4472d6b7, (q31_t)0x446d8771, (q31_t)0x44683801, (q31_t)0x4462e866, (q31_t)0x445d98a2, - (q31_t)0x445848b3, (q31_t)0x4452f89b, - (q31_t)0x444da858, (q31_t)0x444857ea, (q31_t)0x44430753, (q31_t)0x443db692, (q31_t)0x443865a7, (q31_t)0x44331491, - (q31_t)0x442dc351, (q31_t)0x442871e8, - (q31_t)0x44232054, (q31_t)0x441dce96, (q31_t)0x44187caf, (q31_t)0x44132a9d, (q31_t)0x440dd861, (q31_t)0x440885fc, - (q31_t)0x4403336c, (q31_t)0x43fde0b2, - (q31_t)0x43f88dcf, (q31_t)0x43f33ac1, (q31_t)0x43ede78a, (q31_t)0x43e89429, (q31_t)0x43e3409d, (q31_t)0x43ddece8, - (q31_t)0x43d8990a, (q31_t)0x43d34501, - (q31_t)0x43cdf0ce, (q31_t)0x43c89c72, (q31_t)0x43c347eb, (q31_t)0x43bdf33b, (q31_t)0x43b89e62, (q31_t)0x43b3495e, - (q31_t)0x43adf431, (q31_t)0x43a89ed9, - (q31_t)0x43a34959, (q31_t)0x439df3ae, (q31_t)0x43989dda, (q31_t)0x439347dc, (q31_t)0x438df1b4, (q31_t)0x43889b63, - (q31_t)0x438344e8, (q31_t)0x437dee43, - (q31_t)0x43789775, (q31_t)0x4373407d, (q31_t)0x436de95b, (q31_t)0x43689210, (q31_t)0x43633a9c, (q31_t)0x435de2fd, - (q31_t)0x43588b36, (q31_t)0x43533344, - (q31_t)0x434ddb29, (q31_t)0x434882e5, (q31_t)0x43432a77, (q31_t)0x433dd1e0, (q31_t)0x4338791f, (q31_t)0x43332035, - (q31_t)0x432dc721, (q31_t)0x43286de4, - (q31_t)0x4323147d, (q31_t)0x431dbaed, (q31_t)0x43186133, (q31_t)0x43130751, (q31_t)0x430dad44, (q31_t)0x4308530f, - (q31_t)0x4302f8b0, (q31_t)0x42fd9e28, - (q31_t)0x42f84376, (q31_t)0x42f2e89b, (q31_t)0x42ed8d97, (q31_t)0x42e83269, (q31_t)0x42e2d713, (q31_t)0x42dd7b93, - (q31_t)0x42d81fe9, (q31_t)0x42d2c417, - (q31_t)0x42cd681b, (q31_t)0x42c80bf6, (q31_t)0x42c2afa8, (q31_t)0x42bd5331, (q31_t)0x42b7f690, (q31_t)0x42b299c7, - (q31_t)0x42ad3cd4, (q31_t)0x42a7dfb8, - (q31_t)0x42a28273, (q31_t)0x429d2505, (q31_t)0x4297c76e, (q31_t)0x429269ae, (q31_t)0x428d0bc4, (q31_t)0x4287adb2, - (q31_t)0x42824f76, (q31_t)0x427cf112, - (q31_t)0x42779285, (q31_t)0x427233ce, (q31_t)0x426cd4ef, (q31_t)0x426775e6, (q31_t)0x426216b5, (q31_t)0x425cb75a, - (q31_t)0x425757d7, (q31_t)0x4251f82b, - (q31_t)0x424c9856, (q31_t)0x42473858, (q31_t)0x4241d831, (q31_t)0x423c77e1, (q31_t)0x42371769, (q31_t)0x4231b6c7, - (q31_t)0x422c55fd, (q31_t)0x4226f50a, - (q31_t)0x422193ee, (q31_t)0x421c32a9, (q31_t)0x4216d13c, (q31_t)0x42116fa5, (q31_t)0x420c0de6, (q31_t)0x4206abfe, - (q31_t)0x420149ee, (q31_t)0x41fbe7b5, - (q31_t)0x41f68553, (q31_t)0x41f122c8, (q31_t)0x41ebc015, (q31_t)0x41e65d39, (q31_t)0x41e0fa35, (q31_t)0x41db9707, - (q31_t)0x41d633b1, (q31_t)0x41d0d033, - (q31_t)0x41cb6c8c, (q31_t)0x41c608bc, (q31_t)0x41c0a4c4, (q31_t)0x41bb40a3, (q31_t)0x41b5dc5a, (q31_t)0x41b077e8, - (q31_t)0x41ab134e, (q31_t)0x41a5ae8b, - (q31_t)0x41a049a0, (q31_t)0x419ae48c, (q31_t)0x41957f4f, (q31_t)0x419019eb, (q31_t)0x418ab45d, (q31_t)0x41854ea8, - (q31_t)0x417fe8ca, (q31_t)0x417a82c3, - (q31_t)0x41751c94, (q31_t)0x416fb63d, (q31_t)0x416a4fbd, (q31_t)0x4164e916, (q31_t)0x415f8245, (q31_t)0x415a1b4d, - (q31_t)0x4154b42c, (q31_t)0x414f4ce2, - (q31_t)0x4149e571, (q31_t)0x41447dd7, (q31_t)0x413f1615, (q31_t)0x4139ae2b, (q31_t)0x41344618, (q31_t)0x412edddd, - (q31_t)0x4129757b, (q31_t)0x41240cef, - (q31_t)0x411ea43c, (q31_t)0x41193b61, (q31_t)0x4113d25d, (q31_t)0x410e6931, (q31_t)0x4108ffdd, (q31_t)0x41039661, - (q31_t)0x40fe2cbd, (q31_t)0x40f8c2f1, - (q31_t)0x40f358fc, (q31_t)0x40edeee0, (q31_t)0x40e8849b, (q31_t)0x40e31a2f, (q31_t)0x40ddaf9b, (q31_t)0x40d844de, - (q31_t)0x40d2d9f9, (q31_t)0x40cd6eed, - (q31_t)0x40c803b8, (q31_t)0x40c2985c, (q31_t)0x40bd2cd8, (q31_t)0x40b7c12b, (q31_t)0x40b25557, (q31_t)0x40ace95b, - (q31_t)0x40a77d37, (q31_t)0x40a210eb, - (q31_t)0x409ca477, (q31_t)0x409737dc, (q31_t)0x4091cb18, (q31_t)0x408c5e2d, (q31_t)0x4086f11a, (q31_t)0x408183df, - (q31_t)0x407c167c, (q31_t)0x4076a8f1, - (q31_t)0x40713b3f, (q31_t)0x406bcd65, (q31_t)0x40665f63, (q31_t)0x4060f13a, (q31_t)0x405b82e9, (q31_t)0x40561470, - (q31_t)0x4050a5cf, (q31_t)0x404b3707, - (q31_t)0x4045c817, (q31_t)0x404058ff, (q31_t)0x403ae9c0, (q31_t)0x40357a59, (q31_t)0x40300acb, (q31_t)0x402a9b15, - (q31_t)0x40252b37, (q31_t)0x401fbb32, - (q31_t)0x401a4b05, (q31_t)0x4014dab1, (q31_t)0x400f6a35, (q31_t)0x4009f992, (q31_t)0x400488c7, (q31_t)0x3fff17d5, - (q31_t)0x3ff9a6bb, (q31_t)0x3ff4357a, - (q31_t)0x3feec411, (q31_t)0x3fe95281, (q31_t)0x3fe3e0c9, (q31_t)0x3fde6eeb, (q31_t)0x3fd8fce4, (q31_t)0x3fd38ab6, - (q31_t)0x3fce1861, (q31_t)0x3fc8a5e5, - (q31_t)0x3fc33341, (q31_t)0x3fbdc076, (q31_t)0x3fb84d83, (q31_t)0x3fb2da6a, (q31_t)0x3fad6729, (q31_t)0x3fa7f3c0, - (q31_t)0x3fa28031, (q31_t)0x3f9d0c7a, - (q31_t)0x3f97989c, (q31_t)0x3f922496, (q31_t)0x3f8cb06a, (q31_t)0x3f873c16, (q31_t)0x3f81c79b, (q31_t)0x3f7c52f9, - (q31_t)0x3f76de30, (q31_t)0x3f71693f, - (q31_t)0x3f6bf428, (q31_t)0x3f667ee9, (q31_t)0x3f610983, (q31_t)0x3f5b93f6, (q31_t)0x3f561e42, (q31_t)0x3f50a867, - (q31_t)0x3f4b3265, (q31_t)0x3f45bc3c, - (q31_t)0x3f4045ec, (q31_t)0x3f3acf75, (q31_t)0x3f3558d7, (q31_t)0x3f2fe211, (q31_t)0x3f2a6b25, (q31_t)0x3f24f412, - (q31_t)0x3f1f7cd8, (q31_t)0x3f1a0577, - (q31_t)0x3f148def, (q31_t)0x3f0f1640, (q31_t)0x3f099e6b, (q31_t)0x3f04266e, (q31_t)0x3efeae4a, (q31_t)0x3ef93600, - (q31_t)0x3ef3bd8f, (q31_t)0x3eee44f7, - (q31_t)0x3ee8cc38, (q31_t)0x3ee35352, (q31_t)0x3eddda46, (q31_t)0x3ed86113, (q31_t)0x3ed2e7b9, (q31_t)0x3ecd6e38, - (q31_t)0x3ec7f491, (q31_t)0x3ec27ac2, - (q31_t)0x3ebd00cd, (q31_t)0x3eb786b2, (q31_t)0x3eb20c6f, (q31_t)0x3eac9206, (q31_t)0x3ea71777, (q31_t)0x3ea19cc1, - (q31_t)0x3e9c21e4, (q31_t)0x3e96a6e0, - (q31_t)0x3e912bb6, (q31_t)0x3e8bb065, (q31_t)0x3e8634ee, (q31_t)0x3e80b950, (q31_t)0x3e7b3d8c, (q31_t)0x3e75c1a1, - (q31_t)0x3e70458f, (q31_t)0x3e6ac957, - (q31_t)0x3e654cf8, (q31_t)0x3e5fd073, (q31_t)0x3e5a53c8, (q31_t)0x3e54d6f6, (q31_t)0x3e4f59fe, (q31_t)0x3e49dcdf, - (q31_t)0x3e445f99, (q31_t)0x3e3ee22e, - (q31_t)0x3e39649c, (q31_t)0x3e33e6e3, (q31_t)0x3e2e6904, (q31_t)0x3e28eaff, (q31_t)0x3e236cd4, (q31_t)0x3e1dee82, - (q31_t)0x3e18700a, (q31_t)0x3e12f16b, - (q31_t)0x3e0d72a6, (q31_t)0x3e07f3bb, (q31_t)0x3e0274aa, (q31_t)0x3dfcf572, (q31_t)0x3df77615, (q31_t)0x3df1f691, - (q31_t)0x3dec76e6, (q31_t)0x3de6f716, - (q31_t)0x3de1771f, (q31_t)0x3ddbf703, (q31_t)0x3dd676c0, (q31_t)0x3dd0f656, (q31_t)0x3dcb75c7, (q31_t)0x3dc5f512, - (q31_t)0x3dc07436, (q31_t)0x3dbaf335, - (q31_t)0x3db5720d, (q31_t)0x3daff0c0, (q31_t)0x3daa6f4c, (q31_t)0x3da4edb2, (q31_t)0x3d9f6bf2, (q31_t)0x3d99ea0d, - (q31_t)0x3d946801, (q31_t)0x3d8ee5cf, - (q31_t)0x3d896377, (q31_t)0x3d83e0f9, (q31_t)0x3d7e5e56, (q31_t)0x3d78db8c, (q31_t)0x3d73589d, (q31_t)0x3d6dd587, - (q31_t)0x3d68524c, (q31_t)0x3d62ceeb, - (q31_t)0x3d5d4b64, (q31_t)0x3d57c7b7, (q31_t)0x3d5243e4, (q31_t)0x3d4cbfeb, (q31_t)0x3d473bcd, (q31_t)0x3d41b789, - (q31_t)0x3d3c331f, (q31_t)0x3d36ae8f, - (q31_t)0x3d3129da, (q31_t)0x3d2ba4fe, (q31_t)0x3d261ffd, (q31_t)0x3d209ad7, (q31_t)0x3d1b158a, (q31_t)0x3d159018, - (q31_t)0x3d100a80, (q31_t)0x3d0a84c3, - (q31_t)0x3d04fee0, (q31_t)0x3cff78d7, (q31_t)0x3cf9f2a9, (q31_t)0x3cf46c55, (q31_t)0x3ceee5db, (q31_t)0x3ce95f3c, - (q31_t)0x3ce3d877, (q31_t)0x3cde518d, - (q31_t)0x3cd8ca7d, (q31_t)0x3cd34347, (q31_t)0x3ccdbbed, (q31_t)0x3cc8346c, (q31_t)0x3cc2acc6, (q31_t)0x3cbd24fb, - (q31_t)0x3cb79d0a, (q31_t)0x3cb214f4, - (q31_t)0x3cac8cb8, (q31_t)0x3ca70457, (q31_t)0x3ca17bd0, (q31_t)0x3c9bf324, (q31_t)0x3c966a53, (q31_t)0x3c90e15c, - (q31_t)0x3c8b5840, (q31_t)0x3c85cefe, - (q31_t)0x3c804598, (q31_t)0x3c7abc0c, (q31_t)0x3c75325a, (q31_t)0x3c6fa883, (q31_t)0x3c6a1e87, (q31_t)0x3c649466, - (q31_t)0x3c5f0a20, (q31_t)0x3c597fb4, - (q31_t)0x3c53f523, (q31_t)0x3c4e6a6d, (q31_t)0x3c48df91, (q31_t)0x3c435491, (q31_t)0x3c3dc96b, (q31_t)0x3c383e20, - (q31_t)0x3c32b2b0, (q31_t)0x3c2d271b, - (q31_t)0x3c279b61, (q31_t)0x3c220f81, (q31_t)0x3c1c837d, (q31_t)0x3c16f753, (q31_t)0x3c116b04, (q31_t)0x3c0bde91, - (q31_t)0x3c0651f8, (q31_t)0x3c00c53a, - (q31_t)0x3bfb3857, (q31_t)0x3bf5ab50, (q31_t)0x3bf01e23, (q31_t)0x3bea90d1, (q31_t)0x3be5035a, (q31_t)0x3bdf75bf, - (q31_t)0x3bd9e7fe, (q31_t)0x3bd45a19, - (q31_t)0x3bcecc0e, (q31_t)0x3bc93ddf, (q31_t)0x3bc3af8b, (q31_t)0x3bbe2112, (q31_t)0x3bb89274, (q31_t)0x3bb303b1, - (q31_t)0x3bad74c9, (q31_t)0x3ba7e5bd, - (q31_t)0x3ba2568c, (q31_t)0x3b9cc736, (q31_t)0x3b9737bb, (q31_t)0x3b91a81c, (q31_t)0x3b8c1857, (q31_t)0x3b86886e, - (q31_t)0x3b80f861, (q31_t)0x3b7b682e, - (q31_t)0x3b75d7d7, (q31_t)0x3b70475c, (q31_t)0x3b6ab6bb, (q31_t)0x3b6525f6, (q31_t)0x3b5f950c, (q31_t)0x3b5a03fe, - (q31_t)0x3b5472cb, (q31_t)0x3b4ee173, - (q31_t)0x3b494ff7, (q31_t)0x3b43be57, (q31_t)0x3b3e2c91, (q31_t)0x3b389aa8, (q31_t)0x3b330899, (q31_t)0x3b2d7666, - (q31_t)0x3b27e40f, (q31_t)0x3b225193, - (q31_t)0x3b1cbef3, (q31_t)0x3b172c2e, (q31_t)0x3b119945, (q31_t)0x3b0c0637, (q31_t)0x3b067305, (q31_t)0x3b00dfaf, - (q31_t)0x3afb4c34, (q31_t)0x3af5b894, - (q31_t)0x3af024d1, (q31_t)0x3aea90e9, (q31_t)0x3ae4fcdc, (q31_t)0x3adf68ac, (q31_t)0x3ad9d457, (q31_t)0x3ad43fdd, - (q31_t)0x3aceab40, (q31_t)0x3ac9167e, - (q31_t)0x3ac38198, (q31_t)0x3abdec8d, (q31_t)0x3ab8575f, (q31_t)0x3ab2c20c, (q31_t)0x3aad2c95, (q31_t)0x3aa796fa, - (q31_t)0x3aa2013a, (q31_t)0x3a9c6b57, - (q31_t)0x3a96d54f, (q31_t)0x3a913f23, (q31_t)0x3a8ba8d3, (q31_t)0x3a86125f, (q31_t)0x3a807bc7, (q31_t)0x3a7ae50a, - (q31_t)0x3a754e2a, (q31_t)0x3a6fb726, - (q31_t)0x3a6a1ffd, (q31_t)0x3a6488b1, (q31_t)0x3a5ef140, (q31_t)0x3a5959ab, (q31_t)0x3a53c1f3, (q31_t)0x3a4e2a16, - (q31_t)0x3a489216, (q31_t)0x3a42f9f2, - (q31_t)0x3a3d61a9, (q31_t)0x3a37c93d, (q31_t)0x3a3230ad, (q31_t)0x3a2c97f9, (q31_t)0x3a26ff21, (q31_t)0x3a216625, - (q31_t)0x3a1bcd05, (q31_t)0x3a1633c1, - (q31_t)0x3a109a5a, (q31_t)0x3a0b00cf, (q31_t)0x3a056720, (q31_t)0x39ffcd4d, (q31_t)0x39fa3356, (q31_t)0x39f4993c, - (q31_t)0x39eefefe, (q31_t)0x39e9649c, - (q31_t)0x39e3ca17, (q31_t)0x39de2f6d, (q31_t)0x39d894a0, (q31_t)0x39d2f9b0, (q31_t)0x39cd5e9b, (q31_t)0x39c7c363, - (q31_t)0x39c22808, (q31_t)0x39bc8c89, - (q31_t)0x39b6f0e6, (q31_t)0x39b1551f, (q31_t)0x39abb935, (q31_t)0x39a61d28, (q31_t)0x39a080f6, (q31_t)0x399ae4a2, - (q31_t)0x39954829, (q31_t)0x398fab8e, - (q31_t)0x398a0ece, (q31_t)0x398471ec, (q31_t)0x397ed4e5, (q31_t)0x397937bc, (q31_t)0x39739a6e, (q31_t)0x396dfcfe, - (q31_t)0x39685f6a, (q31_t)0x3962c1b2, - (q31_t)0x395d23d7, (q31_t)0x395785d9, (q31_t)0x3951e7b8, (q31_t)0x394c4973, (q31_t)0x3946ab0a, (q31_t)0x39410c7f, - (q31_t)0x393b6dd0, (q31_t)0x3935cefd, - (q31_t)0x39303008, (q31_t)0x392a90ef, (q31_t)0x3924f1b3, (q31_t)0x391f5254, (q31_t)0x3919b2d1, (q31_t)0x3914132b, - (q31_t)0x390e7362, (q31_t)0x3908d376, - (q31_t)0x39033367, (q31_t)0x38fd9334, (q31_t)0x38f7f2de, (q31_t)0x38f25266, (q31_t)0x38ecb1ca, (q31_t)0x38e7110a, - (q31_t)0x38e17028, (q31_t)0x38dbcf23, - (q31_t)0x38d62dfb, (q31_t)0x38d08caf, (q31_t)0x38caeb41, (q31_t)0x38c549af, (q31_t)0x38bfa7fb, (q31_t)0x38ba0623, - (q31_t)0x38b46429, (q31_t)0x38aec20b, - (q31_t)0x38a91fcb, (q31_t)0x38a37d67, (q31_t)0x389ddae1, (q31_t)0x38983838, (q31_t)0x3892956c, (q31_t)0x388cf27d, - (q31_t)0x38874f6b, (q31_t)0x3881ac36, - (q31_t)0x387c08de, (q31_t)0x38766564, (q31_t)0x3870c1c6, (q31_t)0x386b1e06, (q31_t)0x38657a23, (q31_t)0x385fd61d, - (q31_t)0x385a31f5, (q31_t)0x38548daa, - (q31_t)0x384ee93b, (q31_t)0x384944ab, (q31_t)0x38439ff7, (q31_t)0x383dfb21, (q31_t)0x38385628, (q31_t)0x3832b10d, - (q31_t)0x382d0bce, (q31_t)0x3827666d, - (q31_t)0x3821c0ea, (q31_t)0x381c1b44, (q31_t)0x3816757b, (q31_t)0x3810cf90, (q31_t)0x380b2982, (q31_t)0x38058351, - (q31_t)0x37ffdcfe, (q31_t)0x37fa3688, - (q31_t)0x37f48ff0, (q31_t)0x37eee936, (q31_t)0x37e94259, (q31_t)0x37e39b59, (q31_t)0x37ddf437, (q31_t)0x37d84cf2, - (q31_t)0x37d2a58b, (q31_t)0x37ccfe02, - (q31_t)0x37c75656, (q31_t)0x37c1ae87, (q31_t)0x37bc0697, (q31_t)0x37b65e84, (q31_t)0x37b0b64e, (q31_t)0x37ab0df6, - (q31_t)0x37a5657c, (q31_t)0x379fbce0, - (q31_t)0x379a1421, (q31_t)0x37946b40, (q31_t)0x378ec23d, (q31_t)0x37891917, (q31_t)0x37836fcf, (q31_t)0x377dc665, - (q31_t)0x37781cd9, (q31_t)0x3772732a, - (q31_t)0x376cc959, (q31_t)0x37671f66, (q31_t)0x37617551, (q31_t)0x375bcb1a, (q31_t)0x375620c1, (q31_t)0x37507645, - (q31_t)0x374acba7, (q31_t)0x374520e7, - (q31_t)0x373f7606, (q31_t)0x3739cb02, (q31_t)0x37341fdc, (q31_t)0x372e7493, (q31_t)0x3728c929, (q31_t)0x37231d9d, - (q31_t)0x371d71ef, (q31_t)0x3717c61f, - (q31_t)0x37121a2d, (q31_t)0x370c6e19, (q31_t)0x3706c1e2, (q31_t)0x3701158a, (q31_t)0x36fb6910, (q31_t)0x36f5bc75, - (q31_t)0x36f00fb7, (q31_t)0x36ea62d7, - (q31_t)0x36e4b5d6, (q31_t)0x36df08b2, (q31_t)0x36d95b6d, (q31_t)0x36d3ae06, (q31_t)0x36ce007d, (q31_t)0x36c852d2, - (q31_t)0x36c2a506, (q31_t)0x36bcf718, - (q31_t)0x36b74908, (q31_t)0x36b19ad6, (q31_t)0x36abec82, (q31_t)0x36a63e0d, (q31_t)0x36a08f76, (q31_t)0x369ae0bd, - (q31_t)0x369531e3, (q31_t)0x368f82e7, - (q31_t)0x3689d3c9, (q31_t)0x3684248a, (q31_t)0x367e7529, (q31_t)0x3678c5a7, (q31_t)0x36731602, (q31_t)0x366d663d, - (q31_t)0x3667b655, (q31_t)0x3662064c, - (q31_t)0x365c5622, (q31_t)0x3656a5d6, (q31_t)0x3650f569, (q31_t)0x364b44da, (q31_t)0x36459429, (q31_t)0x363fe357, - (q31_t)0x363a3264, (q31_t)0x3634814f, - (q31_t)0x362ed019, (q31_t)0x36291ec1, (q31_t)0x36236d48, (q31_t)0x361dbbad, (q31_t)0x361809f1, (q31_t)0x36125814, - (q31_t)0x360ca615, (q31_t)0x3606f3f5, - (q31_t)0x360141b4, (q31_t)0x35fb8f52, (q31_t)0x35f5dcce, (q31_t)0x35f02a28, (q31_t)0x35ea7762, (q31_t)0x35e4c47a, - (q31_t)0x35df1171, (q31_t)0x35d95e47, - (q31_t)0x35d3aafc, (q31_t)0x35cdf78f, (q31_t)0x35c84401, (q31_t)0x35c29052, (q31_t)0x35bcdc82, (q31_t)0x35b72891, - (q31_t)0x35b1747e, (q31_t)0x35abc04b, - (q31_t)0x35a60bf6, (q31_t)0x35a05781, (q31_t)0x359aa2ea, (q31_t)0x3594ee32, (q31_t)0x358f3959, (q31_t)0x3589845f, - (q31_t)0x3583cf44, (q31_t)0x357e1a08, - (q31_t)0x357864ab, (q31_t)0x3572af2d, (q31_t)0x356cf98e, (q31_t)0x356743ce, (q31_t)0x35618ded, (q31_t)0x355bd7eb, - (q31_t)0x355621c9, (q31_t)0x35506b85, - (q31_t)0x354ab520, (q31_t)0x3544fe9b, (q31_t)0x353f47f5, (q31_t)0x3539912e, (q31_t)0x3533da46, (q31_t)0x352e233d, - (q31_t)0x35286c14, (q31_t)0x3522b4c9, - (q31_t)0x351cfd5e, (q31_t)0x351745d2, (q31_t)0x35118e26, (q31_t)0x350bd658, (q31_t)0x35061e6a, (q31_t)0x3500665c, - (q31_t)0x34faae2c, (q31_t)0x34f4f5dc, - (q31_t)0x34ef3d6b, (q31_t)0x34e984da, (q31_t)0x34e3cc28, (q31_t)0x34de1355, (q31_t)0x34d85a62, (q31_t)0x34d2a14e, - (q31_t)0x34cce819, (q31_t)0x34c72ec4, - (q31_t)0x34c1754e, (q31_t)0x34bbbbb8, (q31_t)0x34b60202, (q31_t)0x34b0482a, (q31_t)0x34aa8e33, (q31_t)0x34a4d41a, - (q31_t)0x349f19e2, (q31_t)0x34995f88, - (q31_t)0x3493a50f, (q31_t)0x348dea75, (q31_t)0x34882fba, (q31_t)0x348274e0, (q31_t)0x347cb9e4, (q31_t)0x3476fec9, - (q31_t)0x3471438d, (q31_t)0x346b8830, - (q31_t)0x3465ccb4, (q31_t)0x34601117, (q31_t)0x345a5559, (q31_t)0x3454997c, (q31_t)0x344edd7e, (q31_t)0x34492160, - (q31_t)0x34436521, (q31_t)0x343da8c3, - (q31_t)0x3437ec44, (q31_t)0x34322fa5, (q31_t)0x342c72e6, (q31_t)0x3426b606, (q31_t)0x3420f907, (q31_t)0x341b3be7, - (q31_t)0x34157ea7, (q31_t)0x340fc147, - (q31_t)0x340a03c7, (q31_t)0x34044626, (q31_t)0x33fe8866, (q31_t)0x33f8ca86, (q31_t)0x33f30c85, (q31_t)0x33ed4e65, - (q31_t)0x33e79024, (q31_t)0x33e1d1c4, - (q31_t)0x33dc1343, (q31_t)0x33d654a2, (q31_t)0x33d095e2, (q31_t)0x33cad701, (q31_t)0x33c51801, (q31_t)0x33bf58e1, - (q31_t)0x33b999a0, (q31_t)0x33b3da40, - (q31_t)0x33ae1ac0, (q31_t)0x33a85b20, (q31_t)0x33a29b60, (q31_t)0x339cdb81, (q31_t)0x33971b81, (q31_t)0x33915b62, - (q31_t)0x338b9b22, (q31_t)0x3385dac4, - (q31_t)0x33801a45, (q31_t)0x337a59a6, (q31_t)0x337498e8, (q31_t)0x336ed80a, (q31_t)0x3369170c, (q31_t)0x336355ef, - (q31_t)0x335d94b2, (q31_t)0x3357d355, - (q31_t)0x335211d8, (q31_t)0x334c503c, (q31_t)0x33468e80, (q31_t)0x3340cca5, (q31_t)0x333b0aaa, (q31_t)0x3335488f, - (q31_t)0x332f8655, (q31_t)0x3329c3fb, - (q31_t)0x33240182, (q31_t)0x331e3ee9, (q31_t)0x33187c31, (q31_t)0x3312b959, (q31_t)0x330cf661, (q31_t)0x3307334a, - (q31_t)0x33017014, (q31_t)0x32fbacbe, - (q31_t)0x32f5e948, (q31_t)0x32f025b4, (q31_t)0x32ea61ff, (q31_t)0x32e49e2c, (q31_t)0x32deda39, (q31_t)0x32d91626, - (q31_t)0x32d351f5, (q31_t)0x32cd8da4, - (q31_t)0x32c7c933, (q31_t)0x32c204a3, (q31_t)0x32bc3ff4, (q31_t)0x32b67b26, (q31_t)0x32b0b638, (q31_t)0x32aaf12b, - (q31_t)0x32a52bff, (q31_t)0x329f66b4, - (q31_t)0x3299a149, (q31_t)0x3293dbbf, (q31_t)0x328e1616, (q31_t)0x3288504e, (q31_t)0x32828a67, (q31_t)0x327cc460, - (q31_t)0x3276fe3a, (q31_t)0x327137f6, - (q31_t)0x326b7192, (q31_t)0x3265ab0f, (q31_t)0x325fe46c, (q31_t)0x325a1dab, (q31_t)0x325456cb, (q31_t)0x324e8fcc, - (q31_t)0x3248c8ad, (q31_t)0x32430170, - (q31_t)0x323d3a14, (q31_t)0x32377298, (q31_t)0x3231aafe, (q31_t)0x322be345, (q31_t)0x32261b6c, (q31_t)0x32205375, - (q31_t)0x321a8b5f, (q31_t)0x3214c32a, - (q31_t)0x320efad6, (q31_t)0x32093263, (q31_t)0x320369d2, (q31_t)0x31fda121, (q31_t)0x31f7d852, (q31_t)0x31f20f64, - (q31_t)0x31ec4657, (q31_t)0x31e67d2b, - (q31_t)0x31e0b3e0, (q31_t)0x31daea77, (q31_t)0x31d520ef, (q31_t)0x31cf5748, (q31_t)0x31c98d83, (q31_t)0x31c3c39e, - (q31_t)0x31bdf99b, (q31_t)0x31b82f7a, - (q31_t)0x31b2653a, (q31_t)0x31ac9adb, (q31_t)0x31a6d05d, (q31_t)0x31a105c1, (q31_t)0x319b3b06, (q31_t)0x3195702d, - (q31_t)0x318fa535, (q31_t)0x3189da1e, - (q31_t)0x31840ee9, (q31_t)0x317e4395, (q31_t)0x31787823, (q31_t)0x3172ac92, (q31_t)0x316ce0e3, (q31_t)0x31671515, - (q31_t)0x31614929, (q31_t)0x315b7d1e, - (q31_t)0x3155b0f5, (q31_t)0x314fe4ae, (q31_t)0x314a1848, (q31_t)0x31444bc3, (q31_t)0x313e7f21, (q31_t)0x3138b260, - (q31_t)0x3132e580, (q31_t)0x312d1882, - (q31_t)0x31274b66, (q31_t)0x31217e2c, (q31_t)0x311bb0d3, (q31_t)0x3115e35c, (q31_t)0x311015c6, (q31_t)0x310a4813, - (q31_t)0x31047a41, (q31_t)0x30feac51, - (q31_t)0x30f8de42, (q31_t)0x30f31016, (q31_t)0x30ed41cb, (q31_t)0x30e77362, (q31_t)0x30e1a4db, (q31_t)0x30dbd636, - (q31_t)0x30d60772, (q31_t)0x30d03891, - (q31_t)0x30ca6991, (q31_t)0x30c49a74, (q31_t)0x30becb38, (q31_t)0x30b8fbde, (q31_t)0x30b32c66, (q31_t)0x30ad5cd0, - (q31_t)0x30a78d1c, (q31_t)0x30a1bd4a, - (q31_t)0x309bed5a, (q31_t)0x30961d4c, (q31_t)0x30904d20, (q31_t)0x308a7cd6, (q31_t)0x3084ac6e, (q31_t)0x307edbe9, - (q31_t)0x30790b45, (q31_t)0x30733a83, - (q31_t)0x306d69a4, (q31_t)0x306798a7, (q31_t)0x3061c78b, (q31_t)0x305bf652, (q31_t)0x305624fb, (q31_t)0x30505387, - (q31_t)0x304a81f4, (q31_t)0x3044b044, - (q31_t)0x303ede76, (q31_t)0x30390c8a, (q31_t)0x30333a80, (q31_t)0x302d6859, (q31_t)0x30279614, (q31_t)0x3021c3b1, - (q31_t)0x301bf131, (q31_t)0x30161e93, - (q31_t)0x30104bd7, (q31_t)0x300a78fe, (q31_t)0x3004a607, (q31_t)0x2ffed2f2, (q31_t)0x2ff8ffc0, (q31_t)0x2ff32c70, - (q31_t)0x2fed5902, (q31_t)0x2fe78577, - (q31_t)0x2fe1b1cf, (q31_t)0x2fdbde09, (q31_t)0x2fd60a25, (q31_t)0x2fd03624, (q31_t)0x2fca6206, (q31_t)0x2fc48dc9, - (q31_t)0x2fbeb970, (q31_t)0x2fb8e4f9, - (q31_t)0x2fb31064, (q31_t)0x2fad3bb3, (q31_t)0x2fa766e3, (q31_t)0x2fa191f7, (q31_t)0x2f9bbced, (q31_t)0x2f95e7c5, - (q31_t)0x2f901280, (q31_t)0x2f8a3d1e, - (q31_t)0x2f84679f, (q31_t)0x2f7e9202, (q31_t)0x2f78bc48, (q31_t)0x2f72e671, (q31_t)0x2f6d107c, (q31_t)0x2f673a6a, - (q31_t)0x2f61643b, (q31_t)0x2f5b8def, - (q31_t)0x2f55b785, (q31_t)0x2f4fe0ff, (q31_t)0x2f4a0a5b, (q31_t)0x2f44339a, (q31_t)0x2f3e5cbb, (q31_t)0x2f3885c0, - (q31_t)0x2f32aea8, (q31_t)0x2f2cd772, - (q31_t)0x2f27001f, (q31_t)0x2f2128af, (q31_t)0x2f1b5122, (q31_t)0x2f157979, (q31_t)0x2f0fa1b2, (q31_t)0x2f09c9ce, - (q31_t)0x2f03f1cd, (q31_t)0x2efe19ae, - (q31_t)0x2ef84173, (q31_t)0x2ef2691b, (q31_t)0x2eec90a7, (q31_t)0x2ee6b815, (q31_t)0x2ee0df66, (q31_t)0x2edb069a, - (q31_t)0x2ed52db1, (q31_t)0x2ecf54ac, - (q31_t)0x2ec97b89, (q31_t)0x2ec3a24a, (q31_t)0x2ebdc8ee, (q31_t)0x2eb7ef75, (q31_t)0x2eb215df, (q31_t)0x2eac3c2d, - (q31_t)0x2ea6625d, (q31_t)0x2ea08871, - (q31_t)0x2e9aae68, (q31_t)0x2e94d443, (q31_t)0x2e8efa00, (q31_t)0x2e891fa1, (q31_t)0x2e834525, (q31_t)0x2e7d6a8d, - (q31_t)0x2e778fd8, (q31_t)0x2e71b506, - (q31_t)0x2e6bda17, (q31_t)0x2e65ff0c, (q31_t)0x2e6023e5, (q31_t)0x2e5a48a0, (q31_t)0x2e546d3f, (q31_t)0x2e4e91c2, - (q31_t)0x2e48b628, (q31_t)0x2e42da71, - (q31_t)0x2e3cfe9e, (q31_t)0x2e3722ae, (q31_t)0x2e3146a2, (q31_t)0x2e2b6a79, (q31_t)0x2e258e34, (q31_t)0x2e1fb1d3, - (q31_t)0x2e19d554, (q31_t)0x2e13f8ba, - (q31_t)0x2e0e1c03, (q31_t)0x2e083f30, (q31_t)0x2e026240, (q31_t)0x2dfc8534, (q31_t)0x2df6a80b, (q31_t)0x2df0cac6, - (q31_t)0x2deaed65, (q31_t)0x2de50fe8, - (q31_t)0x2ddf324e, (q31_t)0x2dd95498, (q31_t)0x2dd376c5, (q31_t)0x2dcd98d7, (q31_t)0x2dc7bacc, (q31_t)0x2dc1dca4, - (q31_t)0x2dbbfe61, (q31_t)0x2db62001, - (q31_t)0x2db04186, (q31_t)0x2daa62ee, (q31_t)0x2da4843a, (q31_t)0x2d9ea569, (q31_t)0x2d98c67d, (q31_t)0x2d92e774, - (q31_t)0x2d8d084f, (q31_t)0x2d87290f, - (q31_t)0x2d8149b2, (q31_t)0x2d7b6a39, (q31_t)0x2d758aa4, (q31_t)0x2d6faaf3, (q31_t)0x2d69cb26, (q31_t)0x2d63eb3d, - (q31_t)0x2d5e0b38, (q31_t)0x2d582b17, - (q31_t)0x2d524ada, (q31_t)0x2d4c6a81, (q31_t)0x2d468a0c, (q31_t)0x2d40a97b, (q31_t)0x2d3ac8ce, (q31_t)0x2d34e805, - (q31_t)0x2d2f0721, (q31_t)0x2d292620, - (q31_t)0x2d234504, (q31_t)0x2d1d63cc, (q31_t)0x2d178278, (q31_t)0x2d11a108, (q31_t)0x2d0bbf7d, (q31_t)0x2d05ddd5, - (q31_t)0x2cfffc12, (q31_t)0x2cfa1a33, - (q31_t)0x2cf43839, (q31_t)0x2cee5622, (q31_t)0x2ce873f0, (q31_t)0x2ce291a2, (q31_t)0x2cdcaf39, (q31_t)0x2cd6ccb4, - (q31_t)0x2cd0ea13, (q31_t)0x2ccb0756, - (q31_t)0x2cc5247e, (q31_t)0x2cbf418b, (q31_t)0x2cb95e7b, (q31_t)0x2cb37b51, (q31_t)0x2cad980a, (q31_t)0x2ca7b4a8, - (q31_t)0x2ca1d12a, (q31_t)0x2c9bed91, - (q31_t)0x2c9609dd, (q31_t)0x2c90260d, (q31_t)0x2c8a4221, (q31_t)0x2c845e1a, (q31_t)0x2c7e79f7, (q31_t)0x2c7895b9, - (q31_t)0x2c72b160, (q31_t)0x2c6ccceb, - (q31_t)0x2c66e85b, (q31_t)0x2c6103af, (q31_t)0x2c5b1ee8, (q31_t)0x2c553a06, (q31_t)0x2c4f5508, (q31_t)0x2c496fef, - (q31_t)0x2c438abb, (q31_t)0x2c3da56b, - (q31_t)0x2c37c000, (q31_t)0x2c31da7a, (q31_t)0x2c2bf4d8, (q31_t)0x2c260f1c, (q31_t)0x2c202944, (q31_t)0x2c1a4351, - (q31_t)0x2c145d42, (q31_t)0x2c0e7719, - (q31_t)0x2c0890d4, (q31_t)0x2c02aa74, (q31_t)0x2bfcc3f9, (q31_t)0x2bf6dd63, (q31_t)0x2bf0f6b1, (q31_t)0x2beb0fe5, - (q31_t)0x2be528fd, (q31_t)0x2bdf41fb, - (q31_t)0x2bd95add, (q31_t)0x2bd373a4, (q31_t)0x2bcd8c51, (q31_t)0x2bc7a4e2, (q31_t)0x2bc1bd58, (q31_t)0x2bbbd5b3, - (q31_t)0x2bb5edf4, (q31_t)0x2bb00619, - (q31_t)0x2baa1e23, (q31_t)0x2ba43613, (q31_t)0x2b9e4de7, (q31_t)0x2b9865a1, (q31_t)0x2b927d3f, (q31_t)0x2b8c94c3, - (q31_t)0x2b86ac2c, (q31_t)0x2b80c37a, - (q31_t)0x2b7adaae, (q31_t)0x2b74f1c6, (q31_t)0x2b6f08c4, (q31_t)0x2b691fa6, (q31_t)0x2b63366f, (q31_t)0x2b5d4d1c, - (q31_t)0x2b5763ae, (q31_t)0x2b517a26, - (q31_t)0x2b4b9083, (q31_t)0x2b45a6c6, (q31_t)0x2b3fbced, (q31_t)0x2b39d2fa, (q31_t)0x2b33e8ed, (q31_t)0x2b2dfec5, - (q31_t)0x2b281482, (q31_t)0x2b222a24, - (q31_t)0x2b1c3fac, (q31_t)0x2b165519, (q31_t)0x2b106a6c, (q31_t)0x2b0a7fa4, (q31_t)0x2b0494c2, (q31_t)0x2afea9c5, - (q31_t)0x2af8bead, (q31_t)0x2af2d37b, - (q31_t)0x2aece82f, (q31_t)0x2ae6fcc8, (q31_t)0x2ae11146, (q31_t)0x2adb25aa, (q31_t)0x2ad539f4, (q31_t)0x2acf4e23, - (q31_t)0x2ac96238, (q31_t)0x2ac37633, - (q31_t)0x2abd8a13, (q31_t)0x2ab79dd8, (q31_t)0x2ab1b184, (q31_t)0x2aabc515, (q31_t)0x2aa5d88b, (q31_t)0x2a9febe8, - (q31_t)0x2a99ff2a, (q31_t)0x2a941252, - (q31_t)0x2a8e255f, (q31_t)0x2a883853, (q31_t)0x2a824b2c, (q31_t)0x2a7c5deb, (q31_t)0x2a76708f, (q31_t)0x2a70831a, - (q31_t)0x2a6a958a, (q31_t)0x2a64a7e0, - (q31_t)0x2a5eba1c, (q31_t)0x2a58cc3e, (q31_t)0x2a52de46, (q31_t)0x2a4cf033, (q31_t)0x2a470207, (q31_t)0x2a4113c0, - (q31_t)0x2a3b2560, (q31_t)0x2a3536e5, - (q31_t)0x2a2f4850, (q31_t)0x2a2959a1, (q31_t)0x2a236ad9, (q31_t)0x2a1d7bf6, (q31_t)0x2a178cf9, (q31_t)0x2a119de2, - (q31_t)0x2a0baeb2, (q31_t)0x2a05bf67, - (q31_t)0x29ffd003, (q31_t)0x29f9e084, (q31_t)0x29f3f0ec, (q31_t)0x29ee013a, (q31_t)0x29e8116e, (q31_t)0x29e22188, - (q31_t)0x29dc3188, (q31_t)0x29d6416f, - (q31_t)0x29d0513b, (q31_t)0x29ca60ee, (q31_t)0x29c47087, (q31_t)0x29be8007, (q31_t)0x29b88f6c, (q31_t)0x29b29eb8, - (q31_t)0x29acadea, (q31_t)0x29a6bd02, - (q31_t)0x29a0cc01, (q31_t)0x299adae6, (q31_t)0x2994e9b1, (q31_t)0x298ef863, (q31_t)0x298906fb, (q31_t)0x2983157a, - (q31_t)0x297d23df, (q31_t)0x2977322a, - (q31_t)0x2971405b, (q31_t)0x296b4e74, (q31_t)0x29655c72, (q31_t)0x295f6a57, (q31_t)0x29597823, (q31_t)0x295385d5, - (q31_t)0x294d936d, (q31_t)0x2947a0ec, - (q31_t)0x2941ae52, (q31_t)0x293bbb9e, (q31_t)0x2935c8d1, (q31_t)0x292fd5ea, (q31_t)0x2929e2ea, (q31_t)0x2923efd0, - (q31_t)0x291dfc9d, (q31_t)0x29180951, - (q31_t)0x291215eb, (q31_t)0x290c226c, (q31_t)0x29062ed4, (q31_t)0x29003b23, (q31_t)0x28fa4758, (q31_t)0x28f45374, - (q31_t)0x28ee5f76, (q31_t)0x28e86b5f, - (q31_t)0x28e27730, (q31_t)0x28dc82e6, (q31_t)0x28d68e84, (q31_t)0x28d09a09, (q31_t)0x28caa574, (q31_t)0x28c4b0c6, - (q31_t)0x28bebbff, (q31_t)0x28b8c71f, - (q31_t)0x28b2d226, (q31_t)0x28acdd13, (q31_t)0x28a6e7e8, (q31_t)0x28a0f2a3, (q31_t)0x289afd46, (q31_t)0x289507cf, - (q31_t)0x288f123f, (q31_t)0x28891c97, - (q31_t)0x288326d5, (q31_t)0x287d30fa, (q31_t)0x28773b07, (q31_t)0x287144fa, (q31_t)0x286b4ed5, (q31_t)0x28655896, - (q31_t)0x285f623f, (q31_t)0x28596bce, - (q31_t)0x28537545, (q31_t)0x284d7ea3, (q31_t)0x284787e8, (q31_t)0x28419114, (q31_t)0x283b9a28, (q31_t)0x2835a322, - (q31_t)0x282fac04, (q31_t)0x2829b4cd, - (q31_t)0x2823bd7d, (q31_t)0x281dc615, (q31_t)0x2817ce93, (q31_t)0x2811d6f9, (q31_t)0x280bdf46, (q31_t)0x2805e77b, - (q31_t)0x27ffef97, (q31_t)0x27f9f79a, - (q31_t)0x27f3ff85, (q31_t)0x27ee0756, (q31_t)0x27e80f10, (q31_t)0x27e216b0, (q31_t)0x27dc1e38, (q31_t)0x27d625a8, - (q31_t)0x27d02cff, (q31_t)0x27ca343d, - (q31_t)0x27c43b63, (q31_t)0x27be4270, (q31_t)0x27b84965, (q31_t)0x27b25041, (q31_t)0x27ac5705, (q31_t)0x27a65db0, - (q31_t)0x27a06443, (q31_t)0x279a6abd, - (q31_t)0x2794711f, (q31_t)0x278e7768, (q31_t)0x27887d99, (q31_t)0x278283b2, (q31_t)0x277c89b3, (q31_t)0x27768f9b, - (q31_t)0x2770956a, (q31_t)0x276a9b21, - (q31_t)0x2764a0c0, (q31_t)0x275ea647, (q31_t)0x2758abb6, (q31_t)0x2752b10c, (q31_t)0x274cb64a, (q31_t)0x2746bb6f, - (q31_t)0x2740c07d, (q31_t)0x273ac572, - (q31_t)0x2734ca4f, (q31_t)0x272ecf14, (q31_t)0x2728d3c0, (q31_t)0x2722d855, (q31_t)0x271cdcd1, (q31_t)0x2716e136, - (q31_t)0x2710e582, (q31_t)0x270ae9b6, - (q31_t)0x2704edd2, (q31_t)0x26fef1d5, (q31_t)0x26f8f5c1, (q31_t)0x26f2f995, (q31_t)0x26ecfd51, (q31_t)0x26e700f5, - (q31_t)0x26e10480, (q31_t)0x26db07f4, - (q31_t)0x26d50b50, (q31_t)0x26cf0e94, (q31_t)0x26c911c0, (q31_t)0x26c314d4, (q31_t)0x26bd17d0, (q31_t)0x26b71ab4, - (q31_t)0x26b11d80, (q31_t)0x26ab2034, - (q31_t)0x26a522d1, (q31_t)0x269f2556, (q31_t)0x269927c3, (q31_t)0x26932a18, (q31_t)0x268d2c55, (q31_t)0x26872e7b, - (q31_t)0x26813088, (q31_t)0x267b327e, - (q31_t)0x2675345d, (q31_t)0x266f3623, (q31_t)0x266937d2, (q31_t)0x26633969, (q31_t)0x265d3ae9, (q31_t)0x26573c50, - (q31_t)0x26513da1, (q31_t)0x264b3ed9, - (q31_t)0x26453ffa, (q31_t)0x263f4103, (q31_t)0x263941f5, (q31_t)0x263342cf, (q31_t)0x262d4392, (q31_t)0x2627443d, - (q31_t)0x262144d0, (q31_t)0x261b454c, - (q31_t)0x261545b0, (q31_t)0x260f45fd, (q31_t)0x26094633, (q31_t)0x26034651, (q31_t)0x25fd4657, (q31_t)0x25f74646, - (q31_t)0x25f1461e, (q31_t)0x25eb45de, - (q31_t)0x25e54587, (q31_t)0x25df4519, (q31_t)0x25d94493, (q31_t)0x25d343f6, (q31_t)0x25cd4341, (q31_t)0x25c74276, - (q31_t)0x25c14192, (q31_t)0x25bb4098, - (q31_t)0x25b53f86, (q31_t)0x25af3e5d, (q31_t)0x25a93d1d, (q31_t)0x25a33bc6, (q31_t)0x259d3a57, (q31_t)0x259738d1, - (q31_t)0x25913734, (q31_t)0x258b3580, - (q31_t)0x258533b5, (q31_t)0x257f31d2, (q31_t)0x25792fd8, (q31_t)0x25732dc8, (q31_t)0x256d2ba0, (q31_t)0x25672961, - (q31_t)0x2561270b, (q31_t)0x255b249e, - (q31_t)0x2555221a, (q31_t)0x254f1f7e, (q31_t)0x25491ccc, (q31_t)0x25431a03, (q31_t)0x253d1723, (q31_t)0x2537142c, - (q31_t)0x2531111e, (q31_t)0x252b0df9, - (q31_t)0x25250abd, (q31_t)0x251f076a, (q31_t)0x25190400, (q31_t)0x25130080, (q31_t)0x250cfce8, (q31_t)0x2506f93a, - (q31_t)0x2500f574, (q31_t)0x24faf198, - (q31_t)0x24f4eda6, (q31_t)0x24eee99c, (q31_t)0x24e8e57c, (q31_t)0x24e2e144, (q31_t)0x24dcdcf6, (q31_t)0x24d6d892, - (q31_t)0x24d0d416, (q31_t)0x24cacf84, - (q31_t)0x24c4cadb, (q31_t)0x24bec61c, (q31_t)0x24b8c146, (q31_t)0x24b2bc59, (q31_t)0x24acb756, (q31_t)0x24a6b23b, - (q31_t)0x24a0ad0b, (q31_t)0x249aa7c4, - (q31_t)0x2494a266, (q31_t)0x248e9cf1, (q31_t)0x24889766, (q31_t)0x248291c5, (q31_t)0x247c8c0d, (q31_t)0x2476863e, - (q31_t)0x24708059, (q31_t)0x246a7a5e, - (q31_t)0x2464744c, (q31_t)0x245e6e23, (q31_t)0x245867e4, (q31_t)0x2452618f, (q31_t)0x244c5b24, (q31_t)0x244654a1, - (q31_t)0x24404e09, (q31_t)0x243a475a, - (q31_t)0x24344095, (q31_t)0x242e39ba, (q31_t)0x242832c8, (q31_t)0x24222bc0, (q31_t)0x241c24a1, (q31_t)0x24161d6d, - (q31_t)0x24101622, (q31_t)0x240a0ec1, - (q31_t)0x24040749, (q31_t)0x23fdffbc, (q31_t)0x23f7f818, (q31_t)0x23f1f05e, (q31_t)0x23ebe88e, (q31_t)0x23e5e0a7, - (q31_t)0x23dfd8ab, (q31_t)0x23d9d098, - (q31_t)0x23d3c86f, (q31_t)0x23cdc031, (q31_t)0x23c7b7dc, (q31_t)0x23c1af71, (q31_t)0x23bba6f0, (q31_t)0x23b59e59, - (q31_t)0x23af95ac, (q31_t)0x23a98ce8, - (q31_t)0x23a3840f, (q31_t)0x239d7b20, (q31_t)0x2397721b, (q31_t)0x23916900, (q31_t)0x238b5fcf, (q31_t)0x23855688, - (q31_t)0x237f4d2b, (q31_t)0x237943b9, - (q31_t)0x23733a30, (q31_t)0x236d3092, (q31_t)0x236726dd, (q31_t)0x23611d13, (q31_t)0x235b1333, (q31_t)0x2355093e, - (q31_t)0x234eff32, (q31_t)0x2348f511, - (q31_t)0x2342eada, (q31_t)0x233ce08d, (q31_t)0x2336d62a, (q31_t)0x2330cbb2, (q31_t)0x232ac124, (q31_t)0x2324b680, - (q31_t)0x231eabc7, (q31_t)0x2318a0f8, - (q31_t)0x23129613, (q31_t)0x230c8b19, (q31_t)0x23068009, (q31_t)0x230074e3, (q31_t)0x22fa69a8, (q31_t)0x22f45e57, - (q31_t)0x22ee52f1, (q31_t)0x22e84775, - (q31_t)0x22e23be4, (q31_t)0x22dc303d, (q31_t)0x22d62480, (q31_t)0x22d018ae, (q31_t)0x22ca0cc7, (q31_t)0x22c400ca, - (q31_t)0x22bdf4b8, (q31_t)0x22b7e890, - (q31_t)0x22b1dc53, (q31_t)0x22abd001, (q31_t)0x22a5c399, (q31_t)0x229fb71b, (q31_t)0x2299aa89, (q31_t)0x22939de1, - (q31_t)0x228d9123, (q31_t)0x22878451, - (q31_t)0x22817769, (q31_t)0x227b6a6c, (q31_t)0x22755d59, (q31_t)0x226f5032, (q31_t)0x226942f5, (q31_t)0x226335a2, - (q31_t)0x225d283b, (q31_t)0x22571abe, - (q31_t)0x22510d2d, (q31_t)0x224aff86, (q31_t)0x2244f1c9, (q31_t)0x223ee3f8, (q31_t)0x2238d612, (q31_t)0x2232c816, - (q31_t)0x222cba06, (q31_t)0x2226abe0, - (q31_t)0x22209da5, (q31_t)0x221a8f56, (q31_t)0x221480f1, (q31_t)0x220e7277, (q31_t)0x220863e8, (q31_t)0x22025544, - (q31_t)0x21fc468b, (q31_t)0x21f637be, - (q31_t)0x21f028db, (q31_t)0x21ea19e3, (q31_t)0x21e40ad7, (q31_t)0x21ddfbb5, (q31_t)0x21d7ec7f, (q31_t)0x21d1dd34, - (q31_t)0x21cbcdd3, (q31_t)0x21c5be5e, - (q31_t)0x21bfaed5, (q31_t)0x21b99f36, (q31_t)0x21b38f83, (q31_t)0x21ad7fba, (q31_t)0x21a76fdd, (q31_t)0x21a15fec, - (q31_t)0x219b4fe5, (q31_t)0x21953fca, - (q31_t)0x218f2f9a, (q31_t)0x21891f55, (q31_t)0x21830efc, (q31_t)0x217cfe8e, (q31_t)0x2176ee0b, (q31_t)0x2170dd74, - (q31_t)0x216accc8, (q31_t)0x2164bc08, - (q31_t)0x215eab33, (q31_t)0x21589a49, (q31_t)0x2152894b, (q31_t)0x214c7838, (q31_t)0x21466710, (q31_t)0x214055d4, - (q31_t)0x213a4484, (q31_t)0x2134331f, - (q31_t)0x212e21a6, (q31_t)0x21281018, (q31_t)0x2121fe76, (q31_t)0x211becbf, (q31_t)0x2115daf4, (q31_t)0x210fc914, - (q31_t)0x2109b720, (q31_t)0x2103a518, - (q31_t)0x20fd92fb, (q31_t)0x20f780ca, (q31_t)0x20f16e84, (q31_t)0x20eb5c2b, (q31_t)0x20e549bd, (q31_t)0x20df373a, - (q31_t)0x20d924a4, (q31_t)0x20d311f9, - (q31_t)0x20ccff3a, (q31_t)0x20c6ec66, (q31_t)0x20c0d97f, (q31_t)0x20bac683, (q31_t)0x20b4b373, (q31_t)0x20aea04f, - (q31_t)0x20a88d17, (q31_t)0x20a279ca, - (q31_t)0x209c666a, (q31_t)0x209652f5, (q31_t)0x20903f6c, (q31_t)0x208a2bcf, (q31_t)0x2084181e, (q31_t)0x207e0459, - (q31_t)0x2077f080, (q31_t)0x2071dc93, - (q31_t)0x206bc892, (q31_t)0x2065b47d, (q31_t)0x205fa054, (q31_t)0x20598c17, (q31_t)0x205377c6, (q31_t)0x204d6361, - (q31_t)0x20474ee8, (q31_t)0x20413a5b, - (q31_t)0x203b25bb, (q31_t)0x20351106, (q31_t)0x202efc3e, (q31_t)0x2028e761, (q31_t)0x2022d271, (q31_t)0x201cbd6d, - (q31_t)0x2016a856, (q31_t)0x2010932a, - (q31_t)0x200a7deb, (q31_t)0x20046898, (q31_t)0x1ffe5331, (q31_t)0x1ff83db6, (q31_t)0x1ff22828, (q31_t)0x1fec1286, - (q31_t)0x1fe5fcd0, (q31_t)0x1fdfe707, - (q31_t)0x1fd9d12a, (q31_t)0x1fd3bb39, (q31_t)0x1fcda535, (q31_t)0x1fc78f1d, (q31_t)0x1fc178f1, (q31_t)0x1fbb62b2, - (q31_t)0x1fb54c60, (q31_t)0x1faf35f9, - (q31_t)0x1fa91f80, (q31_t)0x1fa308f2, (q31_t)0x1f9cf252, (q31_t)0x1f96db9d, (q31_t)0x1f90c4d5, (q31_t)0x1f8aadfa, - (q31_t)0x1f84970b, (q31_t)0x1f7e8009, - (q31_t)0x1f7868f4, (q31_t)0x1f7251ca, (q31_t)0x1f6c3a8e, (q31_t)0x1f66233e, (q31_t)0x1f600bdb, (q31_t)0x1f59f465, - (q31_t)0x1f53dcdb, (q31_t)0x1f4dc53d, - (q31_t)0x1f47ad8d, (q31_t)0x1f4195c9, (q31_t)0x1f3b7df2, (q31_t)0x1f356608, (q31_t)0x1f2f4e0a, (q31_t)0x1f2935f9, - (q31_t)0x1f231dd5, (q31_t)0x1f1d059e, - (q31_t)0x1f16ed54, (q31_t)0x1f10d4f6, (q31_t)0x1f0abc85, (q31_t)0x1f04a401, (q31_t)0x1efe8b6a, (q31_t)0x1ef872c0, - (q31_t)0x1ef25a03, (q31_t)0x1eec4132, - (q31_t)0x1ee6284f, (q31_t)0x1ee00f58, (q31_t)0x1ed9f64f, (q31_t)0x1ed3dd32, (q31_t)0x1ecdc402, (q31_t)0x1ec7aac0, - (q31_t)0x1ec1916a, (q31_t)0x1ebb7802, - (q31_t)0x1eb55e86, (q31_t)0x1eaf44f8, (q31_t)0x1ea92b56, (q31_t)0x1ea311a2, (q31_t)0x1e9cf7db, (q31_t)0x1e96de01, - (q31_t)0x1e90c414, (q31_t)0x1e8aaa14, - (q31_t)0x1e849001, (q31_t)0x1e7e75dc, (q31_t)0x1e785ba3, (q31_t)0x1e724158, (q31_t)0x1e6c26fa, (q31_t)0x1e660c8a, - (q31_t)0x1e5ff206, (q31_t)0x1e59d770, - (q31_t)0x1e53bcc7, (q31_t)0x1e4da20c, (q31_t)0x1e47873d, (q31_t)0x1e416c5d, (q31_t)0x1e3b5169, (q31_t)0x1e353663, - (q31_t)0x1e2f1b4a, (q31_t)0x1e29001e, - (q31_t)0x1e22e4e0, (q31_t)0x1e1cc990, (q31_t)0x1e16ae2c, (q31_t)0x1e1092b6, (q31_t)0x1e0a772e, (q31_t)0x1e045b93, - (q31_t)0x1dfe3fe6, (q31_t)0x1df82426, - (q31_t)0x1df20853, (q31_t)0x1debec6f, (q31_t)0x1de5d077, (q31_t)0x1ddfb46e, (q31_t)0x1dd99851, (q31_t)0x1dd37c23, - (q31_t)0x1dcd5fe2, (q31_t)0x1dc7438e, - (q31_t)0x1dc12729, (q31_t)0x1dbb0ab0, (q31_t)0x1db4ee26, (q31_t)0x1daed189, (q31_t)0x1da8b4da, (q31_t)0x1da29819, - (q31_t)0x1d9c7b45, (q31_t)0x1d965e5f, - (q31_t)0x1d904167, (q31_t)0x1d8a245c, (q31_t)0x1d840740, (q31_t)0x1d7dea11, (q31_t)0x1d77ccd0, (q31_t)0x1d71af7d, - (q31_t)0x1d6b9217, (q31_t)0x1d6574a0, - (q31_t)0x1d5f5716, (q31_t)0x1d59397a, (q31_t)0x1d531bcc, (q31_t)0x1d4cfe0d, (q31_t)0x1d46e03a, (q31_t)0x1d40c256, - (q31_t)0x1d3aa460, (q31_t)0x1d348658, - (q31_t)0x1d2e683e, (q31_t)0x1d284a12, (q31_t)0x1d222bd3, (q31_t)0x1d1c0d83, (q31_t)0x1d15ef21, (q31_t)0x1d0fd0ad, - (q31_t)0x1d09b227, (q31_t)0x1d03938f, - (q31_t)0x1cfd74e5, (q31_t)0x1cf7562a, (q31_t)0x1cf1375c, (q31_t)0x1ceb187d, (q31_t)0x1ce4f98c, (q31_t)0x1cdeda89, - (q31_t)0x1cd8bb74, (q31_t)0x1cd29c4d, - (q31_t)0x1ccc7d15, (q31_t)0x1cc65dca, (q31_t)0x1cc03e6e, (q31_t)0x1cba1f01, (q31_t)0x1cb3ff81, (q31_t)0x1caddff0, - (q31_t)0x1ca7c04d, (q31_t)0x1ca1a099, - (q31_t)0x1c9b80d3, (q31_t)0x1c9560fb, (q31_t)0x1c8f4112, (q31_t)0x1c892117, (q31_t)0x1c83010a, (q31_t)0x1c7ce0ec, - (q31_t)0x1c76c0bc, (q31_t)0x1c70a07b, - (q31_t)0x1c6a8028, (q31_t)0x1c645fc3, (q31_t)0x1c5e3f4d, (q31_t)0x1c581ec6, (q31_t)0x1c51fe2d, (q31_t)0x1c4bdd83, - (q31_t)0x1c45bcc7, (q31_t)0x1c3f9bf9, - (q31_t)0x1c397b1b, (q31_t)0x1c335a2b, (q31_t)0x1c2d3929, (q31_t)0x1c271816, (q31_t)0x1c20f6f2, (q31_t)0x1c1ad5bc, - (q31_t)0x1c14b475, (q31_t)0x1c0e931d, - (q31_t)0x1c0871b4, (q31_t)0x1c025039, (q31_t)0x1bfc2ead, (q31_t)0x1bf60d0f, (q31_t)0x1befeb60, (q31_t)0x1be9c9a1, - (q31_t)0x1be3a7cf, (q31_t)0x1bdd85ed, - (q31_t)0x1bd763fa, (q31_t)0x1bd141f5, (q31_t)0x1bcb1fdf, (q31_t)0x1bc4fdb8, (q31_t)0x1bbedb80, (q31_t)0x1bb8b937, - (q31_t)0x1bb296dc, (q31_t)0x1bac7471, - (q31_t)0x1ba651f5, (q31_t)0x1ba02f67, (q31_t)0x1b9a0cc8, (q31_t)0x1b93ea19, (q31_t)0x1b8dc758, (q31_t)0x1b87a487, - (q31_t)0x1b8181a4, (q31_t)0x1b7b5eb0, - (q31_t)0x1b753bac, (q31_t)0x1b6f1897, (q31_t)0x1b68f570, (q31_t)0x1b62d239, (q31_t)0x1b5caef1, (q31_t)0x1b568b98, - (q31_t)0x1b50682e, (q31_t)0x1b4a44b3, - (q31_t)0x1b442127, (q31_t)0x1b3dfd8b, (q31_t)0x1b37d9de, (q31_t)0x1b31b620, (q31_t)0x1b2b9251, (q31_t)0x1b256e71, - (q31_t)0x1b1f4a81, (q31_t)0x1b192680, - (q31_t)0x1b13026e, (q31_t)0x1b0cde4c, (q31_t)0x1b06ba19, (q31_t)0x1b0095d5, (q31_t)0x1afa7180, (q31_t)0x1af44d1b, - (q31_t)0x1aee28a6, (q31_t)0x1ae8041f, - (q31_t)0x1ae1df88, (q31_t)0x1adbbae1, (q31_t)0x1ad59629, (q31_t)0x1acf7160, (q31_t)0x1ac94c87, (q31_t)0x1ac3279d, - (q31_t)0x1abd02a3, (q31_t)0x1ab6dd98, - (q31_t)0x1ab0b87d, (q31_t)0x1aaa9352, (q31_t)0x1aa46e16, (q31_t)0x1a9e48c9, (q31_t)0x1a98236c, (q31_t)0x1a91fdff, - (q31_t)0x1a8bd881, (q31_t)0x1a85b2f3, - (q31_t)0x1a7f8d54, (q31_t)0x1a7967a6, (q31_t)0x1a7341e6, (q31_t)0x1a6d1c17, (q31_t)0x1a66f637, (q31_t)0x1a60d047, - (q31_t)0x1a5aaa47, (q31_t)0x1a548436, - (q31_t)0x1a4e5e15, (q31_t)0x1a4837e4, (q31_t)0x1a4211a3, (q31_t)0x1a3beb52, (q31_t)0x1a35c4f0, (q31_t)0x1a2f9e7e, - (q31_t)0x1a2977fc, (q31_t)0x1a23516a, - (q31_t)0x1a1d2ac8, (q31_t)0x1a170416, (q31_t)0x1a10dd53, (q31_t)0x1a0ab681, (q31_t)0x1a048f9e, (q31_t)0x19fe68ac, - (q31_t)0x19f841a9, (q31_t)0x19f21a96, - (q31_t)0x19ebf374, (q31_t)0x19e5cc41, (q31_t)0x19dfa4fe, (q31_t)0x19d97dac, (q31_t)0x19d35649, (q31_t)0x19cd2ed7, - (q31_t)0x19c70754, (q31_t)0x19c0dfc2, - (q31_t)0x19bab820, (q31_t)0x19b4906e, (q31_t)0x19ae68ac, (q31_t)0x19a840da, (q31_t)0x19a218f9, (q31_t)0x199bf107, - (q31_t)0x1995c906, (q31_t)0x198fa0f5, - (q31_t)0x198978d4, (q31_t)0x198350a4, (q31_t)0x197d2864, (q31_t)0x19770014, (q31_t)0x1970d7b4, (q31_t)0x196aaf45, - (q31_t)0x196486c6, (q31_t)0x195e5e37, - (q31_t)0x19583599, (q31_t)0x19520ceb, (q31_t)0x194be42d, (q31_t)0x1945bb60, (q31_t)0x193f9283, (q31_t)0x19396997, - (q31_t)0x1933409b, (q31_t)0x192d178f, - (q31_t)0x1926ee74, (q31_t)0x1920c54a, (q31_t)0x191a9c10, (q31_t)0x191472c6, (q31_t)0x190e496d, (q31_t)0x19082005, - (q31_t)0x1901f68d, (q31_t)0x18fbcd06, - (q31_t)0x18f5a36f, (q31_t)0x18ef79c9, (q31_t)0x18e95014, (q31_t)0x18e3264f, (q31_t)0x18dcfc7b, (q31_t)0x18d6d297, - (q31_t)0x18d0a8a4, (q31_t)0x18ca7ea2, - (q31_t)0x18c45491, (q31_t)0x18be2a70, (q31_t)0x18b80040, (q31_t)0x18b1d601, (q31_t)0x18ababb2, (q31_t)0x18a58154, - (q31_t)0x189f56e8, (q31_t)0x18992c6b, - (q31_t)0x189301e0, (q31_t)0x188cd746, (q31_t)0x1886ac9c, (q31_t)0x188081e4, (q31_t)0x187a571c, (q31_t)0x18742c45, - (q31_t)0x186e015f, (q31_t)0x1867d66a, - (q31_t)0x1861ab66, (q31_t)0x185b8053, (q31_t)0x18555530, (q31_t)0x184f29ff, (q31_t)0x1848febf, (q31_t)0x1842d370, - (q31_t)0x183ca812, (q31_t)0x18367ca5, - (q31_t)0x18305129, (q31_t)0x182a259e, (q31_t)0x1823fa04, (q31_t)0x181dce5b, (q31_t)0x1817a2a4, (q31_t)0x181176dd, - (q31_t)0x180b4b08, (q31_t)0x18051f24, - (q31_t)0x17fef331, (q31_t)0x17f8c72f, (q31_t)0x17f29b1e, (q31_t)0x17ec6eff, (q31_t)0x17e642d1, (q31_t)0x17e01694, - (q31_t)0x17d9ea49, (q31_t)0x17d3bdee, - (q31_t)0x17cd9186, (q31_t)0x17c7650e, (q31_t)0x17c13888, (q31_t)0x17bb0bf3, (q31_t)0x17b4df4f, (q31_t)0x17aeb29d, - (q31_t)0x17a885dc, (q31_t)0x17a2590d, - (q31_t)0x179c2c2f, (q31_t)0x1795ff42, (q31_t)0x178fd247, (q31_t)0x1789a53d, (q31_t)0x17837825, (q31_t)0x177d4afe, - (q31_t)0x17771dc9, (q31_t)0x1770f086, - (q31_t)0x176ac333, (q31_t)0x176495d3, (q31_t)0x175e6864, (q31_t)0x17583ae7, (q31_t)0x17520d5b, (q31_t)0x174bdfc1, - (q31_t)0x1745b218, (q31_t)0x173f8461, - (q31_t)0x1739569c, (q31_t)0x173328c8, (q31_t)0x172cfae6, (q31_t)0x1726ccf6, (q31_t)0x17209ef8, (q31_t)0x171a70eb, - (q31_t)0x171442d0, (q31_t)0x170e14a7, - (q31_t)0x1707e670, (q31_t)0x1701b82a, (q31_t)0x16fb89d6, (q31_t)0x16f55b74, (q31_t)0x16ef2d04, (q31_t)0x16e8fe86, - (q31_t)0x16e2cff9, (q31_t)0x16dca15f, - (q31_t)0x16d672b6, (q31_t)0x16d043ff, (q31_t)0x16ca153a, (q31_t)0x16c3e667, (q31_t)0x16bdb787, (q31_t)0x16b78898, - (q31_t)0x16b1599b, (q31_t)0x16ab2a90, - (q31_t)0x16a4fb77, (q31_t)0x169ecc50, (q31_t)0x16989d1b, (q31_t)0x16926dd8, (q31_t)0x168c3e87, (q31_t)0x16860f29, - (q31_t)0x167fdfbc, (q31_t)0x1679b042, - (q31_t)0x167380ba, (q31_t)0x166d5123, (q31_t)0x1667217f, (q31_t)0x1660f1ce, (q31_t)0x165ac20e, (q31_t)0x16549241, - (q31_t)0x164e6266, (q31_t)0x1648327d, - (q31_t)0x16420286, (q31_t)0x163bd282, (q31_t)0x1635a270, (q31_t)0x162f7250, (q31_t)0x16294222, (q31_t)0x162311e7, - (q31_t)0x161ce19e, (q31_t)0x1616b148, - (q31_t)0x161080e4, (q31_t)0x160a5072, (q31_t)0x16041ff3, (q31_t)0x15fdef66, (q31_t)0x15f7becc, (q31_t)0x15f18e24, - (q31_t)0x15eb5d6e, (q31_t)0x15e52cab, - (q31_t)0x15defbdb, (q31_t)0x15d8cafd, (q31_t)0x15d29a11, (q31_t)0x15cc6918, (q31_t)0x15c63812, (q31_t)0x15c006fe, - (q31_t)0x15b9d5dd, (q31_t)0x15b3a4ae, - (q31_t)0x15ad7372, (q31_t)0x15a74228, (q31_t)0x15a110d2, (q31_t)0x159adf6e, (q31_t)0x1594adfc, (q31_t)0x158e7c7d, - (q31_t)0x15884af1, (q31_t)0x15821958, - (q31_t)0x157be7b1, (q31_t)0x1575b5fe, (q31_t)0x156f843c, (q31_t)0x1569526e, (q31_t)0x15632093, (q31_t)0x155ceeaa, - (q31_t)0x1556bcb4, (q31_t)0x15508ab1, - (q31_t)0x154a58a1, (q31_t)0x15442683, (q31_t)0x153df459, (q31_t)0x1537c221, (q31_t)0x15318fdd, (q31_t)0x152b5d8b, - (q31_t)0x15252b2c, (q31_t)0x151ef8c0, - (q31_t)0x1518c648, (q31_t)0x151293c2, (q31_t)0x150c612f, (q31_t)0x15062e8f, (q31_t)0x14fffbe2, (q31_t)0x14f9c928, - (q31_t)0x14f39662, (q31_t)0x14ed638e, - (q31_t)0x14e730ae, (q31_t)0x14e0fdc0, (q31_t)0x14dacac6, (q31_t)0x14d497bf, (q31_t)0x14ce64ab, (q31_t)0x14c8318a, - (q31_t)0x14c1fe5c, (q31_t)0x14bbcb22, - (q31_t)0x14b597da, (q31_t)0x14af6486, (q31_t)0x14a93125, (q31_t)0x14a2fdb8, (q31_t)0x149cca3e, (q31_t)0x149696b7, - (q31_t)0x14906323, (q31_t)0x148a2f82, - (q31_t)0x1483fbd5, (q31_t)0x147dc81c, (q31_t)0x14779455, (q31_t)0x14716082, (q31_t)0x146b2ca3, (q31_t)0x1464f8b7, - (q31_t)0x145ec4be, (q31_t)0x145890b9, - (q31_t)0x14525ca7, (q31_t)0x144c2888, (q31_t)0x1445f45d, (q31_t)0x143fc026, (q31_t)0x14398be2, (q31_t)0x14335792, - (q31_t)0x142d2335, (q31_t)0x1426eecb, - (q31_t)0x1420ba56, (q31_t)0x141a85d3, (q31_t)0x14145145, (q31_t)0x140e1caa, (q31_t)0x1407e803, (q31_t)0x1401b34f, - (q31_t)0x13fb7e8f, (q31_t)0x13f549c3, - (q31_t)0x13ef14ea, (q31_t)0x13e8e005, (q31_t)0x13e2ab14, (q31_t)0x13dc7616, (q31_t)0x13d6410d, (q31_t)0x13d00bf7, - (q31_t)0x13c9d6d4, (q31_t)0x13c3a1a6, - (q31_t)0x13bd6c6b, (q31_t)0x13b73725, (q31_t)0x13b101d2, (q31_t)0x13aacc73, (q31_t)0x13a49707, (q31_t)0x139e6190, - (q31_t)0x13982c0d, (q31_t)0x1391f67d, - (q31_t)0x138bc0e1, (q31_t)0x13858b3a, (q31_t)0x137f5586, (q31_t)0x13791fc6, (q31_t)0x1372e9fb, (q31_t)0x136cb423, - (q31_t)0x13667e3f, (q31_t)0x13604850, - (q31_t)0x135a1254, (q31_t)0x1353dc4c, (q31_t)0x134da639, (q31_t)0x1347701a, (q31_t)0x134139ee, (q31_t)0x133b03b7, - (q31_t)0x1334cd74, (q31_t)0x132e9725, - (q31_t)0x132860ca, (q31_t)0x13222a64, (q31_t)0x131bf3f2, (q31_t)0x1315bd73, (q31_t)0x130f86ea, (q31_t)0x13095054, - (q31_t)0x130319b3, (q31_t)0x12fce305, - (q31_t)0x12f6ac4d, (q31_t)0x12f07588, (q31_t)0x12ea3eb8, (q31_t)0x12e407dc, (q31_t)0x12ddd0f4, (q31_t)0x12d79a01, - (q31_t)0x12d16303, (q31_t)0x12cb2bf8, - (q31_t)0x12c4f4e2, (q31_t)0x12bebdc1, (q31_t)0x12b88693, (q31_t)0x12b24f5b, (q31_t)0x12ac1817, (q31_t)0x12a5e0c7, - (q31_t)0x129fa96c, (q31_t)0x12997205, - (q31_t)0x12933a93, (q31_t)0x128d0315, (q31_t)0x1286cb8c, (q31_t)0x128093f7, (q31_t)0x127a5c57, (q31_t)0x127424ac, - (q31_t)0x126decf5, (q31_t)0x1267b533, - (q31_t)0x12617d66, (q31_t)0x125b458d, (q31_t)0x12550da9, (q31_t)0x124ed5ba, (q31_t)0x12489dbf, (q31_t)0x124265b9, - (q31_t)0x123c2da8, (q31_t)0x1235f58b, - (q31_t)0x122fbd63, (q31_t)0x12298530, (q31_t)0x12234cf2, (q31_t)0x121d14a9, (q31_t)0x1216dc54, (q31_t)0x1210a3f5, - (q31_t)0x120a6b8a, (q31_t)0x12043314, - (q31_t)0x11fdfa93, (q31_t)0x11f7c207, (q31_t)0x11f18970, (q31_t)0x11eb50cd, (q31_t)0x11e51820, (q31_t)0x11dedf68, - (q31_t)0x11d8a6a4, (q31_t)0x11d26dd6, - (q31_t)0x11cc34fc, (q31_t)0x11c5fc18, (q31_t)0x11bfc329, (q31_t)0x11b98a2e, (q31_t)0x11b35129, (q31_t)0x11ad1819, - (q31_t)0x11a6defe, (q31_t)0x11a0a5d8, - (q31_t)0x119a6ca7, (q31_t)0x1194336b, (q31_t)0x118dfa25, (q31_t)0x1187c0d3, (q31_t)0x11818777, (q31_t)0x117b4e10, - (q31_t)0x1175149e, (q31_t)0x116edb22, - (q31_t)0x1168a19b, (q31_t)0x11626809, (q31_t)0x115c2e6c, (q31_t)0x1155f4c4, (q31_t)0x114fbb12, (q31_t)0x11498156, - (q31_t)0x1143478e, (q31_t)0x113d0dbc, - (q31_t)0x1136d3df, (q31_t)0x113099f8, (q31_t)0x112a6006, (q31_t)0x11242609, (q31_t)0x111dec02, (q31_t)0x1117b1f0, - (q31_t)0x111177d4, (q31_t)0x110b3dad, - (q31_t)0x1105037c, (q31_t)0x10fec940, (q31_t)0x10f88efa, (q31_t)0x10f254a9, (q31_t)0x10ec1a4e, (q31_t)0x10e5dfe8, - (q31_t)0x10dfa578, (q31_t)0x10d96afe, - (q31_t)0x10d33079, (q31_t)0x10ccf5ea, (q31_t)0x10c6bb50, (q31_t)0x10c080ac, (q31_t)0x10ba45fe, (q31_t)0x10b40b45, - (q31_t)0x10add082, (q31_t)0x10a795b5, - (q31_t)0x10a15ade, (q31_t)0x109b1ffc, (q31_t)0x1094e510, (q31_t)0x108eaa1a, (q31_t)0x10886f19, (q31_t)0x1082340f, - (q31_t)0x107bf8fa, (q31_t)0x1075bddb, - (q31_t)0x106f82b2, (q31_t)0x1069477f, (q31_t)0x10630c41, (q31_t)0x105cd0fa, (q31_t)0x105695a8, (q31_t)0x10505a4d, - (q31_t)0x104a1ee7, (q31_t)0x1043e377, - (q31_t)0x103da7fd, (q31_t)0x10376c79, (q31_t)0x103130ec, (q31_t)0x102af554, (q31_t)0x1024b9b2, (q31_t)0x101e7e06, - (q31_t)0x10184251, (q31_t)0x10120691, - (q31_t)0x100bcac7, (q31_t)0x10058ef4, (q31_t)0xfff5317, (q31_t)0xff91730, (q31_t)0xff2db3e, (q31_t)0xfec9f44, - (q31_t)0xfe6633f, (q31_t)0xfe02730, - (q31_t)0xfd9eb18, (q31_t)0xfd3aef6, (q31_t)0xfcd72ca, (q31_t)0xfc73695, (q31_t)0xfc0fa55, (q31_t)0xfbabe0c, (q31_t)0xfb481ba, - (q31_t)0xfae455d, - (q31_t)0xfa808f7, (q31_t)0xfa1cc87, (q31_t)0xf9b900e, (q31_t)0xf95538b, (q31_t)0xf8f16fe, (q31_t)0xf88da68, (q31_t)0xf829dc8, - (q31_t)0xf7c611f, - (q31_t)0xf76246c, (q31_t)0xf6fe7af, (q31_t)0xf69aae9, (q31_t)0xf636e1a, (q31_t)0xf5d3141, (q31_t)0xf56f45e, (q31_t)0xf50b773, - (q31_t)0xf4a7a7d, - (q31_t)0xf443d7e, (q31_t)0xf3e0076, (q31_t)0xf37c365, (q31_t)0xf318649, (q31_t)0xf2b4925, (q31_t)0xf250bf7, (q31_t)0xf1ecec0, - (q31_t)0xf189180, - (q31_t)0xf125436, (q31_t)0xf0c16e3, (q31_t)0xf05d987, (q31_t)0xeff9c21, (q31_t)0xef95eb2, (q31_t)0xef3213a, (q31_t)0xeece3b9, - (q31_t)0xee6a62f, - (q31_t)0xee0689b, (q31_t)0xeda2afe, (q31_t)0xed3ed58, (q31_t)0xecdafa9, (q31_t)0xec771f1, (q31_t)0xec1342f, (q31_t)0xebaf665, - (q31_t)0xeb4b891, - (q31_t)0xeae7ab4, (q31_t)0xea83ccf, (q31_t)0xea1fee0, (q31_t)0xe9bc0e8, (q31_t)0xe9582e7, (q31_t)0xe8f44dd, (q31_t)0xe8906cb, - (q31_t)0xe82c8af, - (q31_t)0xe7c8a8a, (q31_t)0xe764c5c, (q31_t)0xe700e26, (q31_t)0xe69cfe6, (q31_t)0xe63919e, (q31_t)0xe5d534d, (q31_t)0xe5714f3, - (q31_t)0xe50d690, - (q31_t)0xe4a9824, (q31_t)0xe4459af, (q31_t)0xe3e1b32, (q31_t)0xe37dcac, (q31_t)0xe319e1d, (q31_t)0xe2b5f85, (q31_t)0xe2520e5, - (q31_t)0xe1ee23c, - (q31_t)0xe18a38a, (q31_t)0xe1264cf, (q31_t)0xe0c260c, (q31_t)0xe05e740, (q31_t)0xdffa86b, (q31_t)0xdf9698e, (q31_t)0xdf32aa8, - (q31_t)0xdecebba, - (q31_t)0xde6acc3, (q31_t)0xde06dc3, (q31_t)0xdda2ebb, (q31_t)0xdd3efab, (q31_t)0xdcdb091, (q31_t)0xdc77170, (q31_t)0xdc13245, - (q31_t)0xdbaf313, - (q31_t)0xdb4b3d7, (q31_t)0xdae7494, (q31_t)0xda83548, (q31_t)0xda1f5f3, (q31_t)0xd9bb696, (q31_t)0xd957731, (q31_t)0xd8f37c3, - (q31_t)0xd88f84d, - (q31_t)0xd82b8cf, (q31_t)0xd7c7948, (q31_t)0xd7639b9, (q31_t)0xd6ffa22, (q31_t)0xd69ba82, (q31_t)0xd637ada, (q31_t)0xd5d3b2a, - (q31_t)0xd56fb71, - (q31_t)0xd50bbb1, (q31_t)0xd4a7be8, (q31_t)0xd443c17, (q31_t)0xd3dfc3e, (q31_t)0xd37bc5c, (q31_t)0xd317c73, (q31_t)0xd2b3c81, - (q31_t)0xd24fc87, - (q31_t)0xd1ebc85, (q31_t)0xd187c7b, (q31_t)0xd123c69, (q31_t)0xd0bfc4f, (q31_t)0xd05bc2d, (q31_t)0xcff7c02, (q31_t)0xcf93bd0, - (q31_t)0xcf2fb96, - (q31_t)0xcecbb53, (q31_t)0xce67b09, (q31_t)0xce03ab7, (q31_t)0xcd9fa5d, (q31_t)0xcd3b9fb, (q31_t)0xccd7991, (q31_t)0xcc7391f, - (q31_t)0xcc0f8a5, - (q31_t)0xcbab824, (q31_t)0xcb4779a, (q31_t)0xcae3709, (q31_t)0xca7f670, (q31_t)0xca1b5cf, (q31_t)0xc9b7526, (q31_t)0xc953475, - (q31_t)0xc8ef3bd, - (q31_t)0xc88b2fd, (q31_t)0xc827235, (q31_t)0xc7c3166, (q31_t)0xc75f08f, (q31_t)0xc6fafb0, (q31_t)0xc696ec9, (q31_t)0xc632ddb, - (q31_t)0xc5cece5, - (q31_t)0xc56abe8, (q31_t)0xc506ae3, (q31_t)0xc4a29d6, (q31_t)0xc43e8c2, (q31_t)0xc3da7a6, (q31_t)0xc376683, (q31_t)0xc312558, - (q31_t)0xc2ae425, - (q31_t)0xc24a2eb, (q31_t)0xc1e61aa, (q31_t)0xc182061, (q31_t)0xc11df11, (q31_t)0xc0b9db9, (q31_t)0xc055c5a, (q31_t)0xbff1af3, - (q31_t)0xbf8d985, - (q31_t)0xbf29810, (q31_t)0xbec5693, (q31_t)0xbe6150f, (q31_t)0xbdfd383, (q31_t)0xbd991f0, (q31_t)0xbd35056, (q31_t)0xbcd0eb5, - (q31_t)0xbc6cd0c, - (q31_t)0xbc08b5c, (q31_t)0xbba49a5, (q31_t)0xbb407e7, (q31_t)0xbadc621, (q31_t)0xba78454, (q31_t)0xba14280, (q31_t)0xb9b00a5, - (q31_t)0xb94bec2, - (q31_t)0xb8e7cd9, (q31_t)0xb883ae8, (q31_t)0xb81f8f0, (q31_t)0xb7bb6f2, (q31_t)0xb7574ec, (q31_t)0xb6f32df, (q31_t)0xb68f0cb, - (q31_t)0xb62aeaf, - (q31_t)0xb5c6c8d, (q31_t)0xb562a64, (q31_t)0xb4fe834, (q31_t)0xb49a5fd, (q31_t)0xb4363bf, (q31_t)0xb3d217a, (q31_t)0xb36df2e, - (q31_t)0xb309cdb, - (q31_t)0xb2a5a81, (q31_t)0xb241820, (q31_t)0xb1dd5b9, (q31_t)0xb17934b, (q31_t)0xb1150d5, (q31_t)0xb0b0e59, (q31_t)0xb04cbd6, - (q31_t)0xafe894d, - (q31_t)0xaf846bc, (q31_t)0xaf20425, (q31_t)0xaebc187, (q31_t)0xae57ee2, (q31_t)0xadf3c37, (q31_t)0xad8f985, (q31_t)0xad2b6cc, - (q31_t)0xacc740c, - (q31_t)0xac63146, (q31_t)0xabfee79, (q31_t)0xab9aba6, (q31_t)0xab368cc, (q31_t)0xaad25eb, (q31_t)0xaa6e304, (q31_t)0xaa0a016, - (q31_t)0xa9a5d22, - (q31_t)0xa941a27, (q31_t)0xa8dd725, (q31_t)0xa87941d, (q31_t)0xa81510f, (q31_t)0xa7b0dfa, (q31_t)0xa74cadf, (q31_t)0xa6e87bd, - (q31_t)0xa684495, - (q31_t)0xa620166, (q31_t)0xa5bbe31, (q31_t)0xa557af5, (q31_t)0xa4f37b3, (q31_t)0xa48f46b, (q31_t)0xa42b11d, (q31_t)0xa3c6dc8, - (q31_t)0xa362a6d, - (q31_t)0xa2fe70b, (q31_t)0xa29a3a3, (q31_t)0xa236035, (q31_t)0xa1d1cc1, (q31_t)0xa16d946, (q31_t)0xa1095c6, (q31_t)0xa0a523f, - (q31_t)0xa040eb1, - (q31_t)0x9fdcb1e, (q31_t)0x9f78784, (q31_t)0x9f143e5, (q31_t)0x9eb003f, (q31_t)0x9e4bc93, (q31_t)0x9de78e1, (q31_t)0x9d83529, - (q31_t)0x9d1f16b, - (q31_t)0x9cbada7, (q31_t)0x9c569dc, (q31_t)0x9bf260c, (q31_t)0x9b8e236, (q31_t)0x9b29e59, (q31_t)0x9ac5a77, (q31_t)0x9a6168f, - (q31_t)0x99fd2a0, - (q31_t)0x9998eac, (q31_t)0x9934ab2, (q31_t)0x98d06b2, (q31_t)0x986c2ac, (q31_t)0x9807ea1, (q31_t)0x97a3a8f, (q31_t)0x973f678, - (q31_t)0x96db25a, - (q31_t)0x9676e37, (q31_t)0x9612a0e, (q31_t)0x95ae5e0, (q31_t)0x954a1ab, (q31_t)0x94e5d71, (q31_t)0x9481931, (q31_t)0x941d4eb, - (q31_t)0x93b90a0, - (q31_t)0x9354c4f, (q31_t)0x92f07f8, (q31_t)0x928c39b, (q31_t)0x9227f39, (q31_t)0x91c3ad2, (q31_t)0x915f664, (q31_t)0x90fb1f1, - (q31_t)0x9096d79, - (q31_t)0x90328fb, (q31_t)0x8fce477, (q31_t)0x8f69fee, (q31_t)0x8f05b5f, (q31_t)0x8ea16cb, (q31_t)0x8e3d231, (q31_t)0x8dd8d92, - (q31_t)0x8d748ed, - (q31_t)0x8d10443, (q31_t)0x8cabf93, (q31_t)0x8c47ade, (q31_t)0x8be3624, (q31_t)0x8b7f164, (q31_t)0x8b1ac9f, (q31_t)0x8ab67d4, - (q31_t)0x8a52304, - (q31_t)0x89ede2f, (q31_t)0x8989955, (q31_t)0x8925475, (q31_t)0x88c0f90, (q31_t)0x885caa5, (q31_t)0x87f85b5, (q31_t)0x87940c1, - (q31_t)0x872fbc6, - (q31_t)0x86cb6c7, (q31_t)0x86671c2, (q31_t)0x8602cb9, (q31_t)0x859e7aa, (q31_t)0x853a296, (q31_t)0x84d5d7d, (q31_t)0x847185e, - (q31_t)0x840d33b, - (q31_t)0x83a8e12, (q31_t)0x83448e5, (q31_t)0x82e03b2, (q31_t)0x827be7a, (q31_t)0x821793e, (q31_t)0x81b33fc, (q31_t)0x814eeb5, - (q31_t)0x80ea969, - (q31_t)0x8086419, (q31_t)0x8021ec3, (q31_t)0x7fbd968, (q31_t)0x7f59409, (q31_t)0x7ef4ea4, (q31_t)0x7e9093b, (q31_t)0x7e2c3cd, - (q31_t)0x7dc7e5a, - (q31_t)0x7d638e2, (q31_t)0x7cff365, (q31_t)0x7c9ade4, (q31_t)0x7c3685d, (q31_t)0x7bd22d2, (q31_t)0x7b6dd42, (q31_t)0x7b097ad, - (q31_t)0x7aa5214, - (q31_t)0x7a40c76, (q31_t)0x79dc6d3, (q31_t)0x797812b, (q31_t)0x7913b7f, (q31_t)0x78af5ce, (q31_t)0x784b019, (q31_t)0x77e6a5e, - (q31_t)0x77824a0, - (q31_t)0x771dedc, (q31_t)0x76b9914, (q31_t)0x7655347, (q31_t)0x75f0d76, (q31_t)0x758c7a1, (q31_t)0x75281c6, (q31_t)0x74c3be7, - (q31_t)0x745f604, - (q31_t)0x73fb01c, (q31_t)0x7396a30, (q31_t)0x733243f, (q31_t)0x72cde4a, (q31_t)0x7269851, (q31_t)0x7205253, (q31_t)0x71a0c50, - (q31_t)0x713c64a, - (q31_t)0x70d803f, (q31_t)0x7073a2f, (q31_t)0x700f41b, (q31_t)0x6faae03, (q31_t)0x6f467e7, (q31_t)0x6ee21c6, (q31_t)0x6e7dba1, - (q31_t)0x6e19578, - (q31_t)0x6db4f4a, (q31_t)0x6d50919, (q31_t)0x6cec2e3, (q31_t)0x6c87ca9, (q31_t)0x6c2366a, (q31_t)0x6bbf028, (q31_t)0x6b5a9e1, - (q31_t)0x6af6396, - (q31_t)0x6a91d47, (q31_t)0x6a2d6f4, (q31_t)0x69c909d, (q31_t)0x6964a42, (q31_t)0x69003e3, (q31_t)0x689bd80, (q31_t)0x6837718, - (q31_t)0x67d30ad, - (q31_t)0x676ea3d, (q31_t)0x670a3ca, (q31_t)0x66a5d53, (q31_t)0x66416d8, (q31_t)0x65dd058, (q31_t)0x65789d5, (q31_t)0x651434e, - (q31_t)0x64afcc3, - (q31_t)0x644b634, (q31_t)0x63e6fa2, (q31_t)0x638290b, (q31_t)0x631e271, (q31_t)0x62b9bd3, (q31_t)0x6255531, (q31_t)0x61f0e8b, - (q31_t)0x618c7e1, - (q31_t)0x6128134, (q31_t)0x60c3a83, (q31_t)0x605f3ce, (q31_t)0x5ffad15, (q31_t)0x5f96659, (q31_t)0x5f31f99, (q31_t)0x5ecd8d6, - (q31_t)0x5e6920e, - (q31_t)0x5e04b43, (q31_t)0x5da0475, (q31_t)0x5d3bda3, (q31_t)0x5cd76cd, (q31_t)0x5c72ff4, (q31_t)0x5c0e917, (q31_t)0x5baa237, - (q31_t)0x5b45b53, - (q31_t)0x5ae146b, (q31_t)0x5a7cd80, (q31_t)0x5a18692, (q31_t)0x59b3fa0, (q31_t)0x594f8aa, (q31_t)0x58eb1b2, (q31_t)0x5886ab5, - (q31_t)0x58223b6, - (q31_t)0x57bdcb3, (q31_t)0x57595ac, (q31_t)0x56f4ea2, (q31_t)0x5690795, (q31_t)0x562c085, (q31_t)0x55c7971, (q31_t)0x556325a, - (q31_t)0x54feb3f, - (q31_t)0x549a422, (q31_t)0x5435d01, (q31_t)0x53d15dd, (q31_t)0x536ceb5, (q31_t)0x530878a, (q31_t)0x52a405d, (q31_t)0x523f92c, - (q31_t)0x51db1f7, - (q31_t)0x5176ac0, (q31_t)0x5112385, (q31_t)0x50adc48, (q31_t)0x5049507, (q31_t)0x4fe4dc3, (q31_t)0x4f8067c, (q31_t)0x4f1bf32, - (q31_t)0x4eb77e5, - (q31_t)0x4e53095, (q31_t)0x4dee942, (q31_t)0x4d8a1ec, (q31_t)0x4d25a93, (q31_t)0x4cc1337, (q31_t)0x4c5cbd8, (q31_t)0x4bf8476, - (q31_t)0x4b93d11, - (q31_t)0x4b2f5a9, (q31_t)0x4acae3e, (q31_t)0x4a666d1, (q31_t)0x4a01f60, (q31_t)0x499d7ed, (q31_t)0x4939077, (q31_t)0x48d48fe, - (q31_t)0x4870182, - (q31_t)0x480ba04, (q31_t)0x47a7282, (q31_t)0x4742afe, (q31_t)0x46de377, (q31_t)0x4679bee, (q31_t)0x4615461, (q31_t)0x45b0cd2, - (q31_t)0x454c541, - (q31_t)0x44e7dac, (q31_t)0x4483615, (q31_t)0x441ee7c, (q31_t)0x43ba6df, (q31_t)0x4355f40, (q31_t)0x42f179f, (q31_t)0x428cffb, - (q31_t)0x4228854, - (q31_t)0x41c40ab, (q31_t)0x415f8ff, (q31_t)0x40fb151, (q31_t)0x40969a0, (q31_t)0x40321ed, (q31_t)0x3fcda37, (q31_t)0x3f6927f, - (q31_t)0x3f04ac4, - (q31_t)0x3ea0307, (q31_t)0x3e3bb48, (q31_t)0x3dd7386, (q31_t)0x3d72bc2, (q31_t)0x3d0e3fb, (q31_t)0x3ca9c32, (q31_t)0x3c45467, - (q31_t)0x3be0c99, - (q31_t)0x3b7c4c9, (q31_t)0x3b17cf7, (q31_t)0x3ab3523, (q31_t)0x3a4ed4c, (q31_t)0x39ea573, (q31_t)0x3985d97, (q31_t)0x39215ba, - (q31_t)0x38bcdda, - (q31_t)0x38585f8, (q31_t)0x37f3e14, (q31_t)0x378f62e, (q31_t)0x372ae46, (q31_t)0x36c665b, (q31_t)0x3661e6f, (q31_t)0x35fd680, - (q31_t)0x3598e8f, - (q31_t)0x353469c, (q31_t)0x34cfea8, (q31_t)0x346b6b1, (q31_t)0x3406eb8, (q31_t)0x33a26bd, (q31_t)0x333dec0, (q31_t)0x32d96c1, - (q31_t)0x3274ec0, - (q31_t)0x32106bd, (q31_t)0x31abeb9, (q31_t)0x31476b2, (q31_t)0x30e2ea9, (q31_t)0x307e69f, (q31_t)0x3019e93, (q31_t)0x2fb5684, - (q31_t)0x2f50e74, - (q31_t)0x2eec663, (q31_t)0x2e87e4f, (q31_t)0x2e2363a, (q31_t)0x2dbee22, (q31_t)0x2d5a609, (q31_t)0x2cf5def, (q31_t)0x2c915d2, - (q31_t)0x2c2cdb4, - (q31_t)0x2bc8594, (q31_t)0x2b63d73, (q31_t)0x2aff54f, (q31_t)0x2a9ad2a, (q31_t)0x2a36504, (q31_t)0x29d1cdc, (q31_t)0x296d4b2, - (q31_t)0x2908c87, - (q31_t)0x28a445a, (q31_t)0x283fc2b, (q31_t)0x27db3fb, (q31_t)0x2776bc9, (q31_t)0x2712396, (q31_t)0x26adb62, (q31_t)0x264932b, - (q31_t)0x25e4af4, - (q31_t)0x25802bb, (q31_t)0x251ba80, (q31_t)0x24b7244, (q31_t)0x2452a07, (q31_t)0x23ee1c8, (q31_t)0x2389988, (q31_t)0x2325147, - (q31_t)0x22c0904, - (q31_t)0x225c0bf, (q31_t)0x21f787a, (q31_t)0x2193033, (q31_t)0x212e7eb, (q31_t)0x20c9fa1, (q31_t)0x2065757, (q31_t)0x2000f0b, - (q31_t)0x1f9c6be, - (q31_t)0x1f37e6f, (q31_t)0x1ed3620, (q31_t)0x1e6edcf, (q31_t)0x1e0a57d, (q31_t)0x1da5d2a, (q31_t)0x1d414d6, (q31_t)0x1cdcc80, - (q31_t)0x1c7842a, - (q31_t)0x1c13bd2, (q31_t)0x1baf37a, (q31_t)0x1b4ab20, (q31_t)0x1ae62c5, (q31_t)0x1a81a69, (q31_t)0x1a1d20c, (q31_t)0x19b89ae, - (q31_t)0x1954150, - (q31_t)0x18ef8f0, (q31_t)0x188b08f, (q31_t)0x182682d, (q31_t)0x17c1fcb, (q31_t)0x175d767, (q31_t)0x16f8f03, (q31_t)0x169469d, - (q31_t)0x162fe37, - (q31_t)0x15cb5d0, (q31_t)0x1566d68, (q31_t)0x15024ff, (q31_t)0x149dc96, (q31_t)0x143942b, (q31_t)0x13d4bc0, (q31_t)0x1370354, - (q31_t)0x130bae7, - (q31_t)0x12a727a, (q31_t)0x1242a0c, (q31_t)0x11de19d, (q31_t)0x117992e, (q31_t)0x11150be, (q31_t)0x10b084d, (q31_t)0x104bfdb, - (q31_t)0xfe7769, - (q31_t)0xf82ef6, (q31_t)0xf1e683, (q31_t)0xeb9e0f, (q31_t)0xe5559b, (q31_t)0xdf0d26, (q31_t)0xd8c4b0, (q31_t)0xd27c3a, - (q31_t)0xcc33c3, - (q31_t)0xc5eb4c, (q31_t)0xbfa2d5, (q31_t)0xb95a5d, (q31_t)0xb311e4, (q31_t)0xacc96b, (q31_t)0xa680f2, (q31_t)0xa03878, - (q31_t)0x99effe, - (q31_t)0x93a784, (q31_t)0x8d5f09, (q31_t)0x87168e, (q31_t)0x80ce12, (q31_t)0x7a8597, (q31_t)0x743d1a, (q31_t)0x6df49e, - (q31_t)0x67ac21, - (q31_t)0x6163a5, (q31_t)0x5b1b27, (q31_t)0x54d2aa, (q31_t)0x4e8a2c, (q31_t)0x4841af, (q31_t)0x41f931, (q31_t)0x3bb0b3, - (q31_t)0x356835, - (q31_t)0x2f1fb6, (q31_t)0x28d738, (q31_t)0x228eb9, (q31_t)0x1c463b, (q31_t)0x15fdbc, (q31_t)0xfb53d, (q31_t)0x96cbe, (q31_t)0x3243f -}; - -/** - * @} end of DCT4_IDCT4_Table group - */ - -/** - * @addtogroup DCT4_IDCT4 - * @{ - */ - -/** - * @brief Initialization function for the Q31 DCT4/IDCT4. - * @param[in,out] *S points to an instance of Q31 DCT4/IDCT4 structure. - * @param[in] *S_RFFT points to an instance of Q31 RFFT/RIFFT structure - * @param[in] *S_CFFT points to an instance of Q31 CFFT/CIFFT structure - * @param[in] N length of the DCT4. - * @param[in] Nby2 half of the length of the DCT4. - * @param[in] normalize normalizing factor. - * @return arm_status function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if N is not a supported transform length. - * \par Normalizing factor: - * The normalizing factor is sqrt(2/N), which depends on the size of transform N. - * Normalizing factors in 1.31 format are mentioned in the table below for different DCT sizes: - * \image html dct4NormalizingQ31Table.gif - */ - -arm_status arm_dct4_init_q31( - arm_dct4_instance_q31 * S, - arm_rfft_instance_q31 * S_RFFT, - arm_cfft_radix4_instance_q31 * S_CFFT, - uint16_t N, - uint16_t Nby2, - q31_t normalize) -{ - /* Initialise the default arm status */ - arm_status status = ARM_MATH_SUCCESS; - - /* Initializing the pointer array with the weight table base addresses of different lengths */ - q31_t *twiddlePtr[4] = { (q31_t *) WeightsQ31_128, (q31_t *) WeightsQ31_512, - (q31_t *) WeightsQ31_2048, (q31_t *) WeightsQ31_8192 - }; - - /* Initializing the pointer array with the cos factor table base addresses of different lengths */ - q31_t *pCosFactor[4] = - { (q31_t *) cos_factorsQ31_128, (q31_t *) cos_factorsQ31_512, - (q31_t *) cos_factorsQ31_2048, (q31_t *) cos_factorsQ31_8192 - }; - - /* Initialize the DCT4 length */ - S->N = N; - - /* Initialize the half of DCT4 length */ - S->Nby2 = Nby2; - - /* Initialize the DCT4 Normalizing factor */ - S->normalize = normalize; - - /* Initialize Real FFT Instance */ - S->pRfft = S_RFFT; - - /* Initialize Complex FFT Instance */ - S->pCfft = S_CFFT; - - switch (N) - { - /* Initialize the table modifier values */ - case 8192U: - S->pTwiddle = twiddlePtr[3]; - S->pCosFactor = pCosFactor[3]; - break; - case 2048U: - S->pTwiddle = twiddlePtr[2]; - S->pCosFactor = pCosFactor[2]; - break; - case 512U: - S->pTwiddle = twiddlePtr[1]; - S->pCosFactor = pCosFactor[1]; - break; - case 128U: - S->pTwiddle = twiddlePtr[0]; - S->pCosFactor = pCosFactor[0]; - break; - default: - status = ARM_MATH_ARGUMENT_ERROR; - } - - /* Initialize the RFFT/RIFFT Function */ - arm_rfft_init_q31(S->pRfft, S->N, 0, 1); - - /* return the status of DCT4 Init function */ - return (status); -} - -/** - * @} end of DCT4_IDCT4 group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_dct4_q15.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_dct4_q15.c deleted file mode 100644 index 918f0bd..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_dct4_q15.c +++ /dev/null @@ -1,382 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_dct4_q15.c - * Description: Processing function of DCT4 & IDCT4 Q15 - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @addtogroup DCT4_IDCT4 - * @{ - */ - -/** - * @brief Processing function for the Q15 DCT4/IDCT4. - * @param[in] *S points to an instance of the Q15 DCT4 structure. - * @param[in] *pState points to state buffer. - * @param[in,out] *pInlineBuffer points to the in-place input and output buffer. - * @return none. - * - * \par Input an output formats: - * Internally inputs are downscaled in the RFFT process function to avoid overflows. - * Number of bits downscaled, depends on the size of the transform. - * The input and output formats for different DCT sizes and number of bits to upscale are mentioned in the table below: - * - * \image html dct4FormatsQ15Table.gif - */ - -void arm_dct4_q15( - const arm_dct4_instance_q15 * S, - q15_t * pState, - q15_t * pInlineBuffer) -{ - uint32_t i; /* Loop counter */ - q15_t *weights = S->pTwiddle; /* Pointer to the Weights table */ - q15_t *cosFact = S->pCosFactor; /* Pointer to the cos factors table */ - q15_t *pS1, *pS2, *pbuff; /* Temporary pointers for input buffer and pState buffer */ - q15_t in; /* Temporary variable */ - - - /* DCT4 computation involves DCT2 (which is calculated using RFFT) - * along with some pre-processing and post-processing. - * Computational procedure is explained as follows: - * (a) Pre-processing involves multiplying input with cos factor, - * r(n) = 2 * u(n) * cos(pi*(2*n+1)/(4*n)) - * where, - * r(n) -- output of preprocessing - * u(n) -- input to preprocessing(actual Source buffer) - * (b) Calculation of DCT2 using FFT is divided into three steps: - * Step1: Re-ordering of even and odd elements of input. - * Step2: Calculating FFT of the re-ordered input. - * Step3: Taking the real part of the product of FFT output and weights. - * (c) Post-processing - DCT4 can be obtained from DCT2 output using the following equation: - * Y4(k) = Y2(k) - Y4(k-1) and Y4(-1) = Y4(0) - * where, - * Y4 -- DCT4 output, Y2 -- DCT2 output - * (d) Multiplying the output with the normalizing factor sqrt(2/N). - */ - - /*-------- Pre-processing ------------*/ - /* Multiplying input with cos factor i.e. r(n) = 2 * x(n) * cos(pi*(2*n+1)/(4*n)) */ - arm_mult_q15(pInlineBuffer, cosFact, pInlineBuffer, S->N); - arm_shift_q15(pInlineBuffer, 1, pInlineBuffer, S->N); - - /* ---------------------------------------------------------------- - * Step1: Re-ordering of even and odd elements as - * pState[i] = pInlineBuffer[2*i] and - * pState[N-i-1] = pInlineBuffer[2*i+1] where i = 0 to N/2 - ---------------------------------------------------------------------*/ - - /* pS1 initialized to pState */ - pS1 = pState; - - /* pS2 initialized to pState+N-1, so that it points to the end of the state buffer */ - pS2 = pState + (S->N - 1U); - - /* pbuff initialized to input buffer */ - pbuff = pInlineBuffer; - - -#if defined (ARM_MATH_DSP) - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - /* Initializing the loop counter to N/2 >> 2 for loop unrolling by 4 */ - i = (uint32_t) S->Nby2 >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - do - { - /* Re-ordering of even and odd elements */ - /* pState[i] = pInlineBuffer[2*i] */ - *pS1++ = *pbuff++; - /* pState[N-i-1] = pInlineBuffer[2*i+1] */ - *pS2-- = *pbuff++; - - *pS1++ = *pbuff++; - *pS2-- = *pbuff++; - - *pS1++ = *pbuff++; - *pS2-- = *pbuff++; - - *pS1++ = *pbuff++; - *pS2-- = *pbuff++; - - /* Decrement the loop counter */ - i--; - } while (i > 0U); - - /* pbuff initialized to input buffer */ - pbuff = pInlineBuffer; - - /* pS1 initialized to pState */ - pS1 = pState; - - /* Initializing the loop counter to N/4 instead of N for loop unrolling */ - i = (uint32_t) S->N >> 2U; - - /* Processing with loop unrolling 4 times as N is always multiple of 4. - * Compute 4 outputs at a time */ - do - { - /* Writing the re-ordered output back to inplace input buffer */ - *pbuff++ = *pS1++; - *pbuff++ = *pS1++; - *pbuff++ = *pS1++; - *pbuff++ = *pS1++; - - /* Decrement the loop counter */ - i--; - } while (i > 0U); - - - /* --------------------------------------------------------- - * Step2: Calculate RFFT for N-point input - * ---------------------------------------------------------- */ - /* pInlineBuffer is real input of length N , pState is the complex output of length 2N */ - arm_rfft_q15(S->pRfft, pInlineBuffer, pState); - - /*---------------------------------------------------------------------- - * Step3: Multiply the FFT output with the weights. - *----------------------------------------------------------------------*/ - arm_cmplx_mult_cmplx_q15(pState, weights, pState, S->N); - - /* The output of complex multiplication is in 3.13 format. - * Hence changing the format of N (i.e. 2*N elements) complex numbers to 1.15 format by shifting left by 2 bits. */ - arm_shift_q15(pState, 2, pState, S->N * 2); - - /* ----------- Post-processing ---------- */ - /* DCT-IV can be obtained from DCT-II by the equation, - * Y4(k) = Y2(k) - Y4(k-1) and Y4(-1) = Y4(0) - * Hence, Y4(0) = Y2(0)/2 */ - /* Getting only real part from the output and Converting to DCT-IV */ - - /* Initializing the loop counter to N >> 2 for loop unrolling by 4 */ - i = ((uint32_t) S->N - 1U) >> 2U; - - /* pbuff initialized to input buffer. */ - pbuff = pInlineBuffer; - - /* pS1 initialized to pState */ - pS1 = pState; - - /* Calculating Y4(0) from Y2(0) using Y4(0) = Y2(0)/2 */ - in = *pS1++ >> 1U; - /* input buffer acts as inplace, so output values are stored in the input itself. */ - *pbuff++ = in; - - /* pState pointer is incremented twice as the real values are located alternatively in the array */ - pS1++; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - do - { - /* Calculating Y4(1) to Y4(N-1) from Y2 using equation Y4(k) = Y2(k) - Y4(k-1) */ - /* pState pointer (pS1) is incremented twice as the real values are located alternatively in the array */ - in = *pS1++ - in; - *pbuff++ = in; - /* points to the next real value */ - pS1++; - - in = *pS1++ - in; - *pbuff++ = in; - pS1++; - - in = *pS1++ - in; - *pbuff++ = in; - pS1++; - - in = *pS1++ - in; - *pbuff++ = in; - pS1++; - - /* Decrement the loop counter */ - i--; - } while (i > 0U); - - /* If the blockSize is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - i = ((uint32_t) S->N - 1U) % 0x4U; - - while (i > 0U) - { - /* Calculating Y4(1) to Y4(N-1) from Y2 using equation Y4(k) = Y2(k) - Y4(k-1) */ - /* pState pointer (pS1) is incremented twice as the real values are located alternatively in the array */ - in = *pS1++ - in; - *pbuff++ = in; - /* points to the next real value */ - pS1++; - - /* Decrement the loop counter */ - i--; - } - - - /*------------ Normalizing the output by multiplying with the normalizing factor ----------*/ - - /* Initializing the loop counter to N/4 instead of N for loop unrolling */ - i = (uint32_t) S->N >> 2U; - - /* pbuff initialized to the pInlineBuffer(now contains the output values) */ - pbuff = pInlineBuffer; - - /* Processing with loop unrolling 4 times as N is always multiple of 4. Compute 4 outputs at a time */ - do - { - /* Multiplying pInlineBuffer with the normalizing factor sqrt(2/N) */ - in = *pbuff; - *pbuff++ = ((q15_t) (((q31_t) in * S->normalize) >> 15)); - - in = *pbuff; - *pbuff++ = ((q15_t) (((q31_t) in * S->normalize) >> 15)); - - in = *pbuff; - *pbuff++ = ((q15_t) (((q31_t) in * S->normalize) >> 15)); - - in = *pbuff; - *pbuff++ = ((q15_t) (((q31_t) in * S->normalize) >> 15)); - - /* Decrement the loop counter */ - i--; - } while (i > 0U); - - -#else - - /* Run the below code for Cortex-M0 */ - - /* Initializing the loop counter to N/2 */ - i = (uint32_t) S->Nby2; - - do - { - /* Re-ordering of even and odd elements */ - /* pState[i] = pInlineBuffer[2*i] */ - *pS1++ = *pbuff++; - /* pState[N-i-1] = pInlineBuffer[2*i+1] */ - *pS2-- = *pbuff++; - - /* Decrement the loop counter */ - i--; - } while (i > 0U); - - /* pbuff initialized to input buffer */ - pbuff = pInlineBuffer; - - /* pS1 initialized to pState */ - pS1 = pState; - - /* Initializing the loop counter */ - i = (uint32_t) S->N; - - do - { - /* Writing the re-ordered output back to inplace input buffer */ - *pbuff++ = *pS1++; - - /* Decrement the loop counter */ - i--; - } while (i > 0U); - - - /* --------------------------------------------------------- - * Step2: Calculate RFFT for N-point input - * ---------------------------------------------------------- */ - /* pInlineBuffer is real input of length N , pState is the complex output of length 2N */ - arm_rfft_q15(S->pRfft, pInlineBuffer, pState); - - /*---------------------------------------------------------------------- - * Step3: Multiply the FFT output with the weights. - *----------------------------------------------------------------------*/ - arm_cmplx_mult_cmplx_q15(pState, weights, pState, S->N); - - /* The output of complex multiplication is in 3.13 format. - * Hence changing the format of N (i.e. 2*N elements) complex numbers to 1.15 format by shifting left by 2 bits. */ - arm_shift_q15(pState, 2, pState, S->N * 2); - - /* ----------- Post-processing ---------- */ - /* DCT-IV can be obtained from DCT-II by the equation, - * Y4(k) = Y2(k) - Y4(k-1) and Y4(-1) = Y4(0) - * Hence, Y4(0) = Y2(0)/2 */ - /* Getting only real part from the output and Converting to DCT-IV */ - - /* Initializing the loop counter */ - i = ((uint32_t) S->N - 1U); - - /* pbuff initialized to input buffer. */ - pbuff = pInlineBuffer; - - /* pS1 initialized to pState */ - pS1 = pState; - - /* Calculating Y4(0) from Y2(0) using Y4(0) = Y2(0)/2 */ - in = *pS1++ >> 1U; - /* input buffer acts as inplace, so output values are stored in the input itself. */ - *pbuff++ = in; - - /* pState pointer is incremented twice as the real values are located alternatively in the array */ - pS1++; - - do - { - /* Calculating Y4(1) to Y4(N-1) from Y2 using equation Y4(k) = Y2(k) - Y4(k-1) */ - /* pState pointer (pS1) is incremented twice as the real values are located alternatively in the array */ - in = *pS1++ - in; - *pbuff++ = in; - /* points to the next real value */ - pS1++; - - /* Decrement the loop counter */ - i--; - } while (i > 0U); - - /*------------ Normalizing the output by multiplying with the normalizing factor ----------*/ - - /* Initializing the loop counter */ - i = (uint32_t) S->N; - - /* pbuff initialized to the pInlineBuffer(now contains the output values) */ - pbuff = pInlineBuffer; - - do - { - /* Multiplying pInlineBuffer with the normalizing factor sqrt(2/N) */ - in = *pbuff; - *pbuff++ = ((q15_t) (((q31_t) in * S->normalize) >> 15)); - - /* Decrement the loop counter */ - i--; - } while (i > 0U); - -#endif /* #if defined (ARM_MATH_DSP) */ - -} - -/** - * @} end of DCT4_IDCT4 group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_dct4_q31.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_dct4_q31.c deleted file mode 100644 index 0569778..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_dct4_q31.c +++ /dev/null @@ -1,383 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_dct4_q31.c - * Description: Processing function of DCT4 & IDCT4 Q31 - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @addtogroup DCT4_IDCT4 - * @{ - */ - -/** - * @brief Processing function for the Q31 DCT4/IDCT4. - * @param[in] *S points to an instance of the Q31 DCT4 structure. - * @param[in] *pState points to state buffer. - * @param[in,out] *pInlineBuffer points to the in-place input and output buffer. - * @return none. - * \par Input an output formats: - * Input samples need to be downscaled by 1 bit to avoid saturations in the Q31 DCT process, - * as the conversion from DCT2 to DCT4 involves one subtraction. - * Internally inputs are downscaled in the RFFT process function to avoid overflows. - * Number of bits downscaled, depends on the size of the transform. - * The input and output formats for different DCT sizes and number of bits to upscale are mentioned in the table below: - * - * \image html dct4FormatsQ31Table.gif - */ - -void arm_dct4_q31( - const arm_dct4_instance_q31 * S, - q31_t * pState, - q31_t * pInlineBuffer) -{ - uint16_t i; /* Loop counter */ - q31_t *weights = S->pTwiddle; /* Pointer to the Weights table */ - q31_t *cosFact = S->pCosFactor; /* Pointer to the cos factors table */ - q31_t *pS1, *pS2, *pbuff; /* Temporary pointers for input buffer and pState buffer */ - q31_t in; /* Temporary variable */ - - - /* DCT4 computation involves DCT2 (which is calculated using RFFT) - * along with some pre-processing and post-processing. - * Computational procedure is explained as follows: - * (a) Pre-processing involves multiplying input with cos factor, - * r(n) = 2 * u(n) * cos(pi*(2*n+1)/(4*n)) - * where, - * r(n) -- output of preprocessing - * u(n) -- input to preprocessing(actual Source buffer) - * (b) Calculation of DCT2 using FFT is divided into three steps: - * Step1: Re-ordering of even and odd elements of input. - * Step2: Calculating FFT of the re-ordered input. - * Step3: Taking the real part of the product of FFT output and weights. - * (c) Post-processing - DCT4 can be obtained from DCT2 output using the following equation: - * Y4(k) = Y2(k) - Y4(k-1) and Y4(-1) = Y4(0) - * where, - * Y4 -- DCT4 output, Y2 -- DCT2 output - * (d) Multiplying the output with the normalizing factor sqrt(2/N). - */ - - /*-------- Pre-processing ------------*/ - /* Multiplying input with cos factor i.e. r(n) = 2 * x(n) * cos(pi*(2*n+1)/(4*n)) */ - arm_mult_q31(pInlineBuffer, cosFact, pInlineBuffer, S->N); - arm_shift_q31(pInlineBuffer, 1, pInlineBuffer, S->N); - - /* ---------------------------------------------------------------- - * Step1: Re-ordering of even and odd elements as - * pState[i] = pInlineBuffer[2*i] and - * pState[N-i-1] = pInlineBuffer[2*i+1] where i = 0 to N/2 - ---------------------------------------------------------------------*/ - - /* pS1 initialized to pState */ - pS1 = pState; - - /* pS2 initialized to pState+N-1, so that it points to the end of the state buffer */ - pS2 = pState + (S->N - 1U); - - /* pbuff initialized to input buffer */ - pbuff = pInlineBuffer; - -#if defined (ARM_MATH_DSP) - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - - /* Initializing the loop counter to N/2 >> 2 for loop unrolling by 4 */ - i = S->Nby2 >> 2U; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - do - { - /* Re-ordering of even and odd elements */ - /* pState[i] = pInlineBuffer[2*i] */ - *pS1++ = *pbuff++; - /* pState[N-i-1] = pInlineBuffer[2*i+1] */ - *pS2-- = *pbuff++; - - *pS1++ = *pbuff++; - *pS2-- = *pbuff++; - - *pS1++ = *pbuff++; - *pS2-- = *pbuff++; - - *pS1++ = *pbuff++; - *pS2-- = *pbuff++; - - /* Decrement the loop counter */ - i--; - } while (i > 0U); - - /* pbuff initialized to input buffer */ - pbuff = pInlineBuffer; - - /* pS1 initialized to pState */ - pS1 = pState; - - /* Initializing the loop counter to N/4 instead of N for loop unrolling */ - i = S->N >> 2U; - - /* Processing with loop unrolling 4 times as N is always multiple of 4. - * Compute 4 outputs at a time */ - do - { - /* Writing the re-ordered output back to inplace input buffer */ - *pbuff++ = *pS1++; - *pbuff++ = *pS1++; - *pbuff++ = *pS1++; - *pbuff++ = *pS1++; - - /* Decrement the loop counter */ - i--; - } while (i > 0U); - - - /* --------------------------------------------------------- - * Step2: Calculate RFFT for N-point input - * ---------------------------------------------------------- */ - /* pInlineBuffer is real input of length N , pState is the complex output of length 2N */ - arm_rfft_q31(S->pRfft, pInlineBuffer, pState); - - /*---------------------------------------------------------------------- - * Step3: Multiply the FFT output with the weights. - *----------------------------------------------------------------------*/ - arm_cmplx_mult_cmplx_q31(pState, weights, pState, S->N); - - /* The output of complex multiplication is in 3.29 format. - * Hence changing the format of N (i.e. 2*N elements) complex numbers to 1.31 format by shifting left by 2 bits. */ - arm_shift_q31(pState, 2, pState, S->N * 2); - - /* ----------- Post-processing ---------- */ - /* DCT-IV can be obtained from DCT-II by the equation, - * Y4(k) = Y2(k) - Y4(k-1) and Y4(-1) = Y4(0) - * Hence, Y4(0) = Y2(0)/2 */ - /* Getting only real part from the output and Converting to DCT-IV */ - - /* Initializing the loop counter to N >> 2 for loop unrolling by 4 */ - i = (S->N - 1U) >> 2U; - - /* pbuff initialized to input buffer. */ - pbuff = pInlineBuffer; - - /* pS1 initialized to pState */ - pS1 = pState; - - /* Calculating Y4(0) from Y2(0) using Y4(0) = Y2(0)/2 */ - in = *pS1++ >> 1U; - /* input buffer acts as inplace, so output values are stored in the input itself. */ - *pbuff++ = in; - - /* pState pointer is incremented twice as the real values are located alternatively in the array */ - pS1++; - - /* First part of the processing with loop unrolling. Compute 4 outputs at a time. - ** a second loop below computes the remaining 1 to 3 samples. */ - do - { - /* Calculating Y4(1) to Y4(N-1) from Y2 using equation Y4(k) = Y2(k) - Y4(k-1) */ - /* pState pointer (pS1) is incremented twice as the real values are located alternatively in the array */ - in = *pS1++ - in; - *pbuff++ = in; - /* points to the next real value */ - pS1++; - - in = *pS1++ - in; - *pbuff++ = in; - pS1++; - - in = *pS1++ - in; - *pbuff++ = in; - pS1++; - - in = *pS1++ - in; - *pbuff++ = in; - pS1++; - - /* Decrement the loop counter */ - i--; - } while (i > 0U); - - /* If the blockSize is not a multiple of 4, compute any remaining output samples here. - ** No loop unrolling is used. */ - i = (S->N - 1U) % 0x4U; - - while (i > 0U) - { - /* Calculating Y4(1) to Y4(N-1) from Y2 using equation Y4(k) = Y2(k) - Y4(k-1) */ - /* pState pointer (pS1) is incremented twice as the real values are located alternatively in the array */ - in = *pS1++ - in; - *pbuff++ = in; - /* points to the next real value */ - pS1++; - - /* Decrement the loop counter */ - i--; - } - - - /*------------ Normalizing the output by multiplying with the normalizing factor ----------*/ - - /* Initializing the loop counter to N/4 instead of N for loop unrolling */ - i = S->N >> 2U; - - /* pbuff initialized to the pInlineBuffer(now contains the output values) */ - pbuff = pInlineBuffer; - - /* Processing with loop unrolling 4 times as N is always multiple of 4. Compute 4 outputs at a time */ - do - { - /* Multiplying pInlineBuffer with the normalizing factor sqrt(2/N) */ - in = *pbuff; - *pbuff++ = ((q31_t) (((q63_t) in * S->normalize) >> 31)); - - in = *pbuff; - *pbuff++ = ((q31_t) (((q63_t) in * S->normalize) >> 31)); - - in = *pbuff; - *pbuff++ = ((q31_t) (((q63_t) in * S->normalize) >> 31)); - - in = *pbuff; - *pbuff++ = ((q31_t) (((q63_t) in * S->normalize) >> 31)); - - /* Decrement the loop counter */ - i--; - } while (i > 0U); - - -#else - - /* Run the below code for Cortex-M0 */ - - /* Initializing the loop counter to N/2 */ - i = S->Nby2; - - do - { - /* Re-ordering of even and odd elements */ - /* pState[i] = pInlineBuffer[2*i] */ - *pS1++ = *pbuff++; - /* pState[N-i-1] = pInlineBuffer[2*i+1] */ - *pS2-- = *pbuff++; - - /* Decrement the loop counter */ - i--; - } while (i > 0U); - - /* pbuff initialized to input buffer */ - pbuff = pInlineBuffer; - - /* pS1 initialized to pState */ - pS1 = pState; - - /* Initializing the loop counter */ - i = S->N; - - do - { - /* Writing the re-ordered output back to inplace input buffer */ - *pbuff++ = *pS1++; - - /* Decrement the loop counter */ - i--; - } while (i > 0U); - - - /* --------------------------------------------------------- - * Step2: Calculate RFFT for N-point input - * ---------------------------------------------------------- */ - /* pInlineBuffer is real input of length N , pState is the complex output of length 2N */ - arm_rfft_q31(S->pRfft, pInlineBuffer, pState); - - /*---------------------------------------------------------------------- - * Step3: Multiply the FFT output with the weights. - *----------------------------------------------------------------------*/ - arm_cmplx_mult_cmplx_q31(pState, weights, pState, S->N); - - /* The output of complex multiplication is in 3.29 format. - * Hence changing the format of N (i.e. 2*N elements) complex numbers to 1.31 format by shifting left by 2 bits. */ - arm_shift_q31(pState, 2, pState, S->N * 2); - - /* ----------- Post-processing ---------- */ - /* DCT-IV can be obtained from DCT-II by the equation, - * Y4(k) = Y2(k) - Y4(k-1) and Y4(-1) = Y4(0) - * Hence, Y4(0) = Y2(0)/2 */ - /* Getting only real part from the output and Converting to DCT-IV */ - - /* pbuff initialized to input buffer. */ - pbuff = pInlineBuffer; - - /* pS1 initialized to pState */ - pS1 = pState; - - /* Calculating Y4(0) from Y2(0) using Y4(0) = Y2(0)/2 */ - in = *pS1++ >> 1U; - /* input buffer acts as inplace, so output values are stored in the input itself. */ - *pbuff++ = in; - - /* pState pointer is incremented twice as the real values are located alternatively in the array */ - pS1++; - - /* Initializing the loop counter */ - i = (S->N - 1U); - - while (i > 0U) - { - /* Calculating Y4(1) to Y4(N-1) from Y2 using equation Y4(k) = Y2(k) - Y4(k-1) */ - /* pState pointer (pS1) is incremented twice as the real values are located alternatively in the array */ - in = *pS1++ - in; - *pbuff++ = in; - /* points to the next real value */ - pS1++; - - /* Decrement the loop counter */ - i--; - } - - - /*------------ Normalizing the output by multiplying with the normalizing factor ----------*/ - - /* Initializing the loop counter */ - i = S->N; - - /* pbuff initialized to the pInlineBuffer(now contains the output values) */ - pbuff = pInlineBuffer; - - do - { - /* Multiplying pInlineBuffer with the normalizing factor sqrt(2/N) */ - in = *pbuff; - *pbuff++ = ((q31_t) (((q63_t) in * S->normalize) >> 31)); - - /* Decrement the loop counter */ - i--; - } while (i > 0U); - -#endif /* #if defined (ARM_MATH_DSP) */ - -} - -/** - * @} end of DCT4_IDCT4 group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_rfft_f32.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_rfft_f32.c deleted file mode 100644 index a1bd81b..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_rfft_f32.c +++ /dev/null @@ -1,318 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_rfft_f32.c - * Description: RFFT & RIFFT Floating point process function - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/* ---------------------------------------------------------------------- - * Internal functions prototypes - * -------------------------------------------------------------------- */ - -extern void arm_radix4_butterfly_f32( - float32_t * pSrc, - uint16_t fftLen, - float32_t * pCoef, - uint16_t twidCoefModifier); - -extern void arm_radix4_butterfly_inverse_f32( - float32_t * pSrc, - uint16_t fftLen, - float32_t * pCoef, - uint16_t twidCoefModifier, - float32_t onebyfftLen); - -extern void arm_bitreversal_f32( - float32_t * pSrc, - uint16_t fftSize, - uint16_t bitRevFactor, - uint16_t * pBitRevTab); - -void arm_split_rfft_f32( - float32_t * pSrc, - uint32_t fftLen, - float32_t * pATable, - float32_t * pBTable, - float32_t * pDst, - uint32_t modifier); - -void arm_split_rifft_f32( - float32_t * pSrc, - uint32_t fftLen, - float32_t * pATable, - float32_t * pBTable, - float32_t * pDst, - uint32_t modifier); - -/** -* @ingroup groupTransforms -*/ - -/** - * @addtogroup RealFFT - * @{ - */ - -/** - * @brief Processing function for the floating-point RFFT/RIFFT. - * @deprecated Do not use this function. It has been superceded by \ref arm_rfft_fast_f32 and will be removed - * in the future. - * @param[in] *S points to an instance of the floating-point RFFT/RIFFT structure. - * @param[in] *pSrc points to the input buffer. - * @param[out] *pDst points to the output buffer. - * @return none. - */ - -void arm_rfft_f32( - const arm_rfft_instance_f32 * S, - float32_t * pSrc, - float32_t * pDst) -{ - const arm_cfft_radix4_instance_f32 *S_CFFT = S->pCfft; - - - /* Calculation of Real IFFT of input */ - if (S->ifftFlagR == 1U) - { - /* Real IFFT core process */ - arm_split_rifft_f32(pSrc, S->fftLenBy2, S->pTwiddleAReal, - S->pTwiddleBReal, pDst, S->twidCoefRModifier); - - - /* Complex radix-4 IFFT process */ - arm_radix4_butterfly_inverse_f32(pDst, S_CFFT->fftLen, - S_CFFT->pTwiddle, - S_CFFT->twidCoefModifier, - S_CFFT->onebyfftLen); - - /* Bit reversal process */ - if (S->bitReverseFlagR == 1U) - { - arm_bitreversal_f32(pDst, S_CFFT->fftLen, - S_CFFT->bitRevFactor, S_CFFT->pBitRevTable); - } - } - else - { - - /* Calculation of RFFT of input */ - - /* Complex radix-4 FFT process */ - arm_radix4_butterfly_f32(pSrc, S_CFFT->fftLen, - S_CFFT->pTwiddle, S_CFFT->twidCoefModifier); - - /* Bit reversal process */ - if (S->bitReverseFlagR == 1U) - { - arm_bitreversal_f32(pSrc, S_CFFT->fftLen, - S_CFFT->bitRevFactor, S_CFFT->pBitRevTable); - } - - - /* Real FFT core process */ - arm_split_rfft_f32(pSrc, S->fftLenBy2, S->pTwiddleAReal, - S->pTwiddleBReal, pDst, S->twidCoefRModifier); - } - -} - -/** - * @} end of RealFFT group - */ - -/** - * @brief Core Real FFT process - * @param[in] *pSrc points to the input buffer. - * @param[in] fftLen length of FFT. - * @param[in] *pATable points to the twiddle Coef A buffer. - * @param[in] *pBTable points to the twiddle Coef B buffer. - * @param[out] *pDst points to the output buffer. - * @param[in] modifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. - * @return none. - */ - -void arm_split_rfft_f32( - float32_t * pSrc, - uint32_t fftLen, - float32_t * pATable, - float32_t * pBTable, - float32_t * pDst, - uint32_t modifier) -{ - uint32_t i; /* Loop Counter */ - float32_t outR, outI; /* Temporary variables for output */ - float32_t *pCoefA, *pCoefB; /* Temporary pointers for twiddle factors */ - float32_t CoefA1, CoefA2, CoefB1; /* Temporary variables for twiddle coefficients */ - float32_t *pDst1 = &pDst[2], *pDst2 = &pDst[(4U * fftLen) - 1U]; /* temp pointers for output buffer */ - float32_t *pSrc1 = &pSrc[2], *pSrc2 = &pSrc[(2U * fftLen) - 1U]; /* temp pointers for input buffer */ - - /* Init coefficient pointers */ - pCoefA = &pATable[modifier * 2U]; - pCoefB = &pBTable[modifier * 2U]; - - i = fftLen - 1U; - - while (i > 0U) - { - /* - outR = (pSrc[2 * i] * pATable[2 * i] - pSrc[2 * i + 1] * pATable[2 * i + 1] - + pSrc[2 * n - 2 * i] * pBTable[2 * i] + - pSrc[2 * n - 2 * i + 1] * pBTable[2 * i + 1]); - */ - - /* outI = (pIn[2 * i + 1] * pATable[2 * i] + pIn[2 * i] * pATable[2 * i + 1] + - pIn[2 * n - 2 * i] * pBTable[2 * i + 1] - - pIn[2 * n - 2 * i + 1] * pBTable[2 * i]); */ - - /* read pATable[2 * i] */ - CoefA1 = *pCoefA++; - /* pATable[2 * i + 1] */ - CoefA2 = *pCoefA; - - /* pSrc[2 * i] * pATable[2 * i] */ - outR = *pSrc1 * CoefA1; - /* pSrc[2 * i] * CoefA2 */ - outI = *pSrc1++ * CoefA2; - - /* (pSrc[2 * i + 1] + pSrc[2 * fftLen - 2 * i + 1]) * CoefA2 */ - outR -= (*pSrc1 + *pSrc2) * CoefA2; - /* pSrc[2 * i + 1] * CoefA1 */ - outI += *pSrc1++ * CoefA1; - - CoefB1 = *pCoefB; - - /* pSrc[2 * fftLen - 2 * i + 1] * CoefB1 */ - outI -= *pSrc2-- * CoefB1; - /* pSrc[2 * fftLen - 2 * i] * CoefA2 */ - outI -= *pSrc2 * CoefA2; - - /* pSrc[2 * fftLen - 2 * i] * CoefB1 */ - outR += *pSrc2-- * CoefB1; - - /* write output */ - *pDst1++ = outR; - *pDst1++ = outI; - - /* write complex conjugate output */ - *pDst2-- = -outI; - *pDst2-- = outR; - - /* update coefficient pointer */ - pCoefB = pCoefB + (modifier * 2U); - pCoefA = pCoefA + ((modifier * 2U) - 1U); - - i--; - - } - - pDst[2U * fftLen] = pSrc[0] - pSrc[1]; - pDst[(2U * fftLen) + 1U] = 0.0f; - - pDst[0] = pSrc[0] + pSrc[1]; - pDst[1] = 0.0f; - -} - - -/** - * @brief Core Real IFFT process - * @param[in] *pSrc points to the input buffer. - * @param[in] fftLen length of FFT. - * @param[in] *pATable points to the twiddle Coef A buffer. - * @param[in] *pBTable points to the twiddle Coef B buffer. - * @param[out] *pDst points to the output buffer. - * @param[in] modifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. - * @return none. - */ - -void arm_split_rifft_f32( - float32_t * pSrc, - uint32_t fftLen, - float32_t * pATable, - float32_t * pBTable, - float32_t * pDst, - uint32_t modifier) -{ - float32_t outR, outI; /* Temporary variables for output */ - float32_t *pCoefA, *pCoefB; /* Temporary pointers for twiddle factors */ - float32_t CoefA1, CoefA2, CoefB1; /* Temporary variables for twiddle coefficients */ - float32_t *pSrc1 = &pSrc[0], *pSrc2 = &pSrc[(2U * fftLen) + 1U]; - - pCoefA = &pATable[0]; - pCoefB = &pBTable[0]; - - while (fftLen > 0U) - { - /* - outR = (pIn[2 * i] * pATable[2 * i] + pIn[2 * i + 1] * pATable[2 * i + 1] + - pIn[2 * n - 2 * i] * pBTable[2 * i] - - pIn[2 * n - 2 * i + 1] * pBTable[2 * i + 1]); - - outI = (pIn[2 * i + 1] * pATable[2 * i] - pIn[2 * i] * pATable[2 * i + 1] - - pIn[2 * n - 2 * i] * pBTable[2 * i + 1] - - pIn[2 * n - 2 * i + 1] * pBTable[2 * i]); - - */ - - CoefA1 = *pCoefA++; - CoefA2 = *pCoefA; - - /* outR = (pSrc[2 * i] * CoefA1 */ - outR = *pSrc1 * CoefA1; - - /* - pSrc[2 * i] * CoefA2 */ - outI = -(*pSrc1++) * CoefA2; - - /* (pSrc[2 * i + 1] + pSrc[2 * fftLen - 2 * i + 1]) * CoefA2 */ - outR += (*pSrc1 + *pSrc2) * CoefA2; - - /* pSrc[2 * i + 1] * CoefA1 */ - outI += (*pSrc1++) * CoefA1; - - CoefB1 = *pCoefB; - - /* - pSrc[2 * fftLen - 2 * i + 1] * CoefB1 */ - outI -= *pSrc2-- * CoefB1; - - /* pSrc[2 * fftLen - 2 * i] * CoefB1 */ - outR += *pSrc2 * CoefB1; - - /* pSrc[2 * fftLen - 2 * i] * CoefA2 */ - outI += *pSrc2-- * CoefA2; - - /* write output */ - *pDst++ = outR; - *pDst++ = outI; - - /* update coefficient pointer */ - pCoefB = pCoefB + (modifier * 2U); - pCoefA = pCoefA + ((modifier * 2U) - 1U); - - /* Decrement loop count */ - fftLen--; - } - -} diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_rfft_fast_f32.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_rfft_fast_f32.c deleted file mode 100644 index f7c52e9..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_rfft_fast_f32.c +++ /dev/null @@ -1,317 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_rfft_f32.c - * Description: RFFT & RIFFT Floating point process function - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -void stage_rfft_f32( - arm_rfft_fast_instance_f32 * S, - float32_t * p, float32_t * pOut) -{ - uint32_t k; /* Loop Counter */ - float32_t twR, twI; /* RFFT Twiddle coefficients */ - float32_t * pCoeff = S->pTwiddleRFFT; /* Points to RFFT Twiddle factors */ - float32_t *pA = p; /* increasing pointer */ - float32_t *pB = p; /* decreasing pointer */ - float32_t xAR, xAI, xBR, xBI; /* temporary variables */ - float32_t t1a, t1b; /* temporary variables */ - float32_t p0, p1, p2, p3; /* temporary variables */ - - - k = (S->Sint).fftLen - 1; - - /* Pack first and last sample of the frequency domain together */ - - xBR = pB[0]; - xBI = pB[1]; - xAR = pA[0]; - xAI = pA[1]; - - twR = *pCoeff++ ; - twI = *pCoeff++ ; - - // U1 = XA(1) + XB(1); % It is real - t1a = xBR + xAR ; - - // U2 = XB(1) - XA(1); % It is imaginary - t1b = xBI + xAI ; - - // real(tw * (xB - xA)) = twR * (xBR - xAR) - twI * (xBI - xAI); - // imag(tw * (xB - xA)) = twI * (xBR - xAR) + twR * (xBI - xAI); - *pOut++ = 0.5f * ( t1a + t1b ); - *pOut++ = 0.5f * ( t1a - t1b ); - - // XA(1) = 1/2*( U1 - imag(U2) + i*( U1 +imag(U2) )); - pB = p + 2*k; - pA += 2; - - do - { - /* - function X = my_split_rfft(X, ifftFlag) - % X is a series of real numbers - L = length(X); - XC = X(1:2:end) +i*X(2:2:end); - XA = fft(XC); - XB = conj(XA([1 end:-1:2])); - TW = i*exp(-2*pi*i*[0:L/2-1]/L).'; - for l = 2:L/2 - XA(l) = 1/2 * (XA(l) + XB(l) + TW(l) * (XB(l) - XA(l))); - end - XA(1) = 1/2* (XA(1) + XB(1) + TW(1) * (XB(1) - XA(1))) + i*( 1/2*( XA(1) + XB(1) + i*( XA(1) - XB(1)))); - X = XA; - */ - - xBI = pB[1]; - xBR = pB[0]; - xAR = pA[0]; - xAI = pA[1]; - - twR = *pCoeff++; - twI = *pCoeff++; - - t1a = xBR - xAR ; - t1b = xBI + xAI ; - - // real(tw * (xB - xA)) = twR * (xBR - xAR) - twI * (xBI - xAI); - // imag(tw * (xB - xA)) = twI * (xBR - xAR) + twR * (xBI - xAI); - p0 = twR * t1a; - p1 = twI * t1a; - p2 = twR * t1b; - p3 = twI * t1b; - - *pOut++ = 0.5f * (xAR + xBR + p0 + p3 ); //xAR - *pOut++ = 0.5f * (xAI - xBI + p1 - p2 ); //xAI - - pA += 2; - pB -= 2; - k--; - } while (k > 0U); -} - -/* Prepares data for inverse cfft */ -void merge_rfft_f32( -arm_rfft_fast_instance_f32 * S, -float32_t * p, float32_t * pOut) -{ - uint32_t k; /* Loop Counter */ - float32_t twR, twI; /* RFFT Twiddle coefficients */ - float32_t *pCoeff = S->pTwiddleRFFT; /* Points to RFFT Twiddle factors */ - float32_t *pA = p; /* increasing pointer */ - float32_t *pB = p; /* decreasing pointer */ - float32_t xAR, xAI, xBR, xBI; /* temporary variables */ - float32_t t1a, t1b, r, s, t, u; /* temporary variables */ - - k = (S->Sint).fftLen - 1; - - xAR = pA[0]; - xAI = pA[1]; - - pCoeff += 2 ; - - *pOut++ = 0.5f * ( xAR + xAI ); - *pOut++ = 0.5f * ( xAR - xAI ); - - pB = p + 2*k ; - pA += 2 ; - - while (k > 0U) - { - /* G is half of the frequency complex spectrum */ - //for k = 2:N - // Xk(k) = 1/2 * (G(k) + conj(G(N-k+2)) + Tw(k)*( G(k) - conj(G(N-k+2)))); - xBI = pB[1] ; - xBR = pB[0] ; - xAR = pA[0]; - xAI = pA[1]; - - twR = *pCoeff++; - twI = *pCoeff++; - - t1a = xAR - xBR ; - t1b = xAI + xBI ; - - r = twR * t1a; - s = twI * t1b; - t = twI * t1a; - u = twR * t1b; - - // real(tw * (xA - xB)) = twR * (xAR - xBR) - twI * (xAI - xBI); - // imag(tw * (xA - xB)) = twI * (xAR - xBR) + twR * (xAI - xBI); - *pOut++ = 0.5f * (xAR + xBR - r - s ); //xAR - *pOut++ = 0.5f * (xAI - xBI + t - u ); //xAI - - pA += 2; - pB -= 2; - k--; - } - -} - -/** -* @ingroup groupTransforms -*/ - -/** - * @defgroup RealFFT Real FFT Functions - * - * \par - * The CMSIS DSP library includes specialized algorithms for computing the - * FFT of real data sequences. The FFT is defined over complex data but - * in many applications the input is real. Real FFT algorithms take advantage - * of the symmetry properties of the FFT and have a speed advantage over complex - * algorithms of the same length. - * \par - * The Fast RFFT algorith relays on the mixed radix CFFT that save processor usage. - * \par - * The real length N forward FFT of a sequence is computed using the steps shown below. - * \par - * \image html RFFT.gif "Real Fast Fourier Transform" - * \par - * The real sequence is initially treated as if it were complex to perform a CFFT. - * Later, a processing stage reshapes the data to obtain half of the frequency spectrum - * in complex format. Except the first complex number that contains the two real numbers - * X[0] and X[N/2] all the data is complex. In other words, the first complex sample - * contains two real values packed. - * \par - * The input for the inverse RFFT should keep the same format as the output of the - * forward RFFT. A first processing stage pre-process the data to later perform an - * inverse CFFT. - * \par - * \image html RIFFT.gif "Real Inverse Fast Fourier Transform" - * \par - * The algorithms for floating-point, Q15, and Q31 data are slightly different - * and we describe each algorithm in turn. - * \par Floating-point - * The main functions are arm_rfft_fast_f32() and arm_rfft_fast_init_f32(). - * The older functions arm_rfft_f32() and arm_rfft_init_f32() have been - * deprecated but are still documented. - * \par - * The FFT of a real N-point sequence has even symmetry in the frequency - * domain. The second half of the data equals the conjugate of the first - * half flipped in frequency. Looking at the data, we see that we can - * uniquely represent the FFT using only N/2 complex numbers. These are - * packed into the output array in alternating real and imaginary - * components: - * \par - * X = { real[0], imag[0], real[1], imag[1], real[2], imag[2] ... - * real[(N/2)-1], imag[(N/2)-1 } - * \par - * It happens that the first complex number (real[0], imag[0]) is actually - * all real. real[0] represents the DC offset, and imag[0] should be 0. - * (real[1], imag[1]) is the fundamental frequency, (real[2], imag[2]) is - * the first harmonic and so on. - * \par - * The real FFT functions pack the frequency domain data in this fashion. - * The forward transform outputs the data in this form and the inverse - * transform expects input data in this form. The function always performs - * the needed bitreversal so that the input and output data is always in - * normal order. The functions support lengths of [32, 64, 128, ..., 4096] - * samples. - * \par Q15 and Q31 - * The real algorithms are defined in a similar manner and utilize N/2 complex - * transforms behind the scenes. - * \par - * The complex transforms used internally include scaling to prevent fixed-point - * overflows. The overall scaling equals 1/(fftLen/2). - * \par - * A separate instance structure must be defined for each transform used but - * twiddle factor and bit reversal tables can be reused. - * \par - * There is also an associated initialization function for each data type. - * The initialization function performs the following operations: - * - Sets the values of the internal structure fields. - * - Initializes twiddle factor table and bit reversal table pointers. - * - Initializes the internal complex FFT data structure. - * \par - * Use of the initialization function is optional. - * However, if the initialization function is used, then the instance structure - * cannot be placed into a const data section. To place an instance structure - * into a const data section, the instance structure should be manually - * initialized as follows: - *
- *arm_rfft_instance_q31 S = {fftLenReal, fftLenBy2, ifftFlagR, bitReverseFlagR, twidCoefRModifier, pTwiddleAReal, pTwiddleBReal, pCfft};
- *arm_rfft_instance_q15 S = {fftLenReal, fftLenBy2, ifftFlagR, bitReverseFlagR, twidCoefRModifier, pTwiddleAReal, pTwiddleBReal, pCfft};
- * 
- * where fftLenReal is the length of the real transform; - * fftLenBy2 length of the internal complex transform. - * ifftFlagR Selects forward (=0) or inverse (=1) transform. - * bitReverseFlagR Selects bit reversed output (=0) or normal order - * output (=1). - * twidCoefRModifier stride modifier for the twiddle factor table. - * The value is based on the FFT length; - * pTwiddleARealpoints to the A array of twiddle coefficients; - * pTwiddleBRealpoints to the B array of twiddle coefficients; - * pCfft points to the CFFT Instance structure. The CFFT structure - * must also be initialized. Refer to arm_cfft_radix4_f32() for details regarding - * static initialization of the complex FFT instance structure. - */ - -/** -* @addtogroup RealFFT -* @{ -*/ - -/** -* @brief Processing function for the floating-point real FFT. -* @param[in] *S points to an arm_rfft_fast_instance_f32 structure. -* @param[in] *p points to the input buffer. -* @param[in] *pOut points to the output buffer. -* @param[in] ifftFlag RFFT if flag is 0, RIFFT if flag is 1 -* @return none. -*/ - -void arm_rfft_fast_f32( -arm_rfft_fast_instance_f32 * S, -float32_t * p, float32_t * pOut, -uint8_t ifftFlag) -{ - arm_cfft_instance_f32 * Sint = &(S->Sint); - Sint->fftLen = S->fftLenRFFT / 2; - - /* Calculation of Real FFT */ - if (ifftFlag) - { - /* Real FFT compression */ - merge_rfft_f32(S, p, pOut); - - /* Complex radix-4 IFFT process */ - arm_cfft_f32( Sint, pOut, ifftFlag, 1); - } - else - { - /* Calculation of RFFT of input */ - arm_cfft_f32( Sint, p, ifftFlag, 1); - - /* Real FFT extraction */ - stage_rfft_f32(S, p, pOut); - } -} - -/** -* @} end of RealFFT group -*/ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_rfft_fast_init_f32.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_rfft_fast_init_f32.c deleted file mode 100644 index 2f8dfe6..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_rfft_fast_init_f32.c +++ /dev/null @@ -1,131 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_cfft_init_f32.c - * Description: Split Radix Decimation in Frequency CFFT Floating point processing function - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" -#include "arm_common_tables.h" - -/** - * @ingroup groupTransforms - */ - -/** - * @addtogroup RealFFT - * @{ - */ - -/** -* @brief Initialization function for the floating-point real FFT. -* @param[in,out] *S points to an arm_rfft_fast_instance_f32 structure. -* @param[in] fftLen length of the Real Sequence. -* @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if fftLen is not a supported value. -* -* \par Description: -* \par -* The parameter fftLen Specifies length of RFFT/CIFFT process. Supported FFT Lengths are 32, 64, 128, 256, 512, 1024, 2048, 4096. -* \par -* This Function also initializes Twiddle factor table pointer and Bit reversal table pointer. -*/ -arm_status arm_rfft_fast_init_f32( - arm_rfft_fast_instance_f32 * S, - uint16_t fftLen) -{ - arm_cfft_instance_f32 * Sint; - /* Initialise the default arm status */ - arm_status status = ARM_MATH_SUCCESS; - /* Initialise the FFT length */ - Sint = &(S->Sint); - Sint->fftLen = fftLen/2; - S->fftLenRFFT = fftLen; - - /* Initializations of structure parameters depending on the FFT length */ - switch (Sint->fftLen) - { - case 2048U: - /* Initializations of structure parameters for 2048 point FFT */ - /* Initialise the bit reversal table length */ - Sint->bitRevLength = ARMBITREVINDEXTABLE_2048_TABLE_LENGTH; - /* Initialise the bit reversal table pointer */ - Sint->pBitRevTable = (uint16_t *)armBitRevIndexTable2048; - /* Initialise the Twiddle coefficient pointers */ - Sint->pTwiddle = (float32_t *) twiddleCoef_2048; - S->pTwiddleRFFT = (float32_t *) twiddleCoef_rfft_4096; - break; - case 1024U: - Sint->bitRevLength = ARMBITREVINDEXTABLE_1024_TABLE_LENGTH; - Sint->pBitRevTable = (uint16_t *)armBitRevIndexTable1024; - Sint->pTwiddle = (float32_t *) twiddleCoef_1024; - S->pTwiddleRFFT = (float32_t *) twiddleCoef_rfft_2048; - break; - case 512U: - Sint->bitRevLength = ARMBITREVINDEXTABLE_512_TABLE_LENGTH; - Sint->pBitRevTable = (uint16_t *)armBitRevIndexTable512; - Sint->pTwiddle = (float32_t *) twiddleCoef_512; - S->pTwiddleRFFT = (float32_t *) twiddleCoef_rfft_1024; - break; - case 256U: - Sint->bitRevLength = ARMBITREVINDEXTABLE_256_TABLE_LENGTH; - Sint->pBitRevTable = (uint16_t *)armBitRevIndexTable256; - Sint->pTwiddle = (float32_t *) twiddleCoef_256; - S->pTwiddleRFFT = (float32_t *) twiddleCoef_rfft_512; - break; - case 128U: - Sint->bitRevLength = ARMBITREVINDEXTABLE_128_TABLE_LENGTH; - Sint->pBitRevTable = (uint16_t *)armBitRevIndexTable128; - Sint->pTwiddle = (float32_t *) twiddleCoef_128; - S->pTwiddleRFFT = (float32_t *) twiddleCoef_rfft_256; - break; - case 64U: - Sint->bitRevLength = ARMBITREVINDEXTABLE_64_TABLE_LENGTH; - Sint->pBitRevTable = (uint16_t *)armBitRevIndexTable64; - Sint->pTwiddle = (float32_t *) twiddleCoef_64; - S->pTwiddleRFFT = (float32_t *) twiddleCoef_rfft_128; - break; - case 32U: - Sint->bitRevLength = ARMBITREVINDEXTABLE_32_TABLE_LENGTH; - Sint->pBitRevTable = (uint16_t *)armBitRevIndexTable32; - Sint->pTwiddle = (float32_t *) twiddleCoef_32; - S->pTwiddleRFFT = (float32_t *) twiddleCoef_rfft_64; - break; - case 16U: - Sint->bitRevLength = ARMBITREVINDEXTABLE_16_TABLE_LENGTH; - Sint->pBitRevTable = (uint16_t *)armBitRevIndexTable16; - Sint->pTwiddle = (float32_t *) twiddleCoef_16; - S->pTwiddleRFFT = (float32_t *) twiddleCoef_rfft_32; - break; - default: - /* Reporting argument error if fftSize is not valid value */ - status = ARM_MATH_ARGUMENT_ERROR; - break; - } - - return (status); -} - -/** - * @} end of RealFFT group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_rfft_init_f32.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_rfft_init_f32.c deleted file mode 100644 index bb3213a..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_rfft_init_f32.c +++ /dev/null @@ -1,4273 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_rfft_init_f32.c - * Description: RFFT & RIFFT Floating point initialisation function - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/** - * @ingroup RealFFT - */ - -/** - * @addtogroup RealFFT_Table Real FFT Tables - * @{ - */ - -/** -* \par -* Generation of realCoefA array: -* \par -* n = 4096 -*
for (i = 0; i < n; i++)
-*  {
-*    pATable[2 * i] = 0.5 * (1.0 - sin (2 * PI / (double) (2 * n) * (double) i));
-*    pATable[2 * i + 1] = 0.5 * (-1.0 * cos (2 * PI / (double) (2 * n) * (double) i));
-*  } 
-*/ -static const float32_t realCoefA[8192] = { - 0.500000000000000f, -0.500000000000000f, 0.499616503715515f, -0.499999850988388f, - 0.499233007431030f, -0.499999403953552f, 0.498849511146545f, -0.499998688697815f, - 0.498466014862061f, -0.499997645616531f, 0.498082518577576f, -0.499996334314346f, - 0.497699022293091f, -0.499994695186615f, 0.497315555810928f, -0.499992787837982f, - 0.496932059526443f, -0.499990582466125f, 0.496548563241959f, -0.499988079071045f, - 0.496165096759796f, -0.499985307455063f, 0.495781600475311f, -0.499982208013535f, - 0.495398133993149f, -0.499978810548782f, 0.495014637708664f, -0.499975144863129f, - 0.494631171226501f, -0.499971181154251f, 0.494247704744339f, -0.499966919422150f, - 0.493864238262177f, -0.499962359666824f, 0.493480771780014f, -0.499957501888275f, - 0.493097305297852f, -0.499952346086502f, 0.492713838815689f, -0.499946922063828f, - 0.492330402135849f, -0.499941170215607f, 0.491946935653687f, -0.499935150146484f, - 0.491563498973846f, -0.499928832054138f, 0.491180062294006f, -0.499922215938568f, - 0.490796625614166f, -0.499915301799774f, 0.490413218736649f, -0.499908089637756f, - 0.490029782056808f, -0.499900579452515f, 0.489646375179291f, -0.499892801046371f, - 0.489262968301773f, -0.499884694814682f, 0.488879561424255f, -0.499876320362091f, - 0.488496154546738f, -0.499867647886276f, 0.488112777471542f, -0.499858677387238f, - 0.487729400396347f, -0.499849408864975f, 0.487346023321152f, -0.499839842319489f, - 0.486962646245956f, -0.499830007553101f, 0.486579269170761f, -0.499819844961166f, - 0.486195921897888f, -0.499809414148331f, 0.485812574625015f, -0.499798685312271f, - 0.485429257154465f, -0.499787658452988f, 0.485045909881592f, -0.499776333570480f, - 0.484662592411041f, -0.499764710664749f, 0.484279274940491f, -0.499752789735794f, - 0.483895987272263f, -0.499740600585938f, 0.483512699604034f, -0.499728083610535f, - 0.483129411935806f, -0.499715298414230f, 0.482746154069901f, -0.499702215194702f, - 0.482362866401672f, -0.499688833951950f, 0.481979638338089f, -0.499675154685974f, - 0.481596380472183f, -0.499661177396774f, 0.481213152408600f, -0.499646931886673f, - 0.480829954147339f, -0.499632388353348f, 0.480446726083755f, -0.499617516994476f, - 0.480063527822495f, -0.499602377414703f, 0.479680359363556f, -0.499586939811707f, - 0.479297190904617f, -0.499571204185486f, 0.478914022445679f, -0.499555170536041f, - 0.478530883789063f, -0.499538868665695f, 0.478147745132446f, -0.499522238969803f, - 0.477764606475830f, -0.499505341053009f, 0.477381497621536f, -0.499488145112991f, - 0.476998418569565f, -0.499470651149750f, 0.476615339517593f, -0.499452859163284f, - 0.476232260465622f, -0.499434769153595f, 0.475849211215973f, -0.499416410923004f, - 0.475466161966324f, -0.499397724866867f, 0.475083142518997f, -0.499378770589828f, - 0.474700123071671f, -0.499359518289566f, 0.474317133426666f, -0.499339967966080f, - 0.473934143781662f, -0.499320119619370f, 0.473551183938980f, -0.499299973249435f, - 0.473168224096298f, -0.499279528856277f, 0.472785294055939f, -0.499258816242218f, - 0.472402364015579f, -0.499237775802612f, 0.472019463777542f, -0.499216467142105f, - 0.471636593341827f, -0.499194860458374f, 0.471253722906113f, -0.499172955751419f, - 0.470870882272720f, -0.499150782823563f, 0.470488041639328f, -0.499128282070160f, - 0.470105201005936f, -0.499105513095856f, 0.469722419977188f, -0.499082416296005f, - 0.469339638948441f, -0.499059051275253f, 0.468956857919693f, -0.499035388231277f, - 0.468574106693268f, -0.499011427164078f, 0.468191385269165f, -0.498987197875977f, - 0.467808693647385f, -0.498962640762329f, 0.467426002025604f, -0.498937815427780f, - 0.467043310403824f, -0.498912662267685f, 0.466660678386688f, -0.498887240886688f, - 0.466278046369553f, -0.498861521482468f, 0.465895414352417f, -0.498835533857346f, - 0.465512841939926f, -0.498809218406677f, 0.465130269527435f, -0.498782604932785f, - 0.464747726917267f, -0.498755723237991f, 0.464365184307098f, -0.498728543519974f, - 0.463982671499252f, -0.498701065778732f, 0.463600188493729f, -0.498673290014267f, - 0.463217705488205f, -0.498645216226578f, 0.462835282087326f, -0.498616874217987f, - 0.462452858686447f, -0.498588204383850f, 0.462070435285568f, -0.498559266328812f, - 0.461688071489334f, -0.498530030250549f, 0.461305707693100f, -0.498500496149063f, - 0.460923373699188f, -0.498470664024353f, 0.460541069507599f, -0.498440563678741f, - 0.460158795118332f, -0.498410135507584f, 0.459776520729065f, -0.498379439115524f, - 0.459394276142120f, -0.498348444700241f, 0.459012061357498f, -0.498317152261734f, - 0.458629876375198f, -0.498285561800003f, 0.458247691392899f, -0.498253703117371f, - 0.457865566015244f, -0.498221516609192f, 0.457483440637589f, -0.498189061880112f, - 0.457101345062256f, -0.498156309127808f, 0.456719279289246f, -0.498123258352280f, - 0.456337243318558f, -0.498089909553528f, 0.455955207347870f, -0.498056292533875f, - 0.455573230981827f, -0.498022347688675f, 0.455191254615784f, -0.497988134622574f, - 0.454809308052063f, -0.497953623533249f, 0.454427421092987f, -0.497918814420700f, - 0.454045534133911f, -0.497883707284927f, 0.453663676977158f, -0.497848302125931f, - 0.453281819820404f, -0.497812628746033f, 0.452900022268295f, -0.497776657342911f, - 0.452518254518509f, -0.497740387916565f, 0.452136516571045f, -0.497703820466995f, - 0.451754778623581f, -0.497666954994202f, 0.451373100280762f, -0.497629791498184f, - 0.450991421937943f, -0.497592359781265f, 0.450609803199768f, -0.497554630041122f, - 0.450228184461594f, -0.497516602277756f, 0.449846625328064f, -0.497478276491165f, - 0.449465066194534f, -0.497439652681351f, 0.449083566665649f, -0.497400760650635f, - 0.448702067136765f, -0.497361570596695f, 0.448320597410202f, -0.497322082519531f, - 0.447939187288284f, -0.497282296419144f, 0.447557777166367f, -0.497242212295532f, - 0.447176426649094f, -0.497201830148697f, 0.446795076131821f, -0.497161179780960f, - 0.446413785219193f, -0.497120231389999f, 0.446032524108887f, -0.497078984975815f, - 0.445651292800903f, -0.497037440538406f, 0.445270061492920f, -0.496995598077774f, - 0.444888889789581f, -0.496953487396240f, 0.444507747888565f, -0.496911078691483f, - 0.444126635789871f, -0.496868371963501f, 0.443745553493500f, -0.496825367212296f, - 0.443364530801773f, -0.496782064437866f, 0.442983508110046f, -0.496738493442535f, - 0.442602545022964f, -0.496694594621658f, 0.442221581935883f, -0.496650427579880f, - 0.441840678453445f, -0.496605962514877f, 0.441459804773331f, -0.496561229228973f, - 0.441078960895538f, -0.496516168117523f, 0.440698176622391f, -0.496470838785172f, - 0.440317392349243f, -0.496425211429596f, 0.439936667680740f, -0.496379286050797f, - 0.439555943012238f, -0.496333062648773f, 0.439175277948380f, -0.496286571025848f, - 0.438794672489166f, -0.496239781379700f, 0.438414067029953f, -0.496192663908005f, - 0.438033521175385f, -0.496145308017731f, 0.437653005123138f, -0.496097624301910f, - 0.437272518873215f, -0.496049642562866f, 0.436892062425613f, -0.496001392602921f, - 0.436511665582657f, -0.495952844619751f, 0.436131268739700f, -0.495903998613358f, - 0.435750931501389f, -0.495854884386063f, 0.435370653867722f, -0.495805442333221f, - 0.434990376234055f, -0.495755732059479f, 0.434610158205032f, -0.495705723762512f, - 0.434229999780655f, -0.495655417442322f, 0.433849841356277f, -0.495604842901230f, - 0.433469742536545f, -0.495553970336914f, 0.433089673519135f, -0.495502769947052f, - 0.432709634304047f, -0.495451331138611f, 0.432329654693604f, -0.495399564504623f, - 0.431949704885483f, -0.495347499847412f, 0.431569814682007f, -0.495295166969299f, - 0.431189924478531f, -0.495242536067963f, 0.430810123682022f, -0.495189607143402f, - 0.430430322885513f, -0.495136409997940f, 0.430050581693649f, -0.495082914829254f, - 0.429670870304108f, -0.495029091835022f, 0.429291218519211f, -0.494975030422211f, - 0.428911596536636f, -0.494920641183853f, 0.428532034158707f, -0.494865983724594f, - 0.428152471780777f, -0.494810998439789f, 0.427772998809814f, -0.494755744934082f, - 0.427393525838852f, -0.494700223207474f, 0.427014142274857f, -0.494644373655319f, - 0.426634758710861f, -0.494588255882263f, 0.426255434751511f, -0.494531840085983f, - 0.425876170396805f, -0.494475126266479f, 0.425496935844421f, -0.494418144226074f, - 0.425117731094360f, -0.494360834360123f, 0.424738585948944f, -0.494303256273270f, - 0.424359470605850f, -0.494245409965515f, 0.423980414867401f, -0.494187235832214f, - 0.423601418733597f, -0.494128793478012f, 0.423222452402115f, -0.494070053100586f, - 0.422843515872955f, -0.494011014699936f, 0.422464638948441f, -0.493951678276062f, - 0.422085791826248f, -0.493892073631287f, 0.421707004308701f, -0.493832170963287f, - 0.421328276395798f, -0.493771970272064f, 0.420949578285217f, -0.493711471557617f, - 0.420570939779282f, -0.493650704622269f, 0.420192331075668f, -0.493589639663696f, - 0.419813781976700f, -0.493528276681900f, 0.419435262680054f, -0.493466645479202f, - 0.419056802988052f, -0.493404686450958f, 0.418678402900696f, -0.493342459201813f, - 0.418300032615662f, -0.493279963731766f, 0.417921721935272f, -0.493217140436172f, - 0.417543441057205f, -0.493154048919678f, 0.417165219783783f, -0.493090659379959f, - 0.416787058115005f, -0.493026971817017f, 0.416408926248550f, -0.492963016033173f, - 0.416030853986740f, -0.492898762226105f, 0.415652841329575f, -0.492834210395813f, - 0.415274858474731f, -0.492769360542297f, 0.414896935224533f, -0.492704242467880f, - 0.414519041776657f, -0.492638826370239f, 0.414141237735748f, -0.492573112249374f, - 0.413763463497162f, -0.492507129907608f, 0.413385748863220f, -0.492440819740295f, - 0.413008064031601f, -0.492374241352081f, 0.412630438804626f, -0.492307394742966f, - 0.412252873182297f, -0.492240220308304f, 0.411875367164612f, -0.492172777652740f, - 0.411497890949249f, -0.492105036973953f, 0.411120474338531f, -0.492037028074265f, - 0.410743117332459f, -0.491968721151352f, 0.410365819931030f, -0.491900116205215f, - 0.409988552331924f, -0.491831213235855f, 0.409611344337463f, -0.491762012243271f, - 0.409234195947647f, -0.491692543029785f, 0.408857107162476f, -0.491622805595398f, - 0.408480048179626f, -0.491552740335464f, 0.408103078603745f, -0.491482406854630f, - 0.407726138830185f, -0.491411775350571f, 0.407349258661270f, -0.491340845823288f, - 0.406972438097000f, -0.491269648075104f, 0.406595647335052f, -0.491198152303696f, - 0.406218945980072f, -0.491126358509064f, 0.405842274427414f, -0.491054296493530f, - 0.405465662479401f, -0.490981936454773f, 0.405089110136032f, -0.490909278392792f, - 0.404712617397308f, -0.490836352109909f, 0.404336184263229f, -0.490763127803802f, - 0.403959810733795f, -0.490689605474472f, 0.403583467006683f, -0.490615785121918f, - 0.403207212686539f, -0.490541696548462f, 0.402830988168716f, -0.490467309951782f, - 0.402454853057861f, -0.490392625331879f, 0.402078747749329f, -0.490317672491074f, - 0.401702702045441f, -0.490242421627045f, 0.401326715946198f, -0.490166902542114f, - 0.400950789451599f, -0.490091055631638f, 0.400574922561646f, -0.490014940500259f, - 0.400199115276337f, -0.489938557147980f, 0.399823367595673f, -0.489861875772476f, - 0.399447679519653f, -0.489784896373749f, 0.399072051048279f, -0.489707618951797f, - 0.398696482181549f, -0.489630073308945f, 0.398320972919464f, -0.489552229642868f, - 0.397945523262024f, -0.489474087953568f, 0.397570133209229f, -0.489395678043365f, - 0.397194802761078f, -0.489316970109940f, 0.396819531917572f, -0.489237964153290f, - 0.396444320678711f, -0.489158689975739f, 0.396069169044495f, -0.489079117774963f, - 0.395694077014923f, -0.488999247550964f, 0.395319044589996f, -0.488919109106064f, - 0.394944071769714f, -0.488838672637939f, 0.394569188356400f, -0.488757967948914f, - 0.394194334745407f, -0.488676935434341f, 0.393819570541382f, -0.488595664501190f, - 0.393444836139679f, -0.488514065742493f, 0.393070191144943f, -0.488432198762894f, - 0.392695605754852f, -0.488350033760071f, 0.392321079969406f, -0.488267600536346f, - 0.391946613788605f, -0.488184869289398f, 0.391572207212448f, -0.488101840019226f, - 0.391197860240936f, -0.488018542528152f, 0.390823602676392f, -0.487934947013855f, - 0.390449374914169f, -0.487851053476334f, 0.390075236558914f, -0.487766891717911f, - 0.389701157808304f, -0.487682431936264f, 0.389327138662338f, -0.487597703933716f, - 0.388953179121017f, -0.487512677907944f, 0.388579308986664f, -0.487427353858948f, - 0.388205498456955f, -0.487341761589050f, 0.387831717729568f, -0.487255871295929f, - 0.387458056211472f, -0.487169682979584f, 0.387084424495697f, -0.487083226442337f, - 0.386710882186890f, -0.486996471881866f, 0.386337369680405f, -0.486909449100494f, - 0.385963946580887f, -0.486822128295898f, 0.385590612888336f, -0.486734509468079f, - 0.385217308998108f, -0.486646622419357f, 0.384844094514847f, -0.486558437347412f, - 0.384470939636230f, -0.486469984054565f, 0.384097874164581f, -0.486381232738495f, - 0.383724838495255f, -0.486292183399200f, 0.383351892232895f, -0.486202865839005f, - 0.382979035377502f, -0.486113250255585f, 0.382606208324432f, -0.486023366451263f, - 0.382233470678329f, -0.485933154821396f, 0.381860792636871f, -0.485842704772949f, - 0.381488204002380f, -0.485751956701279f, 0.381115674972534f, -0.485660910606384f, - 0.380743205547333f, -0.485569566488266f, 0.380370795726776f, -0.485477954149246f, - 0.379998475313187f, -0.485386073589325f, 0.379626244306564f, -0.485293895006180f, - 0.379254043102264f, -0.485201418399811f, 0.378881961107254f, -0.485108673572540f, - 0.378509908914566f, -0.485015630722046f, 0.378137946128845f, -0.484922289848328f, - 0.377766042947769f, -0.484828680753708f, 0.377394229173660f, -0.484734803438187f, - 0.377022475004196f, -0.484640628099442f, 0.376650810241699f, -0.484546154737473f, - 0.376279205083847f, -0.484451413154602f, 0.375907659530640f, -0.484356373548508f, - 0.375536203384399f, -0.484261035919189f, 0.375164806842804f, -0.484165430068970f, - 0.374793499708176f, -0.484069555997849f, 0.374422252178192f, -0.483973383903503f, - 0.374051094055176f, -0.483876913785934f, 0.373679995536804f, -0.483780175447464f, - 0.373308986425400f, -0.483683139085770f, 0.372938036918640f, -0.483585834503174f, - 0.372567176818848f, -0.483488231897354f, 0.372196376323700f, -0.483390361070633f, - 0.371825665235519f, -0.483292192220688f, 0.371455013751984f, -0.483193725347519f, - 0.371084451675415f, -0.483094990253448f, 0.370713949203491f, -0.482995986938477f, - 0.370343536138535f, -0.482896685600281f, 0.369973212480545f, -0.482797086238861f, - 0.369602948427200f, -0.482697218656540f, 0.369232743978500f, -0.482597053050995f, - 0.368862658739090f, -0.482496619224548f, 0.368492603302002f, -0.482395917177200f, - 0.368122667074203f, -0.482294887304306f, 0.367752790451050f, -0.482193619012833f, - 0.367382973432541f, -0.482092022895813f, 0.367013275623322f, -0.481990188360214f, - 0.366643607616425f, -0.481888025999069f, 0.366274058818817f, -0.481785595417023f, - 0.365904569625854f, -0.481682896614075f, 0.365535169839859f, -0.481579899787903f, - 0.365165829658508f, -0.481476634740829f, 0.364796578884125f, -0.481373071670532f, - 0.364427417516708f, -0.481269240379334f, 0.364058345556259f, -0.481165111064911f, - 0.363689333200455f, -0.481060713529587f, 0.363320380449295f, -0.480956017971039f, - 0.362951546907425f, -0.480851024389267f, 0.362582772970200f, -0.480745792388916f, - 0.362214088439941f, -0.480640232563019f, 0.361845493316650f, -0.480534434318542f, - 0.361476957798004f, -0.480428308248520f, 0.361108511686325f, -0.480321943759918f, - 0.360740154981613f, -0.480215251445770f, 0.360371887683868f, -0.480108320713043f, - 0.360003679990768f, -0.480001062154770f, 0.359635561704636f, -0.479893565177917f, - 0.359267532825470f, -0.479785770177841f, 0.358899593353271f, -0.479677677154541f, - 0.358531713485718f, -0.479569315910339f, 0.358163923025131f, -0.479460656642914f, - 0.357796221971512f, -0.479351729154587f, 0.357428610324860f, -0.479242533445358f, - 0.357061088085175f, -0.479133039712906f, 0.356693625450134f, -0.479023247957230f, - 0.356326282024384f, -0.478913217782974f, 0.355958998203278f, -0.478802859783173f, - 0.355591803789139f, -0.478692263364792f, 0.355224698781967f, -0.478581339120865f, - 0.354857653379440f, -0.478470176458359f, 0.354490727186203f, -0.478358715772629f, - 0.354123860597610f, -0.478246957063675f, 0.353757113218308f, -0.478134930133820f, - 0.353390425443649f, -0.478022634983063f, 0.353023827075958f, -0.477910041809082f, - 0.352657318115234f, -0.477797180414200f, 0.352290898561478f, -0.477684020996094f, - 0.351924568414688f, -0.477570593357086f, 0.351558297872543f, -0.477456867694855f, - 0.351192146539688f, -0.477342873811722f, 0.350826084613800f, -0.477228611707687f, - 0.350460082292557f, -0.477114051580429f, 0.350094199180603f, -0.476999223232269f, - 0.349728375673294f, -0.476884096860886f, 0.349362671375275f, -0.476768702268600f, - 0.348997026681900f, -0.476653009653091f, 0.348631471395493f, -0.476537048816681f, - 0.348266035318375f, -0.476420819759369f, 0.347900658845901f, -0.476304292678833f, - 0.347535371780396f, -0.476187497377396f, 0.347170203924179f, -0.476070433855057f, - 0.346805095672607f, -0.475953072309494f, 0.346440106630325f, -0.475835442543030f, - 0.346075177192688f, -0.475717514753342f, 0.345710366964340f, -0.475599318742752f, - 0.345345616340637f, -0.475480824708939f, 0.344980984926224f, -0.475362062454224f, - 0.344616413116455f, -0.475243031978607f, 0.344251960515976f, -0.475123733282089f, - 0.343887597322464f, -0.475004136562347f, 0.343523323535919f, -0.474884241819382f, - 0.343159139156342f, -0.474764078855515f, 0.342795044183731f, -0.474643647670746f, - 0.342431038618088f, -0.474522948265076f, 0.342067122459412f, -0.474401950836182f, - 0.341703325510025f, -0.474280685186386f, 0.341339588165283f, -0.474159121513367f, - 0.340975970029831f, -0.474037289619446f, 0.340612411499023f, -0.473915189504623f, - 0.340248972177505f, -0.473792791366577f, 0.339885622262955f, -0.473670125007629f, - 0.339522391557693f, -0.473547190427780f, 0.339159220457077f, -0.473423957824707f, - 0.338796168565750f, -0.473300457000732f, 0.338433176279068f, -0.473176687955856f, - 0.338070303201675f, -0.473052620887756f, 0.337707549333572f, -0.472928285598755f, - 0.337344855070114f, -0.472803652286530f, 0.336982280015945f, -0.472678780555725f, - 0.336619764566422f, -0.472553610801697f, 0.336257368326187f, -0.472428143024445f, - 0.335895091295242f, -0.472302407026291f, 0.335532873868942f, -0.472176402807236f, - 0.335170775651932f, -0.472050130367279f, 0.334808766841888f, -0.471923559904099f, - 0.334446847438812f, -0.471796721220016f, 0.334085017442703f, -0.471669614315033f, - 0.333723306655884f, -0.471542209386826f, 0.333361685276031f, -0.471414536237717f, - 0.333000183105469f, -0.471286594867706f, 0.332638740539551f, -0.471158385276794f, - 0.332277417182922f, -0.471029877662659f, 0.331916213035584f, -0.470901101827621f, - 0.331555068492889f, -0.470772027969360f, 0.331194043159485f, -0.470642685890198f, - 0.330833107233047f, -0.470513075590134f, 0.330472290515900f, -0.470383197069168f, - 0.330111563205719f, -0.470253020524979f, 0.329750925302505f, -0.470122605562210f, - 0.329390406608582f, -0.469991862773895f, 0.329029977321625f, -0.469860881567001f, - 0.328669637441635f, -0.469729602336884f, 0.328309416770935f, -0.469598054885864f, - 0.327949285507202f, -0.469466239213943f, 0.327589273452759f, -0.469334155321121f, - 0.327229350805283f, -0.469201773405075f, 0.326869517564774f, -0.469069123268127f, - 0.326509803533554f, -0.468936175107956f, 0.326150178909302f, -0.468802988529205f, - 0.325790673494339f, -0.468669503927231f, 0.325431257486343f, -0.468535751104355f, - 0.325071930885315f, -0.468401730060577f, 0.324712723493576f, -0.468267410993576f, - 0.324353635311127f, -0.468132823705673f, 0.323994606733322f, -0.467997968196869f, - 0.323635727167130f, -0.467862844467163f, 0.323276937007904f, -0.467727422714233f, - 0.322918236255646f, -0.467591762542725f, 0.322559654712677f, -0.467455804347992f, - 0.322201162576675f, -0.467319577932358f, 0.321842789649963f, -0.467183053493500f, - 0.321484506130219f, -0.467046260833740f, 0.321126341819763f, -0.466909229755402f, - 0.320768296718597f, -0.466771900653839f, 0.320410341024399f, -0.466634273529053f, - 0.320052474737167f, -0.466496407985687f, 0.319694727659225f, -0.466358244419098f, - 0.319337099790573f, -0.466219812631607f, 0.318979561328888f, -0.466081112623215f, - 0.318622142076492f, -0.465942144393921f, 0.318264812231064f, -0.465802878141403f, - 0.317907601594925f, -0.465663343667984f, 0.317550510168076f, -0.465523540973663f, - 0.317193508148193f, -0.465383470058441f, 0.316836595535278f, -0.465243130922318f, - 0.316479831933975f, -0.465102523565292f, 0.316123157739639f, -0.464961618185043f, - 0.315766572952271f, -0.464820444583893f, 0.315410137176514f, -0.464679002761841f, - 0.315053790807724f, -0.464537292718887f, 0.314697533845901f, -0.464395314455032f, - 0.314341396093369f, -0.464253038167953f, 0.313985377550125f, -0.464110493659973f, - 0.313629478216171f, -0.463967710733414f, 0.313273668289185f, -0.463824629783630f, - 0.312917977571487f, -0.463681250810623f, 0.312562376260757f, -0.463537633419037f, - 0.312206923961639f, -0.463393747806549f, 0.311851561069489f, -0.463249564170837f, - 0.311496287584305f, -0.463105112314224f, 0.311141163110733f, -0.462960392236710f, - 0.310786128044128f, -0.462815403938293f, 0.310431212186813f, -0.462670147418976f, - 0.310076385736465f, -0.462524622678757f, 0.309721708297729f, -0.462378799915314f, - 0.309367120265961f, -0.462232738733292f, 0.309012651443481f, -0.462086379528046f, - 0.308658272027969f, -0.461939752101898f, 0.308304041624069f, -0.461792886257172f, - 0.307949900627136f, -0.461645722389221f, 0.307595878839493f, -0.461498260498047f, - 0.307241976261139f, -0.461350560188293f, 0.306888192892075f, -0.461202591657639f, - 0.306534498929977f, -0.461054325103760f, 0.306180924177170f, -0.460905820131302f, - 0.305827468633652f, -0.460757017135620f, 0.305474132299423f, -0.460607945919037f, - 0.305120915174484f, -0.460458606481552f, 0.304767817258835f, -0.460309028625488f, - 0.304414808750153f, -0.460159152746201f, 0.304061919450760f, -0.460008978843689f, - 0.303709149360657f, -0.459858566522598f, 0.303356528282166f, -0.459707885980606f, - 0.303003966808319f, -0.459556937217712f, 0.302651554346085f, -0.459405690431595f, - 0.302299261093140f, -0.459254205226898f, 0.301947087049484f, -0.459102421998978f, - 0.301595002412796f, -0.458950400352478f, 0.301243066787720f, -0.458798080682755f, - 0.300891220569611f, -0.458645492792130f, 0.300539493560791f, -0.458492636680603f, - 0.300187885761261f, -0.458339542150497f, 0.299836426973343f, -0.458186149597168f, - 0.299485057592392f, -0.458032488822937f, 0.299133807420731f, -0.457878559827805f, - 0.298782676458359f, -0.457724362611771f, 0.298431664705276f, -0.457569897174835f, - 0.298080772161484f, -0.457415163516998f, 0.297729998826981f, -0.457260161638260f, - 0.297379344701767f, -0.457104891538620f, 0.297028809785843f, -0.456949323415756f, - 0.296678394079208f, -0.456793516874313f, 0.296328097581863f, -0.456637442111969f, - 0.295977920293808f, -0.456481099128723f, 0.295627862215042f, -0.456324487924576f, - 0.295277923345566f, -0.456167578697205f, 0.294928103685379f, -0.456010431051254f, - 0.294578403234482f, -0.455853015184402f, 0.294228851795197f, -0.455695331096649f, - 0.293879389762878f, -0.455537378787994f, 0.293530046939850f, -0.455379128456116f, - 0.293180853128433f, -0.455220639705658f, 0.292831748723984f, -0.455061882734299f, - 0.292482793331146f, -0.454902857542038f, 0.292133957147598f, -0.454743564128876f, - 0.291785210371017f, -0.454584002494812f, 0.291436612606049f, -0.454424172639847f, - 0.291088134050369f, -0.454264044761658f, 0.290739774703979f, -0.454103678464890f, - 0.290391564369202f, -0.453943043947220f, 0.290043443441391f, -0.453782171010971f, - 0.289695471525192f, -0.453621000051498f, 0.289347589015961f, -0.453459560871124f, - 0.288999855518341f, -0.453297853469849f, 0.288652241230011f, -0.453135877847672f, - 0.288304775953293f, -0.452973634004593f, 0.287957400083542f, -0.452811151742935f, - 0.287610173225403f, -0.452648371458054f, 0.287263035774231f, -0.452485352754593f, - 0.286916047334671f, -0.452322036027908f, 0.286569178104401f, -0.452158480882645f, - 0.286222457885742f, -0.451994657516479f, 0.285875827074051f, -0.451830536127090f, - 0.285529345273972f, -0.451666176319122f, 0.285182982683182f, -0.451501548290253f, - 0.284836769104004f, -0.451336652040482f, 0.284490644931793f, -0.451171487569809f, - 0.284144669771194f, -0.451006084680557f, 0.283798813819885f, -0.450840383768082f, - 0.283453077077866f, -0.450674414634705f, 0.283107489347458f, -0.450508207082748f, - 0.282762020826340f, -0.450341701507568f, 0.282416671514511f, -0.450174957513809f, - 0.282071471214294f, -0.450007945299149f, 0.281726360321045f, -0.449840664863586f, - 0.281381398439407f, -0.449673116207123f, 0.281036585569382f, -0.449505299329758f, - 0.280691891908646f, -0.449337244033813f, 0.280347317457199f, -0.449168890714645f, - 0.280002862215042f, -0.449000298976898f, 0.279658555984497f, -0.448831409215927f, - 0.279314368963242f, -0.448662281036377f, 0.278970301151276f, -0.448492884635925f, - 0.278626382350922f, -0.448323249816895f, 0.278282582759857f, -0.448153316974640f, - 0.277938932180405f, -0.447983115911484f, 0.277595400810242f, -0.447812676429749f, - 0.277251988649368f, -0.447641968727112f, 0.276908725500107f, -0.447470992803574f, - 0.276565581560135f, -0.447299748659134f, 0.276222556829453f, -0.447128236293793f, - 0.275879681110382f, -0.446956485509872f, 0.275536954402924f, -0.446784436702728f, - 0.275194346904755f, -0.446612149477005f, 0.274851858615875f, -0.446439594030380f, - 0.274509519338608f, -0.446266770362854f, 0.274167299270630f, -0.446093708276749f, - 0.273825198411942f, -0.445920348167419f, 0.273483246564865f, -0.445746749639511f, - 0.273141443729401f, -0.445572882890701f, 0.272799760103226f, -0.445398747920990f, - 0.272458195686340f, -0.445224374532700f, 0.272116780281067f, -0.445049703121185f, - 0.271775513887405f, -0.444874793291092f, 0.271434366703033f, -0.444699615240097f, - 0.271093338727951f, -0.444524168968201f, 0.270752459764481f, -0.444348484277725f, - 0.270411729812622f, -0.444172531366348f, 0.270071119070053f, -0.443996280431747f, - 0.269730657339096f, -0.443819820880890f, 0.269390314817429f, -0.443643063306808f, - 0.269050091505051f, -0.443466067314148f, 0.268710047006607f, -0.443288803100586f, - 0.268370121717453f, -0.443111270666122f, 0.268030315637589f, -0.442933470010757f, - 0.267690658569336f, -0.442755430936813f, 0.267351150512695f, -0.442577123641968f, - 0.267011761665344f, -0.442398548126221f, 0.266672492027283f, -0.442219734191895f, - 0.266333401203156f, -0.442040622234344f, 0.265994429588318f, -0.441861271858215f, - 0.265655577182770f, -0.441681683063507f, 0.265316903591156f, -0.441501796245575f, - 0.264978319406509f, -0.441321671009064f, 0.264639914035797f, -0.441141277551651f, - 0.264301627874374f, -0.440960645675659f, 0.263963490724564f, -0.440779715776443f, - 0.263625472784042f, -0.440598547458649f, 0.263287603855133f, -0.440417140722275f, - 0.262949883937836f, -0.440235435962677f, 0.262612313032150f, -0.440053492784500f, - 0.262274861335754f, -0.439871311187744f, 0.261937558650970f, -0.439688831567764f, - 0.261600375175476f, -0.439506113529205f, 0.261263370513916f, -0.439323127269745f, - 0.260926485061646f, -0.439139902591705f, 0.260589718818665f, -0.438956409692764f, - 0.260253131389618f, -0.438772648572922f, 0.259916663169861f, -0.438588619232178f, - 0.259580343961716f, -0.438404351472855f, 0.259244143962860f, -0.438219845294952f, - 0.258908122777939f, -0.438035041093826f, 0.258572220802307f, -0.437849998474121f, - 0.258236467838287f, -0.437664687633514f, 0.257900834083557f, -0.437479138374329f, - 0.257565379142761f, -0.437293320894241f, 0.257230043411255f, -0.437107264995575f, - 0.256894856691360f, -0.436920911073685f, 0.256559818983078f, -0.436734348535538f, - 0.256224930286407f, -0.436547487974167f, 0.255890160799026f, -0.436360388994217f, - 0.255555540323257f, -0.436173021793365f, 0.255221068859100f, -0.435985416173935f, - 0.254886746406555f, -0.435797542333603f, 0.254552572965622f, -0.435609430074692f, - 0.254218548536301f, -0.435421019792557f, 0.253884643316269f, -0.435232400894165f, - 0.253550916910172f, -0.435043483972549f, 0.253217309713364f, -0.434854328632355f, - 0.252883851528168f, -0.434664934873581f, 0.252550542354584f, -0.434475272893906f, - 0.252217382192612f, -0.434285342693329f, 0.251884341239929f, -0.434095174074173f, - 0.251551479101181f, -0.433904737234116f, 0.251218736171722f, -0.433714061975479f, - 0.250886172056198f, -0.433523118495941f, 0.250553727149963f, -0.433331936597824f, - 0.250221431255341f, -0.433140486478806f, 0.249889299273491f, -0.432948768138886f, - 0.249557301402092f, -0.432756811380386f, 0.249225467443466f, -0.432564586400986f, - 0.248893767595291f, -0.432372123003006f, 0.248562216758728f, -0.432179391384125f, - 0.248230814933777f, -0.431986421346664f, 0.247899547219276f, -0.431793183088303f, - 0.247568443417549f, -0.431599706411362f, 0.247237488627434f, -0.431405961513519f, - 0.246906682848930f, -0.431211978197098f, 0.246576011180878f, -0.431017726659775f, - 0.246245503425598f, -0.430823236703873f, 0.245915144681931f, -0.430628478527069f, - 0.245584934949875f, -0.430433481931686f, 0.245254859328270f, -0.430238217115402f, - 0.244924947619438f, -0.430042684078217f, 0.244595184922218f, -0.429846942424774f, - 0.244265571236610f, -0.429650902748108f, 0.243936106562614f, -0.429454624652863f, - 0.243606805801392f, -0.429258108139038f, 0.243277639150620f, -0.429061323404312f, - 0.242948621511459f, -0.428864300251007f, 0.242619767785072f, -0.428667008876801f, - 0.242291063070297f, -0.428469479084015f, 0.241962507367134f, -0.428271710872650f, - 0.241634100675583f, -0.428073674440384f, 0.241305842995644f, -0.427875369787216f, - 0.240977749228477f, -0.427676826715469f, 0.240649804472923f, -0.427478045225143f, - 0.240322008728981f, -0.427278995513916f, 0.239994361996651f, -0.427079707384110f, - 0.239666879177094f, -0.426880151033401f, 0.239339530467987f, -0.426680356264114f, - 0.239012360572815f, -0.426480293273926f, 0.238685324788094f, -0.426279991865158f, - 0.238358452916145f, -0.426079452037811f, 0.238031730055809f, -0.425878643989563f, - 0.237705156207085f, -0.425677597522736f, 0.237378746271133f, -0.425476282835007f, - 0.237052485346794f, -0.425274729728699f, 0.236726388335228f, -0.425072938203812f, - 0.236400425434113f, -0.424870878458023f, 0.236074641346931f, -0.424668580293655f, - 0.235749006271362f, -0.424466013908386f, 0.235423520207405f, -0.424263238906860f, - 0.235098183155060f, -0.424060165882111f, 0.234773010015488f, -0.423856884241104f, - 0.234448000788689f, -0.423653304576874f, 0.234123140573502f, -0.423449516296387f, - 0.233798429369926f, -0.423245459794998f, 0.233473882079124f, -0.423041164875031f, - 0.233149498701096f, -0.422836631536484f, 0.232825264334679f, -0.422631829977036f, - 0.232501193881035f, -0.422426789999008f, 0.232177272439003f, -0.422221481800079f, - 0.231853514909744f, -0.422015935182571f, 0.231529906392097f, -0.421810150146484f, - 0.231206461787224f, -0.421604126691818f, 0.230883181095123f, -0.421397835016251f, - 0.230560049414635f, -0.421191304922104f, 0.230237081646919f, -0.420984506607056f, - 0.229914262890816f, -0.420777499675751f, 0.229591608047485f, -0.420570224523544f, - 0.229269117116928f, -0.420362681150436f, 0.228946775197983f, -0.420154929161072f, - 0.228624612092972f, -0.419946908950806f, 0.228302597999573f, -0.419738620519638f, - 0.227980732917786f, -0.419530123472214f, 0.227659046649933f, -0.419321358203888f, - 0.227337509393692f, -0.419112354516983f, 0.227016136050224f, -0.418903112411499f, - 0.226694911718369f, -0.418693602085114f, 0.226373866200447f, -0.418483853340149f, - 0.226052969694138f, -0.418273866176605f, 0.225732237100601f, -0.418063640594482f, - 0.225411668419838f, -0.417853146791458f, 0.225091263651848f, -0.417642414569855f, - 0.224771007895470f, -0.417431443929672f, 0.224450930953026f, -0.417220205068588f, - 0.224131003022194f, -0.417008757591248f, 0.223811239004135f, -0.416797041893005f, - 0.223491653800011f, -0.416585087776184f, 0.223172217607498f, -0.416372895240784f, - 0.222852945327759f, -0.416160434484482f, 0.222533836960793f, -0.415947735309601f, - 0.222214877605438f, -0.415734797716141f, 0.221896097064018f, -0.415521621704102f, - 0.221577480435371f, -0.415308207273483f, 0.221259027719498f, -0.415094524621964f, - 0.220940738916397f, -0.414880603551865f, 0.220622614026070f, -0.414666473865509f, - 0.220304638147354f, -0.414452046155930f, 0.219986841082573f, -0.414237409830093f, - 0.219669207930565f, -0.414022535085678f, 0.219351738691330f, -0.413807392120361f, - 0.219034433364868f, -0.413592010736465f, 0.218717306852341f, -0.413376390933990f, - 0.218400329351425f, -0.413160532712936f, 0.218083515763283f, -0.412944436073303f, - 0.217766880989075f, -0.412728071212769f, 0.217450410127640f, -0.412511497735977f, - 0.217134088277817f, -0.412294656038284f, 0.216817945241928f, -0.412077575922012f, - 0.216501981019974f, -0.411860257387161f, 0.216186165809631f, -0.411642700433731f, - 0.215870529413223f, -0.411424905061722f, 0.215555042028427f, -0.411206841468811f, - 0.215239733457565f, -0.410988569259644f, 0.214924603700638f, -0.410770028829575f, - 0.214609622955322f, -0.410551249980927f, 0.214294821023941f, -0.410332232713699f, - 0.213980183005333f, -0.410112977027893f, 0.213665723800659f, -0.409893482923508f, - 0.213351413607597f, -0.409673750400543f, 0.213037282228470f, -0.409453779459000f, - 0.212723329663277f, -0.409233570098877f, 0.212409526109695f, -0.409013092517853f, - 0.212095901370049f, -0.408792406320572f, 0.211782455444336f, -0.408571451902390f, - 0.211469158530235f, -0.408350288867950f, 0.211156040430069f, -0.408128857612610f, - 0.210843101143837f, -0.407907217741013f, 0.210530325770378f, -0.407685309648514f, - 0.210217714309692f, -0.407463163137436f, 0.209905281662941f, -0.407240778207779f, - 0.209593027830124f, -0.407018154859543f, 0.209280923008919f, -0.406795293092728f, - 0.208969011902809f, -0.406572192907333f, 0.208657249808311f, -0.406348884105682f, - 0.208345666527748f, -0.406125307083130f, 0.208034262061119f, -0.405901491641998f, - 0.207723021507263f, -0.405677437782288f, 0.207411959767342f, -0.405453115701675f, - 0.207101076841354f, -0.405228585004807f, 0.206790357828140f, -0.405003815889359f, - 0.206479802727699f, -0.404778808355331f, 0.206169426441193f, -0.404553562402725f, - 0.205859228968620f, -0.404328078031540f, 0.205549195408821f, -0.404102355241776f, - 0.205239340662956f, -0.403876423835754f, 0.204929664731026f, -0.403650224208832f, - 0.204620152711868f, -0.403423786163330f, 0.204310819506645f, -0.403197109699249f, - 0.204001650214195f, -0.402970194816589f, 0.203692659735680f, -0.402743041515350f, - 0.203383848071098f, -0.402515679597855f, 0.203075215220451f, -0.402288049459457f, - 0.202766746282578f, -0.402060180902481f, 0.202458456158638f, -0.401832103729248f, - 0.202150344848633f, -0.401603758335114f, 0.201842412352562f, -0.401375204324722f, - 0.201534643769264f, -0.401146411895752f, 0.201227053999901f, -0.400917351245880f, - 0.200919643044472f, -0.400688081979752f, 0.200612410902977f, -0.400458574295044f, - 0.200305357575417f, -0.400228828191757f, 0.199998468160629f, -0.399998843669891f, - 0.199691757559776f, -0.399768620729446f, 0.199385225772858f, -0.399538189172745f, - 0.199078872799873f, -0.399307489395142f, 0.198772698640823f, -0.399076581001282f, - 0.198466703295708f, -0.398845434188843f, 0.198160871863365f, -0.398614019155502f, - 0.197855234146118f, -0.398382395505905f, 0.197549775242805f, -0.398150533437729f, - 0.197244480252266f, -0.397918462753296f, 0.196939364075661f, -0.397686123847961f, - 0.196634441614151f, -0.397453576326370f, 0.196329683065414f, -0.397220760583878f, - 0.196025103330612f, -0.396987736225128f, 0.195720717310905f, -0.396754473447800f, - 0.195416495203972f, -0.396520972251892f, 0.195112451910973f, -0.396287262439728f, - 0.194808602333069f, -0.396053284406662f, 0.194504916667938f, -0.395819097757339f, - 0.194201424717903f, -0.395584672689438f, 0.193898096680641f, -0.395350009202957f, - 0.193594962358475f, -0.395115107297897f, 0.193292006850243f, -0.394879996776581f, - 0.192989215254784f, -0.394644618034363f, 0.192686617374420f, -0.394409030675888f, - 0.192384198307991f, -0.394173204898834f, 0.192081972956657f, -0.393937170505524f, - 0.191779911518097f, -0.393700867891312f, 0.191478043794632f, -0.393464356660843f, - 0.191176339983940f, -0.393227607011795f, 0.190874829888344f, -0.392990618944168f, - 0.190573498606682f, -0.392753422260284f, 0.190272361040115f, -0.392515957355499f, - 0.189971387386322f, -0.392278283834457f, 0.189670607447624f, -0.392040401697159f, - 0.189370006322861f, -0.391802251338959f, 0.189069598913193f, -0.391563892364502f, - 0.188769355416298f, -0.391325294971466f, 0.188469305634499f, -0.391086459159851f, - 0.188169434666634f, -0.390847414731979f, 0.187869757413864f, -0.390608131885529f, - 0.187570258975029f, -0.390368610620499f, 0.187270939350128f, -0.390128880739212f, - 0.186971798539162f, -0.389888882637024f, 0.186672851443291f, -0.389648675918579f, - 0.186374098062515f, -0.389408260583878f, 0.186075508594513f, -0.389167606830597f, - 0.185777112841606f, -0.388926714658737f, 0.185478910803795f, -0.388685584068298f, - 0.185180887579918f, -0.388444244861603f, 0.184883043169975f, -0.388202667236328f, - 0.184585392475128f, -0.387960851192474f, 0.184287920594215f, -0.387718826532364f, - 0.183990627527237f, -0.387476563453674f, 0.183693528175354f, -0.387234061956406f, - 0.183396622538567f, -0.386991351842880f, 0.183099895715714f, -0.386748403310776f, - 0.182803362607956f, -0.386505216360092f, 0.182507008314133f, -0.386261820793152f, - 0.182210832834244f, -0.386018186807632f, 0.181914865970612f, -0.385774344205856f, - 0.181619063019753f, -0.385530263185501f, 0.181323468685150f, -0.385285943746567f, - 0.181028053164482f, -0.385041415691376f, 0.180732816457748f, -0.384796649217606f, - 0.180437773466110f, -0.384551674127579f, 0.180142924189568f, -0.384306460618973f, - 0.179848253726959f, -0.384061008691788f, 0.179553776979446f, -0.383815348148346f, - 0.179259493947029f, -0.383569449186325f, 0.178965389728546f, -0.383323341608047f, - 0.178671479225159f, -0.383076995611191f, 0.178377762436867f, -0.382830440998077f, - 0.178084224462509f, -0.382583618164063f, 0.177790880203247f, -0.382336616516113f, - 0.177497729659081f, -0.382089376449585f, 0.177204772830009f, -0.381841897964478f, - 0.176911994814873f, -0.381594210863113f, 0.176619410514832f, -0.381346285343170f, - 0.176327019929886f, -0.381098151206970f, 0.176034808158875f, -0.380849778652191f, - 0.175742805004120f, -0.380601197481155f, 0.175450980663300f, -0.380352377891541f, - 0.175159350037575f, -0.380103349685669f, 0.174867913126946f, -0.379854083061218f, - 0.174576655030251f, -0.379604607820511f, 0.174285605549812f, -0.379354894161224f, - 0.173994734883308f, -0.379104942083359f, 0.173704057931900f, -0.378854811191559f, - 0.173413574695587f, -0.378604412078857f, 0.173123285174370f, -0.378353834152222f, - 0.172833189368248f, -0.378102988004684f, 0.172543287277222f, -0.377851963043213f, - 0.172253578901291f, -0.377600699663162f, 0.171964049339294f, -0.377349197864532f, - 0.171674728393555f, -0.377097487449646f, 0.171385586261749f, -0.376845568418503f, - 0.171096652746201f, -0.376593410968781f, 0.170807912945747f, -0.376341015100479f, - 0.170519351959229f, -0.376088410615921f, 0.170230999588966f, -0.375835597515106f, - 0.169942826032639f, -0.375582575798035f, 0.169654861092567f, -0.375329315662384f, - 0.169367074966431f, -0.375075817108154f, 0.169079497456551f, -0.374822109937668f, - 0.168792113661766f, -0.374568194150925f, 0.168504923582077f, -0.374314039945602f, - 0.168217927217484f, -0.374059677124023f, 0.167931124567986f, -0.373805105686188f, - 0.167644515633583f, -0.373550295829773f, 0.167358100414276f, -0.373295277357101f, - 0.167071878910065f, -0.373040050268173f, 0.166785866022110f, -0.372784584760666f, - 0.166500031948090f, -0.372528880834579f, 0.166214406490326f, -0.372272998094559f, - 0.165928974747658f, -0.372016876935959f, 0.165643751621246f, -0.371760547161102f, - 0.165358707308769f, -0.371503978967667f, 0.165073871612549f, -0.371247202157974f, - 0.164789214730263f, -0.370990216732025f, 0.164504766464233f, -0.370732992887497f, - 0.164220526814461f, -0.370475560426712f, 0.163936465978622f, -0.370217919349670f, - 0.163652613759041f, -0.369960039854050f, 0.163368955254555f, -0.369701951742172f, - 0.163085505366325f, -0.369443655014038f, 0.162802234292030f, -0.369185149669647f, - 0.162519171833992f, -0.368926405906677f, 0.162236317992210f, -0.368667453527451f, - 0.161953642964363f, -0.368408292531967f, 0.161671176552773f, -0.368148893117905f, - 0.161388918757439f, -0.367889285087585f, 0.161106839776039f, -0.367629468441010f, - 0.160824984312058f, -0.367369443178177f, 0.160543307662010f, -0.367109179496765f, - 0.160261839628220f, -0.366848707199097f, 0.159980565309525f, -0.366588026285172f, - 0.159699499607086f, -0.366327136754990f, 0.159418627619743f, -0.366066008806229f, - 0.159137964248657f, -0.365804702043533f, 0.158857494592667f, -0.365543156862259f, - 0.158577233552933f, -0.365281373262405f, 0.158297166228294f, -0.365019410848618f, - 0.158017292618752f, -0.364757210016251f, 0.157737627625465f, -0.364494800567627f, - 0.157458171248436f, -0.364232182502747f, 0.157178908586502f, -0.363969355821610f, - 0.156899839639664f, -0.363706320524216f, 0.156620979309082f, -0.363443046808243f, - 0.156342327594757f, -0.363179564476013f, 0.156063869595528f, -0.362915903329849f, - 0.155785620212555f, -0.362651973962784f, 0.155507579445839f, -0.362387865781784f, - 0.155229732394218f, -0.362123548984528f, 0.154952079057693f, -0.361858993768692f, - 0.154674649238586f, -0.361594229936600f, 0.154397398233414f, -0.361329287290573f, - 0.154120370745659f, -0.361064106225967f, 0.153843536973000f, -0.360798716545105f, - 0.153566911816597f, -0.360533088445663f, 0.153290495276451f, -0.360267281532288f, - 0.153014272451401f, -0.360001266002655f, 0.152738258242607f, -0.359735012054443f, - 0.152462437748909f, -0.359468549489975f, 0.152186840772629f, -0.359201908111572f, - 0.151911437511444f, -0.358935028314590f, 0.151636242866516f, -0.358667939901352f, - 0.151361241936684f, -0.358400642871857f, 0.151086464524269f, -0.358133137226105f, - 0.150811880826950f, -0.357865422964096f, 0.150537505745888f, -0.357597470283508f, - 0.150263324379921f, -0.357329338788986f, 0.149989366531372f, -0.357060998678207f, - 0.149715602397919f, -0.356792420148849f, 0.149442046880722f, -0.356523662805557f, - 0.149168699979782f, -0.356254696846008f, 0.148895561695099f, -0.355985492467880f, - 0.148622632026672f, -0.355716109275818f, 0.148349896073341f, -0.355446487665176f, - 0.148077383637428f, -0.355176687240601f, 0.147805064916611f, -0.354906648397446f, - 0.147532954812050f, -0.354636400938034f, 0.147261068224907f, -0.354365974664688f, - 0.146989375352860f, -0.354095309972763f, 0.146717891097069f, -0.353824466466904f, - 0.146446615457535f, -0.353553384542465f, 0.146175548434258f, -0.353282123804092f, - 0.145904675126076f, -0.353010624647141f, 0.145634025335312f, -0.352738946676254f, - 0.145363584160805f, -0.352467030286789f, 0.145093351602554f, -0.352194935083389f, - 0.144823327660561f, -0.351922631263733f, 0.144553512334824f, -0.351650089025497f, - 0.144283905625343f, -0.351377367973328f, 0.144014507532120f, -0.351104438304901f, - 0.143745318055153f, -0.350831300020218f, 0.143476337194443f, -0.350557953119278f, - 0.143207564949989f, -0.350284397602081f, 0.142939001321793f, -0.350010633468628f, - 0.142670661211014f, -0.349736660718918f, 0.142402514815331f, -0.349462509155273f, - 0.142134591937065f, -0.349188119173050f, 0.141866862773895f, -0.348913550376892f, - 0.141599357128143f, -0.348638743162155f, 0.141332060098648f, -0.348363757133484f, - 0.141064971685410f, -0.348088562488556f, 0.140798106789589f, -0.347813159227371f, - 0.140531435608864f, -0.347537547349930f, 0.140264987945557f, -0.347261756658554f, - 0.139998748898506f, -0.346985727548599f, 0.139732718467712f, -0.346709519624710f, - 0.139466896653175f, -0.346433073282242f, 0.139201298356056f, -0.346156448125839f, - 0.138935908675194f, -0.345879614353180f, 0.138670727610588f, -0.345602601766586f, - 0.138405755162239f, -0.345325350761414f, 0.138141006231308f, -0.345047920942307f, - 0.137876465916634f, -0.344770282506943f, 0.137612134218216f, -0.344492435455322f, - 0.137348011136055f, -0.344214379787445f, 0.137084111571312f, -0.343936115503311f, - 0.136820420622826f, -0.343657672405243f, 0.136556953191757f, -0.343379020690918f, - 0.136293679475784f, -0.343100160360336f, 0.136030644178391f, -0.342821091413498f, - 0.135767802596092f, -0.342541843652725f, 0.135505184531212f, -0.342262357473373f, - 0.135242775082588f, -0.341982692480087f, 0.134980589151382f, -0.341702848672867f, - 0.134718611836433f, -0.341422766447067f, 0.134456858038902f, -0.341142505407333f, - 0.134195312857628f, -0.340862035751343f, 0.133933976292610f, -0.340581357479095f, - 0.133672863245010f, -0.340300500392914f, 0.133411958813667f, -0.340019434690475f, - 0.133151277899742f, -0.339738160371780f, 0.132890805602074f, -0.339456677436829f, - 0.132630556821823f, -0.339175015687943f, 0.132370531558990f, -0.338893145322800f, - 0.132110700011253f, -0.338611096143723f, 0.131851106882095f, -0.338328808546066f, - 0.131591722369194f, -0.338046342134476f, 0.131332546472549f, -0.337763696908951f, - 0.131073594093323f, -0.337480813264847f, 0.130814850330353f, -0.337197750806808f, - 0.130556344985962f, -0.336914509534836f, 0.130298033356667f, -0.336631029844284f, - 0.130039945244789f, -0.336347371339798f, 0.129782080650330f, -0.336063534021378f, - 0.129524439573288f, -0.335779488086700f, 0.129267007112503f, -0.335495233535767f, - 0.129009798169136f, -0.335210770368576f, 0.128752797842026f, -0.334926128387451f, - 0.128496021032333f, -0.334641307592392f, 0.128239467740059f, -0.334356248378754f, - 0.127983123064041f, -0.334071010351181f, 0.127727001905441f, -0.333785593509674f, - 0.127471104264259f, -0.333499968051910f, 0.127215430140495f, -0.333214133977890f, - 0.126959964632988f, -0.332928121089935f, 0.126704722642899f, -0.332641899585724f, - 0.126449704170227f, -0.332355499267578f, 0.126194894313812f, -0.332068890333176f, - 0.125940307974815f, -0.331782072782516f, 0.125685945153236f, -0.331495076417923f, - 0.125431805849075f, -0.331207901239395f, 0.125177875161171f, -0.330920487642288f, - 0.124924175441265f, -0.330632925033569f, 0.124670691788197f, -0.330345153808594f, - 0.124417431652546f, -0.330057173967361f, 0.124164395034313f, -0.329769015312195f, - 0.123911574482918f, -0.329480648040771f, 0.123658977448940f, -0.329192101955414f, - 0.123406603932381f, -0.328903347253799f, 0.123154446482658f, -0.328614413738251f, - 0.122902512550354f, -0.328325271606445f, 0.122650802135468f, -0.328035950660706f, - 0.122399315237999f, -0.327746421098709f, 0.122148044407368f, -0.327456712722778f, - 0.121896997094154f, -0.327166795730591f, 0.121646173298359f, -0.326876699924469f, - 0.121395580470562f, -0.326586425304413f, 0.121145196259022f, -0.326295942068100f, - 0.120895043015480f, -0.326005280017853f, 0.120645113289356f, -0.325714409351349f, - 0.120395407080650f, -0.325423330068588f, 0.120145916938782f, -0.325132101774216f, - 0.119896657764912f, -0.324840664863586f, 0.119647622108459f, -0.324549019336700f, - 0.119398809969425f, -0.324257194995880f, 0.119150213897228f, -0.323965191841125f, - 0.118901848793030f, -0.323672980070114f, 0.118653707206249f, -0.323380589485168f, - 0.118405789136887f, -0.323088020086288f, 0.118158094584942f, -0.322795242071152f, - 0.117910631000996f, -0.322502255439758f, 0.117663383483887f, -0.322209119796753f, - 0.117416366934776f, -0.321915775537491f, 0.117169573903084f, -0.321622252464294f, - 0.116923004388809f, -0.321328520774841f, 0.116676658391953f, -0.321034610271454f, - 0.116430543363094f, -0.320740520954132f, 0.116184651851654f, -0.320446223020554f, - 0.115938983857632f, -0.320151746273041f, 0.115693546831608f, -0.319857090711594f, - 0.115448333323002f, -0.319562226533890f, 0.115203343331814f, -0.319267183542252f, - 0.114958584308624f, -0.318971961736679f, 0.114714048802853f, -0.318676531314850f, - 0.114469736814499f, -0.318380922079086f, 0.114225655794144f, -0.318085134029388f, - 0.113981798291206f, -0.317789167165756f, 0.113738171756268f, -0.317492991685867f, - 0.113494776189327f, -0.317196637392044f, 0.113251596689224f, -0.316900104284287f, - 0.113008655607700f, -0.316603392362595f, 0.112765938043594f, -0.316306471824646f, - 0.112523443996906f, -0.316009372472763f, 0.112281180918217f, -0.315712094306946f, - 0.112039148807526f, -0.315414607524872f, 0.111797347664833f, -0.315116971731186f, - 0.111555770039558f, -0.314819127321243f, 0.111314415931702f, -0.314521104097366f, - 0.111073300242424f, -0.314222872257233f, 0.110832408070564f, -0.313924491405487f, - 0.110591746866703f, -0.313625901937485f, 0.110351309180260f, -0.313327133655548f, - 0.110111102461815f, -0.313028186559677f, 0.109871134161949f, -0.312729060649872f, - 0.109631389379501f, -0.312429755926132f, 0.109391868114471f, -0.312130242586136f, - 0.109152585268021f, -0.311830550432205f, 0.108913525938988f, -0.311530679464340f, - 0.108674705028534f, -0.311230629682541f, 0.108436107635498f, -0.310930401086807f, - 0.108197741210461f, -0.310629993677139f, 0.107959605753422f, -0.310329377651215f, - 0.107721701264381f, -0.310028612613678f, 0.107484027743340f, -0.309727638959885f, - 0.107246585190296f, -0.309426486492157f, 0.107009373605251f, -0.309125155210495f, - 0.106772392988205f, -0.308823645114899f, 0.106535643339157f, -0.308521956205368f, - 0.106299124658108f, -0.308220088481903f, 0.106062836945057f, -0.307918041944504f, - 0.105826787650585f, -0.307615786790848f, 0.105590961873531f, -0.307313382625580f, - 0.105355374515057f, -0.307010769844055f, 0.105120018124580f, -0.306708008050919f, - 0.104884892702103f, -0.306405037641525f, 0.104649998247623f, -0.306101888418198f, - 0.104415334761143f, -0.305798590183258f, 0.104180909693241f, -0.305495083332062f, - 0.103946708142757f, -0.305191397666931f, 0.103712752461433f, -0.304887533187866f, - 0.103479020297527f, -0.304583519697189f, 0.103245526552200f, -0.304279297590256f, - 0.103012263774872f, -0.303974896669388f, 0.102779231965542f, -0.303670316934586f, - 0.102546438574791f, -0.303365558385849f, 0.102313876152039f, -0.303060621023178f, - 0.102081544697285f, -0.302755534648895f, 0.101849451661110f, -0.302450239658356f, - 0.101617597043514f, -0.302144765853882f, 0.101385973393917f, -0.301839113235474f, - 0.101154580712318f, -0.301533311605453f, 0.100923426449299f, -0.301227301359177f, - 0.100692503154278f, -0.300921112298965f, 0.100461818277836f, -0.300614774227142f, - 0.100231364369392f, -0.300308227539063f, 0.100001148879528f, -0.300001531839371f, - 0.099771171808243f, -0.299694657325745f, 0.099541425704956f, -0.299387603998184f, - 0.099311910569668f, -0.299080342054367f, 0.099082641303539f, -0.298772931098938f, - 0.098853603005409f, -0.298465341329575f, 0.098624803125858f, -0.298157602548599f, - 0.098396234214306f, -0.297849655151367f, 0.098167903721333f, -0.297541528940201f, - 0.097939811646938f, -0.297233253717422f, 0.097711957991123f, -0.296924799680710f, - 0.097484335303307f, -0.296616137027740f, 0.097256951034069f, -0.296307325363159f, - 0.097029805183411f, -0.295998334884644f, 0.096802897751331f, -0.295689195394516f, - 0.096576221287251f, -0.295379847288132f, 0.096349790692329f, -0.295070350170136f, - 0.096123591065407f, -0.294760644435883f, 0.095897629857063f, -0.294450789690018f, - 0.095671907067299f, -0.294140785932541f, 0.095446422696114f, -0.293830573558807f, - 0.095221176743507f, -0.293520182371140f, 0.094996169209480f, -0.293209642171860f, - 0.094771400094032f, -0.292898923158646f, 0.094546869397163f, -0.292588025331497f, - 0.094322577118874f, -0.292276978492737f, 0.094098523259163f, -0.291965723037720f, - 0.093874707818031f, -0.291654318571091f, 0.093651130795479f, -0.291342735290527f, - 0.093427792191505f, -0.291031002998352f, 0.093204692006111f, -0.290719062089920f, - 0.092981837689877f, -0.290406972169876f, 0.092759214341640f, -0.290094703435898f, - 0.092536836862564f, -0.289782285690308f, 0.092314697802067f, -0.289469659328461f, - 0.092092797160149f, -0.289156883955002f, 0.091871134936810f, -0.288843959569931f, - 0.091649711132050f, -0.288530826568604f, 0.091428533196449f, -0.288217544555664f, - 0.091207593679428f, -0.287904083728790f, 0.090986892580986f, -0.287590473890305f, - 0.090766437351704f, -0.287276685237885f, 0.090546220541000f, -0.286962717771530f, - 0.090326242148876f, -0.286648571491241f, 0.090106502175331f, -0.286334276199341f, - 0.089887008070946f, -0.286019802093506f, 0.089667752385139f, -0.285705178976059f, - 0.089448742568493f, -0.285390377044678f, 0.089229971170425f, -0.285075396299362f, - 0.089011445641518f, -0.284760266542435f, 0.088793158531189f, -0.284444957971573f, - 0.088575109839439f, -0.284129470586777f, 0.088357307016850f, -0.283813834190369f, - 0.088139742612839f, -0.283498018980026f, 0.087922424077988f, -0.283182054758072f, - 0.087705351412296f, -0.282865911722183f, 0.087488517165184f, -0.282549589872360f, - 0.087271921336651f, -0.282233119010925f, 0.087055571377277f, -0.281916469335556f, - 0.086839467287064f, -0.281599670648575f, 0.086623609066010f, -0.281282693147659f, - 0.086407989263535f, -0.280965566635132f, 0.086192607879639f, -0.280648261308670f, - 0.085977479815483f, -0.280330777168274f, 0.085762590169907f, -0.280013144016266f, - 0.085547938942909f, -0.279695361852646f, 0.085333541035652f, -0.279377400875092f, - 0.085119381546974f, -0.279059261083603f, 0.084905467927456f, -0.278740972280502f, - 0.084691800177097f, -0.278422504663467f, 0.084478378295898f, -0.278103888034821f, - 0.084265194833279f, -0.277785122394562f, 0.084052257239819f, -0.277466177940369f, - 0.083839565515518f, -0.277147054672241f, 0.083627119660378f, -0.276827782392502f, - 0.083414919674397f, -0.276508361101151f, 0.083202958106995f, -0.276188760995865f, - 0.082991249859333f, -0.275868982076645f, 0.082779780030251f, -0.275549083948135f, - 0.082568563520908f, -0.275228977203369f, 0.082357585430145f, -0.274908751249313f, - 0.082146860659122f, -0.274588316679001f, 0.081936374306679f, -0.274267762899399f, - 0.081726133823395f, -0.273947030305862f, 0.081516146659851f, -0.273626148700714f, - 0.081306397914886f, -0.273305088281631f, 0.081096902489662f, -0.272983878850937f, - 0.080887645483017f, -0.272662490606308f, 0.080678641796112f, -0.272340953350067f, - 0.080469883978367f, -0.272019267082214f, 0.080261372029781f, -0.271697402000427f, - 0.080053105950356f, -0.271375387907028f, 0.079845085740089f, -0.271053224802017f, - 0.079637311398983f, -0.270730882883072f, 0.079429790377617f, -0.270408391952515f, - 0.079222507774830f, -0.270085722208023f, 0.079015478491783f, -0.269762933254242f, - 0.078808702528477f, -0.269439965486526f, 0.078602164983749f, -0.269116818904877f, - 0.078395880758762f, -0.268793523311615f, 0.078189842402935f, -0.268470078706741f, - 0.077984049916267f, -0.268146485090256f, 0.077778510749340f, -0.267822742462158f, - 0.077573217451572f, -0.267498821020126f, 0.077368170022964f, -0.267174720764160f, - 0.077163375914097f, -0.266850501298904f, 0.076958827674389f, -0.266526103019714f, - 0.076754532754421f, -0.266201555728912f, 0.076550483703613f, -0.265876859426498f, - 0.076346680521965f, -0.265552014112473f, 0.076143130660057f, -0.265226989984512f, - 0.075939826667309f, -0.264901816844940f, 0.075736775994301f, -0.264576494693756f, - 0.075533971190453f, -0.264250993728638f, 0.075331419706345f, -0.263925373554230f, - 0.075129114091396f, -0.263599574565887f, 0.074927061796188f, -0.263273626565933f, - 0.074725262820721f, -0.262947499752045f, 0.074523709714413f, -0.262621253728867f, - 0.074322402477264f, -0.262294828891754f, 0.074121348559856f, -0.261968284845352f, - 0.073920547962189f, -0.261641561985016f, 0.073720000684261f, -0.261314690113068f, - 0.073519699275494f, -0.260987639427185f, 0.073319651186466f, -0.260660469532013f, - 0.073119848966599f, -0.260333120822906f, 0.072920300066471f, -0.260005623102188f, - 0.072721004486084f, -0.259678006172180f, 0.072521962225437f, -0.259350210428238f, - 0.072323165833950f, -0.259022265672684f, 0.072124622762203f, -0.258694142103195f, - 0.071926333010197f, -0.258365899324417f, 0.071728296577930f, -0.258037507534027f, - 0.071530513465405f, -0.257708936929703f, 0.071332976222038f, -0.257380217313766f, - 0.071135692298412f, -0.257051378488541f, 0.070938661694527f, -0.256722360849380f, - 0.070741884410381f, -0.256393194198608f, 0.070545360445976f, -0.256063878536224f, - 0.070349089801311f, -0.255734413862228f, 0.070153072476387f, -0.255404800176620f, - 0.069957308471203f, -0.255075037479401f, 0.069761790335178f, -0.254745125770569f, - 0.069566532969475f, -0.254415065050125f, 0.069371521472931f, -0.254084855318069f, - 0.069176770746708f, -0.253754496574402f, 0.068982265889645f, -0.253423988819122f, - 0.068788021802902f, -0.253093332052231f, 0.068594031035900f, -0.252762526273727f, - 0.068400286138058f, -0.252431541681290f, 0.068206802010536f, -0.252100437879562f, - 0.068013571202755f, -0.251769185066223f, 0.067820593714714f, -0.251437783241272f, - 0.067627869546413f, -0.251106232404709f, 0.067435398697853f, -0.250774532556534f, - 0.067243188619614f, -0.250442683696747f, 0.067051224410534f, -0.250110685825348f, - 0.066859520971775f, -0.249778553843498f, 0.066668070852757f, -0.249446272850037f, - 0.066476874053478f, -0.249113827943802f, 0.066285938024521f, -0.248781248927116f, - 0.066095255315304f, -0.248448520898819f, 0.065904818475246f, -0.248115643858910f, - 0.065714649856091f, -0.247782632708550f, 0.065524727106094f, -0.247449472546577f, - 0.065335065126419f, -0.247116148471832f, 0.065145656466484f, -0.246782705187798f, - 0.064956501126289f, -0.246449097990990f, 0.064767606556416f, -0.246115356683731f, - 0.064578965306282f, -0.245781451463699f, 0.064390584826469f, -0.245447427034378f, - 0.064202457666397f, -0.245113238692284f, 0.064014583826065f, -0.244778916239738f, - 0.063826970756054f, -0.244444444775581f, 0.063639611005783f, -0.244109839200974f, - 0.063452512025833f, -0.243775084614754f, 0.063265666365623f, -0.243440181016922f, - 0.063079081475735f, -0.243105143308640f, 0.062892749905586f, -0.242769956588745f, - 0.062706671655178f, -0.242434620857239f, 0.062520854175091f, -0.242099151015282f, - 0.062335297465324f, -0.241763532161713f, 0.062149997800589f, -0.241427779197693f, - 0.061964951455593f, -0.241091892123222f, 0.061780165880919f, -0.240755841135979f, - 0.061595637351274f, -0.240419670939446f, 0.061411365866661f, -0.240083336830139f, - 0.061227355152369f, -0.239746883511543f, 0.061043601483107f, -0.239410281181335f, - 0.060860104858875f, -0.239073529839516f, 0.060676865279675f, -0.238736644387245f, - 0.060493886470795f, -0.238399609923363f, 0.060311164706945f, -0.238062441349030f, - 0.060128703713417f, -0.237725138664246f, 0.059946499764919f, -0.237387686967850f, - 0.059764556586742f, -0.237050101161003f, 0.059582870453596f, -0.236712381243706f, - 0.059401445090771f, -0.236374512314796f, 0.059220276772976f, -0.236036509275436f, - 0.059039369225502f, -0.235698372125626f, 0.058858718723059f, -0.235360085964203f, - 0.058678328990936f, -0.235021665692329f, 0.058498200029135f, -0.234683111310005f, - 0.058318331837654f, -0.234344407916069f, 0.058138720691204f, -0.234005570411682f, - 0.057959370315075f, -0.233666598796844f, 0.057780280709267f, -0.233327493071556f, - 0.057601451873779f, -0.232988253235817f, 0.057422880083323f, -0.232648864388466f, - 0.057244572788477f, -0.232309341430664f, 0.057066522538662f, -0.231969684362412f, - 0.056888736784458f, -0.231629893183708f, 0.056711208075285f, -0.231289967894554f, - 0.056533940136433f, -0.230949893593788f, 0.056356932967901f, -0.230609700083733f, - 0.056180190294981f, -0.230269357562065f, 0.056003704667091f, -0.229928880929947f, - 0.055827483534813f, -0.229588270187378f, 0.055651523172855f, -0.229247525334358f, - 0.055475823581219f, -0.228906646370888f, 0.055300384759903f, -0.228565633296967f, - 0.055125206708908f, -0.228224486112595f, 0.054950293153524f, -0.227883204817772f, - 0.054775636643171f, -0.227541789412498f, 0.054601248353720f, -0.227200239896774f, - 0.054427117109299f, -0.226858556270599f, 0.054253250360489f, -0.226516738533974f, - 0.054079644382000f, -0.226174786686897f, 0.053906302899122f, -0.225832715630531f, - 0.053733222186565f, -0.225490495562553f, 0.053560405969620f, -0.225148141384125f, - 0.053387850522995f, -0.224805667996407f, 0.053215555846691f, -0.224463045597076f, - 0.053043525665998f, -0.224120303988457f, 0.052871759980917f, -0.223777428269386f, - 0.052700258791447f, -0.223434418439865f, 0.052529018372297f, -0.223091274499893f, - 0.052358038723469f, -0.222748011350632f, 0.052187327295542f, -0.222404599189758f, - 0.052016876637936f, -0.222061067819595f, 0.051846686750650f, -0.221717402338982f, - 0.051676765084267f, -0.221373617649078f, 0.051507104188204f, -0.221029683947563f, - 0.051337707787752f, -0.220685631036758f, 0.051168579608202f, -0.220341444015503f, - 0.050999708473682f, -0.219997137784958f, 0.050831105560064f, -0.219652697443962f, - 0.050662767142057f, -0.219308122992516f, 0.050494693219662f, -0.218963414430618f, - 0.050326880067587f, -0.218618586659431f, 0.050159335136414f, -0.218273624777794f, - 0.049992054700851f, -0.217928543686867f, 0.049825038760900f, -0.217583328485489f, - 0.049658283591270f, -0.217237979173660f, 0.049491796642542f, -0.216892510652542f, - 0.049325577914715f, -0.216546908020973f, 0.049159619957209f, -0.216201186180115f, - 0.048993926495314f, -0.215855330228806f, 0.048828501254320f, -0.215509355068207f, - 0.048663340508938f, -0.215163245797157f, 0.048498444259167f, -0.214817002415657f, - 0.048333816230297f, -0.214470639824867f, 0.048169452697039f, -0.214124158024788f, - 0.048005353659391f, -0.213777542114258f, 0.047841522842646f, -0.213430806994438f, - 0.047677956521511f, -0.213083937764168f, 0.047514654695988f, -0.212736949324608f, - 0.047351621091366f, -0.212389841675758f, 0.047188851982355f, -0.212042599916458f, - 0.047026351094246f, -0.211695238947868f, 0.046864114701748f, -0.211347743868828f, - 0.046702146530151f, -0.211000129580498f, 0.046540446579456f, -0.210652396082878f, - 0.046379011124372f, -0.210304543375969f, 0.046217843890190f, -0.209956556558609f, - 0.046056941151619f, -0.209608450531960f, 0.045896306633949f, -0.209260210394859f, - 0.045735940337181f, -0.208911851048470f, 0.045575842261314f, -0.208563387393951f, - 0.045416008681059f, -0.208214774727821f, 0.045256443321705f, -0.207866057753563f, - 0.045097146183252f, -0.207517206668854f, 0.044938117265701f, -0.207168251276016f, - 0.044779352843761f, -0.206819161772728f, 0.044620860368013f, -0.206469938158989f, - 0.044462632387877f, -0.206120610237122f, 0.044304672628641f, -0.205771163105965f, - 0.044146984815598f, -0.205421581864357f, 0.043989561498165f, -0.205071896314621f, - 0.043832406401634f, -0.204722076654434f, 0.043675523251295f, -0.204372137784958f, - 0.043518904596567f, -0.204022079706192f, 0.043362557888031f, -0.203671902418137f, - 0.043206475675106f, -0.203321605920792f, 0.043050665408373f, -0.202971190214157f, - 0.042895123362541f, -0.202620655298233f, 0.042739849537611f, -0.202270001173019f, - 0.042584843933582f, -0.201919227838516f, 0.042430106550455f, -0.201568335294724f, - 0.042275641113520f, -0.201217323541641f, 0.042121443897486f, -0.200866192579269f, - 0.041967518627644f, -0.200514942407608f, 0.041813857853413f, -0.200163587927818f, - 0.041660469025373f, -0.199812099337578f, 0.041507352143526f, -0.199460506439209f, - 0.041354499757290f, -0.199108779430389f, 0.041201923042536f, -0.198756948113441f, - 0.041049610823393f, -0.198404997587204f, 0.040897574275732f, -0.198052927851677f, - 0.040745802223682f, -0.197700738906860f, 0.040594302117825f, -0.197348430752754f, - 0.040443073958158f, -0.196996018290520f, 0.040292114019394f, -0.196643486618996f, - 0.040141426026821f, -0.196290835738182f, 0.039991009980440f, -0.195938065648079f, - 0.039840862154961f, -0.195585191249847f, 0.039690986275673f, -0.195232197642326f, - 0.039541378617287f, -0.194879084825516f, 0.039392042905092f, -0.194525867700577f, - 0.039242979139090f, -0.194172516465187f, 0.039094187319279f, -0.193819075822830f, - 0.038945667445660f, -0.193465501070023f, 0.038797415792942f, -0.193111822009087f, - 0.038649436086416f, -0.192758023738861f, 0.038501728326082f, -0.192404121160507f, - 0.038354292511940f, -0.192050099372864f, 0.038207128643990f, -0.191695958375931f, - 0.038060232996941f, -0.191341713070869f, 0.037913613021374f, -0.190987363457680f, - 0.037767261266708f, -0.190632879734039f, 0.037621185183525f, -0.190278306603432f, - 0.037475381046534f, -0.189923599362373f, 0.037329845130444f, -0.189568802714348f, - 0.037184584885836f, -0.189213871955872f, 0.037039596587420f, -0.188858851790428f, - 0.036894880235195f, -0.188503712415695f, 0.036750435829163f, -0.188148453831673f, - 0.036606263369322f, -0.187793090939522f, 0.036462362855673f, -0.187437608838081f, - 0.036318738013506f, -0.187082037329674f, 0.036175385117531f, -0.186726331710815f, - 0.036032304167747f, -0.186370536684990f, 0.035889495164156f, -0.186014622449875f, - 0.035746958106756f, -0.185658603906631f, 0.035604696720839f, -0.185302466154099f, - 0.035462711006403f, -0.184946224093437f, 0.035320993512869f, -0.184589877724648f, - 0.035179551690817f, -0.184233412146568f, 0.035038381814957f, -0.183876842260361f, - 0.034897487610579f, -0.183520168066025f, 0.034756865352392f, -0.183163389563560f, - 0.034616518765688f, -0.182806491851807f, 0.034476444125175f, -0.182449504733086f, - 0.034336645156145f, -0.182092398405075f, 0.034197118133307f, -0.181735187768936f, - 0.034057866781950f, -0.181377857923508f, 0.033918887376785f, -0.181020438671112f, - 0.033780183643103f, -0.180662900209427f, 0.033641755580902f, -0.180305257439613f, - 0.033503599464893f, -0.179947525262833f, 0.033365719020367f, -0.179589673876762f, - 0.033228114247322f, -0.179231703281403f, 0.033090781420469f, -0.178873643279076f, - 0.032953724265099f, -0.178515478968620f, 0.032816942781210f, -0.178157210350037f, - 0.032680433243513f, -0.177798837423325f, 0.032544203102589f, -0.177440345287323f, - 0.032408244907856f, -0.177081763744354f, 0.032272562384605f, -0.176723077893257f, - 0.032137155532837f, -0.176364272832870f, 0.032002024352551f, -0.176005378365517f, - 0.031867165118456f, -0.175646379590034f, 0.031732585281134f, -0.175287276506424f, - 0.031598277390003f, -0.174928069114685f, 0.031464248895645f, -0.174568757414818f, - 0.031330492347479f, -0.174209341406822f, 0.031197015196085f, -0.173849821090698f, - 0.031063811853528f, -0.173490211367607f, 0.030930884182453f, -0.173130482435226f, - 0.030798232182860f, -0.172770664095879f, 0.030665857717395f, -0.172410741448402f, - 0.030533758923411f, -0.172050714492798f, 0.030401935800910f, -0.171690583229065f, - 0.030270388349891f, -0.171330362558365f, 0.030139118432999f, -0.170970037579536f, - 0.030008124187589f, -0.170609608292580f, 0.029877405613661f, -0.170249074697495f, - 0.029746964573860f, -0.169888436794281f, 0.029616801068187f, -0.169527709484100f, - 0.029486913233995f, -0.169166877865791f, 0.029357301071286f, -0.168805956840515f, - 0.029227968305349f, -0.168444931507111f, 0.029098909348249f, -0.168083801865578f, - 0.028970129787922f, -0.167722567915916f, 0.028841627761722f, -0.167361244559288f, - 0.028713401407003f, -0.166999831795692f, 0.028585452586412f, -0.166638299822807f, - 0.028457781299949f, -0.166276678442955f, 0.028330387547612f, -0.165914967656136f, - 0.028203271329403f, -0.165553152561188f, 0.028076432645321f, -0.165191248059273f, - 0.027949871495366f, -0.164829224348068f, 0.027823587879539f, -0.164467126131058f, - 0.027697581797838f, -0.164104923605919f, 0.027571853250265f, -0.163742616772652f, - 0.027446404099464f, -0.163380220532417f, 0.027321230620146f, -0.163017734885216f, - 0.027196336537600f, -0.162655144929886f, 0.027071721851826f, -0.162292465567589f, - 0.026947384700179f, -0.161929681897163f, 0.026823325082660f, -0.161566808819771f, - 0.026699542999268f, -0.161203846335411f, 0.026576040312648f, -0.160840779542923f, - 0.026452817022800f, -0.160477623343468f, 0.026329871267080f, -0.160114362835884f, - 0.026207204908133f, -0.159751012921333f, 0.026084816083312f, -0.159387573599815f, - 0.025962706655264f, -0.159024044871330f, 0.025840876623988f, -0.158660411834717f, - 0.025719324126840f, -0.158296689391136f, 0.025598052889109f, -0.157932877540588f, - 0.025477059185505f, -0.157568961381912f, 0.025356344878674f, -0.157204970717430f, - 0.025235909968615f, -0.156840875744820f, 0.025115754455328f, -0.156476691365242f, - 0.024995878338814f, -0.156112402677536f, 0.024876279756427f, -0.155748039484024f, - 0.024756962433457f, -0.155383571982384f, 0.024637924507260f, -0.155019029974937f, - 0.024519165977836f, -0.154654383659363f, 0.024400688707829f, -0.154289647936821f, - 0.024282488971949f, -0.153924822807312f, 0.024164570495486f, -0.153559908270836f, - 0.024046931415796f, -0.153194904327393f, 0.023929571732879f, -0.152829796075821f, - 0.023812493309379f, -0.152464613318443f, 0.023695694282651f, -0.152099341154099f, - 0.023579176515341f, -0.151733979582787f, 0.023462938144803f, -0.151368513703346f, - 0.023346979171038f, -0.151002973318100f, 0.023231301456690f, -0.150637343525887f, - 0.023115905001760f, -0.150271624326706f, 0.023000787943602f, -0.149905815720558f, - 0.022885952144861f, -0.149539917707443f, 0.022771397605538f, -0.149173930287361f, - 0.022657122462988f, -0.148807853460312f, 0.022543128579855f, -0.148441687226295f, - 0.022429415956140f, -0.148075446486473f, 0.022315984591842f, -0.147709101438522f, - 0.022202832624316f, -0.147342681884766f, 0.022089963778853f, -0.146976172924042f, - 0.021977374330163f, -0.146609574556351f, 0.021865066140890f, -0.146242901682854f, - 0.021753041073680f, -0.145876124501228f, 0.021641295403242f, -0.145509272813797f, - 0.021529832854867f, -0.145142331719399f, 0.021418649703264f, -0.144775316119194f, - 0.021307749673724f, -0.144408211112022f, 0.021197130903602f, -0.144041016697884f, - 0.021086793392897f, -0.143673732876778f, 0.020976737141609f, -0.143306359648705f, - 0.020866964012384f, -0.142938911914825f, 0.020757472142577f, -0.142571389675140f, - 0.020648263394833f, -0.142203763127327f, 0.020539334043860f, -0.141836062073708f, - 0.020430689677596f, -0.141468286514282f, 0.020322324708104f, -0.141100421547890f, - 0.020214242860675f, -0.140732467174530f, 0.020106444135308f, -0.140364438295364f, - 0.019998926669359f, -0.139996320009232f, 0.019891692325473f, -0.139628127217293f, - 0.019784741103649f, -0.139259845018387f, 0.019678071141243f, -0.138891488313675f, - 0.019571684300900f, -0.138523042201996f, 0.019465578719974f, -0.138154521584511f, - 0.019359756261110f, -0.137785911560059f, 0.019254218786955f, -0.137417227029800f, - 0.019148962572217f, -0.137048453092575f, 0.019043987616897f, -0.136679604649544f, - 0.018939297646284f, -0.136310681700706f, 0.018834890797734f, -0.135941669344902f, - 0.018730765208602f, -0.135572582483292f, 0.018626924604177f, -0.135203406214714f, - 0.018523367121816f, -0.134834155440331f, 0.018420090898871f, -0.134464830160141f, - 0.018317099660635f, -0.134095430374146f, 0.018214391544461f, -0.133725941181183f, - 0.018111966550350f, -0.133356377482414f, 0.018009826540947f, -0.132986739277840f, - 0.017907967790961f, -0.132617011666298f, 0.017806394025683f, -0.132247209548950f, - 0.017705103382468f, -0.131877332925797f, 0.017604095861316f, -0.131507381796837f, - 0.017503373324871f, -0.131137356162071f, 0.017402933910489f, -0.130767241120338f, - 0.017302779480815f, -0.130397051572800f, 0.017202908173203f, -0.130026802420616f, - 0.017103319987655f, -0.129656463861465f, 0.017004016786814f, -0.129286035895348f, - 0.016904998570681f, -0.128915548324585f, 0.016806263476610f, -0.128544986248016f, - 0.016707813367248f, -0.128174334764481f, 0.016609646379948f, -0.127803623676300f, - 0.016511764377356f, -0.127432823181152f, 0.016414167359471f, -0.127061963081360f, - 0.016316853463650f, -0.126691013574600f, 0.016219824552536f, -0.126320004463196f, - 0.016123080626130f, -0.125948905944824f, 0.016026621684432f, -0.125577747821808f, - 0.015930447727442f, -0.125206500291824f, 0.015834558755159f, -0.124835193157196f, - 0.015738952904940f, -0.124463804066181f, 0.015643632039428f, -0.124092340469360f, - 0.015548598021269f, -0.123720809817314f, 0.015453847125173f, -0.123349204659462f, - 0.015359382145107f, -0.122977524995804f, 0.015265202149749f, -0.122605770826340f, - 0.015171307139099f, -0.122233949601650f, 0.015077698044479f, -0.121862053871155f, - 0.014984373003244f, -0.121490091085434f, 0.014891333878040f, -0.121118053793907f, - 0.014798580668867f, -0.120745941996574f, 0.014706112444401f, -0.120373763144016f, - 0.014613929204643f, -0.120001509785652f, 0.014522032812238f, -0.119629189372063f, - 0.014430420473218f, -0.119256794452667f, 0.014339094981551f, -0.118884332478046f, - 0.014248054474592f, -0.118511803448200f, 0.014157299883664f, -0.118139199912548f, - 0.014066831208766f, -0.117766529321671f, 0.013976648449898f, -0.117393791675568f, - 0.013886751607060f, -0.117020979523659f, 0.013797140680254f, -0.116648100316525f, - 0.013707815669477f, -0.116275154054165f, 0.013618776574731f, -0.115902140736580f, - 0.013530024327338f, -0.115529052913189f, 0.013441557064652f, -0.115155905485153f, - 0.013353376649320f, -0.114782683551311f, 0.013265483081341f, -0.114409394562244f, - 0.013177875429392f, -0.114036038517952f, 0.013090553693473f, -0.113662622869015f, - 0.013003518804908f, -0.113289132714272f, 0.012916770763695f, -0.112915575504303f, - 0.012830308638513f, -0.112541958689690f, 0.012744133360684f, -0.112168267369270f, - 0.012658244930208f, -0.111794516444206f, 0.012572642415762f, -0.111420698463917f, - 0.012487327679992f, -0.111046813428402f, 0.012402298860252f, -0.110672861337662f, - 0.012317557819188f, -0.110298842191696f, 0.012233102694154f, -0.109924763441086f, - 0.012148935347795f, -0.109550617635250f, 0.012065053917468f, -0.109176412224770f, - 0.011981460265815f, -0.108802139759064f, 0.011898153461516f, -0.108427800238132f, - 0.011815134435892f, -0.108053401112556f, 0.011732402257621f, -0.107678934931755f, - 0.011649956926703f, -0.107304409146309f, 0.011567799374461f, -0.106929816305637f, - 0.011485928669572f, -0.106555156409740f, 0.011404345743358f, -0.106180444359779f, - 0.011323049664497f, -0.105805665254593f, 0.011242041364312f, -0.105430819094181f, - 0.011161320842803f, -0.105055920779705f, 0.011080888099968f, -0.104680955410004f, - 0.011000742204487f, -0.104305922985077f, 0.010920885019004f, -0.103930838406086f, - 0.010841314680874f, -0.103555686771870f, 0.010762032121420f, -0.103180475533009f, - 0.010683037340641f, -0.102805204689503f, 0.010604331269860f, -0.102429874241352f, - 0.010525912046432f, -0.102054484188557f, 0.010447781533003f, -0.101679034531116f, - 0.010369938798249f, -0.101303517818451f, 0.010292383842170f, -0.100927948951721f, - 0.010215117596090f, -0.100552320480347f, 0.010138138197362f, -0.100176624953747f, - 0.010061448439956f, -0.099800877273083f, 0.009985045529902f, -0.099425069987774f, - 0.009908932261169f, -0.099049203097820f, 0.009833106771111f, -0.098673284053802f, - 0.009757569059730f, -0.098297297954559f, 0.009682320058346f, -0.097921259701252f, - 0.009607359766960f, -0.097545161843300f, 0.009532688185573f, -0.097169004380703f, - 0.009458304382861f, -0.096792794764042f, 0.009384209290147f, -0.096416525542736f, - 0.009310402907431f, -0.096040196716785f, 0.009236886166036f, -0.095663815736771f, - 0.009163657203317f, -0.095287375152111f, 0.009090716950595f, -0.094910882413387f, - 0.009018065407872f, -0.094534330070019f, 0.008945702575147f, -0.094157725572586f, - 0.008873629383743f, -0.093781061470509f, 0.008801844902337f, -0.093404345214367f, - 0.008730349130929f, -0.093027576804161f, 0.008659142069519f, -0.092650748789310f, - 0.008588224649429f, -0.092273868620396f, 0.008517595939338f, -0.091896936297417f, - 0.008447255939245f, -0.091519944369793f, 0.008377205580473f, -0.091142900288105f, - 0.008307444863021f, -0.090765804052353f, 0.008237972855568f, -0.090388655662537f, - 0.008168790489435f, -0.090011447668076f, 0.008099896833301f, -0.089634194970131f, - 0.008031292818487f, -0.089256882667542f, 0.007962978444993f, -0.088879525661469f, - 0.007894953712821f, -0.088502109050751f, 0.007827218621969f, -0.088124647736549f, - 0.007759772241116f, -0.087747126817703f, 0.007692615967244f, -0.087369553744793f, - 0.007625748869032f, -0.086991935968399f, 0.007559171877801f, -0.086614266037941f, - 0.007492884527892f, -0.086236543953419f, 0.007426886819303f, -0.085858769714832f, - 0.007361178752035f, -0.085480943322182f, 0.007295760791749f, -0.085103072226048f, - 0.007230632472783f, -0.084725148975849f, 0.007165793795139f, -0.084347173571587f, - 0.007101245224476f, -0.083969146013260f, 0.007036986760795f, -0.083591073751450f, - 0.006973018404096f, -0.083212949335575f, 0.006909339688718f, -0.082834780216217f, - 0.006845951545984f, -0.082456558942795f, 0.006782853044569f, -0.082078292965889f, - 0.006720044650137f, -0.081699974834919f, 0.006657526828349f, -0.081321612000465f, - 0.006595299113542f, -0.080943197011948f, 0.006533361505717f, -0.080564737319946f, - 0.006471714470536f, -0.080186225473881f, 0.006410357542336f, -0.079807676374912f, - 0.006349290721118f, -0.079429075121880f, 0.006288514938205f, -0.079050421714783f, - 0.006228029262275f, -0.078671731054783f, 0.006167833693326f, -0.078292988240719f, - 0.006107929162681f, -0.077914200723171f, 0.006048315204680f, -0.077535368502140f, - 0.005988991353661f, -0.077156484127045f, 0.005929958540946f, -0.076777562499046f, - 0.005871216300875f, -0.076398596167564f, 0.005812764633447f, -0.076019577682018f, - 0.005754603538662f, -0.075640521943569f, 0.005696733482182f, -0.075261414051056f, - 0.005639153998345f, -0.074882268905640f, 0.005581865552813f, -0.074503071606159f, - 0.005524867679924f, -0.074123837053776f, 0.005468160845339f, -0.073744557797909f, - 0.005411745049059f, -0.073365233838558f, 0.005355620291084f, -0.072985872626305f, - 0.005299786105752f, -0.072606459259987f, 0.005244242958724f, -0.072227008640766f, - 0.005188991315663f, -0.071847513318062f, 0.005134030245245f, -0.071467980742455f, - 0.005079360678792f, -0.071088403463364f, 0.005024982150644f, -0.070708781480789f, - 0.004970894660801f, -0.070329122245312f, 0.004917098674923f, -0.069949418306351f, - 0.004863593727350f, -0.069569669663906f, 0.004810380283743f, -0.069189883768559f, - 0.004757457878441f, -0.068810060620308f, 0.004704826977104f, -0.068430192768574f, - 0.004652487114072f, -0.068050287663937f, 0.004600439220667f, -0.067670337855816f, - 0.004548682365566f, -0.067290350794792f, 0.004497217014432f, -0.066910326480865f, - 0.004446043167263f, -0.066530264914036f, 0.004395160824060f, -0.066150158643723f, - 0.004344569984823f, -0.065770015120506f, 0.004294271115214f, -0.065389834344387f, - 0.004244263283908f, -0.065009608864784f, 0.004194547422230f, -0.064629353582859f, - 0.004145123064518f, -0.064249053597450f, 0.004095990676433f, -0.063868723809719f, - 0.004047149792314f, -0.063488349318504f, 0.003998600877821f, -0.063107937574387f, - 0.003950343467295f, -0.062727488577366f, 0.003902378026396f, -0.062347009778023f, - 0.003854704322293f, -0.061966486275196f, 0.003807322587818f, -0.061585929244757f, - 0.003760232590139f, -0.061205338686705f, 0.003713434794918f, -0.060824707150459f, - 0.003666928736493f, -0.060444042086601f, 0.003620714880526f, -0.060063343495131f, - 0.003574792761356f, -0.059682607650757f, 0.003529162844643f, -0.059301838278770f, - 0.003483824897557f, -0.058921031653881f, 0.003438779152930f, -0.058540191501379f, - 0.003394025377929f, -0.058159314095974f, 0.003349563805386f, -0.057778406888247f, - 0.003305394435301f, -0.057397462427616f, 0.003261517267674f, -0.057016488164663f, - 0.003217932302505f, -0.056635476648808f, 0.003174639539793f, -0.056254431605339f, - 0.003131638979539f, -0.055873356759548f, 0.003088930854574f, -0.055492244660854f, - 0.003046514932066f, -0.055111102759838f, 0.003004391444847f, -0.054729927331209f, - 0.002962560392916f, -0.054348722100258f, 0.002921021543443f, -0.053967483341694f, - 0.002879775362089f, -0.053586211055517f, 0.002838821383193f, -0.053204908967018f, - 0.002798160072416f, -0.052823577076197f, 0.002757790964097f, -0.052442211657763f, - 0.002717714523897f, -0.052060816437006f, 0.002677930751815f, -0.051679391413927f, - 0.002638439415023f, -0.051297932863235f, 0.002599240746349f, -0.050916448235512f, - 0.002560334512964f, -0.050534930080175f, 0.002521721180528f, -0.050153385847807f, - 0.002483400283381f, -0.049771808087826f, 0.002445372054353f, -0.049390204250813f, - 0.002407636726275f, -0.049008570611477f, 0.002370193833485f, -0.048626907169819f, - 0.002333043841645f, -0.048245213925838f, 0.002296186750755f, -0.047863494604826f, - 0.002259622327983f, -0.047481749206781f, 0.002223350573331f, -0.047099970281124f, - 0.002187371719629f, -0.046718169003725f, 0.002151685766876f, -0.046336337924004f, - 0.002116292715073f, -0.045954477041960f, 0.002081192564219f, -0.045572593808174f, - 0.002046385314316f, -0.045190680772066f, 0.002011870965362f, -0.044808741658926f, - 0.001977649517357f, -0.044426776468754f, 0.001943721086718f, -0.044044785201550f, - 0.001910085673444f, -0.043662767857313f, 0.001876743277535f, -0.043280724436045f, - 0.001843693898991f, -0.042898654937744f, 0.001810937537812f, -0.042516563087702f, - 0.001778474310413f, -0.042134445160627f, 0.001746304216795f, -0.041752301156521f, - 0.001714427140541f, -0.041370131075382f, 0.001682843198068f, -0.040987938642502f, - 0.001651552389376f, -0.040605723857880f, 0.001620554830879f, -0.040223482996225f, - 0.001589850406162f, -0.039841219782829f, 0.001559439115226f, -0.039458930492401f, - 0.001529321074486f, -0.039076622575521f, 0.001499496400356f, -0.038694288581610f, - 0.001469964860007f, -0.038311932235956f, 0.001440726569854f, -0.037929553538561f, - 0.001411781646311f, -0.037547148764133f, 0.001383129972965f, -0.037164725363255f, - 0.001354771666229f, -0.036782283335924f, 0.001326706726104f, -0.036399815231562f, - 0.001298935036175f, -0.036017324775457f, 0.001271456829272f, -0.035634815692902f, - 0.001244271872565f, -0.035252287983894f, 0.001217380515300f, -0.034869734197855f, - 0.001190782408230f, -0.034487165510654f, 0.001164477784187f, -0.034104570746422f, - 0.001138466643170f, -0.033721961081028f, 0.001112748985179f, -0.033339329063892f, - 0.001087324810214f, -0.032956674695015f, 0.001062194118276f, -0.032574005424976f, - 0.001037356909364f, -0.032191313803196f, 0.001012813183479f, -0.031808607280254f, - 0.000988563057035f, -0.031425878405571f, 0.000964606530033f, -0.031043132767081f, - 0.000940943544265f, -0.030660368502140f, 0.000917574157938f, -0.030277585610747f, - 0.000894498312846f, -0.029894785955548f, 0.000871716125403f, -0.029511967673898f, - 0.000849227537401f, -0.029129132628441f, 0.000827032607049f, -0.028746278956532f, - 0.000805131276138f, -0.028363410383463f, 0.000783523661084f, -0.027980525046587f, - 0.000762209703680f, -0.027597622945905f, 0.000741189462133f, -0.027214704081416f, - 0.000720462878235f, -0.026831768453121f, 0.000700030010194f, -0.026448817923665f, - 0.000679890916217f, -0.026065852493048f, 0.000660045538098f, -0.025682870298624f, - 0.000640493875835f, -0.025299875065684f, 0.000621235987637f, -0.024916863068938f, - 0.000602271873504f, -0.024533838033676f, 0.000583601591643f, -0.024150796234608f, - 0.000565225025639f, -0.023767741397023f, 0.000547142291907f, -0.023384673520923f, - 0.000529353390448f, -0.023001590743661f, 0.000511858321261f, -0.022618494927883f, - 0.000494657084346f, -0.022235386073589f, 0.000477749679703f, -0.021852264180779f, - 0.000461136136437f, -0.021469129249454f, 0.000444816454547f, -0.021085981279612f, - 0.000428790634032f, -0.020702820271254f, 0.000413058703998f, -0.020319648087025f, - 0.000397620693548f, -0.019936462864280f, 0.000382476573577f, -0.019553268328309f, - 0.000367626344087f, -0.019170060753822f, 0.000353070063284f, -0.018786842003465f, - 0.000338807702065f, -0.018403612077236f, 0.000324839289533f, -0.018020370975137f, - 0.000311164796585f, -0.017637118697166f, 0.000297784281429f, -0.017253857105970f, - 0.000284697714960f, -0.016870586201549f, 0.000271905126283f, -0.016487304121256f, - 0.000259406515397f, -0.016104012727737f, 0.000247201882303f, -0.015720712020993f, - 0.000235291256104f, -0.015337402001023f, 0.000223674607696f, -0.014954082667828f, - 0.000212351980736f, -0.014570754021406f, 0.000201323360670f, -0.014187417924404f, - 0.000190588747500f, -0.013804072514176f, 0.000180148170330f, -0.013420719653368f, - 0.000170001629158f, -0.013037359341979f, 0.000160149123985f, -0.012653990648687f, - 0.000150590654812f, -0.012270614504814f, 0.000141326236189f, -0.011887230910361f, - 0.000132355868118f, -0.011503840796649f, 0.000123679565149f, -0.011120444163680f, - 0.000115297327284f, -0.010737040080130f, 0.000107209154521f, -0.010353630408645f, - 0.000099415054137f, -0.009970214217901f, 0.000091915040684f, -0.009586792439222f, - 0.000084709099610f, -0.009203365072608f, 0.000077797252743f, -0.008819932118058f, - 0.000071179500083f, -0.008436493575573f, 0.000064855834353f, -0.008053051307797f, - 0.000058826273744f, -0.007669602986425f, 0.000053090810979f, -0.007286150939763f, - 0.000047649456974f, -0.006902694236487f, 0.000042502211727f, -0.006519233807921f, - 0.000037649078877f, -0.006135769188404f, 0.000033090062061f, -0.005752300843596f, - 0.000028825161280f, -0.005368829704821f, 0.000024854381991f, -0.004985354840755f, - 0.000021177724193f, -0.004601877182722f, 0.000017795191525f, -0.004218397196382f, - 0.000014706784896f, -0.003834914416075f, 0.000011912506125f, -0.003451429307461f, - 0.000009412358850f, -0.003067942336202f, 0.000007206342616f, -0.002684453502297f, - 0.000005294459243f, -0.002300963038579f, 0.000003676709639f, -0.001917471294291f, - 0.000002353095169f, -0.001533978385851f, 0.000001323616516f, -0.001150484546088f, - 0.000000588274133f, -0.000766990066040f, 0.000000147068562f, -0.000383495149435f, - 0.000000000000000f, -0.000000000000023f, 0.000000147068562f, 0.000383495149435f, - 0.000000588274133f, 0.000766990066040f, 0.000001323616516f, 0.001150484546088f, - 0.000002353095169f, 0.001533978385851f, 0.000003676709639f, 0.001917471294291f, - 0.000005294459243f, 0.002300963038579f, 0.000007206342616f, 0.002684453502297f, - 0.000009412358850f, 0.003067942336202f, 0.000011912506125f, 0.003451429307461f, - 0.000014706784896f, 0.003834914416075f, 0.000017795191525f, 0.004218397196382f, - 0.000021177724193f, 0.004601877182722f, 0.000024854381991f, 0.004985354840755f, - 0.000028825161280f, 0.005368829704821f, 0.000033090062061f, 0.005752300843596f, - 0.000037649078877f, 0.006135769188404f, 0.000042502211727f, 0.006519233807921f, - 0.000047649456974f, 0.006902694236487f, 0.000053090810979f, 0.007286150939763f, - 0.000058826273744f, 0.007669602986425f, 0.000064855834353f, 0.008053051307797f, - 0.000071179500083f, 0.008436493575573f, 0.000077797252743f, 0.008819932118058f, - 0.000084709099610f, 0.009203365072608f, 0.000091915040684f, 0.009586792439222f, - 0.000099415054137f, 0.009970214217901f, 0.000107209154521f, 0.010353630408645f, - 0.000115297327284f, 0.010737040080130f, 0.000123679565149f, 0.011120444163680f, - 0.000132355868118f, 0.011503840796649f, 0.000141326236189f, 0.011887230910361f, - 0.000150590654812f, 0.012270614504814f, 0.000160149123985f, 0.012653990648687f, - 0.000170001629158f, 0.013037359341979f, 0.000180148170330f, 0.013420719653368f, - 0.000190588747500f, 0.013804072514176f, 0.000201323360670f, 0.014187417924404f, - 0.000212351980736f, 0.014570754021406f, 0.000223674607696f, 0.014954082667828f, - 0.000235291256104f, 0.015337402001023f, 0.000247201882303f, 0.015720712020993f, - 0.000259406515397f, 0.016104012727737f, 0.000271905126283f, 0.016487304121256f, - 0.000284697714960f, 0.016870586201549f, 0.000297784281429f, 0.017253857105970f, - 0.000311164796585f, 0.017637118697166f, 0.000324839289533f, 0.018020370975137f, - 0.000338807702065f, 0.018403612077236f, 0.000353070063284f, 0.018786842003465f, - 0.000367626344087f, 0.019170060753822f, 0.000382476573577f, 0.019553268328309f, - 0.000397620693548f, 0.019936462864280f, 0.000413058703998f, 0.020319648087025f, - 0.000428790634032f, 0.020702820271254f, 0.000444816454547f, 0.021085981279612f, - 0.000461136136437f, 0.021469129249454f, 0.000477749679703f, 0.021852264180779f, - 0.000494657084346f, 0.022235386073589f, 0.000511858321261f, 0.022618494927883f, - 0.000529353390448f, 0.023001590743661f, 0.000547142291907f, 0.023384673520923f, - 0.000565225025639f, 0.023767741397023f, 0.000583601591643f, 0.024150796234608f, - 0.000602271873504f, 0.024533838033676f, 0.000621235987637f, 0.024916863068938f, - 0.000640493875835f, 0.025299875065684f, 0.000660045538098f, 0.025682870298624f, - 0.000679890916217f, 0.026065852493048f, 0.000700030010194f, 0.026448817923665f, - 0.000720462878235f, 0.026831768453121f, 0.000741189462133f, 0.027214704081416f, - 0.000762209703680f, 0.027597622945905f, 0.000783523661084f, 0.027980525046587f, - 0.000805131276138f, 0.028363410383463f, 0.000827032607049f, 0.028746278956532f, - 0.000849227537401f, 0.029129132628441f, 0.000871716125403f, 0.029511967673898f, - 0.000894498312846f, 0.029894785955548f, 0.000917574157938f, 0.030277585610747f, - 0.000940943544265f, 0.030660368502140f, 0.000964606530033f, 0.031043132767081f, - 0.000988563057035f, 0.031425878405571f, 0.001012813183479f, 0.031808607280254f, - 0.001037356909364f, 0.032191313803196f, 0.001062194118276f, 0.032574005424976f, - 0.001087324810214f, 0.032956674695015f, 0.001112748985179f, 0.033339329063892f, - 0.001138466643170f, 0.033721961081028f, 0.001164477784187f, 0.034104570746422f, - 0.001190782408230f, 0.034487165510654f, 0.001217380515300f, 0.034869734197855f, - 0.001244271872565f, 0.035252287983894f, 0.001271456829272f, 0.035634815692902f, - 0.001298935036175f, 0.036017324775457f, 0.001326706726104f, 0.036399815231562f, - 0.001354771666229f, 0.036782283335924f, 0.001383129972965f, 0.037164725363255f, - 0.001411781646311f, 0.037547148764133f, 0.001440726569854f, 0.037929553538561f, - 0.001469964860007f, 0.038311932235956f, 0.001499496400356f, 0.038694288581610f, - 0.001529321074486f, 0.039076622575521f, 0.001559439115226f, 0.039458930492401f, - 0.001589850406162f, 0.039841219782829f, 0.001620554830879f, 0.040223482996225f, - 0.001651552389376f, 0.040605723857880f, 0.001682843198068f, 0.040987938642502f, - 0.001714427140541f, 0.041370131075382f, 0.001746304216795f, 0.041752301156521f, - 0.001778474310413f, 0.042134445160627f, 0.001810937537812f, 0.042516563087702f, - 0.001843693898991f, 0.042898654937744f, 0.001876743277535f, 0.043280724436045f, - 0.001910085673444f, 0.043662767857313f, 0.001943721086718f, 0.044044785201550f, - 0.001977649517357f, 0.044426776468754f, 0.002011870965362f, 0.044808741658926f, - 0.002046385314316f, 0.045190680772066f, 0.002081192564219f, 0.045572593808174f, - 0.002116292715073f, 0.045954477041960f, 0.002151685766876f, 0.046336337924004f, - 0.002187371719629f, 0.046718169003725f, 0.002223350573331f, 0.047099970281124f, - 0.002259622327983f, 0.047481749206781f, 0.002296186750755f, 0.047863494604826f, - 0.002333043841645f, 0.048245213925838f, 0.002370193833485f, 0.048626907169819f, - 0.002407636726275f, 0.049008570611477f, 0.002445372054353f, 0.049390204250813f, - 0.002483400283381f, 0.049771808087826f, 0.002521721180528f, 0.050153385847807f, - 0.002560334512964f, 0.050534930080175f, 0.002599240746349f, 0.050916448235512f, - 0.002638439415023f, 0.051297932863235f, 0.002677930751815f, 0.051679391413927f, - 0.002717714523897f, 0.052060816437006f, 0.002757790964097f, 0.052442211657763f, - 0.002798160072416f, 0.052823577076197f, 0.002838821383193f, 0.053204908967018f, - 0.002879775362089f, 0.053586211055517f, 0.002921021543443f, 0.053967483341694f, - 0.002962560392916f, 0.054348722100258f, 0.003004391444847f, 0.054729927331209f, - 0.003046514932066f, 0.055111102759838f, 0.003088930854574f, 0.055492244660854f, - 0.003131638979539f, 0.055873356759548f, 0.003174639539793f, 0.056254431605339f, - 0.003217932302505f, 0.056635476648808f, 0.003261517267674f, 0.057016488164663f, - 0.003305394435301f, 0.057397462427616f, 0.003349563805386f, 0.057778406888247f, - 0.003394025377929f, 0.058159314095974f, 0.003438779152930f, 0.058540191501379f, - 0.003483824897557f, 0.058921031653881f, 0.003529162844643f, 0.059301838278770f, - 0.003574792761356f, 0.059682607650757f, 0.003620714880526f, 0.060063343495131f, - 0.003666928736493f, 0.060444042086601f, 0.003713434794918f, 0.060824707150459f, - 0.003760232590139f, 0.061205338686705f, 0.003807322587818f, 0.061585929244757f, - 0.003854704322293f, 0.061966486275196f, 0.003902378026396f, 0.062347009778023f, - 0.003950343467295f, 0.062727488577366f, 0.003998600877821f, 0.063107937574387f, - 0.004047149792314f, 0.063488349318504f, 0.004095990676433f, 0.063868723809719f, - 0.004145123064518f, 0.064249053597450f, 0.004194547422230f, 0.064629353582859f, - 0.004244263283908f, 0.065009608864784f, 0.004294271115214f, 0.065389834344387f, - 0.004344569984823f, 0.065770015120506f, 0.004395160824060f, 0.066150158643723f, - 0.004446043167263f, 0.066530264914036f, 0.004497217014432f, 0.066910326480865f, - 0.004548682365566f, 0.067290350794792f, 0.004600439220667f, 0.067670337855816f, - 0.004652487114072f, 0.068050287663937f, 0.004704826977104f, 0.068430192768574f, - 0.004757457878441f, 0.068810060620308f, 0.004810380283743f, 0.069189883768559f, - 0.004863593727350f, 0.069569669663906f, 0.004917098674923f, 0.069949418306351f, - 0.004970894660801f, 0.070329122245312f, 0.005024982150644f, 0.070708781480789f, - 0.005079360678792f, 0.071088403463364f, 0.005134030245245f, 0.071467980742455f, - 0.005188991315663f, 0.071847513318062f, 0.005244242958724f, 0.072227008640766f, - 0.005299786105752f, 0.072606459259987f, 0.005355620291084f, 0.072985872626305f, - 0.005411745049059f, 0.073365233838558f, 0.005468160845339f, 0.073744557797909f, - 0.005524867679924f, 0.074123837053776f, 0.005581865552813f, 0.074503071606159f, - 0.005639153998345f, 0.074882268905640f, 0.005696733482182f, 0.075261414051056f, - 0.005754603538662f, 0.075640521943569f, 0.005812764633447f, 0.076019577682018f, - 0.005871216300875f, 0.076398596167564f, 0.005929958540946f, 0.076777562499046f, - 0.005988991353661f, 0.077156484127045f, 0.006048315204680f, 0.077535368502140f, - 0.006107929162681f, 0.077914200723171f, 0.006167833693326f, 0.078292988240719f, - 0.006228029262275f, 0.078671731054783f, 0.006288514938205f, 0.079050421714783f, - 0.006349290721118f, 0.079429075121880f, 0.006410357542336f, 0.079807676374912f, - 0.006471714470536f, 0.080186225473881f, 0.006533361505717f, 0.080564737319946f, - 0.006595299113542f, 0.080943197011948f, 0.006657526828349f, 0.081321612000465f, - 0.006720044650137f, 0.081699974834919f, 0.006782853044569f, 0.082078292965889f, - 0.006845951545984f, 0.082456558942795f, 0.006909339688718f, 0.082834780216217f, - 0.006973018404096f, 0.083212949335575f, 0.007036986760795f, 0.083591073751450f, - 0.007101245224476f, 0.083969146013260f, 0.007165793795139f, 0.084347173571587f, - 0.007230632472783f, 0.084725148975849f, 0.007295760791749f, 0.085103072226048f, - 0.007361178752035f, 0.085480943322182f, 0.007426886819303f, 0.085858769714832f, - 0.007492884527892f, 0.086236543953419f, 0.007559171877801f, 0.086614266037941f, - 0.007625748869032f, 0.086991935968399f, 0.007692615967244f, 0.087369553744793f, - 0.007759772241116f, 0.087747126817703f, 0.007827218621969f, 0.088124647736549f, - 0.007894953712821f, 0.088502109050751f, 0.007962978444993f, 0.088879525661469f, - 0.008031292818487f, 0.089256882667542f, 0.008099896833301f, 0.089634194970131f, - 0.008168790489435f, 0.090011447668076f, 0.008237972855568f, 0.090388655662537f, - 0.008307444863021f, 0.090765804052353f, 0.008377205580473f, 0.091142900288105f, - 0.008447255939245f, 0.091519944369793f, 0.008517595939338f, 0.091896936297417f, - 0.008588224649429f, 0.092273868620396f, 0.008659142069519f, 0.092650748789310f, - 0.008730349130929f, 0.093027576804161f, 0.008801844902337f, 0.093404345214367f, - 0.008873629383743f, 0.093781061470509f, 0.008945702575147f, 0.094157725572586f, - 0.009018065407872f, 0.094534330070019f, 0.009090716950595f, 0.094910882413387f, - 0.009163657203317f, 0.095287375152111f, 0.009236886166036f, 0.095663815736771f, - 0.009310402907431f, 0.096040196716785f, 0.009384209290147f, 0.096416525542736f, - 0.009458304382861f, 0.096792794764042f, 0.009532688185573f, 0.097169004380703f, - 0.009607359766960f, 0.097545161843300f, 0.009682320058346f, 0.097921259701252f, - 0.009757569059730f, 0.098297297954559f, 0.009833106771111f, 0.098673284053802f, - 0.009908932261169f, 0.099049203097820f, 0.009985045529902f, 0.099425069987774f, - 0.010061448439956f, 0.099800877273083f, 0.010138138197362f, 0.100176624953747f, - 0.010215117596090f, 0.100552320480347f, 0.010292383842170f, 0.100927948951721f, - 0.010369938798249f, 0.101303517818451f, 0.010447781533003f, 0.101679034531116f, - 0.010525912046432f, 0.102054484188557f, 0.010604331269860f, 0.102429874241352f, - 0.010683037340641f, 0.102805204689503f, 0.010762032121420f, 0.103180475533009f, - 0.010841314680874f, 0.103555686771870f, 0.010920885019004f, 0.103930838406086f, - 0.011000742204487f, 0.104305922985077f, 0.011080888099968f, 0.104680955410004f, - 0.011161320842803f, 0.105055920779705f, 0.011242041364312f, 0.105430819094181f, - 0.011323049664497f, 0.105805665254593f, 0.011404345743358f, 0.106180444359779f, - 0.011485928669572f, 0.106555156409740f, 0.011567799374461f, 0.106929816305637f, - 0.011649956926703f, 0.107304409146309f, 0.011732402257621f, 0.107678934931755f, - 0.011815134435892f, 0.108053401112556f, 0.011898153461516f, 0.108427800238132f, - 0.011981460265815f, 0.108802139759064f, 0.012065053917468f, 0.109176412224770f, - 0.012148935347795f, 0.109550617635250f, 0.012233102694154f, 0.109924763441086f, - 0.012317557819188f, 0.110298842191696f, 0.012402298860252f, 0.110672861337662f, - 0.012487327679992f, 0.111046813428402f, 0.012572642415762f, 0.111420698463917f, - 0.012658244930208f, 0.111794516444206f, 0.012744133360684f, 0.112168267369270f, - 0.012830308638513f, 0.112541958689690f, 0.012916770763695f, 0.112915575504303f, - 0.013003518804908f, 0.113289132714272f, 0.013090553693473f, 0.113662622869015f, - 0.013177875429392f, 0.114036038517952f, 0.013265483081341f, 0.114409394562244f, - 0.013353376649320f, 0.114782683551311f, 0.013441557064652f, 0.115155905485153f, - 0.013530024327338f, 0.115529052913189f, 0.013618776574731f, 0.115902140736580f, - 0.013707815669477f, 0.116275154054165f, 0.013797140680254f, 0.116648100316525f, - 0.013886751607060f, 0.117020979523659f, 0.013976648449898f, 0.117393791675568f, - 0.014066831208766f, 0.117766529321671f, 0.014157299883664f, 0.118139199912548f, - 0.014248054474592f, 0.118511803448200f, 0.014339094981551f, 0.118884332478046f, - 0.014430420473218f, 0.119256794452667f, 0.014522032812238f, 0.119629189372063f, - 0.014613929204643f, 0.120001509785652f, 0.014706112444401f, 0.120373763144016f, - 0.014798580668867f, 0.120745941996574f, 0.014891333878040f, 0.121118053793907f, - 0.014984373003244f, 0.121490091085434f, 0.015077698044479f, 0.121862053871155f, - 0.015171307139099f, 0.122233949601650f, 0.015265202149749f, 0.122605770826340f, - 0.015359382145107f, 0.122977524995804f, 0.015453847125173f, 0.123349204659462f, - 0.015548598021269f, 0.123720809817314f, 0.015643632039428f, 0.124092340469360f, - 0.015738952904940f, 0.124463804066181f, 0.015834558755159f, 0.124835193157196f, - 0.015930447727442f, 0.125206500291824f, 0.016026621684432f, 0.125577747821808f, - 0.016123080626130f, 0.125948905944824f, 0.016219824552536f, 0.126320004463196f, - 0.016316853463650f, 0.126691013574600f, 0.016414167359471f, 0.127061963081360f, - 0.016511764377356f, 0.127432823181152f, 0.016609646379948f, 0.127803623676300f, - 0.016707813367248f, 0.128174334764481f, 0.016806263476610f, 0.128544986248016f, - 0.016904998570681f, 0.128915548324585f, 0.017004016786814f, 0.129286035895348f, - 0.017103319987655f, 0.129656463861465f, 0.017202908173203f, 0.130026802420616f, - 0.017302779480815f, 0.130397051572800f, 0.017402933910489f, 0.130767241120338f, - 0.017503373324871f, 0.131137356162071f, 0.017604095861316f, 0.131507381796837f, - 0.017705103382468f, 0.131877332925797f, 0.017806394025683f, 0.132247209548950f, - 0.017907967790961f, 0.132617011666298f, 0.018009826540947f, 0.132986739277840f, - 0.018111966550350f, 0.133356377482414f, 0.018214391544461f, 0.133725941181183f, - 0.018317099660635f, 0.134095430374146f, 0.018420090898871f, 0.134464830160141f, - 0.018523367121816f, 0.134834155440331f, 0.018626924604177f, 0.135203406214714f, - 0.018730765208602f, 0.135572582483292f, 0.018834890797734f, 0.135941669344902f, - 0.018939297646284f, 0.136310681700706f, 0.019043987616897f, 0.136679604649544f, - 0.019148962572217f, 0.137048453092575f, 0.019254218786955f, 0.137417227029800f, - 0.019359756261110f, 0.137785911560059f, 0.019465578719974f, 0.138154521584511f, - 0.019571684300900f, 0.138523042201996f, 0.019678071141243f, 0.138891488313675f, - 0.019784741103649f, 0.139259845018387f, 0.019891692325473f, 0.139628127217293f, - 0.019998926669359f, 0.139996320009232f, 0.020106444135308f, 0.140364438295364f, - 0.020214242860675f, 0.140732467174530f, 0.020322324708104f, 0.141100421547890f, - 0.020430689677596f, 0.141468286514282f, 0.020539334043860f, 0.141836062073708f, - 0.020648263394833f, 0.142203763127327f, 0.020757472142577f, 0.142571389675140f, - 0.020866964012384f, 0.142938911914825f, 0.020976737141609f, 0.143306359648705f, - 0.021086793392897f, 0.143673732876778f, 0.021197130903602f, 0.144041016697884f, - 0.021307749673724f, 0.144408211112022f, 0.021418649703264f, 0.144775316119194f, - 0.021529832854867f, 0.145142331719399f, 0.021641295403242f, 0.145509272813797f, - 0.021753041073680f, 0.145876124501228f, 0.021865066140890f, 0.146242901682854f, - 0.021977374330163f, 0.146609574556351f, 0.022089963778853f, 0.146976172924042f, - 0.022202832624316f, 0.147342681884766f, 0.022315984591842f, 0.147709101438522f, - 0.022429415956140f, 0.148075446486473f, 0.022543128579855f, 0.148441687226295f, - 0.022657122462988f, 0.148807853460312f, 0.022771397605538f, 0.149173930287361f, - 0.022885952144861f, 0.149539917707443f, 0.023000787943602f, 0.149905815720558f, - 0.023115905001760f, 0.150271624326706f, 0.023231301456690f, 0.150637343525887f, - 0.023346979171038f, 0.151002973318100f, 0.023462938144803f, 0.151368513703346f, - 0.023579176515341f, 0.151733979582787f, 0.023695694282651f, 0.152099341154099f, - 0.023812493309379f, 0.152464613318443f, 0.023929571732879f, 0.152829796075821f, - 0.024046931415796f, 0.153194904327393f, 0.024164570495486f, 0.153559908270836f, - 0.024282488971949f, 0.153924822807312f, 0.024400688707829f, 0.154289647936821f, - 0.024519165977836f, 0.154654383659363f, 0.024637924507260f, 0.155019029974937f, - 0.024756962433457f, 0.155383571982384f, 0.024876279756427f, 0.155748039484024f, - 0.024995878338814f, 0.156112402677536f, 0.025115754455328f, 0.156476691365242f, - 0.025235909968615f, 0.156840875744820f, 0.025356344878674f, 0.157204970717430f, - 0.025477059185505f, 0.157568961381912f, 0.025598052889109f, 0.157932877540588f, - 0.025719324126840f, 0.158296689391136f, 0.025840876623988f, 0.158660411834717f, - 0.025962706655264f, 0.159024044871330f, 0.026084816083312f, 0.159387573599815f, - 0.026207204908133f, 0.159751012921333f, 0.026329871267080f, 0.160114362835884f, - 0.026452817022800f, 0.160477623343468f, 0.026576040312648f, 0.160840779542923f, - 0.026699542999268f, 0.161203846335411f, 0.026823325082660f, 0.161566808819771f, - 0.026947384700179f, 0.161929681897163f, 0.027071721851826f, 0.162292465567589f, - 0.027196336537600f, 0.162655144929886f, 0.027321230620146f, 0.163017734885216f, - 0.027446404099464f, 0.163380220532417f, 0.027571853250265f, 0.163742616772652f, - 0.027697581797838f, 0.164104923605919f, 0.027823587879539f, 0.164467126131058f, - 0.027949871495366f, 0.164829224348068f, 0.028076432645321f, 0.165191248059273f, - 0.028203271329403f, 0.165553152561188f, 0.028330387547612f, 0.165914967656136f, - 0.028457781299949f, 0.166276678442955f, 0.028585452586412f, 0.166638299822807f, - 0.028713401407003f, 0.166999831795692f, 0.028841627761722f, 0.167361244559288f, - 0.028970129787922f, 0.167722567915916f, 0.029098909348249f, 0.168083801865578f, - 0.029227968305349f, 0.168444931507111f, 0.029357301071286f, 0.168805956840515f, - 0.029486913233995f, 0.169166877865791f, 0.029616801068187f, 0.169527709484100f, - 0.029746964573860f, 0.169888436794281f, 0.029877405613661f, 0.170249074697495f, - 0.030008124187589f, 0.170609608292580f, 0.030139118432999f, 0.170970037579536f, - 0.030270388349891f, 0.171330362558365f, 0.030401935800910f, 0.171690583229065f, - 0.030533758923411f, 0.172050714492798f, 0.030665857717395f, 0.172410741448402f, - 0.030798232182860f, 0.172770664095879f, 0.030930884182453f, 0.173130482435226f, - 0.031063811853528f, 0.173490211367607f, 0.031197015196085f, 0.173849821090698f, - 0.031330492347479f, 0.174209341406822f, 0.031464248895645f, 0.174568757414818f, - 0.031598277390003f, 0.174928069114685f, 0.031732585281134f, 0.175287276506424f, - 0.031867165118456f, 0.175646379590034f, 0.032002024352551f, 0.176005378365517f, - 0.032137155532837f, 0.176364272832870f, 0.032272562384605f, 0.176723077893257f, - 0.032408244907856f, 0.177081763744354f, 0.032544203102589f, 0.177440345287323f, - 0.032680433243513f, 0.177798837423325f, 0.032816942781210f, 0.178157210350037f, - 0.032953724265099f, 0.178515478968620f, 0.033090781420469f, 0.178873643279076f, - 0.033228114247322f, 0.179231703281403f, 0.033365719020367f, 0.179589673876762f, - 0.033503599464893f, 0.179947525262833f, 0.033641755580902f, 0.180305257439613f, - 0.033780183643103f, 0.180662900209427f, 0.033918887376785f, 0.181020438671112f, - 0.034057866781950f, 0.181377857923508f, 0.034197118133307f, 0.181735187768936f, - 0.034336645156145f, 0.182092398405075f, 0.034476444125175f, 0.182449504733086f, - 0.034616518765688f, 0.182806491851807f, 0.034756865352392f, 0.183163389563560f, - 0.034897487610579f, 0.183520168066025f, 0.035038381814957f, 0.183876842260361f, - 0.035179551690817f, 0.184233412146568f, 0.035320993512869f, 0.184589877724648f, - 0.035462711006403f, 0.184946224093437f, 0.035604696720839f, 0.185302466154099f, - 0.035746958106756f, 0.185658603906631f, 0.035889495164156f, 0.186014622449875f, - 0.036032304167747f, 0.186370536684990f, 0.036175385117531f, 0.186726331710815f, - 0.036318738013506f, 0.187082037329674f, 0.036462362855673f, 0.187437608838081f, - 0.036606263369322f, 0.187793090939522f, 0.036750435829163f, 0.188148453831673f, - 0.036894880235195f, 0.188503712415695f, 0.037039596587420f, 0.188858851790428f, - 0.037184584885836f, 0.189213871955872f, 0.037329845130444f, 0.189568802714348f, - 0.037475381046534f, 0.189923599362373f, 0.037621185183525f, 0.190278306603432f, - 0.037767261266708f, 0.190632879734039f, 0.037913613021374f, 0.190987363457680f, - 0.038060232996941f, 0.191341713070869f, 0.038207128643990f, 0.191695958375931f, - 0.038354292511940f, 0.192050099372864f, 0.038501728326082f, 0.192404121160507f, - 0.038649436086416f, 0.192758023738861f, 0.038797415792942f, 0.193111822009087f, - 0.038945667445660f, 0.193465501070023f, 0.039094187319279f, 0.193819075822830f, - 0.039242979139090f, 0.194172516465187f, 0.039392042905092f, 0.194525867700577f, - 0.039541378617287f, 0.194879084825516f, 0.039690986275673f, 0.195232197642326f, - 0.039840862154961f, 0.195585191249847f, 0.039991009980440f, 0.195938065648079f, - 0.040141426026821f, 0.196290835738182f, 0.040292114019394f, 0.196643486618996f, - 0.040443073958158f, 0.196996018290520f, 0.040594302117825f, 0.197348430752754f, - 0.040745802223682f, 0.197700738906860f, 0.040897574275732f, 0.198052927851677f, - 0.041049610823393f, 0.198404997587204f, 0.041201923042536f, 0.198756948113441f, - 0.041354499757290f, 0.199108779430389f, 0.041507352143526f, 0.199460506439209f, - 0.041660469025373f, 0.199812099337578f, 0.041813857853413f, 0.200163587927818f, - 0.041967518627644f, 0.200514942407608f, 0.042121443897486f, 0.200866192579269f, - 0.042275641113520f, 0.201217323541641f, 0.042430106550455f, 0.201568335294724f, - 0.042584843933582f, 0.201919227838516f, 0.042739849537611f, 0.202270001173019f, - 0.042895123362541f, 0.202620655298233f, 0.043050665408373f, 0.202971190214157f, - 0.043206475675106f, 0.203321605920792f, 0.043362557888031f, 0.203671902418137f, - 0.043518904596567f, 0.204022079706192f, 0.043675523251295f, 0.204372137784958f, - 0.043832406401634f, 0.204722076654434f, 0.043989561498165f, 0.205071896314621f, - 0.044146984815598f, 0.205421581864357f, 0.044304672628641f, 0.205771163105965f, - 0.044462632387877f, 0.206120610237122f, 0.044620860368013f, 0.206469938158989f, - 0.044779352843761f, 0.206819161772728f, 0.044938117265701f, 0.207168251276016f, - 0.045097146183252f, 0.207517206668854f, 0.045256443321705f, 0.207866057753563f, - 0.045416008681059f, 0.208214774727821f, 0.045575842261314f, 0.208563387393951f, - 0.045735940337181f, 0.208911851048470f, 0.045896306633949f, 0.209260210394859f, - 0.046056941151619f, 0.209608450531960f, 0.046217843890190f, 0.209956556558609f, - 0.046379011124372f, 0.210304543375969f, 0.046540446579456f, 0.210652396082878f, - 0.046702146530151f, 0.211000129580498f, 0.046864114701748f, 0.211347743868828f, - 0.047026351094246f, 0.211695238947868f, 0.047188851982355f, 0.212042599916458f, - 0.047351621091366f, 0.212389841675758f, 0.047514654695988f, 0.212736949324608f, - 0.047677956521511f, 0.213083937764168f, 0.047841522842646f, 0.213430806994438f, - 0.048005353659391f, 0.213777542114258f, 0.048169452697039f, 0.214124158024788f, - 0.048333816230297f, 0.214470639824867f, 0.048498444259167f, 0.214817002415657f, - 0.048663340508938f, 0.215163245797157f, 0.048828501254320f, 0.215509355068207f, - 0.048993926495314f, 0.215855330228806f, 0.049159619957209f, 0.216201186180115f, - 0.049325577914715f, 0.216546908020973f, 0.049491796642542f, 0.216892510652542f, - 0.049658283591270f, 0.217237979173660f, 0.049825038760900f, 0.217583328485489f, - 0.049992054700851f, 0.217928543686867f, 0.050159335136414f, 0.218273624777794f, - 0.050326880067587f, 0.218618586659431f, 0.050494693219662f, 0.218963414430618f, - 0.050662767142057f, 0.219308122992516f, 0.050831105560064f, 0.219652697443962f, - 0.050999708473682f, 0.219997137784958f, 0.051168579608202f, 0.220341444015503f, - 0.051337707787752f, 0.220685631036758f, 0.051507104188204f, 0.221029683947563f, - 0.051676765084267f, 0.221373617649078f, 0.051846686750650f, 0.221717402338982f, - 0.052016876637936f, 0.222061067819595f, 0.052187327295542f, 0.222404599189758f, - 0.052358038723469f, 0.222748011350632f, 0.052529018372297f, 0.223091274499893f, - 0.052700258791447f, 0.223434418439865f, 0.052871759980917f, 0.223777428269386f, - 0.053043525665998f, 0.224120303988457f, 0.053215555846691f, 0.224463045597076f, - 0.053387850522995f, 0.224805667996407f, 0.053560405969620f, 0.225148141384125f, - 0.053733222186565f, 0.225490495562553f, 0.053906302899122f, 0.225832715630531f, - 0.054079644382000f, 0.226174786686897f, 0.054253250360489f, 0.226516738533974f, - 0.054427117109299f, 0.226858556270599f, 0.054601248353720f, 0.227200239896774f, - 0.054775636643171f, 0.227541789412498f, 0.054950293153524f, 0.227883204817772f, - 0.055125206708908f, 0.228224486112595f, 0.055300384759903f, 0.228565633296967f, - 0.055475823581219f, 0.228906646370888f, 0.055651523172855f, 0.229247525334358f, - 0.055827483534813f, 0.229588270187378f, 0.056003704667091f, 0.229928880929947f, - 0.056180190294981f, 0.230269357562065f, 0.056356932967901f, 0.230609700083733f, - 0.056533940136433f, 0.230949893593788f, 0.056711208075285f, 0.231289967894554f, - 0.056888736784458f, 0.231629893183708f, 0.057066522538662f, 0.231969684362412f, - 0.057244572788477f, 0.232309341430664f, 0.057422880083323f, 0.232648864388466f, - 0.057601451873779f, 0.232988253235817f, 0.057780280709267f, 0.233327493071556f, - 0.057959370315075f, 0.233666598796844f, 0.058138720691204f, 0.234005570411682f, - 0.058318331837654f, 0.234344407916069f, 0.058498200029135f, 0.234683111310005f, - 0.058678328990936f, 0.235021665692329f, 0.058858718723059f, 0.235360085964203f, - 0.059039369225502f, 0.235698372125626f, 0.059220276772976f, 0.236036509275436f, - 0.059401445090771f, 0.236374512314796f, 0.059582870453596f, 0.236712381243706f, - 0.059764556586742f, 0.237050101161003f, 0.059946499764919f, 0.237387686967850f, - 0.060128703713417f, 0.237725138664246f, 0.060311164706945f, 0.238062441349030f, - 0.060493886470795f, 0.238399609923363f, 0.060676865279675f, 0.238736644387245f, - 0.060860104858875f, 0.239073529839516f, 0.061043601483107f, 0.239410281181335f, - 0.061227355152369f, 0.239746883511543f, 0.061411365866661f, 0.240083336830139f, - 0.061595637351274f, 0.240419670939446f, 0.061780165880919f, 0.240755841135979f, - 0.061964951455593f, 0.241091892123222f, 0.062149997800589f, 0.241427779197693f, - 0.062335297465324f, 0.241763532161713f, 0.062520854175091f, 0.242099151015282f, - 0.062706671655178f, 0.242434620857239f, 0.062892749905586f, 0.242769956588745f, - 0.063079081475735f, 0.243105143308640f, 0.063265666365623f, 0.243440181016922f, - 0.063452512025833f, 0.243775084614754f, 0.063639611005783f, 0.244109839200974f, - 0.063826970756054f, 0.244444444775581f, 0.064014583826065f, 0.244778916239738f, - 0.064202457666397f, 0.245113238692284f, 0.064390584826469f, 0.245447427034378f, - 0.064578965306282f, 0.245781451463699f, 0.064767606556416f, 0.246115356683731f, - 0.064956501126289f, 0.246449097990990f, 0.065145656466484f, 0.246782705187798f, - 0.065335065126419f, 0.247116148471832f, 0.065524727106094f, 0.247449472546577f, - 0.065714649856091f, 0.247782632708550f, 0.065904818475246f, 0.248115643858910f, - 0.066095255315304f, 0.248448520898819f, 0.066285938024521f, 0.248781248927116f, - 0.066476874053478f, 0.249113827943802f, 0.066668070852757f, 0.249446272850037f, - 0.066859520971775f, 0.249778553843498f, 0.067051224410534f, 0.250110685825348f, - 0.067243188619614f, 0.250442683696747f, 0.067435398697853f, 0.250774532556534f, - 0.067627869546413f, 0.251106232404709f, 0.067820593714714f, 0.251437783241272f, - 0.068013571202755f, 0.251769185066223f, 0.068206802010536f, 0.252100437879562f, - 0.068400286138058f, 0.252431541681290f, 0.068594031035900f, 0.252762526273727f, - 0.068788021802902f, 0.253093332052231f, 0.068982265889645f, 0.253423988819122f, - 0.069176770746708f, 0.253754496574402f, 0.069371521472931f, 0.254084855318069f, - 0.069566532969475f, 0.254415065050125f, 0.069761790335178f, 0.254745125770569f, - 0.069957308471203f, 0.255075037479401f, 0.070153072476387f, 0.255404800176620f, - 0.070349089801311f, 0.255734413862228f, 0.070545360445976f, 0.256063878536224f, - 0.070741884410381f, 0.256393194198608f, 0.070938661694527f, 0.256722360849380f, - 0.071135692298412f, 0.257051378488541f, 0.071332976222038f, 0.257380217313766f, - 0.071530513465405f, 0.257708936929703f, 0.071728296577930f, 0.258037507534027f, - 0.071926333010197f, 0.258365899324417f, 0.072124622762203f, 0.258694142103195f, - 0.072323165833950f, 0.259022265672684f, 0.072521962225437f, 0.259350210428238f, - 0.072721004486084f, 0.259678006172180f, 0.072920300066471f, 0.260005623102188f, - 0.073119848966599f, 0.260333120822906f, 0.073319651186466f, 0.260660469532013f, - 0.073519699275494f, 0.260987639427185f, 0.073720000684261f, 0.261314690113068f, - 0.073920547962189f, 0.261641561985016f, 0.074121348559856f, 0.261968284845352f, - 0.074322402477264f, 0.262294828891754f, 0.074523709714413f, 0.262621253728867f, - 0.074725262820721f, 0.262947499752045f, 0.074927061796188f, 0.263273626565933f, - 0.075129114091396f, 0.263599574565887f, 0.075331419706345f, 0.263925373554230f, - 0.075533971190453f, 0.264250993728638f, 0.075736775994301f, 0.264576494693756f, - 0.075939826667309f, 0.264901816844940f, 0.076143130660057f, 0.265226989984512f, - 0.076346680521965f, 0.265552014112473f, 0.076550483703613f, 0.265876859426498f, - 0.076754532754421f, 0.266201555728912f, 0.076958827674389f, 0.266526103019714f, - 0.077163375914097f, 0.266850501298904f, 0.077368170022964f, 0.267174720764160f, - 0.077573217451572f, 0.267498821020126f, 0.077778510749340f, 0.267822742462158f, - 0.077984049916267f, 0.268146485090256f, 0.078189842402935f, 0.268470078706741f, - 0.078395880758762f, 0.268793523311615f, 0.078602164983749f, 0.269116818904877f, - 0.078808702528477f, 0.269439965486526f, 0.079015478491783f, 0.269762933254242f, - 0.079222507774830f, 0.270085722208023f, 0.079429790377617f, 0.270408391952515f, - 0.079637311398983f, 0.270730882883072f, 0.079845085740089f, 0.271053224802017f, - 0.080053105950356f, 0.271375387907028f, 0.080261372029781f, 0.271697402000427f, - 0.080469883978367f, 0.272019267082214f, 0.080678641796112f, 0.272340953350067f, - 0.080887645483017f, 0.272662490606308f, 0.081096902489662f, 0.272983878850937f, - 0.081306397914886f, 0.273305088281631f, 0.081516146659851f, 0.273626148700714f, - 0.081726133823395f, 0.273947030305862f, 0.081936374306679f, 0.274267762899399f, - 0.082146860659122f, 0.274588316679001f, 0.082357585430145f, 0.274908751249313f, - 0.082568563520908f, 0.275228977203369f, 0.082779780030251f, 0.275549083948135f, - 0.082991249859333f, 0.275868982076645f, 0.083202958106995f, 0.276188760995865f, - 0.083414919674397f, 0.276508361101151f, 0.083627119660378f, 0.276827782392502f, - 0.083839565515518f, 0.277147054672241f, 0.084052257239819f, 0.277466177940369f, - 0.084265194833279f, 0.277785122394562f, 0.084478378295898f, 0.278103888034821f, - 0.084691800177097f, 0.278422504663467f, 0.084905467927456f, 0.278740972280502f, - 0.085119381546974f, 0.279059261083603f, 0.085333541035652f, 0.279377400875092f, - 0.085547938942909f, 0.279695361852646f, 0.085762590169907f, 0.280013144016266f, - 0.085977479815483f, 0.280330777168274f, 0.086192607879639f, 0.280648261308670f, - 0.086407989263535f, 0.280965566635132f, 0.086623609066010f, 0.281282693147659f, - 0.086839467287064f, 0.281599670648575f, 0.087055571377277f, 0.281916469335556f, - 0.087271921336651f, 0.282233119010925f, 0.087488517165184f, 0.282549589872360f, - 0.087705351412296f, 0.282865911722183f, 0.087922424077988f, 0.283182054758072f, - 0.088139742612839f, 0.283498018980026f, 0.088357307016850f, 0.283813834190369f, - 0.088575109839439f, 0.284129470586777f, 0.088793158531189f, 0.284444957971573f, - 0.089011445641518f, 0.284760266542435f, 0.089229971170425f, 0.285075396299362f, - 0.089448742568493f, 0.285390377044678f, 0.089667752385139f, 0.285705178976059f, - 0.089887008070946f, 0.286019802093506f, 0.090106502175331f, 0.286334276199341f, - 0.090326242148876f, 0.286648571491241f, 0.090546220541000f, 0.286962717771530f, - 0.090766437351704f, 0.287276685237885f, 0.090986892580986f, 0.287590473890305f, - 0.091207593679428f, 0.287904083728790f, 0.091428533196449f, 0.288217544555664f, - 0.091649711132050f, 0.288530826568604f, 0.091871134936810f, 0.288843959569931f, - 0.092092797160149f, 0.289156883955002f, 0.092314697802067f, 0.289469659328461f, - 0.092536836862564f, 0.289782285690308f, 0.092759214341640f, 0.290094703435898f, - 0.092981837689877f, 0.290406972169876f, 0.093204692006111f, 0.290719062089920f, - 0.093427792191505f, 0.291031002998352f, 0.093651130795479f, 0.291342735290527f, - 0.093874707818031f, 0.291654318571091f, 0.094098523259163f, 0.291965723037720f, - 0.094322577118874f, 0.292276978492737f, 0.094546869397163f, 0.292588025331497f, - 0.094771400094032f, 0.292898923158646f, 0.094996169209480f, 0.293209642171860f, - 0.095221176743507f, 0.293520182371140f, 0.095446422696114f, 0.293830573558807f, - 0.095671907067299f, 0.294140785932541f, 0.095897629857063f, 0.294450789690018f, - 0.096123591065407f, 0.294760644435883f, 0.096349790692329f, 0.295070350170136f, - 0.096576221287251f, 0.295379847288132f, 0.096802897751331f, 0.295689195394516f, - 0.097029805183411f, 0.295998334884644f, 0.097256951034069f, 0.296307325363159f, - 0.097484335303307f, 0.296616137027740f, 0.097711957991123f, 0.296924799680710f, - 0.097939811646938f, 0.297233253717422f, 0.098167903721333f, 0.297541528940201f, - 0.098396234214306f, 0.297849655151367f, 0.098624803125858f, 0.298157602548599f, - 0.098853603005409f, 0.298465341329575f, 0.099082641303539f, 0.298772931098938f, - 0.099311910569668f, 0.299080342054367f, 0.099541425704956f, 0.299387603998184f, - 0.099771171808243f, 0.299694657325745f, 0.100001148879528f, 0.300001531839371f, - 0.100231364369392f, 0.300308227539063f, 0.100461818277836f, 0.300614774227142f, - 0.100692503154278f, 0.300921112298965f, 0.100923426449299f, 0.301227301359177f, - 0.101154580712318f, 0.301533311605453f, 0.101385973393917f, 0.301839113235474f, - 0.101617597043514f, 0.302144765853882f, 0.101849451661110f, 0.302450239658356f, - 0.102081544697285f, 0.302755534648895f, 0.102313876152039f, 0.303060621023178f, - 0.102546438574791f, 0.303365558385849f, 0.102779231965542f, 0.303670316934586f, - 0.103012263774872f, 0.303974896669388f, 0.103245526552200f, 0.304279297590256f, - 0.103479020297527f, 0.304583519697189f, 0.103712752461433f, 0.304887533187866f, - 0.103946708142757f, 0.305191397666931f, 0.104180909693241f, 0.305495083332062f, - 0.104415334761143f, 0.305798590183258f, 0.104649998247623f, 0.306101888418198f, - 0.104884892702103f, 0.306405037641525f, 0.105120018124580f, 0.306708008050919f, - 0.105355374515057f, 0.307010769844055f, 0.105590961873531f, 0.307313382625580f, - 0.105826787650585f, 0.307615786790848f, 0.106062836945057f, 0.307918041944504f, - 0.106299124658108f, 0.308220088481903f, 0.106535643339157f, 0.308521956205368f, - 0.106772392988205f, 0.308823645114899f, 0.107009373605251f, 0.309125155210495f, - 0.107246585190296f, 0.309426486492157f, 0.107484027743340f, 0.309727638959885f, - 0.107721701264381f, 0.310028612613678f, 0.107959605753422f, 0.310329377651215f, - 0.108197741210461f, 0.310629993677139f, 0.108436107635498f, 0.310930401086807f, - 0.108674705028534f, 0.311230629682541f, 0.108913525938988f, 0.311530679464340f, - 0.109152585268021f, 0.311830550432205f, 0.109391868114471f, 0.312130242586136f, - 0.109631389379501f, 0.312429755926132f, 0.109871134161949f, 0.312729060649872f, - 0.110111102461815f, 0.313028186559677f, 0.110351309180260f, 0.313327133655548f, - 0.110591746866703f, 0.313625901937485f, 0.110832408070564f, 0.313924491405487f, - 0.111073300242424f, 0.314222872257233f, 0.111314415931702f, 0.314521104097366f, - 0.111555770039558f, 0.314819127321243f, 0.111797347664833f, 0.315116971731186f, - 0.112039148807526f, 0.315414607524872f, 0.112281180918217f, 0.315712094306946f, - 0.112523443996906f, 0.316009372472763f, 0.112765938043594f, 0.316306471824646f, - 0.113008655607700f, 0.316603392362595f, 0.113251596689224f, 0.316900104284287f, - 0.113494776189327f, 0.317196637392044f, 0.113738171756268f, 0.317492991685867f, - 0.113981798291206f, 0.317789167165756f, 0.114225655794144f, 0.318085134029388f, - 0.114469736814499f, 0.318380922079086f, 0.114714048802853f, 0.318676531314850f, - 0.114958584308624f, 0.318971961736679f, 0.115203343331814f, 0.319267183542252f, - 0.115448333323002f, 0.319562226533890f, 0.115693546831608f, 0.319857090711594f, - 0.115938983857632f, 0.320151746273041f, 0.116184651851654f, 0.320446223020554f, - 0.116430543363094f, 0.320740520954132f, 0.116676658391953f, 0.321034610271454f, - 0.116923004388809f, 0.321328520774841f, 0.117169573903084f, 0.321622252464294f, - 0.117416366934776f, 0.321915775537491f, 0.117663383483887f, 0.322209119796753f, - 0.117910631000996f, 0.322502255439758f, 0.118158094584942f, 0.322795242071152f, - 0.118405789136887f, 0.323088020086288f, 0.118653707206249f, 0.323380589485168f, - 0.118901848793030f, 0.323672980070114f, 0.119150213897228f, 0.323965191841125f, - 0.119398809969425f, 0.324257194995880f, 0.119647622108459f, 0.324549019336700f, - 0.119896657764912f, 0.324840664863586f, 0.120145916938782f, 0.325132101774216f, - 0.120395407080650f, 0.325423330068588f, 0.120645113289356f, 0.325714409351349f, - 0.120895043015480f, 0.326005280017853f, 0.121145196259022f, 0.326295942068100f, - 0.121395580470562f, 0.326586425304413f, 0.121646173298359f, 0.326876699924469f, - 0.121896997094154f, 0.327166795730591f, 0.122148044407368f, 0.327456712722778f, - 0.122399315237999f, 0.327746421098709f, 0.122650802135468f, 0.328035950660706f, - 0.122902512550354f, 0.328325271606445f, 0.123154446482658f, 0.328614413738251f, - 0.123406603932381f, 0.328903347253799f, 0.123658977448940f, 0.329192101955414f, - 0.123911574482918f, 0.329480648040771f, 0.124164395034313f, 0.329769015312195f, - 0.124417431652546f, 0.330057173967361f, 0.124670691788197f, 0.330345153808594f, - 0.124924175441265f, 0.330632925033569f, 0.125177875161171f, 0.330920487642288f, - 0.125431805849075f, 0.331207901239395f, 0.125685945153236f, 0.331495076417923f, - 0.125940307974815f, 0.331782072782516f, 0.126194894313812f, 0.332068890333176f, - 0.126449704170227f, 0.332355499267578f, 0.126704722642899f, 0.332641899585724f, - 0.126959964632988f, 0.332928121089935f, 0.127215430140495f, 0.333214133977890f, - 0.127471104264259f, 0.333499968051910f, 0.127727001905441f, 0.333785593509674f, - 0.127983123064041f, 0.334071010351181f, 0.128239467740059f, 0.334356248378754f, - 0.128496021032333f, 0.334641307592392f, 0.128752797842026f, 0.334926128387451f, - 0.129009798169136f, 0.335210770368576f, 0.129267007112503f, 0.335495233535767f, - 0.129524439573288f, 0.335779488086700f, 0.129782080650330f, 0.336063534021378f, - 0.130039945244789f, 0.336347371339798f, 0.130298033356667f, 0.336631029844284f, - 0.130556344985962f, 0.336914509534836f, 0.130814850330353f, 0.337197750806808f, - 0.131073594093323f, 0.337480813264847f, 0.131332546472549f, 0.337763696908951f, - 0.131591722369194f, 0.338046342134476f, 0.131851106882095f, 0.338328808546066f, - 0.132110700011253f, 0.338611096143723f, 0.132370531558990f, 0.338893145322800f, - 0.132630556821823f, 0.339175015687943f, 0.132890805602074f, 0.339456677436829f, - 0.133151277899742f, 0.339738160371780f, 0.133411958813667f, 0.340019434690475f, - 0.133672863245010f, 0.340300500392914f, 0.133933976292610f, 0.340581357479095f, - 0.134195312857628f, 0.340862035751343f, 0.134456858038902f, 0.341142505407333f, - 0.134718611836433f, 0.341422766447067f, 0.134980589151382f, 0.341702848672867f, - 0.135242775082588f, 0.341982692480087f, 0.135505184531212f, 0.342262357473373f, - 0.135767802596092f, 0.342541843652725f, 0.136030644178391f, 0.342821091413498f, - 0.136293679475784f, 0.343100160360336f, 0.136556953191757f, 0.343379020690918f, - 0.136820420622826f, 0.343657672405243f, 0.137084111571312f, 0.343936115503311f, - 0.137348011136055f, 0.344214379787445f, 0.137612134218216f, 0.344492435455322f, - 0.137876465916634f, 0.344770282506943f, 0.138141006231308f, 0.345047920942307f, - 0.138405755162239f, 0.345325350761414f, 0.138670727610588f, 0.345602601766586f, - 0.138935908675194f, 0.345879614353180f, 0.139201298356056f, 0.346156448125839f, - 0.139466896653175f, 0.346433073282242f, 0.139732718467712f, 0.346709519624710f, - 0.139998748898506f, 0.346985727548599f, 0.140264987945557f, 0.347261756658554f, - 0.140531435608864f, 0.347537547349930f, 0.140798106789589f, 0.347813159227371f, - 0.141064971685410f, 0.348088562488556f, 0.141332060098648f, 0.348363757133484f, - 0.141599357128143f, 0.348638743162155f, 0.141866862773895f, 0.348913550376892f, - 0.142134591937065f, 0.349188119173050f, 0.142402514815331f, 0.349462509155273f, - 0.142670661211014f, 0.349736660718918f, 0.142939001321793f, 0.350010633468628f, - 0.143207564949989f, 0.350284397602081f, 0.143476337194443f, 0.350557953119278f, - 0.143745318055153f, 0.350831300020218f, 0.144014507532120f, 0.351104438304901f, - 0.144283905625343f, 0.351377367973328f, 0.144553512334824f, 0.351650089025497f, - 0.144823327660561f, 0.351922631263733f, 0.145093351602554f, 0.352194935083389f, - 0.145363584160805f, 0.352467030286789f, 0.145634025335312f, 0.352738946676254f, - 0.145904675126076f, 0.353010624647141f, 0.146175548434258f, 0.353282123804092f, - 0.146446615457535f, 0.353553384542465f, 0.146717891097069f, 0.353824466466904f, - 0.146989375352860f, 0.354095309972763f, 0.147261068224907f, 0.354365974664688f, - 0.147532954812050f, 0.354636400938034f, 0.147805064916611f, 0.354906648397446f, - 0.148077383637428f, 0.355176687240601f, 0.148349896073341f, 0.355446487665176f, - 0.148622632026672f, 0.355716109275818f, 0.148895561695099f, 0.355985492467880f, - 0.149168699979782f, 0.356254696846008f, 0.149442046880722f, 0.356523662805557f, - 0.149715602397919f, 0.356792420148849f, 0.149989366531372f, 0.357060998678207f, - 0.150263324379921f, 0.357329338788986f, 0.150537505745888f, 0.357597470283508f, - 0.150811880826950f, 0.357865422964096f, 0.151086464524269f, 0.358133137226105f, - 0.151361241936684f, 0.358400642871857f, 0.151636242866516f, 0.358667939901352f, - 0.151911437511444f, 0.358935028314590f, 0.152186840772629f, 0.359201908111572f, - 0.152462437748909f, 0.359468549489975f, 0.152738258242607f, 0.359735012054443f, - 0.153014272451401f, 0.360001266002655f, 0.153290495276451f, 0.360267281532288f, - 0.153566911816597f, 0.360533088445663f, 0.153843536973000f, 0.360798716545105f, - 0.154120370745659f, 0.361064106225967f, 0.154397398233414f, 0.361329287290573f, - 0.154674649238586f, 0.361594229936600f, 0.154952079057693f, 0.361858993768692f, - 0.155229732394218f, 0.362123548984528f, 0.155507579445839f, 0.362387865781784f, - 0.155785620212555f, 0.362651973962784f, 0.156063869595528f, 0.362915903329849f, - 0.156342327594757f, 0.363179564476013f, 0.156620979309082f, 0.363443046808243f, - 0.156899839639664f, 0.363706320524216f, 0.157178908586502f, 0.363969355821610f, - 0.157458171248436f, 0.364232182502747f, 0.157737627625465f, 0.364494800567627f, - 0.158017292618752f, 0.364757210016251f, 0.158297166228294f, 0.365019410848618f, - 0.158577233552933f, 0.365281373262405f, 0.158857494592667f, 0.365543156862259f, - 0.159137964248657f, 0.365804702043533f, 0.159418627619743f, 0.366066008806229f, - 0.159699499607086f, 0.366327136754990f, 0.159980565309525f, 0.366588026285172f, - 0.160261839628220f, 0.366848707199097f, 0.160543307662010f, 0.367109179496765f, - 0.160824984312058f, 0.367369443178177f, 0.161106839776039f, 0.367629468441010f, - 0.161388918757439f, 0.367889285087585f, 0.161671176552773f, 0.368148893117905f, - 0.161953642964363f, 0.368408292531967f, 0.162236317992210f, 0.368667453527451f, - 0.162519171833992f, 0.368926405906677f, 0.162802234292030f, 0.369185149669647f, - 0.163085505366325f, 0.369443655014038f, 0.163368955254555f, 0.369701951742172f, - 0.163652613759041f, 0.369960039854050f, 0.163936465978622f, 0.370217919349670f, - 0.164220526814461f, 0.370475560426712f, 0.164504766464233f, 0.370732992887497f, - 0.164789214730263f, 0.370990216732025f, 0.165073871612549f, 0.371247202157974f, - 0.165358707308769f, 0.371503978967667f, 0.165643751621246f, 0.371760547161102f, - 0.165928974747658f, 0.372016876935959f, 0.166214406490326f, 0.372272998094559f, - 0.166500031948090f, 0.372528880834579f, 0.166785866022110f, 0.372784584760666f, - 0.167071878910065f, 0.373040050268173f, 0.167358100414276f, 0.373295277357101f, - 0.167644515633583f, 0.373550295829773f, 0.167931124567986f, 0.373805105686188f, - 0.168217927217484f, 0.374059677124023f, 0.168504923582077f, 0.374314039945602f, - 0.168792113661766f, 0.374568194150925f, 0.169079497456551f, 0.374822109937668f, - 0.169367074966431f, 0.375075817108154f, 0.169654861092567f, 0.375329315662384f, - 0.169942826032639f, 0.375582575798035f, 0.170230999588966f, 0.375835597515106f, - 0.170519351959229f, 0.376088410615921f, 0.170807912945747f, 0.376341015100479f, - 0.171096652746201f, 0.376593410968781f, 0.171385586261749f, 0.376845568418503f, - 0.171674728393555f, 0.377097487449646f, 0.171964049339294f, 0.377349197864532f, - 0.172253578901291f, 0.377600699663162f, 0.172543287277222f, 0.377851963043213f, - 0.172833189368248f, 0.378102988004684f, 0.173123285174370f, 0.378353834152222f, - 0.173413574695587f, 0.378604412078857f, 0.173704057931900f, 0.378854811191559f, - 0.173994734883308f, 0.379104942083359f, 0.174285605549812f, 0.379354894161224f, - 0.174576655030251f, 0.379604607820511f, 0.174867913126946f, 0.379854083061218f, - 0.175159350037575f, 0.380103349685669f, 0.175450980663300f, 0.380352377891541f, - 0.175742805004120f, 0.380601197481155f, 0.176034808158875f, 0.380849778652191f, - 0.176327019929886f, 0.381098151206970f, 0.176619410514832f, 0.381346285343170f, - 0.176911994814873f, 0.381594210863113f, 0.177204772830009f, 0.381841897964478f, - 0.177497729659081f, 0.382089376449585f, 0.177790880203247f, 0.382336616516113f, - 0.178084224462509f, 0.382583618164063f, 0.178377762436867f, 0.382830440998077f, - 0.178671479225159f, 0.383076995611191f, 0.178965389728546f, 0.383323341608047f, - 0.179259493947029f, 0.383569449186325f, 0.179553776979446f, 0.383815348148346f, - 0.179848253726959f, 0.384061008691788f, 0.180142924189568f, 0.384306460618973f, - 0.180437773466110f, 0.384551674127579f, 0.180732816457748f, 0.384796649217606f, - 0.181028053164482f, 0.385041415691376f, 0.181323468685150f, 0.385285943746567f, - 0.181619063019753f, 0.385530263185501f, 0.181914865970612f, 0.385774344205856f, - 0.182210832834244f, 0.386018186807632f, 0.182507008314133f, 0.386261820793152f, - 0.182803362607956f, 0.386505216360092f, 0.183099895715714f, 0.386748403310776f, - 0.183396622538567f, 0.386991351842880f, 0.183693528175354f, 0.387234061956406f, - 0.183990627527237f, 0.387476563453674f, 0.184287920594215f, 0.387718826532364f, - 0.184585392475128f, 0.387960851192474f, 0.184883043169975f, 0.388202667236328f, - 0.185180887579918f, 0.388444244861603f, 0.185478910803795f, 0.388685584068298f, - 0.185777112841606f, 0.388926714658737f, 0.186075508594513f, 0.389167606830597f, - 0.186374098062515f, 0.389408260583878f, 0.186672851443291f, 0.389648675918579f, - 0.186971798539162f, 0.389888882637024f, 0.187270939350128f, 0.390128880739212f, - 0.187570258975029f, 0.390368610620499f, 0.187869757413864f, 0.390608131885529f, - 0.188169434666634f, 0.390847414731979f, 0.188469305634499f, 0.391086459159851f, - 0.188769355416298f, 0.391325294971466f, 0.189069598913193f, 0.391563892364502f, - 0.189370006322861f, 0.391802251338959f, 0.189670607447624f, 0.392040401697159f, - 0.189971387386322f, 0.392278283834457f, 0.190272361040115f, 0.392515957355499f, - 0.190573498606682f, 0.392753422260284f, 0.190874829888344f, 0.392990618944168f, - 0.191176339983940f, 0.393227607011795f, 0.191478043794632f, 0.393464356660843f, - 0.191779911518097f, 0.393700867891312f, 0.192081972956657f, 0.393937170505524f, - 0.192384198307991f, 0.394173204898834f, 0.192686617374420f, 0.394409030675888f, - 0.192989215254784f, 0.394644618034363f, 0.193292006850243f, 0.394879996776581f, - 0.193594962358475f, 0.395115107297897f, 0.193898096680641f, 0.395350009202957f, - 0.194201424717903f, 0.395584672689438f, 0.194504916667938f, 0.395819097757339f, - 0.194808602333069f, 0.396053284406662f, 0.195112451910973f, 0.396287262439728f, - 0.195416495203972f, 0.396520972251892f, 0.195720717310905f, 0.396754473447800f, - 0.196025103330612f, 0.396987736225128f, 0.196329683065414f, 0.397220760583878f, - 0.196634441614151f, 0.397453576326370f, 0.196939364075661f, 0.397686123847961f, - 0.197244480252266f, 0.397918462753296f, 0.197549775242805f, 0.398150533437729f, - 0.197855234146118f, 0.398382395505905f, 0.198160871863365f, 0.398614019155502f, - 0.198466703295708f, 0.398845434188843f, 0.198772698640823f, 0.399076581001282f, - 0.199078872799873f, 0.399307489395142f, 0.199385225772858f, 0.399538189172745f, - 0.199691757559776f, 0.399768620729446f, 0.199998468160629f, 0.399998843669891f, - 0.200305357575417f, 0.400228828191757f, 0.200612410902977f, 0.400458574295044f, - 0.200919643044472f, 0.400688081979752f, 0.201227053999901f, 0.400917351245880f, - 0.201534643769264f, 0.401146411895752f, 0.201842412352562f, 0.401375204324722f, - 0.202150344848633f, 0.401603758335114f, 0.202458456158638f, 0.401832103729248f, - 0.202766746282578f, 0.402060180902481f, 0.203075215220451f, 0.402288049459457f, - 0.203383848071098f, 0.402515679597855f, 0.203692659735680f, 0.402743041515350f, - 0.204001650214195f, 0.402970194816589f, 0.204310819506645f, 0.403197109699249f, - 0.204620152711868f, 0.403423786163330f, 0.204929664731026f, 0.403650224208832f, - 0.205239340662956f, 0.403876423835754f, 0.205549195408821f, 0.404102355241776f, - 0.205859228968620f, 0.404328078031540f, 0.206169426441193f, 0.404553562402725f, - 0.206479802727699f, 0.404778808355331f, 0.206790357828140f, 0.405003815889359f, - 0.207101076841354f, 0.405228585004807f, 0.207411959767342f, 0.405453115701675f, - 0.207723021507263f, 0.405677437782288f, 0.208034262061119f, 0.405901491641998f, - 0.208345666527748f, 0.406125307083130f, 0.208657249808311f, 0.406348884105682f, - 0.208969011902809f, 0.406572192907333f, 0.209280923008919f, 0.406795293092728f, - 0.209593027830124f, 0.407018154859543f, 0.209905281662941f, 0.407240778207779f, - 0.210217714309692f, 0.407463163137436f, 0.210530325770378f, 0.407685309648514f, - 0.210843101143837f, 0.407907217741013f, 0.211156040430069f, 0.408128857612610f, - 0.211469158530235f, 0.408350288867950f, 0.211782455444336f, 0.408571451902390f, - 0.212095901370049f, 0.408792406320572f, 0.212409526109695f, 0.409013092517853f, - 0.212723329663277f, 0.409233570098877f, 0.213037282228470f, 0.409453779459000f, - 0.213351413607597f, 0.409673750400543f, 0.213665723800659f, 0.409893482923508f, - 0.213980183005333f, 0.410112977027893f, 0.214294821023941f, 0.410332232713699f, - 0.214609622955322f, 0.410551249980927f, 0.214924603700638f, 0.410770028829575f, - 0.215239733457565f, 0.410988569259644f, 0.215555042028427f, 0.411206841468811f, - 0.215870529413223f, 0.411424905061722f, 0.216186165809631f, 0.411642700433731f, - 0.216501981019974f, 0.411860257387161f, 0.216817945241928f, 0.412077575922012f, - 0.217134088277817f, 0.412294656038284f, 0.217450410127640f, 0.412511497735977f, - 0.217766880989075f, 0.412728071212769f, 0.218083515763283f, 0.412944436073303f, - 0.218400329351425f, 0.413160532712936f, 0.218717306852341f, 0.413376390933990f, - 0.219034433364868f, 0.413592010736465f, 0.219351738691330f, 0.413807392120361f, - 0.219669207930565f, 0.414022535085678f, 0.219986841082573f, 0.414237409830093f, - 0.220304638147354f, 0.414452046155930f, 0.220622614026070f, 0.414666473865509f, - 0.220940738916397f, 0.414880603551865f, 0.221259027719498f, 0.415094524621964f, - 0.221577480435371f, 0.415308207273483f, 0.221896097064018f, 0.415521621704102f, - 0.222214877605438f, 0.415734797716141f, 0.222533836960793f, 0.415947735309601f, - 0.222852945327759f, 0.416160434484482f, 0.223172217607498f, 0.416372895240784f, - 0.223491653800011f, 0.416585087776184f, 0.223811239004135f, 0.416797041893005f, - 0.224131003022194f, 0.417008757591248f, 0.224450930953026f, 0.417220205068588f, - 0.224771007895470f, 0.417431443929672f, 0.225091263651848f, 0.417642414569855f, - 0.225411668419838f, 0.417853146791458f, 0.225732237100601f, 0.418063640594482f, - 0.226052969694138f, 0.418273866176605f, 0.226373866200447f, 0.418483853340149f, - 0.226694911718369f, 0.418693602085114f, 0.227016136050224f, 0.418903112411499f, - 0.227337509393692f, 0.419112354516983f, 0.227659046649933f, 0.419321358203888f, - 0.227980732917786f, 0.419530123472214f, 0.228302597999573f, 0.419738620519638f, - 0.228624612092972f, 0.419946908950806f, 0.228946775197983f, 0.420154929161072f, - 0.229269117116928f, 0.420362681150436f, 0.229591608047485f, 0.420570224523544f, - 0.229914262890816f, 0.420777499675751f, 0.230237081646919f, 0.420984506607056f, - 0.230560049414635f, 0.421191304922104f, 0.230883181095123f, 0.421397835016251f, - 0.231206461787224f, 0.421604126691818f, 0.231529906392097f, 0.421810150146484f, - 0.231853514909744f, 0.422015935182571f, 0.232177272439003f, 0.422221481800079f, - 0.232501193881035f, 0.422426789999008f, 0.232825264334679f, 0.422631829977036f, - 0.233149498701096f, 0.422836631536484f, 0.233473882079124f, 0.423041164875031f, - 0.233798429369926f, 0.423245459794998f, 0.234123140573502f, 0.423449516296387f, - 0.234448000788689f, 0.423653304576874f, 0.234773010015488f, 0.423856884241104f, - 0.235098183155060f, 0.424060165882111f, 0.235423520207405f, 0.424263238906860f, - 0.235749006271362f, 0.424466013908386f, 0.236074641346931f, 0.424668580293655f, - 0.236400425434113f, 0.424870878458023f, 0.236726388335228f, 0.425072938203812f, - 0.237052485346794f, 0.425274729728699f, 0.237378746271133f, 0.425476282835007f, - 0.237705156207085f, 0.425677597522736f, 0.238031730055809f, 0.425878643989563f, - 0.238358452916145f, 0.426079452037811f, 0.238685324788094f, 0.426279991865158f, - 0.239012360572815f, 0.426480293273926f, 0.239339530467987f, 0.426680356264114f, - 0.239666879177094f, 0.426880151033401f, 0.239994361996651f, 0.427079707384110f, - 0.240322008728981f, 0.427278995513916f, 0.240649804472923f, 0.427478045225143f, - 0.240977749228477f, 0.427676826715469f, 0.241305842995644f, 0.427875369787216f, - 0.241634100675583f, 0.428073674440384f, 0.241962507367134f, 0.428271710872650f, - 0.242291063070297f, 0.428469479084015f, 0.242619767785072f, 0.428667008876801f, - 0.242948621511459f, 0.428864300251007f, 0.243277639150620f, 0.429061323404312f, - 0.243606805801392f, 0.429258108139038f, 0.243936106562614f, 0.429454624652863f, - 0.244265571236610f, 0.429650902748108f, 0.244595184922218f, 0.429846942424774f, - 0.244924947619438f, 0.430042684078217f, 0.245254859328270f, 0.430238217115402f, - 0.245584934949875f, 0.430433481931686f, 0.245915144681931f, 0.430628478527069f, - 0.246245503425598f, 0.430823236703873f, 0.246576011180878f, 0.431017726659775f, - 0.246906682848930f, 0.431211978197098f, 0.247237488627434f, 0.431405961513519f, - 0.247568443417549f, 0.431599706411362f, 0.247899547219276f, 0.431793183088303f, - 0.248230814933777f, 0.431986421346664f, 0.248562216758728f, 0.432179391384125f, - 0.248893767595291f, 0.432372123003006f, 0.249225467443466f, 0.432564586400986f, - 0.249557301402092f, 0.432756811380386f, 0.249889299273491f, 0.432948768138886f, - 0.250221431255341f, 0.433140486478806f, 0.250553727149963f, 0.433331936597824f, - 0.250886172056198f, 0.433523118495941f, 0.251218736171722f, 0.433714061975479f, - 0.251551479101181f, 0.433904737234116f, 0.251884341239929f, 0.434095174074173f, - 0.252217382192612f, 0.434285342693329f, 0.252550542354584f, 0.434475272893906f, - 0.252883851528168f, 0.434664934873581f, 0.253217309713364f, 0.434854328632355f, - 0.253550916910172f, 0.435043483972549f, 0.253884643316269f, 0.435232400894165f, - 0.254218548536301f, 0.435421019792557f, 0.254552572965622f, 0.435609430074692f, - 0.254886746406555f, 0.435797542333603f, 0.255221068859100f, 0.435985416173935f, - 0.255555540323257f, 0.436173021793365f, 0.255890160799026f, 0.436360388994217f, - 0.256224930286407f, 0.436547487974167f, 0.256559818983078f, 0.436734348535538f, - 0.256894856691360f, 0.436920911073685f, 0.257230043411255f, 0.437107264995575f, - 0.257565379142761f, 0.437293320894241f, 0.257900834083557f, 0.437479138374329f, - 0.258236467838287f, 0.437664687633514f, 0.258572220802307f, 0.437849998474121f, - 0.258908122777939f, 0.438035041093826f, 0.259244143962860f, 0.438219845294952f, - 0.259580343961716f, 0.438404351472855f, 0.259916663169861f, 0.438588619232178f, - 0.260253131389618f, 0.438772648572922f, 0.260589718818665f, 0.438956409692764f, - 0.260926485061646f, 0.439139902591705f, 0.261263370513916f, 0.439323127269745f, - 0.261600375175476f, 0.439506113529205f, 0.261937558650970f, 0.439688831567764f, - 0.262274861335754f, 0.439871311187744f, 0.262612313032150f, 0.440053492784500f, - 0.262949883937836f, 0.440235435962677f, 0.263287603855133f, 0.440417140722275f, - 0.263625472784042f, 0.440598547458649f, 0.263963490724564f, 0.440779715776443f, - 0.264301627874374f, 0.440960645675659f, 0.264639914035797f, 0.441141277551651f, - 0.264978319406509f, 0.441321671009064f, 0.265316903591156f, 0.441501796245575f, - 0.265655577182770f, 0.441681683063507f, 0.265994429588318f, 0.441861271858215f, - 0.266333401203156f, 0.442040622234344f, 0.266672492027283f, 0.442219734191895f, - 0.267011761665344f, 0.442398548126221f, 0.267351150512695f, 0.442577123641968f, - 0.267690658569336f, 0.442755430936813f, 0.268030315637589f, 0.442933470010757f, - 0.268370121717453f, 0.443111270666122f, 0.268710047006607f, 0.443288803100586f, - 0.269050091505051f, 0.443466067314148f, 0.269390314817429f, 0.443643063306808f, - 0.269730657339096f, 0.443819820880890f, 0.270071119070053f, 0.443996280431747f, - 0.270411729812622f, 0.444172531366348f, 0.270752459764481f, 0.444348484277725f, - 0.271093338727951f, 0.444524168968201f, 0.271434366703033f, 0.444699615240097f, - 0.271775513887405f, 0.444874793291092f, 0.272116780281067f, 0.445049703121185f, - 0.272458195686340f, 0.445224374532700f, 0.272799760103226f, 0.445398747920990f, - 0.273141443729401f, 0.445572882890701f, 0.273483246564865f, 0.445746749639511f, - 0.273825198411942f, 0.445920348167419f, 0.274167299270630f, 0.446093708276749f, - 0.274509519338608f, 0.446266770362854f, 0.274851858615875f, 0.446439594030380f, - 0.275194346904755f, 0.446612149477005f, 0.275536954402924f, 0.446784436702728f, - 0.275879681110382f, 0.446956485509872f, 0.276222556829453f, 0.447128236293793f, - 0.276565581560135f, 0.447299748659134f, 0.276908725500107f, 0.447470992803574f, - 0.277251988649368f, 0.447641968727112f, 0.277595400810242f, 0.447812676429749f, - 0.277938932180405f, 0.447983115911484f, 0.278282582759857f, 0.448153316974640f, - 0.278626382350922f, 0.448323249816895f, 0.278970301151276f, 0.448492884635925f, - 0.279314368963242f, 0.448662281036377f, 0.279658555984497f, 0.448831409215927f, - 0.280002862215042f, 0.449000298976898f, 0.280347317457199f, 0.449168890714645f, - 0.280691891908646f, 0.449337244033813f, 0.281036585569382f, 0.449505299329758f, - 0.281381398439407f, 0.449673116207123f, 0.281726360321045f, 0.449840664863586f, - 0.282071471214294f, 0.450007945299149f, 0.282416671514511f, 0.450174957513809f, - 0.282762020826340f, 0.450341701507568f, 0.283107489347458f, 0.450508207082748f, - 0.283453077077866f, 0.450674414634705f, 0.283798813819885f, 0.450840383768082f, - 0.284144669771194f, 0.451006084680557f, 0.284490644931793f, 0.451171487569809f, - 0.284836769104004f, 0.451336652040482f, 0.285182982683182f, 0.451501548290253f, - 0.285529345273972f, 0.451666176319122f, 0.285875827074051f, 0.451830536127090f, - 0.286222457885742f, 0.451994657516479f, 0.286569178104401f, 0.452158480882645f, - 0.286916047334671f, 0.452322036027908f, 0.287263035774231f, 0.452485352754593f, - 0.287610173225403f, 0.452648371458054f, 0.287957400083542f, 0.452811151742935f, - 0.288304775953293f, 0.452973634004593f, 0.288652241230011f, 0.453135877847672f, - 0.288999855518341f, 0.453297853469849f, 0.289347589015961f, 0.453459560871124f, - 0.289695471525192f, 0.453621000051498f, 0.290043443441391f, 0.453782171010971f, - 0.290391564369202f, 0.453943043947220f, 0.290739774703979f, 0.454103678464890f, - 0.291088134050369f, 0.454264044761658f, 0.291436612606049f, 0.454424172639847f, - 0.291785210371017f, 0.454584002494812f, 0.292133957147598f, 0.454743564128876f, - 0.292482793331146f, 0.454902857542038f, 0.292831748723984f, 0.455061882734299f, - 0.293180853128433f, 0.455220639705658f, 0.293530046939850f, 0.455379128456116f, - 0.293879389762878f, 0.455537378787994f, 0.294228851795197f, 0.455695331096649f, - 0.294578403234482f, 0.455853015184402f, 0.294928103685379f, 0.456010431051254f, - 0.295277923345566f, 0.456167578697205f, 0.295627862215042f, 0.456324487924576f, - 0.295977920293808f, 0.456481099128723f, 0.296328097581863f, 0.456637442111969f, - 0.296678394079208f, 0.456793516874313f, 0.297028809785843f, 0.456949323415756f, - 0.297379344701767f, 0.457104891538620f, 0.297729998826981f, 0.457260161638260f, - 0.298080772161484f, 0.457415163516998f, 0.298431664705276f, 0.457569897174835f, - 0.298782676458359f, 0.457724362611771f, 0.299133807420731f, 0.457878559827805f, - 0.299485057592392f, 0.458032488822937f, 0.299836426973343f, 0.458186149597168f, - 0.300187885761261f, 0.458339542150497f, 0.300539493560791f, 0.458492636680603f, - 0.300891220569611f, 0.458645492792130f, 0.301243066787720f, 0.458798080682755f, - 0.301595002412796f, 0.458950400352478f, 0.301947087049484f, 0.459102421998978f, - 0.302299261093140f, 0.459254205226898f, 0.302651554346085f, 0.459405690431595f, - 0.303003966808319f, 0.459556937217712f, 0.303356528282166f, 0.459707885980606f, - 0.303709149360657f, 0.459858566522598f, 0.304061919450760f, 0.460008978843689f, - 0.304414808750153f, 0.460159152746201f, 0.304767817258835f, 0.460309028625488f, - 0.305120915174484f, 0.460458606481552f, 0.305474132299423f, 0.460607945919037f, - 0.305827468633652f, 0.460757017135620f, 0.306180924177170f, 0.460905820131302f, - 0.306534498929977f, 0.461054325103760f, 0.306888192892075f, 0.461202591657639f, - 0.307241976261139f, 0.461350560188293f, 0.307595878839493f, 0.461498260498047f, - 0.307949900627136f, 0.461645722389221f, 0.308304041624069f, 0.461792886257172f, - 0.308658272027969f, 0.461939752101898f, 0.309012651443481f, 0.462086379528046f, - 0.309367120265961f, 0.462232738733292f, 0.309721708297729f, 0.462378799915314f, - 0.310076385736465f, 0.462524622678757f, 0.310431212186813f, 0.462670147418976f, - 0.310786128044128f, 0.462815403938293f, 0.311141163110733f, 0.462960392236710f, - 0.311496287584305f, 0.463105112314224f, 0.311851561069489f, 0.463249564170837f, - 0.312206923961639f, 0.463393747806549f, 0.312562376260757f, 0.463537633419037f, - 0.312917977571487f, 0.463681250810623f, 0.313273668289185f, 0.463824629783630f, - 0.313629478216171f, 0.463967710733414f, 0.313985377550125f, 0.464110493659973f, - 0.314341396093369f, 0.464253038167953f, 0.314697533845901f, 0.464395314455032f, - 0.315053790807724f, 0.464537292718887f, 0.315410137176514f, 0.464679002761841f, - 0.315766572952271f, 0.464820444583893f, 0.316123157739639f, 0.464961618185043f, - 0.316479831933975f, 0.465102523565292f, 0.316836595535278f, 0.465243130922318f, - 0.317193508148193f, 0.465383470058441f, 0.317550510168076f, 0.465523540973663f, - 0.317907601594925f, 0.465663343667984f, 0.318264812231064f, 0.465802878141403f, - 0.318622142076492f, 0.465942144393921f, 0.318979561328888f, 0.466081112623215f, - 0.319337099790573f, 0.466219812631607f, 0.319694727659225f, 0.466358244419098f, - 0.320052474737167f, 0.466496407985687f, 0.320410341024399f, 0.466634273529053f, - 0.320768296718597f, 0.466771900653839f, 0.321126341819763f, 0.466909229755402f, - 0.321484506130219f, 0.467046260833740f, 0.321842789649963f, 0.467183053493500f, - 0.322201162576675f, 0.467319577932358f, 0.322559654712677f, 0.467455804347992f, - 0.322918236255646f, 0.467591762542725f, 0.323276937007904f, 0.467727422714233f, - 0.323635727167130f, 0.467862844467163f, 0.323994606733322f, 0.467997968196869f, - 0.324353635311127f, 0.468132823705673f, 0.324712723493576f, 0.468267410993576f, - 0.325071930885315f, 0.468401730060577f, 0.325431257486343f, 0.468535751104355f, - 0.325790673494339f, 0.468669503927231f, 0.326150178909302f, 0.468802988529205f, - 0.326509803533554f, 0.468936175107956f, 0.326869517564774f, 0.469069123268127f, - 0.327229350805283f, 0.469201773405075f, 0.327589273452759f, 0.469334155321121f, - 0.327949285507202f, 0.469466239213943f, 0.328309416770935f, 0.469598054885864f, - 0.328669637441635f, 0.469729602336884f, 0.329029977321625f, 0.469860881567001f, - 0.329390406608582f, 0.469991862773895f, 0.329750925302505f, 0.470122605562210f, - 0.330111563205719f, 0.470253020524979f, 0.330472290515900f, 0.470383197069168f, - 0.330833107233047f, 0.470513075590134f, 0.331194043159485f, 0.470642685890198f, - 0.331555068492889f, 0.470772027969360f, 0.331916213035584f, 0.470901101827621f, - 0.332277417182922f, 0.471029877662659f, 0.332638740539551f, 0.471158385276794f, - 0.333000183105469f, 0.471286594867706f, 0.333361685276031f, 0.471414536237717f, - 0.333723306655884f, 0.471542209386826f, 0.334085017442703f, 0.471669614315033f, - 0.334446847438812f, 0.471796721220016f, 0.334808766841888f, 0.471923559904099f, - 0.335170775651932f, 0.472050130367279f, 0.335532873868942f, 0.472176402807236f, - 0.335895091295242f, 0.472302407026291f, 0.336257368326187f, 0.472428143024445f, - 0.336619764566422f, 0.472553610801697f, 0.336982280015945f, 0.472678780555725f, - 0.337344855070114f, 0.472803652286530f, 0.337707549333572f, 0.472928285598755f, - 0.338070303201675f, 0.473052620887756f, 0.338433176279068f, 0.473176687955856f, - 0.338796168565750f, 0.473300457000732f, 0.339159220457077f, 0.473423957824707f, - 0.339522391557693f, 0.473547190427780f, 0.339885622262955f, 0.473670125007629f, - 0.340248972177505f, 0.473792791366577f, 0.340612411499023f, 0.473915189504623f, - 0.340975970029831f, 0.474037289619446f, 0.341339588165283f, 0.474159121513367f, - 0.341703325510025f, 0.474280685186386f, 0.342067122459412f, 0.474401950836182f, - 0.342431038618088f, 0.474522948265076f, 0.342795044183731f, 0.474643647670746f, - 0.343159139156342f, 0.474764078855515f, 0.343523323535919f, 0.474884241819382f, - 0.343887597322464f, 0.475004136562347f, 0.344251960515976f, 0.475123733282089f, - 0.344616413116455f, 0.475243031978607f, 0.344980984926224f, 0.475362062454224f, - 0.345345616340637f, 0.475480824708939f, 0.345710366964340f, 0.475599318742752f, - 0.346075177192688f, 0.475717514753342f, 0.346440106630325f, 0.475835442543030f, - 0.346805095672607f, 0.475953072309494f, 0.347170203924179f, 0.476070433855057f, - 0.347535371780396f, 0.476187497377396f, 0.347900658845901f, 0.476304292678833f, - 0.348266035318375f, 0.476420819759369f, 0.348631471395493f, 0.476537048816681f, - 0.348997026681900f, 0.476653009653091f, 0.349362671375275f, 0.476768702268600f, - 0.349728375673294f, 0.476884096860886f, 0.350094199180603f, 0.476999223232269f, - 0.350460082292557f, 0.477114051580429f, 0.350826084613800f, 0.477228611707687f, - 0.351192146539688f, 0.477342873811722f, 0.351558297872543f, 0.477456867694855f, - 0.351924568414688f, 0.477570593357086f, 0.352290898561478f, 0.477684020996094f, - 0.352657318115234f, 0.477797180414200f, 0.353023827075958f, 0.477910041809082f, - 0.353390425443649f, 0.478022634983063f, 0.353757113218308f, 0.478134930133820f, - 0.354123860597610f, 0.478246957063675f, 0.354490727186203f, 0.478358715772629f, - 0.354857653379440f, 0.478470176458359f, 0.355224698781967f, 0.478581339120865f, - 0.355591803789139f, 0.478692263364792f, 0.355958998203278f, 0.478802859783173f, - 0.356326282024384f, 0.478913217782974f, 0.356693625450134f, 0.479023247957230f, - 0.357061088085175f, 0.479133039712906f, 0.357428610324860f, 0.479242533445358f, - 0.357796221971512f, 0.479351729154587f, 0.358163923025131f, 0.479460656642914f, - 0.358531713485718f, 0.479569315910339f, 0.358899593353271f, 0.479677677154541f, - 0.359267532825470f, 0.479785770177841f, 0.359635561704636f, 0.479893565177917f, - 0.360003679990768f, 0.480001062154770f, 0.360371887683868f, 0.480108320713043f, - 0.360740154981613f, 0.480215251445770f, 0.361108511686325f, 0.480321943759918f, - 0.361476957798004f, 0.480428308248520f, 0.361845493316650f, 0.480534434318542f, - 0.362214088439941f, 0.480640232563019f, 0.362582772970200f, 0.480745792388916f, - 0.362951546907425f, 0.480851024389267f, 0.363320380449295f, 0.480956017971039f, - 0.363689333200455f, 0.481060713529587f, 0.364058345556259f, 0.481165111064911f, - 0.364427417516708f, 0.481269240379334f, 0.364796578884125f, 0.481373071670532f, - 0.365165829658508f, 0.481476634740829f, 0.365535169839859f, 0.481579899787903f, - 0.365904569625854f, 0.481682896614075f, 0.366274058818817f, 0.481785595417023f, - 0.366643607616425f, 0.481888025999069f, 0.367013275623322f, 0.481990188360214f, - 0.367382973432541f, 0.482092022895813f, 0.367752790451050f, 0.482193619012833f, - 0.368122667074203f, 0.482294887304306f, 0.368492603302002f, 0.482395917177200f, - 0.368862658739090f, 0.482496619224548f, 0.369232743978500f, 0.482597053050995f, - 0.369602948427200f, 0.482697218656540f, 0.369973212480545f, 0.482797086238861f, - 0.370343536138535f, 0.482896685600281f, 0.370713949203491f, 0.482995986938477f, - 0.371084451675415f, 0.483094990253448f, 0.371455013751984f, 0.483193725347519f, - 0.371825665235519f, 0.483292192220688f, 0.372196376323700f, 0.483390361070633f, - 0.372567176818848f, 0.483488231897354f, 0.372938036918640f, 0.483585834503174f, - 0.373308986425400f, 0.483683139085770f, 0.373679995536804f, 0.483780175447464f, - 0.374051094055176f, 0.483876913785934f, 0.374422252178192f, 0.483973383903503f, - 0.374793499708176f, 0.484069555997849f, 0.375164806842804f, 0.484165430068970f, - 0.375536203384399f, 0.484261035919189f, 0.375907659530640f, 0.484356373548508f, - 0.376279205083847f, 0.484451413154602f, 0.376650810241699f, 0.484546154737473f, - 0.377022475004196f, 0.484640628099442f, 0.377394229173660f, 0.484734803438187f, - 0.377766042947769f, 0.484828680753708f, 0.378137946128845f, 0.484922289848328f, - 0.378509908914566f, 0.485015630722046f, 0.378881961107254f, 0.485108673572540f, - 0.379254043102264f, 0.485201418399811f, 0.379626244306564f, 0.485293895006180f, - 0.379998475313187f, 0.485386073589325f, 0.380370795726776f, 0.485477954149246f, - 0.380743205547333f, 0.485569566488266f, 0.381115674972534f, 0.485660910606384f, - 0.381488204002380f, 0.485751956701279f, 0.381860792636871f, 0.485842704772949f, - 0.382233470678329f, 0.485933154821396f, 0.382606208324432f, 0.486023366451263f, - 0.382979035377502f, 0.486113250255585f, 0.383351892232895f, 0.486202865839005f, - 0.383724838495255f, 0.486292183399200f, 0.384097874164581f, 0.486381232738495f, - 0.384470939636230f, 0.486469984054565f, 0.384844094514847f, 0.486558437347412f, - 0.385217308998108f, 0.486646622419357f, 0.385590612888336f, 0.486734509468079f, - 0.385963946580887f, 0.486822128295898f, 0.386337369680405f, 0.486909449100494f, - 0.386710882186890f, 0.486996471881866f, 0.387084424495697f, 0.487083226442337f, - 0.387458056211472f, 0.487169682979584f, 0.387831717729568f, 0.487255871295929f, - 0.388205498456955f, 0.487341761589050f, 0.388579308986664f, 0.487427353858948f, - 0.388953179121017f, 0.487512677907944f, 0.389327138662338f, 0.487597703933716f, - 0.389701157808304f, 0.487682431936264f, 0.390075236558914f, 0.487766891717911f, - 0.390449374914169f, 0.487851053476334f, 0.390823602676392f, 0.487934947013855f, - 0.391197860240936f, 0.488018542528152f, 0.391572207212448f, 0.488101840019226f, - 0.391946613788605f, 0.488184869289398f, 0.392321079969406f, 0.488267600536346f, - 0.392695605754852f, 0.488350033760071f, 0.393070191144943f, 0.488432198762894f, - 0.393444836139679f, 0.488514065742493f, 0.393819570541382f, 0.488595664501190f, - 0.394194334745407f, 0.488676935434341f, 0.394569188356400f, 0.488757967948914f, - 0.394944071769714f, 0.488838672637939f, 0.395319044589996f, 0.488919109106064f, - 0.395694077014923f, 0.488999247550964f, 0.396069169044495f, 0.489079117774963f, - 0.396444320678711f, 0.489158689975739f, 0.396819531917572f, 0.489237964153290f, - 0.397194802761078f, 0.489316970109940f, 0.397570133209229f, 0.489395678043365f, - 0.397945523262024f, 0.489474087953568f, 0.398320972919464f, 0.489552229642868f, - 0.398696482181549f, 0.489630073308945f, 0.399072051048279f, 0.489707618951797f, - 0.399447679519653f, 0.489784896373749f, 0.399823367595673f, 0.489861875772476f, - 0.400199115276337f, 0.489938557147980f, 0.400574922561646f, 0.490014940500259f, - 0.400950789451599f, 0.490091055631638f, 0.401326715946198f, 0.490166902542114f, - 0.401702702045441f, 0.490242421627045f, 0.402078747749329f, 0.490317672491074f, - 0.402454853057861f, 0.490392625331879f, 0.402830988168716f, 0.490467309951782f, - 0.403207212686539f, 0.490541696548462f, 0.403583467006683f, 0.490615785121918f, - 0.403959810733795f, 0.490689605474472f, 0.404336184263229f, 0.490763127803802f, - 0.404712617397308f, 0.490836352109909f, 0.405089110136032f, 0.490909278392792f, - 0.405465662479401f, 0.490981936454773f, 0.405842274427414f, 0.491054296493530f, - 0.406218945980072f, 0.491126358509064f, 0.406595647335052f, 0.491198152303696f, - 0.406972438097000f, 0.491269648075104f, 0.407349258661270f, 0.491340845823288f, - 0.407726138830185f, 0.491411775350571f, 0.408103078603745f, 0.491482406854630f, - 0.408480048179626f, 0.491552740335464f, 0.408857107162476f, 0.491622805595398f, - 0.409234195947647f, 0.491692543029785f, 0.409611344337463f, 0.491762012243271f, - 0.409988552331924f, 0.491831213235855f, 0.410365819931030f, 0.491900116205215f, - 0.410743117332459f, 0.491968721151352f, 0.411120474338531f, 0.492037028074265f, - 0.411497890949249f, 0.492105036973953f, 0.411875367164612f, 0.492172777652740f, - 0.412252873182297f, 0.492240220308304f, 0.412630438804626f, 0.492307394742966f, - 0.413008064031601f, 0.492374241352081f, 0.413385748863220f, 0.492440819740295f, - 0.413763463497162f, 0.492507129907608f, 0.414141237735748f, 0.492573112249374f, - 0.414519041776657f, 0.492638826370239f, 0.414896935224533f, 0.492704242467880f, - 0.415274858474731f, 0.492769360542297f, 0.415652841329575f, 0.492834210395813f, - 0.416030853986740f, 0.492898762226105f, 0.416408926248550f, 0.492963016033173f, - 0.416787058115005f, 0.493026971817017f, 0.417165219783783f, 0.493090659379959f, - 0.417543441057205f, 0.493154048919678f, 0.417921721935272f, 0.493217140436172f, - 0.418300032615662f, 0.493279963731766f, 0.418678402900696f, 0.493342459201813f, - 0.419056802988052f, 0.493404686450958f, 0.419435262680054f, 0.493466645479202f, - 0.419813781976700f, 0.493528276681900f, 0.420192331075668f, 0.493589639663696f, - 0.420570939779282f, 0.493650704622269f, 0.420949578285217f, 0.493711471557617f, - 0.421328276395798f, 0.493771970272064f, 0.421707004308701f, 0.493832170963287f, - 0.422085791826248f, 0.493892073631287f, 0.422464638948441f, 0.493951678276062f, - 0.422843515872955f, 0.494011014699936f, 0.423222452402115f, 0.494070053100586f, - 0.423601418733597f, 0.494128793478012f, 0.423980414867401f, 0.494187235832214f, - 0.424359470605850f, 0.494245409965515f, 0.424738585948944f, 0.494303256273270f, - 0.425117731094360f, 0.494360834360123f, 0.425496935844421f, 0.494418144226074f, - 0.425876170396805f, 0.494475126266479f, 0.426255434751511f, 0.494531840085983f, - 0.426634758710861f, 0.494588255882263f, 0.427014142274857f, 0.494644373655319f, - 0.427393525838852f, 0.494700223207474f, 0.427772998809814f, 0.494755744934082f, - 0.428152471780777f, 0.494810998439789f, 0.428532034158707f, 0.494865983724594f, - 0.428911596536636f, 0.494920641183853f, 0.429291218519211f, 0.494975030422211f, - 0.429670870304108f, 0.495029091835022f, 0.430050581693649f, 0.495082914829254f, - 0.430430322885513f, 0.495136409997940f, 0.430810123682022f, 0.495189607143402f, - 0.431189924478531f, 0.495242536067963f, 0.431569814682007f, 0.495295166969299f, - 0.431949704885483f, 0.495347499847412f, 0.432329654693604f, 0.495399564504623f, - 0.432709634304047f, 0.495451331138611f, 0.433089673519135f, 0.495502769947052f, - 0.433469742536545f, 0.495553970336914f, 0.433849841356277f, 0.495604842901230f, - 0.434229999780655f, 0.495655417442322f, 0.434610158205032f, 0.495705723762512f, - 0.434990376234055f, 0.495755732059479f, 0.435370653867722f, 0.495805442333221f, - 0.435750931501389f, 0.495854884386063f, 0.436131268739700f, 0.495903998613358f, - 0.436511665582657f, 0.495952844619751f, 0.436892062425613f, 0.496001392602921f, - 0.437272518873215f, 0.496049642562866f, 0.437653005123138f, 0.496097624301910f, - 0.438033521175385f, 0.496145308017731f, 0.438414067029953f, 0.496192663908005f, - 0.438794672489166f, 0.496239781379700f, 0.439175277948380f, 0.496286571025848f, - 0.439555943012238f, 0.496333062648773f, 0.439936667680740f, 0.496379286050797f, - 0.440317392349243f, 0.496425211429596f, 0.440698176622391f, 0.496470838785172f, - 0.441078960895538f, 0.496516168117523f, 0.441459804773331f, 0.496561229228973f, - 0.441840678453445f, 0.496605962514877f, 0.442221581935883f, 0.496650427579880f, - 0.442602545022964f, 0.496694594621658f, 0.442983508110046f, 0.496738493442535f, - 0.443364530801773f, 0.496782064437866f, 0.443745553493500f, 0.496825367212296f, - 0.444126635789871f, 0.496868371963501f, 0.444507747888565f, 0.496911078691483f, - 0.444888889789581f, 0.496953487396240f, 0.445270061492920f, 0.496995598077774f, - 0.445651292800903f, 0.497037440538406f, 0.446032524108887f, 0.497078984975815f, - 0.446413785219193f, 0.497120231389999f, 0.446795076131821f, 0.497161179780960f, - 0.447176426649094f, 0.497201830148697f, 0.447557777166367f, 0.497242212295532f, - 0.447939187288284f, 0.497282296419144f, 0.448320597410202f, 0.497322082519531f, - 0.448702067136765f, 0.497361570596695f, 0.449083566665649f, 0.497400760650635f, - 0.449465066194534f, 0.497439652681351f, 0.449846625328064f, 0.497478276491165f, - 0.450228184461594f, 0.497516602277756f, 0.450609803199768f, 0.497554630041122f, - 0.450991421937943f, 0.497592359781265f, 0.451373100280762f, 0.497629791498184f, - 0.451754778623581f, 0.497666954994202f, 0.452136516571045f, 0.497703820466995f, - 0.452518254518509f, 0.497740387916565f, 0.452900022268295f, 0.497776657342911f, - 0.453281819820404f, 0.497812628746033f, 0.453663676977158f, 0.497848302125931f, - 0.454045534133911f, 0.497883707284927f, 0.454427421092987f, 0.497918814420700f, - 0.454809308052063f, 0.497953623533249f, 0.455191254615784f, 0.497988134622574f, - 0.455573230981827f, 0.498022347688675f, 0.455955207347870f, 0.498056292533875f, - 0.456337243318558f, 0.498089909553528f, 0.456719279289246f, 0.498123258352280f, - 0.457101345062256f, 0.498156309127808f, 0.457483440637589f, 0.498189061880112f, - 0.457865566015244f, 0.498221516609192f, 0.458247691392899f, 0.498253703117371f, - 0.458629876375198f, 0.498285561800003f, 0.459012061357498f, 0.498317152261734f, - 0.459394276142120f, 0.498348444700241f, 0.459776520729065f, 0.498379439115524f, - 0.460158795118332f, 0.498410135507584f, 0.460541069507599f, 0.498440563678741f, - 0.460923373699188f, 0.498470664024353f, 0.461305707693100f, 0.498500496149063f, - 0.461688071489334f, 0.498530030250549f, 0.462070435285568f, 0.498559266328812f, - 0.462452858686447f, 0.498588204383850f, 0.462835282087326f, 0.498616874217987f, - 0.463217705488205f, 0.498645216226578f, 0.463600188493729f, 0.498673290014267f, - 0.463982671499252f, 0.498701065778732f, 0.464365184307098f, 0.498728543519974f, - 0.464747726917267f, 0.498755723237991f, 0.465130269527435f, 0.498782604932785f, - 0.465512841939926f, 0.498809218406677f, 0.465895414352417f, 0.498835533857346f, - 0.466278046369553f, 0.498861521482468f, 0.466660678386688f, 0.498887240886688f, - 0.467043310403824f, 0.498912662267685f, 0.467426002025604f, 0.498937815427780f, - 0.467808693647385f, 0.498962640762329f, 0.468191385269165f, 0.498987197875977f, - 0.468574106693268f, 0.499011427164078f, 0.468956857919693f, 0.499035388231277f, - 0.469339638948441f, 0.499059051275253f, 0.469722419977188f, 0.499082416296005f, - 0.470105201005936f, 0.499105513095856f, 0.470488041639328f, 0.499128282070160f, - 0.470870882272720f, 0.499150782823563f, 0.471253722906113f, 0.499172955751419f, - 0.471636593341827f, 0.499194860458374f, 0.472019463777542f, 0.499216467142105f, - 0.472402364015579f, 0.499237775802612f, 0.472785294055939f, 0.499258816242218f, - 0.473168224096298f, 0.499279528856277f, 0.473551183938980f, 0.499299973249435f, - 0.473934143781662f, 0.499320119619370f, 0.474317133426666f, 0.499339967966080f, - 0.474700123071671f, 0.499359518289566f, 0.475083142518997f, 0.499378770589828f, - 0.475466161966324f, 0.499397724866867f, 0.475849211215973f, 0.499416410923004f, - 0.476232260465622f, 0.499434769153595f, 0.476615339517593f, 0.499452859163284f, - 0.476998418569565f, 0.499470651149750f, 0.477381497621536f, 0.499488145112991f, - 0.477764606475830f, 0.499505341053009f, 0.478147745132446f, 0.499522238969803f, - 0.478530883789063f, 0.499538868665695f, 0.478914022445679f, 0.499555170536041f, - 0.479297190904617f, 0.499571204185486f, 0.479680359363556f, 0.499586939811707f, - 0.480063527822495f, 0.499602377414703f, 0.480446726083755f, 0.499617516994476f, - 0.480829954147339f, 0.499632388353348f, 0.481213152408600f, 0.499646931886673f, - 0.481596380472183f, 0.499661177396774f, 0.481979638338089f, 0.499675154685974f, - 0.482362866401672f, 0.499688833951950f, 0.482746154069901f, 0.499702215194702f, - 0.483129411935806f, 0.499715298414230f, 0.483512699604034f, 0.499728083610535f, - 0.483895987272263f, 0.499740600585938f, 0.484279274940491f, 0.499752789735794f, - 0.484662592411041f, 0.499764710664749f, 0.485045909881592f, 0.499776333570480f, - 0.485429257154465f, 0.499787658452988f, 0.485812574625015f, 0.499798685312271f, - 0.486195921897888f, 0.499809414148331f, 0.486579269170761f, 0.499819844961166f, - 0.486962646245956f, 0.499830007553101f, 0.487346023321152f, 0.499839842319489f, - 0.487729400396347f, 0.499849408864975f, 0.488112777471542f, 0.499858677387238f, - 0.488496154546738f, 0.499867647886276f, 0.488879561424255f, 0.499876320362091f, - 0.489262968301773f, 0.499884694814682f, 0.489646375179291f, 0.499892801046371f, - 0.490029782056808f, 0.499900579452515f, 0.490413218736649f, 0.499908089637756f, - 0.490796625614166f, 0.499915301799774f, 0.491180062294006f, 0.499922215938568f, - 0.491563498973846f, 0.499928832054138f, 0.491946935653687f, 0.499935150146484f, - 0.492330402135849f, 0.499941170215607f, 0.492713838815689f, 0.499946922063828f, - 0.493097305297852f, 0.499952346086502f, 0.493480771780014f, 0.499957501888275f, - 0.493864238262177f, 0.499962359666824f, 0.494247704744339f, 0.499966919422150f, - 0.494631171226501f, 0.499971181154251f, 0.495014637708664f, 0.499975144863129f, - 0.495398133993149f, 0.499978810548782f, 0.495781600475311f, 0.499982208013535f, - 0.496165096759796f, 0.499985307455063f, 0.496548563241959f, 0.499988079071045f, - 0.496932059526443f, 0.499990582466125f, 0.497315555810928f, 0.499992787837982f, - 0.497699022293091f, 0.499994695186615f, 0.498082518577576f, 0.499996334314346f, - 0.498466014862061f, 0.499997645616531f, 0.498849511146545f, 0.499998688697815f, - 0.499233007431030f, 0.499999403953552f, 0.499616503715515f, 0.499999850988388f, -}; - - -/** -* \par -* Generation of realCoefB array: -* \par -* n = 4096 -*
for (i = 0; i < n; i++)
-* {
-*    pBTable[2 * i] = 0.5 * (1.0 + sin (2 * PI / (double) (2 * n) * (double) i));
-*    pBTable[2 * i + 1] = 0.5 * (1.0 * cos (2 * PI / (double) (2 * n) * (double) i));
-*  } 
-* -*/ -static const float32_t realCoefB[8192] = { - 0.500000000000000f, 0.500000000000000f, 0.500383496284485f, 0.499999850988388f, - 0.500766992568970f, 0.499999403953552f, 0.501150488853455f, 0.499998688697815f, - 0.501533985137939f, 0.499997645616531f, 0.501917481422424f, 0.499996334314346f, - 0.502300977706909f, 0.499994695186615f, 0.502684473991394f, 0.499992787837982f, - 0.503067970275879f, 0.499990582466125f, 0.503451406955719f, 0.499988079071045f, - 0.503834903240204f, 0.499985307455063f, 0.504218399524689f, 0.499982208013535f, - 0.504601895809174f, 0.499978810548782f, 0.504985332489014f, 0.499975144863129f, - 0.505368828773499f, 0.499971181154251f, 0.505752325057983f, 0.499966919422150f, - 0.506135761737823f, 0.499962359666824f, 0.506519258022308f, 0.499957501888275f, - 0.506902694702148f, 0.499952346086502f, 0.507286131381989f, 0.499946922063828f, - 0.507669627666473f, 0.499941170215607f, 0.508053064346313f, 0.499935150146484f, - 0.508436501026154f, 0.499928832054138f, 0.508819937705994f, 0.499922215938568f, - 0.509203374385834f, 0.499915301799774f, 0.509586811065674f, 0.499908089637756f, - 0.509970188140869f, 0.499900579452515f, 0.510353624820709f, 0.499892801046371f, - 0.510737061500549f, 0.499884694814682f, 0.511120438575745f, 0.499876320362091f, - 0.511503815650940f, 0.499867647886276f, 0.511887252330780f, 0.499858677387238f, - 0.512270629405975f, 0.499849408864975f, 0.512654006481171f, 0.499839842319489f, - 0.513037383556366f, 0.499830007553101f, 0.513420701026917f, 0.499819844961166f, - 0.513804078102112f, 0.499809414148331f, 0.514187395572662f, 0.499798685312271f, - 0.514570772647858f, 0.499787658452988f, 0.514954090118408f, 0.499776333570480f, - 0.515337407588959f, 0.499764710664749f, 0.515720725059509f, 0.499752789735794f, - 0.516103982925415f, 0.499740600585938f, 0.516487300395966f, 0.499728083610535f, - 0.516870558261871f, 0.499715298414230f, 0.517253875732422f, 0.499702215194702f, - 0.517637133598328f, 0.499688833951950f, 0.518020391464233f, 0.499675154685974f, - 0.518403589725494f, 0.499661177396774f, 0.518786847591400f, 0.499646931886673f, - 0.519170045852661f, 0.499632388353348f, 0.519553244113922f, 0.499617516994476f, - 0.519936442375183f, 0.499602377414703f, 0.520319640636444f, 0.499586939811707f, - 0.520702838897705f, 0.499571204185486f, 0.521085977554321f, 0.499555170536041f, - 0.521469116210938f, 0.499538868665695f, 0.521852254867554f, 0.499522238969803f, - 0.522235393524170f, 0.499505341053009f, 0.522618472576141f, 0.499488145112991f, - 0.523001611232758f, 0.499470651149750f, 0.523384690284729f, 0.499452859163284f, - 0.523767769336700f, 0.499434769153595f, 0.524150788784027f, 0.499416410923004f, - 0.524533808231354f, 0.499397724866867f, 0.524916887283325f, 0.499378770589828f, - 0.525299847126007f, 0.499359518289566f, 0.525682866573334f, 0.499339967966080f, - 0.526065826416016f, 0.499320119619370f, 0.526448845863342f, 0.499299973249435f, - 0.526831746101379f, 0.499279528856277f, 0.527214705944061f, 0.499258816242218f, - 0.527597606182098f, 0.499237775802612f, 0.527980506420136f, 0.499216467142105f, - 0.528363406658173f, 0.499194860458374f, 0.528746306896210f, 0.499172955751419f, - 0.529129147529602f, 0.499150782823563f, 0.529511988162994f, 0.499128282070160f, - 0.529894769191742f, 0.499105513095856f, 0.530277609825134f, 0.499082416296005f, - 0.530660390853882f, 0.499059051275253f, 0.531043112277985f, 0.499035388231277f, - 0.531425893306732f, 0.499011427164078f, 0.531808614730835f, 0.498987197875977f, - 0.532191336154938f, 0.498962640762329f, 0.532573997974396f, 0.498937815427780f, - 0.532956659793854f, 0.498912662267685f, 0.533339321613312f, 0.498887240886688f, - 0.533721983432770f, 0.498861521482468f, 0.534104585647583f, 0.498835533857346f, - 0.534487187862396f, 0.498809218406677f, 0.534869730472565f, 0.498782604932785f, - 0.535252273082733f, 0.498755723237991f, 0.535634815692902f, 0.498728543519974f, - 0.536017298698425f, 0.498701065778732f, 0.536399841308594f, 0.498673290014267f, - 0.536782264709473f, 0.498645216226578f, 0.537164747714996f, 0.498616874217987f, - 0.537547171115875f, 0.498588204383850f, 0.537929534912109f, 0.498559266328812f, - 0.538311958312988f, 0.498530030250549f, 0.538694262504578f, 0.498500496149063f, - 0.539076626300812f, 0.498470664024353f, 0.539458930492401f, 0.498440563678741f, - 0.539841234683990f, 0.498410135507584f, 0.540223479270935f, 0.498379439115524f, - 0.540605723857880f, 0.498348444700241f, 0.540987968444824f, 0.498317152261734f, - 0.541370153427124f, 0.498285561800003f, 0.541752278804779f, 0.498253703117371f, - 0.542134463787079f, 0.498221516609192f, 0.542516589164734f, 0.498189061880112f, - 0.542898654937744f, 0.498156309127808f, 0.543280720710754f, 0.498123258352280f, - 0.543662786483765f, 0.498089909553528f, 0.544044792652130f, 0.498056292533875f, - 0.544426798820496f, 0.498022347688675f, 0.544808745384216f, 0.497988134622574f, - 0.545190691947937f, 0.497953623533249f, 0.545572578907013f, 0.497918814420700f, - 0.545954465866089f, 0.497883707284927f, 0.546336352825165f, 0.497848302125931f, - 0.546718180179596f, 0.497812628746033f, 0.547099947929382f, 0.497776657342911f, - 0.547481775283813f, 0.497740387916565f, 0.547863483428955f, 0.497703820466995f, - 0.548245191574097f, 0.497666954994202f, 0.548626899719238f, 0.497629791498184f, - 0.549008548259735f, 0.497592359781265f, 0.549390196800232f, 0.497554630041122f, - 0.549771785736084f, 0.497516602277756f, 0.550153374671936f, 0.497478276491165f, - 0.550534904003143f, 0.497439652681351f, 0.550916433334351f, 0.497400760650635f, - 0.551297962665558f, 0.497361570596695f, 0.551679372787476f, 0.497322082519531f, - 0.552060842514038f, 0.497282296419144f, 0.552442193031311f, 0.497242212295532f, - 0.552823603153229f, 0.497201830148697f, 0.553204894065857f, 0.497161179780960f, - 0.553586184978485f, 0.497120231389999f, 0.553967475891113f, 0.497078984975815f, - 0.554348707199097f, 0.497037440538406f, 0.554729938507080f, 0.496995598077774f, - 0.555111110210419f, 0.496953487396240f, 0.555492222309113f, 0.496911078691483f, - 0.555873334407806f, 0.496868371963501f, 0.556254446506500f, 0.496825367212296f, - 0.556635499000549f, 0.496782064437866f, 0.557016491889954f, 0.496738493442535f, - 0.557397484779358f, 0.496694594621658f, 0.557778418064117f, 0.496650427579880f, - 0.558159291744232f, 0.496605962514877f, 0.558540165424347f, 0.496561229228973f, - 0.558921039104462f, 0.496516168117523f, 0.559301853179932f, 0.496470838785172f, - 0.559682607650757f, 0.496425211429596f, 0.560063362121582f, 0.496379286050797f, - 0.560444056987762f, 0.496333062648773f, 0.560824692249298f, 0.496286571025848f, - 0.561205327510834f, 0.496239781379700f, 0.561585903167725f, 0.496192663908005f, - 0.561966478824615f, 0.496145308017731f, 0.562346994876862f, 0.496097624301910f, - 0.562727510929108f, 0.496049642562866f, 0.563107967376709f, 0.496001392602921f, - 0.563488364219666f, 0.495952844619751f, 0.563868701457977f, 0.495903998613358f, - 0.564249038696289f, 0.495854884386063f, 0.564629375934601f, 0.495805442333221f, - 0.565009593963623f, 0.495755732059479f, 0.565389811992645f, 0.495705723762512f, - 0.565770030021667f, 0.495655417442322f, 0.566150128841400f, 0.495604842901230f, - 0.566530287265778f, 0.495553970336914f, 0.566910326480865f, 0.495502769947052f, - 0.567290365695953f, 0.495451331138611f, 0.567670345306396f, 0.495399564504623f, - 0.568050265312195f, 0.495347499847412f, 0.568430185317993f, 0.495295166969299f, - 0.568810045719147f, 0.495242536067963f, 0.569189906120300f, 0.495189607143402f, - 0.569569647312164f, 0.495136409997940f, 0.569949388504028f, 0.495082914829254f, - 0.570329129695892f, 0.495029091835022f, 0.570708811283112f, 0.494975030422211f, - 0.571088373661041f, 0.494920641183853f, 0.571467995643616f, 0.494865983724594f, - 0.571847498416901f, 0.494810998439789f, 0.572227001190186f, 0.494755744934082f, - 0.572606444358826f, 0.494700223207474f, 0.572985887527466f, 0.494644373655319f, - 0.573365211486816f, 0.494588255882263f, 0.573744535446167f, 0.494531840085983f, - 0.574123859405518f, 0.494475126266479f, 0.574503064155579f, 0.494418144226074f, - 0.574882268905640f, 0.494360834360123f, 0.575261414051056f, 0.494303256273270f, - 0.575640499591827f, 0.494245409965515f, 0.576019585132599f, 0.494187235832214f, - 0.576398611068726f, 0.494128793478012f, 0.576777577400208f, 0.494070053100586f, - 0.577156484127045f, 0.494011014699936f, 0.577535390853882f, 0.493951678276062f, - 0.577914178371429f, 0.493892073631287f, 0.578292965888977f, 0.493832170963287f, - 0.578671753406525f, 0.493771970272064f, 0.579050421714783f, 0.493711471557617f, - 0.579429090023041f, 0.493650704622269f, 0.579807698726654f, 0.493589639663696f, - 0.580186247825623f, 0.493528276681900f, 0.580564737319946f, 0.493466645479202f, - 0.580943167209625f, 0.493404686450958f, 0.581321597099304f, 0.493342459201813f, - 0.581699967384338f, 0.493279963731766f, 0.582078278064728f, 0.493217140436172f, - 0.582456588745117f, 0.493154048919678f, 0.582834780216217f, 0.493090659379959f, - 0.583212971687317f, 0.493026971817017f, 0.583591103553772f, 0.492963016033173f, - 0.583969175815582f, 0.492898762226105f, 0.584347188472748f, 0.492834210395813f, - 0.584725141525269f, 0.492769360542297f, 0.585103094577789f, 0.492704242467880f, - 0.585480928421021f, 0.492638826370239f, 0.585858762264252f, 0.492573112249374f, - 0.586236536502838f, 0.492507129907608f, 0.586614251136780f, 0.492440819740295f, - 0.586991965770721f, 0.492374241352081f, 0.587369561195374f, 0.492307394742966f, - 0.587747097015381f, 0.492240220308304f, 0.588124632835388f, 0.492172777652740f, - 0.588502109050751f, 0.492105036973953f, 0.588879525661469f, 0.492037028074265f, - 0.589256882667542f, 0.491968721151352f, 0.589634180068970f, 0.491900116205215f, - 0.590011477470398f, 0.491831213235855f, 0.590388655662537f, 0.491762012243271f, - 0.590765833854675f, 0.491692543029785f, 0.591142892837524f, 0.491622805595398f, - 0.591519951820374f, 0.491552740335464f, 0.591896951198578f, 0.491482406854630f, - 0.592273890972137f, 0.491411775350571f, 0.592650771141052f, 0.491340845823288f, - 0.593027591705322f, 0.491269648075104f, 0.593404352664948f, 0.491198152303696f, - 0.593781054019928f, 0.491126358509064f, 0.594157755374908f, 0.491054296493530f, - 0.594534337520599f, 0.490981936454773f, 0.594910860061646f, 0.490909278392792f, - 0.595287382602692f, 0.490836352109909f, 0.595663845539093f, 0.490763127803802f, - 0.596040189266205f, 0.490689605474472f, 0.596416532993317f, 0.490615785121918f, - 0.596792817115784f, 0.490541696548462f, 0.597168982028961f, 0.490467309951782f, - 0.597545146942139f, 0.490392625331879f, 0.597921252250671f, 0.490317672491074f, - 0.598297297954559f, 0.490242421627045f, 0.598673284053802f, 0.490166902542114f, - 0.599049210548401f, 0.490091055631638f, 0.599425077438354f, 0.490014940500259f, - 0.599800884723663f, 0.489938557147980f, 0.600176632404327f, 0.489861875772476f, - 0.600552320480347f, 0.489784896373749f, 0.600927948951721f, 0.489707618951797f, - 0.601303517818451f, 0.489630073308945f, 0.601679027080536f, 0.489552229642868f, - 0.602054476737976f, 0.489474087953568f, 0.602429866790771f, 0.489395678043365f, - 0.602805197238922f, 0.489316970109940f, 0.603180468082428f, 0.489237964153290f, - 0.603555679321289f, 0.489158689975739f, 0.603930830955505f, 0.489079117774963f, - 0.604305922985077f, 0.488999247550964f, 0.604680955410004f, 0.488919109106064f, - 0.605055928230286f, 0.488838672637939f, 0.605430841445923f, 0.488757967948914f, - 0.605805635452271f, 0.488676935434341f, 0.606180429458618f, 0.488595664501190f, - 0.606555163860321f, 0.488514065742493f, 0.606929838657379f, 0.488432198762894f, - 0.607304394245148f, 0.488350033760071f, 0.607678949832916f, 0.488267600536346f, - 0.608053386211395f, 0.488184869289398f, 0.608427822589874f, 0.488101840019226f, - 0.608802139759064f, 0.488018542528152f, 0.609176397323608f, 0.487934947013855f, - 0.609550595283508f, 0.487851053476334f, 0.609924793243408f, 0.487766891717911f, - 0.610298871994019f, 0.487682431936264f, 0.610672831535339f, 0.487597703933716f, - 0.611046791076660f, 0.487512677907944f, 0.611420691013336f, 0.487427353858948f, - 0.611794531345367f, 0.487341761589050f, 0.612168252468109f, 0.487255871295929f, - 0.612541973590851f, 0.487169682979584f, 0.612915575504303f, 0.487083226442337f, - 0.613289117813110f, 0.486996471881866f, 0.613662600517273f, 0.486909449100494f, - 0.614036023616791f, 0.486822128295898f, 0.614409387111664f, 0.486734509468079f, - 0.614782691001892f, 0.486646622419357f, 0.615155875682831f, 0.486558437347412f, - 0.615529060363770f, 0.486469984054565f, 0.615902125835419f, 0.486381232738495f, - 0.616275131702423f, 0.486292183399200f, 0.616648077964783f, 0.486202865839005f, - 0.617020964622498f, 0.486113250255585f, 0.617393791675568f, 0.486023366451263f, - 0.617766559123993f, 0.485933154821396f, 0.618139207363129f, 0.485842704772949f, - 0.618511795997620f, 0.485751956701279f, 0.618884325027466f, 0.485660910606384f, - 0.619256794452667f, 0.485569566488266f, 0.619629204273224f, 0.485477954149246f, - 0.620001494884491f, 0.485386073589325f, 0.620373785495758f, 0.485293895006180f, - 0.620745956897736f, 0.485201418399811f, 0.621118068695068f, 0.485108673572540f, - 0.621490061283112f, 0.485015630722046f, 0.621862053871155f, 0.484922289848328f, - 0.622233927249908f, 0.484828680753708f, 0.622605800628662f, 0.484734803438187f, - 0.622977554798126f, 0.484640628099442f, 0.623349189758301f, 0.484546154737473f, - 0.623720824718475f, 0.484451413154602f, 0.624092340469360f, 0.484356373548508f, - 0.624463796615601f, 0.484261035919189f, 0.624835193157196f, 0.484165430068970f, - 0.625206530094147f, 0.484069555997849f, 0.625577747821808f, 0.483973383903503f, - 0.625948905944824f, 0.483876913785934f, 0.626320004463196f, 0.483780175447464f, - 0.626691043376923f, 0.483683139085770f, 0.627061963081360f, 0.483585834503174f, - 0.627432823181152f, 0.483488231897354f, 0.627803623676300f, 0.483390361070633f, - 0.628174364566803f, 0.483292192220688f, 0.628544986248016f, 0.483193725347519f, - 0.628915548324585f, 0.483094990253448f, 0.629286050796509f, 0.482995986938477f, - 0.629656434059143f, 0.482896685600281f, 0.630026817321777f, 0.482797086238861f, - 0.630397081375122f, 0.482697218656540f, 0.630767226219177f, 0.482597053050995f, - 0.631137371063232f, 0.482496619224548f, 0.631507396697998f, 0.482395917177200f, - 0.631877362728119f, 0.482294887304306f, 0.632247209548950f, 0.482193619012833f, - 0.632616996765137f, 0.482092022895813f, 0.632986724376678f, 0.481990188360214f, - 0.633356392383575f, 0.481888025999069f, 0.633725941181183f, 0.481785595417023f, - 0.634095430374146f, 0.481682896614075f, 0.634464859962463f, 0.481579899787903f, - 0.634834170341492f, 0.481476634740829f, 0.635203421115875f, 0.481373071670532f, - 0.635572552680969f, 0.481269240379334f, 0.635941684246063f, 0.481165111064911f, - 0.636310696601868f, 0.481060713529587f, 0.636679589748383f, 0.480956017971039f, - 0.637048482894897f, 0.480851024389267f, 0.637417197227478f, 0.480745792388916f, - 0.637785911560059f, 0.480640232563019f, 0.638154506683350f, 0.480534434318542f, - 0.638523042201996f, 0.480428308248520f, 0.638891458511353f, 0.480321943759918f, - 0.639259815216064f, 0.480215251445770f, 0.639628112316132f, 0.480108320713043f, - 0.639996349811554f, 0.480001062154770f, 0.640364408493042f, 0.479893565177917f, - 0.640732467174530f, 0.479785770177841f, 0.641100406646729f, 0.479677677154541f, - 0.641468286514282f, 0.479569315910339f, 0.641836047172546f, 0.479460656642914f, - 0.642203748226166f, 0.479351729154587f, 0.642571389675140f, 0.479242533445358f, - 0.642938911914825f, 0.479133039712906f, 0.643306374549866f, 0.479023247957230f, - 0.643673717975616f, 0.478913217782974f, 0.644041001796722f, 0.478802859783173f, - 0.644408226013184f, 0.478692263364792f, 0.644775331020355f, 0.478581339120865f, - 0.645142316818237f, 0.478470176458359f, 0.645509302616119f, 0.478358715772629f, - 0.645876109600067f, 0.478246957063675f, 0.646242916584015f, 0.478134930133820f, - 0.646609604358673f, 0.478022634983063f, 0.646976172924042f, 0.477910041809082f, - 0.647342681884766f, 0.477797180414200f, 0.647709131240845f, 0.477684020996094f, - 0.648075461387634f, 0.477570593357086f, 0.648441672325134f, 0.477456867694855f, - 0.648807883262634f, 0.477342873811722f, 0.649173915386200f, 0.477228611707687f, - 0.649539887905121f, 0.477114051580429f, 0.649905800819397f, 0.476999223232269f, - 0.650271594524384f, 0.476884096860886f, 0.650637328624725f, 0.476768702268600f, - 0.651003003120422f, 0.476653009653091f, 0.651368498802185f, 0.476537048816681f, - 0.651733994483948f, 0.476420819759369f, 0.652099311351776f, 0.476304292678833f, - 0.652464628219604f, 0.476187497377396f, 0.652829825878143f, 0.476070433855057f, - 0.653194904327393f, 0.475953072309494f, 0.653559923171997f, 0.475835442543030f, - 0.653924822807312f, 0.475717514753342f, 0.654289662837982f, 0.475599318742752f, - 0.654654383659363f, 0.475480824708939f, 0.655019044876099f, 0.475362062454224f, - 0.655383586883545f, 0.475243031978607f, 0.655748009681702f, 0.475123733282089f, - 0.656112432479858f, 0.475004136562347f, 0.656476676464081f, 0.474884241819382f, - 0.656840860843658f, 0.474764078855515f, 0.657204985618591f, 0.474643647670746f, - 0.657568991184235f, 0.474522948265076f, 0.657932877540588f, 0.474401950836182f, - 0.658296704292297f, 0.474280685186386f, 0.658660411834717f, 0.474159121513367f, - 0.659024059772491f, 0.474037289619446f, 0.659387588500977f, 0.473915189504623f, - 0.659750998020172f, 0.473792791366577f, 0.660114347934723f, 0.473670125007629f, - 0.660477638244629f, 0.473547190427780f, 0.660840749740601f, 0.473423957824707f, - 0.661203861236572f, 0.473300457000732f, 0.661566793918610f, 0.473176687955856f, - 0.661929666996002f, 0.473052620887756f, 0.662292480468750f, 0.472928285598755f, - 0.662655174732208f, 0.472803652286530f, 0.663017749786377f, 0.472678780555725f, - 0.663380205631256f, 0.472553610801697f, 0.663742601871490f, 0.472428143024445f, - 0.664104938507080f, 0.472302407026291f, 0.664467096328735f, 0.472176402807236f, - 0.664829254150391f, 0.472050130367279f, 0.665191233158112f, 0.471923559904099f, - 0.665553152561188f, 0.471796721220016f, 0.665914952754974f, 0.471669614315033f, - 0.666276693344116f, 0.471542209386826f, 0.666638314723969f, 0.471414536237717f, - 0.666999816894531f, 0.471286594867706f, 0.667361259460449f, 0.471158385276794f, - 0.667722582817078f, 0.471029877662659f, 0.668083786964417f, 0.470901101827621f, - 0.668444931507111f, 0.470772027969360f, 0.668805956840515f, 0.470642685890198f, - 0.669166862964630f, 0.470513075590134f, 0.669527709484100f, 0.470383197069168f, - 0.669888436794281f, 0.470253020524979f, 0.670249044895172f, 0.470122605562210f, - 0.670609593391418f, 0.469991862773895f, 0.670970022678375f, 0.469860881567001f, - 0.671330332756042f, 0.469729602336884f, 0.671690583229065f, 0.469598054885864f, - 0.672050714492798f, 0.469466239213943f, 0.672410726547241f, 0.469334155321121f, - 0.672770678997040f, 0.469201773405075f, 0.673130512237549f, 0.469069123268127f, - 0.673490226268768f, 0.468936175107956f, 0.673849821090698f, 0.468802988529205f, - 0.674209356307983f, 0.468669503927231f, 0.674568772315979f, 0.468535751104355f, - 0.674928069114685f, 0.468401730060577f, 0.675287246704102f, 0.468267410993576f, - 0.675646364688873f, 0.468132823705673f, 0.676005363464355f, 0.467997968196869f, - 0.676364302635193f, 0.467862844467163f, 0.676723062992096f, 0.467727422714233f, - 0.677081763744354f, 0.467591762542725f, 0.677440345287323f, 0.467455804347992f, - 0.677798807621002f, 0.467319577932358f, 0.678157210350037f, 0.467183053493500f, - 0.678515493869781f, 0.467046260833740f, 0.678873658180237f, 0.466909229755402f, - 0.679231703281403f, 0.466771900653839f, 0.679589688777924f, 0.466634273529053f, - 0.679947495460510f, 0.466496407985687f, 0.680305242538452f, 0.466358244419098f, - 0.680662930011749f, 0.466219812631607f, 0.681020438671112f, 0.466081112623215f, - 0.681377887725830f, 0.465942144393921f, 0.681735157966614f, 0.465802878141403f, - 0.682092368602753f, 0.465663343667984f, 0.682449519634247f, 0.465523540973663f, - 0.682806491851807f, 0.465383470058441f, 0.683163404464722f, 0.465243130922318f, - 0.683520197868347f, 0.465102523565292f, 0.683876872062683f, 0.464961618185043f, - 0.684233427047729f, 0.464820444583893f, 0.684589862823486f, 0.464679002761841f, - 0.684946238994598f, 0.464537292718887f, 0.685302436351776f, 0.464395314455032f, - 0.685658574104309f, 0.464253038167953f, 0.686014592647552f, 0.464110493659973f, - 0.686370551586151f, 0.463967710733414f, 0.686726331710815f, 0.463824629783630f, - 0.687082052230835f, 0.463681250810623f, 0.687437593936920f, 0.463537633419037f, - 0.687793076038361f, 0.463393747806549f, 0.688148438930511f, 0.463249564170837f, - 0.688503682613373f, 0.463105112314224f, 0.688858866691589f, 0.462960392236710f, - 0.689213871955872f, 0.462815403938293f, 0.689568817615509f, 0.462670147418976f, - 0.689923584461212f, 0.462524622678757f, 0.690278291702271f, 0.462378799915314f, - 0.690632879734039f, 0.462232738733292f, 0.690987348556519f, 0.462086379528046f, - 0.691341698169708f, 0.461939752101898f, 0.691695988178253f, 0.461792886257172f, - 0.692050099372864f, 0.461645722389221f, 0.692404091358185f, 0.461498260498047f, - 0.692758023738861f, 0.461350560188293f, 0.693111836910248f, 0.461202591657639f, - 0.693465530872345f, 0.461054325103760f, 0.693819046020508f, 0.460905820131302f, - 0.694172501564026f, 0.460757017135620f, 0.694525837898254f, 0.460607945919037f, - 0.694879114627838f, 0.460458606481552f, 0.695232212543488f, 0.460309028625488f, - 0.695585191249847f, 0.460159152746201f, 0.695938050746918f, 0.460008978843689f, - 0.696290850639343f, 0.459858566522598f, 0.696643471717834f, 0.459707885980606f, - 0.696996033191681f, 0.459556937217712f, 0.697348415851593f, 0.459405690431595f, - 0.697700738906860f, 0.459254205226898f, 0.698052942752838f, 0.459102421998978f, - 0.698404967784882f, 0.458950400352478f, 0.698756933212280f, 0.458798080682755f, - 0.699108779430389f, 0.458645492792130f, 0.699460506439209f, 0.458492636680603f, - 0.699812114238739f, 0.458339542150497f, 0.700163602828979f, 0.458186149597168f, - 0.700514972209930f, 0.458032488822937f, 0.700866222381592f, 0.457878559827805f, - 0.701217353343964f, 0.457724362611771f, 0.701568365097046f, 0.457569897174835f, - 0.701919257640839f, 0.457415163516998f, 0.702270030975342f, 0.457260161638260f, - 0.702620685100555f, 0.457104891538620f, 0.702971220016479f, 0.456949323415756f, - 0.703321635723114f, 0.456793516874313f, 0.703671932220459f, 0.456637442111969f, - 0.704022109508514f, 0.456481099128723f, 0.704372167587280f, 0.456324487924576f, - 0.704722046852112f, 0.456167578697205f, 0.705071866512299f, 0.456010431051254f, - 0.705421566963196f, 0.455853015184402f, 0.705771148204803f, 0.455695331096649f, - 0.706120610237122f, 0.455537378787994f, 0.706469953060150f, 0.455379128456116f, - 0.706819176673889f, 0.455220639705658f, 0.707168221473694f, 0.455061882734299f, - 0.707517206668854f, 0.454902857542038f, 0.707866072654724f, 0.454743564128876f, - 0.708214759826660f, 0.454584002494812f, 0.708563387393951f, 0.454424172639847f, - 0.708911836147308f, 0.454264044761658f, 0.709260225296021f, 0.454103678464890f, - 0.709608435630798f, 0.453943043947220f, 0.709956526756287f, 0.453782171010971f, - 0.710304558277130f, 0.453621000051498f, 0.710652410984039f, 0.453459560871124f, - 0.711000144481659f, 0.453297853469849f, 0.711347758769989f, 0.453135877847672f, - 0.711695253849030f, 0.452973634004593f, 0.712042629718781f, 0.452811151742935f, - 0.712389826774597f, 0.452648371458054f, 0.712736964225769f, 0.452485352754593f, - 0.713083922863007f, 0.452322036027908f, 0.713430821895599f, 0.452158480882645f, - 0.713777542114258f, 0.451994657516479f, 0.714124143123627f, 0.451830536127090f, - 0.714470624923706f, 0.451666176319122f, 0.714816987514496f, 0.451501548290253f, - 0.715163230895996f, 0.451336652040482f, 0.715509355068207f, 0.451171487569809f, - 0.715855300426483f, 0.451006084680557f, 0.716201186180115f, 0.450840383768082f, - 0.716546893119812f, 0.450674414634705f, 0.716892480850220f, 0.450508207082748f, - 0.717238008975983f, 0.450341701507568f, 0.717583298683167f, 0.450174957513809f, - 0.717928528785706f, 0.450007945299149f, 0.718273639678955f, 0.449840664863586f, - 0.718618571758270f, 0.449673116207123f, 0.718963444232941f, 0.449505299329758f, - 0.719308137893677f, 0.449337244033813f, 0.719652712345123f, 0.449168890714645f, - 0.719997107982636f, 0.449000298976898f, 0.720341444015503f, 0.448831409215927f, - 0.720685660839081f, 0.448662281036377f, 0.721029698848724f, 0.448492884635925f, - 0.721373617649078f, 0.448323249816895f, 0.721717417240143f, 0.448153316974640f, - 0.722061097621918f, 0.447983115911484f, 0.722404599189758f, 0.447812676429749f, - 0.722747981548309f, 0.447641968727112f, 0.723091304302216f, 0.447470992803574f, - 0.723434448242188f, 0.447299748659134f, 0.723777413368225f, 0.447128236293793f, - 0.724120318889618f, 0.446956485509872f, 0.724463045597076f, 0.446784436702728f, - 0.724805653095245f, 0.446612149477005f, 0.725148141384125f, 0.446439594030380f, - 0.725490510463715f, 0.446266770362854f, 0.725832700729370f, 0.446093708276749f, - 0.726174771785736f, 0.445920348167419f, 0.726516723632813f, 0.445746749639511f, - 0.726858556270599f, 0.445572882890701f, 0.727200269699097f, 0.445398747920990f, - 0.727541804313660f, 0.445224374532700f, 0.727883219718933f, 0.445049703121185f, - 0.728224515914917f, 0.444874793291092f, 0.728565633296967f, 0.444699615240097f, - 0.728906631469727f, 0.444524168968201f, 0.729247510433197f, 0.444348484277725f, - 0.729588270187378f, 0.444172531366348f, 0.729928910732269f, 0.443996280431747f, - 0.730269372463226f, 0.443819820880890f, 0.730609714984894f, 0.443643063306808f, - 0.730949878692627f, 0.443466067314148f, 0.731289982795715f, 0.443288803100586f, - 0.731629908084869f, 0.443111270666122f, 0.731969714164734f, 0.442933470010757f, - 0.732309341430664f, 0.442755430936813f, 0.732648849487305f, 0.442577123641968f, - 0.732988238334656f, 0.442398548126221f, 0.733327507972717f, 0.442219734191895f, - 0.733666598796844f, 0.442040622234344f, 0.734005570411682f, 0.441861271858215f, - 0.734344422817230f, 0.441681683063507f, 0.734683096408844f, 0.441501796245575f, - 0.735021650791168f, 0.441321671009064f, 0.735360085964203f, 0.441141277551651f, - 0.735698342323303f, 0.440960645675659f, 0.736036539077759f, 0.440779715776443f, - 0.736374497413635f, 0.440598547458649f, 0.736712396144867f, 0.440417140722275f, - 0.737050116062164f, 0.440235435962677f, 0.737387716770172f, 0.440053492784500f, - 0.737725138664246f, 0.439871311187744f, 0.738062441349030f, 0.439688831567764f, - 0.738399624824524f, 0.439506113529205f, 0.738736629486084f, 0.439323127269745f, - 0.739073514938354f, 0.439139902591705f, 0.739410281181335f, 0.438956409692764f, - 0.739746868610382f, 0.438772648572922f, 0.740083336830139f, 0.438588619232178f, - 0.740419685840607f, 0.438404351472855f, 0.740755856037140f, 0.438219845294952f, - 0.741091907024384f, 0.438035041093826f, 0.741427779197693f, 0.437849998474121f, - 0.741763532161713f, 0.437664687633514f, 0.742099165916443f, 0.437479138374329f, - 0.742434620857239f, 0.437293320894241f, 0.742769956588745f, 0.437107264995575f, - 0.743105113506317f, 0.436920911073685f, 0.743440151214600f, 0.436734348535538f, - 0.743775069713593f, 0.436547487974167f, 0.744109809398651f, 0.436360388994217f, - 0.744444429874420f, 0.436173021793365f, 0.744778931140900f, 0.435985416173935f, - 0.745113253593445f, 0.435797542333603f, 0.745447397232056f, 0.435609430074692f, - 0.745781481266022f, 0.435421019792557f, 0.746115326881409f, 0.435232400894165f, - 0.746449112892151f, 0.435043483972549f, 0.746782720088959f, 0.434854328632355f, - 0.747116148471832f, 0.434664934873581f, 0.747449457645416f, 0.434475272893906f, - 0.747782647609711f, 0.434285342693329f, 0.748115658760071f, 0.434095174074173f, - 0.748448550701141f, 0.433904737234116f, 0.748781263828278f, 0.433714061975479f, - 0.749113857746124f, 0.433523118495941f, 0.749446272850037f, 0.433331936597824f, - 0.749778568744659f, 0.433140486478806f, 0.750110685825348f, 0.432948768138886f, - 0.750442683696747f, 0.432756811380386f, 0.750774562358856f, 0.432564586400986f, - 0.751106262207031f, 0.432372123003006f, 0.751437783241272f, 0.432179391384125f, - 0.751769185066223f, 0.431986421346664f, 0.752100467681885f, 0.431793183088303f, - 0.752431571483612f, 0.431599706411362f, 0.752762496471405f, 0.431405961513519f, - 0.753093302249908f, 0.431211978197098f, 0.753423988819122f, 0.431017726659775f, - 0.753754496574402f, 0.430823236703873f, 0.754084885120392f, 0.430628478527069f, - 0.754415094852448f, 0.430433481931686f, 0.754745125770569f, 0.430238217115402f, - 0.755075037479401f, 0.430042684078217f, 0.755404829978943f, 0.429846942424774f, - 0.755734443664551f, 0.429650902748108f, 0.756063878536224f, 0.429454624652863f, - 0.756393194198608f, 0.429258108139038f, 0.756722390651703f, 0.429061323404312f, - 0.757051348686218f, 0.428864300251007f, 0.757380247116089f, 0.428667008876801f, - 0.757708966732025f, 0.428469479084015f, 0.758037507534027f, 0.428271710872650f, - 0.758365929126740f, 0.428073674440384f, 0.758694171905518f, 0.427875369787216f, - 0.759022235870361f, 0.427676826715469f, 0.759350180625916f, 0.427478045225143f, - 0.759678006172180f, 0.427278995513916f, 0.760005652904511f, 0.427079707384110f, - 0.760333120822906f, 0.426880151033401f, 0.760660469532013f, 0.426680356264114f, - 0.760987639427185f, 0.426480293273926f, 0.761314690113068f, 0.426279991865158f, - 0.761641561985016f, 0.426079452037811f, 0.761968255043030f, 0.425878643989563f, - 0.762294828891754f, 0.425677597522736f, 0.762621283531189f, 0.425476282835007f, - 0.762947499752045f, 0.425274729728699f, 0.763273596763611f, 0.425072938203812f, - 0.763599574565887f, 0.424870878458023f, 0.763925373554230f, 0.424668580293655f, - 0.764250993728638f, 0.424466013908386f, 0.764576494693756f, 0.424263238906860f, - 0.764901816844940f, 0.424060165882111f, 0.765226960182190f, 0.423856884241104f, - 0.765551984310150f, 0.423653304576874f, 0.765876889228821f, 0.423449516296387f, - 0.766201555728912f, 0.423245459794998f, 0.766526103019714f, 0.423041164875031f, - 0.766850471496582f, 0.422836631536484f, 0.767174720764160f, 0.422631829977036f, - 0.767498791217804f, 0.422426789999008f, 0.767822742462158f, 0.422221481800079f, - 0.768146514892578f, 0.422015935182571f, 0.768470108509064f, 0.421810150146484f, - 0.768793523311615f, 0.421604126691818f, 0.769116818904877f, 0.421397835016251f, - 0.769439935684204f, 0.421191304922104f, 0.769762933254242f, 0.420984506607056f, - 0.770085752010345f, 0.420777499675751f, 0.770408391952515f, 0.420570224523544f, - 0.770730912685394f, 0.420362681150436f, 0.771053194999695f, 0.420154929161072f, - 0.771375417709351f, 0.419946908950806f, 0.771697402000427f, 0.419738620519638f, - 0.772019267082214f, 0.419530123472214f, 0.772340953350067f, 0.419321358203888f, - 0.772662520408630f, 0.419112354516983f, 0.772983849048615f, 0.418903112411499f, - 0.773305058479309f, 0.418693602085114f, 0.773626148700714f, 0.418483853340149f, - 0.773947000503540f, 0.418273866176605f, 0.774267733097076f, 0.418063640594482f, - 0.774588346481323f, 0.417853146791458f, 0.774908721446991f, 0.417642414569855f, - 0.775228977203369f, 0.417431443929672f, 0.775549054145813f, 0.417220205068588f, - 0.775869011878967f, 0.417008757591248f, 0.776188731193542f, 0.416797041893005f, - 0.776508331298828f, 0.416585087776184f, 0.776827812194824f, 0.416372895240784f, - 0.777147054672241f, 0.416160434484482f, 0.777466177940369f, 0.415947735309601f, - 0.777785122394562f, 0.415734797716141f, 0.778103888034821f, 0.415521621704102f, - 0.778422534465790f, 0.415308207273483f, 0.778741002082825f, 0.415094524621964f, - 0.779059290885925f, 0.414880603551865f, 0.779377400875092f, 0.414666473865509f, - 0.779695332050323f, 0.414452046155930f, 0.780013144016266f, 0.414237409830093f, - 0.780330777168274f, 0.414022535085678f, 0.780648231506348f, 0.413807392120361f, - 0.780965566635132f, 0.413592010736465f, 0.781282722949982f, 0.413376390933990f, - 0.781599700450897f, 0.413160532712936f, 0.781916499137878f, 0.412944436073303f, - 0.782233119010925f, 0.412728071212769f, 0.782549619674683f, 0.412511497735977f, - 0.782865881919861f, 0.412294656038284f, 0.783182024955750f, 0.412077575922012f, - 0.783498048782349f, 0.411860257387161f, 0.783813834190369f, 0.411642700433731f, - 0.784129500389099f, 0.411424905061722f, 0.784444928169250f, 0.411206841468811f, - 0.784760236740112f, 0.410988569259644f, 0.785075426101685f, 0.410770028829575f, - 0.785390377044678f, 0.410551249980927f, 0.785705149173737f, 0.410332232713699f, - 0.786019802093506f, 0.410112977027893f, 0.786334276199341f, 0.409893482923508f, - 0.786648571491241f, 0.409673750400543f, 0.786962687969208f, 0.409453779459000f, - 0.787276685237885f, 0.409233570098877f, 0.787590444087982f, 0.409013092517853f, - 0.787904083728790f, 0.408792406320572f, 0.788217544555664f, 0.408571451902390f, - 0.788530826568604f, 0.408350288867950f, 0.788843929767609f, 0.408128857612610f, - 0.789156913757324f, 0.407907217741013f, 0.789469659328461f, 0.407685309648514f, - 0.789782285690308f, 0.407463163137436f, 0.790094733238220f, 0.407240778207779f, - 0.790407001972198f, 0.407018154859543f, 0.790719091892242f, 0.406795293092728f, - 0.791031002998352f, 0.406572192907333f, 0.791342735290527f, 0.406348884105682f, - 0.791654348373413f, 0.406125307083130f, 0.791965723037720f, 0.405901491641998f, - 0.792276978492737f, 0.405677437782288f, 0.792588055133820f, 0.405453115701675f, - 0.792898952960968f, 0.405228585004807f, 0.793209671974182f, 0.405003815889359f, - 0.793520212173462f, 0.404778808355331f, 0.793830573558807f, 0.404553562402725f, - 0.794140756130219f, 0.404328078031540f, 0.794450819492340f, 0.404102355241776f, - 0.794760644435883f, 0.403876423835754f, 0.795070350170136f, 0.403650224208832f, - 0.795379877090454f, 0.403423786163330f, 0.795689165592194f, 0.403197109699249f, - 0.795998334884644f, 0.402970194816589f, 0.796307325363159f, 0.402743041515350f, - 0.796616137027740f, 0.402515679597855f, 0.796924769878387f, 0.402288049459457f, - 0.797233223915100f, 0.402060180902481f, 0.797541558742523f, 0.401832103729248f, - 0.797849655151367f, 0.401603758335114f, 0.798157572746277f, 0.401375204324722f, - 0.798465371131897f, 0.401146411895752f, 0.798772931098938f, 0.400917351245880f, - 0.799080371856689f, 0.400688081979752f, 0.799387574195862f, 0.400458574295044f, - 0.799694657325745f, 0.400228828191757f, 0.800001561641693f, 0.399998843669891f, - 0.800308227539063f, 0.399768620729446f, 0.800614774227142f, 0.399538189172745f, - 0.800921142101288f, 0.399307489395142f, 0.801227271556854f, 0.399076581001282f, - 0.801533281803131f, 0.398845434188843f, 0.801839113235474f, 0.398614019155502f, - 0.802144765853882f, 0.398382395505905f, 0.802450239658356f, 0.398150533437729f, - 0.802755534648895f, 0.397918462753296f, 0.803060650825500f, 0.397686123847961f, - 0.803365588188171f, 0.397453576326370f, 0.803670346736908f, 0.397220760583878f, - 0.803974866867065f, 0.396987736225128f, 0.804279267787933f, 0.396754473447800f, - 0.804583489894867f, 0.396520972251892f, 0.804887533187866f, 0.396287262439728f, - 0.805191397666931f, 0.396053284406662f, 0.805495083332062f, 0.395819097757339f, - 0.805798590183258f, 0.395584672689438f, 0.806101918220520f, 0.395350009202957f, - 0.806405067443848f, 0.395115107297897f, 0.806707978248596f, 0.394879996776581f, - 0.807010769844055f, 0.394644618034363f, 0.807313382625580f, 0.394409030675888f, - 0.807615816593170f, 0.394173204898834f, 0.807918012142181f, 0.393937170505524f, - 0.808220088481903f, 0.393700867891312f, 0.808521986007690f, 0.393464356660843f, - 0.808823645114899f, 0.393227607011795f, 0.809125185012817f, 0.392990618944168f, - 0.809426486492157f, 0.392753422260284f, 0.809727668762207f, 0.392515957355499f, - 0.810028612613678f, 0.392278283834457f, 0.810329377651215f, 0.392040401697159f, - 0.810629963874817f, 0.391802251338959f, 0.810930430889130f, 0.391563892364502f, - 0.811230659484863f, 0.391325294971466f, 0.811530709266663f, 0.391086459159851f, - 0.811830580234528f, 0.390847414731979f, 0.812130272388458f, 0.390608131885529f, - 0.812429726123810f, 0.390368610620499f, 0.812729060649872f, 0.390128880739212f, - 0.813028216362000f, 0.389888882637024f, 0.813327133655548f, 0.389648675918579f, - 0.813625931739807f, 0.389408260583878f, 0.813924491405487f, 0.389167606830597f, - 0.814222872257233f, 0.388926714658737f, 0.814521074295044f, 0.388685584068298f, - 0.814819097518921f, 0.388444244861603f, 0.815116941928864f, 0.388202667236328f, - 0.815414607524872f, 0.387960851192474f, 0.815712094306946f, 0.387718826532364f, - 0.816009342670441f, 0.387476563453674f, 0.816306471824646f, 0.387234061956406f, - 0.816603362560272f, 0.386991351842880f, 0.816900074481964f, 0.386748403310776f, - 0.817196667194366f, 0.386505216360092f, 0.817493021488190f, 0.386261820793152f, - 0.817789137363434f, 0.386018186807632f, 0.818085134029388f, 0.385774344205856f, - 0.818380951881409f, 0.385530263185501f, 0.818676531314850f, 0.385285943746567f, - 0.818971931934357f, 0.385041415691376f, 0.819267153739929f, 0.384796649217606f, - 0.819562196731567f, 0.384551674127579f, 0.819857060909271f, 0.384306460618973f, - 0.820151746273041f, 0.384061008691788f, 0.820446193218231f, 0.383815348148346f, - 0.820740520954132f, 0.383569449186325f, 0.821034610271454f, 0.383323341608047f, - 0.821328520774841f, 0.383076995611191f, 0.821622252464294f, 0.382830440998077f, - 0.821915745735168f, 0.382583618164063f, 0.822209119796753f, 0.382336616516113f, - 0.822502255439758f, 0.382089376449585f, 0.822795212268829f, 0.381841897964478f, - 0.823087990283966f, 0.381594210863113f, 0.823380589485168f, 0.381346285343170f, - 0.823673009872437f, 0.381098151206970f, 0.823965191841125f, 0.380849778652191f, - 0.824257194995880f, 0.380601197481155f, 0.824549019336700f, 0.380352377891541f, - 0.824840664863586f, 0.380103349685669f, 0.825132071971893f, 0.379854083061218f, - 0.825423359870911f, 0.379604607820511f, 0.825714409351349f, 0.379354894161224f, - 0.826005280017853f, 0.379104942083359f, 0.826295912265778f, 0.378854811191559f, - 0.826586425304413f, 0.378604412078857f, 0.826876699924469f, 0.378353834152222f, - 0.827166795730591f, 0.378102988004684f, 0.827456712722778f, 0.377851963043213f, - 0.827746450901031f, 0.377600699663162f, 0.828035950660706f, 0.377349197864532f, - 0.828325271606445f, 0.377097487449646f, 0.828614413738251f, 0.376845568418503f, - 0.828903317451477f, 0.376593410968781f, 0.829192101955414f, 0.376341015100479f, - 0.829480648040771f, 0.376088410615921f, 0.829769015312195f, 0.375835597515106f, - 0.830057144165039f, 0.375582575798035f, 0.830345153808594f, 0.375329315662384f, - 0.830632925033569f, 0.375075817108154f, 0.830920517444611f, 0.374822109937668f, - 0.831207871437073f, 0.374568194150925f, 0.831495106220245f, 0.374314039945602f, - 0.831782102584839f, 0.374059677124023f, 0.832068860530853f, 0.373805105686188f, - 0.832355499267578f, 0.373550295829773f, 0.832641899585724f, 0.373295277357101f, - 0.832928121089935f, 0.373040050268173f, 0.833214163780212f, 0.372784584760666f, - 0.833499968051910f, 0.372528880834579f, 0.833785593509674f, 0.372272998094559f, - 0.834071040153503f, 0.372016876935959f, 0.834356248378754f, 0.371760547161102f, - 0.834641277790070f, 0.371503978967667f, 0.834926128387451f, 0.371247202157974f, - 0.835210800170898f, 0.370990216732025f, 0.835495233535767f, 0.370732992887497f, - 0.835779488086700f, 0.370475560426712f, 0.836063504219055f, 0.370217919349670f, - 0.836347401142120f, 0.369960039854050f, 0.836631059646606f, 0.369701951742172f, - 0.836914479732513f, 0.369443655014038f, 0.837197780609131f, 0.369185149669647f, - 0.837480843067169f, 0.368926405906677f, 0.837763667106628f, 0.368667453527451f, - 0.838046371936798f, 0.368408292531967f, 0.838328838348389f, 0.368148893117905f, - 0.838611066341400f, 0.367889285087585f, 0.838893175125122f, 0.367629468441010f, - 0.839175045490265f, 0.367369443178177f, 0.839456677436829f, 0.367109179496765f, - 0.839738130569458f, 0.366848707199097f, 0.840019404888153f, 0.366588026285172f, - 0.840300500392914f, 0.366327136754990f, 0.840581357479095f, 0.366066008806229f, - 0.840862035751343f, 0.365804702043533f, 0.841142535209656f, 0.365543156862259f, - 0.841422796249390f, 0.365281373262405f, 0.841702818870544f, 0.365019410848618f, - 0.841982722282410f, 0.364757210016251f, 0.842262387275696f, 0.364494800567627f, - 0.842541813850403f, 0.364232182502747f, 0.842821121215820f, 0.363969355821610f, - 0.843100130558014f, 0.363706320524216f, 0.843379020690918f, 0.363443046808243f, - 0.843657672405243f, 0.363179564476013f, 0.843936145305634f, 0.362915903329849f, - 0.844214379787445f, 0.362651973962784f, 0.844492435455322f, 0.362387865781784f, - 0.844770252704620f, 0.362123548984528f, 0.845047891139984f, 0.361858993768692f, - 0.845325350761414f, 0.361594229936600f, 0.845602571964264f, 0.361329287290573f, - 0.845879614353180f, 0.361064106225967f, 0.846156477928162f, 0.360798716545105f, - 0.846433103084564f, 0.360533088445663f, 0.846709489822388f, 0.360267281532288f, - 0.846985757350922f, 0.360001266002655f, 0.847261726856232f, 0.359735012054443f, - 0.847537577152252f, 0.359468549489975f, 0.847813189029694f, 0.359201908111572f, - 0.848088562488556f, 0.358935028314590f, 0.848363757133484f, 0.358667939901352f, - 0.848638772964478f, 0.358400642871857f, 0.848913550376892f, 0.358133137226105f, - 0.849188148975372f, 0.357865422964096f, 0.849462509155273f, 0.357597470283508f, - 0.849736690521240f, 0.357329338788986f, 0.850010633468628f, 0.357060998678207f, - 0.850284397602081f, 0.356792420148849f, 0.850557923316956f, 0.356523662805557f, - 0.850831270217896f, 0.356254696846008f, 0.851104438304901f, 0.355985492467880f, - 0.851377367973328f, 0.355716109275818f, 0.851650118827820f, 0.355446487665176f, - 0.851922631263733f, 0.355176687240601f, 0.852194905281067f, 0.354906648397446f, - 0.852467060089111f, 0.354636400938034f, 0.852738916873932f, 0.354365974664688f, - 0.853010654449463f, 0.354095309972763f, 0.853282094001770f, 0.353824466466904f, - 0.853553414344788f, 0.353553384542465f, 0.853824436664581f, 0.353282123804092f, - 0.854095339775085f, 0.353010624647141f, 0.854365944862366f, 0.352738946676254f, - 0.854636430740356f, 0.352467030286789f, 0.854906618595123f, 0.352194935083389f, - 0.855176687240601f, 0.351922631263733f, 0.855446517467499f, 0.351650089025497f, - 0.855716109275818f, 0.351377367973328f, 0.855985522270203f, 0.351104438304901f, - 0.856254696846008f, 0.350831300020218f, 0.856523692607880f, 0.350557953119278f, - 0.856792449951172f, 0.350284397602081f, 0.857060968875885f, 0.350010633468628f, - 0.857329368591309f, 0.349736660718918f, 0.857597470283508f, 0.349462509155273f, - 0.857865393161774f, 0.349188119173050f, 0.858133137226105f, 0.348913550376892f, - 0.858400642871857f, 0.348638743162155f, 0.858667910099030f, 0.348363757133484f, - 0.858934998512268f, 0.348088562488556f, 0.859201908111572f, 0.347813159227371f, - 0.859468579292297f, 0.347537547349930f, 0.859735012054443f, 0.347261756658554f, - 0.860001266002655f, 0.346985727548599f, 0.860267281532288f, 0.346709519624710f, - 0.860533118247986f, 0.346433073282242f, 0.860798716545105f, 0.346156448125839f, - 0.861064076423645f, 0.345879614353180f, 0.861329257488251f, 0.345602601766586f, - 0.861594259738922f, 0.345325350761414f, 0.861859023571014f, 0.345047920942307f, - 0.862123548984528f, 0.344770282506943f, 0.862387895584106f, 0.344492435455322f, - 0.862652003765106f, 0.344214379787445f, 0.862915873527527f, 0.343936115503311f, - 0.863179564476013f, 0.343657672405243f, 0.863443076610565f, 0.343379020690918f, - 0.863706290721893f, 0.343100160360336f, 0.863969385623932f, 0.342821091413498f, - 0.864232182502747f, 0.342541843652725f, 0.864494800567627f, 0.342262357473373f, - 0.864757239818573f, 0.341982692480087f, 0.865019381046295f, 0.341702848672867f, - 0.865281403064728f, 0.341422766447067f, 0.865543127059937f, 0.341142505407333f, - 0.865804672241211f, 0.340862035751343f, 0.866066038608551f, 0.340581357479095f, - 0.866327106952667f, 0.340300500392914f, 0.866588056087494f, 0.340019434690475f, - 0.866848707199097f, 0.339738160371780f, 0.867109179496765f, 0.339456677436829f, - 0.867369413375854f, 0.339175015687943f, 0.867629468441010f, 0.338893145322800f, - 0.867889285087585f, 0.338611096143723f, 0.868148922920227f, 0.338328808546066f, - 0.868408262729645f, 0.338046342134476f, 0.868667483329773f, 0.337763696908951f, - 0.868926405906677f, 0.337480813264847f, 0.869185149669647f, 0.337197750806808f, - 0.869443655014038f, 0.336914509534836f, 0.869701981544495f, 0.336631029844284f, - 0.869960069656372f, 0.336347371339798f, 0.870217919349670f, 0.336063534021378f, - 0.870475590229034f, 0.335779488086700f, 0.870733022689819f, 0.335495233535767f, - 0.870990216732025f, 0.335210770368576f, 0.871247172355652f, 0.334926128387451f, - 0.871503949165344f, 0.334641307592392f, 0.871760547161102f, 0.334356248378754f, - 0.872016847133636f, 0.334071010351181f, 0.872272968292236f, 0.333785593509674f, - 0.872528910636902f, 0.333499968051910f, 0.872784554958344f, 0.333214133977890f, - 0.873040020465851f, 0.332928121089935f, 0.873295307159424f, 0.332641899585724f, - 0.873550295829773f, 0.332355499267578f, 0.873805105686188f, 0.332068890333176f, - 0.874059677124023f, 0.331782072782516f, 0.874314069747925f, 0.331495076417923f, - 0.874568223953247f, 0.331207901239395f, 0.874822139739990f, 0.330920487642288f, - 0.875075817108154f, 0.330632925033569f, 0.875329315662384f, 0.330345153808594f, - 0.875582575798035f, 0.330057173967361f, 0.875835597515106f, 0.329769015312195f, - 0.876088440418243f, 0.329480648040771f, 0.876341044902802f, 0.329192101955414f, - 0.876593410968781f, 0.328903347253799f, 0.876845538616180f, 0.328614413738251f, - 0.877097487449646f, 0.328325271606445f, 0.877349197864532f, 0.328035950660706f, - 0.877600669860840f, 0.327746421098709f, 0.877851963043213f, 0.327456712722778f, - 0.878103017807007f, 0.327166795730591f, 0.878353834152222f, 0.326876699924469f, - 0.878604412078857f, 0.326586425304413f, 0.878854811191559f, 0.326295942068100f, - 0.879104971885681f, 0.326005280017853f, 0.879354894161224f, 0.325714409351349f, - 0.879604578018188f, 0.325423330068588f, 0.879854083061218f, 0.325132101774216f, - 0.880103349685669f, 0.324840664863586f, 0.880352377891541f, 0.324549019336700f, - 0.880601167678833f, 0.324257194995880f, 0.880849778652191f, 0.323965191841125f, - 0.881098151206970f, 0.323672980070114f, 0.881346285343170f, 0.323380589485168f, - 0.881594181060791f, 0.323088020086288f, 0.881841897964478f, 0.322795242071152f, - 0.882089376449585f, 0.322502255439758f, 0.882336616516113f, 0.322209119796753f, - 0.882583618164063f, 0.321915775537491f, 0.882830440998077f, 0.321622252464294f, - 0.883076965808868f, 0.321328520774841f, 0.883323311805725f, 0.321034610271454f, - 0.883569478988647f, 0.320740520954132f, 0.883815348148346f, 0.320446223020554f, - 0.884061038494110f, 0.320151746273041f, 0.884306430816650f, 0.319857090711594f, - 0.884551644325256f, 0.319562226533890f, 0.884796679019928f, 0.319267183542252f, - 0.885041415691376f, 0.318971961736679f, 0.885285973548889f, 0.318676531314850f, - 0.885530233383179f, 0.318380922079086f, 0.885774314403534f, 0.318085134029388f, - 0.886018216609955f, 0.317789167165756f, 0.886261820793152f, 0.317492991685867f, - 0.886505246162415f, 0.317196637392044f, 0.886748373508453f, 0.316900104284287f, - 0.886991322040558f, 0.316603392362595f, 0.887234091758728f, 0.316306471824646f, - 0.887476563453674f, 0.316009372472763f, 0.887718796730042f, 0.315712094306946f, - 0.887960851192474f, 0.315414607524872f, 0.888202667236328f, 0.315116971731186f, - 0.888444244861603f, 0.314819127321243f, 0.888685584068298f, 0.314521104097366f, - 0.888926684856415f, 0.314222872257233f, 0.889167606830597f, 0.313924491405487f, - 0.889408230781555f, 0.313625901937485f, 0.889648675918579f, 0.313327133655548f, - 0.889888882637024f, 0.313028186559677f, 0.890128850936890f, 0.312729060649872f, - 0.890368640422821f, 0.312429755926132f, 0.890608131885529f, 0.312130242586136f, - 0.890847444534302f, 0.311830550432205f, 0.891086459159851f, 0.311530679464340f, - 0.891325294971466f, 0.311230629682541f, 0.891563892364502f, 0.310930401086807f, - 0.891802251338959f, 0.310629993677139f, 0.892040371894836f, 0.310329377651215f, - 0.892278313636780f, 0.310028612613678f, 0.892515957355499f, 0.309727638959885f, - 0.892753422260284f, 0.309426486492157f, 0.892990648746490f, 0.309125155210495f, - 0.893227577209473f, 0.308823645114899f, 0.893464326858521f, 0.308521956205368f, - 0.893700897693634f, 0.308220088481903f, 0.893937170505524f, 0.307918041944504f, - 0.894173204898834f, 0.307615786790848f, 0.894409060478210f, 0.307313382625580f, - 0.894644618034363f, 0.307010769844055f, 0.894879996776581f, 0.306708008050919f, - 0.895115137100220f, 0.306405037641525f, 0.895349979400635f, 0.306101888418198f, - 0.895584642887115f, 0.305798590183258f, 0.895819067955017f, 0.305495083332062f, - 0.896053314208984f, 0.305191397666931f, 0.896287262439728f, 0.304887533187866f, - 0.896520972251892f, 0.304583519697189f, 0.896754503250122f, 0.304279297590256f, - 0.896987736225128f, 0.303974896669388f, 0.897220790386200f, 0.303670316934586f, - 0.897453546524048f, 0.303365558385849f, 0.897686123847961f, 0.303060621023178f, - 0.897918462753296f, 0.302755534648895f, 0.898150563240051f, 0.302450239658356f, - 0.898382425308228f, 0.302144765853882f, 0.898614048957825f, 0.301839113235474f, - 0.898845434188843f, 0.301533311605453f, 0.899076581001282f, 0.301227301359177f, - 0.899307489395142f, 0.300921112298965f, 0.899538159370422f, 0.300614774227142f, - 0.899768650531769f, 0.300308227539063f, 0.899998843669891f, 0.300001531839371f, - 0.900228857994080f, 0.299694657325745f, 0.900458574295044f, 0.299387603998184f, - 0.900688111782074f, 0.299080342054367f, 0.900917351245880f, 0.298772931098938f, - 0.901146411895752f, 0.298465341329575f, 0.901375174522400f, 0.298157602548599f, - 0.901603758335114f, 0.297849655151367f, 0.901832103729248f, 0.297541528940201f, - 0.902060210704803f, 0.297233253717422f, 0.902288019657135f, 0.296924799680710f, - 0.902515649795532f, 0.296616137027740f, 0.902743041515350f, 0.296307325363159f, - 0.902970194816589f, 0.295998334884644f, 0.903197109699249f, 0.295689195394516f, - 0.903423786163330f, 0.295379847288132f, 0.903650224208832f, 0.295070350170136f, - 0.903876423835754f, 0.294760644435883f, 0.904102385044098f, 0.294450789690018f, - 0.904328107833862f, 0.294140785932541f, 0.904553592205048f, 0.293830573558807f, - 0.904778838157654f, 0.293520182371140f, 0.905003845691681f, 0.293209642171860f, - 0.905228614807129f, 0.292898923158646f, 0.905453145503998f, 0.292588025331497f, - 0.905677437782288f, 0.292276978492737f, 0.905901491641998f, 0.291965723037720f, - 0.906125307083130f, 0.291654318571091f, 0.906348884105682f, 0.291342735290527f, - 0.906572222709656f, 0.291031002998352f, 0.906795322895050f, 0.290719062089920f, - 0.907018184661865f, 0.290406972169876f, 0.907240808010101f, 0.290094703435898f, - 0.907463192939758f, 0.289782285690308f, 0.907685279846191f, 0.289469659328461f, - 0.907907187938690f, 0.289156883955002f, 0.908128857612610f, 0.288843959569931f, - 0.908350288867950f, 0.288530826568604f, 0.908571481704712f, 0.288217544555664f, - 0.908792436122894f, 0.287904083728790f, 0.909013092517853f, 0.287590473890305f, - 0.909233570098877f, 0.287276685237885f, 0.909453809261322f, 0.286962717771530f, - 0.909673750400543f, 0.286648571491241f, 0.909893512725830f, 0.286334276199341f, - 0.910112977027893f, 0.286019802093506f, 0.910332262516022f, 0.285705178976059f, - 0.910551249980927f, 0.285390377044678f, 0.910769999027252f, 0.285075396299362f, - 0.910988569259644f, 0.284760266542435f, 0.911206841468811f, 0.284444957971573f, - 0.911424875259399f, 0.284129470586777f, 0.911642670631409f, 0.283813834190369f, - 0.911860227584839f, 0.283498018980026f, 0.912077546119690f, 0.283182054758072f, - 0.912294626235962f, 0.282865911722183f, 0.912511467933655f, 0.282549589872360f, - 0.912728071212769f, 0.282233119010925f, 0.912944436073303f, 0.281916469335556f, - 0.913160502910614f, 0.281599670648575f, 0.913376390933990f, 0.281282693147659f, - 0.913592040538788f, 0.280965566635132f, 0.913807392120361f, 0.280648261308670f, - 0.914022505283356f, 0.280330777168274f, 0.914237439632416f, 0.280013144016266f, - 0.914452075958252f, 0.279695361852646f, 0.914666473865509f, 0.279377400875092f, - 0.914880633354187f, 0.279059261083603f, 0.915094554424286f, 0.278740972280502f, - 0.915308177471161f, 0.278422504663467f, 0.915521621704102f, 0.278103888034821f, - 0.915734827518463f, 0.277785122394562f, 0.915947735309601f, 0.277466177940369f, - 0.916160404682159f, 0.277147054672241f, 0.916372895240784f, 0.276827782392502f, - 0.916585087776184f, 0.276508361101151f, 0.916797041893005f, 0.276188760995865f, - 0.917008757591248f, 0.275868982076645f, 0.917220234870911f, 0.275549083948135f, - 0.917431414127350f, 0.275228977203369f, 0.917642414569855f, 0.274908751249313f, - 0.917853116989136f, 0.274588316679001f, 0.918063640594482f, 0.274267762899399f, - 0.918273866176605f, 0.273947030305862f, 0.918483853340149f, 0.273626148700714f, - 0.918693602085114f, 0.273305088281631f, 0.918903112411499f, 0.272983878850937f, - 0.919112324714661f, 0.272662490606308f, 0.919321358203888f, 0.272340953350067f, - 0.919530093669891f, 0.272019267082214f, 0.919738650321960f, 0.271697402000427f, - 0.919946908950806f, 0.271375387907028f, 0.920154929161072f, 0.271053224802017f, - 0.920362710952759f, 0.270730882883072f, 0.920570194721222f, 0.270408391952515f, - 0.920777499675751f, 0.270085722208023f, 0.920984506607056f, 0.269762933254242f, - 0.921191275119781f, 0.269439965486526f, 0.921397805213928f, 0.269116818904877f, - 0.921604096889496f, 0.268793523311615f, 0.921810150146484f, 0.268470078706741f, - 0.922015964984894f, 0.268146485090256f, 0.922221481800079f, 0.267822742462158f, - 0.922426760196686f, 0.267498821020126f, 0.922631800174713f, 0.267174720764160f, - 0.922836601734161f, 0.266850501298904f, 0.923041164875031f, 0.266526103019714f, - 0.923245489597321f, 0.266201555728912f, 0.923449516296387f, 0.265876859426498f, - 0.923653304576874f, 0.265552014112473f, 0.923856854438782f, 0.265226989984512f, - 0.924060165882111f, 0.264901816844940f, 0.924263238906860f, 0.264576494693756f, - 0.924466013908386f, 0.264250993728638f, 0.924668610095978f, 0.263925373554230f, - 0.924870908260345f, 0.263599574565887f, 0.925072908401489f, 0.263273626565933f, - 0.925274729728699f, 0.262947499752045f, 0.925476312637329f, 0.262621253728867f, - 0.925677597522736f, 0.262294828891754f, 0.925878643989563f, 0.261968284845352f, - 0.926079452037811f, 0.261641561985016f, 0.926280021667480f, 0.261314690113068f, - 0.926480293273926f, 0.260987639427185f, 0.926680326461792f, 0.260660469532013f, - 0.926880121231079f, 0.260333120822906f, 0.927079677581787f, 0.260005623102188f, - 0.927278995513916f, 0.259678006172180f, 0.927478015422821f, 0.259350210428238f, - 0.927676856517792f, 0.259022265672684f, 0.927875399589539f, 0.258694142103195f, - 0.928073644638062f, 0.258365899324417f, 0.928271710872650f, 0.258037507534027f, - 0.928469479084015f, 0.257708936929703f, 0.928667008876801f, 0.257380217313766f, - 0.928864300251007f, 0.257051378488541f, 0.929061353206635f, 0.256722360849380f, - 0.929258108139038f, 0.256393194198608f, 0.929454624652863f, 0.256063878536224f, - 0.929650902748108f, 0.255734413862228f, 0.929846942424774f, 0.255404800176620f, - 0.930042684078217f, 0.255075037479401f, 0.930238187313080f, 0.254745125770569f, - 0.930433452129364f, 0.254415065050125f, 0.930628478527069f, 0.254084855318069f, - 0.930823206901550f, 0.253754496574402f, 0.931017756462097f, 0.253423988819122f, - 0.931211948394775f, 0.253093332052231f, 0.931405961513519f, 0.252762526273727f, - 0.931599736213684f, 0.252431541681290f, 0.931793212890625f, 0.252100437879562f, - 0.931986451148987f, 0.251769185066223f, 0.932179391384125f, 0.251437783241272f, - 0.932372152805328f, 0.251106232404709f, 0.932564616203308f, 0.250774532556534f, - 0.932756841182709f, 0.250442683696747f, 0.932948768138886f, 0.250110685825348f, - 0.933140456676483f, 0.249778553843498f, 0.933331906795502f, 0.249446272850037f, - 0.933523118495941f, 0.249113827943802f, 0.933714091777802f, 0.248781248927116f, - 0.933904767036438f, 0.248448520898819f, 0.934095203876495f, 0.248115643858910f, - 0.934285342693329f, 0.247782632708550f, 0.934475243091583f, 0.247449472546577f, - 0.934664964675903f, 0.247116148471832f, 0.934854328632355f, 0.246782705187798f, - 0.935043513774872f, 0.246449097990990f, 0.935232400894165f, 0.246115356683731f, - 0.935421049594879f, 0.245781451463699f, 0.935609400272369f, 0.245447427034378f, - 0.935797572135925f, 0.245113238692284f, 0.935985386371613f, 0.244778916239738f, - 0.936173021793365f, 0.244444444775581f, 0.936360359191895f, 0.244109839200974f, - 0.936547517776489f, 0.243775084614754f, 0.936734318733215f, 0.243440181016922f, - 0.936920940876007f, 0.243105143308640f, 0.937107264995575f, 0.242769956588745f, - 0.937293350696564f, 0.242434620857239f, 0.937479138374329f, 0.242099151015282f, - 0.937664687633514f, 0.241763532161713f, 0.937849998474121f, 0.241427779197693f, - 0.938035070896149f, 0.241091892123222f, 0.938219845294952f, 0.240755841135979f, - 0.938404381275177f, 0.240419670939446f, 0.938588619232178f, 0.240083336830139f, - 0.938772618770599f, 0.239746883511543f, 0.938956379890442f, 0.239410281181335f, - 0.939139902591705f, 0.239073529839516f, 0.939323127269745f, 0.238736644387245f, - 0.939506113529205f, 0.238399609923363f, 0.939688861370087f, 0.238062441349030f, - 0.939871311187744f, 0.237725138664246f, 0.940053522586823f, 0.237387686967850f, - 0.940235435962677f, 0.237050101161003f, 0.940417110919952f, 0.236712381243706f, - 0.940598547458649f, 0.236374512314796f, 0.940779745578766f, 0.236036509275436f, - 0.940960645675659f, 0.235698372125626f, 0.941141307353973f, 0.235360085964203f, - 0.941321671009064f, 0.235021665692329f, 0.941501796245575f, 0.234683111310005f, - 0.941681683063507f, 0.234344407916069f, 0.941861271858215f, 0.234005570411682f, - 0.942040622234344f, 0.233666598796844f, 0.942219734191895f, 0.233327493071556f, - 0.942398548126221f, 0.232988253235817f, 0.942577123641968f, 0.232648864388466f, - 0.942755401134491f, 0.232309341430664f, 0.942933499813080f, 0.231969684362412f, - 0.943111240863800f, 0.231629893183708f, 0.943288803100586f, 0.231289967894554f, - 0.943466067314148f, 0.230949893593788f, 0.943643093109131f, 0.230609700083733f, - 0.943819820880890f, 0.230269357562065f, 0.943996310234070f, 0.229928880929947f, - 0.944172501564026f, 0.229588270187378f, 0.944348454475403f, 0.229247525334358f, - 0.944524168968201f, 0.228906646370888f, 0.944699645042419f, 0.228565633296967f, - 0.944874763488770f, 0.228224486112595f, 0.945049703121185f, 0.227883204817772f, - 0.945224344730377f, 0.227541789412498f, 0.945398747920990f, 0.227200239896774f, - 0.945572853088379f, 0.226858556270599f, 0.945746779441834f, 0.226516738533974f, - 0.945920348167419f, 0.226174786686897f, 0.946093678474426f, 0.225832715630531f, - 0.946266770362854f, 0.225490495562553f, 0.946439623832703f, 0.225148141384125f, - 0.946612179279327f, 0.224805667996407f, 0.946784436702728f, 0.224463045597076f, - 0.946956455707550f, 0.224120303988457f, 0.947128236293793f, 0.223777428269386f, - 0.947299718856812f, 0.223434418439865f, 0.947470963001251f, 0.223091274499893f, - 0.947641968727112f, 0.222748011350632f, 0.947812676429749f, 0.222404599189758f, - 0.947983145713806f, 0.222061067819595f, 0.948153316974640f, 0.221717402338982f, - 0.948323249816895f, 0.221373617649078f, 0.948492884635925f, 0.221029683947563f, - 0.948662281036377f, 0.220685631036758f, 0.948831439018250f, 0.220341444015503f, - 0.949000298976898f, 0.219997137784958f, 0.949168920516968f, 0.219652697443962f, - 0.949337244033813f, 0.219308122992516f, 0.949505329132080f, 0.218963414430618f, - 0.949673116207123f, 0.218618586659431f, 0.949840664863586f, 0.218273624777794f, - 0.950007975101471f, 0.217928543686867f, 0.950174987316132f, 0.217583328485489f, - 0.950341701507568f, 0.217237979173660f, 0.950508177280426f, 0.216892510652542f, - 0.950674414634705f, 0.216546908020973f, 0.950840353965759f, 0.216201186180115f, - 0.951006054878235f, 0.215855330228806f, 0.951171517372131f, 0.215509355068207f, - 0.951336681842804f, 0.215163245797157f, 0.951501548290253f, 0.214817002415657f, - 0.951666176319122f, 0.214470639824867f, 0.951830565929413f, 0.214124158024788f, - 0.951994657516479f, 0.213777542114258f, 0.952158451080322f, 0.213430806994438f, - 0.952322065830231f, 0.213083937764168f, 0.952485322952271f, 0.212736949324608f, - 0.952648401260376f, 0.212389841675758f, 0.952811121940613f, 0.212042599916458f, - 0.952973663806915f, 0.211695238947868f, 0.953135907649994f, 0.211347743868828f, - 0.953297853469849f, 0.211000129580498f, 0.953459560871124f, 0.210652396082878f, - 0.953620970249176f, 0.210304543375969f, 0.953782141208649f, 0.209956556558609f, - 0.953943073749542f, 0.209608450531960f, 0.954103708267212f, 0.209260210394859f, - 0.954264044761658f, 0.208911851048470f, 0.954424142837524f, 0.208563387393951f, - 0.954584002494812f, 0.208214774727821f, 0.954743564128876f, 0.207866057753563f, - 0.954902827739716f, 0.207517206668854f, 0.955061912536621f, 0.207168251276016f, - 0.955220639705658f, 0.206819161772728f, 0.955379128456116f, 0.206469938158989f, - 0.955537378787994f, 0.206120610237122f, 0.955695331096649f, 0.205771163105965f, - 0.955853044986725f, 0.205421581864357f, 0.956010460853577f, 0.205071896314621f, - 0.956167578697205f, 0.204722076654434f, 0.956324458122253f, 0.204372137784958f, - 0.956481099128723f, 0.204022079706192f, 0.956637442111969f, 0.203671902418137f, - 0.956793546676636f, 0.203321605920792f, 0.956949353218079f, 0.202971190214157f, - 0.957104861736298f, 0.202620655298233f, 0.957260131835938f, 0.202270001173019f, - 0.957415163516998f, 0.201919227838516f, 0.957569897174835f, 0.201568335294724f, - 0.957724332809448f, 0.201217323541641f, 0.957878530025482f, 0.200866192579269f, - 0.958032488822937f, 0.200514942407608f, 0.958186149597168f, 0.200163587927818f, - 0.958339512348175f, 0.199812099337578f, 0.958492636680603f, 0.199460506439209f, - 0.958645522594452f, 0.199108779430389f, 0.958798050880432f, 0.198756948113441f, - 0.958950400352478f, 0.198404997587204f, 0.959102451801300f, 0.198052927851677f, - 0.959254205226898f, 0.197700738906860f, 0.959405720233917f, 0.197348430752754f, - 0.959556937217712f, 0.196996018290520f, 0.959707856178284f, 0.196643486618996f, - 0.959858596324921f, 0.196290835738182f, 0.960008978843689f, 0.195938065648079f, - 0.960159122943878f, 0.195585191249847f, 0.960309028625488f, 0.195232197642326f, - 0.960458636283875f, 0.194879084825516f, 0.960607945919037f, 0.194525867700577f, - 0.960757017135620f, 0.194172516465187f, 0.960905790328979f, 0.193819075822830f, - 0.961054325103760f, 0.193465501070023f, 0.961202561855316f, 0.193111822009087f, - 0.961350560188293f, 0.192758023738861f, 0.961498260498047f, 0.192404121160507f, - 0.961645722389221f, 0.192050099372864f, 0.961792886257172f, 0.191695958375931f, - 0.961939752101898f, 0.191341713070869f, 0.962086379528046f, 0.190987363457680f, - 0.962232708930969f, 0.190632879734039f, 0.962378799915314f, 0.190278306603432f, - 0.962524592876434f, 0.189923599362373f, 0.962670147418976f, 0.189568802714348f, - 0.962815403938293f, 0.189213871955872f, 0.962960422039032f, 0.188858851790428f, - 0.963105142116547f, 0.188503712415695f, 0.963249564170837f, 0.188148453831673f, - 0.963393747806549f, 0.187793090939522f, 0.963537633419037f, 0.187437608838081f, - 0.963681280612946f, 0.187082037329674f, 0.963824629783630f, 0.186726331710815f, - 0.963967680931091f, 0.186370536684990f, 0.964110493659973f, 0.186014622449875f, - 0.964253067970276f, 0.185658603906631f, 0.964395284652710f, 0.185302466154099f, - 0.964537262916565f, 0.184946224093437f, 0.964679002761841f, 0.184589877724648f, - 0.964820444583893f, 0.184233412146568f, 0.964961588382721f, 0.183876842260361f, - 0.965102493762970f, 0.183520168066025f, 0.965243160724640f, 0.183163389563560f, - 0.965383470058441f, 0.182806491851807f, 0.965523540973663f, 0.182449504733086f, - 0.965663373470306f, 0.182092398405075f, 0.965802907943726f, 0.181735187768936f, - 0.965942144393921f, 0.181377857923508f, 0.966081082820892f, 0.181020438671112f, - 0.966219842433929f, 0.180662900209427f, 0.966358244419098f, 0.180305257439613f, - 0.966496407985687f, 0.179947525262833f, 0.966634273529053f, 0.179589673876762f, - 0.966771900653839f, 0.179231703281403f, 0.966909229755402f, 0.178873643279076f, - 0.967046260833740f, 0.178515478968620f, 0.967183053493500f, 0.178157210350037f, - 0.967319548130035f, 0.177798837423325f, 0.967455804347992f, 0.177440345287323f, - 0.967591762542725f, 0.177081763744354f, 0.967727422714233f, 0.176723077893257f, - 0.967862844467163f, 0.176364272832870f, 0.967997968196869f, 0.176005378365517f, - 0.968132853507996f, 0.175646379590034f, 0.968267440795898f, 0.175287276506424f, - 0.968401730060577f, 0.174928069114685f, 0.968535780906677f, 0.174568757414818f, - 0.968669533729553f, 0.174209341406822f, 0.968802988529205f, 0.173849821090698f, - 0.968936204910278f, 0.173490211367607f, 0.969069123268127f, 0.173130482435226f, - 0.969201743602753f, 0.172770664095879f, 0.969334125518799f, 0.172410741448402f, - 0.969466269016266f, 0.172050714492798f, 0.969598054885864f, 0.171690583229065f, - 0.969729602336884f, 0.171330362558365f, 0.969860911369324f, 0.170970037579536f, - 0.969991862773895f, 0.170609608292580f, 0.970122575759888f, 0.170249074697495f, - 0.970253050327301f, 0.169888436794281f, 0.970383226871490f, 0.169527709484100f, - 0.970513105392456f, 0.169166877865791f, 0.970642685890198f, 0.168805956840515f, - 0.970772027969360f, 0.168444931507111f, 0.970901072025299f, 0.168083801865578f, - 0.971029877662659f, 0.167722567915916f, 0.971158385276794f, 0.167361244559288f, - 0.971286594867706f, 0.166999831795692f, 0.971414566040039f, 0.166638299822807f, - 0.971542239189148f, 0.166276678442955f, 0.971669614315033f, 0.165914967656136f, - 0.971796751022339f, 0.165553152561188f, 0.971923589706421f, 0.165191248059273f, - 0.972050130367279f, 0.164829224348068f, 0.972176432609558f, 0.164467126131058f, - 0.972302436828613f, 0.164104923605919f, 0.972428143024445f, 0.163742616772652f, - 0.972553610801697f, 0.163380220532417f, 0.972678780555725f, 0.163017734885216f, - 0.972803652286530f, 0.162655144929886f, 0.972928285598755f, 0.162292465567589f, - 0.973052620887756f, 0.161929681897163f, 0.973176658153534f, 0.161566808819771f, - 0.973300457000732f, 0.161203846335411f, 0.973423957824707f, 0.160840779542923f, - 0.973547160625458f, 0.160477623343468f, 0.973670125007629f, 0.160114362835884f, - 0.973792791366577f, 0.159751012921333f, 0.973915159702301f, 0.159387573599815f, - 0.974037289619446f, 0.159024044871330f, 0.974159121513367f, 0.158660411834717f, - 0.974280655384064f, 0.158296689391136f, 0.974401950836182f, 0.157932877540588f, - 0.974522948265076f, 0.157568961381912f, 0.974643647670746f, 0.157204970717430f, - 0.974764108657837f, 0.156840875744820f, 0.974884271621704f, 0.156476691365242f, - 0.975004136562347f, 0.156112402677536f, 0.975123703479767f, 0.155748039484024f, - 0.975243031978607f, 0.155383571982384f, 0.975362062454224f, 0.155019029974937f, - 0.975480854511261f, 0.154654383659363f, 0.975599288940430f, 0.154289647936821f, - 0.975717484951019f, 0.153924822807312f, 0.975835442543030f, 0.153559908270836f, - 0.975953042507172f, 0.153194904327393f, 0.976070404052734f, 0.152829796075821f, - 0.976187527179718f, 0.152464613318443f, 0.976304292678833f, 0.152099341154099f, - 0.976420819759369f, 0.151733979582787f, 0.976537048816681f, 0.151368513703346f, - 0.976653039455414f, 0.151002973318100f, 0.976768672466278f, 0.150637343525887f, - 0.976884067058563f, 0.150271624326706f, 0.976999223232269f, 0.149905815720558f, - 0.977114021778107f, 0.149539917707443f, 0.977228581905365f, 0.149173930287361f, - 0.977342903614044f, 0.148807853460312f, 0.977456867694855f, 0.148441687226295f, - 0.977570593357086f, 0.148075446486473f, 0.977684020996094f, 0.147709101438522f, - 0.977797150611877f, 0.147342681884766f, 0.977910041809082f, 0.146976172924042f, - 0.978022634983063f, 0.146609574556351f, 0.978134930133820f, 0.146242901682854f, - 0.978246986865997f, 0.145876124501228f, 0.978358685970306f, 0.145509272813797f, - 0.978470146656036f, 0.145142331719399f, 0.978581368923187f, 0.144775316119194f, - 0.978692233562469f, 0.144408211112022f, 0.978802859783173f, 0.144041016697884f, - 0.978913187980652f, 0.143673732876778f, 0.979023277759552f, 0.143306359648705f, - 0.979133009910584f, 0.142938911914825f, 0.979242503643036f, 0.142571389675140f, - 0.979351758956909f, 0.142203763127327f, 0.979460656642914f, 0.141836062073708f, - 0.979569315910339f, 0.141468286514282f, 0.979677677154541f, 0.141100421547890f, - 0.979785740375519f, 0.140732467174530f, 0.979893565177917f, 0.140364438295364f, - 0.980001091957092f, 0.139996320009232f, 0.980108320713043f, 0.139628127217293f, - 0.980215251445770f, 0.139259845018387f, 0.980321943759918f, 0.138891488313675f, - 0.980428338050842f, 0.138523042201996f, 0.980534434318542f, 0.138154521584511f, - 0.980640232563019f, 0.137785911560059f, 0.980745792388916f, 0.137417227029800f, - 0.980851054191589f, 0.137048453092575f, 0.980956017971039f, 0.136679604649544f, - 0.981060683727264f, 0.136310681700706f, 0.981165111064911f, 0.135941669344902f, - 0.981269240379334f, 0.135572582483292f, 0.981373071670532f, 0.135203406214714f, - 0.981476604938507f, 0.134834155440331f, 0.981579899787903f, 0.134464830160141f, - 0.981682896614075f, 0.134095430374146f, 0.981785595417023f, 0.133725941181183f, - 0.981888055801392f, 0.133356377482414f, 0.981990158557892f, 0.132986739277840f, - 0.982092022895813f, 0.132617011666298f, 0.982193589210510f, 0.132247209548950f, - 0.982294917106628f, 0.131877332925797f, 0.982395887374878f, 0.131507381796837f, - 0.982496619224548f, 0.131137356162071f, 0.982597053050995f, 0.130767241120338f, - 0.982697248458862f, 0.130397051572800f, 0.982797086238861f, 0.130026802420616f, - 0.982896685600281f, 0.129656463861465f, 0.982995986938477f, 0.129286035895348f, - 0.983094990253448f, 0.128915548324585f, 0.983193755149841f, 0.128544986248016f, - 0.983292162418365f, 0.128174334764481f, 0.983390331268311f, 0.127803623676300f, - 0.983488261699677f, 0.127432823181152f, 0.983585834503174f, 0.127061963081360f, - 0.983683168888092f, 0.126691013574600f, 0.983780145645142f, 0.126320004463196f, - 0.983876943588257f, 0.125948905944824f, 0.983973383903503f, 0.125577747821808f, - 0.984069526195526f, 0.125206500291824f, 0.984165430068970f, 0.124835193157196f, - 0.984261035919189f, 0.124463804066181f, 0.984356343746185f, 0.124092340469360f, - 0.984451413154602f, 0.123720809817314f, 0.984546124935150f, 0.123349204659462f, - 0.984640598297119f, 0.122977524995804f, 0.984734773635864f, 0.122605770826340f, - 0.984828710556030f, 0.122233949601650f, 0.984922289848328f, 0.121862053871155f, - 0.985015630722046f, 0.121490091085434f, 0.985108673572540f, 0.121118053793907f, - 0.985201418399811f, 0.120745941996574f, 0.985293865203857f, 0.120373763144016f, - 0.985386073589325f, 0.120001509785652f, 0.985477983951569f, 0.119629189372063f, - 0.985569596290588f, 0.119256794452667f, 0.985660910606384f, 0.118884332478046f, - 0.985751926898956f, 0.118511803448200f, 0.985842704772949f, 0.118139199912548f, - 0.985933184623718f, 0.117766529321671f, 0.986023366451263f, 0.117393791675568f, - 0.986113250255585f, 0.117020979523659f, 0.986202836036682f, 0.116648100316525f, - 0.986292183399200f, 0.116275154054165f, 0.986381232738495f, 0.115902140736580f, - 0.986469984054565f, 0.115529052913189f, 0.986558437347412f, 0.115155905485153f, - 0.986646652221680f, 0.114782683551311f, 0.986734509468079f, 0.114409394562244f, - 0.986822128295898f, 0.114036038517952f, 0.986909449100494f, 0.113662622869015f, - 0.986996471881866f, 0.113289132714272f, 0.987083256244659f, 0.112915575504303f, - 0.987169682979584f, 0.112541958689690f, 0.987255871295929f, 0.112168267369270f, - 0.987341761589050f, 0.111794516444206f, 0.987427353858948f, 0.111420698463917f, - 0.987512648105621f, 0.111046813428402f, 0.987597703933716f, 0.110672861337662f, - 0.987682461738586f, 0.110298842191696f, 0.987766921520233f, 0.109924763441086f, - 0.987851083278656f, 0.109550617635250f, 0.987934947013855f, 0.109176412224770f, - 0.988018512725830f, 0.108802139759064f, 0.988101840019226f, 0.108427800238132f, - 0.988184869289398f, 0.108053401112556f, 0.988267600536346f, 0.107678934931755f, - 0.988350033760071f, 0.107304409146309f, 0.988432228565216f, 0.106929816305637f, - 0.988514065742493f, 0.106555156409740f, 0.988595664501190f, 0.106180444359779f, - 0.988676965236664f, 0.105805665254593f, 0.988757967948914f, 0.105430819094181f, - 0.988838672637939f, 0.105055920779705f, 0.988919138908386f, 0.104680955410004f, - 0.988999247550964f, 0.104305922985077f, 0.989079117774963f, 0.103930838406086f, - 0.989158689975739f, 0.103555686771870f, 0.989237964153290f, 0.103180475533009f, - 0.989316940307617f, 0.102805204689503f, 0.989395678043365f, 0.102429874241352f, - 0.989474058151245f, 0.102054484188557f, 0.989552199840546f, 0.101679034531116f, - 0.989630043506622f, 0.101303517818451f, 0.989707589149475f, 0.100927948951721f, - 0.989784896373749f, 0.100552320480347f, 0.989861845970154f, 0.100176624953747f, - 0.989938557147980f, 0.099800877273083f, 0.990014970302582f, 0.099425069987774f, - 0.990091085433960f, 0.099049203097820f, 0.990166902542114f, 0.098673284053802f, - 0.990242421627045f, 0.098297297954559f, 0.990317702293396f, 0.097921259701252f, - 0.990392625331879f, 0.097545161843300f, 0.990467309951782f, 0.097169004380703f, - 0.990541696548462f, 0.096792794764042f, 0.990615785121918f, 0.096416525542736f, - 0.990689575672150f, 0.096040196716785f, 0.990763127803802f, 0.095663815736771f, - 0.990836322307587f, 0.095287375152111f, 0.990909278392792f, 0.094910882413387f, - 0.990981936454773f, 0.094534330070019f, 0.991054296493530f, 0.094157725572586f, - 0.991126358509064f, 0.093781061470509f, 0.991198182106018f, 0.093404345214367f, - 0.991269648075104f, 0.093027576804161f, 0.991340875625610f, 0.092650748789310f, - 0.991411805152893f, 0.092273868620396f, 0.991482377052307f, 0.091896936297417f, - 0.991552770137787f, 0.091519944369793f, 0.991622805595398f, 0.091142900288105f, - 0.991692543029785f, 0.090765804052353f, 0.991762042045593f, 0.090388655662537f, - 0.991831183433533f, 0.090011447668076f, 0.991900086402893f, 0.089634194970131f, - 0.991968691349030f, 0.089256882667542f, 0.992036998271942f, 0.088879525661469f, - 0.992105066776276f, 0.088502109050751f, 0.992172777652740f, 0.088124647736549f, - 0.992240250110626f, 0.087747126817703f, 0.992307364940643f, 0.087369553744793f, - 0.992374241352081f, 0.086991935968399f, 0.992440819740295f, 0.086614266037941f, - 0.992507100105286f, 0.086236543953419f, 0.992573142051697f, 0.085858769714832f, - 0.992638826370239f, 0.085480943322182f, 0.992704212665558f, 0.085103072226048f, - 0.992769360542297f, 0.084725148975849f, 0.992834210395813f, 0.084347173571587f, - 0.992898762226105f, 0.083969146013260f, 0.992963016033173f, 0.083591073751450f, - 0.993026971817017f, 0.083212949335575f, 0.993090689182281f, 0.082834780216217f, - 0.993154048919678f, 0.082456558942795f, 0.993217170238495f, 0.082078292965889f, - 0.993279933929443f, 0.081699974834919f, 0.993342459201813f, 0.081321612000465f, - 0.993404686450958f, 0.080943197011948f, 0.993466615676880f, 0.080564737319946f, - 0.993528306484222f, 0.080186225473881f, 0.993589639663696f, 0.079807676374912f, - 0.993650734424591f, 0.079429075121880f, 0.993711471557617f, 0.079050421714783f, - 0.993771970272064f, 0.078671731054783f, 0.993832170963287f, 0.078292988240719f, - 0.993892073631287f, 0.077914200723171f, 0.993951678276062f, 0.077535368502140f, - 0.994010984897614f, 0.077156484127045f, 0.994070053100586f, 0.076777562499046f, - 0.994128763675690f, 0.076398596167564f, 0.994187235832214f, 0.076019577682018f, - 0.994245409965515f, 0.075640521943569f, 0.994303286075592f, 0.075261414051056f, - 0.994360864162445f, 0.074882268905640f, 0.994418144226074f, 0.074503071606159f, - 0.994475126266479f, 0.074123837053776f, 0.994531810283661f, 0.073744557797909f, - 0.994588255882263f, 0.073365233838558f, 0.994644403457642f, 0.072985872626305f, - 0.994700193405151f, 0.072606459259987f, 0.994755744934082f, 0.072227008640766f, - 0.994810998439789f, 0.071847513318062f, 0.994865953922272f, 0.071467980742455f, - 0.994920611381531f, 0.071088403463364f, 0.994975030422211f, 0.070708781480789f, - 0.995029091835022f, 0.070329122245312f, 0.995082914829254f, 0.069949418306351f, - 0.995136380195618f, 0.069569669663906f, 0.995189607143402f, 0.069189883768559f, - 0.995242536067963f, 0.068810060620308f, 0.995295166969299f, 0.068430192768574f, - 0.995347499847412f, 0.068050287663937f, 0.995399534702301f, 0.067670337855816f, - 0.995451331138611f, 0.067290350794792f, 0.995502769947052f, 0.066910326480865f, - 0.995553970336914f, 0.066530264914036f, 0.995604813098907f, 0.066150158643723f, - 0.995655417442322f, 0.065770015120506f, 0.995705723762512f, 0.065389834344387f, - 0.995755732059479f, 0.065009608864784f, 0.995805442333221f, 0.064629353582859f, - 0.995854854583740f, 0.064249053597450f, 0.995904028415680f, 0.063868723809719f, - 0.995952844619751f, 0.063488349318504f, 0.996001422405243f, 0.063107937574387f, - 0.996049642562866f, 0.062727488577366f, 0.996097624301910f, 0.062347009778023f, - 0.996145308017731f, 0.061966486275196f, 0.996192693710327f, 0.061585929244757f, - 0.996239781379700f, 0.061205338686705f, 0.996286571025848f, 0.060824707150459f, - 0.996333062648773f, 0.060444042086601f, 0.996379256248474f, 0.060063343495131f, - 0.996425211429596f, 0.059682607650757f, 0.996470808982849f, 0.059301838278770f, - 0.996516168117523f, 0.058921031653881f, 0.996561229228973f, 0.058540191501379f, - 0.996605992317200f, 0.058159314095974f, 0.996650457382202f, 0.057778406888247f, - 0.996694624423981f, 0.057397462427616f, 0.996738493442535f, 0.057016488164663f, - 0.996782064437866f, 0.056635476648808f, 0.996825337409973f, 0.056254431605339f, - 0.996868371963501f, 0.055873356759548f, 0.996911048889160f, 0.055492244660854f, - 0.996953487396240f, 0.055111102759838f, 0.996995627880096f, 0.054729927331209f, - 0.997037410736084f, 0.054348722100258f, 0.997078955173492f, 0.053967483341694f, - 0.997120201587677f, 0.053586211055517f, 0.997161149978638f, 0.053204908967018f, - 0.997201859951019f, 0.052823577076197f, 0.997242212295532f, 0.052442211657763f, - 0.997282266616821f, 0.052060816437006f, 0.997322082519531f, 0.051679391413927f, - 0.997361540794373f, 0.051297932863235f, 0.997400760650635f, 0.050916448235512f, - 0.997439682483673f, 0.050534930080175f, 0.997478306293488f, 0.050153385847807f, - 0.997516572475433f, 0.049771808087826f, 0.997554600238800f, 0.049390204250813f, - 0.997592389583588f, 0.049008570611477f, 0.997629821300507f, 0.048626907169819f, - 0.997666954994202f, 0.048245213925838f, 0.997703790664673f, 0.047863494604826f, - 0.997740387916565f, 0.047481749206781f, 0.997776627540588f, 0.047099970281124f, - 0.997812628746033f, 0.046718169003725f, 0.997848331928253f, 0.046336337924004f, - 0.997883677482605f, 0.045954477041960f, 0.997918784618378f, 0.045572593808174f, - 0.997953593730927f, 0.045190680772066f, 0.997988104820251f, 0.044808741658926f, - 0.998022377490997f, 0.044426776468754f, 0.998056292533875f, 0.044044785201550f, - 0.998089909553528f, 0.043662767857313f, 0.998123228549957f, 0.043280724436045f, - 0.998156309127808f, 0.042898654937744f, 0.998189091682434f, 0.042516563087702f, - 0.998221516609192f, 0.042134445160627f, 0.998253703117371f, 0.041752301156521f, - 0.998285591602325f, 0.041370131075382f, 0.998317182064056f, 0.040987938642502f, - 0.998348474502563f, 0.040605723857880f, 0.998379468917847f, 0.040223482996225f, - 0.998410165309906f, 0.039841219782829f, 0.998440563678741f, 0.039458930492401f, - 0.998470664024353f, 0.039076622575521f, 0.998500525951386f, 0.038694288581610f, - 0.998530030250549f, 0.038311932235956f, 0.998559296131134f, 0.037929553538561f, - 0.998588204383850f, 0.037547148764133f, 0.998616874217987f, 0.037164725363255f, - 0.998645246028900f, 0.036782283335924f, 0.998673319816589f, 0.036399815231562f, - 0.998701035976410f, 0.036017324775457f, 0.998728513717651f, 0.035634815692902f, - 0.998755753040314f, 0.035252287983894f, 0.998782634735107f, 0.034869734197855f, - 0.998809218406677f, 0.034487165510654f, 0.998835504055023f, 0.034104570746422f, - 0.998861551284790f, 0.033721961081028f, 0.998887240886688f, 0.033339329063892f, - 0.998912692070007f, 0.032956674695015f, 0.998937785625458f, 0.032574005424976f, - 0.998962640762329f, 0.032191313803196f, 0.998987197875977f, 0.031808607280254f, - 0.999011456966400f, 0.031425878405571f, 0.999035418033600f, 0.031043132767081f, - 0.999059081077576f, 0.030660368502140f, 0.999082446098328f, 0.030277585610747f, - 0.999105513095856f, 0.029894785955548f, 0.999128282070160f, 0.029511967673898f, - 0.999150753021240f, 0.029129132628441f, 0.999172985553741f, 0.028746278956532f, - 0.999194860458374f, 0.028363410383463f, 0.999216496944427f, 0.027980525046587f, - 0.999237775802612f, 0.027597622945905f, 0.999258816242218f, 0.027214704081416f, - 0.999279558658600f, 0.026831768453121f, 0.999299943447113f, 0.026448817923665f, - 0.999320089817047f, 0.026065852493048f, 0.999339938163757f, 0.025682870298624f, - 0.999359488487244f, 0.025299875065684f, 0.999378740787506f, 0.024916863068938f, - 0.999397754669189f, 0.024533838033676f, 0.999416410923004f, 0.024150796234608f, - 0.999434769153595f, 0.023767741397023f, 0.999452829360962f, 0.023384673520923f, - 0.999470651149750f, 0.023001590743661f, 0.999488115310669f, 0.022618494927883f, - 0.999505341053009f, 0.022235386073589f, 0.999522268772125f, 0.021852264180779f, - 0.999538838863373f, 0.021469129249454f, 0.999555170536041f, 0.021085981279612f, - 0.999571204185486f, 0.020702820271254f, 0.999586939811707f, 0.020319648087025f, - 0.999602377414703f, 0.019936462864280f, 0.999617516994476f, 0.019553268328309f, - 0.999632358551025f, 0.019170060753822f, 0.999646902084351f, 0.018786842003465f, - 0.999661207199097f, 0.018403612077236f, 0.999675154685974f, 0.018020370975137f, - 0.999688863754272f, 0.017637118697166f, 0.999702215194702f, 0.017253857105970f, - 0.999715328216553f, 0.016870586201549f, 0.999728083610535f, 0.016487304121256f, - 0.999740600585938f, 0.016104012727737f, 0.999752819538116f, 0.015720712020993f, - 0.999764680862427f, 0.015337402001023f, 0.999776303768158f, 0.014954082667828f, - 0.999787628650665f, 0.014570754021406f, 0.999798655509949f, 0.014187417924404f, - 0.999809384346008f, 0.013804072514176f, 0.999819874763489f, 0.013420719653368f, - 0.999830007553101f, 0.013037359341979f, 0.999839842319489f, 0.012653990648687f, - 0.999849438667297f, 0.012270614504814f, 0.999858677387238f, 0.011887230910361f, - 0.999867618083954f, 0.011503840796649f, 0.999876320362091f, 0.011120444163680f, - 0.999884724617004f, 0.010737040080130f, 0.999892771244049f, 0.010353630408645f, - 0.999900579452515f, 0.009970214217901f, 0.999908089637756f, 0.009586792439222f, - 0.999915301799774f, 0.009203365072608f, 0.999922215938568f, 0.008819932118058f, - 0.999928832054138f, 0.008436493575573f, 0.999935150146484f, 0.008053051307797f, - 0.999941170215607f, 0.007669602986425f, 0.999946892261505f, 0.007286150939763f, - 0.999952375888824f, 0.006902694236487f, 0.999957501888275f, 0.006519233807921f, - 0.999962329864502f, 0.006135769188404f, 0.999966919422150f, 0.005752300843596f, - 0.999971151351929f, 0.005368829704821f, 0.999975144863129f, 0.004985354840755f, - 0.999978840351105f, 0.004601877182722f, 0.999982178211212f, 0.004218397196382f, - 0.999985277652740f, 0.003834914416075f, 0.999988079071045f, 0.003451429307461f, - 0.999990582466125f, 0.003067942336202f, 0.999992787837982f, 0.002684453502297f, - 0.999994695186615f, 0.002300963038579f, 0.999996304512024f, 0.001917471294291f, - 0.999997675418854f, 0.001533978385851f, 0.999998688697815f, 0.001150484546088f, - 0.999999403953552f, 0.000766990066040f, 0.999999880790710f, 0.000383495149435f, - 1.000000000000000f, 0.000000000000023f, 0.999999880790710f, -0.000383495149435f, - 0.999999403953552f, -0.000766990066040f, 0.999998688697815f, -0.001150484546088f, - 0.999997675418854f, -0.001533978385851f, 0.999996304512024f, -0.001917471294291f, - 0.999994695186615f, -0.002300963038579f, 0.999992787837982f, -0.002684453502297f, - 0.999990582466125f, -0.003067942336202f, 0.999988079071045f, -0.003451429307461f, - 0.999985277652740f, -0.003834914416075f, 0.999982178211212f, -0.004218397196382f, - 0.999978840351105f, -0.004601877182722f, 0.999975144863129f, -0.004985354840755f, - 0.999971151351929f, -0.005368829704821f, 0.999966919422150f, -0.005752300843596f, - 0.999962329864502f, -0.006135769188404f, 0.999957501888275f, -0.006519233807921f, - 0.999952375888824f, -0.006902694236487f, 0.999946892261505f, -0.007286150939763f, - 0.999941170215607f, -0.007669602986425f, 0.999935150146484f, -0.008053051307797f, - 0.999928832054138f, -0.008436493575573f, 0.999922215938568f, -0.008819932118058f, - 0.999915301799774f, -0.009203365072608f, 0.999908089637756f, -0.009586792439222f, - 0.999900579452515f, -0.009970214217901f, 0.999892771244049f, -0.010353630408645f, - 0.999884724617004f, -0.010737040080130f, 0.999876320362091f, -0.011120444163680f, - 0.999867618083954f, -0.011503840796649f, 0.999858677387238f, -0.011887230910361f, - 0.999849438667297f, -0.012270614504814f, 0.999839842319489f, -0.012653990648687f, - 0.999830007553101f, -0.013037359341979f, 0.999819874763489f, -0.013420719653368f, - 0.999809384346008f, -0.013804072514176f, 0.999798655509949f, -0.014187417924404f, - 0.999787628650665f, -0.014570754021406f, 0.999776303768158f, -0.014954082667828f, - 0.999764680862427f, -0.015337402001023f, 0.999752819538116f, -0.015720712020993f, - 0.999740600585938f, -0.016104012727737f, 0.999728083610535f, -0.016487304121256f, - 0.999715328216553f, -0.016870586201549f, 0.999702215194702f, -0.017253857105970f, - 0.999688863754272f, -0.017637118697166f, 0.999675154685974f, -0.018020370975137f, - 0.999661207199097f, -0.018403612077236f, 0.999646902084351f, -0.018786842003465f, - 0.999632358551025f, -0.019170060753822f, 0.999617516994476f, -0.019553268328309f, - 0.999602377414703f, -0.019936462864280f, 0.999586939811707f, -0.020319648087025f, - 0.999571204185486f, -0.020702820271254f, 0.999555170536041f, -0.021085981279612f, - 0.999538838863373f, -0.021469129249454f, 0.999522268772125f, -0.021852264180779f, - 0.999505341053009f, -0.022235386073589f, 0.999488115310669f, -0.022618494927883f, - 0.999470651149750f, -0.023001590743661f, 0.999452829360962f, -0.023384673520923f, - 0.999434769153595f, -0.023767741397023f, 0.999416410923004f, -0.024150796234608f, - 0.999397754669189f, -0.024533838033676f, 0.999378740787506f, -0.024916863068938f, - 0.999359488487244f, -0.025299875065684f, 0.999339938163757f, -0.025682870298624f, - 0.999320089817047f, -0.026065852493048f, 0.999299943447113f, -0.026448817923665f, - 0.999279558658600f, -0.026831768453121f, 0.999258816242218f, -0.027214704081416f, - 0.999237775802612f, -0.027597622945905f, 0.999216496944427f, -0.027980525046587f, - 0.999194860458374f, -0.028363410383463f, 0.999172985553741f, -0.028746278956532f, - 0.999150753021240f, -0.029129132628441f, 0.999128282070160f, -0.029511967673898f, - 0.999105513095856f, -0.029894785955548f, 0.999082446098328f, -0.030277585610747f, - 0.999059081077576f, -0.030660368502140f, 0.999035418033600f, -0.031043132767081f, - 0.999011456966400f, -0.031425878405571f, 0.998987197875977f, -0.031808607280254f, - 0.998962640762329f, -0.032191313803196f, 0.998937785625458f, -0.032574005424976f, - 0.998912692070007f, -0.032956674695015f, 0.998887240886688f, -0.033339329063892f, - 0.998861551284790f, -0.033721961081028f, 0.998835504055023f, -0.034104570746422f, - 0.998809218406677f, -0.034487165510654f, 0.998782634735107f, -0.034869734197855f, - 0.998755753040314f, -0.035252287983894f, 0.998728513717651f, -0.035634815692902f, - 0.998701035976410f, -0.036017324775457f, 0.998673319816589f, -0.036399815231562f, - 0.998645246028900f, -0.036782283335924f, 0.998616874217987f, -0.037164725363255f, - 0.998588204383850f, -0.037547148764133f, 0.998559296131134f, -0.037929553538561f, - 0.998530030250549f, -0.038311932235956f, 0.998500525951386f, -0.038694288581610f, - 0.998470664024353f, -0.039076622575521f, 0.998440563678741f, -0.039458930492401f, - 0.998410165309906f, -0.039841219782829f, 0.998379468917847f, -0.040223482996225f, - 0.998348474502563f, -0.040605723857880f, 0.998317182064056f, -0.040987938642502f, - 0.998285591602325f, -0.041370131075382f, 0.998253703117371f, -0.041752301156521f, - 0.998221516609192f, -0.042134445160627f, 0.998189091682434f, -0.042516563087702f, - 0.998156309127808f, -0.042898654937744f, 0.998123228549957f, -0.043280724436045f, - 0.998089909553528f, -0.043662767857313f, 0.998056292533875f, -0.044044785201550f, - 0.998022377490997f, -0.044426776468754f, 0.997988104820251f, -0.044808741658926f, - 0.997953593730927f, -0.045190680772066f, 0.997918784618378f, -0.045572593808174f, - 0.997883677482605f, -0.045954477041960f, 0.997848331928253f, -0.046336337924004f, - 0.997812628746033f, -0.046718169003725f, 0.997776627540588f, -0.047099970281124f, - 0.997740387916565f, -0.047481749206781f, 0.997703790664673f, -0.047863494604826f, - 0.997666954994202f, -0.048245213925838f, 0.997629821300507f, -0.048626907169819f, - 0.997592389583588f, -0.049008570611477f, 0.997554600238800f, -0.049390204250813f, - 0.997516572475433f, -0.049771808087826f, 0.997478306293488f, -0.050153385847807f, - 0.997439682483673f, -0.050534930080175f, 0.997400760650635f, -0.050916448235512f, - 0.997361540794373f, -0.051297932863235f, 0.997322082519531f, -0.051679391413927f, - 0.997282266616821f, -0.052060816437006f, 0.997242212295532f, -0.052442211657763f, - 0.997201859951019f, -0.052823577076197f, 0.997161149978638f, -0.053204908967018f, - 0.997120201587677f, -0.053586211055517f, 0.997078955173492f, -0.053967483341694f, - 0.997037410736084f, -0.054348722100258f, 0.996995627880096f, -0.054729927331209f, - 0.996953487396240f, -0.055111102759838f, 0.996911048889160f, -0.055492244660854f, - 0.996868371963501f, -0.055873356759548f, 0.996825337409973f, -0.056254431605339f, - 0.996782064437866f, -0.056635476648808f, 0.996738493442535f, -0.057016488164663f, - 0.996694624423981f, -0.057397462427616f, 0.996650457382202f, -0.057778406888247f, - 0.996605992317200f, -0.058159314095974f, 0.996561229228973f, -0.058540191501379f, - 0.996516168117523f, -0.058921031653881f, 0.996470808982849f, -0.059301838278770f, - 0.996425211429596f, -0.059682607650757f, 0.996379256248474f, -0.060063343495131f, - 0.996333062648773f, -0.060444042086601f, 0.996286571025848f, -0.060824707150459f, - 0.996239781379700f, -0.061205338686705f, 0.996192693710327f, -0.061585929244757f, - 0.996145308017731f, -0.061966486275196f, 0.996097624301910f, -0.062347009778023f, - 0.996049642562866f, -0.062727488577366f, 0.996001422405243f, -0.063107937574387f, - 0.995952844619751f, -0.063488349318504f, 0.995904028415680f, -0.063868723809719f, - 0.995854854583740f, -0.064249053597450f, 0.995805442333221f, -0.064629353582859f, - 0.995755732059479f, -0.065009608864784f, 0.995705723762512f, -0.065389834344387f, - 0.995655417442322f, -0.065770015120506f, 0.995604813098907f, -0.066150158643723f, - 0.995553970336914f, -0.066530264914036f, 0.995502769947052f, -0.066910326480865f, - 0.995451331138611f, -0.067290350794792f, 0.995399534702301f, -0.067670337855816f, - 0.995347499847412f, -0.068050287663937f, 0.995295166969299f, -0.068430192768574f, - 0.995242536067963f, -0.068810060620308f, 0.995189607143402f, -0.069189883768559f, - 0.995136380195618f, -0.069569669663906f, 0.995082914829254f, -0.069949418306351f, - 0.995029091835022f, -0.070329122245312f, 0.994975030422211f, -0.070708781480789f, - 0.994920611381531f, -0.071088403463364f, 0.994865953922272f, -0.071467980742455f, - 0.994810998439789f, -0.071847513318062f, 0.994755744934082f, -0.072227008640766f, - 0.994700193405151f, -0.072606459259987f, 0.994644403457642f, -0.072985872626305f, - 0.994588255882263f, -0.073365233838558f, 0.994531810283661f, -0.073744557797909f, - 0.994475126266479f, -0.074123837053776f, 0.994418144226074f, -0.074503071606159f, - 0.994360864162445f, -0.074882268905640f, 0.994303286075592f, -0.075261414051056f, - 0.994245409965515f, -0.075640521943569f, 0.994187235832214f, -0.076019577682018f, - 0.994128763675690f, -0.076398596167564f, 0.994070053100586f, -0.076777562499046f, - 0.994010984897614f, -0.077156484127045f, 0.993951678276062f, -0.077535368502140f, - 0.993892073631287f, -0.077914200723171f, 0.993832170963287f, -0.078292988240719f, - 0.993771970272064f, -0.078671731054783f, 0.993711471557617f, -0.079050421714783f, - 0.993650734424591f, -0.079429075121880f, 0.993589639663696f, -0.079807676374912f, - 0.993528306484222f, -0.080186225473881f, 0.993466615676880f, -0.080564737319946f, - 0.993404686450958f, -0.080943197011948f, 0.993342459201813f, -0.081321612000465f, - 0.993279933929443f, -0.081699974834919f, 0.993217170238495f, -0.082078292965889f, - 0.993154048919678f, -0.082456558942795f, 0.993090689182281f, -0.082834780216217f, - 0.993026971817017f, -0.083212949335575f, 0.992963016033173f, -0.083591073751450f, - 0.992898762226105f, -0.083969146013260f, 0.992834210395813f, -0.084347173571587f, - 0.992769360542297f, -0.084725148975849f, 0.992704212665558f, -0.085103072226048f, - 0.992638826370239f, -0.085480943322182f, 0.992573142051697f, -0.085858769714832f, - 0.992507100105286f, -0.086236543953419f, 0.992440819740295f, -0.086614266037941f, - 0.992374241352081f, -0.086991935968399f, 0.992307364940643f, -0.087369553744793f, - 0.992240250110626f, -0.087747126817703f, 0.992172777652740f, -0.088124647736549f, - 0.992105066776276f, -0.088502109050751f, 0.992036998271942f, -0.088879525661469f, - 0.991968691349030f, -0.089256882667542f, 0.991900086402893f, -0.089634194970131f, - 0.991831183433533f, -0.090011447668076f, 0.991762042045593f, -0.090388655662537f, - 0.991692543029785f, -0.090765804052353f, 0.991622805595398f, -0.091142900288105f, - 0.991552770137787f, -0.091519944369793f, 0.991482377052307f, -0.091896936297417f, - 0.991411805152893f, -0.092273868620396f, 0.991340875625610f, -0.092650748789310f, - 0.991269648075104f, -0.093027576804161f, 0.991198182106018f, -0.093404345214367f, - 0.991126358509064f, -0.093781061470509f, 0.991054296493530f, -0.094157725572586f, - 0.990981936454773f, -0.094534330070019f, 0.990909278392792f, -0.094910882413387f, - 0.990836322307587f, -0.095287375152111f, 0.990763127803802f, -0.095663815736771f, - 0.990689575672150f, -0.096040196716785f, 0.990615785121918f, -0.096416525542736f, - 0.990541696548462f, -0.096792794764042f, 0.990467309951782f, -0.097169004380703f, - 0.990392625331879f, -0.097545161843300f, 0.990317702293396f, -0.097921259701252f, - 0.990242421627045f, -0.098297297954559f, 0.990166902542114f, -0.098673284053802f, - 0.990091085433960f, -0.099049203097820f, 0.990014970302582f, -0.099425069987774f, - 0.989938557147980f, -0.099800877273083f, 0.989861845970154f, -0.100176624953747f, - 0.989784896373749f, -0.100552320480347f, 0.989707589149475f, -0.100927948951721f, - 0.989630043506622f, -0.101303517818451f, 0.989552199840546f, -0.101679034531116f, - 0.989474058151245f, -0.102054484188557f, 0.989395678043365f, -0.102429874241352f, - 0.989316940307617f, -0.102805204689503f, 0.989237964153290f, -0.103180475533009f, - 0.989158689975739f, -0.103555686771870f, 0.989079117774963f, -0.103930838406086f, - 0.988999247550964f, -0.104305922985077f, 0.988919138908386f, -0.104680955410004f, - 0.988838672637939f, -0.105055920779705f, 0.988757967948914f, -0.105430819094181f, - 0.988676965236664f, -0.105805665254593f, 0.988595664501190f, -0.106180444359779f, - 0.988514065742493f, -0.106555156409740f, 0.988432228565216f, -0.106929816305637f, - 0.988350033760071f, -0.107304409146309f, 0.988267600536346f, -0.107678934931755f, - 0.988184869289398f, -0.108053401112556f, 0.988101840019226f, -0.108427800238132f, - 0.988018512725830f, -0.108802139759064f, 0.987934947013855f, -0.109176412224770f, - 0.987851083278656f, -0.109550617635250f, 0.987766921520233f, -0.109924763441086f, - 0.987682461738586f, -0.110298842191696f, 0.987597703933716f, -0.110672861337662f, - 0.987512648105621f, -0.111046813428402f, 0.987427353858948f, -0.111420698463917f, - 0.987341761589050f, -0.111794516444206f, 0.987255871295929f, -0.112168267369270f, - 0.987169682979584f, -0.112541958689690f, 0.987083256244659f, -0.112915575504303f, - 0.986996471881866f, -0.113289132714272f, 0.986909449100494f, -0.113662622869015f, - 0.986822128295898f, -0.114036038517952f, 0.986734509468079f, -0.114409394562244f, - 0.986646652221680f, -0.114782683551311f, 0.986558437347412f, -0.115155905485153f, - 0.986469984054565f, -0.115529052913189f, 0.986381232738495f, -0.115902140736580f, - 0.986292183399200f, -0.116275154054165f, 0.986202836036682f, -0.116648100316525f, - 0.986113250255585f, -0.117020979523659f, 0.986023366451263f, -0.117393791675568f, - 0.985933184623718f, -0.117766529321671f, 0.985842704772949f, -0.118139199912548f, - 0.985751926898956f, -0.118511803448200f, 0.985660910606384f, -0.118884332478046f, - 0.985569596290588f, -0.119256794452667f, 0.985477983951569f, -0.119629189372063f, - 0.985386073589325f, -0.120001509785652f, 0.985293865203857f, -0.120373763144016f, - 0.985201418399811f, -0.120745941996574f, 0.985108673572540f, -0.121118053793907f, - 0.985015630722046f, -0.121490091085434f, 0.984922289848328f, -0.121862053871155f, - 0.984828710556030f, -0.122233949601650f, 0.984734773635864f, -0.122605770826340f, - 0.984640598297119f, -0.122977524995804f, 0.984546124935150f, -0.123349204659462f, - 0.984451413154602f, -0.123720809817314f, 0.984356343746185f, -0.124092340469360f, - 0.984261035919189f, -0.124463804066181f, 0.984165430068970f, -0.124835193157196f, - 0.984069526195526f, -0.125206500291824f, 0.983973383903503f, -0.125577747821808f, - 0.983876943588257f, -0.125948905944824f, 0.983780145645142f, -0.126320004463196f, - 0.983683168888092f, -0.126691013574600f, 0.983585834503174f, -0.127061963081360f, - 0.983488261699677f, -0.127432823181152f, 0.983390331268311f, -0.127803623676300f, - 0.983292162418365f, -0.128174334764481f, 0.983193755149841f, -0.128544986248016f, - 0.983094990253448f, -0.128915548324585f, 0.982995986938477f, -0.129286035895348f, - 0.982896685600281f, -0.129656463861465f, 0.982797086238861f, -0.130026802420616f, - 0.982697248458862f, -0.130397051572800f, 0.982597053050995f, -0.130767241120338f, - 0.982496619224548f, -0.131137356162071f, 0.982395887374878f, -0.131507381796837f, - 0.982294917106628f, -0.131877332925797f, 0.982193589210510f, -0.132247209548950f, - 0.982092022895813f, -0.132617011666298f, 0.981990158557892f, -0.132986739277840f, - 0.981888055801392f, -0.133356377482414f, 0.981785595417023f, -0.133725941181183f, - 0.981682896614075f, -0.134095430374146f, 0.981579899787903f, -0.134464830160141f, - 0.981476604938507f, -0.134834155440331f, 0.981373071670532f, -0.135203406214714f, - 0.981269240379334f, -0.135572582483292f, 0.981165111064911f, -0.135941669344902f, - 0.981060683727264f, -0.136310681700706f, 0.980956017971039f, -0.136679604649544f, - 0.980851054191589f, -0.137048453092575f, 0.980745792388916f, -0.137417227029800f, - 0.980640232563019f, -0.137785911560059f, 0.980534434318542f, -0.138154521584511f, - 0.980428338050842f, -0.138523042201996f, 0.980321943759918f, -0.138891488313675f, - 0.980215251445770f, -0.139259845018387f, 0.980108320713043f, -0.139628127217293f, - 0.980001091957092f, -0.139996320009232f, 0.979893565177917f, -0.140364438295364f, - 0.979785740375519f, -0.140732467174530f, 0.979677677154541f, -0.141100421547890f, - 0.979569315910339f, -0.141468286514282f, 0.979460656642914f, -0.141836062073708f, - 0.979351758956909f, -0.142203763127327f, 0.979242503643036f, -0.142571389675140f, - 0.979133009910584f, -0.142938911914825f, 0.979023277759552f, -0.143306359648705f, - 0.978913187980652f, -0.143673732876778f, 0.978802859783173f, -0.144041016697884f, - 0.978692233562469f, -0.144408211112022f, 0.978581368923187f, -0.144775316119194f, - 0.978470146656036f, -0.145142331719399f, 0.978358685970306f, -0.145509272813797f, - 0.978246986865997f, -0.145876124501228f, 0.978134930133820f, -0.146242901682854f, - 0.978022634983063f, -0.146609574556351f, 0.977910041809082f, -0.146976172924042f, - 0.977797150611877f, -0.147342681884766f, 0.977684020996094f, -0.147709101438522f, - 0.977570593357086f, -0.148075446486473f, 0.977456867694855f, -0.148441687226295f, - 0.977342903614044f, -0.148807853460312f, 0.977228581905365f, -0.149173930287361f, - 0.977114021778107f, -0.149539917707443f, 0.976999223232269f, -0.149905815720558f, - 0.976884067058563f, -0.150271624326706f, 0.976768672466278f, -0.150637343525887f, - 0.976653039455414f, -0.151002973318100f, 0.976537048816681f, -0.151368513703346f, - 0.976420819759369f, -0.151733979582787f, 0.976304292678833f, -0.152099341154099f, - 0.976187527179718f, -0.152464613318443f, 0.976070404052734f, -0.152829796075821f, - 0.975953042507172f, -0.153194904327393f, 0.975835442543030f, -0.153559908270836f, - 0.975717484951019f, -0.153924822807312f, 0.975599288940430f, -0.154289647936821f, - 0.975480854511261f, -0.154654383659363f, 0.975362062454224f, -0.155019029974937f, - 0.975243031978607f, -0.155383571982384f, 0.975123703479767f, -0.155748039484024f, - 0.975004136562347f, -0.156112402677536f, 0.974884271621704f, -0.156476691365242f, - 0.974764108657837f, -0.156840875744820f, 0.974643647670746f, -0.157204970717430f, - 0.974522948265076f, -0.157568961381912f, 0.974401950836182f, -0.157932877540588f, - 0.974280655384064f, -0.158296689391136f, 0.974159121513367f, -0.158660411834717f, - 0.974037289619446f, -0.159024044871330f, 0.973915159702301f, -0.159387573599815f, - 0.973792791366577f, -0.159751012921333f, 0.973670125007629f, -0.160114362835884f, - 0.973547160625458f, -0.160477623343468f, 0.973423957824707f, -0.160840779542923f, - 0.973300457000732f, -0.161203846335411f, 0.973176658153534f, -0.161566808819771f, - 0.973052620887756f, -0.161929681897163f, 0.972928285598755f, -0.162292465567589f, - 0.972803652286530f, -0.162655144929886f, 0.972678780555725f, -0.163017734885216f, - 0.972553610801697f, -0.163380220532417f, 0.972428143024445f, -0.163742616772652f, - 0.972302436828613f, -0.164104923605919f, 0.972176432609558f, -0.164467126131058f, - 0.972050130367279f, -0.164829224348068f, 0.971923589706421f, -0.165191248059273f, - 0.971796751022339f, -0.165553152561188f, 0.971669614315033f, -0.165914967656136f, - 0.971542239189148f, -0.166276678442955f, 0.971414566040039f, -0.166638299822807f, - 0.971286594867706f, -0.166999831795692f, 0.971158385276794f, -0.167361244559288f, - 0.971029877662659f, -0.167722567915916f, 0.970901072025299f, -0.168083801865578f, - 0.970772027969360f, -0.168444931507111f, 0.970642685890198f, -0.168805956840515f, - 0.970513105392456f, -0.169166877865791f, 0.970383226871490f, -0.169527709484100f, - 0.970253050327301f, -0.169888436794281f, 0.970122575759888f, -0.170249074697495f, - 0.969991862773895f, -0.170609608292580f, 0.969860911369324f, -0.170970037579536f, - 0.969729602336884f, -0.171330362558365f, 0.969598054885864f, -0.171690583229065f, - 0.969466269016266f, -0.172050714492798f, 0.969334125518799f, -0.172410741448402f, - 0.969201743602753f, -0.172770664095879f, 0.969069123268127f, -0.173130482435226f, - 0.968936204910278f, -0.173490211367607f, 0.968802988529205f, -0.173849821090698f, - 0.968669533729553f, -0.174209341406822f, 0.968535780906677f, -0.174568757414818f, - 0.968401730060577f, -0.174928069114685f, 0.968267440795898f, -0.175287276506424f, - 0.968132853507996f, -0.175646379590034f, 0.967997968196869f, -0.176005378365517f, - 0.967862844467163f, -0.176364272832870f, 0.967727422714233f, -0.176723077893257f, - 0.967591762542725f, -0.177081763744354f, 0.967455804347992f, -0.177440345287323f, - 0.967319548130035f, -0.177798837423325f, 0.967183053493500f, -0.178157210350037f, - 0.967046260833740f, -0.178515478968620f, 0.966909229755402f, -0.178873643279076f, - 0.966771900653839f, -0.179231703281403f, 0.966634273529053f, -0.179589673876762f, - 0.966496407985687f, -0.179947525262833f, 0.966358244419098f, -0.180305257439613f, - 0.966219842433929f, -0.180662900209427f, 0.966081082820892f, -0.181020438671112f, - 0.965942144393921f, -0.181377857923508f, 0.965802907943726f, -0.181735187768936f, - 0.965663373470306f, -0.182092398405075f, 0.965523540973663f, -0.182449504733086f, - 0.965383470058441f, -0.182806491851807f, 0.965243160724640f, -0.183163389563560f, - 0.965102493762970f, -0.183520168066025f, 0.964961588382721f, -0.183876842260361f, - 0.964820444583893f, -0.184233412146568f, 0.964679002761841f, -0.184589877724648f, - 0.964537262916565f, -0.184946224093437f, 0.964395284652710f, -0.185302466154099f, - 0.964253067970276f, -0.185658603906631f, 0.964110493659973f, -0.186014622449875f, - 0.963967680931091f, -0.186370536684990f, 0.963824629783630f, -0.186726331710815f, - 0.963681280612946f, -0.187082037329674f, 0.963537633419037f, -0.187437608838081f, - 0.963393747806549f, -0.187793090939522f, 0.963249564170837f, -0.188148453831673f, - 0.963105142116547f, -0.188503712415695f, 0.962960422039032f, -0.188858851790428f, - 0.962815403938293f, -0.189213871955872f, 0.962670147418976f, -0.189568802714348f, - 0.962524592876434f, -0.189923599362373f, 0.962378799915314f, -0.190278306603432f, - 0.962232708930969f, -0.190632879734039f, 0.962086379528046f, -0.190987363457680f, - 0.961939752101898f, -0.191341713070869f, 0.961792886257172f, -0.191695958375931f, - 0.961645722389221f, -0.192050099372864f, 0.961498260498047f, -0.192404121160507f, - 0.961350560188293f, -0.192758023738861f, 0.961202561855316f, -0.193111822009087f, - 0.961054325103760f, -0.193465501070023f, 0.960905790328979f, -0.193819075822830f, - 0.960757017135620f, -0.194172516465187f, 0.960607945919037f, -0.194525867700577f, - 0.960458636283875f, -0.194879084825516f, 0.960309028625488f, -0.195232197642326f, - 0.960159122943878f, -0.195585191249847f, 0.960008978843689f, -0.195938065648079f, - 0.959858596324921f, -0.196290835738182f, 0.959707856178284f, -0.196643486618996f, - 0.959556937217712f, -0.196996018290520f, 0.959405720233917f, -0.197348430752754f, - 0.959254205226898f, -0.197700738906860f, 0.959102451801300f, -0.198052927851677f, - 0.958950400352478f, -0.198404997587204f, 0.958798050880432f, -0.198756948113441f, - 0.958645522594452f, -0.199108779430389f, 0.958492636680603f, -0.199460506439209f, - 0.958339512348175f, -0.199812099337578f, 0.958186149597168f, -0.200163587927818f, - 0.958032488822937f, -0.200514942407608f, 0.957878530025482f, -0.200866192579269f, - 0.957724332809448f, -0.201217323541641f, 0.957569897174835f, -0.201568335294724f, - 0.957415163516998f, -0.201919227838516f, 0.957260131835938f, -0.202270001173019f, - 0.957104861736298f, -0.202620655298233f, 0.956949353218079f, -0.202971190214157f, - 0.956793546676636f, -0.203321605920792f, 0.956637442111969f, -0.203671902418137f, - 0.956481099128723f, -0.204022079706192f, 0.956324458122253f, -0.204372137784958f, - 0.956167578697205f, -0.204722076654434f, 0.956010460853577f, -0.205071896314621f, - 0.955853044986725f, -0.205421581864357f, 0.955695331096649f, -0.205771163105965f, - 0.955537378787994f, -0.206120610237122f, 0.955379128456116f, -0.206469938158989f, - 0.955220639705658f, -0.206819161772728f, 0.955061912536621f, -0.207168251276016f, - 0.954902827739716f, -0.207517206668854f, 0.954743564128876f, -0.207866057753563f, - 0.954584002494812f, -0.208214774727821f, 0.954424142837524f, -0.208563387393951f, - 0.954264044761658f, -0.208911851048470f, 0.954103708267212f, -0.209260210394859f, - 0.953943073749542f, -0.209608450531960f, 0.953782141208649f, -0.209956556558609f, - 0.953620970249176f, -0.210304543375969f, 0.953459560871124f, -0.210652396082878f, - 0.953297853469849f, -0.211000129580498f, 0.953135907649994f, -0.211347743868828f, - 0.952973663806915f, -0.211695238947868f, 0.952811121940613f, -0.212042599916458f, - 0.952648401260376f, -0.212389841675758f, 0.952485322952271f, -0.212736949324608f, - 0.952322065830231f, -0.213083937764168f, 0.952158451080322f, -0.213430806994438f, - 0.951994657516479f, -0.213777542114258f, 0.951830565929413f, -0.214124158024788f, - 0.951666176319122f, -0.214470639824867f, 0.951501548290253f, -0.214817002415657f, - 0.951336681842804f, -0.215163245797157f, 0.951171517372131f, -0.215509355068207f, - 0.951006054878235f, -0.215855330228806f, 0.950840353965759f, -0.216201186180115f, - 0.950674414634705f, -0.216546908020973f, 0.950508177280426f, -0.216892510652542f, - 0.950341701507568f, -0.217237979173660f, 0.950174987316132f, -0.217583328485489f, - 0.950007975101471f, -0.217928543686867f, 0.949840664863586f, -0.218273624777794f, - 0.949673116207123f, -0.218618586659431f, 0.949505329132080f, -0.218963414430618f, - 0.949337244033813f, -0.219308122992516f, 0.949168920516968f, -0.219652697443962f, - 0.949000298976898f, -0.219997137784958f, 0.948831439018250f, -0.220341444015503f, - 0.948662281036377f, -0.220685631036758f, 0.948492884635925f, -0.221029683947563f, - 0.948323249816895f, -0.221373617649078f, 0.948153316974640f, -0.221717402338982f, - 0.947983145713806f, -0.222061067819595f, 0.947812676429749f, -0.222404599189758f, - 0.947641968727112f, -0.222748011350632f, 0.947470963001251f, -0.223091274499893f, - 0.947299718856812f, -0.223434418439865f, 0.947128236293793f, -0.223777428269386f, - 0.946956455707550f, -0.224120303988457f, 0.946784436702728f, -0.224463045597076f, - 0.946612179279327f, -0.224805667996407f, 0.946439623832703f, -0.225148141384125f, - 0.946266770362854f, -0.225490495562553f, 0.946093678474426f, -0.225832715630531f, - 0.945920348167419f, -0.226174786686897f, 0.945746779441834f, -0.226516738533974f, - 0.945572853088379f, -0.226858556270599f, 0.945398747920990f, -0.227200239896774f, - 0.945224344730377f, -0.227541789412498f, 0.945049703121185f, -0.227883204817772f, - 0.944874763488770f, -0.228224486112595f, 0.944699645042419f, -0.228565633296967f, - 0.944524168968201f, -0.228906646370888f, 0.944348454475403f, -0.229247525334358f, - 0.944172501564026f, -0.229588270187378f, 0.943996310234070f, -0.229928880929947f, - 0.943819820880890f, -0.230269357562065f, 0.943643093109131f, -0.230609700083733f, - 0.943466067314148f, -0.230949893593788f, 0.943288803100586f, -0.231289967894554f, - 0.943111240863800f, -0.231629893183708f, 0.942933499813080f, -0.231969684362412f, - 0.942755401134491f, -0.232309341430664f, 0.942577123641968f, -0.232648864388466f, - 0.942398548126221f, -0.232988253235817f, 0.942219734191895f, -0.233327493071556f, - 0.942040622234344f, -0.233666598796844f, 0.941861271858215f, -0.234005570411682f, - 0.941681683063507f, -0.234344407916069f, 0.941501796245575f, -0.234683111310005f, - 0.941321671009064f, -0.235021665692329f, 0.941141307353973f, -0.235360085964203f, - 0.940960645675659f, -0.235698372125626f, 0.940779745578766f, -0.236036509275436f, - 0.940598547458649f, -0.236374512314796f, 0.940417110919952f, -0.236712381243706f, - 0.940235435962677f, -0.237050101161003f, 0.940053522586823f, -0.237387686967850f, - 0.939871311187744f, -0.237725138664246f, 0.939688861370087f, -0.238062441349030f, - 0.939506113529205f, -0.238399609923363f, 0.939323127269745f, -0.238736644387245f, - 0.939139902591705f, -0.239073529839516f, 0.938956379890442f, -0.239410281181335f, - 0.938772618770599f, -0.239746883511543f, 0.938588619232178f, -0.240083336830139f, - 0.938404381275177f, -0.240419670939446f, 0.938219845294952f, -0.240755841135979f, - 0.938035070896149f, -0.241091892123222f, 0.937849998474121f, -0.241427779197693f, - 0.937664687633514f, -0.241763532161713f, 0.937479138374329f, -0.242099151015282f, - 0.937293350696564f, -0.242434620857239f, 0.937107264995575f, -0.242769956588745f, - 0.936920940876007f, -0.243105143308640f, 0.936734318733215f, -0.243440181016922f, - 0.936547517776489f, -0.243775084614754f, 0.936360359191895f, -0.244109839200974f, - 0.936173021793365f, -0.244444444775581f, 0.935985386371613f, -0.244778916239738f, - 0.935797572135925f, -0.245113238692284f, 0.935609400272369f, -0.245447427034378f, - 0.935421049594879f, -0.245781451463699f, 0.935232400894165f, -0.246115356683731f, - 0.935043513774872f, -0.246449097990990f, 0.934854328632355f, -0.246782705187798f, - 0.934664964675903f, -0.247116148471832f, 0.934475243091583f, -0.247449472546577f, - 0.934285342693329f, -0.247782632708550f, 0.934095203876495f, -0.248115643858910f, - 0.933904767036438f, -0.248448520898819f, 0.933714091777802f, -0.248781248927116f, - 0.933523118495941f, -0.249113827943802f, 0.933331906795502f, -0.249446272850037f, - 0.933140456676483f, -0.249778553843498f, 0.932948768138886f, -0.250110685825348f, - 0.932756841182709f, -0.250442683696747f, 0.932564616203308f, -0.250774532556534f, - 0.932372152805328f, -0.251106232404709f, 0.932179391384125f, -0.251437783241272f, - 0.931986451148987f, -0.251769185066223f, 0.931793212890625f, -0.252100437879562f, - 0.931599736213684f, -0.252431541681290f, 0.931405961513519f, -0.252762526273727f, - 0.931211948394775f, -0.253093332052231f, 0.931017756462097f, -0.253423988819122f, - 0.930823206901550f, -0.253754496574402f, 0.930628478527069f, -0.254084855318069f, - 0.930433452129364f, -0.254415065050125f, 0.930238187313080f, -0.254745125770569f, - 0.930042684078217f, -0.255075037479401f, 0.929846942424774f, -0.255404800176620f, - 0.929650902748108f, -0.255734413862228f, 0.929454624652863f, -0.256063878536224f, - 0.929258108139038f, -0.256393194198608f, 0.929061353206635f, -0.256722360849380f, - 0.928864300251007f, -0.257051378488541f, 0.928667008876801f, -0.257380217313766f, - 0.928469479084015f, -0.257708936929703f, 0.928271710872650f, -0.258037507534027f, - 0.928073644638062f, -0.258365899324417f, 0.927875399589539f, -0.258694142103195f, - 0.927676856517792f, -0.259022265672684f, 0.927478015422821f, -0.259350210428238f, - 0.927278995513916f, -0.259678006172180f, 0.927079677581787f, -0.260005623102188f, - 0.926880121231079f, -0.260333120822906f, 0.926680326461792f, -0.260660469532013f, - 0.926480293273926f, -0.260987639427185f, 0.926280021667480f, -0.261314690113068f, - 0.926079452037811f, -0.261641561985016f, 0.925878643989563f, -0.261968284845352f, - 0.925677597522736f, -0.262294828891754f, 0.925476312637329f, -0.262621253728867f, - 0.925274729728699f, -0.262947499752045f, 0.925072908401489f, -0.263273626565933f, - 0.924870908260345f, -0.263599574565887f, 0.924668610095978f, -0.263925373554230f, - 0.924466013908386f, -0.264250993728638f, 0.924263238906860f, -0.264576494693756f, - 0.924060165882111f, -0.264901816844940f, 0.923856854438782f, -0.265226989984512f, - 0.923653304576874f, -0.265552014112473f, 0.923449516296387f, -0.265876859426498f, - 0.923245489597321f, -0.266201555728912f, 0.923041164875031f, -0.266526103019714f, - 0.922836601734161f, -0.266850501298904f, 0.922631800174713f, -0.267174720764160f, - 0.922426760196686f, -0.267498821020126f, 0.922221481800079f, -0.267822742462158f, - 0.922015964984894f, -0.268146485090256f, 0.921810150146484f, -0.268470078706741f, - 0.921604096889496f, -0.268793523311615f, 0.921397805213928f, -0.269116818904877f, - 0.921191275119781f, -0.269439965486526f, 0.920984506607056f, -0.269762933254242f, - 0.920777499675751f, -0.270085722208023f, 0.920570194721222f, -0.270408391952515f, - 0.920362710952759f, -0.270730882883072f, 0.920154929161072f, -0.271053224802017f, - 0.919946908950806f, -0.271375387907028f, 0.919738650321960f, -0.271697402000427f, - 0.919530093669891f, -0.272019267082214f, 0.919321358203888f, -0.272340953350067f, - 0.919112324714661f, -0.272662490606308f, 0.918903112411499f, -0.272983878850937f, - 0.918693602085114f, -0.273305088281631f, 0.918483853340149f, -0.273626148700714f, - 0.918273866176605f, -0.273947030305862f, 0.918063640594482f, -0.274267762899399f, - 0.917853116989136f, -0.274588316679001f, 0.917642414569855f, -0.274908751249313f, - 0.917431414127350f, -0.275228977203369f, 0.917220234870911f, -0.275549083948135f, - 0.917008757591248f, -0.275868982076645f, 0.916797041893005f, -0.276188760995865f, - 0.916585087776184f, -0.276508361101151f, 0.916372895240784f, -0.276827782392502f, - 0.916160404682159f, -0.277147054672241f, 0.915947735309601f, -0.277466177940369f, - 0.915734827518463f, -0.277785122394562f, 0.915521621704102f, -0.278103888034821f, - 0.915308177471161f, -0.278422504663467f, 0.915094554424286f, -0.278740972280502f, - 0.914880633354187f, -0.279059261083603f, 0.914666473865509f, -0.279377400875092f, - 0.914452075958252f, -0.279695361852646f, 0.914237439632416f, -0.280013144016266f, - 0.914022505283356f, -0.280330777168274f, 0.913807392120361f, -0.280648261308670f, - 0.913592040538788f, -0.280965566635132f, 0.913376390933990f, -0.281282693147659f, - 0.913160502910614f, -0.281599670648575f, 0.912944436073303f, -0.281916469335556f, - 0.912728071212769f, -0.282233119010925f, 0.912511467933655f, -0.282549589872360f, - 0.912294626235962f, -0.282865911722183f, 0.912077546119690f, -0.283182054758072f, - 0.911860227584839f, -0.283498018980026f, 0.911642670631409f, -0.283813834190369f, - 0.911424875259399f, -0.284129470586777f, 0.911206841468811f, -0.284444957971573f, - 0.910988569259644f, -0.284760266542435f, 0.910769999027252f, -0.285075396299362f, - 0.910551249980927f, -0.285390377044678f, 0.910332262516022f, -0.285705178976059f, - 0.910112977027893f, -0.286019802093506f, 0.909893512725830f, -0.286334276199341f, - 0.909673750400543f, -0.286648571491241f, 0.909453809261322f, -0.286962717771530f, - 0.909233570098877f, -0.287276685237885f, 0.909013092517853f, -0.287590473890305f, - 0.908792436122894f, -0.287904083728790f, 0.908571481704712f, -0.288217544555664f, - 0.908350288867950f, -0.288530826568604f, 0.908128857612610f, -0.288843959569931f, - 0.907907187938690f, -0.289156883955002f, 0.907685279846191f, -0.289469659328461f, - 0.907463192939758f, -0.289782285690308f, 0.907240808010101f, -0.290094703435898f, - 0.907018184661865f, -0.290406972169876f, 0.906795322895050f, -0.290719062089920f, - 0.906572222709656f, -0.291031002998352f, 0.906348884105682f, -0.291342735290527f, - 0.906125307083130f, -0.291654318571091f, 0.905901491641998f, -0.291965723037720f, - 0.905677437782288f, -0.292276978492737f, 0.905453145503998f, -0.292588025331497f, - 0.905228614807129f, -0.292898923158646f, 0.905003845691681f, -0.293209642171860f, - 0.904778838157654f, -0.293520182371140f, 0.904553592205048f, -0.293830573558807f, - 0.904328107833862f, -0.294140785932541f, 0.904102385044098f, -0.294450789690018f, - 0.903876423835754f, -0.294760644435883f, 0.903650224208832f, -0.295070350170136f, - 0.903423786163330f, -0.295379847288132f, 0.903197109699249f, -0.295689195394516f, - 0.902970194816589f, -0.295998334884644f, 0.902743041515350f, -0.296307325363159f, - 0.902515649795532f, -0.296616137027740f, 0.902288019657135f, -0.296924799680710f, - 0.902060210704803f, -0.297233253717422f, 0.901832103729248f, -0.297541528940201f, - 0.901603758335114f, -0.297849655151367f, 0.901375174522400f, -0.298157602548599f, - 0.901146411895752f, -0.298465341329575f, 0.900917351245880f, -0.298772931098938f, - 0.900688111782074f, -0.299080342054367f, 0.900458574295044f, -0.299387603998184f, - 0.900228857994080f, -0.299694657325745f, 0.899998843669891f, -0.300001531839371f, - 0.899768650531769f, -0.300308227539063f, 0.899538159370422f, -0.300614774227142f, - 0.899307489395142f, -0.300921112298965f, 0.899076581001282f, -0.301227301359177f, - 0.898845434188843f, -0.301533311605453f, 0.898614048957825f, -0.301839113235474f, - 0.898382425308228f, -0.302144765853882f, 0.898150563240051f, -0.302450239658356f, - 0.897918462753296f, -0.302755534648895f, 0.897686123847961f, -0.303060621023178f, - 0.897453546524048f, -0.303365558385849f, 0.897220790386200f, -0.303670316934586f, - 0.896987736225128f, -0.303974896669388f, 0.896754503250122f, -0.304279297590256f, - 0.896520972251892f, -0.304583519697189f, 0.896287262439728f, -0.304887533187866f, - 0.896053314208984f, -0.305191397666931f, 0.895819067955017f, -0.305495083332062f, - 0.895584642887115f, -0.305798590183258f, 0.895349979400635f, -0.306101888418198f, - 0.895115137100220f, -0.306405037641525f, 0.894879996776581f, -0.306708008050919f, - 0.894644618034363f, -0.307010769844055f, 0.894409060478210f, -0.307313382625580f, - 0.894173204898834f, -0.307615786790848f, 0.893937170505524f, -0.307918041944504f, - 0.893700897693634f, -0.308220088481903f, 0.893464326858521f, -0.308521956205368f, - 0.893227577209473f, -0.308823645114899f, 0.892990648746490f, -0.309125155210495f, - 0.892753422260284f, -0.309426486492157f, 0.892515957355499f, -0.309727638959885f, - 0.892278313636780f, -0.310028612613678f, 0.892040371894836f, -0.310329377651215f, - 0.891802251338959f, -0.310629993677139f, 0.891563892364502f, -0.310930401086807f, - 0.891325294971466f, -0.311230629682541f, 0.891086459159851f, -0.311530679464340f, - 0.890847444534302f, -0.311830550432205f, 0.890608131885529f, -0.312130242586136f, - 0.890368640422821f, -0.312429755926132f, 0.890128850936890f, -0.312729060649872f, - 0.889888882637024f, -0.313028186559677f, 0.889648675918579f, -0.313327133655548f, - 0.889408230781555f, -0.313625901937485f, 0.889167606830597f, -0.313924491405487f, - 0.888926684856415f, -0.314222872257233f, 0.888685584068298f, -0.314521104097366f, - 0.888444244861603f, -0.314819127321243f, 0.888202667236328f, -0.315116971731186f, - 0.887960851192474f, -0.315414607524872f, 0.887718796730042f, -0.315712094306946f, - 0.887476563453674f, -0.316009372472763f, 0.887234091758728f, -0.316306471824646f, - 0.886991322040558f, -0.316603392362595f, 0.886748373508453f, -0.316900104284287f, - 0.886505246162415f, -0.317196637392044f, 0.886261820793152f, -0.317492991685867f, - 0.886018216609955f, -0.317789167165756f, 0.885774314403534f, -0.318085134029388f, - 0.885530233383179f, -0.318380922079086f, 0.885285973548889f, -0.318676531314850f, - 0.885041415691376f, -0.318971961736679f, 0.884796679019928f, -0.319267183542252f, - 0.884551644325256f, -0.319562226533890f, 0.884306430816650f, -0.319857090711594f, - 0.884061038494110f, -0.320151746273041f, 0.883815348148346f, -0.320446223020554f, - 0.883569478988647f, -0.320740520954132f, 0.883323311805725f, -0.321034610271454f, - 0.883076965808868f, -0.321328520774841f, 0.882830440998077f, -0.321622252464294f, - 0.882583618164063f, -0.321915775537491f, 0.882336616516113f, -0.322209119796753f, - 0.882089376449585f, -0.322502255439758f, 0.881841897964478f, -0.322795242071152f, - 0.881594181060791f, -0.323088020086288f, 0.881346285343170f, -0.323380589485168f, - 0.881098151206970f, -0.323672980070114f, 0.880849778652191f, -0.323965191841125f, - 0.880601167678833f, -0.324257194995880f, 0.880352377891541f, -0.324549019336700f, - 0.880103349685669f, -0.324840664863586f, 0.879854083061218f, -0.325132101774216f, - 0.879604578018188f, -0.325423330068588f, 0.879354894161224f, -0.325714409351349f, - 0.879104971885681f, -0.326005280017853f, 0.878854811191559f, -0.326295942068100f, - 0.878604412078857f, -0.326586425304413f, 0.878353834152222f, -0.326876699924469f, - 0.878103017807007f, -0.327166795730591f, 0.877851963043213f, -0.327456712722778f, - 0.877600669860840f, -0.327746421098709f, 0.877349197864532f, -0.328035950660706f, - 0.877097487449646f, -0.328325271606445f, 0.876845538616180f, -0.328614413738251f, - 0.876593410968781f, -0.328903347253799f, 0.876341044902802f, -0.329192101955414f, - 0.876088440418243f, -0.329480648040771f, 0.875835597515106f, -0.329769015312195f, - 0.875582575798035f, -0.330057173967361f, 0.875329315662384f, -0.330345153808594f, - 0.875075817108154f, -0.330632925033569f, 0.874822139739990f, -0.330920487642288f, - 0.874568223953247f, -0.331207901239395f, 0.874314069747925f, -0.331495076417923f, - 0.874059677124023f, -0.331782072782516f, 0.873805105686188f, -0.332068890333176f, - 0.873550295829773f, -0.332355499267578f, 0.873295307159424f, -0.332641899585724f, - 0.873040020465851f, -0.332928121089935f, 0.872784554958344f, -0.333214133977890f, - 0.872528910636902f, -0.333499968051910f, 0.872272968292236f, -0.333785593509674f, - 0.872016847133636f, -0.334071010351181f, 0.871760547161102f, -0.334356248378754f, - 0.871503949165344f, -0.334641307592392f, 0.871247172355652f, -0.334926128387451f, - 0.870990216732025f, -0.335210770368576f, 0.870733022689819f, -0.335495233535767f, - 0.870475590229034f, -0.335779488086700f, 0.870217919349670f, -0.336063534021378f, - 0.869960069656372f, -0.336347371339798f, 0.869701981544495f, -0.336631029844284f, - 0.869443655014038f, -0.336914509534836f, 0.869185149669647f, -0.337197750806808f, - 0.868926405906677f, -0.337480813264847f, 0.868667483329773f, -0.337763696908951f, - 0.868408262729645f, -0.338046342134476f, 0.868148922920227f, -0.338328808546066f, - 0.867889285087585f, -0.338611096143723f, 0.867629468441010f, -0.338893145322800f, - 0.867369413375854f, -0.339175015687943f, 0.867109179496765f, -0.339456677436829f, - 0.866848707199097f, -0.339738160371780f, 0.866588056087494f, -0.340019434690475f, - 0.866327106952667f, -0.340300500392914f, 0.866066038608551f, -0.340581357479095f, - 0.865804672241211f, -0.340862035751343f, 0.865543127059937f, -0.341142505407333f, - 0.865281403064728f, -0.341422766447067f, 0.865019381046295f, -0.341702848672867f, - 0.864757239818573f, -0.341982692480087f, 0.864494800567627f, -0.342262357473373f, - 0.864232182502747f, -0.342541843652725f, 0.863969385623932f, -0.342821091413498f, - 0.863706290721893f, -0.343100160360336f, 0.863443076610565f, -0.343379020690918f, - 0.863179564476013f, -0.343657672405243f, 0.862915873527527f, -0.343936115503311f, - 0.862652003765106f, -0.344214379787445f, 0.862387895584106f, -0.344492435455322f, - 0.862123548984528f, -0.344770282506943f, 0.861859023571014f, -0.345047920942307f, - 0.861594259738922f, -0.345325350761414f, 0.861329257488251f, -0.345602601766586f, - 0.861064076423645f, -0.345879614353180f, 0.860798716545105f, -0.346156448125839f, - 0.860533118247986f, -0.346433073282242f, 0.860267281532288f, -0.346709519624710f, - 0.860001266002655f, -0.346985727548599f, 0.859735012054443f, -0.347261756658554f, - 0.859468579292297f, -0.347537547349930f, 0.859201908111572f, -0.347813159227371f, - 0.858934998512268f, -0.348088562488556f, 0.858667910099030f, -0.348363757133484f, - 0.858400642871857f, -0.348638743162155f, 0.858133137226105f, -0.348913550376892f, - 0.857865393161774f, -0.349188119173050f, 0.857597470283508f, -0.349462509155273f, - 0.857329368591309f, -0.349736660718918f, 0.857060968875885f, -0.350010633468628f, - 0.856792449951172f, -0.350284397602081f, 0.856523692607880f, -0.350557953119278f, - 0.856254696846008f, -0.350831300020218f, 0.855985522270203f, -0.351104438304901f, - 0.855716109275818f, -0.351377367973328f, 0.855446517467499f, -0.351650089025497f, - 0.855176687240601f, -0.351922631263733f, 0.854906618595123f, -0.352194935083389f, - 0.854636430740356f, -0.352467030286789f, 0.854365944862366f, -0.352738946676254f, - 0.854095339775085f, -0.353010624647141f, 0.853824436664581f, -0.353282123804092f, - 0.853553414344788f, -0.353553384542465f, 0.853282094001770f, -0.353824466466904f, - 0.853010654449463f, -0.354095309972763f, 0.852738916873932f, -0.354365974664688f, - 0.852467060089111f, -0.354636400938034f, 0.852194905281067f, -0.354906648397446f, - 0.851922631263733f, -0.355176687240601f, 0.851650118827820f, -0.355446487665176f, - 0.851377367973328f, -0.355716109275818f, 0.851104438304901f, -0.355985492467880f, - 0.850831270217896f, -0.356254696846008f, 0.850557923316956f, -0.356523662805557f, - 0.850284397602081f, -0.356792420148849f, 0.850010633468628f, -0.357060998678207f, - 0.849736690521240f, -0.357329338788986f, 0.849462509155273f, -0.357597470283508f, - 0.849188148975372f, -0.357865422964096f, 0.848913550376892f, -0.358133137226105f, - 0.848638772964478f, -0.358400642871857f, 0.848363757133484f, -0.358667939901352f, - 0.848088562488556f, -0.358935028314590f, 0.847813189029694f, -0.359201908111572f, - 0.847537577152252f, -0.359468549489975f, 0.847261726856232f, -0.359735012054443f, - 0.846985757350922f, -0.360001266002655f, 0.846709489822388f, -0.360267281532288f, - 0.846433103084564f, -0.360533088445663f, 0.846156477928162f, -0.360798716545105f, - 0.845879614353180f, -0.361064106225967f, 0.845602571964264f, -0.361329287290573f, - 0.845325350761414f, -0.361594229936600f, 0.845047891139984f, -0.361858993768692f, - 0.844770252704620f, -0.362123548984528f, 0.844492435455322f, -0.362387865781784f, - 0.844214379787445f, -0.362651973962784f, 0.843936145305634f, -0.362915903329849f, - 0.843657672405243f, -0.363179564476013f, 0.843379020690918f, -0.363443046808243f, - 0.843100130558014f, -0.363706320524216f, 0.842821121215820f, -0.363969355821610f, - 0.842541813850403f, -0.364232182502747f, 0.842262387275696f, -0.364494800567627f, - 0.841982722282410f, -0.364757210016251f, 0.841702818870544f, -0.365019410848618f, - 0.841422796249390f, -0.365281373262405f, 0.841142535209656f, -0.365543156862259f, - 0.840862035751343f, -0.365804702043533f, 0.840581357479095f, -0.366066008806229f, - 0.840300500392914f, -0.366327136754990f, 0.840019404888153f, -0.366588026285172f, - 0.839738130569458f, -0.366848707199097f, 0.839456677436829f, -0.367109179496765f, - 0.839175045490265f, -0.367369443178177f, 0.838893175125122f, -0.367629468441010f, - 0.838611066341400f, -0.367889285087585f, 0.838328838348389f, -0.368148893117905f, - 0.838046371936798f, -0.368408292531967f, 0.837763667106628f, -0.368667453527451f, - 0.837480843067169f, -0.368926405906677f, 0.837197780609131f, -0.369185149669647f, - 0.836914479732513f, -0.369443655014038f, 0.836631059646606f, -0.369701951742172f, - 0.836347401142120f, -0.369960039854050f, 0.836063504219055f, -0.370217919349670f, - 0.835779488086700f, -0.370475560426712f, 0.835495233535767f, -0.370732992887497f, - 0.835210800170898f, -0.370990216732025f, 0.834926128387451f, -0.371247202157974f, - 0.834641277790070f, -0.371503978967667f, 0.834356248378754f, -0.371760547161102f, - 0.834071040153503f, -0.372016876935959f, 0.833785593509674f, -0.372272998094559f, - 0.833499968051910f, -0.372528880834579f, 0.833214163780212f, -0.372784584760666f, - 0.832928121089935f, -0.373040050268173f, 0.832641899585724f, -0.373295277357101f, - 0.832355499267578f, -0.373550295829773f, 0.832068860530853f, -0.373805105686188f, - 0.831782102584839f, -0.374059677124023f, 0.831495106220245f, -0.374314039945602f, - 0.831207871437073f, -0.374568194150925f, 0.830920517444611f, -0.374822109937668f, - 0.830632925033569f, -0.375075817108154f, 0.830345153808594f, -0.375329315662384f, - 0.830057144165039f, -0.375582575798035f, 0.829769015312195f, -0.375835597515106f, - 0.829480648040771f, -0.376088410615921f, 0.829192101955414f, -0.376341015100479f, - 0.828903317451477f, -0.376593410968781f, 0.828614413738251f, -0.376845568418503f, - 0.828325271606445f, -0.377097487449646f, 0.828035950660706f, -0.377349197864532f, - 0.827746450901031f, -0.377600699663162f, 0.827456712722778f, -0.377851963043213f, - 0.827166795730591f, -0.378102988004684f, 0.826876699924469f, -0.378353834152222f, - 0.826586425304413f, -0.378604412078857f, 0.826295912265778f, -0.378854811191559f, - 0.826005280017853f, -0.379104942083359f, 0.825714409351349f, -0.379354894161224f, - 0.825423359870911f, -0.379604607820511f, 0.825132071971893f, -0.379854083061218f, - 0.824840664863586f, -0.380103349685669f, 0.824549019336700f, -0.380352377891541f, - 0.824257194995880f, -0.380601197481155f, 0.823965191841125f, -0.380849778652191f, - 0.823673009872437f, -0.381098151206970f, 0.823380589485168f, -0.381346285343170f, - 0.823087990283966f, -0.381594210863113f, 0.822795212268829f, -0.381841897964478f, - 0.822502255439758f, -0.382089376449585f, 0.822209119796753f, -0.382336616516113f, - 0.821915745735168f, -0.382583618164063f, 0.821622252464294f, -0.382830440998077f, - 0.821328520774841f, -0.383076995611191f, 0.821034610271454f, -0.383323341608047f, - 0.820740520954132f, -0.383569449186325f, 0.820446193218231f, -0.383815348148346f, - 0.820151746273041f, -0.384061008691788f, 0.819857060909271f, -0.384306460618973f, - 0.819562196731567f, -0.384551674127579f, 0.819267153739929f, -0.384796649217606f, - 0.818971931934357f, -0.385041415691376f, 0.818676531314850f, -0.385285943746567f, - 0.818380951881409f, -0.385530263185501f, 0.818085134029388f, -0.385774344205856f, - 0.817789137363434f, -0.386018186807632f, 0.817493021488190f, -0.386261820793152f, - 0.817196667194366f, -0.386505216360092f, 0.816900074481964f, -0.386748403310776f, - 0.816603362560272f, -0.386991351842880f, 0.816306471824646f, -0.387234061956406f, - 0.816009342670441f, -0.387476563453674f, 0.815712094306946f, -0.387718826532364f, - 0.815414607524872f, -0.387960851192474f, 0.815116941928864f, -0.388202667236328f, - 0.814819097518921f, -0.388444244861603f, 0.814521074295044f, -0.388685584068298f, - 0.814222872257233f, -0.388926714658737f, 0.813924491405487f, -0.389167606830597f, - 0.813625931739807f, -0.389408260583878f, 0.813327133655548f, -0.389648675918579f, - 0.813028216362000f, -0.389888882637024f, 0.812729060649872f, -0.390128880739212f, - 0.812429726123810f, -0.390368610620499f, 0.812130272388458f, -0.390608131885529f, - 0.811830580234528f, -0.390847414731979f, 0.811530709266663f, -0.391086459159851f, - 0.811230659484863f, -0.391325294971466f, 0.810930430889130f, -0.391563892364502f, - 0.810629963874817f, -0.391802251338959f, 0.810329377651215f, -0.392040401697159f, - 0.810028612613678f, -0.392278283834457f, 0.809727668762207f, -0.392515957355499f, - 0.809426486492157f, -0.392753422260284f, 0.809125185012817f, -0.392990618944168f, - 0.808823645114899f, -0.393227607011795f, 0.808521986007690f, -0.393464356660843f, - 0.808220088481903f, -0.393700867891312f, 0.807918012142181f, -0.393937170505524f, - 0.807615816593170f, -0.394173204898834f, 0.807313382625580f, -0.394409030675888f, - 0.807010769844055f, -0.394644618034363f, 0.806707978248596f, -0.394879996776581f, - 0.806405067443848f, -0.395115107297897f, 0.806101918220520f, -0.395350009202957f, - 0.805798590183258f, -0.395584672689438f, 0.805495083332062f, -0.395819097757339f, - 0.805191397666931f, -0.396053284406662f, 0.804887533187866f, -0.396287262439728f, - 0.804583489894867f, -0.396520972251892f, 0.804279267787933f, -0.396754473447800f, - 0.803974866867065f, -0.396987736225128f, 0.803670346736908f, -0.397220760583878f, - 0.803365588188171f, -0.397453576326370f, 0.803060650825500f, -0.397686123847961f, - 0.802755534648895f, -0.397918462753296f, 0.802450239658356f, -0.398150533437729f, - 0.802144765853882f, -0.398382395505905f, 0.801839113235474f, -0.398614019155502f, - 0.801533281803131f, -0.398845434188843f, 0.801227271556854f, -0.399076581001282f, - 0.800921142101288f, -0.399307489395142f, 0.800614774227142f, -0.399538189172745f, - 0.800308227539063f, -0.399768620729446f, 0.800001561641693f, -0.399998843669891f, - 0.799694657325745f, -0.400228828191757f, 0.799387574195862f, -0.400458574295044f, - 0.799080371856689f, -0.400688081979752f, 0.798772931098938f, -0.400917351245880f, - 0.798465371131897f, -0.401146411895752f, 0.798157572746277f, -0.401375204324722f, - 0.797849655151367f, -0.401603758335114f, 0.797541558742523f, -0.401832103729248f, - 0.797233223915100f, -0.402060180902481f, 0.796924769878387f, -0.402288049459457f, - 0.796616137027740f, -0.402515679597855f, 0.796307325363159f, -0.402743041515350f, - 0.795998334884644f, -0.402970194816589f, 0.795689165592194f, -0.403197109699249f, - 0.795379877090454f, -0.403423786163330f, 0.795070350170136f, -0.403650224208832f, - 0.794760644435883f, -0.403876423835754f, 0.794450819492340f, -0.404102355241776f, - 0.794140756130219f, -0.404328078031540f, 0.793830573558807f, -0.404553562402725f, - 0.793520212173462f, -0.404778808355331f, 0.793209671974182f, -0.405003815889359f, - 0.792898952960968f, -0.405228585004807f, 0.792588055133820f, -0.405453115701675f, - 0.792276978492737f, -0.405677437782288f, 0.791965723037720f, -0.405901491641998f, - 0.791654348373413f, -0.406125307083130f, 0.791342735290527f, -0.406348884105682f, - 0.791031002998352f, -0.406572192907333f, 0.790719091892242f, -0.406795293092728f, - 0.790407001972198f, -0.407018154859543f, 0.790094733238220f, -0.407240778207779f, - 0.789782285690308f, -0.407463163137436f, 0.789469659328461f, -0.407685309648514f, - 0.789156913757324f, -0.407907217741013f, 0.788843929767609f, -0.408128857612610f, - 0.788530826568604f, -0.408350288867950f, 0.788217544555664f, -0.408571451902390f, - 0.787904083728790f, -0.408792406320572f, 0.787590444087982f, -0.409013092517853f, - 0.787276685237885f, -0.409233570098877f, 0.786962687969208f, -0.409453779459000f, - 0.786648571491241f, -0.409673750400543f, 0.786334276199341f, -0.409893482923508f, - 0.786019802093506f, -0.410112977027893f, 0.785705149173737f, -0.410332232713699f, - 0.785390377044678f, -0.410551249980927f, 0.785075426101685f, -0.410770028829575f, - 0.784760236740112f, -0.410988569259644f, 0.784444928169250f, -0.411206841468811f, - 0.784129500389099f, -0.411424905061722f, 0.783813834190369f, -0.411642700433731f, - 0.783498048782349f, -0.411860257387161f, 0.783182024955750f, -0.412077575922012f, - 0.782865881919861f, -0.412294656038284f, 0.782549619674683f, -0.412511497735977f, - 0.782233119010925f, -0.412728071212769f, 0.781916499137878f, -0.412944436073303f, - 0.781599700450897f, -0.413160532712936f, 0.781282722949982f, -0.413376390933990f, - 0.780965566635132f, -0.413592010736465f, 0.780648231506348f, -0.413807392120361f, - 0.780330777168274f, -0.414022535085678f, 0.780013144016266f, -0.414237409830093f, - 0.779695332050323f, -0.414452046155930f, 0.779377400875092f, -0.414666473865509f, - 0.779059290885925f, -0.414880603551865f, 0.778741002082825f, -0.415094524621964f, - 0.778422534465790f, -0.415308207273483f, 0.778103888034821f, -0.415521621704102f, - 0.777785122394562f, -0.415734797716141f, 0.777466177940369f, -0.415947735309601f, - 0.777147054672241f, -0.416160434484482f, 0.776827812194824f, -0.416372895240784f, - 0.776508331298828f, -0.416585087776184f, 0.776188731193542f, -0.416797041893005f, - 0.775869011878967f, -0.417008757591248f, 0.775549054145813f, -0.417220205068588f, - 0.775228977203369f, -0.417431443929672f, 0.774908721446991f, -0.417642414569855f, - 0.774588346481323f, -0.417853146791458f, 0.774267733097076f, -0.418063640594482f, - 0.773947000503540f, -0.418273866176605f, 0.773626148700714f, -0.418483853340149f, - 0.773305058479309f, -0.418693602085114f, 0.772983849048615f, -0.418903112411499f, - 0.772662520408630f, -0.419112354516983f, 0.772340953350067f, -0.419321358203888f, - 0.772019267082214f, -0.419530123472214f, 0.771697402000427f, -0.419738620519638f, - 0.771375417709351f, -0.419946908950806f, 0.771053194999695f, -0.420154929161072f, - 0.770730912685394f, -0.420362681150436f, 0.770408391952515f, -0.420570224523544f, - 0.770085752010345f, -0.420777499675751f, 0.769762933254242f, -0.420984506607056f, - 0.769439935684204f, -0.421191304922104f, 0.769116818904877f, -0.421397835016251f, - 0.768793523311615f, -0.421604126691818f, 0.768470108509064f, -0.421810150146484f, - 0.768146514892578f, -0.422015935182571f, 0.767822742462158f, -0.422221481800079f, - 0.767498791217804f, -0.422426789999008f, 0.767174720764160f, -0.422631829977036f, - 0.766850471496582f, -0.422836631536484f, 0.766526103019714f, -0.423041164875031f, - 0.766201555728912f, -0.423245459794998f, 0.765876889228821f, -0.423449516296387f, - 0.765551984310150f, -0.423653304576874f, 0.765226960182190f, -0.423856884241104f, - 0.764901816844940f, -0.424060165882111f, 0.764576494693756f, -0.424263238906860f, - 0.764250993728638f, -0.424466013908386f, 0.763925373554230f, -0.424668580293655f, - 0.763599574565887f, -0.424870878458023f, 0.763273596763611f, -0.425072938203812f, - 0.762947499752045f, -0.425274729728699f, 0.762621283531189f, -0.425476282835007f, - 0.762294828891754f, -0.425677597522736f, 0.761968255043030f, -0.425878643989563f, - 0.761641561985016f, -0.426079452037811f, 0.761314690113068f, -0.426279991865158f, - 0.760987639427185f, -0.426480293273926f, 0.760660469532013f, -0.426680356264114f, - 0.760333120822906f, -0.426880151033401f, 0.760005652904511f, -0.427079707384110f, - 0.759678006172180f, -0.427278995513916f, 0.759350180625916f, -0.427478045225143f, - 0.759022235870361f, -0.427676826715469f, 0.758694171905518f, -0.427875369787216f, - 0.758365929126740f, -0.428073674440384f, 0.758037507534027f, -0.428271710872650f, - 0.757708966732025f, -0.428469479084015f, 0.757380247116089f, -0.428667008876801f, - 0.757051348686218f, -0.428864300251007f, 0.756722390651703f, -0.429061323404312f, - 0.756393194198608f, -0.429258108139038f, 0.756063878536224f, -0.429454624652863f, - 0.755734443664551f, -0.429650902748108f, 0.755404829978943f, -0.429846942424774f, - 0.755075037479401f, -0.430042684078217f, 0.754745125770569f, -0.430238217115402f, - 0.754415094852448f, -0.430433481931686f, 0.754084885120392f, -0.430628478527069f, - 0.753754496574402f, -0.430823236703873f, 0.753423988819122f, -0.431017726659775f, - 0.753093302249908f, -0.431211978197098f, 0.752762496471405f, -0.431405961513519f, - 0.752431571483612f, -0.431599706411362f, 0.752100467681885f, -0.431793183088303f, - 0.751769185066223f, -0.431986421346664f, 0.751437783241272f, -0.432179391384125f, - 0.751106262207031f, -0.432372123003006f, 0.750774562358856f, -0.432564586400986f, - 0.750442683696747f, -0.432756811380386f, 0.750110685825348f, -0.432948768138886f, - 0.749778568744659f, -0.433140486478806f, 0.749446272850037f, -0.433331936597824f, - 0.749113857746124f, -0.433523118495941f, 0.748781263828278f, -0.433714061975479f, - 0.748448550701141f, -0.433904737234116f, 0.748115658760071f, -0.434095174074173f, - 0.747782647609711f, -0.434285342693329f, 0.747449457645416f, -0.434475272893906f, - 0.747116148471832f, -0.434664934873581f, 0.746782720088959f, -0.434854328632355f, - 0.746449112892151f, -0.435043483972549f, 0.746115326881409f, -0.435232400894165f, - 0.745781481266022f, -0.435421019792557f, 0.745447397232056f, -0.435609430074692f, - 0.745113253593445f, -0.435797542333603f, 0.744778931140900f, -0.435985416173935f, - 0.744444429874420f, -0.436173021793365f, 0.744109809398651f, -0.436360388994217f, - 0.743775069713593f, -0.436547487974167f, 0.743440151214600f, -0.436734348535538f, - 0.743105113506317f, -0.436920911073685f, 0.742769956588745f, -0.437107264995575f, - 0.742434620857239f, -0.437293320894241f, 0.742099165916443f, -0.437479138374329f, - 0.741763532161713f, -0.437664687633514f, 0.741427779197693f, -0.437849998474121f, - 0.741091907024384f, -0.438035041093826f, 0.740755856037140f, -0.438219845294952f, - 0.740419685840607f, -0.438404351472855f, 0.740083336830139f, -0.438588619232178f, - 0.739746868610382f, -0.438772648572922f, 0.739410281181335f, -0.438956409692764f, - 0.739073514938354f, -0.439139902591705f, 0.738736629486084f, -0.439323127269745f, - 0.738399624824524f, -0.439506113529205f, 0.738062441349030f, -0.439688831567764f, - 0.737725138664246f, -0.439871311187744f, 0.737387716770172f, -0.440053492784500f, - 0.737050116062164f, -0.440235435962677f, 0.736712396144867f, -0.440417140722275f, - 0.736374497413635f, -0.440598547458649f, 0.736036539077759f, -0.440779715776443f, - 0.735698342323303f, -0.440960645675659f, 0.735360085964203f, -0.441141277551651f, - 0.735021650791168f, -0.441321671009064f, 0.734683096408844f, -0.441501796245575f, - 0.734344422817230f, -0.441681683063507f, 0.734005570411682f, -0.441861271858215f, - 0.733666598796844f, -0.442040622234344f, 0.733327507972717f, -0.442219734191895f, - 0.732988238334656f, -0.442398548126221f, 0.732648849487305f, -0.442577123641968f, - 0.732309341430664f, -0.442755430936813f, 0.731969714164734f, -0.442933470010757f, - 0.731629908084869f, -0.443111270666122f, 0.731289982795715f, -0.443288803100586f, - 0.730949878692627f, -0.443466067314148f, 0.730609714984894f, -0.443643063306808f, - 0.730269372463226f, -0.443819820880890f, 0.729928910732269f, -0.443996280431747f, - 0.729588270187378f, -0.444172531366348f, 0.729247510433197f, -0.444348484277725f, - 0.728906631469727f, -0.444524168968201f, 0.728565633296967f, -0.444699615240097f, - 0.728224515914917f, -0.444874793291092f, 0.727883219718933f, -0.445049703121185f, - 0.727541804313660f, -0.445224374532700f, 0.727200269699097f, -0.445398747920990f, - 0.726858556270599f, -0.445572882890701f, 0.726516723632813f, -0.445746749639511f, - 0.726174771785736f, -0.445920348167419f, 0.725832700729370f, -0.446093708276749f, - 0.725490510463715f, -0.446266770362854f, 0.725148141384125f, -0.446439594030380f, - 0.724805653095245f, -0.446612149477005f, 0.724463045597076f, -0.446784436702728f, - 0.724120318889618f, -0.446956485509872f, 0.723777413368225f, -0.447128236293793f, - 0.723434448242188f, -0.447299748659134f, 0.723091304302216f, -0.447470992803574f, - 0.722747981548309f, -0.447641968727112f, 0.722404599189758f, -0.447812676429749f, - 0.722061097621918f, -0.447983115911484f, 0.721717417240143f, -0.448153316974640f, - 0.721373617649078f, -0.448323249816895f, 0.721029698848724f, -0.448492884635925f, - 0.720685660839081f, -0.448662281036377f, 0.720341444015503f, -0.448831409215927f, - 0.719997107982636f, -0.449000298976898f, 0.719652712345123f, -0.449168890714645f, - 0.719308137893677f, -0.449337244033813f, 0.718963444232941f, -0.449505299329758f, - 0.718618571758270f, -0.449673116207123f, 0.718273639678955f, -0.449840664863586f, - 0.717928528785706f, -0.450007945299149f, 0.717583298683167f, -0.450174957513809f, - 0.717238008975983f, -0.450341701507568f, 0.716892480850220f, -0.450508207082748f, - 0.716546893119812f, -0.450674414634705f, 0.716201186180115f, -0.450840383768082f, - 0.715855300426483f, -0.451006084680557f, 0.715509355068207f, -0.451171487569809f, - 0.715163230895996f, -0.451336652040482f, 0.714816987514496f, -0.451501548290253f, - 0.714470624923706f, -0.451666176319122f, 0.714124143123627f, -0.451830536127090f, - 0.713777542114258f, -0.451994657516479f, 0.713430821895599f, -0.452158480882645f, - 0.713083922863007f, -0.452322036027908f, 0.712736964225769f, -0.452485352754593f, - 0.712389826774597f, -0.452648371458054f, 0.712042629718781f, -0.452811151742935f, - 0.711695253849030f, -0.452973634004593f, 0.711347758769989f, -0.453135877847672f, - 0.711000144481659f, -0.453297853469849f, 0.710652410984039f, -0.453459560871124f, - 0.710304558277130f, -0.453621000051498f, 0.709956526756287f, -0.453782171010971f, - 0.709608435630798f, -0.453943043947220f, 0.709260225296021f, -0.454103678464890f, - 0.708911836147308f, -0.454264044761658f, 0.708563387393951f, -0.454424172639847f, - 0.708214759826660f, -0.454584002494812f, 0.707866072654724f, -0.454743564128876f, - 0.707517206668854f, -0.454902857542038f, 0.707168221473694f, -0.455061882734299f, - 0.706819176673889f, -0.455220639705658f, 0.706469953060150f, -0.455379128456116f, - 0.706120610237122f, -0.455537378787994f, 0.705771148204803f, -0.455695331096649f, - 0.705421566963196f, -0.455853015184402f, 0.705071866512299f, -0.456010431051254f, - 0.704722046852112f, -0.456167578697205f, 0.704372167587280f, -0.456324487924576f, - 0.704022109508514f, -0.456481099128723f, 0.703671932220459f, -0.456637442111969f, - 0.703321635723114f, -0.456793516874313f, 0.702971220016479f, -0.456949323415756f, - 0.702620685100555f, -0.457104891538620f, 0.702270030975342f, -0.457260161638260f, - 0.701919257640839f, -0.457415163516998f, 0.701568365097046f, -0.457569897174835f, - 0.701217353343964f, -0.457724362611771f, 0.700866222381592f, -0.457878559827805f, - 0.700514972209930f, -0.458032488822937f, 0.700163602828979f, -0.458186149597168f, - 0.699812114238739f, -0.458339542150497f, 0.699460506439209f, -0.458492636680603f, - 0.699108779430389f, -0.458645492792130f, 0.698756933212280f, -0.458798080682755f, - 0.698404967784882f, -0.458950400352478f, 0.698052942752838f, -0.459102421998978f, - 0.697700738906860f, -0.459254205226898f, 0.697348415851593f, -0.459405690431595f, - 0.696996033191681f, -0.459556937217712f, 0.696643471717834f, -0.459707885980606f, - 0.696290850639343f, -0.459858566522598f, 0.695938050746918f, -0.460008978843689f, - 0.695585191249847f, -0.460159152746201f, 0.695232212543488f, -0.460309028625488f, - 0.694879114627838f, -0.460458606481552f, 0.694525837898254f, -0.460607945919037f, - 0.694172501564026f, -0.460757017135620f, 0.693819046020508f, -0.460905820131302f, - 0.693465530872345f, -0.461054325103760f, 0.693111836910248f, -0.461202591657639f, - 0.692758023738861f, -0.461350560188293f, 0.692404091358185f, -0.461498260498047f, - 0.692050099372864f, -0.461645722389221f, 0.691695988178253f, -0.461792886257172f, - 0.691341698169708f, -0.461939752101898f, 0.690987348556519f, -0.462086379528046f, - 0.690632879734039f, -0.462232738733292f, 0.690278291702271f, -0.462378799915314f, - 0.689923584461212f, -0.462524622678757f, 0.689568817615509f, -0.462670147418976f, - 0.689213871955872f, -0.462815403938293f, 0.688858866691589f, -0.462960392236710f, - 0.688503682613373f, -0.463105112314224f, 0.688148438930511f, -0.463249564170837f, - 0.687793076038361f, -0.463393747806549f, 0.687437593936920f, -0.463537633419037f, - 0.687082052230835f, -0.463681250810623f, 0.686726331710815f, -0.463824629783630f, - 0.686370551586151f, -0.463967710733414f, 0.686014592647552f, -0.464110493659973f, - 0.685658574104309f, -0.464253038167953f, 0.685302436351776f, -0.464395314455032f, - 0.684946238994598f, -0.464537292718887f, 0.684589862823486f, -0.464679002761841f, - 0.684233427047729f, -0.464820444583893f, 0.683876872062683f, -0.464961618185043f, - 0.683520197868347f, -0.465102523565292f, 0.683163404464722f, -0.465243130922318f, - 0.682806491851807f, -0.465383470058441f, 0.682449519634247f, -0.465523540973663f, - 0.682092368602753f, -0.465663343667984f, 0.681735157966614f, -0.465802878141403f, - 0.681377887725830f, -0.465942144393921f, 0.681020438671112f, -0.466081112623215f, - 0.680662930011749f, -0.466219812631607f, 0.680305242538452f, -0.466358244419098f, - 0.679947495460510f, -0.466496407985687f, 0.679589688777924f, -0.466634273529053f, - 0.679231703281403f, -0.466771900653839f, 0.678873658180237f, -0.466909229755402f, - 0.678515493869781f, -0.467046260833740f, 0.678157210350037f, -0.467183053493500f, - 0.677798807621002f, -0.467319577932358f, 0.677440345287323f, -0.467455804347992f, - 0.677081763744354f, -0.467591762542725f, 0.676723062992096f, -0.467727422714233f, - 0.676364302635193f, -0.467862844467163f, 0.676005363464355f, -0.467997968196869f, - 0.675646364688873f, -0.468132823705673f, 0.675287246704102f, -0.468267410993576f, - 0.674928069114685f, -0.468401730060577f, 0.674568772315979f, -0.468535751104355f, - 0.674209356307983f, -0.468669503927231f, 0.673849821090698f, -0.468802988529205f, - 0.673490226268768f, -0.468936175107956f, 0.673130512237549f, -0.469069123268127f, - 0.672770678997040f, -0.469201773405075f, 0.672410726547241f, -0.469334155321121f, - 0.672050714492798f, -0.469466239213943f, 0.671690583229065f, -0.469598054885864f, - 0.671330332756042f, -0.469729602336884f, 0.670970022678375f, -0.469860881567001f, - 0.670609593391418f, -0.469991862773895f, 0.670249044895172f, -0.470122605562210f, - 0.669888436794281f, -0.470253020524979f, 0.669527709484100f, -0.470383197069168f, - 0.669166862964630f, -0.470513075590134f, 0.668805956840515f, -0.470642685890198f, - 0.668444931507111f, -0.470772027969360f, 0.668083786964417f, -0.470901101827621f, - 0.667722582817078f, -0.471029877662659f, 0.667361259460449f, -0.471158385276794f, - 0.666999816894531f, -0.471286594867706f, 0.666638314723969f, -0.471414536237717f, - 0.666276693344116f, -0.471542209386826f, 0.665914952754974f, -0.471669614315033f, - 0.665553152561188f, -0.471796721220016f, 0.665191233158112f, -0.471923559904099f, - 0.664829254150391f, -0.472050130367279f, 0.664467096328735f, -0.472176402807236f, - 0.664104938507080f, -0.472302407026291f, 0.663742601871490f, -0.472428143024445f, - 0.663380205631256f, -0.472553610801697f, 0.663017749786377f, -0.472678780555725f, - 0.662655174732208f, -0.472803652286530f, 0.662292480468750f, -0.472928285598755f, - 0.661929666996002f, -0.473052620887756f, 0.661566793918610f, -0.473176687955856f, - 0.661203861236572f, -0.473300457000732f, 0.660840749740601f, -0.473423957824707f, - 0.660477638244629f, -0.473547190427780f, 0.660114347934723f, -0.473670125007629f, - 0.659750998020172f, -0.473792791366577f, 0.659387588500977f, -0.473915189504623f, - 0.659024059772491f, -0.474037289619446f, 0.658660411834717f, -0.474159121513367f, - 0.658296704292297f, -0.474280685186386f, 0.657932877540588f, -0.474401950836182f, - 0.657568991184235f, -0.474522948265076f, 0.657204985618591f, -0.474643647670746f, - 0.656840860843658f, -0.474764078855515f, 0.656476676464081f, -0.474884241819382f, - 0.656112432479858f, -0.475004136562347f, 0.655748009681702f, -0.475123733282089f, - 0.655383586883545f, -0.475243031978607f, 0.655019044876099f, -0.475362062454224f, - 0.654654383659363f, -0.475480824708939f, 0.654289662837982f, -0.475599318742752f, - 0.653924822807312f, -0.475717514753342f, 0.653559923171997f, -0.475835442543030f, - 0.653194904327393f, -0.475953072309494f, 0.652829825878143f, -0.476070433855057f, - 0.652464628219604f, -0.476187497377396f, 0.652099311351776f, -0.476304292678833f, - 0.651733994483948f, -0.476420819759369f, 0.651368498802185f, -0.476537048816681f, - 0.651003003120422f, -0.476653009653091f, 0.650637328624725f, -0.476768702268600f, - 0.650271594524384f, -0.476884096860886f, 0.649905800819397f, -0.476999223232269f, - 0.649539887905121f, -0.477114051580429f, 0.649173915386200f, -0.477228611707687f, - 0.648807883262634f, -0.477342873811722f, 0.648441672325134f, -0.477456867694855f, - 0.648075461387634f, -0.477570593357086f, 0.647709131240845f, -0.477684020996094f, - 0.647342681884766f, -0.477797180414200f, 0.646976172924042f, -0.477910041809082f, - 0.646609604358673f, -0.478022634983063f, 0.646242916584015f, -0.478134930133820f, - 0.645876109600067f, -0.478246957063675f, 0.645509302616119f, -0.478358715772629f, - 0.645142316818237f, -0.478470176458359f, 0.644775331020355f, -0.478581339120865f, - 0.644408226013184f, -0.478692263364792f, 0.644041001796722f, -0.478802859783173f, - 0.643673717975616f, -0.478913217782974f, 0.643306374549866f, -0.479023247957230f, - 0.642938911914825f, -0.479133039712906f, 0.642571389675140f, -0.479242533445358f, - 0.642203748226166f, -0.479351729154587f, 0.641836047172546f, -0.479460656642914f, - 0.641468286514282f, -0.479569315910339f, 0.641100406646729f, -0.479677677154541f, - 0.640732467174530f, -0.479785770177841f, 0.640364408493042f, -0.479893565177917f, - 0.639996349811554f, -0.480001062154770f, 0.639628112316132f, -0.480108320713043f, - 0.639259815216064f, -0.480215251445770f, 0.638891458511353f, -0.480321943759918f, - 0.638523042201996f, -0.480428308248520f, 0.638154506683350f, -0.480534434318542f, - 0.637785911560059f, -0.480640232563019f, 0.637417197227478f, -0.480745792388916f, - 0.637048482894897f, -0.480851024389267f, 0.636679589748383f, -0.480956017971039f, - 0.636310696601868f, -0.481060713529587f, 0.635941684246063f, -0.481165111064911f, - 0.635572552680969f, -0.481269240379334f, 0.635203421115875f, -0.481373071670532f, - 0.634834170341492f, -0.481476634740829f, 0.634464859962463f, -0.481579899787903f, - 0.634095430374146f, -0.481682896614075f, 0.633725941181183f, -0.481785595417023f, - 0.633356392383575f, -0.481888025999069f, 0.632986724376678f, -0.481990188360214f, - 0.632616996765137f, -0.482092022895813f, 0.632247209548950f, -0.482193619012833f, - 0.631877362728119f, -0.482294887304306f, 0.631507396697998f, -0.482395917177200f, - 0.631137371063232f, -0.482496619224548f, 0.630767226219177f, -0.482597053050995f, - 0.630397081375122f, -0.482697218656540f, 0.630026817321777f, -0.482797086238861f, - 0.629656434059143f, -0.482896685600281f, 0.629286050796509f, -0.482995986938477f, - 0.628915548324585f, -0.483094990253448f, 0.628544986248016f, -0.483193725347519f, - 0.628174364566803f, -0.483292192220688f, 0.627803623676300f, -0.483390361070633f, - 0.627432823181152f, -0.483488231897354f, 0.627061963081360f, -0.483585834503174f, - 0.626691043376923f, -0.483683139085770f, 0.626320004463196f, -0.483780175447464f, - 0.625948905944824f, -0.483876913785934f, 0.625577747821808f, -0.483973383903503f, - 0.625206530094147f, -0.484069555997849f, 0.624835193157196f, -0.484165430068970f, - 0.624463796615601f, -0.484261035919189f, 0.624092340469360f, -0.484356373548508f, - 0.623720824718475f, -0.484451413154602f, 0.623349189758301f, -0.484546154737473f, - 0.622977554798126f, -0.484640628099442f, 0.622605800628662f, -0.484734803438187f, - 0.622233927249908f, -0.484828680753708f, 0.621862053871155f, -0.484922289848328f, - 0.621490061283112f, -0.485015630722046f, 0.621118068695068f, -0.485108673572540f, - 0.620745956897736f, -0.485201418399811f, 0.620373785495758f, -0.485293895006180f, - 0.620001494884491f, -0.485386073589325f, 0.619629204273224f, -0.485477954149246f, - 0.619256794452667f, -0.485569566488266f, 0.618884325027466f, -0.485660910606384f, - 0.618511795997620f, -0.485751956701279f, 0.618139207363129f, -0.485842704772949f, - 0.617766559123993f, -0.485933154821396f, 0.617393791675568f, -0.486023366451263f, - 0.617020964622498f, -0.486113250255585f, 0.616648077964783f, -0.486202865839005f, - 0.616275131702423f, -0.486292183399200f, 0.615902125835419f, -0.486381232738495f, - 0.615529060363770f, -0.486469984054565f, 0.615155875682831f, -0.486558437347412f, - 0.614782691001892f, -0.486646622419357f, 0.614409387111664f, -0.486734509468079f, - 0.614036023616791f, -0.486822128295898f, 0.613662600517273f, -0.486909449100494f, - 0.613289117813110f, -0.486996471881866f, 0.612915575504303f, -0.487083226442337f, - 0.612541973590851f, -0.487169682979584f, 0.612168252468109f, -0.487255871295929f, - 0.611794531345367f, -0.487341761589050f, 0.611420691013336f, -0.487427353858948f, - 0.611046791076660f, -0.487512677907944f, 0.610672831535339f, -0.487597703933716f, - 0.610298871994019f, -0.487682431936264f, 0.609924793243408f, -0.487766891717911f, - 0.609550595283508f, -0.487851053476334f, 0.609176397323608f, -0.487934947013855f, - 0.608802139759064f, -0.488018542528152f, 0.608427822589874f, -0.488101840019226f, - 0.608053386211395f, -0.488184869289398f, 0.607678949832916f, -0.488267600536346f, - 0.607304394245148f, -0.488350033760071f, 0.606929838657379f, -0.488432198762894f, - 0.606555163860321f, -0.488514065742493f, 0.606180429458618f, -0.488595664501190f, - 0.605805635452271f, -0.488676935434341f, 0.605430841445923f, -0.488757967948914f, - 0.605055928230286f, -0.488838672637939f, 0.604680955410004f, -0.488919109106064f, - 0.604305922985077f, -0.488999247550964f, 0.603930830955505f, -0.489079117774963f, - 0.603555679321289f, -0.489158689975739f, 0.603180468082428f, -0.489237964153290f, - 0.602805197238922f, -0.489316970109940f, 0.602429866790771f, -0.489395678043365f, - 0.602054476737976f, -0.489474087953568f, 0.601679027080536f, -0.489552229642868f, - 0.601303517818451f, -0.489630073308945f, 0.600927948951721f, -0.489707618951797f, - 0.600552320480347f, -0.489784896373749f, 0.600176632404327f, -0.489861875772476f, - 0.599800884723663f, -0.489938557147980f, 0.599425077438354f, -0.490014940500259f, - 0.599049210548401f, -0.490091055631638f, 0.598673284053802f, -0.490166902542114f, - 0.598297297954559f, -0.490242421627045f, 0.597921252250671f, -0.490317672491074f, - 0.597545146942139f, -0.490392625331879f, 0.597168982028961f, -0.490467309951782f, - 0.596792817115784f, -0.490541696548462f, 0.596416532993317f, -0.490615785121918f, - 0.596040189266205f, -0.490689605474472f, 0.595663845539093f, -0.490763127803802f, - 0.595287382602692f, -0.490836352109909f, 0.594910860061646f, -0.490909278392792f, - 0.594534337520599f, -0.490981936454773f, 0.594157755374908f, -0.491054296493530f, - 0.593781054019928f, -0.491126358509064f, 0.593404352664948f, -0.491198152303696f, - 0.593027591705322f, -0.491269648075104f, 0.592650771141052f, -0.491340845823288f, - 0.592273890972137f, -0.491411775350571f, 0.591896951198578f, -0.491482406854630f, - 0.591519951820374f, -0.491552740335464f, 0.591142892837524f, -0.491622805595398f, - 0.590765833854675f, -0.491692543029785f, 0.590388655662537f, -0.491762012243271f, - 0.590011477470398f, -0.491831213235855f, 0.589634180068970f, -0.491900116205215f, - 0.589256882667542f, -0.491968721151352f, 0.588879525661469f, -0.492037028074265f, - 0.588502109050751f, -0.492105036973953f, 0.588124632835388f, -0.492172777652740f, - 0.587747097015381f, -0.492240220308304f, 0.587369561195374f, -0.492307394742966f, - 0.586991965770721f, -0.492374241352081f, 0.586614251136780f, -0.492440819740295f, - 0.586236536502838f, -0.492507129907608f, 0.585858762264252f, -0.492573112249374f, - 0.585480928421021f, -0.492638826370239f, 0.585103094577789f, -0.492704242467880f, - 0.584725141525269f, -0.492769360542297f, 0.584347188472748f, -0.492834210395813f, - 0.583969175815582f, -0.492898762226105f, 0.583591103553772f, -0.492963016033173f, - 0.583212971687317f, -0.493026971817017f, 0.582834780216217f, -0.493090659379959f, - 0.582456588745117f, -0.493154048919678f, 0.582078278064728f, -0.493217140436172f, - 0.581699967384338f, -0.493279963731766f, 0.581321597099304f, -0.493342459201813f, - 0.580943167209625f, -0.493404686450958f, 0.580564737319946f, -0.493466645479202f, - 0.580186247825623f, -0.493528276681900f, 0.579807698726654f, -0.493589639663696f, - 0.579429090023041f, -0.493650704622269f, 0.579050421714783f, -0.493711471557617f, - 0.578671753406525f, -0.493771970272064f, 0.578292965888977f, -0.493832170963287f, - 0.577914178371429f, -0.493892073631287f, 0.577535390853882f, -0.493951678276062f, - 0.577156484127045f, -0.494011014699936f, 0.576777577400208f, -0.494070053100586f, - 0.576398611068726f, -0.494128793478012f, 0.576019585132599f, -0.494187235832214f, - 0.575640499591827f, -0.494245409965515f, 0.575261414051056f, -0.494303256273270f, - 0.574882268905640f, -0.494360834360123f, 0.574503064155579f, -0.494418144226074f, - 0.574123859405518f, -0.494475126266479f, 0.573744535446167f, -0.494531840085983f, - 0.573365211486816f, -0.494588255882263f, 0.572985887527466f, -0.494644373655319f, - 0.572606444358826f, -0.494700223207474f, 0.572227001190186f, -0.494755744934082f, - 0.571847498416901f, -0.494810998439789f, 0.571467995643616f, -0.494865983724594f, - 0.571088373661041f, -0.494920641183853f, 0.570708811283112f, -0.494975030422211f, - 0.570329129695892f, -0.495029091835022f, 0.569949388504028f, -0.495082914829254f, - 0.569569647312164f, -0.495136409997940f, 0.569189906120300f, -0.495189607143402f, - 0.568810045719147f, -0.495242536067963f, 0.568430185317993f, -0.495295166969299f, - 0.568050265312195f, -0.495347499847412f, 0.567670345306396f, -0.495399564504623f, - 0.567290365695953f, -0.495451331138611f, 0.566910326480865f, -0.495502769947052f, - 0.566530287265778f, -0.495553970336914f, 0.566150128841400f, -0.495604842901230f, - 0.565770030021667f, -0.495655417442322f, 0.565389811992645f, -0.495705723762512f, - 0.565009593963623f, -0.495755732059479f, 0.564629375934601f, -0.495805442333221f, - 0.564249038696289f, -0.495854884386063f, 0.563868701457977f, -0.495903998613358f, - 0.563488364219666f, -0.495952844619751f, 0.563107967376709f, -0.496001392602921f, - 0.562727510929108f, -0.496049642562866f, 0.562346994876862f, -0.496097624301910f, - 0.561966478824615f, -0.496145308017731f, 0.561585903167725f, -0.496192663908005f, - 0.561205327510834f, -0.496239781379700f, 0.560824692249298f, -0.496286571025848f, - 0.560444056987762f, -0.496333062648773f, 0.560063362121582f, -0.496379286050797f, - 0.559682607650757f, -0.496425211429596f, 0.559301853179932f, -0.496470838785172f, - 0.558921039104462f, -0.496516168117523f, 0.558540165424347f, -0.496561229228973f, - 0.558159291744232f, -0.496605962514877f, 0.557778418064117f, -0.496650427579880f, - 0.557397484779358f, -0.496694594621658f, 0.557016491889954f, -0.496738493442535f, - 0.556635499000549f, -0.496782064437866f, 0.556254446506500f, -0.496825367212296f, - 0.555873334407806f, -0.496868371963501f, 0.555492222309113f, -0.496911078691483f, - 0.555111110210419f, -0.496953487396240f, 0.554729938507080f, -0.496995598077774f, - 0.554348707199097f, -0.497037440538406f, 0.553967475891113f, -0.497078984975815f, - 0.553586184978485f, -0.497120231389999f, 0.553204894065857f, -0.497161179780960f, - 0.552823603153229f, -0.497201830148697f, 0.552442193031311f, -0.497242212295532f, - 0.552060842514038f, -0.497282296419144f, 0.551679372787476f, -0.497322082519531f, - 0.551297962665558f, -0.497361570596695f, 0.550916433334351f, -0.497400760650635f, - 0.550534904003143f, -0.497439652681351f, 0.550153374671936f, -0.497478276491165f, - 0.549771785736084f, -0.497516602277756f, 0.549390196800232f, -0.497554630041122f, - 0.549008548259735f, -0.497592359781265f, 0.548626899719238f, -0.497629791498184f, - 0.548245191574097f, -0.497666954994202f, 0.547863483428955f, -0.497703820466995f, - 0.547481775283813f, -0.497740387916565f, 0.547099947929382f, -0.497776657342911f, - 0.546718180179596f, -0.497812628746033f, 0.546336352825165f, -0.497848302125931f, - 0.545954465866089f, -0.497883707284927f, 0.545572578907013f, -0.497918814420700f, - 0.545190691947937f, -0.497953623533249f, 0.544808745384216f, -0.497988134622574f, - 0.544426798820496f, -0.498022347688675f, 0.544044792652130f, -0.498056292533875f, - 0.543662786483765f, -0.498089909553528f, 0.543280720710754f, -0.498123258352280f, - 0.542898654937744f, -0.498156309127808f, 0.542516589164734f, -0.498189061880112f, - 0.542134463787079f, -0.498221516609192f, 0.541752278804779f, -0.498253703117371f, - 0.541370153427124f, -0.498285561800003f, 0.540987968444824f, -0.498317152261734f, - 0.540605723857880f, -0.498348444700241f, 0.540223479270935f, -0.498379439115524f, - 0.539841234683990f, -0.498410135507584f, 0.539458930492401f, -0.498440563678741f, - 0.539076626300812f, -0.498470664024353f, 0.538694262504578f, -0.498500496149063f, - 0.538311958312988f, -0.498530030250549f, 0.537929534912109f, -0.498559266328812f, - 0.537547171115875f, -0.498588204383850f, 0.537164747714996f, -0.498616874217987f, - 0.536782264709473f, -0.498645216226578f, 0.536399841308594f, -0.498673290014267f, - 0.536017298698425f, -0.498701065778732f, 0.535634815692902f, -0.498728543519974f, - 0.535252273082733f, -0.498755723237991f, 0.534869730472565f, -0.498782604932785f, - 0.534487187862396f, -0.498809218406677f, 0.534104585647583f, -0.498835533857346f, - 0.533721983432770f, -0.498861521482468f, 0.533339321613312f, -0.498887240886688f, - 0.532956659793854f, -0.498912662267685f, 0.532573997974396f, -0.498937815427780f, - 0.532191336154938f, -0.498962640762329f, 0.531808614730835f, -0.498987197875977f, - 0.531425893306732f, -0.499011427164078f, 0.531043112277985f, -0.499035388231277f, - 0.530660390853882f, -0.499059051275253f, 0.530277609825134f, -0.499082416296005f, - 0.529894769191742f, -0.499105513095856f, 0.529511988162994f, -0.499128282070160f, - 0.529129147529602f, -0.499150782823563f, 0.528746306896210f, -0.499172955751419f, - 0.528363406658173f, -0.499194860458374f, 0.527980506420136f, -0.499216467142105f, - 0.527597606182098f, -0.499237775802612f, 0.527214705944061f, -0.499258816242218f, - 0.526831746101379f, -0.499279528856277f, 0.526448845863342f, -0.499299973249435f, - 0.526065826416016f, -0.499320119619370f, 0.525682866573334f, -0.499339967966080f, - 0.525299847126007f, -0.499359518289566f, 0.524916887283325f, -0.499378770589828f, - 0.524533808231354f, -0.499397724866867f, 0.524150788784027f, -0.499416410923004f, - 0.523767769336700f, -0.499434769153595f, 0.523384690284729f, -0.499452859163284f, - 0.523001611232758f, -0.499470651149750f, 0.522618472576141f, -0.499488145112991f, - 0.522235393524170f, -0.499505341053009f, 0.521852254867554f, -0.499522238969803f, - 0.521469116210938f, -0.499538868665695f, 0.521085977554321f, -0.499555170536041f, - 0.520702838897705f, -0.499571204185486f, 0.520319640636444f, -0.499586939811707f, - 0.519936442375183f, -0.499602377414703f, 0.519553244113922f, -0.499617516994476f, - 0.519170045852661f, -0.499632388353348f, 0.518786847591400f, -0.499646931886673f, - 0.518403589725494f, -0.499661177396774f, 0.518020391464233f, -0.499675154685974f, - 0.517637133598328f, -0.499688833951950f, 0.517253875732422f, -0.499702215194702f, - 0.516870558261871f, -0.499715298414230f, 0.516487300395966f, -0.499728083610535f, - 0.516103982925415f, -0.499740600585938f, 0.515720725059509f, -0.499752789735794f, - 0.515337407588959f, -0.499764710664749f, 0.514954090118408f, -0.499776333570480f, - 0.514570772647858f, -0.499787658452988f, 0.514187395572662f, -0.499798685312271f, - 0.513804078102112f, -0.499809414148331f, 0.513420701026917f, -0.499819844961166f, - 0.513037383556366f, -0.499830007553101f, 0.512654006481171f, -0.499839842319489f, - 0.512270629405975f, -0.499849408864975f, 0.511887252330780f, -0.499858677387238f, - 0.511503815650940f, -0.499867647886276f, 0.511120438575745f, -0.499876320362091f, - 0.510737061500549f, -0.499884694814682f, 0.510353624820709f, -0.499892801046371f, - 0.509970188140869f, -0.499900579452515f, 0.509586811065674f, -0.499908089637756f, - 0.509203374385834f, -0.499915301799774f, 0.508819937705994f, -0.499922215938568f, - 0.508436501026154f, -0.499928832054138f, 0.508053064346313f, -0.499935150146484f, - 0.507669627666473f, -0.499941170215607f, 0.507286131381989f, -0.499946922063828f, - 0.506902694702148f, -0.499952346086502f, 0.506519258022308f, -0.499957501888275f, - 0.506135761737823f, -0.499962359666824f, 0.505752325057983f, -0.499966919422150f, - 0.505368828773499f, -0.499971181154251f, 0.504985332489014f, -0.499975144863129f, - 0.504601895809174f, -0.499978810548782f, 0.504218399524689f, -0.499982208013535f, - 0.503834903240204f, -0.499985307455063f, 0.503451406955719f, -0.499988079071045f, - 0.503067970275879f, -0.499990582466125f, 0.502684473991394f, -0.499992787837982f, - 0.502300977706909f, -0.499994695186615f, 0.501917481422424f, -0.499996334314346f, - 0.501533985137939f, -0.499997645616531f, 0.501150488853455f, -0.499998688697815f, - 0.500766992568970f, -0.499999403953552f, 0.500383496284485f, -0.499999850988388f, -}; - - - -/** -* @brief Initialization function for the floating-point RFFT/RIFFT. -* @deprecated Do not use this function. It has been superceded by \ref arm_rfft_fast_init_f32 and will be removed -* in the future. -* @param[in,out] *S points to an instance of the floating-point RFFT/RIFFT structure. -* @param[in,out] *S_CFFT points to an instance of the floating-point CFFT/CIFFT structure. -* @param[in] fftLenReal length of the FFT. -* @param[in] ifftFlagR flag that selects forward (ifftFlagR=0) or inverse (ifftFlagR=1) transform. -* @param[in] bitReverseFlag flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. -* @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if fftLenReal is not a supported value. -* -* \par Description: -* \par -* The parameter fftLenReal Specifies length of RFFT/RIFFT Process. Supported FFT Lengths are 128, 512, 2048. -* \par -* The parameter ifftFlagR controls whether a forward or inverse transform is computed. -* Set(=1) ifftFlagR to calculate RIFFT, otherwise RFFT is calculated. -* \par -* The parameter bitReverseFlag controls whether output is in normal order or bit reversed order. -* Set(=1) bitReverseFlag for output to be in normal order otherwise output is in bit reversed order. -* \par -* This function also initializes Twiddle factor table. -*/ - -/** -* @} end of RealFFT_Table group -*/ - -/** -* @addtogroup RealFFT -* @{ -*/ - -arm_status arm_rfft_init_f32( - arm_rfft_instance_f32 * S, - arm_cfft_radix4_instance_f32 * S_CFFT, - uint32_t fftLenReal, - uint32_t ifftFlagR, - uint32_t bitReverseFlag) -{ - - /* Initialise the default arm status */ - arm_status status = ARM_MATH_SUCCESS; - - /* Initialize the Real FFT length */ - S->fftLenReal = (uint16_t) fftLenReal; - - /* Initialize the Complex FFT length */ - S->fftLenBy2 = (uint16_t) fftLenReal / 2U; - - /* Initialize the Twiddle coefficientA pointer */ - S->pTwiddleAReal = (float32_t *) realCoefA; - - /* Initialize the Twiddle coefficientB pointer */ - S->pTwiddleBReal = (float32_t *) realCoefB; - - /* Initialize the Flag for selection of RFFT or RIFFT */ - S->ifftFlagR = (uint8_t) ifftFlagR; - - /* Initialize the Flag for calculation Bit reversal or not */ - S->bitReverseFlagR = (uint8_t) bitReverseFlag; - - /* Initializations of structure parameters depending on the FFT length */ - switch (S->fftLenReal) - { - /* Init table modifier value */ - case 8192U: - S->twidCoefRModifier = 1U; - break; - case 2048U: - S->twidCoefRModifier = 4U; - break; - case 512U: - S->twidCoefRModifier = 16U; - break; - case 128U: - S->twidCoefRModifier = 64U; - break; - default: - /* Reporting argument error if rfftSize is not valid value */ - status = ARM_MATH_ARGUMENT_ERROR; - break; - } - - /* Init Complex FFT Instance */ - S->pCfft = S_CFFT; - - if (S->ifftFlagR) - { - /* Initializes the CIFFT Module for fftLenreal/2 length */ - arm_cfft_radix4_init_f32(S->pCfft, S->fftLenBy2, 1U, 0U); - } - else - { - /* Initializes the CFFT Module for fftLenreal/2 length */ - arm_cfft_radix4_init_f32(S->pCfft, S->fftLenBy2, 0U, 0U); - } - - /* return the status of RFFT Init function */ - return (status); - -} - - /** - * @} end of RealFFT group - */ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_rfft_init_q15.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_rfft_init_q15.c deleted file mode 100644 index 0e09737..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_rfft_init_q15.c +++ /dev/null @@ -1,2229 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_rfft_init_q15.c - * Description: RFFT & RIFFT Q15 initialisation function - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" -#include "arm_common_tables.h" -#include "arm_const_structs.h" - -/** -* @ingroup RealFFT -*/ - -/** - * @addtogroup RealFFT_Table Real FFT Tables -* @{ -*/ - -/** -* \par -* Generation fixed-point realCoefAQ15 array in Q15 format: -* \par -* n = 4096 -*
for (i = 0; i < n; i++)
-*  {
-*    pATable[2 * i] = 0.5 * (1.0 - sin (2 * PI / (double) (2 * n) * (double) i));
-*    pATable[2 * i + 1] = 0.5 * (-1.0 * cos (2 * PI / (double) (2 * n) * (double) i));
-*  } 
-* \par -* Convert to fixed point Q15 format -* round(pATable[i] * pow(2, 15)) -*/ -const q15_t ALIGN4 realCoefAQ15[8192] = { - (q15_t)0x4000, (q15_t)0xc000, (q15_t)0x3ff3, (q15_t)0xc000, (q15_t)0x3fe7, (q15_t)0xc000, (q15_t)0x3fda, (q15_t)0xc000, - (q15_t)0x3fce, (q15_t)0xc000, (q15_t)0x3fc1, (q15_t)0xc000, (q15_t)0x3fb5, (q15_t)0xc000, (q15_t)0x3fa8, (q15_t)0xc000, - (q15_t)0x3f9b, (q15_t)0xc000, (q15_t)0x3f8f, (q15_t)0xc000, (q15_t)0x3f82, (q15_t)0xc000, (q15_t)0x3f76, (q15_t)0xc001, - (q15_t)0x3f69, (q15_t)0xc001, (q15_t)0x3f5d, (q15_t)0xc001, (q15_t)0x3f50, (q15_t)0xc001, (q15_t)0x3f44, (q15_t)0xc001, - (q15_t)0x3f37, (q15_t)0xc001, (q15_t)0x3f2a, (q15_t)0xc001, (q15_t)0x3f1e, (q15_t)0xc002, (q15_t)0x3f11, (q15_t)0xc002, - (q15_t)0x3f05, (q15_t)0xc002, (q15_t)0x3ef8, (q15_t)0xc002, (q15_t)0x3eec, (q15_t)0xc002, (q15_t)0x3edf, (q15_t)0xc003, - (q15_t)0x3ed2, (q15_t)0xc003, (q15_t)0x3ec6, (q15_t)0xc003, (q15_t)0x3eb9, (q15_t)0xc003, (q15_t)0x3ead, (q15_t)0xc004, - (q15_t)0x3ea0, (q15_t)0xc004, (q15_t)0x3e94, (q15_t)0xc004, (q15_t)0x3e87, (q15_t)0xc004, (q15_t)0x3e7a, (q15_t)0xc005, - (q15_t)0x3e6e, (q15_t)0xc005, (q15_t)0x3e61, (q15_t)0xc005, (q15_t)0x3e55, (q15_t)0xc006, (q15_t)0x3e48, (q15_t)0xc006, - (q15_t)0x3e3c, (q15_t)0xc006, (q15_t)0x3e2f, (q15_t)0xc007, (q15_t)0x3e23, (q15_t)0xc007, (q15_t)0x3e16, (q15_t)0xc007, - (q15_t)0x3e09, (q15_t)0xc008, (q15_t)0x3dfd, (q15_t)0xc008, (q15_t)0x3df0, (q15_t)0xc009, (q15_t)0x3de4, (q15_t)0xc009, - (q15_t)0x3dd7, (q15_t)0xc009, (q15_t)0x3dcb, (q15_t)0xc00a, (q15_t)0x3dbe, (q15_t)0xc00a, (q15_t)0x3db2, (q15_t)0xc00b, - (q15_t)0x3da5, (q15_t)0xc00b, (q15_t)0x3d98, (q15_t)0xc00c, (q15_t)0x3d8c, (q15_t)0xc00c, (q15_t)0x3d7f, (q15_t)0xc00d, - (q15_t)0x3d73, (q15_t)0xc00d, (q15_t)0x3d66, (q15_t)0xc00e, (q15_t)0x3d5a, (q15_t)0xc00e, (q15_t)0x3d4d, (q15_t)0xc00f, - (q15_t)0x3d40, (q15_t)0xc00f, (q15_t)0x3d34, (q15_t)0xc010, (q15_t)0x3d27, (q15_t)0xc010, (q15_t)0x3d1b, (q15_t)0xc011, - (q15_t)0x3d0e, (q15_t)0xc011, (q15_t)0x3d02, (q15_t)0xc012, (q15_t)0x3cf5, (q15_t)0xc013, (q15_t)0x3ce9, (q15_t)0xc013, - (q15_t)0x3cdc, (q15_t)0xc014, (q15_t)0x3cd0, (q15_t)0xc014, (q15_t)0x3cc3, (q15_t)0xc015, (q15_t)0x3cb6, (q15_t)0xc016, - (q15_t)0x3caa, (q15_t)0xc016, (q15_t)0x3c9d, (q15_t)0xc017, (q15_t)0x3c91, (q15_t)0xc018, (q15_t)0x3c84, (q15_t)0xc018, - (q15_t)0x3c78, (q15_t)0xc019, (q15_t)0x3c6b, (q15_t)0xc01a, (q15_t)0x3c5f, (q15_t)0xc01a, (q15_t)0x3c52, (q15_t)0xc01b, - (q15_t)0x3c45, (q15_t)0xc01c, (q15_t)0x3c39, (q15_t)0xc01d, (q15_t)0x3c2c, (q15_t)0xc01d, (q15_t)0x3c20, (q15_t)0xc01e, - (q15_t)0x3c13, (q15_t)0xc01f, (q15_t)0x3c07, (q15_t)0xc020, (q15_t)0x3bfa, (q15_t)0xc020, (q15_t)0x3bee, (q15_t)0xc021, - (q15_t)0x3be1, (q15_t)0xc022, (q15_t)0x3bd5, (q15_t)0xc023, (q15_t)0x3bc8, (q15_t)0xc024, (q15_t)0x3bbc, (q15_t)0xc024, - (q15_t)0x3baf, (q15_t)0xc025, (q15_t)0x3ba2, (q15_t)0xc026, (q15_t)0x3b96, (q15_t)0xc027, (q15_t)0x3b89, (q15_t)0xc028, - (q15_t)0x3b7d, (q15_t)0xc029, (q15_t)0x3b70, (q15_t)0xc02a, (q15_t)0x3b64, (q15_t)0xc02b, (q15_t)0x3b57, (q15_t)0xc02b, - (q15_t)0x3b4b, (q15_t)0xc02c, (q15_t)0x3b3e, (q15_t)0xc02d, (q15_t)0x3b32, (q15_t)0xc02e, (q15_t)0x3b25, (q15_t)0xc02f, - (q15_t)0x3b19, (q15_t)0xc030, (q15_t)0x3b0c, (q15_t)0xc031, (q15_t)0x3b00, (q15_t)0xc032, (q15_t)0x3af3, (q15_t)0xc033, - (q15_t)0x3ae6, (q15_t)0xc034, (q15_t)0x3ada, (q15_t)0xc035, (q15_t)0x3acd, (q15_t)0xc036, (q15_t)0x3ac1, (q15_t)0xc037, - (q15_t)0x3ab4, (q15_t)0xc038, (q15_t)0x3aa8, (q15_t)0xc039, (q15_t)0x3a9b, (q15_t)0xc03a, (q15_t)0x3a8f, (q15_t)0xc03b, - (q15_t)0x3a82, (q15_t)0xc03c, (q15_t)0x3a76, (q15_t)0xc03d, (q15_t)0x3a69, (q15_t)0xc03f, (q15_t)0x3a5d, (q15_t)0xc040, - (q15_t)0x3a50, (q15_t)0xc041, (q15_t)0x3a44, (q15_t)0xc042, (q15_t)0x3a37, (q15_t)0xc043, (q15_t)0x3a2b, (q15_t)0xc044, - (q15_t)0x3a1e, (q15_t)0xc045, (q15_t)0x3a12, (q15_t)0xc047, (q15_t)0x3a05, (q15_t)0xc048, (q15_t)0x39f9, (q15_t)0xc049, - (q15_t)0x39ec, (q15_t)0xc04a, (q15_t)0x39e0, (q15_t)0xc04b, (q15_t)0x39d3, (q15_t)0xc04c, (q15_t)0x39c7, (q15_t)0xc04e, - (q15_t)0x39ba, (q15_t)0xc04f, (q15_t)0x39ae, (q15_t)0xc050, (q15_t)0x39a1, (q15_t)0xc051, (q15_t)0x3995, (q15_t)0xc053, - (q15_t)0x3988, (q15_t)0xc054, (q15_t)0x397c, (q15_t)0xc055, (q15_t)0x396f, (q15_t)0xc056, (q15_t)0x3963, (q15_t)0xc058, - (q15_t)0x3956, (q15_t)0xc059, (q15_t)0x394a, (q15_t)0xc05a, (q15_t)0x393d, (q15_t)0xc05c, (q15_t)0x3931, (q15_t)0xc05d, - (q15_t)0x3924, (q15_t)0xc05e, (q15_t)0x3918, (q15_t)0xc060, (q15_t)0x390b, (q15_t)0xc061, (q15_t)0x38ff, (q15_t)0xc062, - (q15_t)0x38f2, (q15_t)0xc064, (q15_t)0x38e6, (q15_t)0xc065, (q15_t)0x38d9, (q15_t)0xc067, (q15_t)0x38cd, (q15_t)0xc068, - (q15_t)0x38c0, (q15_t)0xc069, (q15_t)0x38b4, (q15_t)0xc06b, (q15_t)0x38a7, (q15_t)0xc06c, (q15_t)0x389b, (q15_t)0xc06e, - (q15_t)0x388e, (q15_t)0xc06f, (q15_t)0x3882, (q15_t)0xc071, (q15_t)0x3875, (q15_t)0xc072, (q15_t)0x3869, (q15_t)0xc074, - (q15_t)0x385c, (q15_t)0xc075, (q15_t)0x3850, (q15_t)0xc077, (q15_t)0x3843, (q15_t)0xc078, (q15_t)0x3837, (q15_t)0xc07a, - (q15_t)0x382a, (q15_t)0xc07b, (q15_t)0x381e, (q15_t)0xc07d, (q15_t)0x3811, (q15_t)0xc07e, (q15_t)0x3805, (q15_t)0xc080, - (q15_t)0x37f9, (q15_t)0xc081, (q15_t)0x37ec, (q15_t)0xc083, (q15_t)0x37e0, (q15_t)0xc085, (q15_t)0x37d3, (q15_t)0xc086, - (q15_t)0x37c7, (q15_t)0xc088, (q15_t)0x37ba, (q15_t)0xc089, (q15_t)0x37ae, (q15_t)0xc08b, (q15_t)0x37a1, (q15_t)0xc08d, - (q15_t)0x3795, (q15_t)0xc08e, (q15_t)0x3788, (q15_t)0xc090, (q15_t)0x377c, (q15_t)0xc092, (q15_t)0x376f, (q15_t)0xc093, - (q15_t)0x3763, (q15_t)0xc095, (q15_t)0x3757, (q15_t)0xc097, (q15_t)0x374a, (q15_t)0xc098, (q15_t)0x373e, (q15_t)0xc09a, - (q15_t)0x3731, (q15_t)0xc09c, (q15_t)0x3725, (q15_t)0xc09e, (q15_t)0x3718, (q15_t)0xc09f, (q15_t)0x370c, (q15_t)0xc0a1, - (q15_t)0x36ff, (q15_t)0xc0a3, (q15_t)0x36f3, (q15_t)0xc0a5, (q15_t)0x36e7, (q15_t)0xc0a6, (q15_t)0x36da, (q15_t)0xc0a8, - (q15_t)0x36ce, (q15_t)0xc0aa, (q15_t)0x36c1, (q15_t)0xc0ac, (q15_t)0x36b5, (q15_t)0xc0ae, (q15_t)0x36a8, (q15_t)0xc0af, - (q15_t)0x369c, (q15_t)0xc0b1, (q15_t)0x3690, (q15_t)0xc0b3, (q15_t)0x3683, (q15_t)0xc0b5, (q15_t)0x3677, (q15_t)0xc0b7, - (q15_t)0x366a, (q15_t)0xc0b9, (q15_t)0x365e, (q15_t)0xc0bb, (q15_t)0x3651, (q15_t)0xc0bd, (q15_t)0x3645, (q15_t)0xc0be, - (q15_t)0x3639, (q15_t)0xc0c0, (q15_t)0x362c, (q15_t)0xc0c2, (q15_t)0x3620, (q15_t)0xc0c4, (q15_t)0x3613, (q15_t)0xc0c6, - (q15_t)0x3607, (q15_t)0xc0c8, (q15_t)0x35fa, (q15_t)0xc0ca, (q15_t)0x35ee, (q15_t)0xc0cc, (q15_t)0x35e2, (q15_t)0xc0ce, - (q15_t)0x35d5, (q15_t)0xc0d0, (q15_t)0x35c9, (q15_t)0xc0d2, (q15_t)0x35bc, (q15_t)0xc0d4, (q15_t)0x35b0, (q15_t)0xc0d6, - (q15_t)0x35a4, (q15_t)0xc0d8, (q15_t)0x3597, (q15_t)0xc0da, (q15_t)0x358b, (q15_t)0xc0dc, (q15_t)0x357e, (q15_t)0xc0de, - (q15_t)0x3572, (q15_t)0xc0e0, (q15_t)0x3566, (q15_t)0xc0e2, (q15_t)0x3559, (q15_t)0xc0e4, (q15_t)0x354d, (q15_t)0xc0e7, - (q15_t)0x3540, (q15_t)0xc0e9, (q15_t)0x3534, (q15_t)0xc0eb, (q15_t)0x3528, (q15_t)0xc0ed, (q15_t)0x351b, (q15_t)0xc0ef, - (q15_t)0x350f, (q15_t)0xc0f1, (q15_t)0x3503, (q15_t)0xc0f3, (q15_t)0x34f6, (q15_t)0xc0f6, (q15_t)0x34ea, (q15_t)0xc0f8, - (q15_t)0x34dd, (q15_t)0xc0fa, (q15_t)0x34d1, (q15_t)0xc0fc, (q15_t)0x34c5, (q15_t)0xc0fe, (q15_t)0x34b8, (q15_t)0xc100, - (q15_t)0x34ac, (q15_t)0xc103, (q15_t)0x34a0, (q15_t)0xc105, (q15_t)0x3493, (q15_t)0xc107, (q15_t)0x3487, (q15_t)0xc109, - (q15_t)0x347b, (q15_t)0xc10c, (q15_t)0x346e, (q15_t)0xc10e, (q15_t)0x3462, (q15_t)0xc110, (q15_t)0x3455, (q15_t)0xc113, - (q15_t)0x3449, (q15_t)0xc115, (q15_t)0x343d, (q15_t)0xc117, (q15_t)0x3430, (q15_t)0xc119, (q15_t)0x3424, (q15_t)0xc11c, - (q15_t)0x3418, (q15_t)0xc11e, (q15_t)0x340b, (q15_t)0xc120, (q15_t)0x33ff, (q15_t)0xc123, (q15_t)0x33f3, (q15_t)0xc125, - (q15_t)0x33e6, (q15_t)0xc128, (q15_t)0x33da, (q15_t)0xc12a, (q15_t)0x33ce, (q15_t)0xc12c, (q15_t)0x33c1, (q15_t)0xc12f, - (q15_t)0x33b5, (q15_t)0xc131, (q15_t)0x33a9, (q15_t)0xc134, (q15_t)0x339c, (q15_t)0xc136, (q15_t)0x3390, (q15_t)0xc138, - (q15_t)0x3384, (q15_t)0xc13b, (q15_t)0x3377, (q15_t)0xc13d, (q15_t)0x336b, (q15_t)0xc140, (q15_t)0x335f, (q15_t)0xc142, - (q15_t)0x3352, (q15_t)0xc145, (q15_t)0x3346, (q15_t)0xc147, (q15_t)0x333a, (q15_t)0xc14a, (q15_t)0x332d, (q15_t)0xc14c, - (q15_t)0x3321, (q15_t)0xc14f, (q15_t)0x3315, (q15_t)0xc151, (q15_t)0x3308, (q15_t)0xc154, (q15_t)0x32fc, (q15_t)0xc156, - (q15_t)0x32f0, (q15_t)0xc159, (q15_t)0x32e4, (q15_t)0xc15b, (q15_t)0x32d7, (q15_t)0xc15e, (q15_t)0x32cb, (q15_t)0xc161, - (q15_t)0x32bf, (q15_t)0xc163, (q15_t)0x32b2, (q15_t)0xc166, (q15_t)0x32a6, (q15_t)0xc168, (q15_t)0x329a, (q15_t)0xc16b, - (q15_t)0x328e, (q15_t)0xc16e, (q15_t)0x3281, (q15_t)0xc170, (q15_t)0x3275, (q15_t)0xc173, (q15_t)0x3269, (q15_t)0xc176, - (q15_t)0x325c, (q15_t)0xc178, (q15_t)0x3250, (q15_t)0xc17b, (q15_t)0x3244, (q15_t)0xc17e, (q15_t)0x3238, (q15_t)0xc180, - (q15_t)0x322b, (q15_t)0xc183, (q15_t)0x321f, (q15_t)0xc186, (q15_t)0x3213, (q15_t)0xc189, (q15_t)0x3207, (q15_t)0xc18b, - (q15_t)0x31fa, (q15_t)0xc18e, (q15_t)0x31ee, (q15_t)0xc191, (q15_t)0x31e2, (q15_t)0xc194, (q15_t)0x31d5, (q15_t)0xc196, - (q15_t)0x31c9, (q15_t)0xc199, (q15_t)0x31bd, (q15_t)0xc19c, (q15_t)0x31b1, (q15_t)0xc19f, (q15_t)0x31a4, (q15_t)0xc1a2, - (q15_t)0x3198, (q15_t)0xc1a4, (q15_t)0x318c, (q15_t)0xc1a7, (q15_t)0x3180, (q15_t)0xc1aa, (q15_t)0x3174, (q15_t)0xc1ad, - (q15_t)0x3167, (q15_t)0xc1b0, (q15_t)0x315b, (q15_t)0xc1b3, (q15_t)0x314f, (q15_t)0xc1b6, (q15_t)0x3143, (q15_t)0xc1b8, - (q15_t)0x3136, (q15_t)0xc1bb, (q15_t)0x312a, (q15_t)0xc1be, (q15_t)0x311e, (q15_t)0xc1c1, (q15_t)0x3112, (q15_t)0xc1c4, - (q15_t)0x3105, (q15_t)0xc1c7, (q15_t)0x30f9, (q15_t)0xc1ca, (q15_t)0x30ed, (q15_t)0xc1cd, (q15_t)0x30e1, (q15_t)0xc1d0, - (q15_t)0x30d5, (q15_t)0xc1d3, (q15_t)0x30c8, (q15_t)0xc1d6, (q15_t)0x30bc, (q15_t)0xc1d9, (q15_t)0x30b0, (q15_t)0xc1dc, - (q15_t)0x30a4, (q15_t)0xc1df, (q15_t)0x3098, (q15_t)0xc1e2, (q15_t)0x308b, (q15_t)0xc1e5, (q15_t)0x307f, (q15_t)0xc1e8, - (q15_t)0x3073, (q15_t)0xc1eb, (q15_t)0x3067, (q15_t)0xc1ee, (q15_t)0x305b, (q15_t)0xc1f1, (q15_t)0x304e, (q15_t)0xc1f4, - (q15_t)0x3042, (q15_t)0xc1f7, (q15_t)0x3036, (q15_t)0xc1fa, (q15_t)0x302a, (q15_t)0xc1fd, (q15_t)0x301e, (q15_t)0xc201, - (q15_t)0x3012, (q15_t)0xc204, (q15_t)0x3005, (q15_t)0xc207, (q15_t)0x2ff9, (q15_t)0xc20a, (q15_t)0x2fed, (q15_t)0xc20d, - (q15_t)0x2fe1, (q15_t)0xc210, (q15_t)0x2fd5, (q15_t)0xc213, (q15_t)0x2fc9, (q15_t)0xc217, (q15_t)0x2fbc, (q15_t)0xc21a, - (q15_t)0x2fb0, (q15_t)0xc21d, (q15_t)0x2fa4, (q15_t)0xc220, (q15_t)0x2f98, (q15_t)0xc223, (q15_t)0x2f8c, (q15_t)0xc227, - (q15_t)0x2f80, (q15_t)0xc22a, (q15_t)0x2f74, (q15_t)0xc22d, (q15_t)0x2f67, (q15_t)0xc230, (q15_t)0x2f5b, (q15_t)0xc234, - (q15_t)0x2f4f, (q15_t)0xc237, (q15_t)0x2f43, (q15_t)0xc23a, (q15_t)0x2f37, (q15_t)0xc23e, (q15_t)0x2f2b, (q15_t)0xc241, - (q15_t)0x2f1f, (q15_t)0xc244, (q15_t)0x2f13, (q15_t)0xc247, (q15_t)0x2f06, (q15_t)0xc24b, (q15_t)0x2efa, (q15_t)0xc24e, - (q15_t)0x2eee, (q15_t)0xc251, (q15_t)0x2ee2, (q15_t)0xc255, (q15_t)0x2ed6, (q15_t)0xc258, (q15_t)0x2eca, (q15_t)0xc25c, - (q15_t)0x2ebe, (q15_t)0xc25f, (q15_t)0x2eb2, (q15_t)0xc262, (q15_t)0x2ea6, (q15_t)0xc266, (q15_t)0x2e99, (q15_t)0xc269, - (q15_t)0x2e8d, (q15_t)0xc26d, (q15_t)0x2e81, (q15_t)0xc270, (q15_t)0x2e75, (q15_t)0xc273, (q15_t)0x2e69, (q15_t)0xc277, - (q15_t)0x2e5d, (q15_t)0xc27a, (q15_t)0x2e51, (q15_t)0xc27e, (q15_t)0x2e45, (q15_t)0xc281, (q15_t)0x2e39, (q15_t)0xc285, - (q15_t)0x2e2d, (q15_t)0xc288, (q15_t)0x2e21, (q15_t)0xc28c, (q15_t)0x2e15, (q15_t)0xc28f, (q15_t)0x2e09, (q15_t)0xc293, - (q15_t)0x2dfc, (q15_t)0xc296, (q15_t)0x2df0, (q15_t)0xc29a, (q15_t)0x2de4, (q15_t)0xc29d, (q15_t)0x2dd8, (q15_t)0xc2a1, - (q15_t)0x2dcc, (q15_t)0xc2a5, (q15_t)0x2dc0, (q15_t)0xc2a8, (q15_t)0x2db4, (q15_t)0xc2ac, (q15_t)0x2da8, (q15_t)0xc2af, - (q15_t)0x2d9c, (q15_t)0xc2b3, (q15_t)0x2d90, (q15_t)0xc2b7, (q15_t)0x2d84, (q15_t)0xc2ba, (q15_t)0x2d78, (q15_t)0xc2be, - (q15_t)0x2d6c, (q15_t)0xc2c1, (q15_t)0x2d60, (q15_t)0xc2c5, (q15_t)0x2d54, (q15_t)0xc2c9, (q15_t)0x2d48, (q15_t)0xc2cc, - (q15_t)0x2d3c, (q15_t)0xc2d0, (q15_t)0x2d30, (q15_t)0xc2d4, (q15_t)0x2d24, (q15_t)0xc2d8, (q15_t)0x2d18, (q15_t)0xc2db, - (q15_t)0x2d0c, (q15_t)0xc2df, (q15_t)0x2d00, (q15_t)0xc2e3, (q15_t)0x2cf4, (q15_t)0xc2e6, (q15_t)0x2ce8, (q15_t)0xc2ea, - (q15_t)0x2cdc, (q15_t)0xc2ee, (q15_t)0x2cd0, (q15_t)0xc2f2, (q15_t)0x2cc4, (q15_t)0xc2f5, (q15_t)0x2cb8, (q15_t)0xc2f9, - (q15_t)0x2cac, (q15_t)0xc2fd, (q15_t)0x2ca0, (q15_t)0xc301, (q15_t)0x2c94, (q15_t)0xc305, (q15_t)0x2c88, (q15_t)0xc308, - (q15_t)0x2c7c, (q15_t)0xc30c, (q15_t)0x2c70, (q15_t)0xc310, (q15_t)0x2c64, (q15_t)0xc314, (q15_t)0x2c58, (q15_t)0xc318, - (q15_t)0x2c4c, (q15_t)0xc31c, (q15_t)0x2c40, (q15_t)0xc320, (q15_t)0x2c34, (q15_t)0xc323, (q15_t)0x2c28, (q15_t)0xc327, - (q15_t)0x2c1c, (q15_t)0xc32b, (q15_t)0x2c10, (q15_t)0xc32f, (q15_t)0x2c05, (q15_t)0xc333, (q15_t)0x2bf9, (q15_t)0xc337, - (q15_t)0x2bed, (q15_t)0xc33b, (q15_t)0x2be1, (q15_t)0xc33f, (q15_t)0x2bd5, (q15_t)0xc343, (q15_t)0x2bc9, (q15_t)0xc347, - (q15_t)0x2bbd, (q15_t)0xc34b, (q15_t)0x2bb1, (q15_t)0xc34f, (q15_t)0x2ba5, (q15_t)0xc353, (q15_t)0x2b99, (q15_t)0xc357, - (q15_t)0x2b8d, (q15_t)0xc35b, (q15_t)0x2b81, (q15_t)0xc35f, (q15_t)0x2b75, (q15_t)0xc363, (q15_t)0x2b6a, (q15_t)0xc367, - (q15_t)0x2b5e, (q15_t)0xc36b, (q15_t)0x2b52, (q15_t)0xc36f, (q15_t)0x2b46, (q15_t)0xc373, (q15_t)0x2b3a, (q15_t)0xc377, - (q15_t)0x2b2e, (q15_t)0xc37b, (q15_t)0x2b22, (q15_t)0xc37f, (q15_t)0x2b16, (q15_t)0xc383, (q15_t)0x2b0a, (q15_t)0xc387, - (q15_t)0x2aff, (q15_t)0xc38c, (q15_t)0x2af3, (q15_t)0xc390, (q15_t)0x2ae7, (q15_t)0xc394, (q15_t)0x2adb, (q15_t)0xc398, - (q15_t)0x2acf, (q15_t)0xc39c, (q15_t)0x2ac3, (q15_t)0xc3a0, (q15_t)0x2ab7, (q15_t)0xc3a5, (q15_t)0x2aac, (q15_t)0xc3a9, - (q15_t)0x2aa0, (q15_t)0xc3ad, (q15_t)0x2a94, (q15_t)0xc3b1, (q15_t)0x2a88, (q15_t)0xc3b5, (q15_t)0x2a7c, (q15_t)0xc3ba, - (q15_t)0x2a70, (q15_t)0xc3be, (q15_t)0x2a65, (q15_t)0xc3c2, (q15_t)0x2a59, (q15_t)0xc3c6, (q15_t)0x2a4d, (q15_t)0xc3ca, - (q15_t)0x2a41, (q15_t)0xc3cf, (q15_t)0x2a35, (q15_t)0xc3d3, (q15_t)0x2a29, (q15_t)0xc3d7, (q15_t)0x2a1e, (q15_t)0xc3dc, - (q15_t)0x2a12, (q15_t)0xc3e0, (q15_t)0x2a06, (q15_t)0xc3e4, (q15_t)0x29fa, (q15_t)0xc3e9, (q15_t)0x29ee, (q15_t)0xc3ed, - (q15_t)0x29e3, (q15_t)0xc3f1, (q15_t)0x29d7, (q15_t)0xc3f6, (q15_t)0x29cb, (q15_t)0xc3fa, (q15_t)0x29bf, (q15_t)0xc3fe, - (q15_t)0x29b4, (q15_t)0xc403, (q15_t)0x29a8, (q15_t)0xc407, (q15_t)0x299c, (q15_t)0xc40b, (q15_t)0x2990, (q15_t)0xc410, - (q15_t)0x2984, (q15_t)0xc414, (q15_t)0x2979, (q15_t)0xc419, (q15_t)0x296d, (q15_t)0xc41d, (q15_t)0x2961, (q15_t)0xc422, - (q15_t)0x2955, (q15_t)0xc426, (q15_t)0x294a, (q15_t)0xc42a, (q15_t)0x293e, (q15_t)0xc42f, (q15_t)0x2932, (q15_t)0xc433, - (q15_t)0x2926, (q15_t)0xc438, (q15_t)0x291b, (q15_t)0xc43c, (q15_t)0x290f, (q15_t)0xc441, (q15_t)0x2903, (q15_t)0xc445, - (q15_t)0x28f7, (q15_t)0xc44a, (q15_t)0x28ec, (q15_t)0xc44e, (q15_t)0x28e0, (q15_t)0xc453, (q15_t)0x28d4, (q15_t)0xc457, - (q15_t)0x28c9, (q15_t)0xc45c, (q15_t)0x28bd, (q15_t)0xc461, (q15_t)0x28b1, (q15_t)0xc465, (q15_t)0x28a5, (q15_t)0xc46a, - (q15_t)0x289a, (q15_t)0xc46e, (q15_t)0x288e, (q15_t)0xc473, (q15_t)0x2882, (q15_t)0xc478, (q15_t)0x2877, (q15_t)0xc47c, - (q15_t)0x286b, (q15_t)0xc481, (q15_t)0x285f, (q15_t)0xc485, (q15_t)0x2854, (q15_t)0xc48a, (q15_t)0x2848, (q15_t)0xc48f, - (q15_t)0x283c, (q15_t)0xc493, (q15_t)0x2831, (q15_t)0xc498, (q15_t)0x2825, (q15_t)0xc49d, (q15_t)0x2819, (q15_t)0xc4a1, - (q15_t)0x280e, (q15_t)0xc4a6, (q15_t)0x2802, (q15_t)0xc4ab, (q15_t)0x27f6, (q15_t)0xc4b0, (q15_t)0x27eb, (q15_t)0xc4b4, - (q15_t)0x27df, (q15_t)0xc4b9, (q15_t)0x27d3, (q15_t)0xc4be, (q15_t)0x27c8, (q15_t)0xc4c2, (q15_t)0x27bc, (q15_t)0xc4c7, - (q15_t)0x27b1, (q15_t)0xc4cc, (q15_t)0x27a5, (q15_t)0xc4d1, (q15_t)0x2799, (q15_t)0xc4d6, (q15_t)0x278e, (q15_t)0xc4da, - (q15_t)0x2782, (q15_t)0xc4df, (q15_t)0x2777, (q15_t)0xc4e4, (q15_t)0x276b, (q15_t)0xc4e9, (q15_t)0x275f, (q15_t)0xc4ee, - (q15_t)0x2754, (q15_t)0xc4f2, (q15_t)0x2748, (q15_t)0xc4f7, (q15_t)0x273d, (q15_t)0xc4fc, (q15_t)0x2731, (q15_t)0xc501, - (q15_t)0x2725, (q15_t)0xc506, (q15_t)0x271a, (q15_t)0xc50b, (q15_t)0x270e, (q15_t)0xc510, (q15_t)0x2703, (q15_t)0xc515, - (q15_t)0x26f7, (q15_t)0xc51a, (q15_t)0x26ec, (q15_t)0xc51e, (q15_t)0x26e0, (q15_t)0xc523, (q15_t)0x26d4, (q15_t)0xc528, - (q15_t)0x26c9, (q15_t)0xc52d, (q15_t)0x26bd, (q15_t)0xc532, (q15_t)0x26b2, (q15_t)0xc537, (q15_t)0x26a6, (q15_t)0xc53c, - (q15_t)0x269b, (q15_t)0xc541, (q15_t)0x268f, (q15_t)0xc546, (q15_t)0x2684, (q15_t)0xc54b, (q15_t)0x2678, (q15_t)0xc550, - (q15_t)0x266d, (q15_t)0xc555, (q15_t)0x2661, (q15_t)0xc55a, (q15_t)0x2656, (q15_t)0xc55f, (q15_t)0x264a, (q15_t)0xc564, - (q15_t)0x263f, (q15_t)0xc569, (q15_t)0x2633, (q15_t)0xc56e, (q15_t)0x2628, (q15_t)0xc573, (q15_t)0x261c, (q15_t)0xc578, - (q15_t)0x2611, (q15_t)0xc57e, (q15_t)0x2605, (q15_t)0xc583, (q15_t)0x25fa, (q15_t)0xc588, (q15_t)0x25ee, (q15_t)0xc58d, - (q15_t)0x25e3, (q15_t)0xc592, (q15_t)0x25d7, (q15_t)0xc597, (q15_t)0x25cc, (q15_t)0xc59c, (q15_t)0x25c0, (q15_t)0xc5a1, - (q15_t)0x25b5, (q15_t)0xc5a7, (q15_t)0x25a9, (q15_t)0xc5ac, (q15_t)0x259e, (q15_t)0xc5b1, (q15_t)0x2592, (q15_t)0xc5b6, - (q15_t)0x2587, (q15_t)0xc5bb, (q15_t)0x257c, (q15_t)0xc5c1, (q15_t)0x2570, (q15_t)0xc5c6, (q15_t)0x2565, (q15_t)0xc5cb, - (q15_t)0x2559, (q15_t)0xc5d0, (q15_t)0x254e, (q15_t)0xc5d5, (q15_t)0x2542, (q15_t)0xc5db, (q15_t)0x2537, (q15_t)0xc5e0, - (q15_t)0x252c, (q15_t)0xc5e5, (q15_t)0x2520, (q15_t)0xc5ea, (q15_t)0x2515, (q15_t)0xc5f0, (q15_t)0x2509, (q15_t)0xc5f5, - (q15_t)0x24fe, (q15_t)0xc5fa, (q15_t)0x24f3, (q15_t)0xc600, (q15_t)0x24e7, (q15_t)0xc605, (q15_t)0x24dc, (q15_t)0xc60a, - (q15_t)0x24d0, (q15_t)0xc610, (q15_t)0x24c5, (q15_t)0xc615, (q15_t)0x24ba, (q15_t)0xc61a, (q15_t)0x24ae, (q15_t)0xc620, - (q15_t)0x24a3, (q15_t)0xc625, (q15_t)0x2498, (q15_t)0xc62a, (q15_t)0x248c, (q15_t)0xc630, (q15_t)0x2481, (q15_t)0xc635, - (q15_t)0x2476, (q15_t)0xc63b, (q15_t)0x246a, (q15_t)0xc640, (q15_t)0x245f, (q15_t)0xc645, (q15_t)0x2454, (q15_t)0xc64b, - (q15_t)0x2448, (q15_t)0xc650, (q15_t)0x243d, (q15_t)0xc656, (q15_t)0x2432, (q15_t)0xc65b, (q15_t)0x2426, (q15_t)0xc661, - (q15_t)0x241b, (q15_t)0xc666, (q15_t)0x2410, (q15_t)0xc66c, (q15_t)0x2404, (q15_t)0xc671, (q15_t)0x23f9, (q15_t)0xc677, - (q15_t)0x23ee, (q15_t)0xc67c, (q15_t)0x23e2, (q15_t)0xc682, (q15_t)0x23d7, (q15_t)0xc687, (q15_t)0x23cc, (q15_t)0xc68d, - (q15_t)0x23c1, (q15_t)0xc692, (q15_t)0x23b5, (q15_t)0xc698, (q15_t)0x23aa, (q15_t)0xc69d, (q15_t)0x239f, (q15_t)0xc6a3, - (q15_t)0x2394, (q15_t)0xc6a8, (q15_t)0x2388, (q15_t)0xc6ae, (q15_t)0x237d, (q15_t)0xc6b4, (q15_t)0x2372, (q15_t)0xc6b9, - (q15_t)0x2367, (q15_t)0xc6bf, (q15_t)0x235b, (q15_t)0xc6c5, (q15_t)0x2350, (q15_t)0xc6ca, (q15_t)0x2345, (q15_t)0xc6d0, - (q15_t)0x233a, (q15_t)0xc6d5, (q15_t)0x232e, (q15_t)0xc6db, (q15_t)0x2323, (q15_t)0xc6e1, (q15_t)0x2318, (q15_t)0xc6e6, - (q15_t)0x230d, (q15_t)0xc6ec, (q15_t)0x2301, (q15_t)0xc6f2, (q15_t)0x22f6, (q15_t)0xc6f7, (q15_t)0x22eb, (q15_t)0xc6fd, - (q15_t)0x22e0, (q15_t)0xc703, (q15_t)0x22d5, (q15_t)0xc709, (q15_t)0x22ca, (q15_t)0xc70e, (q15_t)0x22be, (q15_t)0xc714, - (q15_t)0x22b3, (q15_t)0xc71a, (q15_t)0x22a8, (q15_t)0xc720, (q15_t)0x229d, (q15_t)0xc725, (q15_t)0x2292, (q15_t)0xc72b, - (q15_t)0x2287, (q15_t)0xc731, (q15_t)0x227b, (q15_t)0xc737, (q15_t)0x2270, (q15_t)0xc73d, (q15_t)0x2265, (q15_t)0xc742, - (q15_t)0x225a, (q15_t)0xc748, (q15_t)0x224f, (q15_t)0xc74e, (q15_t)0x2244, (q15_t)0xc754, (q15_t)0x2239, (q15_t)0xc75a, - (q15_t)0x222d, (q15_t)0xc75f, (q15_t)0x2222, (q15_t)0xc765, (q15_t)0x2217, (q15_t)0xc76b, (q15_t)0x220c, (q15_t)0xc771, - (q15_t)0x2201, (q15_t)0xc777, (q15_t)0x21f6, (q15_t)0xc77d, (q15_t)0x21eb, (q15_t)0xc783, (q15_t)0x21e0, (q15_t)0xc789, - (q15_t)0x21d5, (q15_t)0xc78f, (q15_t)0x21ca, (q15_t)0xc795, (q15_t)0x21be, (q15_t)0xc79a, (q15_t)0x21b3, (q15_t)0xc7a0, - (q15_t)0x21a8, (q15_t)0xc7a6, (q15_t)0x219d, (q15_t)0xc7ac, (q15_t)0x2192, (q15_t)0xc7b2, (q15_t)0x2187, (q15_t)0xc7b8, - (q15_t)0x217c, (q15_t)0xc7be, (q15_t)0x2171, (q15_t)0xc7c4, (q15_t)0x2166, (q15_t)0xc7ca, (q15_t)0x215b, (q15_t)0xc7d0, - (q15_t)0x2150, (q15_t)0xc7d6, (q15_t)0x2145, (q15_t)0xc7dc, (q15_t)0x213a, (q15_t)0xc7e2, (q15_t)0x212f, (q15_t)0xc7e8, - (q15_t)0x2124, (q15_t)0xc7ee, (q15_t)0x2119, (q15_t)0xc7f5, (q15_t)0x210e, (q15_t)0xc7fb, (q15_t)0x2103, (q15_t)0xc801, - (q15_t)0x20f8, (q15_t)0xc807, (q15_t)0x20ed, (q15_t)0xc80d, (q15_t)0x20e2, (q15_t)0xc813, (q15_t)0x20d7, (q15_t)0xc819, - (q15_t)0x20cc, (q15_t)0xc81f, (q15_t)0x20c1, (q15_t)0xc825, (q15_t)0x20b6, (q15_t)0xc82b, (q15_t)0x20ab, (q15_t)0xc832, - (q15_t)0x20a0, (q15_t)0xc838, (q15_t)0x2095, (q15_t)0xc83e, (q15_t)0x208a, (q15_t)0xc844, (q15_t)0x207f, (q15_t)0xc84a, - (q15_t)0x2074, (q15_t)0xc850, (q15_t)0x2069, (q15_t)0xc857, (q15_t)0x205e, (q15_t)0xc85d, (q15_t)0x2054, (q15_t)0xc863, - (q15_t)0x2049, (q15_t)0xc869, (q15_t)0x203e, (q15_t)0xc870, (q15_t)0x2033, (q15_t)0xc876, (q15_t)0x2028, (q15_t)0xc87c, - (q15_t)0x201d, (q15_t)0xc882, (q15_t)0x2012, (q15_t)0xc889, (q15_t)0x2007, (q15_t)0xc88f, (q15_t)0x1ffc, (q15_t)0xc895, - (q15_t)0x1ff1, (q15_t)0xc89b, (q15_t)0x1fe7, (q15_t)0xc8a2, (q15_t)0x1fdc, (q15_t)0xc8a8, (q15_t)0x1fd1, (q15_t)0xc8ae, - (q15_t)0x1fc6, (q15_t)0xc8b5, (q15_t)0x1fbb, (q15_t)0xc8bb, (q15_t)0x1fb0, (q15_t)0xc8c1, (q15_t)0x1fa5, (q15_t)0xc8c8, - (q15_t)0x1f9b, (q15_t)0xc8ce, (q15_t)0x1f90, (q15_t)0xc8d4, (q15_t)0x1f85, (q15_t)0xc8db, (q15_t)0x1f7a, (q15_t)0xc8e1, - (q15_t)0x1f6f, (q15_t)0xc8e8, (q15_t)0x1f65, (q15_t)0xc8ee, (q15_t)0x1f5a, (q15_t)0xc8f4, (q15_t)0x1f4f, (q15_t)0xc8fb, - (q15_t)0x1f44, (q15_t)0xc901, (q15_t)0x1f39, (q15_t)0xc908, (q15_t)0x1f2f, (q15_t)0xc90e, (q15_t)0x1f24, (q15_t)0xc915, - (q15_t)0x1f19, (q15_t)0xc91b, (q15_t)0x1f0e, (q15_t)0xc921, (q15_t)0x1f03, (q15_t)0xc928, (q15_t)0x1ef9, (q15_t)0xc92e, - (q15_t)0x1eee, (q15_t)0xc935, (q15_t)0x1ee3, (q15_t)0xc93b, (q15_t)0x1ed8, (q15_t)0xc942, (q15_t)0x1ece, (q15_t)0xc948, - (q15_t)0x1ec3, (q15_t)0xc94f, (q15_t)0x1eb8, (q15_t)0xc955, (q15_t)0x1ead, (q15_t)0xc95c, (q15_t)0x1ea3, (q15_t)0xc963, - (q15_t)0x1e98, (q15_t)0xc969, (q15_t)0x1e8d, (q15_t)0xc970, (q15_t)0x1e83, (q15_t)0xc976, (q15_t)0x1e78, (q15_t)0xc97d, - (q15_t)0x1e6d, (q15_t)0xc983, (q15_t)0x1e62, (q15_t)0xc98a, (q15_t)0x1e58, (q15_t)0xc991, (q15_t)0x1e4d, (q15_t)0xc997, - (q15_t)0x1e42, (q15_t)0xc99e, (q15_t)0x1e38, (q15_t)0xc9a4, (q15_t)0x1e2d, (q15_t)0xc9ab, (q15_t)0x1e22, (q15_t)0xc9b2, - (q15_t)0x1e18, (q15_t)0xc9b8, (q15_t)0x1e0d, (q15_t)0xc9bf, (q15_t)0x1e02, (q15_t)0xc9c6, (q15_t)0x1df8, (q15_t)0xc9cc, - (q15_t)0x1ded, (q15_t)0xc9d3, (q15_t)0x1de2, (q15_t)0xc9da, (q15_t)0x1dd8, (q15_t)0xc9e0, (q15_t)0x1dcd, (q15_t)0xc9e7, - (q15_t)0x1dc3, (q15_t)0xc9ee, (q15_t)0x1db8, (q15_t)0xc9f5, (q15_t)0x1dad, (q15_t)0xc9fb, (q15_t)0x1da3, (q15_t)0xca02, - (q15_t)0x1d98, (q15_t)0xca09, (q15_t)0x1d8e, (q15_t)0xca10, (q15_t)0x1d83, (q15_t)0xca16, (q15_t)0x1d78, (q15_t)0xca1d, - (q15_t)0x1d6e, (q15_t)0xca24, (q15_t)0x1d63, (q15_t)0xca2b, (q15_t)0x1d59, (q15_t)0xca32, (q15_t)0x1d4e, (q15_t)0xca38, - (q15_t)0x1d44, (q15_t)0xca3f, (q15_t)0x1d39, (q15_t)0xca46, (q15_t)0x1d2e, (q15_t)0xca4d, (q15_t)0x1d24, (q15_t)0xca54, - (q15_t)0x1d19, (q15_t)0xca5b, (q15_t)0x1d0f, (q15_t)0xca61, (q15_t)0x1d04, (q15_t)0xca68, (q15_t)0x1cfa, (q15_t)0xca6f, - (q15_t)0x1cef, (q15_t)0xca76, (q15_t)0x1ce5, (q15_t)0xca7d, (q15_t)0x1cda, (q15_t)0xca84, (q15_t)0x1cd0, (q15_t)0xca8b, - (q15_t)0x1cc5, (q15_t)0xca92, (q15_t)0x1cbb, (q15_t)0xca99, (q15_t)0x1cb0, (q15_t)0xca9f, (q15_t)0x1ca6, (q15_t)0xcaa6, - (q15_t)0x1c9b, (q15_t)0xcaad, (q15_t)0x1c91, (q15_t)0xcab4, (q15_t)0x1c86, (q15_t)0xcabb, (q15_t)0x1c7c, (q15_t)0xcac2, - (q15_t)0x1c72, (q15_t)0xcac9, (q15_t)0x1c67, (q15_t)0xcad0, (q15_t)0x1c5d, (q15_t)0xcad7, (q15_t)0x1c52, (q15_t)0xcade, - (q15_t)0x1c48, (q15_t)0xcae5, (q15_t)0x1c3d, (q15_t)0xcaec, (q15_t)0x1c33, (q15_t)0xcaf3, (q15_t)0x1c29, (q15_t)0xcafa, - (q15_t)0x1c1e, (q15_t)0xcb01, (q15_t)0x1c14, (q15_t)0xcb08, (q15_t)0x1c09, (q15_t)0xcb0f, (q15_t)0x1bff, (q15_t)0xcb16, - (q15_t)0x1bf5, (q15_t)0xcb1e, (q15_t)0x1bea, (q15_t)0xcb25, (q15_t)0x1be0, (q15_t)0xcb2c, (q15_t)0x1bd5, (q15_t)0xcb33, - (q15_t)0x1bcb, (q15_t)0xcb3a, (q15_t)0x1bc1, (q15_t)0xcb41, (q15_t)0x1bb6, (q15_t)0xcb48, (q15_t)0x1bac, (q15_t)0xcb4f, - (q15_t)0x1ba2, (q15_t)0xcb56, (q15_t)0x1b97, (q15_t)0xcb5e, (q15_t)0x1b8d, (q15_t)0xcb65, (q15_t)0x1b83, (q15_t)0xcb6c, - (q15_t)0x1b78, (q15_t)0xcb73, (q15_t)0x1b6e, (q15_t)0xcb7a, (q15_t)0x1b64, (q15_t)0xcb81, (q15_t)0x1b59, (q15_t)0xcb89, - (q15_t)0x1b4f, (q15_t)0xcb90, (q15_t)0x1b45, (q15_t)0xcb97, (q15_t)0x1b3b, (q15_t)0xcb9e, (q15_t)0x1b30, (q15_t)0xcba5, - (q15_t)0x1b26, (q15_t)0xcbad, (q15_t)0x1b1c, (q15_t)0xcbb4, (q15_t)0x1b11, (q15_t)0xcbbb, (q15_t)0x1b07, (q15_t)0xcbc2, - (q15_t)0x1afd, (q15_t)0xcbca, (q15_t)0x1af3, (q15_t)0xcbd1, (q15_t)0x1ae8, (q15_t)0xcbd8, (q15_t)0x1ade, (q15_t)0xcbe0, - (q15_t)0x1ad4, (q15_t)0xcbe7, (q15_t)0x1aca, (q15_t)0xcbee, (q15_t)0x1abf, (q15_t)0xcbf5, (q15_t)0x1ab5, (q15_t)0xcbfd, - (q15_t)0x1aab, (q15_t)0xcc04, (q15_t)0x1aa1, (q15_t)0xcc0b, (q15_t)0x1a97, (q15_t)0xcc13, (q15_t)0x1a8c, (q15_t)0xcc1a, - (q15_t)0x1a82, (q15_t)0xcc21, (q15_t)0x1a78, (q15_t)0xcc29, (q15_t)0x1a6e, (q15_t)0xcc30, (q15_t)0x1a64, (q15_t)0xcc38, - (q15_t)0x1a5a, (q15_t)0xcc3f, (q15_t)0x1a4f, (q15_t)0xcc46, (q15_t)0x1a45, (q15_t)0xcc4e, (q15_t)0x1a3b, (q15_t)0xcc55, - (q15_t)0x1a31, (q15_t)0xcc5d, (q15_t)0x1a27, (q15_t)0xcc64, (q15_t)0x1a1d, (q15_t)0xcc6b, (q15_t)0x1a13, (q15_t)0xcc73, - (q15_t)0x1a08, (q15_t)0xcc7a, (q15_t)0x19fe, (q15_t)0xcc82, (q15_t)0x19f4, (q15_t)0xcc89, (q15_t)0x19ea, (q15_t)0xcc91, - (q15_t)0x19e0, (q15_t)0xcc98, (q15_t)0x19d6, (q15_t)0xcca0, (q15_t)0x19cc, (q15_t)0xcca7, (q15_t)0x19c2, (q15_t)0xccaf, - (q15_t)0x19b8, (q15_t)0xccb6, (q15_t)0x19ae, (q15_t)0xccbe, (q15_t)0x19a4, (q15_t)0xccc5, (q15_t)0x199a, (q15_t)0xcccd, - (q15_t)0x198f, (q15_t)0xccd4, (q15_t)0x1985, (q15_t)0xccdc, (q15_t)0x197b, (q15_t)0xcce3, (q15_t)0x1971, (q15_t)0xcceb, - (q15_t)0x1967, (q15_t)0xccf3, (q15_t)0x195d, (q15_t)0xccfa, (q15_t)0x1953, (q15_t)0xcd02, (q15_t)0x1949, (q15_t)0xcd09, - (q15_t)0x193f, (q15_t)0xcd11, (q15_t)0x1935, (q15_t)0xcd19, (q15_t)0x192b, (q15_t)0xcd20, (q15_t)0x1921, (q15_t)0xcd28, - (q15_t)0x1917, (q15_t)0xcd30, (q15_t)0x190d, (q15_t)0xcd37, (q15_t)0x1903, (q15_t)0xcd3f, (q15_t)0x18f9, (q15_t)0xcd46, - (q15_t)0x18ef, (q15_t)0xcd4e, (q15_t)0x18e6, (q15_t)0xcd56, (q15_t)0x18dc, (q15_t)0xcd5d, (q15_t)0x18d2, (q15_t)0xcd65, - (q15_t)0x18c8, (q15_t)0xcd6d, (q15_t)0x18be, (q15_t)0xcd75, (q15_t)0x18b4, (q15_t)0xcd7c, (q15_t)0x18aa, (q15_t)0xcd84, - (q15_t)0x18a0, (q15_t)0xcd8c, (q15_t)0x1896, (q15_t)0xcd93, (q15_t)0x188c, (q15_t)0xcd9b, (q15_t)0x1882, (q15_t)0xcda3, - (q15_t)0x1878, (q15_t)0xcdab, (q15_t)0x186f, (q15_t)0xcdb2, (q15_t)0x1865, (q15_t)0xcdba, (q15_t)0x185b, (q15_t)0xcdc2, - (q15_t)0x1851, (q15_t)0xcdca, (q15_t)0x1847, (q15_t)0xcdd2, (q15_t)0x183d, (q15_t)0xcdd9, (q15_t)0x1833, (q15_t)0xcde1, - (q15_t)0x182a, (q15_t)0xcde9, (q15_t)0x1820, (q15_t)0xcdf1, (q15_t)0x1816, (q15_t)0xcdf9, (q15_t)0x180c, (q15_t)0xce01, - (q15_t)0x1802, (q15_t)0xce08, (q15_t)0x17f8, (q15_t)0xce10, (q15_t)0x17ef, (q15_t)0xce18, (q15_t)0x17e5, (q15_t)0xce20, - (q15_t)0x17db, (q15_t)0xce28, (q15_t)0x17d1, (q15_t)0xce30, (q15_t)0x17c8, (q15_t)0xce38, (q15_t)0x17be, (q15_t)0xce40, - (q15_t)0x17b4, (q15_t)0xce47, (q15_t)0x17aa, (q15_t)0xce4f, (q15_t)0x17a0, (q15_t)0xce57, (q15_t)0x1797, (q15_t)0xce5f, - (q15_t)0x178d, (q15_t)0xce67, (q15_t)0x1783, (q15_t)0xce6f, (q15_t)0x177a, (q15_t)0xce77, (q15_t)0x1770, (q15_t)0xce7f, - (q15_t)0x1766, (q15_t)0xce87, (q15_t)0x175c, (q15_t)0xce8f, (q15_t)0x1753, (q15_t)0xce97, (q15_t)0x1749, (q15_t)0xce9f, - (q15_t)0x173f, (q15_t)0xcea7, (q15_t)0x1736, (q15_t)0xceaf, (q15_t)0x172c, (q15_t)0xceb7, (q15_t)0x1722, (q15_t)0xcebf, - (q15_t)0x1719, (q15_t)0xcec7, (q15_t)0x170f, (q15_t)0xcecf, (q15_t)0x1705, (q15_t)0xced7, (q15_t)0x16fc, (q15_t)0xcedf, - (q15_t)0x16f2, (q15_t)0xcee7, (q15_t)0x16e8, (q15_t)0xceef, (q15_t)0x16df, (q15_t)0xcef7, (q15_t)0x16d5, (q15_t)0xceff, - (q15_t)0x16cb, (q15_t)0xcf07, (q15_t)0x16c2, (q15_t)0xcf10, (q15_t)0x16b8, (q15_t)0xcf18, (q15_t)0x16af, (q15_t)0xcf20, - (q15_t)0x16a5, (q15_t)0xcf28, (q15_t)0x169b, (q15_t)0xcf30, (q15_t)0x1692, (q15_t)0xcf38, (q15_t)0x1688, (q15_t)0xcf40, - (q15_t)0x167f, (q15_t)0xcf48, (q15_t)0x1675, (q15_t)0xcf51, (q15_t)0x166c, (q15_t)0xcf59, (q15_t)0x1662, (q15_t)0xcf61, - (q15_t)0x1659, (q15_t)0xcf69, (q15_t)0x164f, (q15_t)0xcf71, (q15_t)0x1645, (q15_t)0xcf79, (q15_t)0x163c, (q15_t)0xcf82, - (q15_t)0x1632, (q15_t)0xcf8a, (q15_t)0x1629, (q15_t)0xcf92, (q15_t)0x161f, (q15_t)0xcf9a, (q15_t)0x1616, (q15_t)0xcfa3, - (q15_t)0x160c, (q15_t)0xcfab, (q15_t)0x1603, (q15_t)0xcfb3, (q15_t)0x15f9, (q15_t)0xcfbb, (q15_t)0x15f0, (q15_t)0xcfc4, - (q15_t)0x15e6, (q15_t)0xcfcc, (q15_t)0x15dd, (q15_t)0xcfd4, (q15_t)0x15d4, (q15_t)0xcfdc, (q15_t)0x15ca, (q15_t)0xcfe5, - (q15_t)0x15c1, (q15_t)0xcfed, (q15_t)0x15b7, (q15_t)0xcff5, (q15_t)0x15ae, (q15_t)0xcffe, (q15_t)0x15a4, (q15_t)0xd006, - (q15_t)0x159b, (q15_t)0xd00e, (q15_t)0x1592, (q15_t)0xd016, (q15_t)0x1588, (q15_t)0xd01f, (q15_t)0x157f, (q15_t)0xd027, - (q15_t)0x1575, (q15_t)0xd030, (q15_t)0x156c, (q15_t)0xd038, (q15_t)0x1563, (q15_t)0xd040, (q15_t)0x1559, (q15_t)0xd049, - (q15_t)0x1550, (q15_t)0xd051, (q15_t)0x1547, (q15_t)0xd059, (q15_t)0x153d, (q15_t)0xd062, (q15_t)0x1534, (q15_t)0xd06a, - (q15_t)0x152a, (q15_t)0xd073, (q15_t)0x1521, (q15_t)0xd07b, (q15_t)0x1518, (q15_t)0xd083, (q15_t)0x150e, (q15_t)0xd08c, - (q15_t)0x1505, (q15_t)0xd094, (q15_t)0x14fc, (q15_t)0xd09d, (q15_t)0x14f3, (q15_t)0xd0a5, (q15_t)0x14e9, (q15_t)0xd0ae, - (q15_t)0x14e0, (q15_t)0xd0b6, (q15_t)0x14d7, (q15_t)0xd0bf, (q15_t)0x14cd, (q15_t)0xd0c7, (q15_t)0x14c4, (q15_t)0xd0d0, - (q15_t)0x14bb, (q15_t)0xd0d8, (q15_t)0x14b2, (q15_t)0xd0e0, (q15_t)0x14a8, (q15_t)0xd0e9, (q15_t)0x149f, (q15_t)0xd0f2, - (q15_t)0x1496, (q15_t)0xd0fa, (q15_t)0x148d, (q15_t)0xd103, (q15_t)0x1483, (q15_t)0xd10b, (q15_t)0x147a, (q15_t)0xd114, - (q15_t)0x1471, (q15_t)0xd11c, (q15_t)0x1468, (q15_t)0xd125, (q15_t)0x145f, (q15_t)0xd12d, (q15_t)0x1455, (q15_t)0xd136, - (q15_t)0x144c, (q15_t)0xd13e, (q15_t)0x1443, (q15_t)0xd147, (q15_t)0x143a, (q15_t)0xd150, (q15_t)0x1431, (q15_t)0xd158, - (q15_t)0x1428, (q15_t)0xd161, (q15_t)0x141e, (q15_t)0xd169, (q15_t)0x1415, (q15_t)0xd172, (q15_t)0x140c, (q15_t)0xd17b, - (q15_t)0x1403, (q15_t)0xd183, (q15_t)0x13fa, (q15_t)0xd18c, (q15_t)0x13f1, (q15_t)0xd195, (q15_t)0x13e8, (q15_t)0xd19d, - (q15_t)0x13df, (q15_t)0xd1a6, (q15_t)0x13d5, (q15_t)0xd1af, (q15_t)0x13cc, (q15_t)0xd1b7, (q15_t)0x13c3, (q15_t)0xd1c0, - (q15_t)0x13ba, (q15_t)0xd1c9, (q15_t)0x13b1, (q15_t)0xd1d1, (q15_t)0x13a8, (q15_t)0xd1da, (q15_t)0x139f, (q15_t)0xd1e3, - (q15_t)0x1396, (q15_t)0xd1eb, (q15_t)0x138d, (q15_t)0xd1f4, (q15_t)0x1384, (q15_t)0xd1fd, (q15_t)0x137b, (q15_t)0xd206, - (q15_t)0x1372, (q15_t)0xd20e, (q15_t)0x1369, (q15_t)0xd217, (q15_t)0x1360, (q15_t)0xd220, (q15_t)0x1357, (q15_t)0xd229, - (q15_t)0x134e, (q15_t)0xd231, (q15_t)0x1345, (q15_t)0xd23a, (q15_t)0x133c, (q15_t)0xd243, (q15_t)0x1333, (q15_t)0xd24c, - (q15_t)0x132a, (q15_t)0xd255, (q15_t)0x1321, (q15_t)0xd25d, (q15_t)0x1318, (q15_t)0xd266, (q15_t)0x130f, (q15_t)0xd26f, - (q15_t)0x1306, (q15_t)0xd278, (q15_t)0x12fd, (q15_t)0xd281, (q15_t)0x12f4, (q15_t)0xd28a, (q15_t)0x12eb, (q15_t)0xd292, - (q15_t)0x12e2, (q15_t)0xd29b, (q15_t)0x12d9, (q15_t)0xd2a4, (q15_t)0x12d1, (q15_t)0xd2ad, (q15_t)0x12c8, (q15_t)0xd2b6, - (q15_t)0x12bf, (q15_t)0xd2bf, (q15_t)0x12b6, (q15_t)0xd2c8, (q15_t)0x12ad, (q15_t)0xd2d1, (q15_t)0x12a4, (q15_t)0xd2d9, - (q15_t)0x129b, (q15_t)0xd2e2, (q15_t)0x1292, (q15_t)0xd2eb, (q15_t)0x128a, (q15_t)0xd2f4, (q15_t)0x1281, (q15_t)0xd2fd, - (q15_t)0x1278, (q15_t)0xd306, (q15_t)0x126f, (q15_t)0xd30f, (q15_t)0x1266, (q15_t)0xd318, (q15_t)0x125d, (q15_t)0xd321, - (q15_t)0x1255, (q15_t)0xd32a, (q15_t)0x124c, (q15_t)0xd333, (q15_t)0x1243, (q15_t)0xd33c, (q15_t)0x123a, (q15_t)0xd345, - (q15_t)0x1231, (q15_t)0xd34e, (q15_t)0x1229, (q15_t)0xd357, (q15_t)0x1220, (q15_t)0xd360, (q15_t)0x1217, (q15_t)0xd369, - (q15_t)0x120e, (q15_t)0xd372, (q15_t)0x1206, (q15_t)0xd37b, (q15_t)0x11fd, (q15_t)0xd384, (q15_t)0x11f4, (q15_t)0xd38d, - (q15_t)0x11eb, (q15_t)0xd396, (q15_t)0x11e3, (q15_t)0xd39f, (q15_t)0x11da, (q15_t)0xd3a8, (q15_t)0x11d1, (q15_t)0xd3b1, - (q15_t)0x11c9, (q15_t)0xd3ba, (q15_t)0x11c0, (q15_t)0xd3c3, (q15_t)0x11b7, (q15_t)0xd3cc, (q15_t)0x11af, (q15_t)0xd3d5, - (q15_t)0x11a6, (q15_t)0xd3df, (q15_t)0x119d, (q15_t)0xd3e8, (q15_t)0x1195, (q15_t)0xd3f1, (q15_t)0x118c, (q15_t)0xd3fa, - (q15_t)0x1183, (q15_t)0xd403, (q15_t)0x117b, (q15_t)0xd40c, (q15_t)0x1172, (q15_t)0xd415, (q15_t)0x1169, (q15_t)0xd41e, - (q15_t)0x1161, (q15_t)0xd428, (q15_t)0x1158, (q15_t)0xd431, (q15_t)0x1150, (q15_t)0xd43a, (q15_t)0x1147, (q15_t)0xd443, - (q15_t)0x113e, (q15_t)0xd44c, (q15_t)0x1136, (q15_t)0xd455, (q15_t)0x112d, (q15_t)0xd45f, (q15_t)0x1125, (q15_t)0xd468, - (q15_t)0x111c, (q15_t)0xd471, (q15_t)0x1114, (q15_t)0xd47a, (q15_t)0x110b, (q15_t)0xd483, (q15_t)0x1103, (q15_t)0xd48d, - (q15_t)0x10fa, (q15_t)0xd496, (q15_t)0x10f2, (q15_t)0xd49f, (q15_t)0x10e9, (q15_t)0xd4a8, (q15_t)0x10e0, (q15_t)0xd4b2, - (q15_t)0x10d8, (q15_t)0xd4bb, (q15_t)0x10d0, (q15_t)0xd4c4, (q15_t)0x10c7, (q15_t)0xd4cd, (q15_t)0x10bf, (q15_t)0xd4d7, - (q15_t)0x10b6, (q15_t)0xd4e0, (q15_t)0x10ae, (q15_t)0xd4e9, (q15_t)0x10a5, (q15_t)0xd4f3, (q15_t)0x109d, (q15_t)0xd4fc, - (q15_t)0x1094, (q15_t)0xd505, (q15_t)0x108c, (q15_t)0xd50e, (q15_t)0x1083, (q15_t)0xd518, (q15_t)0x107b, (q15_t)0xd521, - (q15_t)0x1073, (q15_t)0xd52a, (q15_t)0x106a, (q15_t)0xd534, (q15_t)0x1062, (q15_t)0xd53d, (q15_t)0x1059, (q15_t)0xd547, - (q15_t)0x1051, (q15_t)0xd550, (q15_t)0x1049, (q15_t)0xd559, (q15_t)0x1040, (q15_t)0xd563, (q15_t)0x1038, (q15_t)0xd56c, - (q15_t)0x1030, (q15_t)0xd575, (q15_t)0x1027, (q15_t)0xd57f, (q15_t)0x101f, (q15_t)0xd588, (q15_t)0x1016, (q15_t)0xd592, - (q15_t)0x100e, (q15_t)0xd59b, (q15_t)0x1006, (q15_t)0xd5a4, (q15_t)0xffe, (q15_t)0xd5ae, (q15_t)0xff5, (q15_t)0xd5b7, - (q15_t)0xfed, (q15_t)0xd5c1, (q15_t)0xfe5, (q15_t)0xd5ca, (q15_t)0xfdc, (q15_t)0xd5d4, (q15_t)0xfd4, (q15_t)0xd5dd, - (q15_t)0xfcc, (q15_t)0xd5e6, (q15_t)0xfc4, (q15_t)0xd5f0, (q15_t)0xfbb, (q15_t)0xd5f9, (q15_t)0xfb3, (q15_t)0xd603, - (q15_t)0xfab, (q15_t)0xd60c, (q15_t)0xfa3, (q15_t)0xd616, (q15_t)0xf9a, (q15_t)0xd61f, (q15_t)0xf92, (q15_t)0xd629, - (q15_t)0xf8a, (q15_t)0xd632, (q15_t)0xf82, (q15_t)0xd63c, (q15_t)0xf79, (q15_t)0xd645, (q15_t)0xf71, (q15_t)0xd64f, - (q15_t)0xf69, (q15_t)0xd659, (q15_t)0xf61, (q15_t)0xd662, (q15_t)0xf59, (q15_t)0xd66c, (q15_t)0xf51, (q15_t)0xd675, - (q15_t)0xf48, (q15_t)0xd67f, (q15_t)0xf40, (q15_t)0xd688, (q15_t)0xf38, (q15_t)0xd692, (q15_t)0xf30, (q15_t)0xd69b, - (q15_t)0xf28, (q15_t)0xd6a5, (q15_t)0xf20, (q15_t)0xd6af, (q15_t)0xf18, (q15_t)0xd6b8, (q15_t)0xf10, (q15_t)0xd6c2, - (q15_t)0xf07, (q15_t)0xd6cb, (q15_t)0xeff, (q15_t)0xd6d5, (q15_t)0xef7, (q15_t)0xd6df, (q15_t)0xeef, (q15_t)0xd6e8, - (q15_t)0xee7, (q15_t)0xd6f2, (q15_t)0xedf, (q15_t)0xd6fc, (q15_t)0xed7, (q15_t)0xd705, (q15_t)0xecf, (q15_t)0xd70f, - (q15_t)0xec7, (q15_t)0xd719, (q15_t)0xebf, (q15_t)0xd722, (q15_t)0xeb7, (q15_t)0xd72c, (q15_t)0xeaf, (q15_t)0xd736, - (q15_t)0xea7, (q15_t)0xd73f, (q15_t)0xe9f, (q15_t)0xd749, (q15_t)0xe97, (q15_t)0xd753, (q15_t)0xe8f, (q15_t)0xd75c, - (q15_t)0xe87, (q15_t)0xd766, (q15_t)0xe7f, (q15_t)0xd770, (q15_t)0xe77, (q15_t)0xd77a, (q15_t)0xe6f, (q15_t)0xd783, - (q15_t)0xe67, (q15_t)0xd78d, (q15_t)0xe5f, (q15_t)0xd797, (q15_t)0xe57, (q15_t)0xd7a0, (q15_t)0xe4f, (q15_t)0xd7aa, - (q15_t)0xe47, (q15_t)0xd7b4, (q15_t)0xe40, (q15_t)0xd7be, (q15_t)0xe38, (q15_t)0xd7c8, (q15_t)0xe30, (q15_t)0xd7d1, - (q15_t)0xe28, (q15_t)0xd7db, (q15_t)0xe20, (q15_t)0xd7e5, (q15_t)0xe18, (q15_t)0xd7ef, (q15_t)0xe10, (q15_t)0xd7f8, - (q15_t)0xe08, (q15_t)0xd802, (q15_t)0xe01, (q15_t)0xd80c, (q15_t)0xdf9, (q15_t)0xd816, (q15_t)0xdf1, (q15_t)0xd820, - (q15_t)0xde9, (q15_t)0xd82a, (q15_t)0xde1, (q15_t)0xd833, (q15_t)0xdd9, (q15_t)0xd83d, (q15_t)0xdd2, (q15_t)0xd847, - (q15_t)0xdca, (q15_t)0xd851, (q15_t)0xdc2, (q15_t)0xd85b, (q15_t)0xdba, (q15_t)0xd865, (q15_t)0xdb2, (q15_t)0xd86f, - (q15_t)0xdab, (q15_t)0xd878, (q15_t)0xda3, (q15_t)0xd882, (q15_t)0xd9b, (q15_t)0xd88c, (q15_t)0xd93, (q15_t)0xd896, - (q15_t)0xd8c, (q15_t)0xd8a0, (q15_t)0xd84, (q15_t)0xd8aa, (q15_t)0xd7c, (q15_t)0xd8b4, (q15_t)0xd75, (q15_t)0xd8be, - (q15_t)0xd6d, (q15_t)0xd8c8, (q15_t)0xd65, (q15_t)0xd8d2, (q15_t)0xd5d, (q15_t)0xd8dc, (q15_t)0xd56, (q15_t)0xd8e6, - (q15_t)0xd4e, (q15_t)0xd8ef, (q15_t)0xd46, (q15_t)0xd8f9, (q15_t)0xd3f, (q15_t)0xd903, (q15_t)0xd37, (q15_t)0xd90d, - (q15_t)0xd30, (q15_t)0xd917, (q15_t)0xd28, (q15_t)0xd921, (q15_t)0xd20, (q15_t)0xd92b, (q15_t)0xd19, (q15_t)0xd935, - (q15_t)0xd11, (q15_t)0xd93f, (q15_t)0xd09, (q15_t)0xd949, (q15_t)0xd02, (q15_t)0xd953, (q15_t)0xcfa, (q15_t)0xd95d, - (q15_t)0xcf3, (q15_t)0xd967, (q15_t)0xceb, (q15_t)0xd971, (q15_t)0xce3, (q15_t)0xd97b, (q15_t)0xcdc, (q15_t)0xd985, - (q15_t)0xcd4, (q15_t)0xd98f, (q15_t)0xccd, (q15_t)0xd99a, (q15_t)0xcc5, (q15_t)0xd9a4, (q15_t)0xcbe, (q15_t)0xd9ae, - (q15_t)0xcb6, (q15_t)0xd9b8, (q15_t)0xcaf, (q15_t)0xd9c2, (q15_t)0xca7, (q15_t)0xd9cc, (q15_t)0xca0, (q15_t)0xd9d6, - (q15_t)0xc98, (q15_t)0xd9e0, (q15_t)0xc91, (q15_t)0xd9ea, (q15_t)0xc89, (q15_t)0xd9f4, (q15_t)0xc82, (q15_t)0xd9fe, - (q15_t)0xc7a, (q15_t)0xda08, (q15_t)0xc73, (q15_t)0xda13, (q15_t)0xc6b, (q15_t)0xda1d, (q15_t)0xc64, (q15_t)0xda27, - (q15_t)0xc5d, (q15_t)0xda31, (q15_t)0xc55, (q15_t)0xda3b, (q15_t)0xc4e, (q15_t)0xda45, (q15_t)0xc46, (q15_t)0xda4f, - (q15_t)0xc3f, (q15_t)0xda5a, (q15_t)0xc38, (q15_t)0xda64, (q15_t)0xc30, (q15_t)0xda6e, (q15_t)0xc29, (q15_t)0xda78, - (q15_t)0xc21, (q15_t)0xda82, (q15_t)0xc1a, (q15_t)0xda8c, (q15_t)0xc13, (q15_t)0xda97, (q15_t)0xc0b, (q15_t)0xdaa1, - (q15_t)0xc04, (q15_t)0xdaab, (q15_t)0xbfd, (q15_t)0xdab5, (q15_t)0xbf5, (q15_t)0xdabf, (q15_t)0xbee, (q15_t)0xdaca, - (q15_t)0xbe7, (q15_t)0xdad4, (q15_t)0xbe0, (q15_t)0xdade, (q15_t)0xbd8, (q15_t)0xdae8, (q15_t)0xbd1, (q15_t)0xdaf3, - (q15_t)0xbca, (q15_t)0xdafd, (q15_t)0xbc2, (q15_t)0xdb07, (q15_t)0xbbb, (q15_t)0xdb11, (q15_t)0xbb4, (q15_t)0xdb1c, - (q15_t)0xbad, (q15_t)0xdb26, (q15_t)0xba5, (q15_t)0xdb30, (q15_t)0xb9e, (q15_t)0xdb3b, (q15_t)0xb97, (q15_t)0xdb45, - (q15_t)0xb90, (q15_t)0xdb4f, (q15_t)0xb89, (q15_t)0xdb59, (q15_t)0xb81, (q15_t)0xdb64, (q15_t)0xb7a, (q15_t)0xdb6e, - (q15_t)0xb73, (q15_t)0xdb78, (q15_t)0xb6c, (q15_t)0xdb83, (q15_t)0xb65, (q15_t)0xdb8d, (q15_t)0xb5e, (q15_t)0xdb97, - (q15_t)0xb56, (q15_t)0xdba2, (q15_t)0xb4f, (q15_t)0xdbac, (q15_t)0xb48, (q15_t)0xdbb6, (q15_t)0xb41, (q15_t)0xdbc1, - (q15_t)0xb3a, (q15_t)0xdbcb, (q15_t)0xb33, (q15_t)0xdbd5, (q15_t)0xb2c, (q15_t)0xdbe0, (q15_t)0xb25, (q15_t)0xdbea, - (q15_t)0xb1e, (q15_t)0xdbf5, (q15_t)0xb16, (q15_t)0xdbff, (q15_t)0xb0f, (q15_t)0xdc09, (q15_t)0xb08, (q15_t)0xdc14, - (q15_t)0xb01, (q15_t)0xdc1e, (q15_t)0xafa, (q15_t)0xdc29, (q15_t)0xaf3, (q15_t)0xdc33, (q15_t)0xaec, (q15_t)0xdc3d, - (q15_t)0xae5, (q15_t)0xdc48, (q15_t)0xade, (q15_t)0xdc52, (q15_t)0xad7, (q15_t)0xdc5d, (q15_t)0xad0, (q15_t)0xdc67, - (q15_t)0xac9, (q15_t)0xdc72, (q15_t)0xac2, (q15_t)0xdc7c, (q15_t)0xabb, (q15_t)0xdc86, (q15_t)0xab4, (q15_t)0xdc91, - (q15_t)0xaad, (q15_t)0xdc9b, (q15_t)0xaa6, (q15_t)0xdca6, (q15_t)0xa9f, (q15_t)0xdcb0, (q15_t)0xa99, (q15_t)0xdcbb, - (q15_t)0xa92, (q15_t)0xdcc5, (q15_t)0xa8b, (q15_t)0xdcd0, (q15_t)0xa84, (q15_t)0xdcda, (q15_t)0xa7d, (q15_t)0xdce5, - (q15_t)0xa76, (q15_t)0xdcef, (q15_t)0xa6f, (q15_t)0xdcfa, (q15_t)0xa68, (q15_t)0xdd04, (q15_t)0xa61, (q15_t)0xdd0f, - (q15_t)0xa5b, (q15_t)0xdd19, (q15_t)0xa54, (q15_t)0xdd24, (q15_t)0xa4d, (q15_t)0xdd2e, (q15_t)0xa46, (q15_t)0xdd39, - (q15_t)0xa3f, (q15_t)0xdd44, (q15_t)0xa38, (q15_t)0xdd4e, (q15_t)0xa32, (q15_t)0xdd59, (q15_t)0xa2b, (q15_t)0xdd63, - (q15_t)0xa24, (q15_t)0xdd6e, (q15_t)0xa1d, (q15_t)0xdd78, (q15_t)0xa16, (q15_t)0xdd83, (q15_t)0xa10, (q15_t)0xdd8e, - (q15_t)0xa09, (q15_t)0xdd98, (q15_t)0xa02, (q15_t)0xdda3, (q15_t)0x9fb, (q15_t)0xddad, (q15_t)0x9f5, (q15_t)0xddb8, - (q15_t)0x9ee, (q15_t)0xddc3, (q15_t)0x9e7, (q15_t)0xddcd, (q15_t)0x9e0, (q15_t)0xddd8, (q15_t)0x9da, (q15_t)0xdde2, - (q15_t)0x9d3, (q15_t)0xdded, (q15_t)0x9cc, (q15_t)0xddf8, (q15_t)0x9c6, (q15_t)0xde02, (q15_t)0x9bf, (q15_t)0xde0d, - (q15_t)0x9b8, (q15_t)0xde18, (q15_t)0x9b2, (q15_t)0xde22, (q15_t)0x9ab, (q15_t)0xde2d, (q15_t)0x9a4, (q15_t)0xde38, - (q15_t)0x99e, (q15_t)0xde42, (q15_t)0x997, (q15_t)0xde4d, (q15_t)0x991, (q15_t)0xde58, (q15_t)0x98a, (q15_t)0xde62, - (q15_t)0x983, (q15_t)0xde6d, (q15_t)0x97d, (q15_t)0xde78, (q15_t)0x976, (q15_t)0xde83, (q15_t)0x970, (q15_t)0xde8d, - (q15_t)0x969, (q15_t)0xde98, (q15_t)0x963, (q15_t)0xdea3, (q15_t)0x95c, (q15_t)0xdead, (q15_t)0x955, (q15_t)0xdeb8, - (q15_t)0x94f, (q15_t)0xdec3, (q15_t)0x948, (q15_t)0xdece, (q15_t)0x942, (q15_t)0xded8, (q15_t)0x93b, (q15_t)0xdee3, - (q15_t)0x935, (q15_t)0xdeee, (q15_t)0x92e, (q15_t)0xdef9, (q15_t)0x928, (q15_t)0xdf03, (q15_t)0x921, (q15_t)0xdf0e, - (q15_t)0x91b, (q15_t)0xdf19, (q15_t)0x915, (q15_t)0xdf24, (q15_t)0x90e, (q15_t)0xdf2f, (q15_t)0x908, (q15_t)0xdf39, - (q15_t)0x901, (q15_t)0xdf44, (q15_t)0x8fb, (q15_t)0xdf4f, (q15_t)0x8f4, (q15_t)0xdf5a, (q15_t)0x8ee, (q15_t)0xdf65, - (q15_t)0x8e8, (q15_t)0xdf6f, (q15_t)0x8e1, (q15_t)0xdf7a, (q15_t)0x8db, (q15_t)0xdf85, (q15_t)0x8d4, (q15_t)0xdf90, - (q15_t)0x8ce, (q15_t)0xdf9b, (q15_t)0x8c8, (q15_t)0xdfa5, (q15_t)0x8c1, (q15_t)0xdfb0, (q15_t)0x8bb, (q15_t)0xdfbb, - (q15_t)0x8b5, (q15_t)0xdfc6, (q15_t)0x8ae, (q15_t)0xdfd1, (q15_t)0x8a8, (q15_t)0xdfdc, (q15_t)0x8a2, (q15_t)0xdfe7, - (q15_t)0x89b, (q15_t)0xdff1, (q15_t)0x895, (q15_t)0xdffc, (q15_t)0x88f, (q15_t)0xe007, (q15_t)0x889, (q15_t)0xe012, - (q15_t)0x882, (q15_t)0xe01d, (q15_t)0x87c, (q15_t)0xe028, (q15_t)0x876, (q15_t)0xe033, (q15_t)0x870, (q15_t)0xe03e, - (q15_t)0x869, (q15_t)0xe049, (q15_t)0x863, (q15_t)0xe054, (q15_t)0x85d, (q15_t)0xe05e, (q15_t)0x857, (q15_t)0xe069, - (q15_t)0x850, (q15_t)0xe074, (q15_t)0x84a, (q15_t)0xe07f, (q15_t)0x844, (q15_t)0xe08a, (q15_t)0x83e, (q15_t)0xe095, - (q15_t)0x838, (q15_t)0xe0a0, (q15_t)0x832, (q15_t)0xe0ab, (q15_t)0x82b, (q15_t)0xe0b6, (q15_t)0x825, (q15_t)0xe0c1, - (q15_t)0x81f, (q15_t)0xe0cc, (q15_t)0x819, (q15_t)0xe0d7, (q15_t)0x813, (q15_t)0xe0e2, (q15_t)0x80d, (q15_t)0xe0ed, - (q15_t)0x807, (q15_t)0xe0f8, (q15_t)0x801, (q15_t)0xe103, (q15_t)0x7fb, (q15_t)0xe10e, (q15_t)0x7f5, (q15_t)0xe119, - (q15_t)0x7ee, (q15_t)0xe124, (q15_t)0x7e8, (q15_t)0xe12f, (q15_t)0x7e2, (q15_t)0xe13a, (q15_t)0x7dc, (q15_t)0xe145, - (q15_t)0x7d6, (q15_t)0xe150, (q15_t)0x7d0, (q15_t)0xe15b, (q15_t)0x7ca, (q15_t)0xe166, (q15_t)0x7c4, (q15_t)0xe171, - (q15_t)0x7be, (q15_t)0xe17c, (q15_t)0x7b8, (q15_t)0xe187, (q15_t)0x7b2, (q15_t)0xe192, (q15_t)0x7ac, (q15_t)0xe19d, - (q15_t)0x7a6, (q15_t)0xe1a8, (q15_t)0x7a0, (q15_t)0xe1b3, (q15_t)0x79a, (q15_t)0xe1be, (q15_t)0x795, (q15_t)0xe1ca, - (q15_t)0x78f, (q15_t)0xe1d5, (q15_t)0x789, (q15_t)0xe1e0, (q15_t)0x783, (q15_t)0xe1eb, (q15_t)0x77d, (q15_t)0xe1f6, - (q15_t)0x777, (q15_t)0xe201, (q15_t)0x771, (q15_t)0xe20c, (q15_t)0x76b, (q15_t)0xe217, (q15_t)0x765, (q15_t)0xe222, - (q15_t)0x75f, (q15_t)0xe22d, (q15_t)0x75a, (q15_t)0xe239, (q15_t)0x754, (q15_t)0xe244, (q15_t)0x74e, (q15_t)0xe24f, - (q15_t)0x748, (q15_t)0xe25a, (q15_t)0x742, (q15_t)0xe265, (q15_t)0x73d, (q15_t)0xe270, (q15_t)0x737, (q15_t)0xe27b, - (q15_t)0x731, (q15_t)0xe287, (q15_t)0x72b, (q15_t)0xe292, (q15_t)0x725, (q15_t)0xe29d, (q15_t)0x720, (q15_t)0xe2a8, - (q15_t)0x71a, (q15_t)0xe2b3, (q15_t)0x714, (q15_t)0xe2be, (q15_t)0x70e, (q15_t)0xe2ca, (q15_t)0x709, (q15_t)0xe2d5, - (q15_t)0x703, (q15_t)0xe2e0, (q15_t)0x6fd, (q15_t)0xe2eb, (q15_t)0x6f7, (q15_t)0xe2f6, (q15_t)0x6f2, (q15_t)0xe301, - (q15_t)0x6ec, (q15_t)0xe30d, (q15_t)0x6e6, (q15_t)0xe318, (q15_t)0x6e1, (q15_t)0xe323, (q15_t)0x6db, (q15_t)0xe32e, - (q15_t)0x6d5, (q15_t)0xe33a, (q15_t)0x6d0, (q15_t)0xe345, (q15_t)0x6ca, (q15_t)0xe350, (q15_t)0x6c5, (q15_t)0xe35b, - (q15_t)0x6bf, (q15_t)0xe367, (q15_t)0x6b9, (q15_t)0xe372, (q15_t)0x6b4, (q15_t)0xe37d, (q15_t)0x6ae, (q15_t)0xe388, - (q15_t)0x6a8, (q15_t)0xe394, (q15_t)0x6a3, (q15_t)0xe39f, (q15_t)0x69d, (q15_t)0xe3aa, (q15_t)0x698, (q15_t)0xe3b5, - (q15_t)0x692, (q15_t)0xe3c1, (q15_t)0x68d, (q15_t)0xe3cc, (q15_t)0x687, (q15_t)0xe3d7, (q15_t)0x682, (q15_t)0xe3e2, - (q15_t)0x67c, (q15_t)0xe3ee, (q15_t)0x677, (q15_t)0xe3f9, (q15_t)0x671, (q15_t)0xe404, (q15_t)0x66c, (q15_t)0xe410, - (q15_t)0x666, (q15_t)0xe41b, (q15_t)0x661, (q15_t)0xe426, (q15_t)0x65b, (q15_t)0xe432, (q15_t)0x656, (q15_t)0xe43d, - (q15_t)0x650, (q15_t)0xe448, (q15_t)0x64b, (q15_t)0xe454, (q15_t)0x645, (q15_t)0xe45f, (q15_t)0x640, (q15_t)0xe46a, - (q15_t)0x63b, (q15_t)0xe476, (q15_t)0x635, (q15_t)0xe481, (q15_t)0x630, (q15_t)0xe48c, (q15_t)0x62a, (q15_t)0xe498, - (q15_t)0x625, (q15_t)0xe4a3, (q15_t)0x620, (q15_t)0xe4ae, (q15_t)0x61a, (q15_t)0xe4ba, (q15_t)0x615, (q15_t)0xe4c5, - (q15_t)0x610, (q15_t)0xe4d0, (q15_t)0x60a, (q15_t)0xe4dc, (q15_t)0x605, (q15_t)0xe4e7, (q15_t)0x600, (q15_t)0xe4f3, - (q15_t)0x5fa, (q15_t)0xe4fe, (q15_t)0x5f5, (q15_t)0xe509, (q15_t)0x5f0, (q15_t)0xe515, (q15_t)0x5ea, (q15_t)0xe520, - (q15_t)0x5e5, (q15_t)0xe52c, (q15_t)0x5e0, (q15_t)0xe537, (q15_t)0x5db, (q15_t)0xe542, (q15_t)0x5d5, (q15_t)0xe54e, - (q15_t)0x5d0, (q15_t)0xe559, (q15_t)0x5cb, (q15_t)0xe565, (q15_t)0x5c6, (q15_t)0xe570, (q15_t)0x5c1, (q15_t)0xe57c, - (q15_t)0x5bb, (q15_t)0xe587, (q15_t)0x5b6, (q15_t)0xe592, (q15_t)0x5b1, (q15_t)0xe59e, (q15_t)0x5ac, (q15_t)0xe5a9, - (q15_t)0x5a7, (q15_t)0xe5b5, (q15_t)0x5a1, (q15_t)0xe5c0, (q15_t)0x59c, (q15_t)0xe5cc, (q15_t)0x597, (q15_t)0xe5d7, - (q15_t)0x592, (q15_t)0xe5e3, (q15_t)0x58d, (q15_t)0xe5ee, (q15_t)0x588, (q15_t)0xe5fa, (q15_t)0x583, (q15_t)0xe605, - (q15_t)0x57e, (q15_t)0xe611, (q15_t)0x578, (q15_t)0xe61c, (q15_t)0x573, (q15_t)0xe628, (q15_t)0x56e, (q15_t)0xe633, - (q15_t)0x569, (q15_t)0xe63f, (q15_t)0x564, (q15_t)0xe64a, (q15_t)0x55f, (q15_t)0xe656, (q15_t)0x55a, (q15_t)0xe661, - (q15_t)0x555, (q15_t)0xe66d, (q15_t)0x550, (q15_t)0xe678, (q15_t)0x54b, (q15_t)0xe684, (q15_t)0x546, (q15_t)0xe68f, - (q15_t)0x541, (q15_t)0xe69b, (q15_t)0x53c, (q15_t)0xe6a6, (q15_t)0x537, (q15_t)0xe6b2, (q15_t)0x532, (q15_t)0xe6bd, - (q15_t)0x52d, (q15_t)0xe6c9, (q15_t)0x528, (q15_t)0xe6d4, (q15_t)0x523, (q15_t)0xe6e0, (q15_t)0x51e, (q15_t)0xe6ec, - (q15_t)0x51a, (q15_t)0xe6f7, (q15_t)0x515, (q15_t)0xe703, (q15_t)0x510, (q15_t)0xe70e, (q15_t)0x50b, (q15_t)0xe71a, - (q15_t)0x506, (q15_t)0xe725, (q15_t)0x501, (q15_t)0xe731, (q15_t)0x4fc, (q15_t)0xe73d, (q15_t)0x4f7, (q15_t)0xe748, - (q15_t)0x4f2, (q15_t)0xe754, (q15_t)0x4ee, (q15_t)0xe75f, (q15_t)0x4e9, (q15_t)0xe76b, (q15_t)0x4e4, (q15_t)0xe777, - (q15_t)0x4df, (q15_t)0xe782, (q15_t)0x4da, (q15_t)0xe78e, (q15_t)0x4d6, (q15_t)0xe799, (q15_t)0x4d1, (q15_t)0xe7a5, - (q15_t)0x4cc, (q15_t)0xe7b1, (q15_t)0x4c7, (q15_t)0xe7bc, (q15_t)0x4c2, (q15_t)0xe7c8, (q15_t)0x4be, (q15_t)0xe7d3, - (q15_t)0x4b9, (q15_t)0xe7df, (q15_t)0x4b4, (q15_t)0xe7eb, (q15_t)0x4b0, (q15_t)0xe7f6, (q15_t)0x4ab, (q15_t)0xe802, - (q15_t)0x4a6, (q15_t)0xe80e, (q15_t)0x4a1, (q15_t)0xe819, (q15_t)0x49d, (q15_t)0xe825, (q15_t)0x498, (q15_t)0xe831, - (q15_t)0x493, (q15_t)0xe83c, (q15_t)0x48f, (q15_t)0xe848, (q15_t)0x48a, (q15_t)0xe854, (q15_t)0x485, (q15_t)0xe85f, - (q15_t)0x481, (q15_t)0xe86b, (q15_t)0x47c, (q15_t)0xe877, (q15_t)0x478, (q15_t)0xe882, (q15_t)0x473, (q15_t)0xe88e, - (q15_t)0x46e, (q15_t)0xe89a, (q15_t)0x46a, (q15_t)0xe8a5, (q15_t)0x465, (q15_t)0xe8b1, (q15_t)0x461, (q15_t)0xe8bd, - (q15_t)0x45c, (q15_t)0xe8c9, (q15_t)0x457, (q15_t)0xe8d4, (q15_t)0x453, (q15_t)0xe8e0, (q15_t)0x44e, (q15_t)0xe8ec, - (q15_t)0x44a, (q15_t)0xe8f7, (q15_t)0x445, (q15_t)0xe903, (q15_t)0x441, (q15_t)0xe90f, (q15_t)0x43c, (q15_t)0xe91b, - (q15_t)0x438, (q15_t)0xe926, (q15_t)0x433, (q15_t)0xe932, (q15_t)0x42f, (q15_t)0xe93e, (q15_t)0x42a, (q15_t)0xe94a, - (q15_t)0x426, (q15_t)0xe955, (q15_t)0x422, (q15_t)0xe961, (q15_t)0x41d, (q15_t)0xe96d, (q15_t)0x419, (q15_t)0xe979, - (q15_t)0x414, (q15_t)0xe984, (q15_t)0x410, (q15_t)0xe990, (q15_t)0x40b, (q15_t)0xe99c, (q15_t)0x407, (q15_t)0xe9a8, - (q15_t)0x403, (q15_t)0xe9b4, (q15_t)0x3fe, (q15_t)0xe9bf, (q15_t)0x3fa, (q15_t)0xe9cb, (q15_t)0x3f6, (q15_t)0xe9d7, - (q15_t)0x3f1, (q15_t)0xe9e3, (q15_t)0x3ed, (q15_t)0xe9ee, (q15_t)0x3e9, (q15_t)0xe9fa, (q15_t)0x3e4, (q15_t)0xea06, - (q15_t)0x3e0, (q15_t)0xea12, (q15_t)0x3dc, (q15_t)0xea1e, (q15_t)0x3d7, (q15_t)0xea29, (q15_t)0x3d3, (q15_t)0xea35, - (q15_t)0x3cf, (q15_t)0xea41, (q15_t)0x3ca, (q15_t)0xea4d, (q15_t)0x3c6, (q15_t)0xea59, (q15_t)0x3c2, (q15_t)0xea65, - (q15_t)0x3be, (q15_t)0xea70, (q15_t)0x3ba, (q15_t)0xea7c, (q15_t)0x3b5, (q15_t)0xea88, (q15_t)0x3b1, (q15_t)0xea94, - (q15_t)0x3ad, (q15_t)0xeaa0, (q15_t)0x3a9, (q15_t)0xeaac, (q15_t)0x3a5, (q15_t)0xeab7, (q15_t)0x3a0, (q15_t)0xeac3, - (q15_t)0x39c, (q15_t)0xeacf, (q15_t)0x398, (q15_t)0xeadb, (q15_t)0x394, (q15_t)0xeae7, (q15_t)0x390, (q15_t)0xeaf3, - (q15_t)0x38c, (q15_t)0xeaff, (q15_t)0x387, (q15_t)0xeb0a, (q15_t)0x383, (q15_t)0xeb16, (q15_t)0x37f, (q15_t)0xeb22, - (q15_t)0x37b, (q15_t)0xeb2e, (q15_t)0x377, (q15_t)0xeb3a, (q15_t)0x373, (q15_t)0xeb46, (q15_t)0x36f, (q15_t)0xeb52, - (q15_t)0x36b, (q15_t)0xeb5e, (q15_t)0x367, (q15_t)0xeb6a, (q15_t)0x363, (q15_t)0xeb75, (q15_t)0x35f, (q15_t)0xeb81, - (q15_t)0x35b, (q15_t)0xeb8d, (q15_t)0x357, (q15_t)0xeb99, (q15_t)0x353, (q15_t)0xeba5, (q15_t)0x34f, (q15_t)0xebb1, - (q15_t)0x34b, (q15_t)0xebbd, (q15_t)0x347, (q15_t)0xebc9, (q15_t)0x343, (q15_t)0xebd5, (q15_t)0x33f, (q15_t)0xebe1, - (q15_t)0x33b, (q15_t)0xebed, (q15_t)0x337, (q15_t)0xebf9, (q15_t)0x333, (q15_t)0xec05, (q15_t)0x32f, (q15_t)0xec10, - (q15_t)0x32b, (q15_t)0xec1c, (q15_t)0x327, (q15_t)0xec28, (q15_t)0x323, (q15_t)0xec34, (q15_t)0x320, (q15_t)0xec40, - (q15_t)0x31c, (q15_t)0xec4c, (q15_t)0x318, (q15_t)0xec58, (q15_t)0x314, (q15_t)0xec64, (q15_t)0x310, (q15_t)0xec70, - (q15_t)0x30c, (q15_t)0xec7c, (q15_t)0x308, (q15_t)0xec88, (q15_t)0x305, (q15_t)0xec94, (q15_t)0x301, (q15_t)0xeca0, - (q15_t)0x2fd, (q15_t)0xecac, (q15_t)0x2f9, (q15_t)0xecb8, (q15_t)0x2f5, (q15_t)0xecc4, (q15_t)0x2f2, (q15_t)0xecd0, - (q15_t)0x2ee, (q15_t)0xecdc, (q15_t)0x2ea, (q15_t)0xece8, (q15_t)0x2e6, (q15_t)0xecf4, (q15_t)0x2e3, (q15_t)0xed00, - (q15_t)0x2df, (q15_t)0xed0c, (q15_t)0x2db, (q15_t)0xed18, (q15_t)0x2d8, (q15_t)0xed24, (q15_t)0x2d4, (q15_t)0xed30, - (q15_t)0x2d0, (q15_t)0xed3c, (q15_t)0x2cc, (q15_t)0xed48, (q15_t)0x2c9, (q15_t)0xed54, (q15_t)0x2c5, (q15_t)0xed60, - (q15_t)0x2c1, (q15_t)0xed6c, (q15_t)0x2be, (q15_t)0xed78, (q15_t)0x2ba, (q15_t)0xed84, (q15_t)0x2b7, (q15_t)0xed90, - (q15_t)0x2b3, (q15_t)0xed9c, (q15_t)0x2af, (q15_t)0xeda8, (q15_t)0x2ac, (q15_t)0xedb4, (q15_t)0x2a8, (q15_t)0xedc0, - (q15_t)0x2a5, (q15_t)0xedcc, (q15_t)0x2a1, (q15_t)0xedd8, (q15_t)0x29d, (q15_t)0xede4, (q15_t)0x29a, (q15_t)0xedf0, - (q15_t)0x296, (q15_t)0xedfc, (q15_t)0x293, (q15_t)0xee09, (q15_t)0x28f, (q15_t)0xee15, (q15_t)0x28c, (q15_t)0xee21, - (q15_t)0x288, (q15_t)0xee2d, (q15_t)0x285, (q15_t)0xee39, (q15_t)0x281, (q15_t)0xee45, (q15_t)0x27e, (q15_t)0xee51, - (q15_t)0x27a, (q15_t)0xee5d, (q15_t)0x277, (q15_t)0xee69, (q15_t)0x273, (q15_t)0xee75, (q15_t)0x270, (q15_t)0xee81, - (q15_t)0x26d, (q15_t)0xee8d, (q15_t)0x269, (q15_t)0xee99, (q15_t)0x266, (q15_t)0xeea6, (q15_t)0x262, (q15_t)0xeeb2, - (q15_t)0x25f, (q15_t)0xeebe, (q15_t)0x25c, (q15_t)0xeeca, (q15_t)0x258, (q15_t)0xeed6, (q15_t)0x255, (q15_t)0xeee2, - (q15_t)0x251, (q15_t)0xeeee, (q15_t)0x24e, (q15_t)0xeefa, (q15_t)0x24b, (q15_t)0xef06, (q15_t)0x247, (q15_t)0xef13, - (q15_t)0x244, (q15_t)0xef1f, (q15_t)0x241, (q15_t)0xef2b, (q15_t)0x23e, (q15_t)0xef37, (q15_t)0x23a, (q15_t)0xef43, - (q15_t)0x237, (q15_t)0xef4f, (q15_t)0x234, (q15_t)0xef5b, (q15_t)0x230, (q15_t)0xef67, (q15_t)0x22d, (q15_t)0xef74, - (q15_t)0x22a, (q15_t)0xef80, (q15_t)0x227, (q15_t)0xef8c, (q15_t)0x223, (q15_t)0xef98, (q15_t)0x220, (q15_t)0xefa4, - (q15_t)0x21d, (q15_t)0xefb0, (q15_t)0x21a, (q15_t)0xefbc, (q15_t)0x217, (q15_t)0xefc9, (q15_t)0x213, (q15_t)0xefd5, - (q15_t)0x210, (q15_t)0xefe1, (q15_t)0x20d, (q15_t)0xefed, (q15_t)0x20a, (q15_t)0xeff9, (q15_t)0x207, (q15_t)0xf005, - (q15_t)0x204, (q15_t)0xf012, (q15_t)0x201, (q15_t)0xf01e, (q15_t)0x1fd, (q15_t)0xf02a, (q15_t)0x1fa, (q15_t)0xf036, - (q15_t)0x1f7, (q15_t)0xf042, (q15_t)0x1f4, (q15_t)0xf04e, (q15_t)0x1f1, (q15_t)0xf05b, (q15_t)0x1ee, (q15_t)0xf067, - (q15_t)0x1eb, (q15_t)0xf073, (q15_t)0x1e8, (q15_t)0xf07f, (q15_t)0x1e5, (q15_t)0xf08b, (q15_t)0x1e2, (q15_t)0xf098, - (q15_t)0x1df, (q15_t)0xf0a4, (q15_t)0x1dc, (q15_t)0xf0b0, (q15_t)0x1d9, (q15_t)0xf0bc, (q15_t)0x1d6, (q15_t)0xf0c8, - (q15_t)0x1d3, (q15_t)0xf0d5, (q15_t)0x1d0, (q15_t)0xf0e1, (q15_t)0x1cd, (q15_t)0xf0ed, (q15_t)0x1ca, (q15_t)0xf0f9, - (q15_t)0x1c7, (q15_t)0xf105, (q15_t)0x1c4, (q15_t)0xf112, (q15_t)0x1c1, (q15_t)0xf11e, (q15_t)0x1be, (q15_t)0xf12a, - (q15_t)0x1bb, (q15_t)0xf136, (q15_t)0x1b8, (q15_t)0xf143, (q15_t)0x1b6, (q15_t)0xf14f, (q15_t)0x1b3, (q15_t)0xf15b, - (q15_t)0x1b0, (q15_t)0xf167, (q15_t)0x1ad, (q15_t)0xf174, (q15_t)0x1aa, (q15_t)0xf180, (q15_t)0x1a7, (q15_t)0xf18c, - (q15_t)0x1a4, (q15_t)0xf198, (q15_t)0x1a2, (q15_t)0xf1a4, (q15_t)0x19f, (q15_t)0xf1b1, (q15_t)0x19c, (q15_t)0xf1bd, - (q15_t)0x199, (q15_t)0xf1c9, (q15_t)0x196, (q15_t)0xf1d5, (q15_t)0x194, (q15_t)0xf1e2, (q15_t)0x191, (q15_t)0xf1ee, - (q15_t)0x18e, (q15_t)0xf1fa, (q15_t)0x18b, (q15_t)0xf207, (q15_t)0x189, (q15_t)0xf213, (q15_t)0x186, (q15_t)0xf21f, - (q15_t)0x183, (q15_t)0xf22b, (q15_t)0x180, (q15_t)0xf238, (q15_t)0x17e, (q15_t)0xf244, (q15_t)0x17b, (q15_t)0xf250, - (q15_t)0x178, (q15_t)0xf25c, (q15_t)0x176, (q15_t)0xf269, (q15_t)0x173, (q15_t)0xf275, (q15_t)0x170, (q15_t)0xf281, - (q15_t)0x16e, (q15_t)0xf28e, (q15_t)0x16b, (q15_t)0xf29a, (q15_t)0x168, (q15_t)0xf2a6, (q15_t)0x166, (q15_t)0xf2b2, - (q15_t)0x163, (q15_t)0xf2bf, (q15_t)0x161, (q15_t)0xf2cb, (q15_t)0x15e, (q15_t)0xf2d7, (q15_t)0x15b, (q15_t)0xf2e4, - (q15_t)0x159, (q15_t)0xf2f0, (q15_t)0x156, (q15_t)0xf2fc, (q15_t)0x154, (q15_t)0xf308, (q15_t)0x151, (q15_t)0xf315, - (q15_t)0x14f, (q15_t)0xf321, (q15_t)0x14c, (q15_t)0xf32d, (q15_t)0x14a, (q15_t)0xf33a, (q15_t)0x147, (q15_t)0xf346, - (q15_t)0x145, (q15_t)0xf352, (q15_t)0x142, (q15_t)0xf35f, (q15_t)0x140, (q15_t)0xf36b, (q15_t)0x13d, (q15_t)0xf377, - (q15_t)0x13b, (q15_t)0xf384, (q15_t)0x138, (q15_t)0xf390, (q15_t)0x136, (q15_t)0xf39c, (q15_t)0x134, (q15_t)0xf3a9, - (q15_t)0x131, (q15_t)0xf3b5, (q15_t)0x12f, (q15_t)0xf3c1, (q15_t)0x12c, (q15_t)0xf3ce, (q15_t)0x12a, (q15_t)0xf3da, - (q15_t)0x128, (q15_t)0xf3e6, (q15_t)0x125, (q15_t)0xf3f3, (q15_t)0x123, (q15_t)0xf3ff, (q15_t)0x120, (q15_t)0xf40b, - (q15_t)0x11e, (q15_t)0xf418, (q15_t)0x11c, (q15_t)0xf424, (q15_t)0x119, (q15_t)0xf430, (q15_t)0x117, (q15_t)0xf43d, - (q15_t)0x115, (q15_t)0xf449, (q15_t)0x113, (q15_t)0xf455, (q15_t)0x110, (q15_t)0xf462, (q15_t)0x10e, (q15_t)0xf46e, - (q15_t)0x10c, (q15_t)0xf47b, (q15_t)0x109, (q15_t)0xf487, (q15_t)0x107, (q15_t)0xf493, (q15_t)0x105, (q15_t)0xf4a0, - (q15_t)0x103, (q15_t)0xf4ac, (q15_t)0x100, (q15_t)0xf4b8, (q15_t)0xfe, (q15_t)0xf4c5, (q15_t)0xfc, (q15_t)0xf4d1, - (q15_t)0xfa, (q15_t)0xf4dd, (q15_t)0xf8, (q15_t)0xf4ea, (q15_t)0xf6, (q15_t)0xf4f6, (q15_t)0xf3, (q15_t)0xf503, - (q15_t)0xf1, (q15_t)0xf50f, (q15_t)0xef, (q15_t)0xf51b, (q15_t)0xed, (q15_t)0xf528, (q15_t)0xeb, (q15_t)0xf534, - (q15_t)0xe9, (q15_t)0xf540, (q15_t)0xe7, (q15_t)0xf54d, (q15_t)0xe4, (q15_t)0xf559, (q15_t)0xe2, (q15_t)0xf566, - (q15_t)0xe0, (q15_t)0xf572, (q15_t)0xde, (q15_t)0xf57e, (q15_t)0xdc, (q15_t)0xf58b, (q15_t)0xda, (q15_t)0xf597, - (q15_t)0xd8, (q15_t)0xf5a4, (q15_t)0xd6, (q15_t)0xf5b0, (q15_t)0xd4, (q15_t)0xf5bc, (q15_t)0xd2, (q15_t)0xf5c9, - (q15_t)0xd0, (q15_t)0xf5d5, (q15_t)0xce, (q15_t)0xf5e2, (q15_t)0xcc, (q15_t)0xf5ee, (q15_t)0xca, (q15_t)0xf5fa, - (q15_t)0xc8, (q15_t)0xf607, (q15_t)0xc6, (q15_t)0xf613, (q15_t)0xc4, (q15_t)0xf620, (q15_t)0xc2, (q15_t)0xf62c, - (q15_t)0xc0, (q15_t)0xf639, (q15_t)0xbe, (q15_t)0xf645, (q15_t)0xbd, (q15_t)0xf651, (q15_t)0xbb, (q15_t)0xf65e, - (q15_t)0xb9, (q15_t)0xf66a, (q15_t)0xb7, (q15_t)0xf677, (q15_t)0xb5, (q15_t)0xf683, (q15_t)0xb3, (q15_t)0xf690, - (q15_t)0xb1, (q15_t)0xf69c, (q15_t)0xaf, (q15_t)0xf6a8, (q15_t)0xae, (q15_t)0xf6b5, (q15_t)0xac, (q15_t)0xf6c1, - (q15_t)0xaa, (q15_t)0xf6ce, (q15_t)0xa8, (q15_t)0xf6da, (q15_t)0xa6, (q15_t)0xf6e7, (q15_t)0xa5, (q15_t)0xf6f3, - (q15_t)0xa3, (q15_t)0xf6ff, (q15_t)0xa1, (q15_t)0xf70c, (q15_t)0x9f, (q15_t)0xf718, (q15_t)0x9e, (q15_t)0xf725, - (q15_t)0x9c, (q15_t)0xf731, (q15_t)0x9a, (q15_t)0xf73e, (q15_t)0x98, (q15_t)0xf74a, (q15_t)0x97, (q15_t)0xf757, - (q15_t)0x95, (q15_t)0xf763, (q15_t)0x93, (q15_t)0xf76f, (q15_t)0x92, (q15_t)0xf77c, (q15_t)0x90, (q15_t)0xf788, - (q15_t)0x8e, (q15_t)0xf795, (q15_t)0x8d, (q15_t)0xf7a1, (q15_t)0x8b, (q15_t)0xf7ae, (q15_t)0x89, (q15_t)0xf7ba, - (q15_t)0x88, (q15_t)0xf7c7, (q15_t)0x86, (q15_t)0xf7d3, (q15_t)0x85, (q15_t)0xf7e0, (q15_t)0x83, (q15_t)0xf7ec, - (q15_t)0x81, (q15_t)0xf7f9, (q15_t)0x80, (q15_t)0xf805, (q15_t)0x7e, (q15_t)0xf811, (q15_t)0x7d, (q15_t)0xf81e, - (q15_t)0x7b, (q15_t)0xf82a, (q15_t)0x7a, (q15_t)0xf837, (q15_t)0x78, (q15_t)0xf843, (q15_t)0x77, (q15_t)0xf850, - (q15_t)0x75, (q15_t)0xf85c, (q15_t)0x74, (q15_t)0xf869, (q15_t)0x72, (q15_t)0xf875, (q15_t)0x71, (q15_t)0xf882, - (q15_t)0x6f, (q15_t)0xf88e, (q15_t)0x6e, (q15_t)0xf89b, (q15_t)0x6c, (q15_t)0xf8a7, (q15_t)0x6b, (q15_t)0xf8b4, - (q15_t)0x69, (q15_t)0xf8c0, (q15_t)0x68, (q15_t)0xf8cd, (q15_t)0x67, (q15_t)0xf8d9, (q15_t)0x65, (q15_t)0xf8e6, - (q15_t)0x64, (q15_t)0xf8f2, (q15_t)0x62, (q15_t)0xf8ff, (q15_t)0x61, (q15_t)0xf90b, (q15_t)0x60, (q15_t)0xf918, - (q15_t)0x5e, (q15_t)0xf924, (q15_t)0x5d, (q15_t)0xf931, (q15_t)0x5c, (q15_t)0xf93d, (q15_t)0x5a, (q15_t)0xf94a, - (q15_t)0x59, (q15_t)0xf956, (q15_t)0x58, (q15_t)0xf963, (q15_t)0x56, (q15_t)0xf96f, (q15_t)0x55, (q15_t)0xf97c, - (q15_t)0x54, (q15_t)0xf988, (q15_t)0x53, (q15_t)0xf995, (q15_t)0x51, (q15_t)0xf9a1, (q15_t)0x50, (q15_t)0xf9ae, - (q15_t)0x4f, (q15_t)0xf9ba, (q15_t)0x4e, (q15_t)0xf9c7, (q15_t)0x4c, (q15_t)0xf9d3, (q15_t)0x4b, (q15_t)0xf9e0, - (q15_t)0x4a, (q15_t)0xf9ec, (q15_t)0x49, (q15_t)0xf9f9, (q15_t)0x48, (q15_t)0xfa05, (q15_t)0x47, (q15_t)0xfa12, - (q15_t)0x45, (q15_t)0xfa1e, (q15_t)0x44, (q15_t)0xfa2b, (q15_t)0x43, (q15_t)0xfa37, (q15_t)0x42, (q15_t)0xfa44, - (q15_t)0x41, (q15_t)0xfa50, (q15_t)0x40, (q15_t)0xfa5d, (q15_t)0x3f, (q15_t)0xfa69, (q15_t)0x3d, (q15_t)0xfa76, - (q15_t)0x3c, (q15_t)0xfa82, (q15_t)0x3b, (q15_t)0xfa8f, (q15_t)0x3a, (q15_t)0xfa9b, (q15_t)0x39, (q15_t)0xfaa8, - (q15_t)0x38, (q15_t)0xfab4, (q15_t)0x37, (q15_t)0xfac1, (q15_t)0x36, (q15_t)0xfacd, (q15_t)0x35, (q15_t)0xfada, - (q15_t)0x34, (q15_t)0xfae6, (q15_t)0x33, (q15_t)0xfaf3, (q15_t)0x32, (q15_t)0xfb00, (q15_t)0x31, (q15_t)0xfb0c, - (q15_t)0x30, (q15_t)0xfb19, (q15_t)0x2f, (q15_t)0xfb25, (q15_t)0x2e, (q15_t)0xfb32, (q15_t)0x2d, (q15_t)0xfb3e, - (q15_t)0x2c, (q15_t)0xfb4b, (q15_t)0x2b, (q15_t)0xfb57, (q15_t)0x2b, (q15_t)0xfb64, (q15_t)0x2a, (q15_t)0xfb70, - (q15_t)0x29, (q15_t)0xfb7d, (q15_t)0x28, (q15_t)0xfb89, (q15_t)0x27, (q15_t)0xfb96, (q15_t)0x26, (q15_t)0xfba2, - (q15_t)0x25, (q15_t)0xfbaf, (q15_t)0x24, (q15_t)0xfbbc, (q15_t)0x24, (q15_t)0xfbc8, (q15_t)0x23, (q15_t)0xfbd5, - (q15_t)0x22, (q15_t)0xfbe1, (q15_t)0x21, (q15_t)0xfbee, (q15_t)0x20, (q15_t)0xfbfa, (q15_t)0x20, (q15_t)0xfc07, - (q15_t)0x1f, (q15_t)0xfc13, (q15_t)0x1e, (q15_t)0xfc20, (q15_t)0x1d, (q15_t)0xfc2c, (q15_t)0x1d, (q15_t)0xfc39, - (q15_t)0x1c, (q15_t)0xfc45, (q15_t)0x1b, (q15_t)0xfc52, (q15_t)0x1a, (q15_t)0xfc5f, (q15_t)0x1a, (q15_t)0xfc6b, - (q15_t)0x19, (q15_t)0xfc78, (q15_t)0x18, (q15_t)0xfc84, (q15_t)0x18, (q15_t)0xfc91, (q15_t)0x17, (q15_t)0xfc9d, - (q15_t)0x16, (q15_t)0xfcaa, (q15_t)0x16, (q15_t)0xfcb6, (q15_t)0x15, (q15_t)0xfcc3, (q15_t)0x14, (q15_t)0xfcd0, - (q15_t)0x14, (q15_t)0xfcdc, (q15_t)0x13, (q15_t)0xfce9, (q15_t)0x13, (q15_t)0xfcf5, (q15_t)0x12, (q15_t)0xfd02, - (q15_t)0x11, (q15_t)0xfd0e, (q15_t)0x11, (q15_t)0xfd1b, (q15_t)0x10, (q15_t)0xfd27, (q15_t)0x10, (q15_t)0xfd34, - (q15_t)0xf, (q15_t)0xfd40, (q15_t)0xf, (q15_t)0xfd4d, (q15_t)0xe, (q15_t)0xfd5a, (q15_t)0xe, (q15_t)0xfd66, - (q15_t)0xd, (q15_t)0xfd73, (q15_t)0xd, (q15_t)0xfd7f, (q15_t)0xc, (q15_t)0xfd8c, (q15_t)0xc, (q15_t)0xfd98, - (q15_t)0xb, (q15_t)0xfda5, (q15_t)0xb, (q15_t)0xfdb2, (q15_t)0xa, (q15_t)0xfdbe, (q15_t)0xa, (q15_t)0xfdcb, - (q15_t)0x9, (q15_t)0xfdd7, (q15_t)0x9, (q15_t)0xfde4, (q15_t)0x9, (q15_t)0xfdf0, (q15_t)0x8, (q15_t)0xfdfd, - (q15_t)0x8, (q15_t)0xfe09, (q15_t)0x7, (q15_t)0xfe16, (q15_t)0x7, (q15_t)0xfe23, (q15_t)0x7, (q15_t)0xfe2f, - (q15_t)0x6, (q15_t)0xfe3c, (q15_t)0x6, (q15_t)0xfe48, (q15_t)0x6, (q15_t)0xfe55, (q15_t)0x5, (q15_t)0xfe61, - (q15_t)0x5, (q15_t)0xfe6e, (q15_t)0x5, (q15_t)0xfe7a, (q15_t)0x4, (q15_t)0xfe87, (q15_t)0x4, (q15_t)0xfe94, - (q15_t)0x4, (q15_t)0xfea0, (q15_t)0x4, (q15_t)0xfead, (q15_t)0x3, (q15_t)0xfeb9, (q15_t)0x3, (q15_t)0xfec6, - (q15_t)0x3, (q15_t)0xfed2, (q15_t)0x3, (q15_t)0xfedf, (q15_t)0x2, (q15_t)0xfeec, (q15_t)0x2, (q15_t)0xfef8, - (q15_t)0x2, (q15_t)0xff05, (q15_t)0x2, (q15_t)0xff11, (q15_t)0x2, (q15_t)0xff1e, (q15_t)0x1, (q15_t)0xff2a, - (q15_t)0x1, (q15_t)0xff37, (q15_t)0x1, (q15_t)0xff44, (q15_t)0x1, (q15_t)0xff50, (q15_t)0x1, (q15_t)0xff5d, - (q15_t)0x1, (q15_t)0xff69, (q15_t)0x1, (q15_t)0xff76, (q15_t)0x0, (q15_t)0xff82, (q15_t)0x0, (q15_t)0xff8f, - (q15_t)0x0, (q15_t)0xff9b, (q15_t)0x0, (q15_t)0xffa8, (q15_t)0x0, (q15_t)0xffb5, (q15_t)0x0, (q15_t)0xffc1, - (q15_t)0x0, (q15_t)0xffce, (q15_t)0x0, (q15_t)0xffda, (q15_t)0x0, (q15_t)0xffe7, (q15_t)0x0, (q15_t)0xfff3, - (q15_t)0x0, (q15_t)0x0, (q15_t)0x0, (q15_t)0xd, (q15_t)0x0, (q15_t)0x19, (q15_t)0x0, (q15_t)0x26, - (q15_t)0x0, (q15_t)0x32, (q15_t)0x0, (q15_t)0x3f, (q15_t)0x0, (q15_t)0x4b, (q15_t)0x0, (q15_t)0x58, - (q15_t)0x0, (q15_t)0x65, (q15_t)0x0, (q15_t)0x71, (q15_t)0x0, (q15_t)0x7e, (q15_t)0x1, (q15_t)0x8a, - (q15_t)0x1, (q15_t)0x97, (q15_t)0x1, (q15_t)0xa3, (q15_t)0x1, (q15_t)0xb0, (q15_t)0x1, (q15_t)0xbc, - (q15_t)0x1, (q15_t)0xc9, (q15_t)0x1, (q15_t)0xd6, (q15_t)0x2, (q15_t)0xe2, (q15_t)0x2, (q15_t)0xef, - (q15_t)0x2, (q15_t)0xfb, (q15_t)0x2, (q15_t)0x108, (q15_t)0x2, (q15_t)0x114, (q15_t)0x3, (q15_t)0x121, - (q15_t)0x3, (q15_t)0x12e, (q15_t)0x3, (q15_t)0x13a, (q15_t)0x3, (q15_t)0x147, (q15_t)0x4, (q15_t)0x153, - (q15_t)0x4, (q15_t)0x160, (q15_t)0x4, (q15_t)0x16c, (q15_t)0x4, (q15_t)0x179, (q15_t)0x5, (q15_t)0x186, - (q15_t)0x5, (q15_t)0x192, (q15_t)0x5, (q15_t)0x19f, (q15_t)0x6, (q15_t)0x1ab, (q15_t)0x6, (q15_t)0x1b8, - (q15_t)0x6, (q15_t)0x1c4, (q15_t)0x7, (q15_t)0x1d1, (q15_t)0x7, (q15_t)0x1dd, (q15_t)0x7, (q15_t)0x1ea, - (q15_t)0x8, (q15_t)0x1f7, (q15_t)0x8, (q15_t)0x203, (q15_t)0x9, (q15_t)0x210, (q15_t)0x9, (q15_t)0x21c, - (q15_t)0x9, (q15_t)0x229, (q15_t)0xa, (q15_t)0x235, (q15_t)0xa, (q15_t)0x242, (q15_t)0xb, (q15_t)0x24e, - (q15_t)0xb, (q15_t)0x25b, (q15_t)0xc, (q15_t)0x268, (q15_t)0xc, (q15_t)0x274, (q15_t)0xd, (q15_t)0x281, - (q15_t)0xd, (q15_t)0x28d, (q15_t)0xe, (q15_t)0x29a, (q15_t)0xe, (q15_t)0x2a6, (q15_t)0xf, (q15_t)0x2b3, - (q15_t)0xf, (q15_t)0x2c0, (q15_t)0x10, (q15_t)0x2cc, (q15_t)0x10, (q15_t)0x2d9, (q15_t)0x11, (q15_t)0x2e5, - (q15_t)0x11, (q15_t)0x2f2, (q15_t)0x12, (q15_t)0x2fe, (q15_t)0x13, (q15_t)0x30b, (q15_t)0x13, (q15_t)0x317, - (q15_t)0x14, (q15_t)0x324, (q15_t)0x14, (q15_t)0x330, (q15_t)0x15, (q15_t)0x33d, (q15_t)0x16, (q15_t)0x34a, - (q15_t)0x16, (q15_t)0x356, (q15_t)0x17, (q15_t)0x363, (q15_t)0x18, (q15_t)0x36f, (q15_t)0x18, (q15_t)0x37c, - (q15_t)0x19, (q15_t)0x388, (q15_t)0x1a, (q15_t)0x395, (q15_t)0x1a, (q15_t)0x3a1, (q15_t)0x1b, (q15_t)0x3ae, - (q15_t)0x1c, (q15_t)0x3bb, (q15_t)0x1d, (q15_t)0x3c7, (q15_t)0x1d, (q15_t)0x3d4, (q15_t)0x1e, (q15_t)0x3e0, - (q15_t)0x1f, (q15_t)0x3ed, (q15_t)0x20, (q15_t)0x3f9, (q15_t)0x20, (q15_t)0x406, (q15_t)0x21, (q15_t)0x412, - (q15_t)0x22, (q15_t)0x41f, (q15_t)0x23, (q15_t)0x42b, (q15_t)0x24, (q15_t)0x438, (q15_t)0x24, (q15_t)0x444, - (q15_t)0x25, (q15_t)0x451, (q15_t)0x26, (q15_t)0x45e, (q15_t)0x27, (q15_t)0x46a, (q15_t)0x28, (q15_t)0x477, - (q15_t)0x29, (q15_t)0x483, (q15_t)0x2a, (q15_t)0x490, (q15_t)0x2b, (q15_t)0x49c, (q15_t)0x2b, (q15_t)0x4a9, - (q15_t)0x2c, (q15_t)0x4b5, (q15_t)0x2d, (q15_t)0x4c2, (q15_t)0x2e, (q15_t)0x4ce, (q15_t)0x2f, (q15_t)0x4db, - (q15_t)0x30, (q15_t)0x4e7, (q15_t)0x31, (q15_t)0x4f4, (q15_t)0x32, (q15_t)0x500, (q15_t)0x33, (q15_t)0x50d, - (q15_t)0x34, (q15_t)0x51a, (q15_t)0x35, (q15_t)0x526, (q15_t)0x36, (q15_t)0x533, (q15_t)0x37, (q15_t)0x53f, - (q15_t)0x38, (q15_t)0x54c, (q15_t)0x39, (q15_t)0x558, (q15_t)0x3a, (q15_t)0x565, (q15_t)0x3b, (q15_t)0x571, - (q15_t)0x3c, (q15_t)0x57e, (q15_t)0x3d, (q15_t)0x58a, (q15_t)0x3f, (q15_t)0x597, (q15_t)0x40, (q15_t)0x5a3, - (q15_t)0x41, (q15_t)0x5b0, (q15_t)0x42, (q15_t)0x5bc, (q15_t)0x43, (q15_t)0x5c9, (q15_t)0x44, (q15_t)0x5d5, - (q15_t)0x45, (q15_t)0x5e2, (q15_t)0x47, (q15_t)0x5ee, (q15_t)0x48, (q15_t)0x5fb, (q15_t)0x49, (q15_t)0x607, - (q15_t)0x4a, (q15_t)0x614, (q15_t)0x4b, (q15_t)0x620, (q15_t)0x4c, (q15_t)0x62d, (q15_t)0x4e, (q15_t)0x639, - (q15_t)0x4f, (q15_t)0x646, (q15_t)0x50, (q15_t)0x652, (q15_t)0x51, (q15_t)0x65f, (q15_t)0x53, (q15_t)0x66b, - (q15_t)0x54, (q15_t)0x678, (q15_t)0x55, (q15_t)0x684, (q15_t)0x56, (q15_t)0x691, (q15_t)0x58, (q15_t)0x69d, - (q15_t)0x59, (q15_t)0x6aa, (q15_t)0x5a, (q15_t)0x6b6, (q15_t)0x5c, (q15_t)0x6c3, (q15_t)0x5d, (q15_t)0x6cf, - (q15_t)0x5e, (q15_t)0x6dc, (q15_t)0x60, (q15_t)0x6e8, (q15_t)0x61, (q15_t)0x6f5, (q15_t)0x62, (q15_t)0x701, - (q15_t)0x64, (q15_t)0x70e, (q15_t)0x65, (q15_t)0x71a, (q15_t)0x67, (q15_t)0x727, (q15_t)0x68, (q15_t)0x733, - (q15_t)0x69, (q15_t)0x740, (q15_t)0x6b, (q15_t)0x74c, (q15_t)0x6c, (q15_t)0x759, (q15_t)0x6e, (q15_t)0x765, - (q15_t)0x6f, (q15_t)0x772, (q15_t)0x71, (q15_t)0x77e, (q15_t)0x72, (q15_t)0x78b, (q15_t)0x74, (q15_t)0x797, - (q15_t)0x75, (q15_t)0x7a4, (q15_t)0x77, (q15_t)0x7b0, (q15_t)0x78, (q15_t)0x7bd, (q15_t)0x7a, (q15_t)0x7c9, - (q15_t)0x7b, (q15_t)0x7d6, (q15_t)0x7d, (q15_t)0x7e2, (q15_t)0x7e, (q15_t)0x7ef, (q15_t)0x80, (q15_t)0x7fb, - (q15_t)0x81, (q15_t)0x807, (q15_t)0x83, (q15_t)0x814, (q15_t)0x85, (q15_t)0x820, (q15_t)0x86, (q15_t)0x82d, - (q15_t)0x88, (q15_t)0x839, (q15_t)0x89, (q15_t)0x846, (q15_t)0x8b, (q15_t)0x852, (q15_t)0x8d, (q15_t)0x85f, - (q15_t)0x8e, (q15_t)0x86b, (q15_t)0x90, (q15_t)0x878, (q15_t)0x92, (q15_t)0x884, (q15_t)0x93, (q15_t)0x891, - (q15_t)0x95, (q15_t)0x89d, (q15_t)0x97, (q15_t)0x8a9, (q15_t)0x98, (q15_t)0x8b6, (q15_t)0x9a, (q15_t)0x8c2, - (q15_t)0x9c, (q15_t)0x8cf, (q15_t)0x9e, (q15_t)0x8db, (q15_t)0x9f, (q15_t)0x8e8, (q15_t)0xa1, (q15_t)0x8f4, - (q15_t)0xa3, (q15_t)0x901, (q15_t)0xa5, (q15_t)0x90d, (q15_t)0xa6, (q15_t)0x919, (q15_t)0xa8, (q15_t)0x926, - (q15_t)0xaa, (q15_t)0x932, (q15_t)0xac, (q15_t)0x93f, (q15_t)0xae, (q15_t)0x94b, (q15_t)0xaf, (q15_t)0x958, - (q15_t)0xb1, (q15_t)0x964, (q15_t)0xb3, (q15_t)0x970, (q15_t)0xb5, (q15_t)0x97d, (q15_t)0xb7, (q15_t)0x989, - (q15_t)0xb9, (q15_t)0x996, (q15_t)0xbb, (q15_t)0x9a2, (q15_t)0xbd, (q15_t)0x9af, (q15_t)0xbe, (q15_t)0x9bb, - (q15_t)0xc0, (q15_t)0x9c7, (q15_t)0xc2, (q15_t)0x9d4, (q15_t)0xc4, (q15_t)0x9e0, (q15_t)0xc6, (q15_t)0x9ed, - (q15_t)0xc8, (q15_t)0x9f9, (q15_t)0xca, (q15_t)0xa06, (q15_t)0xcc, (q15_t)0xa12, (q15_t)0xce, (q15_t)0xa1e, - (q15_t)0xd0, (q15_t)0xa2b, (q15_t)0xd2, (q15_t)0xa37, (q15_t)0xd4, (q15_t)0xa44, (q15_t)0xd6, (q15_t)0xa50, - (q15_t)0xd8, (q15_t)0xa5c, (q15_t)0xda, (q15_t)0xa69, (q15_t)0xdc, (q15_t)0xa75, (q15_t)0xde, (q15_t)0xa82, - (q15_t)0xe0, (q15_t)0xa8e, (q15_t)0xe2, (q15_t)0xa9a, (q15_t)0xe4, (q15_t)0xaa7, (q15_t)0xe7, (q15_t)0xab3, - (q15_t)0xe9, (q15_t)0xac0, (q15_t)0xeb, (q15_t)0xacc, (q15_t)0xed, (q15_t)0xad8, (q15_t)0xef, (q15_t)0xae5, - (q15_t)0xf1, (q15_t)0xaf1, (q15_t)0xf3, (q15_t)0xafd, (q15_t)0xf6, (q15_t)0xb0a, (q15_t)0xf8, (q15_t)0xb16, - (q15_t)0xfa, (q15_t)0xb23, (q15_t)0xfc, (q15_t)0xb2f, (q15_t)0xfe, (q15_t)0xb3b, (q15_t)0x100, (q15_t)0xb48, - (q15_t)0x103, (q15_t)0xb54, (q15_t)0x105, (q15_t)0xb60, (q15_t)0x107, (q15_t)0xb6d, (q15_t)0x109, (q15_t)0xb79, - (q15_t)0x10c, (q15_t)0xb85, (q15_t)0x10e, (q15_t)0xb92, (q15_t)0x110, (q15_t)0xb9e, (q15_t)0x113, (q15_t)0xbab, - (q15_t)0x115, (q15_t)0xbb7, (q15_t)0x117, (q15_t)0xbc3, (q15_t)0x119, (q15_t)0xbd0, (q15_t)0x11c, (q15_t)0xbdc, - (q15_t)0x11e, (q15_t)0xbe8, (q15_t)0x120, (q15_t)0xbf5, (q15_t)0x123, (q15_t)0xc01, (q15_t)0x125, (q15_t)0xc0d, - (q15_t)0x128, (q15_t)0xc1a, (q15_t)0x12a, (q15_t)0xc26, (q15_t)0x12c, (q15_t)0xc32, (q15_t)0x12f, (q15_t)0xc3f, - (q15_t)0x131, (q15_t)0xc4b, (q15_t)0x134, (q15_t)0xc57, (q15_t)0x136, (q15_t)0xc64, (q15_t)0x138, (q15_t)0xc70, - (q15_t)0x13b, (q15_t)0xc7c, (q15_t)0x13d, (q15_t)0xc89, (q15_t)0x140, (q15_t)0xc95, (q15_t)0x142, (q15_t)0xca1, - (q15_t)0x145, (q15_t)0xcae, (q15_t)0x147, (q15_t)0xcba, (q15_t)0x14a, (q15_t)0xcc6, (q15_t)0x14c, (q15_t)0xcd3, - (q15_t)0x14f, (q15_t)0xcdf, (q15_t)0x151, (q15_t)0xceb, (q15_t)0x154, (q15_t)0xcf8, (q15_t)0x156, (q15_t)0xd04, - (q15_t)0x159, (q15_t)0xd10, (q15_t)0x15b, (q15_t)0xd1c, (q15_t)0x15e, (q15_t)0xd29, (q15_t)0x161, (q15_t)0xd35, - (q15_t)0x163, (q15_t)0xd41, (q15_t)0x166, (q15_t)0xd4e, (q15_t)0x168, (q15_t)0xd5a, (q15_t)0x16b, (q15_t)0xd66, - (q15_t)0x16e, (q15_t)0xd72, (q15_t)0x170, (q15_t)0xd7f, (q15_t)0x173, (q15_t)0xd8b, (q15_t)0x176, (q15_t)0xd97, - (q15_t)0x178, (q15_t)0xda4, (q15_t)0x17b, (q15_t)0xdb0, (q15_t)0x17e, (q15_t)0xdbc, (q15_t)0x180, (q15_t)0xdc8, - (q15_t)0x183, (q15_t)0xdd5, (q15_t)0x186, (q15_t)0xde1, (q15_t)0x189, (q15_t)0xded, (q15_t)0x18b, (q15_t)0xdf9, - (q15_t)0x18e, (q15_t)0xe06, (q15_t)0x191, (q15_t)0xe12, (q15_t)0x194, (q15_t)0xe1e, (q15_t)0x196, (q15_t)0xe2b, - (q15_t)0x199, (q15_t)0xe37, (q15_t)0x19c, (q15_t)0xe43, (q15_t)0x19f, (q15_t)0xe4f, (q15_t)0x1a2, (q15_t)0xe5c, - (q15_t)0x1a4, (q15_t)0xe68, (q15_t)0x1a7, (q15_t)0xe74, (q15_t)0x1aa, (q15_t)0xe80, (q15_t)0x1ad, (q15_t)0xe8c, - (q15_t)0x1b0, (q15_t)0xe99, (q15_t)0x1b3, (q15_t)0xea5, (q15_t)0x1b6, (q15_t)0xeb1, (q15_t)0x1b8, (q15_t)0xebd, - (q15_t)0x1bb, (q15_t)0xeca, (q15_t)0x1be, (q15_t)0xed6, (q15_t)0x1c1, (q15_t)0xee2, (q15_t)0x1c4, (q15_t)0xeee, - (q15_t)0x1c7, (q15_t)0xefb, (q15_t)0x1ca, (q15_t)0xf07, (q15_t)0x1cd, (q15_t)0xf13, (q15_t)0x1d0, (q15_t)0xf1f, - (q15_t)0x1d3, (q15_t)0xf2b, (q15_t)0x1d6, (q15_t)0xf38, (q15_t)0x1d9, (q15_t)0xf44, (q15_t)0x1dc, (q15_t)0xf50, - (q15_t)0x1df, (q15_t)0xf5c, (q15_t)0x1e2, (q15_t)0xf68, (q15_t)0x1e5, (q15_t)0xf75, (q15_t)0x1e8, (q15_t)0xf81, - (q15_t)0x1eb, (q15_t)0xf8d, (q15_t)0x1ee, (q15_t)0xf99, (q15_t)0x1f1, (q15_t)0xfa5, (q15_t)0x1f4, (q15_t)0xfb2, - (q15_t)0x1f7, (q15_t)0xfbe, (q15_t)0x1fa, (q15_t)0xfca, (q15_t)0x1fd, (q15_t)0xfd6, (q15_t)0x201, (q15_t)0xfe2, - (q15_t)0x204, (q15_t)0xfee, (q15_t)0x207, (q15_t)0xffb, (q15_t)0x20a, (q15_t)0x1007, (q15_t)0x20d, (q15_t)0x1013, - (q15_t)0x210, (q15_t)0x101f, (q15_t)0x213, (q15_t)0x102b, (q15_t)0x217, (q15_t)0x1037, (q15_t)0x21a, (q15_t)0x1044, - (q15_t)0x21d, (q15_t)0x1050, (q15_t)0x220, (q15_t)0x105c, (q15_t)0x223, (q15_t)0x1068, (q15_t)0x227, (q15_t)0x1074, - (q15_t)0x22a, (q15_t)0x1080, (q15_t)0x22d, (q15_t)0x108c, (q15_t)0x230, (q15_t)0x1099, (q15_t)0x234, (q15_t)0x10a5, - (q15_t)0x237, (q15_t)0x10b1, (q15_t)0x23a, (q15_t)0x10bd, (q15_t)0x23e, (q15_t)0x10c9, (q15_t)0x241, (q15_t)0x10d5, - (q15_t)0x244, (q15_t)0x10e1, (q15_t)0x247, (q15_t)0x10ed, (q15_t)0x24b, (q15_t)0x10fa, (q15_t)0x24e, (q15_t)0x1106, - (q15_t)0x251, (q15_t)0x1112, (q15_t)0x255, (q15_t)0x111e, (q15_t)0x258, (q15_t)0x112a, (q15_t)0x25c, (q15_t)0x1136, - (q15_t)0x25f, (q15_t)0x1142, (q15_t)0x262, (q15_t)0x114e, (q15_t)0x266, (q15_t)0x115a, (q15_t)0x269, (q15_t)0x1167, - (q15_t)0x26d, (q15_t)0x1173, (q15_t)0x270, (q15_t)0x117f, (q15_t)0x273, (q15_t)0x118b, (q15_t)0x277, (q15_t)0x1197, - (q15_t)0x27a, (q15_t)0x11a3, (q15_t)0x27e, (q15_t)0x11af, (q15_t)0x281, (q15_t)0x11bb, (q15_t)0x285, (q15_t)0x11c7, - (q15_t)0x288, (q15_t)0x11d3, (q15_t)0x28c, (q15_t)0x11df, (q15_t)0x28f, (q15_t)0x11eb, (q15_t)0x293, (q15_t)0x11f7, - (q15_t)0x296, (q15_t)0x1204, (q15_t)0x29a, (q15_t)0x1210, (q15_t)0x29d, (q15_t)0x121c, (q15_t)0x2a1, (q15_t)0x1228, - (q15_t)0x2a5, (q15_t)0x1234, (q15_t)0x2a8, (q15_t)0x1240, (q15_t)0x2ac, (q15_t)0x124c, (q15_t)0x2af, (q15_t)0x1258, - (q15_t)0x2b3, (q15_t)0x1264, (q15_t)0x2b7, (q15_t)0x1270, (q15_t)0x2ba, (q15_t)0x127c, (q15_t)0x2be, (q15_t)0x1288, - (q15_t)0x2c1, (q15_t)0x1294, (q15_t)0x2c5, (q15_t)0x12a0, (q15_t)0x2c9, (q15_t)0x12ac, (q15_t)0x2cc, (q15_t)0x12b8, - (q15_t)0x2d0, (q15_t)0x12c4, (q15_t)0x2d4, (q15_t)0x12d0, (q15_t)0x2d8, (q15_t)0x12dc, (q15_t)0x2db, (q15_t)0x12e8, - (q15_t)0x2df, (q15_t)0x12f4, (q15_t)0x2e3, (q15_t)0x1300, (q15_t)0x2e6, (q15_t)0x130c, (q15_t)0x2ea, (q15_t)0x1318, - (q15_t)0x2ee, (q15_t)0x1324, (q15_t)0x2f2, (q15_t)0x1330, (q15_t)0x2f5, (q15_t)0x133c, (q15_t)0x2f9, (q15_t)0x1348, - (q15_t)0x2fd, (q15_t)0x1354, (q15_t)0x301, (q15_t)0x1360, (q15_t)0x305, (q15_t)0x136c, (q15_t)0x308, (q15_t)0x1378, - (q15_t)0x30c, (q15_t)0x1384, (q15_t)0x310, (q15_t)0x1390, (q15_t)0x314, (q15_t)0x139c, (q15_t)0x318, (q15_t)0x13a8, - (q15_t)0x31c, (q15_t)0x13b4, (q15_t)0x320, (q15_t)0x13c0, (q15_t)0x323, (q15_t)0x13cc, (q15_t)0x327, (q15_t)0x13d8, - (q15_t)0x32b, (q15_t)0x13e4, (q15_t)0x32f, (q15_t)0x13f0, (q15_t)0x333, (q15_t)0x13fb, (q15_t)0x337, (q15_t)0x1407, - (q15_t)0x33b, (q15_t)0x1413, (q15_t)0x33f, (q15_t)0x141f, (q15_t)0x343, (q15_t)0x142b, (q15_t)0x347, (q15_t)0x1437, - (q15_t)0x34b, (q15_t)0x1443, (q15_t)0x34f, (q15_t)0x144f, (q15_t)0x353, (q15_t)0x145b, (q15_t)0x357, (q15_t)0x1467, - (q15_t)0x35b, (q15_t)0x1473, (q15_t)0x35f, (q15_t)0x147f, (q15_t)0x363, (q15_t)0x148b, (q15_t)0x367, (q15_t)0x1496, - (q15_t)0x36b, (q15_t)0x14a2, (q15_t)0x36f, (q15_t)0x14ae, (q15_t)0x373, (q15_t)0x14ba, (q15_t)0x377, (q15_t)0x14c6, - (q15_t)0x37b, (q15_t)0x14d2, (q15_t)0x37f, (q15_t)0x14de, (q15_t)0x383, (q15_t)0x14ea, (q15_t)0x387, (q15_t)0x14f6, - (q15_t)0x38c, (q15_t)0x1501, (q15_t)0x390, (q15_t)0x150d, (q15_t)0x394, (q15_t)0x1519, (q15_t)0x398, (q15_t)0x1525, - (q15_t)0x39c, (q15_t)0x1531, (q15_t)0x3a0, (q15_t)0x153d, (q15_t)0x3a5, (q15_t)0x1549, (q15_t)0x3a9, (q15_t)0x1554, - (q15_t)0x3ad, (q15_t)0x1560, (q15_t)0x3b1, (q15_t)0x156c, (q15_t)0x3b5, (q15_t)0x1578, (q15_t)0x3ba, (q15_t)0x1584, - (q15_t)0x3be, (q15_t)0x1590, (q15_t)0x3c2, (q15_t)0x159b, (q15_t)0x3c6, (q15_t)0x15a7, (q15_t)0x3ca, (q15_t)0x15b3, - (q15_t)0x3cf, (q15_t)0x15bf, (q15_t)0x3d3, (q15_t)0x15cb, (q15_t)0x3d7, (q15_t)0x15d7, (q15_t)0x3dc, (q15_t)0x15e2, - (q15_t)0x3e0, (q15_t)0x15ee, (q15_t)0x3e4, (q15_t)0x15fa, (q15_t)0x3e9, (q15_t)0x1606, (q15_t)0x3ed, (q15_t)0x1612, - (q15_t)0x3f1, (q15_t)0x161d, (q15_t)0x3f6, (q15_t)0x1629, (q15_t)0x3fa, (q15_t)0x1635, (q15_t)0x3fe, (q15_t)0x1641, - (q15_t)0x403, (q15_t)0x164c, (q15_t)0x407, (q15_t)0x1658, (q15_t)0x40b, (q15_t)0x1664, (q15_t)0x410, (q15_t)0x1670, - (q15_t)0x414, (q15_t)0x167c, (q15_t)0x419, (q15_t)0x1687, (q15_t)0x41d, (q15_t)0x1693, (q15_t)0x422, (q15_t)0x169f, - (q15_t)0x426, (q15_t)0x16ab, (q15_t)0x42a, (q15_t)0x16b6, (q15_t)0x42f, (q15_t)0x16c2, (q15_t)0x433, (q15_t)0x16ce, - (q15_t)0x438, (q15_t)0x16da, (q15_t)0x43c, (q15_t)0x16e5, (q15_t)0x441, (q15_t)0x16f1, (q15_t)0x445, (q15_t)0x16fd, - (q15_t)0x44a, (q15_t)0x1709, (q15_t)0x44e, (q15_t)0x1714, (q15_t)0x453, (q15_t)0x1720, (q15_t)0x457, (q15_t)0x172c, - (q15_t)0x45c, (q15_t)0x1737, (q15_t)0x461, (q15_t)0x1743, (q15_t)0x465, (q15_t)0x174f, (q15_t)0x46a, (q15_t)0x175b, - (q15_t)0x46e, (q15_t)0x1766, (q15_t)0x473, (q15_t)0x1772, (q15_t)0x478, (q15_t)0x177e, (q15_t)0x47c, (q15_t)0x1789, - (q15_t)0x481, (q15_t)0x1795, (q15_t)0x485, (q15_t)0x17a1, (q15_t)0x48a, (q15_t)0x17ac, (q15_t)0x48f, (q15_t)0x17b8, - (q15_t)0x493, (q15_t)0x17c4, (q15_t)0x498, (q15_t)0x17cf, (q15_t)0x49d, (q15_t)0x17db, (q15_t)0x4a1, (q15_t)0x17e7, - (q15_t)0x4a6, (q15_t)0x17f2, (q15_t)0x4ab, (q15_t)0x17fe, (q15_t)0x4b0, (q15_t)0x180a, (q15_t)0x4b4, (q15_t)0x1815, - (q15_t)0x4b9, (q15_t)0x1821, (q15_t)0x4be, (q15_t)0x182d, (q15_t)0x4c2, (q15_t)0x1838, (q15_t)0x4c7, (q15_t)0x1844, - (q15_t)0x4cc, (q15_t)0x184f, (q15_t)0x4d1, (q15_t)0x185b, (q15_t)0x4d6, (q15_t)0x1867, (q15_t)0x4da, (q15_t)0x1872, - (q15_t)0x4df, (q15_t)0x187e, (q15_t)0x4e4, (q15_t)0x1889, (q15_t)0x4e9, (q15_t)0x1895, (q15_t)0x4ee, (q15_t)0x18a1, - (q15_t)0x4f2, (q15_t)0x18ac, (q15_t)0x4f7, (q15_t)0x18b8, (q15_t)0x4fc, (q15_t)0x18c3, (q15_t)0x501, (q15_t)0x18cf, - (q15_t)0x506, (q15_t)0x18db, (q15_t)0x50b, (q15_t)0x18e6, (q15_t)0x510, (q15_t)0x18f2, (q15_t)0x515, (q15_t)0x18fd, - (q15_t)0x51a, (q15_t)0x1909, (q15_t)0x51e, (q15_t)0x1914, (q15_t)0x523, (q15_t)0x1920, (q15_t)0x528, (q15_t)0x192c, - (q15_t)0x52d, (q15_t)0x1937, (q15_t)0x532, (q15_t)0x1943, (q15_t)0x537, (q15_t)0x194e, (q15_t)0x53c, (q15_t)0x195a, - (q15_t)0x541, (q15_t)0x1965, (q15_t)0x546, (q15_t)0x1971, (q15_t)0x54b, (q15_t)0x197c, (q15_t)0x550, (q15_t)0x1988, - (q15_t)0x555, (q15_t)0x1993, (q15_t)0x55a, (q15_t)0x199f, (q15_t)0x55f, (q15_t)0x19aa, (q15_t)0x564, (q15_t)0x19b6, - (q15_t)0x569, (q15_t)0x19c1, (q15_t)0x56e, (q15_t)0x19cd, (q15_t)0x573, (q15_t)0x19d8, (q15_t)0x578, (q15_t)0x19e4, - (q15_t)0x57e, (q15_t)0x19ef, (q15_t)0x583, (q15_t)0x19fb, (q15_t)0x588, (q15_t)0x1a06, (q15_t)0x58d, (q15_t)0x1a12, - (q15_t)0x592, (q15_t)0x1a1d, (q15_t)0x597, (q15_t)0x1a29, (q15_t)0x59c, (q15_t)0x1a34, (q15_t)0x5a1, (q15_t)0x1a40, - (q15_t)0x5a7, (q15_t)0x1a4b, (q15_t)0x5ac, (q15_t)0x1a57, (q15_t)0x5b1, (q15_t)0x1a62, (q15_t)0x5b6, (q15_t)0x1a6e, - (q15_t)0x5bb, (q15_t)0x1a79, (q15_t)0x5c1, (q15_t)0x1a84, (q15_t)0x5c6, (q15_t)0x1a90, (q15_t)0x5cb, (q15_t)0x1a9b, - (q15_t)0x5d0, (q15_t)0x1aa7, (q15_t)0x5d5, (q15_t)0x1ab2, (q15_t)0x5db, (q15_t)0x1abe, (q15_t)0x5e0, (q15_t)0x1ac9, - (q15_t)0x5e5, (q15_t)0x1ad4, (q15_t)0x5ea, (q15_t)0x1ae0, (q15_t)0x5f0, (q15_t)0x1aeb, (q15_t)0x5f5, (q15_t)0x1af7, - (q15_t)0x5fa, (q15_t)0x1b02, (q15_t)0x600, (q15_t)0x1b0d, (q15_t)0x605, (q15_t)0x1b19, (q15_t)0x60a, (q15_t)0x1b24, - (q15_t)0x610, (q15_t)0x1b30, (q15_t)0x615, (q15_t)0x1b3b, (q15_t)0x61a, (q15_t)0x1b46, (q15_t)0x620, (q15_t)0x1b52, - (q15_t)0x625, (q15_t)0x1b5d, (q15_t)0x62a, (q15_t)0x1b68, (q15_t)0x630, (q15_t)0x1b74, (q15_t)0x635, (q15_t)0x1b7f, - (q15_t)0x63b, (q15_t)0x1b8a, (q15_t)0x640, (q15_t)0x1b96, (q15_t)0x645, (q15_t)0x1ba1, (q15_t)0x64b, (q15_t)0x1bac, - (q15_t)0x650, (q15_t)0x1bb8, (q15_t)0x656, (q15_t)0x1bc3, (q15_t)0x65b, (q15_t)0x1bce, (q15_t)0x661, (q15_t)0x1bda, - (q15_t)0x666, (q15_t)0x1be5, (q15_t)0x66c, (q15_t)0x1bf0, (q15_t)0x671, (q15_t)0x1bfc, (q15_t)0x677, (q15_t)0x1c07, - (q15_t)0x67c, (q15_t)0x1c12, (q15_t)0x682, (q15_t)0x1c1e, (q15_t)0x687, (q15_t)0x1c29, (q15_t)0x68d, (q15_t)0x1c34, - (q15_t)0x692, (q15_t)0x1c3f, (q15_t)0x698, (q15_t)0x1c4b, (q15_t)0x69d, (q15_t)0x1c56, (q15_t)0x6a3, (q15_t)0x1c61, - (q15_t)0x6a8, (q15_t)0x1c6c, (q15_t)0x6ae, (q15_t)0x1c78, (q15_t)0x6b4, (q15_t)0x1c83, (q15_t)0x6b9, (q15_t)0x1c8e, - (q15_t)0x6bf, (q15_t)0x1c99, (q15_t)0x6c5, (q15_t)0x1ca5, (q15_t)0x6ca, (q15_t)0x1cb0, (q15_t)0x6d0, (q15_t)0x1cbb, - (q15_t)0x6d5, (q15_t)0x1cc6, (q15_t)0x6db, (q15_t)0x1cd2, (q15_t)0x6e1, (q15_t)0x1cdd, (q15_t)0x6e6, (q15_t)0x1ce8, - (q15_t)0x6ec, (q15_t)0x1cf3, (q15_t)0x6f2, (q15_t)0x1cff, (q15_t)0x6f7, (q15_t)0x1d0a, (q15_t)0x6fd, (q15_t)0x1d15, - (q15_t)0x703, (q15_t)0x1d20, (q15_t)0x709, (q15_t)0x1d2b, (q15_t)0x70e, (q15_t)0x1d36, (q15_t)0x714, (q15_t)0x1d42, - (q15_t)0x71a, (q15_t)0x1d4d, (q15_t)0x720, (q15_t)0x1d58, (q15_t)0x725, (q15_t)0x1d63, (q15_t)0x72b, (q15_t)0x1d6e, - (q15_t)0x731, (q15_t)0x1d79, (q15_t)0x737, (q15_t)0x1d85, (q15_t)0x73d, (q15_t)0x1d90, (q15_t)0x742, (q15_t)0x1d9b, - (q15_t)0x748, (q15_t)0x1da6, (q15_t)0x74e, (q15_t)0x1db1, (q15_t)0x754, (q15_t)0x1dbc, (q15_t)0x75a, (q15_t)0x1dc7, - (q15_t)0x75f, (q15_t)0x1dd3, (q15_t)0x765, (q15_t)0x1dde, (q15_t)0x76b, (q15_t)0x1de9, (q15_t)0x771, (q15_t)0x1df4, - (q15_t)0x777, (q15_t)0x1dff, (q15_t)0x77d, (q15_t)0x1e0a, (q15_t)0x783, (q15_t)0x1e15, (q15_t)0x789, (q15_t)0x1e20, - (q15_t)0x78f, (q15_t)0x1e2b, (q15_t)0x795, (q15_t)0x1e36, (q15_t)0x79a, (q15_t)0x1e42, (q15_t)0x7a0, (q15_t)0x1e4d, - (q15_t)0x7a6, (q15_t)0x1e58, (q15_t)0x7ac, (q15_t)0x1e63, (q15_t)0x7b2, (q15_t)0x1e6e, (q15_t)0x7b8, (q15_t)0x1e79, - (q15_t)0x7be, (q15_t)0x1e84, (q15_t)0x7c4, (q15_t)0x1e8f, (q15_t)0x7ca, (q15_t)0x1e9a, (q15_t)0x7d0, (q15_t)0x1ea5, - (q15_t)0x7d6, (q15_t)0x1eb0, (q15_t)0x7dc, (q15_t)0x1ebb, (q15_t)0x7e2, (q15_t)0x1ec6, (q15_t)0x7e8, (q15_t)0x1ed1, - (q15_t)0x7ee, (q15_t)0x1edc, (q15_t)0x7f5, (q15_t)0x1ee7, (q15_t)0x7fb, (q15_t)0x1ef2, (q15_t)0x801, (q15_t)0x1efd, - (q15_t)0x807, (q15_t)0x1f08, (q15_t)0x80d, (q15_t)0x1f13, (q15_t)0x813, (q15_t)0x1f1e, (q15_t)0x819, (q15_t)0x1f29, - (q15_t)0x81f, (q15_t)0x1f34, (q15_t)0x825, (q15_t)0x1f3f, (q15_t)0x82b, (q15_t)0x1f4a, (q15_t)0x832, (q15_t)0x1f55, - (q15_t)0x838, (q15_t)0x1f60, (q15_t)0x83e, (q15_t)0x1f6b, (q15_t)0x844, (q15_t)0x1f76, (q15_t)0x84a, (q15_t)0x1f81, - (q15_t)0x850, (q15_t)0x1f8c, (q15_t)0x857, (q15_t)0x1f97, (q15_t)0x85d, (q15_t)0x1fa2, (q15_t)0x863, (q15_t)0x1fac, - (q15_t)0x869, (q15_t)0x1fb7, (q15_t)0x870, (q15_t)0x1fc2, (q15_t)0x876, (q15_t)0x1fcd, (q15_t)0x87c, (q15_t)0x1fd8, - (q15_t)0x882, (q15_t)0x1fe3, (q15_t)0x889, (q15_t)0x1fee, (q15_t)0x88f, (q15_t)0x1ff9, (q15_t)0x895, (q15_t)0x2004, - (q15_t)0x89b, (q15_t)0x200f, (q15_t)0x8a2, (q15_t)0x2019, (q15_t)0x8a8, (q15_t)0x2024, (q15_t)0x8ae, (q15_t)0x202f, - (q15_t)0x8b5, (q15_t)0x203a, (q15_t)0x8bb, (q15_t)0x2045, (q15_t)0x8c1, (q15_t)0x2050, (q15_t)0x8c8, (q15_t)0x205b, - (q15_t)0x8ce, (q15_t)0x2065, (q15_t)0x8d4, (q15_t)0x2070, (q15_t)0x8db, (q15_t)0x207b, (q15_t)0x8e1, (q15_t)0x2086, - (q15_t)0x8e8, (q15_t)0x2091, (q15_t)0x8ee, (q15_t)0x209b, (q15_t)0x8f4, (q15_t)0x20a6, (q15_t)0x8fb, (q15_t)0x20b1, - (q15_t)0x901, (q15_t)0x20bc, (q15_t)0x908, (q15_t)0x20c7, (q15_t)0x90e, (q15_t)0x20d1, (q15_t)0x915, (q15_t)0x20dc, - (q15_t)0x91b, (q15_t)0x20e7, (q15_t)0x921, (q15_t)0x20f2, (q15_t)0x928, (q15_t)0x20fd, (q15_t)0x92e, (q15_t)0x2107, - (q15_t)0x935, (q15_t)0x2112, (q15_t)0x93b, (q15_t)0x211d, (q15_t)0x942, (q15_t)0x2128, (q15_t)0x948, (q15_t)0x2132, - (q15_t)0x94f, (q15_t)0x213d, (q15_t)0x955, (q15_t)0x2148, (q15_t)0x95c, (q15_t)0x2153, (q15_t)0x963, (q15_t)0x215d, - (q15_t)0x969, (q15_t)0x2168, (q15_t)0x970, (q15_t)0x2173, (q15_t)0x976, (q15_t)0x217d, (q15_t)0x97d, (q15_t)0x2188, - (q15_t)0x983, (q15_t)0x2193, (q15_t)0x98a, (q15_t)0x219e, (q15_t)0x991, (q15_t)0x21a8, (q15_t)0x997, (q15_t)0x21b3, - (q15_t)0x99e, (q15_t)0x21be, (q15_t)0x9a4, (q15_t)0x21c8, (q15_t)0x9ab, (q15_t)0x21d3, (q15_t)0x9b2, (q15_t)0x21de, - (q15_t)0x9b8, (q15_t)0x21e8, (q15_t)0x9bf, (q15_t)0x21f3, (q15_t)0x9c6, (q15_t)0x21fe, (q15_t)0x9cc, (q15_t)0x2208, - (q15_t)0x9d3, (q15_t)0x2213, (q15_t)0x9da, (q15_t)0x221e, (q15_t)0x9e0, (q15_t)0x2228, (q15_t)0x9e7, (q15_t)0x2233, - (q15_t)0x9ee, (q15_t)0x223d, (q15_t)0x9f5, (q15_t)0x2248, (q15_t)0x9fb, (q15_t)0x2253, (q15_t)0xa02, (q15_t)0x225d, - (q15_t)0xa09, (q15_t)0x2268, (q15_t)0xa10, (q15_t)0x2272, (q15_t)0xa16, (q15_t)0x227d, (q15_t)0xa1d, (q15_t)0x2288, - (q15_t)0xa24, (q15_t)0x2292, (q15_t)0xa2b, (q15_t)0x229d, (q15_t)0xa32, (q15_t)0x22a7, (q15_t)0xa38, (q15_t)0x22b2, - (q15_t)0xa3f, (q15_t)0x22bc, (q15_t)0xa46, (q15_t)0x22c7, (q15_t)0xa4d, (q15_t)0x22d2, (q15_t)0xa54, (q15_t)0x22dc, - (q15_t)0xa5b, (q15_t)0x22e7, (q15_t)0xa61, (q15_t)0x22f1, (q15_t)0xa68, (q15_t)0x22fc, (q15_t)0xa6f, (q15_t)0x2306, - (q15_t)0xa76, (q15_t)0x2311, (q15_t)0xa7d, (q15_t)0x231b, (q15_t)0xa84, (q15_t)0x2326, (q15_t)0xa8b, (q15_t)0x2330, - (q15_t)0xa92, (q15_t)0x233b, (q15_t)0xa99, (q15_t)0x2345, (q15_t)0xa9f, (q15_t)0x2350, (q15_t)0xaa6, (q15_t)0x235a, - (q15_t)0xaad, (q15_t)0x2365, (q15_t)0xab4, (q15_t)0x236f, (q15_t)0xabb, (q15_t)0x237a, (q15_t)0xac2, (q15_t)0x2384, - (q15_t)0xac9, (q15_t)0x238e, (q15_t)0xad0, (q15_t)0x2399, (q15_t)0xad7, (q15_t)0x23a3, (q15_t)0xade, (q15_t)0x23ae, - (q15_t)0xae5, (q15_t)0x23b8, (q15_t)0xaec, (q15_t)0x23c3, (q15_t)0xaf3, (q15_t)0x23cd, (q15_t)0xafa, (q15_t)0x23d7, - (q15_t)0xb01, (q15_t)0x23e2, (q15_t)0xb08, (q15_t)0x23ec, (q15_t)0xb0f, (q15_t)0x23f7, (q15_t)0xb16, (q15_t)0x2401, - (q15_t)0xb1e, (q15_t)0x240b, (q15_t)0xb25, (q15_t)0x2416, (q15_t)0xb2c, (q15_t)0x2420, (q15_t)0xb33, (q15_t)0x242b, - (q15_t)0xb3a, (q15_t)0x2435, (q15_t)0xb41, (q15_t)0x243f, (q15_t)0xb48, (q15_t)0x244a, (q15_t)0xb4f, (q15_t)0x2454, - (q15_t)0xb56, (q15_t)0x245e, (q15_t)0xb5e, (q15_t)0x2469, (q15_t)0xb65, (q15_t)0x2473, (q15_t)0xb6c, (q15_t)0x247d, - (q15_t)0xb73, (q15_t)0x2488, (q15_t)0xb7a, (q15_t)0x2492, (q15_t)0xb81, (q15_t)0x249c, (q15_t)0xb89, (q15_t)0x24a7, - (q15_t)0xb90, (q15_t)0x24b1, (q15_t)0xb97, (q15_t)0x24bb, (q15_t)0xb9e, (q15_t)0x24c5, (q15_t)0xba5, (q15_t)0x24d0, - (q15_t)0xbad, (q15_t)0x24da, (q15_t)0xbb4, (q15_t)0x24e4, (q15_t)0xbbb, (q15_t)0x24ef, (q15_t)0xbc2, (q15_t)0x24f9, - (q15_t)0xbca, (q15_t)0x2503, (q15_t)0xbd1, (q15_t)0x250d, (q15_t)0xbd8, (q15_t)0x2518, (q15_t)0xbe0, (q15_t)0x2522, - (q15_t)0xbe7, (q15_t)0x252c, (q15_t)0xbee, (q15_t)0x2536, (q15_t)0xbf5, (q15_t)0x2541, (q15_t)0xbfd, (q15_t)0x254b, - (q15_t)0xc04, (q15_t)0x2555, (q15_t)0xc0b, (q15_t)0x255f, (q15_t)0xc13, (q15_t)0x2569, (q15_t)0xc1a, (q15_t)0x2574, - (q15_t)0xc21, (q15_t)0x257e, (q15_t)0xc29, (q15_t)0x2588, (q15_t)0xc30, (q15_t)0x2592, (q15_t)0xc38, (q15_t)0x259c, - (q15_t)0xc3f, (q15_t)0x25a6, (q15_t)0xc46, (q15_t)0x25b1, (q15_t)0xc4e, (q15_t)0x25bb, (q15_t)0xc55, (q15_t)0x25c5, - (q15_t)0xc5d, (q15_t)0x25cf, (q15_t)0xc64, (q15_t)0x25d9, (q15_t)0xc6b, (q15_t)0x25e3, (q15_t)0xc73, (q15_t)0x25ed, - (q15_t)0xc7a, (q15_t)0x25f8, (q15_t)0xc82, (q15_t)0x2602, (q15_t)0xc89, (q15_t)0x260c, (q15_t)0xc91, (q15_t)0x2616, - (q15_t)0xc98, (q15_t)0x2620, (q15_t)0xca0, (q15_t)0x262a, (q15_t)0xca7, (q15_t)0x2634, (q15_t)0xcaf, (q15_t)0x263e, - (q15_t)0xcb6, (q15_t)0x2648, (q15_t)0xcbe, (q15_t)0x2652, (q15_t)0xcc5, (q15_t)0x265c, (q15_t)0xccd, (q15_t)0x2666, - (q15_t)0xcd4, (q15_t)0x2671, (q15_t)0xcdc, (q15_t)0x267b, (q15_t)0xce3, (q15_t)0x2685, (q15_t)0xceb, (q15_t)0x268f, - (q15_t)0xcf3, (q15_t)0x2699, (q15_t)0xcfa, (q15_t)0x26a3, (q15_t)0xd02, (q15_t)0x26ad, (q15_t)0xd09, (q15_t)0x26b7, - (q15_t)0xd11, (q15_t)0x26c1, (q15_t)0xd19, (q15_t)0x26cb, (q15_t)0xd20, (q15_t)0x26d5, (q15_t)0xd28, (q15_t)0x26df, - (q15_t)0xd30, (q15_t)0x26e9, (q15_t)0xd37, (q15_t)0x26f3, (q15_t)0xd3f, (q15_t)0x26fd, (q15_t)0xd46, (q15_t)0x2707, - (q15_t)0xd4e, (q15_t)0x2711, (q15_t)0xd56, (q15_t)0x271a, (q15_t)0xd5d, (q15_t)0x2724, (q15_t)0xd65, (q15_t)0x272e, - (q15_t)0xd6d, (q15_t)0x2738, (q15_t)0xd75, (q15_t)0x2742, (q15_t)0xd7c, (q15_t)0x274c, (q15_t)0xd84, (q15_t)0x2756, - (q15_t)0xd8c, (q15_t)0x2760, (q15_t)0xd93, (q15_t)0x276a, (q15_t)0xd9b, (q15_t)0x2774, (q15_t)0xda3, (q15_t)0x277e, - (q15_t)0xdab, (q15_t)0x2788, (q15_t)0xdb2, (q15_t)0x2791, (q15_t)0xdba, (q15_t)0x279b, (q15_t)0xdc2, (q15_t)0x27a5, - (q15_t)0xdca, (q15_t)0x27af, (q15_t)0xdd2, (q15_t)0x27b9, (q15_t)0xdd9, (q15_t)0x27c3, (q15_t)0xde1, (q15_t)0x27cd, - (q15_t)0xde9, (q15_t)0x27d6, (q15_t)0xdf1, (q15_t)0x27e0, (q15_t)0xdf9, (q15_t)0x27ea, (q15_t)0xe01, (q15_t)0x27f4, - (q15_t)0xe08, (q15_t)0x27fe, (q15_t)0xe10, (q15_t)0x2808, (q15_t)0xe18, (q15_t)0x2811, (q15_t)0xe20, (q15_t)0x281b, - (q15_t)0xe28, (q15_t)0x2825, (q15_t)0xe30, (q15_t)0x282f, (q15_t)0xe38, (q15_t)0x2838, (q15_t)0xe40, (q15_t)0x2842, - (q15_t)0xe47, (q15_t)0x284c, (q15_t)0xe4f, (q15_t)0x2856, (q15_t)0xe57, (q15_t)0x2860, (q15_t)0xe5f, (q15_t)0x2869, - (q15_t)0xe67, (q15_t)0x2873, (q15_t)0xe6f, (q15_t)0x287d, (q15_t)0xe77, (q15_t)0x2886, (q15_t)0xe7f, (q15_t)0x2890, - (q15_t)0xe87, (q15_t)0x289a, (q15_t)0xe8f, (q15_t)0x28a4, (q15_t)0xe97, (q15_t)0x28ad, (q15_t)0xe9f, (q15_t)0x28b7, - (q15_t)0xea7, (q15_t)0x28c1, (q15_t)0xeaf, (q15_t)0x28ca, (q15_t)0xeb7, (q15_t)0x28d4, (q15_t)0xebf, (q15_t)0x28de, - (q15_t)0xec7, (q15_t)0x28e7, (q15_t)0xecf, (q15_t)0x28f1, (q15_t)0xed7, (q15_t)0x28fb, (q15_t)0xedf, (q15_t)0x2904, - (q15_t)0xee7, (q15_t)0x290e, (q15_t)0xeef, (q15_t)0x2918, (q15_t)0xef7, (q15_t)0x2921, (q15_t)0xeff, (q15_t)0x292b, - (q15_t)0xf07, (q15_t)0x2935, (q15_t)0xf10, (q15_t)0x293e, (q15_t)0xf18, (q15_t)0x2948, (q15_t)0xf20, (q15_t)0x2951, - (q15_t)0xf28, (q15_t)0x295b, (q15_t)0xf30, (q15_t)0x2965, (q15_t)0xf38, (q15_t)0x296e, (q15_t)0xf40, (q15_t)0x2978, - (q15_t)0xf48, (q15_t)0x2981, (q15_t)0xf51, (q15_t)0x298b, (q15_t)0xf59, (q15_t)0x2994, (q15_t)0xf61, (q15_t)0x299e, - (q15_t)0xf69, (q15_t)0x29a7, (q15_t)0xf71, (q15_t)0x29b1, (q15_t)0xf79, (q15_t)0x29bb, (q15_t)0xf82, (q15_t)0x29c4, - (q15_t)0xf8a, (q15_t)0x29ce, (q15_t)0xf92, (q15_t)0x29d7, (q15_t)0xf9a, (q15_t)0x29e1, (q15_t)0xfa3, (q15_t)0x29ea, - (q15_t)0xfab, (q15_t)0x29f4, (q15_t)0xfb3, (q15_t)0x29fd, (q15_t)0xfbb, (q15_t)0x2a07, (q15_t)0xfc4, (q15_t)0x2a10, - (q15_t)0xfcc, (q15_t)0x2a1a, (q15_t)0xfd4, (q15_t)0x2a23, (q15_t)0xfdc, (q15_t)0x2a2c, (q15_t)0xfe5, (q15_t)0x2a36, - (q15_t)0xfed, (q15_t)0x2a3f, (q15_t)0xff5, (q15_t)0x2a49, (q15_t)0xffe, (q15_t)0x2a52, (q15_t)0x1006, (q15_t)0x2a5c, - (q15_t)0x100e, (q15_t)0x2a65, (q15_t)0x1016, (q15_t)0x2a6e, (q15_t)0x101f, (q15_t)0x2a78, (q15_t)0x1027, (q15_t)0x2a81, - (q15_t)0x1030, (q15_t)0x2a8b, (q15_t)0x1038, (q15_t)0x2a94, (q15_t)0x1040, (q15_t)0x2a9d, (q15_t)0x1049, (q15_t)0x2aa7, - (q15_t)0x1051, (q15_t)0x2ab0, (q15_t)0x1059, (q15_t)0x2ab9, (q15_t)0x1062, (q15_t)0x2ac3, (q15_t)0x106a, (q15_t)0x2acc, - (q15_t)0x1073, (q15_t)0x2ad6, (q15_t)0x107b, (q15_t)0x2adf, (q15_t)0x1083, (q15_t)0x2ae8, (q15_t)0x108c, (q15_t)0x2af2, - (q15_t)0x1094, (q15_t)0x2afb, (q15_t)0x109d, (q15_t)0x2b04, (q15_t)0x10a5, (q15_t)0x2b0d, (q15_t)0x10ae, (q15_t)0x2b17, - (q15_t)0x10b6, (q15_t)0x2b20, (q15_t)0x10bf, (q15_t)0x2b29, (q15_t)0x10c7, (q15_t)0x2b33, (q15_t)0x10d0, (q15_t)0x2b3c, - (q15_t)0x10d8, (q15_t)0x2b45, (q15_t)0x10e0, (q15_t)0x2b4e, (q15_t)0x10e9, (q15_t)0x2b58, (q15_t)0x10f2, (q15_t)0x2b61, - (q15_t)0x10fa, (q15_t)0x2b6a, (q15_t)0x1103, (q15_t)0x2b73, (q15_t)0x110b, (q15_t)0x2b7d, (q15_t)0x1114, (q15_t)0x2b86, - (q15_t)0x111c, (q15_t)0x2b8f, (q15_t)0x1125, (q15_t)0x2b98, (q15_t)0x112d, (q15_t)0x2ba1, (q15_t)0x1136, (q15_t)0x2bab, - (q15_t)0x113e, (q15_t)0x2bb4, (q15_t)0x1147, (q15_t)0x2bbd, (q15_t)0x1150, (q15_t)0x2bc6, (q15_t)0x1158, (q15_t)0x2bcf, - (q15_t)0x1161, (q15_t)0x2bd8, (q15_t)0x1169, (q15_t)0x2be2, (q15_t)0x1172, (q15_t)0x2beb, (q15_t)0x117b, (q15_t)0x2bf4, - (q15_t)0x1183, (q15_t)0x2bfd, (q15_t)0x118c, (q15_t)0x2c06, (q15_t)0x1195, (q15_t)0x2c0f, (q15_t)0x119d, (q15_t)0x2c18, - (q15_t)0x11a6, (q15_t)0x2c21, (q15_t)0x11af, (q15_t)0x2c2b, (q15_t)0x11b7, (q15_t)0x2c34, (q15_t)0x11c0, (q15_t)0x2c3d, - (q15_t)0x11c9, (q15_t)0x2c46, (q15_t)0x11d1, (q15_t)0x2c4f, (q15_t)0x11da, (q15_t)0x2c58, (q15_t)0x11e3, (q15_t)0x2c61, - (q15_t)0x11eb, (q15_t)0x2c6a, (q15_t)0x11f4, (q15_t)0x2c73, (q15_t)0x11fd, (q15_t)0x2c7c, (q15_t)0x1206, (q15_t)0x2c85, - (q15_t)0x120e, (q15_t)0x2c8e, (q15_t)0x1217, (q15_t)0x2c97, (q15_t)0x1220, (q15_t)0x2ca0, (q15_t)0x1229, (q15_t)0x2ca9, - (q15_t)0x1231, (q15_t)0x2cb2, (q15_t)0x123a, (q15_t)0x2cbb, (q15_t)0x1243, (q15_t)0x2cc4, (q15_t)0x124c, (q15_t)0x2ccd, - (q15_t)0x1255, (q15_t)0x2cd6, (q15_t)0x125d, (q15_t)0x2cdf, (q15_t)0x1266, (q15_t)0x2ce8, (q15_t)0x126f, (q15_t)0x2cf1, - (q15_t)0x1278, (q15_t)0x2cfa, (q15_t)0x1281, (q15_t)0x2d03, (q15_t)0x128a, (q15_t)0x2d0c, (q15_t)0x1292, (q15_t)0x2d15, - (q15_t)0x129b, (q15_t)0x2d1e, (q15_t)0x12a4, (q15_t)0x2d27, (q15_t)0x12ad, (q15_t)0x2d2f, (q15_t)0x12b6, (q15_t)0x2d38, - (q15_t)0x12bf, (q15_t)0x2d41, (q15_t)0x12c8, (q15_t)0x2d4a, (q15_t)0x12d1, (q15_t)0x2d53, (q15_t)0x12d9, (q15_t)0x2d5c, - (q15_t)0x12e2, (q15_t)0x2d65, (q15_t)0x12eb, (q15_t)0x2d6e, (q15_t)0x12f4, (q15_t)0x2d76, (q15_t)0x12fd, (q15_t)0x2d7f, - (q15_t)0x1306, (q15_t)0x2d88, (q15_t)0x130f, (q15_t)0x2d91, (q15_t)0x1318, (q15_t)0x2d9a, (q15_t)0x1321, (q15_t)0x2da3, - (q15_t)0x132a, (q15_t)0x2dab, (q15_t)0x1333, (q15_t)0x2db4, (q15_t)0x133c, (q15_t)0x2dbd, (q15_t)0x1345, (q15_t)0x2dc6, - (q15_t)0x134e, (q15_t)0x2dcf, (q15_t)0x1357, (q15_t)0x2dd7, (q15_t)0x1360, (q15_t)0x2de0, (q15_t)0x1369, (q15_t)0x2de9, - (q15_t)0x1372, (q15_t)0x2df2, (q15_t)0x137b, (q15_t)0x2dfa, (q15_t)0x1384, (q15_t)0x2e03, (q15_t)0x138d, (q15_t)0x2e0c, - (q15_t)0x1396, (q15_t)0x2e15, (q15_t)0x139f, (q15_t)0x2e1d, (q15_t)0x13a8, (q15_t)0x2e26, (q15_t)0x13b1, (q15_t)0x2e2f, - (q15_t)0x13ba, (q15_t)0x2e37, (q15_t)0x13c3, (q15_t)0x2e40, (q15_t)0x13cc, (q15_t)0x2e49, (q15_t)0x13d5, (q15_t)0x2e51, - (q15_t)0x13df, (q15_t)0x2e5a, (q15_t)0x13e8, (q15_t)0x2e63, (q15_t)0x13f1, (q15_t)0x2e6b, (q15_t)0x13fa, (q15_t)0x2e74, - (q15_t)0x1403, (q15_t)0x2e7d, (q15_t)0x140c, (q15_t)0x2e85, (q15_t)0x1415, (q15_t)0x2e8e, (q15_t)0x141e, (q15_t)0x2e97, - (q15_t)0x1428, (q15_t)0x2e9f, (q15_t)0x1431, (q15_t)0x2ea8, (q15_t)0x143a, (q15_t)0x2eb0, (q15_t)0x1443, (q15_t)0x2eb9, - (q15_t)0x144c, (q15_t)0x2ec2, (q15_t)0x1455, (q15_t)0x2eca, (q15_t)0x145f, (q15_t)0x2ed3, (q15_t)0x1468, (q15_t)0x2edb, - (q15_t)0x1471, (q15_t)0x2ee4, (q15_t)0x147a, (q15_t)0x2eec, (q15_t)0x1483, (q15_t)0x2ef5, (q15_t)0x148d, (q15_t)0x2efd, - (q15_t)0x1496, (q15_t)0x2f06, (q15_t)0x149f, (q15_t)0x2f0e, (q15_t)0x14a8, (q15_t)0x2f17, (q15_t)0x14b2, (q15_t)0x2f20, - (q15_t)0x14bb, (q15_t)0x2f28, (q15_t)0x14c4, (q15_t)0x2f30, (q15_t)0x14cd, (q15_t)0x2f39, (q15_t)0x14d7, (q15_t)0x2f41, - (q15_t)0x14e0, (q15_t)0x2f4a, (q15_t)0x14e9, (q15_t)0x2f52, (q15_t)0x14f3, (q15_t)0x2f5b, (q15_t)0x14fc, (q15_t)0x2f63, - (q15_t)0x1505, (q15_t)0x2f6c, (q15_t)0x150e, (q15_t)0x2f74, (q15_t)0x1518, (q15_t)0x2f7d, (q15_t)0x1521, (q15_t)0x2f85, - (q15_t)0x152a, (q15_t)0x2f8d, (q15_t)0x1534, (q15_t)0x2f96, (q15_t)0x153d, (q15_t)0x2f9e, (q15_t)0x1547, (q15_t)0x2fa7, - (q15_t)0x1550, (q15_t)0x2faf, (q15_t)0x1559, (q15_t)0x2fb7, (q15_t)0x1563, (q15_t)0x2fc0, (q15_t)0x156c, (q15_t)0x2fc8, - (q15_t)0x1575, (q15_t)0x2fd0, (q15_t)0x157f, (q15_t)0x2fd9, (q15_t)0x1588, (q15_t)0x2fe1, (q15_t)0x1592, (q15_t)0x2fea, - (q15_t)0x159b, (q15_t)0x2ff2, (q15_t)0x15a4, (q15_t)0x2ffa, (q15_t)0x15ae, (q15_t)0x3002, (q15_t)0x15b7, (q15_t)0x300b, - (q15_t)0x15c1, (q15_t)0x3013, (q15_t)0x15ca, (q15_t)0x301b, (q15_t)0x15d4, (q15_t)0x3024, (q15_t)0x15dd, (q15_t)0x302c, - (q15_t)0x15e6, (q15_t)0x3034, (q15_t)0x15f0, (q15_t)0x303c, (q15_t)0x15f9, (q15_t)0x3045, (q15_t)0x1603, (q15_t)0x304d, - (q15_t)0x160c, (q15_t)0x3055, (q15_t)0x1616, (q15_t)0x305d, (q15_t)0x161f, (q15_t)0x3066, (q15_t)0x1629, (q15_t)0x306e, - (q15_t)0x1632, (q15_t)0x3076, (q15_t)0x163c, (q15_t)0x307e, (q15_t)0x1645, (q15_t)0x3087, (q15_t)0x164f, (q15_t)0x308f, - (q15_t)0x1659, (q15_t)0x3097, (q15_t)0x1662, (q15_t)0x309f, (q15_t)0x166c, (q15_t)0x30a7, (q15_t)0x1675, (q15_t)0x30af, - (q15_t)0x167f, (q15_t)0x30b8, (q15_t)0x1688, (q15_t)0x30c0, (q15_t)0x1692, (q15_t)0x30c8, (q15_t)0x169b, (q15_t)0x30d0, - (q15_t)0x16a5, (q15_t)0x30d8, (q15_t)0x16af, (q15_t)0x30e0, (q15_t)0x16b8, (q15_t)0x30e8, (q15_t)0x16c2, (q15_t)0x30f0, - (q15_t)0x16cb, (q15_t)0x30f9, (q15_t)0x16d5, (q15_t)0x3101, (q15_t)0x16df, (q15_t)0x3109, (q15_t)0x16e8, (q15_t)0x3111, - (q15_t)0x16f2, (q15_t)0x3119, (q15_t)0x16fc, (q15_t)0x3121, (q15_t)0x1705, (q15_t)0x3129, (q15_t)0x170f, (q15_t)0x3131, - (q15_t)0x1719, (q15_t)0x3139, (q15_t)0x1722, (q15_t)0x3141, (q15_t)0x172c, (q15_t)0x3149, (q15_t)0x1736, (q15_t)0x3151, - (q15_t)0x173f, (q15_t)0x3159, (q15_t)0x1749, (q15_t)0x3161, (q15_t)0x1753, (q15_t)0x3169, (q15_t)0x175c, (q15_t)0x3171, - (q15_t)0x1766, (q15_t)0x3179, (q15_t)0x1770, (q15_t)0x3181, (q15_t)0x177a, (q15_t)0x3189, (q15_t)0x1783, (q15_t)0x3191, - (q15_t)0x178d, (q15_t)0x3199, (q15_t)0x1797, (q15_t)0x31a1, (q15_t)0x17a0, (q15_t)0x31a9, (q15_t)0x17aa, (q15_t)0x31b1, - (q15_t)0x17b4, (q15_t)0x31b9, (q15_t)0x17be, (q15_t)0x31c0, (q15_t)0x17c8, (q15_t)0x31c8, (q15_t)0x17d1, (q15_t)0x31d0, - (q15_t)0x17db, (q15_t)0x31d8, (q15_t)0x17e5, (q15_t)0x31e0, (q15_t)0x17ef, (q15_t)0x31e8, (q15_t)0x17f8, (q15_t)0x31f0, - (q15_t)0x1802, (q15_t)0x31f8, (q15_t)0x180c, (q15_t)0x31ff, (q15_t)0x1816, (q15_t)0x3207, (q15_t)0x1820, (q15_t)0x320f, - (q15_t)0x182a, (q15_t)0x3217, (q15_t)0x1833, (q15_t)0x321f, (q15_t)0x183d, (q15_t)0x3227, (q15_t)0x1847, (q15_t)0x322e, - (q15_t)0x1851, (q15_t)0x3236, (q15_t)0x185b, (q15_t)0x323e, (q15_t)0x1865, (q15_t)0x3246, (q15_t)0x186f, (q15_t)0x324e, - (q15_t)0x1878, (q15_t)0x3255, (q15_t)0x1882, (q15_t)0x325d, (q15_t)0x188c, (q15_t)0x3265, (q15_t)0x1896, (q15_t)0x326d, - (q15_t)0x18a0, (q15_t)0x3274, (q15_t)0x18aa, (q15_t)0x327c, (q15_t)0x18b4, (q15_t)0x3284, (q15_t)0x18be, (q15_t)0x328b, - (q15_t)0x18c8, (q15_t)0x3293, (q15_t)0x18d2, (q15_t)0x329b, (q15_t)0x18dc, (q15_t)0x32a3, (q15_t)0x18e6, (q15_t)0x32aa, - (q15_t)0x18ef, (q15_t)0x32b2, (q15_t)0x18f9, (q15_t)0x32ba, (q15_t)0x1903, (q15_t)0x32c1, (q15_t)0x190d, (q15_t)0x32c9, - (q15_t)0x1917, (q15_t)0x32d0, (q15_t)0x1921, (q15_t)0x32d8, (q15_t)0x192b, (q15_t)0x32e0, (q15_t)0x1935, (q15_t)0x32e7, - (q15_t)0x193f, (q15_t)0x32ef, (q15_t)0x1949, (q15_t)0x32f7, (q15_t)0x1953, (q15_t)0x32fe, (q15_t)0x195d, (q15_t)0x3306, - (q15_t)0x1967, (q15_t)0x330d, (q15_t)0x1971, (q15_t)0x3315, (q15_t)0x197b, (q15_t)0x331d, (q15_t)0x1985, (q15_t)0x3324, - (q15_t)0x198f, (q15_t)0x332c, (q15_t)0x199a, (q15_t)0x3333, (q15_t)0x19a4, (q15_t)0x333b, (q15_t)0x19ae, (q15_t)0x3342, - (q15_t)0x19b8, (q15_t)0x334a, (q15_t)0x19c2, (q15_t)0x3351, (q15_t)0x19cc, (q15_t)0x3359, (q15_t)0x19d6, (q15_t)0x3360, - (q15_t)0x19e0, (q15_t)0x3368, (q15_t)0x19ea, (q15_t)0x336f, (q15_t)0x19f4, (q15_t)0x3377, (q15_t)0x19fe, (q15_t)0x337e, - (q15_t)0x1a08, (q15_t)0x3386, (q15_t)0x1a13, (q15_t)0x338d, (q15_t)0x1a1d, (q15_t)0x3395, (q15_t)0x1a27, (q15_t)0x339c, - (q15_t)0x1a31, (q15_t)0x33a3, (q15_t)0x1a3b, (q15_t)0x33ab, (q15_t)0x1a45, (q15_t)0x33b2, (q15_t)0x1a4f, (q15_t)0x33ba, - (q15_t)0x1a5a, (q15_t)0x33c1, (q15_t)0x1a64, (q15_t)0x33c8, (q15_t)0x1a6e, (q15_t)0x33d0, (q15_t)0x1a78, (q15_t)0x33d7, - (q15_t)0x1a82, (q15_t)0x33df, (q15_t)0x1a8c, (q15_t)0x33e6, (q15_t)0x1a97, (q15_t)0x33ed, (q15_t)0x1aa1, (q15_t)0x33f5, - (q15_t)0x1aab, (q15_t)0x33fc, (q15_t)0x1ab5, (q15_t)0x3403, (q15_t)0x1abf, (q15_t)0x340b, (q15_t)0x1aca, (q15_t)0x3412, - (q15_t)0x1ad4, (q15_t)0x3419, (q15_t)0x1ade, (q15_t)0x3420, (q15_t)0x1ae8, (q15_t)0x3428, (q15_t)0x1af3, (q15_t)0x342f, - (q15_t)0x1afd, (q15_t)0x3436, (q15_t)0x1b07, (q15_t)0x343e, (q15_t)0x1b11, (q15_t)0x3445, (q15_t)0x1b1c, (q15_t)0x344c, - (q15_t)0x1b26, (q15_t)0x3453, (q15_t)0x1b30, (q15_t)0x345b, (q15_t)0x1b3b, (q15_t)0x3462, (q15_t)0x1b45, (q15_t)0x3469, - (q15_t)0x1b4f, (q15_t)0x3470, (q15_t)0x1b59, (q15_t)0x3477, (q15_t)0x1b64, (q15_t)0x347f, (q15_t)0x1b6e, (q15_t)0x3486, - (q15_t)0x1b78, (q15_t)0x348d, (q15_t)0x1b83, (q15_t)0x3494, (q15_t)0x1b8d, (q15_t)0x349b, (q15_t)0x1b97, (q15_t)0x34a2, - (q15_t)0x1ba2, (q15_t)0x34aa, (q15_t)0x1bac, (q15_t)0x34b1, (q15_t)0x1bb6, (q15_t)0x34b8, (q15_t)0x1bc1, (q15_t)0x34bf, - (q15_t)0x1bcb, (q15_t)0x34c6, (q15_t)0x1bd5, (q15_t)0x34cd, (q15_t)0x1be0, (q15_t)0x34d4, (q15_t)0x1bea, (q15_t)0x34db, - (q15_t)0x1bf5, (q15_t)0x34e2, (q15_t)0x1bff, (q15_t)0x34ea, (q15_t)0x1c09, (q15_t)0x34f1, (q15_t)0x1c14, (q15_t)0x34f8, - (q15_t)0x1c1e, (q15_t)0x34ff, (q15_t)0x1c29, (q15_t)0x3506, (q15_t)0x1c33, (q15_t)0x350d, (q15_t)0x1c3d, (q15_t)0x3514, - (q15_t)0x1c48, (q15_t)0x351b, (q15_t)0x1c52, (q15_t)0x3522, (q15_t)0x1c5d, (q15_t)0x3529, (q15_t)0x1c67, (q15_t)0x3530, - (q15_t)0x1c72, (q15_t)0x3537, (q15_t)0x1c7c, (q15_t)0x353e, (q15_t)0x1c86, (q15_t)0x3545, (q15_t)0x1c91, (q15_t)0x354c, - (q15_t)0x1c9b, (q15_t)0x3553, (q15_t)0x1ca6, (q15_t)0x355a, (q15_t)0x1cb0, (q15_t)0x3561, (q15_t)0x1cbb, (q15_t)0x3567, - (q15_t)0x1cc5, (q15_t)0x356e, (q15_t)0x1cd0, (q15_t)0x3575, (q15_t)0x1cda, (q15_t)0x357c, (q15_t)0x1ce5, (q15_t)0x3583, - (q15_t)0x1cef, (q15_t)0x358a, (q15_t)0x1cfa, (q15_t)0x3591, (q15_t)0x1d04, (q15_t)0x3598, (q15_t)0x1d0f, (q15_t)0x359f, - (q15_t)0x1d19, (q15_t)0x35a5, (q15_t)0x1d24, (q15_t)0x35ac, (q15_t)0x1d2e, (q15_t)0x35b3, (q15_t)0x1d39, (q15_t)0x35ba, - (q15_t)0x1d44, (q15_t)0x35c1, (q15_t)0x1d4e, (q15_t)0x35c8, (q15_t)0x1d59, (q15_t)0x35ce, (q15_t)0x1d63, (q15_t)0x35d5, - (q15_t)0x1d6e, (q15_t)0x35dc, (q15_t)0x1d78, (q15_t)0x35e3, (q15_t)0x1d83, (q15_t)0x35ea, (q15_t)0x1d8e, (q15_t)0x35f0, - (q15_t)0x1d98, (q15_t)0x35f7, (q15_t)0x1da3, (q15_t)0x35fe, (q15_t)0x1dad, (q15_t)0x3605, (q15_t)0x1db8, (q15_t)0x360b, - (q15_t)0x1dc3, (q15_t)0x3612, (q15_t)0x1dcd, (q15_t)0x3619, (q15_t)0x1dd8, (q15_t)0x3620, (q15_t)0x1de2, (q15_t)0x3626, - (q15_t)0x1ded, (q15_t)0x362d, (q15_t)0x1df8, (q15_t)0x3634, (q15_t)0x1e02, (q15_t)0x363a, (q15_t)0x1e0d, (q15_t)0x3641, - (q15_t)0x1e18, (q15_t)0x3648, (q15_t)0x1e22, (q15_t)0x364e, (q15_t)0x1e2d, (q15_t)0x3655, (q15_t)0x1e38, (q15_t)0x365c, - (q15_t)0x1e42, (q15_t)0x3662, (q15_t)0x1e4d, (q15_t)0x3669, (q15_t)0x1e58, (q15_t)0x366f, (q15_t)0x1e62, (q15_t)0x3676, - (q15_t)0x1e6d, (q15_t)0x367d, (q15_t)0x1e78, (q15_t)0x3683, (q15_t)0x1e83, (q15_t)0x368a, (q15_t)0x1e8d, (q15_t)0x3690, - (q15_t)0x1e98, (q15_t)0x3697, (q15_t)0x1ea3, (q15_t)0x369d, (q15_t)0x1ead, (q15_t)0x36a4, (q15_t)0x1eb8, (q15_t)0x36ab, - (q15_t)0x1ec3, (q15_t)0x36b1, (q15_t)0x1ece, (q15_t)0x36b8, (q15_t)0x1ed8, (q15_t)0x36be, (q15_t)0x1ee3, (q15_t)0x36c5, - (q15_t)0x1eee, (q15_t)0x36cb, (q15_t)0x1ef9, (q15_t)0x36d2, (q15_t)0x1f03, (q15_t)0x36d8, (q15_t)0x1f0e, (q15_t)0x36df, - (q15_t)0x1f19, (q15_t)0x36e5, (q15_t)0x1f24, (q15_t)0x36eb, (q15_t)0x1f2f, (q15_t)0x36f2, (q15_t)0x1f39, (q15_t)0x36f8, - (q15_t)0x1f44, (q15_t)0x36ff, (q15_t)0x1f4f, (q15_t)0x3705, (q15_t)0x1f5a, (q15_t)0x370c, (q15_t)0x1f65, (q15_t)0x3712, - (q15_t)0x1f6f, (q15_t)0x3718, (q15_t)0x1f7a, (q15_t)0x371f, (q15_t)0x1f85, (q15_t)0x3725, (q15_t)0x1f90, (q15_t)0x372c, - (q15_t)0x1f9b, (q15_t)0x3732, (q15_t)0x1fa5, (q15_t)0x3738, (q15_t)0x1fb0, (q15_t)0x373f, (q15_t)0x1fbb, (q15_t)0x3745, - (q15_t)0x1fc6, (q15_t)0x374b, (q15_t)0x1fd1, (q15_t)0x3752, (q15_t)0x1fdc, (q15_t)0x3758, (q15_t)0x1fe7, (q15_t)0x375e, - (q15_t)0x1ff1, (q15_t)0x3765, (q15_t)0x1ffc, (q15_t)0x376b, (q15_t)0x2007, (q15_t)0x3771, (q15_t)0x2012, (q15_t)0x3777, - (q15_t)0x201d, (q15_t)0x377e, (q15_t)0x2028, (q15_t)0x3784, (q15_t)0x2033, (q15_t)0x378a, (q15_t)0x203e, (q15_t)0x3790, - (q15_t)0x2049, (q15_t)0x3797, (q15_t)0x2054, (q15_t)0x379d, (q15_t)0x205e, (q15_t)0x37a3, (q15_t)0x2069, (q15_t)0x37a9, - (q15_t)0x2074, (q15_t)0x37b0, (q15_t)0x207f, (q15_t)0x37b6, (q15_t)0x208a, (q15_t)0x37bc, (q15_t)0x2095, (q15_t)0x37c2, - (q15_t)0x20a0, (q15_t)0x37c8, (q15_t)0x20ab, (q15_t)0x37ce, (q15_t)0x20b6, (q15_t)0x37d5, (q15_t)0x20c1, (q15_t)0x37db, - (q15_t)0x20cc, (q15_t)0x37e1, (q15_t)0x20d7, (q15_t)0x37e7, (q15_t)0x20e2, (q15_t)0x37ed, (q15_t)0x20ed, (q15_t)0x37f3, - (q15_t)0x20f8, (q15_t)0x37f9, (q15_t)0x2103, (q15_t)0x37ff, (q15_t)0x210e, (q15_t)0x3805, (q15_t)0x2119, (q15_t)0x380b, - (q15_t)0x2124, (q15_t)0x3812, (q15_t)0x212f, (q15_t)0x3818, (q15_t)0x213a, (q15_t)0x381e, (q15_t)0x2145, (q15_t)0x3824, - (q15_t)0x2150, (q15_t)0x382a, (q15_t)0x215b, (q15_t)0x3830, (q15_t)0x2166, (q15_t)0x3836, (q15_t)0x2171, (q15_t)0x383c, - (q15_t)0x217c, (q15_t)0x3842, (q15_t)0x2187, (q15_t)0x3848, (q15_t)0x2192, (q15_t)0x384e, (q15_t)0x219d, (q15_t)0x3854, - (q15_t)0x21a8, (q15_t)0x385a, (q15_t)0x21b3, (q15_t)0x3860, (q15_t)0x21be, (q15_t)0x3866, (q15_t)0x21ca, (q15_t)0x386b, - (q15_t)0x21d5, (q15_t)0x3871, (q15_t)0x21e0, (q15_t)0x3877, (q15_t)0x21eb, (q15_t)0x387d, (q15_t)0x21f6, (q15_t)0x3883, - (q15_t)0x2201, (q15_t)0x3889, (q15_t)0x220c, (q15_t)0x388f, (q15_t)0x2217, (q15_t)0x3895, (q15_t)0x2222, (q15_t)0x389b, - (q15_t)0x222d, (q15_t)0x38a1, (q15_t)0x2239, (q15_t)0x38a6, (q15_t)0x2244, (q15_t)0x38ac, (q15_t)0x224f, (q15_t)0x38b2, - (q15_t)0x225a, (q15_t)0x38b8, (q15_t)0x2265, (q15_t)0x38be, (q15_t)0x2270, (q15_t)0x38c3, (q15_t)0x227b, (q15_t)0x38c9, - (q15_t)0x2287, (q15_t)0x38cf, (q15_t)0x2292, (q15_t)0x38d5, (q15_t)0x229d, (q15_t)0x38db, (q15_t)0x22a8, (q15_t)0x38e0, - (q15_t)0x22b3, (q15_t)0x38e6, (q15_t)0x22be, (q15_t)0x38ec, (q15_t)0x22ca, (q15_t)0x38f2, (q15_t)0x22d5, (q15_t)0x38f7, - (q15_t)0x22e0, (q15_t)0x38fd, (q15_t)0x22eb, (q15_t)0x3903, (q15_t)0x22f6, (q15_t)0x3909, (q15_t)0x2301, (q15_t)0x390e, - (q15_t)0x230d, (q15_t)0x3914, (q15_t)0x2318, (q15_t)0x391a, (q15_t)0x2323, (q15_t)0x391f, (q15_t)0x232e, (q15_t)0x3925, - (q15_t)0x233a, (q15_t)0x392b, (q15_t)0x2345, (q15_t)0x3930, (q15_t)0x2350, (q15_t)0x3936, (q15_t)0x235b, (q15_t)0x393b, - (q15_t)0x2367, (q15_t)0x3941, (q15_t)0x2372, (q15_t)0x3947, (q15_t)0x237d, (q15_t)0x394c, (q15_t)0x2388, (q15_t)0x3952, - (q15_t)0x2394, (q15_t)0x3958, (q15_t)0x239f, (q15_t)0x395d, (q15_t)0x23aa, (q15_t)0x3963, (q15_t)0x23b5, (q15_t)0x3968, - (q15_t)0x23c1, (q15_t)0x396e, (q15_t)0x23cc, (q15_t)0x3973, (q15_t)0x23d7, (q15_t)0x3979, (q15_t)0x23e2, (q15_t)0x397e, - (q15_t)0x23ee, (q15_t)0x3984, (q15_t)0x23f9, (q15_t)0x3989, (q15_t)0x2404, (q15_t)0x398f, (q15_t)0x2410, (q15_t)0x3994, - (q15_t)0x241b, (q15_t)0x399a, (q15_t)0x2426, (q15_t)0x399f, (q15_t)0x2432, (q15_t)0x39a5, (q15_t)0x243d, (q15_t)0x39aa, - (q15_t)0x2448, (q15_t)0x39b0, (q15_t)0x2454, (q15_t)0x39b5, (q15_t)0x245f, (q15_t)0x39bb, (q15_t)0x246a, (q15_t)0x39c0, - (q15_t)0x2476, (q15_t)0x39c5, (q15_t)0x2481, (q15_t)0x39cb, (q15_t)0x248c, (q15_t)0x39d0, (q15_t)0x2498, (q15_t)0x39d6, - (q15_t)0x24a3, (q15_t)0x39db, (q15_t)0x24ae, (q15_t)0x39e0, (q15_t)0x24ba, (q15_t)0x39e6, (q15_t)0x24c5, (q15_t)0x39eb, - (q15_t)0x24d0, (q15_t)0x39f0, (q15_t)0x24dc, (q15_t)0x39f6, (q15_t)0x24e7, (q15_t)0x39fb, (q15_t)0x24f3, (q15_t)0x3a00, - (q15_t)0x24fe, (q15_t)0x3a06, (q15_t)0x2509, (q15_t)0x3a0b, (q15_t)0x2515, (q15_t)0x3a10, (q15_t)0x2520, (q15_t)0x3a16, - (q15_t)0x252c, (q15_t)0x3a1b, (q15_t)0x2537, (q15_t)0x3a20, (q15_t)0x2542, (q15_t)0x3a25, (q15_t)0x254e, (q15_t)0x3a2b, - (q15_t)0x2559, (q15_t)0x3a30, (q15_t)0x2565, (q15_t)0x3a35, (q15_t)0x2570, (q15_t)0x3a3a, (q15_t)0x257c, (q15_t)0x3a3f, - (q15_t)0x2587, (q15_t)0x3a45, (q15_t)0x2592, (q15_t)0x3a4a, (q15_t)0x259e, (q15_t)0x3a4f, (q15_t)0x25a9, (q15_t)0x3a54, - (q15_t)0x25b5, (q15_t)0x3a59, (q15_t)0x25c0, (q15_t)0x3a5f, (q15_t)0x25cc, (q15_t)0x3a64, (q15_t)0x25d7, (q15_t)0x3a69, - (q15_t)0x25e3, (q15_t)0x3a6e, (q15_t)0x25ee, (q15_t)0x3a73, (q15_t)0x25fa, (q15_t)0x3a78, (q15_t)0x2605, (q15_t)0x3a7d, - (q15_t)0x2611, (q15_t)0x3a82, (q15_t)0x261c, (q15_t)0x3a88, (q15_t)0x2628, (q15_t)0x3a8d, (q15_t)0x2633, (q15_t)0x3a92, - (q15_t)0x263f, (q15_t)0x3a97, (q15_t)0x264a, (q15_t)0x3a9c, (q15_t)0x2656, (q15_t)0x3aa1, (q15_t)0x2661, (q15_t)0x3aa6, - (q15_t)0x266d, (q15_t)0x3aab, (q15_t)0x2678, (q15_t)0x3ab0, (q15_t)0x2684, (q15_t)0x3ab5, (q15_t)0x268f, (q15_t)0x3aba, - (q15_t)0x269b, (q15_t)0x3abf, (q15_t)0x26a6, (q15_t)0x3ac4, (q15_t)0x26b2, (q15_t)0x3ac9, (q15_t)0x26bd, (q15_t)0x3ace, - (q15_t)0x26c9, (q15_t)0x3ad3, (q15_t)0x26d4, (q15_t)0x3ad8, (q15_t)0x26e0, (q15_t)0x3add, (q15_t)0x26ec, (q15_t)0x3ae2, - (q15_t)0x26f7, (q15_t)0x3ae6, (q15_t)0x2703, (q15_t)0x3aeb, (q15_t)0x270e, (q15_t)0x3af0, (q15_t)0x271a, (q15_t)0x3af5, - (q15_t)0x2725, (q15_t)0x3afa, (q15_t)0x2731, (q15_t)0x3aff, (q15_t)0x273d, (q15_t)0x3b04, (q15_t)0x2748, (q15_t)0x3b09, - (q15_t)0x2754, (q15_t)0x3b0e, (q15_t)0x275f, (q15_t)0x3b12, (q15_t)0x276b, (q15_t)0x3b17, (q15_t)0x2777, (q15_t)0x3b1c, - (q15_t)0x2782, (q15_t)0x3b21, (q15_t)0x278e, (q15_t)0x3b26, (q15_t)0x2799, (q15_t)0x3b2a, (q15_t)0x27a5, (q15_t)0x3b2f, - (q15_t)0x27b1, (q15_t)0x3b34, (q15_t)0x27bc, (q15_t)0x3b39, (q15_t)0x27c8, (q15_t)0x3b3e, (q15_t)0x27d3, (q15_t)0x3b42, - (q15_t)0x27df, (q15_t)0x3b47, (q15_t)0x27eb, (q15_t)0x3b4c, (q15_t)0x27f6, (q15_t)0x3b50, (q15_t)0x2802, (q15_t)0x3b55, - (q15_t)0x280e, (q15_t)0x3b5a, (q15_t)0x2819, (q15_t)0x3b5f, (q15_t)0x2825, (q15_t)0x3b63, (q15_t)0x2831, (q15_t)0x3b68, - (q15_t)0x283c, (q15_t)0x3b6d, (q15_t)0x2848, (q15_t)0x3b71, (q15_t)0x2854, (q15_t)0x3b76, (q15_t)0x285f, (q15_t)0x3b7b, - (q15_t)0x286b, (q15_t)0x3b7f, (q15_t)0x2877, (q15_t)0x3b84, (q15_t)0x2882, (q15_t)0x3b88, (q15_t)0x288e, (q15_t)0x3b8d, - (q15_t)0x289a, (q15_t)0x3b92, (q15_t)0x28a5, (q15_t)0x3b96, (q15_t)0x28b1, (q15_t)0x3b9b, (q15_t)0x28bd, (q15_t)0x3b9f, - (q15_t)0x28c9, (q15_t)0x3ba4, (q15_t)0x28d4, (q15_t)0x3ba9, (q15_t)0x28e0, (q15_t)0x3bad, (q15_t)0x28ec, (q15_t)0x3bb2, - (q15_t)0x28f7, (q15_t)0x3bb6, (q15_t)0x2903, (q15_t)0x3bbb, (q15_t)0x290f, (q15_t)0x3bbf, (q15_t)0x291b, (q15_t)0x3bc4, - (q15_t)0x2926, (q15_t)0x3bc8, (q15_t)0x2932, (q15_t)0x3bcd, (q15_t)0x293e, (q15_t)0x3bd1, (q15_t)0x294a, (q15_t)0x3bd6, - (q15_t)0x2955, (q15_t)0x3bda, (q15_t)0x2961, (q15_t)0x3bde, (q15_t)0x296d, (q15_t)0x3be3, (q15_t)0x2979, (q15_t)0x3be7, - (q15_t)0x2984, (q15_t)0x3bec, (q15_t)0x2990, (q15_t)0x3bf0, (q15_t)0x299c, (q15_t)0x3bf5, (q15_t)0x29a8, (q15_t)0x3bf9, - (q15_t)0x29b4, (q15_t)0x3bfd, (q15_t)0x29bf, (q15_t)0x3c02, (q15_t)0x29cb, (q15_t)0x3c06, (q15_t)0x29d7, (q15_t)0x3c0a, - (q15_t)0x29e3, (q15_t)0x3c0f, (q15_t)0x29ee, (q15_t)0x3c13, (q15_t)0x29fa, (q15_t)0x3c17, (q15_t)0x2a06, (q15_t)0x3c1c, - (q15_t)0x2a12, (q15_t)0x3c20, (q15_t)0x2a1e, (q15_t)0x3c24, (q15_t)0x2a29, (q15_t)0x3c29, (q15_t)0x2a35, (q15_t)0x3c2d, - (q15_t)0x2a41, (q15_t)0x3c31, (q15_t)0x2a4d, (q15_t)0x3c36, (q15_t)0x2a59, (q15_t)0x3c3a, (q15_t)0x2a65, (q15_t)0x3c3e, - (q15_t)0x2a70, (q15_t)0x3c42, (q15_t)0x2a7c, (q15_t)0x3c46, (q15_t)0x2a88, (q15_t)0x3c4b, (q15_t)0x2a94, (q15_t)0x3c4f, - (q15_t)0x2aa0, (q15_t)0x3c53, (q15_t)0x2aac, (q15_t)0x3c57, (q15_t)0x2ab7, (q15_t)0x3c5b, (q15_t)0x2ac3, (q15_t)0x3c60, - (q15_t)0x2acf, (q15_t)0x3c64, (q15_t)0x2adb, (q15_t)0x3c68, (q15_t)0x2ae7, (q15_t)0x3c6c, (q15_t)0x2af3, (q15_t)0x3c70, - (q15_t)0x2aff, (q15_t)0x3c74, (q15_t)0x2b0a, (q15_t)0x3c79, (q15_t)0x2b16, (q15_t)0x3c7d, (q15_t)0x2b22, (q15_t)0x3c81, - (q15_t)0x2b2e, (q15_t)0x3c85, (q15_t)0x2b3a, (q15_t)0x3c89, (q15_t)0x2b46, (q15_t)0x3c8d, (q15_t)0x2b52, (q15_t)0x3c91, - (q15_t)0x2b5e, (q15_t)0x3c95, (q15_t)0x2b6a, (q15_t)0x3c99, (q15_t)0x2b75, (q15_t)0x3c9d, (q15_t)0x2b81, (q15_t)0x3ca1, - (q15_t)0x2b8d, (q15_t)0x3ca5, (q15_t)0x2b99, (q15_t)0x3ca9, (q15_t)0x2ba5, (q15_t)0x3cad, (q15_t)0x2bb1, (q15_t)0x3cb1, - (q15_t)0x2bbd, (q15_t)0x3cb5, (q15_t)0x2bc9, (q15_t)0x3cb9, (q15_t)0x2bd5, (q15_t)0x3cbd, (q15_t)0x2be1, (q15_t)0x3cc1, - (q15_t)0x2bed, (q15_t)0x3cc5, (q15_t)0x2bf9, (q15_t)0x3cc9, (q15_t)0x2c05, (q15_t)0x3ccd, (q15_t)0x2c10, (q15_t)0x3cd1, - (q15_t)0x2c1c, (q15_t)0x3cd5, (q15_t)0x2c28, (q15_t)0x3cd9, (q15_t)0x2c34, (q15_t)0x3cdd, (q15_t)0x2c40, (q15_t)0x3ce0, - (q15_t)0x2c4c, (q15_t)0x3ce4, (q15_t)0x2c58, (q15_t)0x3ce8, (q15_t)0x2c64, (q15_t)0x3cec, (q15_t)0x2c70, (q15_t)0x3cf0, - (q15_t)0x2c7c, (q15_t)0x3cf4, (q15_t)0x2c88, (q15_t)0x3cf8, (q15_t)0x2c94, (q15_t)0x3cfb, (q15_t)0x2ca0, (q15_t)0x3cff, - (q15_t)0x2cac, (q15_t)0x3d03, (q15_t)0x2cb8, (q15_t)0x3d07, (q15_t)0x2cc4, (q15_t)0x3d0b, (q15_t)0x2cd0, (q15_t)0x3d0e, - (q15_t)0x2cdc, (q15_t)0x3d12, (q15_t)0x2ce8, (q15_t)0x3d16, (q15_t)0x2cf4, (q15_t)0x3d1a, (q15_t)0x2d00, (q15_t)0x3d1d, - (q15_t)0x2d0c, (q15_t)0x3d21, (q15_t)0x2d18, (q15_t)0x3d25, (q15_t)0x2d24, (q15_t)0x3d28, (q15_t)0x2d30, (q15_t)0x3d2c, - (q15_t)0x2d3c, (q15_t)0x3d30, (q15_t)0x2d48, (q15_t)0x3d34, (q15_t)0x2d54, (q15_t)0x3d37, (q15_t)0x2d60, (q15_t)0x3d3b, - (q15_t)0x2d6c, (q15_t)0x3d3f, (q15_t)0x2d78, (q15_t)0x3d42, (q15_t)0x2d84, (q15_t)0x3d46, (q15_t)0x2d90, (q15_t)0x3d49, - (q15_t)0x2d9c, (q15_t)0x3d4d, (q15_t)0x2da8, (q15_t)0x3d51, (q15_t)0x2db4, (q15_t)0x3d54, (q15_t)0x2dc0, (q15_t)0x3d58, - (q15_t)0x2dcc, (q15_t)0x3d5b, (q15_t)0x2dd8, (q15_t)0x3d5f, (q15_t)0x2de4, (q15_t)0x3d63, (q15_t)0x2df0, (q15_t)0x3d66, - (q15_t)0x2dfc, (q15_t)0x3d6a, (q15_t)0x2e09, (q15_t)0x3d6d, (q15_t)0x2e15, (q15_t)0x3d71, (q15_t)0x2e21, (q15_t)0x3d74, - (q15_t)0x2e2d, (q15_t)0x3d78, (q15_t)0x2e39, (q15_t)0x3d7b, (q15_t)0x2e45, (q15_t)0x3d7f, (q15_t)0x2e51, (q15_t)0x3d82, - (q15_t)0x2e5d, (q15_t)0x3d86, (q15_t)0x2e69, (q15_t)0x3d89, (q15_t)0x2e75, (q15_t)0x3d8d, (q15_t)0x2e81, (q15_t)0x3d90, - (q15_t)0x2e8d, (q15_t)0x3d93, (q15_t)0x2e99, (q15_t)0x3d97, (q15_t)0x2ea6, (q15_t)0x3d9a, (q15_t)0x2eb2, (q15_t)0x3d9e, - (q15_t)0x2ebe, (q15_t)0x3da1, (q15_t)0x2eca, (q15_t)0x3da4, (q15_t)0x2ed6, (q15_t)0x3da8, (q15_t)0x2ee2, (q15_t)0x3dab, - (q15_t)0x2eee, (q15_t)0x3daf, (q15_t)0x2efa, (q15_t)0x3db2, (q15_t)0x2f06, (q15_t)0x3db5, (q15_t)0x2f13, (q15_t)0x3db9, - (q15_t)0x2f1f, (q15_t)0x3dbc, (q15_t)0x2f2b, (q15_t)0x3dbf, (q15_t)0x2f37, (q15_t)0x3dc2, (q15_t)0x2f43, (q15_t)0x3dc6, - (q15_t)0x2f4f, (q15_t)0x3dc9, (q15_t)0x2f5b, (q15_t)0x3dcc, (q15_t)0x2f67, (q15_t)0x3dd0, (q15_t)0x2f74, (q15_t)0x3dd3, - (q15_t)0x2f80, (q15_t)0x3dd6, (q15_t)0x2f8c, (q15_t)0x3dd9, (q15_t)0x2f98, (q15_t)0x3ddd, (q15_t)0x2fa4, (q15_t)0x3de0, - (q15_t)0x2fb0, (q15_t)0x3de3, (q15_t)0x2fbc, (q15_t)0x3de6, (q15_t)0x2fc9, (q15_t)0x3de9, (q15_t)0x2fd5, (q15_t)0x3ded, - (q15_t)0x2fe1, (q15_t)0x3df0, (q15_t)0x2fed, (q15_t)0x3df3, (q15_t)0x2ff9, (q15_t)0x3df6, (q15_t)0x3005, (q15_t)0x3df9, - (q15_t)0x3012, (q15_t)0x3dfc, (q15_t)0x301e, (q15_t)0x3dff, (q15_t)0x302a, (q15_t)0x3e03, (q15_t)0x3036, (q15_t)0x3e06, - (q15_t)0x3042, (q15_t)0x3e09, (q15_t)0x304e, (q15_t)0x3e0c, (q15_t)0x305b, (q15_t)0x3e0f, (q15_t)0x3067, (q15_t)0x3e12, - (q15_t)0x3073, (q15_t)0x3e15, (q15_t)0x307f, (q15_t)0x3e18, (q15_t)0x308b, (q15_t)0x3e1b, (q15_t)0x3098, (q15_t)0x3e1e, - (q15_t)0x30a4, (q15_t)0x3e21, (q15_t)0x30b0, (q15_t)0x3e24, (q15_t)0x30bc, (q15_t)0x3e27, (q15_t)0x30c8, (q15_t)0x3e2a, - (q15_t)0x30d5, (q15_t)0x3e2d, (q15_t)0x30e1, (q15_t)0x3e30, (q15_t)0x30ed, (q15_t)0x3e33, (q15_t)0x30f9, (q15_t)0x3e36, - (q15_t)0x3105, (q15_t)0x3e39, (q15_t)0x3112, (q15_t)0x3e3c, (q15_t)0x311e, (q15_t)0x3e3f, (q15_t)0x312a, (q15_t)0x3e42, - (q15_t)0x3136, (q15_t)0x3e45, (q15_t)0x3143, (q15_t)0x3e48, (q15_t)0x314f, (q15_t)0x3e4a, (q15_t)0x315b, (q15_t)0x3e4d, - (q15_t)0x3167, (q15_t)0x3e50, (q15_t)0x3174, (q15_t)0x3e53, (q15_t)0x3180, (q15_t)0x3e56, (q15_t)0x318c, (q15_t)0x3e59, - (q15_t)0x3198, (q15_t)0x3e5c, (q15_t)0x31a4, (q15_t)0x3e5e, (q15_t)0x31b1, (q15_t)0x3e61, (q15_t)0x31bd, (q15_t)0x3e64, - (q15_t)0x31c9, (q15_t)0x3e67, (q15_t)0x31d5, (q15_t)0x3e6a, (q15_t)0x31e2, (q15_t)0x3e6c, (q15_t)0x31ee, (q15_t)0x3e6f, - (q15_t)0x31fa, (q15_t)0x3e72, (q15_t)0x3207, (q15_t)0x3e75, (q15_t)0x3213, (q15_t)0x3e77, (q15_t)0x321f, (q15_t)0x3e7a, - (q15_t)0x322b, (q15_t)0x3e7d, (q15_t)0x3238, (q15_t)0x3e80, (q15_t)0x3244, (q15_t)0x3e82, (q15_t)0x3250, (q15_t)0x3e85, - (q15_t)0x325c, (q15_t)0x3e88, (q15_t)0x3269, (q15_t)0x3e8a, (q15_t)0x3275, (q15_t)0x3e8d, (q15_t)0x3281, (q15_t)0x3e90, - (q15_t)0x328e, (q15_t)0x3e92, (q15_t)0x329a, (q15_t)0x3e95, (q15_t)0x32a6, (q15_t)0x3e98, (q15_t)0x32b2, (q15_t)0x3e9a, - (q15_t)0x32bf, (q15_t)0x3e9d, (q15_t)0x32cb, (q15_t)0x3e9f, (q15_t)0x32d7, (q15_t)0x3ea2, (q15_t)0x32e4, (q15_t)0x3ea5, - (q15_t)0x32f0, (q15_t)0x3ea7, (q15_t)0x32fc, (q15_t)0x3eaa, (q15_t)0x3308, (q15_t)0x3eac, (q15_t)0x3315, (q15_t)0x3eaf, - (q15_t)0x3321, (q15_t)0x3eb1, (q15_t)0x332d, (q15_t)0x3eb4, (q15_t)0x333a, (q15_t)0x3eb6, (q15_t)0x3346, (q15_t)0x3eb9, - (q15_t)0x3352, (q15_t)0x3ebb, (q15_t)0x335f, (q15_t)0x3ebe, (q15_t)0x336b, (q15_t)0x3ec0, (q15_t)0x3377, (q15_t)0x3ec3, - (q15_t)0x3384, (q15_t)0x3ec5, (q15_t)0x3390, (q15_t)0x3ec8, (q15_t)0x339c, (q15_t)0x3eca, (q15_t)0x33a9, (q15_t)0x3ecc, - (q15_t)0x33b5, (q15_t)0x3ecf, (q15_t)0x33c1, (q15_t)0x3ed1, (q15_t)0x33ce, (q15_t)0x3ed4, (q15_t)0x33da, (q15_t)0x3ed6, - (q15_t)0x33e6, (q15_t)0x3ed8, (q15_t)0x33f3, (q15_t)0x3edb, (q15_t)0x33ff, (q15_t)0x3edd, (q15_t)0x340b, (q15_t)0x3ee0, - (q15_t)0x3418, (q15_t)0x3ee2, (q15_t)0x3424, (q15_t)0x3ee4, (q15_t)0x3430, (q15_t)0x3ee7, (q15_t)0x343d, (q15_t)0x3ee9, - (q15_t)0x3449, (q15_t)0x3eeb, (q15_t)0x3455, (q15_t)0x3eed, (q15_t)0x3462, (q15_t)0x3ef0, (q15_t)0x346e, (q15_t)0x3ef2, - (q15_t)0x347b, (q15_t)0x3ef4, (q15_t)0x3487, (q15_t)0x3ef7, (q15_t)0x3493, (q15_t)0x3ef9, (q15_t)0x34a0, (q15_t)0x3efb, - (q15_t)0x34ac, (q15_t)0x3efd, (q15_t)0x34b8, (q15_t)0x3f00, (q15_t)0x34c5, (q15_t)0x3f02, (q15_t)0x34d1, (q15_t)0x3f04, - (q15_t)0x34dd, (q15_t)0x3f06, (q15_t)0x34ea, (q15_t)0x3f08, (q15_t)0x34f6, (q15_t)0x3f0a, (q15_t)0x3503, (q15_t)0x3f0d, - (q15_t)0x350f, (q15_t)0x3f0f, (q15_t)0x351b, (q15_t)0x3f11, (q15_t)0x3528, (q15_t)0x3f13, (q15_t)0x3534, (q15_t)0x3f15, - (q15_t)0x3540, (q15_t)0x3f17, (q15_t)0x354d, (q15_t)0x3f19, (q15_t)0x3559, (q15_t)0x3f1c, (q15_t)0x3566, (q15_t)0x3f1e, - (q15_t)0x3572, (q15_t)0x3f20, (q15_t)0x357e, (q15_t)0x3f22, (q15_t)0x358b, (q15_t)0x3f24, (q15_t)0x3597, (q15_t)0x3f26, - (q15_t)0x35a4, (q15_t)0x3f28, (q15_t)0x35b0, (q15_t)0x3f2a, (q15_t)0x35bc, (q15_t)0x3f2c, (q15_t)0x35c9, (q15_t)0x3f2e, - (q15_t)0x35d5, (q15_t)0x3f30, (q15_t)0x35e2, (q15_t)0x3f32, (q15_t)0x35ee, (q15_t)0x3f34, (q15_t)0x35fa, (q15_t)0x3f36, - (q15_t)0x3607, (q15_t)0x3f38, (q15_t)0x3613, (q15_t)0x3f3a, (q15_t)0x3620, (q15_t)0x3f3c, (q15_t)0x362c, (q15_t)0x3f3e, - (q15_t)0x3639, (q15_t)0x3f40, (q15_t)0x3645, (q15_t)0x3f42, (q15_t)0x3651, (q15_t)0x3f43, (q15_t)0x365e, (q15_t)0x3f45, - (q15_t)0x366a, (q15_t)0x3f47, (q15_t)0x3677, (q15_t)0x3f49, (q15_t)0x3683, (q15_t)0x3f4b, (q15_t)0x3690, (q15_t)0x3f4d, - (q15_t)0x369c, (q15_t)0x3f4f, (q15_t)0x36a8, (q15_t)0x3f51, (q15_t)0x36b5, (q15_t)0x3f52, (q15_t)0x36c1, (q15_t)0x3f54, - (q15_t)0x36ce, (q15_t)0x3f56, (q15_t)0x36da, (q15_t)0x3f58, (q15_t)0x36e7, (q15_t)0x3f5a, (q15_t)0x36f3, (q15_t)0x3f5b, - (q15_t)0x36ff, (q15_t)0x3f5d, (q15_t)0x370c, (q15_t)0x3f5f, (q15_t)0x3718, (q15_t)0x3f61, (q15_t)0x3725, (q15_t)0x3f62, - (q15_t)0x3731, (q15_t)0x3f64, (q15_t)0x373e, (q15_t)0x3f66, (q15_t)0x374a, (q15_t)0x3f68, (q15_t)0x3757, (q15_t)0x3f69, - (q15_t)0x3763, (q15_t)0x3f6b, (q15_t)0x376f, (q15_t)0x3f6d, (q15_t)0x377c, (q15_t)0x3f6e, (q15_t)0x3788, (q15_t)0x3f70, - (q15_t)0x3795, (q15_t)0x3f72, (q15_t)0x37a1, (q15_t)0x3f73, (q15_t)0x37ae, (q15_t)0x3f75, (q15_t)0x37ba, (q15_t)0x3f77, - (q15_t)0x37c7, (q15_t)0x3f78, (q15_t)0x37d3, (q15_t)0x3f7a, (q15_t)0x37e0, (q15_t)0x3f7b, (q15_t)0x37ec, (q15_t)0x3f7d, - (q15_t)0x37f9, (q15_t)0x3f7f, (q15_t)0x3805, (q15_t)0x3f80, (q15_t)0x3811, (q15_t)0x3f82, (q15_t)0x381e, (q15_t)0x3f83, - (q15_t)0x382a, (q15_t)0x3f85, (q15_t)0x3837, (q15_t)0x3f86, (q15_t)0x3843, (q15_t)0x3f88, (q15_t)0x3850, (q15_t)0x3f89, - (q15_t)0x385c, (q15_t)0x3f8b, (q15_t)0x3869, (q15_t)0x3f8c, (q15_t)0x3875, (q15_t)0x3f8e, (q15_t)0x3882, (q15_t)0x3f8f, - (q15_t)0x388e, (q15_t)0x3f91, (q15_t)0x389b, (q15_t)0x3f92, (q15_t)0x38a7, (q15_t)0x3f94, (q15_t)0x38b4, (q15_t)0x3f95, - (q15_t)0x38c0, (q15_t)0x3f97, (q15_t)0x38cd, (q15_t)0x3f98, (q15_t)0x38d9, (q15_t)0x3f99, (q15_t)0x38e6, (q15_t)0x3f9b, - (q15_t)0x38f2, (q15_t)0x3f9c, (q15_t)0x38ff, (q15_t)0x3f9e, (q15_t)0x390b, (q15_t)0x3f9f, (q15_t)0x3918, (q15_t)0x3fa0, - (q15_t)0x3924, (q15_t)0x3fa2, (q15_t)0x3931, (q15_t)0x3fa3, (q15_t)0x393d, (q15_t)0x3fa4, (q15_t)0x394a, (q15_t)0x3fa6, - (q15_t)0x3956, (q15_t)0x3fa7, (q15_t)0x3963, (q15_t)0x3fa8, (q15_t)0x396f, (q15_t)0x3faa, (q15_t)0x397c, (q15_t)0x3fab, - (q15_t)0x3988, (q15_t)0x3fac, (q15_t)0x3995, (q15_t)0x3fad, (q15_t)0x39a1, (q15_t)0x3faf, (q15_t)0x39ae, (q15_t)0x3fb0, - (q15_t)0x39ba, (q15_t)0x3fb1, (q15_t)0x39c7, (q15_t)0x3fb2, (q15_t)0x39d3, (q15_t)0x3fb4, (q15_t)0x39e0, (q15_t)0x3fb5, - (q15_t)0x39ec, (q15_t)0x3fb6, (q15_t)0x39f9, (q15_t)0x3fb7, (q15_t)0x3a05, (q15_t)0x3fb8, (q15_t)0x3a12, (q15_t)0x3fb9, - (q15_t)0x3a1e, (q15_t)0x3fbb, (q15_t)0x3a2b, (q15_t)0x3fbc, (q15_t)0x3a37, (q15_t)0x3fbd, (q15_t)0x3a44, (q15_t)0x3fbe, - (q15_t)0x3a50, (q15_t)0x3fbf, (q15_t)0x3a5d, (q15_t)0x3fc0, (q15_t)0x3a69, (q15_t)0x3fc1, (q15_t)0x3a76, (q15_t)0x3fc3, - (q15_t)0x3a82, (q15_t)0x3fc4, (q15_t)0x3a8f, (q15_t)0x3fc5, (q15_t)0x3a9b, (q15_t)0x3fc6, (q15_t)0x3aa8, (q15_t)0x3fc7, - (q15_t)0x3ab4, (q15_t)0x3fc8, (q15_t)0x3ac1, (q15_t)0x3fc9, (q15_t)0x3acd, (q15_t)0x3fca, (q15_t)0x3ada, (q15_t)0x3fcb, - (q15_t)0x3ae6, (q15_t)0x3fcc, (q15_t)0x3af3, (q15_t)0x3fcd, (q15_t)0x3b00, (q15_t)0x3fce, (q15_t)0x3b0c, (q15_t)0x3fcf, - (q15_t)0x3b19, (q15_t)0x3fd0, (q15_t)0x3b25, (q15_t)0x3fd1, (q15_t)0x3b32, (q15_t)0x3fd2, (q15_t)0x3b3e, (q15_t)0x3fd3, - (q15_t)0x3b4b, (q15_t)0x3fd4, (q15_t)0x3b57, (q15_t)0x3fd5, (q15_t)0x3b64, (q15_t)0x3fd5, (q15_t)0x3b70, (q15_t)0x3fd6, - (q15_t)0x3b7d, (q15_t)0x3fd7, (q15_t)0x3b89, (q15_t)0x3fd8, (q15_t)0x3b96, (q15_t)0x3fd9, (q15_t)0x3ba2, (q15_t)0x3fda, - (q15_t)0x3baf, (q15_t)0x3fdb, (q15_t)0x3bbc, (q15_t)0x3fdc, (q15_t)0x3bc8, (q15_t)0x3fdc, (q15_t)0x3bd5, (q15_t)0x3fdd, - (q15_t)0x3be1, (q15_t)0x3fde, (q15_t)0x3bee, (q15_t)0x3fdf, (q15_t)0x3bfa, (q15_t)0x3fe0, (q15_t)0x3c07, (q15_t)0x3fe0, - (q15_t)0x3c13, (q15_t)0x3fe1, (q15_t)0x3c20, (q15_t)0x3fe2, (q15_t)0x3c2c, (q15_t)0x3fe3, (q15_t)0x3c39, (q15_t)0x3fe3, - (q15_t)0x3c45, (q15_t)0x3fe4, (q15_t)0x3c52, (q15_t)0x3fe5, (q15_t)0x3c5f, (q15_t)0x3fe6, (q15_t)0x3c6b, (q15_t)0x3fe6, - (q15_t)0x3c78, (q15_t)0x3fe7, (q15_t)0x3c84, (q15_t)0x3fe8, (q15_t)0x3c91, (q15_t)0x3fe8, (q15_t)0x3c9d, (q15_t)0x3fe9, - (q15_t)0x3caa, (q15_t)0x3fea, (q15_t)0x3cb6, (q15_t)0x3fea, (q15_t)0x3cc3, (q15_t)0x3feb, (q15_t)0x3cd0, (q15_t)0x3fec, - (q15_t)0x3cdc, (q15_t)0x3fec, (q15_t)0x3ce9, (q15_t)0x3fed, (q15_t)0x3cf5, (q15_t)0x3fed, (q15_t)0x3d02, (q15_t)0x3fee, - (q15_t)0x3d0e, (q15_t)0x3fef, (q15_t)0x3d1b, (q15_t)0x3fef, (q15_t)0x3d27, (q15_t)0x3ff0, (q15_t)0x3d34, (q15_t)0x3ff0, - (q15_t)0x3d40, (q15_t)0x3ff1, (q15_t)0x3d4d, (q15_t)0x3ff1, (q15_t)0x3d5a, (q15_t)0x3ff2, (q15_t)0x3d66, (q15_t)0x3ff2, - (q15_t)0x3d73, (q15_t)0x3ff3, (q15_t)0x3d7f, (q15_t)0x3ff3, (q15_t)0x3d8c, (q15_t)0x3ff4, (q15_t)0x3d98, (q15_t)0x3ff4, - (q15_t)0x3da5, (q15_t)0x3ff5, (q15_t)0x3db2, (q15_t)0x3ff5, (q15_t)0x3dbe, (q15_t)0x3ff6, (q15_t)0x3dcb, (q15_t)0x3ff6, - (q15_t)0x3dd7, (q15_t)0x3ff7, (q15_t)0x3de4, (q15_t)0x3ff7, (q15_t)0x3df0, (q15_t)0x3ff7, (q15_t)0x3dfd, (q15_t)0x3ff8, - (q15_t)0x3e09, (q15_t)0x3ff8, (q15_t)0x3e16, (q15_t)0x3ff9, (q15_t)0x3e23, (q15_t)0x3ff9, (q15_t)0x3e2f, (q15_t)0x3ff9, - (q15_t)0x3e3c, (q15_t)0x3ffa, (q15_t)0x3e48, (q15_t)0x3ffa, (q15_t)0x3e55, (q15_t)0x3ffa, (q15_t)0x3e61, (q15_t)0x3ffb, - (q15_t)0x3e6e, (q15_t)0x3ffb, (q15_t)0x3e7a, (q15_t)0x3ffb, (q15_t)0x3e87, (q15_t)0x3ffc, (q15_t)0x3e94, (q15_t)0x3ffc, - (q15_t)0x3ea0, (q15_t)0x3ffc, (q15_t)0x3ead, (q15_t)0x3ffc, (q15_t)0x3eb9, (q15_t)0x3ffd, (q15_t)0x3ec6, (q15_t)0x3ffd, - (q15_t)0x3ed2, (q15_t)0x3ffd, (q15_t)0x3edf, (q15_t)0x3ffd, (q15_t)0x3eec, (q15_t)0x3ffe, (q15_t)0x3ef8, (q15_t)0x3ffe, - (q15_t)0x3f05, (q15_t)0x3ffe, (q15_t)0x3f11, (q15_t)0x3ffe, (q15_t)0x3f1e, (q15_t)0x3ffe, (q15_t)0x3f2a, (q15_t)0x3fff, - (q15_t)0x3f37, (q15_t)0x3fff, (q15_t)0x3f44, (q15_t)0x3fff, (q15_t)0x3f50, (q15_t)0x3fff, (q15_t)0x3f5d, (q15_t)0x3fff, - (q15_t)0x3f69, (q15_t)0x3fff, (q15_t)0x3f76, (q15_t)0x3fff, (q15_t)0x3f82, (q15_t)0x4000, (q15_t)0x3f8f, (q15_t)0x4000, - (q15_t)0x3f9b, (q15_t)0x4000, (q15_t)0x3fa8, (q15_t)0x4000, (q15_t)0x3fb5, (q15_t)0x4000, (q15_t)0x3fc1, (q15_t)0x4000, - (q15_t)0x3fce, (q15_t)0x4000, (q15_t)0x3fda, (q15_t)0x4000, (q15_t)0x3fe7, (q15_t)0x4000, (q15_t)0x3ff3, (q15_t)0x4000, -}; - -/** -* \par -* Generation of real_CoefB array: -* \par -* n = 4096 -*
for (i = 0; i < n; i++)
-*  {
-*    pBTable[2 * i] = 0.5 * (1.0 + sin (2 * PI / (double) (2 * n) * (double) i));
-*    pBTable[2 * i + 1] = 0.5 * (1.0 * cos (2 * PI / (double) (2 * n) * (double) i));
-*  } 
-* \par -* Convert to fixed point Q15 format -* round(pBTable[i] * pow(2, 15)) -* -*/ -const q15_t ALIGN4 realCoefBQ15[8192] = { - (q15_t)0x4000, (q15_t)0x4000, (q15_t)0x400d, (q15_t)0x4000, (q15_t)0x4019, (q15_t)0x4000, (q15_t)0x4026, (q15_t)0x4000, - (q15_t)0x4032, (q15_t)0x4000, (q15_t)0x403f, (q15_t)0x4000, (q15_t)0x404b, (q15_t)0x4000, (q15_t)0x4058, (q15_t)0x4000, - (q15_t)0x4065, (q15_t)0x4000, (q15_t)0x4071, (q15_t)0x4000, (q15_t)0x407e, (q15_t)0x4000, (q15_t)0x408a, (q15_t)0x3fff, - (q15_t)0x4097, (q15_t)0x3fff, (q15_t)0x40a3, (q15_t)0x3fff, (q15_t)0x40b0, (q15_t)0x3fff, (q15_t)0x40bc, (q15_t)0x3fff, - (q15_t)0x40c9, (q15_t)0x3fff, (q15_t)0x40d6, (q15_t)0x3fff, (q15_t)0x40e2, (q15_t)0x3ffe, (q15_t)0x40ef, (q15_t)0x3ffe, - (q15_t)0x40fb, (q15_t)0x3ffe, (q15_t)0x4108, (q15_t)0x3ffe, (q15_t)0x4114, (q15_t)0x3ffe, (q15_t)0x4121, (q15_t)0x3ffd, - (q15_t)0x412e, (q15_t)0x3ffd, (q15_t)0x413a, (q15_t)0x3ffd, (q15_t)0x4147, (q15_t)0x3ffd, (q15_t)0x4153, (q15_t)0x3ffc, - (q15_t)0x4160, (q15_t)0x3ffc, (q15_t)0x416c, (q15_t)0x3ffc, (q15_t)0x4179, (q15_t)0x3ffc, (q15_t)0x4186, (q15_t)0x3ffb, - (q15_t)0x4192, (q15_t)0x3ffb, (q15_t)0x419f, (q15_t)0x3ffb, (q15_t)0x41ab, (q15_t)0x3ffa, (q15_t)0x41b8, (q15_t)0x3ffa, - (q15_t)0x41c4, (q15_t)0x3ffa, (q15_t)0x41d1, (q15_t)0x3ff9, (q15_t)0x41dd, (q15_t)0x3ff9, (q15_t)0x41ea, (q15_t)0x3ff9, - (q15_t)0x41f7, (q15_t)0x3ff8, (q15_t)0x4203, (q15_t)0x3ff8, (q15_t)0x4210, (q15_t)0x3ff7, (q15_t)0x421c, (q15_t)0x3ff7, - (q15_t)0x4229, (q15_t)0x3ff7, (q15_t)0x4235, (q15_t)0x3ff6, (q15_t)0x4242, (q15_t)0x3ff6, (q15_t)0x424e, (q15_t)0x3ff5, - (q15_t)0x425b, (q15_t)0x3ff5, (q15_t)0x4268, (q15_t)0x3ff4, (q15_t)0x4274, (q15_t)0x3ff4, (q15_t)0x4281, (q15_t)0x3ff3, - (q15_t)0x428d, (q15_t)0x3ff3, (q15_t)0x429a, (q15_t)0x3ff2, (q15_t)0x42a6, (q15_t)0x3ff2, (q15_t)0x42b3, (q15_t)0x3ff1, - (q15_t)0x42c0, (q15_t)0x3ff1, (q15_t)0x42cc, (q15_t)0x3ff0, (q15_t)0x42d9, (q15_t)0x3ff0, (q15_t)0x42e5, (q15_t)0x3fef, - (q15_t)0x42f2, (q15_t)0x3fef, (q15_t)0x42fe, (q15_t)0x3fee, (q15_t)0x430b, (q15_t)0x3fed, (q15_t)0x4317, (q15_t)0x3fed, - (q15_t)0x4324, (q15_t)0x3fec, (q15_t)0x4330, (q15_t)0x3fec, (q15_t)0x433d, (q15_t)0x3feb, (q15_t)0x434a, (q15_t)0x3fea, - (q15_t)0x4356, (q15_t)0x3fea, (q15_t)0x4363, (q15_t)0x3fe9, (q15_t)0x436f, (q15_t)0x3fe8, (q15_t)0x437c, (q15_t)0x3fe8, - (q15_t)0x4388, (q15_t)0x3fe7, (q15_t)0x4395, (q15_t)0x3fe6, (q15_t)0x43a1, (q15_t)0x3fe6, (q15_t)0x43ae, (q15_t)0x3fe5, - (q15_t)0x43bb, (q15_t)0x3fe4, (q15_t)0x43c7, (q15_t)0x3fe3, (q15_t)0x43d4, (q15_t)0x3fe3, (q15_t)0x43e0, (q15_t)0x3fe2, - (q15_t)0x43ed, (q15_t)0x3fe1, (q15_t)0x43f9, (q15_t)0x3fe0, (q15_t)0x4406, (q15_t)0x3fe0, (q15_t)0x4412, (q15_t)0x3fdf, - (q15_t)0x441f, (q15_t)0x3fde, (q15_t)0x442b, (q15_t)0x3fdd, (q15_t)0x4438, (q15_t)0x3fdc, (q15_t)0x4444, (q15_t)0x3fdc, - (q15_t)0x4451, (q15_t)0x3fdb, (q15_t)0x445e, (q15_t)0x3fda, (q15_t)0x446a, (q15_t)0x3fd9, (q15_t)0x4477, (q15_t)0x3fd8, - (q15_t)0x4483, (q15_t)0x3fd7, (q15_t)0x4490, (q15_t)0x3fd6, (q15_t)0x449c, (q15_t)0x3fd5, (q15_t)0x44a9, (q15_t)0x3fd5, - (q15_t)0x44b5, (q15_t)0x3fd4, (q15_t)0x44c2, (q15_t)0x3fd3, (q15_t)0x44ce, (q15_t)0x3fd2, (q15_t)0x44db, (q15_t)0x3fd1, - (q15_t)0x44e7, (q15_t)0x3fd0, (q15_t)0x44f4, (q15_t)0x3fcf, (q15_t)0x4500, (q15_t)0x3fce, (q15_t)0x450d, (q15_t)0x3fcd, - (q15_t)0x451a, (q15_t)0x3fcc, (q15_t)0x4526, (q15_t)0x3fcb, (q15_t)0x4533, (q15_t)0x3fca, (q15_t)0x453f, (q15_t)0x3fc9, - (q15_t)0x454c, (q15_t)0x3fc8, (q15_t)0x4558, (q15_t)0x3fc7, (q15_t)0x4565, (q15_t)0x3fc6, (q15_t)0x4571, (q15_t)0x3fc5, - (q15_t)0x457e, (q15_t)0x3fc4, (q15_t)0x458a, (q15_t)0x3fc3, (q15_t)0x4597, (q15_t)0x3fc1, (q15_t)0x45a3, (q15_t)0x3fc0, - (q15_t)0x45b0, (q15_t)0x3fbf, (q15_t)0x45bc, (q15_t)0x3fbe, (q15_t)0x45c9, (q15_t)0x3fbd, (q15_t)0x45d5, (q15_t)0x3fbc, - (q15_t)0x45e2, (q15_t)0x3fbb, (q15_t)0x45ee, (q15_t)0x3fb9, (q15_t)0x45fb, (q15_t)0x3fb8, (q15_t)0x4607, (q15_t)0x3fb7, - (q15_t)0x4614, (q15_t)0x3fb6, (q15_t)0x4620, (q15_t)0x3fb5, (q15_t)0x462d, (q15_t)0x3fb4, (q15_t)0x4639, (q15_t)0x3fb2, - (q15_t)0x4646, (q15_t)0x3fb1, (q15_t)0x4652, (q15_t)0x3fb0, (q15_t)0x465f, (q15_t)0x3faf, (q15_t)0x466b, (q15_t)0x3fad, - (q15_t)0x4678, (q15_t)0x3fac, (q15_t)0x4684, (q15_t)0x3fab, (q15_t)0x4691, (q15_t)0x3faa, (q15_t)0x469d, (q15_t)0x3fa8, - (q15_t)0x46aa, (q15_t)0x3fa7, (q15_t)0x46b6, (q15_t)0x3fa6, (q15_t)0x46c3, (q15_t)0x3fa4, (q15_t)0x46cf, (q15_t)0x3fa3, - (q15_t)0x46dc, (q15_t)0x3fa2, (q15_t)0x46e8, (q15_t)0x3fa0, (q15_t)0x46f5, (q15_t)0x3f9f, (q15_t)0x4701, (q15_t)0x3f9e, - (q15_t)0x470e, (q15_t)0x3f9c, (q15_t)0x471a, (q15_t)0x3f9b, (q15_t)0x4727, (q15_t)0x3f99, (q15_t)0x4733, (q15_t)0x3f98, - (q15_t)0x4740, (q15_t)0x3f97, (q15_t)0x474c, (q15_t)0x3f95, (q15_t)0x4759, (q15_t)0x3f94, (q15_t)0x4765, (q15_t)0x3f92, - (q15_t)0x4772, (q15_t)0x3f91, (q15_t)0x477e, (q15_t)0x3f8f, (q15_t)0x478b, (q15_t)0x3f8e, (q15_t)0x4797, (q15_t)0x3f8c, - (q15_t)0x47a4, (q15_t)0x3f8b, (q15_t)0x47b0, (q15_t)0x3f89, (q15_t)0x47bd, (q15_t)0x3f88, (q15_t)0x47c9, (q15_t)0x3f86, - (q15_t)0x47d6, (q15_t)0x3f85, (q15_t)0x47e2, (q15_t)0x3f83, (q15_t)0x47ef, (q15_t)0x3f82, (q15_t)0x47fb, (q15_t)0x3f80, - (q15_t)0x4807, (q15_t)0x3f7f, (q15_t)0x4814, (q15_t)0x3f7d, (q15_t)0x4820, (q15_t)0x3f7b, (q15_t)0x482d, (q15_t)0x3f7a, - (q15_t)0x4839, (q15_t)0x3f78, (q15_t)0x4846, (q15_t)0x3f77, (q15_t)0x4852, (q15_t)0x3f75, (q15_t)0x485f, (q15_t)0x3f73, - (q15_t)0x486b, (q15_t)0x3f72, (q15_t)0x4878, (q15_t)0x3f70, (q15_t)0x4884, (q15_t)0x3f6e, (q15_t)0x4891, (q15_t)0x3f6d, - (q15_t)0x489d, (q15_t)0x3f6b, (q15_t)0x48a9, (q15_t)0x3f69, (q15_t)0x48b6, (q15_t)0x3f68, (q15_t)0x48c2, (q15_t)0x3f66, - (q15_t)0x48cf, (q15_t)0x3f64, (q15_t)0x48db, (q15_t)0x3f62, (q15_t)0x48e8, (q15_t)0x3f61, (q15_t)0x48f4, (q15_t)0x3f5f, - (q15_t)0x4901, (q15_t)0x3f5d, (q15_t)0x490d, (q15_t)0x3f5b, (q15_t)0x4919, (q15_t)0x3f5a, (q15_t)0x4926, (q15_t)0x3f58, - (q15_t)0x4932, (q15_t)0x3f56, (q15_t)0x493f, (q15_t)0x3f54, (q15_t)0x494b, (q15_t)0x3f52, (q15_t)0x4958, (q15_t)0x3f51, - (q15_t)0x4964, (q15_t)0x3f4f, (q15_t)0x4970, (q15_t)0x3f4d, (q15_t)0x497d, (q15_t)0x3f4b, (q15_t)0x4989, (q15_t)0x3f49, - (q15_t)0x4996, (q15_t)0x3f47, (q15_t)0x49a2, (q15_t)0x3f45, (q15_t)0x49af, (q15_t)0x3f43, (q15_t)0x49bb, (q15_t)0x3f42, - (q15_t)0x49c7, (q15_t)0x3f40, (q15_t)0x49d4, (q15_t)0x3f3e, (q15_t)0x49e0, (q15_t)0x3f3c, (q15_t)0x49ed, (q15_t)0x3f3a, - (q15_t)0x49f9, (q15_t)0x3f38, (q15_t)0x4a06, (q15_t)0x3f36, (q15_t)0x4a12, (q15_t)0x3f34, (q15_t)0x4a1e, (q15_t)0x3f32, - (q15_t)0x4a2b, (q15_t)0x3f30, (q15_t)0x4a37, (q15_t)0x3f2e, (q15_t)0x4a44, (q15_t)0x3f2c, (q15_t)0x4a50, (q15_t)0x3f2a, - (q15_t)0x4a5c, (q15_t)0x3f28, (q15_t)0x4a69, (q15_t)0x3f26, (q15_t)0x4a75, (q15_t)0x3f24, (q15_t)0x4a82, (q15_t)0x3f22, - (q15_t)0x4a8e, (q15_t)0x3f20, (q15_t)0x4a9a, (q15_t)0x3f1e, (q15_t)0x4aa7, (q15_t)0x3f1c, (q15_t)0x4ab3, (q15_t)0x3f19, - (q15_t)0x4ac0, (q15_t)0x3f17, (q15_t)0x4acc, (q15_t)0x3f15, (q15_t)0x4ad8, (q15_t)0x3f13, (q15_t)0x4ae5, (q15_t)0x3f11, - (q15_t)0x4af1, (q15_t)0x3f0f, (q15_t)0x4afd, (q15_t)0x3f0d, (q15_t)0x4b0a, (q15_t)0x3f0a, (q15_t)0x4b16, (q15_t)0x3f08, - (q15_t)0x4b23, (q15_t)0x3f06, (q15_t)0x4b2f, (q15_t)0x3f04, (q15_t)0x4b3b, (q15_t)0x3f02, (q15_t)0x4b48, (q15_t)0x3f00, - (q15_t)0x4b54, (q15_t)0x3efd, (q15_t)0x4b60, (q15_t)0x3efb, (q15_t)0x4b6d, (q15_t)0x3ef9, (q15_t)0x4b79, (q15_t)0x3ef7, - (q15_t)0x4b85, (q15_t)0x3ef4, (q15_t)0x4b92, (q15_t)0x3ef2, (q15_t)0x4b9e, (q15_t)0x3ef0, (q15_t)0x4bab, (q15_t)0x3eed, - (q15_t)0x4bb7, (q15_t)0x3eeb, (q15_t)0x4bc3, (q15_t)0x3ee9, (q15_t)0x4bd0, (q15_t)0x3ee7, (q15_t)0x4bdc, (q15_t)0x3ee4, - (q15_t)0x4be8, (q15_t)0x3ee2, (q15_t)0x4bf5, (q15_t)0x3ee0, (q15_t)0x4c01, (q15_t)0x3edd, (q15_t)0x4c0d, (q15_t)0x3edb, - (q15_t)0x4c1a, (q15_t)0x3ed8, (q15_t)0x4c26, (q15_t)0x3ed6, (q15_t)0x4c32, (q15_t)0x3ed4, (q15_t)0x4c3f, (q15_t)0x3ed1, - (q15_t)0x4c4b, (q15_t)0x3ecf, (q15_t)0x4c57, (q15_t)0x3ecc, (q15_t)0x4c64, (q15_t)0x3eca, (q15_t)0x4c70, (q15_t)0x3ec8, - (q15_t)0x4c7c, (q15_t)0x3ec5, (q15_t)0x4c89, (q15_t)0x3ec3, (q15_t)0x4c95, (q15_t)0x3ec0, (q15_t)0x4ca1, (q15_t)0x3ebe, - (q15_t)0x4cae, (q15_t)0x3ebb, (q15_t)0x4cba, (q15_t)0x3eb9, (q15_t)0x4cc6, (q15_t)0x3eb6, (q15_t)0x4cd3, (q15_t)0x3eb4, - (q15_t)0x4cdf, (q15_t)0x3eb1, (q15_t)0x4ceb, (q15_t)0x3eaf, (q15_t)0x4cf8, (q15_t)0x3eac, (q15_t)0x4d04, (q15_t)0x3eaa, - (q15_t)0x4d10, (q15_t)0x3ea7, (q15_t)0x4d1c, (q15_t)0x3ea5, (q15_t)0x4d29, (q15_t)0x3ea2, (q15_t)0x4d35, (q15_t)0x3e9f, - (q15_t)0x4d41, (q15_t)0x3e9d, (q15_t)0x4d4e, (q15_t)0x3e9a, (q15_t)0x4d5a, (q15_t)0x3e98, (q15_t)0x4d66, (q15_t)0x3e95, - (q15_t)0x4d72, (q15_t)0x3e92, (q15_t)0x4d7f, (q15_t)0x3e90, (q15_t)0x4d8b, (q15_t)0x3e8d, (q15_t)0x4d97, (q15_t)0x3e8a, - (q15_t)0x4da4, (q15_t)0x3e88, (q15_t)0x4db0, (q15_t)0x3e85, (q15_t)0x4dbc, (q15_t)0x3e82, (q15_t)0x4dc8, (q15_t)0x3e80, - (q15_t)0x4dd5, (q15_t)0x3e7d, (q15_t)0x4de1, (q15_t)0x3e7a, (q15_t)0x4ded, (q15_t)0x3e77, (q15_t)0x4df9, (q15_t)0x3e75, - (q15_t)0x4e06, (q15_t)0x3e72, (q15_t)0x4e12, (q15_t)0x3e6f, (q15_t)0x4e1e, (q15_t)0x3e6c, (q15_t)0x4e2b, (q15_t)0x3e6a, - (q15_t)0x4e37, (q15_t)0x3e67, (q15_t)0x4e43, (q15_t)0x3e64, (q15_t)0x4e4f, (q15_t)0x3e61, (q15_t)0x4e5c, (q15_t)0x3e5e, - (q15_t)0x4e68, (q15_t)0x3e5c, (q15_t)0x4e74, (q15_t)0x3e59, (q15_t)0x4e80, (q15_t)0x3e56, (q15_t)0x4e8c, (q15_t)0x3e53, - (q15_t)0x4e99, (q15_t)0x3e50, (q15_t)0x4ea5, (q15_t)0x3e4d, (q15_t)0x4eb1, (q15_t)0x3e4a, (q15_t)0x4ebd, (q15_t)0x3e48, - (q15_t)0x4eca, (q15_t)0x3e45, (q15_t)0x4ed6, (q15_t)0x3e42, (q15_t)0x4ee2, (q15_t)0x3e3f, (q15_t)0x4eee, (q15_t)0x3e3c, - (q15_t)0x4efb, (q15_t)0x3e39, (q15_t)0x4f07, (q15_t)0x3e36, (q15_t)0x4f13, (q15_t)0x3e33, (q15_t)0x4f1f, (q15_t)0x3e30, - (q15_t)0x4f2b, (q15_t)0x3e2d, (q15_t)0x4f38, (q15_t)0x3e2a, (q15_t)0x4f44, (q15_t)0x3e27, (q15_t)0x4f50, (q15_t)0x3e24, - (q15_t)0x4f5c, (q15_t)0x3e21, (q15_t)0x4f68, (q15_t)0x3e1e, (q15_t)0x4f75, (q15_t)0x3e1b, (q15_t)0x4f81, (q15_t)0x3e18, - (q15_t)0x4f8d, (q15_t)0x3e15, (q15_t)0x4f99, (q15_t)0x3e12, (q15_t)0x4fa5, (q15_t)0x3e0f, (q15_t)0x4fb2, (q15_t)0x3e0c, - (q15_t)0x4fbe, (q15_t)0x3e09, (q15_t)0x4fca, (q15_t)0x3e06, (q15_t)0x4fd6, (q15_t)0x3e03, (q15_t)0x4fe2, (q15_t)0x3dff, - (q15_t)0x4fee, (q15_t)0x3dfc, (q15_t)0x4ffb, (q15_t)0x3df9, (q15_t)0x5007, (q15_t)0x3df6, (q15_t)0x5013, (q15_t)0x3df3, - (q15_t)0x501f, (q15_t)0x3df0, (q15_t)0x502b, (q15_t)0x3ded, (q15_t)0x5037, (q15_t)0x3de9, (q15_t)0x5044, (q15_t)0x3de6, - (q15_t)0x5050, (q15_t)0x3de3, (q15_t)0x505c, (q15_t)0x3de0, (q15_t)0x5068, (q15_t)0x3ddd, (q15_t)0x5074, (q15_t)0x3dd9, - (q15_t)0x5080, (q15_t)0x3dd6, (q15_t)0x508c, (q15_t)0x3dd3, (q15_t)0x5099, (q15_t)0x3dd0, (q15_t)0x50a5, (q15_t)0x3dcc, - (q15_t)0x50b1, (q15_t)0x3dc9, (q15_t)0x50bd, (q15_t)0x3dc6, (q15_t)0x50c9, (q15_t)0x3dc2, (q15_t)0x50d5, (q15_t)0x3dbf, - (q15_t)0x50e1, (q15_t)0x3dbc, (q15_t)0x50ed, (q15_t)0x3db9, (q15_t)0x50fa, (q15_t)0x3db5, (q15_t)0x5106, (q15_t)0x3db2, - (q15_t)0x5112, (q15_t)0x3daf, (q15_t)0x511e, (q15_t)0x3dab, (q15_t)0x512a, (q15_t)0x3da8, (q15_t)0x5136, (q15_t)0x3da4, - (q15_t)0x5142, (q15_t)0x3da1, (q15_t)0x514e, (q15_t)0x3d9e, (q15_t)0x515a, (q15_t)0x3d9a, (q15_t)0x5167, (q15_t)0x3d97, - (q15_t)0x5173, (q15_t)0x3d93, (q15_t)0x517f, (q15_t)0x3d90, (q15_t)0x518b, (q15_t)0x3d8d, (q15_t)0x5197, (q15_t)0x3d89, - (q15_t)0x51a3, (q15_t)0x3d86, (q15_t)0x51af, (q15_t)0x3d82, (q15_t)0x51bb, (q15_t)0x3d7f, (q15_t)0x51c7, (q15_t)0x3d7b, - (q15_t)0x51d3, (q15_t)0x3d78, (q15_t)0x51df, (q15_t)0x3d74, (q15_t)0x51eb, (q15_t)0x3d71, (q15_t)0x51f7, (q15_t)0x3d6d, - (q15_t)0x5204, (q15_t)0x3d6a, (q15_t)0x5210, (q15_t)0x3d66, (q15_t)0x521c, (q15_t)0x3d63, (q15_t)0x5228, (q15_t)0x3d5f, - (q15_t)0x5234, (q15_t)0x3d5b, (q15_t)0x5240, (q15_t)0x3d58, (q15_t)0x524c, (q15_t)0x3d54, (q15_t)0x5258, (q15_t)0x3d51, - (q15_t)0x5264, (q15_t)0x3d4d, (q15_t)0x5270, (q15_t)0x3d49, (q15_t)0x527c, (q15_t)0x3d46, (q15_t)0x5288, (q15_t)0x3d42, - (q15_t)0x5294, (q15_t)0x3d3f, (q15_t)0x52a0, (q15_t)0x3d3b, (q15_t)0x52ac, (q15_t)0x3d37, (q15_t)0x52b8, (q15_t)0x3d34, - (q15_t)0x52c4, (q15_t)0x3d30, (q15_t)0x52d0, (q15_t)0x3d2c, (q15_t)0x52dc, (q15_t)0x3d28, (q15_t)0x52e8, (q15_t)0x3d25, - (q15_t)0x52f4, (q15_t)0x3d21, (q15_t)0x5300, (q15_t)0x3d1d, (q15_t)0x530c, (q15_t)0x3d1a, (q15_t)0x5318, (q15_t)0x3d16, - (q15_t)0x5324, (q15_t)0x3d12, (q15_t)0x5330, (q15_t)0x3d0e, (q15_t)0x533c, (q15_t)0x3d0b, (q15_t)0x5348, (q15_t)0x3d07, - (q15_t)0x5354, (q15_t)0x3d03, (q15_t)0x5360, (q15_t)0x3cff, (q15_t)0x536c, (q15_t)0x3cfb, (q15_t)0x5378, (q15_t)0x3cf8, - (q15_t)0x5384, (q15_t)0x3cf4, (q15_t)0x5390, (q15_t)0x3cf0, (q15_t)0x539c, (q15_t)0x3cec, (q15_t)0x53a8, (q15_t)0x3ce8, - (q15_t)0x53b4, (q15_t)0x3ce4, (q15_t)0x53c0, (q15_t)0x3ce0, (q15_t)0x53cc, (q15_t)0x3cdd, (q15_t)0x53d8, (q15_t)0x3cd9, - (q15_t)0x53e4, (q15_t)0x3cd5, (q15_t)0x53f0, (q15_t)0x3cd1, (q15_t)0x53fb, (q15_t)0x3ccd, (q15_t)0x5407, (q15_t)0x3cc9, - (q15_t)0x5413, (q15_t)0x3cc5, (q15_t)0x541f, (q15_t)0x3cc1, (q15_t)0x542b, (q15_t)0x3cbd, (q15_t)0x5437, (q15_t)0x3cb9, - (q15_t)0x5443, (q15_t)0x3cb5, (q15_t)0x544f, (q15_t)0x3cb1, (q15_t)0x545b, (q15_t)0x3cad, (q15_t)0x5467, (q15_t)0x3ca9, - (q15_t)0x5473, (q15_t)0x3ca5, (q15_t)0x547f, (q15_t)0x3ca1, (q15_t)0x548b, (q15_t)0x3c9d, (q15_t)0x5496, (q15_t)0x3c99, - (q15_t)0x54a2, (q15_t)0x3c95, (q15_t)0x54ae, (q15_t)0x3c91, (q15_t)0x54ba, (q15_t)0x3c8d, (q15_t)0x54c6, (q15_t)0x3c89, - (q15_t)0x54d2, (q15_t)0x3c85, (q15_t)0x54de, (q15_t)0x3c81, (q15_t)0x54ea, (q15_t)0x3c7d, (q15_t)0x54f6, (q15_t)0x3c79, - (q15_t)0x5501, (q15_t)0x3c74, (q15_t)0x550d, (q15_t)0x3c70, (q15_t)0x5519, (q15_t)0x3c6c, (q15_t)0x5525, (q15_t)0x3c68, - (q15_t)0x5531, (q15_t)0x3c64, (q15_t)0x553d, (q15_t)0x3c60, (q15_t)0x5549, (q15_t)0x3c5b, (q15_t)0x5554, (q15_t)0x3c57, - (q15_t)0x5560, (q15_t)0x3c53, (q15_t)0x556c, (q15_t)0x3c4f, (q15_t)0x5578, (q15_t)0x3c4b, (q15_t)0x5584, (q15_t)0x3c46, - (q15_t)0x5590, (q15_t)0x3c42, (q15_t)0x559b, (q15_t)0x3c3e, (q15_t)0x55a7, (q15_t)0x3c3a, (q15_t)0x55b3, (q15_t)0x3c36, - (q15_t)0x55bf, (q15_t)0x3c31, (q15_t)0x55cb, (q15_t)0x3c2d, (q15_t)0x55d7, (q15_t)0x3c29, (q15_t)0x55e2, (q15_t)0x3c24, - (q15_t)0x55ee, (q15_t)0x3c20, (q15_t)0x55fa, (q15_t)0x3c1c, (q15_t)0x5606, (q15_t)0x3c17, (q15_t)0x5612, (q15_t)0x3c13, - (q15_t)0x561d, (q15_t)0x3c0f, (q15_t)0x5629, (q15_t)0x3c0a, (q15_t)0x5635, (q15_t)0x3c06, (q15_t)0x5641, (q15_t)0x3c02, - (q15_t)0x564c, (q15_t)0x3bfd, (q15_t)0x5658, (q15_t)0x3bf9, (q15_t)0x5664, (q15_t)0x3bf5, (q15_t)0x5670, (q15_t)0x3bf0, - (q15_t)0x567c, (q15_t)0x3bec, (q15_t)0x5687, (q15_t)0x3be7, (q15_t)0x5693, (q15_t)0x3be3, (q15_t)0x569f, (q15_t)0x3bde, - (q15_t)0x56ab, (q15_t)0x3bda, (q15_t)0x56b6, (q15_t)0x3bd6, (q15_t)0x56c2, (q15_t)0x3bd1, (q15_t)0x56ce, (q15_t)0x3bcd, - (q15_t)0x56da, (q15_t)0x3bc8, (q15_t)0x56e5, (q15_t)0x3bc4, (q15_t)0x56f1, (q15_t)0x3bbf, (q15_t)0x56fd, (q15_t)0x3bbb, - (q15_t)0x5709, (q15_t)0x3bb6, (q15_t)0x5714, (q15_t)0x3bb2, (q15_t)0x5720, (q15_t)0x3bad, (q15_t)0x572c, (q15_t)0x3ba9, - (q15_t)0x5737, (q15_t)0x3ba4, (q15_t)0x5743, (q15_t)0x3b9f, (q15_t)0x574f, (q15_t)0x3b9b, (q15_t)0x575b, (q15_t)0x3b96, - (q15_t)0x5766, (q15_t)0x3b92, (q15_t)0x5772, (q15_t)0x3b8d, (q15_t)0x577e, (q15_t)0x3b88, (q15_t)0x5789, (q15_t)0x3b84, - (q15_t)0x5795, (q15_t)0x3b7f, (q15_t)0x57a1, (q15_t)0x3b7b, (q15_t)0x57ac, (q15_t)0x3b76, (q15_t)0x57b8, (q15_t)0x3b71, - (q15_t)0x57c4, (q15_t)0x3b6d, (q15_t)0x57cf, (q15_t)0x3b68, (q15_t)0x57db, (q15_t)0x3b63, (q15_t)0x57e7, (q15_t)0x3b5f, - (q15_t)0x57f2, (q15_t)0x3b5a, (q15_t)0x57fe, (q15_t)0x3b55, (q15_t)0x580a, (q15_t)0x3b50, (q15_t)0x5815, (q15_t)0x3b4c, - (q15_t)0x5821, (q15_t)0x3b47, (q15_t)0x582d, (q15_t)0x3b42, (q15_t)0x5838, (q15_t)0x3b3e, (q15_t)0x5844, (q15_t)0x3b39, - (q15_t)0x584f, (q15_t)0x3b34, (q15_t)0x585b, (q15_t)0x3b2f, (q15_t)0x5867, (q15_t)0x3b2a, (q15_t)0x5872, (q15_t)0x3b26, - (q15_t)0x587e, (q15_t)0x3b21, (q15_t)0x5889, (q15_t)0x3b1c, (q15_t)0x5895, (q15_t)0x3b17, (q15_t)0x58a1, (q15_t)0x3b12, - (q15_t)0x58ac, (q15_t)0x3b0e, (q15_t)0x58b8, (q15_t)0x3b09, (q15_t)0x58c3, (q15_t)0x3b04, (q15_t)0x58cf, (q15_t)0x3aff, - (q15_t)0x58db, (q15_t)0x3afa, (q15_t)0x58e6, (q15_t)0x3af5, (q15_t)0x58f2, (q15_t)0x3af0, (q15_t)0x58fd, (q15_t)0x3aeb, - (q15_t)0x5909, (q15_t)0x3ae6, (q15_t)0x5914, (q15_t)0x3ae2, (q15_t)0x5920, (q15_t)0x3add, (q15_t)0x592c, (q15_t)0x3ad8, - (q15_t)0x5937, (q15_t)0x3ad3, (q15_t)0x5943, (q15_t)0x3ace, (q15_t)0x594e, (q15_t)0x3ac9, (q15_t)0x595a, (q15_t)0x3ac4, - (q15_t)0x5965, (q15_t)0x3abf, (q15_t)0x5971, (q15_t)0x3aba, (q15_t)0x597c, (q15_t)0x3ab5, (q15_t)0x5988, (q15_t)0x3ab0, - (q15_t)0x5993, (q15_t)0x3aab, (q15_t)0x599f, (q15_t)0x3aa6, (q15_t)0x59aa, (q15_t)0x3aa1, (q15_t)0x59b6, (q15_t)0x3a9c, - (q15_t)0x59c1, (q15_t)0x3a97, (q15_t)0x59cd, (q15_t)0x3a92, (q15_t)0x59d8, (q15_t)0x3a8d, (q15_t)0x59e4, (q15_t)0x3a88, - (q15_t)0x59ef, (q15_t)0x3a82, (q15_t)0x59fb, (q15_t)0x3a7d, (q15_t)0x5a06, (q15_t)0x3a78, (q15_t)0x5a12, (q15_t)0x3a73, - (q15_t)0x5a1d, (q15_t)0x3a6e, (q15_t)0x5a29, (q15_t)0x3a69, (q15_t)0x5a34, (q15_t)0x3a64, (q15_t)0x5a40, (q15_t)0x3a5f, - (q15_t)0x5a4b, (q15_t)0x3a59, (q15_t)0x5a57, (q15_t)0x3a54, (q15_t)0x5a62, (q15_t)0x3a4f, (q15_t)0x5a6e, (q15_t)0x3a4a, - (q15_t)0x5a79, (q15_t)0x3a45, (q15_t)0x5a84, (q15_t)0x3a3f, (q15_t)0x5a90, (q15_t)0x3a3a, (q15_t)0x5a9b, (q15_t)0x3a35, - (q15_t)0x5aa7, (q15_t)0x3a30, (q15_t)0x5ab2, (q15_t)0x3a2b, (q15_t)0x5abe, (q15_t)0x3a25, (q15_t)0x5ac9, (q15_t)0x3a20, - (q15_t)0x5ad4, (q15_t)0x3a1b, (q15_t)0x5ae0, (q15_t)0x3a16, (q15_t)0x5aeb, (q15_t)0x3a10, (q15_t)0x5af7, (q15_t)0x3a0b, - (q15_t)0x5b02, (q15_t)0x3a06, (q15_t)0x5b0d, (q15_t)0x3a00, (q15_t)0x5b19, (q15_t)0x39fb, (q15_t)0x5b24, (q15_t)0x39f6, - (q15_t)0x5b30, (q15_t)0x39f0, (q15_t)0x5b3b, (q15_t)0x39eb, (q15_t)0x5b46, (q15_t)0x39e6, (q15_t)0x5b52, (q15_t)0x39e0, - (q15_t)0x5b5d, (q15_t)0x39db, (q15_t)0x5b68, (q15_t)0x39d6, (q15_t)0x5b74, (q15_t)0x39d0, (q15_t)0x5b7f, (q15_t)0x39cb, - (q15_t)0x5b8a, (q15_t)0x39c5, (q15_t)0x5b96, (q15_t)0x39c0, (q15_t)0x5ba1, (q15_t)0x39bb, (q15_t)0x5bac, (q15_t)0x39b5, - (q15_t)0x5bb8, (q15_t)0x39b0, (q15_t)0x5bc3, (q15_t)0x39aa, (q15_t)0x5bce, (q15_t)0x39a5, (q15_t)0x5bda, (q15_t)0x399f, - (q15_t)0x5be5, (q15_t)0x399a, (q15_t)0x5bf0, (q15_t)0x3994, (q15_t)0x5bfc, (q15_t)0x398f, (q15_t)0x5c07, (q15_t)0x3989, - (q15_t)0x5c12, (q15_t)0x3984, (q15_t)0x5c1e, (q15_t)0x397e, (q15_t)0x5c29, (q15_t)0x3979, (q15_t)0x5c34, (q15_t)0x3973, - (q15_t)0x5c3f, (q15_t)0x396e, (q15_t)0x5c4b, (q15_t)0x3968, (q15_t)0x5c56, (q15_t)0x3963, (q15_t)0x5c61, (q15_t)0x395d, - (q15_t)0x5c6c, (q15_t)0x3958, (q15_t)0x5c78, (q15_t)0x3952, (q15_t)0x5c83, (q15_t)0x394c, (q15_t)0x5c8e, (q15_t)0x3947, - (q15_t)0x5c99, (q15_t)0x3941, (q15_t)0x5ca5, (q15_t)0x393b, (q15_t)0x5cb0, (q15_t)0x3936, (q15_t)0x5cbb, (q15_t)0x3930, - (q15_t)0x5cc6, (q15_t)0x392b, (q15_t)0x5cd2, (q15_t)0x3925, (q15_t)0x5cdd, (q15_t)0x391f, (q15_t)0x5ce8, (q15_t)0x391a, - (q15_t)0x5cf3, (q15_t)0x3914, (q15_t)0x5cff, (q15_t)0x390e, (q15_t)0x5d0a, (q15_t)0x3909, (q15_t)0x5d15, (q15_t)0x3903, - (q15_t)0x5d20, (q15_t)0x38fd, (q15_t)0x5d2b, (q15_t)0x38f7, (q15_t)0x5d36, (q15_t)0x38f2, (q15_t)0x5d42, (q15_t)0x38ec, - (q15_t)0x5d4d, (q15_t)0x38e6, (q15_t)0x5d58, (q15_t)0x38e0, (q15_t)0x5d63, (q15_t)0x38db, (q15_t)0x5d6e, (q15_t)0x38d5, - (q15_t)0x5d79, (q15_t)0x38cf, (q15_t)0x5d85, (q15_t)0x38c9, (q15_t)0x5d90, (q15_t)0x38c3, (q15_t)0x5d9b, (q15_t)0x38be, - (q15_t)0x5da6, (q15_t)0x38b8, (q15_t)0x5db1, (q15_t)0x38b2, (q15_t)0x5dbc, (q15_t)0x38ac, (q15_t)0x5dc7, (q15_t)0x38a6, - (q15_t)0x5dd3, (q15_t)0x38a1, (q15_t)0x5dde, (q15_t)0x389b, (q15_t)0x5de9, (q15_t)0x3895, (q15_t)0x5df4, (q15_t)0x388f, - (q15_t)0x5dff, (q15_t)0x3889, (q15_t)0x5e0a, (q15_t)0x3883, (q15_t)0x5e15, (q15_t)0x387d, (q15_t)0x5e20, (q15_t)0x3877, - (q15_t)0x5e2b, (q15_t)0x3871, (q15_t)0x5e36, (q15_t)0x386b, (q15_t)0x5e42, (q15_t)0x3866, (q15_t)0x5e4d, (q15_t)0x3860, - (q15_t)0x5e58, (q15_t)0x385a, (q15_t)0x5e63, (q15_t)0x3854, (q15_t)0x5e6e, (q15_t)0x384e, (q15_t)0x5e79, (q15_t)0x3848, - (q15_t)0x5e84, (q15_t)0x3842, (q15_t)0x5e8f, (q15_t)0x383c, (q15_t)0x5e9a, (q15_t)0x3836, (q15_t)0x5ea5, (q15_t)0x3830, - (q15_t)0x5eb0, (q15_t)0x382a, (q15_t)0x5ebb, (q15_t)0x3824, (q15_t)0x5ec6, (q15_t)0x381e, (q15_t)0x5ed1, (q15_t)0x3818, - (q15_t)0x5edc, (q15_t)0x3812, (q15_t)0x5ee7, (q15_t)0x380b, (q15_t)0x5ef2, (q15_t)0x3805, (q15_t)0x5efd, (q15_t)0x37ff, - (q15_t)0x5f08, (q15_t)0x37f9, (q15_t)0x5f13, (q15_t)0x37f3, (q15_t)0x5f1e, (q15_t)0x37ed, (q15_t)0x5f29, (q15_t)0x37e7, - (q15_t)0x5f34, (q15_t)0x37e1, (q15_t)0x5f3f, (q15_t)0x37db, (q15_t)0x5f4a, (q15_t)0x37d5, (q15_t)0x5f55, (q15_t)0x37ce, - (q15_t)0x5f60, (q15_t)0x37c8, (q15_t)0x5f6b, (q15_t)0x37c2, (q15_t)0x5f76, (q15_t)0x37bc, (q15_t)0x5f81, (q15_t)0x37b6, - (q15_t)0x5f8c, (q15_t)0x37b0, (q15_t)0x5f97, (q15_t)0x37a9, (q15_t)0x5fa2, (q15_t)0x37a3, (q15_t)0x5fac, (q15_t)0x379d, - (q15_t)0x5fb7, (q15_t)0x3797, (q15_t)0x5fc2, (q15_t)0x3790, (q15_t)0x5fcd, (q15_t)0x378a, (q15_t)0x5fd8, (q15_t)0x3784, - (q15_t)0x5fe3, (q15_t)0x377e, (q15_t)0x5fee, (q15_t)0x3777, (q15_t)0x5ff9, (q15_t)0x3771, (q15_t)0x6004, (q15_t)0x376b, - (q15_t)0x600f, (q15_t)0x3765, (q15_t)0x6019, (q15_t)0x375e, (q15_t)0x6024, (q15_t)0x3758, (q15_t)0x602f, (q15_t)0x3752, - (q15_t)0x603a, (q15_t)0x374b, (q15_t)0x6045, (q15_t)0x3745, (q15_t)0x6050, (q15_t)0x373f, (q15_t)0x605b, (q15_t)0x3738, - (q15_t)0x6065, (q15_t)0x3732, (q15_t)0x6070, (q15_t)0x372c, (q15_t)0x607b, (q15_t)0x3725, (q15_t)0x6086, (q15_t)0x371f, - (q15_t)0x6091, (q15_t)0x3718, (q15_t)0x609b, (q15_t)0x3712, (q15_t)0x60a6, (q15_t)0x370c, (q15_t)0x60b1, (q15_t)0x3705, - (q15_t)0x60bc, (q15_t)0x36ff, (q15_t)0x60c7, (q15_t)0x36f8, (q15_t)0x60d1, (q15_t)0x36f2, (q15_t)0x60dc, (q15_t)0x36eb, - (q15_t)0x60e7, (q15_t)0x36e5, (q15_t)0x60f2, (q15_t)0x36df, (q15_t)0x60fd, (q15_t)0x36d8, (q15_t)0x6107, (q15_t)0x36d2, - (q15_t)0x6112, (q15_t)0x36cb, (q15_t)0x611d, (q15_t)0x36c5, (q15_t)0x6128, (q15_t)0x36be, (q15_t)0x6132, (q15_t)0x36b8, - (q15_t)0x613d, (q15_t)0x36b1, (q15_t)0x6148, (q15_t)0x36ab, (q15_t)0x6153, (q15_t)0x36a4, (q15_t)0x615d, (q15_t)0x369d, - (q15_t)0x6168, (q15_t)0x3697, (q15_t)0x6173, (q15_t)0x3690, (q15_t)0x617d, (q15_t)0x368a, (q15_t)0x6188, (q15_t)0x3683, - (q15_t)0x6193, (q15_t)0x367d, (q15_t)0x619e, (q15_t)0x3676, (q15_t)0x61a8, (q15_t)0x366f, (q15_t)0x61b3, (q15_t)0x3669, - (q15_t)0x61be, (q15_t)0x3662, (q15_t)0x61c8, (q15_t)0x365c, (q15_t)0x61d3, (q15_t)0x3655, (q15_t)0x61de, (q15_t)0x364e, - (q15_t)0x61e8, (q15_t)0x3648, (q15_t)0x61f3, (q15_t)0x3641, (q15_t)0x61fe, (q15_t)0x363a, (q15_t)0x6208, (q15_t)0x3634, - (q15_t)0x6213, (q15_t)0x362d, (q15_t)0x621e, (q15_t)0x3626, (q15_t)0x6228, (q15_t)0x3620, (q15_t)0x6233, (q15_t)0x3619, - (q15_t)0x623d, (q15_t)0x3612, (q15_t)0x6248, (q15_t)0x360b, (q15_t)0x6253, (q15_t)0x3605, (q15_t)0x625d, (q15_t)0x35fe, - (q15_t)0x6268, (q15_t)0x35f7, (q15_t)0x6272, (q15_t)0x35f0, (q15_t)0x627d, (q15_t)0x35ea, (q15_t)0x6288, (q15_t)0x35e3, - (q15_t)0x6292, (q15_t)0x35dc, (q15_t)0x629d, (q15_t)0x35d5, (q15_t)0x62a7, (q15_t)0x35ce, (q15_t)0x62b2, (q15_t)0x35c8, - (q15_t)0x62bc, (q15_t)0x35c1, (q15_t)0x62c7, (q15_t)0x35ba, (q15_t)0x62d2, (q15_t)0x35b3, (q15_t)0x62dc, (q15_t)0x35ac, - (q15_t)0x62e7, (q15_t)0x35a5, (q15_t)0x62f1, (q15_t)0x359f, (q15_t)0x62fc, (q15_t)0x3598, (q15_t)0x6306, (q15_t)0x3591, - (q15_t)0x6311, (q15_t)0x358a, (q15_t)0x631b, (q15_t)0x3583, (q15_t)0x6326, (q15_t)0x357c, (q15_t)0x6330, (q15_t)0x3575, - (q15_t)0x633b, (q15_t)0x356e, (q15_t)0x6345, (q15_t)0x3567, (q15_t)0x6350, (q15_t)0x3561, (q15_t)0x635a, (q15_t)0x355a, - (q15_t)0x6365, (q15_t)0x3553, (q15_t)0x636f, (q15_t)0x354c, (q15_t)0x637a, (q15_t)0x3545, (q15_t)0x6384, (q15_t)0x353e, - (q15_t)0x638e, (q15_t)0x3537, (q15_t)0x6399, (q15_t)0x3530, (q15_t)0x63a3, (q15_t)0x3529, (q15_t)0x63ae, (q15_t)0x3522, - (q15_t)0x63b8, (q15_t)0x351b, (q15_t)0x63c3, (q15_t)0x3514, (q15_t)0x63cd, (q15_t)0x350d, (q15_t)0x63d7, (q15_t)0x3506, - (q15_t)0x63e2, (q15_t)0x34ff, (q15_t)0x63ec, (q15_t)0x34f8, (q15_t)0x63f7, (q15_t)0x34f1, (q15_t)0x6401, (q15_t)0x34ea, - (q15_t)0x640b, (q15_t)0x34e2, (q15_t)0x6416, (q15_t)0x34db, (q15_t)0x6420, (q15_t)0x34d4, (q15_t)0x642b, (q15_t)0x34cd, - (q15_t)0x6435, (q15_t)0x34c6, (q15_t)0x643f, (q15_t)0x34bf, (q15_t)0x644a, (q15_t)0x34b8, (q15_t)0x6454, (q15_t)0x34b1, - (q15_t)0x645e, (q15_t)0x34aa, (q15_t)0x6469, (q15_t)0x34a2, (q15_t)0x6473, (q15_t)0x349b, (q15_t)0x647d, (q15_t)0x3494, - (q15_t)0x6488, (q15_t)0x348d, (q15_t)0x6492, (q15_t)0x3486, (q15_t)0x649c, (q15_t)0x347f, (q15_t)0x64a7, (q15_t)0x3477, - (q15_t)0x64b1, (q15_t)0x3470, (q15_t)0x64bb, (q15_t)0x3469, (q15_t)0x64c5, (q15_t)0x3462, (q15_t)0x64d0, (q15_t)0x345b, - (q15_t)0x64da, (q15_t)0x3453, (q15_t)0x64e4, (q15_t)0x344c, (q15_t)0x64ef, (q15_t)0x3445, (q15_t)0x64f9, (q15_t)0x343e, - (q15_t)0x6503, (q15_t)0x3436, (q15_t)0x650d, (q15_t)0x342f, (q15_t)0x6518, (q15_t)0x3428, (q15_t)0x6522, (q15_t)0x3420, - (q15_t)0x652c, (q15_t)0x3419, (q15_t)0x6536, (q15_t)0x3412, (q15_t)0x6541, (q15_t)0x340b, (q15_t)0x654b, (q15_t)0x3403, - (q15_t)0x6555, (q15_t)0x33fc, (q15_t)0x655f, (q15_t)0x33f5, (q15_t)0x6569, (q15_t)0x33ed, (q15_t)0x6574, (q15_t)0x33e6, - (q15_t)0x657e, (q15_t)0x33df, (q15_t)0x6588, (q15_t)0x33d7, (q15_t)0x6592, (q15_t)0x33d0, (q15_t)0x659c, (q15_t)0x33c8, - (q15_t)0x65a6, (q15_t)0x33c1, (q15_t)0x65b1, (q15_t)0x33ba, (q15_t)0x65bb, (q15_t)0x33b2, (q15_t)0x65c5, (q15_t)0x33ab, - (q15_t)0x65cf, (q15_t)0x33a3, (q15_t)0x65d9, (q15_t)0x339c, (q15_t)0x65e3, (q15_t)0x3395, (q15_t)0x65ed, (q15_t)0x338d, - (q15_t)0x65f8, (q15_t)0x3386, (q15_t)0x6602, (q15_t)0x337e, (q15_t)0x660c, (q15_t)0x3377, (q15_t)0x6616, (q15_t)0x336f, - (q15_t)0x6620, (q15_t)0x3368, (q15_t)0x662a, (q15_t)0x3360, (q15_t)0x6634, (q15_t)0x3359, (q15_t)0x663e, (q15_t)0x3351, - (q15_t)0x6648, (q15_t)0x334a, (q15_t)0x6652, (q15_t)0x3342, (q15_t)0x665c, (q15_t)0x333b, (q15_t)0x6666, (q15_t)0x3333, - (q15_t)0x6671, (q15_t)0x332c, (q15_t)0x667b, (q15_t)0x3324, (q15_t)0x6685, (q15_t)0x331d, (q15_t)0x668f, (q15_t)0x3315, - (q15_t)0x6699, (q15_t)0x330d, (q15_t)0x66a3, (q15_t)0x3306, (q15_t)0x66ad, (q15_t)0x32fe, (q15_t)0x66b7, (q15_t)0x32f7, - (q15_t)0x66c1, (q15_t)0x32ef, (q15_t)0x66cb, (q15_t)0x32e7, (q15_t)0x66d5, (q15_t)0x32e0, (q15_t)0x66df, (q15_t)0x32d8, - (q15_t)0x66e9, (q15_t)0x32d0, (q15_t)0x66f3, (q15_t)0x32c9, (q15_t)0x66fd, (q15_t)0x32c1, (q15_t)0x6707, (q15_t)0x32ba, - (q15_t)0x6711, (q15_t)0x32b2, (q15_t)0x671a, (q15_t)0x32aa, (q15_t)0x6724, (q15_t)0x32a3, (q15_t)0x672e, (q15_t)0x329b, - (q15_t)0x6738, (q15_t)0x3293, (q15_t)0x6742, (q15_t)0x328b, (q15_t)0x674c, (q15_t)0x3284, (q15_t)0x6756, (q15_t)0x327c, - (q15_t)0x6760, (q15_t)0x3274, (q15_t)0x676a, (q15_t)0x326d, (q15_t)0x6774, (q15_t)0x3265, (q15_t)0x677e, (q15_t)0x325d, - (q15_t)0x6788, (q15_t)0x3255, (q15_t)0x6791, (q15_t)0x324e, (q15_t)0x679b, (q15_t)0x3246, (q15_t)0x67a5, (q15_t)0x323e, - (q15_t)0x67af, (q15_t)0x3236, (q15_t)0x67b9, (q15_t)0x322e, (q15_t)0x67c3, (q15_t)0x3227, (q15_t)0x67cd, (q15_t)0x321f, - (q15_t)0x67d6, (q15_t)0x3217, (q15_t)0x67e0, (q15_t)0x320f, (q15_t)0x67ea, (q15_t)0x3207, (q15_t)0x67f4, (q15_t)0x31ff, - (q15_t)0x67fe, (q15_t)0x31f8, (q15_t)0x6808, (q15_t)0x31f0, (q15_t)0x6811, (q15_t)0x31e8, (q15_t)0x681b, (q15_t)0x31e0, - (q15_t)0x6825, (q15_t)0x31d8, (q15_t)0x682f, (q15_t)0x31d0, (q15_t)0x6838, (q15_t)0x31c8, (q15_t)0x6842, (q15_t)0x31c0, - (q15_t)0x684c, (q15_t)0x31b9, (q15_t)0x6856, (q15_t)0x31b1, (q15_t)0x6860, (q15_t)0x31a9, (q15_t)0x6869, (q15_t)0x31a1, - (q15_t)0x6873, (q15_t)0x3199, (q15_t)0x687d, (q15_t)0x3191, (q15_t)0x6886, (q15_t)0x3189, (q15_t)0x6890, (q15_t)0x3181, - (q15_t)0x689a, (q15_t)0x3179, (q15_t)0x68a4, (q15_t)0x3171, (q15_t)0x68ad, (q15_t)0x3169, (q15_t)0x68b7, (q15_t)0x3161, - (q15_t)0x68c1, (q15_t)0x3159, (q15_t)0x68ca, (q15_t)0x3151, (q15_t)0x68d4, (q15_t)0x3149, (q15_t)0x68de, (q15_t)0x3141, - (q15_t)0x68e7, (q15_t)0x3139, (q15_t)0x68f1, (q15_t)0x3131, (q15_t)0x68fb, (q15_t)0x3129, (q15_t)0x6904, (q15_t)0x3121, - (q15_t)0x690e, (q15_t)0x3119, (q15_t)0x6918, (q15_t)0x3111, (q15_t)0x6921, (q15_t)0x3109, (q15_t)0x692b, (q15_t)0x3101, - (q15_t)0x6935, (q15_t)0x30f9, (q15_t)0x693e, (q15_t)0x30f0, (q15_t)0x6948, (q15_t)0x30e8, (q15_t)0x6951, (q15_t)0x30e0, - (q15_t)0x695b, (q15_t)0x30d8, (q15_t)0x6965, (q15_t)0x30d0, (q15_t)0x696e, (q15_t)0x30c8, (q15_t)0x6978, (q15_t)0x30c0, - (q15_t)0x6981, (q15_t)0x30b8, (q15_t)0x698b, (q15_t)0x30af, (q15_t)0x6994, (q15_t)0x30a7, (q15_t)0x699e, (q15_t)0x309f, - (q15_t)0x69a7, (q15_t)0x3097, (q15_t)0x69b1, (q15_t)0x308f, (q15_t)0x69bb, (q15_t)0x3087, (q15_t)0x69c4, (q15_t)0x307e, - (q15_t)0x69ce, (q15_t)0x3076, (q15_t)0x69d7, (q15_t)0x306e, (q15_t)0x69e1, (q15_t)0x3066, (q15_t)0x69ea, (q15_t)0x305d, - (q15_t)0x69f4, (q15_t)0x3055, (q15_t)0x69fd, (q15_t)0x304d, (q15_t)0x6a07, (q15_t)0x3045, (q15_t)0x6a10, (q15_t)0x303c, - (q15_t)0x6a1a, (q15_t)0x3034, (q15_t)0x6a23, (q15_t)0x302c, (q15_t)0x6a2c, (q15_t)0x3024, (q15_t)0x6a36, (q15_t)0x301b, - (q15_t)0x6a3f, (q15_t)0x3013, (q15_t)0x6a49, (q15_t)0x300b, (q15_t)0x6a52, (q15_t)0x3002, (q15_t)0x6a5c, (q15_t)0x2ffa, - (q15_t)0x6a65, (q15_t)0x2ff2, (q15_t)0x6a6e, (q15_t)0x2fea, (q15_t)0x6a78, (q15_t)0x2fe1, (q15_t)0x6a81, (q15_t)0x2fd9, - (q15_t)0x6a8b, (q15_t)0x2fd0, (q15_t)0x6a94, (q15_t)0x2fc8, (q15_t)0x6a9d, (q15_t)0x2fc0, (q15_t)0x6aa7, (q15_t)0x2fb7, - (q15_t)0x6ab0, (q15_t)0x2faf, (q15_t)0x6ab9, (q15_t)0x2fa7, (q15_t)0x6ac3, (q15_t)0x2f9e, (q15_t)0x6acc, (q15_t)0x2f96, - (q15_t)0x6ad6, (q15_t)0x2f8d, (q15_t)0x6adf, (q15_t)0x2f85, (q15_t)0x6ae8, (q15_t)0x2f7d, (q15_t)0x6af2, (q15_t)0x2f74, - (q15_t)0x6afb, (q15_t)0x2f6c, (q15_t)0x6b04, (q15_t)0x2f63, (q15_t)0x6b0d, (q15_t)0x2f5b, (q15_t)0x6b17, (q15_t)0x2f52, - (q15_t)0x6b20, (q15_t)0x2f4a, (q15_t)0x6b29, (q15_t)0x2f41, (q15_t)0x6b33, (q15_t)0x2f39, (q15_t)0x6b3c, (q15_t)0x2f30, - (q15_t)0x6b45, (q15_t)0x2f28, (q15_t)0x6b4e, (q15_t)0x2f20, (q15_t)0x6b58, (q15_t)0x2f17, (q15_t)0x6b61, (q15_t)0x2f0e, - (q15_t)0x6b6a, (q15_t)0x2f06, (q15_t)0x6b73, (q15_t)0x2efd, (q15_t)0x6b7d, (q15_t)0x2ef5, (q15_t)0x6b86, (q15_t)0x2eec, - (q15_t)0x6b8f, (q15_t)0x2ee4, (q15_t)0x6b98, (q15_t)0x2edb, (q15_t)0x6ba1, (q15_t)0x2ed3, (q15_t)0x6bab, (q15_t)0x2eca, - (q15_t)0x6bb4, (q15_t)0x2ec2, (q15_t)0x6bbd, (q15_t)0x2eb9, (q15_t)0x6bc6, (q15_t)0x2eb0, (q15_t)0x6bcf, (q15_t)0x2ea8, - (q15_t)0x6bd8, (q15_t)0x2e9f, (q15_t)0x6be2, (q15_t)0x2e97, (q15_t)0x6beb, (q15_t)0x2e8e, (q15_t)0x6bf4, (q15_t)0x2e85, - (q15_t)0x6bfd, (q15_t)0x2e7d, (q15_t)0x6c06, (q15_t)0x2e74, (q15_t)0x6c0f, (q15_t)0x2e6b, (q15_t)0x6c18, (q15_t)0x2e63, - (q15_t)0x6c21, (q15_t)0x2e5a, (q15_t)0x6c2b, (q15_t)0x2e51, (q15_t)0x6c34, (q15_t)0x2e49, (q15_t)0x6c3d, (q15_t)0x2e40, - (q15_t)0x6c46, (q15_t)0x2e37, (q15_t)0x6c4f, (q15_t)0x2e2f, (q15_t)0x6c58, (q15_t)0x2e26, (q15_t)0x6c61, (q15_t)0x2e1d, - (q15_t)0x6c6a, (q15_t)0x2e15, (q15_t)0x6c73, (q15_t)0x2e0c, (q15_t)0x6c7c, (q15_t)0x2e03, (q15_t)0x6c85, (q15_t)0x2dfa, - (q15_t)0x6c8e, (q15_t)0x2df2, (q15_t)0x6c97, (q15_t)0x2de9, (q15_t)0x6ca0, (q15_t)0x2de0, (q15_t)0x6ca9, (q15_t)0x2dd7, - (q15_t)0x6cb2, (q15_t)0x2dcf, (q15_t)0x6cbb, (q15_t)0x2dc6, (q15_t)0x6cc4, (q15_t)0x2dbd, (q15_t)0x6ccd, (q15_t)0x2db4, - (q15_t)0x6cd6, (q15_t)0x2dab, (q15_t)0x6cdf, (q15_t)0x2da3, (q15_t)0x6ce8, (q15_t)0x2d9a, (q15_t)0x6cf1, (q15_t)0x2d91, - (q15_t)0x6cfa, (q15_t)0x2d88, (q15_t)0x6d03, (q15_t)0x2d7f, (q15_t)0x6d0c, (q15_t)0x2d76, (q15_t)0x6d15, (q15_t)0x2d6e, - (q15_t)0x6d1e, (q15_t)0x2d65, (q15_t)0x6d27, (q15_t)0x2d5c, (q15_t)0x6d2f, (q15_t)0x2d53, (q15_t)0x6d38, (q15_t)0x2d4a, - (q15_t)0x6d41, (q15_t)0x2d41, (q15_t)0x6d4a, (q15_t)0x2d38, (q15_t)0x6d53, (q15_t)0x2d2f, (q15_t)0x6d5c, (q15_t)0x2d27, - (q15_t)0x6d65, (q15_t)0x2d1e, (q15_t)0x6d6e, (q15_t)0x2d15, (q15_t)0x6d76, (q15_t)0x2d0c, (q15_t)0x6d7f, (q15_t)0x2d03, - (q15_t)0x6d88, (q15_t)0x2cfa, (q15_t)0x6d91, (q15_t)0x2cf1, (q15_t)0x6d9a, (q15_t)0x2ce8, (q15_t)0x6da3, (q15_t)0x2cdf, - (q15_t)0x6dab, (q15_t)0x2cd6, (q15_t)0x6db4, (q15_t)0x2ccd, (q15_t)0x6dbd, (q15_t)0x2cc4, (q15_t)0x6dc6, (q15_t)0x2cbb, - (q15_t)0x6dcf, (q15_t)0x2cb2, (q15_t)0x6dd7, (q15_t)0x2ca9, (q15_t)0x6de0, (q15_t)0x2ca0, (q15_t)0x6de9, (q15_t)0x2c97, - (q15_t)0x6df2, (q15_t)0x2c8e, (q15_t)0x6dfa, (q15_t)0x2c85, (q15_t)0x6e03, (q15_t)0x2c7c, (q15_t)0x6e0c, (q15_t)0x2c73, - (q15_t)0x6e15, (q15_t)0x2c6a, (q15_t)0x6e1d, (q15_t)0x2c61, (q15_t)0x6e26, (q15_t)0x2c58, (q15_t)0x6e2f, (q15_t)0x2c4f, - (q15_t)0x6e37, (q15_t)0x2c46, (q15_t)0x6e40, (q15_t)0x2c3d, (q15_t)0x6e49, (q15_t)0x2c34, (q15_t)0x6e51, (q15_t)0x2c2b, - (q15_t)0x6e5a, (q15_t)0x2c21, (q15_t)0x6e63, (q15_t)0x2c18, (q15_t)0x6e6b, (q15_t)0x2c0f, (q15_t)0x6e74, (q15_t)0x2c06, - (q15_t)0x6e7d, (q15_t)0x2bfd, (q15_t)0x6e85, (q15_t)0x2bf4, (q15_t)0x6e8e, (q15_t)0x2beb, (q15_t)0x6e97, (q15_t)0x2be2, - (q15_t)0x6e9f, (q15_t)0x2bd8, (q15_t)0x6ea8, (q15_t)0x2bcf, (q15_t)0x6eb0, (q15_t)0x2bc6, (q15_t)0x6eb9, (q15_t)0x2bbd, - (q15_t)0x6ec2, (q15_t)0x2bb4, (q15_t)0x6eca, (q15_t)0x2bab, (q15_t)0x6ed3, (q15_t)0x2ba1, (q15_t)0x6edb, (q15_t)0x2b98, - (q15_t)0x6ee4, (q15_t)0x2b8f, (q15_t)0x6eec, (q15_t)0x2b86, (q15_t)0x6ef5, (q15_t)0x2b7d, (q15_t)0x6efd, (q15_t)0x2b73, - (q15_t)0x6f06, (q15_t)0x2b6a, (q15_t)0x6f0e, (q15_t)0x2b61, (q15_t)0x6f17, (q15_t)0x2b58, (q15_t)0x6f20, (q15_t)0x2b4e, - (q15_t)0x6f28, (q15_t)0x2b45, (q15_t)0x6f30, (q15_t)0x2b3c, (q15_t)0x6f39, (q15_t)0x2b33, (q15_t)0x6f41, (q15_t)0x2b29, - (q15_t)0x6f4a, (q15_t)0x2b20, (q15_t)0x6f52, (q15_t)0x2b17, (q15_t)0x6f5b, (q15_t)0x2b0d, (q15_t)0x6f63, (q15_t)0x2b04, - (q15_t)0x6f6c, (q15_t)0x2afb, (q15_t)0x6f74, (q15_t)0x2af2, (q15_t)0x6f7d, (q15_t)0x2ae8, (q15_t)0x6f85, (q15_t)0x2adf, - (q15_t)0x6f8d, (q15_t)0x2ad6, (q15_t)0x6f96, (q15_t)0x2acc, (q15_t)0x6f9e, (q15_t)0x2ac3, (q15_t)0x6fa7, (q15_t)0x2ab9, - (q15_t)0x6faf, (q15_t)0x2ab0, (q15_t)0x6fb7, (q15_t)0x2aa7, (q15_t)0x6fc0, (q15_t)0x2a9d, (q15_t)0x6fc8, (q15_t)0x2a94, - (q15_t)0x6fd0, (q15_t)0x2a8b, (q15_t)0x6fd9, (q15_t)0x2a81, (q15_t)0x6fe1, (q15_t)0x2a78, (q15_t)0x6fea, (q15_t)0x2a6e, - (q15_t)0x6ff2, (q15_t)0x2a65, (q15_t)0x6ffa, (q15_t)0x2a5c, (q15_t)0x7002, (q15_t)0x2a52, (q15_t)0x700b, (q15_t)0x2a49, - (q15_t)0x7013, (q15_t)0x2a3f, (q15_t)0x701b, (q15_t)0x2a36, (q15_t)0x7024, (q15_t)0x2a2c, (q15_t)0x702c, (q15_t)0x2a23, - (q15_t)0x7034, (q15_t)0x2a1a, (q15_t)0x703c, (q15_t)0x2a10, (q15_t)0x7045, (q15_t)0x2a07, (q15_t)0x704d, (q15_t)0x29fd, - (q15_t)0x7055, (q15_t)0x29f4, (q15_t)0x705d, (q15_t)0x29ea, (q15_t)0x7066, (q15_t)0x29e1, (q15_t)0x706e, (q15_t)0x29d7, - (q15_t)0x7076, (q15_t)0x29ce, (q15_t)0x707e, (q15_t)0x29c4, (q15_t)0x7087, (q15_t)0x29bb, (q15_t)0x708f, (q15_t)0x29b1, - (q15_t)0x7097, (q15_t)0x29a7, (q15_t)0x709f, (q15_t)0x299e, (q15_t)0x70a7, (q15_t)0x2994, (q15_t)0x70af, (q15_t)0x298b, - (q15_t)0x70b8, (q15_t)0x2981, (q15_t)0x70c0, (q15_t)0x2978, (q15_t)0x70c8, (q15_t)0x296e, (q15_t)0x70d0, (q15_t)0x2965, - (q15_t)0x70d8, (q15_t)0x295b, (q15_t)0x70e0, (q15_t)0x2951, (q15_t)0x70e8, (q15_t)0x2948, (q15_t)0x70f0, (q15_t)0x293e, - (q15_t)0x70f9, (q15_t)0x2935, (q15_t)0x7101, (q15_t)0x292b, (q15_t)0x7109, (q15_t)0x2921, (q15_t)0x7111, (q15_t)0x2918, - (q15_t)0x7119, (q15_t)0x290e, (q15_t)0x7121, (q15_t)0x2904, (q15_t)0x7129, (q15_t)0x28fb, (q15_t)0x7131, (q15_t)0x28f1, - (q15_t)0x7139, (q15_t)0x28e7, (q15_t)0x7141, (q15_t)0x28de, (q15_t)0x7149, (q15_t)0x28d4, (q15_t)0x7151, (q15_t)0x28ca, - (q15_t)0x7159, (q15_t)0x28c1, (q15_t)0x7161, (q15_t)0x28b7, (q15_t)0x7169, (q15_t)0x28ad, (q15_t)0x7171, (q15_t)0x28a4, - (q15_t)0x7179, (q15_t)0x289a, (q15_t)0x7181, (q15_t)0x2890, (q15_t)0x7189, (q15_t)0x2886, (q15_t)0x7191, (q15_t)0x287d, - (q15_t)0x7199, (q15_t)0x2873, (q15_t)0x71a1, (q15_t)0x2869, (q15_t)0x71a9, (q15_t)0x2860, (q15_t)0x71b1, (q15_t)0x2856, - (q15_t)0x71b9, (q15_t)0x284c, (q15_t)0x71c0, (q15_t)0x2842, (q15_t)0x71c8, (q15_t)0x2838, (q15_t)0x71d0, (q15_t)0x282f, - (q15_t)0x71d8, (q15_t)0x2825, (q15_t)0x71e0, (q15_t)0x281b, (q15_t)0x71e8, (q15_t)0x2811, (q15_t)0x71f0, (q15_t)0x2808, - (q15_t)0x71f8, (q15_t)0x27fe, (q15_t)0x71ff, (q15_t)0x27f4, (q15_t)0x7207, (q15_t)0x27ea, (q15_t)0x720f, (q15_t)0x27e0, - (q15_t)0x7217, (q15_t)0x27d6, (q15_t)0x721f, (q15_t)0x27cd, (q15_t)0x7227, (q15_t)0x27c3, (q15_t)0x722e, (q15_t)0x27b9, - (q15_t)0x7236, (q15_t)0x27af, (q15_t)0x723e, (q15_t)0x27a5, (q15_t)0x7246, (q15_t)0x279b, (q15_t)0x724e, (q15_t)0x2791, - (q15_t)0x7255, (q15_t)0x2788, (q15_t)0x725d, (q15_t)0x277e, (q15_t)0x7265, (q15_t)0x2774, (q15_t)0x726d, (q15_t)0x276a, - (q15_t)0x7274, (q15_t)0x2760, (q15_t)0x727c, (q15_t)0x2756, (q15_t)0x7284, (q15_t)0x274c, (q15_t)0x728b, (q15_t)0x2742, - (q15_t)0x7293, (q15_t)0x2738, (q15_t)0x729b, (q15_t)0x272e, (q15_t)0x72a3, (q15_t)0x2724, (q15_t)0x72aa, (q15_t)0x271a, - (q15_t)0x72b2, (q15_t)0x2711, (q15_t)0x72ba, (q15_t)0x2707, (q15_t)0x72c1, (q15_t)0x26fd, (q15_t)0x72c9, (q15_t)0x26f3, - (q15_t)0x72d0, (q15_t)0x26e9, (q15_t)0x72d8, (q15_t)0x26df, (q15_t)0x72e0, (q15_t)0x26d5, (q15_t)0x72e7, (q15_t)0x26cb, - (q15_t)0x72ef, (q15_t)0x26c1, (q15_t)0x72f7, (q15_t)0x26b7, (q15_t)0x72fe, (q15_t)0x26ad, (q15_t)0x7306, (q15_t)0x26a3, - (q15_t)0x730d, (q15_t)0x2699, (q15_t)0x7315, (q15_t)0x268f, (q15_t)0x731d, (q15_t)0x2685, (q15_t)0x7324, (q15_t)0x267b, - (q15_t)0x732c, (q15_t)0x2671, (q15_t)0x7333, (q15_t)0x2666, (q15_t)0x733b, (q15_t)0x265c, (q15_t)0x7342, (q15_t)0x2652, - (q15_t)0x734a, (q15_t)0x2648, (q15_t)0x7351, (q15_t)0x263e, (q15_t)0x7359, (q15_t)0x2634, (q15_t)0x7360, (q15_t)0x262a, - (q15_t)0x7368, (q15_t)0x2620, (q15_t)0x736f, (q15_t)0x2616, (q15_t)0x7377, (q15_t)0x260c, (q15_t)0x737e, (q15_t)0x2602, - (q15_t)0x7386, (q15_t)0x25f8, (q15_t)0x738d, (q15_t)0x25ed, (q15_t)0x7395, (q15_t)0x25e3, (q15_t)0x739c, (q15_t)0x25d9, - (q15_t)0x73a3, (q15_t)0x25cf, (q15_t)0x73ab, (q15_t)0x25c5, (q15_t)0x73b2, (q15_t)0x25bb, (q15_t)0x73ba, (q15_t)0x25b1, - (q15_t)0x73c1, (q15_t)0x25a6, (q15_t)0x73c8, (q15_t)0x259c, (q15_t)0x73d0, (q15_t)0x2592, (q15_t)0x73d7, (q15_t)0x2588, - (q15_t)0x73df, (q15_t)0x257e, (q15_t)0x73e6, (q15_t)0x2574, (q15_t)0x73ed, (q15_t)0x2569, (q15_t)0x73f5, (q15_t)0x255f, - (q15_t)0x73fc, (q15_t)0x2555, (q15_t)0x7403, (q15_t)0x254b, (q15_t)0x740b, (q15_t)0x2541, (q15_t)0x7412, (q15_t)0x2536, - (q15_t)0x7419, (q15_t)0x252c, (q15_t)0x7420, (q15_t)0x2522, (q15_t)0x7428, (q15_t)0x2518, (q15_t)0x742f, (q15_t)0x250d, - (q15_t)0x7436, (q15_t)0x2503, (q15_t)0x743e, (q15_t)0x24f9, (q15_t)0x7445, (q15_t)0x24ef, (q15_t)0x744c, (q15_t)0x24e4, - (q15_t)0x7453, (q15_t)0x24da, (q15_t)0x745b, (q15_t)0x24d0, (q15_t)0x7462, (q15_t)0x24c5, (q15_t)0x7469, (q15_t)0x24bb, - (q15_t)0x7470, (q15_t)0x24b1, (q15_t)0x7477, (q15_t)0x24a7, (q15_t)0x747f, (q15_t)0x249c, (q15_t)0x7486, (q15_t)0x2492, - (q15_t)0x748d, (q15_t)0x2488, (q15_t)0x7494, (q15_t)0x247d, (q15_t)0x749b, (q15_t)0x2473, (q15_t)0x74a2, (q15_t)0x2469, - (q15_t)0x74aa, (q15_t)0x245e, (q15_t)0x74b1, (q15_t)0x2454, (q15_t)0x74b8, (q15_t)0x244a, (q15_t)0x74bf, (q15_t)0x243f, - (q15_t)0x74c6, (q15_t)0x2435, (q15_t)0x74cd, (q15_t)0x242b, (q15_t)0x74d4, (q15_t)0x2420, (q15_t)0x74db, (q15_t)0x2416, - (q15_t)0x74e2, (q15_t)0x240b, (q15_t)0x74ea, (q15_t)0x2401, (q15_t)0x74f1, (q15_t)0x23f7, (q15_t)0x74f8, (q15_t)0x23ec, - (q15_t)0x74ff, (q15_t)0x23e2, (q15_t)0x7506, (q15_t)0x23d7, (q15_t)0x750d, (q15_t)0x23cd, (q15_t)0x7514, (q15_t)0x23c3, - (q15_t)0x751b, (q15_t)0x23b8, (q15_t)0x7522, (q15_t)0x23ae, (q15_t)0x7529, (q15_t)0x23a3, (q15_t)0x7530, (q15_t)0x2399, - (q15_t)0x7537, (q15_t)0x238e, (q15_t)0x753e, (q15_t)0x2384, (q15_t)0x7545, (q15_t)0x237a, (q15_t)0x754c, (q15_t)0x236f, - (q15_t)0x7553, (q15_t)0x2365, (q15_t)0x755a, (q15_t)0x235a, (q15_t)0x7561, (q15_t)0x2350, (q15_t)0x7567, (q15_t)0x2345, - (q15_t)0x756e, (q15_t)0x233b, (q15_t)0x7575, (q15_t)0x2330, (q15_t)0x757c, (q15_t)0x2326, (q15_t)0x7583, (q15_t)0x231b, - (q15_t)0x758a, (q15_t)0x2311, (q15_t)0x7591, (q15_t)0x2306, (q15_t)0x7598, (q15_t)0x22fc, (q15_t)0x759f, (q15_t)0x22f1, - (q15_t)0x75a5, (q15_t)0x22e7, (q15_t)0x75ac, (q15_t)0x22dc, (q15_t)0x75b3, (q15_t)0x22d2, (q15_t)0x75ba, (q15_t)0x22c7, - (q15_t)0x75c1, (q15_t)0x22bc, (q15_t)0x75c8, (q15_t)0x22b2, (q15_t)0x75ce, (q15_t)0x22a7, (q15_t)0x75d5, (q15_t)0x229d, - (q15_t)0x75dc, (q15_t)0x2292, (q15_t)0x75e3, (q15_t)0x2288, (q15_t)0x75ea, (q15_t)0x227d, (q15_t)0x75f0, (q15_t)0x2272, - (q15_t)0x75f7, (q15_t)0x2268, (q15_t)0x75fe, (q15_t)0x225d, (q15_t)0x7605, (q15_t)0x2253, (q15_t)0x760b, (q15_t)0x2248, - (q15_t)0x7612, (q15_t)0x223d, (q15_t)0x7619, (q15_t)0x2233, (q15_t)0x7620, (q15_t)0x2228, (q15_t)0x7626, (q15_t)0x221e, - (q15_t)0x762d, (q15_t)0x2213, (q15_t)0x7634, (q15_t)0x2208, (q15_t)0x763a, (q15_t)0x21fe, (q15_t)0x7641, (q15_t)0x21f3, - (q15_t)0x7648, (q15_t)0x21e8, (q15_t)0x764e, (q15_t)0x21de, (q15_t)0x7655, (q15_t)0x21d3, (q15_t)0x765c, (q15_t)0x21c8, - (q15_t)0x7662, (q15_t)0x21be, (q15_t)0x7669, (q15_t)0x21b3, (q15_t)0x766f, (q15_t)0x21a8, (q15_t)0x7676, (q15_t)0x219e, - (q15_t)0x767d, (q15_t)0x2193, (q15_t)0x7683, (q15_t)0x2188, (q15_t)0x768a, (q15_t)0x217d, (q15_t)0x7690, (q15_t)0x2173, - (q15_t)0x7697, (q15_t)0x2168, (q15_t)0x769d, (q15_t)0x215d, (q15_t)0x76a4, (q15_t)0x2153, (q15_t)0x76ab, (q15_t)0x2148, - (q15_t)0x76b1, (q15_t)0x213d, (q15_t)0x76b8, (q15_t)0x2132, (q15_t)0x76be, (q15_t)0x2128, (q15_t)0x76c5, (q15_t)0x211d, - (q15_t)0x76cb, (q15_t)0x2112, (q15_t)0x76d2, (q15_t)0x2107, (q15_t)0x76d8, (q15_t)0x20fd, (q15_t)0x76df, (q15_t)0x20f2, - (q15_t)0x76e5, (q15_t)0x20e7, (q15_t)0x76eb, (q15_t)0x20dc, (q15_t)0x76f2, (q15_t)0x20d1, (q15_t)0x76f8, (q15_t)0x20c7, - (q15_t)0x76ff, (q15_t)0x20bc, (q15_t)0x7705, (q15_t)0x20b1, (q15_t)0x770c, (q15_t)0x20a6, (q15_t)0x7712, (q15_t)0x209b, - (q15_t)0x7718, (q15_t)0x2091, (q15_t)0x771f, (q15_t)0x2086, (q15_t)0x7725, (q15_t)0x207b, (q15_t)0x772c, (q15_t)0x2070, - (q15_t)0x7732, (q15_t)0x2065, (q15_t)0x7738, (q15_t)0x205b, (q15_t)0x773f, (q15_t)0x2050, (q15_t)0x7745, (q15_t)0x2045, - (q15_t)0x774b, (q15_t)0x203a, (q15_t)0x7752, (q15_t)0x202f, (q15_t)0x7758, (q15_t)0x2024, (q15_t)0x775e, (q15_t)0x2019, - (q15_t)0x7765, (q15_t)0x200f, (q15_t)0x776b, (q15_t)0x2004, (q15_t)0x7771, (q15_t)0x1ff9, (q15_t)0x7777, (q15_t)0x1fee, - (q15_t)0x777e, (q15_t)0x1fe3, (q15_t)0x7784, (q15_t)0x1fd8, (q15_t)0x778a, (q15_t)0x1fcd, (q15_t)0x7790, (q15_t)0x1fc2, - (q15_t)0x7797, (q15_t)0x1fb7, (q15_t)0x779d, (q15_t)0x1fac, (q15_t)0x77a3, (q15_t)0x1fa2, (q15_t)0x77a9, (q15_t)0x1f97, - (q15_t)0x77b0, (q15_t)0x1f8c, (q15_t)0x77b6, (q15_t)0x1f81, (q15_t)0x77bc, (q15_t)0x1f76, (q15_t)0x77c2, (q15_t)0x1f6b, - (q15_t)0x77c8, (q15_t)0x1f60, (q15_t)0x77ce, (q15_t)0x1f55, (q15_t)0x77d5, (q15_t)0x1f4a, (q15_t)0x77db, (q15_t)0x1f3f, - (q15_t)0x77e1, (q15_t)0x1f34, (q15_t)0x77e7, (q15_t)0x1f29, (q15_t)0x77ed, (q15_t)0x1f1e, (q15_t)0x77f3, (q15_t)0x1f13, - (q15_t)0x77f9, (q15_t)0x1f08, (q15_t)0x77ff, (q15_t)0x1efd, (q15_t)0x7805, (q15_t)0x1ef2, (q15_t)0x780b, (q15_t)0x1ee7, - (q15_t)0x7812, (q15_t)0x1edc, (q15_t)0x7818, (q15_t)0x1ed1, (q15_t)0x781e, (q15_t)0x1ec6, (q15_t)0x7824, (q15_t)0x1ebb, - (q15_t)0x782a, (q15_t)0x1eb0, (q15_t)0x7830, (q15_t)0x1ea5, (q15_t)0x7836, (q15_t)0x1e9a, (q15_t)0x783c, (q15_t)0x1e8f, - (q15_t)0x7842, (q15_t)0x1e84, (q15_t)0x7848, (q15_t)0x1e79, (q15_t)0x784e, (q15_t)0x1e6e, (q15_t)0x7854, (q15_t)0x1e63, - (q15_t)0x785a, (q15_t)0x1e58, (q15_t)0x7860, (q15_t)0x1e4d, (q15_t)0x7866, (q15_t)0x1e42, (q15_t)0x786b, (q15_t)0x1e36, - (q15_t)0x7871, (q15_t)0x1e2b, (q15_t)0x7877, (q15_t)0x1e20, (q15_t)0x787d, (q15_t)0x1e15, (q15_t)0x7883, (q15_t)0x1e0a, - (q15_t)0x7889, (q15_t)0x1dff, (q15_t)0x788f, (q15_t)0x1df4, (q15_t)0x7895, (q15_t)0x1de9, (q15_t)0x789b, (q15_t)0x1dde, - (q15_t)0x78a1, (q15_t)0x1dd3, (q15_t)0x78a6, (q15_t)0x1dc7, (q15_t)0x78ac, (q15_t)0x1dbc, (q15_t)0x78b2, (q15_t)0x1db1, - (q15_t)0x78b8, (q15_t)0x1da6, (q15_t)0x78be, (q15_t)0x1d9b, (q15_t)0x78c3, (q15_t)0x1d90, (q15_t)0x78c9, (q15_t)0x1d85, - (q15_t)0x78cf, (q15_t)0x1d79, (q15_t)0x78d5, (q15_t)0x1d6e, (q15_t)0x78db, (q15_t)0x1d63, (q15_t)0x78e0, (q15_t)0x1d58, - (q15_t)0x78e6, (q15_t)0x1d4d, (q15_t)0x78ec, (q15_t)0x1d42, (q15_t)0x78f2, (q15_t)0x1d36, (q15_t)0x78f7, (q15_t)0x1d2b, - (q15_t)0x78fd, (q15_t)0x1d20, (q15_t)0x7903, (q15_t)0x1d15, (q15_t)0x7909, (q15_t)0x1d0a, (q15_t)0x790e, (q15_t)0x1cff, - (q15_t)0x7914, (q15_t)0x1cf3, (q15_t)0x791a, (q15_t)0x1ce8, (q15_t)0x791f, (q15_t)0x1cdd, (q15_t)0x7925, (q15_t)0x1cd2, - (q15_t)0x792b, (q15_t)0x1cc6, (q15_t)0x7930, (q15_t)0x1cbb, (q15_t)0x7936, (q15_t)0x1cb0, (q15_t)0x793b, (q15_t)0x1ca5, - (q15_t)0x7941, (q15_t)0x1c99, (q15_t)0x7947, (q15_t)0x1c8e, (q15_t)0x794c, (q15_t)0x1c83, (q15_t)0x7952, (q15_t)0x1c78, - (q15_t)0x7958, (q15_t)0x1c6c, (q15_t)0x795d, (q15_t)0x1c61, (q15_t)0x7963, (q15_t)0x1c56, (q15_t)0x7968, (q15_t)0x1c4b, - (q15_t)0x796e, (q15_t)0x1c3f, (q15_t)0x7973, (q15_t)0x1c34, (q15_t)0x7979, (q15_t)0x1c29, (q15_t)0x797e, (q15_t)0x1c1e, - (q15_t)0x7984, (q15_t)0x1c12, (q15_t)0x7989, (q15_t)0x1c07, (q15_t)0x798f, (q15_t)0x1bfc, (q15_t)0x7994, (q15_t)0x1bf0, - (q15_t)0x799a, (q15_t)0x1be5, (q15_t)0x799f, (q15_t)0x1bda, (q15_t)0x79a5, (q15_t)0x1bce, (q15_t)0x79aa, (q15_t)0x1bc3, - (q15_t)0x79b0, (q15_t)0x1bb8, (q15_t)0x79b5, (q15_t)0x1bac, (q15_t)0x79bb, (q15_t)0x1ba1, (q15_t)0x79c0, (q15_t)0x1b96, - (q15_t)0x79c5, (q15_t)0x1b8a, (q15_t)0x79cb, (q15_t)0x1b7f, (q15_t)0x79d0, (q15_t)0x1b74, (q15_t)0x79d6, (q15_t)0x1b68, - (q15_t)0x79db, (q15_t)0x1b5d, (q15_t)0x79e0, (q15_t)0x1b52, (q15_t)0x79e6, (q15_t)0x1b46, (q15_t)0x79eb, (q15_t)0x1b3b, - (q15_t)0x79f0, (q15_t)0x1b30, (q15_t)0x79f6, (q15_t)0x1b24, (q15_t)0x79fb, (q15_t)0x1b19, (q15_t)0x7a00, (q15_t)0x1b0d, - (q15_t)0x7a06, (q15_t)0x1b02, (q15_t)0x7a0b, (q15_t)0x1af7, (q15_t)0x7a10, (q15_t)0x1aeb, (q15_t)0x7a16, (q15_t)0x1ae0, - (q15_t)0x7a1b, (q15_t)0x1ad4, (q15_t)0x7a20, (q15_t)0x1ac9, (q15_t)0x7a25, (q15_t)0x1abe, (q15_t)0x7a2b, (q15_t)0x1ab2, - (q15_t)0x7a30, (q15_t)0x1aa7, (q15_t)0x7a35, (q15_t)0x1a9b, (q15_t)0x7a3a, (q15_t)0x1a90, (q15_t)0x7a3f, (q15_t)0x1a84, - (q15_t)0x7a45, (q15_t)0x1a79, (q15_t)0x7a4a, (q15_t)0x1a6e, (q15_t)0x7a4f, (q15_t)0x1a62, (q15_t)0x7a54, (q15_t)0x1a57, - (q15_t)0x7a59, (q15_t)0x1a4b, (q15_t)0x7a5f, (q15_t)0x1a40, (q15_t)0x7a64, (q15_t)0x1a34, (q15_t)0x7a69, (q15_t)0x1a29, - (q15_t)0x7a6e, (q15_t)0x1a1d, (q15_t)0x7a73, (q15_t)0x1a12, (q15_t)0x7a78, (q15_t)0x1a06, (q15_t)0x7a7d, (q15_t)0x19fb, - (q15_t)0x7a82, (q15_t)0x19ef, (q15_t)0x7a88, (q15_t)0x19e4, (q15_t)0x7a8d, (q15_t)0x19d8, (q15_t)0x7a92, (q15_t)0x19cd, - (q15_t)0x7a97, (q15_t)0x19c1, (q15_t)0x7a9c, (q15_t)0x19b6, (q15_t)0x7aa1, (q15_t)0x19aa, (q15_t)0x7aa6, (q15_t)0x199f, - (q15_t)0x7aab, (q15_t)0x1993, (q15_t)0x7ab0, (q15_t)0x1988, (q15_t)0x7ab5, (q15_t)0x197c, (q15_t)0x7aba, (q15_t)0x1971, - (q15_t)0x7abf, (q15_t)0x1965, (q15_t)0x7ac4, (q15_t)0x195a, (q15_t)0x7ac9, (q15_t)0x194e, (q15_t)0x7ace, (q15_t)0x1943, - (q15_t)0x7ad3, (q15_t)0x1937, (q15_t)0x7ad8, (q15_t)0x192c, (q15_t)0x7add, (q15_t)0x1920, (q15_t)0x7ae2, (q15_t)0x1914, - (q15_t)0x7ae6, (q15_t)0x1909, (q15_t)0x7aeb, (q15_t)0x18fd, (q15_t)0x7af0, (q15_t)0x18f2, (q15_t)0x7af5, (q15_t)0x18e6, - (q15_t)0x7afa, (q15_t)0x18db, (q15_t)0x7aff, (q15_t)0x18cf, (q15_t)0x7b04, (q15_t)0x18c3, (q15_t)0x7b09, (q15_t)0x18b8, - (q15_t)0x7b0e, (q15_t)0x18ac, (q15_t)0x7b12, (q15_t)0x18a1, (q15_t)0x7b17, (q15_t)0x1895, (q15_t)0x7b1c, (q15_t)0x1889, - (q15_t)0x7b21, (q15_t)0x187e, (q15_t)0x7b26, (q15_t)0x1872, (q15_t)0x7b2a, (q15_t)0x1867, (q15_t)0x7b2f, (q15_t)0x185b, - (q15_t)0x7b34, (q15_t)0x184f, (q15_t)0x7b39, (q15_t)0x1844, (q15_t)0x7b3e, (q15_t)0x1838, (q15_t)0x7b42, (q15_t)0x182d, - (q15_t)0x7b47, (q15_t)0x1821, (q15_t)0x7b4c, (q15_t)0x1815, (q15_t)0x7b50, (q15_t)0x180a, (q15_t)0x7b55, (q15_t)0x17fe, - (q15_t)0x7b5a, (q15_t)0x17f2, (q15_t)0x7b5f, (q15_t)0x17e7, (q15_t)0x7b63, (q15_t)0x17db, (q15_t)0x7b68, (q15_t)0x17cf, - (q15_t)0x7b6d, (q15_t)0x17c4, (q15_t)0x7b71, (q15_t)0x17b8, (q15_t)0x7b76, (q15_t)0x17ac, (q15_t)0x7b7b, (q15_t)0x17a1, - (q15_t)0x7b7f, (q15_t)0x1795, (q15_t)0x7b84, (q15_t)0x1789, (q15_t)0x7b88, (q15_t)0x177e, (q15_t)0x7b8d, (q15_t)0x1772, - (q15_t)0x7b92, (q15_t)0x1766, (q15_t)0x7b96, (q15_t)0x175b, (q15_t)0x7b9b, (q15_t)0x174f, (q15_t)0x7b9f, (q15_t)0x1743, - (q15_t)0x7ba4, (q15_t)0x1737, (q15_t)0x7ba9, (q15_t)0x172c, (q15_t)0x7bad, (q15_t)0x1720, (q15_t)0x7bb2, (q15_t)0x1714, - (q15_t)0x7bb6, (q15_t)0x1709, (q15_t)0x7bbb, (q15_t)0x16fd, (q15_t)0x7bbf, (q15_t)0x16f1, (q15_t)0x7bc4, (q15_t)0x16e5, - (q15_t)0x7bc8, (q15_t)0x16da, (q15_t)0x7bcd, (q15_t)0x16ce, (q15_t)0x7bd1, (q15_t)0x16c2, (q15_t)0x7bd6, (q15_t)0x16b6, - (q15_t)0x7bda, (q15_t)0x16ab, (q15_t)0x7bde, (q15_t)0x169f, (q15_t)0x7be3, (q15_t)0x1693, (q15_t)0x7be7, (q15_t)0x1687, - (q15_t)0x7bec, (q15_t)0x167c, (q15_t)0x7bf0, (q15_t)0x1670, (q15_t)0x7bf5, (q15_t)0x1664, (q15_t)0x7bf9, (q15_t)0x1658, - (q15_t)0x7bfd, (q15_t)0x164c, (q15_t)0x7c02, (q15_t)0x1641, (q15_t)0x7c06, (q15_t)0x1635, (q15_t)0x7c0a, (q15_t)0x1629, - (q15_t)0x7c0f, (q15_t)0x161d, (q15_t)0x7c13, (q15_t)0x1612, (q15_t)0x7c17, (q15_t)0x1606, (q15_t)0x7c1c, (q15_t)0x15fa, - (q15_t)0x7c20, (q15_t)0x15ee, (q15_t)0x7c24, (q15_t)0x15e2, (q15_t)0x7c29, (q15_t)0x15d7, (q15_t)0x7c2d, (q15_t)0x15cb, - (q15_t)0x7c31, (q15_t)0x15bf, (q15_t)0x7c36, (q15_t)0x15b3, (q15_t)0x7c3a, (q15_t)0x15a7, (q15_t)0x7c3e, (q15_t)0x159b, - (q15_t)0x7c42, (q15_t)0x1590, (q15_t)0x7c46, (q15_t)0x1584, (q15_t)0x7c4b, (q15_t)0x1578, (q15_t)0x7c4f, (q15_t)0x156c, - (q15_t)0x7c53, (q15_t)0x1560, (q15_t)0x7c57, (q15_t)0x1554, (q15_t)0x7c5b, (q15_t)0x1549, (q15_t)0x7c60, (q15_t)0x153d, - (q15_t)0x7c64, (q15_t)0x1531, (q15_t)0x7c68, (q15_t)0x1525, (q15_t)0x7c6c, (q15_t)0x1519, (q15_t)0x7c70, (q15_t)0x150d, - (q15_t)0x7c74, (q15_t)0x1501, (q15_t)0x7c79, (q15_t)0x14f6, (q15_t)0x7c7d, (q15_t)0x14ea, (q15_t)0x7c81, (q15_t)0x14de, - (q15_t)0x7c85, (q15_t)0x14d2, (q15_t)0x7c89, (q15_t)0x14c6, (q15_t)0x7c8d, (q15_t)0x14ba, (q15_t)0x7c91, (q15_t)0x14ae, - (q15_t)0x7c95, (q15_t)0x14a2, (q15_t)0x7c99, (q15_t)0x1496, (q15_t)0x7c9d, (q15_t)0x148b, (q15_t)0x7ca1, (q15_t)0x147f, - (q15_t)0x7ca5, (q15_t)0x1473, (q15_t)0x7ca9, (q15_t)0x1467, (q15_t)0x7cad, (q15_t)0x145b, (q15_t)0x7cb1, (q15_t)0x144f, - (q15_t)0x7cb5, (q15_t)0x1443, (q15_t)0x7cb9, (q15_t)0x1437, (q15_t)0x7cbd, (q15_t)0x142b, (q15_t)0x7cc1, (q15_t)0x141f, - (q15_t)0x7cc5, (q15_t)0x1413, (q15_t)0x7cc9, (q15_t)0x1407, (q15_t)0x7ccd, (q15_t)0x13fb, (q15_t)0x7cd1, (q15_t)0x13f0, - (q15_t)0x7cd5, (q15_t)0x13e4, (q15_t)0x7cd9, (q15_t)0x13d8, (q15_t)0x7cdd, (q15_t)0x13cc, (q15_t)0x7ce0, (q15_t)0x13c0, - (q15_t)0x7ce4, (q15_t)0x13b4, (q15_t)0x7ce8, (q15_t)0x13a8, (q15_t)0x7cec, (q15_t)0x139c, (q15_t)0x7cf0, (q15_t)0x1390, - (q15_t)0x7cf4, (q15_t)0x1384, (q15_t)0x7cf8, (q15_t)0x1378, (q15_t)0x7cfb, (q15_t)0x136c, (q15_t)0x7cff, (q15_t)0x1360, - (q15_t)0x7d03, (q15_t)0x1354, (q15_t)0x7d07, (q15_t)0x1348, (q15_t)0x7d0b, (q15_t)0x133c, (q15_t)0x7d0e, (q15_t)0x1330, - (q15_t)0x7d12, (q15_t)0x1324, (q15_t)0x7d16, (q15_t)0x1318, (q15_t)0x7d1a, (q15_t)0x130c, (q15_t)0x7d1d, (q15_t)0x1300, - (q15_t)0x7d21, (q15_t)0x12f4, (q15_t)0x7d25, (q15_t)0x12e8, (q15_t)0x7d28, (q15_t)0x12dc, (q15_t)0x7d2c, (q15_t)0x12d0, - (q15_t)0x7d30, (q15_t)0x12c4, (q15_t)0x7d34, (q15_t)0x12b8, (q15_t)0x7d37, (q15_t)0x12ac, (q15_t)0x7d3b, (q15_t)0x12a0, - (q15_t)0x7d3f, (q15_t)0x1294, (q15_t)0x7d42, (q15_t)0x1288, (q15_t)0x7d46, (q15_t)0x127c, (q15_t)0x7d49, (q15_t)0x1270, - (q15_t)0x7d4d, (q15_t)0x1264, (q15_t)0x7d51, (q15_t)0x1258, (q15_t)0x7d54, (q15_t)0x124c, (q15_t)0x7d58, (q15_t)0x1240, - (q15_t)0x7d5b, (q15_t)0x1234, (q15_t)0x7d5f, (q15_t)0x1228, (q15_t)0x7d63, (q15_t)0x121c, (q15_t)0x7d66, (q15_t)0x1210, - (q15_t)0x7d6a, (q15_t)0x1204, (q15_t)0x7d6d, (q15_t)0x11f7, (q15_t)0x7d71, (q15_t)0x11eb, (q15_t)0x7d74, (q15_t)0x11df, - (q15_t)0x7d78, (q15_t)0x11d3, (q15_t)0x7d7b, (q15_t)0x11c7, (q15_t)0x7d7f, (q15_t)0x11bb, (q15_t)0x7d82, (q15_t)0x11af, - (q15_t)0x7d86, (q15_t)0x11a3, (q15_t)0x7d89, (q15_t)0x1197, (q15_t)0x7d8d, (q15_t)0x118b, (q15_t)0x7d90, (q15_t)0x117f, - (q15_t)0x7d93, (q15_t)0x1173, (q15_t)0x7d97, (q15_t)0x1167, (q15_t)0x7d9a, (q15_t)0x115a, (q15_t)0x7d9e, (q15_t)0x114e, - (q15_t)0x7da1, (q15_t)0x1142, (q15_t)0x7da4, (q15_t)0x1136, (q15_t)0x7da8, (q15_t)0x112a, (q15_t)0x7dab, (q15_t)0x111e, - (q15_t)0x7daf, (q15_t)0x1112, (q15_t)0x7db2, (q15_t)0x1106, (q15_t)0x7db5, (q15_t)0x10fa, (q15_t)0x7db9, (q15_t)0x10ed, - (q15_t)0x7dbc, (q15_t)0x10e1, (q15_t)0x7dbf, (q15_t)0x10d5, (q15_t)0x7dc2, (q15_t)0x10c9, (q15_t)0x7dc6, (q15_t)0x10bd, - (q15_t)0x7dc9, (q15_t)0x10b1, (q15_t)0x7dcc, (q15_t)0x10a5, (q15_t)0x7dd0, (q15_t)0x1099, (q15_t)0x7dd3, (q15_t)0x108c, - (q15_t)0x7dd6, (q15_t)0x1080, (q15_t)0x7dd9, (q15_t)0x1074, (q15_t)0x7ddd, (q15_t)0x1068, (q15_t)0x7de0, (q15_t)0x105c, - (q15_t)0x7de3, (q15_t)0x1050, (q15_t)0x7de6, (q15_t)0x1044, (q15_t)0x7de9, (q15_t)0x1037, (q15_t)0x7ded, (q15_t)0x102b, - (q15_t)0x7df0, (q15_t)0x101f, (q15_t)0x7df3, (q15_t)0x1013, (q15_t)0x7df6, (q15_t)0x1007, (q15_t)0x7df9, (q15_t)0xffb, - (q15_t)0x7dfc, (q15_t)0xfee, (q15_t)0x7dff, (q15_t)0xfe2, (q15_t)0x7e03, (q15_t)0xfd6, (q15_t)0x7e06, (q15_t)0xfca, - (q15_t)0x7e09, (q15_t)0xfbe, (q15_t)0x7e0c, (q15_t)0xfb2, (q15_t)0x7e0f, (q15_t)0xfa5, (q15_t)0x7e12, (q15_t)0xf99, - (q15_t)0x7e15, (q15_t)0xf8d, (q15_t)0x7e18, (q15_t)0xf81, (q15_t)0x7e1b, (q15_t)0xf75, (q15_t)0x7e1e, (q15_t)0xf68, - (q15_t)0x7e21, (q15_t)0xf5c, (q15_t)0x7e24, (q15_t)0xf50, (q15_t)0x7e27, (q15_t)0xf44, (q15_t)0x7e2a, (q15_t)0xf38, - (q15_t)0x7e2d, (q15_t)0xf2b, (q15_t)0x7e30, (q15_t)0xf1f, (q15_t)0x7e33, (q15_t)0xf13, (q15_t)0x7e36, (q15_t)0xf07, - (q15_t)0x7e39, (q15_t)0xefb, (q15_t)0x7e3c, (q15_t)0xeee, (q15_t)0x7e3f, (q15_t)0xee2, (q15_t)0x7e42, (q15_t)0xed6, - (q15_t)0x7e45, (q15_t)0xeca, (q15_t)0x7e48, (q15_t)0xebd, (q15_t)0x7e4a, (q15_t)0xeb1, (q15_t)0x7e4d, (q15_t)0xea5, - (q15_t)0x7e50, (q15_t)0xe99, (q15_t)0x7e53, (q15_t)0xe8c, (q15_t)0x7e56, (q15_t)0xe80, (q15_t)0x7e59, (q15_t)0xe74, - (q15_t)0x7e5c, (q15_t)0xe68, (q15_t)0x7e5e, (q15_t)0xe5c, (q15_t)0x7e61, (q15_t)0xe4f, (q15_t)0x7e64, (q15_t)0xe43, - (q15_t)0x7e67, (q15_t)0xe37, (q15_t)0x7e6a, (q15_t)0xe2b, (q15_t)0x7e6c, (q15_t)0xe1e, (q15_t)0x7e6f, (q15_t)0xe12, - (q15_t)0x7e72, (q15_t)0xe06, (q15_t)0x7e75, (q15_t)0xdf9, (q15_t)0x7e77, (q15_t)0xded, (q15_t)0x7e7a, (q15_t)0xde1, - (q15_t)0x7e7d, (q15_t)0xdd5, (q15_t)0x7e80, (q15_t)0xdc8, (q15_t)0x7e82, (q15_t)0xdbc, (q15_t)0x7e85, (q15_t)0xdb0, - (q15_t)0x7e88, (q15_t)0xda4, (q15_t)0x7e8a, (q15_t)0xd97, (q15_t)0x7e8d, (q15_t)0xd8b, (q15_t)0x7e90, (q15_t)0xd7f, - (q15_t)0x7e92, (q15_t)0xd72, (q15_t)0x7e95, (q15_t)0xd66, (q15_t)0x7e98, (q15_t)0xd5a, (q15_t)0x7e9a, (q15_t)0xd4e, - (q15_t)0x7e9d, (q15_t)0xd41, (q15_t)0x7e9f, (q15_t)0xd35, (q15_t)0x7ea2, (q15_t)0xd29, (q15_t)0x7ea5, (q15_t)0xd1c, - (q15_t)0x7ea7, (q15_t)0xd10, (q15_t)0x7eaa, (q15_t)0xd04, (q15_t)0x7eac, (q15_t)0xcf8, (q15_t)0x7eaf, (q15_t)0xceb, - (q15_t)0x7eb1, (q15_t)0xcdf, (q15_t)0x7eb4, (q15_t)0xcd3, (q15_t)0x7eb6, (q15_t)0xcc6, (q15_t)0x7eb9, (q15_t)0xcba, - (q15_t)0x7ebb, (q15_t)0xcae, (q15_t)0x7ebe, (q15_t)0xca1, (q15_t)0x7ec0, (q15_t)0xc95, (q15_t)0x7ec3, (q15_t)0xc89, - (q15_t)0x7ec5, (q15_t)0xc7c, (q15_t)0x7ec8, (q15_t)0xc70, (q15_t)0x7eca, (q15_t)0xc64, (q15_t)0x7ecc, (q15_t)0xc57, - (q15_t)0x7ecf, (q15_t)0xc4b, (q15_t)0x7ed1, (q15_t)0xc3f, (q15_t)0x7ed4, (q15_t)0xc32, (q15_t)0x7ed6, (q15_t)0xc26, - (q15_t)0x7ed8, (q15_t)0xc1a, (q15_t)0x7edb, (q15_t)0xc0d, (q15_t)0x7edd, (q15_t)0xc01, (q15_t)0x7ee0, (q15_t)0xbf5, - (q15_t)0x7ee2, (q15_t)0xbe8, (q15_t)0x7ee4, (q15_t)0xbdc, (q15_t)0x7ee7, (q15_t)0xbd0, (q15_t)0x7ee9, (q15_t)0xbc3, - (q15_t)0x7eeb, (q15_t)0xbb7, (q15_t)0x7eed, (q15_t)0xbab, (q15_t)0x7ef0, (q15_t)0xb9e, (q15_t)0x7ef2, (q15_t)0xb92, - (q15_t)0x7ef4, (q15_t)0xb85, (q15_t)0x7ef7, (q15_t)0xb79, (q15_t)0x7ef9, (q15_t)0xb6d, (q15_t)0x7efb, (q15_t)0xb60, - (q15_t)0x7efd, (q15_t)0xb54, (q15_t)0x7f00, (q15_t)0xb48, (q15_t)0x7f02, (q15_t)0xb3b, (q15_t)0x7f04, (q15_t)0xb2f, - (q15_t)0x7f06, (q15_t)0xb23, (q15_t)0x7f08, (q15_t)0xb16, (q15_t)0x7f0a, (q15_t)0xb0a, (q15_t)0x7f0d, (q15_t)0xafd, - (q15_t)0x7f0f, (q15_t)0xaf1, (q15_t)0x7f11, (q15_t)0xae5, (q15_t)0x7f13, (q15_t)0xad8, (q15_t)0x7f15, (q15_t)0xacc, - (q15_t)0x7f17, (q15_t)0xac0, (q15_t)0x7f19, (q15_t)0xab3, (q15_t)0x7f1c, (q15_t)0xaa7, (q15_t)0x7f1e, (q15_t)0xa9a, - (q15_t)0x7f20, (q15_t)0xa8e, (q15_t)0x7f22, (q15_t)0xa82, (q15_t)0x7f24, (q15_t)0xa75, (q15_t)0x7f26, (q15_t)0xa69, - (q15_t)0x7f28, (q15_t)0xa5c, (q15_t)0x7f2a, (q15_t)0xa50, (q15_t)0x7f2c, (q15_t)0xa44, (q15_t)0x7f2e, (q15_t)0xa37, - (q15_t)0x7f30, (q15_t)0xa2b, (q15_t)0x7f32, (q15_t)0xa1e, (q15_t)0x7f34, (q15_t)0xa12, (q15_t)0x7f36, (q15_t)0xa06, - (q15_t)0x7f38, (q15_t)0x9f9, (q15_t)0x7f3a, (q15_t)0x9ed, (q15_t)0x7f3c, (q15_t)0x9e0, (q15_t)0x7f3e, (q15_t)0x9d4, - (q15_t)0x7f40, (q15_t)0x9c7, (q15_t)0x7f42, (q15_t)0x9bb, (q15_t)0x7f43, (q15_t)0x9af, (q15_t)0x7f45, (q15_t)0x9a2, - (q15_t)0x7f47, (q15_t)0x996, (q15_t)0x7f49, (q15_t)0x989, (q15_t)0x7f4b, (q15_t)0x97d, (q15_t)0x7f4d, (q15_t)0x970, - (q15_t)0x7f4f, (q15_t)0x964, (q15_t)0x7f51, (q15_t)0x958, (q15_t)0x7f52, (q15_t)0x94b, (q15_t)0x7f54, (q15_t)0x93f, - (q15_t)0x7f56, (q15_t)0x932, (q15_t)0x7f58, (q15_t)0x926, (q15_t)0x7f5a, (q15_t)0x919, (q15_t)0x7f5b, (q15_t)0x90d, - (q15_t)0x7f5d, (q15_t)0x901, (q15_t)0x7f5f, (q15_t)0x8f4, (q15_t)0x7f61, (q15_t)0x8e8, (q15_t)0x7f62, (q15_t)0x8db, - (q15_t)0x7f64, (q15_t)0x8cf, (q15_t)0x7f66, (q15_t)0x8c2, (q15_t)0x7f68, (q15_t)0x8b6, (q15_t)0x7f69, (q15_t)0x8a9, - (q15_t)0x7f6b, (q15_t)0x89d, (q15_t)0x7f6d, (q15_t)0x891, (q15_t)0x7f6e, (q15_t)0x884, (q15_t)0x7f70, (q15_t)0x878, - (q15_t)0x7f72, (q15_t)0x86b, (q15_t)0x7f73, (q15_t)0x85f, (q15_t)0x7f75, (q15_t)0x852, (q15_t)0x7f77, (q15_t)0x846, - (q15_t)0x7f78, (q15_t)0x839, (q15_t)0x7f7a, (q15_t)0x82d, (q15_t)0x7f7b, (q15_t)0x820, (q15_t)0x7f7d, (q15_t)0x814, - (q15_t)0x7f7f, (q15_t)0x807, (q15_t)0x7f80, (q15_t)0x7fb, (q15_t)0x7f82, (q15_t)0x7ef, (q15_t)0x7f83, (q15_t)0x7e2, - (q15_t)0x7f85, (q15_t)0x7d6, (q15_t)0x7f86, (q15_t)0x7c9, (q15_t)0x7f88, (q15_t)0x7bd, (q15_t)0x7f89, (q15_t)0x7b0, - (q15_t)0x7f8b, (q15_t)0x7a4, (q15_t)0x7f8c, (q15_t)0x797, (q15_t)0x7f8e, (q15_t)0x78b, (q15_t)0x7f8f, (q15_t)0x77e, - (q15_t)0x7f91, (q15_t)0x772, (q15_t)0x7f92, (q15_t)0x765, (q15_t)0x7f94, (q15_t)0x759, (q15_t)0x7f95, (q15_t)0x74c, - (q15_t)0x7f97, (q15_t)0x740, (q15_t)0x7f98, (q15_t)0x733, (q15_t)0x7f99, (q15_t)0x727, (q15_t)0x7f9b, (q15_t)0x71a, - (q15_t)0x7f9c, (q15_t)0x70e, (q15_t)0x7f9e, (q15_t)0x701, (q15_t)0x7f9f, (q15_t)0x6f5, (q15_t)0x7fa0, (q15_t)0x6e8, - (q15_t)0x7fa2, (q15_t)0x6dc, (q15_t)0x7fa3, (q15_t)0x6cf, (q15_t)0x7fa4, (q15_t)0x6c3, (q15_t)0x7fa6, (q15_t)0x6b6, - (q15_t)0x7fa7, (q15_t)0x6aa, (q15_t)0x7fa8, (q15_t)0x69d, (q15_t)0x7faa, (q15_t)0x691, (q15_t)0x7fab, (q15_t)0x684, - (q15_t)0x7fac, (q15_t)0x678, (q15_t)0x7fad, (q15_t)0x66b, (q15_t)0x7faf, (q15_t)0x65f, (q15_t)0x7fb0, (q15_t)0x652, - (q15_t)0x7fb1, (q15_t)0x646, (q15_t)0x7fb2, (q15_t)0x639, (q15_t)0x7fb4, (q15_t)0x62d, (q15_t)0x7fb5, (q15_t)0x620, - (q15_t)0x7fb6, (q15_t)0x614, (q15_t)0x7fb7, (q15_t)0x607, (q15_t)0x7fb8, (q15_t)0x5fb, (q15_t)0x7fb9, (q15_t)0x5ee, - (q15_t)0x7fbb, (q15_t)0x5e2, (q15_t)0x7fbc, (q15_t)0x5d5, (q15_t)0x7fbd, (q15_t)0x5c9, (q15_t)0x7fbe, (q15_t)0x5bc, - (q15_t)0x7fbf, (q15_t)0x5b0, (q15_t)0x7fc0, (q15_t)0x5a3, (q15_t)0x7fc1, (q15_t)0x597, (q15_t)0x7fc3, (q15_t)0x58a, - (q15_t)0x7fc4, (q15_t)0x57e, (q15_t)0x7fc5, (q15_t)0x571, (q15_t)0x7fc6, (q15_t)0x565, (q15_t)0x7fc7, (q15_t)0x558, - (q15_t)0x7fc8, (q15_t)0x54c, (q15_t)0x7fc9, (q15_t)0x53f, (q15_t)0x7fca, (q15_t)0x533, (q15_t)0x7fcb, (q15_t)0x526, - (q15_t)0x7fcc, (q15_t)0x51a, (q15_t)0x7fcd, (q15_t)0x50d, (q15_t)0x7fce, (q15_t)0x500, (q15_t)0x7fcf, (q15_t)0x4f4, - (q15_t)0x7fd0, (q15_t)0x4e7, (q15_t)0x7fd1, (q15_t)0x4db, (q15_t)0x7fd2, (q15_t)0x4ce, (q15_t)0x7fd3, (q15_t)0x4c2, - (q15_t)0x7fd4, (q15_t)0x4b5, (q15_t)0x7fd5, (q15_t)0x4a9, (q15_t)0x7fd5, (q15_t)0x49c, (q15_t)0x7fd6, (q15_t)0x490, - (q15_t)0x7fd7, (q15_t)0x483, (q15_t)0x7fd8, (q15_t)0x477, (q15_t)0x7fd9, (q15_t)0x46a, (q15_t)0x7fda, (q15_t)0x45e, - (q15_t)0x7fdb, (q15_t)0x451, (q15_t)0x7fdc, (q15_t)0x444, (q15_t)0x7fdc, (q15_t)0x438, (q15_t)0x7fdd, (q15_t)0x42b, - (q15_t)0x7fde, (q15_t)0x41f, (q15_t)0x7fdf, (q15_t)0x412, (q15_t)0x7fe0, (q15_t)0x406, (q15_t)0x7fe0, (q15_t)0x3f9, - (q15_t)0x7fe1, (q15_t)0x3ed, (q15_t)0x7fe2, (q15_t)0x3e0, (q15_t)0x7fe3, (q15_t)0x3d4, (q15_t)0x7fe3, (q15_t)0x3c7, - (q15_t)0x7fe4, (q15_t)0x3bb, (q15_t)0x7fe5, (q15_t)0x3ae, (q15_t)0x7fe6, (q15_t)0x3a1, (q15_t)0x7fe6, (q15_t)0x395, - (q15_t)0x7fe7, (q15_t)0x388, (q15_t)0x7fe8, (q15_t)0x37c, (q15_t)0x7fe8, (q15_t)0x36f, (q15_t)0x7fe9, (q15_t)0x363, - (q15_t)0x7fea, (q15_t)0x356, (q15_t)0x7fea, (q15_t)0x34a, (q15_t)0x7feb, (q15_t)0x33d, (q15_t)0x7fec, (q15_t)0x330, - (q15_t)0x7fec, (q15_t)0x324, (q15_t)0x7fed, (q15_t)0x317, (q15_t)0x7fed, (q15_t)0x30b, (q15_t)0x7fee, (q15_t)0x2fe, - (q15_t)0x7fef, (q15_t)0x2f2, (q15_t)0x7fef, (q15_t)0x2e5, (q15_t)0x7ff0, (q15_t)0x2d9, (q15_t)0x7ff0, (q15_t)0x2cc, - (q15_t)0x7ff1, (q15_t)0x2c0, (q15_t)0x7ff1, (q15_t)0x2b3, (q15_t)0x7ff2, (q15_t)0x2a6, (q15_t)0x7ff2, (q15_t)0x29a, - (q15_t)0x7ff3, (q15_t)0x28d, (q15_t)0x7ff3, (q15_t)0x281, (q15_t)0x7ff4, (q15_t)0x274, (q15_t)0x7ff4, (q15_t)0x268, - (q15_t)0x7ff5, (q15_t)0x25b, (q15_t)0x7ff5, (q15_t)0x24e, (q15_t)0x7ff6, (q15_t)0x242, (q15_t)0x7ff6, (q15_t)0x235, - (q15_t)0x7ff7, (q15_t)0x229, (q15_t)0x7ff7, (q15_t)0x21c, (q15_t)0x7ff7, (q15_t)0x210, (q15_t)0x7ff8, (q15_t)0x203, - (q15_t)0x7ff8, (q15_t)0x1f7, (q15_t)0x7ff9, (q15_t)0x1ea, (q15_t)0x7ff9, (q15_t)0x1dd, (q15_t)0x7ff9, (q15_t)0x1d1, - (q15_t)0x7ffa, (q15_t)0x1c4, (q15_t)0x7ffa, (q15_t)0x1b8, (q15_t)0x7ffa, (q15_t)0x1ab, (q15_t)0x7ffb, (q15_t)0x19f, - (q15_t)0x7ffb, (q15_t)0x192, (q15_t)0x7ffb, (q15_t)0x186, (q15_t)0x7ffc, (q15_t)0x179, (q15_t)0x7ffc, (q15_t)0x16c, - (q15_t)0x7ffc, (q15_t)0x160, (q15_t)0x7ffc, (q15_t)0x153, (q15_t)0x7ffd, (q15_t)0x147, (q15_t)0x7ffd, (q15_t)0x13a, - (q15_t)0x7ffd, (q15_t)0x12e, (q15_t)0x7ffd, (q15_t)0x121, (q15_t)0x7ffe, (q15_t)0x114, (q15_t)0x7ffe, (q15_t)0x108, - (q15_t)0x7ffe, (q15_t)0xfb, (q15_t)0x7ffe, (q15_t)0xef, (q15_t)0x7ffe, (q15_t)0xe2, (q15_t)0x7fff, (q15_t)0xd6, - (q15_t)0x7fff, (q15_t)0xc9, (q15_t)0x7fff, (q15_t)0xbc, (q15_t)0x7fff, (q15_t)0xb0, (q15_t)0x7fff, (q15_t)0xa3, - (q15_t)0x7fff, (q15_t)0x97, (q15_t)0x7fff, (q15_t)0x8a, (q15_t)0x7fff, (q15_t)0x7e, (q15_t)0x7fff, (q15_t)0x71, - (q15_t)0x7fff, (q15_t)0x65, (q15_t)0x7fff, (q15_t)0x58, (q15_t)0x7fff, (q15_t)0x4b, (q15_t)0x7fff, (q15_t)0x3f, - (q15_t)0x7fff, (q15_t)0x32, (q15_t)0x7fff, (q15_t)0x26, (q15_t)0x7fff, (q15_t)0x19, (q15_t)0x7fff, (q15_t)0xd, - (q15_t)0x7fff, (q15_t)0x0, (q15_t)0x7fff, (q15_t)0xfff3, (q15_t)0x7fff, (q15_t)0xffe7, (q15_t)0x7fff, (q15_t)0xffda, - (q15_t)0x7fff, (q15_t)0xffce, (q15_t)0x7fff, (q15_t)0xffc1, (q15_t)0x7fff, (q15_t)0xffb5, (q15_t)0x7fff, (q15_t)0xffa8, - (q15_t)0x7fff, (q15_t)0xff9b, (q15_t)0x7fff, (q15_t)0xff8f, (q15_t)0x7fff, (q15_t)0xff82, (q15_t)0x7fff, (q15_t)0xff76, - (q15_t)0x7fff, (q15_t)0xff69, (q15_t)0x7fff, (q15_t)0xff5d, (q15_t)0x7fff, (q15_t)0xff50, (q15_t)0x7fff, (q15_t)0xff44, - (q15_t)0x7fff, (q15_t)0xff37, (q15_t)0x7fff, (q15_t)0xff2a, (q15_t)0x7ffe, (q15_t)0xff1e, (q15_t)0x7ffe, (q15_t)0xff11, - (q15_t)0x7ffe, (q15_t)0xff05, (q15_t)0x7ffe, (q15_t)0xfef8, (q15_t)0x7ffe, (q15_t)0xfeec, (q15_t)0x7ffd, (q15_t)0xfedf, - (q15_t)0x7ffd, (q15_t)0xfed2, (q15_t)0x7ffd, (q15_t)0xfec6, (q15_t)0x7ffd, (q15_t)0xfeb9, (q15_t)0x7ffc, (q15_t)0xfead, - (q15_t)0x7ffc, (q15_t)0xfea0, (q15_t)0x7ffc, (q15_t)0xfe94, (q15_t)0x7ffc, (q15_t)0xfe87, (q15_t)0x7ffb, (q15_t)0xfe7a, - (q15_t)0x7ffb, (q15_t)0xfe6e, (q15_t)0x7ffb, (q15_t)0xfe61, (q15_t)0x7ffa, (q15_t)0xfe55, (q15_t)0x7ffa, (q15_t)0xfe48, - (q15_t)0x7ffa, (q15_t)0xfe3c, (q15_t)0x7ff9, (q15_t)0xfe2f, (q15_t)0x7ff9, (q15_t)0xfe23, (q15_t)0x7ff9, (q15_t)0xfe16, - (q15_t)0x7ff8, (q15_t)0xfe09, (q15_t)0x7ff8, (q15_t)0xfdfd, (q15_t)0x7ff7, (q15_t)0xfdf0, (q15_t)0x7ff7, (q15_t)0xfde4, - (q15_t)0x7ff7, (q15_t)0xfdd7, (q15_t)0x7ff6, (q15_t)0xfdcb, (q15_t)0x7ff6, (q15_t)0xfdbe, (q15_t)0x7ff5, (q15_t)0xfdb2, - (q15_t)0x7ff5, (q15_t)0xfda5, (q15_t)0x7ff4, (q15_t)0xfd98, (q15_t)0x7ff4, (q15_t)0xfd8c, (q15_t)0x7ff3, (q15_t)0xfd7f, - (q15_t)0x7ff3, (q15_t)0xfd73, (q15_t)0x7ff2, (q15_t)0xfd66, (q15_t)0x7ff2, (q15_t)0xfd5a, (q15_t)0x7ff1, (q15_t)0xfd4d, - (q15_t)0x7ff1, (q15_t)0xfd40, (q15_t)0x7ff0, (q15_t)0xfd34, (q15_t)0x7ff0, (q15_t)0xfd27, (q15_t)0x7fef, (q15_t)0xfd1b, - (q15_t)0x7fef, (q15_t)0xfd0e, (q15_t)0x7fee, (q15_t)0xfd02, (q15_t)0x7fed, (q15_t)0xfcf5, (q15_t)0x7fed, (q15_t)0xfce9, - (q15_t)0x7fec, (q15_t)0xfcdc, (q15_t)0x7fec, (q15_t)0xfcd0, (q15_t)0x7feb, (q15_t)0xfcc3, (q15_t)0x7fea, (q15_t)0xfcb6, - (q15_t)0x7fea, (q15_t)0xfcaa, (q15_t)0x7fe9, (q15_t)0xfc9d, (q15_t)0x7fe8, (q15_t)0xfc91, (q15_t)0x7fe8, (q15_t)0xfc84, - (q15_t)0x7fe7, (q15_t)0xfc78, (q15_t)0x7fe6, (q15_t)0xfc6b, (q15_t)0x7fe6, (q15_t)0xfc5f, (q15_t)0x7fe5, (q15_t)0xfc52, - (q15_t)0x7fe4, (q15_t)0xfc45, (q15_t)0x7fe3, (q15_t)0xfc39, (q15_t)0x7fe3, (q15_t)0xfc2c, (q15_t)0x7fe2, (q15_t)0xfc20, - (q15_t)0x7fe1, (q15_t)0xfc13, (q15_t)0x7fe0, (q15_t)0xfc07, (q15_t)0x7fe0, (q15_t)0xfbfa, (q15_t)0x7fdf, (q15_t)0xfbee, - (q15_t)0x7fde, (q15_t)0xfbe1, (q15_t)0x7fdd, (q15_t)0xfbd5, (q15_t)0x7fdc, (q15_t)0xfbc8, (q15_t)0x7fdc, (q15_t)0xfbbc, - (q15_t)0x7fdb, (q15_t)0xfbaf, (q15_t)0x7fda, (q15_t)0xfba2, (q15_t)0x7fd9, (q15_t)0xfb96, (q15_t)0x7fd8, (q15_t)0xfb89, - (q15_t)0x7fd7, (q15_t)0xfb7d, (q15_t)0x7fd6, (q15_t)0xfb70, (q15_t)0x7fd5, (q15_t)0xfb64, (q15_t)0x7fd5, (q15_t)0xfb57, - (q15_t)0x7fd4, (q15_t)0xfb4b, (q15_t)0x7fd3, (q15_t)0xfb3e, (q15_t)0x7fd2, (q15_t)0xfb32, (q15_t)0x7fd1, (q15_t)0xfb25, - (q15_t)0x7fd0, (q15_t)0xfb19, (q15_t)0x7fcf, (q15_t)0xfb0c, (q15_t)0x7fce, (q15_t)0xfb00, (q15_t)0x7fcd, (q15_t)0xfaf3, - (q15_t)0x7fcc, (q15_t)0xfae6, (q15_t)0x7fcb, (q15_t)0xfada, (q15_t)0x7fca, (q15_t)0xfacd, (q15_t)0x7fc9, (q15_t)0xfac1, - (q15_t)0x7fc8, (q15_t)0xfab4, (q15_t)0x7fc7, (q15_t)0xfaa8, (q15_t)0x7fc6, (q15_t)0xfa9b, (q15_t)0x7fc5, (q15_t)0xfa8f, - (q15_t)0x7fc4, (q15_t)0xfa82, (q15_t)0x7fc3, (q15_t)0xfa76, (q15_t)0x7fc1, (q15_t)0xfa69, (q15_t)0x7fc0, (q15_t)0xfa5d, - (q15_t)0x7fbf, (q15_t)0xfa50, (q15_t)0x7fbe, (q15_t)0xfa44, (q15_t)0x7fbd, (q15_t)0xfa37, (q15_t)0x7fbc, (q15_t)0xfa2b, - (q15_t)0x7fbb, (q15_t)0xfa1e, (q15_t)0x7fb9, (q15_t)0xfa12, (q15_t)0x7fb8, (q15_t)0xfa05, (q15_t)0x7fb7, (q15_t)0xf9f9, - (q15_t)0x7fb6, (q15_t)0xf9ec, (q15_t)0x7fb5, (q15_t)0xf9e0, (q15_t)0x7fb4, (q15_t)0xf9d3, (q15_t)0x7fb2, (q15_t)0xf9c7, - (q15_t)0x7fb1, (q15_t)0xf9ba, (q15_t)0x7fb0, (q15_t)0xf9ae, (q15_t)0x7faf, (q15_t)0xf9a1, (q15_t)0x7fad, (q15_t)0xf995, - (q15_t)0x7fac, (q15_t)0xf988, (q15_t)0x7fab, (q15_t)0xf97c, (q15_t)0x7faa, (q15_t)0xf96f, (q15_t)0x7fa8, (q15_t)0xf963, - (q15_t)0x7fa7, (q15_t)0xf956, (q15_t)0x7fa6, (q15_t)0xf94a, (q15_t)0x7fa4, (q15_t)0xf93d, (q15_t)0x7fa3, (q15_t)0xf931, - (q15_t)0x7fa2, (q15_t)0xf924, (q15_t)0x7fa0, (q15_t)0xf918, (q15_t)0x7f9f, (q15_t)0xf90b, (q15_t)0x7f9e, (q15_t)0xf8ff, - (q15_t)0x7f9c, (q15_t)0xf8f2, (q15_t)0x7f9b, (q15_t)0xf8e6, (q15_t)0x7f99, (q15_t)0xf8d9, (q15_t)0x7f98, (q15_t)0xf8cd, - (q15_t)0x7f97, (q15_t)0xf8c0, (q15_t)0x7f95, (q15_t)0xf8b4, (q15_t)0x7f94, (q15_t)0xf8a7, (q15_t)0x7f92, (q15_t)0xf89b, - (q15_t)0x7f91, (q15_t)0xf88e, (q15_t)0x7f8f, (q15_t)0xf882, (q15_t)0x7f8e, (q15_t)0xf875, (q15_t)0x7f8c, (q15_t)0xf869, - (q15_t)0x7f8b, (q15_t)0xf85c, (q15_t)0x7f89, (q15_t)0xf850, (q15_t)0x7f88, (q15_t)0xf843, (q15_t)0x7f86, (q15_t)0xf837, - (q15_t)0x7f85, (q15_t)0xf82a, (q15_t)0x7f83, (q15_t)0xf81e, (q15_t)0x7f82, (q15_t)0xf811, (q15_t)0x7f80, (q15_t)0xf805, - (q15_t)0x7f7f, (q15_t)0xf7f9, (q15_t)0x7f7d, (q15_t)0xf7ec, (q15_t)0x7f7b, (q15_t)0xf7e0, (q15_t)0x7f7a, (q15_t)0xf7d3, - (q15_t)0x7f78, (q15_t)0xf7c7, (q15_t)0x7f77, (q15_t)0xf7ba, (q15_t)0x7f75, (q15_t)0xf7ae, (q15_t)0x7f73, (q15_t)0xf7a1, - (q15_t)0x7f72, (q15_t)0xf795, (q15_t)0x7f70, (q15_t)0xf788, (q15_t)0x7f6e, (q15_t)0xf77c, (q15_t)0x7f6d, (q15_t)0xf76f, - (q15_t)0x7f6b, (q15_t)0xf763, (q15_t)0x7f69, (q15_t)0xf757, (q15_t)0x7f68, (q15_t)0xf74a, (q15_t)0x7f66, (q15_t)0xf73e, - (q15_t)0x7f64, (q15_t)0xf731, (q15_t)0x7f62, (q15_t)0xf725, (q15_t)0x7f61, (q15_t)0xf718, (q15_t)0x7f5f, (q15_t)0xf70c, - (q15_t)0x7f5d, (q15_t)0xf6ff, (q15_t)0x7f5b, (q15_t)0xf6f3, (q15_t)0x7f5a, (q15_t)0xf6e7, (q15_t)0x7f58, (q15_t)0xf6da, - (q15_t)0x7f56, (q15_t)0xf6ce, (q15_t)0x7f54, (q15_t)0xf6c1, (q15_t)0x7f52, (q15_t)0xf6b5, (q15_t)0x7f51, (q15_t)0xf6a8, - (q15_t)0x7f4f, (q15_t)0xf69c, (q15_t)0x7f4d, (q15_t)0xf690, (q15_t)0x7f4b, (q15_t)0xf683, (q15_t)0x7f49, (q15_t)0xf677, - (q15_t)0x7f47, (q15_t)0xf66a, (q15_t)0x7f45, (q15_t)0xf65e, (q15_t)0x7f43, (q15_t)0xf651, (q15_t)0x7f42, (q15_t)0xf645, - (q15_t)0x7f40, (q15_t)0xf639, (q15_t)0x7f3e, (q15_t)0xf62c, (q15_t)0x7f3c, (q15_t)0xf620, (q15_t)0x7f3a, (q15_t)0xf613, - (q15_t)0x7f38, (q15_t)0xf607, (q15_t)0x7f36, (q15_t)0xf5fa, (q15_t)0x7f34, (q15_t)0xf5ee, (q15_t)0x7f32, (q15_t)0xf5e2, - (q15_t)0x7f30, (q15_t)0xf5d5, (q15_t)0x7f2e, (q15_t)0xf5c9, (q15_t)0x7f2c, (q15_t)0xf5bc, (q15_t)0x7f2a, (q15_t)0xf5b0, - (q15_t)0x7f28, (q15_t)0xf5a4, (q15_t)0x7f26, (q15_t)0xf597, (q15_t)0x7f24, (q15_t)0xf58b, (q15_t)0x7f22, (q15_t)0xf57e, - (q15_t)0x7f20, (q15_t)0xf572, (q15_t)0x7f1e, (q15_t)0xf566, (q15_t)0x7f1c, (q15_t)0xf559, (q15_t)0x7f19, (q15_t)0xf54d, - (q15_t)0x7f17, (q15_t)0xf540, (q15_t)0x7f15, (q15_t)0xf534, (q15_t)0x7f13, (q15_t)0xf528, (q15_t)0x7f11, (q15_t)0xf51b, - (q15_t)0x7f0f, (q15_t)0xf50f, (q15_t)0x7f0d, (q15_t)0xf503, (q15_t)0x7f0a, (q15_t)0xf4f6, (q15_t)0x7f08, (q15_t)0xf4ea, - (q15_t)0x7f06, (q15_t)0xf4dd, (q15_t)0x7f04, (q15_t)0xf4d1, (q15_t)0x7f02, (q15_t)0xf4c5, (q15_t)0x7f00, (q15_t)0xf4b8, - (q15_t)0x7efd, (q15_t)0xf4ac, (q15_t)0x7efb, (q15_t)0xf4a0, (q15_t)0x7ef9, (q15_t)0xf493, (q15_t)0x7ef7, (q15_t)0xf487, - (q15_t)0x7ef4, (q15_t)0xf47b, (q15_t)0x7ef2, (q15_t)0xf46e, (q15_t)0x7ef0, (q15_t)0xf462, (q15_t)0x7eed, (q15_t)0xf455, - (q15_t)0x7eeb, (q15_t)0xf449, (q15_t)0x7ee9, (q15_t)0xf43d, (q15_t)0x7ee7, (q15_t)0xf430, (q15_t)0x7ee4, (q15_t)0xf424, - (q15_t)0x7ee2, (q15_t)0xf418, (q15_t)0x7ee0, (q15_t)0xf40b, (q15_t)0x7edd, (q15_t)0xf3ff, (q15_t)0x7edb, (q15_t)0xf3f3, - (q15_t)0x7ed8, (q15_t)0xf3e6, (q15_t)0x7ed6, (q15_t)0xf3da, (q15_t)0x7ed4, (q15_t)0xf3ce, (q15_t)0x7ed1, (q15_t)0xf3c1, - (q15_t)0x7ecf, (q15_t)0xf3b5, (q15_t)0x7ecc, (q15_t)0xf3a9, (q15_t)0x7eca, (q15_t)0xf39c, (q15_t)0x7ec8, (q15_t)0xf390, - (q15_t)0x7ec5, (q15_t)0xf384, (q15_t)0x7ec3, (q15_t)0xf377, (q15_t)0x7ec0, (q15_t)0xf36b, (q15_t)0x7ebe, (q15_t)0xf35f, - (q15_t)0x7ebb, (q15_t)0xf352, (q15_t)0x7eb9, (q15_t)0xf346, (q15_t)0x7eb6, (q15_t)0xf33a, (q15_t)0x7eb4, (q15_t)0xf32d, - (q15_t)0x7eb1, (q15_t)0xf321, (q15_t)0x7eaf, (q15_t)0xf315, (q15_t)0x7eac, (q15_t)0xf308, (q15_t)0x7eaa, (q15_t)0xf2fc, - (q15_t)0x7ea7, (q15_t)0xf2f0, (q15_t)0x7ea5, (q15_t)0xf2e4, (q15_t)0x7ea2, (q15_t)0xf2d7, (q15_t)0x7e9f, (q15_t)0xf2cb, - (q15_t)0x7e9d, (q15_t)0xf2bf, (q15_t)0x7e9a, (q15_t)0xf2b2, (q15_t)0x7e98, (q15_t)0xf2a6, (q15_t)0x7e95, (q15_t)0xf29a, - (q15_t)0x7e92, (q15_t)0xf28e, (q15_t)0x7e90, (q15_t)0xf281, (q15_t)0x7e8d, (q15_t)0xf275, (q15_t)0x7e8a, (q15_t)0xf269, - (q15_t)0x7e88, (q15_t)0xf25c, (q15_t)0x7e85, (q15_t)0xf250, (q15_t)0x7e82, (q15_t)0xf244, (q15_t)0x7e80, (q15_t)0xf238, - (q15_t)0x7e7d, (q15_t)0xf22b, (q15_t)0x7e7a, (q15_t)0xf21f, (q15_t)0x7e77, (q15_t)0xf213, (q15_t)0x7e75, (q15_t)0xf207, - (q15_t)0x7e72, (q15_t)0xf1fa, (q15_t)0x7e6f, (q15_t)0xf1ee, (q15_t)0x7e6c, (q15_t)0xf1e2, (q15_t)0x7e6a, (q15_t)0xf1d5, - (q15_t)0x7e67, (q15_t)0xf1c9, (q15_t)0x7e64, (q15_t)0xf1bd, (q15_t)0x7e61, (q15_t)0xf1b1, (q15_t)0x7e5e, (q15_t)0xf1a4, - (q15_t)0x7e5c, (q15_t)0xf198, (q15_t)0x7e59, (q15_t)0xf18c, (q15_t)0x7e56, (q15_t)0xf180, (q15_t)0x7e53, (q15_t)0xf174, - (q15_t)0x7e50, (q15_t)0xf167, (q15_t)0x7e4d, (q15_t)0xf15b, (q15_t)0x7e4a, (q15_t)0xf14f, (q15_t)0x7e48, (q15_t)0xf143, - (q15_t)0x7e45, (q15_t)0xf136, (q15_t)0x7e42, (q15_t)0xf12a, (q15_t)0x7e3f, (q15_t)0xf11e, (q15_t)0x7e3c, (q15_t)0xf112, - (q15_t)0x7e39, (q15_t)0xf105, (q15_t)0x7e36, (q15_t)0xf0f9, (q15_t)0x7e33, (q15_t)0xf0ed, (q15_t)0x7e30, (q15_t)0xf0e1, - (q15_t)0x7e2d, (q15_t)0xf0d5, (q15_t)0x7e2a, (q15_t)0xf0c8, (q15_t)0x7e27, (q15_t)0xf0bc, (q15_t)0x7e24, (q15_t)0xf0b0, - (q15_t)0x7e21, (q15_t)0xf0a4, (q15_t)0x7e1e, (q15_t)0xf098, (q15_t)0x7e1b, (q15_t)0xf08b, (q15_t)0x7e18, (q15_t)0xf07f, - (q15_t)0x7e15, (q15_t)0xf073, (q15_t)0x7e12, (q15_t)0xf067, (q15_t)0x7e0f, (q15_t)0xf05b, (q15_t)0x7e0c, (q15_t)0xf04e, - (q15_t)0x7e09, (q15_t)0xf042, (q15_t)0x7e06, (q15_t)0xf036, (q15_t)0x7e03, (q15_t)0xf02a, (q15_t)0x7dff, (q15_t)0xf01e, - (q15_t)0x7dfc, (q15_t)0xf012, (q15_t)0x7df9, (q15_t)0xf005, (q15_t)0x7df6, (q15_t)0xeff9, (q15_t)0x7df3, (q15_t)0xefed, - (q15_t)0x7df0, (q15_t)0xefe1, (q15_t)0x7ded, (q15_t)0xefd5, (q15_t)0x7de9, (q15_t)0xefc9, (q15_t)0x7de6, (q15_t)0xefbc, - (q15_t)0x7de3, (q15_t)0xefb0, (q15_t)0x7de0, (q15_t)0xefa4, (q15_t)0x7ddd, (q15_t)0xef98, (q15_t)0x7dd9, (q15_t)0xef8c, - (q15_t)0x7dd6, (q15_t)0xef80, (q15_t)0x7dd3, (q15_t)0xef74, (q15_t)0x7dd0, (q15_t)0xef67, (q15_t)0x7dcc, (q15_t)0xef5b, - (q15_t)0x7dc9, (q15_t)0xef4f, (q15_t)0x7dc6, (q15_t)0xef43, (q15_t)0x7dc2, (q15_t)0xef37, (q15_t)0x7dbf, (q15_t)0xef2b, - (q15_t)0x7dbc, (q15_t)0xef1f, (q15_t)0x7db9, (q15_t)0xef13, (q15_t)0x7db5, (q15_t)0xef06, (q15_t)0x7db2, (q15_t)0xeefa, - (q15_t)0x7daf, (q15_t)0xeeee, (q15_t)0x7dab, (q15_t)0xeee2, (q15_t)0x7da8, (q15_t)0xeed6, (q15_t)0x7da4, (q15_t)0xeeca, - (q15_t)0x7da1, (q15_t)0xeebe, (q15_t)0x7d9e, (q15_t)0xeeb2, (q15_t)0x7d9a, (q15_t)0xeea6, (q15_t)0x7d97, (q15_t)0xee99, - (q15_t)0x7d93, (q15_t)0xee8d, (q15_t)0x7d90, (q15_t)0xee81, (q15_t)0x7d8d, (q15_t)0xee75, (q15_t)0x7d89, (q15_t)0xee69, - (q15_t)0x7d86, (q15_t)0xee5d, (q15_t)0x7d82, (q15_t)0xee51, (q15_t)0x7d7f, (q15_t)0xee45, (q15_t)0x7d7b, (q15_t)0xee39, - (q15_t)0x7d78, (q15_t)0xee2d, (q15_t)0x7d74, (q15_t)0xee21, (q15_t)0x7d71, (q15_t)0xee15, (q15_t)0x7d6d, (q15_t)0xee09, - (q15_t)0x7d6a, (q15_t)0xedfc, (q15_t)0x7d66, (q15_t)0xedf0, (q15_t)0x7d63, (q15_t)0xede4, (q15_t)0x7d5f, (q15_t)0xedd8, - (q15_t)0x7d5b, (q15_t)0xedcc, (q15_t)0x7d58, (q15_t)0xedc0, (q15_t)0x7d54, (q15_t)0xedb4, (q15_t)0x7d51, (q15_t)0xeda8, - (q15_t)0x7d4d, (q15_t)0xed9c, (q15_t)0x7d49, (q15_t)0xed90, (q15_t)0x7d46, (q15_t)0xed84, (q15_t)0x7d42, (q15_t)0xed78, - (q15_t)0x7d3f, (q15_t)0xed6c, (q15_t)0x7d3b, (q15_t)0xed60, (q15_t)0x7d37, (q15_t)0xed54, (q15_t)0x7d34, (q15_t)0xed48, - (q15_t)0x7d30, (q15_t)0xed3c, (q15_t)0x7d2c, (q15_t)0xed30, (q15_t)0x7d28, (q15_t)0xed24, (q15_t)0x7d25, (q15_t)0xed18, - (q15_t)0x7d21, (q15_t)0xed0c, (q15_t)0x7d1d, (q15_t)0xed00, (q15_t)0x7d1a, (q15_t)0xecf4, (q15_t)0x7d16, (q15_t)0xece8, - (q15_t)0x7d12, (q15_t)0xecdc, (q15_t)0x7d0e, (q15_t)0xecd0, (q15_t)0x7d0b, (q15_t)0xecc4, (q15_t)0x7d07, (q15_t)0xecb8, - (q15_t)0x7d03, (q15_t)0xecac, (q15_t)0x7cff, (q15_t)0xeca0, (q15_t)0x7cfb, (q15_t)0xec94, (q15_t)0x7cf8, (q15_t)0xec88, - (q15_t)0x7cf4, (q15_t)0xec7c, (q15_t)0x7cf0, (q15_t)0xec70, (q15_t)0x7cec, (q15_t)0xec64, (q15_t)0x7ce8, (q15_t)0xec58, - (q15_t)0x7ce4, (q15_t)0xec4c, (q15_t)0x7ce0, (q15_t)0xec40, (q15_t)0x7cdd, (q15_t)0xec34, (q15_t)0x7cd9, (q15_t)0xec28, - (q15_t)0x7cd5, (q15_t)0xec1c, (q15_t)0x7cd1, (q15_t)0xec10, (q15_t)0x7ccd, (q15_t)0xec05, (q15_t)0x7cc9, (q15_t)0xebf9, - (q15_t)0x7cc5, (q15_t)0xebed, (q15_t)0x7cc1, (q15_t)0xebe1, (q15_t)0x7cbd, (q15_t)0xebd5, (q15_t)0x7cb9, (q15_t)0xebc9, - (q15_t)0x7cb5, (q15_t)0xebbd, (q15_t)0x7cb1, (q15_t)0xebb1, (q15_t)0x7cad, (q15_t)0xeba5, (q15_t)0x7ca9, (q15_t)0xeb99, - (q15_t)0x7ca5, (q15_t)0xeb8d, (q15_t)0x7ca1, (q15_t)0xeb81, (q15_t)0x7c9d, (q15_t)0xeb75, (q15_t)0x7c99, (q15_t)0xeb6a, - (q15_t)0x7c95, (q15_t)0xeb5e, (q15_t)0x7c91, (q15_t)0xeb52, (q15_t)0x7c8d, (q15_t)0xeb46, (q15_t)0x7c89, (q15_t)0xeb3a, - (q15_t)0x7c85, (q15_t)0xeb2e, (q15_t)0x7c81, (q15_t)0xeb22, (q15_t)0x7c7d, (q15_t)0xeb16, (q15_t)0x7c79, (q15_t)0xeb0a, - (q15_t)0x7c74, (q15_t)0xeaff, (q15_t)0x7c70, (q15_t)0xeaf3, (q15_t)0x7c6c, (q15_t)0xeae7, (q15_t)0x7c68, (q15_t)0xeadb, - (q15_t)0x7c64, (q15_t)0xeacf, (q15_t)0x7c60, (q15_t)0xeac3, (q15_t)0x7c5b, (q15_t)0xeab7, (q15_t)0x7c57, (q15_t)0xeaac, - (q15_t)0x7c53, (q15_t)0xeaa0, (q15_t)0x7c4f, (q15_t)0xea94, (q15_t)0x7c4b, (q15_t)0xea88, (q15_t)0x7c46, (q15_t)0xea7c, - (q15_t)0x7c42, (q15_t)0xea70, (q15_t)0x7c3e, (q15_t)0xea65, (q15_t)0x7c3a, (q15_t)0xea59, (q15_t)0x7c36, (q15_t)0xea4d, - (q15_t)0x7c31, (q15_t)0xea41, (q15_t)0x7c2d, (q15_t)0xea35, (q15_t)0x7c29, (q15_t)0xea29, (q15_t)0x7c24, (q15_t)0xea1e, - (q15_t)0x7c20, (q15_t)0xea12, (q15_t)0x7c1c, (q15_t)0xea06, (q15_t)0x7c17, (q15_t)0xe9fa, (q15_t)0x7c13, (q15_t)0xe9ee, - (q15_t)0x7c0f, (q15_t)0xe9e3, (q15_t)0x7c0a, (q15_t)0xe9d7, (q15_t)0x7c06, (q15_t)0xe9cb, (q15_t)0x7c02, (q15_t)0xe9bf, - (q15_t)0x7bfd, (q15_t)0xe9b4, (q15_t)0x7bf9, (q15_t)0xe9a8, (q15_t)0x7bf5, (q15_t)0xe99c, (q15_t)0x7bf0, (q15_t)0xe990, - (q15_t)0x7bec, (q15_t)0xe984, (q15_t)0x7be7, (q15_t)0xe979, (q15_t)0x7be3, (q15_t)0xe96d, (q15_t)0x7bde, (q15_t)0xe961, - (q15_t)0x7bda, (q15_t)0xe955, (q15_t)0x7bd6, (q15_t)0xe94a, (q15_t)0x7bd1, (q15_t)0xe93e, (q15_t)0x7bcd, (q15_t)0xe932, - (q15_t)0x7bc8, (q15_t)0xe926, (q15_t)0x7bc4, (q15_t)0xe91b, (q15_t)0x7bbf, (q15_t)0xe90f, (q15_t)0x7bbb, (q15_t)0xe903, - (q15_t)0x7bb6, (q15_t)0xe8f7, (q15_t)0x7bb2, (q15_t)0xe8ec, (q15_t)0x7bad, (q15_t)0xe8e0, (q15_t)0x7ba9, (q15_t)0xe8d4, - (q15_t)0x7ba4, (q15_t)0xe8c9, (q15_t)0x7b9f, (q15_t)0xe8bd, (q15_t)0x7b9b, (q15_t)0xe8b1, (q15_t)0x7b96, (q15_t)0xe8a5, - (q15_t)0x7b92, (q15_t)0xe89a, (q15_t)0x7b8d, (q15_t)0xe88e, (q15_t)0x7b88, (q15_t)0xe882, (q15_t)0x7b84, (q15_t)0xe877, - (q15_t)0x7b7f, (q15_t)0xe86b, (q15_t)0x7b7b, (q15_t)0xe85f, (q15_t)0x7b76, (q15_t)0xe854, (q15_t)0x7b71, (q15_t)0xe848, - (q15_t)0x7b6d, (q15_t)0xe83c, (q15_t)0x7b68, (q15_t)0xe831, (q15_t)0x7b63, (q15_t)0xe825, (q15_t)0x7b5f, (q15_t)0xe819, - (q15_t)0x7b5a, (q15_t)0xe80e, (q15_t)0x7b55, (q15_t)0xe802, (q15_t)0x7b50, (q15_t)0xe7f6, (q15_t)0x7b4c, (q15_t)0xe7eb, - (q15_t)0x7b47, (q15_t)0xe7df, (q15_t)0x7b42, (q15_t)0xe7d3, (q15_t)0x7b3e, (q15_t)0xe7c8, (q15_t)0x7b39, (q15_t)0xe7bc, - (q15_t)0x7b34, (q15_t)0xe7b1, (q15_t)0x7b2f, (q15_t)0xe7a5, (q15_t)0x7b2a, (q15_t)0xe799, (q15_t)0x7b26, (q15_t)0xe78e, - (q15_t)0x7b21, (q15_t)0xe782, (q15_t)0x7b1c, (q15_t)0xe777, (q15_t)0x7b17, (q15_t)0xe76b, (q15_t)0x7b12, (q15_t)0xe75f, - (q15_t)0x7b0e, (q15_t)0xe754, (q15_t)0x7b09, (q15_t)0xe748, (q15_t)0x7b04, (q15_t)0xe73d, (q15_t)0x7aff, (q15_t)0xe731, - (q15_t)0x7afa, (q15_t)0xe725, (q15_t)0x7af5, (q15_t)0xe71a, (q15_t)0x7af0, (q15_t)0xe70e, (q15_t)0x7aeb, (q15_t)0xe703, - (q15_t)0x7ae6, (q15_t)0xe6f7, (q15_t)0x7ae2, (q15_t)0xe6ec, (q15_t)0x7add, (q15_t)0xe6e0, (q15_t)0x7ad8, (q15_t)0xe6d4, - (q15_t)0x7ad3, (q15_t)0xe6c9, (q15_t)0x7ace, (q15_t)0xe6bd, (q15_t)0x7ac9, (q15_t)0xe6b2, (q15_t)0x7ac4, (q15_t)0xe6a6, - (q15_t)0x7abf, (q15_t)0xe69b, (q15_t)0x7aba, (q15_t)0xe68f, (q15_t)0x7ab5, (q15_t)0xe684, (q15_t)0x7ab0, (q15_t)0xe678, - (q15_t)0x7aab, (q15_t)0xe66d, (q15_t)0x7aa6, (q15_t)0xe661, (q15_t)0x7aa1, (q15_t)0xe656, (q15_t)0x7a9c, (q15_t)0xe64a, - (q15_t)0x7a97, (q15_t)0xe63f, (q15_t)0x7a92, (q15_t)0xe633, (q15_t)0x7a8d, (q15_t)0xe628, (q15_t)0x7a88, (q15_t)0xe61c, - (q15_t)0x7a82, (q15_t)0xe611, (q15_t)0x7a7d, (q15_t)0xe605, (q15_t)0x7a78, (q15_t)0xe5fa, (q15_t)0x7a73, (q15_t)0xe5ee, - (q15_t)0x7a6e, (q15_t)0xe5e3, (q15_t)0x7a69, (q15_t)0xe5d7, (q15_t)0x7a64, (q15_t)0xe5cc, (q15_t)0x7a5f, (q15_t)0xe5c0, - (q15_t)0x7a59, (q15_t)0xe5b5, (q15_t)0x7a54, (q15_t)0xe5a9, (q15_t)0x7a4f, (q15_t)0xe59e, (q15_t)0x7a4a, (q15_t)0xe592, - (q15_t)0x7a45, (q15_t)0xe587, (q15_t)0x7a3f, (q15_t)0xe57c, (q15_t)0x7a3a, (q15_t)0xe570, (q15_t)0x7a35, (q15_t)0xe565, - (q15_t)0x7a30, (q15_t)0xe559, (q15_t)0x7a2b, (q15_t)0xe54e, (q15_t)0x7a25, (q15_t)0xe542, (q15_t)0x7a20, (q15_t)0xe537, - (q15_t)0x7a1b, (q15_t)0xe52c, (q15_t)0x7a16, (q15_t)0xe520, (q15_t)0x7a10, (q15_t)0xe515, (q15_t)0x7a0b, (q15_t)0xe509, - (q15_t)0x7a06, (q15_t)0xe4fe, (q15_t)0x7a00, (q15_t)0xe4f3, (q15_t)0x79fb, (q15_t)0xe4e7, (q15_t)0x79f6, (q15_t)0xe4dc, - (q15_t)0x79f0, (q15_t)0xe4d0, (q15_t)0x79eb, (q15_t)0xe4c5, (q15_t)0x79e6, (q15_t)0xe4ba, (q15_t)0x79e0, (q15_t)0xe4ae, - (q15_t)0x79db, (q15_t)0xe4a3, (q15_t)0x79d6, (q15_t)0xe498, (q15_t)0x79d0, (q15_t)0xe48c, (q15_t)0x79cb, (q15_t)0xe481, - (q15_t)0x79c5, (q15_t)0xe476, (q15_t)0x79c0, (q15_t)0xe46a, (q15_t)0x79bb, (q15_t)0xe45f, (q15_t)0x79b5, (q15_t)0xe454, - (q15_t)0x79b0, (q15_t)0xe448, (q15_t)0x79aa, (q15_t)0xe43d, (q15_t)0x79a5, (q15_t)0xe432, (q15_t)0x799f, (q15_t)0xe426, - (q15_t)0x799a, (q15_t)0xe41b, (q15_t)0x7994, (q15_t)0xe410, (q15_t)0x798f, (q15_t)0xe404, (q15_t)0x7989, (q15_t)0xe3f9, - (q15_t)0x7984, (q15_t)0xe3ee, (q15_t)0x797e, (q15_t)0xe3e2, (q15_t)0x7979, (q15_t)0xe3d7, (q15_t)0x7973, (q15_t)0xe3cc, - (q15_t)0x796e, (q15_t)0xe3c1, (q15_t)0x7968, (q15_t)0xe3b5, (q15_t)0x7963, (q15_t)0xe3aa, (q15_t)0x795d, (q15_t)0xe39f, - (q15_t)0x7958, (q15_t)0xe394, (q15_t)0x7952, (q15_t)0xe388, (q15_t)0x794c, (q15_t)0xe37d, (q15_t)0x7947, (q15_t)0xe372, - (q15_t)0x7941, (q15_t)0xe367, (q15_t)0x793b, (q15_t)0xe35b, (q15_t)0x7936, (q15_t)0xe350, (q15_t)0x7930, (q15_t)0xe345, - (q15_t)0x792b, (q15_t)0xe33a, (q15_t)0x7925, (q15_t)0xe32e, (q15_t)0x791f, (q15_t)0xe323, (q15_t)0x791a, (q15_t)0xe318, - (q15_t)0x7914, (q15_t)0xe30d, (q15_t)0x790e, (q15_t)0xe301, (q15_t)0x7909, (q15_t)0xe2f6, (q15_t)0x7903, (q15_t)0xe2eb, - (q15_t)0x78fd, (q15_t)0xe2e0, (q15_t)0x78f7, (q15_t)0xe2d5, (q15_t)0x78f2, (q15_t)0xe2ca, (q15_t)0x78ec, (q15_t)0xe2be, - (q15_t)0x78e6, (q15_t)0xe2b3, (q15_t)0x78e0, (q15_t)0xe2a8, (q15_t)0x78db, (q15_t)0xe29d, (q15_t)0x78d5, (q15_t)0xe292, - (q15_t)0x78cf, (q15_t)0xe287, (q15_t)0x78c9, (q15_t)0xe27b, (q15_t)0x78c3, (q15_t)0xe270, (q15_t)0x78be, (q15_t)0xe265, - (q15_t)0x78b8, (q15_t)0xe25a, (q15_t)0x78b2, (q15_t)0xe24f, (q15_t)0x78ac, (q15_t)0xe244, (q15_t)0x78a6, (q15_t)0xe239, - (q15_t)0x78a1, (q15_t)0xe22d, (q15_t)0x789b, (q15_t)0xe222, (q15_t)0x7895, (q15_t)0xe217, (q15_t)0x788f, (q15_t)0xe20c, - (q15_t)0x7889, (q15_t)0xe201, (q15_t)0x7883, (q15_t)0xe1f6, (q15_t)0x787d, (q15_t)0xe1eb, (q15_t)0x7877, (q15_t)0xe1e0, - (q15_t)0x7871, (q15_t)0xe1d5, (q15_t)0x786b, (q15_t)0xe1ca, (q15_t)0x7866, (q15_t)0xe1be, (q15_t)0x7860, (q15_t)0xe1b3, - (q15_t)0x785a, (q15_t)0xe1a8, (q15_t)0x7854, (q15_t)0xe19d, (q15_t)0x784e, (q15_t)0xe192, (q15_t)0x7848, (q15_t)0xe187, - (q15_t)0x7842, (q15_t)0xe17c, (q15_t)0x783c, (q15_t)0xe171, (q15_t)0x7836, (q15_t)0xe166, (q15_t)0x7830, (q15_t)0xe15b, - (q15_t)0x782a, (q15_t)0xe150, (q15_t)0x7824, (q15_t)0xe145, (q15_t)0x781e, (q15_t)0xe13a, (q15_t)0x7818, (q15_t)0xe12f, - (q15_t)0x7812, (q15_t)0xe124, (q15_t)0x780b, (q15_t)0xe119, (q15_t)0x7805, (q15_t)0xe10e, (q15_t)0x77ff, (q15_t)0xe103, - (q15_t)0x77f9, (q15_t)0xe0f8, (q15_t)0x77f3, (q15_t)0xe0ed, (q15_t)0x77ed, (q15_t)0xe0e2, (q15_t)0x77e7, (q15_t)0xe0d7, - (q15_t)0x77e1, (q15_t)0xe0cc, (q15_t)0x77db, (q15_t)0xe0c1, (q15_t)0x77d5, (q15_t)0xe0b6, (q15_t)0x77ce, (q15_t)0xe0ab, - (q15_t)0x77c8, (q15_t)0xe0a0, (q15_t)0x77c2, (q15_t)0xe095, (q15_t)0x77bc, (q15_t)0xe08a, (q15_t)0x77b6, (q15_t)0xe07f, - (q15_t)0x77b0, (q15_t)0xe074, (q15_t)0x77a9, (q15_t)0xe069, (q15_t)0x77a3, (q15_t)0xe05e, (q15_t)0x779d, (q15_t)0xe054, - (q15_t)0x7797, (q15_t)0xe049, (q15_t)0x7790, (q15_t)0xe03e, (q15_t)0x778a, (q15_t)0xe033, (q15_t)0x7784, (q15_t)0xe028, - (q15_t)0x777e, (q15_t)0xe01d, (q15_t)0x7777, (q15_t)0xe012, (q15_t)0x7771, (q15_t)0xe007, (q15_t)0x776b, (q15_t)0xdffc, - (q15_t)0x7765, (q15_t)0xdff1, (q15_t)0x775e, (q15_t)0xdfe7, (q15_t)0x7758, (q15_t)0xdfdc, (q15_t)0x7752, (q15_t)0xdfd1, - (q15_t)0x774b, (q15_t)0xdfc6, (q15_t)0x7745, (q15_t)0xdfbb, (q15_t)0x773f, (q15_t)0xdfb0, (q15_t)0x7738, (q15_t)0xdfa5, - (q15_t)0x7732, (q15_t)0xdf9b, (q15_t)0x772c, (q15_t)0xdf90, (q15_t)0x7725, (q15_t)0xdf85, (q15_t)0x771f, (q15_t)0xdf7a, - (q15_t)0x7718, (q15_t)0xdf6f, (q15_t)0x7712, (q15_t)0xdf65, (q15_t)0x770c, (q15_t)0xdf5a, (q15_t)0x7705, (q15_t)0xdf4f, - (q15_t)0x76ff, (q15_t)0xdf44, (q15_t)0x76f8, (q15_t)0xdf39, (q15_t)0x76f2, (q15_t)0xdf2f, (q15_t)0x76eb, (q15_t)0xdf24, - (q15_t)0x76e5, (q15_t)0xdf19, (q15_t)0x76df, (q15_t)0xdf0e, (q15_t)0x76d8, (q15_t)0xdf03, (q15_t)0x76d2, (q15_t)0xdef9, - (q15_t)0x76cb, (q15_t)0xdeee, (q15_t)0x76c5, (q15_t)0xdee3, (q15_t)0x76be, (q15_t)0xded8, (q15_t)0x76b8, (q15_t)0xdece, - (q15_t)0x76b1, (q15_t)0xdec3, (q15_t)0x76ab, (q15_t)0xdeb8, (q15_t)0x76a4, (q15_t)0xdead, (q15_t)0x769d, (q15_t)0xdea3, - (q15_t)0x7697, (q15_t)0xde98, (q15_t)0x7690, (q15_t)0xde8d, (q15_t)0x768a, (q15_t)0xde83, (q15_t)0x7683, (q15_t)0xde78, - (q15_t)0x767d, (q15_t)0xde6d, (q15_t)0x7676, (q15_t)0xde62, (q15_t)0x766f, (q15_t)0xde58, (q15_t)0x7669, (q15_t)0xde4d, - (q15_t)0x7662, (q15_t)0xde42, (q15_t)0x765c, (q15_t)0xde38, (q15_t)0x7655, (q15_t)0xde2d, (q15_t)0x764e, (q15_t)0xde22, - (q15_t)0x7648, (q15_t)0xde18, (q15_t)0x7641, (q15_t)0xde0d, (q15_t)0x763a, (q15_t)0xde02, (q15_t)0x7634, (q15_t)0xddf8, - (q15_t)0x762d, (q15_t)0xdded, (q15_t)0x7626, (q15_t)0xdde2, (q15_t)0x7620, (q15_t)0xddd8, (q15_t)0x7619, (q15_t)0xddcd, - (q15_t)0x7612, (q15_t)0xddc3, (q15_t)0x760b, (q15_t)0xddb8, (q15_t)0x7605, (q15_t)0xddad, (q15_t)0x75fe, (q15_t)0xdda3, - (q15_t)0x75f7, (q15_t)0xdd98, (q15_t)0x75f0, (q15_t)0xdd8e, (q15_t)0x75ea, (q15_t)0xdd83, (q15_t)0x75e3, (q15_t)0xdd78, - (q15_t)0x75dc, (q15_t)0xdd6e, (q15_t)0x75d5, (q15_t)0xdd63, (q15_t)0x75ce, (q15_t)0xdd59, (q15_t)0x75c8, (q15_t)0xdd4e, - (q15_t)0x75c1, (q15_t)0xdd44, (q15_t)0x75ba, (q15_t)0xdd39, (q15_t)0x75b3, (q15_t)0xdd2e, (q15_t)0x75ac, (q15_t)0xdd24, - (q15_t)0x75a5, (q15_t)0xdd19, (q15_t)0x759f, (q15_t)0xdd0f, (q15_t)0x7598, (q15_t)0xdd04, (q15_t)0x7591, (q15_t)0xdcfa, - (q15_t)0x758a, (q15_t)0xdcef, (q15_t)0x7583, (q15_t)0xdce5, (q15_t)0x757c, (q15_t)0xdcda, (q15_t)0x7575, (q15_t)0xdcd0, - (q15_t)0x756e, (q15_t)0xdcc5, (q15_t)0x7567, (q15_t)0xdcbb, (q15_t)0x7561, (q15_t)0xdcb0, (q15_t)0x755a, (q15_t)0xdca6, - (q15_t)0x7553, (q15_t)0xdc9b, (q15_t)0x754c, (q15_t)0xdc91, (q15_t)0x7545, (q15_t)0xdc86, (q15_t)0x753e, (q15_t)0xdc7c, - (q15_t)0x7537, (q15_t)0xdc72, (q15_t)0x7530, (q15_t)0xdc67, (q15_t)0x7529, (q15_t)0xdc5d, (q15_t)0x7522, (q15_t)0xdc52, - (q15_t)0x751b, (q15_t)0xdc48, (q15_t)0x7514, (q15_t)0xdc3d, (q15_t)0x750d, (q15_t)0xdc33, (q15_t)0x7506, (q15_t)0xdc29, - (q15_t)0x74ff, (q15_t)0xdc1e, (q15_t)0x74f8, (q15_t)0xdc14, (q15_t)0x74f1, (q15_t)0xdc09, (q15_t)0x74ea, (q15_t)0xdbff, - (q15_t)0x74e2, (q15_t)0xdbf5, (q15_t)0x74db, (q15_t)0xdbea, (q15_t)0x74d4, (q15_t)0xdbe0, (q15_t)0x74cd, (q15_t)0xdbd5, - (q15_t)0x74c6, (q15_t)0xdbcb, (q15_t)0x74bf, (q15_t)0xdbc1, (q15_t)0x74b8, (q15_t)0xdbb6, (q15_t)0x74b1, (q15_t)0xdbac, - (q15_t)0x74aa, (q15_t)0xdba2, (q15_t)0x74a2, (q15_t)0xdb97, (q15_t)0x749b, (q15_t)0xdb8d, (q15_t)0x7494, (q15_t)0xdb83, - (q15_t)0x748d, (q15_t)0xdb78, (q15_t)0x7486, (q15_t)0xdb6e, (q15_t)0x747f, (q15_t)0xdb64, (q15_t)0x7477, (q15_t)0xdb59, - (q15_t)0x7470, (q15_t)0xdb4f, (q15_t)0x7469, (q15_t)0xdb45, (q15_t)0x7462, (q15_t)0xdb3b, (q15_t)0x745b, (q15_t)0xdb30, - (q15_t)0x7453, (q15_t)0xdb26, (q15_t)0x744c, (q15_t)0xdb1c, (q15_t)0x7445, (q15_t)0xdb11, (q15_t)0x743e, (q15_t)0xdb07, - (q15_t)0x7436, (q15_t)0xdafd, (q15_t)0x742f, (q15_t)0xdaf3, (q15_t)0x7428, (q15_t)0xdae8, (q15_t)0x7420, (q15_t)0xdade, - (q15_t)0x7419, (q15_t)0xdad4, (q15_t)0x7412, (q15_t)0xdaca, (q15_t)0x740b, (q15_t)0xdabf, (q15_t)0x7403, (q15_t)0xdab5, - (q15_t)0x73fc, (q15_t)0xdaab, (q15_t)0x73f5, (q15_t)0xdaa1, (q15_t)0x73ed, (q15_t)0xda97, (q15_t)0x73e6, (q15_t)0xda8c, - (q15_t)0x73df, (q15_t)0xda82, (q15_t)0x73d7, (q15_t)0xda78, (q15_t)0x73d0, (q15_t)0xda6e, (q15_t)0x73c8, (q15_t)0xda64, - (q15_t)0x73c1, (q15_t)0xda5a, (q15_t)0x73ba, (q15_t)0xda4f, (q15_t)0x73b2, (q15_t)0xda45, (q15_t)0x73ab, (q15_t)0xda3b, - (q15_t)0x73a3, (q15_t)0xda31, (q15_t)0x739c, (q15_t)0xda27, (q15_t)0x7395, (q15_t)0xda1d, (q15_t)0x738d, (q15_t)0xda13, - (q15_t)0x7386, (q15_t)0xda08, (q15_t)0x737e, (q15_t)0xd9fe, (q15_t)0x7377, (q15_t)0xd9f4, (q15_t)0x736f, (q15_t)0xd9ea, - (q15_t)0x7368, (q15_t)0xd9e0, (q15_t)0x7360, (q15_t)0xd9d6, (q15_t)0x7359, (q15_t)0xd9cc, (q15_t)0x7351, (q15_t)0xd9c2, - (q15_t)0x734a, (q15_t)0xd9b8, (q15_t)0x7342, (q15_t)0xd9ae, (q15_t)0x733b, (q15_t)0xd9a4, (q15_t)0x7333, (q15_t)0xd99a, - (q15_t)0x732c, (q15_t)0xd98f, (q15_t)0x7324, (q15_t)0xd985, (q15_t)0x731d, (q15_t)0xd97b, (q15_t)0x7315, (q15_t)0xd971, - (q15_t)0x730d, (q15_t)0xd967, (q15_t)0x7306, (q15_t)0xd95d, (q15_t)0x72fe, (q15_t)0xd953, (q15_t)0x72f7, (q15_t)0xd949, - (q15_t)0x72ef, (q15_t)0xd93f, (q15_t)0x72e7, (q15_t)0xd935, (q15_t)0x72e0, (q15_t)0xd92b, (q15_t)0x72d8, (q15_t)0xd921, - (q15_t)0x72d0, (q15_t)0xd917, (q15_t)0x72c9, (q15_t)0xd90d, (q15_t)0x72c1, (q15_t)0xd903, (q15_t)0x72ba, (q15_t)0xd8f9, - (q15_t)0x72b2, (q15_t)0xd8ef, (q15_t)0x72aa, (q15_t)0xd8e6, (q15_t)0x72a3, (q15_t)0xd8dc, (q15_t)0x729b, (q15_t)0xd8d2, - (q15_t)0x7293, (q15_t)0xd8c8, (q15_t)0x728b, (q15_t)0xd8be, (q15_t)0x7284, (q15_t)0xd8b4, (q15_t)0x727c, (q15_t)0xd8aa, - (q15_t)0x7274, (q15_t)0xd8a0, (q15_t)0x726d, (q15_t)0xd896, (q15_t)0x7265, (q15_t)0xd88c, (q15_t)0x725d, (q15_t)0xd882, - (q15_t)0x7255, (q15_t)0xd878, (q15_t)0x724e, (q15_t)0xd86f, (q15_t)0x7246, (q15_t)0xd865, (q15_t)0x723e, (q15_t)0xd85b, - (q15_t)0x7236, (q15_t)0xd851, (q15_t)0x722e, (q15_t)0xd847, (q15_t)0x7227, (q15_t)0xd83d, (q15_t)0x721f, (q15_t)0xd833, - (q15_t)0x7217, (q15_t)0xd82a, (q15_t)0x720f, (q15_t)0xd820, (q15_t)0x7207, (q15_t)0xd816, (q15_t)0x71ff, (q15_t)0xd80c, - (q15_t)0x71f8, (q15_t)0xd802, (q15_t)0x71f0, (q15_t)0xd7f8, (q15_t)0x71e8, (q15_t)0xd7ef, (q15_t)0x71e0, (q15_t)0xd7e5, - (q15_t)0x71d8, (q15_t)0xd7db, (q15_t)0x71d0, (q15_t)0xd7d1, (q15_t)0x71c8, (q15_t)0xd7c8, (q15_t)0x71c0, (q15_t)0xd7be, - (q15_t)0x71b9, (q15_t)0xd7b4, (q15_t)0x71b1, (q15_t)0xd7aa, (q15_t)0x71a9, (q15_t)0xd7a0, (q15_t)0x71a1, (q15_t)0xd797, - (q15_t)0x7199, (q15_t)0xd78d, (q15_t)0x7191, (q15_t)0xd783, (q15_t)0x7189, (q15_t)0xd77a, (q15_t)0x7181, (q15_t)0xd770, - (q15_t)0x7179, (q15_t)0xd766, (q15_t)0x7171, (q15_t)0xd75c, (q15_t)0x7169, (q15_t)0xd753, (q15_t)0x7161, (q15_t)0xd749, - (q15_t)0x7159, (q15_t)0xd73f, (q15_t)0x7151, (q15_t)0xd736, (q15_t)0x7149, (q15_t)0xd72c, (q15_t)0x7141, (q15_t)0xd722, - (q15_t)0x7139, (q15_t)0xd719, (q15_t)0x7131, (q15_t)0xd70f, (q15_t)0x7129, (q15_t)0xd705, (q15_t)0x7121, (q15_t)0xd6fc, - (q15_t)0x7119, (q15_t)0xd6f2, (q15_t)0x7111, (q15_t)0xd6e8, (q15_t)0x7109, (q15_t)0xd6df, (q15_t)0x7101, (q15_t)0xd6d5, - (q15_t)0x70f9, (q15_t)0xd6cb, (q15_t)0x70f0, (q15_t)0xd6c2, (q15_t)0x70e8, (q15_t)0xd6b8, (q15_t)0x70e0, (q15_t)0xd6af, - (q15_t)0x70d8, (q15_t)0xd6a5, (q15_t)0x70d0, (q15_t)0xd69b, (q15_t)0x70c8, (q15_t)0xd692, (q15_t)0x70c0, (q15_t)0xd688, - (q15_t)0x70b8, (q15_t)0xd67f, (q15_t)0x70af, (q15_t)0xd675, (q15_t)0x70a7, (q15_t)0xd66c, (q15_t)0x709f, (q15_t)0xd662, - (q15_t)0x7097, (q15_t)0xd659, (q15_t)0x708f, (q15_t)0xd64f, (q15_t)0x7087, (q15_t)0xd645, (q15_t)0x707e, (q15_t)0xd63c, - (q15_t)0x7076, (q15_t)0xd632, (q15_t)0x706e, (q15_t)0xd629, (q15_t)0x7066, (q15_t)0xd61f, (q15_t)0x705d, (q15_t)0xd616, - (q15_t)0x7055, (q15_t)0xd60c, (q15_t)0x704d, (q15_t)0xd603, (q15_t)0x7045, (q15_t)0xd5f9, (q15_t)0x703c, (q15_t)0xd5f0, - (q15_t)0x7034, (q15_t)0xd5e6, (q15_t)0x702c, (q15_t)0xd5dd, (q15_t)0x7024, (q15_t)0xd5d4, (q15_t)0x701b, (q15_t)0xd5ca, - (q15_t)0x7013, (q15_t)0xd5c1, (q15_t)0x700b, (q15_t)0xd5b7, (q15_t)0x7002, (q15_t)0xd5ae, (q15_t)0x6ffa, (q15_t)0xd5a4, - (q15_t)0x6ff2, (q15_t)0xd59b, (q15_t)0x6fea, (q15_t)0xd592, (q15_t)0x6fe1, (q15_t)0xd588, (q15_t)0x6fd9, (q15_t)0xd57f, - (q15_t)0x6fd0, (q15_t)0xd575, (q15_t)0x6fc8, (q15_t)0xd56c, (q15_t)0x6fc0, (q15_t)0xd563, (q15_t)0x6fb7, (q15_t)0xd559, - (q15_t)0x6faf, (q15_t)0xd550, (q15_t)0x6fa7, (q15_t)0xd547, (q15_t)0x6f9e, (q15_t)0xd53d, (q15_t)0x6f96, (q15_t)0xd534, - (q15_t)0x6f8d, (q15_t)0xd52a, (q15_t)0x6f85, (q15_t)0xd521, (q15_t)0x6f7d, (q15_t)0xd518, (q15_t)0x6f74, (q15_t)0xd50e, - (q15_t)0x6f6c, (q15_t)0xd505, (q15_t)0x6f63, (q15_t)0xd4fc, (q15_t)0x6f5b, (q15_t)0xd4f3, (q15_t)0x6f52, (q15_t)0xd4e9, - (q15_t)0x6f4a, (q15_t)0xd4e0, (q15_t)0x6f41, (q15_t)0xd4d7, (q15_t)0x6f39, (q15_t)0xd4cd, (q15_t)0x6f30, (q15_t)0xd4c4, - (q15_t)0x6f28, (q15_t)0xd4bb, (q15_t)0x6f20, (q15_t)0xd4b2, (q15_t)0x6f17, (q15_t)0xd4a8, (q15_t)0x6f0e, (q15_t)0xd49f, - (q15_t)0x6f06, (q15_t)0xd496, (q15_t)0x6efd, (q15_t)0xd48d, (q15_t)0x6ef5, (q15_t)0xd483, (q15_t)0x6eec, (q15_t)0xd47a, - (q15_t)0x6ee4, (q15_t)0xd471, (q15_t)0x6edb, (q15_t)0xd468, (q15_t)0x6ed3, (q15_t)0xd45f, (q15_t)0x6eca, (q15_t)0xd455, - (q15_t)0x6ec2, (q15_t)0xd44c, (q15_t)0x6eb9, (q15_t)0xd443, (q15_t)0x6eb0, (q15_t)0xd43a, (q15_t)0x6ea8, (q15_t)0xd431, - (q15_t)0x6e9f, (q15_t)0xd428, (q15_t)0x6e97, (q15_t)0xd41e, (q15_t)0x6e8e, (q15_t)0xd415, (q15_t)0x6e85, (q15_t)0xd40c, - (q15_t)0x6e7d, (q15_t)0xd403, (q15_t)0x6e74, (q15_t)0xd3fa, (q15_t)0x6e6b, (q15_t)0xd3f1, (q15_t)0x6e63, (q15_t)0xd3e8, - (q15_t)0x6e5a, (q15_t)0xd3df, (q15_t)0x6e51, (q15_t)0xd3d5, (q15_t)0x6e49, (q15_t)0xd3cc, (q15_t)0x6e40, (q15_t)0xd3c3, - (q15_t)0x6e37, (q15_t)0xd3ba, (q15_t)0x6e2f, (q15_t)0xd3b1, (q15_t)0x6e26, (q15_t)0xd3a8, (q15_t)0x6e1d, (q15_t)0xd39f, - (q15_t)0x6e15, (q15_t)0xd396, (q15_t)0x6e0c, (q15_t)0xd38d, (q15_t)0x6e03, (q15_t)0xd384, (q15_t)0x6dfa, (q15_t)0xd37b, - (q15_t)0x6df2, (q15_t)0xd372, (q15_t)0x6de9, (q15_t)0xd369, (q15_t)0x6de0, (q15_t)0xd360, (q15_t)0x6dd7, (q15_t)0xd357, - (q15_t)0x6dcf, (q15_t)0xd34e, (q15_t)0x6dc6, (q15_t)0xd345, (q15_t)0x6dbd, (q15_t)0xd33c, (q15_t)0x6db4, (q15_t)0xd333, - (q15_t)0x6dab, (q15_t)0xd32a, (q15_t)0x6da3, (q15_t)0xd321, (q15_t)0x6d9a, (q15_t)0xd318, (q15_t)0x6d91, (q15_t)0xd30f, - (q15_t)0x6d88, (q15_t)0xd306, (q15_t)0x6d7f, (q15_t)0xd2fd, (q15_t)0x6d76, (q15_t)0xd2f4, (q15_t)0x6d6e, (q15_t)0xd2eb, - (q15_t)0x6d65, (q15_t)0xd2e2, (q15_t)0x6d5c, (q15_t)0xd2d9, (q15_t)0x6d53, (q15_t)0xd2d1, (q15_t)0x6d4a, (q15_t)0xd2c8, - (q15_t)0x6d41, (q15_t)0xd2bf, (q15_t)0x6d38, (q15_t)0xd2b6, (q15_t)0x6d2f, (q15_t)0xd2ad, (q15_t)0x6d27, (q15_t)0xd2a4, - (q15_t)0x6d1e, (q15_t)0xd29b, (q15_t)0x6d15, (q15_t)0xd292, (q15_t)0x6d0c, (q15_t)0xd28a, (q15_t)0x6d03, (q15_t)0xd281, - (q15_t)0x6cfa, (q15_t)0xd278, (q15_t)0x6cf1, (q15_t)0xd26f, (q15_t)0x6ce8, (q15_t)0xd266, (q15_t)0x6cdf, (q15_t)0xd25d, - (q15_t)0x6cd6, (q15_t)0xd255, (q15_t)0x6ccd, (q15_t)0xd24c, (q15_t)0x6cc4, (q15_t)0xd243, (q15_t)0x6cbb, (q15_t)0xd23a, - (q15_t)0x6cb2, (q15_t)0xd231, (q15_t)0x6ca9, (q15_t)0xd229, (q15_t)0x6ca0, (q15_t)0xd220, (q15_t)0x6c97, (q15_t)0xd217, - (q15_t)0x6c8e, (q15_t)0xd20e, (q15_t)0x6c85, (q15_t)0xd206, (q15_t)0x6c7c, (q15_t)0xd1fd, (q15_t)0x6c73, (q15_t)0xd1f4, - (q15_t)0x6c6a, (q15_t)0xd1eb, (q15_t)0x6c61, (q15_t)0xd1e3, (q15_t)0x6c58, (q15_t)0xd1da, (q15_t)0x6c4f, (q15_t)0xd1d1, - (q15_t)0x6c46, (q15_t)0xd1c9, (q15_t)0x6c3d, (q15_t)0xd1c0, (q15_t)0x6c34, (q15_t)0xd1b7, (q15_t)0x6c2b, (q15_t)0xd1af, - (q15_t)0x6c21, (q15_t)0xd1a6, (q15_t)0x6c18, (q15_t)0xd19d, (q15_t)0x6c0f, (q15_t)0xd195, (q15_t)0x6c06, (q15_t)0xd18c, - (q15_t)0x6bfd, (q15_t)0xd183, (q15_t)0x6bf4, (q15_t)0xd17b, (q15_t)0x6beb, (q15_t)0xd172, (q15_t)0x6be2, (q15_t)0xd169, - (q15_t)0x6bd8, (q15_t)0xd161, (q15_t)0x6bcf, (q15_t)0xd158, (q15_t)0x6bc6, (q15_t)0xd150, (q15_t)0x6bbd, (q15_t)0xd147, - (q15_t)0x6bb4, (q15_t)0xd13e, (q15_t)0x6bab, (q15_t)0xd136, (q15_t)0x6ba1, (q15_t)0xd12d, (q15_t)0x6b98, (q15_t)0xd125, - (q15_t)0x6b8f, (q15_t)0xd11c, (q15_t)0x6b86, (q15_t)0xd114, (q15_t)0x6b7d, (q15_t)0xd10b, (q15_t)0x6b73, (q15_t)0xd103, - (q15_t)0x6b6a, (q15_t)0xd0fa, (q15_t)0x6b61, (q15_t)0xd0f2, (q15_t)0x6b58, (q15_t)0xd0e9, (q15_t)0x6b4e, (q15_t)0xd0e0, - (q15_t)0x6b45, (q15_t)0xd0d8, (q15_t)0x6b3c, (q15_t)0xd0d0, (q15_t)0x6b33, (q15_t)0xd0c7, (q15_t)0x6b29, (q15_t)0xd0bf, - (q15_t)0x6b20, (q15_t)0xd0b6, (q15_t)0x6b17, (q15_t)0xd0ae, (q15_t)0x6b0d, (q15_t)0xd0a5, (q15_t)0x6b04, (q15_t)0xd09d, - (q15_t)0x6afb, (q15_t)0xd094, (q15_t)0x6af2, (q15_t)0xd08c, (q15_t)0x6ae8, (q15_t)0xd083, (q15_t)0x6adf, (q15_t)0xd07b, - (q15_t)0x6ad6, (q15_t)0xd073, (q15_t)0x6acc, (q15_t)0xd06a, (q15_t)0x6ac3, (q15_t)0xd062, (q15_t)0x6ab9, (q15_t)0xd059, - (q15_t)0x6ab0, (q15_t)0xd051, (q15_t)0x6aa7, (q15_t)0xd049, (q15_t)0x6a9d, (q15_t)0xd040, (q15_t)0x6a94, (q15_t)0xd038, - (q15_t)0x6a8b, (q15_t)0xd030, (q15_t)0x6a81, (q15_t)0xd027, (q15_t)0x6a78, (q15_t)0xd01f, (q15_t)0x6a6e, (q15_t)0xd016, - (q15_t)0x6a65, (q15_t)0xd00e, (q15_t)0x6a5c, (q15_t)0xd006, (q15_t)0x6a52, (q15_t)0xcffe, (q15_t)0x6a49, (q15_t)0xcff5, - (q15_t)0x6a3f, (q15_t)0xcfed, (q15_t)0x6a36, (q15_t)0xcfe5, (q15_t)0x6a2c, (q15_t)0xcfdc, (q15_t)0x6a23, (q15_t)0xcfd4, - (q15_t)0x6a1a, (q15_t)0xcfcc, (q15_t)0x6a10, (q15_t)0xcfc4, (q15_t)0x6a07, (q15_t)0xcfbb, (q15_t)0x69fd, (q15_t)0xcfb3, - (q15_t)0x69f4, (q15_t)0xcfab, (q15_t)0x69ea, (q15_t)0xcfa3, (q15_t)0x69e1, (q15_t)0xcf9a, (q15_t)0x69d7, (q15_t)0xcf92, - (q15_t)0x69ce, (q15_t)0xcf8a, (q15_t)0x69c4, (q15_t)0xcf82, (q15_t)0x69bb, (q15_t)0xcf79, (q15_t)0x69b1, (q15_t)0xcf71, - (q15_t)0x69a7, (q15_t)0xcf69, (q15_t)0x699e, (q15_t)0xcf61, (q15_t)0x6994, (q15_t)0xcf59, (q15_t)0x698b, (q15_t)0xcf51, - (q15_t)0x6981, (q15_t)0xcf48, (q15_t)0x6978, (q15_t)0xcf40, (q15_t)0x696e, (q15_t)0xcf38, (q15_t)0x6965, (q15_t)0xcf30, - (q15_t)0x695b, (q15_t)0xcf28, (q15_t)0x6951, (q15_t)0xcf20, (q15_t)0x6948, (q15_t)0xcf18, (q15_t)0x693e, (q15_t)0xcf10, - (q15_t)0x6935, (q15_t)0xcf07, (q15_t)0x692b, (q15_t)0xceff, (q15_t)0x6921, (q15_t)0xcef7, (q15_t)0x6918, (q15_t)0xceef, - (q15_t)0x690e, (q15_t)0xcee7, (q15_t)0x6904, (q15_t)0xcedf, (q15_t)0x68fb, (q15_t)0xced7, (q15_t)0x68f1, (q15_t)0xcecf, - (q15_t)0x68e7, (q15_t)0xcec7, (q15_t)0x68de, (q15_t)0xcebf, (q15_t)0x68d4, (q15_t)0xceb7, (q15_t)0x68ca, (q15_t)0xceaf, - (q15_t)0x68c1, (q15_t)0xcea7, (q15_t)0x68b7, (q15_t)0xce9f, (q15_t)0x68ad, (q15_t)0xce97, (q15_t)0x68a4, (q15_t)0xce8f, - (q15_t)0x689a, (q15_t)0xce87, (q15_t)0x6890, (q15_t)0xce7f, (q15_t)0x6886, (q15_t)0xce77, (q15_t)0x687d, (q15_t)0xce6f, - (q15_t)0x6873, (q15_t)0xce67, (q15_t)0x6869, (q15_t)0xce5f, (q15_t)0x6860, (q15_t)0xce57, (q15_t)0x6856, (q15_t)0xce4f, - (q15_t)0x684c, (q15_t)0xce47, (q15_t)0x6842, (q15_t)0xce40, (q15_t)0x6838, (q15_t)0xce38, (q15_t)0x682f, (q15_t)0xce30, - (q15_t)0x6825, (q15_t)0xce28, (q15_t)0x681b, (q15_t)0xce20, (q15_t)0x6811, (q15_t)0xce18, (q15_t)0x6808, (q15_t)0xce10, - (q15_t)0x67fe, (q15_t)0xce08, (q15_t)0x67f4, (q15_t)0xce01, (q15_t)0x67ea, (q15_t)0xcdf9, (q15_t)0x67e0, (q15_t)0xcdf1, - (q15_t)0x67d6, (q15_t)0xcde9, (q15_t)0x67cd, (q15_t)0xcde1, (q15_t)0x67c3, (q15_t)0xcdd9, (q15_t)0x67b9, (q15_t)0xcdd2, - (q15_t)0x67af, (q15_t)0xcdca, (q15_t)0x67a5, (q15_t)0xcdc2, (q15_t)0x679b, (q15_t)0xcdba, (q15_t)0x6791, (q15_t)0xcdb2, - (q15_t)0x6788, (q15_t)0xcdab, (q15_t)0x677e, (q15_t)0xcda3, (q15_t)0x6774, (q15_t)0xcd9b, (q15_t)0x676a, (q15_t)0xcd93, - (q15_t)0x6760, (q15_t)0xcd8c, (q15_t)0x6756, (q15_t)0xcd84, (q15_t)0x674c, (q15_t)0xcd7c, (q15_t)0x6742, (q15_t)0xcd75, - (q15_t)0x6738, (q15_t)0xcd6d, (q15_t)0x672e, (q15_t)0xcd65, (q15_t)0x6724, (q15_t)0xcd5d, (q15_t)0x671a, (q15_t)0xcd56, - (q15_t)0x6711, (q15_t)0xcd4e, (q15_t)0x6707, (q15_t)0xcd46, (q15_t)0x66fd, (q15_t)0xcd3f, (q15_t)0x66f3, (q15_t)0xcd37, - (q15_t)0x66e9, (q15_t)0xcd30, (q15_t)0x66df, (q15_t)0xcd28, (q15_t)0x66d5, (q15_t)0xcd20, (q15_t)0x66cb, (q15_t)0xcd19, - (q15_t)0x66c1, (q15_t)0xcd11, (q15_t)0x66b7, (q15_t)0xcd09, (q15_t)0x66ad, (q15_t)0xcd02, (q15_t)0x66a3, (q15_t)0xccfa, - (q15_t)0x6699, (q15_t)0xccf3, (q15_t)0x668f, (q15_t)0xcceb, (q15_t)0x6685, (q15_t)0xcce3, (q15_t)0x667b, (q15_t)0xccdc, - (q15_t)0x6671, (q15_t)0xccd4, (q15_t)0x6666, (q15_t)0xcccd, (q15_t)0x665c, (q15_t)0xccc5, (q15_t)0x6652, (q15_t)0xccbe, - (q15_t)0x6648, (q15_t)0xccb6, (q15_t)0x663e, (q15_t)0xccaf, (q15_t)0x6634, (q15_t)0xcca7, (q15_t)0x662a, (q15_t)0xcca0, - (q15_t)0x6620, (q15_t)0xcc98, (q15_t)0x6616, (q15_t)0xcc91, (q15_t)0x660c, (q15_t)0xcc89, (q15_t)0x6602, (q15_t)0xcc82, - (q15_t)0x65f8, (q15_t)0xcc7a, (q15_t)0x65ed, (q15_t)0xcc73, (q15_t)0x65e3, (q15_t)0xcc6b, (q15_t)0x65d9, (q15_t)0xcc64, - (q15_t)0x65cf, (q15_t)0xcc5d, (q15_t)0x65c5, (q15_t)0xcc55, (q15_t)0x65bb, (q15_t)0xcc4e, (q15_t)0x65b1, (q15_t)0xcc46, - (q15_t)0x65a6, (q15_t)0xcc3f, (q15_t)0x659c, (q15_t)0xcc38, (q15_t)0x6592, (q15_t)0xcc30, (q15_t)0x6588, (q15_t)0xcc29, - (q15_t)0x657e, (q15_t)0xcc21, (q15_t)0x6574, (q15_t)0xcc1a, (q15_t)0x6569, (q15_t)0xcc13, (q15_t)0x655f, (q15_t)0xcc0b, - (q15_t)0x6555, (q15_t)0xcc04, (q15_t)0x654b, (q15_t)0xcbfd, (q15_t)0x6541, (q15_t)0xcbf5, (q15_t)0x6536, (q15_t)0xcbee, - (q15_t)0x652c, (q15_t)0xcbe7, (q15_t)0x6522, (q15_t)0xcbe0, (q15_t)0x6518, (q15_t)0xcbd8, (q15_t)0x650d, (q15_t)0xcbd1, - (q15_t)0x6503, (q15_t)0xcbca, (q15_t)0x64f9, (q15_t)0xcbc2, (q15_t)0x64ef, (q15_t)0xcbbb, (q15_t)0x64e4, (q15_t)0xcbb4, - (q15_t)0x64da, (q15_t)0xcbad, (q15_t)0x64d0, (q15_t)0xcba5, (q15_t)0x64c5, (q15_t)0xcb9e, (q15_t)0x64bb, (q15_t)0xcb97, - (q15_t)0x64b1, (q15_t)0xcb90, (q15_t)0x64a7, (q15_t)0xcb89, (q15_t)0x649c, (q15_t)0xcb81, (q15_t)0x6492, (q15_t)0xcb7a, - (q15_t)0x6488, (q15_t)0xcb73, (q15_t)0x647d, (q15_t)0xcb6c, (q15_t)0x6473, (q15_t)0xcb65, (q15_t)0x6469, (q15_t)0xcb5e, - (q15_t)0x645e, (q15_t)0xcb56, (q15_t)0x6454, (q15_t)0xcb4f, (q15_t)0x644a, (q15_t)0xcb48, (q15_t)0x643f, (q15_t)0xcb41, - (q15_t)0x6435, (q15_t)0xcb3a, (q15_t)0x642b, (q15_t)0xcb33, (q15_t)0x6420, (q15_t)0xcb2c, (q15_t)0x6416, (q15_t)0xcb25, - (q15_t)0x640b, (q15_t)0xcb1e, (q15_t)0x6401, (q15_t)0xcb16, (q15_t)0x63f7, (q15_t)0xcb0f, (q15_t)0x63ec, (q15_t)0xcb08, - (q15_t)0x63e2, (q15_t)0xcb01, (q15_t)0x63d7, (q15_t)0xcafa, (q15_t)0x63cd, (q15_t)0xcaf3, (q15_t)0x63c3, (q15_t)0xcaec, - (q15_t)0x63b8, (q15_t)0xcae5, (q15_t)0x63ae, (q15_t)0xcade, (q15_t)0x63a3, (q15_t)0xcad7, (q15_t)0x6399, (q15_t)0xcad0, - (q15_t)0x638e, (q15_t)0xcac9, (q15_t)0x6384, (q15_t)0xcac2, (q15_t)0x637a, (q15_t)0xcabb, (q15_t)0x636f, (q15_t)0xcab4, - (q15_t)0x6365, (q15_t)0xcaad, (q15_t)0x635a, (q15_t)0xcaa6, (q15_t)0x6350, (q15_t)0xca9f, (q15_t)0x6345, (q15_t)0xca99, - (q15_t)0x633b, (q15_t)0xca92, (q15_t)0x6330, (q15_t)0xca8b, (q15_t)0x6326, (q15_t)0xca84, (q15_t)0x631b, (q15_t)0xca7d, - (q15_t)0x6311, (q15_t)0xca76, (q15_t)0x6306, (q15_t)0xca6f, (q15_t)0x62fc, (q15_t)0xca68, (q15_t)0x62f1, (q15_t)0xca61, - (q15_t)0x62e7, (q15_t)0xca5b, (q15_t)0x62dc, (q15_t)0xca54, (q15_t)0x62d2, (q15_t)0xca4d, (q15_t)0x62c7, (q15_t)0xca46, - (q15_t)0x62bc, (q15_t)0xca3f, (q15_t)0x62b2, (q15_t)0xca38, (q15_t)0x62a7, (q15_t)0xca32, (q15_t)0x629d, (q15_t)0xca2b, - (q15_t)0x6292, (q15_t)0xca24, (q15_t)0x6288, (q15_t)0xca1d, (q15_t)0x627d, (q15_t)0xca16, (q15_t)0x6272, (q15_t)0xca10, - (q15_t)0x6268, (q15_t)0xca09, (q15_t)0x625d, (q15_t)0xca02, (q15_t)0x6253, (q15_t)0xc9fb, (q15_t)0x6248, (q15_t)0xc9f5, - (q15_t)0x623d, (q15_t)0xc9ee, (q15_t)0x6233, (q15_t)0xc9e7, (q15_t)0x6228, (q15_t)0xc9e0, (q15_t)0x621e, (q15_t)0xc9da, - (q15_t)0x6213, (q15_t)0xc9d3, (q15_t)0x6208, (q15_t)0xc9cc, (q15_t)0x61fe, (q15_t)0xc9c6, (q15_t)0x61f3, (q15_t)0xc9bf, - (q15_t)0x61e8, (q15_t)0xc9b8, (q15_t)0x61de, (q15_t)0xc9b2, (q15_t)0x61d3, (q15_t)0xc9ab, (q15_t)0x61c8, (q15_t)0xc9a4, - (q15_t)0x61be, (q15_t)0xc99e, (q15_t)0x61b3, (q15_t)0xc997, (q15_t)0x61a8, (q15_t)0xc991, (q15_t)0x619e, (q15_t)0xc98a, - (q15_t)0x6193, (q15_t)0xc983, (q15_t)0x6188, (q15_t)0xc97d, (q15_t)0x617d, (q15_t)0xc976, (q15_t)0x6173, (q15_t)0xc970, - (q15_t)0x6168, (q15_t)0xc969, (q15_t)0x615d, (q15_t)0xc963, (q15_t)0x6153, (q15_t)0xc95c, (q15_t)0x6148, (q15_t)0xc955, - (q15_t)0x613d, (q15_t)0xc94f, (q15_t)0x6132, (q15_t)0xc948, (q15_t)0x6128, (q15_t)0xc942, (q15_t)0x611d, (q15_t)0xc93b, - (q15_t)0x6112, (q15_t)0xc935, (q15_t)0x6107, (q15_t)0xc92e, (q15_t)0x60fd, (q15_t)0xc928, (q15_t)0x60f2, (q15_t)0xc921, - (q15_t)0x60e7, (q15_t)0xc91b, (q15_t)0x60dc, (q15_t)0xc915, (q15_t)0x60d1, (q15_t)0xc90e, (q15_t)0x60c7, (q15_t)0xc908, - (q15_t)0x60bc, (q15_t)0xc901, (q15_t)0x60b1, (q15_t)0xc8fb, (q15_t)0x60a6, (q15_t)0xc8f4, (q15_t)0x609b, (q15_t)0xc8ee, - (q15_t)0x6091, (q15_t)0xc8e8, (q15_t)0x6086, (q15_t)0xc8e1, (q15_t)0x607b, (q15_t)0xc8db, (q15_t)0x6070, (q15_t)0xc8d4, - (q15_t)0x6065, (q15_t)0xc8ce, (q15_t)0x605b, (q15_t)0xc8c8, (q15_t)0x6050, (q15_t)0xc8c1, (q15_t)0x6045, (q15_t)0xc8bb, - (q15_t)0x603a, (q15_t)0xc8b5, (q15_t)0x602f, (q15_t)0xc8ae, (q15_t)0x6024, (q15_t)0xc8a8, (q15_t)0x6019, (q15_t)0xc8a2, - (q15_t)0x600f, (q15_t)0xc89b, (q15_t)0x6004, (q15_t)0xc895, (q15_t)0x5ff9, (q15_t)0xc88f, (q15_t)0x5fee, (q15_t)0xc889, - (q15_t)0x5fe3, (q15_t)0xc882, (q15_t)0x5fd8, (q15_t)0xc87c, (q15_t)0x5fcd, (q15_t)0xc876, (q15_t)0x5fc2, (q15_t)0xc870, - (q15_t)0x5fb7, (q15_t)0xc869, (q15_t)0x5fac, (q15_t)0xc863, (q15_t)0x5fa2, (q15_t)0xc85d, (q15_t)0x5f97, (q15_t)0xc857, - (q15_t)0x5f8c, (q15_t)0xc850, (q15_t)0x5f81, (q15_t)0xc84a, (q15_t)0x5f76, (q15_t)0xc844, (q15_t)0x5f6b, (q15_t)0xc83e, - (q15_t)0x5f60, (q15_t)0xc838, (q15_t)0x5f55, (q15_t)0xc832, (q15_t)0x5f4a, (q15_t)0xc82b, (q15_t)0x5f3f, (q15_t)0xc825, - (q15_t)0x5f34, (q15_t)0xc81f, (q15_t)0x5f29, (q15_t)0xc819, (q15_t)0x5f1e, (q15_t)0xc813, (q15_t)0x5f13, (q15_t)0xc80d, - (q15_t)0x5f08, (q15_t)0xc807, (q15_t)0x5efd, (q15_t)0xc801, (q15_t)0x5ef2, (q15_t)0xc7fb, (q15_t)0x5ee7, (q15_t)0xc7f5, - (q15_t)0x5edc, (q15_t)0xc7ee, (q15_t)0x5ed1, (q15_t)0xc7e8, (q15_t)0x5ec6, (q15_t)0xc7e2, (q15_t)0x5ebb, (q15_t)0xc7dc, - (q15_t)0x5eb0, (q15_t)0xc7d6, (q15_t)0x5ea5, (q15_t)0xc7d0, (q15_t)0x5e9a, (q15_t)0xc7ca, (q15_t)0x5e8f, (q15_t)0xc7c4, - (q15_t)0x5e84, (q15_t)0xc7be, (q15_t)0x5e79, (q15_t)0xc7b8, (q15_t)0x5e6e, (q15_t)0xc7b2, (q15_t)0x5e63, (q15_t)0xc7ac, - (q15_t)0x5e58, (q15_t)0xc7a6, (q15_t)0x5e4d, (q15_t)0xc7a0, (q15_t)0x5e42, (q15_t)0xc79a, (q15_t)0x5e36, (q15_t)0xc795, - (q15_t)0x5e2b, (q15_t)0xc78f, (q15_t)0x5e20, (q15_t)0xc789, (q15_t)0x5e15, (q15_t)0xc783, (q15_t)0x5e0a, (q15_t)0xc77d, - (q15_t)0x5dff, (q15_t)0xc777, (q15_t)0x5df4, (q15_t)0xc771, (q15_t)0x5de9, (q15_t)0xc76b, (q15_t)0x5dde, (q15_t)0xc765, - (q15_t)0x5dd3, (q15_t)0xc75f, (q15_t)0x5dc7, (q15_t)0xc75a, (q15_t)0x5dbc, (q15_t)0xc754, (q15_t)0x5db1, (q15_t)0xc74e, - (q15_t)0x5da6, (q15_t)0xc748, (q15_t)0x5d9b, (q15_t)0xc742, (q15_t)0x5d90, (q15_t)0xc73d, (q15_t)0x5d85, (q15_t)0xc737, - (q15_t)0x5d79, (q15_t)0xc731, (q15_t)0x5d6e, (q15_t)0xc72b, (q15_t)0x5d63, (q15_t)0xc725, (q15_t)0x5d58, (q15_t)0xc720, - (q15_t)0x5d4d, (q15_t)0xc71a, (q15_t)0x5d42, (q15_t)0xc714, (q15_t)0x5d36, (q15_t)0xc70e, (q15_t)0x5d2b, (q15_t)0xc709, - (q15_t)0x5d20, (q15_t)0xc703, (q15_t)0x5d15, (q15_t)0xc6fd, (q15_t)0x5d0a, (q15_t)0xc6f7, (q15_t)0x5cff, (q15_t)0xc6f2, - (q15_t)0x5cf3, (q15_t)0xc6ec, (q15_t)0x5ce8, (q15_t)0xc6e6, (q15_t)0x5cdd, (q15_t)0xc6e1, (q15_t)0x5cd2, (q15_t)0xc6db, - (q15_t)0x5cc6, (q15_t)0xc6d5, (q15_t)0x5cbb, (q15_t)0xc6d0, (q15_t)0x5cb0, (q15_t)0xc6ca, (q15_t)0x5ca5, (q15_t)0xc6c5, - (q15_t)0x5c99, (q15_t)0xc6bf, (q15_t)0x5c8e, (q15_t)0xc6b9, (q15_t)0x5c83, (q15_t)0xc6b4, (q15_t)0x5c78, (q15_t)0xc6ae, - (q15_t)0x5c6c, (q15_t)0xc6a8, (q15_t)0x5c61, (q15_t)0xc6a3, (q15_t)0x5c56, (q15_t)0xc69d, (q15_t)0x5c4b, (q15_t)0xc698, - (q15_t)0x5c3f, (q15_t)0xc692, (q15_t)0x5c34, (q15_t)0xc68d, (q15_t)0x5c29, (q15_t)0xc687, (q15_t)0x5c1e, (q15_t)0xc682, - (q15_t)0x5c12, (q15_t)0xc67c, (q15_t)0x5c07, (q15_t)0xc677, (q15_t)0x5bfc, (q15_t)0xc671, (q15_t)0x5bf0, (q15_t)0xc66c, - (q15_t)0x5be5, (q15_t)0xc666, (q15_t)0x5bda, (q15_t)0xc661, (q15_t)0x5bce, (q15_t)0xc65b, (q15_t)0x5bc3, (q15_t)0xc656, - (q15_t)0x5bb8, (q15_t)0xc650, (q15_t)0x5bac, (q15_t)0xc64b, (q15_t)0x5ba1, (q15_t)0xc645, (q15_t)0x5b96, (q15_t)0xc640, - (q15_t)0x5b8a, (q15_t)0xc63b, (q15_t)0x5b7f, (q15_t)0xc635, (q15_t)0x5b74, (q15_t)0xc630, (q15_t)0x5b68, (q15_t)0xc62a, - (q15_t)0x5b5d, (q15_t)0xc625, (q15_t)0x5b52, (q15_t)0xc620, (q15_t)0x5b46, (q15_t)0xc61a, (q15_t)0x5b3b, (q15_t)0xc615, - (q15_t)0x5b30, (q15_t)0xc610, (q15_t)0x5b24, (q15_t)0xc60a, (q15_t)0x5b19, (q15_t)0xc605, (q15_t)0x5b0d, (q15_t)0xc600, - (q15_t)0x5b02, (q15_t)0xc5fa, (q15_t)0x5af7, (q15_t)0xc5f5, (q15_t)0x5aeb, (q15_t)0xc5f0, (q15_t)0x5ae0, (q15_t)0xc5ea, - (q15_t)0x5ad4, (q15_t)0xc5e5, (q15_t)0x5ac9, (q15_t)0xc5e0, (q15_t)0x5abe, (q15_t)0xc5db, (q15_t)0x5ab2, (q15_t)0xc5d5, - (q15_t)0x5aa7, (q15_t)0xc5d0, (q15_t)0x5a9b, (q15_t)0xc5cb, (q15_t)0x5a90, (q15_t)0xc5c6, (q15_t)0x5a84, (q15_t)0xc5c1, - (q15_t)0x5a79, (q15_t)0xc5bb, (q15_t)0x5a6e, (q15_t)0xc5b6, (q15_t)0x5a62, (q15_t)0xc5b1, (q15_t)0x5a57, (q15_t)0xc5ac, - (q15_t)0x5a4b, (q15_t)0xc5a7, (q15_t)0x5a40, (q15_t)0xc5a1, (q15_t)0x5a34, (q15_t)0xc59c, (q15_t)0x5a29, (q15_t)0xc597, - (q15_t)0x5a1d, (q15_t)0xc592, (q15_t)0x5a12, (q15_t)0xc58d, (q15_t)0x5a06, (q15_t)0xc588, (q15_t)0x59fb, (q15_t)0xc583, - (q15_t)0x59ef, (q15_t)0xc57e, (q15_t)0x59e4, (q15_t)0xc578, (q15_t)0x59d8, (q15_t)0xc573, (q15_t)0x59cd, (q15_t)0xc56e, - (q15_t)0x59c1, (q15_t)0xc569, (q15_t)0x59b6, (q15_t)0xc564, (q15_t)0x59aa, (q15_t)0xc55f, (q15_t)0x599f, (q15_t)0xc55a, - (q15_t)0x5993, (q15_t)0xc555, (q15_t)0x5988, (q15_t)0xc550, (q15_t)0x597c, (q15_t)0xc54b, (q15_t)0x5971, (q15_t)0xc546, - (q15_t)0x5965, (q15_t)0xc541, (q15_t)0x595a, (q15_t)0xc53c, (q15_t)0x594e, (q15_t)0xc537, (q15_t)0x5943, (q15_t)0xc532, - (q15_t)0x5937, (q15_t)0xc52d, (q15_t)0x592c, (q15_t)0xc528, (q15_t)0x5920, (q15_t)0xc523, (q15_t)0x5914, (q15_t)0xc51e, - (q15_t)0x5909, (q15_t)0xc51a, (q15_t)0x58fd, (q15_t)0xc515, (q15_t)0x58f2, (q15_t)0xc510, (q15_t)0x58e6, (q15_t)0xc50b, - (q15_t)0x58db, (q15_t)0xc506, (q15_t)0x58cf, (q15_t)0xc501, (q15_t)0x58c3, (q15_t)0xc4fc, (q15_t)0x58b8, (q15_t)0xc4f7, - (q15_t)0x58ac, (q15_t)0xc4f2, (q15_t)0x58a1, (q15_t)0xc4ee, (q15_t)0x5895, (q15_t)0xc4e9, (q15_t)0x5889, (q15_t)0xc4e4, - (q15_t)0x587e, (q15_t)0xc4df, (q15_t)0x5872, (q15_t)0xc4da, (q15_t)0x5867, (q15_t)0xc4d6, (q15_t)0x585b, (q15_t)0xc4d1, - (q15_t)0x584f, (q15_t)0xc4cc, (q15_t)0x5844, (q15_t)0xc4c7, (q15_t)0x5838, (q15_t)0xc4c2, (q15_t)0x582d, (q15_t)0xc4be, - (q15_t)0x5821, (q15_t)0xc4b9, (q15_t)0x5815, (q15_t)0xc4b4, (q15_t)0x580a, (q15_t)0xc4b0, (q15_t)0x57fe, (q15_t)0xc4ab, - (q15_t)0x57f2, (q15_t)0xc4a6, (q15_t)0x57e7, (q15_t)0xc4a1, (q15_t)0x57db, (q15_t)0xc49d, (q15_t)0x57cf, (q15_t)0xc498, - (q15_t)0x57c4, (q15_t)0xc493, (q15_t)0x57b8, (q15_t)0xc48f, (q15_t)0x57ac, (q15_t)0xc48a, (q15_t)0x57a1, (q15_t)0xc485, - (q15_t)0x5795, (q15_t)0xc481, (q15_t)0x5789, (q15_t)0xc47c, (q15_t)0x577e, (q15_t)0xc478, (q15_t)0x5772, (q15_t)0xc473, - (q15_t)0x5766, (q15_t)0xc46e, (q15_t)0x575b, (q15_t)0xc46a, (q15_t)0x574f, (q15_t)0xc465, (q15_t)0x5743, (q15_t)0xc461, - (q15_t)0x5737, (q15_t)0xc45c, (q15_t)0x572c, (q15_t)0xc457, (q15_t)0x5720, (q15_t)0xc453, (q15_t)0x5714, (q15_t)0xc44e, - (q15_t)0x5709, (q15_t)0xc44a, (q15_t)0x56fd, (q15_t)0xc445, (q15_t)0x56f1, (q15_t)0xc441, (q15_t)0x56e5, (q15_t)0xc43c, - (q15_t)0x56da, (q15_t)0xc438, (q15_t)0x56ce, (q15_t)0xc433, (q15_t)0x56c2, (q15_t)0xc42f, (q15_t)0x56b6, (q15_t)0xc42a, - (q15_t)0x56ab, (q15_t)0xc426, (q15_t)0x569f, (q15_t)0xc422, (q15_t)0x5693, (q15_t)0xc41d, (q15_t)0x5687, (q15_t)0xc419, - (q15_t)0x567c, (q15_t)0xc414, (q15_t)0x5670, (q15_t)0xc410, (q15_t)0x5664, (q15_t)0xc40b, (q15_t)0x5658, (q15_t)0xc407, - (q15_t)0x564c, (q15_t)0xc403, (q15_t)0x5641, (q15_t)0xc3fe, (q15_t)0x5635, (q15_t)0xc3fa, (q15_t)0x5629, (q15_t)0xc3f6, - (q15_t)0x561d, (q15_t)0xc3f1, (q15_t)0x5612, (q15_t)0xc3ed, (q15_t)0x5606, (q15_t)0xc3e9, (q15_t)0x55fa, (q15_t)0xc3e4, - (q15_t)0x55ee, (q15_t)0xc3e0, (q15_t)0x55e2, (q15_t)0xc3dc, (q15_t)0x55d7, (q15_t)0xc3d7, (q15_t)0x55cb, (q15_t)0xc3d3, - (q15_t)0x55bf, (q15_t)0xc3cf, (q15_t)0x55b3, (q15_t)0xc3ca, (q15_t)0x55a7, (q15_t)0xc3c6, (q15_t)0x559b, (q15_t)0xc3c2, - (q15_t)0x5590, (q15_t)0xc3be, (q15_t)0x5584, (q15_t)0xc3ba, (q15_t)0x5578, (q15_t)0xc3b5, (q15_t)0x556c, (q15_t)0xc3b1, - (q15_t)0x5560, (q15_t)0xc3ad, (q15_t)0x5554, (q15_t)0xc3a9, (q15_t)0x5549, (q15_t)0xc3a5, (q15_t)0x553d, (q15_t)0xc3a0, - (q15_t)0x5531, (q15_t)0xc39c, (q15_t)0x5525, (q15_t)0xc398, (q15_t)0x5519, (q15_t)0xc394, (q15_t)0x550d, (q15_t)0xc390, - (q15_t)0x5501, (q15_t)0xc38c, (q15_t)0x54f6, (q15_t)0xc387, (q15_t)0x54ea, (q15_t)0xc383, (q15_t)0x54de, (q15_t)0xc37f, - (q15_t)0x54d2, (q15_t)0xc37b, (q15_t)0x54c6, (q15_t)0xc377, (q15_t)0x54ba, (q15_t)0xc373, (q15_t)0x54ae, (q15_t)0xc36f, - (q15_t)0x54a2, (q15_t)0xc36b, (q15_t)0x5496, (q15_t)0xc367, (q15_t)0x548b, (q15_t)0xc363, (q15_t)0x547f, (q15_t)0xc35f, - (q15_t)0x5473, (q15_t)0xc35b, (q15_t)0x5467, (q15_t)0xc357, (q15_t)0x545b, (q15_t)0xc353, (q15_t)0x544f, (q15_t)0xc34f, - (q15_t)0x5443, (q15_t)0xc34b, (q15_t)0x5437, (q15_t)0xc347, (q15_t)0x542b, (q15_t)0xc343, (q15_t)0x541f, (q15_t)0xc33f, - (q15_t)0x5413, (q15_t)0xc33b, (q15_t)0x5407, (q15_t)0xc337, (q15_t)0x53fb, (q15_t)0xc333, (q15_t)0x53f0, (q15_t)0xc32f, - (q15_t)0x53e4, (q15_t)0xc32b, (q15_t)0x53d8, (q15_t)0xc327, (q15_t)0x53cc, (q15_t)0xc323, (q15_t)0x53c0, (q15_t)0xc320, - (q15_t)0x53b4, (q15_t)0xc31c, (q15_t)0x53a8, (q15_t)0xc318, (q15_t)0x539c, (q15_t)0xc314, (q15_t)0x5390, (q15_t)0xc310, - (q15_t)0x5384, (q15_t)0xc30c, (q15_t)0x5378, (q15_t)0xc308, (q15_t)0x536c, (q15_t)0xc305, (q15_t)0x5360, (q15_t)0xc301, - (q15_t)0x5354, (q15_t)0xc2fd, (q15_t)0x5348, (q15_t)0xc2f9, (q15_t)0x533c, (q15_t)0xc2f5, (q15_t)0x5330, (q15_t)0xc2f2, - (q15_t)0x5324, (q15_t)0xc2ee, (q15_t)0x5318, (q15_t)0xc2ea, (q15_t)0x530c, (q15_t)0xc2e6, (q15_t)0x5300, (q15_t)0xc2e3, - (q15_t)0x52f4, (q15_t)0xc2df, (q15_t)0x52e8, (q15_t)0xc2db, (q15_t)0x52dc, (q15_t)0xc2d8, (q15_t)0x52d0, (q15_t)0xc2d4, - (q15_t)0x52c4, (q15_t)0xc2d0, (q15_t)0x52b8, (q15_t)0xc2cc, (q15_t)0x52ac, (q15_t)0xc2c9, (q15_t)0x52a0, (q15_t)0xc2c5, - (q15_t)0x5294, (q15_t)0xc2c1, (q15_t)0x5288, (q15_t)0xc2be, (q15_t)0x527c, (q15_t)0xc2ba, (q15_t)0x5270, (q15_t)0xc2b7, - (q15_t)0x5264, (q15_t)0xc2b3, (q15_t)0x5258, (q15_t)0xc2af, (q15_t)0x524c, (q15_t)0xc2ac, (q15_t)0x5240, (q15_t)0xc2a8, - (q15_t)0x5234, (q15_t)0xc2a5, (q15_t)0x5228, (q15_t)0xc2a1, (q15_t)0x521c, (q15_t)0xc29d, (q15_t)0x5210, (q15_t)0xc29a, - (q15_t)0x5204, (q15_t)0xc296, (q15_t)0x51f7, (q15_t)0xc293, (q15_t)0x51eb, (q15_t)0xc28f, (q15_t)0x51df, (q15_t)0xc28c, - (q15_t)0x51d3, (q15_t)0xc288, (q15_t)0x51c7, (q15_t)0xc285, (q15_t)0x51bb, (q15_t)0xc281, (q15_t)0x51af, (q15_t)0xc27e, - (q15_t)0x51a3, (q15_t)0xc27a, (q15_t)0x5197, (q15_t)0xc277, (q15_t)0x518b, (q15_t)0xc273, (q15_t)0x517f, (q15_t)0xc270, - (q15_t)0x5173, (q15_t)0xc26d, (q15_t)0x5167, (q15_t)0xc269, (q15_t)0x515a, (q15_t)0xc266, (q15_t)0x514e, (q15_t)0xc262, - (q15_t)0x5142, (q15_t)0xc25f, (q15_t)0x5136, (q15_t)0xc25c, (q15_t)0x512a, (q15_t)0xc258, (q15_t)0x511e, (q15_t)0xc255, - (q15_t)0x5112, (q15_t)0xc251, (q15_t)0x5106, (q15_t)0xc24e, (q15_t)0x50fa, (q15_t)0xc24b, (q15_t)0x50ed, (q15_t)0xc247, - (q15_t)0x50e1, (q15_t)0xc244, (q15_t)0x50d5, (q15_t)0xc241, (q15_t)0x50c9, (q15_t)0xc23e, (q15_t)0x50bd, (q15_t)0xc23a, - (q15_t)0x50b1, (q15_t)0xc237, (q15_t)0x50a5, (q15_t)0xc234, (q15_t)0x5099, (q15_t)0xc230, (q15_t)0x508c, (q15_t)0xc22d, - (q15_t)0x5080, (q15_t)0xc22a, (q15_t)0x5074, (q15_t)0xc227, (q15_t)0x5068, (q15_t)0xc223, (q15_t)0x505c, (q15_t)0xc220, - (q15_t)0x5050, (q15_t)0xc21d, (q15_t)0x5044, (q15_t)0xc21a, (q15_t)0x5037, (q15_t)0xc217, (q15_t)0x502b, (q15_t)0xc213, - (q15_t)0x501f, (q15_t)0xc210, (q15_t)0x5013, (q15_t)0xc20d, (q15_t)0x5007, (q15_t)0xc20a, (q15_t)0x4ffb, (q15_t)0xc207, - (q15_t)0x4fee, (q15_t)0xc204, (q15_t)0x4fe2, (q15_t)0xc201, (q15_t)0x4fd6, (q15_t)0xc1fd, (q15_t)0x4fca, (q15_t)0xc1fa, - (q15_t)0x4fbe, (q15_t)0xc1f7, (q15_t)0x4fb2, (q15_t)0xc1f4, (q15_t)0x4fa5, (q15_t)0xc1f1, (q15_t)0x4f99, (q15_t)0xc1ee, - (q15_t)0x4f8d, (q15_t)0xc1eb, (q15_t)0x4f81, (q15_t)0xc1e8, (q15_t)0x4f75, (q15_t)0xc1e5, (q15_t)0x4f68, (q15_t)0xc1e2, - (q15_t)0x4f5c, (q15_t)0xc1df, (q15_t)0x4f50, (q15_t)0xc1dc, (q15_t)0x4f44, (q15_t)0xc1d9, (q15_t)0x4f38, (q15_t)0xc1d6, - (q15_t)0x4f2b, (q15_t)0xc1d3, (q15_t)0x4f1f, (q15_t)0xc1d0, (q15_t)0x4f13, (q15_t)0xc1cd, (q15_t)0x4f07, (q15_t)0xc1ca, - (q15_t)0x4efb, (q15_t)0xc1c7, (q15_t)0x4eee, (q15_t)0xc1c4, (q15_t)0x4ee2, (q15_t)0xc1c1, (q15_t)0x4ed6, (q15_t)0xc1be, - (q15_t)0x4eca, (q15_t)0xc1bb, (q15_t)0x4ebd, (q15_t)0xc1b8, (q15_t)0x4eb1, (q15_t)0xc1b6, (q15_t)0x4ea5, (q15_t)0xc1b3, - (q15_t)0x4e99, (q15_t)0xc1b0, (q15_t)0x4e8c, (q15_t)0xc1ad, (q15_t)0x4e80, (q15_t)0xc1aa, (q15_t)0x4e74, (q15_t)0xc1a7, - (q15_t)0x4e68, (q15_t)0xc1a4, (q15_t)0x4e5c, (q15_t)0xc1a2, (q15_t)0x4e4f, (q15_t)0xc19f, (q15_t)0x4e43, (q15_t)0xc19c, - (q15_t)0x4e37, (q15_t)0xc199, (q15_t)0x4e2b, (q15_t)0xc196, (q15_t)0x4e1e, (q15_t)0xc194, (q15_t)0x4e12, (q15_t)0xc191, - (q15_t)0x4e06, (q15_t)0xc18e, (q15_t)0x4df9, (q15_t)0xc18b, (q15_t)0x4ded, (q15_t)0xc189, (q15_t)0x4de1, (q15_t)0xc186, - (q15_t)0x4dd5, (q15_t)0xc183, (q15_t)0x4dc8, (q15_t)0xc180, (q15_t)0x4dbc, (q15_t)0xc17e, (q15_t)0x4db0, (q15_t)0xc17b, - (q15_t)0x4da4, (q15_t)0xc178, (q15_t)0x4d97, (q15_t)0xc176, (q15_t)0x4d8b, (q15_t)0xc173, (q15_t)0x4d7f, (q15_t)0xc170, - (q15_t)0x4d72, (q15_t)0xc16e, (q15_t)0x4d66, (q15_t)0xc16b, (q15_t)0x4d5a, (q15_t)0xc168, (q15_t)0x4d4e, (q15_t)0xc166, - (q15_t)0x4d41, (q15_t)0xc163, (q15_t)0x4d35, (q15_t)0xc161, (q15_t)0x4d29, (q15_t)0xc15e, (q15_t)0x4d1c, (q15_t)0xc15b, - (q15_t)0x4d10, (q15_t)0xc159, (q15_t)0x4d04, (q15_t)0xc156, (q15_t)0x4cf8, (q15_t)0xc154, (q15_t)0x4ceb, (q15_t)0xc151, - (q15_t)0x4cdf, (q15_t)0xc14f, (q15_t)0x4cd3, (q15_t)0xc14c, (q15_t)0x4cc6, (q15_t)0xc14a, (q15_t)0x4cba, (q15_t)0xc147, - (q15_t)0x4cae, (q15_t)0xc145, (q15_t)0x4ca1, (q15_t)0xc142, (q15_t)0x4c95, (q15_t)0xc140, (q15_t)0x4c89, (q15_t)0xc13d, - (q15_t)0x4c7c, (q15_t)0xc13b, (q15_t)0x4c70, (q15_t)0xc138, (q15_t)0x4c64, (q15_t)0xc136, (q15_t)0x4c57, (q15_t)0xc134, - (q15_t)0x4c4b, (q15_t)0xc131, (q15_t)0x4c3f, (q15_t)0xc12f, (q15_t)0x4c32, (q15_t)0xc12c, (q15_t)0x4c26, (q15_t)0xc12a, - (q15_t)0x4c1a, (q15_t)0xc128, (q15_t)0x4c0d, (q15_t)0xc125, (q15_t)0x4c01, (q15_t)0xc123, (q15_t)0x4bf5, (q15_t)0xc120, - (q15_t)0x4be8, (q15_t)0xc11e, (q15_t)0x4bdc, (q15_t)0xc11c, (q15_t)0x4bd0, (q15_t)0xc119, (q15_t)0x4bc3, (q15_t)0xc117, - (q15_t)0x4bb7, (q15_t)0xc115, (q15_t)0x4bab, (q15_t)0xc113, (q15_t)0x4b9e, (q15_t)0xc110, (q15_t)0x4b92, (q15_t)0xc10e, - (q15_t)0x4b85, (q15_t)0xc10c, (q15_t)0x4b79, (q15_t)0xc109, (q15_t)0x4b6d, (q15_t)0xc107, (q15_t)0x4b60, (q15_t)0xc105, - (q15_t)0x4b54, (q15_t)0xc103, (q15_t)0x4b48, (q15_t)0xc100, (q15_t)0x4b3b, (q15_t)0xc0fe, (q15_t)0x4b2f, (q15_t)0xc0fc, - (q15_t)0x4b23, (q15_t)0xc0fa, (q15_t)0x4b16, (q15_t)0xc0f8, (q15_t)0x4b0a, (q15_t)0xc0f6, (q15_t)0x4afd, (q15_t)0xc0f3, - (q15_t)0x4af1, (q15_t)0xc0f1, (q15_t)0x4ae5, (q15_t)0xc0ef, (q15_t)0x4ad8, (q15_t)0xc0ed, (q15_t)0x4acc, (q15_t)0xc0eb, - (q15_t)0x4ac0, (q15_t)0xc0e9, (q15_t)0x4ab3, (q15_t)0xc0e7, (q15_t)0x4aa7, (q15_t)0xc0e4, (q15_t)0x4a9a, (q15_t)0xc0e2, - (q15_t)0x4a8e, (q15_t)0xc0e0, (q15_t)0x4a82, (q15_t)0xc0de, (q15_t)0x4a75, (q15_t)0xc0dc, (q15_t)0x4a69, (q15_t)0xc0da, - (q15_t)0x4a5c, (q15_t)0xc0d8, (q15_t)0x4a50, (q15_t)0xc0d6, (q15_t)0x4a44, (q15_t)0xc0d4, (q15_t)0x4a37, (q15_t)0xc0d2, - (q15_t)0x4a2b, (q15_t)0xc0d0, (q15_t)0x4a1e, (q15_t)0xc0ce, (q15_t)0x4a12, (q15_t)0xc0cc, (q15_t)0x4a06, (q15_t)0xc0ca, - (q15_t)0x49f9, (q15_t)0xc0c8, (q15_t)0x49ed, (q15_t)0xc0c6, (q15_t)0x49e0, (q15_t)0xc0c4, (q15_t)0x49d4, (q15_t)0xc0c2, - (q15_t)0x49c7, (q15_t)0xc0c0, (q15_t)0x49bb, (q15_t)0xc0be, (q15_t)0x49af, (q15_t)0xc0bd, (q15_t)0x49a2, (q15_t)0xc0bb, - (q15_t)0x4996, (q15_t)0xc0b9, (q15_t)0x4989, (q15_t)0xc0b7, (q15_t)0x497d, (q15_t)0xc0b5, (q15_t)0x4970, (q15_t)0xc0b3, - (q15_t)0x4964, (q15_t)0xc0b1, (q15_t)0x4958, (q15_t)0xc0af, (q15_t)0x494b, (q15_t)0xc0ae, (q15_t)0x493f, (q15_t)0xc0ac, - (q15_t)0x4932, (q15_t)0xc0aa, (q15_t)0x4926, (q15_t)0xc0a8, (q15_t)0x4919, (q15_t)0xc0a6, (q15_t)0x490d, (q15_t)0xc0a5, - (q15_t)0x4901, (q15_t)0xc0a3, (q15_t)0x48f4, (q15_t)0xc0a1, (q15_t)0x48e8, (q15_t)0xc09f, (q15_t)0x48db, (q15_t)0xc09e, - (q15_t)0x48cf, (q15_t)0xc09c, (q15_t)0x48c2, (q15_t)0xc09a, (q15_t)0x48b6, (q15_t)0xc098, (q15_t)0x48a9, (q15_t)0xc097, - (q15_t)0x489d, (q15_t)0xc095, (q15_t)0x4891, (q15_t)0xc093, (q15_t)0x4884, (q15_t)0xc092, (q15_t)0x4878, (q15_t)0xc090, - (q15_t)0x486b, (q15_t)0xc08e, (q15_t)0x485f, (q15_t)0xc08d, (q15_t)0x4852, (q15_t)0xc08b, (q15_t)0x4846, (q15_t)0xc089, - (q15_t)0x4839, (q15_t)0xc088, (q15_t)0x482d, (q15_t)0xc086, (q15_t)0x4820, (q15_t)0xc085, (q15_t)0x4814, (q15_t)0xc083, - (q15_t)0x4807, (q15_t)0xc081, (q15_t)0x47fb, (q15_t)0xc080, (q15_t)0x47ef, (q15_t)0xc07e, (q15_t)0x47e2, (q15_t)0xc07d, - (q15_t)0x47d6, (q15_t)0xc07b, (q15_t)0x47c9, (q15_t)0xc07a, (q15_t)0x47bd, (q15_t)0xc078, (q15_t)0x47b0, (q15_t)0xc077, - (q15_t)0x47a4, (q15_t)0xc075, (q15_t)0x4797, (q15_t)0xc074, (q15_t)0x478b, (q15_t)0xc072, (q15_t)0x477e, (q15_t)0xc071, - (q15_t)0x4772, (q15_t)0xc06f, (q15_t)0x4765, (q15_t)0xc06e, (q15_t)0x4759, (q15_t)0xc06c, (q15_t)0x474c, (q15_t)0xc06b, - (q15_t)0x4740, (q15_t)0xc069, (q15_t)0x4733, (q15_t)0xc068, (q15_t)0x4727, (q15_t)0xc067, (q15_t)0x471a, (q15_t)0xc065, - (q15_t)0x470e, (q15_t)0xc064, (q15_t)0x4701, (q15_t)0xc062, (q15_t)0x46f5, (q15_t)0xc061, (q15_t)0x46e8, (q15_t)0xc060, - (q15_t)0x46dc, (q15_t)0xc05e, (q15_t)0x46cf, (q15_t)0xc05d, (q15_t)0x46c3, (q15_t)0xc05c, (q15_t)0x46b6, (q15_t)0xc05a, - (q15_t)0x46aa, (q15_t)0xc059, (q15_t)0x469d, (q15_t)0xc058, (q15_t)0x4691, (q15_t)0xc056, (q15_t)0x4684, (q15_t)0xc055, - (q15_t)0x4678, (q15_t)0xc054, (q15_t)0x466b, (q15_t)0xc053, (q15_t)0x465f, (q15_t)0xc051, (q15_t)0x4652, (q15_t)0xc050, - (q15_t)0x4646, (q15_t)0xc04f, (q15_t)0x4639, (q15_t)0xc04e, (q15_t)0x462d, (q15_t)0xc04c, (q15_t)0x4620, (q15_t)0xc04b, - (q15_t)0x4614, (q15_t)0xc04a, (q15_t)0x4607, (q15_t)0xc049, (q15_t)0x45fb, (q15_t)0xc048, (q15_t)0x45ee, (q15_t)0xc047, - (q15_t)0x45e2, (q15_t)0xc045, (q15_t)0x45d5, (q15_t)0xc044, (q15_t)0x45c9, (q15_t)0xc043, (q15_t)0x45bc, (q15_t)0xc042, - (q15_t)0x45b0, (q15_t)0xc041, (q15_t)0x45a3, (q15_t)0xc040, (q15_t)0x4597, (q15_t)0xc03f, (q15_t)0x458a, (q15_t)0xc03d, - (q15_t)0x457e, (q15_t)0xc03c, (q15_t)0x4571, (q15_t)0xc03b, (q15_t)0x4565, (q15_t)0xc03a, (q15_t)0x4558, (q15_t)0xc039, - (q15_t)0x454c, (q15_t)0xc038, (q15_t)0x453f, (q15_t)0xc037, (q15_t)0x4533, (q15_t)0xc036, (q15_t)0x4526, (q15_t)0xc035, - (q15_t)0x451a, (q15_t)0xc034, (q15_t)0x450d, (q15_t)0xc033, (q15_t)0x4500, (q15_t)0xc032, (q15_t)0x44f4, (q15_t)0xc031, - (q15_t)0x44e7, (q15_t)0xc030, (q15_t)0x44db, (q15_t)0xc02f, (q15_t)0x44ce, (q15_t)0xc02e, (q15_t)0x44c2, (q15_t)0xc02d, - (q15_t)0x44b5, (q15_t)0xc02c, (q15_t)0x44a9, (q15_t)0xc02b, (q15_t)0x449c, (q15_t)0xc02b, (q15_t)0x4490, (q15_t)0xc02a, - (q15_t)0x4483, (q15_t)0xc029, (q15_t)0x4477, (q15_t)0xc028, (q15_t)0x446a, (q15_t)0xc027, (q15_t)0x445e, (q15_t)0xc026, - (q15_t)0x4451, (q15_t)0xc025, (q15_t)0x4444, (q15_t)0xc024, (q15_t)0x4438, (q15_t)0xc024, (q15_t)0x442b, (q15_t)0xc023, - (q15_t)0x441f, (q15_t)0xc022, (q15_t)0x4412, (q15_t)0xc021, (q15_t)0x4406, (q15_t)0xc020, (q15_t)0x43f9, (q15_t)0xc020, - (q15_t)0x43ed, (q15_t)0xc01f, (q15_t)0x43e0, (q15_t)0xc01e, (q15_t)0x43d4, (q15_t)0xc01d, (q15_t)0x43c7, (q15_t)0xc01d, - (q15_t)0x43bb, (q15_t)0xc01c, (q15_t)0x43ae, (q15_t)0xc01b, (q15_t)0x43a1, (q15_t)0xc01a, (q15_t)0x4395, (q15_t)0xc01a, - (q15_t)0x4388, (q15_t)0xc019, (q15_t)0x437c, (q15_t)0xc018, (q15_t)0x436f, (q15_t)0xc018, (q15_t)0x4363, (q15_t)0xc017, - (q15_t)0x4356, (q15_t)0xc016, (q15_t)0x434a, (q15_t)0xc016, (q15_t)0x433d, (q15_t)0xc015, (q15_t)0x4330, (q15_t)0xc014, - (q15_t)0x4324, (q15_t)0xc014, (q15_t)0x4317, (q15_t)0xc013, (q15_t)0x430b, (q15_t)0xc013, (q15_t)0x42fe, (q15_t)0xc012, - (q15_t)0x42f2, (q15_t)0xc011, (q15_t)0x42e5, (q15_t)0xc011, (q15_t)0x42d9, (q15_t)0xc010, (q15_t)0x42cc, (q15_t)0xc010, - (q15_t)0x42c0, (q15_t)0xc00f, (q15_t)0x42b3, (q15_t)0xc00f, (q15_t)0x42a6, (q15_t)0xc00e, (q15_t)0x429a, (q15_t)0xc00e, - (q15_t)0x428d, (q15_t)0xc00d, (q15_t)0x4281, (q15_t)0xc00d, (q15_t)0x4274, (q15_t)0xc00c, (q15_t)0x4268, (q15_t)0xc00c, - (q15_t)0x425b, (q15_t)0xc00b, (q15_t)0x424e, (q15_t)0xc00b, (q15_t)0x4242, (q15_t)0xc00a, (q15_t)0x4235, (q15_t)0xc00a, - (q15_t)0x4229, (q15_t)0xc009, (q15_t)0x421c, (q15_t)0xc009, (q15_t)0x4210, (q15_t)0xc009, (q15_t)0x4203, (q15_t)0xc008, - (q15_t)0x41f7, (q15_t)0xc008, (q15_t)0x41ea, (q15_t)0xc007, (q15_t)0x41dd, (q15_t)0xc007, (q15_t)0x41d1, (q15_t)0xc007, - (q15_t)0x41c4, (q15_t)0xc006, (q15_t)0x41b8, (q15_t)0xc006, (q15_t)0x41ab, (q15_t)0xc006, (q15_t)0x419f, (q15_t)0xc005, - (q15_t)0x4192, (q15_t)0xc005, (q15_t)0x4186, (q15_t)0xc005, (q15_t)0x4179, (q15_t)0xc004, (q15_t)0x416c, (q15_t)0xc004, - (q15_t)0x4160, (q15_t)0xc004, (q15_t)0x4153, (q15_t)0xc004, (q15_t)0x4147, (q15_t)0xc003, (q15_t)0x413a, (q15_t)0xc003, - (q15_t)0x412e, (q15_t)0xc003, (q15_t)0x4121, (q15_t)0xc003, (q15_t)0x4114, (q15_t)0xc002, (q15_t)0x4108, (q15_t)0xc002, - (q15_t)0x40fb, (q15_t)0xc002, (q15_t)0x40ef, (q15_t)0xc002, (q15_t)0x40e2, (q15_t)0xc002, (q15_t)0x40d6, (q15_t)0xc001, - (q15_t)0x40c9, (q15_t)0xc001, (q15_t)0x40bc, (q15_t)0xc001, (q15_t)0x40b0, (q15_t)0xc001, (q15_t)0x40a3, (q15_t)0xc001, - (q15_t)0x4097, (q15_t)0xc001, (q15_t)0x408a, (q15_t)0xc001, (q15_t)0x407e, (q15_t)0xc000, (q15_t)0x4071, (q15_t)0xc000, - (q15_t)0x4065, (q15_t)0xc000, (q15_t)0x4058, (q15_t)0xc000, (q15_t)0x404b, (q15_t)0xc000, (q15_t)0x403f, (q15_t)0xc000, - (q15_t)0x4032, (q15_t)0xc000, (q15_t)0x4026, (q15_t)0xc000, (q15_t)0x4019, (q15_t)0xc000, (q15_t)0x400d, (q15_t)0xc000, -}; - -/** -* @} end of RealFFT_Table group -*/ - -/** -* @addtogroup RealFFT -* @{ -*/ - -/** -* @brief Initialization function for the Q15 RFFT/RIFFT. -* @param[in, out] *S points to an instance of the Q15 RFFT/RIFFT structure. -* @param[in] fftLenReal length of the FFT. -* @param[in] ifftFlagR flag that selects forward (ifftFlagR=0) or inverse (ifftFlagR=1) transform. -* @param[in] bitReverseFlag flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. -* @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if fftLenReal is not a supported value. -* -* \par Description: -* \par -* The parameter fftLenReal Specifies length of RFFT/RIFFT Process. Supported FFT Lengths are 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192. -* \par -* The parameter ifftFlagR controls whether a forward or inverse transform is computed. -* Set(=1) ifftFlagR to calculate RIFFT, otherwise RFFT is calculated. -* \par -* The parameter bitReverseFlag controls whether output is in normal order or bit reversed order. -* Set(=1) bitReverseFlag for output to be in normal order otherwise output is in bit reversed order. -* \par -* This function also initializes Twiddle factor table. -*/ -arm_status arm_rfft_init_q15( - arm_rfft_instance_q15 * S, - uint32_t fftLenReal, - uint32_t ifftFlagR, - uint32_t bitReverseFlag) -{ - /* Initialise the default arm status */ - arm_status status = ARM_MATH_SUCCESS; - - /* Initialize the Real FFT length */ - S->fftLenReal = (uint16_t) fftLenReal; - - /* Initialize the Twiddle coefficientA pointer */ - S->pTwiddleAReal = (q15_t *) realCoefAQ15; - - /* Initialize the Twiddle coefficientB pointer */ - S->pTwiddleBReal = (q15_t *) realCoefBQ15; - - /* Initialize the Flag for selection of RFFT or RIFFT */ - S->ifftFlagR = (uint8_t) ifftFlagR; - - /* Initialize the Flag for calculation Bit reversal or not */ - S->bitReverseFlagR = (uint8_t) bitReverseFlag; - - /* Initialization of coef modifier depending on the FFT length */ - switch (S->fftLenReal) - { - case 8192U: - S->twidCoefRModifier = 1U; - S->pCfft = &arm_cfft_sR_q15_len4096; - break; - case 4096U: - S->twidCoefRModifier = 2U; - S->pCfft = &arm_cfft_sR_q15_len2048; - break; - case 2048U: - S->twidCoefRModifier = 4U; - S->pCfft = &arm_cfft_sR_q15_len1024; - break; - case 1024U: - S->twidCoefRModifier = 8U; - S->pCfft = &arm_cfft_sR_q15_len512; - break; - case 512U: - S->twidCoefRModifier = 16U; - S->pCfft = &arm_cfft_sR_q15_len256; - break; - case 256U: - S->twidCoefRModifier = 32U; - S->pCfft = &arm_cfft_sR_q15_len128; - break; - case 128U: - S->twidCoefRModifier = 64U; - S->pCfft = &arm_cfft_sR_q15_len64; - break; - case 64U: - S->twidCoefRModifier = 128U; - S->pCfft = &arm_cfft_sR_q15_len32; - break; - case 32U: - S->twidCoefRModifier = 256U; - S->pCfft = &arm_cfft_sR_q15_len16; - break; - default: - /* Reporting argument error if rfftSize is not valid value */ - status = ARM_MATH_ARGUMENT_ERROR; - break; - } - - /* return the status of RFFT Init function */ - return (status); -} - -/** -* @} end of RealFFT group -*/ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_rfft_init_q31.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_rfft_init_q31.c deleted file mode 100644 index 71ec4f5..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_rfft_init_q31.c +++ /dev/null @@ -1,4280 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_rfft_init_q31.c - * Description: RFFT & RIFFT Q31 initialisation function - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" -#include "arm_common_tables.h" -#include "arm_const_structs.h" - -/** -* @ingroup RealFFT -*/ - -/** - * @addtogroup RealFFT_Table Real FFT Tables -* @{ -*/ - -/** -* \par -* Generation fixed-point realCoefAQ31 array in Q31 format: -* \par -* n = 4096 -*
for (i = 0; i < n; i++)
-* {
-*    pATable[2 * i] = 0.5 * (1.0 - sin (2 * PI / (double) (2 * n) * (double) i));
-*    pATable[2 * i + 1] = 0.5 * (-1.0 * cos (2 * PI / (double) (2 * n) * (double) i));
-* }
-* \par -* Convert to fixed point Q31 format -* round(pATable[i] * pow(2, 31)) -*/ -const q31_t realCoefAQ31[8192] = { - (q31_t)0x40000000, (q31_t)0xc0000000, (q31_t)0x3ff36f02, (q31_t)0xc000013c, - (q31_t)0x3fe6de05, (q31_t)0xc00004ef, (q31_t)0x3fda4d09, (q31_t)0xc0000b1a, - (q31_t)0x3fcdbc0f, (q31_t)0xc00013bd, (q31_t)0x3fc12b16, (q31_t)0xc0001ed8, - (q31_t)0x3fb49a1f, (q31_t)0xc0002c6a, (q31_t)0x3fa8092c, (q31_t)0xc0003c74, - (q31_t)0x3f9b783c, (q31_t)0xc0004ef5, (q31_t)0x3f8ee750, (q31_t)0xc00063ee, - (q31_t)0x3f825668, (q31_t)0xc0007b5f, (q31_t)0x3f75c585, (q31_t)0xc0009547, - (q31_t)0x3f6934a8, (q31_t)0xc000b1a7, (q31_t)0x3f5ca3d0, (q31_t)0xc000d07e, - (q31_t)0x3f5012fe, (q31_t)0xc000f1ce, (q31_t)0x3f438234, (q31_t)0xc0011594, - (q31_t)0x3f36f170, (q31_t)0xc0013bd3, (q31_t)0x3f2a60b4, (q31_t)0xc0016489, - (q31_t)0x3f1dd001, (q31_t)0xc0018fb6, (q31_t)0x3f113f56, (q31_t)0xc001bd5c, - (q31_t)0x3f04aeb5, (q31_t)0xc001ed78, (q31_t)0x3ef81e1d, (q31_t)0xc002200d, - (q31_t)0x3eeb8d8f, (q31_t)0xc0025519, (q31_t)0x3edefd0c, (q31_t)0xc0028c9c, - (q31_t)0x3ed26c94, (q31_t)0xc002c697, (q31_t)0x3ec5dc28, (q31_t)0xc003030a, - (q31_t)0x3eb94bc8, (q31_t)0xc00341f4, (q31_t)0x3eacbb74, (q31_t)0xc0038356, - (q31_t)0x3ea02b2e, (q31_t)0xc003c72f, (q31_t)0x3e939af5, (q31_t)0xc0040d80, - (q31_t)0x3e870aca, (q31_t)0xc0045648, (q31_t)0x3e7a7aae, (q31_t)0xc004a188, - (q31_t)0x3e6deaa1, (q31_t)0xc004ef3f, (q31_t)0x3e615aa3, (q31_t)0xc0053f6e, - (q31_t)0x3e54cab5, (q31_t)0xc0059214, (q31_t)0x3e483ad8, (q31_t)0xc005e731, - (q31_t)0x3e3bab0b, (q31_t)0xc0063ec6, (q31_t)0x3e2f1b50, (q31_t)0xc00698d3, - (q31_t)0x3e228ba7, (q31_t)0xc006f556, (q31_t)0x3e15fc11, (q31_t)0xc0075452, - (q31_t)0x3e096c8d, (q31_t)0xc007b5c4, (q31_t)0x3dfcdd1d, (q31_t)0xc00819ae, - (q31_t)0x3df04dc0, (q31_t)0xc008800f, (q31_t)0x3de3be78, (q31_t)0xc008e8e8, - (q31_t)0x3dd72f45, (q31_t)0xc0095438, (q31_t)0x3dcaa027, (q31_t)0xc009c1ff, - (q31_t)0x3dbe111e, (q31_t)0xc00a323d, (q31_t)0x3db1822c, (q31_t)0xc00aa4f3, - (q31_t)0x3da4f351, (q31_t)0xc00b1a20, (q31_t)0x3d98648d, (q31_t)0xc00b91c4, - (q31_t)0x3d8bd5e1, (q31_t)0xc00c0be0, (q31_t)0x3d7f474d, (q31_t)0xc00c8872, - (q31_t)0x3d72b8d2, (q31_t)0xc00d077c, (q31_t)0x3d662a70, (q31_t)0xc00d88fd, - (q31_t)0x3d599c28, (q31_t)0xc00e0cf5, (q31_t)0x3d4d0df9, (q31_t)0xc00e9364, - (q31_t)0x3d407fe6, (q31_t)0xc00f1c4a, (q31_t)0x3d33f1ed, (q31_t)0xc00fa7a8, - (q31_t)0x3d276410, (q31_t)0xc010357c, (q31_t)0x3d1ad650, (q31_t)0xc010c5c7, - (q31_t)0x3d0e48ab, (q31_t)0xc011588a, (q31_t)0x3d01bb24, (q31_t)0xc011edc3, - (q31_t)0x3cf52dbb, (q31_t)0xc0128574, (q31_t)0x3ce8a06f, (q31_t)0xc0131f9b, - (q31_t)0x3cdc1342, (q31_t)0xc013bc39, (q31_t)0x3ccf8634, (q31_t)0xc0145b4e, - (q31_t)0x3cc2f945, (q31_t)0xc014fcda, (q31_t)0x3cb66c77, (q31_t)0xc015a0dd, - (q31_t)0x3ca9dfc8, (q31_t)0xc0164757, (q31_t)0x3c9d533b, (q31_t)0xc016f047, - (q31_t)0x3c90c6cf, (q31_t)0xc0179bae, (q31_t)0x3c843a85, (q31_t)0xc018498c, - (q31_t)0x3c77ae5e, (q31_t)0xc018f9e1, (q31_t)0x3c6b2259, (q31_t)0xc019acac, - (q31_t)0x3c5e9678, (q31_t)0xc01a61ee, (q31_t)0x3c520aba, (q31_t)0xc01b19a7, - (q31_t)0x3c457f21, (q31_t)0xc01bd3d6, (q31_t)0x3c38f3ac, (q31_t)0xc01c907c, - (q31_t)0x3c2c685d, (q31_t)0xc01d4f99, (q31_t)0x3c1fdd34, (q31_t)0xc01e112b, - (q31_t)0x3c135231, (q31_t)0xc01ed535, (q31_t)0x3c06c754, (q31_t)0xc01f9bb5, - (q31_t)0x3bfa3c9f, (q31_t)0xc02064ab, (q31_t)0x3bedb212, (q31_t)0xc0213018, - (q31_t)0x3be127ac, (q31_t)0xc021fdfb, (q31_t)0x3bd49d70, (q31_t)0xc022ce54, - (q31_t)0x3bc8135c, (q31_t)0xc023a124, (q31_t)0x3bbb8973, (q31_t)0xc024766a, - (q31_t)0x3baeffb3, (q31_t)0xc0254e27, (q31_t)0x3ba2761e, (q31_t)0xc0262859, - (q31_t)0x3b95ecb4, (q31_t)0xc0270502, (q31_t)0x3b896375, (q31_t)0xc027e421, - (q31_t)0x3b7cda63, (q31_t)0xc028c5b6, (q31_t)0x3b70517d, (q31_t)0xc029a9c1, - (q31_t)0x3b63c8c4, (q31_t)0xc02a9042, (q31_t)0x3b574039, (q31_t)0xc02b7939, - (q31_t)0x3b4ab7db, (q31_t)0xc02c64a6, (q31_t)0x3b3e2fac, (q31_t)0xc02d5289, - (q31_t)0x3b31a7ac, (q31_t)0xc02e42e2, (q31_t)0x3b251fdc, (q31_t)0xc02f35b1, - (q31_t)0x3b18983b, (q31_t)0xc0302af5, (q31_t)0x3b0c10cb, (q31_t)0xc03122b0, - (q31_t)0x3aff898c, (q31_t)0xc0321ce0, (q31_t)0x3af3027e, (q31_t)0xc0331986, - (q31_t)0x3ae67ba2, (q31_t)0xc03418a2, (q31_t)0x3ad9f4f8, (q31_t)0xc0351a33, - (q31_t)0x3acd6e81, (q31_t)0xc0361e3a, (q31_t)0x3ac0e83d, (q31_t)0xc03724b6, - (q31_t)0x3ab4622d, (q31_t)0xc0382da8, (q31_t)0x3aa7dc52, (q31_t)0xc0393910, - (q31_t)0x3a9b56ab, (q31_t)0xc03a46ed, (q31_t)0x3a8ed139, (q31_t)0xc03b573f, - (q31_t)0x3a824bfd, (q31_t)0xc03c6a07, (q31_t)0x3a75c6f8, (q31_t)0xc03d7f44, - (q31_t)0x3a694229, (q31_t)0xc03e96f6, (q31_t)0x3a5cbd91, (q31_t)0xc03fb11d, - (q31_t)0x3a503930, (q31_t)0xc040cdba, (q31_t)0x3a43b508, (q31_t)0xc041eccc, - (q31_t)0x3a373119, (q31_t)0xc0430e53, (q31_t)0x3a2aad62, (q31_t)0xc044324f, - (q31_t)0x3a1e29e5, (q31_t)0xc04558c0, (q31_t)0x3a11a6a3, (q31_t)0xc04681a6, - (q31_t)0x3a05239a, (q31_t)0xc047ad01, (q31_t)0x39f8a0cd, (q31_t)0xc048dad1, - (q31_t)0x39ec1e3b, (q31_t)0xc04a0b16, (q31_t)0x39df9be6, (q31_t)0xc04b3dcf, - (q31_t)0x39d319cc, (q31_t)0xc04c72fe, (q31_t)0x39c697f0, (q31_t)0xc04daaa1, - (q31_t)0x39ba1651, (q31_t)0xc04ee4b8, (q31_t)0x39ad94f0, (q31_t)0xc0502145, - (q31_t)0x39a113cd, (q31_t)0xc0516045, (q31_t)0x399492ea, (q31_t)0xc052a1bb, - (q31_t)0x39881245, (q31_t)0xc053e5a5, (q31_t)0x397b91e1, (q31_t)0xc0552c03, - (q31_t)0x396f11bc, (q31_t)0xc05674d6, (q31_t)0x396291d9, (q31_t)0xc057c01d, - (q31_t)0x39561237, (q31_t)0xc0590dd8, (q31_t)0x394992d7, (q31_t)0xc05a5e07, - (q31_t)0x393d13b8, (q31_t)0xc05bb0ab, (q31_t)0x393094dd, (q31_t)0xc05d05c3, - (q31_t)0x39241645, (q31_t)0xc05e5d4e, (q31_t)0x391797f0, (q31_t)0xc05fb74e, - (q31_t)0x390b19e0, (q31_t)0xc06113c2, (q31_t)0x38fe9c15, (q31_t)0xc06272aa, - (q31_t)0x38f21e8e, (q31_t)0xc063d405, (q31_t)0x38e5a14d, (q31_t)0xc06537d4, - (q31_t)0x38d92452, (q31_t)0xc0669e18, (q31_t)0x38cca79e, (q31_t)0xc06806ce, - (q31_t)0x38c02b31, (q31_t)0xc06971f9, (q31_t)0x38b3af0c, (q31_t)0xc06adf97, - (q31_t)0x38a7332e, (q31_t)0xc06c4fa8, (q31_t)0x389ab799, (q31_t)0xc06dc22e, - (q31_t)0x388e3c4d, (q31_t)0xc06f3726, (q31_t)0x3881c14b, (q31_t)0xc070ae92, - (q31_t)0x38754692, (q31_t)0xc0722871, (q31_t)0x3868cc24, (q31_t)0xc073a4c3, - (q31_t)0x385c5201, (q31_t)0xc0752389, (q31_t)0x384fd829, (q31_t)0xc076a4c2, - (q31_t)0x38435e9d, (q31_t)0xc078286e, (q31_t)0x3836e55d, (q31_t)0xc079ae8c, - (q31_t)0x382a6c6a, (q31_t)0xc07b371e, (q31_t)0x381df3c5, (q31_t)0xc07cc223, - (q31_t)0x38117b6d, (q31_t)0xc07e4f9b, (q31_t)0x38050364, (q31_t)0xc07fdf85, - (q31_t)0x37f88ba9, (q31_t)0xc08171e2, (q31_t)0x37ec143e, (q31_t)0xc08306b2, - (q31_t)0x37df9d22, (q31_t)0xc0849df4, (q31_t)0x37d32657, (q31_t)0xc08637a9, - (q31_t)0x37c6afdc, (q31_t)0xc087d3d0, (q31_t)0x37ba39b3, (q31_t)0xc089726a, - (q31_t)0x37adc3db, (q31_t)0xc08b1376, (q31_t)0x37a14e55, (q31_t)0xc08cb6f5, - (q31_t)0x3794d922, (q31_t)0xc08e5ce5, (q31_t)0x37886442, (q31_t)0xc0900548, - (q31_t)0x377befb5, (q31_t)0xc091b01d, (q31_t)0x376f7b7d, (q31_t)0xc0935d64, - (q31_t)0x37630799, (q31_t)0xc0950d1d, (q31_t)0x3756940a, (q31_t)0xc096bf48, - (q31_t)0x374a20d0, (q31_t)0xc09873e4, (q31_t)0x373daded, (q31_t)0xc09a2af3, - (q31_t)0x37313b60, (q31_t)0xc09be473, (q31_t)0x3724c92a, (q31_t)0xc09da065, - (q31_t)0x3718574b, (q31_t)0xc09f5ec8, (q31_t)0x370be5c4, (q31_t)0xc0a11f9d, - (q31_t)0x36ff7496, (q31_t)0xc0a2e2e3, (q31_t)0x36f303c0, (q31_t)0xc0a4a89b, - (q31_t)0x36e69344, (q31_t)0xc0a670c4, (q31_t)0x36da2321, (q31_t)0xc0a83b5e, - (q31_t)0x36cdb359, (q31_t)0xc0aa086a, (q31_t)0x36c143ec, (q31_t)0xc0abd7e6, - (q31_t)0x36b4d4d9, (q31_t)0xc0ada9d4, (q31_t)0x36a86623, (q31_t)0xc0af7e33, - (q31_t)0x369bf7c9, (q31_t)0xc0b15502, (q31_t)0x368f89cb, (q31_t)0xc0b32e42, - (q31_t)0x36831c2b, (q31_t)0xc0b509f3, (q31_t)0x3676aee8, (q31_t)0xc0b6e815, - (q31_t)0x366a4203, (q31_t)0xc0b8c8a7, (q31_t)0x365dd57d, (q31_t)0xc0baabaa, - (q31_t)0x36516956, (q31_t)0xc0bc911d, (q31_t)0x3644fd8f, (q31_t)0xc0be7901, - (q31_t)0x36389228, (q31_t)0xc0c06355, (q31_t)0x362c2721, (q31_t)0xc0c25019, - (q31_t)0x361fbc7b, (q31_t)0xc0c43f4d, (q31_t)0x36135237, (q31_t)0xc0c630f2, - (q31_t)0x3606e854, (q31_t)0xc0c82506, (q31_t)0x35fa7ed4, (q31_t)0xc0ca1b8a, - (q31_t)0x35ee15b7, (q31_t)0xc0cc147f, (q31_t)0x35e1acfd, (q31_t)0xc0ce0fe3, - (q31_t)0x35d544a7, (q31_t)0xc0d00db6, (q31_t)0x35c8dcb6, (q31_t)0xc0d20dfa, - (q31_t)0x35bc7529, (q31_t)0xc0d410ad, (q31_t)0x35b00e02, (q31_t)0xc0d615cf, - (q31_t)0x35a3a740, (q31_t)0xc0d81d61, (q31_t)0x359740e5, (q31_t)0xc0da2762, - (q31_t)0x358adaf0, (q31_t)0xc0dc33d2, (q31_t)0x357e7563, (q31_t)0xc0de42b2, - (q31_t)0x3572103d, (q31_t)0xc0e05401, (q31_t)0x3565ab80, (q31_t)0xc0e267be, - (q31_t)0x3559472b, (q31_t)0xc0e47deb, (q31_t)0x354ce33f, (q31_t)0xc0e69686, - (q31_t)0x35407fbd, (q31_t)0xc0e8b190, (q31_t)0x35341ca5, (q31_t)0xc0eacf09, - (q31_t)0x3527b9f7, (q31_t)0xc0eceef1, (q31_t)0x351b57b5, (q31_t)0xc0ef1147, - (q31_t)0x350ef5de, (q31_t)0xc0f1360b, (q31_t)0x35029473, (q31_t)0xc0f35d3e, - (q31_t)0x34f63374, (q31_t)0xc0f586df, (q31_t)0x34e9d2e3, (q31_t)0xc0f7b2ee, - (q31_t)0x34dd72be, (q31_t)0xc0f9e16b, (q31_t)0x34d11308, (q31_t)0xc0fc1257, - (q31_t)0x34c4b3c0, (q31_t)0xc0fe45b0, (q31_t)0x34b854e7, (q31_t)0xc1007b77, - (q31_t)0x34abf67e, (q31_t)0xc102b3ac, (q31_t)0x349f9884, (q31_t)0xc104ee4f, - (q31_t)0x34933afa, (q31_t)0xc1072b5f, (q31_t)0x3486dde1, (q31_t)0xc1096add, - (q31_t)0x347a8139, (q31_t)0xc10bacc8, (q31_t)0x346e2504, (q31_t)0xc10df120, - (q31_t)0x3461c940, (q31_t)0xc11037e6, (q31_t)0x34556def, (q31_t)0xc1128119, - (q31_t)0x34491311, (q31_t)0xc114ccb9, (q31_t)0x343cb8a7, (q31_t)0xc1171ac6, - (q31_t)0x34305eb0, (q31_t)0xc1196b3f, (q31_t)0x3424052f, (q31_t)0xc11bbe26, - (q31_t)0x3417ac22, (q31_t)0xc11e1379, (q31_t)0x340b538b, (q31_t)0xc1206b39, - (q31_t)0x33fefb6a, (q31_t)0xc122c566, (q31_t)0x33f2a3bf, (q31_t)0xc12521ff, - (q31_t)0x33e64c8c, (q31_t)0xc1278104, (q31_t)0x33d9f5cf, (q31_t)0xc129e276, - (q31_t)0x33cd9f8b, (q31_t)0xc12c4653, (q31_t)0x33c149bf, (q31_t)0xc12eac9d, - (q31_t)0x33b4f46c, (q31_t)0xc1311553, (q31_t)0x33a89f92, (q31_t)0xc1338075, - (q31_t)0x339c4b32, (q31_t)0xc135ee02, (q31_t)0x338ff74d, (q31_t)0xc1385dfb, - (q31_t)0x3383a3e2, (q31_t)0xc13ad060, (q31_t)0x337750f2, (q31_t)0xc13d4530, - (q31_t)0x336afe7e, (q31_t)0xc13fbc6c, (q31_t)0x335eac86, (q31_t)0xc1423613, - (q31_t)0x33525b0b, (q31_t)0xc144b225, (q31_t)0x33460a0d, (q31_t)0xc14730a3, - (q31_t)0x3339b98d, (q31_t)0xc149b18b, (q31_t)0x332d698a, (q31_t)0xc14c34df, - (q31_t)0x33211a07, (q31_t)0xc14eba9d, (q31_t)0x3314cb02, (q31_t)0xc15142c6, - (q31_t)0x33087c7d, (q31_t)0xc153cd5a, (q31_t)0x32fc2e77, (q31_t)0xc1565a58, - (q31_t)0x32efe0f2, (q31_t)0xc158e9c1, (q31_t)0x32e393ef, (q31_t)0xc15b7b94, - (q31_t)0x32d7476c, (q31_t)0xc15e0fd1, (q31_t)0x32cafb6b, (q31_t)0xc160a678, - (q31_t)0x32beafed, (q31_t)0xc1633f8a, (q31_t)0x32b264f2, (q31_t)0xc165db05, - (q31_t)0x32a61a7a, (q31_t)0xc16878eb, (q31_t)0x3299d085, (q31_t)0xc16b193a, - (q31_t)0x328d8715, (q31_t)0xc16dbbf3, (q31_t)0x32813e2a, (q31_t)0xc1706115, - (q31_t)0x3274f5c3, (q31_t)0xc17308a1, (q31_t)0x3268ade3, (q31_t)0xc175b296, - (q31_t)0x325c6688, (q31_t)0xc1785ef4, (q31_t)0x32501fb5, (q31_t)0xc17b0dbb, - (q31_t)0x3243d968, (q31_t)0xc17dbeec, (q31_t)0x323793a3, (q31_t)0xc1807285, - (q31_t)0x322b4e66, (q31_t)0xc1832888, (q31_t)0x321f09b1, (q31_t)0xc185e0f3, - (q31_t)0x3212c585, (q31_t)0xc1889bc6, (q31_t)0x320681e3, (q31_t)0xc18b5903, - (q31_t)0x31fa3ecb, (q31_t)0xc18e18a7, (q31_t)0x31edfc3d, (q31_t)0xc190dab4, - (q31_t)0x31e1ba3a, (q31_t)0xc1939f29, (q31_t)0x31d578c2, (q31_t)0xc1966606, - (q31_t)0x31c937d6, (q31_t)0xc1992f4c, (q31_t)0x31bcf777, (q31_t)0xc19bfaf9, - (q31_t)0x31b0b7a4, (q31_t)0xc19ec90d, (q31_t)0x31a4785e, (q31_t)0xc1a1998a, - (q31_t)0x319839a6, (q31_t)0xc1a46c6e, (q31_t)0x318bfb7d, (q31_t)0xc1a741b9, - (q31_t)0x317fbde2, (q31_t)0xc1aa196c, (q31_t)0x317380d6, (q31_t)0xc1acf386, - (q31_t)0x31674459, (q31_t)0xc1afd007, (q31_t)0x315b086d, (q31_t)0xc1b2aef0, - (q31_t)0x314ecd11, (q31_t)0xc1b5903f, (q31_t)0x31429247, (q31_t)0xc1b873f5, - (q31_t)0x3136580d, (q31_t)0xc1bb5a11, (q31_t)0x312a1e66, (q31_t)0xc1be4294, - (q31_t)0x311de551, (q31_t)0xc1c12d7e, (q31_t)0x3111accf, (q31_t)0xc1c41ace, - (q31_t)0x310574e0, (q31_t)0xc1c70a84, (q31_t)0x30f93d86, (q31_t)0xc1c9fca0, - (q31_t)0x30ed06bf, (q31_t)0xc1ccf122, (q31_t)0x30e0d08d, (q31_t)0xc1cfe80a, - (q31_t)0x30d49af1, (q31_t)0xc1d2e158, (q31_t)0x30c865ea, (q31_t)0xc1d5dd0c, - (q31_t)0x30bc317a, (q31_t)0xc1d8db25, (q31_t)0x30affda0, (q31_t)0xc1dbdba3, - (q31_t)0x30a3ca5d, (q31_t)0xc1dede87, (q31_t)0x309797b2, (q31_t)0xc1e1e3d0, - (q31_t)0x308b659f, (q31_t)0xc1e4eb7e, (q31_t)0x307f3424, (q31_t)0xc1e7f591, - (q31_t)0x30730342, (q31_t)0xc1eb0209, (q31_t)0x3066d2fa, (q31_t)0xc1ee10e5, - (q31_t)0x305aa34c, (q31_t)0xc1f12227, (q31_t)0x304e7438, (q31_t)0xc1f435cc, - (q31_t)0x304245c0, (q31_t)0xc1f74bd6, (q31_t)0x303617e2, (q31_t)0xc1fa6445, - (q31_t)0x3029eaa1, (q31_t)0xc1fd7f17, (q31_t)0x301dbdfb, (q31_t)0xc2009c4e, - (q31_t)0x301191f3, (q31_t)0xc203bbe8, (q31_t)0x30056687, (q31_t)0xc206dde6, - (q31_t)0x2ff93bba, (q31_t)0xc20a0248, (q31_t)0x2fed118a, (q31_t)0xc20d290d, - (q31_t)0x2fe0e7f9, (q31_t)0xc2105236, (q31_t)0x2fd4bf08, (q31_t)0xc2137dc2, - (q31_t)0x2fc896b5, (q31_t)0xc216abb1, (q31_t)0x2fbc6f03, (q31_t)0xc219dc03, - (q31_t)0x2fb047f2, (q31_t)0xc21d0eb8, (q31_t)0x2fa42181, (q31_t)0xc22043d0, - (q31_t)0x2f97fbb2, (q31_t)0xc2237b4b, (q31_t)0x2f8bd685, (q31_t)0xc226b528, - (q31_t)0x2f7fb1fa, (q31_t)0xc229f167, (q31_t)0x2f738e12, (q31_t)0xc22d3009, - (q31_t)0x2f676ace, (q31_t)0xc230710d, (q31_t)0x2f5b482d, (q31_t)0xc233b473, - (q31_t)0x2f4f2630, (q31_t)0xc236fa3b, (q31_t)0x2f4304d8, (q31_t)0xc23a4265, - (q31_t)0x2f36e426, (q31_t)0xc23d8cf1, (q31_t)0x2f2ac419, (q31_t)0xc240d9de, - (q31_t)0x2f1ea4b2, (q31_t)0xc244292c, (q31_t)0x2f1285f2, (q31_t)0xc2477adc, - (q31_t)0x2f0667d9, (q31_t)0xc24aceed, (q31_t)0x2efa4a67, (q31_t)0xc24e255e, - (q31_t)0x2eee2d9d, (q31_t)0xc2517e31, (q31_t)0x2ee2117c, (q31_t)0xc254d965, - (q31_t)0x2ed5f604, (q31_t)0xc25836f9, (q31_t)0x2ec9db35, (q31_t)0xc25b96ee, - (q31_t)0x2ebdc110, (q31_t)0xc25ef943, (q31_t)0x2eb1a796, (q31_t)0xc2625df8, - (q31_t)0x2ea58ec6, (q31_t)0xc265c50e, (q31_t)0x2e9976a1, (q31_t)0xc2692e83, - (q31_t)0x2e8d5f29, (q31_t)0xc26c9a58, (q31_t)0x2e81485c, (q31_t)0xc270088e, - (q31_t)0x2e75323c, (q31_t)0xc2737922, (q31_t)0x2e691cc9, (q31_t)0xc276ec16, - (q31_t)0x2e5d0804, (q31_t)0xc27a616a, (q31_t)0x2e50f3ed, (q31_t)0xc27dd91c, - (q31_t)0x2e44e084, (q31_t)0xc281532e, (q31_t)0x2e38cdcb, (q31_t)0xc284cf9f, - (q31_t)0x2e2cbbc1, (q31_t)0xc2884e6e, (q31_t)0x2e20aa67, (q31_t)0xc28bcf9c, - (q31_t)0x2e1499bd, (q31_t)0xc28f5329, (q31_t)0x2e0889c4, (q31_t)0xc292d914, - (q31_t)0x2dfc7a7c, (q31_t)0xc296615d, (q31_t)0x2df06be6, (q31_t)0xc299ec05, - (q31_t)0x2de45e03, (q31_t)0xc29d790a, (q31_t)0x2dd850d2, (q31_t)0xc2a1086d, - (q31_t)0x2dcc4454, (q31_t)0xc2a49a2e, (q31_t)0x2dc0388a, (q31_t)0xc2a82e4d, - (q31_t)0x2db42d74, (q31_t)0xc2abc4c9, (q31_t)0x2da82313, (q31_t)0xc2af5da2, - (q31_t)0x2d9c1967, (q31_t)0xc2b2f8d8, (q31_t)0x2d901070, (q31_t)0xc2b6966c, - (q31_t)0x2d84082f, (q31_t)0xc2ba365c, (q31_t)0x2d7800a5, (q31_t)0xc2bdd8a9, - (q31_t)0x2d6bf9d1, (q31_t)0xc2c17d52, (q31_t)0x2d5ff3b5, (q31_t)0xc2c52459, - (q31_t)0x2d53ee51, (q31_t)0xc2c8cdbb, (q31_t)0x2d47e9a5, (q31_t)0xc2cc7979, - (q31_t)0x2d3be5b1, (q31_t)0xc2d02794, (q31_t)0x2d2fe277, (q31_t)0xc2d3d80a, - (q31_t)0x2d23dff7, (q31_t)0xc2d78add, (q31_t)0x2d17de31, (q31_t)0xc2db400a, - (q31_t)0x2d0bdd25, (q31_t)0xc2def794, (q31_t)0x2cffdcd4, (q31_t)0xc2e2b178, - (q31_t)0x2cf3dd3f, (q31_t)0xc2e66db8, (q31_t)0x2ce7de66, (q31_t)0xc2ea2c53, - (q31_t)0x2cdbe04a, (q31_t)0xc2eded49, (q31_t)0x2ccfe2ea, (q31_t)0xc2f1b099, - (q31_t)0x2cc3e648, (q31_t)0xc2f57644, (q31_t)0x2cb7ea63, (q31_t)0xc2f93e4a, - (q31_t)0x2cabef3d, (q31_t)0xc2fd08a9, (q31_t)0x2c9ff4d6, (q31_t)0xc300d563, - (q31_t)0x2c93fb2e, (q31_t)0xc304a477, (q31_t)0x2c880245, (q31_t)0xc30875e5, - (q31_t)0x2c7c0a1d, (q31_t)0xc30c49ad, (q31_t)0x2c7012b5, (q31_t)0xc3101fce, - (q31_t)0x2c641c0e, (q31_t)0xc313f848, (q31_t)0x2c582629, (q31_t)0xc317d31c, - (q31_t)0x2c4c3106, (q31_t)0xc31bb049, (q31_t)0x2c403ca5, (q31_t)0xc31f8fcf, - (q31_t)0x2c344908, (q31_t)0xc32371ae, (q31_t)0x2c28562d, (q31_t)0xc32755e5, - (q31_t)0x2c1c6417, (q31_t)0xc32b3c75, (q31_t)0x2c1072c4, (q31_t)0xc32f255e, - (q31_t)0x2c048237, (q31_t)0xc333109e, (q31_t)0x2bf8926f, (q31_t)0xc336fe37, - (q31_t)0x2beca36c, (q31_t)0xc33aee27, (q31_t)0x2be0b52f, (q31_t)0xc33ee070, - (q31_t)0x2bd4c7ba, (q31_t)0xc342d510, (q31_t)0x2bc8db0b, (q31_t)0xc346cc07, - (q31_t)0x2bbcef23, (q31_t)0xc34ac556, (q31_t)0x2bb10404, (q31_t)0xc34ec0fc, - (q31_t)0x2ba519ad, (q31_t)0xc352bef9, (q31_t)0x2b99301f, (q31_t)0xc356bf4d, - (q31_t)0x2b8d475b, (q31_t)0xc35ac1f7, (q31_t)0x2b815f60, (q31_t)0xc35ec6f8, - (q31_t)0x2b75782f, (q31_t)0xc362ce50, (q31_t)0x2b6991ca, (q31_t)0xc366d7fd, - (q31_t)0x2b5dac2f, (q31_t)0xc36ae401, (q31_t)0x2b51c760, (q31_t)0xc36ef25b, - (q31_t)0x2b45e35d, (q31_t)0xc373030a, (q31_t)0x2b3a0027, (q31_t)0xc377160f, - (q31_t)0x2b2e1dbe, (q31_t)0xc37b2b6a, (q31_t)0x2b223c22, (q31_t)0xc37f4319, - (q31_t)0x2b165b54, (q31_t)0xc3835d1e, (q31_t)0x2b0a7b54, (q31_t)0xc3877978, - (q31_t)0x2afe9c24, (q31_t)0xc38b9827, (q31_t)0x2af2bdc3, (q31_t)0xc38fb92a, - (q31_t)0x2ae6e031, (q31_t)0xc393dc82, (q31_t)0x2adb0370, (q31_t)0xc398022f, - (q31_t)0x2acf277f, (q31_t)0xc39c2a2f, (q31_t)0x2ac34c60, (q31_t)0xc3a05484, - (q31_t)0x2ab77212, (q31_t)0xc3a4812c, (q31_t)0x2aab9896, (q31_t)0xc3a8b028, - (q31_t)0x2a9fbfed, (q31_t)0xc3ace178, (q31_t)0x2a93e817, (q31_t)0xc3b1151b, - (q31_t)0x2a881114, (q31_t)0xc3b54b11, (q31_t)0x2a7c3ae5, (q31_t)0xc3b9835a, - (q31_t)0x2a70658a, (q31_t)0xc3bdbdf6, (q31_t)0x2a649105, (q31_t)0xc3c1fae5, - (q31_t)0x2a58bd54, (q31_t)0xc3c63a26, (q31_t)0x2a4cea79, (q31_t)0xc3ca7bba, - (q31_t)0x2a411874, (q31_t)0xc3cebfa0, (q31_t)0x2a354746, (q31_t)0xc3d305d8, - (q31_t)0x2a2976ef, (q31_t)0xc3d74e62, (q31_t)0x2a1da770, (q31_t)0xc3db993e, - (q31_t)0x2a11d8c8, (q31_t)0xc3dfe66c, (q31_t)0x2a060af9, (q31_t)0xc3e435ea, - (q31_t)0x29fa3e03, (q31_t)0xc3e887bb, (q31_t)0x29ee71e6, (q31_t)0xc3ecdbdc, - (q31_t)0x29e2a6a3, (q31_t)0xc3f1324e, (q31_t)0x29d6dc3b, (q31_t)0xc3f58b10, - (q31_t)0x29cb12ad, (q31_t)0xc3f9e624, (q31_t)0x29bf49fa, (q31_t)0xc3fe4388, - (q31_t)0x29b38223, (q31_t)0xc402a33c, (q31_t)0x29a7bb28, (q31_t)0xc4070540, - (q31_t)0x299bf509, (q31_t)0xc40b6994, (q31_t)0x29902fc7, (q31_t)0xc40fd037, - (q31_t)0x29846b63, (q31_t)0xc414392b, (q31_t)0x2978a7dd, (q31_t)0xc418a46d, - (q31_t)0x296ce535, (q31_t)0xc41d11ff, (q31_t)0x2961236c, (q31_t)0xc42181e0, - (q31_t)0x29556282, (q31_t)0xc425f410, (q31_t)0x2949a278, (q31_t)0xc42a688f, - (q31_t)0x293de34e, (q31_t)0xc42edf5c, (q31_t)0x29322505, (q31_t)0xc4335877, - (q31_t)0x2926679c, (q31_t)0xc437d3e1, (q31_t)0x291aab16, (q31_t)0xc43c5199, - (q31_t)0x290eef71, (q31_t)0xc440d19e, (q31_t)0x290334af, (q31_t)0xc44553f2, - (q31_t)0x28f77acf, (q31_t)0xc449d892, (q31_t)0x28ebc1d3, (q31_t)0xc44e5f80, - (q31_t)0x28e009ba, (q31_t)0xc452e8bc, (q31_t)0x28d45286, (q31_t)0xc4577444, - (q31_t)0x28c89c37, (q31_t)0xc45c0219, (q31_t)0x28bce6cd, (q31_t)0xc460923b, - (q31_t)0x28b13248, (q31_t)0xc46524a9, (q31_t)0x28a57ea9, (q31_t)0xc469b963, - (q31_t)0x2899cbf1, (q31_t)0xc46e5069, (q31_t)0x288e1a20, (q31_t)0xc472e9bc, - (q31_t)0x28826936, (q31_t)0xc477855a, (q31_t)0x2876b934, (q31_t)0xc47c2344, - (q31_t)0x286b0a1a, (q31_t)0xc480c379, (q31_t)0x285f5be9, (q31_t)0xc48565f9, - (q31_t)0x2853aea1, (q31_t)0xc48a0ac4, (q31_t)0x28480243, (q31_t)0xc48eb1db, - (q31_t)0x283c56cf, (q31_t)0xc4935b3c, (q31_t)0x2830ac45, (q31_t)0xc49806e7, - (q31_t)0x282502a7, (q31_t)0xc49cb4dd, (q31_t)0x281959f4, (q31_t)0xc4a1651c, - (q31_t)0x280db22d, (q31_t)0xc4a617a6, (q31_t)0x28020b52, (q31_t)0xc4aacc7a, - (q31_t)0x27f66564, (q31_t)0xc4af8397, (q31_t)0x27eac063, (q31_t)0xc4b43cfd, - (q31_t)0x27df1c50, (q31_t)0xc4b8f8ad, (q31_t)0x27d3792b, (q31_t)0xc4bdb6a6, - (q31_t)0x27c7d6f4, (q31_t)0xc4c276e8, (q31_t)0x27bc35ad, (q31_t)0xc4c73972, - (q31_t)0x27b09555, (q31_t)0xc4cbfe45, (q31_t)0x27a4f5ed, (q31_t)0xc4d0c560, - (q31_t)0x27995776, (q31_t)0xc4d58ec3, (q31_t)0x278db9ef, (q31_t)0xc4da5a6f, - (q31_t)0x27821d59, (q31_t)0xc4df2862, (q31_t)0x277681b6, (q31_t)0xc4e3f89c, - (q31_t)0x276ae704, (q31_t)0xc4e8cb1e, (q31_t)0x275f4d45, (q31_t)0xc4ed9fe7, - (q31_t)0x2753b479, (q31_t)0xc4f276f7, (q31_t)0x27481ca1, (q31_t)0xc4f7504e, - (q31_t)0x273c85bc, (q31_t)0xc4fc2bec, (q31_t)0x2730efcc, (q31_t)0xc50109d0, - (q31_t)0x27255ad1, (q31_t)0xc505e9fb, (q31_t)0x2719c6cb, (q31_t)0xc50acc6b, - (q31_t)0x270e33bb, (q31_t)0xc50fb121, (q31_t)0x2702a1a1, (q31_t)0xc514981d, - (q31_t)0x26f7107e, (q31_t)0xc519815f, (q31_t)0x26eb8052, (q31_t)0xc51e6ce6, - (q31_t)0x26dff11d, (q31_t)0xc5235ab2, (q31_t)0x26d462e1, (q31_t)0xc5284ac3, - (q31_t)0x26c8d59c, (q31_t)0xc52d3d18, (q31_t)0x26bd4951, (q31_t)0xc53231b3, - (q31_t)0x26b1bdff, (q31_t)0xc5372891, (q31_t)0x26a633a6, (q31_t)0xc53c21b4, - (q31_t)0x269aaa48, (q31_t)0xc5411d1b, (q31_t)0x268f21e5, (q31_t)0xc5461ac6, - (q31_t)0x26839a7c, (q31_t)0xc54b1ab4, (q31_t)0x26781410, (q31_t)0xc5501ce5, - (q31_t)0x266c8e9f, (q31_t)0xc555215a, (q31_t)0x26610a2a, (q31_t)0xc55a2812, - (q31_t)0x265586b3, (q31_t)0xc55f310d, (q31_t)0x264a0438, (q31_t)0xc5643c4a, - (q31_t)0x263e82bc, (q31_t)0xc56949ca, (q31_t)0x2633023e, (q31_t)0xc56e598c, - (q31_t)0x262782be, (q31_t)0xc5736b90, (q31_t)0x261c043d, (q31_t)0xc5787fd6, - (q31_t)0x261086bc, (q31_t)0xc57d965d, (q31_t)0x26050a3b, (q31_t)0xc582af26, - (q31_t)0x25f98ebb, (q31_t)0xc587ca31, (q31_t)0x25ee143b, (q31_t)0xc58ce77c, - (q31_t)0x25e29abc, (q31_t)0xc5920708, (q31_t)0x25d72240, (q31_t)0xc59728d5, - (q31_t)0x25cbaac5, (q31_t)0xc59c4ce3, (q31_t)0x25c0344d, (q31_t)0xc5a17330, - (q31_t)0x25b4bed8, (q31_t)0xc5a69bbe, (q31_t)0x25a94a67, (q31_t)0xc5abc68c, - (q31_t)0x259dd6f9, (q31_t)0xc5b0f399, (q31_t)0x25926490, (q31_t)0xc5b622e6, - (q31_t)0x2586f32c, (q31_t)0xc5bb5472, (q31_t)0x257b82cd, (q31_t)0xc5c0883d, - (q31_t)0x25701374, (q31_t)0xc5c5be47, (q31_t)0x2564a521, (q31_t)0xc5caf690, - (q31_t)0x255937d5, (q31_t)0xc5d03118, (q31_t)0x254dcb8f, (q31_t)0xc5d56ddd, - (q31_t)0x25426051, (q31_t)0xc5daace1, (q31_t)0x2536f61b, (q31_t)0xc5dfee22, - (q31_t)0x252b8cee, (q31_t)0xc5e531a1, (q31_t)0x252024c9, (q31_t)0xc5ea775e, - (q31_t)0x2514bdad, (q31_t)0xc5efbf58, (q31_t)0x2509579b, (q31_t)0xc5f5098f, - (q31_t)0x24fdf294, (q31_t)0xc5fa5603, (q31_t)0x24f28e96, (q31_t)0xc5ffa4b3, - (q31_t)0x24e72ba4, (q31_t)0xc604f5a0, (q31_t)0x24dbc9bd, (q31_t)0xc60a48c9, - (q31_t)0x24d068e2, (q31_t)0xc60f9e2e, (q31_t)0x24c50914, (q31_t)0xc614f5cf, - (q31_t)0x24b9aa52, (q31_t)0xc61a4fac, (q31_t)0x24ae4c9d, (q31_t)0xc61fabc4, - (q31_t)0x24a2eff6, (q31_t)0xc6250a18, (q31_t)0x2497945d, (q31_t)0xc62a6aa6, - (q31_t)0x248c39d3, (q31_t)0xc62fcd6f, (q31_t)0x2480e057, (q31_t)0xc6353273, - (q31_t)0x247587eb, (q31_t)0xc63a99b1, (q31_t)0x246a308f, (q31_t)0xc6400329, - (q31_t)0x245eda43, (q31_t)0xc6456edb, (q31_t)0x24538507, (q31_t)0xc64adcc7, - (q31_t)0x244830dd, (q31_t)0xc6504ced, (q31_t)0x243cddc4, (q31_t)0xc655bf4c, - (q31_t)0x24318bbe, (q31_t)0xc65b33e4, (q31_t)0x24263ac9, (q31_t)0xc660aab5, - (q31_t)0x241aeae8, (q31_t)0xc66623be, (q31_t)0x240f9c1a, (q31_t)0xc66b9f01, - (q31_t)0x24044e60, (q31_t)0xc6711c7b, (q31_t)0x23f901ba, (q31_t)0xc6769c2e, - (q31_t)0x23edb628, (q31_t)0xc67c1e18, (q31_t)0x23e26bac, (q31_t)0xc681a23a, - (q31_t)0x23d72245, (q31_t)0xc6872894, (q31_t)0x23cbd9f4, (q31_t)0xc68cb124, - (q31_t)0x23c092b9, (q31_t)0xc6923bec, (q31_t)0x23b54c95, (q31_t)0xc697c8eb, - (q31_t)0x23aa0788, (q31_t)0xc69d5820, (q31_t)0x239ec393, (q31_t)0xc6a2e98b, - (q31_t)0x239380b6, (q31_t)0xc6a87d2d, (q31_t)0x23883ef2, (q31_t)0xc6ae1304, - (q31_t)0x237cfe47, (q31_t)0xc6b3ab12, (q31_t)0x2371beb5, (q31_t)0xc6b94554, - (q31_t)0x2366803c, (q31_t)0xc6bee1cd, (q31_t)0x235b42df, (q31_t)0xc6c4807a, - (q31_t)0x2350069b, (q31_t)0xc6ca215c, (q31_t)0x2344cb73, (q31_t)0xc6cfc472, - (q31_t)0x23399167, (q31_t)0xc6d569be, (q31_t)0x232e5876, (q31_t)0xc6db113d, - (q31_t)0x232320a2, (q31_t)0xc6e0baf0, (q31_t)0x2317e9eb, (q31_t)0xc6e666d7, - (q31_t)0x230cb451, (q31_t)0xc6ec14f2, (q31_t)0x23017fd5, (q31_t)0xc6f1c540, - (q31_t)0x22f64c77, (q31_t)0xc6f777c1, (q31_t)0x22eb1a37, (q31_t)0xc6fd2c75, - (q31_t)0x22dfe917, (q31_t)0xc702e35c, (q31_t)0x22d4b916, (q31_t)0xc7089c75, - (q31_t)0x22c98a35, (q31_t)0xc70e57c0, (q31_t)0x22be5c74, (q31_t)0xc714153e, - (q31_t)0x22b32fd4, (q31_t)0xc719d4ed, (q31_t)0x22a80456, (q31_t)0xc71f96ce, - (q31_t)0x229cd9f8, (q31_t)0xc7255ae0, (q31_t)0x2291b0bd, (q31_t)0xc72b2123, - (q31_t)0x228688a4, (q31_t)0xc730e997, (q31_t)0x227b61af, (q31_t)0xc736b43c, - (q31_t)0x22703bdc, (q31_t)0xc73c8111, (q31_t)0x2265172e, (q31_t)0xc7425016, - (q31_t)0x2259f3a3, (q31_t)0xc748214c, (q31_t)0x224ed13d, (q31_t)0xc74df4b1, - (q31_t)0x2243affc, (q31_t)0xc753ca46, (q31_t)0x22388fe1, (q31_t)0xc759a20a, - (q31_t)0x222d70eb, (q31_t)0xc75f7bfe, (q31_t)0x2222531c, (q31_t)0xc7655820, - (q31_t)0x22173674, (q31_t)0xc76b3671, (q31_t)0x220c1af3, (q31_t)0xc77116f0, - (q31_t)0x22010099, (q31_t)0xc776f99d, (q31_t)0x21f5e768, (q31_t)0xc77cde79, - (q31_t)0x21eacf5f, (q31_t)0xc782c582, (q31_t)0x21dfb87f, (q31_t)0xc788aeb9, - (q31_t)0x21d4a2c8, (q31_t)0xc78e9a1d, (q31_t)0x21c98e3b, (q31_t)0xc79487ae, - (q31_t)0x21be7ad8, (q31_t)0xc79a776c, (q31_t)0x21b368a0, (q31_t)0xc7a06957, - (q31_t)0x21a85793, (q31_t)0xc7a65d6e, (q31_t)0x219d47b1, (q31_t)0xc7ac53b1, - (q31_t)0x219238fb, (q31_t)0xc7b24c20, (q31_t)0x21872b72, (q31_t)0xc7b846ba, - (q31_t)0x217c1f15, (q31_t)0xc7be4381, (q31_t)0x217113e5, (q31_t)0xc7c44272, - (q31_t)0x216609e3, (q31_t)0xc7ca438f, (q31_t)0x215b0110, (q31_t)0xc7d046d6, - (q31_t)0x214ff96a, (q31_t)0xc7d64c47, (q31_t)0x2144f2f3, (q31_t)0xc7dc53e3, - (q31_t)0x2139edac, (q31_t)0xc7e25daa, (q31_t)0x212ee995, (q31_t)0xc7e8699a, - (q31_t)0x2123e6ad, (q31_t)0xc7ee77b3, (q31_t)0x2118e4f6, (q31_t)0xc7f487f6, - (q31_t)0x210de470, (q31_t)0xc7fa9a62, (q31_t)0x2102e51c, (q31_t)0xc800aef7, - (q31_t)0x20f7e6f9, (q31_t)0xc806c5b5, (q31_t)0x20ecea09, (q31_t)0xc80cde9b, - (q31_t)0x20e1ee4b, (q31_t)0xc812f9a9, (q31_t)0x20d6f3c1, (q31_t)0xc81916df, - (q31_t)0x20cbfa6a, (q31_t)0xc81f363d, (q31_t)0x20c10247, (q31_t)0xc82557c3, - (q31_t)0x20b60b58, (q31_t)0xc82b7b70, (q31_t)0x20ab159e, (q31_t)0xc831a143, - (q31_t)0x20a0211a, (q31_t)0xc837c93e, (q31_t)0x20952dcb, (q31_t)0xc83df35f, - (q31_t)0x208a3bb2, (q31_t)0xc8441fa6, (q31_t)0x207f4acf, (q31_t)0xc84a4e14, - (q31_t)0x20745b24, (q31_t)0xc8507ea7, (q31_t)0x20696cb0, (q31_t)0xc856b160, - (q31_t)0x205e7f74, (q31_t)0xc85ce63e, (q31_t)0x2053936f, (q31_t)0xc8631d42, - (q31_t)0x2048a8a4, (q31_t)0xc869566a, (q31_t)0x203dbf11, (q31_t)0xc86f91b7, - (q31_t)0x2032d6b8, (q31_t)0xc875cf28, (q31_t)0x2027ef99, (q31_t)0xc87c0ebd, - (q31_t)0x201d09b4, (q31_t)0xc8825077, (q31_t)0x2012250a, (q31_t)0xc8889454, - (q31_t)0x2007419b, (q31_t)0xc88eda54, (q31_t)0x1ffc5f67, (q31_t)0xc8952278, - (q31_t)0x1ff17e70, (q31_t)0xc89b6cbf, (q31_t)0x1fe69eb4, (q31_t)0xc8a1b928, - (q31_t)0x1fdbc036, (q31_t)0xc8a807b4, (q31_t)0x1fd0e2f5, (q31_t)0xc8ae5862, - (q31_t)0x1fc606f1, (q31_t)0xc8b4ab32, (q31_t)0x1fbb2c2c, (q31_t)0xc8bb0023, - (q31_t)0x1fb052a5, (q31_t)0xc8c15736, (q31_t)0x1fa57a5d, (q31_t)0xc8c7b06b, - (q31_t)0x1f9aa354, (q31_t)0xc8ce0bc0, (q31_t)0x1f8fcd8b, (q31_t)0xc8d46936, - (q31_t)0x1f84f902, (q31_t)0xc8dac8cd, (q31_t)0x1f7a25ba, (q31_t)0xc8e12a84, - (q31_t)0x1f6f53b3, (q31_t)0xc8e78e5b, (q31_t)0x1f6482ed, (q31_t)0xc8edf452, - (q31_t)0x1f59b369, (q31_t)0xc8f45c68, (q31_t)0x1f4ee527, (q31_t)0xc8fac69e, - (q31_t)0x1f441828, (q31_t)0xc90132f2, (q31_t)0x1f394c6b, (q31_t)0xc907a166, - (q31_t)0x1f2e81f3, (q31_t)0xc90e11f7, (q31_t)0x1f23b8be, (q31_t)0xc91484a8, - (q31_t)0x1f18f0ce, (q31_t)0xc91af976, (q31_t)0x1f0e2a22, (q31_t)0xc9217062, - (q31_t)0x1f0364bc, (q31_t)0xc927e96b, (q31_t)0x1ef8a09b, (q31_t)0xc92e6492, - (q31_t)0x1eedddc0, (q31_t)0xc934e1d6, (q31_t)0x1ee31c2b, (q31_t)0xc93b6137, - (q31_t)0x1ed85bdd, (q31_t)0xc941e2b4, (q31_t)0x1ecd9cd7, (q31_t)0xc948664d, - (q31_t)0x1ec2df18, (q31_t)0xc94eec03, (q31_t)0x1eb822a1, (q31_t)0xc95573d4, - (q31_t)0x1ead6773, (q31_t)0xc95bfdc1, (q31_t)0x1ea2ad8d, (q31_t)0xc96289c9, - (q31_t)0x1e97f4f1, (q31_t)0xc96917ec, (q31_t)0x1e8d3d9e, (q31_t)0xc96fa82a, - (q31_t)0x1e828796, (q31_t)0xc9763a83, (q31_t)0x1e77d2d8, (q31_t)0xc97ccef5, - (q31_t)0x1e6d1f65, (q31_t)0xc9836582, (q31_t)0x1e626d3e, (q31_t)0xc989fe29, - (q31_t)0x1e57bc62, (q31_t)0xc99098e9, (q31_t)0x1e4d0cd2, (q31_t)0xc99735c2, - (q31_t)0x1e425e8f, (q31_t)0xc99dd4b4, (q31_t)0x1e37b199, (q31_t)0xc9a475bf, - (q31_t)0x1e2d05f1, (q31_t)0xc9ab18e3, (q31_t)0x1e225b96, (q31_t)0xc9b1be1e, - (q31_t)0x1e17b28a, (q31_t)0xc9b86572, (q31_t)0x1e0d0acc, (q31_t)0xc9bf0edd, - (q31_t)0x1e02645d, (q31_t)0xc9c5ba60, (q31_t)0x1df7bf3e, (q31_t)0xc9cc67fa, - (q31_t)0x1ded1b6e, (q31_t)0xc9d317ab, (q31_t)0x1de278ef, (q31_t)0xc9d9c973, - (q31_t)0x1dd7d7c1, (q31_t)0xc9e07d51, (q31_t)0x1dcd37e4, (q31_t)0xc9e73346, - (q31_t)0x1dc29958, (q31_t)0xc9edeb50, (q31_t)0x1db7fc1e, (q31_t)0xc9f4a570, - (q31_t)0x1dad6036, (q31_t)0xc9fb61a5, (q31_t)0x1da2c5a2, (q31_t)0xca021fef, - (q31_t)0x1d982c60, (q31_t)0xca08e04f, (q31_t)0x1d8d9472, (q31_t)0xca0fa2c3, - (q31_t)0x1d82fdd8, (q31_t)0xca16674b, (q31_t)0x1d786892, (q31_t)0xca1d2de7, - (q31_t)0x1d6dd4a2, (q31_t)0xca23f698, (q31_t)0x1d634206, (q31_t)0xca2ac15b, - (q31_t)0x1d58b0c0, (q31_t)0xca318e32, (q31_t)0x1d4e20d0, (q31_t)0xca385d1d, - (q31_t)0x1d439236, (q31_t)0xca3f2e19, (q31_t)0x1d3904f4, (q31_t)0xca460129, - (q31_t)0x1d2e7908, (q31_t)0xca4cd64b, (q31_t)0x1d23ee74, (q31_t)0xca53ad7e, - (q31_t)0x1d196538, (q31_t)0xca5a86c4, (q31_t)0x1d0edd55, (q31_t)0xca61621b, - (q31_t)0x1d0456ca, (q31_t)0xca683f83, (q31_t)0x1cf9d199, (q31_t)0xca6f1efc, - (q31_t)0x1cef4dc2, (q31_t)0xca760086, (q31_t)0x1ce4cb44, (q31_t)0xca7ce420, - (q31_t)0x1cda4a21, (q31_t)0xca83c9ca, (q31_t)0x1ccfca59, (q31_t)0xca8ab184, - (q31_t)0x1cc54bec, (q31_t)0xca919b4e, (q31_t)0x1cbacedb, (q31_t)0xca988727, - (q31_t)0x1cb05326, (q31_t)0xca9f750f, (q31_t)0x1ca5d8cd, (q31_t)0xcaa66506, - (q31_t)0x1c9b5fd2, (q31_t)0xcaad570c, (q31_t)0x1c90e834, (q31_t)0xcab44b1f, - (q31_t)0x1c8671f3, (q31_t)0xcabb4141, (q31_t)0x1c7bfd11, (q31_t)0xcac23971, - (q31_t)0x1c71898d, (q31_t)0xcac933ae, (q31_t)0x1c671768, (q31_t)0xcad02ff8, - (q31_t)0x1c5ca6a2, (q31_t)0xcad72e4f, (q31_t)0x1c52373c, (q31_t)0xcade2eb3, - (q31_t)0x1c47c936, (q31_t)0xcae53123, (q31_t)0x1c3d5c91, (q31_t)0xcaec35a0, - (q31_t)0x1c32f14d, (q31_t)0xcaf33c28, (q31_t)0x1c28876a, (q31_t)0xcafa44bc, - (q31_t)0x1c1e1ee9, (q31_t)0xcb014f5b, (q31_t)0x1c13b7c9, (q31_t)0xcb085c05, - (q31_t)0x1c09520d, (q31_t)0xcb0f6aba, (q31_t)0x1bfeedb3, (q31_t)0xcb167b79, - (q31_t)0x1bf48abd, (q31_t)0xcb1d8e43, (q31_t)0x1bea292b, (q31_t)0xcb24a316, - (q31_t)0x1bdfc8fc, (q31_t)0xcb2bb9f4, (q31_t)0x1bd56a32, (q31_t)0xcb32d2da, - (q31_t)0x1bcb0cce, (q31_t)0xcb39edca, (q31_t)0x1bc0b0ce, (q31_t)0xcb410ac3, - (q31_t)0x1bb65634, (q31_t)0xcb4829c4, (q31_t)0x1babfd01, (q31_t)0xcb4f4acd, - (q31_t)0x1ba1a534, (q31_t)0xcb566ddf, (q31_t)0x1b974ece, (q31_t)0xcb5d92f8, - (q31_t)0x1b8cf9cf, (q31_t)0xcb64ba19, (q31_t)0x1b82a638, (q31_t)0xcb6be341, - (q31_t)0x1b785409, (q31_t)0xcb730e70, (q31_t)0x1b6e0342, (q31_t)0xcb7a3ba5, - (q31_t)0x1b63b3e5, (q31_t)0xcb816ae1, (q31_t)0x1b5965f1, (q31_t)0xcb889c23, - (q31_t)0x1b4f1967, (q31_t)0xcb8fcf6b, (q31_t)0x1b44ce46, (q31_t)0xcb9704b9, - (q31_t)0x1b3a8491, (q31_t)0xcb9e3c0b, (q31_t)0x1b303c46, (q31_t)0xcba57563, - (q31_t)0x1b25f566, (q31_t)0xcbacb0bf, (q31_t)0x1b1baff2, (q31_t)0xcbb3ee20, - (q31_t)0x1b116beb, (q31_t)0xcbbb2d85, (q31_t)0x1b072950, (q31_t)0xcbc26eee, - (q31_t)0x1afce821, (q31_t)0xcbc9b25a, (q31_t)0x1af2a860, (q31_t)0xcbd0f7ca, - (q31_t)0x1ae86a0d, (q31_t)0xcbd83f3d, (q31_t)0x1ade2d28, (q31_t)0xcbdf88b3, - (q31_t)0x1ad3f1b1, (q31_t)0xcbe6d42b, (q31_t)0x1ac9b7a9, (q31_t)0xcbee21a5, - (q31_t)0x1abf7f11, (q31_t)0xcbf57121, (q31_t)0x1ab547e8, (q31_t)0xcbfcc29f, - (q31_t)0x1aab122f, (q31_t)0xcc04161e, (q31_t)0x1aa0dde7, (q31_t)0xcc0b6b9e, - (q31_t)0x1a96ab0f, (q31_t)0xcc12c31f, (q31_t)0x1a8c79a9, (q31_t)0xcc1a1ca0, - (q31_t)0x1a8249b4, (q31_t)0xcc217822, (q31_t)0x1a781b31, (q31_t)0xcc28d5a3, - (q31_t)0x1a6dee21, (q31_t)0xcc303524, (q31_t)0x1a63c284, (q31_t)0xcc3796a5, - (q31_t)0x1a599859, (q31_t)0xcc3efa25, (q31_t)0x1a4f6fa3, (q31_t)0xcc465fa3, - (q31_t)0x1a454860, (q31_t)0xcc4dc720, (q31_t)0x1a3b2292, (q31_t)0xcc55309b, - (q31_t)0x1a30fe38, (q31_t)0xcc5c9c14, (q31_t)0x1a26db54, (q31_t)0xcc64098b, - (q31_t)0x1a1cb9e5, (q31_t)0xcc6b78ff, (q31_t)0x1a1299ec, (q31_t)0xcc72ea70, - (q31_t)0x1a087b69, (q31_t)0xcc7a5dde, (q31_t)0x19fe5e5e, (q31_t)0xcc81d349, - (q31_t)0x19f442c9, (q31_t)0xcc894aaf, (q31_t)0x19ea28ac, (q31_t)0xcc90c412, - (q31_t)0x19e01006, (q31_t)0xcc983f70, (q31_t)0x19d5f8d9, (q31_t)0xcc9fbcca, - (q31_t)0x19cbe325, (q31_t)0xcca73c1e, (q31_t)0x19c1cee9, (q31_t)0xccaebd6e, - (q31_t)0x19b7bc27, (q31_t)0xccb640b8, (q31_t)0x19adaadf, (q31_t)0xccbdc5fc, - (q31_t)0x19a39b11, (q31_t)0xccc54d3a, (q31_t)0x19998cbe, (q31_t)0xccccd671, - (q31_t)0x198f7fe6, (q31_t)0xccd461a2, (q31_t)0x19857489, (q31_t)0xccdbeecc, - (q31_t)0x197b6aa8, (q31_t)0xcce37def, (q31_t)0x19716243, (q31_t)0xcceb0f0a, - (q31_t)0x19675b5a, (q31_t)0xccf2a21d, (q31_t)0x195d55ef, (q31_t)0xccfa3729, - (q31_t)0x19535201, (q31_t)0xcd01ce2b, (q31_t)0x19494f90, (q31_t)0xcd096725, - (q31_t)0x193f4e9e, (q31_t)0xcd110216, (q31_t)0x19354f2a, (q31_t)0xcd189efe, - (q31_t)0x192b5135, (q31_t)0xcd203ddc, (q31_t)0x192154bf, (q31_t)0xcd27deb0, - (q31_t)0x191759c9, (q31_t)0xcd2f817b, (q31_t)0x190d6053, (q31_t)0xcd37263a, - (q31_t)0x1903685d, (q31_t)0xcd3eccef, (q31_t)0x18f971e8, (q31_t)0xcd467599, - (q31_t)0x18ef7cf4, (q31_t)0xcd4e2037, (q31_t)0x18e58982, (q31_t)0xcd55ccca, - (q31_t)0x18db9792, (q31_t)0xcd5d7b50, (q31_t)0x18d1a724, (q31_t)0xcd652bcb, - (q31_t)0x18c7b838, (q31_t)0xcd6cde39, (q31_t)0x18bdcad0, (q31_t)0xcd74929a, - (q31_t)0x18b3deeb, (q31_t)0xcd7c48ee, (q31_t)0x18a9f48a, (q31_t)0xcd840134, - (q31_t)0x18a00bae, (q31_t)0xcd8bbb6d, (q31_t)0x18962456, (q31_t)0xcd937798, - (q31_t)0x188c3e83, (q31_t)0xcd9b35b4, (q31_t)0x18825a35, (q31_t)0xcda2f5c2, - (q31_t)0x1878776d, (q31_t)0xcdaab7c0, (q31_t)0x186e962b, (q31_t)0xcdb27bb0, - (q31_t)0x1864b670, (q31_t)0xcdba4190, (q31_t)0x185ad83c, (q31_t)0xcdc20960, - (q31_t)0x1850fb8e, (q31_t)0xcdc9d320, (q31_t)0x18472069, (q31_t)0xcdd19ed0, - (q31_t)0x183d46cc, (q31_t)0xcdd96c6f, (q31_t)0x18336eb7, (q31_t)0xcde13bfd, - (q31_t)0x1829982b, (q31_t)0xcde90d79, (q31_t)0x181fc328, (q31_t)0xcdf0e0e4, - (q31_t)0x1815efae, (q31_t)0xcdf8b63d, (q31_t)0x180c1dbf, (q31_t)0xce008d84, - (q31_t)0x18024d59, (q31_t)0xce0866b8, (q31_t)0x17f87e7f, (q31_t)0xce1041d9, - (q31_t)0x17eeb130, (q31_t)0xce181ee8, (q31_t)0x17e4e56c, (q31_t)0xce1ffde2, - (q31_t)0x17db1b34, (q31_t)0xce27dec9, (q31_t)0x17d15288, (q31_t)0xce2fc19c, - (q31_t)0x17c78b68, (q31_t)0xce37a65b, (q31_t)0x17bdc5d6, (q31_t)0xce3f8d05, - (q31_t)0x17b401d1, (q31_t)0xce47759a, (q31_t)0x17aa3f5a, (q31_t)0xce4f6019, - (q31_t)0x17a07e70, (q31_t)0xce574c84, (q31_t)0x1796bf16, (q31_t)0xce5f3ad8, - (q31_t)0x178d014a, (q31_t)0xce672b16, (q31_t)0x1783450d, (q31_t)0xce6f1d3d, - (q31_t)0x17798a60, (q31_t)0xce77114e, (q31_t)0x176fd143, (q31_t)0xce7f0748, - (q31_t)0x176619b6, (q31_t)0xce86ff2a, (q31_t)0x175c63ba, (q31_t)0xce8ef8f4, - (q31_t)0x1752af4f, (q31_t)0xce96f4a7, (q31_t)0x1748fc75, (q31_t)0xce9ef241, - (q31_t)0x173f4b2e, (q31_t)0xcea6f1c2, (q31_t)0x17359b78, (q31_t)0xceaef32b, - (q31_t)0x172bed55, (q31_t)0xceb6f67a, (q31_t)0x172240c5, (q31_t)0xcebefbb0, - (q31_t)0x171895c9, (q31_t)0xcec702cb, (q31_t)0x170eec60, (q31_t)0xcecf0bcd, - (q31_t)0x1705448b, (q31_t)0xced716b4, (q31_t)0x16fb9e4b, (q31_t)0xcedf2380, - (q31_t)0x16f1f99f, (q31_t)0xcee73231, (q31_t)0x16e85689, (q31_t)0xceef42c7, - (q31_t)0x16deb508, (q31_t)0xcef75541, (q31_t)0x16d5151d, (q31_t)0xceff699f, - (q31_t)0x16cb76c9, (q31_t)0xcf077fe1, (q31_t)0x16c1da0b, (q31_t)0xcf0f9805, - (q31_t)0x16b83ee4, (q31_t)0xcf17b20d, (q31_t)0x16aea555, (q31_t)0xcf1fcdf8, - (q31_t)0x16a50d5d, (q31_t)0xcf27ebc5, (q31_t)0x169b76fe, (q31_t)0xcf300b74, - (q31_t)0x1691e237, (q31_t)0xcf382d05, (q31_t)0x16884f09, (q31_t)0xcf405077, - (q31_t)0x167ebd74, (q31_t)0xcf4875ca, (q31_t)0x16752d79, (q31_t)0xcf509cfe, - (q31_t)0x166b9f18, (q31_t)0xcf58c613, (q31_t)0x16621251, (q31_t)0xcf60f108, - (q31_t)0x16588725, (q31_t)0xcf691ddd, (q31_t)0x164efd94, (q31_t)0xcf714c91, - (q31_t)0x1645759f, (q31_t)0xcf797d24, (q31_t)0x163bef46, (q31_t)0xcf81af97, - (q31_t)0x16326a88, (q31_t)0xcf89e3e8, (q31_t)0x1628e767, (q31_t)0xcf921a17, - (q31_t)0x161f65e4, (q31_t)0xcf9a5225, (q31_t)0x1615e5fd, (q31_t)0xcfa28c10, - (q31_t)0x160c67b4, (q31_t)0xcfaac7d8, (q31_t)0x1602eb0a, (q31_t)0xcfb3057d, - (q31_t)0x15f96ffd, (q31_t)0xcfbb4500, (q31_t)0x15eff690, (q31_t)0xcfc3865e, - (q31_t)0x15e67ec1, (q31_t)0xcfcbc999, (q31_t)0x15dd0892, (q31_t)0xcfd40eaf, - (q31_t)0x15d39403, (q31_t)0xcfdc55a1, (q31_t)0x15ca2115, (q31_t)0xcfe49e6d, - (q31_t)0x15c0afc6, (q31_t)0xcfece915, (q31_t)0x15b74019, (q31_t)0xcff53597, - (q31_t)0x15add20d, (q31_t)0xcffd83f4, (q31_t)0x15a465a3, (q31_t)0xd005d42a, - (q31_t)0x159afadb, (q31_t)0xd00e2639, (q31_t)0x159191b5, (q31_t)0xd0167a22, - (q31_t)0x15882a32, (q31_t)0xd01ecfe4, (q31_t)0x157ec452, (q31_t)0xd027277e, - (q31_t)0x15756016, (q31_t)0xd02f80f1, (q31_t)0x156bfd7d, (q31_t)0xd037dc3b, - (q31_t)0x15629c89, (q31_t)0xd040395d, (q31_t)0x15593d3a, (q31_t)0xd0489856, - (q31_t)0x154fdf8f, (q31_t)0xd050f926, (q31_t)0x15468389, (q31_t)0xd0595bcd, - (q31_t)0x153d292a, (q31_t)0xd061c04a, (q31_t)0x1533d070, (q31_t)0xd06a269d, - (q31_t)0x152a795d, (q31_t)0xd0728ec6, (q31_t)0x152123f0, (q31_t)0xd07af8c4, - (q31_t)0x1517d02b, (q31_t)0xd0836497, (q31_t)0x150e7e0d, (q31_t)0xd08bd23f, - (q31_t)0x15052d97, (q31_t)0xd09441bb, (q31_t)0x14fbdec9, (q31_t)0xd09cb30b, - (q31_t)0x14f291a4, (q31_t)0xd0a5262f, (q31_t)0x14e94627, (q31_t)0xd0ad9b26, - (q31_t)0x14dffc54, (q31_t)0xd0b611f1, (q31_t)0x14d6b42b, (q31_t)0xd0be8a8d, - (q31_t)0x14cd6dab, (q31_t)0xd0c704fd, (q31_t)0x14c428d6, (q31_t)0xd0cf813e, - (q31_t)0x14bae5ab, (q31_t)0xd0d7ff51, (q31_t)0x14b1a42c, (q31_t)0xd0e07f36, - (q31_t)0x14a86458, (q31_t)0xd0e900ec, (q31_t)0x149f2630, (q31_t)0xd0f18472, - (q31_t)0x1495e9b3, (q31_t)0xd0fa09c9, (q31_t)0x148caee4, (q31_t)0xd10290f0, - (q31_t)0x148375c1, (q31_t)0xd10b19e7, (q31_t)0x147a3e4b, (q31_t)0xd113a4ad, - (q31_t)0x14710883, (q31_t)0xd11c3142, (q31_t)0x1467d469, (q31_t)0xd124bfa6, - (q31_t)0x145ea1fd, (q31_t)0xd12d4fd9, (q31_t)0x14557140, (q31_t)0xd135e1d9, - (q31_t)0x144c4232, (q31_t)0xd13e75a8, (q31_t)0x144314d3, (q31_t)0xd1470b44, - (q31_t)0x1439e923, (q31_t)0xd14fa2ad, (q31_t)0x1430bf24, (q31_t)0xd1583be2, - (q31_t)0x142796d5, (q31_t)0xd160d6e5, (q31_t)0x141e7037, (q31_t)0xd16973b3, - (q31_t)0x14154b4a, (q31_t)0xd172124d, (q31_t)0x140c280e, (q31_t)0xd17ab2b3, - (q31_t)0x14030684, (q31_t)0xd18354e4, (q31_t)0x13f9e6ad, (q31_t)0xd18bf8e0, - (q31_t)0x13f0c887, (q31_t)0xd1949ea6, (q31_t)0x13e7ac15, (q31_t)0xd19d4636, - (q31_t)0x13de9156, (q31_t)0xd1a5ef90, (q31_t)0x13d5784a, (q31_t)0xd1ae9ab4, - (q31_t)0x13cc60f2, (q31_t)0xd1b747a0, (q31_t)0x13c34b4f, (q31_t)0xd1bff656, - (q31_t)0x13ba3760, (q31_t)0xd1c8a6d4, (q31_t)0x13b12526, (q31_t)0xd1d1591a, - (q31_t)0x13a814a2, (q31_t)0xd1da0d28, (q31_t)0x139f05d3, (q31_t)0xd1e2c2fd, - (q31_t)0x1395f8ba, (q31_t)0xd1eb7a9a, (q31_t)0x138ced57, (q31_t)0xd1f433fd, - (q31_t)0x1383e3ab, (q31_t)0xd1fcef27, (q31_t)0x137adbb6, (q31_t)0xd205ac17, - (q31_t)0x1371d579, (q31_t)0xd20e6acc, (q31_t)0x1368d0f3, (q31_t)0xd2172b48, - (q31_t)0x135fce26, (q31_t)0xd21fed88, (q31_t)0x1356cd11, (q31_t)0xd228b18d, - (q31_t)0x134dcdb4, (q31_t)0xd2317756, (q31_t)0x1344d011, (q31_t)0xd23a3ee4, - (q31_t)0x133bd427, (q31_t)0xd2430835, (q31_t)0x1332d9f7, (q31_t)0xd24bd34a, - (q31_t)0x1329e181, (q31_t)0xd254a021, (q31_t)0x1320eac6, (q31_t)0xd25d6ebc, - (q31_t)0x1317f5c6, (q31_t)0xd2663f19, (q31_t)0x130f0280, (q31_t)0xd26f1138, - (q31_t)0x130610f7, (q31_t)0xd277e518, (q31_t)0x12fd2129, (q31_t)0xd280babb, - (q31_t)0x12f43318, (q31_t)0xd289921e, (q31_t)0x12eb46c3, (q31_t)0xd2926b41, - (q31_t)0x12e25c2b, (q31_t)0xd29b4626, (q31_t)0x12d97350, (q31_t)0xd2a422ca, - (q31_t)0x12d08c33, (q31_t)0xd2ad012e, (q31_t)0x12c7a6d4, (q31_t)0xd2b5e151, - (q31_t)0x12bec333, (q31_t)0xd2bec333, (q31_t)0x12b5e151, (q31_t)0xd2c7a6d4, - (q31_t)0x12ad012e, (q31_t)0xd2d08c33, (q31_t)0x12a422ca, (q31_t)0xd2d97350, - (q31_t)0x129b4626, (q31_t)0xd2e25c2b, (q31_t)0x12926b41, (q31_t)0xd2eb46c3, - (q31_t)0x1289921e, (q31_t)0xd2f43318, (q31_t)0x1280babb, (q31_t)0xd2fd2129, - (q31_t)0x1277e518, (q31_t)0xd30610f7, (q31_t)0x126f1138, (q31_t)0xd30f0280, - (q31_t)0x12663f19, (q31_t)0xd317f5c6, (q31_t)0x125d6ebc, (q31_t)0xd320eac6, - (q31_t)0x1254a021, (q31_t)0xd329e181, (q31_t)0x124bd34a, (q31_t)0xd332d9f7, - (q31_t)0x12430835, (q31_t)0xd33bd427, (q31_t)0x123a3ee4, (q31_t)0xd344d011, - (q31_t)0x12317756, (q31_t)0xd34dcdb4, (q31_t)0x1228b18d, (q31_t)0xd356cd11, - (q31_t)0x121fed88, (q31_t)0xd35fce26, (q31_t)0x12172b48, (q31_t)0xd368d0f3, - (q31_t)0x120e6acc, (q31_t)0xd371d579, (q31_t)0x1205ac17, (q31_t)0xd37adbb6, - (q31_t)0x11fcef27, (q31_t)0xd383e3ab, (q31_t)0x11f433fd, (q31_t)0xd38ced57, - (q31_t)0x11eb7a9a, (q31_t)0xd395f8ba, (q31_t)0x11e2c2fd, (q31_t)0xd39f05d3, - (q31_t)0x11da0d28, (q31_t)0xd3a814a2, (q31_t)0x11d1591a, (q31_t)0xd3b12526, - (q31_t)0x11c8a6d4, (q31_t)0xd3ba3760, (q31_t)0x11bff656, (q31_t)0xd3c34b4f, - (q31_t)0x11b747a0, (q31_t)0xd3cc60f2, (q31_t)0x11ae9ab4, (q31_t)0xd3d5784a, - (q31_t)0x11a5ef90, (q31_t)0xd3de9156, (q31_t)0x119d4636, (q31_t)0xd3e7ac15, - (q31_t)0x11949ea6, (q31_t)0xd3f0c887, (q31_t)0x118bf8e0, (q31_t)0xd3f9e6ad, - (q31_t)0x118354e4, (q31_t)0xd4030684, (q31_t)0x117ab2b3, (q31_t)0xd40c280e, - (q31_t)0x1172124d, (q31_t)0xd4154b4a, (q31_t)0x116973b3, (q31_t)0xd41e7037, - (q31_t)0x1160d6e5, (q31_t)0xd42796d5, (q31_t)0x11583be2, (q31_t)0xd430bf24, - (q31_t)0x114fa2ad, (q31_t)0xd439e923, (q31_t)0x11470b44, (q31_t)0xd44314d3, - (q31_t)0x113e75a8, (q31_t)0xd44c4232, (q31_t)0x1135e1d9, (q31_t)0xd4557140, - (q31_t)0x112d4fd9, (q31_t)0xd45ea1fd, (q31_t)0x1124bfa6, (q31_t)0xd467d469, - (q31_t)0x111c3142, (q31_t)0xd4710883, (q31_t)0x1113a4ad, (q31_t)0xd47a3e4b, - (q31_t)0x110b19e7, (q31_t)0xd48375c1, (q31_t)0x110290f0, (q31_t)0xd48caee4, - (q31_t)0x10fa09c9, (q31_t)0xd495e9b3, (q31_t)0x10f18472, (q31_t)0xd49f2630, - (q31_t)0x10e900ec, (q31_t)0xd4a86458, (q31_t)0x10e07f36, (q31_t)0xd4b1a42c, - (q31_t)0x10d7ff51, (q31_t)0xd4bae5ab, (q31_t)0x10cf813e, (q31_t)0xd4c428d6, - (q31_t)0x10c704fd, (q31_t)0xd4cd6dab, (q31_t)0x10be8a8d, (q31_t)0xd4d6b42b, - (q31_t)0x10b611f1, (q31_t)0xd4dffc54, (q31_t)0x10ad9b26, (q31_t)0xd4e94627, - (q31_t)0x10a5262f, (q31_t)0xd4f291a4, (q31_t)0x109cb30b, (q31_t)0xd4fbdec9, - (q31_t)0x109441bb, (q31_t)0xd5052d97, (q31_t)0x108bd23f, (q31_t)0xd50e7e0d, - (q31_t)0x10836497, (q31_t)0xd517d02b, (q31_t)0x107af8c4, (q31_t)0xd52123f0, - (q31_t)0x10728ec6, (q31_t)0xd52a795d, (q31_t)0x106a269d, (q31_t)0xd533d070, - (q31_t)0x1061c04a, (q31_t)0xd53d292a, (q31_t)0x10595bcd, (q31_t)0xd5468389, - (q31_t)0x1050f926, (q31_t)0xd54fdf8f, (q31_t)0x10489856, (q31_t)0xd5593d3a, - (q31_t)0x1040395d, (q31_t)0xd5629c89, (q31_t)0x1037dc3b, (q31_t)0xd56bfd7d, - (q31_t)0x102f80f1, (q31_t)0xd5756016, (q31_t)0x1027277e, (q31_t)0xd57ec452, - (q31_t)0x101ecfe4, (q31_t)0xd5882a32, (q31_t)0x10167a22, (q31_t)0xd59191b5, - (q31_t)0x100e2639, (q31_t)0xd59afadb, (q31_t)0x1005d42a, (q31_t)0xd5a465a3, - (q31_t)0xffd83f4, (q31_t)0xd5add20d, (q31_t)0xff53597, (q31_t)0xd5b74019, - (q31_t)0xfece915, (q31_t)0xd5c0afc6, (q31_t)0xfe49e6d, (q31_t)0xd5ca2115, - (q31_t)0xfdc55a1, (q31_t)0xd5d39403, (q31_t)0xfd40eaf, (q31_t)0xd5dd0892, - (q31_t)0xfcbc999, (q31_t)0xd5e67ec1, (q31_t)0xfc3865e, (q31_t)0xd5eff690, - (q31_t)0xfbb4500, (q31_t)0xd5f96ffd, (q31_t)0xfb3057d, (q31_t)0xd602eb0a, - (q31_t)0xfaac7d8, (q31_t)0xd60c67b4, (q31_t)0xfa28c10, (q31_t)0xd615e5fd, - (q31_t)0xf9a5225, (q31_t)0xd61f65e4, (q31_t)0xf921a17, (q31_t)0xd628e767, - (q31_t)0xf89e3e8, (q31_t)0xd6326a88, (q31_t)0xf81af97, (q31_t)0xd63bef46, - (q31_t)0xf797d24, (q31_t)0xd645759f, (q31_t)0xf714c91, (q31_t)0xd64efd94, - (q31_t)0xf691ddd, (q31_t)0xd6588725, (q31_t)0xf60f108, (q31_t)0xd6621251, - (q31_t)0xf58c613, (q31_t)0xd66b9f18, (q31_t)0xf509cfe, (q31_t)0xd6752d79, - (q31_t)0xf4875ca, (q31_t)0xd67ebd74, (q31_t)0xf405077, (q31_t)0xd6884f09, - (q31_t)0xf382d05, (q31_t)0xd691e237, (q31_t)0xf300b74, (q31_t)0xd69b76fe, - (q31_t)0xf27ebc5, (q31_t)0xd6a50d5d, (q31_t)0xf1fcdf8, (q31_t)0xd6aea555, - (q31_t)0xf17b20d, (q31_t)0xd6b83ee4, (q31_t)0xf0f9805, (q31_t)0xd6c1da0b, - (q31_t)0xf077fe1, (q31_t)0xd6cb76c9, (q31_t)0xeff699f, (q31_t)0xd6d5151d, - (q31_t)0xef75541, (q31_t)0xd6deb508, (q31_t)0xeef42c7, (q31_t)0xd6e85689, - (q31_t)0xee73231, (q31_t)0xd6f1f99f, (q31_t)0xedf2380, (q31_t)0xd6fb9e4b, - (q31_t)0xed716b4, (q31_t)0xd705448b, (q31_t)0xecf0bcd, (q31_t)0xd70eec60, - (q31_t)0xec702cb, (q31_t)0xd71895c9, (q31_t)0xebefbb0, (q31_t)0xd72240c5, - (q31_t)0xeb6f67a, (q31_t)0xd72bed55, (q31_t)0xeaef32b, (q31_t)0xd7359b78, - (q31_t)0xea6f1c2, (q31_t)0xd73f4b2e, (q31_t)0xe9ef241, (q31_t)0xd748fc75, - (q31_t)0xe96f4a7, (q31_t)0xd752af4f, (q31_t)0xe8ef8f4, (q31_t)0xd75c63ba, - (q31_t)0xe86ff2a, (q31_t)0xd76619b6, (q31_t)0xe7f0748, (q31_t)0xd76fd143, - (q31_t)0xe77114e, (q31_t)0xd7798a60, (q31_t)0xe6f1d3d, (q31_t)0xd783450d, - (q31_t)0xe672b16, (q31_t)0xd78d014a, (q31_t)0xe5f3ad8, (q31_t)0xd796bf16, - (q31_t)0xe574c84, (q31_t)0xd7a07e70, (q31_t)0xe4f6019, (q31_t)0xd7aa3f5a, - (q31_t)0xe47759a, (q31_t)0xd7b401d1, (q31_t)0xe3f8d05, (q31_t)0xd7bdc5d6, - (q31_t)0xe37a65b, (q31_t)0xd7c78b68, (q31_t)0xe2fc19c, (q31_t)0xd7d15288, - (q31_t)0xe27dec9, (q31_t)0xd7db1b34, (q31_t)0xe1ffde2, (q31_t)0xd7e4e56c, - (q31_t)0xe181ee8, (q31_t)0xd7eeb130, (q31_t)0xe1041d9, (q31_t)0xd7f87e7f, - (q31_t)0xe0866b8, (q31_t)0xd8024d59, (q31_t)0xe008d84, (q31_t)0xd80c1dbf, - (q31_t)0xdf8b63d, (q31_t)0xd815efae, (q31_t)0xdf0e0e4, (q31_t)0xd81fc328, - (q31_t)0xde90d79, (q31_t)0xd829982b, (q31_t)0xde13bfd, (q31_t)0xd8336eb7, - (q31_t)0xdd96c6f, (q31_t)0xd83d46cc, (q31_t)0xdd19ed0, (q31_t)0xd8472069, - (q31_t)0xdc9d320, (q31_t)0xd850fb8e, (q31_t)0xdc20960, (q31_t)0xd85ad83c, - (q31_t)0xdba4190, (q31_t)0xd864b670, (q31_t)0xdb27bb0, (q31_t)0xd86e962b, - (q31_t)0xdaab7c0, (q31_t)0xd878776d, (q31_t)0xda2f5c2, (q31_t)0xd8825a35, - (q31_t)0xd9b35b4, (q31_t)0xd88c3e83, (q31_t)0xd937798, (q31_t)0xd8962456, - (q31_t)0xd8bbb6d, (q31_t)0xd8a00bae, (q31_t)0xd840134, (q31_t)0xd8a9f48a, - (q31_t)0xd7c48ee, (q31_t)0xd8b3deeb, (q31_t)0xd74929a, (q31_t)0xd8bdcad0, - (q31_t)0xd6cde39, (q31_t)0xd8c7b838, (q31_t)0xd652bcb, (q31_t)0xd8d1a724, - (q31_t)0xd5d7b50, (q31_t)0xd8db9792, (q31_t)0xd55ccca, (q31_t)0xd8e58982, - (q31_t)0xd4e2037, (q31_t)0xd8ef7cf4, (q31_t)0xd467599, (q31_t)0xd8f971e8, - (q31_t)0xd3eccef, (q31_t)0xd903685d, (q31_t)0xd37263a, (q31_t)0xd90d6053, - (q31_t)0xd2f817b, (q31_t)0xd91759c9, (q31_t)0xd27deb0, (q31_t)0xd92154bf, - (q31_t)0xd203ddc, (q31_t)0xd92b5135, (q31_t)0xd189efe, (q31_t)0xd9354f2a, - (q31_t)0xd110216, (q31_t)0xd93f4e9e, (q31_t)0xd096725, (q31_t)0xd9494f90, - (q31_t)0xd01ce2b, (q31_t)0xd9535201, (q31_t)0xcfa3729, (q31_t)0xd95d55ef, - (q31_t)0xcf2a21d, (q31_t)0xd9675b5a, (q31_t)0xceb0f0a, (q31_t)0xd9716243, - (q31_t)0xce37def, (q31_t)0xd97b6aa8, (q31_t)0xcdbeecc, (q31_t)0xd9857489, - (q31_t)0xcd461a2, (q31_t)0xd98f7fe6, (q31_t)0xcccd671, (q31_t)0xd9998cbe, - (q31_t)0xcc54d3a, (q31_t)0xd9a39b11, (q31_t)0xcbdc5fc, (q31_t)0xd9adaadf, - (q31_t)0xcb640b8, (q31_t)0xd9b7bc27, (q31_t)0xcaebd6e, (q31_t)0xd9c1cee9, - (q31_t)0xca73c1e, (q31_t)0xd9cbe325, (q31_t)0xc9fbcca, (q31_t)0xd9d5f8d9, - (q31_t)0xc983f70, (q31_t)0xd9e01006, (q31_t)0xc90c412, (q31_t)0xd9ea28ac, - (q31_t)0xc894aaf, (q31_t)0xd9f442c9, (q31_t)0xc81d349, (q31_t)0xd9fe5e5e, - (q31_t)0xc7a5dde, (q31_t)0xda087b69, (q31_t)0xc72ea70, (q31_t)0xda1299ec, - (q31_t)0xc6b78ff, (q31_t)0xda1cb9e5, (q31_t)0xc64098b, (q31_t)0xda26db54, - (q31_t)0xc5c9c14, (q31_t)0xda30fe38, (q31_t)0xc55309b, (q31_t)0xda3b2292, - (q31_t)0xc4dc720, (q31_t)0xda454860, (q31_t)0xc465fa3, (q31_t)0xda4f6fa3, - (q31_t)0xc3efa25, (q31_t)0xda599859, (q31_t)0xc3796a5, (q31_t)0xda63c284, - (q31_t)0xc303524, (q31_t)0xda6dee21, (q31_t)0xc28d5a3, (q31_t)0xda781b31, - (q31_t)0xc217822, (q31_t)0xda8249b4, (q31_t)0xc1a1ca0, (q31_t)0xda8c79a9, - (q31_t)0xc12c31f, (q31_t)0xda96ab0f, (q31_t)0xc0b6b9e, (q31_t)0xdaa0dde7, - (q31_t)0xc04161e, (q31_t)0xdaab122f, (q31_t)0xbfcc29f, (q31_t)0xdab547e8, - (q31_t)0xbf57121, (q31_t)0xdabf7f11, (q31_t)0xbee21a5, (q31_t)0xdac9b7a9, - (q31_t)0xbe6d42b, (q31_t)0xdad3f1b1, (q31_t)0xbdf88b3, (q31_t)0xdade2d28, - (q31_t)0xbd83f3d, (q31_t)0xdae86a0d, (q31_t)0xbd0f7ca, (q31_t)0xdaf2a860, - (q31_t)0xbc9b25a, (q31_t)0xdafce821, (q31_t)0xbc26eee, (q31_t)0xdb072950, - (q31_t)0xbbb2d85, (q31_t)0xdb116beb, (q31_t)0xbb3ee20, (q31_t)0xdb1baff2, - (q31_t)0xbacb0bf, (q31_t)0xdb25f566, (q31_t)0xba57563, (q31_t)0xdb303c46, - (q31_t)0xb9e3c0b, (q31_t)0xdb3a8491, (q31_t)0xb9704b9, (q31_t)0xdb44ce46, - (q31_t)0xb8fcf6b, (q31_t)0xdb4f1967, (q31_t)0xb889c23, (q31_t)0xdb5965f1, - (q31_t)0xb816ae1, (q31_t)0xdb63b3e5, (q31_t)0xb7a3ba5, (q31_t)0xdb6e0342, - (q31_t)0xb730e70, (q31_t)0xdb785409, (q31_t)0xb6be341, (q31_t)0xdb82a638, - (q31_t)0xb64ba19, (q31_t)0xdb8cf9cf, (q31_t)0xb5d92f8, (q31_t)0xdb974ece, - (q31_t)0xb566ddf, (q31_t)0xdba1a534, (q31_t)0xb4f4acd, (q31_t)0xdbabfd01, - (q31_t)0xb4829c4, (q31_t)0xdbb65634, (q31_t)0xb410ac3, (q31_t)0xdbc0b0ce, - (q31_t)0xb39edca, (q31_t)0xdbcb0cce, (q31_t)0xb32d2da, (q31_t)0xdbd56a32, - (q31_t)0xb2bb9f4, (q31_t)0xdbdfc8fc, (q31_t)0xb24a316, (q31_t)0xdbea292b, - (q31_t)0xb1d8e43, (q31_t)0xdbf48abd, (q31_t)0xb167b79, (q31_t)0xdbfeedb3, - (q31_t)0xb0f6aba, (q31_t)0xdc09520d, (q31_t)0xb085c05, (q31_t)0xdc13b7c9, - (q31_t)0xb014f5b, (q31_t)0xdc1e1ee9, (q31_t)0xafa44bc, (q31_t)0xdc28876a, - (q31_t)0xaf33c28, (q31_t)0xdc32f14d, (q31_t)0xaec35a0, (q31_t)0xdc3d5c91, - (q31_t)0xae53123, (q31_t)0xdc47c936, (q31_t)0xade2eb3, (q31_t)0xdc52373c, - (q31_t)0xad72e4f, (q31_t)0xdc5ca6a2, (q31_t)0xad02ff8, (q31_t)0xdc671768, - (q31_t)0xac933ae, (q31_t)0xdc71898d, (q31_t)0xac23971, (q31_t)0xdc7bfd11, - (q31_t)0xabb4141, (q31_t)0xdc8671f3, (q31_t)0xab44b1f, (q31_t)0xdc90e834, - (q31_t)0xaad570c, (q31_t)0xdc9b5fd2, (q31_t)0xaa66506, (q31_t)0xdca5d8cd, - (q31_t)0xa9f750f, (q31_t)0xdcb05326, (q31_t)0xa988727, (q31_t)0xdcbacedb, - (q31_t)0xa919b4e, (q31_t)0xdcc54bec, (q31_t)0xa8ab184, (q31_t)0xdccfca59, - (q31_t)0xa83c9ca, (q31_t)0xdcda4a21, (q31_t)0xa7ce420, (q31_t)0xdce4cb44, - (q31_t)0xa760086, (q31_t)0xdcef4dc2, (q31_t)0xa6f1efc, (q31_t)0xdcf9d199, - (q31_t)0xa683f83, (q31_t)0xdd0456ca, (q31_t)0xa61621b, (q31_t)0xdd0edd55, - (q31_t)0xa5a86c4, (q31_t)0xdd196538, (q31_t)0xa53ad7e, (q31_t)0xdd23ee74, - (q31_t)0xa4cd64b, (q31_t)0xdd2e7908, (q31_t)0xa460129, (q31_t)0xdd3904f4, - (q31_t)0xa3f2e19, (q31_t)0xdd439236, (q31_t)0xa385d1d, (q31_t)0xdd4e20d0, - (q31_t)0xa318e32, (q31_t)0xdd58b0c0, (q31_t)0xa2ac15b, (q31_t)0xdd634206, - (q31_t)0xa23f698, (q31_t)0xdd6dd4a2, (q31_t)0xa1d2de7, (q31_t)0xdd786892, - (q31_t)0xa16674b, (q31_t)0xdd82fdd8, (q31_t)0xa0fa2c3, (q31_t)0xdd8d9472, - (q31_t)0xa08e04f, (q31_t)0xdd982c60, (q31_t)0xa021fef, (q31_t)0xdda2c5a2, - (q31_t)0x9fb61a5, (q31_t)0xddad6036, (q31_t)0x9f4a570, (q31_t)0xddb7fc1e, - (q31_t)0x9edeb50, (q31_t)0xddc29958, (q31_t)0x9e73346, (q31_t)0xddcd37e4, - (q31_t)0x9e07d51, (q31_t)0xddd7d7c1, (q31_t)0x9d9c973, (q31_t)0xdde278ef, - (q31_t)0x9d317ab, (q31_t)0xdded1b6e, (q31_t)0x9cc67fa, (q31_t)0xddf7bf3e, - (q31_t)0x9c5ba60, (q31_t)0xde02645d, (q31_t)0x9bf0edd, (q31_t)0xde0d0acc, - (q31_t)0x9b86572, (q31_t)0xde17b28a, (q31_t)0x9b1be1e, (q31_t)0xde225b96, - (q31_t)0x9ab18e3, (q31_t)0xde2d05f1, (q31_t)0x9a475bf, (q31_t)0xde37b199, - (q31_t)0x99dd4b4, (q31_t)0xde425e8f, (q31_t)0x99735c2, (q31_t)0xde4d0cd2, - (q31_t)0x99098e9, (q31_t)0xde57bc62, (q31_t)0x989fe29, (q31_t)0xde626d3e, - (q31_t)0x9836582, (q31_t)0xde6d1f65, (q31_t)0x97ccef5, (q31_t)0xde77d2d8, - (q31_t)0x9763a83, (q31_t)0xde828796, (q31_t)0x96fa82a, (q31_t)0xde8d3d9e, - (q31_t)0x96917ec, (q31_t)0xde97f4f1, (q31_t)0x96289c9, (q31_t)0xdea2ad8d, - (q31_t)0x95bfdc1, (q31_t)0xdead6773, (q31_t)0x95573d4, (q31_t)0xdeb822a1, - (q31_t)0x94eec03, (q31_t)0xdec2df18, (q31_t)0x948664d, (q31_t)0xdecd9cd7, - (q31_t)0x941e2b4, (q31_t)0xded85bdd, (q31_t)0x93b6137, (q31_t)0xdee31c2b, - (q31_t)0x934e1d6, (q31_t)0xdeedddc0, (q31_t)0x92e6492, (q31_t)0xdef8a09b, - (q31_t)0x927e96b, (q31_t)0xdf0364bc, (q31_t)0x9217062, (q31_t)0xdf0e2a22, - (q31_t)0x91af976, (q31_t)0xdf18f0ce, (q31_t)0x91484a8, (q31_t)0xdf23b8be, - (q31_t)0x90e11f7, (q31_t)0xdf2e81f3, (q31_t)0x907a166, (q31_t)0xdf394c6b, - (q31_t)0x90132f2, (q31_t)0xdf441828, (q31_t)0x8fac69e, (q31_t)0xdf4ee527, - (q31_t)0x8f45c68, (q31_t)0xdf59b369, (q31_t)0x8edf452, (q31_t)0xdf6482ed, - (q31_t)0x8e78e5b, (q31_t)0xdf6f53b3, (q31_t)0x8e12a84, (q31_t)0xdf7a25ba, - (q31_t)0x8dac8cd, (q31_t)0xdf84f902, (q31_t)0x8d46936, (q31_t)0xdf8fcd8b, - (q31_t)0x8ce0bc0, (q31_t)0xdf9aa354, (q31_t)0x8c7b06b, (q31_t)0xdfa57a5d, - (q31_t)0x8c15736, (q31_t)0xdfb052a5, (q31_t)0x8bb0023, (q31_t)0xdfbb2c2c, - (q31_t)0x8b4ab32, (q31_t)0xdfc606f1, (q31_t)0x8ae5862, (q31_t)0xdfd0e2f5, - (q31_t)0x8a807b4, (q31_t)0xdfdbc036, (q31_t)0x8a1b928, (q31_t)0xdfe69eb4, - (q31_t)0x89b6cbf, (q31_t)0xdff17e70, (q31_t)0x8952278, (q31_t)0xdffc5f67, - (q31_t)0x88eda54, (q31_t)0xe007419b, (q31_t)0x8889454, (q31_t)0xe012250a, - (q31_t)0x8825077, (q31_t)0xe01d09b4, (q31_t)0x87c0ebd, (q31_t)0xe027ef99, - (q31_t)0x875cf28, (q31_t)0xe032d6b8, (q31_t)0x86f91b7, (q31_t)0xe03dbf11, - (q31_t)0x869566a, (q31_t)0xe048a8a4, (q31_t)0x8631d42, (q31_t)0xe053936f, - (q31_t)0x85ce63e, (q31_t)0xe05e7f74, (q31_t)0x856b160, (q31_t)0xe0696cb0, - (q31_t)0x8507ea7, (q31_t)0xe0745b24, (q31_t)0x84a4e14, (q31_t)0xe07f4acf, - (q31_t)0x8441fa6, (q31_t)0xe08a3bb2, (q31_t)0x83df35f, (q31_t)0xe0952dcb, - (q31_t)0x837c93e, (q31_t)0xe0a0211a, (q31_t)0x831a143, (q31_t)0xe0ab159e, - (q31_t)0x82b7b70, (q31_t)0xe0b60b58, (q31_t)0x82557c3, (q31_t)0xe0c10247, - (q31_t)0x81f363d, (q31_t)0xe0cbfa6a, (q31_t)0x81916df, (q31_t)0xe0d6f3c1, - (q31_t)0x812f9a9, (q31_t)0xe0e1ee4b, (q31_t)0x80cde9b, (q31_t)0xe0ecea09, - (q31_t)0x806c5b5, (q31_t)0xe0f7e6f9, (q31_t)0x800aef7, (q31_t)0xe102e51c, - (q31_t)0x7fa9a62, (q31_t)0xe10de470, (q31_t)0x7f487f6, (q31_t)0xe118e4f6, - (q31_t)0x7ee77b3, (q31_t)0xe123e6ad, (q31_t)0x7e8699a, (q31_t)0xe12ee995, - (q31_t)0x7e25daa, (q31_t)0xe139edac, (q31_t)0x7dc53e3, (q31_t)0xe144f2f3, - (q31_t)0x7d64c47, (q31_t)0xe14ff96a, (q31_t)0x7d046d6, (q31_t)0xe15b0110, - (q31_t)0x7ca438f, (q31_t)0xe16609e3, (q31_t)0x7c44272, (q31_t)0xe17113e5, - (q31_t)0x7be4381, (q31_t)0xe17c1f15, (q31_t)0x7b846ba, (q31_t)0xe1872b72, - (q31_t)0x7b24c20, (q31_t)0xe19238fb, (q31_t)0x7ac53b1, (q31_t)0xe19d47b1, - (q31_t)0x7a65d6e, (q31_t)0xe1a85793, (q31_t)0x7a06957, (q31_t)0xe1b368a0, - (q31_t)0x79a776c, (q31_t)0xe1be7ad8, (q31_t)0x79487ae, (q31_t)0xe1c98e3b, - (q31_t)0x78e9a1d, (q31_t)0xe1d4a2c8, (q31_t)0x788aeb9, (q31_t)0xe1dfb87f, - (q31_t)0x782c582, (q31_t)0xe1eacf5f, (q31_t)0x77cde79, (q31_t)0xe1f5e768, - (q31_t)0x776f99d, (q31_t)0xe2010099, (q31_t)0x77116f0, (q31_t)0xe20c1af3, - (q31_t)0x76b3671, (q31_t)0xe2173674, (q31_t)0x7655820, (q31_t)0xe222531c, - (q31_t)0x75f7bfe, (q31_t)0xe22d70eb, (q31_t)0x759a20a, (q31_t)0xe2388fe1, - (q31_t)0x753ca46, (q31_t)0xe243affc, (q31_t)0x74df4b1, (q31_t)0xe24ed13d, - (q31_t)0x748214c, (q31_t)0xe259f3a3, (q31_t)0x7425016, (q31_t)0xe265172e, - (q31_t)0x73c8111, (q31_t)0xe2703bdc, (q31_t)0x736b43c, (q31_t)0xe27b61af, - (q31_t)0x730e997, (q31_t)0xe28688a4, (q31_t)0x72b2123, (q31_t)0xe291b0bd, - (q31_t)0x7255ae0, (q31_t)0xe29cd9f8, (q31_t)0x71f96ce, (q31_t)0xe2a80456, - (q31_t)0x719d4ed, (q31_t)0xe2b32fd4, (q31_t)0x714153e, (q31_t)0xe2be5c74, - (q31_t)0x70e57c0, (q31_t)0xe2c98a35, (q31_t)0x7089c75, (q31_t)0xe2d4b916, - (q31_t)0x702e35c, (q31_t)0xe2dfe917, (q31_t)0x6fd2c75, (q31_t)0xe2eb1a37, - (q31_t)0x6f777c1, (q31_t)0xe2f64c77, (q31_t)0x6f1c540, (q31_t)0xe3017fd5, - (q31_t)0x6ec14f2, (q31_t)0xe30cb451, (q31_t)0x6e666d7, (q31_t)0xe317e9eb, - (q31_t)0x6e0baf0, (q31_t)0xe32320a2, (q31_t)0x6db113d, (q31_t)0xe32e5876, - (q31_t)0x6d569be, (q31_t)0xe3399167, (q31_t)0x6cfc472, (q31_t)0xe344cb73, - (q31_t)0x6ca215c, (q31_t)0xe350069b, (q31_t)0x6c4807a, (q31_t)0xe35b42df, - (q31_t)0x6bee1cd, (q31_t)0xe366803c, (q31_t)0x6b94554, (q31_t)0xe371beb5, - (q31_t)0x6b3ab12, (q31_t)0xe37cfe47, (q31_t)0x6ae1304, (q31_t)0xe3883ef2, - (q31_t)0x6a87d2d, (q31_t)0xe39380b6, (q31_t)0x6a2e98b, (q31_t)0xe39ec393, - (q31_t)0x69d5820, (q31_t)0xe3aa0788, (q31_t)0x697c8eb, (q31_t)0xe3b54c95, - (q31_t)0x6923bec, (q31_t)0xe3c092b9, (q31_t)0x68cb124, (q31_t)0xe3cbd9f4, - (q31_t)0x6872894, (q31_t)0xe3d72245, (q31_t)0x681a23a, (q31_t)0xe3e26bac, - (q31_t)0x67c1e18, (q31_t)0xe3edb628, (q31_t)0x6769c2e, (q31_t)0xe3f901ba, - (q31_t)0x6711c7b, (q31_t)0xe4044e60, (q31_t)0x66b9f01, (q31_t)0xe40f9c1a, - (q31_t)0x66623be, (q31_t)0xe41aeae8, (q31_t)0x660aab5, (q31_t)0xe4263ac9, - (q31_t)0x65b33e4, (q31_t)0xe4318bbe, (q31_t)0x655bf4c, (q31_t)0xe43cddc4, - (q31_t)0x6504ced, (q31_t)0xe44830dd, (q31_t)0x64adcc7, (q31_t)0xe4538507, - (q31_t)0x6456edb, (q31_t)0xe45eda43, (q31_t)0x6400329, (q31_t)0xe46a308f, - (q31_t)0x63a99b1, (q31_t)0xe47587eb, (q31_t)0x6353273, (q31_t)0xe480e057, - (q31_t)0x62fcd6f, (q31_t)0xe48c39d3, (q31_t)0x62a6aa6, (q31_t)0xe497945d, - (q31_t)0x6250a18, (q31_t)0xe4a2eff6, (q31_t)0x61fabc4, (q31_t)0xe4ae4c9d, - (q31_t)0x61a4fac, (q31_t)0xe4b9aa52, (q31_t)0x614f5cf, (q31_t)0xe4c50914, - (q31_t)0x60f9e2e, (q31_t)0xe4d068e2, (q31_t)0x60a48c9, (q31_t)0xe4dbc9bd, - (q31_t)0x604f5a0, (q31_t)0xe4e72ba4, (q31_t)0x5ffa4b3, (q31_t)0xe4f28e96, - (q31_t)0x5fa5603, (q31_t)0xe4fdf294, (q31_t)0x5f5098f, (q31_t)0xe509579b, - (q31_t)0x5efbf58, (q31_t)0xe514bdad, (q31_t)0x5ea775e, (q31_t)0xe52024c9, - (q31_t)0x5e531a1, (q31_t)0xe52b8cee, (q31_t)0x5dfee22, (q31_t)0xe536f61b, - (q31_t)0x5daace1, (q31_t)0xe5426051, (q31_t)0x5d56ddd, (q31_t)0xe54dcb8f, - (q31_t)0x5d03118, (q31_t)0xe55937d5, (q31_t)0x5caf690, (q31_t)0xe564a521, - (q31_t)0x5c5be47, (q31_t)0xe5701374, (q31_t)0x5c0883d, (q31_t)0xe57b82cd, - (q31_t)0x5bb5472, (q31_t)0xe586f32c, (q31_t)0x5b622e6, (q31_t)0xe5926490, - (q31_t)0x5b0f399, (q31_t)0xe59dd6f9, (q31_t)0x5abc68c, (q31_t)0xe5a94a67, - (q31_t)0x5a69bbe, (q31_t)0xe5b4bed8, (q31_t)0x5a17330, (q31_t)0xe5c0344d, - (q31_t)0x59c4ce3, (q31_t)0xe5cbaac5, (q31_t)0x59728d5, (q31_t)0xe5d72240, - (q31_t)0x5920708, (q31_t)0xe5e29abc, (q31_t)0x58ce77c, (q31_t)0xe5ee143b, - (q31_t)0x587ca31, (q31_t)0xe5f98ebb, (q31_t)0x582af26, (q31_t)0xe6050a3b, - (q31_t)0x57d965d, (q31_t)0xe61086bc, (q31_t)0x5787fd6, (q31_t)0xe61c043d, - (q31_t)0x5736b90, (q31_t)0xe62782be, (q31_t)0x56e598c, (q31_t)0xe633023e, - (q31_t)0x56949ca, (q31_t)0xe63e82bc, (q31_t)0x5643c4a, (q31_t)0xe64a0438, - (q31_t)0x55f310d, (q31_t)0xe65586b3, (q31_t)0x55a2812, (q31_t)0xe6610a2a, - (q31_t)0x555215a, (q31_t)0xe66c8e9f, (q31_t)0x5501ce5, (q31_t)0xe6781410, - (q31_t)0x54b1ab4, (q31_t)0xe6839a7c, (q31_t)0x5461ac6, (q31_t)0xe68f21e5, - (q31_t)0x5411d1b, (q31_t)0xe69aaa48, (q31_t)0x53c21b4, (q31_t)0xe6a633a6, - (q31_t)0x5372891, (q31_t)0xe6b1bdff, (q31_t)0x53231b3, (q31_t)0xe6bd4951, - (q31_t)0x52d3d18, (q31_t)0xe6c8d59c, (q31_t)0x5284ac3, (q31_t)0xe6d462e1, - (q31_t)0x5235ab2, (q31_t)0xe6dff11d, (q31_t)0x51e6ce6, (q31_t)0xe6eb8052, - (q31_t)0x519815f, (q31_t)0xe6f7107e, (q31_t)0x514981d, (q31_t)0xe702a1a1, - (q31_t)0x50fb121, (q31_t)0xe70e33bb, (q31_t)0x50acc6b, (q31_t)0xe719c6cb, - (q31_t)0x505e9fb, (q31_t)0xe7255ad1, (q31_t)0x50109d0, (q31_t)0xe730efcc, - (q31_t)0x4fc2bec, (q31_t)0xe73c85bc, (q31_t)0x4f7504e, (q31_t)0xe7481ca1, - (q31_t)0x4f276f7, (q31_t)0xe753b479, (q31_t)0x4ed9fe7, (q31_t)0xe75f4d45, - (q31_t)0x4e8cb1e, (q31_t)0xe76ae704, (q31_t)0x4e3f89c, (q31_t)0xe77681b6, - (q31_t)0x4df2862, (q31_t)0xe7821d59, (q31_t)0x4da5a6f, (q31_t)0xe78db9ef, - (q31_t)0x4d58ec3, (q31_t)0xe7995776, (q31_t)0x4d0c560, (q31_t)0xe7a4f5ed, - (q31_t)0x4cbfe45, (q31_t)0xe7b09555, (q31_t)0x4c73972, (q31_t)0xe7bc35ad, - (q31_t)0x4c276e8, (q31_t)0xe7c7d6f4, (q31_t)0x4bdb6a6, (q31_t)0xe7d3792b, - (q31_t)0x4b8f8ad, (q31_t)0xe7df1c50, (q31_t)0x4b43cfd, (q31_t)0xe7eac063, - (q31_t)0x4af8397, (q31_t)0xe7f66564, (q31_t)0x4aacc7a, (q31_t)0xe8020b52, - (q31_t)0x4a617a6, (q31_t)0xe80db22d, (q31_t)0x4a1651c, (q31_t)0xe81959f4, - (q31_t)0x49cb4dd, (q31_t)0xe82502a7, (q31_t)0x49806e7, (q31_t)0xe830ac45, - (q31_t)0x4935b3c, (q31_t)0xe83c56cf, (q31_t)0x48eb1db, (q31_t)0xe8480243, - (q31_t)0x48a0ac4, (q31_t)0xe853aea1, (q31_t)0x48565f9, (q31_t)0xe85f5be9, - (q31_t)0x480c379, (q31_t)0xe86b0a1a, (q31_t)0x47c2344, (q31_t)0xe876b934, - (q31_t)0x477855a, (q31_t)0xe8826936, (q31_t)0x472e9bc, (q31_t)0xe88e1a20, - (q31_t)0x46e5069, (q31_t)0xe899cbf1, (q31_t)0x469b963, (q31_t)0xe8a57ea9, - (q31_t)0x46524a9, (q31_t)0xe8b13248, (q31_t)0x460923b, (q31_t)0xe8bce6cd, - (q31_t)0x45c0219, (q31_t)0xe8c89c37, (q31_t)0x4577444, (q31_t)0xe8d45286, - (q31_t)0x452e8bc, (q31_t)0xe8e009ba, (q31_t)0x44e5f80, (q31_t)0xe8ebc1d3, - (q31_t)0x449d892, (q31_t)0xe8f77acf, (q31_t)0x44553f2, (q31_t)0xe90334af, - (q31_t)0x440d19e, (q31_t)0xe90eef71, (q31_t)0x43c5199, (q31_t)0xe91aab16, - (q31_t)0x437d3e1, (q31_t)0xe926679c, (q31_t)0x4335877, (q31_t)0xe9322505, - (q31_t)0x42edf5c, (q31_t)0xe93de34e, (q31_t)0x42a688f, (q31_t)0xe949a278, - (q31_t)0x425f410, (q31_t)0xe9556282, (q31_t)0x42181e0, (q31_t)0xe961236c, - (q31_t)0x41d11ff, (q31_t)0xe96ce535, (q31_t)0x418a46d, (q31_t)0xe978a7dd, - (q31_t)0x414392b, (q31_t)0xe9846b63, (q31_t)0x40fd037, (q31_t)0xe9902fc7, - (q31_t)0x40b6994, (q31_t)0xe99bf509, (q31_t)0x4070540, (q31_t)0xe9a7bb28, - (q31_t)0x402a33c, (q31_t)0xe9b38223, (q31_t)0x3fe4388, (q31_t)0xe9bf49fa, - (q31_t)0x3f9e624, (q31_t)0xe9cb12ad, (q31_t)0x3f58b10, (q31_t)0xe9d6dc3b, - (q31_t)0x3f1324e, (q31_t)0xe9e2a6a3, (q31_t)0x3ecdbdc, (q31_t)0xe9ee71e6, - (q31_t)0x3e887bb, (q31_t)0xe9fa3e03, (q31_t)0x3e435ea, (q31_t)0xea060af9, - (q31_t)0x3dfe66c, (q31_t)0xea11d8c8, (q31_t)0x3db993e, (q31_t)0xea1da770, - (q31_t)0x3d74e62, (q31_t)0xea2976ef, (q31_t)0x3d305d8, (q31_t)0xea354746, - (q31_t)0x3cebfa0, (q31_t)0xea411874, (q31_t)0x3ca7bba, (q31_t)0xea4cea79, - (q31_t)0x3c63a26, (q31_t)0xea58bd54, (q31_t)0x3c1fae5, (q31_t)0xea649105, - (q31_t)0x3bdbdf6, (q31_t)0xea70658a, (q31_t)0x3b9835a, (q31_t)0xea7c3ae5, - (q31_t)0x3b54b11, (q31_t)0xea881114, (q31_t)0x3b1151b, (q31_t)0xea93e817, - (q31_t)0x3ace178, (q31_t)0xea9fbfed, (q31_t)0x3a8b028, (q31_t)0xeaab9896, - (q31_t)0x3a4812c, (q31_t)0xeab77212, (q31_t)0x3a05484, (q31_t)0xeac34c60, - (q31_t)0x39c2a2f, (q31_t)0xeacf277f, (q31_t)0x398022f, (q31_t)0xeadb0370, - (q31_t)0x393dc82, (q31_t)0xeae6e031, (q31_t)0x38fb92a, (q31_t)0xeaf2bdc3, - (q31_t)0x38b9827, (q31_t)0xeafe9c24, (q31_t)0x3877978, (q31_t)0xeb0a7b54, - (q31_t)0x3835d1e, (q31_t)0xeb165b54, (q31_t)0x37f4319, (q31_t)0xeb223c22, - (q31_t)0x37b2b6a, (q31_t)0xeb2e1dbe, (q31_t)0x377160f, (q31_t)0xeb3a0027, - (q31_t)0x373030a, (q31_t)0xeb45e35d, (q31_t)0x36ef25b, (q31_t)0xeb51c760, - (q31_t)0x36ae401, (q31_t)0xeb5dac2f, (q31_t)0x366d7fd, (q31_t)0xeb6991ca, - (q31_t)0x362ce50, (q31_t)0xeb75782f, (q31_t)0x35ec6f8, (q31_t)0xeb815f60, - (q31_t)0x35ac1f7, (q31_t)0xeb8d475b, (q31_t)0x356bf4d, (q31_t)0xeb99301f, - (q31_t)0x352bef9, (q31_t)0xeba519ad, (q31_t)0x34ec0fc, (q31_t)0xebb10404, - (q31_t)0x34ac556, (q31_t)0xebbcef23, (q31_t)0x346cc07, (q31_t)0xebc8db0b, - (q31_t)0x342d510, (q31_t)0xebd4c7ba, (q31_t)0x33ee070, (q31_t)0xebe0b52f, - (q31_t)0x33aee27, (q31_t)0xebeca36c, (q31_t)0x336fe37, (q31_t)0xebf8926f, - (q31_t)0x333109e, (q31_t)0xec048237, (q31_t)0x32f255e, (q31_t)0xec1072c4, - (q31_t)0x32b3c75, (q31_t)0xec1c6417, (q31_t)0x32755e5, (q31_t)0xec28562d, - (q31_t)0x32371ae, (q31_t)0xec344908, (q31_t)0x31f8fcf, (q31_t)0xec403ca5, - (q31_t)0x31bb049, (q31_t)0xec4c3106, (q31_t)0x317d31c, (q31_t)0xec582629, - (q31_t)0x313f848, (q31_t)0xec641c0e, (q31_t)0x3101fce, (q31_t)0xec7012b5, - (q31_t)0x30c49ad, (q31_t)0xec7c0a1d, (q31_t)0x30875e5, (q31_t)0xec880245, - (q31_t)0x304a477, (q31_t)0xec93fb2e, (q31_t)0x300d563, (q31_t)0xec9ff4d6, - (q31_t)0x2fd08a9, (q31_t)0xecabef3d, (q31_t)0x2f93e4a, (q31_t)0xecb7ea63, - (q31_t)0x2f57644, (q31_t)0xecc3e648, (q31_t)0x2f1b099, (q31_t)0xeccfe2ea, - (q31_t)0x2eded49, (q31_t)0xecdbe04a, (q31_t)0x2ea2c53, (q31_t)0xece7de66, - (q31_t)0x2e66db8, (q31_t)0xecf3dd3f, (q31_t)0x2e2b178, (q31_t)0xecffdcd4, - (q31_t)0x2def794, (q31_t)0xed0bdd25, (q31_t)0x2db400a, (q31_t)0xed17de31, - (q31_t)0x2d78add, (q31_t)0xed23dff7, (q31_t)0x2d3d80a, (q31_t)0xed2fe277, - (q31_t)0x2d02794, (q31_t)0xed3be5b1, (q31_t)0x2cc7979, (q31_t)0xed47e9a5, - (q31_t)0x2c8cdbb, (q31_t)0xed53ee51, (q31_t)0x2c52459, (q31_t)0xed5ff3b5, - (q31_t)0x2c17d52, (q31_t)0xed6bf9d1, (q31_t)0x2bdd8a9, (q31_t)0xed7800a5, - (q31_t)0x2ba365c, (q31_t)0xed84082f, (q31_t)0x2b6966c, (q31_t)0xed901070, - (q31_t)0x2b2f8d8, (q31_t)0xed9c1967, (q31_t)0x2af5da2, (q31_t)0xeda82313, - (q31_t)0x2abc4c9, (q31_t)0xedb42d74, (q31_t)0x2a82e4d, (q31_t)0xedc0388a, - (q31_t)0x2a49a2e, (q31_t)0xedcc4454, (q31_t)0x2a1086d, (q31_t)0xedd850d2, - (q31_t)0x29d790a, (q31_t)0xede45e03, (q31_t)0x299ec05, (q31_t)0xedf06be6, - (q31_t)0x296615d, (q31_t)0xedfc7a7c, (q31_t)0x292d914, (q31_t)0xee0889c4, - (q31_t)0x28f5329, (q31_t)0xee1499bd, (q31_t)0x28bcf9c, (q31_t)0xee20aa67, - (q31_t)0x2884e6e, (q31_t)0xee2cbbc1, (q31_t)0x284cf9f, (q31_t)0xee38cdcb, - (q31_t)0x281532e, (q31_t)0xee44e084, (q31_t)0x27dd91c, (q31_t)0xee50f3ed, - (q31_t)0x27a616a, (q31_t)0xee5d0804, (q31_t)0x276ec16, (q31_t)0xee691cc9, - (q31_t)0x2737922, (q31_t)0xee75323c, (q31_t)0x270088e, (q31_t)0xee81485c, - (q31_t)0x26c9a58, (q31_t)0xee8d5f29, (q31_t)0x2692e83, (q31_t)0xee9976a1, - (q31_t)0x265c50e, (q31_t)0xeea58ec6, (q31_t)0x2625df8, (q31_t)0xeeb1a796, - (q31_t)0x25ef943, (q31_t)0xeebdc110, (q31_t)0x25b96ee, (q31_t)0xeec9db35, - (q31_t)0x25836f9, (q31_t)0xeed5f604, (q31_t)0x254d965, (q31_t)0xeee2117c, - (q31_t)0x2517e31, (q31_t)0xeeee2d9d, (q31_t)0x24e255e, (q31_t)0xeefa4a67, - (q31_t)0x24aceed, (q31_t)0xef0667d9, (q31_t)0x2477adc, (q31_t)0xef1285f2, - (q31_t)0x244292c, (q31_t)0xef1ea4b2, (q31_t)0x240d9de, (q31_t)0xef2ac419, - (q31_t)0x23d8cf1, (q31_t)0xef36e426, (q31_t)0x23a4265, (q31_t)0xef4304d8, - (q31_t)0x236fa3b, (q31_t)0xef4f2630, (q31_t)0x233b473, (q31_t)0xef5b482d, - (q31_t)0x230710d, (q31_t)0xef676ace, (q31_t)0x22d3009, (q31_t)0xef738e12, - (q31_t)0x229f167, (q31_t)0xef7fb1fa, (q31_t)0x226b528, (q31_t)0xef8bd685, - (q31_t)0x2237b4b, (q31_t)0xef97fbb2, (q31_t)0x22043d0, (q31_t)0xefa42181, - (q31_t)0x21d0eb8, (q31_t)0xefb047f2, (q31_t)0x219dc03, (q31_t)0xefbc6f03, - (q31_t)0x216abb1, (q31_t)0xefc896b5, (q31_t)0x2137dc2, (q31_t)0xefd4bf08, - (q31_t)0x2105236, (q31_t)0xefe0e7f9, (q31_t)0x20d290d, (q31_t)0xefed118a, - (q31_t)0x20a0248, (q31_t)0xeff93bba, (q31_t)0x206dde6, (q31_t)0xf0056687, - (q31_t)0x203bbe8, (q31_t)0xf01191f3, (q31_t)0x2009c4e, (q31_t)0xf01dbdfb, - (q31_t)0x1fd7f17, (q31_t)0xf029eaa1, (q31_t)0x1fa6445, (q31_t)0xf03617e2, - (q31_t)0x1f74bd6, (q31_t)0xf04245c0, (q31_t)0x1f435cc, (q31_t)0xf04e7438, - (q31_t)0x1f12227, (q31_t)0xf05aa34c, (q31_t)0x1ee10e5, (q31_t)0xf066d2fa, - (q31_t)0x1eb0209, (q31_t)0xf0730342, (q31_t)0x1e7f591, (q31_t)0xf07f3424, - (q31_t)0x1e4eb7e, (q31_t)0xf08b659f, (q31_t)0x1e1e3d0, (q31_t)0xf09797b2, - (q31_t)0x1dede87, (q31_t)0xf0a3ca5d, (q31_t)0x1dbdba3, (q31_t)0xf0affda0, - (q31_t)0x1d8db25, (q31_t)0xf0bc317a, (q31_t)0x1d5dd0c, (q31_t)0xf0c865ea, - (q31_t)0x1d2e158, (q31_t)0xf0d49af1, (q31_t)0x1cfe80a, (q31_t)0xf0e0d08d, - (q31_t)0x1ccf122, (q31_t)0xf0ed06bf, (q31_t)0x1c9fca0, (q31_t)0xf0f93d86, - (q31_t)0x1c70a84, (q31_t)0xf10574e0, (q31_t)0x1c41ace, (q31_t)0xf111accf, - (q31_t)0x1c12d7e, (q31_t)0xf11de551, (q31_t)0x1be4294, (q31_t)0xf12a1e66, - (q31_t)0x1bb5a11, (q31_t)0xf136580d, (q31_t)0x1b873f5, (q31_t)0xf1429247, - (q31_t)0x1b5903f, (q31_t)0xf14ecd11, (q31_t)0x1b2aef0, (q31_t)0xf15b086d, - (q31_t)0x1afd007, (q31_t)0xf1674459, (q31_t)0x1acf386, (q31_t)0xf17380d6, - (q31_t)0x1aa196c, (q31_t)0xf17fbde2, (q31_t)0x1a741b9, (q31_t)0xf18bfb7d, - (q31_t)0x1a46c6e, (q31_t)0xf19839a6, (q31_t)0x1a1998a, (q31_t)0xf1a4785e, - (q31_t)0x19ec90d, (q31_t)0xf1b0b7a4, (q31_t)0x19bfaf9, (q31_t)0xf1bcf777, - (q31_t)0x1992f4c, (q31_t)0xf1c937d6, (q31_t)0x1966606, (q31_t)0xf1d578c2, - (q31_t)0x1939f29, (q31_t)0xf1e1ba3a, (q31_t)0x190dab4, (q31_t)0xf1edfc3d, - (q31_t)0x18e18a7, (q31_t)0xf1fa3ecb, (q31_t)0x18b5903, (q31_t)0xf20681e3, - (q31_t)0x1889bc6, (q31_t)0xf212c585, (q31_t)0x185e0f3, (q31_t)0xf21f09b1, - (q31_t)0x1832888, (q31_t)0xf22b4e66, (q31_t)0x1807285, (q31_t)0xf23793a3, - (q31_t)0x17dbeec, (q31_t)0xf243d968, (q31_t)0x17b0dbb, (q31_t)0xf2501fb5, - (q31_t)0x1785ef4, (q31_t)0xf25c6688, (q31_t)0x175b296, (q31_t)0xf268ade3, - (q31_t)0x17308a1, (q31_t)0xf274f5c3, (q31_t)0x1706115, (q31_t)0xf2813e2a, - (q31_t)0x16dbbf3, (q31_t)0xf28d8715, (q31_t)0x16b193a, (q31_t)0xf299d085, - (q31_t)0x16878eb, (q31_t)0xf2a61a7a, (q31_t)0x165db05, (q31_t)0xf2b264f2, - (q31_t)0x1633f8a, (q31_t)0xf2beafed, (q31_t)0x160a678, (q31_t)0xf2cafb6b, - (q31_t)0x15e0fd1, (q31_t)0xf2d7476c, (q31_t)0x15b7b94, (q31_t)0xf2e393ef, - (q31_t)0x158e9c1, (q31_t)0xf2efe0f2, (q31_t)0x1565a58, (q31_t)0xf2fc2e77, - (q31_t)0x153cd5a, (q31_t)0xf3087c7d, (q31_t)0x15142c6, (q31_t)0xf314cb02, - (q31_t)0x14eba9d, (q31_t)0xf3211a07, (q31_t)0x14c34df, (q31_t)0xf32d698a, - (q31_t)0x149b18b, (q31_t)0xf339b98d, (q31_t)0x14730a3, (q31_t)0xf3460a0d, - (q31_t)0x144b225, (q31_t)0xf3525b0b, (q31_t)0x1423613, (q31_t)0xf35eac86, - (q31_t)0x13fbc6c, (q31_t)0xf36afe7e, (q31_t)0x13d4530, (q31_t)0xf37750f2, - (q31_t)0x13ad060, (q31_t)0xf383a3e2, (q31_t)0x1385dfb, (q31_t)0xf38ff74d, - (q31_t)0x135ee02, (q31_t)0xf39c4b32, (q31_t)0x1338075, (q31_t)0xf3a89f92, - (q31_t)0x1311553, (q31_t)0xf3b4f46c, (q31_t)0x12eac9d, (q31_t)0xf3c149bf, - (q31_t)0x12c4653, (q31_t)0xf3cd9f8b, (q31_t)0x129e276, (q31_t)0xf3d9f5cf, - (q31_t)0x1278104, (q31_t)0xf3e64c8c, (q31_t)0x12521ff, (q31_t)0xf3f2a3bf, - (q31_t)0x122c566, (q31_t)0xf3fefb6a, (q31_t)0x1206b39, (q31_t)0xf40b538b, - (q31_t)0x11e1379, (q31_t)0xf417ac22, (q31_t)0x11bbe26, (q31_t)0xf424052f, - (q31_t)0x1196b3f, (q31_t)0xf4305eb0, (q31_t)0x1171ac6, (q31_t)0xf43cb8a7, - (q31_t)0x114ccb9, (q31_t)0xf4491311, (q31_t)0x1128119, (q31_t)0xf4556def, - (q31_t)0x11037e6, (q31_t)0xf461c940, (q31_t)0x10df120, (q31_t)0xf46e2504, - (q31_t)0x10bacc8, (q31_t)0xf47a8139, (q31_t)0x1096add, (q31_t)0xf486dde1, - (q31_t)0x1072b5f, (q31_t)0xf4933afa, (q31_t)0x104ee4f, (q31_t)0xf49f9884, - (q31_t)0x102b3ac, (q31_t)0xf4abf67e, (q31_t)0x1007b77, (q31_t)0xf4b854e7, - (q31_t)0xfe45b0, (q31_t)0xf4c4b3c0, (q31_t)0xfc1257, (q31_t)0xf4d11308, - (q31_t)0xf9e16b, (q31_t)0xf4dd72be, (q31_t)0xf7b2ee, (q31_t)0xf4e9d2e3, - (q31_t)0xf586df, (q31_t)0xf4f63374, (q31_t)0xf35d3e, (q31_t)0xf5029473, - (q31_t)0xf1360b, (q31_t)0xf50ef5de, (q31_t)0xef1147, (q31_t)0xf51b57b5, - (q31_t)0xeceef1, (q31_t)0xf527b9f7, (q31_t)0xeacf09, (q31_t)0xf5341ca5, - (q31_t)0xe8b190, (q31_t)0xf5407fbd, (q31_t)0xe69686, (q31_t)0xf54ce33f, - (q31_t)0xe47deb, (q31_t)0xf559472b, (q31_t)0xe267be, (q31_t)0xf565ab80, - (q31_t)0xe05401, (q31_t)0xf572103d, (q31_t)0xde42b2, (q31_t)0xf57e7563, - (q31_t)0xdc33d2, (q31_t)0xf58adaf0, (q31_t)0xda2762, (q31_t)0xf59740e5, - (q31_t)0xd81d61, (q31_t)0xf5a3a740, (q31_t)0xd615cf, (q31_t)0xf5b00e02, - (q31_t)0xd410ad, (q31_t)0xf5bc7529, (q31_t)0xd20dfa, (q31_t)0xf5c8dcb6, - (q31_t)0xd00db6, (q31_t)0xf5d544a7, (q31_t)0xce0fe3, (q31_t)0xf5e1acfd, - (q31_t)0xcc147f, (q31_t)0xf5ee15b7, (q31_t)0xca1b8a, (q31_t)0xf5fa7ed4, - (q31_t)0xc82506, (q31_t)0xf606e854, (q31_t)0xc630f2, (q31_t)0xf6135237, - (q31_t)0xc43f4d, (q31_t)0xf61fbc7b, (q31_t)0xc25019, (q31_t)0xf62c2721, - (q31_t)0xc06355, (q31_t)0xf6389228, (q31_t)0xbe7901, (q31_t)0xf644fd8f, - (q31_t)0xbc911d, (q31_t)0xf6516956, (q31_t)0xbaabaa, (q31_t)0xf65dd57d, - (q31_t)0xb8c8a7, (q31_t)0xf66a4203, (q31_t)0xb6e815, (q31_t)0xf676aee8, - (q31_t)0xb509f3, (q31_t)0xf6831c2b, (q31_t)0xb32e42, (q31_t)0xf68f89cb, - (q31_t)0xb15502, (q31_t)0xf69bf7c9, (q31_t)0xaf7e33, (q31_t)0xf6a86623, - (q31_t)0xada9d4, (q31_t)0xf6b4d4d9, (q31_t)0xabd7e6, (q31_t)0xf6c143ec, - (q31_t)0xaa086a, (q31_t)0xf6cdb359, (q31_t)0xa83b5e, (q31_t)0xf6da2321, - (q31_t)0xa670c4, (q31_t)0xf6e69344, (q31_t)0xa4a89b, (q31_t)0xf6f303c0, - (q31_t)0xa2e2e3, (q31_t)0xf6ff7496, (q31_t)0xa11f9d, (q31_t)0xf70be5c4, - (q31_t)0x9f5ec8, (q31_t)0xf718574b, (q31_t)0x9da065, (q31_t)0xf724c92a, - (q31_t)0x9be473, (q31_t)0xf7313b60, (q31_t)0x9a2af3, (q31_t)0xf73daded, - (q31_t)0x9873e4, (q31_t)0xf74a20d0, (q31_t)0x96bf48, (q31_t)0xf756940a, - (q31_t)0x950d1d, (q31_t)0xf7630799, (q31_t)0x935d64, (q31_t)0xf76f7b7d, - (q31_t)0x91b01d, (q31_t)0xf77befb5, (q31_t)0x900548, (q31_t)0xf7886442, - (q31_t)0x8e5ce5, (q31_t)0xf794d922, (q31_t)0x8cb6f5, (q31_t)0xf7a14e55, - (q31_t)0x8b1376, (q31_t)0xf7adc3db, (q31_t)0x89726a, (q31_t)0xf7ba39b3, - (q31_t)0x87d3d0, (q31_t)0xf7c6afdc, (q31_t)0x8637a9, (q31_t)0xf7d32657, - (q31_t)0x849df4, (q31_t)0xf7df9d22, (q31_t)0x8306b2, (q31_t)0xf7ec143e, - (q31_t)0x8171e2, (q31_t)0xf7f88ba9, (q31_t)0x7fdf85, (q31_t)0xf8050364, - (q31_t)0x7e4f9b, (q31_t)0xf8117b6d, (q31_t)0x7cc223, (q31_t)0xf81df3c5, - (q31_t)0x7b371e, (q31_t)0xf82a6c6a, (q31_t)0x79ae8c, (q31_t)0xf836e55d, - (q31_t)0x78286e, (q31_t)0xf8435e9d, (q31_t)0x76a4c2, (q31_t)0xf84fd829, - (q31_t)0x752389, (q31_t)0xf85c5201, (q31_t)0x73a4c3, (q31_t)0xf868cc24, - (q31_t)0x722871, (q31_t)0xf8754692, (q31_t)0x70ae92, (q31_t)0xf881c14b, - (q31_t)0x6f3726, (q31_t)0xf88e3c4d, (q31_t)0x6dc22e, (q31_t)0xf89ab799, - (q31_t)0x6c4fa8, (q31_t)0xf8a7332e, (q31_t)0x6adf97, (q31_t)0xf8b3af0c, - (q31_t)0x6971f9, (q31_t)0xf8c02b31, (q31_t)0x6806ce, (q31_t)0xf8cca79e, - (q31_t)0x669e18, (q31_t)0xf8d92452, (q31_t)0x6537d4, (q31_t)0xf8e5a14d, - (q31_t)0x63d405, (q31_t)0xf8f21e8e, (q31_t)0x6272aa, (q31_t)0xf8fe9c15, - (q31_t)0x6113c2, (q31_t)0xf90b19e0, (q31_t)0x5fb74e, (q31_t)0xf91797f0, - (q31_t)0x5e5d4e, (q31_t)0xf9241645, (q31_t)0x5d05c3, (q31_t)0xf93094dd, - (q31_t)0x5bb0ab, (q31_t)0xf93d13b8, (q31_t)0x5a5e07, (q31_t)0xf94992d7, - (q31_t)0x590dd8, (q31_t)0xf9561237, (q31_t)0x57c01d, (q31_t)0xf96291d9, - (q31_t)0x5674d6, (q31_t)0xf96f11bc, (q31_t)0x552c03, (q31_t)0xf97b91e1, - (q31_t)0x53e5a5, (q31_t)0xf9881245, (q31_t)0x52a1bb, (q31_t)0xf99492ea, - (q31_t)0x516045, (q31_t)0xf9a113cd, (q31_t)0x502145, (q31_t)0xf9ad94f0, - (q31_t)0x4ee4b8, (q31_t)0xf9ba1651, (q31_t)0x4daaa1, (q31_t)0xf9c697f0, - (q31_t)0x4c72fe, (q31_t)0xf9d319cc, (q31_t)0x4b3dcf, (q31_t)0xf9df9be6, - (q31_t)0x4a0b16, (q31_t)0xf9ec1e3b, (q31_t)0x48dad1, (q31_t)0xf9f8a0cd, - (q31_t)0x47ad01, (q31_t)0xfa05239a, (q31_t)0x4681a6, (q31_t)0xfa11a6a3, - (q31_t)0x4558c0, (q31_t)0xfa1e29e5, (q31_t)0x44324f, (q31_t)0xfa2aad62, - (q31_t)0x430e53, (q31_t)0xfa373119, (q31_t)0x41eccc, (q31_t)0xfa43b508, - (q31_t)0x40cdba, (q31_t)0xfa503930, (q31_t)0x3fb11d, (q31_t)0xfa5cbd91, - (q31_t)0x3e96f6, (q31_t)0xfa694229, (q31_t)0x3d7f44, (q31_t)0xfa75c6f8, - (q31_t)0x3c6a07, (q31_t)0xfa824bfd, (q31_t)0x3b573f, (q31_t)0xfa8ed139, - (q31_t)0x3a46ed, (q31_t)0xfa9b56ab, (q31_t)0x393910, (q31_t)0xfaa7dc52, - (q31_t)0x382da8, (q31_t)0xfab4622d, (q31_t)0x3724b6, (q31_t)0xfac0e83d, - (q31_t)0x361e3a, (q31_t)0xfacd6e81, (q31_t)0x351a33, (q31_t)0xfad9f4f8, - (q31_t)0x3418a2, (q31_t)0xfae67ba2, (q31_t)0x331986, (q31_t)0xfaf3027e, - (q31_t)0x321ce0, (q31_t)0xfaff898c, (q31_t)0x3122b0, (q31_t)0xfb0c10cb, - (q31_t)0x302af5, (q31_t)0xfb18983b, (q31_t)0x2f35b1, (q31_t)0xfb251fdc, - (q31_t)0x2e42e2, (q31_t)0xfb31a7ac, (q31_t)0x2d5289, (q31_t)0xfb3e2fac, - (q31_t)0x2c64a6, (q31_t)0xfb4ab7db, (q31_t)0x2b7939, (q31_t)0xfb574039, - (q31_t)0x2a9042, (q31_t)0xfb63c8c4, (q31_t)0x29a9c1, (q31_t)0xfb70517d, - (q31_t)0x28c5b6, (q31_t)0xfb7cda63, (q31_t)0x27e421, (q31_t)0xfb896375, - (q31_t)0x270502, (q31_t)0xfb95ecb4, (q31_t)0x262859, (q31_t)0xfba2761e, - (q31_t)0x254e27, (q31_t)0xfbaeffb3, (q31_t)0x24766a, (q31_t)0xfbbb8973, - (q31_t)0x23a124, (q31_t)0xfbc8135c, (q31_t)0x22ce54, (q31_t)0xfbd49d70, - (q31_t)0x21fdfb, (q31_t)0xfbe127ac, (q31_t)0x213018, (q31_t)0xfbedb212, - (q31_t)0x2064ab, (q31_t)0xfbfa3c9f, (q31_t)0x1f9bb5, (q31_t)0xfc06c754, - (q31_t)0x1ed535, (q31_t)0xfc135231, (q31_t)0x1e112b, (q31_t)0xfc1fdd34, - (q31_t)0x1d4f99, (q31_t)0xfc2c685d, (q31_t)0x1c907c, (q31_t)0xfc38f3ac, - (q31_t)0x1bd3d6, (q31_t)0xfc457f21, (q31_t)0x1b19a7, (q31_t)0xfc520aba, - (q31_t)0x1a61ee, (q31_t)0xfc5e9678, (q31_t)0x19acac, (q31_t)0xfc6b2259, - (q31_t)0x18f9e1, (q31_t)0xfc77ae5e, (q31_t)0x18498c, (q31_t)0xfc843a85, - (q31_t)0x179bae, (q31_t)0xfc90c6cf, (q31_t)0x16f047, (q31_t)0xfc9d533b, - (q31_t)0x164757, (q31_t)0xfca9dfc8, (q31_t)0x15a0dd, (q31_t)0xfcb66c77, - (q31_t)0x14fcda, (q31_t)0xfcc2f945, (q31_t)0x145b4e, (q31_t)0xfccf8634, - (q31_t)0x13bc39, (q31_t)0xfcdc1342, (q31_t)0x131f9b, (q31_t)0xfce8a06f, - (q31_t)0x128574, (q31_t)0xfcf52dbb, (q31_t)0x11edc3, (q31_t)0xfd01bb24, - (q31_t)0x11588a, (q31_t)0xfd0e48ab, (q31_t)0x10c5c7, (q31_t)0xfd1ad650, - (q31_t)0x10357c, (q31_t)0xfd276410, (q31_t)0xfa7a8, (q31_t)0xfd33f1ed, - (q31_t)0xf1c4a, (q31_t)0xfd407fe6, (q31_t)0xe9364, (q31_t)0xfd4d0df9, - (q31_t)0xe0cf5, (q31_t)0xfd599c28, (q31_t)0xd88fd, (q31_t)0xfd662a70, - (q31_t)0xd077c, (q31_t)0xfd72b8d2, (q31_t)0xc8872, (q31_t)0xfd7f474d, - (q31_t)0xc0be0, (q31_t)0xfd8bd5e1, (q31_t)0xb91c4, (q31_t)0xfd98648d, - (q31_t)0xb1a20, (q31_t)0xfda4f351, (q31_t)0xaa4f3, (q31_t)0xfdb1822c, - (q31_t)0xa323d, (q31_t)0xfdbe111e, (q31_t)0x9c1ff, (q31_t)0xfdcaa027, - (q31_t)0x95438, (q31_t)0xfdd72f45, (q31_t)0x8e8e8, (q31_t)0xfde3be78, - (q31_t)0x8800f, (q31_t)0xfdf04dc0, (q31_t)0x819ae, (q31_t)0xfdfcdd1d, - (q31_t)0x7b5c4, (q31_t)0xfe096c8d, (q31_t)0x75452, (q31_t)0xfe15fc11, - (q31_t)0x6f556, (q31_t)0xfe228ba7, (q31_t)0x698d3, (q31_t)0xfe2f1b50, - (q31_t)0x63ec6, (q31_t)0xfe3bab0b, (q31_t)0x5e731, (q31_t)0xfe483ad8, - (q31_t)0x59214, (q31_t)0xfe54cab5, (q31_t)0x53f6e, (q31_t)0xfe615aa3, - (q31_t)0x4ef3f, (q31_t)0xfe6deaa1, (q31_t)0x4a188, (q31_t)0xfe7a7aae, - (q31_t)0x45648, (q31_t)0xfe870aca, (q31_t)0x40d80, (q31_t)0xfe939af5, - (q31_t)0x3c72f, (q31_t)0xfea02b2e, (q31_t)0x38356, (q31_t)0xfeacbb74, - (q31_t)0x341f4, (q31_t)0xfeb94bc8, (q31_t)0x3030a, (q31_t)0xfec5dc28, - (q31_t)0x2c697, (q31_t)0xfed26c94, (q31_t)0x28c9c, (q31_t)0xfedefd0c, - (q31_t)0x25519, (q31_t)0xfeeb8d8f, (q31_t)0x2200d, (q31_t)0xfef81e1d, - (q31_t)0x1ed78, (q31_t)0xff04aeb5, (q31_t)0x1bd5c, (q31_t)0xff113f56, - (q31_t)0x18fb6, (q31_t)0xff1dd001, (q31_t)0x16489, (q31_t)0xff2a60b4, - (q31_t)0x13bd3, (q31_t)0xff36f170, (q31_t)0x11594, (q31_t)0xff438234, - (q31_t)0xf1ce, (q31_t)0xff5012fe, (q31_t)0xd07e, (q31_t)0xff5ca3d0, - (q31_t)0xb1a7, (q31_t)0xff6934a8, (q31_t)0x9547, (q31_t)0xff75c585, - (q31_t)0x7b5f, (q31_t)0xff825668, (q31_t)0x63ee, (q31_t)0xff8ee750, - (q31_t)0x4ef5, (q31_t)0xff9b783c, (q31_t)0x3c74, (q31_t)0xffa8092c, - (q31_t)0x2c6a, (q31_t)0xffb49a1f, (q31_t)0x1ed8, (q31_t)0xffc12b16, - (q31_t)0x13bd, (q31_t)0xffcdbc0f, (q31_t)0xb1a, (q31_t)0xffda4d09, - (q31_t)0x4ef, (q31_t)0xffe6de05, (q31_t)0x13c, (q31_t)0xfff36f02, - (q31_t)0x0, (q31_t)0x0, (q31_t)0x13c, (q31_t)0xc90fe, - (q31_t)0x4ef, (q31_t)0x1921fb, (q31_t)0xb1a, (q31_t)0x25b2f7, - (q31_t)0x13bd, (q31_t)0x3243f1, (q31_t)0x1ed8, (q31_t)0x3ed4ea, - (q31_t)0x2c6a, (q31_t)0x4b65e1, (q31_t)0x3c74, (q31_t)0x57f6d4, - (q31_t)0x4ef5, (q31_t)0x6487c4, (q31_t)0x63ee, (q31_t)0x7118b0, - (q31_t)0x7b5f, (q31_t)0x7da998, (q31_t)0x9547, (q31_t)0x8a3a7b, - (q31_t)0xb1a7, (q31_t)0x96cb58, (q31_t)0xd07e, (q31_t)0xa35c30, - (q31_t)0xf1ce, (q31_t)0xafed02, (q31_t)0x11594, (q31_t)0xbc7dcc, - (q31_t)0x13bd3, (q31_t)0xc90e90, (q31_t)0x16489, (q31_t)0xd59f4c, - (q31_t)0x18fb6, (q31_t)0xe22fff, (q31_t)0x1bd5c, (q31_t)0xeec0aa, - (q31_t)0x1ed78, (q31_t)0xfb514b, (q31_t)0x2200d, (q31_t)0x107e1e3, - (q31_t)0x25519, (q31_t)0x1147271, (q31_t)0x28c9c, (q31_t)0x12102f4, - (q31_t)0x2c697, (q31_t)0x12d936c, (q31_t)0x3030a, (q31_t)0x13a23d8, - (q31_t)0x341f4, (q31_t)0x146b438, (q31_t)0x38356, (q31_t)0x153448c, - (q31_t)0x3c72f, (q31_t)0x15fd4d2, (q31_t)0x40d80, (q31_t)0x16c650b, - (q31_t)0x45648, (q31_t)0x178f536, (q31_t)0x4a188, (q31_t)0x1858552, - (q31_t)0x4ef3f, (q31_t)0x192155f, (q31_t)0x53f6e, (q31_t)0x19ea55d, - (q31_t)0x59214, (q31_t)0x1ab354b, (q31_t)0x5e731, (q31_t)0x1b7c528, - (q31_t)0x63ec6, (q31_t)0x1c454f5, (q31_t)0x698d3, (q31_t)0x1d0e4b0, - (q31_t)0x6f556, (q31_t)0x1dd7459, (q31_t)0x75452, (q31_t)0x1ea03ef, - (q31_t)0x7b5c4, (q31_t)0x1f69373, (q31_t)0x819ae, (q31_t)0x20322e3, - (q31_t)0x8800f, (q31_t)0x20fb240, (q31_t)0x8e8e8, (q31_t)0x21c4188, - (q31_t)0x95438, (q31_t)0x228d0bb, (q31_t)0x9c1ff, (q31_t)0x2355fd9, - (q31_t)0xa323d, (q31_t)0x241eee2, (q31_t)0xaa4f3, (q31_t)0x24e7dd4, - (q31_t)0xb1a20, (q31_t)0x25b0caf, (q31_t)0xb91c4, (q31_t)0x2679b73, - (q31_t)0xc0be0, (q31_t)0x2742a1f, (q31_t)0xc8872, (q31_t)0x280b8b3, - (q31_t)0xd077c, (q31_t)0x28d472e, (q31_t)0xd88fd, (q31_t)0x299d590, - (q31_t)0xe0cf5, (q31_t)0x2a663d8, (q31_t)0xe9364, (q31_t)0x2b2f207, - (q31_t)0xf1c4a, (q31_t)0x2bf801a, (q31_t)0xfa7a8, (q31_t)0x2cc0e13, - (q31_t)0x10357c, (q31_t)0x2d89bf0, (q31_t)0x10c5c7, (q31_t)0x2e529b0, - (q31_t)0x11588a, (q31_t)0x2f1b755, (q31_t)0x11edc3, (q31_t)0x2fe44dc, - (q31_t)0x128574, (q31_t)0x30ad245, (q31_t)0x131f9b, (q31_t)0x3175f91, - (q31_t)0x13bc39, (q31_t)0x323ecbe, (q31_t)0x145b4e, (q31_t)0x33079cc, - (q31_t)0x14fcda, (q31_t)0x33d06bb, (q31_t)0x15a0dd, (q31_t)0x3499389, - (q31_t)0x164757, (q31_t)0x3562038, (q31_t)0x16f047, (q31_t)0x362acc5, - (q31_t)0x179bae, (q31_t)0x36f3931, (q31_t)0x18498c, (q31_t)0x37bc57b, - (q31_t)0x18f9e1, (q31_t)0x38851a2, (q31_t)0x19acac, (q31_t)0x394dda7, - (q31_t)0x1a61ee, (q31_t)0x3a16988, (q31_t)0x1b19a7, (q31_t)0x3adf546, - (q31_t)0x1bd3d6, (q31_t)0x3ba80df, (q31_t)0x1c907c, (q31_t)0x3c70c54, - (q31_t)0x1d4f99, (q31_t)0x3d397a3, (q31_t)0x1e112b, (q31_t)0x3e022cc, - (q31_t)0x1ed535, (q31_t)0x3ecadcf, (q31_t)0x1f9bb5, (q31_t)0x3f938ac, - (q31_t)0x2064ab, (q31_t)0x405c361, (q31_t)0x213018, (q31_t)0x4124dee, - (q31_t)0x21fdfb, (q31_t)0x41ed854, (q31_t)0x22ce54, (q31_t)0x42b6290, - (q31_t)0x23a124, (q31_t)0x437eca4, (q31_t)0x24766a, (q31_t)0x444768d, - (q31_t)0x254e27, (q31_t)0x451004d, (q31_t)0x262859, (q31_t)0x45d89e2, - (q31_t)0x270502, (q31_t)0x46a134c, (q31_t)0x27e421, (q31_t)0x4769c8b, - (q31_t)0x28c5b6, (q31_t)0x483259d, (q31_t)0x29a9c1, (q31_t)0x48fae83, - (q31_t)0x2a9042, (q31_t)0x49c373c, (q31_t)0x2b7939, (q31_t)0x4a8bfc7, - (q31_t)0x2c64a6, (q31_t)0x4b54825, (q31_t)0x2d5289, (q31_t)0x4c1d054, - (q31_t)0x2e42e2, (q31_t)0x4ce5854, (q31_t)0x2f35b1, (q31_t)0x4dae024, - (q31_t)0x302af5, (q31_t)0x4e767c5, (q31_t)0x3122b0, (q31_t)0x4f3ef35, - (q31_t)0x321ce0, (q31_t)0x5007674, (q31_t)0x331986, (q31_t)0x50cfd82, - (q31_t)0x3418a2, (q31_t)0x519845e, (q31_t)0x351a33, (q31_t)0x5260b08, - (q31_t)0x361e3a, (q31_t)0x532917f, (q31_t)0x3724b6, (q31_t)0x53f17c3, - (q31_t)0x382da8, (q31_t)0x54b9dd3, (q31_t)0x393910, (q31_t)0x55823ae, - (q31_t)0x3a46ed, (q31_t)0x564a955, (q31_t)0x3b573f, (q31_t)0x5712ec7, - (q31_t)0x3c6a07, (q31_t)0x57db403, (q31_t)0x3d7f44, (q31_t)0x58a3908, - (q31_t)0x3e96f6, (q31_t)0x596bdd7, (q31_t)0x3fb11d, (q31_t)0x5a3426f, - (q31_t)0x40cdba, (q31_t)0x5afc6d0, (q31_t)0x41eccc, (q31_t)0x5bc4af8, - (q31_t)0x430e53, (q31_t)0x5c8cee7, (q31_t)0x44324f, (q31_t)0x5d5529e, - (q31_t)0x4558c0, (q31_t)0x5e1d61b, (q31_t)0x4681a6, (q31_t)0x5ee595d, - (q31_t)0x47ad01, (q31_t)0x5fadc66, (q31_t)0x48dad1, (q31_t)0x6075f33, - (q31_t)0x4a0b16, (q31_t)0x613e1c5, (q31_t)0x4b3dcf, (q31_t)0x620641a, - (q31_t)0x4c72fe, (q31_t)0x62ce634, (q31_t)0x4daaa1, (q31_t)0x6396810, - (q31_t)0x4ee4b8, (q31_t)0x645e9af, (q31_t)0x502145, (q31_t)0x6526b10, - (q31_t)0x516045, (q31_t)0x65eec33, (q31_t)0x52a1bb, (q31_t)0x66b6d16, - (q31_t)0x53e5a5, (q31_t)0x677edbb, (q31_t)0x552c03, (q31_t)0x6846e1f, - (q31_t)0x5674d6, (q31_t)0x690ee44, (q31_t)0x57c01d, (q31_t)0x69d6e27, - (q31_t)0x590dd8, (q31_t)0x6a9edc9, (q31_t)0x5a5e07, (q31_t)0x6b66d29, - (q31_t)0x5bb0ab, (q31_t)0x6c2ec48, (q31_t)0x5d05c3, (q31_t)0x6cf6b23, - (q31_t)0x5e5d4e, (q31_t)0x6dbe9bb, (q31_t)0x5fb74e, (q31_t)0x6e86810, - (q31_t)0x6113c2, (q31_t)0x6f4e620, (q31_t)0x6272aa, (q31_t)0x70163eb, - (q31_t)0x63d405, (q31_t)0x70de172, (q31_t)0x6537d4, (q31_t)0x71a5eb3, - (q31_t)0x669e18, (q31_t)0x726dbae, (q31_t)0x6806ce, (q31_t)0x7335862, - (q31_t)0x6971f9, (q31_t)0x73fd4cf, (q31_t)0x6adf97, (q31_t)0x74c50f4, - (q31_t)0x6c4fa8, (q31_t)0x758ccd2, (q31_t)0x6dc22e, (q31_t)0x7654867, - (q31_t)0x6f3726, (q31_t)0x771c3b3, (q31_t)0x70ae92, (q31_t)0x77e3eb5, - (q31_t)0x722871, (q31_t)0x78ab96e, (q31_t)0x73a4c3, (q31_t)0x79733dc, - (q31_t)0x752389, (q31_t)0x7a3adff, (q31_t)0x76a4c2, (q31_t)0x7b027d7, - (q31_t)0x78286e, (q31_t)0x7bca163, (q31_t)0x79ae8c, (q31_t)0x7c91aa3, - (q31_t)0x7b371e, (q31_t)0x7d59396, (q31_t)0x7cc223, (q31_t)0x7e20c3b, - (q31_t)0x7e4f9b, (q31_t)0x7ee8493, (q31_t)0x7fdf85, (q31_t)0x7fafc9c, - (q31_t)0x8171e2, (q31_t)0x8077457, (q31_t)0x8306b2, (q31_t)0x813ebc2, - (q31_t)0x849df4, (q31_t)0x82062de, (q31_t)0x8637a9, (q31_t)0x82cd9a9, - (q31_t)0x87d3d0, (q31_t)0x8395024, (q31_t)0x89726a, (q31_t)0x845c64d, - (q31_t)0x8b1376, (q31_t)0x8523c25, (q31_t)0x8cb6f5, (q31_t)0x85eb1ab, - (q31_t)0x8e5ce5, (q31_t)0x86b26de, (q31_t)0x900548, (q31_t)0x8779bbe, - (q31_t)0x91b01d, (q31_t)0x884104b, (q31_t)0x935d64, (q31_t)0x8908483, - (q31_t)0x950d1d, (q31_t)0x89cf867, (q31_t)0x96bf48, (q31_t)0x8a96bf6, - (q31_t)0x9873e4, (q31_t)0x8b5df30, (q31_t)0x9a2af3, (q31_t)0x8c25213, - (q31_t)0x9be473, (q31_t)0x8cec4a0, (q31_t)0x9da065, (q31_t)0x8db36d6, - (q31_t)0x9f5ec8, (q31_t)0x8e7a8b5, (q31_t)0xa11f9d, (q31_t)0x8f41a3c, - (q31_t)0xa2e2e3, (q31_t)0x9008b6a, (q31_t)0xa4a89b, (q31_t)0x90cfc40, - (q31_t)0xa670c4, (q31_t)0x9196cbc, (q31_t)0xa83b5e, (q31_t)0x925dcdf, - (q31_t)0xaa086a, (q31_t)0x9324ca7, (q31_t)0xabd7e6, (q31_t)0x93ebc14, - (q31_t)0xada9d4, (q31_t)0x94b2b27, (q31_t)0xaf7e33, (q31_t)0x95799dd, - (q31_t)0xb15502, (q31_t)0x9640837, (q31_t)0xb32e42, (q31_t)0x9707635, - (q31_t)0xb509f3, (q31_t)0x97ce3d5, (q31_t)0xb6e815, (q31_t)0x9895118, - (q31_t)0xb8c8a7, (q31_t)0x995bdfd, (q31_t)0xbaabaa, (q31_t)0x9a22a83, - (q31_t)0xbc911d, (q31_t)0x9ae96aa, (q31_t)0xbe7901, (q31_t)0x9bb0271, - (q31_t)0xc06355, (q31_t)0x9c76dd8, (q31_t)0xc25019, (q31_t)0x9d3d8df, - (q31_t)0xc43f4d, (q31_t)0x9e04385, (q31_t)0xc630f2, (q31_t)0x9ecadc9, - (q31_t)0xc82506, (q31_t)0x9f917ac, (q31_t)0xca1b8a, (q31_t)0xa05812c, - (q31_t)0xcc147f, (q31_t)0xa11ea49, (q31_t)0xce0fe3, (q31_t)0xa1e5303, - (q31_t)0xd00db6, (q31_t)0xa2abb59, (q31_t)0xd20dfa, (q31_t)0xa37234a, - (q31_t)0xd410ad, (q31_t)0xa438ad7, (q31_t)0xd615cf, (q31_t)0xa4ff1fe, - (q31_t)0xd81d61, (q31_t)0xa5c58c0, (q31_t)0xda2762, (q31_t)0xa68bf1b, - (q31_t)0xdc33d2, (q31_t)0xa752510, (q31_t)0xde42b2, (q31_t)0xa818a9d, - (q31_t)0xe05401, (q31_t)0xa8defc3, (q31_t)0xe267be, (q31_t)0xa9a5480, - (q31_t)0xe47deb, (q31_t)0xaa6b8d5, (q31_t)0xe69686, (q31_t)0xab31cc1, - (q31_t)0xe8b190, (q31_t)0xabf8043, (q31_t)0xeacf09, (q31_t)0xacbe35b, - (q31_t)0xeceef1, (q31_t)0xad84609, (q31_t)0xef1147, (q31_t)0xae4a84b, - (q31_t)0xf1360b, (q31_t)0xaf10a22, (q31_t)0xf35d3e, (q31_t)0xafd6b8d, - (q31_t)0xf586df, (q31_t)0xb09cc8c, (q31_t)0xf7b2ee, (q31_t)0xb162d1d, - (q31_t)0xf9e16b, (q31_t)0xb228d42, (q31_t)0xfc1257, (q31_t)0xb2eecf8, - (q31_t)0xfe45b0, (q31_t)0xb3b4c40, (q31_t)0x1007b77, (q31_t)0xb47ab19, - (q31_t)0x102b3ac, (q31_t)0xb540982, (q31_t)0x104ee4f, (q31_t)0xb60677c, - (q31_t)0x1072b5f, (q31_t)0xb6cc506, (q31_t)0x1096add, (q31_t)0xb79221f, - (q31_t)0x10bacc8, (q31_t)0xb857ec7, (q31_t)0x10df120, (q31_t)0xb91dafc, - (q31_t)0x11037e6, (q31_t)0xb9e36c0, (q31_t)0x1128119, (q31_t)0xbaa9211, - (q31_t)0x114ccb9, (q31_t)0xbb6ecef, (q31_t)0x1171ac6, (q31_t)0xbc34759, - (q31_t)0x1196b3f, (q31_t)0xbcfa150, (q31_t)0x11bbe26, (q31_t)0xbdbfad1, - (q31_t)0x11e1379, (q31_t)0xbe853de, (q31_t)0x1206b39, (q31_t)0xbf4ac75, - (q31_t)0x122c566, (q31_t)0xc010496, (q31_t)0x12521ff, (q31_t)0xc0d5c41, - (q31_t)0x1278104, (q31_t)0xc19b374, (q31_t)0x129e276, (q31_t)0xc260a31, - (q31_t)0x12c4653, (q31_t)0xc326075, (q31_t)0x12eac9d, (q31_t)0xc3eb641, - (q31_t)0x1311553, (q31_t)0xc4b0b94, (q31_t)0x1338075, (q31_t)0xc57606e, - (q31_t)0x135ee02, (q31_t)0xc63b4ce, (q31_t)0x1385dfb, (q31_t)0xc7008b3, - (q31_t)0x13ad060, (q31_t)0xc7c5c1e, (q31_t)0x13d4530, (q31_t)0xc88af0e, - (q31_t)0x13fbc6c, (q31_t)0xc950182, (q31_t)0x1423613, (q31_t)0xca1537a, - (q31_t)0x144b225, (q31_t)0xcada4f5, (q31_t)0x14730a3, (q31_t)0xcb9f5f3, - (q31_t)0x149b18b, (q31_t)0xcc64673, (q31_t)0x14c34df, (q31_t)0xcd29676, - (q31_t)0x14eba9d, (q31_t)0xcdee5f9, (q31_t)0x15142c6, (q31_t)0xceb34fe, - (q31_t)0x153cd5a, (q31_t)0xcf78383, (q31_t)0x1565a58, (q31_t)0xd03d189, - (q31_t)0x158e9c1, (q31_t)0xd101f0e, (q31_t)0x15b7b94, (q31_t)0xd1c6c11, - (q31_t)0x15e0fd1, (q31_t)0xd28b894, (q31_t)0x160a678, (q31_t)0xd350495, - (q31_t)0x1633f8a, (q31_t)0xd415013, (q31_t)0x165db05, (q31_t)0xd4d9b0e, - (q31_t)0x16878eb, (q31_t)0xd59e586, (q31_t)0x16b193a, (q31_t)0xd662f7b, - (q31_t)0x16dbbf3, (q31_t)0xd7278eb, (q31_t)0x1706115, (q31_t)0xd7ec1d6, - (q31_t)0x17308a1, (q31_t)0xd8b0a3d, (q31_t)0x175b296, (q31_t)0xd97521d, - (q31_t)0x1785ef4, (q31_t)0xda39978, (q31_t)0x17b0dbb, (q31_t)0xdafe04b, - (q31_t)0x17dbeec, (q31_t)0xdbc2698, (q31_t)0x1807285, (q31_t)0xdc86c5d, - (q31_t)0x1832888, (q31_t)0xdd4b19a, (q31_t)0x185e0f3, (q31_t)0xde0f64f, - (q31_t)0x1889bc6, (q31_t)0xded3a7b, (q31_t)0x18b5903, (q31_t)0xdf97e1d, - (q31_t)0x18e18a7, (q31_t)0xe05c135, (q31_t)0x190dab4, (q31_t)0xe1203c3, - (q31_t)0x1939f29, (q31_t)0xe1e45c6, (q31_t)0x1966606, (q31_t)0xe2a873e, - (q31_t)0x1992f4c, (q31_t)0xe36c82a, (q31_t)0x19bfaf9, (q31_t)0xe430889, - (q31_t)0x19ec90d, (q31_t)0xe4f485c, (q31_t)0x1a1998a, (q31_t)0xe5b87a2, - (q31_t)0x1a46c6e, (q31_t)0xe67c65a, (q31_t)0x1a741b9, (q31_t)0xe740483, - (q31_t)0x1aa196c, (q31_t)0xe80421e, (q31_t)0x1acf386, (q31_t)0xe8c7f2a, - (q31_t)0x1afd007, (q31_t)0xe98bba7, (q31_t)0x1b2aef0, (q31_t)0xea4f793, - (q31_t)0x1b5903f, (q31_t)0xeb132ef, (q31_t)0x1b873f5, (q31_t)0xebd6db9, - (q31_t)0x1bb5a11, (q31_t)0xec9a7f3, (q31_t)0x1be4294, (q31_t)0xed5e19a, - (q31_t)0x1c12d7e, (q31_t)0xee21aaf, (q31_t)0x1c41ace, (q31_t)0xeee5331, - (q31_t)0x1c70a84, (q31_t)0xefa8b20, (q31_t)0x1c9fca0, (q31_t)0xf06c27a, - (q31_t)0x1ccf122, (q31_t)0xf12f941, (q31_t)0x1cfe80a, (q31_t)0xf1f2f73, - (q31_t)0x1d2e158, (q31_t)0xf2b650f, (q31_t)0x1d5dd0c, (q31_t)0xf379a16, - (q31_t)0x1d8db25, (q31_t)0xf43ce86, (q31_t)0x1dbdba3, (q31_t)0xf500260, - (q31_t)0x1dede87, (q31_t)0xf5c35a3, (q31_t)0x1e1e3d0, (q31_t)0xf68684e, - (q31_t)0x1e4eb7e, (q31_t)0xf749a61, (q31_t)0x1e7f591, (q31_t)0xf80cbdc, - (q31_t)0x1eb0209, (q31_t)0xf8cfcbe, (q31_t)0x1ee10e5, (q31_t)0xf992d06, - (q31_t)0x1f12227, (q31_t)0xfa55cb4, (q31_t)0x1f435cc, (q31_t)0xfb18bc8, - (q31_t)0x1f74bd6, (q31_t)0xfbdba40, (q31_t)0x1fa6445, (q31_t)0xfc9e81e, - (q31_t)0x1fd7f17, (q31_t)0xfd6155f, (q31_t)0x2009c4e, (q31_t)0xfe24205, - (q31_t)0x203bbe8, (q31_t)0xfee6e0d, (q31_t)0x206dde6, (q31_t)0xffa9979, - (q31_t)0x20a0248, (q31_t)0x1006c446, (q31_t)0x20d290d, (q31_t)0x1012ee76, - (q31_t)0x2105236, (q31_t)0x101f1807, (q31_t)0x2137dc2, (q31_t)0x102b40f8, - (q31_t)0x216abb1, (q31_t)0x1037694b, (q31_t)0x219dc03, (q31_t)0x104390fd, - (q31_t)0x21d0eb8, (q31_t)0x104fb80e, (q31_t)0x22043d0, (q31_t)0x105bde7f, - (q31_t)0x2237b4b, (q31_t)0x1068044e, (q31_t)0x226b528, (q31_t)0x1074297b, - (q31_t)0x229f167, (q31_t)0x10804e06, (q31_t)0x22d3009, (q31_t)0x108c71ee, - (q31_t)0x230710d, (q31_t)0x10989532, (q31_t)0x233b473, (q31_t)0x10a4b7d3, - (q31_t)0x236fa3b, (q31_t)0x10b0d9d0, (q31_t)0x23a4265, (q31_t)0x10bcfb28, - (q31_t)0x23d8cf1, (q31_t)0x10c91bda, (q31_t)0x240d9de, (q31_t)0x10d53be7, - (q31_t)0x244292c, (q31_t)0x10e15b4e, (q31_t)0x2477adc, (q31_t)0x10ed7a0e, - (q31_t)0x24aceed, (q31_t)0x10f99827, (q31_t)0x24e255e, (q31_t)0x1105b599, - (q31_t)0x2517e31, (q31_t)0x1111d263, (q31_t)0x254d965, (q31_t)0x111dee84, - (q31_t)0x25836f9, (q31_t)0x112a09fc, (q31_t)0x25b96ee, (q31_t)0x113624cb, - (q31_t)0x25ef943, (q31_t)0x11423ef0, (q31_t)0x2625df8, (q31_t)0x114e586a, - (q31_t)0x265c50e, (q31_t)0x115a713a, (q31_t)0x2692e83, (q31_t)0x1166895f, - (q31_t)0x26c9a58, (q31_t)0x1172a0d7, (q31_t)0x270088e, (q31_t)0x117eb7a4, - (q31_t)0x2737922, (q31_t)0x118acdc4, (q31_t)0x276ec16, (q31_t)0x1196e337, - (q31_t)0x27a616a, (q31_t)0x11a2f7fc, (q31_t)0x27dd91c, (q31_t)0x11af0c13, - (q31_t)0x281532e, (q31_t)0x11bb1f7c, (q31_t)0x284cf9f, (q31_t)0x11c73235, - (q31_t)0x2884e6e, (q31_t)0x11d3443f, (q31_t)0x28bcf9c, (q31_t)0x11df5599, - (q31_t)0x28f5329, (q31_t)0x11eb6643, (q31_t)0x292d914, (q31_t)0x11f7763c, - (q31_t)0x296615d, (q31_t)0x12038584, (q31_t)0x299ec05, (q31_t)0x120f941a, - (q31_t)0x29d790a, (q31_t)0x121ba1fd, (q31_t)0x2a1086d, (q31_t)0x1227af2e, - (q31_t)0x2a49a2e, (q31_t)0x1233bbac, (q31_t)0x2a82e4d, (q31_t)0x123fc776, - (q31_t)0x2abc4c9, (q31_t)0x124bd28c, (q31_t)0x2af5da2, (q31_t)0x1257dced, - (q31_t)0x2b2f8d8, (q31_t)0x1263e699, (q31_t)0x2b6966c, (q31_t)0x126fef90, - (q31_t)0x2ba365c, (q31_t)0x127bf7d1, (q31_t)0x2bdd8a9, (q31_t)0x1287ff5b, - (q31_t)0x2c17d52, (q31_t)0x1294062f, (q31_t)0x2c52459, (q31_t)0x12a00c4b, - (q31_t)0x2c8cdbb, (q31_t)0x12ac11af, (q31_t)0x2cc7979, (q31_t)0x12b8165b, - (q31_t)0x2d02794, (q31_t)0x12c41a4f, (q31_t)0x2d3d80a, (q31_t)0x12d01d89, - (q31_t)0x2d78add, (q31_t)0x12dc2009, (q31_t)0x2db400a, (q31_t)0x12e821cf, - (q31_t)0x2def794, (q31_t)0x12f422db, (q31_t)0x2e2b178, (q31_t)0x1300232c, - (q31_t)0x2e66db8, (q31_t)0x130c22c1, (q31_t)0x2ea2c53, (q31_t)0x1318219a, - (q31_t)0x2eded49, (q31_t)0x13241fb6, (q31_t)0x2f1b099, (q31_t)0x13301d16, - (q31_t)0x2f57644, (q31_t)0x133c19b8, (q31_t)0x2f93e4a, (q31_t)0x1348159d, - (q31_t)0x2fd08a9, (q31_t)0x135410c3, (q31_t)0x300d563, (q31_t)0x13600b2a, - (q31_t)0x304a477, (q31_t)0x136c04d2, (q31_t)0x30875e5, (q31_t)0x1377fdbb, - (q31_t)0x30c49ad, (q31_t)0x1383f5e3, (q31_t)0x3101fce, (q31_t)0x138fed4b, - (q31_t)0x313f848, (q31_t)0x139be3f2, (q31_t)0x317d31c, (q31_t)0x13a7d9d7, - (q31_t)0x31bb049, (q31_t)0x13b3cefa, (q31_t)0x31f8fcf, (q31_t)0x13bfc35b, - (q31_t)0x32371ae, (q31_t)0x13cbb6f8, (q31_t)0x32755e5, (q31_t)0x13d7a9d3, - (q31_t)0x32b3c75, (q31_t)0x13e39be9, (q31_t)0x32f255e, (q31_t)0x13ef8d3c, - (q31_t)0x333109e, (q31_t)0x13fb7dc9, (q31_t)0x336fe37, (q31_t)0x14076d91, - (q31_t)0x33aee27, (q31_t)0x14135c94, (q31_t)0x33ee070, (q31_t)0x141f4ad1, - (q31_t)0x342d510, (q31_t)0x142b3846, (q31_t)0x346cc07, (q31_t)0x143724f5, - (q31_t)0x34ac556, (q31_t)0x144310dd, (q31_t)0x34ec0fc, (q31_t)0x144efbfc, - (q31_t)0x352bef9, (q31_t)0x145ae653, (q31_t)0x356bf4d, (q31_t)0x1466cfe1, - (q31_t)0x35ac1f7, (q31_t)0x1472b8a5, (q31_t)0x35ec6f8, (q31_t)0x147ea0a0, - (q31_t)0x362ce50, (q31_t)0x148a87d1, (q31_t)0x366d7fd, (q31_t)0x14966e36, - (q31_t)0x36ae401, (q31_t)0x14a253d1, (q31_t)0x36ef25b, (q31_t)0x14ae38a0, - (q31_t)0x373030a, (q31_t)0x14ba1ca3, (q31_t)0x377160f, (q31_t)0x14c5ffd9, - (q31_t)0x37b2b6a, (q31_t)0x14d1e242, (q31_t)0x37f4319, (q31_t)0x14ddc3de, - (q31_t)0x3835d1e, (q31_t)0x14e9a4ac, (q31_t)0x3877978, (q31_t)0x14f584ac, - (q31_t)0x38b9827, (q31_t)0x150163dc, (q31_t)0x38fb92a, (q31_t)0x150d423d, - (q31_t)0x393dc82, (q31_t)0x15191fcf, (q31_t)0x398022f, (q31_t)0x1524fc90, - (q31_t)0x39c2a2f, (q31_t)0x1530d881, (q31_t)0x3a05484, (q31_t)0x153cb3a0, - (q31_t)0x3a4812c, (q31_t)0x15488dee, (q31_t)0x3a8b028, (q31_t)0x1554676a, - (q31_t)0x3ace178, (q31_t)0x15604013, (q31_t)0x3b1151b, (q31_t)0x156c17e9, - (q31_t)0x3b54b11, (q31_t)0x1577eeec, (q31_t)0x3b9835a, (q31_t)0x1583c51b, - (q31_t)0x3bdbdf6, (q31_t)0x158f9a76, (q31_t)0x3c1fae5, (q31_t)0x159b6efb, - (q31_t)0x3c63a26, (q31_t)0x15a742ac, (q31_t)0x3ca7bba, (q31_t)0x15b31587, - (q31_t)0x3cebfa0, (q31_t)0x15bee78c, (q31_t)0x3d305d8, (q31_t)0x15cab8ba, - (q31_t)0x3d74e62, (q31_t)0x15d68911, (q31_t)0x3db993e, (q31_t)0x15e25890, - (q31_t)0x3dfe66c, (q31_t)0x15ee2738, (q31_t)0x3e435ea, (q31_t)0x15f9f507, - (q31_t)0x3e887bb, (q31_t)0x1605c1fd, (q31_t)0x3ecdbdc, (q31_t)0x16118e1a, - (q31_t)0x3f1324e, (q31_t)0x161d595d, (q31_t)0x3f58b10, (q31_t)0x162923c5, - (q31_t)0x3f9e624, (q31_t)0x1634ed53, (q31_t)0x3fe4388, (q31_t)0x1640b606, - (q31_t)0x402a33c, (q31_t)0x164c7ddd, (q31_t)0x4070540, (q31_t)0x165844d8, - (q31_t)0x40b6994, (q31_t)0x16640af7, (q31_t)0x40fd037, (q31_t)0x166fd039, - (q31_t)0x414392b, (q31_t)0x167b949d, (q31_t)0x418a46d, (q31_t)0x16875823, - (q31_t)0x41d11ff, (q31_t)0x16931acb, (q31_t)0x42181e0, (q31_t)0x169edc94, - (q31_t)0x425f410, (q31_t)0x16aa9d7e, (q31_t)0x42a688f, (q31_t)0x16b65d88, - (q31_t)0x42edf5c, (q31_t)0x16c21cb2, (q31_t)0x4335877, (q31_t)0x16cddafb, - (q31_t)0x437d3e1, (q31_t)0x16d99864, (q31_t)0x43c5199, (q31_t)0x16e554ea, - (q31_t)0x440d19e, (q31_t)0x16f1108f, (q31_t)0x44553f2, (q31_t)0x16fccb51, - (q31_t)0x449d892, (q31_t)0x17088531, (q31_t)0x44e5f80, (q31_t)0x17143e2d, - (q31_t)0x452e8bc, (q31_t)0x171ff646, (q31_t)0x4577444, (q31_t)0x172bad7a, - (q31_t)0x45c0219, (q31_t)0x173763c9, (q31_t)0x460923b, (q31_t)0x17431933, - (q31_t)0x46524a9, (q31_t)0x174ecdb8, (q31_t)0x469b963, (q31_t)0x175a8157, - (q31_t)0x46e5069, (q31_t)0x1766340f, (q31_t)0x472e9bc, (q31_t)0x1771e5e0, - (q31_t)0x477855a, (q31_t)0x177d96ca, (q31_t)0x47c2344, (q31_t)0x178946cc, - (q31_t)0x480c379, (q31_t)0x1794f5e6, (q31_t)0x48565f9, (q31_t)0x17a0a417, - (q31_t)0x48a0ac4, (q31_t)0x17ac515f, (q31_t)0x48eb1db, (q31_t)0x17b7fdbd, - (q31_t)0x4935b3c, (q31_t)0x17c3a931, (q31_t)0x49806e7, (q31_t)0x17cf53bb, - (q31_t)0x49cb4dd, (q31_t)0x17dafd59, (q31_t)0x4a1651c, (q31_t)0x17e6a60c, - (q31_t)0x4a617a6, (q31_t)0x17f24dd3, (q31_t)0x4aacc7a, (q31_t)0x17fdf4ae, - (q31_t)0x4af8397, (q31_t)0x18099a9c, (q31_t)0x4b43cfd, (q31_t)0x18153f9d, - (q31_t)0x4b8f8ad, (q31_t)0x1820e3b0, (q31_t)0x4bdb6a6, (q31_t)0x182c86d5, - (q31_t)0x4c276e8, (q31_t)0x1838290c, (q31_t)0x4c73972, (q31_t)0x1843ca53, - (q31_t)0x4cbfe45, (q31_t)0x184f6aab, (q31_t)0x4d0c560, (q31_t)0x185b0a13, - (q31_t)0x4d58ec3, (q31_t)0x1866a88a, (q31_t)0x4da5a6f, (q31_t)0x18724611, - (q31_t)0x4df2862, (q31_t)0x187de2a7, (q31_t)0x4e3f89c, (q31_t)0x18897e4a, - (q31_t)0x4e8cb1e, (q31_t)0x189518fc, (q31_t)0x4ed9fe7, (q31_t)0x18a0b2bb, - (q31_t)0x4f276f7, (q31_t)0x18ac4b87, (q31_t)0x4f7504e, (q31_t)0x18b7e35f, - (q31_t)0x4fc2bec, (q31_t)0x18c37a44, (q31_t)0x50109d0, (q31_t)0x18cf1034, - (q31_t)0x505e9fb, (q31_t)0x18daa52f, (q31_t)0x50acc6b, (q31_t)0x18e63935, - (q31_t)0x50fb121, (q31_t)0x18f1cc45, (q31_t)0x514981d, (q31_t)0x18fd5e5f, - (q31_t)0x519815f, (q31_t)0x1908ef82, (q31_t)0x51e6ce6, (q31_t)0x19147fae, - (q31_t)0x5235ab2, (q31_t)0x19200ee3, (q31_t)0x5284ac3, (q31_t)0x192b9d1f, - (q31_t)0x52d3d18, (q31_t)0x19372a64, (q31_t)0x53231b3, (q31_t)0x1942b6af, - (q31_t)0x5372891, (q31_t)0x194e4201, (q31_t)0x53c21b4, (q31_t)0x1959cc5a, - (q31_t)0x5411d1b, (q31_t)0x196555b8, (q31_t)0x5461ac6, (q31_t)0x1970de1b, - (q31_t)0x54b1ab4, (q31_t)0x197c6584, (q31_t)0x5501ce5, (q31_t)0x1987ebf0, - (q31_t)0x555215a, (q31_t)0x19937161, (q31_t)0x55a2812, (q31_t)0x199ef5d6, - (q31_t)0x55f310d, (q31_t)0x19aa794d, (q31_t)0x5643c4a, (q31_t)0x19b5fbc8, - (q31_t)0x56949ca, (q31_t)0x19c17d44, (q31_t)0x56e598c, (q31_t)0x19ccfdc2, - (q31_t)0x5736b90, (q31_t)0x19d87d42, (q31_t)0x5787fd6, (q31_t)0x19e3fbc3, - (q31_t)0x57d965d, (q31_t)0x19ef7944, (q31_t)0x582af26, (q31_t)0x19faf5c5, - (q31_t)0x587ca31, (q31_t)0x1a067145, (q31_t)0x58ce77c, (q31_t)0x1a11ebc5, - (q31_t)0x5920708, (q31_t)0x1a1d6544, (q31_t)0x59728d5, (q31_t)0x1a28ddc0, - (q31_t)0x59c4ce3, (q31_t)0x1a34553b, (q31_t)0x5a17330, (q31_t)0x1a3fcbb3, - (q31_t)0x5a69bbe, (q31_t)0x1a4b4128, (q31_t)0x5abc68c, (q31_t)0x1a56b599, - (q31_t)0x5b0f399, (q31_t)0x1a622907, (q31_t)0x5b622e6, (q31_t)0x1a6d9b70, - (q31_t)0x5bb5472, (q31_t)0x1a790cd4, (q31_t)0x5c0883d, (q31_t)0x1a847d33, - (q31_t)0x5c5be47, (q31_t)0x1a8fec8c, (q31_t)0x5caf690, (q31_t)0x1a9b5adf, - (q31_t)0x5d03118, (q31_t)0x1aa6c82b, (q31_t)0x5d56ddd, (q31_t)0x1ab23471, - (q31_t)0x5daace1, (q31_t)0x1abd9faf, (q31_t)0x5dfee22, (q31_t)0x1ac909e5, - (q31_t)0x5e531a1, (q31_t)0x1ad47312, (q31_t)0x5ea775e, (q31_t)0x1adfdb37, - (q31_t)0x5efbf58, (q31_t)0x1aeb4253, (q31_t)0x5f5098f, (q31_t)0x1af6a865, - (q31_t)0x5fa5603, (q31_t)0x1b020d6c, (q31_t)0x5ffa4b3, (q31_t)0x1b0d716a, - (q31_t)0x604f5a0, (q31_t)0x1b18d45c, (q31_t)0x60a48c9, (q31_t)0x1b243643, - (q31_t)0x60f9e2e, (q31_t)0x1b2f971e, (q31_t)0x614f5cf, (q31_t)0x1b3af6ec, - (q31_t)0x61a4fac, (q31_t)0x1b4655ae, (q31_t)0x61fabc4, (q31_t)0x1b51b363, - (q31_t)0x6250a18, (q31_t)0x1b5d100a, (q31_t)0x62a6aa6, (q31_t)0x1b686ba3, - (q31_t)0x62fcd6f, (q31_t)0x1b73c62d, (q31_t)0x6353273, (q31_t)0x1b7f1fa9, - (q31_t)0x63a99b1, (q31_t)0x1b8a7815, (q31_t)0x6400329, (q31_t)0x1b95cf71, - (q31_t)0x6456edb, (q31_t)0x1ba125bd, (q31_t)0x64adcc7, (q31_t)0x1bac7af9, - (q31_t)0x6504ced, (q31_t)0x1bb7cf23, (q31_t)0x655bf4c, (q31_t)0x1bc3223c, - (q31_t)0x65b33e4, (q31_t)0x1bce7442, (q31_t)0x660aab5, (q31_t)0x1bd9c537, - (q31_t)0x66623be, (q31_t)0x1be51518, (q31_t)0x66b9f01, (q31_t)0x1bf063e6, - (q31_t)0x6711c7b, (q31_t)0x1bfbb1a0, (q31_t)0x6769c2e, (q31_t)0x1c06fe46, - (q31_t)0x67c1e18, (q31_t)0x1c1249d8, (q31_t)0x681a23a, (q31_t)0x1c1d9454, - (q31_t)0x6872894, (q31_t)0x1c28ddbb, (q31_t)0x68cb124, (q31_t)0x1c34260c, - (q31_t)0x6923bec, (q31_t)0x1c3f6d47, (q31_t)0x697c8eb, (q31_t)0x1c4ab36b, - (q31_t)0x69d5820, (q31_t)0x1c55f878, (q31_t)0x6a2e98b, (q31_t)0x1c613c6d, - (q31_t)0x6a87d2d, (q31_t)0x1c6c7f4a, (q31_t)0x6ae1304, (q31_t)0x1c77c10e, - (q31_t)0x6b3ab12, (q31_t)0x1c8301b9, (q31_t)0x6b94554, (q31_t)0x1c8e414b, - (q31_t)0x6bee1cd, (q31_t)0x1c997fc4, (q31_t)0x6c4807a, (q31_t)0x1ca4bd21, - (q31_t)0x6ca215c, (q31_t)0x1caff965, (q31_t)0x6cfc472, (q31_t)0x1cbb348d, - (q31_t)0x6d569be, (q31_t)0x1cc66e99, (q31_t)0x6db113d, (q31_t)0x1cd1a78a, - (q31_t)0x6e0baf0, (q31_t)0x1cdcdf5e, (q31_t)0x6e666d7, (q31_t)0x1ce81615, - (q31_t)0x6ec14f2, (q31_t)0x1cf34baf, (q31_t)0x6f1c540, (q31_t)0x1cfe802b, - (q31_t)0x6f777c1, (q31_t)0x1d09b389, (q31_t)0x6fd2c75, (q31_t)0x1d14e5c9, - (q31_t)0x702e35c, (q31_t)0x1d2016e9, (q31_t)0x7089c75, (q31_t)0x1d2b46ea, - (q31_t)0x70e57c0, (q31_t)0x1d3675cb, (q31_t)0x714153e, (q31_t)0x1d41a38c, - (q31_t)0x719d4ed, (q31_t)0x1d4cd02c, (q31_t)0x71f96ce, (q31_t)0x1d57fbaa, - (q31_t)0x7255ae0, (q31_t)0x1d632608, (q31_t)0x72b2123, (q31_t)0x1d6e4f43, - (q31_t)0x730e997, (q31_t)0x1d79775c, (q31_t)0x736b43c, (q31_t)0x1d849e51, - (q31_t)0x73c8111, (q31_t)0x1d8fc424, (q31_t)0x7425016, (q31_t)0x1d9ae8d2, - (q31_t)0x748214c, (q31_t)0x1da60c5d, (q31_t)0x74df4b1, (q31_t)0x1db12ec3, - (q31_t)0x753ca46, (q31_t)0x1dbc5004, (q31_t)0x759a20a, (q31_t)0x1dc7701f, - (q31_t)0x75f7bfe, (q31_t)0x1dd28f15, (q31_t)0x7655820, (q31_t)0x1dddace4, - (q31_t)0x76b3671, (q31_t)0x1de8c98c, (q31_t)0x77116f0, (q31_t)0x1df3e50d, - (q31_t)0x776f99d, (q31_t)0x1dfeff67, (q31_t)0x77cde79, (q31_t)0x1e0a1898, - (q31_t)0x782c582, (q31_t)0x1e1530a1, (q31_t)0x788aeb9, (q31_t)0x1e204781, - (q31_t)0x78e9a1d, (q31_t)0x1e2b5d38, (q31_t)0x79487ae, (q31_t)0x1e3671c5, - (q31_t)0x79a776c, (q31_t)0x1e418528, (q31_t)0x7a06957, (q31_t)0x1e4c9760, - (q31_t)0x7a65d6e, (q31_t)0x1e57a86d, (q31_t)0x7ac53b1, (q31_t)0x1e62b84f, - (q31_t)0x7b24c20, (q31_t)0x1e6dc705, (q31_t)0x7b846ba, (q31_t)0x1e78d48e, - (q31_t)0x7be4381, (q31_t)0x1e83e0eb, (q31_t)0x7c44272, (q31_t)0x1e8eec1b, - (q31_t)0x7ca438f, (q31_t)0x1e99f61d, (q31_t)0x7d046d6, (q31_t)0x1ea4fef0, - (q31_t)0x7d64c47, (q31_t)0x1eb00696, (q31_t)0x7dc53e3, (q31_t)0x1ebb0d0d, - (q31_t)0x7e25daa, (q31_t)0x1ec61254, (q31_t)0x7e8699a, (q31_t)0x1ed1166b, - (q31_t)0x7ee77b3, (q31_t)0x1edc1953, (q31_t)0x7f487f6, (q31_t)0x1ee71b0a, - (q31_t)0x7fa9a62, (q31_t)0x1ef21b90, (q31_t)0x800aef7, (q31_t)0x1efd1ae4, - (q31_t)0x806c5b5, (q31_t)0x1f081907, (q31_t)0x80cde9b, (q31_t)0x1f1315f7, - (q31_t)0x812f9a9, (q31_t)0x1f1e11b5, (q31_t)0x81916df, (q31_t)0x1f290c3f, - (q31_t)0x81f363d, (q31_t)0x1f340596, (q31_t)0x82557c3, (q31_t)0x1f3efdb9, - (q31_t)0x82b7b70, (q31_t)0x1f49f4a8, (q31_t)0x831a143, (q31_t)0x1f54ea62, - (q31_t)0x837c93e, (q31_t)0x1f5fdee6, (q31_t)0x83df35f, (q31_t)0x1f6ad235, - (q31_t)0x8441fa6, (q31_t)0x1f75c44e, (q31_t)0x84a4e14, (q31_t)0x1f80b531, - (q31_t)0x8507ea7, (q31_t)0x1f8ba4dc, (q31_t)0x856b160, (q31_t)0x1f969350, - (q31_t)0x85ce63e, (q31_t)0x1fa1808c, (q31_t)0x8631d42, (q31_t)0x1fac6c91, - (q31_t)0x869566a, (q31_t)0x1fb7575c, (q31_t)0x86f91b7, (q31_t)0x1fc240ef, - (q31_t)0x875cf28, (q31_t)0x1fcd2948, (q31_t)0x87c0ebd, (q31_t)0x1fd81067, - (q31_t)0x8825077, (q31_t)0x1fe2f64c, (q31_t)0x8889454, (q31_t)0x1feddaf6, - (q31_t)0x88eda54, (q31_t)0x1ff8be65, (q31_t)0x8952278, (q31_t)0x2003a099, - (q31_t)0x89b6cbf, (q31_t)0x200e8190, (q31_t)0x8a1b928, (q31_t)0x2019614c, - (q31_t)0x8a807b4, (q31_t)0x20243fca, (q31_t)0x8ae5862, (q31_t)0x202f1d0b, - (q31_t)0x8b4ab32, (q31_t)0x2039f90f, (q31_t)0x8bb0023, (q31_t)0x2044d3d4, - (q31_t)0x8c15736, (q31_t)0x204fad5b, (q31_t)0x8c7b06b, (q31_t)0x205a85a3, - (q31_t)0x8ce0bc0, (q31_t)0x20655cac, (q31_t)0x8d46936, (q31_t)0x20703275, - (q31_t)0x8dac8cd, (q31_t)0x207b06fe, (q31_t)0x8e12a84, (q31_t)0x2085da46, - (q31_t)0x8e78e5b, (q31_t)0x2090ac4d, (q31_t)0x8edf452, (q31_t)0x209b7d13, - (q31_t)0x8f45c68, (q31_t)0x20a64c97, (q31_t)0x8fac69e, (q31_t)0x20b11ad9, - (q31_t)0x90132f2, (q31_t)0x20bbe7d8, (q31_t)0x907a166, (q31_t)0x20c6b395, - (q31_t)0x90e11f7, (q31_t)0x20d17e0d, (q31_t)0x91484a8, (q31_t)0x20dc4742, - (q31_t)0x91af976, (q31_t)0x20e70f32, (q31_t)0x9217062, (q31_t)0x20f1d5de, - (q31_t)0x927e96b, (q31_t)0x20fc9b44, (q31_t)0x92e6492, (q31_t)0x21075f65, - (q31_t)0x934e1d6, (q31_t)0x21122240, (q31_t)0x93b6137, (q31_t)0x211ce3d5, - (q31_t)0x941e2b4, (q31_t)0x2127a423, (q31_t)0x948664d, (q31_t)0x21326329, - (q31_t)0x94eec03, (q31_t)0x213d20e8, (q31_t)0x95573d4, (q31_t)0x2147dd5f, - (q31_t)0x95bfdc1, (q31_t)0x2152988d, (q31_t)0x96289c9, (q31_t)0x215d5273, - (q31_t)0x96917ec, (q31_t)0x21680b0f, (q31_t)0x96fa82a, (q31_t)0x2172c262, - (q31_t)0x9763a83, (q31_t)0x217d786a, (q31_t)0x97ccef5, (q31_t)0x21882d28, - (q31_t)0x9836582, (q31_t)0x2192e09b, (q31_t)0x989fe29, (q31_t)0x219d92c2, - (q31_t)0x99098e9, (q31_t)0x21a8439e, (q31_t)0x99735c2, (q31_t)0x21b2f32e, - (q31_t)0x99dd4b4, (q31_t)0x21bda171, (q31_t)0x9a475bf, (q31_t)0x21c84e67, - (q31_t)0x9ab18e3, (q31_t)0x21d2fa0f, (q31_t)0x9b1be1e, (q31_t)0x21dda46a, - (q31_t)0x9b86572, (q31_t)0x21e84d76, (q31_t)0x9bf0edd, (q31_t)0x21f2f534, - (q31_t)0x9c5ba60, (q31_t)0x21fd9ba3, (q31_t)0x9cc67fa, (q31_t)0x220840c2, - (q31_t)0x9d317ab, (q31_t)0x2212e492, (q31_t)0x9d9c973, (q31_t)0x221d8711, - (q31_t)0x9e07d51, (q31_t)0x2228283f, (q31_t)0x9e73346, (q31_t)0x2232c81c, - (q31_t)0x9edeb50, (q31_t)0x223d66a8, (q31_t)0x9f4a570, (q31_t)0x224803e2, - (q31_t)0x9fb61a5, (q31_t)0x22529fca, (q31_t)0xa021fef, (q31_t)0x225d3a5e, - (q31_t)0xa08e04f, (q31_t)0x2267d3a0, (q31_t)0xa0fa2c3, (q31_t)0x22726b8e, - (q31_t)0xa16674b, (q31_t)0x227d0228, (q31_t)0xa1d2de7, (q31_t)0x2287976e, - (q31_t)0xa23f698, (q31_t)0x22922b5e, (q31_t)0xa2ac15b, (q31_t)0x229cbdfa, - (q31_t)0xa318e32, (q31_t)0x22a74f40, (q31_t)0xa385d1d, (q31_t)0x22b1df30, - (q31_t)0xa3f2e19, (q31_t)0x22bc6dca, (q31_t)0xa460129, (q31_t)0x22c6fb0c, - (q31_t)0xa4cd64b, (q31_t)0x22d186f8, (q31_t)0xa53ad7e, (q31_t)0x22dc118c, - (q31_t)0xa5a86c4, (q31_t)0x22e69ac8, (q31_t)0xa61621b, (q31_t)0x22f122ab, - (q31_t)0xa683f83, (q31_t)0x22fba936, (q31_t)0xa6f1efc, (q31_t)0x23062e67, - (q31_t)0xa760086, (q31_t)0x2310b23e, (q31_t)0xa7ce420, (q31_t)0x231b34bc, - (q31_t)0xa83c9ca, (q31_t)0x2325b5df, (q31_t)0xa8ab184, (q31_t)0x233035a7, - (q31_t)0xa919b4e, (q31_t)0x233ab414, (q31_t)0xa988727, (q31_t)0x23453125, - (q31_t)0xa9f750f, (q31_t)0x234facda, (q31_t)0xaa66506, (q31_t)0x235a2733, - (q31_t)0xaad570c, (q31_t)0x2364a02e, (q31_t)0xab44b1f, (q31_t)0x236f17cc, - (q31_t)0xabb4141, (q31_t)0x23798e0d, (q31_t)0xac23971, (q31_t)0x238402ef, - (q31_t)0xac933ae, (q31_t)0x238e7673, (q31_t)0xad02ff8, (q31_t)0x2398e898, - (q31_t)0xad72e4f, (q31_t)0x23a3595e, (q31_t)0xade2eb3, (q31_t)0x23adc8c4, - (q31_t)0xae53123, (q31_t)0x23b836ca, (q31_t)0xaec35a0, (q31_t)0x23c2a36f, - (q31_t)0xaf33c28, (q31_t)0x23cd0eb3, (q31_t)0xafa44bc, (q31_t)0x23d77896, - (q31_t)0xb014f5b, (q31_t)0x23e1e117, (q31_t)0xb085c05, (q31_t)0x23ec4837, - (q31_t)0xb0f6aba, (q31_t)0x23f6adf3, (q31_t)0xb167b79, (q31_t)0x2401124d, - (q31_t)0xb1d8e43, (q31_t)0x240b7543, (q31_t)0xb24a316, (q31_t)0x2415d6d5, - (q31_t)0xb2bb9f4, (q31_t)0x24203704, (q31_t)0xb32d2da, (q31_t)0x242a95ce, - (q31_t)0xb39edca, (q31_t)0x2434f332, (q31_t)0xb410ac3, (q31_t)0x243f4f32, - (q31_t)0xb4829c4, (q31_t)0x2449a9cc, (q31_t)0xb4f4acd, (q31_t)0x245402ff, - (q31_t)0xb566ddf, (q31_t)0x245e5acc, (q31_t)0xb5d92f8, (q31_t)0x2468b132, - (q31_t)0xb64ba19, (q31_t)0x24730631, (q31_t)0xb6be341, (q31_t)0x247d59c8, - (q31_t)0xb730e70, (q31_t)0x2487abf7, (q31_t)0xb7a3ba5, (q31_t)0x2491fcbe, - (q31_t)0xb816ae1, (q31_t)0x249c4c1b, (q31_t)0xb889c23, (q31_t)0x24a69a0f, - (q31_t)0xb8fcf6b, (q31_t)0x24b0e699, (q31_t)0xb9704b9, (q31_t)0x24bb31ba, - (q31_t)0xb9e3c0b, (q31_t)0x24c57b6f, (q31_t)0xba57563, (q31_t)0x24cfc3ba, - (q31_t)0xbacb0bf, (q31_t)0x24da0a9a, (q31_t)0xbb3ee20, (q31_t)0x24e4500e, - (q31_t)0xbbb2d85, (q31_t)0x24ee9415, (q31_t)0xbc26eee, (q31_t)0x24f8d6b0, - (q31_t)0xbc9b25a, (q31_t)0x250317df, (q31_t)0xbd0f7ca, (q31_t)0x250d57a0, - (q31_t)0xbd83f3d, (q31_t)0x251795f3, (q31_t)0xbdf88b3, (q31_t)0x2521d2d8, - (q31_t)0xbe6d42b, (q31_t)0x252c0e4f, (q31_t)0xbee21a5, (q31_t)0x25364857, - (q31_t)0xbf57121, (q31_t)0x254080ef, (q31_t)0xbfcc29f, (q31_t)0x254ab818, - (q31_t)0xc04161e, (q31_t)0x2554edd1, (q31_t)0xc0b6b9e, (q31_t)0x255f2219, - (q31_t)0xc12c31f, (q31_t)0x256954f1, (q31_t)0xc1a1ca0, (q31_t)0x25738657, - (q31_t)0xc217822, (q31_t)0x257db64c, (q31_t)0xc28d5a3, (q31_t)0x2587e4cf, - (q31_t)0xc303524, (q31_t)0x259211df, (q31_t)0xc3796a5, (q31_t)0x259c3d7c, - (q31_t)0xc3efa25, (q31_t)0x25a667a7, (q31_t)0xc465fa3, (q31_t)0x25b0905d, - (q31_t)0xc4dc720, (q31_t)0x25bab7a0, (q31_t)0xc55309b, (q31_t)0x25c4dd6e, - (q31_t)0xc5c9c14, (q31_t)0x25cf01c8, (q31_t)0xc64098b, (q31_t)0x25d924ac, - (q31_t)0xc6b78ff, (q31_t)0x25e3461b, (q31_t)0xc72ea70, (q31_t)0x25ed6614, - (q31_t)0xc7a5dde, (q31_t)0x25f78497, (q31_t)0xc81d349, (q31_t)0x2601a1a2, - (q31_t)0xc894aaf, (q31_t)0x260bbd37, (q31_t)0xc90c412, (q31_t)0x2615d754, - (q31_t)0xc983f70, (q31_t)0x261feffa, (q31_t)0xc9fbcca, (q31_t)0x262a0727, - (q31_t)0xca73c1e, (q31_t)0x26341cdb, (q31_t)0xcaebd6e, (q31_t)0x263e3117, - (q31_t)0xcb640b8, (q31_t)0x264843d9, (q31_t)0xcbdc5fc, (q31_t)0x26525521, - (q31_t)0xcc54d3a, (q31_t)0x265c64ef, (q31_t)0xcccd671, (q31_t)0x26667342, - (q31_t)0xcd461a2, (q31_t)0x2670801a, (q31_t)0xcdbeecc, (q31_t)0x267a8b77, - (q31_t)0xce37def, (q31_t)0x26849558, (q31_t)0xceb0f0a, (q31_t)0x268e9dbd, - (q31_t)0xcf2a21d, (q31_t)0x2698a4a6, (q31_t)0xcfa3729, (q31_t)0x26a2aa11, - (q31_t)0xd01ce2b, (q31_t)0x26acadff, (q31_t)0xd096725, (q31_t)0x26b6b070, - (q31_t)0xd110216, (q31_t)0x26c0b162, (q31_t)0xd189efe, (q31_t)0x26cab0d6, - (q31_t)0xd203ddc, (q31_t)0x26d4aecb, (q31_t)0xd27deb0, (q31_t)0x26deab41, - (q31_t)0xd2f817b, (q31_t)0x26e8a637, (q31_t)0xd37263a, (q31_t)0x26f29fad, - (q31_t)0xd3eccef, (q31_t)0x26fc97a3, (q31_t)0xd467599, (q31_t)0x27068e18, - (q31_t)0xd4e2037, (q31_t)0x2710830c, (q31_t)0xd55ccca, (q31_t)0x271a767e, - (q31_t)0xd5d7b50, (q31_t)0x2724686e, (q31_t)0xd652bcb, (q31_t)0x272e58dc, - (q31_t)0xd6cde39, (q31_t)0x273847c8, (q31_t)0xd74929a, (q31_t)0x27423530, - (q31_t)0xd7c48ee, (q31_t)0x274c2115, (q31_t)0xd840134, (q31_t)0x27560b76, - (q31_t)0xd8bbb6d, (q31_t)0x275ff452, (q31_t)0xd937798, (q31_t)0x2769dbaa, - (q31_t)0xd9b35b4, (q31_t)0x2773c17d, (q31_t)0xda2f5c2, (q31_t)0x277da5cb, - (q31_t)0xdaab7c0, (q31_t)0x27878893, (q31_t)0xdb27bb0, (q31_t)0x279169d5, - (q31_t)0xdba4190, (q31_t)0x279b4990, (q31_t)0xdc20960, (q31_t)0x27a527c4, - (q31_t)0xdc9d320, (q31_t)0x27af0472, (q31_t)0xdd19ed0, (q31_t)0x27b8df97, - (q31_t)0xdd96c6f, (q31_t)0x27c2b934, (q31_t)0xde13bfd, (q31_t)0x27cc9149, - (q31_t)0xde90d79, (q31_t)0x27d667d5, (q31_t)0xdf0e0e4, (q31_t)0x27e03cd8, - (q31_t)0xdf8b63d, (q31_t)0x27ea1052, (q31_t)0xe008d84, (q31_t)0x27f3e241, - (q31_t)0xe0866b8, (q31_t)0x27fdb2a7, (q31_t)0xe1041d9, (q31_t)0x28078181, - (q31_t)0xe181ee8, (q31_t)0x28114ed0, (q31_t)0xe1ffde2, (q31_t)0x281b1a94, - (q31_t)0xe27dec9, (q31_t)0x2824e4cc, (q31_t)0xe2fc19c, (q31_t)0x282ead78, - (q31_t)0xe37a65b, (q31_t)0x28387498, (q31_t)0xe3f8d05, (q31_t)0x28423a2a, - (q31_t)0xe47759a, (q31_t)0x284bfe2f, (q31_t)0xe4f6019, (q31_t)0x2855c0a6, - (q31_t)0xe574c84, (q31_t)0x285f8190, (q31_t)0xe5f3ad8, (q31_t)0x286940ea, - (q31_t)0xe672b16, (q31_t)0x2872feb6, (q31_t)0xe6f1d3d, (q31_t)0x287cbaf3, - (q31_t)0xe77114e, (q31_t)0x288675a0, (q31_t)0xe7f0748, (q31_t)0x28902ebd, - (q31_t)0xe86ff2a, (q31_t)0x2899e64a, (q31_t)0xe8ef8f4, (q31_t)0x28a39c46, - (q31_t)0xe96f4a7, (q31_t)0x28ad50b1, (q31_t)0xe9ef241, (q31_t)0x28b7038b, - (q31_t)0xea6f1c2, (q31_t)0x28c0b4d2, (q31_t)0xeaef32b, (q31_t)0x28ca6488, - (q31_t)0xeb6f67a, (q31_t)0x28d412ab, (q31_t)0xebefbb0, (q31_t)0x28ddbf3b, - (q31_t)0xec702cb, (q31_t)0x28e76a37, (q31_t)0xecf0bcd, (q31_t)0x28f113a0, - (q31_t)0xed716b4, (q31_t)0x28fabb75, (q31_t)0xedf2380, (q31_t)0x290461b5, - (q31_t)0xee73231, (q31_t)0x290e0661, (q31_t)0xeef42c7, (q31_t)0x2917a977, - (q31_t)0xef75541, (q31_t)0x29214af8, (q31_t)0xeff699f, (q31_t)0x292aeae3, - (q31_t)0xf077fe1, (q31_t)0x29348937, (q31_t)0xf0f9805, (q31_t)0x293e25f5, - (q31_t)0xf17b20d, (q31_t)0x2947c11c, (q31_t)0xf1fcdf8, (q31_t)0x29515aab, - (q31_t)0xf27ebc5, (q31_t)0x295af2a3, (q31_t)0xf300b74, (q31_t)0x29648902, - (q31_t)0xf382d05, (q31_t)0x296e1dc9, (q31_t)0xf405077, (q31_t)0x2977b0f7, - (q31_t)0xf4875ca, (q31_t)0x2981428c, (q31_t)0xf509cfe, (q31_t)0x298ad287, - (q31_t)0xf58c613, (q31_t)0x299460e8, (q31_t)0xf60f108, (q31_t)0x299dedaf, - (q31_t)0xf691ddd, (q31_t)0x29a778db, (q31_t)0xf714c91, (q31_t)0x29b1026c, - (q31_t)0xf797d24, (q31_t)0x29ba8a61, (q31_t)0xf81af97, (q31_t)0x29c410ba, - (q31_t)0xf89e3e8, (q31_t)0x29cd9578, (q31_t)0xf921a17, (q31_t)0x29d71899, - (q31_t)0xf9a5225, (q31_t)0x29e09a1c, (q31_t)0xfa28c10, (q31_t)0x29ea1a03, - (q31_t)0xfaac7d8, (q31_t)0x29f3984c, (q31_t)0xfb3057d, (q31_t)0x29fd14f6, - (q31_t)0xfbb4500, (q31_t)0x2a069003, (q31_t)0xfc3865e, (q31_t)0x2a100970, - (q31_t)0xfcbc999, (q31_t)0x2a19813f, (q31_t)0xfd40eaf, (q31_t)0x2a22f76e, - (q31_t)0xfdc55a1, (q31_t)0x2a2c6bfd, (q31_t)0xfe49e6d, (q31_t)0x2a35deeb, - (q31_t)0xfece915, (q31_t)0x2a3f503a, (q31_t)0xff53597, (q31_t)0x2a48bfe7, - (q31_t)0xffd83f4, (q31_t)0x2a522df3, (q31_t)0x1005d42a, (q31_t)0x2a5b9a5d, - (q31_t)0x100e2639, (q31_t)0x2a650525, (q31_t)0x10167a22, (q31_t)0x2a6e6e4b, - (q31_t)0x101ecfe4, (q31_t)0x2a77d5ce, (q31_t)0x1027277e, (q31_t)0x2a813bae, - (q31_t)0x102f80f1, (q31_t)0x2a8a9fea, (q31_t)0x1037dc3b, (q31_t)0x2a940283, - (q31_t)0x1040395d, (q31_t)0x2a9d6377, (q31_t)0x10489856, (q31_t)0x2aa6c2c6, - (q31_t)0x1050f926, (q31_t)0x2ab02071, (q31_t)0x10595bcd, (q31_t)0x2ab97c77, - (q31_t)0x1061c04a, (q31_t)0x2ac2d6d6, (q31_t)0x106a269d, (q31_t)0x2acc2f90, - (q31_t)0x10728ec6, (q31_t)0x2ad586a3, (q31_t)0x107af8c4, (q31_t)0x2adedc10, - (q31_t)0x10836497, (q31_t)0x2ae82fd5, (q31_t)0x108bd23f, (q31_t)0x2af181f3, - (q31_t)0x109441bb, (q31_t)0x2afad269, (q31_t)0x109cb30b, (q31_t)0x2b042137, - (q31_t)0x10a5262f, (q31_t)0x2b0d6e5c, (q31_t)0x10ad9b26, (q31_t)0x2b16b9d9, - (q31_t)0x10b611f1, (q31_t)0x2b2003ac, (q31_t)0x10be8a8d, (q31_t)0x2b294bd5, - (q31_t)0x10c704fd, (q31_t)0x2b329255, (q31_t)0x10cf813e, (q31_t)0x2b3bd72a, - (q31_t)0x10d7ff51, (q31_t)0x2b451a55, (q31_t)0x10e07f36, (q31_t)0x2b4e5bd4, - (q31_t)0x10e900ec, (q31_t)0x2b579ba8, (q31_t)0x10f18472, (q31_t)0x2b60d9d0, - (q31_t)0x10fa09c9, (q31_t)0x2b6a164d, (q31_t)0x110290f0, (q31_t)0x2b73511c, - (q31_t)0x110b19e7, (q31_t)0x2b7c8a3f, (q31_t)0x1113a4ad, (q31_t)0x2b85c1b5, - (q31_t)0x111c3142, (q31_t)0x2b8ef77d, (q31_t)0x1124bfa6, (q31_t)0x2b982b97, - (q31_t)0x112d4fd9, (q31_t)0x2ba15e03, (q31_t)0x1135e1d9, (q31_t)0x2baa8ec0, - (q31_t)0x113e75a8, (q31_t)0x2bb3bdce, (q31_t)0x11470b44, (q31_t)0x2bbceb2d, - (q31_t)0x114fa2ad, (q31_t)0x2bc616dd, (q31_t)0x11583be2, (q31_t)0x2bcf40dc, - (q31_t)0x1160d6e5, (q31_t)0x2bd8692b, (q31_t)0x116973b3, (q31_t)0x2be18fc9, - (q31_t)0x1172124d, (q31_t)0x2beab4b6, (q31_t)0x117ab2b3, (q31_t)0x2bf3d7f2, - (q31_t)0x118354e4, (q31_t)0x2bfcf97c, (q31_t)0x118bf8e0, (q31_t)0x2c061953, - (q31_t)0x11949ea6, (q31_t)0x2c0f3779, (q31_t)0x119d4636, (q31_t)0x2c1853eb, - (q31_t)0x11a5ef90, (q31_t)0x2c216eaa, (q31_t)0x11ae9ab4, (q31_t)0x2c2a87b6, - (q31_t)0x11b747a0, (q31_t)0x2c339f0e, (q31_t)0x11bff656, (q31_t)0x2c3cb4b1, - (q31_t)0x11c8a6d4, (q31_t)0x2c45c8a0, (q31_t)0x11d1591a, (q31_t)0x2c4edada, - (q31_t)0x11da0d28, (q31_t)0x2c57eb5e, (q31_t)0x11e2c2fd, (q31_t)0x2c60fa2d, - (q31_t)0x11eb7a9a, (q31_t)0x2c6a0746, (q31_t)0x11f433fd, (q31_t)0x2c7312a9, - (q31_t)0x11fcef27, (q31_t)0x2c7c1c55, (q31_t)0x1205ac17, (q31_t)0x2c85244a, - (q31_t)0x120e6acc, (q31_t)0x2c8e2a87, (q31_t)0x12172b48, (q31_t)0x2c972f0d, - (q31_t)0x121fed88, (q31_t)0x2ca031da, (q31_t)0x1228b18d, (q31_t)0x2ca932ef, - (q31_t)0x12317756, (q31_t)0x2cb2324c, (q31_t)0x123a3ee4, (q31_t)0x2cbb2fef, - (q31_t)0x12430835, (q31_t)0x2cc42bd9, (q31_t)0x124bd34a, (q31_t)0x2ccd2609, - (q31_t)0x1254a021, (q31_t)0x2cd61e7f, (q31_t)0x125d6ebc, (q31_t)0x2cdf153a, - (q31_t)0x12663f19, (q31_t)0x2ce80a3a, (q31_t)0x126f1138, (q31_t)0x2cf0fd80, - (q31_t)0x1277e518, (q31_t)0x2cf9ef09, (q31_t)0x1280babb, (q31_t)0x2d02ded7, - (q31_t)0x1289921e, (q31_t)0x2d0bcce8, (q31_t)0x12926b41, (q31_t)0x2d14b93d, - (q31_t)0x129b4626, (q31_t)0x2d1da3d5, (q31_t)0x12a422ca, (q31_t)0x2d268cb0, - (q31_t)0x12ad012e, (q31_t)0x2d2f73cd, (q31_t)0x12b5e151, (q31_t)0x2d38592c, - (q31_t)0x12bec333, (q31_t)0x2d413ccd, (q31_t)0x12c7a6d4, (q31_t)0x2d4a1eaf, - (q31_t)0x12d08c33, (q31_t)0x2d52fed2, (q31_t)0x12d97350, (q31_t)0x2d5bdd36, - (q31_t)0x12e25c2b, (q31_t)0x2d64b9da, (q31_t)0x12eb46c3, (q31_t)0x2d6d94bf, - (q31_t)0x12f43318, (q31_t)0x2d766de2, (q31_t)0x12fd2129, (q31_t)0x2d7f4545, - (q31_t)0x130610f7, (q31_t)0x2d881ae8, (q31_t)0x130f0280, (q31_t)0x2d90eec8, - (q31_t)0x1317f5c6, (q31_t)0x2d99c0e7, (q31_t)0x1320eac6, (q31_t)0x2da29144, - (q31_t)0x1329e181, (q31_t)0x2dab5fdf, (q31_t)0x1332d9f7, (q31_t)0x2db42cb6, - (q31_t)0x133bd427, (q31_t)0x2dbcf7cb, (q31_t)0x1344d011, (q31_t)0x2dc5c11c, - (q31_t)0x134dcdb4, (q31_t)0x2dce88aa, (q31_t)0x1356cd11, (q31_t)0x2dd74e73, - (q31_t)0x135fce26, (q31_t)0x2de01278, (q31_t)0x1368d0f3, (q31_t)0x2de8d4b8, - (q31_t)0x1371d579, (q31_t)0x2df19534, (q31_t)0x137adbb6, (q31_t)0x2dfa53e9, - (q31_t)0x1383e3ab, (q31_t)0x2e0310d9, (q31_t)0x138ced57, (q31_t)0x2e0bcc03, - (q31_t)0x1395f8ba, (q31_t)0x2e148566, (q31_t)0x139f05d3, (q31_t)0x2e1d3d03, - (q31_t)0x13a814a2, (q31_t)0x2e25f2d8, (q31_t)0x13b12526, (q31_t)0x2e2ea6e6, - (q31_t)0x13ba3760, (q31_t)0x2e37592c, (q31_t)0x13c34b4f, (q31_t)0x2e4009aa, - (q31_t)0x13cc60f2, (q31_t)0x2e48b860, (q31_t)0x13d5784a, (q31_t)0x2e51654c, - (q31_t)0x13de9156, (q31_t)0x2e5a1070, (q31_t)0x13e7ac15, (q31_t)0x2e62b9ca, - (q31_t)0x13f0c887, (q31_t)0x2e6b615a, (q31_t)0x13f9e6ad, (q31_t)0x2e740720, - (q31_t)0x14030684, (q31_t)0x2e7cab1c, (q31_t)0x140c280e, (q31_t)0x2e854d4d, - (q31_t)0x14154b4a, (q31_t)0x2e8dedb3, (q31_t)0x141e7037, (q31_t)0x2e968c4d, - (q31_t)0x142796d5, (q31_t)0x2e9f291b, (q31_t)0x1430bf24, (q31_t)0x2ea7c41e, - (q31_t)0x1439e923, (q31_t)0x2eb05d53, (q31_t)0x144314d3, (q31_t)0x2eb8f4bc, - (q31_t)0x144c4232, (q31_t)0x2ec18a58, (q31_t)0x14557140, (q31_t)0x2eca1e27, - (q31_t)0x145ea1fd, (q31_t)0x2ed2b027, (q31_t)0x1467d469, (q31_t)0x2edb405a, - (q31_t)0x14710883, (q31_t)0x2ee3cebe, (q31_t)0x147a3e4b, (q31_t)0x2eec5b53, - (q31_t)0x148375c1, (q31_t)0x2ef4e619, (q31_t)0x148caee4, (q31_t)0x2efd6f10, - (q31_t)0x1495e9b3, (q31_t)0x2f05f637, (q31_t)0x149f2630, (q31_t)0x2f0e7b8e, - (q31_t)0x14a86458, (q31_t)0x2f16ff14, (q31_t)0x14b1a42c, (q31_t)0x2f1f80ca, - (q31_t)0x14bae5ab, (q31_t)0x2f2800af, (q31_t)0x14c428d6, (q31_t)0x2f307ec2, - (q31_t)0x14cd6dab, (q31_t)0x2f38fb03, (q31_t)0x14d6b42b, (q31_t)0x2f417573, - (q31_t)0x14dffc54, (q31_t)0x2f49ee0f, (q31_t)0x14e94627, (q31_t)0x2f5264da, - (q31_t)0x14f291a4, (q31_t)0x2f5ad9d1, (q31_t)0x14fbdec9, (q31_t)0x2f634cf5, - (q31_t)0x15052d97, (q31_t)0x2f6bbe45, (q31_t)0x150e7e0d, (q31_t)0x2f742dc1, - (q31_t)0x1517d02b, (q31_t)0x2f7c9b69, (q31_t)0x152123f0, (q31_t)0x2f85073c, - (q31_t)0x152a795d, (q31_t)0x2f8d713a, (q31_t)0x1533d070, (q31_t)0x2f95d963, - (q31_t)0x153d292a, (q31_t)0x2f9e3fb6, (q31_t)0x15468389, (q31_t)0x2fa6a433, - (q31_t)0x154fdf8f, (q31_t)0x2faf06da, (q31_t)0x15593d3a, (q31_t)0x2fb767aa, - (q31_t)0x15629c89, (q31_t)0x2fbfc6a3, (q31_t)0x156bfd7d, (q31_t)0x2fc823c5, - (q31_t)0x15756016, (q31_t)0x2fd07f0f, (q31_t)0x157ec452, (q31_t)0x2fd8d882, - (q31_t)0x15882a32, (q31_t)0x2fe1301c, (q31_t)0x159191b5, (q31_t)0x2fe985de, - (q31_t)0x159afadb, (q31_t)0x2ff1d9c7, (q31_t)0x15a465a3, (q31_t)0x2ffa2bd6, - (q31_t)0x15add20d, (q31_t)0x30027c0c, (q31_t)0x15b74019, (q31_t)0x300aca69, - (q31_t)0x15c0afc6, (q31_t)0x301316eb, (q31_t)0x15ca2115, (q31_t)0x301b6193, - (q31_t)0x15d39403, (q31_t)0x3023aa5f, (q31_t)0x15dd0892, (q31_t)0x302bf151, - (q31_t)0x15e67ec1, (q31_t)0x30343667, (q31_t)0x15eff690, (q31_t)0x303c79a2, - (q31_t)0x15f96ffd, (q31_t)0x3044bb00, (q31_t)0x1602eb0a, (q31_t)0x304cfa83, - (q31_t)0x160c67b4, (q31_t)0x30553828, (q31_t)0x1615e5fd, (q31_t)0x305d73f0, - (q31_t)0x161f65e4, (q31_t)0x3065addb, (q31_t)0x1628e767, (q31_t)0x306de5e9, - (q31_t)0x16326a88, (q31_t)0x30761c18, (q31_t)0x163bef46, (q31_t)0x307e5069, - (q31_t)0x1645759f, (q31_t)0x308682dc, (q31_t)0x164efd94, (q31_t)0x308eb36f, - (q31_t)0x16588725, (q31_t)0x3096e223, (q31_t)0x16621251, (q31_t)0x309f0ef8, - (q31_t)0x166b9f18, (q31_t)0x30a739ed, (q31_t)0x16752d79, (q31_t)0x30af6302, - (q31_t)0x167ebd74, (q31_t)0x30b78a36, (q31_t)0x16884f09, (q31_t)0x30bfaf89, - (q31_t)0x1691e237, (q31_t)0x30c7d2fb, (q31_t)0x169b76fe, (q31_t)0x30cff48c, - (q31_t)0x16a50d5d, (q31_t)0x30d8143b, (q31_t)0x16aea555, (q31_t)0x30e03208, - (q31_t)0x16b83ee4, (q31_t)0x30e84df3, (q31_t)0x16c1da0b, (q31_t)0x30f067fb, - (q31_t)0x16cb76c9, (q31_t)0x30f8801f, (q31_t)0x16d5151d, (q31_t)0x31009661, - (q31_t)0x16deb508, (q31_t)0x3108aabf, (q31_t)0x16e85689, (q31_t)0x3110bd39, - (q31_t)0x16f1f99f, (q31_t)0x3118cdcf, (q31_t)0x16fb9e4b, (q31_t)0x3120dc80, - (q31_t)0x1705448b, (q31_t)0x3128e94c, (q31_t)0x170eec60, (q31_t)0x3130f433, - (q31_t)0x171895c9, (q31_t)0x3138fd35, (q31_t)0x172240c5, (q31_t)0x31410450, - (q31_t)0x172bed55, (q31_t)0x31490986, (q31_t)0x17359b78, (q31_t)0x31510cd5, - (q31_t)0x173f4b2e, (q31_t)0x31590e3e, (q31_t)0x1748fc75, (q31_t)0x31610dbf, - (q31_t)0x1752af4f, (q31_t)0x31690b59, (q31_t)0x175c63ba, (q31_t)0x3171070c, - (q31_t)0x176619b6, (q31_t)0x317900d6, (q31_t)0x176fd143, (q31_t)0x3180f8b8, - (q31_t)0x17798a60, (q31_t)0x3188eeb2, (q31_t)0x1783450d, (q31_t)0x3190e2c3, - (q31_t)0x178d014a, (q31_t)0x3198d4ea, (q31_t)0x1796bf16, (q31_t)0x31a0c528, - (q31_t)0x17a07e70, (q31_t)0x31a8b37c, (q31_t)0x17aa3f5a, (q31_t)0x31b09fe7, - (q31_t)0x17b401d1, (q31_t)0x31b88a66, (q31_t)0x17bdc5d6, (q31_t)0x31c072fb, - (q31_t)0x17c78b68, (q31_t)0x31c859a5, (q31_t)0x17d15288, (q31_t)0x31d03e64, - (q31_t)0x17db1b34, (q31_t)0x31d82137, (q31_t)0x17e4e56c, (q31_t)0x31e0021e, - (q31_t)0x17eeb130, (q31_t)0x31e7e118, (q31_t)0x17f87e7f, (q31_t)0x31efbe27, - (q31_t)0x18024d59, (q31_t)0x31f79948, (q31_t)0x180c1dbf, (q31_t)0x31ff727c, - (q31_t)0x1815efae, (q31_t)0x320749c3, (q31_t)0x181fc328, (q31_t)0x320f1f1c, - (q31_t)0x1829982b, (q31_t)0x3216f287, (q31_t)0x18336eb7, (q31_t)0x321ec403, - (q31_t)0x183d46cc, (q31_t)0x32269391, (q31_t)0x18472069, (q31_t)0x322e6130, - (q31_t)0x1850fb8e, (q31_t)0x32362ce0, (q31_t)0x185ad83c, (q31_t)0x323df6a0, - (q31_t)0x1864b670, (q31_t)0x3245be70, (q31_t)0x186e962b, (q31_t)0x324d8450, - (q31_t)0x1878776d, (q31_t)0x32554840, (q31_t)0x18825a35, (q31_t)0x325d0a3e, - (q31_t)0x188c3e83, (q31_t)0x3264ca4c, (q31_t)0x18962456, (q31_t)0x326c8868, - (q31_t)0x18a00bae, (q31_t)0x32744493, (q31_t)0x18a9f48a, (q31_t)0x327bfecc, - (q31_t)0x18b3deeb, (q31_t)0x3283b712, (q31_t)0x18bdcad0, (q31_t)0x328b6d66, - (q31_t)0x18c7b838, (q31_t)0x329321c7, (q31_t)0x18d1a724, (q31_t)0x329ad435, - (q31_t)0x18db9792, (q31_t)0x32a284b0, (q31_t)0x18e58982, (q31_t)0x32aa3336, - (q31_t)0x18ef7cf4, (q31_t)0x32b1dfc9, (q31_t)0x18f971e8, (q31_t)0x32b98a67, - (q31_t)0x1903685d, (q31_t)0x32c13311, (q31_t)0x190d6053, (q31_t)0x32c8d9c6, - (q31_t)0x191759c9, (q31_t)0x32d07e85, (q31_t)0x192154bf, (q31_t)0x32d82150, - (q31_t)0x192b5135, (q31_t)0x32dfc224, (q31_t)0x19354f2a, (q31_t)0x32e76102, - (q31_t)0x193f4e9e, (q31_t)0x32eefdea, (q31_t)0x19494f90, (q31_t)0x32f698db, - (q31_t)0x19535201, (q31_t)0x32fe31d5, (q31_t)0x195d55ef, (q31_t)0x3305c8d7, - (q31_t)0x19675b5a, (q31_t)0x330d5de3, (q31_t)0x19716243, (q31_t)0x3314f0f6, - (q31_t)0x197b6aa8, (q31_t)0x331c8211, (q31_t)0x19857489, (q31_t)0x33241134, - (q31_t)0x198f7fe6, (q31_t)0x332b9e5e, (q31_t)0x19998cbe, (q31_t)0x3333298f, - (q31_t)0x19a39b11, (q31_t)0x333ab2c6, (q31_t)0x19adaadf, (q31_t)0x33423a04, - (q31_t)0x19b7bc27, (q31_t)0x3349bf48, (q31_t)0x19c1cee9, (q31_t)0x33514292, - (q31_t)0x19cbe325, (q31_t)0x3358c3e2, (q31_t)0x19d5f8d9, (q31_t)0x33604336, - (q31_t)0x19e01006, (q31_t)0x3367c090, (q31_t)0x19ea28ac, (q31_t)0x336f3bee, - (q31_t)0x19f442c9, (q31_t)0x3376b551, (q31_t)0x19fe5e5e, (q31_t)0x337e2cb7, - (q31_t)0x1a087b69, (q31_t)0x3385a222, (q31_t)0x1a1299ec, (q31_t)0x338d1590, - (q31_t)0x1a1cb9e5, (q31_t)0x33948701, (q31_t)0x1a26db54, (q31_t)0x339bf675, - (q31_t)0x1a30fe38, (q31_t)0x33a363ec, (q31_t)0x1a3b2292, (q31_t)0x33aacf65, - (q31_t)0x1a454860, (q31_t)0x33b238e0, (q31_t)0x1a4f6fa3, (q31_t)0x33b9a05d, - (q31_t)0x1a599859, (q31_t)0x33c105db, (q31_t)0x1a63c284, (q31_t)0x33c8695b, - (q31_t)0x1a6dee21, (q31_t)0x33cfcadc, (q31_t)0x1a781b31, (q31_t)0x33d72a5d, - (q31_t)0x1a8249b4, (q31_t)0x33de87de, (q31_t)0x1a8c79a9, (q31_t)0x33e5e360, - (q31_t)0x1a96ab0f, (q31_t)0x33ed3ce1, (q31_t)0x1aa0dde7, (q31_t)0x33f49462, - (q31_t)0x1aab122f, (q31_t)0x33fbe9e2, (q31_t)0x1ab547e8, (q31_t)0x34033d61, - (q31_t)0x1abf7f11, (q31_t)0x340a8edf, (q31_t)0x1ac9b7a9, (q31_t)0x3411de5b, - (q31_t)0x1ad3f1b1, (q31_t)0x34192bd5, (q31_t)0x1ade2d28, (q31_t)0x3420774d, - (q31_t)0x1ae86a0d, (q31_t)0x3427c0c3, (q31_t)0x1af2a860, (q31_t)0x342f0836, - (q31_t)0x1afce821, (q31_t)0x34364da6, (q31_t)0x1b072950, (q31_t)0x343d9112, - (q31_t)0x1b116beb, (q31_t)0x3444d27b, (q31_t)0x1b1baff2, (q31_t)0x344c11e0, - (q31_t)0x1b25f566, (q31_t)0x34534f41, (q31_t)0x1b303c46, (q31_t)0x345a8a9d, - (q31_t)0x1b3a8491, (q31_t)0x3461c3f5, (q31_t)0x1b44ce46, (q31_t)0x3468fb47, - (q31_t)0x1b4f1967, (q31_t)0x34703095, (q31_t)0x1b5965f1, (q31_t)0x347763dd, - (q31_t)0x1b63b3e5, (q31_t)0x347e951f, (q31_t)0x1b6e0342, (q31_t)0x3485c45b, - (q31_t)0x1b785409, (q31_t)0x348cf190, (q31_t)0x1b82a638, (q31_t)0x34941cbf, - (q31_t)0x1b8cf9cf, (q31_t)0x349b45e7, (q31_t)0x1b974ece, (q31_t)0x34a26d08, - (q31_t)0x1ba1a534, (q31_t)0x34a99221, (q31_t)0x1babfd01, (q31_t)0x34b0b533, - (q31_t)0x1bb65634, (q31_t)0x34b7d63c, (q31_t)0x1bc0b0ce, (q31_t)0x34bef53d, - (q31_t)0x1bcb0cce, (q31_t)0x34c61236, (q31_t)0x1bd56a32, (q31_t)0x34cd2d26, - (q31_t)0x1bdfc8fc, (q31_t)0x34d4460c, (q31_t)0x1bea292b, (q31_t)0x34db5cea, - (q31_t)0x1bf48abd, (q31_t)0x34e271bd, (q31_t)0x1bfeedb3, (q31_t)0x34e98487, - (q31_t)0x1c09520d, (q31_t)0x34f09546, (q31_t)0x1c13b7c9, (q31_t)0x34f7a3fb, - (q31_t)0x1c1e1ee9, (q31_t)0x34feb0a5, (q31_t)0x1c28876a, (q31_t)0x3505bb44, - (q31_t)0x1c32f14d, (q31_t)0x350cc3d8, (q31_t)0x1c3d5c91, (q31_t)0x3513ca60, - (q31_t)0x1c47c936, (q31_t)0x351acedd, (q31_t)0x1c52373c, (q31_t)0x3521d14d, - (q31_t)0x1c5ca6a2, (q31_t)0x3528d1b1, (q31_t)0x1c671768, (q31_t)0x352fd008, - (q31_t)0x1c71898d, (q31_t)0x3536cc52, (q31_t)0x1c7bfd11, (q31_t)0x353dc68f, - (q31_t)0x1c8671f3, (q31_t)0x3544bebf, (q31_t)0x1c90e834, (q31_t)0x354bb4e1, - (q31_t)0x1c9b5fd2, (q31_t)0x3552a8f4, (q31_t)0x1ca5d8cd, (q31_t)0x35599afa, - (q31_t)0x1cb05326, (q31_t)0x35608af1, (q31_t)0x1cbacedb, (q31_t)0x356778d9, - (q31_t)0x1cc54bec, (q31_t)0x356e64b2, (q31_t)0x1ccfca59, (q31_t)0x35754e7c, - (q31_t)0x1cda4a21, (q31_t)0x357c3636, (q31_t)0x1ce4cb44, (q31_t)0x35831be0, - (q31_t)0x1cef4dc2, (q31_t)0x3589ff7a, (q31_t)0x1cf9d199, (q31_t)0x3590e104, - (q31_t)0x1d0456ca, (q31_t)0x3597c07d, (q31_t)0x1d0edd55, (q31_t)0x359e9de5, - (q31_t)0x1d196538, (q31_t)0x35a5793c, (q31_t)0x1d23ee74, (q31_t)0x35ac5282, - (q31_t)0x1d2e7908, (q31_t)0x35b329b5, (q31_t)0x1d3904f4, (q31_t)0x35b9fed7, - (q31_t)0x1d439236, (q31_t)0x35c0d1e7, (q31_t)0x1d4e20d0, (q31_t)0x35c7a2e3, - (q31_t)0x1d58b0c0, (q31_t)0x35ce71ce, (q31_t)0x1d634206, (q31_t)0x35d53ea5, - (q31_t)0x1d6dd4a2, (q31_t)0x35dc0968, (q31_t)0x1d786892, (q31_t)0x35e2d219, - (q31_t)0x1d82fdd8, (q31_t)0x35e998b5, (q31_t)0x1d8d9472, (q31_t)0x35f05d3d, - (q31_t)0x1d982c60, (q31_t)0x35f71fb1, (q31_t)0x1da2c5a2, (q31_t)0x35fde011, - (q31_t)0x1dad6036, (q31_t)0x36049e5b, (q31_t)0x1db7fc1e, (q31_t)0x360b5a90, - (q31_t)0x1dc29958, (q31_t)0x361214b0, (q31_t)0x1dcd37e4, (q31_t)0x3618ccba, - (q31_t)0x1dd7d7c1, (q31_t)0x361f82af, (q31_t)0x1de278ef, (q31_t)0x3626368d, - (q31_t)0x1ded1b6e, (q31_t)0x362ce855, (q31_t)0x1df7bf3e, (q31_t)0x36339806, - (q31_t)0x1e02645d, (q31_t)0x363a45a0, (q31_t)0x1e0d0acc, (q31_t)0x3640f123, - (q31_t)0x1e17b28a, (q31_t)0x36479a8e, (q31_t)0x1e225b96, (q31_t)0x364e41e2, - (q31_t)0x1e2d05f1, (q31_t)0x3654e71d, (q31_t)0x1e37b199, (q31_t)0x365b8a41, - (q31_t)0x1e425e8f, (q31_t)0x36622b4c, (q31_t)0x1e4d0cd2, (q31_t)0x3668ca3e, - (q31_t)0x1e57bc62, (q31_t)0x366f6717, (q31_t)0x1e626d3e, (q31_t)0x367601d7, - (q31_t)0x1e6d1f65, (q31_t)0x367c9a7e, (q31_t)0x1e77d2d8, (q31_t)0x3683310b, - (q31_t)0x1e828796, (q31_t)0x3689c57d, (q31_t)0x1e8d3d9e, (q31_t)0x369057d6, - (q31_t)0x1e97f4f1, (q31_t)0x3696e814, (q31_t)0x1ea2ad8d, (q31_t)0x369d7637, - (q31_t)0x1ead6773, (q31_t)0x36a4023f, (q31_t)0x1eb822a1, (q31_t)0x36aa8c2c, - (q31_t)0x1ec2df18, (q31_t)0x36b113fd, (q31_t)0x1ecd9cd7, (q31_t)0x36b799b3, - (q31_t)0x1ed85bdd, (q31_t)0x36be1d4c, (q31_t)0x1ee31c2b, (q31_t)0x36c49ec9, - (q31_t)0x1eedddc0, (q31_t)0x36cb1e2a, (q31_t)0x1ef8a09b, (q31_t)0x36d19b6e, - (q31_t)0x1f0364bc, (q31_t)0x36d81695, (q31_t)0x1f0e2a22, (q31_t)0x36de8f9e, - (q31_t)0x1f18f0ce, (q31_t)0x36e5068a, (q31_t)0x1f23b8be, (q31_t)0x36eb7b58, - (q31_t)0x1f2e81f3, (q31_t)0x36f1ee09, (q31_t)0x1f394c6b, (q31_t)0x36f85e9a, - (q31_t)0x1f441828, (q31_t)0x36fecd0e, (q31_t)0x1f4ee527, (q31_t)0x37053962, - (q31_t)0x1f59b369, (q31_t)0x370ba398, (q31_t)0x1f6482ed, (q31_t)0x37120bae, - (q31_t)0x1f6f53b3, (q31_t)0x371871a5, (q31_t)0x1f7a25ba, (q31_t)0x371ed57c, - (q31_t)0x1f84f902, (q31_t)0x37253733, (q31_t)0x1f8fcd8b, (q31_t)0x372b96ca, - (q31_t)0x1f9aa354, (q31_t)0x3731f440, (q31_t)0x1fa57a5d, (q31_t)0x37384f95, - (q31_t)0x1fb052a5, (q31_t)0x373ea8ca, (q31_t)0x1fbb2c2c, (q31_t)0x3744ffdd, - (q31_t)0x1fc606f1, (q31_t)0x374b54ce, (q31_t)0x1fd0e2f5, (q31_t)0x3751a79e, - (q31_t)0x1fdbc036, (q31_t)0x3757f84c, (q31_t)0x1fe69eb4, (q31_t)0x375e46d8, - (q31_t)0x1ff17e70, (q31_t)0x37649341, (q31_t)0x1ffc5f67, (q31_t)0x376add88, - (q31_t)0x2007419b, (q31_t)0x377125ac, (q31_t)0x2012250a, (q31_t)0x37776bac, - (q31_t)0x201d09b4, (q31_t)0x377daf89, (q31_t)0x2027ef99, (q31_t)0x3783f143, - (q31_t)0x2032d6b8, (q31_t)0x378a30d8, (q31_t)0x203dbf11, (q31_t)0x37906e49, - (q31_t)0x2048a8a4, (q31_t)0x3796a996, (q31_t)0x2053936f, (q31_t)0x379ce2be, - (q31_t)0x205e7f74, (q31_t)0x37a319c2, (q31_t)0x20696cb0, (q31_t)0x37a94ea0, - (q31_t)0x20745b24, (q31_t)0x37af8159, (q31_t)0x207f4acf, (q31_t)0x37b5b1ec, - (q31_t)0x208a3bb2, (q31_t)0x37bbe05a, (q31_t)0x20952dcb, (q31_t)0x37c20ca1, - (q31_t)0x20a0211a, (q31_t)0x37c836c2, (q31_t)0x20ab159e, (q31_t)0x37ce5ebd, - (q31_t)0x20b60b58, (q31_t)0x37d48490, (q31_t)0x20c10247, (q31_t)0x37daa83d, - (q31_t)0x20cbfa6a, (q31_t)0x37e0c9c3, (q31_t)0x20d6f3c1, (q31_t)0x37e6e921, - (q31_t)0x20e1ee4b, (q31_t)0x37ed0657, (q31_t)0x20ecea09, (q31_t)0x37f32165, - (q31_t)0x20f7e6f9, (q31_t)0x37f93a4b, (q31_t)0x2102e51c, (q31_t)0x37ff5109, - (q31_t)0x210de470, (q31_t)0x3805659e, (q31_t)0x2118e4f6, (q31_t)0x380b780a, - (q31_t)0x2123e6ad, (q31_t)0x3811884d, (q31_t)0x212ee995, (q31_t)0x38179666, - (q31_t)0x2139edac, (q31_t)0x381da256, (q31_t)0x2144f2f3, (q31_t)0x3823ac1d, - (q31_t)0x214ff96a, (q31_t)0x3829b3b9, (q31_t)0x215b0110, (q31_t)0x382fb92a, - (q31_t)0x216609e3, (q31_t)0x3835bc71, (q31_t)0x217113e5, (q31_t)0x383bbd8e, - (q31_t)0x217c1f15, (q31_t)0x3841bc7f, (q31_t)0x21872b72, (q31_t)0x3847b946, - (q31_t)0x219238fb, (q31_t)0x384db3e0, (q31_t)0x219d47b1, (q31_t)0x3853ac4f, - (q31_t)0x21a85793, (q31_t)0x3859a292, (q31_t)0x21b368a0, (q31_t)0x385f96a9, - (q31_t)0x21be7ad8, (q31_t)0x38658894, (q31_t)0x21c98e3b, (q31_t)0x386b7852, - (q31_t)0x21d4a2c8, (q31_t)0x387165e3, (q31_t)0x21dfb87f, (q31_t)0x38775147, - (q31_t)0x21eacf5f, (q31_t)0x387d3a7e, (q31_t)0x21f5e768, (q31_t)0x38832187, - (q31_t)0x22010099, (q31_t)0x38890663, (q31_t)0x220c1af3, (q31_t)0x388ee910, - (q31_t)0x22173674, (q31_t)0x3894c98f, (q31_t)0x2222531c, (q31_t)0x389aa7e0, - (q31_t)0x222d70eb, (q31_t)0x38a08402, (q31_t)0x22388fe1, (q31_t)0x38a65df6, - (q31_t)0x2243affc, (q31_t)0x38ac35ba, (q31_t)0x224ed13d, (q31_t)0x38b20b4f, - (q31_t)0x2259f3a3, (q31_t)0x38b7deb4, (q31_t)0x2265172e, (q31_t)0x38bdafea, - (q31_t)0x22703bdc, (q31_t)0x38c37eef, (q31_t)0x227b61af, (q31_t)0x38c94bc4, - (q31_t)0x228688a4, (q31_t)0x38cf1669, (q31_t)0x2291b0bd, (q31_t)0x38d4dedd, - (q31_t)0x229cd9f8, (q31_t)0x38daa520, (q31_t)0x22a80456, (q31_t)0x38e06932, - (q31_t)0x22b32fd4, (q31_t)0x38e62b13, (q31_t)0x22be5c74, (q31_t)0x38ebeac2, - (q31_t)0x22c98a35, (q31_t)0x38f1a840, (q31_t)0x22d4b916, (q31_t)0x38f7638b, - (q31_t)0x22dfe917, (q31_t)0x38fd1ca4, (q31_t)0x22eb1a37, (q31_t)0x3902d38b, - (q31_t)0x22f64c77, (q31_t)0x3908883f, (q31_t)0x23017fd5, (q31_t)0x390e3ac0, - (q31_t)0x230cb451, (q31_t)0x3913eb0e, (q31_t)0x2317e9eb, (q31_t)0x39199929, - (q31_t)0x232320a2, (q31_t)0x391f4510, (q31_t)0x232e5876, (q31_t)0x3924eec3, - (q31_t)0x23399167, (q31_t)0x392a9642, (q31_t)0x2344cb73, (q31_t)0x39303b8e, - (q31_t)0x2350069b, (q31_t)0x3935dea4, (q31_t)0x235b42df, (q31_t)0x393b7f86, - (q31_t)0x2366803c, (q31_t)0x39411e33, (q31_t)0x2371beb5, (q31_t)0x3946baac, - (q31_t)0x237cfe47, (q31_t)0x394c54ee, (q31_t)0x23883ef2, (q31_t)0x3951ecfc, - (q31_t)0x239380b6, (q31_t)0x395782d3, (q31_t)0x239ec393, (q31_t)0x395d1675, - (q31_t)0x23aa0788, (q31_t)0x3962a7e0, (q31_t)0x23b54c95, (q31_t)0x39683715, - (q31_t)0x23c092b9, (q31_t)0x396dc414, (q31_t)0x23cbd9f4, (q31_t)0x39734edc, - (q31_t)0x23d72245, (q31_t)0x3978d76c, (q31_t)0x23e26bac, (q31_t)0x397e5dc6, - (q31_t)0x23edb628, (q31_t)0x3983e1e8, (q31_t)0x23f901ba, (q31_t)0x398963d2, - (q31_t)0x24044e60, (q31_t)0x398ee385, (q31_t)0x240f9c1a, (q31_t)0x399460ff, - (q31_t)0x241aeae8, (q31_t)0x3999dc42, (q31_t)0x24263ac9, (q31_t)0x399f554b, - (q31_t)0x24318bbe, (q31_t)0x39a4cc1c, (q31_t)0x243cddc4, (q31_t)0x39aa40b4, - (q31_t)0x244830dd, (q31_t)0x39afb313, (q31_t)0x24538507, (q31_t)0x39b52339, - (q31_t)0x245eda43, (q31_t)0x39ba9125, (q31_t)0x246a308f, (q31_t)0x39bffcd7, - (q31_t)0x247587eb, (q31_t)0x39c5664f, (q31_t)0x2480e057, (q31_t)0x39cacd8d, - (q31_t)0x248c39d3, (q31_t)0x39d03291, (q31_t)0x2497945d, (q31_t)0x39d5955a, - (q31_t)0x24a2eff6, (q31_t)0x39daf5e8, (q31_t)0x24ae4c9d, (q31_t)0x39e0543c, - (q31_t)0x24b9aa52, (q31_t)0x39e5b054, (q31_t)0x24c50914, (q31_t)0x39eb0a31, - (q31_t)0x24d068e2, (q31_t)0x39f061d2, (q31_t)0x24dbc9bd, (q31_t)0x39f5b737, - (q31_t)0x24e72ba4, (q31_t)0x39fb0a60, (q31_t)0x24f28e96, (q31_t)0x3a005b4d, - (q31_t)0x24fdf294, (q31_t)0x3a05a9fd, (q31_t)0x2509579b, (q31_t)0x3a0af671, - (q31_t)0x2514bdad, (q31_t)0x3a1040a8, (q31_t)0x252024c9, (q31_t)0x3a1588a2, - (q31_t)0x252b8cee, (q31_t)0x3a1ace5f, (q31_t)0x2536f61b, (q31_t)0x3a2011de, - (q31_t)0x25426051, (q31_t)0x3a25531f, (q31_t)0x254dcb8f, (q31_t)0x3a2a9223, - (q31_t)0x255937d5, (q31_t)0x3a2fcee8, (q31_t)0x2564a521, (q31_t)0x3a350970, - (q31_t)0x25701374, (q31_t)0x3a3a41b9, (q31_t)0x257b82cd, (q31_t)0x3a3f77c3, - (q31_t)0x2586f32c, (q31_t)0x3a44ab8e, (q31_t)0x25926490, (q31_t)0x3a49dd1a, - (q31_t)0x259dd6f9, (q31_t)0x3a4f0c67, (q31_t)0x25a94a67, (q31_t)0x3a543974, - (q31_t)0x25b4bed8, (q31_t)0x3a596442, (q31_t)0x25c0344d, (q31_t)0x3a5e8cd0, - (q31_t)0x25cbaac5, (q31_t)0x3a63b31d, (q31_t)0x25d72240, (q31_t)0x3a68d72b, - (q31_t)0x25e29abc, (q31_t)0x3a6df8f8, (q31_t)0x25ee143b, (q31_t)0x3a731884, - (q31_t)0x25f98ebb, (q31_t)0x3a7835cf, (q31_t)0x26050a3b, (q31_t)0x3a7d50da, - (q31_t)0x261086bc, (q31_t)0x3a8269a3, (q31_t)0x261c043d, (q31_t)0x3a87802a, - (q31_t)0x262782be, (q31_t)0x3a8c9470, (q31_t)0x2633023e, (q31_t)0x3a91a674, - (q31_t)0x263e82bc, (q31_t)0x3a96b636, (q31_t)0x264a0438, (q31_t)0x3a9bc3b6, - (q31_t)0x265586b3, (q31_t)0x3aa0cef3, (q31_t)0x26610a2a, (q31_t)0x3aa5d7ee, - (q31_t)0x266c8e9f, (q31_t)0x3aaadea6, (q31_t)0x26781410, (q31_t)0x3aafe31b, - (q31_t)0x26839a7c, (q31_t)0x3ab4e54c, (q31_t)0x268f21e5, (q31_t)0x3ab9e53a, - (q31_t)0x269aaa48, (q31_t)0x3abee2e5, (q31_t)0x26a633a6, (q31_t)0x3ac3de4c, - (q31_t)0x26b1bdff, (q31_t)0x3ac8d76f, (q31_t)0x26bd4951, (q31_t)0x3acdce4d, - (q31_t)0x26c8d59c, (q31_t)0x3ad2c2e8, (q31_t)0x26d462e1, (q31_t)0x3ad7b53d, - (q31_t)0x26dff11d, (q31_t)0x3adca54e, (q31_t)0x26eb8052, (q31_t)0x3ae1931a, - (q31_t)0x26f7107e, (q31_t)0x3ae67ea1, (q31_t)0x2702a1a1, (q31_t)0x3aeb67e3, - (q31_t)0x270e33bb, (q31_t)0x3af04edf, (q31_t)0x2719c6cb, (q31_t)0x3af53395, - (q31_t)0x27255ad1, (q31_t)0x3afa1605, (q31_t)0x2730efcc, (q31_t)0x3afef630, - (q31_t)0x273c85bc, (q31_t)0x3b03d414, (q31_t)0x27481ca1, (q31_t)0x3b08afb2, - (q31_t)0x2753b479, (q31_t)0x3b0d8909, (q31_t)0x275f4d45, (q31_t)0x3b126019, - (q31_t)0x276ae704, (q31_t)0x3b1734e2, (q31_t)0x277681b6, (q31_t)0x3b1c0764, - (q31_t)0x27821d59, (q31_t)0x3b20d79e, (q31_t)0x278db9ef, (q31_t)0x3b25a591, - (q31_t)0x27995776, (q31_t)0x3b2a713d, (q31_t)0x27a4f5ed, (q31_t)0x3b2f3aa0, - (q31_t)0x27b09555, (q31_t)0x3b3401bb, (q31_t)0x27bc35ad, (q31_t)0x3b38c68e, - (q31_t)0x27c7d6f4, (q31_t)0x3b3d8918, (q31_t)0x27d3792b, (q31_t)0x3b42495a, - (q31_t)0x27df1c50, (q31_t)0x3b470753, (q31_t)0x27eac063, (q31_t)0x3b4bc303, - (q31_t)0x27f66564, (q31_t)0x3b507c69, (q31_t)0x28020b52, (q31_t)0x3b553386, - (q31_t)0x280db22d, (q31_t)0x3b59e85a, (q31_t)0x281959f4, (q31_t)0x3b5e9ae4, - (q31_t)0x282502a7, (q31_t)0x3b634b23, (q31_t)0x2830ac45, (q31_t)0x3b67f919, - (q31_t)0x283c56cf, (q31_t)0x3b6ca4c4, (q31_t)0x28480243, (q31_t)0x3b714e25, - (q31_t)0x2853aea1, (q31_t)0x3b75f53c, (q31_t)0x285f5be9, (q31_t)0x3b7a9a07, - (q31_t)0x286b0a1a, (q31_t)0x3b7f3c87, (q31_t)0x2876b934, (q31_t)0x3b83dcbc, - (q31_t)0x28826936, (q31_t)0x3b887aa6, (q31_t)0x288e1a20, (q31_t)0x3b8d1644, - (q31_t)0x2899cbf1, (q31_t)0x3b91af97, (q31_t)0x28a57ea9, (q31_t)0x3b96469d, - (q31_t)0x28b13248, (q31_t)0x3b9adb57, (q31_t)0x28bce6cd, (q31_t)0x3b9f6dc5, - (q31_t)0x28c89c37, (q31_t)0x3ba3fde7, (q31_t)0x28d45286, (q31_t)0x3ba88bbc, - (q31_t)0x28e009ba, (q31_t)0x3bad1744, (q31_t)0x28ebc1d3, (q31_t)0x3bb1a080, - (q31_t)0x28f77acf, (q31_t)0x3bb6276e, (q31_t)0x290334af, (q31_t)0x3bbaac0e, - (q31_t)0x290eef71, (q31_t)0x3bbf2e62, (q31_t)0x291aab16, (q31_t)0x3bc3ae67, - (q31_t)0x2926679c, (q31_t)0x3bc82c1f, (q31_t)0x29322505, (q31_t)0x3bcca789, - (q31_t)0x293de34e, (q31_t)0x3bd120a4, (q31_t)0x2949a278, (q31_t)0x3bd59771, - (q31_t)0x29556282, (q31_t)0x3bda0bf0, (q31_t)0x2961236c, (q31_t)0x3bde7e20, - (q31_t)0x296ce535, (q31_t)0x3be2ee01, (q31_t)0x2978a7dd, (q31_t)0x3be75b93, - (q31_t)0x29846b63, (q31_t)0x3bebc6d5, (q31_t)0x29902fc7, (q31_t)0x3bf02fc9, - (q31_t)0x299bf509, (q31_t)0x3bf4966c, (q31_t)0x29a7bb28, (q31_t)0x3bf8fac0, - (q31_t)0x29b38223, (q31_t)0x3bfd5cc4, (q31_t)0x29bf49fa, (q31_t)0x3c01bc78, - (q31_t)0x29cb12ad, (q31_t)0x3c0619dc, (q31_t)0x29d6dc3b, (q31_t)0x3c0a74f0, - (q31_t)0x29e2a6a3, (q31_t)0x3c0ecdb2, (q31_t)0x29ee71e6, (q31_t)0x3c132424, - (q31_t)0x29fa3e03, (q31_t)0x3c177845, (q31_t)0x2a060af9, (q31_t)0x3c1bca16, - (q31_t)0x2a11d8c8, (q31_t)0x3c201994, (q31_t)0x2a1da770, (q31_t)0x3c2466c2, - (q31_t)0x2a2976ef, (q31_t)0x3c28b19e, (q31_t)0x2a354746, (q31_t)0x3c2cfa28, - (q31_t)0x2a411874, (q31_t)0x3c314060, (q31_t)0x2a4cea79, (q31_t)0x3c358446, - (q31_t)0x2a58bd54, (q31_t)0x3c39c5da, (q31_t)0x2a649105, (q31_t)0x3c3e051b, - (q31_t)0x2a70658a, (q31_t)0x3c42420a, (q31_t)0x2a7c3ae5, (q31_t)0x3c467ca6, - (q31_t)0x2a881114, (q31_t)0x3c4ab4ef, (q31_t)0x2a93e817, (q31_t)0x3c4eeae5, - (q31_t)0x2a9fbfed, (q31_t)0x3c531e88, (q31_t)0x2aab9896, (q31_t)0x3c574fd8, - (q31_t)0x2ab77212, (q31_t)0x3c5b7ed4, (q31_t)0x2ac34c60, (q31_t)0x3c5fab7c, - (q31_t)0x2acf277f, (q31_t)0x3c63d5d1, (q31_t)0x2adb0370, (q31_t)0x3c67fdd1, - (q31_t)0x2ae6e031, (q31_t)0x3c6c237e, (q31_t)0x2af2bdc3, (q31_t)0x3c7046d6, - (q31_t)0x2afe9c24, (q31_t)0x3c7467d9, (q31_t)0x2b0a7b54, (q31_t)0x3c788688, - (q31_t)0x2b165b54, (q31_t)0x3c7ca2e2, (q31_t)0x2b223c22, (q31_t)0x3c80bce7, - (q31_t)0x2b2e1dbe, (q31_t)0x3c84d496, (q31_t)0x2b3a0027, (q31_t)0x3c88e9f1, - (q31_t)0x2b45e35d, (q31_t)0x3c8cfcf6, (q31_t)0x2b51c760, (q31_t)0x3c910da5, - (q31_t)0x2b5dac2f, (q31_t)0x3c951bff, (q31_t)0x2b6991ca, (q31_t)0x3c992803, - (q31_t)0x2b75782f, (q31_t)0x3c9d31b0, (q31_t)0x2b815f60, (q31_t)0x3ca13908, - (q31_t)0x2b8d475b, (q31_t)0x3ca53e09, (q31_t)0x2b99301f, (q31_t)0x3ca940b3, - (q31_t)0x2ba519ad, (q31_t)0x3cad4107, (q31_t)0x2bb10404, (q31_t)0x3cb13f04, - (q31_t)0x2bbcef23, (q31_t)0x3cb53aaa, (q31_t)0x2bc8db0b, (q31_t)0x3cb933f9, - (q31_t)0x2bd4c7ba, (q31_t)0x3cbd2af0, (q31_t)0x2be0b52f, (q31_t)0x3cc11f90, - (q31_t)0x2beca36c, (q31_t)0x3cc511d9, (q31_t)0x2bf8926f, (q31_t)0x3cc901c9, - (q31_t)0x2c048237, (q31_t)0x3cccef62, (q31_t)0x2c1072c4, (q31_t)0x3cd0daa2, - (q31_t)0x2c1c6417, (q31_t)0x3cd4c38b, (q31_t)0x2c28562d, (q31_t)0x3cd8aa1b, - (q31_t)0x2c344908, (q31_t)0x3cdc8e52, (q31_t)0x2c403ca5, (q31_t)0x3ce07031, - (q31_t)0x2c4c3106, (q31_t)0x3ce44fb7, (q31_t)0x2c582629, (q31_t)0x3ce82ce4, - (q31_t)0x2c641c0e, (q31_t)0x3cec07b8, (q31_t)0x2c7012b5, (q31_t)0x3cefe032, - (q31_t)0x2c7c0a1d, (q31_t)0x3cf3b653, (q31_t)0x2c880245, (q31_t)0x3cf78a1b, - (q31_t)0x2c93fb2e, (q31_t)0x3cfb5b89, (q31_t)0x2c9ff4d6, (q31_t)0x3cff2a9d, - (q31_t)0x2cabef3d, (q31_t)0x3d02f757, (q31_t)0x2cb7ea63, (q31_t)0x3d06c1b6, - (q31_t)0x2cc3e648, (q31_t)0x3d0a89bc, (q31_t)0x2ccfe2ea, (q31_t)0x3d0e4f67, - (q31_t)0x2cdbe04a, (q31_t)0x3d1212b7, (q31_t)0x2ce7de66, (q31_t)0x3d15d3ad, - (q31_t)0x2cf3dd3f, (q31_t)0x3d199248, (q31_t)0x2cffdcd4, (q31_t)0x3d1d4e88, - (q31_t)0x2d0bdd25, (q31_t)0x3d21086c, (q31_t)0x2d17de31, (q31_t)0x3d24bff6, - (q31_t)0x2d23dff7, (q31_t)0x3d287523, (q31_t)0x2d2fe277, (q31_t)0x3d2c27f6, - (q31_t)0x2d3be5b1, (q31_t)0x3d2fd86c, (q31_t)0x2d47e9a5, (q31_t)0x3d338687, - (q31_t)0x2d53ee51, (q31_t)0x3d373245, (q31_t)0x2d5ff3b5, (q31_t)0x3d3adba7, - (q31_t)0x2d6bf9d1, (q31_t)0x3d3e82ae, (q31_t)0x2d7800a5, (q31_t)0x3d422757, - (q31_t)0x2d84082f, (q31_t)0x3d45c9a4, (q31_t)0x2d901070, (q31_t)0x3d496994, - (q31_t)0x2d9c1967, (q31_t)0x3d4d0728, (q31_t)0x2da82313, (q31_t)0x3d50a25e, - (q31_t)0x2db42d74, (q31_t)0x3d543b37, (q31_t)0x2dc0388a, (q31_t)0x3d57d1b3, - (q31_t)0x2dcc4454, (q31_t)0x3d5b65d2, (q31_t)0x2dd850d2, (q31_t)0x3d5ef793, - (q31_t)0x2de45e03, (q31_t)0x3d6286f6, (q31_t)0x2df06be6, (q31_t)0x3d6613fb, - (q31_t)0x2dfc7a7c, (q31_t)0x3d699ea3, (q31_t)0x2e0889c4, (q31_t)0x3d6d26ec, - (q31_t)0x2e1499bd, (q31_t)0x3d70acd7, (q31_t)0x2e20aa67, (q31_t)0x3d743064, - (q31_t)0x2e2cbbc1, (q31_t)0x3d77b192, (q31_t)0x2e38cdcb, (q31_t)0x3d7b3061, - (q31_t)0x2e44e084, (q31_t)0x3d7eacd2, (q31_t)0x2e50f3ed, (q31_t)0x3d8226e4, - (q31_t)0x2e5d0804, (q31_t)0x3d859e96, (q31_t)0x2e691cc9, (q31_t)0x3d8913ea, - (q31_t)0x2e75323c, (q31_t)0x3d8c86de, (q31_t)0x2e81485c, (q31_t)0x3d8ff772, - (q31_t)0x2e8d5f29, (q31_t)0x3d9365a8, (q31_t)0x2e9976a1, (q31_t)0x3d96d17d, - (q31_t)0x2ea58ec6, (q31_t)0x3d9a3af2, (q31_t)0x2eb1a796, (q31_t)0x3d9da208, - (q31_t)0x2ebdc110, (q31_t)0x3da106bd, (q31_t)0x2ec9db35, (q31_t)0x3da46912, - (q31_t)0x2ed5f604, (q31_t)0x3da7c907, (q31_t)0x2ee2117c, (q31_t)0x3dab269b, - (q31_t)0x2eee2d9d, (q31_t)0x3dae81cf, (q31_t)0x2efa4a67, (q31_t)0x3db1daa2, - (q31_t)0x2f0667d9, (q31_t)0x3db53113, (q31_t)0x2f1285f2, (q31_t)0x3db88524, - (q31_t)0x2f1ea4b2, (q31_t)0x3dbbd6d4, (q31_t)0x2f2ac419, (q31_t)0x3dbf2622, - (q31_t)0x2f36e426, (q31_t)0x3dc2730f, (q31_t)0x2f4304d8, (q31_t)0x3dc5bd9b, - (q31_t)0x2f4f2630, (q31_t)0x3dc905c5, (q31_t)0x2f5b482d, (q31_t)0x3dcc4b8d, - (q31_t)0x2f676ace, (q31_t)0x3dcf8ef3, (q31_t)0x2f738e12, (q31_t)0x3dd2cff7, - (q31_t)0x2f7fb1fa, (q31_t)0x3dd60e99, (q31_t)0x2f8bd685, (q31_t)0x3dd94ad8, - (q31_t)0x2f97fbb2, (q31_t)0x3ddc84b5, (q31_t)0x2fa42181, (q31_t)0x3ddfbc30, - (q31_t)0x2fb047f2, (q31_t)0x3de2f148, (q31_t)0x2fbc6f03, (q31_t)0x3de623fd, - (q31_t)0x2fc896b5, (q31_t)0x3de9544f, (q31_t)0x2fd4bf08, (q31_t)0x3dec823e, - (q31_t)0x2fe0e7f9, (q31_t)0x3defadca, (q31_t)0x2fed118a, (q31_t)0x3df2d6f3, - (q31_t)0x2ff93bba, (q31_t)0x3df5fdb8, (q31_t)0x30056687, (q31_t)0x3df9221a, - (q31_t)0x301191f3, (q31_t)0x3dfc4418, (q31_t)0x301dbdfb, (q31_t)0x3dff63b2, - (q31_t)0x3029eaa1, (q31_t)0x3e0280e9, (q31_t)0x303617e2, (q31_t)0x3e059bbb, - (q31_t)0x304245c0, (q31_t)0x3e08b42a, (q31_t)0x304e7438, (q31_t)0x3e0bca34, - (q31_t)0x305aa34c, (q31_t)0x3e0eddd9, (q31_t)0x3066d2fa, (q31_t)0x3e11ef1b, - (q31_t)0x30730342, (q31_t)0x3e14fdf7, (q31_t)0x307f3424, (q31_t)0x3e180a6f, - (q31_t)0x308b659f, (q31_t)0x3e1b1482, (q31_t)0x309797b2, (q31_t)0x3e1e1c30, - (q31_t)0x30a3ca5d, (q31_t)0x3e212179, (q31_t)0x30affda0, (q31_t)0x3e24245d, - (q31_t)0x30bc317a, (q31_t)0x3e2724db, (q31_t)0x30c865ea, (q31_t)0x3e2a22f4, - (q31_t)0x30d49af1, (q31_t)0x3e2d1ea8, (q31_t)0x30e0d08d, (q31_t)0x3e3017f6, - (q31_t)0x30ed06bf, (q31_t)0x3e330ede, (q31_t)0x30f93d86, (q31_t)0x3e360360, - (q31_t)0x310574e0, (q31_t)0x3e38f57c, (q31_t)0x3111accf, (q31_t)0x3e3be532, - (q31_t)0x311de551, (q31_t)0x3e3ed282, (q31_t)0x312a1e66, (q31_t)0x3e41bd6c, - (q31_t)0x3136580d, (q31_t)0x3e44a5ef, (q31_t)0x31429247, (q31_t)0x3e478c0b, - (q31_t)0x314ecd11, (q31_t)0x3e4a6fc1, (q31_t)0x315b086d, (q31_t)0x3e4d5110, - (q31_t)0x31674459, (q31_t)0x3e502ff9, (q31_t)0x317380d6, (q31_t)0x3e530c7a, - (q31_t)0x317fbde2, (q31_t)0x3e55e694, (q31_t)0x318bfb7d, (q31_t)0x3e58be47, - (q31_t)0x319839a6, (q31_t)0x3e5b9392, (q31_t)0x31a4785e, (q31_t)0x3e5e6676, - (q31_t)0x31b0b7a4, (q31_t)0x3e6136f3, (q31_t)0x31bcf777, (q31_t)0x3e640507, - (q31_t)0x31c937d6, (q31_t)0x3e66d0b4, (q31_t)0x31d578c2, (q31_t)0x3e6999fa, - (q31_t)0x31e1ba3a, (q31_t)0x3e6c60d7, (q31_t)0x31edfc3d, (q31_t)0x3e6f254c, - (q31_t)0x31fa3ecb, (q31_t)0x3e71e759, (q31_t)0x320681e3, (q31_t)0x3e74a6fd, - (q31_t)0x3212c585, (q31_t)0x3e77643a, (q31_t)0x321f09b1, (q31_t)0x3e7a1f0d, - (q31_t)0x322b4e66, (q31_t)0x3e7cd778, (q31_t)0x323793a3, (q31_t)0x3e7f8d7b, - (q31_t)0x3243d968, (q31_t)0x3e824114, (q31_t)0x32501fb5, (q31_t)0x3e84f245, - (q31_t)0x325c6688, (q31_t)0x3e87a10c, (q31_t)0x3268ade3, (q31_t)0x3e8a4d6a, - (q31_t)0x3274f5c3, (q31_t)0x3e8cf75f, (q31_t)0x32813e2a, (q31_t)0x3e8f9eeb, - (q31_t)0x328d8715, (q31_t)0x3e92440d, (q31_t)0x3299d085, (q31_t)0x3e94e6c6, - (q31_t)0x32a61a7a, (q31_t)0x3e978715, (q31_t)0x32b264f2, (q31_t)0x3e9a24fb, - (q31_t)0x32beafed, (q31_t)0x3e9cc076, (q31_t)0x32cafb6b, (q31_t)0x3e9f5988, - (q31_t)0x32d7476c, (q31_t)0x3ea1f02f, (q31_t)0x32e393ef, (q31_t)0x3ea4846c, - (q31_t)0x32efe0f2, (q31_t)0x3ea7163f, (q31_t)0x32fc2e77, (q31_t)0x3ea9a5a8, - (q31_t)0x33087c7d, (q31_t)0x3eac32a6, (q31_t)0x3314cb02, (q31_t)0x3eaebd3a, - (q31_t)0x33211a07, (q31_t)0x3eb14563, (q31_t)0x332d698a, (q31_t)0x3eb3cb21, - (q31_t)0x3339b98d, (q31_t)0x3eb64e75, (q31_t)0x33460a0d, (q31_t)0x3eb8cf5d, - (q31_t)0x33525b0b, (q31_t)0x3ebb4ddb, (q31_t)0x335eac86, (q31_t)0x3ebdc9ed, - (q31_t)0x336afe7e, (q31_t)0x3ec04394, (q31_t)0x337750f2, (q31_t)0x3ec2bad0, - (q31_t)0x3383a3e2, (q31_t)0x3ec52fa0, (q31_t)0x338ff74d, (q31_t)0x3ec7a205, - (q31_t)0x339c4b32, (q31_t)0x3eca11fe, (q31_t)0x33a89f92, (q31_t)0x3ecc7f8b, - (q31_t)0x33b4f46c, (q31_t)0x3eceeaad, (q31_t)0x33c149bf, (q31_t)0x3ed15363, - (q31_t)0x33cd9f8b, (q31_t)0x3ed3b9ad, (q31_t)0x33d9f5cf, (q31_t)0x3ed61d8a, - (q31_t)0x33e64c8c, (q31_t)0x3ed87efc, (q31_t)0x33f2a3bf, (q31_t)0x3edade01, - (q31_t)0x33fefb6a, (q31_t)0x3edd3a9a, (q31_t)0x340b538b, (q31_t)0x3edf94c7, - (q31_t)0x3417ac22, (q31_t)0x3ee1ec87, (q31_t)0x3424052f, (q31_t)0x3ee441da, - (q31_t)0x34305eb0, (q31_t)0x3ee694c1, (q31_t)0x343cb8a7, (q31_t)0x3ee8e53a, - (q31_t)0x34491311, (q31_t)0x3eeb3347, (q31_t)0x34556def, (q31_t)0x3eed7ee7, - (q31_t)0x3461c940, (q31_t)0x3eefc81a, (q31_t)0x346e2504, (q31_t)0x3ef20ee0, - (q31_t)0x347a8139, (q31_t)0x3ef45338, (q31_t)0x3486dde1, (q31_t)0x3ef69523, - (q31_t)0x34933afa, (q31_t)0x3ef8d4a1, (q31_t)0x349f9884, (q31_t)0x3efb11b1, - (q31_t)0x34abf67e, (q31_t)0x3efd4c54, (q31_t)0x34b854e7, (q31_t)0x3eff8489, - (q31_t)0x34c4b3c0, (q31_t)0x3f01ba50, (q31_t)0x34d11308, (q31_t)0x3f03eda9, - (q31_t)0x34dd72be, (q31_t)0x3f061e95, (q31_t)0x34e9d2e3, (q31_t)0x3f084d12, - (q31_t)0x34f63374, (q31_t)0x3f0a7921, (q31_t)0x35029473, (q31_t)0x3f0ca2c2, - (q31_t)0x350ef5de, (q31_t)0x3f0ec9f5, (q31_t)0x351b57b5, (q31_t)0x3f10eeb9, - (q31_t)0x3527b9f7, (q31_t)0x3f13110f, (q31_t)0x35341ca5, (q31_t)0x3f1530f7, - (q31_t)0x35407fbd, (q31_t)0x3f174e70, (q31_t)0x354ce33f, (q31_t)0x3f19697a, - (q31_t)0x3559472b, (q31_t)0x3f1b8215, (q31_t)0x3565ab80, (q31_t)0x3f1d9842, - (q31_t)0x3572103d, (q31_t)0x3f1fabff, (q31_t)0x357e7563, (q31_t)0x3f21bd4e, - (q31_t)0x358adaf0, (q31_t)0x3f23cc2e, (q31_t)0x359740e5, (q31_t)0x3f25d89e, - (q31_t)0x35a3a740, (q31_t)0x3f27e29f, (q31_t)0x35b00e02, (q31_t)0x3f29ea31, - (q31_t)0x35bc7529, (q31_t)0x3f2bef53, (q31_t)0x35c8dcb6, (q31_t)0x3f2df206, - (q31_t)0x35d544a7, (q31_t)0x3f2ff24a, (q31_t)0x35e1acfd, (q31_t)0x3f31f01d, - (q31_t)0x35ee15b7, (q31_t)0x3f33eb81, (q31_t)0x35fa7ed4, (q31_t)0x3f35e476, - (q31_t)0x3606e854, (q31_t)0x3f37dafa, (q31_t)0x36135237, (q31_t)0x3f39cf0e, - (q31_t)0x361fbc7b, (q31_t)0x3f3bc0b3, (q31_t)0x362c2721, (q31_t)0x3f3dafe7, - (q31_t)0x36389228, (q31_t)0x3f3f9cab, (q31_t)0x3644fd8f, (q31_t)0x3f4186ff, - (q31_t)0x36516956, (q31_t)0x3f436ee3, (q31_t)0x365dd57d, (q31_t)0x3f455456, - (q31_t)0x366a4203, (q31_t)0x3f473759, (q31_t)0x3676aee8, (q31_t)0x3f4917eb, - (q31_t)0x36831c2b, (q31_t)0x3f4af60d, (q31_t)0x368f89cb, (q31_t)0x3f4cd1be, - (q31_t)0x369bf7c9, (q31_t)0x3f4eaafe, (q31_t)0x36a86623, (q31_t)0x3f5081cd, - (q31_t)0x36b4d4d9, (q31_t)0x3f52562c, (q31_t)0x36c143ec, (q31_t)0x3f54281a, - (q31_t)0x36cdb359, (q31_t)0x3f55f796, (q31_t)0x36da2321, (q31_t)0x3f57c4a2, - (q31_t)0x36e69344, (q31_t)0x3f598f3c, (q31_t)0x36f303c0, (q31_t)0x3f5b5765, - (q31_t)0x36ff7496, (q31_t)0x3f5d1d1d, (q31_t)0x370be5c4, (q31_t)0x3f5ee063, - (q31_t)0x3718574b, (q31_t)0x3f60a138, (q31_t)0x3724c92a, (q31_t)0x3f625f9b, - (q31_t)0x37313b60, (q31_t)0x3f641b8d, (q31_t)0x373daded, (q31_t)0x3f65d50d, - (q31_t)0x374a20d0, (q31_t)0x3f678c1c, (q31_t)0x3756940a, (q31_t)0x3f6940b8, - (q31_t)0x37630799, (q31_t)0x3f6af2e3, (q31_t)0x376f7b7d, (q31_t)0x3f6ca29c, - (q31_t)0x377befb5, (q31_t)0x3f6e4fe3, (q31_t)0x37886442, (q31_t)0x3f6ffab8, - (q31_t)0x3794d922, (q31_t)0x3f71a31b, (q31_t)0x37a14e55, (q31_t)0x3f73490b, - (q31_t)0x37adc3db, (q31_t)0x3f74ec8a, (q31_t)0x37ba39b3, (q31_t)0x3f768d96, - (q31_t)0x37c6afdc, (q31_t)0x3f782c30, (q31_t)0x37d32657, (q31_t)0x3f79c857, - (q31_t)0x37df9d22, (q31_t)0x3f7b620c, (q31_t)0x37ec143e, (q31_t)0x3f7cf94e, - (q31_t)0x37f88ba9, (q31_t)0x3f7e8e1e, (q31_t)0x38050364, (q31_t)0x3f80207b, - (q31_t)0x38117b6d, (q31_t)0x3f81b065, (q31_t)0x381df3c5, (q31_t)0x3f833ddd, - (q31_t)0x382a6c6a, (q31_t)0x3f84c8e2, (q31_t)0x3836e55d, (q31_t)0x3f865174, - (q31_t)0x38435e9d, (q31_t)0x3f87d792, (q31_t)0x384fd829, (q31_t)0x3f895b3e, - (q31_t)0x385c5201, (q31_t)0x3f8adc77, (q31_t)0x3868cc24, (q31_t)0x3f8c5b3d, - (q31_t)0x38754692, (q31_t)0x3f8dd78f, (q31_t)0x3881c14b, (q31_t)0x3f8f516e, - (q31_t)0x388e3c4d, (q31_t)0x3f90c8da, (q31_t)0x389ab799, (q31_t)0x3f923dd2, - (q31_t)0x38a7332e, (q31_t)0x3f93b058, (q31_t)0x38b3af0c, (q31_t)0x3f952069, - (q31_t)0x38c02b31, (q31_t)0x3f968e07, (q31_t)0x38cca79e, (q31_t)0x3f97f932, - (q31_t)0x38d92452, (q31_t)0x3f9961e8, (q31_t)0x38e5a14d, (q31_t)0x3f9ac82c, - (q31_t)0x38f21e8e, (q31_t)0x3f9c2bfb, (q31_t)0x38fe9c15, (q31_t)0x3f9d8d56, - (q31_t)0x390b19e0, (q31_t)0x3f9eec3e, (q31_t)0x391797f0, (q31_t)0x3fa048b2, - (q31_t)0x39241645, (q31_t)0x3fa1a2b2, (q31_t)0x393094dd, (q31_t)0x3fa2fa3d, - (q31_t)0x393d13b8, (q31_t)0x3fa44f55, (q31_t)0x394992d7, (q31_t)0x3fa5a1f9, - (q31_t)0x39561237, (q31_t)0x3fa6f228, (q31_t)0x396291d9, (q31_t)0x3fa83fe3, - (q31_t)0x396f11bc, (q31_t)0x3fa98b2a, (q31_t)0x397b91e1, (q31_t)0x3faad3fd, - (q31_t)0x39881245, (q31_t)0x3fac1a5b, (q31_t)0x399492ea, (q31_t)0x3fad5e45, - (q31_t)0x39a113cd, (q31_t)0x3fae9fbb, (q31_t)0x39ad94f0, (q31_t)0x3fafdebb, - (q31_t)0x39ba1651, (q31_t)0x3fb11b48, (q31_t)0x39c697f0, (q31_t)0x3fb2555f, - (q31_t)0x39d319cc, (q31_t)0x3fb38d02, (q31_t)0x39df9be6, (q31_t)0x3fb4c231, - (q31_t)0x39ec1e3b, (q31_t)0x3fb5f4ea, (q31_t)0x39f8a0cd, (q31_t)0x3fb7252f, - (q31_t)0x3a05239a, (q31_t)0x3fb852ff, (q31_t)0x3a11a6a3, (q31_t)0x3fb97e5a, - (q31_t)0x3a1e29e5, (q31_t)0x3fbaa740, (q31_t)0x3a2aad62, (q31_t)0x3fbbcdb1, - (q31_t)0x3a373119, (q31_t)0x3fbcf1ad, (q31_t)0x3a43b508, (q31_t)0x3fbe1334, - (q31_t)0x3a503930, (q31_t)0x3fbf3246, (q31_t)0x3a5cbd91, (q31_t)0x3fc04ee3, - (q31_t)0x3a694229, (q31_t)0x3fc1690a, (q31_t)0x3a75c6f8, (q31_t)0x3fc280bc, - (q31_t)0x3a824bfd, (q31_t)0x3fc395f9, (q31_t)0x3a8ed139, (q31_t)0x3fc4a8c1, - (q31_t)0x3a9b56ab, (q31_t)0x3fc5b913, (q31_t)0x3aa7dc52, (q31_t)0x3fc6c6f0, - (q31_t)0x3ab4622d, (q31_t)0x3fc7d258, (q31_t)0x3ac0e83d, (q31_t)0x3fc8db4a, - (q31_t)0x3acd6e81, (q31_t)0x3fc9e1c6, (q31_t)0x3ad9f4f8, (q31_t)0x3fcae5cd, - (q31_t)0x3ae67ba2, (q31_t)0x3fcbe75e, (q31_t)0x3af3027e, (q31_t)0x3fcce67a, - (q31_t)0x3aff898c, (q31_t)0x3fcde320, (q31_t)0x3b0c10cb, (q31_t)0x3fcedd50, - (q31_t)0x3b18983b, (q31_t)0x3fcfd50b, (q31_t)0x3b251fdc, (q31_t)0x3fd0ca4f, - (q31_t)0x3b31a7ac, (q31_t)0x3fd1bd1e, (q31_t)0x3b3e2fac, (q31_t)0x3fd2ad77, - (q31_t)0x3b4ab7db, (q31_t)0x3fd39b5a, (q31_t)0x3b574039, (q31_t)0x3fd486c7, - (q31_t)0x3b63c8c4, (q31_t)0x3fd56fbe, (q31_t)0x3b70517d, (q31_t)0x3fd6563f, - (q31_t)0x3b7cda63, (q31_t)0x3fd73a4a, (q31_t)0x3b896375, (q31_t)0x3fd81bdf, - (q31_t)0x3b95ecb4, (q31_t)0x3fd8fafe, (q31_t)0x3ba2761e, (q31_t)0x3fd9d7a7, - (q31_t)0x3baeffb3, (q31_t)0x3fdab1d9, (q31_t)0x3bbb8973, (q31_t)0x3fdb8996, - (q31_t)0x3bc8135c, (q31_t)0x3fdc5edc, (q31_t)0x3bd49d70, (q31_t)0x3fdd31ac, - (q31_t)0x3be127ac, (q31_t)0x3fde0205, (q31_t)0x3bedb212, (q31_t)0x3fdecfe8, - (q31_t)0x3bfa3c9f, (q31_t)0x3fdf9b55, (q31_t)0x3c06c754, (q31_t)0x3fe0644b, - (q31_t)0x3c135231, (q31_t)0x3fe12acb, (q31_t)0x3c1fdd34, (q31_t)0x3fe1eed5, - (q31_t)0x3c2c685d, (q31_t)0x3fe2b067, (q31_t)0x3c38f3ac, (q31_t)0x3fe36f84, - (q31_t)0x3c457f21, (q31_t)0x3fe42c2a, (q31_t)0x3c520aba, (q31_t)0x3fe4e659, - (q31_t)0x3c5e9678, (q31_t)0x3fe59e12, (q31_t)0x3c6b2259, (q31_t)0x3fe65354, - (q31_t)0x3c77ae5e, (q31_t)0x3fe7061f, (q31_t)0x3c843a85, (q31_t)0x3fe7b674, - (q31_t)0x3c90c6cf, (q31_t)0x3fe86452, (q31_t)0x3c9d533b, (q31_t)0x3fe90fb9, - (q31_t)0x3ca9dfc8, (q31_t)0x3fe9b8a9, (q31_t)0x3cb66c77, (q31_t)0x3fea5f23, - (q31_t)0x3cc2f945, (q31_t)0x3feb0326, (q31_t)0x3ccf8634, (q31_t)0x3feba4b2, - (q31_t)0x3cdc1342, (q31_t)0x3fec43c7, (q31_t)0x3ce8a06f, (q31_t)0x3fece065, - (q31_t)0x3cf52dbb, (q31_t)0x3fed7a8c, (q31_t)0x3d01bb24, (q31_t)0x3fee123d, - (q31_t)0x3d0e48ab, (q31_t)0x3feea776, (q31_t)0x3d1ad650, (q31_t)0x3fef3a39, - (q31_t)0x3d276410, (q31_t)0x3fefca84, (q31_t)0x3d33f1ed, (q31_t)0x3ff05858, - (q31_t)0x3d407fe6, (q31_t)0x3ff0e3b6, (q31_t)0x3d4d0df9, (q31_t)0x3ff16c9c, - (q31_t)0x3d599c28, (q31_t)0x3ff1f30b, (q31_t)0x3d662a70, (q31_t)0x3ff27703, - (q31_t)0x3d72b8d2, (q31_t)0x3ff2f884, (q31_t)0x3d7f474d, (q31_t)0x3ff3778e, - (q31_t)0x3d8bd5e1, (q31_t)0x3ff3f420, (q31_t)0x3d98648d, (q31_t)0x3ff46e3c, - (q31_t)0x3da4f351, (q31_t)0x3ff4e5e0, (q31_t)0x3db1822c, (q31_t)0x3ff55b0d, - (q31_t)0x3dbe111e, (q31_t)0x3ff5cdc3, (q31_t)0x3dcaa027, (q31_t)0x3ff63e01, - (q31_t)0x3dd72f45, (q31_t)0x3ff6abc8, (q31_t)0x3de3be78, (q31_t)0x3ff71718, - (q31_t)0x3df04dc0, (q31_t)0x3ff77ff1, (q31_t)0x3dfcdd1d, (q31_t)0x3ff7e652, - (q31_t)0x3e096c8d, (q31_t)0x3ff84a3c, (q31_t)0x3e15fc11, (q31_t)0x3ff8abae, - (q31_t)0x3e228ba7, (q31_t)0x3ff90aaa, (q31_t)0x3e2f1b50, (q31_t)0x3ff9672d, - (q31_t)0x3e3bab0b, (q31_t)0x3ff9c13a, (q31_t)0x3e483ad8, (q31_t)0x3ffa18cf, - (q31_t)0x3e54cab5, (q31_t)0x3ffa6dec, (q31_t)0x3e615aa3, (q31_t)0x3ffac092, - (q31_t)0x3e6deaa1, (q31_t)0x3ffb10c1, (q31_t)0x3e7a7aae, (q31_t)0x3ffb5e78, - (q31_t)0x3e870aca, (q31_t)0x3ffba9b8, (q31_t)0x3e939af5, (q31_t)0x3ffbf280, - (q31_t)0x3ea02b2e, (q31_t)0x3ffc38d1, (q31_t)0x3eacbb74, (q31_t)0x3ffc7caa, - (q31_t)0x3eb94bc8, (q31_t)0x3ffcbe0c, (q31_t)0x3ec5dc28, (q31_t)0x3ffcfcf6, - (q31_t)0x3ed26c94, (q31_t)0x3ffd3969, (q31_t)0x3edefd0c, (q31_t)0x3ffd7364, - (q31_t)0x3eeb8d8f, (q31_t)0x3ffdaae7, (q31_t)0x3ef81e1d, (q31_t)0x3ffddff3, - (q31_t)0x3f04aeb5, (q31_t)0x3ffe1288, (q31_t)0x3f113f56, (q31_t)0x3ffe42a4, - (q31_t)0x3f1dd001, (q31_t)0x3ffe704a, (q31_t)0x3f2a60b4, (q31_t)0x3ffe9b77, - (q31_t)0x3f36f170, (q31_t)0x3ffec42d, (q31_t)0x3f438234, (q31_t)0x3ffeea6c, - (q31_t)0x3f5012fe, (q31_t)0x3fff0e32, (q31_t)0x3f5ca3d0, (q31_t)0x3fff2f82, - (q31_t)0x3f6934a8, (q31_t)0x3fff4e59, (q31_t)0x3f75c585, (q31_t)0x3fff6ab9, - (q31_t)0x3f825668, (q31_t)0x3fff84a1, (q31_t)0x3f8ee750, (q31_t)0x3fff9c12, - (q31_t)0x3f9b783c, (q31_t)0x3fffb10b, (q31_t)0x3fa8092c, (q31_t)0x3fffc38c, - (q31_t)0x3fb49a1f, (q31_t)0x3fffd396, (q31_t)0x3fc12b16, (q31_t)0x3fffe128, - (q31_t)0x3fcdbc0f, (q31_t)0x3fffec43, (q31_t)0x3fda4d09, (q31_t)0x3ffff4e6, - (q31_t)0x3fe6de05, (q31_t)0x3ffffb11, (q31_t)0x3ff36f02, (q31_t)0x3ffffec4, -}; - - -/** -* \par -* Generation of realCoefBQ31 array: -* \par -* n = 4096 -*
for (i = 0; i < n; i++)
-* {
-*    pBTable[2 * i] = 0.5 * (1.0 + sin (2 * PI / (double) (2 * n) * (double) i));
-*    pBTable[2 * i + 1] = 0.5 * (1.0 * cos (2 * PI / (double) (2 * n) * (double) i));
-* } 
-* \par -* Convert to fixed point Q31 format -* round(pBTable[i] * pow(2, 31)) -* -*/ - -const q31_t realCoefBQ31[8192] = { - (q31_t)0x40000000, (q31_t)0x40000000, (q31_t)0x400c90fe, (q31_t)0x3ffffec4, - (q31_t)0x401921fb, (q31_t)0x3ffffb11, (q31_t)0x4025b2f7, (q31_t)0x3ffff4e6, - (q31_t)0x403243f1, (q31_t)0x3fffec43, (q31_t)0x403ed4ea, (q31_t)0x3fffe128, - (q31_t)0x404b65e1, (q31_t)0x3fffd396, (q31_t)0x4057f6d4, (q31_t)0x3fffc38c, - (q31_t)0x406487c4, (q31_t)0x3fffb10b, (q31_t)0x407118b0, (q31_t)0x3fff9c12, - (q31_t)0x407da998, (q31_t)0x3fff84a1, (q31_t)0x408a3a7b, (q31_t)0x3fff6ab9, - (q31_t)0x4096cb58, (q31_t)0x3fff4e59, (q31_t)0x40a35c30, (q31_t)0x3fff2f82, - (q31_t)0x40afed02, (q31_t)0x3fff0e32, (q31_t)0x40bc7dcc, (q31_t)0x3ffeea6c, - (q31_t)0x40c90e90, (q31_t)0x3ffec42d, (q31_t)0x40d59f4c, (q31_t)0x3ffe9b77, - (q31_t)0x40e22fff, (q31_t)0x3ffe704a, (q31_t)0x40eec0aa, (q31_t)0x3ffe42a4, - (q31_t)0x40fb514b, (q31_t)0x3ffe1288, (q31_t)0x4107e1e3, (q31_t)0x3ffddff3, - (q31_t)0x41147271, (q31_t)0x3ffdaae7, (q31_t)0x412102f4, (q31_t)0x3ffd7364, - (q31_t)0x412d936c, (q31_t)0x3ffd3969, (q31_t)0x413a23d8, (q31_t)0x3ffcfcf6, - (q31_t)0x4146b438, (q31_t)0x3ffcbe0c, (q31_t)0x4153448c, (q31_t)0x3ffc7caa, - (q31_t)0x415fd4d2, (q31_t)0x3ffc38d1, (q31_t)0x416c650b, (q31_t)0x3ffbf280, - (q31_t)0x4178f536, (q31_t)0x3ffba9b8, (q31_t)0x41858552, (q31_t)0x3ffb5e78, - (q31_t)0x4192155f, (q31_t)0x3ffb10c1, (q31_t)0x419ea55d, (q31_t)0x3ffac092, - (q31_t)0x41ab354b, (q31_t)0x3ffa6dec, (q31_t)0x41b7c528, (q31_t)0x3ffa18cf, - (q31_t)0x41c454f5, (q31_t)0x3ff9c13a, (q31_t)0x41d0e4b0, (q31_t)0x3ff9672d, - (q31_t)0x41dd7459, (q31_t)0x3ff90aaa, (q31_t)0x41ea03ef, (q31_t)0x3ff8abae, - (q31_t)0x41f69373, (q31_t)0x3ff84a3c, (q31_t)0x420322e3, (q31_t)0x3ff7e652, - (q31_t)0x420fb240, (q31_t)0x3ff77ff1, (q31_t)0x421c4188, (q31_t)0x3ff71718, - (q31_t)0x4228d0bb, (q31_t)0x3ff6abc8, (q31_t)0x42355fd9, (q31_t)0x3ff63e01, - (q31_t)0x4241eee2, (q31_t)0x3ff5cdc3, (q31_t)0x424e7dd4, (q31_t)0x3ff55b0d, - (q31_t)0x425b0caf, (q31_t)0x3ff4e5e0, (q31_t)0x42679b73, (q31_t)0x3ff46e3c, - (q31_t)0x42742a1f, (q31_t)0x3ff3f420, (q31_t)0x4280b8b3, (q31_t)0x3ff3778e, - (q31_t)0x428d472e, (q31_t)0x3ff2f884, (q31_t)0x4299d590, (q31_t)0x3ff27703, - (q31_t)0x42a663d8, (q31_t)0x3ff1f30b, (q31_t)0x42b2f207, (q31_t)0x3ff16c9c, - (q31_t)0x42bf801a, (q31_t)0x3ff0e3b6, (q31_t)0x42cc0e13, (q31_t)0x3ff05858, - (q31_t)0x42d89bf0, (q31_t)0x3fefca84, (q31_t)0x42e529b0, (q31_t)0x3fef3a39, - (q31_t)0x42f1b755, (q31_t)0x3feea776, (q31_t)0x42fe44dc, (q31_t)0x3fee123d, - (q31_t)0x430ad245, (q31_t)0x3fed7a8c, (q31_t)0x43175f91, (q31_t)0x3fece065, - (q31_t)0x4323ecbe, (q31_t)0x3fec43c7, (q31_t)0x433079cc, (q31_t)0x3feba4b2, - (q31_t)0x433d06bb, (q31_t)0x3feb0326, (q31_t)0x43499389, (q31_t)0x3fea5f23, - (q31_t)0x43562038, (q31_t)0x3fe9b8a9, (q31_t)0x4362acc5, (q31_t)0x3fe90fb9, - (q31_t)0x436f3931, (q31_t)0x3fe86452, (q31_t)0x437bc57b, (q31_t)0x3fe7b674, - (q31_t)0x438851a2, (q31_t)0x3fe7061f, (q31_t)0x4394dda7, (q31_t)0x3fe65354, - (q31_t)0x43a16988, (q31_t)0x3fe59e12, (q31_t)0x43adf546, (q31_t)0x3fe4e659, - (q31_t)0x43ba80df, (q31_t)0x3fe42c2a, (q31_t)0x43c70c54, (q31_t)0x3fe36f84, - (q31_t)0x43d397a3, (q31_t)0x3fe2b067, (q31_t)0x43e022cc, (q31_t)0x3fe1eed5, - (q31_t)0x43ecadcf, (q31_t)0x3fe12acb, (q31_t)0x43f938ac, (q31_t)0x3fe0644b, - (q31_t)0x4405c361, (q31_t)0x3fdf9b55, (q31_t)0x44124dee, (q31_t)0x3fdecfe8, - (q31_t)0x441ed854, (q31_t)0x3fde0205, (q31_t)0x442b6290, (q31_t)0x3fdd31ac, - (q31_t)0x4437eca4, (q31_t)0x3fdc5edc, (q31_t)0x4444768d, (q31_t)0x3fdb8996, - (q31_t)0x4451004d, (q31_t)0x3fdab1d9, (q31_t)0x445d89e2, (q31_t)0x3fd9d7a7, - (q31_t)0x446a134c, (q31_t)0x3fd8fafe, (q31_t)0x44769c8b, (q31_t)0x3fd81bdf, - (q31_t)0x4483259d, (q31_t)0x3fd73a4a, (q31_t)0x448fae83, (q31_t)0x3fd6563f, - (q31_t)0x449c373c, (q31_t)0x3fd56fbe, (q31_t)0x44a8bfc7, (q31_t)0x3fd486c7, - (q31_t)0x44b54825, (q31_t)0x3fd39b5a, (q31_t)0x44c1d054, (q31_t)0x3fd2ad77, - (q31_t)0x44ce5854, (q31_t)0x3fd1bd1e, (q31_t)0x44dae024, (q31_t)0x3fd0ca4f, - (q31_t)0x44e767c5, (q31_t)0x3fcfd50b, (q31_t)0x44f3ef35, (q31_t)0x3fcedd50, - (q31_t)0x45007674, (q31_t)0x3fcde320, (q31_t)0x450cfd82, (q31_t)0x3fcce67a, - (q31_t)0x4519845e, (q31_t)0x3fcbe75e, (q31_t)0x45260b08, (q31_t)0x3fcae5cd, - (q31_t)0x4532917f, (q31_t)0x3fc9e1c6, (q31_t)0x453f17c3, (q31_t)0x3fc8db4a, - (q31_t)0x454b9dd3, (q31_t)0x3fc7d258, (q31_t)0x455823ae, (q31_t)0x3fc6c6f0, - (q31_t)0x4564a955, (q31_t)0x3fc5b913, (q31_t)0x45712ec7, (q31_t)0x3fc4a8c1, - (q31_t)0x457db403, (q31_t)0x3fc395f9, (q31_t)0x458a3908, (q31_t)0x3fc280bc, - (q31_t)0x4596bdd7, (q31_t)0x3fc1690a, (q31_t)0x45a3426f, (q31_t)0x3fc04ee3, - (q31_t)0x45afc6d0, (q31_t)0x3fbf3246, (q31_t)0x45bc4af8, (q31_t)0x3fbe1334, - (q31_t)0x45c8cee7, (q31_t)0x3fbcf1ad, (q31_t)0x45d5529e, (q31_t)0x3fbbcdb1, - (q31_t)0x45e1d61b, (q31_t)0x3fbaa740, (q31_t)0x45ee595d, (q31_t)0x3fb97e5a, - (q31_t)0x45fadc66, (q31_t)0x3fb852ff, (q31_t)0x46075f33, (q31_t)0x3fb7252f, - (q31_t)0x4613e1c5, (q31_t)0x3fb5f4ea, (q31_t)0x4620641a, (q31_t)0x3fb4c231, - (q31_t)0x462ce634, (q31_t)0x3fb38d02, (q31_t)0x46396810, (q31_t)0x3fb2555f, - (q31_t)0x4645e9af, (q31_t)0x3fb11b48, (q31_t)0x46526b10, (q31_t)0x3fafdebb, - (q31_t)0x465eec33, (q31_t)0x3fae9fbb, (q31_t)0x466b6d16, (q31_t)0x3fad5e45, - (q31_t)0x4677edbb, (q31_t)0x3fac1a5b, (q31_t)0x46846e1f, (q31_t)0x3faad3fd, - (q31_t)0x4690ee44, (q31_t)0x3fa98b2a, (q31_t)0x469d6e27, (q31_t)0x3fa83fe3, - (q31_t)0x46a9edc9, (q31_t)0x3fa6f228, (q31_t)0x46b66d29, (q31_t)0x3fa5a1f9, - (q31_t)0x46c2ec48, (q31_t)0x3fa44f55, (q31_t)0x46cf6b23, (q31_t)0x3fa2fa3d, - (q31_t)0x46dbe9bb, (q31_t)0x3fa1a2b2, (q31_t)0x46e86810, (q31_t)0x3fa048b2, - (q31_t)0x46f4e620, (q31_t)0x3f9eec3e, (q31_t)0x470163eb, (q31_t)0x3f9d8d56, - (q31_t)0x470de172, (q31_t)0x3f9c2bfb, (q31_t)0x471a5eb3, (q31_t)0x3f9ac82c, - (q31_t)0x4726dbae, (q31_t)0x3f9961e8, (q31_t)0x47335862, (q31_t)0x3f97f932, - (q31_t)0x473fd4cf, (q31_t)0x3f968e07, (q31_t)0x474c50f4, (q31_t)0x3f952069, - (q31_t)0x4758ccd2, (q31_t)0x3f93b058, (q31_t)0x47654867, (q31_t)0x3f923dd2, - (q31_t)0x4771c3b3, (q31_t)0x3f90c8da, (q31_t)0x477e3eb5, (q31_t)0x3f8f516e, - (q31_t)0x478ab96e, (q31_t)0x3f8dd78f, (q31_t)0x479733dc, (q31_t)0x3f8c5b3d, - (q31_t)0x47a3adff, (q31_t)0x3f8adc77, (q31_t)0x47b027d7, (q31_t)0x3f895b3e, - (q31_t)0x47bca163, (q31_t)0x3f87d792, (q31_t)0x47c91aa3, (q31_t)0x3f865174, - (q31_t)0x47d59396, (q31_t)0x3f84c8e2, (q31_t)0x47e20c3b, (q31_t)0x3f833ddd, - (q31_t)0x47ee8493, (q31_t)0x3f81b065, (q31_t)0x47fafc9c, (q31_t)0x3f80207b, - (q31_t)0x48077457, (q31_t)0x3f7e8e1e, (q31_t)0x4813ebc2, (q31_t)0x3f7cf94e, - (q31_t)0x482062de, (q31_t)0x3f7b620c, (q31_t)0x482cd9a9, (q31_t)0x3f79c857, - (q31_t)0x48395024, (q31_t)0x3f782c30, (q31_t)0x4845c64d, (q31_t)0x3f768d96, - (q31_t)0x48523c25, (q31_t)0x3f74ec8a, (q31_t)0x485eb1ab, (q31_t)0x3f73490b, - (q31_t)0x486b26de, (q31_t)0x3f71a31b, (q31_t)0x48779bbe, (q31_t)0x3f6ffab8, - (q31_t)0x4884104b, (q31_t)0x3f6e4fe3, (q31_t)0x48908483, (q31_t)0x3f6ca29c, - (q31_t)0x489cf867, (q31_t)0x3f6af2e3, (q31_t)0x48a96bf6, (q31_t)0x3f6940b8, - (q31_t)0x48b5df30, (q31_t)0x3f678c1c, (q31_t)0x48c25213, (q31_t)0x3f65d50d, - (q31_t)0x48cec4a0, (q31_t)0x3f641b8d, (q31_t)0x48db36d6, (q31_t)0x3f625f9b, - (q31_t)0x48e7a8b5, (q31_t)0x3f60a138, (q31_t)0x48f41a3c, (q31_t)0x3f5ee063, - (q31_t)0x49008b6a, (q31_t)0x3f5d1d1d, (q31_t)0x490cfc40, (q31_t)0x3f5b5765, - (q31_t)0x49196cbc, (q31_t)0x3f598f3c, (q31_t)0x4925dcdf, (q31_t)0x3f57c4a2, - (q31_t)0x49324ca7, (q31_t)0x3f55f796, (q31_t)0x493ebc14, (q31_t)0x3f54281a, - (q31_t)0x494b2b27, (q31_t)0x3f52562c, (q31_t)0x495799dd, (q31_t)0x3f5081cd, - (q31_t)0x49640837, (q31_t)0x3f4eaafe, (q31_t)0x49707635, (q31_t)0x3f4cd1be, - (q31_t)0x497ce3d5, (q31_t)0x3f4af60d, (q31_t)0x49895118, (q31_t)0x3f4917eb, - (q31_t)0x4995bdfd, (q31_t)0x3f473759, (q31_t)0x49a22a83, (q31_t)0x3f455456, - (q31_t)0x49ae96aa, (q31_t)0x3f436ee3, (q31_t)0x49bb0271, (q31_t)0x3f4186ff, - (q31_t)0x49c76dd8, (q31_t)0x3f3f9cab, (q31_t)0x49d3d8df, (q31_t)0x3f3dafe7, - (q31_t)0x49e04385, (q31_t)0x3f3bc0b3, (q31_t)0x49ecadc9, (q31_t)0x3f39cf0e, - (q31_t)0x49f917ac, (q31_t)0x3f37dafa, (q31_t)0x4a05812c, (q31_t)0x3f35e476, - (q31_t)0x4a11ea49, (q31_t)0x3f33eb81, (q31_t)0x4a1e5303, (q31_t)0x3f31f01d, - (q31_t)0x4a2abb59, (q31_t)0x3f2ff24a, (q31_t)0x4a37234a, (q31_t)0x3f2df206, - (q31_t)0x4a438ad7, (q31_t)0x3f2bef53, (q31_t)0x4a4ff1fe, (q31_t)0x3f29ea31, - (q31_t)0x4a5c58c0, (q31_t)0x3f27e29f, (q31_t)0x4a68bf1b, (q31_t)0x3f25d89e, - (q31_t)0x4a752510, (q31_t)0x3f23cc2e, (q31_t)0x4a818a9d, (q31_t)0x3f21bd4e, - (q31_t)0x4a8defc3, (q31_t)0x3f1fabff, (q31_t)0x4a9a5480, (q31_t)0x3f1d9842, - (q31_t)0x4aa6b8d5, (q31_t)0x3f1b8215, (q31_t)0x4ab31cc1, (q31_t)0x3f19697a, - (q31_t)0x4abf8043, (q31_t)0x3f174e70, (q31_t)0x4acbe35b, (q31_t)0x3f1530f7, - (q31_t)0x4ad84609, (q31_t)0x3f13110f, (q31_t)0x4ae4a84b, (q31_t)0x3f10eeb9, - (q31_t)0x4af10a22, (q31_t)0x3f0ec9f5, (q31_t)0x4afd6b8d, (q31_t)0x3f0ca2c2, - (q31_t)0x4b09cc8c, (q31_t)0x3f0a7921, (q31_t)0x4b162d1d, (q31_t)0x3f084d12, - (q31_t)0x4b228d42, (q31_t)0x3f061e95, (q31_t)0x4b2eecf8, (q31_t)0x3f03eda9, - (q31_t)0x4b3b4c40, (q31_t)0x3f01ba50, (q31_t)0x4b47ab19, (q31_t)0x3eff8489, - (q31_t)0x4b540982, (q31_t)0x3efd4c54, (q31_t)0x4b60677c, (q31_t)0x3efb11b1, - (q31_t)0x4b6cc506, (q31_t)0x3ef8d4a1, (q31_t)0x4b79221f, (q31_t)0x3ef69523, - (q31_t)0x4b857ec7, (q31_t)0x3ef45338, (q31_t)0x4b91dafc, (q31_t)0x3ef20ee0, - (q31_t)0x4b9e36c0, (q31_t)0x3eefc81a, (q31_t)0x4baa9211, (q31_t)0x3eed7ee7, - (q31_t)0x4bb6ecef, (q31_t)0x3eeb3347, (q31_t)0x4bc34759, (q31_t)0x3ee8e53a, - (q31_t)0x4bcfa150, (q31_t)0x3ee694c1, (q31_t)0x4bdbfad1, (q31_t)0x3ee441da, - (q31_t)0x4be853de, (q31_t)0x3ee1ec87, (q31_t)0x4bf4ac75, (q31_t)0x3edf94c7, - (q31_t)0x4c010496, (q31_t)0x3edd3a9a, (q31_t)0x4c0d5c41, (q31_t)0x3edade01, - (q31_t)0x4c19b374, (q31_t)0x3ed87efc, (q31_t)0x4c260a31, (q31_t)0x3ed61d8a, - (q31_t)0x4c326075, (q31_t)0x3ed3b9ad, (q31_t)0x4c3eb641, (q31_t)0x3ed15363, - (q31_t)0x4c4b0b94, (q31_t)0x3eceeaad, (q31_t)0x4c57606e, (q31_t)0x3ecc7f8b, - (q31_t)0x4c63b4ce, (q31_t)0x3eca11fe, (q31_t)0x4c7008b3, (q31_t)0x3ec7a205, - (q31_t)0x4c7c5c1e, (q31_t)0x3ec52fa0, (q31_t)0x4c88af0e, (q31_t)0x3ec2bad0, - (q31_t)0x4c950182, (q31_t)0x3ec04394, (q31_t)0x4ca1537a, (q31_t)0x3ebdc9ed, - (q31_t)0x4cada4f5, (q31_t)0x3ebb4ddb, (q31_t)0x4cb9f5f3, (q31_t)0x3eb8cf5d, - (q31_t)0x4cc64673, (q31_t)0x3eb64e75, (q31_t)0x4cd29676, (q31_t)0x3eb3cb21, - (q31_t)0x4cdee5f9, (q31_t)0x3eb14563, (q31_t)0x4ceb34fe, (q31_t)0x3eaebd3a, - (q31_t)0x4cf78383, (q31_t)0x3eac32a6, (q31_t)0x4d03d189, (q31_t)0x3ea9a5a8, - (q31_t)0x4d101f0e, (q31_t)0x3ea7163f, (q31_t)0x4d1c6c11, (q31_t)0x3ea4846c, - (q31_t)0x4d28b894, (q31_t)0x3ea1f02f, (q31_t)0x4d350495, (q31_t)0x3e9f5988, - (q31_t)0x4d415013, (q31_t)0x3e9cc076, (q31_t)0x4d4d9b0e, (q31_t)0x3e9a24fb, - (q31_t)0x4d59e586, (q31_t)0x3e978715, (q31_t)0x4d662f7b, (q31_t)0x3e94e6c6, - (q31_t)0x4d7278eb, (q31_t)0x3e92440d, (q31_t)0x4d7ec1d6, (q31_t)0x3e8f9eeb, - (q31_t)0x4d8b0a3d, (q31_t)0x3e8cf75f, (q31_t)0x4d97521d, (q31_t)0x3e8a4d6a, - (q31_t)0x4da39978, (q31_t)0x3e87a10c, (q31_t)0x4dafe04b, (q31_t)0x3e84f245, - (q31_t)0x4dbc2698, (q31_t)0x3e824114, (q31_t)0x4dc86c5d, (q31_t)0x3e7f8d7b, - (q31_t)0x4dd4b19a, (q31_t)0x3e7cd778, (q31_t)0x4de0f64f, (q31_t)0x3e7a1f0d, - (q31_t)0x4ded3a7b, (q31_t)0x3e77643a, (q31_t)0x4df97e1d, (q31_t)0x3e74a6fd, - (q31_t)0x4e05c135, (q31_t)0x3e71e759, (q31_t)0x4e1203c3, (q31_t)0x3e6f254c, - (q31_t)0x4e1e45c6, (q31_t)0x3e6c60d7, (q31_t)0x4e2a873e, (q31_t)0x3e6999fa, - (q31_t)0x4e36c82a, (q31_t)0x3e66d0b4, (q31_t)0x4e430889, (q31_t)0x3e640507, - (q31_t)0x4e4f485c, (q31_t)0x3e6136f3, (q31_t)0x4e5b87a2, (q31_t)0x3e5e6676, - (q31_t)0x4e67c65a, (q31_t)0x3e5b9392, (q31_t)0x4e740483, (q31_t)0x3e58be47, - (q31_t)0x4e80421e, (q31_t)0x3e55e694, (q31_t)0x4e8c7f2a, (q31_t)0x3e530c7a, - (q31_t)0x4e98bba7, (q31_t)0x3e502ff9, (q31_t)0x4ea4f793, (q31_t)0x3e4d5110, - (q31_t)0x4eb132ef, (q31_t)0x3e4a6fc1, (q31_t)0x4ebd6db9, (q31_t)0x3e478c0b, - (q31_t)0x4ec9a7f3, (q31_t)0x3e44a5ef, (q31_t)0x4ed5e19a, (q31_t)0x3e41bd6c, - (q31_t)0x4ee21aaf, (q31_t)0x3e3ed282, (q31_t)0x4eee5331, (q31_t)0x3e3be532, - (q31_t)0x4efa8b20, (q31_t)0x3e38f57c, (q31_t)0x4f06c27a, (q31_t)0x3e360360, - (q31_t)0x4f12f941, (q31_t)0x3e330ede, (q31_t)0x4f1f2f73, (q31_t)0x3e3017f6, - (q31_t)0x4f2b650f, (q31_t)0x3e2d1ea8, (q31_t)0x4f379a16, (q31_t)0x3e2a22f4, - (q31_t)0x4f43ce86, (q31_t)0x3e2724db, (q31_t)0x4f500260, (q31_t)0x3e24245d, - (q31_t)0x4f5c35a3, (q31_t)0x3e212179, (q31_t)0x4f68684e, (q31_t)0x3e1e1c30, - (q31_t)0x4f749a61, (q31_t)0x3e1b1482, (q31_t)0x4f80cbdc, (q31_t)0x3e180a6f, - (q31_t)0x4f8cfcbe, (q31_t)0x3e14fdf7, (q31_t)0x4f992d06, (q31_t)0x3e11ef1b, - (q31_t)0x4fa55cb4, (q31_t)0x3e0eddd9, (q31_t)0x4fb18bc8, (q31_t)0x3e0bca34, - (q31_t)0x4fbdba40, (q31_t)0x3e08b42a, (q31_t)0x4fc9e81e, (q31_t)0x3e059bbb, - (q31_t)0x4fd6155f, (q31_t)0x3e0280e9, (q31_t)0x4fe24205, (q31_t)0x3dff63b2, - (q31_t)0x4fee6e0d, (q31_t)0x3dfc4418, (q31_t)0x4ffa9979, (q31_t)0x3df9221a, - (q31_t)0x5006c446, (q31_t)0x3df5fdb8, (q31_t)0x5012ee76, (q31_t)0x3df2d6f3, - (q31_t)0x501f1807, (q31_t)0x3defadca, (q31_t)0x502b40f8, (q31_t)0x3dec823e, - (q31_t)0x5037694b, (q31_t)0x3de9544f, (q31_t)0x504390fd, (q31_t)0x3de623fd, - (q31_t)0x504fb80e, (q31_t)0x3de2f148, (q31_t)0x505bde7f, (q31_t)0x3ddfbc30, - (q31_t)0x5068044e, (q31_t)0x3ddc84b5, (q31_t)0x5074297b, (q31_t)0x3dd94ad8, - (q31_t)0x50804e06, (q31_t)0x3dd60e99, (q31_t)0x508c71ee, (q31_t)0x3dd2cff7, - (q31_t)0x50989532, (q31_t)0x3dcf8ef3, (q31_t)0x50a4b7d3, (q31_t)0x3dcc4b8d, - (q31_t)0x50b0d9d0, (q31_t)0x3dc905c5, (q31_t)0x50bcfb28, (q31_t)0x3dc5bd9b, - (q31_t)0x50c91bda, (q31_t)0x3dc2730f, (q31_t)0x50d53be7, (q31_t)0x3dbf2622, - (q31_t)0x50e15b4e, (q31_t)0x3dbbd6d4, (q31_t)0x50ed7a0e, (q31_t)0x3db88524, - (q31_t)0x50f99827, (q31_t)0x3db53113, (q31_t)0x5105b599, (q31_t)0x3db1daa2, - (q31_t)0x5111d263, (q31_t)0x3dae81cf, (q31_t)0x511dee84, (q31_t)0x3dab269b, - (q31_t)0x512a09fc, (q31_t)0x3da7c907, (q31_t)0x513624cb, (q31_t)0x3da46912, - (q31_t)0x51423ef0, (q31_t)0x3da106bd, (q31_t)0x514e586a, (q31_t)0x3d9da208, - (q31_t)0x515a713a, (q31_t)0x3d9a3af2, (q31_t)0x5166895f, (q31_t)0x3d96d17d, - (q31_t)0x5172a0d7, (q31_t)0x3d9365a8, (q31_t)0x517eb7a4, (q31_t)0x3d8ff772, - (q31_t)0x518acdc4, (q31_t)0x3d8c86de, (q31_t)0x5196e337, (q31_t)0x3d8913ea, - (q31_t)0x51a2f7fc, (q31_t)0x3d859e96, (q31_t)0x51af0c13, (q31_t)0x3d8226e4, - (q31_t)0x51bb1f7c, (q31_t)0x3d7eacd2, (q31_t)0x51c73235, (q31_t)0x3d7b3061, - (q31_t)0x51d3443f, (q31_t)0x3d77b192, (q31_t)0x51df5599, (q31_t)0x3d743064, - (q31_t)0x51eb6643, (q31_t)0x3d70acd7, (q31_t)0x51f7763c, (q31_t)0x3d6d26ec, - (q31_t)0x52038584, (q31_t)0x3d699ea3, (q31_t)0x520f941a, (q31_t)0x3d6613fb, - (q31_t)0x521ba1fd, (q31_t)0x3d6286f6, (q31_t)0x5227af2e, (q31_t)0x3d5ef793, - (q31_t)0x5233bbac, (q31_t)0x3d5b65d2, (q31_t)0x523fc776, (q31_t)0x3d57d1b3, - (q31_t)0x524bd28c, (q31_t)0x3d543b37, (q31_t)0x5257dced, (q31_t)0x3d50a25e, - (q31_t)0x5263e699, (q31_t)0x3d4d0728, (q31_t)0x526fef90, (q31_t)0x3d496994, - (q31_t)0x527bf7d1, (q31_t)0x3d45c9a4, (q31_t)0x5287ff5b, (q31_t)0x3d422757, - (q31_t)0x5294062f, (q31_t)0x3d3e82ae, (q31_t)0x52a00c4b, (q31_t)0x3d3adba7, - (q31_t)0x52ac11af, (q31_t)0x3d373245, (q31_t)0x52b8165b, (q31_t)0x3d338687, - (q31_t)0x52c41a4f, (q31_t)0x3d2fd86c, (q31_t)0x52d01d89, (q31_t)0x3d2c27f6, - (q31_t)0x52dc2009, (q31_t)0x3d287523, (q31_t)0x52e821cf, (q31_t)0x3d24bff6, - (q31_t)0x52f422db, (q31_t)0x3d21086c, (q31_t)0x5300232c, (q31_t)0x3d1d4e88, - (q31_t)0x530c22c1, (q31_t)0x3d199248, (q31_t)0x5318219a, (q31_t)0x3d15d3ad, - (q31_t)0x53241fb6, (q31_t)0x3d1212b7, (q31_t)0x53301d16, (q31_t)0x3d0e4f67, - (q31_t)0x533c19b8, (q31_t)0x3d0a89bc, (q31_t)0x5348159d, (q31_t)0x3d06c1b6, - (q31_t)0x535410c3, (q31_t)0x3d02f757, (q31_t)0x53600b2a, (q31_t)0x3cff2a9d, - (q31_t)0x536c04d2, (q31_t)0x3cfb5b89, (q31_t)0x5377fdbb, (q31_t)0x3cf78a1b, - (q31_t)0x5383f5e3, (q31_t)0x3cf3b653, (q31_t)0x538fed4b, (q31_t)0x3cefe032, - (q31_t)0x539be3f2, (q31_t)0x3cec07b8, (q31_t)0x53a7d9d7, (q31_t)0x3ce82ce4, - (q31_t)0x53b3cefa, (q31_t)0x3ce44fb7, (q31_t)0x53bfc35b, (q31_t)0x3ce07031, - (q31_t)0x53cbb6f8, (q31_t)0x3cdc8e52, (q31_t)0x53d7a9d3, (q31_t)0x3cd8aa1b, - (q31_t)0x53e39be9, (q31_t)0x3cd4c38b, (q31_t)0x53ef8d3c, (q31_t)0x3cd0daa2, - (q31_t)0x53fb7dc9, (q31_t)0x3cccef62, (q31_t)0x54076d91, (q31_t)0x3cc901c9, - (q31_t)0x54135c94, (q31_t)0x3cc511d9, (q31_t)0x541f4ad1, (q31_t)0x3cc11f90, - (q31_t)0x542b3846, (q31_t)0x3cbd2af0, (q31_t)0x543724f5, (q31_t)0x3cb933f9, - (q31_t)0x544310dd, (q31_t)0x3cb53aaa, (q31_t)0x544efbfc, (q31_t)0x3cb13f04, - (q31_t)0x545ae653, (q31_t)0x3cad4107, (q31_t)0x5466cfe1, (q31_t)0x3ca940b3, - (q31_t)0x5472b8a5, (q31_t)0x3ca53e09, (q31_t)0x547ea0a0, (q31_t)0x3ca13908, - (q31_t)0x548a87d1, (q31_t)0x3c9d31b0, (q31_t)0x54966e36, (q31_t)0x3c992803, - (q31_t)0x54a253d1, (q31_t)0x3c951bff, (q31_t)0x54ae38a0, (q31_t)0x3c910da5, - (q31_t)0x54ba1ca3, (q31_t)0x3c8cfcf6, (q31_t)0x54c5ffd9, (q31_t)0x3c88e9f1, - (q31_t)0x54d1e242, (q31_t)0x3c84d496, (q31_t)0x54ddc3de, (q31_t)0x3c80bce7, - (q31_t)0x54e9a4ac, (q31_t)0x3c7ca2e2, (q31_t)0x54f584ac, (q31_t)0x3c788688, - (q31_t)0x550163dc, (q31_t)0x3c7467d9, (q31_t)0x550d423d, (q31_t)0x3c7046d6, - (q31_t)0x55191fcf, (q31_t)0x3c6c237e, (q31_t)0x5524fc90, (q31_t)0x3c67fdd1, - (q31_t)0x5530d881, (q31_t)0x3c63d5d1, (q31_t)0x553cb3a0, (q31_t)0x3c5fab7c, - (q31_t)0x55488dee, (q31_t)0x3c5b7ed4, (q31_t)0x5554676a, (q31_t)0x3c574fd8, - (q31_t)0x55604013, (q31_t)0x3c531e88, (q31_t)0x556c17e9, (q31_t)0x3c4eeae5, - (q31_t)0x5577eeec, (q31_t)0x3c4ab4ef, (q31_t)0x5583c51b, (q31_t)0x3c467ca6, - (q31_t)0x558f9a76, (q31_t)0x3c42420a, (q31_t)0x559b6efb, (q31_t)0x3c3e051b, - (q31_t)0x55a742ac, (q31_t)0x3c39c5da, (q31_t)0x55b31587, (q31_t)0x3c358446, - (q31_t)0x55bee78c, (q31_t)0x3c314060, (q31_t)0x55cab8ba, (q31_t)0x3c2cfa28, - (q31_t)0x55d68911, (q31_t)0x3c28b19e, (q31_t)0x55e25890, (q31_t)0x3c2466c2, - (q31_t)0x55ee2738, (q31_t)0x3c201994, (q31_t)0x55f9f507, (q31_t)0x3c1bca16, - (q31_t)0x5605c1fd, (q31_t)0x3c177845, (q31_t)0x56118e1a, (q31_t)0x3c132424, - (q31_t)0x561d595d, (q31_t)0x3c0ecdb2, (q31_t)0x562923c5, (q31_t)0x3c0a74f0, - (q31_t)0x5634ed53, (q31_t)0x3c0619dc, (q31_t)0x5640b606, (q31_t)0x3c01bc78, - (q31_t)0x564c7ddd, (q31_t)0x3bfd5cc4, (q31_t)0x565844d8, (q31_t)0x3bf8fac0, - (q31_t)0x56640af7, (q31_t)0x3bf4966c, (q31_t)0x566fd039, (q31_t)0x3bf02fc9, - (q31_t)0x567b949d, (q31_t)0x3bebc6d5, (q31_t)0x56875823, (q31_t)0x3be75b93, - (q31_t)0x56931acb, (q31_t)0x3be2ee01, (q31_t)0x569edc94, (q31_t)0x3bde7e20, - (q31_t)0x56aa9d7e, (q31_t)0x3bda0bf0, (q31_t)0x56b65d88, (q31_t)0x3bd59771, - (q31_t)0x56c21cb2, (q31_t)0x3bd120a4, (q31_t)0x56cddafb, (q31_t)0x3bcca789, - (q31_t)0x56d99864, (q31_t)0x3bc82c1f, (q31_t)0x56e554ea, (q31_t)0x3bc3ae67, - (q31_t)0x56f1108f, (q31_t)0x3bbf2e62, (q31_t)0x56fccb51, (q31_t)0x3bbaac0e, - (q31_t)0x57088531, (q31_t)0x3bb6276e, (q31_t)0x57143e2d, (q31_t)0x3bb1a080, - (q31_t)0x571ff646, (q31_t)0x3bad1744, (q31_t)0x572bad7a, (q31_t)0x3ba88bbc, - (q31_t)0x573763c9, (q31_t)0x3ba3fde7, (q31_t)0x57431933, (q31_t)0x3b9f6dc5, - (q31_t)0x574ecdb8, (q31_t)0x3b9adb57, (q31_t)0x575a8157, (q31_t)0x3b96469d, - (q31_t)0x5766340f, (q31_t)0x3b91af97, (q31_t)0x5771e5e0, (q31_t)0x3b8d1644, - (q31_t)0x577d96ca, (q31_t)0x3b887aa6, (q31_t)0x578946cc, (q31_t)0x3b83dcbc, - (q31_t)0x5794f5e6, (q31_t)0x3b7f3c87, (q31_t)0x57a0a417, (q31_t)0x3b7a9a07, - (q31_t)0x57ac515f, (q31_t)0x3b75f53c, (q31_t)0x57b7fdbd, (q31_t)0x3b714e25, - (q31_t)0x57c3a931, (q31_t)0x3b6ca4c4, (q31_t)0x57cf53bb, (q31_t)0x3b67f919, - (q31_t)0x57dafd59, (q31_t)0x3b634b23, (q31_t)0x57e6a60c, (q31_t)0x3b5e9ae4, - (q31_t)0x57f24dd3, (q31_t)0x3b59e85a, (q31_t)0x57fdf4ae, (q31_t)0x3b553386, - (q31_t)0x58099a9c, (q31_t)0x3b507c69, (q31_t)0x58153f9d, (q31_t)0x3b4bc303, - (q31_t)0x5820e3b0, (q31_t)0x3b470753, (q31_t)0x582c86d5, (q31_t)0x3b42495a, - (q31_t)0x5838290c, (q31_t)0x3b3d8918, (q31_t)0x5843ca53, (q31_t)0x3b38c68e, - (q31_t)0x584f6aab, (q31_t)0x3b3401bb, (q31_t)0x585b0a13, (q31_t)0x3b2f3aa0, - (q31_t)0x5866a88a, (q31_t)0x3b2a713d, (q31_t)0x58724611, (q31_t)0x3b25a591, - (q31_t)0x587de2a7, (q31_t)0x3b20d79e, (q31_t)0x58897e4a, (q31_t)0x3b1c0764, - (q31_t)0x589518fc, (q31_t)0x3b1734e2, (q31_t)0x58a0b2bb, (q31_t)0x3b126019, - (q31_t)0x58ac4b87, (q31_t)0x3b0d8909, (q31_t)0x58b7e35f, (q31_t)0x3b08afb2, - (q31_t)0x58c37a44, (q31_t)0x3b03d414, (q31_t)0x58cf1034, (q31_t)0x3afef630, - (q31_t)0x58daa52f, (q31_t)0x3afa1605, (q31_t)0x58e63935, (q31_t)0x3af53395, - (q31_t)0x58f1cc45, (q31_t)0x3af04edf, (q31_t)0x58fd5e5f, (q31_t)0x3aeb67e3, - (q31_t)0x5908ef82, (q31_t)0x3ae67ea1, (q31_t)0x59147fae, (q31_t)0x3ae1931a, - (q31_t)0x59200ee3, (q31_t)0x3adca54e, (q31_t)0x592b9d1f, (q31_t)0x3ad7b53d, - (q31_t)0x59372a64, (q31_t)0x3ad2c2e8, (q31_t)0x5942b6af, (q31_t)0x3acdce4d, - (q31_t)0x594e4201, (q31_t)0x3ac8d76f, (q31_t)0x5959cc5a, (q31_t)0x3ac3de4c, - (q31_t)0x596555b8, (q31_t)0x3abee2e5, (q31_t)0x5970de1b, (q31_t)0x3ab9e53a, - (q31_t)0x597c6584, (q31_t)0x3ab4e54c, (q31_t)0x5987ebf0, (q31_t)0x3aafe31b, - (q31_t)0x59937161, (q31_t)0x3aaadea6, (q31_t)0x599ef5d6, (q31_t)0x3aa5d7ee, - (q31_t)0x59aa794d, (q31_t)0x3aa0cef3, (q31_t)0x59b5fbc8, (q31_t)0x3a9bc3b6, - (q31_t)0x59c17d44, (q31_t)0x3a96b636, (q31_t)0x59ccfdc2, (q31_t)0x3a91a674, - (q31_t)0x59d87d42, (q31_t)0x3a8c9470, (q31_t)0x59e3fbc3, (q31_t)0x3a87802a, - (q31_t)0x59ef7944, (q31_t)0x3a8269a3, (q31_t)0x59faf5c5, (q31_t)0x3a7d50da, - (q31_t)0x5a067145, (q31_t)0x3a7835cf, (q31_t)0x5a11ebc5, (q31_t)0x3a731884, - (q31_t)0x5a1d6544, (q31_t)0x3a6df8f8, (q31_t)0x5a28ddc0, (q31_t)0x3a68d72b, - (q31_t)0x5a34553b, (q31_t)0x3a63b31d, (q31_t)0x5a3fcbb3, (q31_t)0x3a5e8cd0, - (q31_t)0x5a4b4128, (q31_t)0x3a596442, (q31_t)0x5a56b599, (q31_t)0x3a543974, - (q31_t)0x5a622907, (q31_t)0x3a4f0c67, (q31_t)0x5a6d9b70, (q31_t)0x3a49dd1a, - (q31_t)0x5a790cd4, (q31_t)0x3a44ab8e, (q31_t)0x5a847d33, (q31_t)0x3a3f77c3, - (q31_t)0x5a8fec8c, (q31_t)0x3a3a41b9, (q31_t)0x5a9b5adf, (q31_t)0x3a350970, - (q31_t)0x5aa6c82b, (q31_t)0x3a2fcee8, (q31_t)0x5ab23471, (q31_t)0x3a2a9223, - (q31_t)0x5abd9faf, (q31_t)0x3a25531f, (q31_t)0x5ac909e5, (q31_t)0x3a2011de, - (q31_t)0x5ad47312, (q31_t)0x3a1ace5f, (q31_t)0x5adfdb37, (q31_t)0x3a1588a2, - (q31_t)0x5aeb4253, (q31_t)0x3a1040a8, (q31_t)0x5af6a865, (q31_t)0x3a0af671, - (q31_t)0x5b020d6c, (q31_t)0x3a05a9fd, (q31_t)0x5b0d716a, (q31_t)0x3a005b4d, - (q31_t)0x5b18d45c, (q31_t)0x39fb0a60, (q31_t)0x5b243643, (q31_t)0x39f5b737, - (q31_t)0x5b2f971e, (q31_t)0x39f061d2, (q31_t)0x5b3af6ec, (q31_t)0x39eb0a31, - (q31_t)0x5b4655ae, (q31_t)0x39e5b054, (q31_t)0x5b51b363, (q31_t)0x39e0543c, - (q31_t)0x5b5d100a, (q31_t)0x39daf5e8, (q31_t)0x5b686ba3, (q31_t)0x39d5955a, - (q31_t)0x5b73c62d, (q31_t)0x39d03291, (q31_t)0x5b7f1fa9, (q31_t)0x39cacd8d, - (q31_t)0x5b8a7815, (q31_t)0x39c5664f, (q31_t)0x5b95cf71, (q31_t)0x39bffcd7, - (q31_t)0x5ba125bd, (q31_t)0x39ba9125, (q31_t)0x5bac7af9, (q31_t)0x39b52339, - (q31_t)0x5bb7cf23, (q31_t)0x39afb313, (q31_t)0x5bc3223c, (q31_t)0x39aa40b4, - (q31_t)0x5bce7442, (q31_t)0x39a4cc1c, (q31_t)0x5bd9c537, (q31_t)0x399f554b, - (q31_t)0x5be51518, (q31_t)0x3999dc42, (q31_t)0x5bf063e6, (q31_t)0x399460ff, - (q31_t)0x5bfbb1a0, (q31_t)0x398ee385, (q31_t)0x5c06fe46, (q31_t)0x398963d2, - (q31_t)0x5c1249d8, (q31_t)0x3983e1e8, (q31_t)0x5c1d9454, (q31_t)0x397e5dc6, - (q31_t)0x5c28ddbb, (q31_t)0x3978d76c, (q31_t)0x5c34260c, (q31_t)0x39734edc, - (q31_t)0x5c3f6d47, (q31_t)0x396dc414, (q31_t)0x5c4ab36b, (q31_t)0x39683715, - (q31_t)0x5c55f878, (q31_t)0x3962a7e0, (q31_t)0x5c613c6d, (q31_t)0x395d1675, - (q31_t)0x5c6c7f4a, (q31_t)0x395782d3, (q31_t)0x5c77c10e, (q31_t)0x3951ecfc, - (q31_t)0x5c8301b9, (q31_t)0x394c54ee, (q31_t)0x5c8e414b, (q31_t)0x3946baac, - (q31_t)0x5c997fc4, (q31_t)0x39411e33, (q31_t)0x5ca4bd21, (q31_t)0x393b7f86, - (q31_t)0x5caff965, (q31_t)0x3935dea4, (q31_t)0x5cbb348d, (q31_t)0x39303b8e, - (q31_t)0x5cc66e99, (q31_t)0x392a9642, (q31_t)0x5cd1a78a, (q31_t)0x3924eec3, - (q31_t)0x5cdcdf5e, (q31_t)0x391f4510, (q31_t)0x5ce81615, (q31_t)0x39199929, - (q31_t)0x5cf34baf, (q31_t)0x3913eb0e, (q31_t)0x5cfe802b, (q31_t)0x390e3ac0, - (q31_t)0x5d09b389, (q31_t)0x3908883f, (q31_t)0x5d14e5c9, (q31_t)0x3902d38b, - (q31_t)0x5d2016e9, (q31_t)0x38fd1ca4, (q31_t)0x5d2b46ea, (q31_t)0x38f7638b, - (q31_t)0x5d3675cb, (q31_t)0x38f1a840, (q31_t)0x5d41a38c, (q31_t)0x38ebeac2, - (q31_t)0x5d4cd02c, (q31_t)0x38e62b13, (q31_t)0x5d57fbaa, (q31_t)0x38e06932, - (q31_t)0x5d632608, (q31_t)0x38daa520, (q31_t)0x5d6e4f43, (q31_t)0x38d4dedd, - (q31_t)0x5d79775c, (q31_t)0x38cf1669, (q31_t)0x5d849e51, (q31_t)0x38c94bc4, - (q31_t)0x5d8fc424, (q31_t)0x38c37eef, (q31_t)0x5d9ae8d2, (q31_t)0x38bdafea, - (q31_t)0x5da60c5d, (q31_t)0x38b7deb4, (q31_t)0x5db12ec3, (q31_t)0x38b20b4f, - (q31_t)0x5dbc5004, (q31_t)0x38ac35ba, (q31_t)0x5dc7701f, (q31_t)0x38a65df6, - (q31_t)0x5dd28f15, (q31_t)0x38a08402, (q31_t)0x5dddace4, (q31_t)0x389aa7e0, - (q31_t)0x5de8c98c, (q31_t)0x3894c98f, (q31_t)0x5df3e50d, (q31_t)0x388ee910, - (q31_t)0x5dfeff67, (q31_t)0x38890663, (q31_t)0x5e0a1898, (q31_t)0x38832187, - (q31_t)0x5e1530a1, (q31_t)0x387d3a7e, (q31_t)0x5e204781, (q31_t)0x38775147, - (q31_t)0x5e2b5d38, (q31_t)0x387165e3, (q31_t)0x5e3671c5, (q31_t)0x386b7852, - (q31_t)0x5e418528, (q31_t)0x38658894, (q31_t)0x5e4c9760, (q31_t)0x385f96a9, - (q31_t)0x5e57a86d, (q31_t)0x3859a292, (q31_t)0x5e62b84f, (q31_t)0x3853ac4f, - (q31_t)0x5e6dc705, (q31_t)0x384db3e0, (q31_t)0x5e78d48e, (q31_t)0x3847b946, - (q31_t)0x5e83e0eb, (q31_t)0x3841bc7f, (q31_t)0x5e8eec1b, (q31_t)0x383bbd8e, - (q31_t)0x5e99f61d, (q31_t)0x3835bc71, (q31_t)0x5ea4fef0, (q31_t)0x382fb92a, - (q31_t)0x5eb00696, (q31_t)0x3829b3b9, (q31_t)0x5ebb0d0d, (q31_t)0x3823ac1d, - (q31_t)0x5ec61254, (q31_t)0x381da256, (q31_t)0x5ed1166b, (q31_t)0x38179666, - (q31_t)0x5edc1953, (q31_t)0x3811884d, (q31_t)0x5ee71b0a, (q31_t)0x380b780a, - (q31_t)0x5ef21b90, (q31_t)0x3805659e, (q31_t)0x5efd1ae4, (q31_t)0x37ff5109, - (q31_t)0x5f081907, (q31_t)0x37f93a4b, (q31_t)0x5f1315f7, (q31_t)0x37f32165, - (q31_t)0x5f1e11b5, (q31_t)0x37ed0657, (q31_t)0x5f290c3f, (q31_t)0x37e6e921, - (q31_t)0x5f340596, (q31_t)0x37e0c9c3, (q31_t)0x5f3efdb9, (q31_t)0x37daa83d, - (q31_t)0x5f49f4a8, (q31_t)0x37d48490, (q31_t)0x5f54ea62, (q31_t)0x37ce5ebd, - (q31_t)0x5f5fdee6, (q31_t)0x37c836c2, (q31_t)0x5f6ad235, (q31_t)0x37c20ca1, - (q31_t)0x5f75c44e, (q31_t)0x37bbe05a, (q31_t)0x5f80b531, (q31_t)0x37b5b1ec, - (q31_t)0x5f8ba4dc, (q31_t)0x37af8159, (q31_t)0x5f969350, (q31_t)0x37a94ea0, - (q31_t)0x5fa1808c, (q31_t)0x37a319c2, (q31_t)0x5fac6c91, (q31_t)0x379ce2be, - (q31_t)0x5fb7575c, (q31_t)0x3796a996, (q31_t)0x5fc240ef, (q31_t)0x37906e49, - (q31_t)0x5fcd2948, (q31_t)0x378a30d8, (q31_t)0x5fd81067, (q31_t)0x3783f143, - (q31_t)0x5fe2f64c, (q31_t)0x377daf89, (q31_t)0x5feddaf6, (q31_t)0x37776bac, - (q31_t)0x5ff8be65, (q31_t)0x377125ac, (q31_t)0x6003a099, (q31_t)0x376add88, - (q31_t)0x600e8190, (q31_t)0x37649341, (q31_t)0x6019614c, (q31_t)0x375e46d8, - (q31_t)0x60243fca, (q31_t)0x3757f84c, (q31_t)0x602f1d0b, (q31_t)0x3751a79e, - (q31_t)0x6039f90f, (q31_t)0x374b54ce, (q31_t)0x6044d3d4, (q31_t)0x3744ffdd, - (q31_t)0x604fad5b, (q31_t)0x373ea8ca, (q31_t)0x605a85a3, (q31_t)0x37384f95, - (q31_t)0x60655cac, (q31_t)0x3731f440, (q31_t)0x60703275, (q31_t)0x372b96ca, - (q31_t)0x607b06fe, (q31_t)0x37253733, (q31_t)0x6085da46, (q31_t)0x371ed57c, - (q31_t)0x6090ac4d, (q31_t)0x371871a5, (q31_t)0x609b7d13, (q31_t)0x37120bae, - (q31_t)0x60a64c97, (q31_t)0x370ba398, (q31_t)0x60b11ad9, (q31_t)0x37053962, - (q31_t)0x60bbe7d8, (q31_t)0x36fecd0e, (q31_t)0x60c6b395, (q31_t)0x36f85e9a, - (q31_t)0x60d17e0d, (q31_t)0x36f1ee09, (q31_t)0x60dc4742, (q31_t)0x36eb7b58, - (q31_t)0x60e70f32, (q31_t)0x36e5068a, (q31_t)0x60f1d5de, (q31_t)0x36de8f9e, - (q31_t)0x60fc9b44, (q31_t)0x36d81695, (q31_t)0x61075f65, (q31_t)0x36d19b6e, - (q31_t)0x61122240, (q31_t)0x36cb1e2a, (q31_t)0x611ce3d5, (q31_t)0x36c49ec9, - (q31_t)0x6127a423, (q31_t)0x36be1d4c, (q31_t)0x61326329, (q31_t)0x36b799b3, - (q31_t)0x613d20e8, (q31_t)0x36b113fd, (q31_t)0x6147dd5f, (q31_t)0x36aa8c2c, - (q31_t)0x6152988d, (q31_t)0x36a4023f, (q31_t)0x615d5273, (q31_t)0x369d7637, - (q31_t)0x61680b0f, (q31_t)0x3696e814, (q31_t)0x6172c262, (q31_t)0x369057d6, - (q31_t)0x617d786a, (q31_t)0x3689c57d, (q31_t)0x61882d28, (q31_t)0x3683310b, - (q31_t)0x6192e09b, (q31_t)0x367c9a7e, (q31_t)0x619d92c2, (q31_t)0x367601d7, - (q31_t)0x61a8439e, (q31_t)0x366f6717, (q31_t)0x61b2f32e, (q31_t)0x3668ca3e, - (q31_t)0x61bda171, (q31_t)0x36622b4c, (q31_t)0x61c84e67, (q31_t)0x365b8a41, - (q31_t)0x61d2fa0f, (q31_t)0x3654e71d, (q31_t)0x61dda46a, (q31_t)0x364e41e2, - (q31_t)0x61e84d76, (q31_t)0x36479a8e, (q31_t)0x61f2f534, (q31_t)0x3640f123, - (q31_t)0x61fd9ba3, (q31_t)0x363a45a0, (q31_t)0x620840c2, (q31_t)0x36339806, - (q31_t)0x6212e492, (q31_t)0x362ce855, (q31_t)0x621d8711, (q31_t)0x3626368d, - (q31_t)0x6228283f, (q31_t)0x361f82af, (q31_t)0x6232c81c, (q31_t)0x3618ccba, - (q31_t)0x623d66a8, (q31_t)0x361214b0, (q31_t)0x624803e2, (q31_t)0x360b5a90, - (q31_t)0x62529fca, (q31_t)0x36049e5b, (q31_t)0x625d3a5e, (q31_t)0x35fde011, - (q31_t)0x6267d3a0, (q31_t)0x35f71fb1, (q31_t)0x62726b8e, (q31_t)0x35f05d3d, - (q31_t)0x627d0228, (q31_t)0x35e998b5, (q31_t)0x6287976e, (q31_t)0x35e2d219, - (q31_t)0x62922b5e, (q31_t)0x35dc0968, (q31_t)0x629cbdfa, (q31_t)0x35d53ea5, - (q31_t)0x62a74f40, (q31_t)0x35ce71ce, (q31_t)0x62b1df30, (q31_t)0x35c7a2e3, - (q31_t)0x62bc6dca, (q31_t)0x35c0d1e7, (q31_t)0x62c6fb0c, (q31_t)0x35b9fed7, - (q31_t)0x62d186f8, (q31_t)0x35b329b5, (q31_t)0x62dc118c, (q31_t)0x35ac5282, - (q31_t)0x62e69ac8, (q31_t)0x35a5793c, (q31_t)0x62f122ab, (q31_t)0x359e9de5, - (q31_t)0x62fba936, (q31_t)0x3597c07d, (q31_t)0x63062e67, (q31_t)0x3590e104, - (q31_t)0x6310b23e, (q31_t)0x3589ff7a, (q31_t)0x631b34bc, (q31_t)0x35831be0, - (q31_t)0x6325b5df, (q31_t)0x357c3636, (q31_t)0x633035a7, (q31_t)0x35754e7c, - (q31_t)0x633ab414, (q31_t)0x356e64b2, (q31_t)0x63453125, (q31_t)0x356778d9, - (q31_t)0x634facda, (q31_t)0x35608af1, (q31_t)0x635a2733, (q31_t)0x35599afa, - (q31_t)0x6364a02e, (q31_t)0x3552a8f4, (q31_t)0x636f17cc, (q31_t)0x354bb4e1, - (q31_t)0x63798e0d, (q31_t)0x3544bebf, (q31_t)0x638402ef, (q31_t)0x353dc68f, - (q31_t)0x638e7673, (q31_t)0x3536cc52, (q31_t)0x6398e898, (q31_t)0x352fd008, - (q31_t)0x63a3595e, (q31_t)0x3528d1b1, (q31_t)0x63adc8c4, (q31_t)0x3521d14d, - (q31_t)0x63b836ca, (q31_t)0x351acedd, (q31_t)0x63c2a36f, (q31_t)0x3513ca60, - (q31_t)0x63cd0eb3, (q31_t)0x350cc3d8, (q31_t)0x63d77896, (q31_t)0x3505bb44, - (q31_t)0x63e1e117, (q31_t)0x34feb0a5, (q31_t)0x63ec4837, (q31_t)0x34f7a3fb, - (q31_t)0x63f6adf3, (q31_t)0x34f09546, (q31_t)0x6401124d, (q31_t)0x34e98487, - (q31_t)0x640b7543, (q31_t)0x34e271bd, (q31_t)0x6415d6d5, (q31_t)0x34db5cea, - (q31_t)0x64203704, (q31_t)0x34d4460c, (q31_t)0x642a95ce, (q31_t)0x34cd2d26, - (q31_t)0x6434f332, (q31_t)0x34c61236, (q31_t)0x643f4f32, (q31_t)0x34bef53d, - (q31_t)0x6449a9cc, (q31_t)0x34b7d63c, (q31_t)0x645402ff, (q31_t)0x34b0b533, - (q31_t)0x645e5acc, (q31_t)0x34a99221, (q31_t)0x6468b132, (q31_t)0x34a26d08, - (q31_t)0x64730631, (q31_t)0x349b45e7, (q31_t)0x647d59c8, (q31_t)0x34941cbf, - (q31_t)0x6487abf7, (q31_t)0x348cf190, (q31_t)0x6491fcbe, (q31_t)0x3485c45b, - (q31_t)0x649c4c1b, (q31_t)0x347e951f, (q31_t)0x64a69a0f, (q31_t)0x347763dd, - (q31_t)0x64b0e699, (q31_t)0x34703095, (q31_t)0x64bb31ba, (q31_t)0x3468fb47, - (q31_t)0x64c57b6f, (q31_t)0x3461c3f5, (q31_t)0x64cfc3ba, (q31_t)0x345a8a9d, - (q31_t)0x64da0a9a, (q31_t)0x34534f41, (q31_t)0x64e4500e, (q31_t)0x344c11e0, - (q31_t)0x64ee9415, (q31_t)0x3444d27b, (q31_t)0x64f8d6b0, (q31_t)0x343d9112, - (q31_t)0x650317df, (q31_t)0x34364da6, (q31_t)0x650d57a0, (q31_t)0x342f0836, - (q31_t)0x651795f3, (q31_t)0x3427c0c3, (q31_t)0x6521d2d8, (q31_t)0x3420774d, - (q31_t)0x652c0e4f, (q31_t)0x34192bd5, (q31_t)0x65364857, (q31_t)0x3411de5b, - (q31_t)0x654080ef, (q31_t)0x340a8edf, (q31_t)0x654ab818, (q31_t)0x34033d61, - (q31_t)0x6554edd1, (q31_t)0x33fbe9e2, (q31_t)0x655f2219, (q31_t)0x33f49462, - (q31_t)0x656954f1, (q31_t)0x33ed3ce1, (q31_t)0x65738657, (q31_t)0x33e5e360, - (q31_t)0x657db64c, (q31_t)0x33de87de, (q31_t)0x6587e4cf, (q31_t)0x33d72a5d, - (q31_t)0x659211df, (q31_t)0x33cfcadc, (q31_t)0x659c3d7c, (q31_t)0x33c8695b, - (q31_t)0x65a667a7, (q31_t)0x33c105db, (q31_t)0x65b0905d, (q31_t)0x33b9a05d, - (q31_t)0x65bab7a0, (q31_t)0x33b238e0, (q31_t)0x65c4dd6e, (q31_t)0x33aacf65, - (q31_t)0x65cf01c8, (q31_t)0x33a363ec, (q31_t)0x65d924ac, (q31_t)0x339bf675, - (q31_t)0x65e3461b, (q31_t)0x33948701, (q31_t)0x65ed6614, (q31_t)0x338d1590, - (q31_t)0x65f78497, (q31_t)0x3385a222, (q31_t)0x6601a1a2, (q31_t)0x337e2cb7, - (q31_t)0x660bbd37, (q31_t)0x3376b551, (q31_t)0x6615d754, (q31_t)0x336f3bee, - (q31_t)0x661feffa, (q31_t)0x3367c090, (q31_t)0x662a0727, (q31_t)0x33604336, - (q31_t)0x66341cdb, (q31_t)0x3358c3e2, (q31_t)0x663e3117, (q31_t)0x33514292, - (q31_t)0x664843d9, (q31_t)0x3349bf48, (q31_t)0x66525521, (q31_t)0x33423a04, - (q31_t)0x665c64ef, (q31_t)0x333ab2c6, (q31_t)0x66667342, (q31_t)0x3333298f, - (q31_t)0x6670801a, (q31_t)0x332b9e5e, (q31_t)0x667a8b77, (q31_t)0x33241134, - (q31_t)0x66849558, (q31_t)0x331c8211, (q31_t)0x668e9dbd, (q31_t)0x3314f0f6, - (q31_t)0x6698a4a6, (q31_t)0x330d5de3, (q31_t)0x66a2aa11, (q31_t)0x3305c8d7, - (q31_t)0x66acadff, (q31_t)0x32fe31d5, (q31_t)0x66b6b070, (q31_t)0x32f698db, - (q31_t)0x66c0b162, (q31_t)0x32eefdea, (q31_t)0x66cab0d6, (q31_t)0x32e76102, - (q31_t)0x66d4aecb, (q31_t)0x32dfc224, (q31_t)0x66deab41, (q31_t)0x32d82150, - (q31_t)0x66e8a637, (q31_t)0x32d07e85, (q31_t)0x66f29fad, (q31_t)0x32c8d9c6, - (q31_t)0x66fc97a3, (q31_t)0x32c13311, (q31_t)0x67068e18, (q31_t)0x32b98a67, - (q31_t)0x6710830c, (q31_t)0x32b1dfc9, (q31_t)0x671a767e, (q31_t)0x32aa3336, - (q31_t)0x6724686e, (q31_t)0x32a284b0, (q31_t)0x672e58dc, (q31_t)0x329ad435, - (q31_t)0x673847c8, (q31_t)0x329321c7, (q31_t)0x67423530, (q31_t)0x328b6d66, - (q31_t)0x674c2115, (q31_t)0x3283b712, (q31_t)0x67560b76, (q31_t)0x327bfecc, - (q31_t)0x675ff452, (q31_t)0x32744493, (q31_t)0x6769dbaa, (q31_t)0x326c8868, - (q31_t)0x6773c17d, (q31_t)0x3264ca4c, (q31_t)0x677da5cb, (q31_t)0x325d0a3e, - (q31_t)0x67878893, (q31_t)0x32554840, (q31_t)0x679169d5, (q31_t)0x324d8450, - (q31_t)0x679b4990, (q31_t)0x3245be70, (q31_t)0x67a527c4, (q31_t)0x323df6a0, - (q31_t)0x67af0472, (q31_t)0x32362ce0, (q31_t)0x67b8df97, (q31_t)0x322e6130, - (q31_t)0x67c2b934, (q31_t)0x32269391, (q31_t)0x67cc9149, (q31_t)0x321ec403, - (q31_t)0x67d667d5, (q31_t)0x3216f287, (q31_t)0x67e03cd8, (q31_t)0x320f1f1c, - (q31_t)0x67ea1052, (q31_t)0x320749c3, (q31_t)0x67f3e241, (q31_t)0x31ff727c, - (q31_t)0x67fdb2a7, (q31_t)0x31f79948, (q31_t)0x68078181, (q31_t)0x31efbe27, - (q31_t)0x68114ed0, (q31_t)0x31e7e118, (q31_t)0x681b1a94, (q31_t)0x31e0021e, - (q31_t)0x6824e4cc, (q31_t)0x31d82137, (q31_t)0x682ead78, (q31_t)0x31d03e64, - (q31_t)0x68387498, (q31_t)0x31c859a5, (q31_t)0x68423a2a, (q31_t)0x31c072fb, - (q31_t)0x684bfe2f, (q31_t)0x31b88a66, (q31_t)0x6855c0a6, (q31_t)0x31b09fe7, - (q31_t)0x685f8190, (q31_t)0x31a8b37c, (q31_t)0x686940ea, (q31_t)0x31a0c528, - (q31_t)0x6872feb6, (q31_t)0x3198d4ea, (q31_t)0x687cbaf3, (q31_t)0x3190e2c3, - (q31_t)0x688675a0, (q31_t)0x3188eeb2, (q31_t)0x68902ebd, (q31_t)0x3180f8b8, - (q31_t)0x6899e64a, (q31_t)0x317900d6, (q31_t)0x68a39c46, (q31_t)0x3171070c, - (q31_t)0x68ad50b1, (q31_t)0x31690b59, (q31_t)0x68b7038b, (q31_t)0x31610dbf, - (q31_t)0x68c0b4d2, (q31_t)0x31590e3e, (q31_t)0x68ca6488, (q31_t)0x31510cd5, - (q31_t)0x68d412ab, (q31_t)0x31490986, (q31_t)0x68ddbf3b, (q31_t)0x31410450, - (q31_t)0x68e76a37, (q31_t)0x3138fd35, (q31_t)0x68f113a0, (q31_t)0x3130f433, - (q31_t)0x68fabb75, (q31_t)0x3128e94c, (q31_t)0x690461b5, (q31_t)0x3120dc80, - (q31_t)0x690e0661, (q31_t)0x3118cdcf, (q31_t)0x6917a977, (q31_t)0x3110bd39, - (q31_t)0x69214af8, (q31_t)0x3108aabf, (q31_t)0x692aeae3, (q31_t)0x31009661, - (q31_t)0x69348937, (q31_t)0x30f8801f, (q31_t)0x693e25f5, (q31_t)0x30f067fb, - (q31_t)0x6947c11c, (q31_t)0x30e84df3, (q31_t)0x69515aab, (q31_t)0x30e03208, - (q31_t)0x695af2a3, (q31_t)0x30d8143b, (q31_t)0x69648902, (q31_t)0x30cff48c, - (q31_t)0x696e1dc9, (q31_t)0x30c7d2fb, (q31_t)0x6977b0f7, (q31_t)0x30bfaf89, - (q31_t)0x6981428c, (q31_t)0x30b78a36, (q31_t)0x698ad287, (q31_t)0x30af6302, - (q31_t)0x699460e8, (q31_t)0x30a739ed, (q31_t)0x699dedaf, (q31_t)0x309f0ef8, - (q31_t)0x69a778db, (q31_t)0x3096e223, (q31_t)0x69b1026c, (q31_t)0x308eb36f, - (q31_t)0x69ba8a61, (q31_t)0x308682dc, (q31_t)0x69c410ba, (q31_t)0x307e5069, - (q31_t)0x69cd9578, (q31_t)0x30761c18, (q31_t)0x69d71899, (q31_t)0x306de5e9, - (q31_t)0x69e09a1c, (q31_t)0x3065addb, (q31_t)0x69ea1a03, (q31_t)0x305d73f0, - (q31_t)0x69f3984c, (q31_t)0x30553828, (q31_t)0x69fd14f6, (q31_t)0x304cfa83, - (q31_t)0x6a069003, (q31_t)0x3044bb00, (q31_t)0x6a100970, (q31_t)0x303c79a2, - (q31_t)0x6a19813f, (q31_t)0x30343667, (q31_t)0x6a22f76e, (q31_t)0x302bf151, - (q31_t)0x6a2c6bfd, (q31_t)0x3023aa5f, (q31_t)0x6a35deeb, (q31_t)0x301b6193, - (q31_t)0x6a3f503a, (q31_t)0x301316eb, (q31_t)0x6a48bfe7, (q31_t)0x300aca69, - (q31_t)0x6a522df3, (q31_t)0x30027c0c, (q31_t)0x6a5b9a5d, (q31_t)0x2ffa2bd6, - (q31_t)0x6a650525, (q31_t)0x2ff1d9c7, (q31_t)0x6a6e6e4b, (q31_t)0x2fe985de, - (q31_t)0x6a77d5ce, (q31_t)0x2fe1301c, (q31_t)0x6a813bae, (q31_t)0x2fd8d882, - (q31_t)0x6a8a9fea, (q31_t)0x2fd07f0f, (q31_t)0x6a940283, (q31_t)0x2fc823c5, - (q31_t)0x6a9d6377, (q31_t)0x2fbfc6a3, (q31_t)0x6aa6c2c6, (q31_t)0x2fb767aa, - (q31_t)0x6ab02071, (q31_t)0x2faf06da, (q31_t)0x6ab97c77, (q31_t)0x2fa6a433, - (q31_t)0x6ac2d6d6, (q31_t)0x2f9e3fb6, (q31_t)0x6acc2f90, (q31_t)0x2f95d963, - (q31_t)0x6ad586a3, (q31_t)0x2f8d713a, (q31_t)0x6adedc10, (q31_t)0x2f85073c, - (q31_t)0x6ae82fd5, (q31_t)0x2f7c9b69, (q31_t)0x6af181f3, (q31_t)0x2f742dc1, - (q31_t)0x6afad269, (q31_t)0x2f6bbe45, (q31_t)0x6b042137, (q31_t)0x2f634cf5, - (q31_t)0x6b0d6e5c, (q31_t)0x2f5ad9d1, (q31_t)0x6b16b9d9, (q31_t)0x2f5264da, - (q31_t)0x6b2003ac, (q31_t)0x2f49ee0f, (q31_t)0x6b294bd5, (q31_t)0x2f417573, - (q31_t)0x6b329255, (q31_t)0x2f38fb03, (q31_t)0x6b3bd72a, (q31_t)0x2f307ec2, - (q31_t)0x6b451a55, (q31_t)0x2f2800af, (q31_t)0x6b4e5bd4, (q31_t)0x2f1f80ca, - (q31_t)0x6b579ba8, (q31_t)0x2f16ff14, (q31_t)0x6b60d9d0, (q31_t)0x2f0e7b8e, - (q31_t)0x6b6a164d, (q31_t)0x2f05f637, (q31_t)0x6b73511c, (q31_t)0x2efd6f10, - (q31_t)0x6b7c8a3f, (q31_t)0x2ef4e619, (q31_t)0x6b85c1b5, (q31_t)0x2eec5b53, - (q31_t)0x6b8ef77d, (q31_t)0x2ee3cebe, (q31_t)0x6b982b97, (q31_t)0x2edb405a, - (q31_t)0x6ba15e03, (q31_t)0x2ed2b027, (q31_t)0x6baa8ec0, (q31_t)0x2eca1e27, - (q31_t)0x6bb3bdce, (q31_t)0x2ec18a58, (q31_t)0x6bbceb2d, (q31_t)0x2eb8f4bc, - (q31_t)0x6bc616dd, (q31_t)0x2eb05d53, (q31_t)0x6bcf40dc, (q31_t)0x2ea7c41e, - (q31_t)0x6bd8692b, (q31_t)0x2e9f291b, (q31_t)0x6be18fc9, (q31_t)0x2e968c4d, - (q31_t)0x6beab4b6, (q31_t)0x2e8dedb3, (q31_t)0x6bf3d7f2, (q31_t)0x2e854d4d, - (q31_t)0x6bfcf97c, (q31_t)0x2e7cab1c, (q31_t)0x6c061953, (q31_t)0x2e740720, - (q31_t)0x6c0f3779, (q31_t)0x2e6b615a, (q31_t)0x6c1853eb, (q31_t)0x2e62b9ca, - (q31_t)0x6c216eaa, (q31_t)0x2e5a1070, (q31_t)0x6c2a87b6, (q31_t)0x2e51654c, - (q31_t)0x6c339f0e, (q31_t)0x2e48b860, (q31_t)0x6c3cb4b1, (q31_t)0x2e4009aa, - (q31_t)0x6c45c8a0, (q31_t)0x2e37592c, (q31_t)0x6c4edada, (q31_t)0x2e2ea6e6, - (q31_t)0x6c57eb5e, (q31_t)0x2e25f2d8, (q31_t)0x6c60fa2d, (q31_t)0x2e1d3d03, - (q31_t)0x6c6a0746, (q31_t)0x2e148566, (q31_t)0x6c7312a9, (q31_t)0x2e0bcc03, - (q31_t)0x6c7c1c55, (q31_t)0x2e0310d9, (q31_t)0x6c85244a, (q31_t)0x2dfa53e9, - (q31_t)0x6c8e2a87, (q31_t)0x2df19534, (q31_t)0x6c972f0d, (q31_t)0x2de8d4b8, - (q31_t)0x6ca031da, (q31_t)0x2de01278, (q31_t)0x6ca932ef, (q31_t)0x2dd74e73, - (q31_t)0x6cb2324c, (q31_t)0x2dce88aa, (q31_t)0x6cbb2fef, (q31_t)0x2dc5c11c, - (q31_t)0x6cc42bd9, (q31_t)0x2dbcf7cb, (q31_t)0x6ccd2609, (q31_t)0x2db42cb6, - (q31_t)0x6cd61e7f, (q31_t)0x2dab5fdf, (q31_t)0x6cdf153a, (q31_t)0x2da29144, - (q31_t)0x6ce80a3a, (q31_t)0x2d99c0e7, (q31_t)0x6cf0fd80, (q31_t)0x2d90eec8, - (q31_t)0x6cf9ef09, (q31_t)0x2d881ae8, (q31_t)0x6d02ded7, (q31_t)0x2d7f4545, - (q31_t)0x6d0bcce8, (q31_t)0x2d766de2, (q31_t)0x6d14b93d, (q31_t)0x2d6d94bf, - (q31_t)0x6d1da3d5, (q31_t)0x2d64b9da, (q31_t)0x6d268cb0, (q31_t)0x2d5bdd36, - (q31_t)0x6d2f73cd, (q31_t)0x2d52fed2, (q31_t)0x6d38592c, (q31_t)0x2d4a1eaf, - (q31_t)0x6d413ccd, (q31_t)0x2d413ccd, (q31_t)0x6d4a1eaf, (q31_t)0x2d38592c, - (q31_t)0x6d52fed2, (q31_t)0x2d2f73cd, (q31_t)0x6d5bdd36, (q31_t)0x2d268cb0, - (q31_t)0x6d64b9da, (q31_t)0x2d1da3d5, (q31_t)0x6d6d94bf, (q31_t)0x2d14b93d, - (q31_t)0x6d766de2, (q31_t)0x2d0bcce8, (q31_t)0x6d7f4545, (q31_t)0x2d02ded7, - (q31_t)0x6d881ae8, (q31_t)0x2cf9ef09, (q31_t)0x6d90eec8, (q31_t)0x2cf0fd80, - (q31_t)0x6d99c0e7, (q31_t)0x2ce80a3a, (q31_t)0x6da29144, (q31_t)0x2cdf153a, - (q31_t)0x6dab5fdf, (q31_t)0x2cd61e7f, (q31_t)0x6db42cb6, (q31_t)0x2ccd2609, - (q31_t)0x6dbcf7cb, (q31_t)0x2cc42bd9, (q31_t)0x6dc5c11c, (q31_t)0x2cbb2fef, - (q31_t)0x6dce88aa, (q31_t)0x2cb2324c, (q31_t)0x6dd74e73, (q31_t)0x2ca932ef, - (q31_t)0x6de01278, (q31_t)0x2ca031da, (q31_t)0x6de8d4b8, (q31_t)0x2c972f0d, - (q31_t)0x6df19534, (q31_t)0x2c8e2a87, (q31_t)0x6dfa53e9, (q31_t)0x2c85244a, - (q31_t)0x6e0310d9, (q31_t)0x2c7c1c55, (q31_t)0x6e0bcc03, (q31_t)0x2c7312a9, - (q31_t)0x6e148566, (q31_t)0x2c6a0746, (q31_t)0x6e1d3d03, (q31_t)0x2c60fa2d, - (q31_t)0x6e25f2d8, (q31_t)0x2c57eb5e, (q31_t)0x6e2ea6e6, (q31_t)0x2c4edada, - (q31_t)0x6e37592c, (q31_t)0x2c45c8a0, (q31_t)0x6e4009aa, (q31_t)0x2c3cb4b1, - (q31_t)0x6e48b860, (q31_t)0x2c339f0e, (q31_t)0x6e51654c, (q31_t)0x2c2a87b6, - (q31_t)0x6e5a1070, (q31_t)0x2c216eaa, (q31_t)0x6e62b9ca, (q31_t)0x2c1853eb, - (q31_t)0x6e6b615a, (q31_t)0x2c0f3779, (q31_t)0x6e740720, (q31_t)0x2c061953, - (q31_t)0x6e7cab1c, (q31_t)0x2bfcf97c, (q31_t)0x6e854d4d, (q31_t)0x2bf3d7f2, - (q31_t)0x6e8dedb3, (q31_t)0x2beab4b6, (q31_t)0x6e968c4d, (q31_t)0x2be18fc9, - (q31_t)0x6e9f291b, (q31_t)0x2bd8692b, (q31_t)0x6ea7c41e, (q31_t)0x2bcf40dc, - (q31_t)0x6eb05d53, (q31_t)0x2bc616dd, (q31_t)0x6eb8f4bc, (q31_t)0x2bbceb2d, - (q31_t)0x6ec18a58, (q31_t)0x2bb3bdce, (q31_t)0x6eca1e27, (q31_t)0x2baa8ec0, - (q31_t)0x6ed2b027, (q31_t)0x2ba15e03, (q31_t)0x6edb405a, (q31_t)0x2b982b97, - (q31_t)0x6ee3cebe, (q31_t)0x2b8ef77d, (q31_t)0x6eec5b53, (q31_t)0x2b85c1b5, - (q31_t)0x6ef4e619, (q31_t)0x2b7c8a3f, (q31_t)0x6efd6f10, (q31_t)0x2b73511c, - (q31_t)0x6f05f637, (q31_t)0x2b6a164d, (q31_t)0x6f0e7b8e, (q31_t)0x2b60d9d0, - (q31_t)0x6f16ff14, (q31_t)0x2b579ba8, (q31_t)0x6f1f80ca, (q31_t)0x2b4e5bd4, - (q31_t)0x6f2800af, (q31_t)0x2b451a55, (q31_t)0x6f307ec2, (q31_t)0x2b3bd72a, - (q31_t)0x6f38fb03, (q31_t)0x2b329255, (q31_t)0x6f417573, (q31_t)0x2b294bd5, - (q31_t)0x6f49ee0f, (q31_t)0x2b2003ac, (q31_t)0x6f5264da, (q31_t)0x2b16b9d9, - (q31_t)0x6f5ad9d1, (q31_t)0x2b0d6e5c, (q31_t)0x6f634cf5, (q31_t)0x2b042137, - (q31_t)0x6f6bbe45, (q31_t)0x2afad269, (q31_t)0x6f742dc1, (q31_t)0x2af181f3, - (q31_t)0x6f7c9b69, (q31_t)0x2ae82fd5, (q31_t)0x6f85073c, (q31_t)0x2adedc10, - (q31_t)0x6f8d713a, (q31_t)0x2ad586a3, (q31_t)0x6f95d963, (q31_t)0x2acc2f90, - (q31_t)0x6f9e3fb6, (q31_t)0x2ac2d6d6, (q31_t)0x6fa6a433, (q31_t)0x2ab97c77, - (q31_t)0x6faf06da, (q31_t)0x2ab02071, (q31_t)0x6fb767aa, (q31_t)0x2aa6c2c6, - (q31_t)0x6fbfc6a3, (q31_t)0x2a9d6377, (q31_t)0x6fc823c5, (q31_t)0x2a940283, - (q31_t)0x6fd07f0f, (q31_t)0x2a8a9fea, (q31_t)0x6fd8d882, (q31_t)0x2a813bae, - (q31_t)0x6fe1301c, (q31_t)0x2a77d5ce, (q31_t)0x6fe985de, (q31_t)0x2a6e6e4b, - (q31_t)0x6ff1d9c7, (q31_t)0x2a650525, (q31_t)0x6ffa2bd6, (q31_t)0x2a5b9a5d, - (q31_t)0x70027c0c, (q31_t)0x2a522df3, (q31_t)0x700aca69, (q31_t)0x2a48bfe7, - (q31_t)0x701316eb, (q31_t)0x2a3f503a, (q31_t)0x701b6193, (q31_t)0x2a35deeb, - (q31_t)0x7023aa5f, (q31_t)0x2a2c6bfd, (q31_t)0x702bf151, (q31_t)0x2a22f76e, - (q31_t)0x70343667, (q31_t)0x2a19813f, (q31_t)0x703c79a2, (q31_t)0x2a100970, - (q31_t)0x7044bb00, (q31_t)0x2a069003, (q31_t)0x704cfa83, (q31_t)0x29fd14f6, - (q31_t)0x70553828, (q31_t)0x29f3984c, (q31_t)0x705d73f0, (q31_t)0x29ea1a03, - (q31_t)0x7065addb, (q31_t)0x29e09a1c, (q31_t)0x706de5e9, (q31_t)0x29d71899, - (q31_t)0x70761c18, (q31_t)0x29cd9578, (q31_t)0x707e5069, (q31_t)0x29c410ba, - (q31_t)0x708682dc, (q31_t)0x29ba8a61, (q31_t)0x708eb36f, (q31_t)0x29b1026c, - (q31_t)0x7096e223, (q31_t)0x29a778db, (q31_t)0x709f0ef8, (q31_t)0x299dedaf, - (q31_t)0x70a739ed, (q31_t)0x299460e8, (q31_t)0x70af6302, (q31_t)0x298ad287, - (q31_t)0x70b78a36, (q31_t)0x2981428c, (q31_t)0x70bfaf89, (q31_t)0x2977b0f7, - (q31_t)0x70c7d2fb, (q31_t)0x296e1dc9, (q31_t)0x70cff48c, (q31_t)0x29648902, - (q31_t)0x70d8143b, (q31_t)0x295af2a3, (q31_t)0x70e03208, (q31_t)0x29515aab, - (q31_t)0x70e84df3, (q31_t)0x2947c11c, (q31_t)0x70f067fb, (q31_t)0x293e25f5, - (q31_t)0x70f8801f, (q31_t)0x29348937, (q31_t)0x71009661, (q31_t)0x292aeae3, - (q31_t)0x7108aabf, (q31_t)0x29214af8, (q31_t)0x7110bd39, (q31_t)0x2917a977, - (q31_t)0x7118cdcf, (q31_t)0x290e0661, (q31_t)0x7120dc80, (q31_t)0x290461b5, - (q31_t)0x7128e94c, (q31_t)0x28fabb75, (q31_t)0x7130f433, (q31_t)0x28f113a0, - (q31_t)0x7138fd35, (q31_t)0x28e76a37, (q31_t)0x71410450, (q31_t)0x28ddbf3b, - (q31_t)0x71490986, (q31_t)0x28d412ab, (q31_t)0x71510cd5, (q31_t)0x28ca6488, - (q31_t)0x71590e3e, (q31_t)0x28c0b4d2, (q31_t)0x71610dbf, (q31_t)0x28b7038b, - (q31_t)0x71690b59, (q31_t)0x28ad50b1, (q31_t)0x7171070c, (q31_t)0x28a39c46, - (q31_t)0x717900d6, (q31_t)0x2899e64a, (q31_t)0x7180f8b8, (q31_t)0x28902ebd, - (q31_t)0x7188eeb2, (q31_t)0x288675a0, (q31_t)0x7190e2c3, (q31_t)0x287cbaf3, - (q31_t)0x7198d4ea, (q31_t)0x2872feb6, (q31_t)0x71a0c528, (q31_t)0x286940ea, - (q31_t)0x71a8b37c, (q31_t)0x285f8190, (q31_t)0x71b09fe7, (q31_t)0x2855c0a6, - (q31_t)0x71b88a66, (q31_t)0x284bfe2f, (q31_t)0x71c072fb, (q31_t)0x28423a2a, - (q31_t)0x71c859a5, (q31_t)0x28387498, (q31_t)0x71d03e64, (q31_t)0x282ead78, - (q31_t)0x71d82137, (q31_t)0x2824e4cc, (q31_t)0x71e0021e, (q31_t)0x281b1a94, - (q31_t)0x71e7e118, (q31_t)0x28114ed0, (q31_t)0x71efbe27, (q31_t)0x28078181, - (q31_t)0x71f79948, (q31_t)0x27fdb2a7, (q31_t)0x71ff727c, (q31_t)0x27f3e241, - (q31_t)0x720749c3, (q31_t)0x27ea1052, (q31_t)0x720f1f1c, (q31_t)0x27e03cd8, - (q31_t)0x7216f287, (q31_t)0x27d667d5, (q31_t)0x721ec403, (q31_t)0x27cc9149, - (q31_t)0x72269391, (q31_t)0x27c2b934, (q31_t)0x722e6130, (q31_t)0x27b8df97, - (q31_t)0x72362ce0, (q31_t)0x27af0472, (q31_t)0x723df6a0, (q31_t)0x27a527c4, - (q31_t)0x7245be70, (q31_t)0x279b4990, (q31_t)0x724d8450, (q31_t)0x279169d5, - (q31_t)0x72554840, (q31_t)0x27878893, (q31_t)0x725d0a3e, (q31_t)0x277da5cb, - (q31_t)0x7264ca4c, (q31_t)0x2773c17d, (q31_t)0x726c8868, (q31_t)0x2769dbaa, - (q31_t)0x72744493, (q31_t)0x275ff452, (q31_t)0x727bfecc, (q31_t)0x27560b76, - (q31_t)0x7283b712, (q31_t)0x274c2115, (q31_t)0x728b6d66, (q31_t)0x27423530, - (q31_t)0x729321c7, (q31_t)0x273847c8, (q31_t)0x729ad435, (q31_t)0x272e58dc, - (q31_t)0x72a284b0, (q31_t)0x2724686e, (q31_t)0x72aa3336, (q31_t)0x271a767e, - (q31_t)0x72b1dfc9, (q31_t)0x2710830c, (q31_t)0x72b98a67, (q31_t)0x27068e18, - (q31_t)0x72c13311, (q31_t)0x26fc97a3, (q31_t)0x72c8d9c6, (q31_t)0x26f29fad, - (q31_t)0x72d07e85, (q31_t)0x26e8a637, (q31_t)0x72d82150, (q31_t)0x26deab41, - (q31_t)0x72dfc224, (q31_t)0x26d4aecb, (q31_t)0x72e76102, (q31_t)0x26cab0d6, - (q31_t)0x72eefdea, (q31_t)0x26c0b162, (q31_t)0x72f698db, (q31_t)0x26b6b070, - (q31_t)0x72fe31d5, (q31_t)0x26acadff, (q31_t)0x7305c8d7, (q31_t)0x26a2aa11, - (q31_t)0x730d5de3, (q31_t)0x2698a4a6, (q31_t)0x7314f0f6, (q31_t)0x268e9dbd, - (q31_t)0x731c8211, (q31_t)0x26849558, (q31_t)0x73241134, (q31_t)0x267a8b77, - (q31_t)0x732b9e5e, (q31_t)0x2670801a, (q31_t)0x7333298f, (q31_t)0x26667342, - (q31_t)0x733ab2c6, (q31_t)0x265c64ef, (q31_t)0x73423a04, (q31_t)0x26525521, - (q31_t)0x7349bf48, (q31_t)0x264843d9, (q31_t)0x73514292, (q31_t)0x263e3117, - (q31_t)0x7358c3e2, (q31_t)0x26341cdb, (q31_t)0x73604336, (q31_t)0x262a0727, - (q31_t)0x7367c090, (q31_t)0x261feffa, (q31_t)0x736f3bee, (q31_t)0x2615d754, - (q31_t)0x7376b551, (q31_t)0x260bbd37, (q31_t)0x737e2cb7, (q31_t)0x2601a1a2, - (q31_t)0x7385a222, (q31_t)0x25f78497, (q31_t)0x738d1590, (q31_t)0x25ed6614, - (q31_t)0x73948701, (q31_t)0x25e3461b, (q31_t)0x739bf675, (q31_t)0x25d924ac, - (q31_t)0x73a363ec, (q31_t)0x25cf01c8, (q31_t)0x73aacf65, (q31_t)0x25c4dd6e, - (q31_t)0x73b238e0, (q31_t)0x25bab7a0, (q31_t)0x73b9a05d, (q31_t)0x25b0905d, - (q31_t)0x73c105db, (q31_t)0x25a667a7, (q31_t)0x73c8695b, (q31_t)0x259c3d7c, - (q31_t)0x73cfcadc, (q31_t)0x259211df, (q31_t)0x73d72a5d, (q31_t)0x2587e4cf, - (q31_t)0x73de87de, (q31_t)0x257db64c, (q31_t)0x73e5e360, (q31_t)0x25738657, - (q31_t)0x73ed3ce1, (q31_t)0x256954f1, (q31_t)0x73f49462, (q31_t)0x255f2219, - (q31_t)0x73fbe9e2, (q31_t)0x2554edd1, (q31_t)0x74033d61, (q31_t)0x254ab818, - (q31_t)0x740a8edf, (q31_t)0x254080ef, (q31_t)0x7411de5b, (q31_t)0x25364857, - (q31_t)0x74192bd5, (q31_t)0x252c0e4f, (q31_t)0x7420774d, (q31_t)0x2521d2d8, - (q31_t)0x7427c0c3, (q31_t)0x251795f3, (q31_t)0x742f0836, (q31_t)0x250d57a0, - (q31_t)0x74364da6, (q31_t)0x250317df, (q31_t)0x743d9112, (q31_t)0x24f8d6b0, - (q31_t)0x7444d27b, (q31_t)0x24ee9415, (q31_t)0x744c11e0, (q31_t)0x24e4500e, - (q31_t)0x74534f41, (q31_t)0x24da0a9a, (q31_t)0x745a8a9d, (q31_t)0x24cfc3ba, - (q31_t)0x7461c3f5, (q31_t)0x24c57b6f, (q31_t)0x7468fb47, (q31_t)0x24bb31ba, - (q31_t)0x74703095, (q31_t)0x24b0e699, (q31_t)0x747763dd, (q31_t)0x24a69a0f, - (q31_t)0x747e951f, (q31_t)0x249c4c1b, (q31_t)0x7485c45b, (q31_t)0x2491fcbe, - (q31_t)0x748cf190, (q31_t)0x2487abf7, (q31_t)0x74941cbf, (q31_t)0x247d59c8, - (q31_t)0x749b45e7, (q31_t)0x24730631, (q31_t)0x74a26d08, (q31_t)0x2468b132, - (q31_t)0x74a99221, (q31_t)0x245e5acc, (q31_t)0x74b0b533, (q31_t)0x245402ff, - (q31_t)0x74b7d63c, (q31_t)0x2449a9cc, (q31_t)0x74bef53d, (q31_t)0x243f4f32, - (q31_t)0x74c61236, (q31_t)0x2434f332, (q31_t)0x74cd2d26, (q31_t)0x242a95ce, - (q31_t)0x74d4460c, (q31_t)0x24203704, (q31_t)0x74db5cea, (q31_t)0x2415d6d5, - (q31_t)0x74e271bd, (q31_t)0x240b7543, (q31_t)0x74e98487, (q31_t)0x2401124d, - (q31_t)0x74f09546, (q31_t)0x23f6adf3, (q31_t)0x74f7a3fb, (q31_t)0x23ec4837, - (q31_t)0x74feb0a5, (q31_t)0x23e1e117, (q31_t)0x7505bb44, (q31_t)0x23d77896, - (q31_t)0x750cc3d8, (q31_t)0x23cd0eb3, (q31_t)0x7513ca60, (q31_t)0x23c2a36f, - (q31_t)0x751acedd, (q31_t)0x23b836ca, (q31_t)0x7521d14d, (q31_t)0x23adc8c4, - (q31_t)0x7528d1b1, (q31_t)0x23a3595e, (q31_t)0x752fd008, (q31_t)0x2398e898, - (q31_t)0x7536cc52, (q31_t)0x238e7673, (q31_t)0x753dc68f, (q31_t)0x238402ef, - (q31_t)0x7544bebf, (q31_t)0x23798e0d, (q31_t)0x754bb4e1, (q31_t)0x236f17cc, - (q31_t)0x7552a8f4, (q31_t)0x2364a02e, (q31_t)0x75599afa, (q31_t)0x235a2733, - (q31_t)0x75608af1, (q31_t)0x234facda, (q31_t)0x756778d9, (q31_t)0x23453125, - (q31_t)0x756e64b2, (q31_t)0x233ab414, (q31_t)0x75754e7c, (q31_t)0x233035a7, - (q31_t)0x757c3636, (q31_t)0x2325b5df, (q31_t)0x75831be0, (q31_t)0x231b34bc, - (q31_t)0x7589ff7a, (q31_t)0x2310b23e, (q31_t)0x7590e104, (q31_t)0x23062e67, - (q31_t)0x7597c07d, (q31_t)0x22fba936, (q31_t)0x759e9de5, (q31_t)0x22f122ab, - (q31_t)0x75a5793c, (q31_t)0x22e69ac8, (q31_t)0x75ac5282, (q31_t)0x22dc118c, - (q31_t)0x75b329b5, (q31_t)0x22d186f8, (q31_t)0x75b9fed7, (q31_t)0x22c6fb0c, - (q31_t)0x75c0d1e7, (q31_t)0x22bc6dca, (q31_t)0x75c7a2e3, (q31_t)0x22b1df30, - (q31_t)0x75ce71ce, (q31_t)0x22a74f40, (q31_t)0x75d53ea5, (q31_t)0x229cbdfa, - (q31_t)0x75dc0968, (q31_t)0x22922b5e, (q31_t)0x75e2d219, (q31_t)0x2287976e, - (q31_t)0x75e998b5, (q31_t)0x227d0228, (q31_t)0x75f05d3d, (q31_t)0x22726b8e, - (q31_t)0x75f71fb1, (q31_t)0x2267d3a0, (q31_t)0x75fde011, (q31_t)0x225d3a5e, - (q31_t)0x76049e5b, (q31_t)0x22529fca, (q31_t)0x760b5a90, (q31_t)0x224803e2, - (q31_t)0x761214b0, (q31_t)0x223d66a8, (q31_t)0x7618ccba, (q31_t)0x2232c81c, - (q31_t)0x761f82af, (q31_t)0x2228283f, (q31_t)0x7626368d, (q31_t)0x221d8711, - (q31_t)0x762ce855, (q31_t)0x2212e492, (q31_t)0x76339806, (q31_t)0x220840c2, - (q31_t)0x763a45a0, (q31_t)0x21fd9ba3, (q31_t)0x7640f123, (q31_t)0x21f2f534, - (q31_t)0x76479a8e, (q31_t)0x21e84d76, (q31_t)0x764e41e2, (q31_t)0x21dda46a, - (q31_t)0x7654e71d, (q31_t)0x21d2fa0f, (q31_t)0x765b8a41, (q31_t)0x21c84e67, - (q31_t)0x76622b4c, (q31_t)0x21bda171, (q31_t)0x7668ca3e, (q31_t)0x21b2f32e, - (q31_t)0x766f6717, (q31_t)0x21a8439e, (q31_t)0x767601d7, (q31_t)0x219d92c2, - (q31_t)0x767c9a7e, (q31_t)0x2192e09b, (q31_t)0x7683310b, (q31_t)0x21882d28, - (q31_t)0x7689c57d, (q31_t)0x217d786a, (q31_t)0x769057d6, (q31_t)0x2172c262, - (q31_t)0x7696e814, (q31_t)0x21680b0f, (q31_t)0x769d7637, (q31_t)0x215d5273, - (q31_t)0x76a4023f, (q31_t)0x2152988d, (q31_t)0x76aa8c2c, (q31_t)0x2147dd5f, - (q31_t)0x76b113fd, (q31_t)0x213d20e8, (q31_t)0x76b799b3, (q31_t)0x21326329, - (q31_t)0x76be1d4c, (q31_t)0x2127a423, (q31_t)0x76c49ec9, (q31_t)0x211ce3d5, - (q31_t)0x76cb1e2a, (q31_t)0x21122240, (q31_t)0x76d19b6e, (q31_t)0x21075f65, - (q31_t)0x76d81695, (q31_t)0x20fc9b44, (q31_t)0x76de8f9e, (q31_t)0x20f1d5de, - (q31_t)0x76e5068a, (q31_t)0x20e70f32, (q31_t)0x76eb7b58, (q31_t)0x20dc4742, - (q31_t)0x76f1ee09, (q31_t)0x20d17e0d, (q31_t)0x76f85e9a, (q31_t)0x20c6b395, - (q31_t)0x76fecd0e, (q31_t)0x20bbe7d8, (q31_t)0x77053962, (q31_t)0x20b11ad9, - (q31_t)0x770ba398, (q31_t)0x20a64c97, (q31_t)0x77120bae, (q31_t)0x209b7d13, - (q31_t)0x771871a5, (q31_t)0x2090ac4d, (q31_t)0x771ed57c, (q31_t)0x2085da46, - (q31_t)0x77253733, (q31_t)0x207b06fe, (q31_t)0x772b96ca, (q31_t)0x20703275, - (q31_t)0x7731f440, (q31_t)0x20655cac, (q31_t)0x77384f95, (q31_t)0x205a85a3, - (q31_t)0x773ea8ca, (q31_t)0x204fad5b, (q31_t)0x7744ffdd, (q31_t)0x2044d3d4, - (q31_t)0x774b54ce, (q31_t)0x2039f90f, (q31_t)0x7751a79e, (q31_t)0x202f1d0b, - (q31_t)0x7757f84c, (q31_t)0x20243fca, (q31_t)0x775e46d8, (q31_t)0x2019614c, - (q31_t)0x77649341, (q31_t)0x200e8190, (q31_t)0x776add88, (q31_t)0x2003a099, - (q31_t)0x777125ac, (q31_t)0x1ff8be65, (q31_t)0x77776bac, (q31_t)0x1feddaf6, - (q31_t)0x777daf89, (q31_t)0x1fe2f64c, (q31_t)0x7783f143, (q31_t)0x1fd81067, - (q31_t)0x778a30d8, (q31_t)0x1fcd2948, (q31_t)0x77906e49, (q31_t)0x1fc240ef, - (q31_t)0x7796a996, (q31_t)0x1fb7575c, (q31_t)0x779ce2be, (q31_t)0x1fac6c91, - (q31_t)0x77a319c2, (q31_t)0x1fa1808c, (q31_t)0x77a94ea0, (q31_t)0x1f969350, - (q31_t)0x77af8159, (q31_t)0x1f8ba4dc, (q31_t)0x77b5b1ec, (q31_t)0x1f80b531, - (q31_t)0x77bbe05a, (q31_t)0x1f75c44e, (q31_t)0x77c20ca1, (q31_t)0x1f6ad235, - (q31_t)0x77c836c2, (q31_t)0x1f5fdee6, (q31_t)0x77ce5ebd, (q31_t)0x1f54ea62, - (q31_t)0x77d48490, (q31_t)0x1f49f4a8, (q31_t)0x77daa83d, (q31_t)0x1f3efdb9, - (q31_t)0x77e0c9c3, (q31_t)0x1f340596, (q31_t)0x77e6e921, (q31_t)0x1f290c3f, - (q31_t)0x77ed0657, (q31_t)0x1f1e11b5, (q31_t)0x77f32165, (q31_t)0x1f1315f7, - (q31_t)0x77f93a4b, (q31_t)0x1f081907, (q31_t)0x77ff5109, (q31_t)0x1efd1ae4, - (q31_t)0x7805659e, (q31_t)0x1ef21b90, (q31_t)0x780b780a, (q31_t)0x1ee71b0a, - (q31_t)0x7811884d, (q31_t)0x1edc1953, (q31_t)0x78179666, (q31_t)0x1ed1166b, - (q31_t)0x781da256, (q31_t)0x1ec61254, (q31_t)0x7823ac1d, (q31_t)0x1ebb0d0d, - (q31_t)0x7829b3b9, (q31_t)0x1eb00696, (q31_t)0x782fb92a, (q31_t)0x1ea4fef0, - (q31_t)0x7835bc71, (q31_t)0x1e99f61d, (q31_t)0x783bbd8e, (q31_t)0x1e8eec1b, - (q31_t)0x7841bc7f, (q31_t)0x1e83e0eb, (q31_t)0x7847b946, (q31_t)0x1e78d48e, - (q31_t)0x784db3e0, (q31_t)0x1e6dc705, (q31_t)0x7853ac4f, (q31_t)0x1e62b84f, - (q31_t)0x7859a292, (q31_t)0x1e57a86d, (q31_t)0x785f96a9, (q31_t)0x1e4c9760, - (q31_t)0x78658894, (q31_t)0x1e418528, (q31_t)0x786b7852, (q31_t)0x1e3671c5, - (q31_t)0x787165e3, (q31_t)0x1e2b5d38, (q31_t)0x78775147, (q31_t)0x1e204781, - (q31_t)0x787d3a7e, (q31_t)0x1e1530a1, (q31_t)0x78832187, (q31_t)0x1e0a1898, - (q31_t)0x78890663, (q31_t)0x1dfeff67, (q31_t)0x788ee910, (q31_t)0x1df3e50d, - (q31_t)0x7894c98f, (q31_t)0x1de8c98c, (q31_t)0x789aa7e0, (q31_t)0x1dddace4, - (q31_t)0x78a08402, (q31_t)0x1dd28f15, (q31_t)0x78a65df6, (q31_t)0x1dc7701f, - (q31_t)0x78ac35ba, (q31_t)0x1dbc5004, (q31_t)0x78b20b4f, (q31_t)0x1db12ec3, - (q31_t)0x78b7deb4, (q31_t)0x1da60c5d, (q31_t)0x78bdafea, (q31_t)0x1d9ae8d2, - (q31_t)0x78c37eef, (q31_t)0x1d8fc424, (q31_t)0x78c94bc4, (q31_t)0x1d849e51, - (q31_t)0x78cf1669, (q31_t)0x1d79775c, (q31_t)0x78d4dedd, (q31_t)0x1d6e4f43, - (q31_t)0x78daa520, (q31_t)0x1d632608, (q31_t)0x78e06932, (q31_t)0x1d57fbaa, - (q31_t)0x78e62b13, (q31_t)0x1d4cd02c, (q31_t)0x78ebeac2, (q31_t)0x1d41a38c, - (q31_t)0x78f1a840, (q31_t)0x1d3675cb, (q31_t)0x78f7638b, (q31_t)0x1d2b46ea, - (q31_t)0x78fd1ca4, (q31_t)0x1d2016e9, (q31_t)0x7902d38b, (q31_t)0x1d14e5c9, - (q31_t)0x7908883f, (q31_t)0x1d09b389, (q31_t)0x790e3ac0, (q31_t)0x1cfe802b, - (q31_t)0x7913eb0e, (q31_t)0x1cf34baf, (q31_t)0x79199929, (q31_t)0x1ce81615, - (q31_t)0x791f4510, (q31_t)0x1cdcdf5e, (q31_t)0x7924eec3, (q31_t)0x1cd1a78a, - (q31_t)0x792a9642, (q31_t)0x1cc66e99, (q31_t)0x79303b8e, (q31_t)0x1cbb348d, - (q31_t)0x7935dea4, (q31_t)0x1caff965, (q31_t)0x793b7f86, (q31_t)0x1ca4bd21, - (q31_t)0x79411e33, (q31_t)0x1c997fc4, (q31_t)0x7946baac, (q31_t)0x1c8e414b, - (q31_t)0x794c54ee, (q31_t)0x1c8301b9, (q31_t)0x7951ecfc, (q31_t)0x1c77c10e, - (q31_t)0x795782d3, (q31_t)0x1c6c7f4a, (q31_t)0x795d1675, (q31_t)0x1c613c6d, - (q31_t)0x7962a7e0, (q31_t)0x1c55f878, (q31_t)0x79683715, (q31_t)0x1c4ab36b, - (q31_t)0x796dc414, (q31_t)0x1c3f6d47, (q31_t)0x79734edc, (q31_t)0x1c34260c, - (q31_t)0x7978d76c, (q31_t)0x1c28ddbb, (q31_t)0x797e5dc6, (q31_t)0x1c1d9454, - (q31_t)0x7983e1e8, (q31_t)0x1c1249d8, (q31_t)0x798963d2, (q31_t)0x1c06fe46, - (q31_t)0x798ee385, (q31_t)0x1bfbb1a0, (q31_t)0x799460ff, (q31_t)0x1bf063e6, - (q31_t)0x7999dc42, (q31_t)0x1be51518, (q31_t)0x799f554b, (q31_t)0x1bd9c537, - (q31_t)0x79a4cc1c, (q31_t)0x1bce7442, (q31_t)0x79aa40b4, (q31_t)0x1bc3223c, - (q31_t)0x79afb313, (q31_t)0x1bb7cf23, (q31_t)0x79b52339, (q31_t)0x1bac7af9, - (q31_t)0x79ba9125, (q31_t)0x1ba125bd, (q31_t)0x79bffcd7, (q31_t)0x1b95cf71, - (q31_t)0x79c5664f, (q31_t)0x1b8a7815, (q31_t)0x79cacd8d, (q31_t)0x1b7f1fa9, - (q31_t)0x79d03291, (q31_t)0x1b73c62d, (q31_t)0x79d5955a, (q31_t)0x1b686ba3, - (q31_t)0x79daf5e8, (q31_t)0x1b5d100a, (q31_t)0x79e0543c, (q31_t)0x1b51b363, - (q31_t)0x79e5b054, (q31_t)0x1b4655ae, (q31_t)0x79eb0a31, (q31_t)0x1b3af6ec, - (q31_t)0x79f061d2, (q31_t)0x1b2f971e, (q31_t)0x79f5b737, (q31_t)0x1b243643, - (q31_t)0x79fb0a60, (q31_t)0x1b18d45c, (q31_t)0x7a005b4d, (q31_t)0x1b0d716a, - (q31_t)0x7a05a9fd, (q31_t)0x1b020d6c, (q31_t)0x7a0af671, (q31_t)0x1af6a865, - (q31_t)0x7a1040a8, (q31_t)0x1aeb4253, (q31_t)0x7a1588a2, (q31_t)0x1adfdb37, - (q31_t)0x7a1ace5f, (q31_t)0x1ad47312, (q31_t)0x7a2011de, (q31_t)0x1ac909e5, - (q31_t)0x7a25531f, (q31_t)0x1abd9faf, (q31_t)0x7a2a9223, (q31_t)0x1ab23471, - (q31_t)0x7a2fcee8, (q31_t)0x1aa6c82b, (q31_t)0x7a350970, (q31_t)0x1a9b5adf, - (q31_t)0x7a3a41b9, (q31_t)0x1a8fec8c, (q31_t)0x7a3f77c3, (q31_t)0x1a847d33, - (q31_t)0x7a44ab8e, (q31_t)0x1a790cd4, (q31_t)0x7a49dd1a, (q31_t)0x1a6d9b70, - (q31_t)0x7a4f0c67, (q31_t)0x1a622907, (q31_t)0x7a543974, (q31_t)0x1a56b599, - (q31_t)0x7a596442, (q31_t)0x1a4b4128, (q31_t)0x7a5e8cd0, (q31_t)0x1a3fcbb3, - (q31_t)0x7a63b31d, (q31_t)0x1a34553b, (q31_t)0x7a68d72b, (q31_t)0x1a28ddc0, - (q31_t)0x7a6df8f8, (q31_t)0x1a1d6544, (q31_t)0x7a731884, (q31_t)0x1a11ebc5, - (q31_t)0x7a7835cf, (q31_t)0x1a067145, (q31_t)0x7a7d50da, (q31_t)0x19faf5c5, - (q31_t)0x7a8269a3, (q31_t)0x19ef7944, (q31_t)0x7a87802a, (q31_t)0x19e3fbc3, - (q31_t)0x7a8c9470, (q31_t)0x19d87d42, (q31_t)0x7a91a674, (q31_t)0x19ccfdc2, - (q31_t)0x7a96b636, (q31_t)0x19c17d44, (q31_t)0x7a9bc3b6, (q31_t)0x19b5fbc8, - (q31_t)0x7aa0cef3, (q31_t)0x19aa794d, (q31_t)0x7aa5d7ee, (q31_t)0x199ef5d6, - (q31_t)0x7aaadea6, (q31_t)0x19937161, (q31_t)0x7aafe31b, (q31_t)0x1987ebf0, - (q31_t)0x7ab4e54c, (q31_t)0x197c6584, (q31_t)0x7ab9e53a, (q31_t)0x1970de1b, - (q31_t)0x7abee2e5, (q31_t)0x196555b8, (q31_t)0x7ac3de4c, (q31_t)0x1959cc5a, - (q31_t)0x7ac8d76f, (q31_t)0x194e4201, (q31_t)0x7acdce4d, (q31_t)0x1942b6af, - (q31_t)0x7ad2c2e8, (q31_t)0x19372a64, (q31_t)0x7ad7b53d, (q31_t)0x192b9d1f, - (q31_t)0x7adca54e, (q31_t)0x19200ee3, (q31_t)0x7ae1931a, (q31_t)0x19147fae, - (q31_t)0x7ae67ea1, (q31_t)0x1908ef82, (q31_t)0x7aeb67e3, (q31_t)0x18fd5e5f, - (q31_t)0x7af04edf, (q31_t)0x18f1cc45, (q31_t)0x7af53395, (q31_t)0x18e63935, - (q31_t)0x7afa1605, (q31_t)0x18daa52f, (q31_t)0x7afef630, (q31_t)0x18cf1034, - (q31_t)0x7b03d414, (q31_t)0x18c37a44, (q31_t)0x7b08afb2, (q31_t)0x18b7e35f, - (q31_t)0x7b0d8909, (q31_t)0x18ac4b87, (q31_t)0x7b126019, (q31_t)0x18a0b2bb, - (q31_t)0x7b1734e2, (q31_t)0x189518fc, (q31_t)0x7b1c0764, (q31_t)0x18897e4a, - (q31_t)0x7b20d79e, (q31_t)0x187de2a7, (q31_t)0x7b25a591, (q31_t)0x18724611, - (q31_t)0x7b2a713d, (q31_t)0x1866a88a, (q31_t)0x7b2f3aa0, (q31_t)0x185b0a13, - (q31_t)0x7b3401bb, (q31_t)0x184f6aab, (q31_t)0x7b38c68e, (q31_t)0x1843ca53, - (q31_t)0x7b3d8918, (q31_t)0x1838290c, (q31_t)0x7b42495a, (q31_t)0x182c86d5, - (q31_t)0x7b470753, (q31_t)0x1820e3b0, (q31_t)0x7b4bc303, (q31_t)0x18153f9d, - (q31_t)0x7b507c69, (q31_t)0x18099a9c, (q31_t)0x7b553386, (q31_t)0x17fdf4ae, - (q31_t)0x7b59e85a, (q31_t)0x17f24dd3, (q31_t)0x7b5e9ae4, (q31_t)0x17e6a60c, - (q31_t)0x7b634b23, (q31_t)0x17dafd59, (q31_t)0x7b67f919, (q31_t)0x17cf53bb, - (q31_t)0x7b6ca4c4, (q31_t)0x17c3a931, (q31_t)0x7b714e25, (q31_t)0x17b7fdbd, - (q31_t)0x7b75f53c, (q31_t)0x17ac515f, (q31_t)0x7b7a9a07, (q31_t)0x17a0a417, - (q31_t)0x7b7f3c87, (q31_t)0x1794f5e6, (q31_t)0x7b83dcbc, (q31_t)0x178946cc, - (q31_t)0x7b887aa6, (q31_t)0x177d96ca, (q31_t)0x7b8d1644, (q31_t)0x1771e5e0, - (q31_t)0x7b91af97, (q31_t)0x1766340f, (q31_t)0x7b96469d, (q31_t)0x175a8157, - (q31_t)0x7b9adb57, (q31_t)0x174ecdb8, (q31_t)0x7b9f6dc5, (q31_t)0x17431933, - (q31_t)0x7ba3fde7, (q31_t)0x173763c9, (q31_t)0x7ba88bbc, (q31_t)0x172bad7a, - (q31_t)0x7bad1744, (q31_t)0x171ff646, (q31_t)0x7bb1a080, (q31_t)0x17143e2d, - (q31_t)0x7bb6276e, (q31_t)0x17088531, (q31_t)0x7bbaac0e, (q31_t)0x16fccb51, - (q31_t)0x7bbf2e62, (q31_t)0x16f1108f, (q31_t)0x7bc3ae67, (q31_t)0x16e554ea, - (q31_t)0x7bc82c1f, (q31_t)0x16d99864, (q31_t)0x7bcca789, (q31_t)0x16cddafb, - (q31_t)0x7bd120a4, (q31_t)0x16c21cb2, (q31_t)0x7bd59771, (q31_t)0x16b65d88, - (q31_t)0x7bda0bf0, (q31_t)0x16aa9d7e, (q31_t)0x7bde7e20, (q31_t)0x169edc94, - (q31_t)0x7be2ee01, (q31_t)0x16931acb, (q31_t)0x7be75b93, (q31_t)0x16875823, - (q31_t)0x7bebc6d5, (q31_t)0x167b949d, (q31_t)0x7bf02fc9, (q31_t)0x166fd039, - (q31_t)0x7bf4966c, (q31_t)0x16640af7, (q31_t)0x7bf8fac0, (q31_t)0x165844d8, - (q31_t)0x7bfd5cc4, (q31_t)0x164c7ddd, (q31_t)0x7c01bc78, (q31_t)0x1640b606, - (q31_t)0x7c0619dc, (q31_t)0x1634ed53, (q31_t)0x7c0a74f0, (q31_t)0x162923c5, - (q31_t)0x7c0ecdb2, (q31_t)0x161d595d, (q31_t)0x7c132424, (q31_t)0x16118e1a, - (q31_t)0x7c177845, (q31_t)0x1605c1fd, (q31_t)0x7c1bca16, (q31_t)0x15f9f507, - (q31_t)0x7c201994, (q31_t)0x15ee2738, (q31_t)0x7c2466c2, (q31_t)0x15e25890, - (q31_t)0x7c28b19e, (q31_t)0x15d68911, (q31_t)0x7c2cfa28, (q31_t)0x15cab8ba, - (q31_t)0x7c314060, (q31_t)0x15bee78c, (q31_t)0x7c358446, (q31_t)0x15b31587, - (q31_t)0x7c39c5da, (q31_t)0x15a742ac, (q31_t)0x7c3e051b, (q31_t)0x159b6efb, - (q31_t)0x7c42420a, (q31_t)0x158f9a76, (q31_t)0x7c467ca6, (q31_t)0x1583c51b, - (q31_t)0x7c4ab4ef, (q31_t)0x1577eeec, (q31_t)0x7c4eeae5, (q31_t)0x156c17e9, - (q31_t)0x7c531e88, (q31_t)0x15604013, (q31_t)0x7c574fd8, (q31_t)0x1554676a, - (q31_t)0x7c5b7ed4, (q31_t)0x15488dee, (q31_t)0x7c5fab7c, (q31_t)0x153cb3a0, - (q31_t)0x7c63d5d1, (q31_t)0x1530d881, (q31_t)0x7c67fdd1, (q31_t)0x1524fc90, - (q31_t)0x7c6c237e, (q31_t)0x15191fcf, (q31_t)0x7c7046d6, (q31_t)0x150d423d, - (q31_t)0x7c7467d9, (q31_t)0x150163dc, (q31_t)0x7c788688, (q31_t)0x14f584ac, - (q31_t)0x7c7ca2e2, (q31_t)0x14e9a4ac, (q31_t)0x7c80bce7, (q31_t)0x14ddc3de, - (q31_t)0x7c84d496, (q31_t)0x14d1e242, (q31_t)0x7c88e9f1, (q31_t)0x14c5ffd9, - (q31_t)0x7c8cfcf6, (q31_t)0x14ba1ca3, (q31_t)0x7c910da5, (q31_t)0x14ae38a0, - (q31_t)0x7c951bff, (q31_t)0x14a253d1, (q31_t)0x7c992803, (q31_t)0x14966e36, - (q31_t)0x7c9d31b0, (q31_t)0x148a87d1, (q31_t)0x7ca13908, (q31_t)0x147ea0a0, - (q31_t)0x7ca53e09, (q31_t)0x1472b8a5, (q31_t)0x7ca940b3, (q31_t)0x1466cfe1, - (q31_t)0x7cad4107, (q31_t)0x145ae653, (q31_t)0x7cb13f04, (q31_t)0x144efbfc, - (q31_t)0x7cb53aaa, (q31_t)0x144310dd, (q31_t)0x7cb933f9, (q31_t)0x143724f5, - (q31_t)0x7cbd2af0, (q31_t)0x142b3846, (q31_t)0x7cc11f90, (q31_t)0x141f4ad1, - (q31_t)0x7cc511d9, (q31_t)0x14135c94, (q31_t)0x7cc901c9, (q31_t)0x14076d91, - (q31_t)0x7cccef62, (q31_t)0x13fb7dc9, (q31_t)0x7cd0daa2, (q31_t)0x13ef8d3c, - (q31_t)0x7cd4c38b, (q31_t)0x13e39be9, (q31_t)0x7cd8aa1b, (q31_t)0x13d7a9d3, - (q31_t)0x7cdc8e52, (q31_t)0x13cbb6f8, (q31_t)0x7ce07031, (q31_t)0x13bfc35b, - (q31_t)0x7ce44fb7, (q31_t)0x13b3cefa, (q31_t)0x7ce82ce4, (q31_t)0x13a7d9d7, - (q31_t)0x7cec07b8, (q31_t)0x139be3f2, (q31_t)0x7cefe032, (q31_t)0x138fed4b, - (q31_t)0x7cf3b653, (q31_t)0x1383f5e3, (q31_t)0x7cf78a1b, (q31_t)0x1377fdbb, - (q31_t)0x7cfb5b89, (q31_t)0x136c04d2, (q31_t)0x7cff2a9d, (q31_t)0x13600b2a, - (q31_t)0x7d02f757, (q31_t)0x135410c3, (q31_t)0x7d06c1b6, (q31_t)0x1348159d, - (q31_t)0x7d0a89bc, (q31_t)0x133c19b8, (q31_t)0x7d0e4f67, (q31_t)0x13301d16, - (q31_t)0x7d1212b7, (q31_t)0x13241fb6, (q31_t)0x7d15d3ad, (q31_t)0x1318219a, - (q31_t)0x7d199248, (q31_t)0x130c22c1, (q31_t)0x7d1d4e88, (q31_t)0x1300232c, - (q31_t)0x7d21086c, (q31_t)0x12f422db, (q31_t)0x7d24bff6, (q31_t)0x12e821cf, - (q31_t)0x7d287523, (q31_t)0x12dc2009, (q31_t)0x7d2c27f6, (q31_t)0x12d01d89, - (q31_t)0x7d2fd86c, (q31_t)0x12c41a4f, (q31_t)0x7d338687, (q31_t)0x12b8165b, - (q31_t)0x7d373245, (q31_t)0x12ac11af, (q31_t)0x7d3adba7, (q31_t)0x12a00c4b, - (q31_t)0x7d3e82ae, (q31_t)0x1294062f, (q31_t)0x7d422757, (q31_t)0x1287ff5b, - (q31_t)0x7d45c9a4, (q31_t)0x127bf7d1, (q31_t)0x7d496994, (q31_t)0x126fef90, - (q31_t)0x7d4d0728, (q31_t)0x1263e699, (q31_t)0x7d50a25e, (q31_t)0x1257dced, - (q31_t)0x7d543b37, (q31_t)0x124bd28c, (q31_t)0x7d57d1b3, (q31_t)0x123fc776, - (q31_t)0x7d5b65d2, (q31_t)0x1233bbac, (q31_t)0x7d5ef793, (q31_t)0x1227af2e, - (q31_t)0x7d6286f6, (q31_t)0x121ba1fd, (q31_t)0x7d6613fb, (q31_t)0x120f941a, - (q31_t)0x7d699ea3, (q31_t)0x12038584, (q31_t)0x7d6d26ec, (q31_t)0x11f7763c, - (q31_t)0x7d70acd7, (q31_t)0x11eb6643, (q31_t)0x7d743064, (q31_t)0x11df5599, - (q31_t)0x7d77b192, (q31_t)0x11d3443f, (q31_t)0x7d7b3061, (q31_t)0x11c73235, - (q31_t)0x7d7eacd2, (q31_t)0x11bb1f7c, (q31_t)0x7d8226e4, (q31_t)0x11af0c13, - (q31_t)0x7d859e96, (q31_t)0x11a2f7fc, (q31_t)0x7d8913ea, (q31_t)0x1196e337, - (q31_t)0x7d8c86de, (q31_t)0x118acdc4, (q31_t)0x7d8ff772, (q31_t)0x117eb7a4, - (q31_t)0x7d9365a8, (q31_t)0x1172a0d7, (q31_t)0x7d96d17d, (q31_t)0x1166895f, - (q31_t)0x7d9a3af2, (q31_t)0x115a713a, (q31_t)0x7d9da208, (q31_t)0x114e586a, - (q31_t)0x7da106bd, (q31_t)0x11423ef0, (q31_t)0x7da46912, (q31_t)0x113624cb, - (q31_t)0x7da7c907, (q31_t)0x112a09fc, (q31_t)0x7dab269b, (q31_t)0x111dee84, - (q31_t)0x7dae81cf, (q31_t)0x1111d263, (q31_t)0x7db1daa2, (q31_t)0x1105b599, - (q31_t)0x7db53113, (q31_t)0x10f99827, (q31_t)0x7db88524, (q31_t)0x10ed7a0e, - (q31_t)0x7dbbd6d4, (q31_t)0x10e15b4e, (q31_t)0x7dbf2622, (q31_t)0x10d53be7, - (q31_t)0x7dc2730f, (q31_t)0x10c91bda, (q31_t)0x7dc5bd9b, (q31_t)0x10bcfb28, - (q31_t)0x7dc905c5, (q31_t)0x10b0d9d0, (q31_t)0x7dcc4b8d, (q31_t)0x10a4b7d3, - (q31_t)0x7dcf8ef3, (q31_t)0x10989532, (q31_t)0x7dd2cff7, (q31_t)0x108c71ee, - (q31_t)0x7dd60e99, (q31_t)0x10804e06, (q31_t)0x7dd94ad8, (q31_t)0x1074297b, - (q31_t)0x7ddc84b5, (q31_t)0x1068044e, (q31_t)0x7ddfbc30, (q31_t)0x105bde7f, - (q31_t)0x7de2f148, (q31_t)0x104fb80e, (q31_t)0x7de623fd, (q31_t)0x104390fd, - (q31_t)0x7de9544f, (q31_t)0x1037694b, (q31_t)0x7dec823e, (q31_t)0x102b40f8, - (q31_t)0x7defadca, (q31_t)0x101f1807, (q31_t)0x7df2d6f3, (q31_t)0x1012ee76, - (q31_t)0x7df5fdb8, (q31_t)0x1006c446, (q31_t)0x7df9221a, (q31_t)0xffa9979, - (q31_t)0x7dfc4418, (q31_t)0xfee6e0d, (q31_t)0x7dff63b2, (q31_t)0xfe24205, - (q31_t)0x7e0280e9, (q31_t)0xfd6155f, (q31_t)0x7e059bbb, (q31_t)0xfc9e81e, - (q31_t)0x7e08b42a, (q31_t)0xfbdba40, (q31_t)0x7e0bca34, (q31_t)0xfb18bc8, - (q31_t)0x7e0eddd9, (q31_t)0xfa55cb4, (q31_t)0x7e11ef1b, (q31_t)0xf992d06, - (q31_t)0x7e14fdf7, (q31_t)0xf8cfcbe, (q31_t)0x7e180a6f, (q31_t)0xf80cbdc, - (q31_t)0x7e1b1482, (q31_t)0xf749a61, (q31_t)0x7e1e1c30, (q31_t)0xf68684e, - (q31_t)0x7e212179, (q31_t)0xf5c35a3, (q31_t)0x7e24245d, (q31_t)0xf500260, - (q31_t)0x7e2724db, (q31_t)0xf43ce86, (q31_t)0x7e2a22f4, (q31_t)0xf379a16, - (q31_t)0x7e2d1ea8, (q31_t)0xf2b650f, (q31_t)0x7e3017f6, (q31_t)0xf1f2f73, - (q31_t)0x7e330ede, (q31_t)0xf12f941, (q31_t)0x7e360360, (q31_t)0xf06c27a, - (q31_t)0x7e38f57c, (q31_t)0xefa8b20, (q31_t)0x7e3be532, (q31_t)0xeee5331, - (q31_t)0x7e3ed282, (q31_t)0xee21aaf, (q31_t)0x7e41bd6c, (q31_t)0xed5e19a, - (q31_t)0x7e44a5ef, (q31_t)0xec9a7f3, (q31_t)0x7e478c0b, (q31_t)0xebd6db9, - (q31_t)0x7e4a6fc1, (q31_t)0xeb132ef, (q31_t)0x7e4d5110, (q31_t)0xea4f793, - (q31_t)0x7e502ff9, (q31_t)0xe98bba7, (q31_t)0x7e530c7a, (q31_t)0xe8c7f2a, - (q31_t)0x7e55e694, (q31_t)0xe80421e, (q31_t)0x7e58be47, (q31_t)0xe740483, - (q31_t)0x7e5b9392, (q31_t)0xe67c65a, (q31_t)0x7e5e6676, (q31_t)0xe5b87a2, - (q31_t)0x7e6136f3, (q31_t)0xe4f485c, (q31_t)0x7e640507, (q31_t)0xe430889, - (q31_t)0x7e66d0b4, (q31_t)0xe36c82a, (q31_t)0x7e6999fa, (q31_t)0xe2a873e, - (q31_t)0x7e6c60d7, (q31_t)0xe1e45c6, (q31_t)0x7e6f254c, (q31_t)0xe1203c3, - (q31_t)0x7e71e759, (q31_t)0xe05c135, (q31_t)0x7e74a6fd, (q31_t)0xdf97e1d, - (q31_t)0x7e77643a, (q31_t)0xded3a7b, (q31_t)0x7e7a1f0d, (q31_t)0xde0f64f, - (q31_t)0x7e7cd778, (q31_t)0xdd4b19a, (q31_t)0x7e7f8d7b, (q31_t)0xdc86c5d, - (q31_t)0x7e824114, (q31_t)0xdbc2698, (q31_t)0x7e84f245, (q31_t)0xdafe04b, - (q31_t)0x7e87a10c, (q31_t)0xda39978, (q31_t)0x7e8a4d6a, (q31_t)0xd97521d, - (q31_t)0x7e8cf75f, (q31_t)0xd8b0a3d, (q31_t)0x7e8f9eeb, (q31_t)0xd7ec1d6, - (q31_t)0x7e92440d, (q31_t)0xd7278eb, (q31_t)0x7e94e6c6, (q31_t)0xd662f7b, - (q31_t)0x7e978715, (q31_t)0xd59e586, (q31_t)0x7e9a24fb, (q31_t)0xd4d9b0e, - (q31_t)0x7e9cc076, (q31_t)0xd415013, (q31_t)0x7e9f5988, (q31_t)0xd350495, - (q31_t)0x7ea1f02f, (q31_t)0xd28b894, (q31_t)0x7ea4846c, (q31_t)0xd1c6c11, - (q31_t)0x7ea7163f, (q31_t)0xd101f0e, (q31_t)0x7ea9a5a8, (q31_t)0xd03d189, - (q31_t)0x7eac32a6, (q31_t)0xcf78383, (q31_t)0x7eaebd3a, (q31_t)0xceb34fe, - (q31_t)0x7eb14563, (q31_t)0xcdee5f9, (q31_t)0x7eb3cb21, (q31_t)0xcd29676, - (q31_t)0x7eb64e75, (q31_t)0xcc64673, (q31_t)0x7eb8cf5d, (q31_t)0xcb9f5f3, - (q31_t)0x7ebb4ddb, (q31_t)0xcada4f5, (q31_t)0x7ebdc9ed, (q31_t)0xca1537a, - (q31_t)0x7ec04394, (q31_t)0xc950182, (q31_t)0x7ec2bad0, (q31_t)0xc88af0e, - (q31_t)0x7ec52fa0, (q31_t)0xc7c5c1e, (q31_t)0x7ec7a205, (q31_t)0xc7008b3, - (q31_t)0x7eca11fe, (q31_t)0xc63b4ce, (q31_t)0x7ecc7f8b, (q31_t)0xc57606e, - (q31_t)0x7eceeaad, (q31_t)0xc4b0b94, (q31_t)0x7ed15363, (q31_t)0xc3eb641, - (q31_t)0x7ed3b9ad, (q31_t)0xc326075, (q31_t)0x7ed61d8a, (q31_t)0xc260a31, - (q31_t)0x7ed87efc, (q31_t)0xc19b374, (q31_t)0x7edade01, (q31_t)0xc0d5c41, - (q31_t)0x7edd3a9a, (q31_t)0xc010496, (q31_t)0x7edf94c7, (q31_t)0xbf4ac75, - (q31_t)0x7ee1ec87, (q31_t)0xbe853de, (q31_t)0x7ee441da, (q31_t)0xbdbfad1, - (q31_t)0x7ee694c1, (q31_t)0xbcfa150, (q31_t)0x7ee8e53a, (q31_t)0xbc34759, - (q31_t)0x7eeb3347, (q31_t)0xbb6ecef, (q31_t)0x7eed7ee7, (q31_t)0xbaa9211, - (q31_t)0x7eefc81a, (q31_t)0xb9e36c0, (q31_t)0x7ef20ee0, (q31_t)0xb91dafc, - (q31_t)0x7ef45338, (q31_t)0xb857ec7, (q31_t)0x7ef69523, (q31_t)0xb79221f, - (q31_t)0x7ef8d4a1, (q31_t)0xb6cc506, (q31_t)0x7efb11b1, (q31_t)0xb60677c, - (q31_t)0x7efd4c54, (q31_t)0xb540982, (q31_t)0x7eff8489, (q31_t)0xb47ab19, - (q31_t)0x7f01ba50, (q31_t)0xb3b4c40, (q31_t)0x7f03eda9, (q31_t)0xb2eecf8, - (q31_t)0x7f061e95, (q31_t)0xb228d42, (q31_t)0x7f084d12, (q31_t)0xb162d1d, - (q31_t)0x7f0a7921, (q31_t)0xb09cc8c, (q31_t)0x7f0ca2c2, (q31_t)0xafd6b8d, - (q31_t)0x7f0ec9f5, (q31_t)0xaf10a22, (q31_t)0x7f10eeb9, (q31_t)0xae4a84b, - (q31_t)0x7f13110f, (q31_t)0xad84609, (q31_t)0x7f1530f7, (q31_t)0xacbe35b, - (q31_t)0x7f174e70, (q31_t)0xabf8043, (q31_t)0x7f19697a, (q31_t)0xab31cc1, - (q31_t)0x7f1b8215, (q31_t)0xaa6b8d5, (q31_t)0x7f1d9842, (q31_t)0xa9a5480, - (q31_t)0x7f1fabff, (q31_t)0xa8defc3, (q31_t)0x7f21bd4e, (q31_t)0xa818a9d, - (q31_t)0x7f23cc2e, (q31_t)0xa752510, (q31_t)0x7f25d89e, (q31_t)0xa68bf1b, - (q31_t)0x7f27e29f, (q31_t)0xa5c58c0, (q31_t)0x7f29ea31, (q31_t)0xa4ff1fe, - (q31_t)0x7f2bef53, (q31_t)0xa438ad7, (q31_t)0x7f2df206, (q31_t)0xa37234a, - (q31_t)0x7f2ff24a, (q31_t)0xa2abb59, (q31_t)0x7f31f01d, (q31_t)0xa1e5303, - (q31_t)0x7f33eb81, (q31_t)0xa11ea49, (q31_t)0x7f35e476, (q31_t)0xa05812c, - (q31_t)0x7f37dafa, (q31_t)0x9f917ac, (q31_t)0x7f39cf0e, (q31_t)0x9ecadc9, - (q31_t)0x7f3bc0b3, (q31_t)0x9e04385, (q31_t)0x7f3dafe7, (q31_t)0x9d3d8df, - (q31_t)0x7f3f9cab, (q31_t)0x9c76dd8, (q31_t)0x7f4186ff, (q31_t)0x9bb0271, - (q31_t)0x7f436ee3, (q31_t)0x9ae96aa, (q31_t)0x7f455456, (q31_t)0x9a22a83, - (q31_t)0x7f473759, (q31_t)0x995bdfd, (q31_t)0x7f4917eb, (q31_t)0x9895118, - (q31_t)0x7f4af60d, (q31_t)0x97ce3d5, (q31_t)0x7f4cd1be, (q31_t)0x9707635, - (q31_t)0x7f4eaafe, (q31_t)0x9640837, (q31_t)0x7f5081cd, (q31_t)0x95799dd, - (q31_t)0x7f52562c, (q31_t)0x94b2b27, (q31_t)0x7f54281a, (q31_t)0x93ebc14, - (q31_t)0x7f55f796, (q31_t)0x9324ca7, (q31_t)0x7f57c4a2, (q31_t)0x925dcdf, - (q31_t)0x7f598f3c, (q31_t)0x9196cbc, (q31_t)0x7f5b5765, (q31_t)0x90cfc40, - (q31_t)0x7f5d1d1d, (q31_t)0x9008b6a, (q31_t)0x7f5ee063, (q31_t)0x8f41a3c, - (q31_t)0x7f60a138, (q31_t)0x8e7a8b5, (q31_t)0x7f625f9b, (q31_t)0x8db36d6, - (q31_t)0x7f641b8d, (q31_t)0x8cec4a0, (q31_t)0x7f65d50d, (q31_t)0x8c25213, - (q31_t)0x7f678c1c, (q31_t)0x8b5df30, (q31_t)0x7f6940b8, (q31_t)0x8a96bf6, - (q31_t)0x7f6af2e3, (q31_t)0x89cf867, (q31_t)0x7f6ca29c, (q31_t)0x8908483, - (q31_t)0x7f6e4fe3, (q31_t)0x884104b, (q31_t)0x7f6ffab8, (q31_t)0x8779bbe, - (q31_t)0x7f71a31b, (q31_t)0x86b26de, (q31_t)0x7f73490b, (q31_t)0x85eb1ab, - (q31_t)0x7f74ec8a, (q31_t)0x8523c25, (q31_t)0x7f768d96, (q31_t)0x845c64d, - (q31_t)0x7f782c30, (q31_t)0x8395024, (q31_t)0x7f79c857, (q31_t)0x82cd9a9, - (q31_t)0x7f7b620c, (q31_t)0x82062de, (q31_t)0x7f7cf94e, (q31_t)0x813ebc2, - (q31_t)0x7f7e8e1e, (q31_t)0x8077457, (q31_t)0x7f80207b, (q31_t)0x7fafc9c, - (q31_t)0x7f81b065, (q31_t)0x7ee8493, (q31_t)0x7f833ddd, (q31_t)0x7e20c3b, - (q31_t)0x7f84c8e2, (q31_t)0x7d59396, (q31_t)0x7f865174, (q31_t)0x7c91aa3, - (q31_t)0x7f87d792, (q31_t)0x7bca163, (q31_t)0x7f895b3e, (q31_t)0x7b027d7, - (q31_t)0x7f8adc77, (q31_t)0x7a3adff, (q31_t)0x7f8c5b3d, (q31_t)0x79733dc, - (q31_t)0x7f8dd78f, (q31_t)0x78ab96e, (q31_t)0x7f8f516e, (q31_t)0x77e3eb5, - (q31_t)0x7f90c8da, (q31_t)0x771c3b3, (q31_t)0x7f923dd2, (q31_t)0x7654867, - (q31_t)0x7f93b058, (q31_t)0x758ccd2, (q31_t)0x7f952069, (q31_t)0x74c50f4, - (q31_t)0x7f968e07, (q31_t)0x73fd4cf, (q31_t)0x7f97f932, (q31_t)0x7335862, - (q31_t)0x7f9961e8, (q31_t)0x726dbae, (q31_t)0x7f9ac82c, (q31_t)0x71a5eb3, - (q31_t)0x7f9c2bfb, (q31_t)0x70de172, (q31_t)0x7f9d8d56, (q31_t)0x70163eb, - (q31_t)0x7f9eec3e, (q31_t)0x6f4e620, (q31_t)0x7fa048b2, (q31_t)0x6e86810, - (q31_t)0x7fa1a2b2, (q31_t)0x6dbe9bb, (q31_t)0x7fa2fa3d, (q31_t)0x6cf6b23, - (q31_t)0x7fa44f55, (q31_t)0x6c2ec48, (q31_t)0x7fa5a1f9, (q31_t)0x6b66d29, - (q31_t)0x7fa6f228, (q31_t)0x6a9edc9, (q31_t)0x7fa83fe3, (q31_t)0x69d6e27, - (q31_t)0x7fa98b2a, (q31_t)0x690ee44, (q31_t)0x7faad3fd, (q31_t)0x6846e1f, - (q31_t)0x7fac1a5b, (q31_t)0x677edbb, (q31_t)0x7fad5e45, (q31_t)0x66b6d16, - (q31_t)0x7fae9fbb, (q31_t)0x65eec33, (q31_t)0x7fafdebb, (q31_t)0x6526b10, - (q31_t)0x7fb11b48, (q31_t)0x645e9af, (q31_t)0x7fb2555f, (q31_t)0x6396810, - (q31_t)0x7fb38d02, (q31_t)0x62ce634, (q31_t)0x7fb4c231, (q31_t)0x620641a, - (q31_t)0x7fb5f4ea, (q31_t)0x613e1c5, (q31_t)0x7fb7252f, (q31_t)0x6075f33, - (q31_t)0x7fb852ff, (q31_t)0x5fadc66, (q31_t)0x7fb97e5a, (q31_t)0x5ee595d, - (q31_t)0x7fbaa740, (q31_t)0x5e1d61b, (q31_t)0x7fbbcdb1, (q31_t)0x5d5529e, - (q31_t)0x7fbcf1ad, (q31_t)0x5c8cee7, (q31_t)0x7fbe1334, (q31_t)0x5bc4af8, - (q31_t)0x7fbf3246, (q31_t)0x5afc6d0, (q31_t)0x7fc04ee3, (q31_t)0x5a3426f, - (q31_t)0x7fc1690a, (q31_t)0x596bdd7, (q31_t)0x7fc280bc, (q31_t)0x58a3908, - (q31_t)0x7fc395f9, (q31_t)0x57db403, (q31_t)0x7fc4a8c1, (q31_t)0x5712ec7, - (q31_t)0x7fc5b913, (q31_t)0x564a955, (q31_t)0x7fc6c6f0, (q31_t)0x55823ae, - (q31_t)0x7fc7d258, (q31_t)0x54b9dd3, (q31_t)0x7fc8db4a, (q31_t)0x53f17c3, - (q31_t)0x7fc9e1c6, (q31_t)0x532917f, (q31_t)0x7fcae5cd, (q31_t)0x5260b08, - (q31_t)0x7fcbe75e, (q31_t)0x519845e, (q31_t)0x7fcce67a, (q31_t)0x50cfd82, - (q31_t)0x7fcde320, (q31_t)0x5007674, (q31_t)0x7fcedd50, (q31_t)0x4f3ef35, - (q31_t)0x7fcfd50b, (q31_t)0x4e767c5, (q31_t)0x7fd0ca4f, (q31_t)0x4dae024, - (q31_t)0x7fd1bd1e, (q31_t)0x4ce5854, (q31_t)0x7fd2ad77, (q31_t)0x4c1d054, - (q31_t)0x7fd39b5a, (q31_t)0x4b54825, (q31_t)0x7fd486c7, (q31_t)0x4a8bfc7, - (q31_t)0x7fd56fbe, (q31_t)0x49c373c, (q31_t)0x7fd6563f, (q31_t)0x48fae83, - (q31_t)0x7fd73a4a, (q31_t)0x483259d, (q31_t)0x7fd81bdf, (q31_t)0x4769c8b, - (q31_t)0x7fd8fafe, (q31_t)0x46a134c, (q31_t)0x7fd9d7a7, (q31_t)0x45d89e2, - (q31_t)0x7fdab1d9, (q31_t)0x451004d, (q31_t)0x7fdb8996, (q31_t)0x444768d, - (q31_t)0x7fdc5edc, (q31_t)0x437eca4, (q31_t)0x7fdd31ac, (q31_t)0x42b6290, - (q31_t)0x7fde0205, (q31_t)0x41ed854, (q31_t)0x7fdecfe8, (q31_t)0x4124dee, - (q31_t)0x7fdf9b55, (q31_t)0x405c361, (q31_t)0x7fe0644b, (q31_t)0x3f938ac, - (q31_t)0x7fe12acb, (q31_t)0x3ecadcf, (q31_t)0x7fe1eed5, (q31_t)0x3e022cc, - (q31_t)0x7fe2b067, (q31_t)0x3d397a3, (q31_t)0x7fe36f84, (q31_t)0x3c70c54, - (q31_t)0x7fe42c2a, (q31_t)0x3ba80df, (q31_t)0x7fe4e659, (q31_t)0x3adf546, - (q31_t)0x7fe59e12, (q31_t)0x3a16988, (q31_t)0x7fe65354, (q31_t)0x394dda7, - (q31_t)0x7fe7061f, (q31_t)0x38851a2, (q31_t)0x7fe7b674, (q31_t)0x37bc57b, - (q31_t)0x7fe86452, (q31_t)0x36f3931, (q31_t)0x7fe90fb9, (q31_t)0x362acc5, - (q31_t)0x7fe9b8a9, (q31_t)0x3562038, (q31_t)0x7fea5f23, (q31_t)0x3499389, - (q31_t)0x7feb0326, (q31_t)0x33d06bb, (q31_t)0x7feba4b2, (q31_t)0x33079cc, - (q31_t)0x7fec43c7, (q31_t)0x323ecbe, (q31_t)0x7fece065, (q31_t)0x3175f91, - (q31_t)0x7fed7a8c, (q31_t)0x30ad245, (q31_t)0x7fee123d, (q31_t)0x2fe44dc, - (q31_t)0x7feea776, (q31_t)0x2f1b755, (q31_t)0x7fef3a39, (q31_t)0x2e529b0, - (q31_t)0x7fefca84, (q31_t)0x2d89bf0, (q31_t)0x7ff05858, (q31_t)0x2cc0e13, - (q31_t)0x7ff0e3b6, (q31_t)0x2bf801a, (q31_t)0x7ff16c9c, (q31_t)0x2b2f207, - (q31_t)0x7ff1f30b, (q31_t)0x2a663d8, (q31_t)0x7ff27703, (q31_t)0x299d590, - (q31_t)0x7ff2f884, (q31_t)0x28d472e, (q31_t)0x7ff3778e, (q31_t)0x280b8b3, - (q31_t)0x7ff3f420, (q31_t)0x2742a1f, (q31_t)0x7ff46e3c, (q31_t)0x2679b73, - (q31_t)0x7ff4e5e0, (q31_t)0x25b0caf, (q31_t)0x7ff55b0d, (q31_t)0x24e7dd4, - (q31_t)0x7ff5cdc3, (q31_t)0x241eee2, (q31_t)0x7ff63e01, (q31_t)0x2355fd9, - (q31_t)0x7ff6abc8, (q31_t)0x228d0bb, (q31_t)0x7ff71718, (q31_t)0x21c4188, - (q31_t)0x7ff77ff1, (q31_t)0x20fb240, (q31_t)0x7ff7e652, (q31_t)0x20322e3, - (q31_t)0x7ff84a3c, (q31_t)0x1f69373, (q31_t)0x7ff8abae, (q31_t)0x1ea03ef, - (q31_t)0x7ff90aaa, (q31_t)0x1dd7459, (q31_t)0x7ff9672d, (q31_t)0x1d0e4b0, - (q31_t)0x7ff9c13a, (q31_t)0x1c454f5, (q31_t)0x7ffa18cf, (q31_t)0x1b7c528, - (q31_t)0x7ffa6dec, (q31_t)0x1ab354b, (q31_t)0x7ffac092, (q31_t)0x19ea55d, - (q31_t)0x7ffb10c1, (q31_t)0x192155f, (q31_t)0x7ffb5e78, (q31_t)0x1858552, - (q31_t)0x7ffba9b8, (q31_t)0x178f536, (q31_t)0x7ffbf280, (q31_t)0x16c650b, - (q31_t)0x7ffc38d1, (q31_t)0x15fd4d2, (q31_t)0x7ffc7caa, (q31_t)0x153448c, - (q31_t)0x7ffcbe0c, (q31_t)0x146b438, (q31_t)0x7ffcfcf6, (q31_t)0x13a23d8, - (q31_t)0x7ffd3969, (q31_t)0x12d936c, (q31_t)0x7ffd7364, (q31_t)0x12102f4, - (q31_t)0x7ffdaae7, (q31_t)0x1147271, (q31_t)0x7ffddff3, (q31_t)0x107e1e3, - (q31_t)0x7ffe1288, (q31_t)0xfb514b, (q31_t)0x7ffe42a4, (q31_t)0xeec0aa, - (q31_t)0x7ffe704a, (q31_t)0xe22fff, (q31_t)0x7ffe9b77, (q31_t)0xd59f4c, - (q31_t)0x7ffec42d, (q31_t)0xc90e90, (q31_t)0x7ffeea6c, (q31_t)0xbc7dcc, - (q31_t)0x7fff0e32, (q31_t)0xafed02, (q31_t)0x7fff2f82, (q31_t)0xa35c30, - (q31_t)0x7fff4e59, (q31_t)0x96cb58, (q31_t)0x7fff6ab9, (q31_t)0x8a3a7b, - (q31_t)0x7fff84a1, (q31_t)0x7da998, (q31_t)0x7fff9c12, (q31_t)0x7118b0, - (q31_t)0x7fffb10b, (q31_t)0x6487c4, (q31_t)0x7fffc38c, (q31_t)0x57f6d4, - (q31_t)0x7fffd396, (q31_t)0x4b65e1, (q31_t)0x7fffe128, (q31_t)0x3ed4ea, - (q31_t)0x7fffec43, (q31_t)0x3243f1, (q31_t)0x7ffff4e6, (q31_t)0x25b2f7, - (q31_t)0x7ffffb11, (q31_t)0x1921fb, (q31_t)0x7ffffec4, (q31_t)0xc90fe, - (q31_t)0x7fffffff, (q31_t)0x0, (q31_t)0x7ffffec4, (q31_t)0xfff36f02, - (q31_t)0x7ffffb11, (q31_t)0xffe6de05, (q31_t)0x7ffff4e6, (q31_t)0xffda4d09, - (q31_t)0x7fffec43, (q31_t)0xffcdbc0f, (q31_t)0x7fffe128, (q31_t)0xffc12b16, - (q31_t)0x7fffd396, (q31_t)0xffb49a1f, (q31_t)0x7fffc38c, (q31_t)0xffa8092c, - (q31_t)0x7fffb10b, (q31_t)0xff9b783c, (q31_t)0x7fff9c12, (q31_t)0xff8ee750, - (q31_t)0x7fff84a1, (q31_t)0xff825668, (q31_t)0x7fff6ab9, (q31_t)0xff75c585, - (q31_t)0x7fff4e59, (q31_t)0xff6934a8, (q31_t)0x7fff2f82, (q31_t)0xff5ca3d0, - (q31_t)0x7fff0e32, (q31_t)0xff5012fe, (q31_t)0x7ffeea6c, (q31_t)0xff438234, - (q31_t)0x7ffec42d, (q31_t)0xff36f170, (q31_t)0x7ffe9b77, (q31_t)0xff2a60b4, - (q31_t)0x7ffe704a, (q31_t)0xff1dd001, (q31_t)0x7ffe42a4, (q31_t)0xff113f56, - (q31_t)0x7ffe1288, (q31_t)0xff04aeb5, (q31_t)0x7ffddff3, (q31_t)0xfef81e1d, - (q31_t)0x7ffdaae7, (q31_t)0xfeeb8d8f, (q31_t)0x7ffd7364, (q31_t)0xfedefd0c, - (q31_t)0x7ffd3969, (q31_t)0xfed26c94, (q31_t)0x7ffcfcf6, (q31_t)0xfec5dc28, - (q31_t)0x7ffcbe0c, (q31_t)0xfeb94bc8, (q31_t)0x7ffc7caa, (q31_t)0xfeacbb74, - (q31_t)0x7ffc38d1, (q31_t)0xfea02b2e, (q31_t)0x7ffbf280, (q31_t)0xfe939af5, - (q31_t)0x7ffba9b8, (q31_t)0xfe870aca, (q31_t)0x7ffb5e78, (q31_t)0xfe7a7aae, - (q31_t)0x7ffb10c1, (q31_t)0xfe6deaa1, (q31_t)0x7ffac092, (q31_t)0xfe615aa3, - (q31_t)0x7ffa6dec, (q31_t)0xfe54cab5, (q31_t)0x7ffa18cf, (q31_t)0xfe483ad8, - (q31_t)0x7ff9c13a, (q31_t)0xfe3bab0b, (q31_t)0x7ff9672d, (q31_t)0xfe2f1b50, - (q31_t)0x7ff90aaa, (q31_t)0xfe228ba7, (q31_t)0x7ff8abae, (q31_t)0xfe15fc11, - (q31_t)0x7ff84a3c, (q31_t)0xfe096c8d, (q31_t)0x7ff7e652, (q31_t)0xfdfcdd1d, - (q31_t)0x7ff77ff1, (q31_t)0xfdf04dc0, (q31_t)0x7ff71718, (q31_t)0xfde3be78, - (q31_t)0x7ff6abc8, (q31_t)0xfdd72f45, (q31_t)0x7ff63e01, (q31_t)0xfdcaa027, - (q31_t)0x7ff5cdc3, (q31_t)0xfdbe111e, (q31_t)0x7ff55b0d, (q31_t)0xfdb1822c, - (q31_t)0x7ff4e5e0, (q31_t)0xfda4f351, (q31_t)0x7ff46e3c, (q31_t)0xfd98648d, - (q31_t)0x7ff3f420, (q31_t)0xfd8bd5e1, (q31_t)0x7ff3778e, (q31_t)0xfd7f474d, - (q31_t)0x7ff2f884, (q31_t)0xfd72b8d2, (q31_t)0x7ff27703, (q31_t)0xfd662a70, - (q31_t)0x7ff1f30b, (q31_t)0xfd599c28, (q31_t)0x7ff16c9c, (q31_t)0xfd4d0df9, - (q31_t)0x7ff0e3b6, (q31_t)0xfd407fe6, (q31_t)0x7ff05858, (q31_t)0xfd33f1ed, - (q31_t)0x7fefca84, (q31_t)0xfd276410, (q31_t)0x7fef3a39, (q31_t)0xfd1ad650, - (q31_t)0x7feea776, (q31_t)0xfd0e48ab, (q31_t)0x7fee123d, (q31_t)0xfd01bb24, - (q31_t)0x7fed7a8c, (q31_t)0xfcf52dbb, (q31_t)0x7fece065, (q31_t)0xfce8a06f, - (q31_t)0x7fec43c7, (q31_t)0xfcdc1342, (q31_t)0x7feba4b2, (q31_t)0xfccf8634, - (q31_t)0x7feb0326, (q31_t)0xfcc2f945, (q31_t)0x7fea5f23, (q31_t)0xfcb66c77, - (q31_t)0x7fe9b8a9, (q31_t)0xfca9dfc8, (q31_t)0x7fe90fb9, (q31_t)0xfc9d533b, - (q31_t)0x7fe86452, (q31_t)0xfc90c6cf, (q31_t)0x7fe7b674, (q31_t)0xfc843a85, - (q31_t)0x7fe7061f, (q31_t)0xfc77ae5e, (q31_t)0x7fe65354, (q31_t)0xfc6b2259, - (q31_t)0x7fe59e12, (q31_t)0xfc5e9678, (q31_t)0x7fe4e659, (q31_t)0xfc520aba, - (q31_t)0x7fe42c2a, (q31_t)0xfc457f21, (q31_t)0x7fe36f84, (q31_t)0xfc38f3ac, - (q31_t)0x7fe2b067, (q31_t)0xfc2c685d, (q31_t)0x7fe1eed5, (q31_t)0xfc1fdd34, - (q31_t)0x7fe12acb, (q31_t)0xfc135231, (q31_t)0x7fe0644b, (q31_t)0xfc06c754, - (q31_t)0x7fdf9b55, (q31_t)0xfbfa3c9f, (q31_t)0x7fdecfe8, (q31_t)0xfbedb212, - (q31_t)0x7fde0205, (q31_t)0xfbe127ac, (q31_t)0x7fdd31ac, (q31_t)0xfbd49d70, - (q31_t)0x7fdc5edc, (q31_t)0xfbc8135c, (q31_t)0x7fdb8996, (q31_t)0xfbbb8973, - (q31_t)0x7fdab1d9, (q31_t)0xfbaeffb3, (q31_t)0x7fd9d7a7, (q31_t)0xfba2761e, - (q31_t)0x7fd8fafe, (q31_t)0xfb95ecb4, (q31_t)0x7fd81bdf, (q31_t)0xfb896375, - (q31_t)0x7fd73a4a, (q31_t)0xfb7cda63, (q31_t)0x7fd6563f, (q31_t)0xfb70517d, - (q31_t)0x7fd56fbe, (q31_t)0xfb63c8c4, (q31_t)0x7fd486c7, (q31_t)0xfb574039, - (q31_t)0x7fd39b5a, (q31_t)0xfb4ab7db, (q31_t)0x7fd2ad77, (q31_t)0xfb3e2fac, - (q31_t)0x7fd1bd1e, (q31_t)0xfb31a7ac, (q31_t)0x7fd0ca4f, (q31_t)0xfb251fdc, - (q31_t)0x7fcfd50b, (q31_t)0xfb18983b, (q31_t)0x7fcedd50, (q31_t)0xfb0c10cb, - (q31_t)0x7fcde320, (q31_t)0xfaff898c, (q31_t)0x7fcce67a, (q31_t)0xfaf3027e, - (q31_t)0x7fcbe75e, (q31_t)0xfae67ba2, (q31_t)0x7fcae5cd, (q31_t)0xfad9f4f8, - (q31_t)0x7fc9e1c6, (q31_t)0xfacd6e81, (q31_t)0x7fc8db4a, (q31_t)0xfac0e83d, - (q31_t)0x7fc7d258, (q31_t)0xfab4622d, (q31_t)0x7fc6c6f0, (q31_t)0xfaa7dc52, - (q31_t)0x7fc5b913, (q31_t)0xfa9b56ab, (q31_t)0x7fc4a8c1, (q31_t)0xfa8ed139, - (q31_t)0x7fc395f9, (q31_t)0xfa824bfd, (q31_t)0x7fc280bc, (q31_t)0xfa75c6f8, - (q31_t)0x7fc1690a, (q31_t)0xfa694229, (q31_t)0x7fc04ee3, (q31_t)0xfa5cbd91, - (q31_t)0x7fbf3246, (q31_t)0xfa503930, (q31_t)0x7fbe1334, (q31_t)0xfa43b508, - (q31_t)0x7fbcf1ad, (q31_t)0xfa373119, (q31_t)0x7fbbcdb1, (q31_t)0xfa2aad62, - (q31_t)0x7fbaa740, (q31_t)0xfa1e29e5, (q31_t)0x7fb97e5a, (q31_t)0xfa11a6a3, - (q31_t)0x7fb852ff, (q31_t)0xfa05239a, (q31_t)0x7fb7252f, (q31_t)0xf9f8a0cd, - (q31_t)0x7fb5f4ea, (q31_t)0xf9ec1e3b, (q31_t)0x7fb4c231, (q31_t)0xf9df9be6, - (q31_t)0x7fb38d02, (q31_t)0xf9d319cc, (q31_t)0x7fb2555f, (q31_t)0xf9c697f0, - (q31_t)0x7fb11b48, (q31_t)0xf9ba1651, (q31_t)0x7fafdebb, (q31_t)0xf9ad94f0, - (q31_t)0x7fae9fbb, (q31_t)0xf9a113cd, (q31_t)0x7fad5e45, (q31_t)0xf99492ea, - (q31_t)0x7fac1a5b, (q31_t)0xf9881245, (q31_t)0x7faad3fd, (q31_t)0xf97b91e1, - (q31_t)0x7fa98b2a, (q31_t)0xf96f11bc, (q31_t)0x7fa83fe3, (q31_t)0xf96291d9, - (q31_t)0x7fa6f228, (q31_t)0xf9561237, (q31_t)0x7fa5a1f9, (q31_t)0xf94992d7, - (q31_t)0x7fa44f55, (q31_t)0xf93d13b8, (q31_t)0x7fa2fa3d, (q31_t)0xf93094dd, - (q31_t)0x7fa1a2b2, (q31_t)0xf9241645, (q31_t)0x7fa048b2, (q31_t)0xf91797f0, - (q31_t)0x7f9eec3e, (q31_t)0xf90b19e0, (q31_t)0x7f9d8d56, (q31_t)0xf8fe9c15, - (q31_t)0x7f9c2bfb, (q31_t)0xf8f21e8e, (q31_t)0x7f9ac82c, (q31_t)0xf8e5a14d, - (q31_t)0x7f9961e8, (q31_t)0xf8d92452, (q31_t)0x7f97f932, (q31_t)0xf8cca79e, - (q31_t)0x7f968e07, (q31_t)0xf8c02b31, (q31_t)0x7f952069, (q31_t)0xf8b3af0c, - (q31_t)0x7f93b058, (q31_t)0xf8a7332e, (q31_t)0x7f923dd2, (q31_t)0xf89ab799, - (q31_t)0x7f90c8da, (q31_t)0xf88e3c4d, (q31_t)0x7f8f516e, (q31_t)0xf881c14b, - (q31_t)0x7f8dd78f, (q31_t)0xf8754692, (q31_t)0x7f8c5b3d, (q31_t)0xf868cc24, - (q31_t)0x7f8adc77, (q31_t)0xf85c5201, (q31_t)0x7f895b3e, (q31_t)0xf84fd829, - (q31_t)0x7f87d792, (q31_t)0xf8435e9d, (q31_t)0x7f865174, (q31_t)0xf836e55d, - (q31_t)0x7f84c8e2, (q31_t)0xf82a6c6a, (q31_t)0x7f833ddd, (q31_t)0xf81df3c5, - (q31_t)0x7f81b065, (q31_t)0xf8117b6d, (q31_t)0x7f80207b, (q31_t)0xf8050364, - (q31_t)0x7f7e8e1e, (q31_t)0xf7f88ba9, (q31_t)0x7f7cf94e, (q31_t)0xf7ec143e, - (q31_t)0x7f7b620c, (q31_t)0xf7df9d22, (q31_t)0x7f79c857, (q31_t)0xf7d32657, - (q31_t)0x7f782c30, (q31_t)0xf7c6afdc, (q31_t)0x7f768d96, (q31_t)0xf7ba39b3, - (q31_t)0x7f74ec8a, (q31_t)0xf7adc3db, (q31_t)0x7f73490b, (q31_t)0xf7a14e55, - (q31_t)0x7f71a31b, (q31_t)0xf794d922, (q31_t)0x7f6ffab8, (q31_t)0xf7886442, - (q31_t)0x7f6e4fe3, (q31_t)0xf77befb5, (q31_t)0x7f6ca29c, (q31_t)0xf76f7b7d, - (q31_t)0x7f6af2e3, (q31_t)0xf7630799, (q31_t)0x7f6940b8, (q31_t)0xf756940a, - (q31_t)0x7f678c1c, (q31_t)0xf74a20d0, (q31_t)0x7f65d50d, (q31_t)0xf73daded, - (q31_t)0x7f641b8d, (q31_t)0xf7313b60, (q31_t)0x7f625f9b, (q31_t)0xf724c92a, - (q31_t)0x7f60a138, (q31_t)0xf718574b, (q31_t)0x7f5ee063, (q31_t)0xf70be5c4, - (q31_t)0x7f5d1d1d, (q31_t)0xf6ff7496, (q31_t)0x7f5b5765, (q31_t)0xf6f303c0, - (q31_t)0x7f598f3c, (q31_t)0xf6e69344, (q31_t)0x7f57c4a2, (q31_t)0xf6da2321, - (q31_t)0x7f55f796, (q31_t)0xf6cdb359, (q31_t)0x7f54281a, (q31_t)0xf6c143ec, - (q31_t)0x7f52562c, (q31_t)0xf6b4d4d9, (q31_t)0x7f5081cd, (q31_t)0xf6a86623, - (q31_t)0x7f4eaafe, (q31_t)0xf69bf7c9, (q31_t)0x7f4cd1be, (q31_t)0xf68f89cb, - (q31_t)0x7f4af60d, (q31_t)0xf6831c2b, (q31_t)0x7f4917eb, (q31_t)0xf676aee8, - (q31_t)0x7f473759, (q31_t)0xf66a4203, (q31_t)0x7f455456, (q31_t)0xf65dd57d, - (q31_t)0x7f436ee3, (q31_t)0xf6516956, (q31_t)0x7f4186ff, (q31_t)0xf644fd8f, - (q31_t)0x7f3f9cab, (q31_t)0xf6389228, (q31_t)0x7f3dafe7, (q31_t)0xf62c2721, - (q31_t)0x7f3bc0b3, (q31_t)0xf61fbc7b, (q31_t)0x7f39cf0e, (q31_t)0xf6135237, - (q31_t)0x7f37dafa, (q31_t)0xf606e854, (q31_t)0x7f35e476, (q31_t)0xf5fa7ed4, - (q31_t)0x7f33eb81, (q31_t)0xf5ee15b7, (q31_t)0x7f31f01d, (q31_t)0xf5e1acfd, - (q31_t)0x7f2ff24a, (q31_t)0xf5d544a7, (q31_t)0x7f2df206, (q31_t)0xf5c8dcb6, - (q31_t)0x7f2bef53, (q31_t)0xf5bc7529, (q31_t)0x7f29ea31, (q31_t)0xf5b00e02, - (q31_t)0x7f27e29f, (q31_t)0xf5a3a740, (q31_t)0x7f25d89e, (q31_t)0xf59740e5, - (q31_t)0x7f23cc2e, (q31_t)0xf58adaf0, (q31_t)0x7f21bd4e, (q31_t)0xf57e7563, - (q31_t)0x7f1fabff, (q31_t)0xf572103d, (q31_t)0x7f1d9842, (q31_t)0xf565ab80, - (q31_t)0x7f1b8215, (q31_t)0xf559472b, (q31_t)0x7f19697a, (q31_t)0xf54ce33f, - (q31_t)0x7f174e70, (q31_t)0xf5407fbd, (q31_t)0x7f1530f7, (q31_t)0xf5341ca5, - (q31_t)0x7f13110f, (q31_t)0xf527b9f7, (q31_t)0x7f10eeb9, (q31_t)0xf51b57b5, - (q31_t)0x7f0ec9f5, (q31_t)0xf50ef5de, (q31_t)0x7f0ca2c2, (q31_t)0xf5029473, - (q31_t)0x7f0a7921, (q31_t)0xf4f63374, (q31_t)0x7f084d12, (q31_t)0xf4e9d2e3, - (q31_t)0x7f061e95, (q31_t)0xf4dd72be, (q31_t)0x7f03eda9, (q31_t)0xf4d11308, - (q31_t)0x7f01ba50, (q31_t)0xf4c4b3c0, (q31_t)0x7eff8489, (q31_t)0xf4b854e7, - (q31_t)0x7efd4c54, (q31_t)0xf4abf67e, (q31_t)0x7efb11b1, (q31_t)0xf49f9884, - (q31_t)0x7ef8d4a1, (q31_t)0xf4933afa, (q31_t)0x7ef69523, (q31_t)0xf486dde1, - (q31_t)0x7ef45338, (q31_t)0xf47a8139, (q31_t)0x7ef20ee0, (q31_t)0xf46e2504, - (q31_t)0x7eefc81a, (q31_t)0xf461c940, (q31_t)0x7eed7ee7, (q31_t)0xf4556def, - (q31_t)0x7eeb3347, (q31_t)0xf4491311, (q31_t)0x7ee8e53a, (q31_t)0xf43cb8a7, - (q31_t)0x7ee694c1, (q31_t)0xf4305eb0, (q31_t)0x7ee441da, (q31_t)0xf424052f, - (q31_t)0x7ee1ec87, (q31_t)0xf417ac22, (q31_t)0x7edf94c7, (q31_t)0xf40b538b, - (q31_t)0x7edd3a9a, (q31_t)0xf3fefb6a, (q31_t)0x7edade01, (q31_t)0xf3f2a3bf, - (q31_t)0x7ed87efc, (q31_t)0xf3e64c8c, (q31_t)0x7ed61d8a, (q31_t)0xf3d9f5cf, - (q31_t)0x7ed3b9ad, (q31_t)0xf3cd9f8b, (q31_t)0x7ed15363, (q31_t)0xf3c149bf, - (q31_t)0x7eceeaad, (q31_t)0xf3b4f46c, (q31_t)0x7ecc7f8b, (q31_t)0xf3a89f92, - (q31_t)0x7eca11fe, (q31_t)0xf39c4b32, (q31_t)0x7ec7a205, (q31_t)0xf38ff74d, - (q31_t)0x7ec52fa0, (q31_t)0xf383a3e2, (q31_t)0x7ec2bad0, (q31_t)0xf37750f2, - (q31_t)0x7ec04394, (q31_t)0xf36afe7e, (q31_t)0x7ebdc9ed, (q31_t)0xf35eac86, - (q31_t)0x7ebb4ddb, (q31_t)0xf3525b0b, (q31_t)0x7eb8cf5d, (q31_t)0xf3460a0d, - (q31_t)0x7eb64e75, (q31_t)0xf339b98d, (q31_t)0x7eb3cb21, (q31_t)0xf32d698a, - (q31_t)0x7eb14563, (q31_t)0xf3211a07, (q31_t)0x7eaebd3a, (q31_t)0xf314cb02, - (q31_t)0x7eac32a6, (q31_t)0xf3087c7d, (q31_t)0x7ea9a5a8, (q31_t)0xf2fc2e77, - (q31_t)0x7ea7163f, (q31_t)0xf2efe0f2, (q31_t)0x7ea4846c, (q31_t)0xf2e393ef, - (q31_t)0x7ea1f02f, (q31_t)0xf2d7476c, (q31_t)0x7e9f5988, (q31_t)0xf2cafb6b, - (q31_t)0x7e9cc076, (q31_t)0xf2beafed, (q31_t)0x7e9a24fb, (q31_t)0xf2b264f2, - (q31_t)0x7e978715, (q31_t)0xf2a61a7a, (q31_t)0x7e94e6c6, (q31_t)0xf299d085, - (q31_t)0x7e92440d, (q31_t)0xf28d8715, (q31_t)0x7e8f9eeb, (q31_t)0xf2813e2a, - (q31_t)0x7e8cf75f, (q31_t)0xf274f5c3, (q31_t)0x7e8a4d6a, (q31_t)0xf268ade3, - (q31_t)0x7e87a10c, (q31_t)0xf25c6688, (q31_t)0x7e84f245, (q31_t)0xf2501fb5, - (q31_t)0x7e824114, (q31_t)0xf243d968, (q31_t)0x7e7f8d7b, (q31_t)0xf23793a3, - (q31_t)0x7e7cd778, (q31_t)0xf22b4e66, (q31_t)0x7e7a1f0d, (q31_t)0xf21f09b1, - (q31_t)0x7e77643a, (q31_t)0xf212c585, (q31_t)0x7e74a6fd, (q31_t)0xf20681e3, - (q31_t)0x7e71e759, (q31_t)0xf1fa3ecb, (q31_t)0x7e6f254c, (q31_t)0xf1edfc3d, - (q31_t)0x7e6c60d7, (q31_t)0xf1e1ba3a, (q31_t)0x7e6999fa, (q31_t)0xf1d578c2, - (q31_t)0x7e66d0b4, (q31_t)0xf1c937d6, (q31_t)0x7e640507, (q31_t)0xf1bcf777, - (q31_t)0x7e6136f3, (q31_t)0xf1b0b7a4, (q31_t)0x7e5e6676, (q31_t)0xf1a4785e, - (q31_t)0x7e5b9392, (q31_t)0xf19839a6, (q31_t)0x7e58be47, (q31_t)0xf18bfb7d, - (q31_t)0x7e55e694, (q31_t)0xf17fbde2, (q31_t)0x7e530c7a, (q31_t)0xf17380d6, - (q31_t)0x7e502ff9, (q31_t)0xf1674459, (q31_t)0x7e4d5110, (q31_t)0xf15b086d, - (q31_t)0x7e4a6fc1, (q31_t)0xf14ecd11, (q31_t)0x7e478c0b, (q31_t)0xf1429247, - (q31_t)0x7e44a5ef, (q31_t)0xf136580d, (q31_t)0x7e41bd6c, (q31_t)0xf12a1e66, - (q31_t)0x7e3ed282, (q31_t)0xf11de551, (q31_t)0x7e3be532, (q31_t)0xf111accf, - (q31_t)0x7e38f57c, (q31_t)0xf10574e0, (q31_t)0x7e360360, (q31_t)0xf0f93d86, - (q31_t)0x7e330ede, (q31_t)0xf0ed06bf, (q31_t)0x7e3017f6, (q31_t)0xf0e0d08d, - (q31_t)0x7e2d1ea8, (q31_t)0xf0d49af1, (q31_t)0x7e2a22f4, (q31_t)0xf0c865ea, - (q31_t)0x7e2724db, (q31_t)0xf0bc317a, (q31_t)0x7e24245d, (q31_t)0xf0affda0, - (q31_t)0x7e212179, (q31_t)0xf0a3ca5d, (q31_t)0x7e1e1c30, (q31_t)0xf09797b2, - (q31_t)0x7e1b1482, (q31_t)0xf08b659f, (q31_t)0x7e180a6f, (q31_t)0xf07f3424, - (q31_t)0x7e14fdf7, (q31_t)0xf0730342, (q31_t)0x7e11ef1b, (q31_t)0xf066d2fa, - (q31_t)0x7e0eddd9, (q31_t)0xf05aa34c, (q31_t)0x7e0bca34, (q31_t)0xf04e7438, - (q31_t)0x7e08b42a, (q31_t)0xf04245c0, (q31_t)0x7e059bbb, (q31_t)0xf03617e2, - (q31_t)0x7e0280e9, (q31_t)0xf029eaa1, (q31_t)0x7dff63b2, (q31_t)0xf01dbdfb, - (q31_t)0x7dfc4418, (q31_t)0xf01191f3, (q31_t)0x7df9221a, (q31_t)0xf0056687, - (q31_t)0x7df5fdb8, (q31_t)0xeff93bba, (q31_t)0x7df2d6f3, (q31_t)0xefed118a, - (q31_t)0x7defadca, (q31_t)0xefe0e7f9, (q31_t)0x7dec823e, (q31_t)0xefd4bf08, - (q31_t)0x7de9544f, (q31_t)0xefc896b5, (q31_t)0x7de623fd, (q31_t)0xefbc6f03, - (q31_t)0x7de2f148, (q31_t)0xefb047f2, (q31_t)0x7ddfbc30, (q31_t)0xefa42181, - (q31_t)0x7ddc84b5, (q31_t)0xef97fbb2, (q31_t)0x7dd94ad8, (q31_t)0xef8bd685, - (q31_t)0x7dd60e99, (q31_t)0xef7fb1fa, (q31_t)0x7dd2cff7, (q31_t)0xef738e12, - (q31_t)0x7dcf8ef3, (q31_t)0xef676ace, (q31_t)0x7dcc4b8d, (q31_t)0xef5b482d, - (q31_t)0x7dc905c5, (q31_t)0xef4f2630, (q31_t)0x7dc5bd9b, (q31_t)0xef4304d8, - (q31_t)0x7dc2730f, (q31_t)0xef36e426, (q31_t)0x7dbf2622, (q31_t)0xef2ac419, - (q31_t)0x7dbbd6d4, (q31_t)0xef1ea4b2, (q31_t)0x7db88524, (q31_t)0xef1285f2, - (q31_t)0x7db53113, (q31_t)0xef0667d9, (q31_t)0x7db1daa2, (q31_t)0xeefa4a67, - (q31_t)0x7dae81cf, (q31_t)0xeeee2d9d, (q31_t)0x7dab269b, (q31_t)0xeee2117c, - (q31_t)0x7da7c907, (q31_t)0xeed5f604, (q31_t)0x7da46912, (q31_t)0xeec9db35, - (q31_t)0x7da106bd, (q31_t)0xeebdc110, (q31_t)0x7d9da208, (q31_t)0xeeb1a796, - (q31_t)0x7d9a3af2, (q31_t)0xeea58ec6, (q31_t)0x7d96d17d, (q31_t)0xee9976a1, - (q31_t)0x7d9365a8, (q31_t)0xee8d5f29, (q31_t)0x7d8ff772, (q31_t)0xee81485c, - (q31_t)0x7d8c86de, (q31_t)0xee75323c, (q31_t)0x7d8913ea, (q31_t)0xee691cc9, - (q31_t)0x7d859e96, (q31_t)0xee5d0804, (q31_t)0x7d8226e4, (q31_t)0xee50f3ed, - (q31_t)0x7d7eacd2, (q31_t)0xee44e084, (q31_t)0x7d7b3061, (q31_t)0xee38cdcb, - (q31_t)0x7d77b192, (q31_t)0xee2cbbc1, (q31_t)0x7d743064, (q31_t)0xee20aa67, - (q31_t)0x7d70acd7, (q31_t)0xee1499bd, (q31_t)0x7d6d26ec, (q31_t)0xee0889c4, - (q31_t)0x7d699ea3, (q31_t)0xedfc7a7c, (q31_t)0x7d6613fb, (q31_t)0xedf06be6, - (q31_t)0x7d6286f6, (q31_t)0xede45e03, (q31_t)0x7d5ef793, (q31_t)0xedd850d2, - (q31_t)0x7d5b65d2, (q31_t)0xedcc4454, (q31_t)0x7d57d1b3, (q31_t)0xedc0388a, - (q31_t)0x7d543b37, (q31_t)0xedb42d74, (q31_t)0x7d50a25e, (q31_t)0xeda82313, - (q31_t)0x7d4d0728, (q31_t)0xed9c1967, (q31_t)0x7d496994, (q31_t)0xed901070, - (q31_t)0x7d45c9a4, (q31_t)0xed84082f, (q31_t)0x7d422757, (q31_t)0xed7800a5, - (q31_t)0x7d3e82ae, (q31_t)0xed6bf9d1, (q31_t)0x7d3adba7, (q31_t)0xed5ff3b5, - (q31_t)0x7d373245, (q31_t)0xed53ee51, (q31_t)0x7d338687, (q31_t)0xed47e9a5, - (q31_t)0x7d2fd86c, (q31_t)0xed3be5b1, (q31_t)0x7d2c27f6, (q31_t)0xed2fe277, - (q31_t)0x7d287523, (q31_t)0xed23dff7, (q31_t)0x7d24bff6, (q31_t)0xed17de31, - (q31_t)0x7d21086c, (q31_t)0xed0bdd25, (q31_t)0x7d1d4e88, (q31_t)0xecffdcd4, - (q31_t)0x7d199248, (q31_t)0xecf3dd3f, (q31_t)0x7d15d3ad, (q31_t)0xece7de66, - (q31_t)0x7d1212b7, (q31_t)0xecdbe04a, (q31_t)0x7d0e4f67, (q31_t)0xeccfe2ea, - (q31_t)0x7d0a89bc, (q31_t)0xecc3e648, (q31_t)0x7d06c1b6, (q31_t)0xecb7ea63, - (q31_t)0x7d02f757, (q31_t)0xecabef3d, (q31_t)0x7cff2a9d, (q31_t)0xec9ff4d6, - (q31_t)0x7cfb5b89, (q31_t)0xec93fb2e, (q31_t)0x7cf78a1b, (q31_t)0xec880245, - (q31_t)0x7cf3b653, (q31_t)0xec7c0a1d, (q31_t)0x7cefe032, (q31_t)0xec7012b5, - (q31_t)0x7cec07b8, (q31_t)0xec641c0e, (q31_t)0x7ce82ce4, (q31_t)0xec582629, - (q31_t)0x7ce44fb7, (q31_t)0xec4c3106, (q31_t)0x7ce07031, (q31_t)0xec403ca5, - (q31_t)0x7cdc8e52, (q31_t)0xec344908, (q31_t)0x7cd8aa1b, (q31_t)0xec28562d, - (q31_t)0x7cd4c38b, (q31_t)0xec1c6417, (q31_t)0x7cd0daa2, (q31_t)0xec1072c4, - (q31_t)0x7cccef62, (q31_t)0xec048237, (q31_t)0x7cc901c9, (q31_t)0xebf8926f, - (q31_t)0x7cc511d9, (q31_t)0xebeca36c, (q31_t)0x7cc11f90, (q31_t)0xebe0b52f, - (q31_t)0x7cbd2af0, (q31_t)0xebd4c7ba, (q31_t)0x7cb933f9, (q31_t)0xebc8db0b, - (q31_t)0x7cb53aaa, (q31_t)0xebbcef23, (q31_t)0x7cb13f04, (q31_t)0xebb10404, - (q31_t)0x7cad4107, (q31_t)0xeba519ad, (q31_t)0x7ca940b3, (q31_t)0xeb99301f, - (q31_t)0x7ca53e09, (q31_t)0xeb8d475b, (q31_t)0x7ca13908, (q31_t)0xeb815f60, - (q31_t)0x7c9d31b0, (q31_t)0xeb75782f, (q31_t)0x7c992803, (q31_t)0xeb6991ca, - (q31_t)0x7c951bff, (q31_t)0xeb5dac2f, (q31_t)0x7c910da5, (q31_t)0xeb51c760, - (q31_t)0x7c8cfcf6, (q31_t)0xeb45e35d, (q31_t)0x7c88e9f1, (q31_t)0xeb3a0027, - (q31_t)0x7c84d496, (q31_t)0xeb2e1dbe, (q31_t)0x7c80bce7, (q31_t)0xeb223c22, - (q31_t)0x7c7ca2e2, (q31_t)0xeb165b54, (q31_t)0x7c788688, (q31_t)0xeb0a7b54, - (q31_t)0x7c7467d9, (q31_t)0xeafe9c24, (q31_t)0x7c7046d6, (q31_t)0xeaf2bdc3, - (q31_t)0x7c6c237e, (q31_t)0xeae6e031, (q31_t)0x7c67fdd1, (q31_t)0xeadb0370, - (q31_t)0x7c63d5d1, (q31_t)0xeacf277f, (q31_t)0x7c5fab7c, (q31_t)0xeac34c60, - (q31_t)0x7c5b7ed4, (q31_t)0xeab77212, (q31_t)0x7c574fd8, (q31_t)0xeaab9896, - (q31_t)0x7c531e88, (q31_t)0xea9fbfed, (q31_t)0x7c4eeae5, (q31_t)0xea93e817, - (q31_t)0x7c4ab4ef, (q31_t)0xea881114, (q31_t)0x7c467ca6, (q31_t)0xea7c3ae5, - (q31_t)0x7c42420a, (q31_t)0xea70658a, (q31_t)0x7c3e051b, (q31_t)0xea649105, - (q31_t)0x7c39c5da, (q31_t)0xea58bd54, (q31_t)0x7c358446, (q31_t)0xea4cea79, - (q31_t)0x7c314060, (q31_t)0xea411874, (q31_t)0x7c2cfa28, (q31_t)0xea354746, - (q31_t)0x7c28b19e, (q31_t)0xea2976ef, (q31_t)0x7c2466c2, (q31_t)0xea1da770, - (q31_t)0x7c201994, (q31_t)0xea11d8c8, (q31_t)0x7c1bca16, (q31_t)0xea060af9, - (q31_t)0x7c177845, (q31_t)0xe9fa3e03, (q31_t)0x7c132424, (q31_t)0xe9ee71e6, - (q31_t)0x7c0ecdb2, (q31_t)0xe9e2a6a3, (q31_t)0x7c0a74f0, (q31_t)0xe9d6dc3b, - (q31_t)0x7c0619dc, (q31_t)0xe9cb12ad, (q31_t)0x7c01bc78, (q31_t)0xe9bf49fa, - (q31_t)0x7bfd5cc4, (q31_t)0xe9b38223, (q31_t)0x7bf8fac0, (q31_t)0xe9a7bb28, - (q31_t)0x7bf4966c, (q31_t)0xe99bf509, (q31_t)0x7bf02fc9, (q31_t)0xe9902fc7, - (q31_t)0x7bebc6d5, (q31_t)0xe9846b63, (q31_t)0x7be75b93, (q31_t)0xe978a7dd, - (q31_t)0x7be2ee01, (q31_t)0xe96ce535, (q31_t)0x7bde7e20, (q31_t)0xe961236c, - (q31_t)0x7bda0bf0, (q31_t)0xe9556282, (q31_t)0x7bd59771, (q31_t)0xe949a278, - (q31_t)0x7bd120a4, (q31_t)0xe93de34e, (q31_t)0x7bcca789, (q31_t)0xe9322505, - (q31_t)0x7bc82c1f, (q31_t)0xe926679c, (q31_t)0x7bc3ae67, (q31_t)0xe91aab16, - (q31_t)0x7bbf2e62, (q31_t)0xe90eef71, (q31_t)0x7bbaac0e, (q31_t)0xe90334af, - (q31_t)0x7bb6276e, (q31_t)0xe8f77acf, (q31_t)0x7bb1a080, (q31_t)0xe8ebc1d3, - (q31_t)0x7bad1744, (q31_t)0xe8e009ba, (q31_t)0x7ba88bbc, (q31_t)0xe8d45286, - (q31_t)0x7ba3fde7, (q31_t)0xe8c89c37, (q31_t)0x7b9f6dc5, (q31_t)0xe8bce6cd, - (q31_t)0x7b9adb57, (q31_t)0xe8b13248, (q31_t)0x7b96469d, (q31_t)0xe8a57ea9, - (q31_t)0x7b91af97, (q31_t)0xe899cbf1, (q31_t)0x7b8d1644, (q31_t)0xe88e1a20, - (q31_t)0x7b887aa6, (q31_t)0xe8826936, (q31_t)0x7b83dcbc, (q31_t)0xe876b934, - (q31_t)0x7b7f3c87, (q31_t)0xe86b0a1a, (q31_t)0x7b7a9a07, (q31_t)0xe85f5be9, - (q31_t)0x7b75f53c, (q31_t)0xe853aea1, (q31_t)0x7b714e25, (q31_t)0xe8480243, - (q31_t)0x7b6ca4c4, (q31_t)0xe83c56cf, (q31_t)0x7b67f919, (q31_t)0xe830ac45, - (q31_t)0x7b634b23, (q31_t)0xe82502a7, (q31_t)0x7b5e9ae4, (q31_t)0xe81959f4, - (q31_t)0x7b59e85a, (q31_t)0xe80db22d, (q31_t)0x7b553386, (q31_t)0xe8020b52, - (q31_t)0x7b507c69, (q31_t)0xe7f66564, (q31_t)0x7b4bc303, (q31_t)0xe7eac063, - (q31_t)0x7b470753, (q31_t)0xe7df1c50, (q31_t)0x7b42495a, (q31_t)0xe7d3792b, - (q31_t)0x7b3d8918, (q31_t)0xe7c7d6f4, (q31_t)0x7b38c68e, (q31_t)0xe7bc35ad, - (q31_t)0x7b3401bb, (q31_t)0xe7b09555, (q31_t)0x7b2f3aa0, (q31_t)0xe7a4f5ed, - (q31_t)0x7b2a713d, (q31_t)0xe7995776, (q31_t)0x7b25a591, (q31_t)0xe78db9ef, - (q31_t)0x7b20d79e, (q31_t)0xe7821d59, (q31_t)0x7b1c0764, (q31_t)0xe77681b6, - (q31_t)0x7b1734e2, (q31_t)0xe76ae704, (q31_t)0x7b126019, (q31_t)0xe75f4d45, - (q31_t)0x7b0d8909, (q31_t)0xe753b479, (q31_t)0x7b08afb2, (q31_t)0xe7481ca1, - (q31_t)0x7b03d414, (q31_t)0xe73c85bc, (q31_t)0x7afef630, (q31_t)0xe730efcc, - (q31_t)0x7afa1605, (q31_t)0xe7255ad1, (q31_t)0x7af53395, (q31_t)0xe719c6cb, - (q31_t)0x7af04edf, (q31_t)0xe70e33bb, (q31_t)0x7aeb67e3, (q31_t)0xe702a1a1, - (q31_t)0x7ae67ea1, (q31_t)0xe6f7107e, (q31_t)0x7ae1931a, (q31_t)0xe6eb8052, - (q31_t)0x7adca54e, (q31_t)0xe6dff11d, (q31_t)0x7ad7b53d, (q31_t)0xe6d462e1, - (q31_t)0x7ad2c2e8, (q31_t)0xe6c8d59c, (q31_t)0x7acdce4d, (q31_t)0xe6bd4951, - (q31_t)0x7ac8d76f, (q31_t)0xe6b1bdff, (q31_t)0x7ac3de4c, (q31_t)0xe6a633a6, - (q31_t)0x7abee2e5, (q31_t)0xe69aaa48, (q31_t)0x7ab9e53a, (q31_t)0xe68f21e5, - (q31_t)0x7ab4e54c, (q31_t)0xe6839a7c, (q31_t)0x7aafe31b, (q31_t)0xe6781410, - (q31_t)0x7aaadea6, (q31_t)0xe66c8e9f, (q31_t)0x7aa5d7ee, (q31_t)0xe6610a2a, - (q31_t)0x7aa0cef3, (q31_t)0xe65586b3, (q31_t)0x7a9bc3b6, (q31_t)0xe64a0438, - (q31_t)0x7a96b636, (q31_t)0xe63e82bc, (q31_t)0x7a91a674, (q31_t)0xe633023e, - (q31_t)0x7a8c9470, (q31_t)0xe62782be, (q31_t)0x7a87802a, (q31_t)0xe61c043d, - (q31_t)0x7a8269a3, (q31_t)0xe61086bc, (q31_t)0x7a7d50da, (q31_t)0xe6050a3b, - (q31_t)0x7a7835cf, (q31_t)0xe5f98ebb, (q31_t)0x7a731884, (q31_t)0xe5ee143b, - (q31_t)0x7a6df8f8, (q31_t)0xe5e29abc, (q31_t)0x7a68d72b, (q31_t)0xe5d72240, - (q31_t)0x7a63b31d, (q31_t)0xe5cbaac5, (q31_t)0x7a5e8cd0, (q31_t)0xe5c0344d, - (q31_t)0x7a596442, (q31_t)0xe5b4bed8, (q31_t)0x7a543974, (q31_t)0xe5a94a67, - (q31_t)0x7a4f0c67, (q31_t)0xe59dd6f9, (q31_t)0x7a49dd1a, (q31_t)0xe5926490, - (q31_t)0x7a44ab8e, (q31_t)0xe586f32c, (q31_t)0x7a3f77c3, (q31_t)0xe57b82cd, - (q31_t)0x7a3a41b9, (q31_t)0xe5701374, (q31_t)0x7a350970, (q31_t)0xe564a521, - (q31_t)0x7a2fcee8, (q31_t)0xe55937d5, (q31_t)0x7a2a9223, (q31_t)0xe54dcb8f, - (q31_t)0x7a25531f, (q31_t)0xe5426051, (q31_t)0x7a2011de, (q31_t)0xe536f61b, - (q31_t)0x7a1ace5f, (q31_t)0xe52b8cee, (q31_t)0x7a1588a2, (q31_t)0xe52024c9, - (q31_t)0x7a1040a8, (q31_t)0xe514bdad, (q31_t)0x7a0af671, (q31_t)0xe509579b, - (q31_t)0x7a05a9fd, (q31_t)0xe4fdf294, (q31_t)0x7a005b4d, (q31_t)0xe4f28e96, - (q31_t)0x79fb0a60, (q31_t)0xe4e72ba4, (q31_t)0x79f5b737, (q31_t)0xe4dbc9bd, - (q31_t)0x79f061d2, (q31_t)0xe4d068e2, (q31_t)0x79eb0a31, (q31_t)0xe4c50914, - (q31_t)0x79e5b054, (q31_t)0xe4b9aa52, (q31_t)0x79e0543c, (q31_t)0xe4ae4c9d, - (q31_t)0x79daf5e8, (q31_t)0xe4a2eff6, (q31_t)0x79d5955a, (q31_t)0xe497945d, - (q31_t)0x79d03291, (q31_t)0xe48c39d3, (q31_t)0x79cacd8d, (q31_t)0xe480e057, - (q31_t)0x79c5664f, (q31_t)0xe47587eb, (q31_t)0x79bffcd7, (q31_t)0xe46a308f, - (q31_t)0x79ba9125, (q31_t)0xe45eda43, (q31_t)0x79b52339, (q31_t)0xe4538507, - (q31_t)0x79afb313, (q31_t)0xe44830dd, (q31_t)0x79aa40b4, (q31_t)0xe43cddc4, - (q31_t)0x79a4cc1c, (q31_t)0xe4318bbe, (q31_t)0x799f554b, (q31_t)0xe4263ac9, - (q31_t)0x7999dc42, (q31_t)0xe41aeae8, (q31_t)0x799460ff, (q31_t)0xe40f9c1a, - (q31_t)0x798ee385, (q31_t)0xe4044e60, (q31_t)0x798963d2, (q31_t)0xe3f901ba, - (q31_t)0x7983e1e8, (q31_t)0xe3edb628, (q31_t)0x797e5dc6, (q31_t)0xe3e26bac, - (q31_t)0x7978d76c, (q31_t)0xe3d72245, (q31_t)0x79734edc, (q31_t)0xe3cbd9f4, - (q31_t)0x796dc414, (q31_t)0xe3c092b9, (q31_t)0x79683715, (q31_t)0xe3b54c95, - (q31_t)0x7962a7e0, (q31_t)0xe3aa0788, (q31_t)0x795d1675, (q31_t)0xe39ec393, - (q31_t)0x795782d3, (q31_t)0xe39380b6, (q31_t)0x7951ecfc, (q31_t)0xe3883ef2, - (q31_t)0x794c54ee, (q31_t)0xe37cfe47, (q31_t)0x7946baac, (q31_t)0xe371beb5, - (q31_t)0x79411e33, (q31_t)0xe366803c, (q31_t)0x793b7f86, (q31_t)0xe35b42df, - (q31_t)0x7935dea4, (q31_t)0xe350069b, (q31_t)0x79303b8e, (q31_t)0xe344cb73, - (q31_t)0x792a9642, (q31_t)0xe3399167, (q31_t)0x7924eec3, (q31_t)0xe32e5876, - (q31_t)0x791f4510, (q31_t)0xe32320a2, (q31_t)0x79199929, (q31_t)0xe317e9eb, - (q31_t)0x7913eb0e, (q31_t)0xe30cb451, (q31_t)0x790e3ac0, (q31_t)0xe3017fd5, - (q31_t)0x7908883f, (q31_t)0xe2f64c77, (q31_t)0x7902d38b, (q31_t)0xe2eb1a37, - (q31_t)0x78fd1ca4, (q31_t)0xe2dfe917, (q31_t)0x78f7638b, (q31_t)0xe2d4b916, - (q31_t)0x78f1a840, (q31_t)0xe2c98a35, (q31_t)0x78ebeac2, (q31_t)0xe2be5c74, - (q31_t)0x78e62b13, (q31_t)0xe2b32fd4, (q31_t)0x78e06932, (q31_t)0xe2a80456, - (q31_t)0x78daa520, (q31_t)0xe29cd9f8, (q31_t)0x78d4dedd, (q31_t)0xe291b0bd, - (q31_t)0x78cf1669, (q31_t)0xe28688a4, (q31_t)0x78c94bc4, (q31_t)0xe27b61af, - (q31_t)0x78c37eef, (q31_t)0xe2703bdc, (q31_t)0x78bdafea, (q31_t)0xe265172e, - (q31_t)0x78b7deb4, (q31_t)0xe259f3a3, (q31_t)0x78b20b4f, (q31_t)0xe24ed13d, - (q31_t)0x78ac35ba, (q31_t)0xe243affc, (q31_t)0x78a65df6, (q31_t)0xe2388fe1, - (q31_t)0x78a08402, (q31_t)0xe22d70eb, (q31_t)0x789aa7e0, (q31_t)0xe222531c, - (q31_t)0x7894c98f, (q31_t)0xe2173674, (q31_t)0x788ee910, (q31_t)0xe20c1af3, - (q31_t)0x78890663, (q31_t)0xe2010099, (q31_t)0x78832187, (q31_t)0xe1f5e768, - (q31_t)0x787d3a7e, (q31_t)0xe1eacf5f, (q31_t)0x78775147, (q31_t)0xe1dfb87f, - (q31_t)0x787165e3, (q31_t)0xe1d4a2c8, (q31_t)0x786b7852, (q31_t)0xe1c98e3b, - (q31_t)0x78658894, (q31_t)0xe1be7ad8, (q31_t)0x785f96a9, (q31_t)0xe1b368a0, - (q31_t)0x7859a292, (q31_t)0xe1a85793, (q31_t)0x7853ac4f, (q31_t)0xe19d47b1, - (q31_t)0x784db3e0, (q31_t)0xe19238fb, (q31_t)0x7847b946, (q31_t)0xe1872b72, - (q31_t)0x7841bc7f, (q31_t)0xe17c1f15, (q31_t)0x783bbd8e, (q31_t)0xe17113e5, - (q31_t)0x7835bc71, (q31_t)0xe16609e3, (q31_t)0x782fb92a, (q31_t)0xe15b0110, - (q31_t)0x7829b3b9, (q31_t)0xe14ff96a, (q31_t)0x7823ac1d, (q31_t)0xe144f2f3, - (q31_t)0x781da256, (q31_t)0xe139edac, (q31_t)0x78179666, (q31_t)0xe12ee995, - (q31_t)0x7811884d, (q31_t)0xe123e6ad, (q31_t)0x780b780a, (q31_t)0xe118e4f6, - (q31_t)0x7805659e, (q31_t)0xe10de470, (q31_t)0x77ff5109, (q31_t)0xe102e51c, - (q31_t)0x77f93a4b, (q31_t)0xe0f7e6f9, (q31_t)0x77f32165, (q31_t)0xe0ecea09, - (q31_t)0x77ed0657, (q31_t)0xe0e1ee4b, (q31_t)0x77e6e921, (q31_t)0xe0d6f3c1, - (q31_t)0x77e0c9c3, (q31_t)0xe0cbfa6a, (q31_t)0x77daa83d, (q31_t)0xe0c10247, - (q31_t)0x77d48490, (q31_t)0xe0b60b58, (q31_t)0x77ce5ebd, (q31_t)0xe0ab159e, - (q31_t)0x77c836c2, (q31_t)0xe0a0211a, (q31_t)0x77c20ca1, (q31_t)0xe0952dcb, - (q31_t)0x77bbe05a, (q31_t)0xe08a3bb2, (q31_t)0x77b5b1ec, (q31_t)0xe07f4acf, - (q31_t)0x77af8159, (q31_t)0xe0745b24, (q31_t)0x77a94ea0, (q31_t)0xe0696cb0, - (q31_t)0x77a319c2, (q31_t)0xe05e7f74, (q31_t)0x779ce2be, (q31_t)0xe053936f, - (q31_t)0x7796a996, (q31_t)0xe048a8a4, (q31_t)0x77906e49, (q31_t)0xe03dbf11, - (q31_t)0x778a30d8, (q31_t)0xe032d6b8, (q31_t)0x7783f143, (q31_t)0xe027ef99, - (q31_t)0x777daf89, (q31_t)0xe01d09b4, (q31_t)0x77776bac, (q31_t)0xe012250a, - (q31_t)0x777125ac, (q31_t)0xe007419b, (q31_t)0x776add88, (q31_t)0xdffc5f67, - (q31_t)0x77649341, (q31_t)0xdff17e70, (q31_t)0x775e46d8, (q31_t)0xdfe69eb4, - (q31_t)0x7757f84c, (q31_t)0xdfdbc036, (q31_t)0x7751a79e, (q31_t)0xdfd0e2f5, - (q31_t)0x774b54ce, (q31_t)0xdfc606f1, (q31_t)0x7744ffdd, (q31_t)0xdfbb2c2c, - (q31_t)0x773ea8ca, (q31_t)0xdfb052a5, (q31_t)0x77384f95, (q31_t)0xdfa57a5d, - (q31_t)0x7731f440, (q31_t)0xdf9aa354, (q31_t)0x772b96ca, (q31_t)0xdf8fcd8b, - (q31_t)0x77253733, (q31_t)0xdf84f902, (q31_t)0x771ed57c, (q31_t)0xdf7a25ba, - (q31_t)0x771871a5, (q31_t)0xdf6f53b3, (q31_t)0x77120bae, (q31_t)0xdf6482ed, - (q31_t)0x770ba398, (q31_t)0xdf59b369, (q31_t)0x77053962, (q31_t)0xdf4ee527, - (q31_t)0x76fecd0e, (q31_t)0xdf441828, (q31_t)0x76f85e9a, (q31_t)0xdf394c6b, - (q31_t)0x76f1ee09, (q31_t)0xdf2e81f3, (q31_t)0x76eb7b58, (q31_t)0xdf23b8be, - (q31_t)0x76e5068a, (q31_t)0xdf18f0ce, (q31_t)0x76de8f9e, (q31_t)0xdf0e2a22, - (q31_t)0x76d81695, (q31_t)0xdf0364bc, (q31_t)0x76d19b6e, (q31_t)0xdef8a09b, - (q31_t)0x76cb1e2a, (q31_t)0xdeedddc0, (q31_t)0x76c49ec9, (q31_t)0xdee31c2b, - (q31_t)0x76be1d4c, (q31_t)0xded85bdd, (q31_t)0x76b799b3, (q31_t)0xdecd9cd7, - (q31_t)0x76b113fd, (q31_t)0xdec2df18, (q31_t)0x76aa8c2c, (q31_t)0xdeb822a1, - (q31_t)0x76a4023f, (q31_t)0xdead6773, (q31_t)0x769d7637, (q31_t)0xdea2ad8d, - (q31_t)0x7696e814, (q31_t)0xde97f4f1, (q31_t)0x769057d6, (q31_t)0xde8d3d9e, - (q31_t)0x7689c57d, (q31_t)0xde828796, (q31_t)0x7683310b, (q31_t)0xde77d2d8, - (q31_t)0x767c9a7e, (q31_t)0xde6d1f65, (q31_t)0x767601d7, (q31_t)0xde626d3e, - (q31_t)0x766f6717, (q31_t)0xde57bc62, (q31_t)0x7668ca3e, (q31_t)0xde4d0cd2, - (q31_t)0x76622b4c, (q31_t)0xde425e8f, (q31_t)0x765b8a41, (q31_t)0xde37b199, - (q31_t)0x7654e71d, (q31_t)0xde2d05f1, (q31_t)0x764e41e2, (q31_t)0xde225b96, - (q31_t)0x76479a8e, (q31_t)0xde17b28a, (q31_t)0x7640f123, (q31_t)0xde0d0acc, - (q31_t)0x763a45a0, (q31_t)0xde02645d, (q31_t)0x76339806, (q31_t)0xddf7bf3e, - (q31_t)0x762ce855, (q31_t)0xdded1b6e, (q31_t)0x7626368d, (q31_t)0xdde278ef, - (q31_t)0x761f82af, (q31_t)0xddd7d7c1, (q31_t)0x7618ccba, (q31_t)0xddcd37e4, - (q31_t)0x761214b0, (q31_t)0xddc29958, (q31_t)0x760b5a90, (q31_t)0xddb7fc1e, - (q31_t)0x76049e5b, (q31_t)0xddad6036, (q31_t)0x75fde011, (q31_t)0xdda2c5a2, - (q31_t)0x75f71fb1, (q31_t)0xdd982c60, (q31_t)0x75f05d3d, (q31_t)0xdd8d9472, - (q31_t)0x75e998b5, (q31_t)0xdd82fdd8, (q31_t)0x75e2d219, (q31_t)0xdd786892, - (q31_t)0x75dc0968, (q31_t)0xdd6dd4a2, (q31_t)0x75d53ea5, (q31_t)0xdd634206, - (q31_t)0x75ce71ce, (q31_t)0xdd58b0c0, (q31_t)0x75c7a2e3, (q31_t)0xdd4e20d0, - (q31_t)0x75c0d1e7, (q31_t)0xdd439236, (q31_t)0x75b9fed7, (q31_t)0xdd3904f4, - (q31_t)0x75b329b5, (q31_t)0xdd2e7908, (q31_t)0x75ac5282, (q31_t)0xdd23ee74, - (q31_t)0x75a5793c, (q31_t)0xdd196538, (q31_t)0x759e9de5, (q31_t)0xdd0edd55, - (q31_t)0x7597c07d, (q31_t)0xdd0456ca, (q31_t)0x7590e104, (q31_t)0xdcf9d199, - (q31_t)0x7589ff7a, (q31_t)0xdcef4dc2, (q31_t)0x75831be0, (q31_t)0xdce4cb44, - (q31_t)0x757c3636, (q31_t)0xdcda4a21, (q31_t)0x75754e7c, (q31_t)0xdccfca59, - (q31_t)0x756e64b2, (q31_t)0xdcc54bec, (q31_t)0x756778d9, (q31_t)0xdcbacedb, - (q31_t)0x75608af1, (q31_t)0xdcb05326, (q31_t)0x75599afa, (q31_t)0xdca5d8cd, - (q31_t)0x7552a8f4, (q31_t)0xdc9b5fd2, (q31_t)0x754bb4e1, (q31_t)0xdc90e834, - (q31_t)0x7544bebf, (q31_t)0xdc8671f3, (q31_t)0x753dc68f, (q31_t)0xdc7bfd11, - (q31_t)0x7536cc52, (q31_t)0xdc71898d, (q31_t)0x752fd008, (q31_t)0xdc671768, - (q31_t)0x7528d1b1, (q31_t)0xdc5ca6a2, (q31_t)0x7521d14d, (q31_t)0xdc52373c, - (q31_t)0x751acedd, (q31_t)0xdc47c936, (q31_t)0x7513ca60, (q31_t)0xdc3d5c91, - (q31_t)0x750cc3d8, (q31_t)0xdc32f14d, (q31_t)0x7505bb44, (q31_t)0xdc28876a, - (q31_t)0x74feb0a5, (q31_t)0xdc1e1ee9, (q31_t)0x74f7a3fb, (q31_t)0xdc13b7c9, - (q31_t)0x74f09546, (q31_t)0xdc09520d, (q31_t)0x74e98487, (q31_t)0xdbfeedb3, - (q31_t)0x74e271bd, (q31_t)0xdbf48abd, (q31_t)0x74db5cea, (q31_t)0xdbea292b, - (q31_t)0x74d4460c, (q31_t)0xdbdfc8fc, (q31_t)0x74cd2d26, (q31_t)0xdbd56a32, - (q31_t)0x74c61236, (q31_t)0xdbcb0cce, (q31_t)0x74bef53d, (q31_t)0xdbc0b0ce, - (q31_t)0x74b7d63c, (q31_t)0xdbb65634, (q31_t)0x74b0b533, (q31_t)0xdbabfd01, - (q31_t)0x74a99221, (q31_t)0xdba1a534, (q31_t)0x74a26d08, (q31_t)0xdb974ece, - (q31_t)0x749b45e7, (q31_t)0xdb8cf9cf, (q31_t)0x74941cbf, (q31_t)0xdb82a638, - (q31_t)0x748cf190, (q31_t)0xdb785409, (q31_t)0x7485c45b, (q31_t)0xdb6e0342, - (q31_t)0x747e951f, (q31_t)0xdb63b3e5, (q31_t)0x747763dd, (q31_t)0xdb5965f1, - (q31_t)0x74703095, (q31_t)0xdb4f1967, (q31_t)0x7468fb47, (q31_t)0xdb44ce46, - (q31_t)0x7461c3f5, (q31_t)0xdb3a8491, (q31_t)0x745a8a9d, (q31_t)0xdb303c46, - (q31_t)0x74534f41, (q31_t)0xdb25f566, (q31_t)0x744c11e0, (q31_t)0xdb1baff2, - (q31_t)0x7444d27b, (q31_t)0xdb116beb, (q31_t)0x743d9112, (q31_t)0xdb072950, - (q31_t)0x74364da6, (q31_t)0xdafce821, (q31_t)0x742f0836, (q31_t)0xdaf2a860, - (q31_t)0x7427c0c3, (q31_t)0xdae86a0d, (q31_t)0x7420774d, (q31_t)0xdade2d28, - (q31_t)0x74192bd5, (q31_t)0xdad3f1b1, (q31_t)0x7411de5b, (q31_t)0xdac9b7a9, - (q31_t)0x740a8edf, (q31_t)0xdabf7f11, (q31_t)0x74033d61, (q31_t)0xdab547e8, - (q31_t)0x73fbe9e2, (q31_t)0xdaab122f, (q31_t)0x73f49462, (q31_t)0xdaa0dde7, - (q31_t)0x73ed3ce1, (q31_t)0xda96ab0f, (q31_t)0x73e5e360, (q31_t)0xda8c79a9, - (q31_t)0x73de87de, (q31_t)0xda8249b4, (q31_t)0x73d72a5d, (q31_t)0xda781b31, - (q31_t)0x73cfcadc, (q31_t)0xda6dee21, (q31_t)0x73c8695b, (q31_t)0xda63c284, - (q31_t)0x73c105db, (q31_t)0xda599859, (q31_t)0x73b9a05d, (q31_t)0xda4f6fa3, - (q31_t)0x73b238e0, (q31_t)0xda454860, (q31_t)0x73aacf65, (q31_t)0xda3b2292, - (q31_t)0x73a363ec, (q31_t)0xda30fe38, (q31_t)0x739bf675, (q31_t)0xda26db54, - (q31_t)0x73948701, (q31_t)0xda1cb9e5, (q31_t)0x738d1590, (q31_t)0xda1299ec, - (q31_t)0x7385a222, (q31_t)0xda087b69, (q31_t)0x737e2cb7, (q31_t)0xd9fe5e5e, - (q31_t)0x7376b551, (q31_t)0xd9f442c9, (q31_t)0x736f3bee, (q31_t)0xd9ea28ac, - (q31_t)0x7367c090, (q31_t)0xd9e01006, (q31_t)0x73604336, (q31_t)0xd9d5f8d9, - (q31_t)0x7358c3e2, (q31_t)0xd9cbe325, (q31_t)0x73514292, (q31_t)0xd9c1cee9, - (q31_t)0x7349bf48, (q31_t)0xd9b7bc27, (q31_t)0x73423a04, (q31_t)0xd9adaadf, - (q31_t)0x733ab2c6, (q31_t)0xd9a39b11, (q31_t)0x7333298f, (q31_t)0xd9998cbe, - (q31_t)0x732b9e5e, (q31_t)0xd98f7fe6, (q31_t)0x73241134, (q31_t)0xd9857489, - (q31_t)0x731c8211, (q31_t)0xd97b6aa8, (q31_t)0x7314f0f6, (q31_t)0xd9716243, - (q31_t)0x730d5de3, (q31_t)0xd9675b5a, (q31_t)0x7305c8d7, (q31_t)0xd95d55ef, - (q31_t)0x72fe31d5, (q31_t)0xd9535201, (q31_t)0x72f698db, (q31_t)0xd9494f90, - (q31_t)0x72eefdea, (q31_t)0xd93f4e9e, (q31_t)0x72e76102, (q31_t)0xd9354f2a, - (q31_t)0x72dfc224, (q31_t)0xd92b5135, (q31_t)0x72d82150, (q31_t)0xd92154bf, - (q31_t)0x72d07e85, (q31_t)0xd91759c9, (q31_t)0x72c8d9c6, (q31_t)0xd90d6053, - (q31_t)0x72c13311, (q31_t)0xd903685d, (q31_t)0x72b98a67, (q31_t)0xd8f971e8, - (q31_t)0x72b1dfc9, (q31_t)0xd8ef7cf4, (q31_t)0x72aa3336, (q31_t)0xd8e58982, - (q31_t)0x72a284b0, (q31_t)0xd8db9792, (q31_t)0x729ad435, (q31_t)0xd8d1a724, - (q31_t)0x729321c7, (q31_t)0xd8c7b838, (q31_t)0x728b6d66, (q31_t)0xd8bdcad0, - (q31_t)0x7283b712, (q31_t)0xd8b3deeb, (q31_t)0x727bfecc, (q31_t)0xd8a9f48a, - (q31_t)0x72744493, (q31_t)0xd8a00bae, (q31_t)0x726c8868, (q31_t)0xd8962456, - (q31_t)0x7264ca4c, (q31_t)0xd88c3e83, (q31_t)0x725d0a3e, (q31_t)0xd8825a35, - (q31_t)0x72554840, (q31_t)0xd878776d, (q31_t)0x724d8450, (q31_t)0xd86e962b, - (q31_t)0x7245be70, (q31_t)0xd864b670, (q31_t)0x723df6a0, (q31_t)0xd85ad83c, - (q31_t)0x72362ce0, (q31_t)0xd850fb8e, (q31_t)0x722e6130, (q31_t)0xd8472069, - (q31_t)0x72269391, (q31_t)0xd83d46cc, (q31_t)0x721ec403, (q31_t)0xd8336eb7, - (q31_t)0x7216f287, (q31_t)0xd829982b, (q31_t)0x720f1f1c, (q31_t)0xd81fc328, - (q31_t)0x720749c3, (q31_t)0xd815efae, (q31_t)0x71ff727c, (q31_t)0xd80c1dbf, - (q31_t)0x71f79948, (q31_t)0xd8024d59, (q31_t)0x71efbe27, (q31_t)0xd7f87e7f, - (q31_t)0x71e7e118, (q31_t)0xd7eeb130, (q31_t)0x71e0021e, (q31_t)0xd7e4e56c, - (q31_t)0x71d82137, (q31_t)0xd7db1b34, (q31_t)0x71d03e64, (q31_t)0xd7d15288, - (q31_t)0x71c859a5, (q31_t)0xd7c78b68, (q31_t)0x71c072fb, (q31_t)0xd7bdc5d6, - (q31_t)0x71b88a66, (q31_t)0xd7b401d1, (q31_t)0x71b09fe7, (q31_t)0xd7aa3f5a, - (q31_t)0x71a8b37c, (q31_t)0xd7a07e70, (q31_t)0x71a0c528, (q31_t)0xd796bf16, - (q31_t)0x7198d4ea, (q31_t)0xd78d014a, (q31_t)0x7190e2c3, (q31_t)0xd783450d, - (q31_t)0x7188eeb2, (q31_t)0xd7798a60, (q31_t)0x7180f8b8, (q31_t)0xd76fd143, - (q31_t)0x717900d6, (q31_t)0xd76619b6, (q31_t)0x7171070c, (q31_t)0xd75c63ba, - (q31_t)0x71690b59, (q31_t)0xd752af4f, (q31_t)0x71610dbf, (q31_t)0xd748fc75, - (q31_t)0x71590e3e, (q31_t)0xd73f4b2e, (q31_t)0x71510cd5, (q31_t)0xd7359b78, - (q31_t)0x71490986, (q31_t)0xd72bed55, (q31_t)0x71410450, (q31_t)0xd72240c5, - (q31_t)0x7138fd35, (q31_t)0xd71895c9, (q31_t)0x7130f433, (q31_t)0xd70eec60, - (q31_t)0x7128e94c, (q31_t)0xd705448b, (q31_t)0x7120dc80, (q31_t)0xd6fb9e4b, - (q31_t)0x7118cdcf, (q31_t)0xd6f1f99f, (q31_t)0x7110bd39, (q31_t)0xd6e85689, - (q31_t)0x7108aabf, (q31_t)0xd6deb508, (q31_t)0x71009661, (q31_t)0xd6d5151d, - (q31_t)0x70f8801f, (q31_t)0xd6cb76c9, (q31_t)0x70f067fb, (q31_t)0xd6c1da0b, - (q31_t)0x70e84df3, (q31_t)0xd6b83ee4, (q31_t)0x70e03208, (q31_t)0xd6aea555, - (q31_t)0x70d8143b, (q31_t)0xd6a50d5d, (q31_t)0x70cff48c, (q31_t)0xd69b76fe, - (q31_t)0x70c7d2fb, (q31_t)0xd691e237, (q31_t)0x70bfaf89, (q31_t)0xd6884f09, - (q31_t)0x70b78a36, (q31_t)0xd67ebd74, (q31_t)0x70af6302, (q31_t)0xd6752d79, - (q31_t)0x70a739ed, (q31_t)0xd66b9f18, (q31_t)0x709f0ef8, (q31_t)0xd6621251, - (q31_t)0x7096e223, (q31_t)0xd6588725, (q31_t)0x708eb36f, (q31_t)0xd64efd94, - (q31_t)0x708682dc, (q31_t)0xd645759f, (q31_t)0x707e5069, (q31_t)0xd63bef46, - (q31_t)0x70761c18, (q31_t)0xd6326a88, (q31_t)0x706de5e9, (q31_t)0xd628e767, - (q31_t)0x7065addb, (q31_t)0xd61f65e4, (q31_t)0x705d73f0, (q31_t)0xd615e5fd, - (q31_t)0x70553828, (q31_t)0xd60c67b4, (q31_t)0x704cfa83, (q31_t)0xd602eb0a, - (q31_t)0x7044bb00, (q31_t)0xd5f96ffd, (q31_t)0x703c79a2, (q31_t)0xd5eff690, - (q31_t)0x70343667, (q31_t)0xd5e67ec1, (q31_t)0x702bf151, (q31_t)0xd5dd0892, - (q31_t)0x7023aa5f, (q31_t)0xd5d39403, (q31_t)0x701b6193, (q31_t)0xd5ca2115, - (q31_t)0x701316eb, (q31_t)0xd5c0afc6, (q31_t)0x700aca69, (q31_t)0xd5b74019, - (q31_t)0x70027c0c, (q31_t)0xd5add20d, (q31_t)0x6ffa2bd6, (q31_t)0xd5a465a3, - (q31_t)0x6ff1d9c7, (q31_t)0xd59afadb, (q31_t)0x6fe985de, (q31_t)0xd59191b5, - (q31_t)0x6fe1301c, (q31_t)0xd5882a32, (q31_t)0x6fd8d882, (q31_t)0xd57ec452, - (q31_t)0x6fd07f0f, (q31_t)0xd5756016, (q31_t)0x6fc823c5, (q31_t)0xd56bfd7d, - (q31_t)0x6fbfc6a3, (q31_t)0xd5629c89, (q31_t)0x6fb767aa, (q31_t)0xd5593d3a, - (q31_t)0x6faf06da, (q31_t)0xd54fdf8f, (q31_t)0x6fa6a433, (q31_t)0xd5468389, - (q31_t)0x6f9e3fb6, (q31_t)0xd53d292a, (q31_t)0x6f95d963, (q31_t)0xd533d070, - (q31_t)0x6f8d713a, (q31_t)0xd52a795d, (q31_t)0x6f85073c, (q31_t)0xd52123f0, - (q31_t)0x6f7c9b69, (q31_t)0xd517d02b, (q31_t)0x6f742dc1, (q31_t)0xd50e7e0d, - (q31_t)0x6f6bbe45, (q31_t)0xd5052d97, (q31_t)0x6f634cf5, (q31_t)0xd4fbdec9, - (q31_t)0x6f5ad9d1, (q31_t)0xd4f291a4, (q31_t)0x6f5264da, (q31_t)0xd4e94627, - (q31_t)0x6f49ee0f, (q31_t)0xd4dffc54, (q31_t)0x6f417573, (q31_t)0xd4d6b42b, - (q31_t)0x6f38fb03, (q31_t)0xd4cd6dab, (q31_t)0x6f307ec2, (q31_t)0xd4c428d6, - (q31_t)0x6f2800af, (q31_t)0xd4bae5ab, (q31_t)0x6f1f80ca, (q31_t)0xd4b1a42c, - (q31_t)0x6f16ff14, (q31_t)0xd4a86458, (q31_t)0x6f0e7b8e, (q31_t)0xd49f2630, - (q31_t)0x6f05f637, (q31_t)0xd495e9b3, (q31_t)0x6efd6f10, (q31_t)0xd48caee4, - (q31_t)0x6ef4e619, (q31_t)0xd48375c1, (q31_t)0x6eec5b53, (q31_t)0xd47a3e4b, - (q31_t)0x6ee3cebe, (q31_t)0xd4710883, (q31_t)0x6edb405a, (q31_t)0xd467d469, - (q31_t)0x6ed2b027, (q31_t)0xd45ea1fd, (q31_t)0x6eca1e27, (q31_t)0xd4557140, - (q31_t)0x6ec18a58, (q31_t)0xd44c4232, (q31_t)0x6eb8f4bc, (q31_t)0xd44314d3, - (q31_t)0x6eb05d53, (q31_t)0xd439e923, (q31_t)0x6ea7c41e, (q31_t)0xd430bf24, - (q31_t)0x6e9f291b, (q31_t)0xd42796d5, (q31_t)0x6e968c4d, (q31_t)0xd41e7037, - (q31_t)0x6e8dedb3, (q31_t)0xd4154b4a, (q31_t)0x6e854d4d, (q31_t)0xd40c280e, - (q31_t)0x6e7cab1c, (q31_t)0xd4030684, (q31_t)0x6e740720, (q31_t)0xd3f9e6ad, - (q31_t)0x6e6b615a, (q31_t)0xd3f0c887, (q31_t)0x6e62b9ca, (q31_t)0xd3e7ac15, - (q31_t)0x6e5a1070, (q31_t)0xd3de9156, (q31_t)0x6e51654c, (q31_t)0xd3d5784a, - (q31_t)0x6e48b860, (q31_t)0xd3cc60f2, (q31_t)0x6e4009aa, (q31_t)0xd3c34b4f, - (q31_t)0x6e37592c, (q31_t)0xd3ba3760, (q31_t)0x6e2ea6e6, (q31_t)0xd3b12526, - (q31_t)0x6e25f2d8, (q31_t)0xd3a814a2, (q31_t)0x6e1d3d03, (q31_t)0xd39f05d3, - (q31_t)0x6e148566, (q31_t)0xd395f8ba, (q31_t)0x6e0bcc03, (q31_t)0xd38ced57, - (q31_t)0x6e0310d9, (q31_t)0xd383e3ab, (q31_t)0x6dfa53e9, (q31_t)0xd37adbb6, - (q31_t)0x6df19534, (q31_t)0xd371d579, (q31_t)0x6de8d4b8, (q31_t)0xd368d0f3, - (q31_t)0x6de01278, (q31_t)0xd35fce26, (q31_t)0x6dd74e73, (q31_t)0xd356cd11, - (q31_t)0x6dce88aa, (q31_t)0xd34dcdb4, (q31_t)0x6dc5c11c, (q31_t)0xd344d011, - (q31_t)0x6dbcf7cb, (q31_t)0xd33bd427, (q31_t)0x6db42cb6, (q31_t)0xd332d9f7, - (q31_t)0x6dab5fdf, (q31_t)0xd329e181, (q31_t)0x6da29144, (q31_t)0xd320eac6, - (q31_t)0x6d99c0e7, (q31_t)0xd317f5c6, (q31_t)0x6d90eec8, (q31_t)0xd30f0280, - (q31_t)0x6d881ae8, (q31_t)0xd30610f7, (q31_t)0x6d7f4545, (q31_t)0xd2fd2129, - (q31_t)0x6d766de2, (q31_t)0xd2f43318, (q31_t)0x6d6d94bf, (q31_t)0xd2eb46c3, - (q31_t)0x6d64b9da, (q31_t)0xd2e25c2b, (q31_t)0x6d5bdd36, (q31_t)0xd2d97350, - (q31_t)0x6d52fed2, (q31_t)0xd2d08c33, (q31_t)0x6d4a1eaf, (q31_t)0xd2c7a6d4, - (q31_t)0x6d413ccd, (q31_t)0xd2bec333, (q31_t)0x6d38592c, (q31_t)0xd2b5e151, - (q31_t)0x6d2f73cd, (q31_t)0xd2ad012e, (q31_t)0x6d268cb0, (q31_t)0xd2a422ca, - (q31_t)0x6d1da3d5, (q31_t)0xd29b4626, (q31_t)0x6d14b93d, (q31_t)0xd2926b41, - (q31_t)0x6d0bcce8, (q31_t)0xd289921e, (q31_t)0x6d02ded7, (q31_t)0xd280babb, - (q31_t)0x6cf9ef09, (q31_t)0xd277e518, (q31_t)0x6cf0fd80, (q31_t)0xd26f1138, - (q31_t)0x6ce80a3a, (q31_t)0xd2663f19, (q31_t)0x6cdf153a, (q31_t)0xd25d6ebc, - (q31_t)0x6cd61e7f, (q31_t)0xd254a021, (q31_t)0x6ccd2609, (q31_t)0xd24bd34a, - (q31_t)0x6cc42bd9, (q31_t)0xd2430835, (q31_t)0x6cbb2fef, (q31_t)0xd23a3ee4, - (q31_t)0x6cb2324c, (q31_t)0xd2317756, (q31_t)0x6ca932ef, (q31_t)0xd228b18d, - (q31_t)0x6ca031da, (q31_t)0xd21fed88, (q31_t)0x6c972f0d, (q31_t)0xd2172b48, - (q31_t)0x6c8e2a87, (q31_t)0xd20e6acc, (q31_t)0x6c85244a, (q31_t)0xd205ac17, - (q31_t)0x6c7c1c55, (q31_t)0xd1fcef27, (q31_t)0x6c7312a9, (q31_t)0xd1f433fd, - (q31_t)0x6c6a0746, (q31_t)0xd1eb7a9a, (q31_t)0x6c60fa2d, (q31_t)0xd1e2c2fd, - (q31_t)0x6c57eb5e, (q31_t)0xd1da0d28, (q31_t)0x6c4edada, (q31_t)0xd1d1591a, - (q31_t)0x6c45c8a0, (q31_t)0xd1c8a6d4, (q31_t)0x6c3cb4b1, (q31_t)0xd1bff656, - (q31_t)0x6c339f0e, (q31_t)0xd1b747a0, (q31_t)0x6c2a87b6, (q31_t)0xd1ae9ab4, - (q31_t)0x6c216eaa, (q31_t)0xd1a5ef90, (q31_t)0x6c1853eb, (q31_t)0xd19d4636, - (q31_t)0x6c0f3779, (q31_t)0xd1949ea6, (q31_t)0x6c061953, (q31_t)0xd18bf8e0, - (q31_t)0x6bfcf97c, (q31_t)0xd18354e4, (q31_t)0x6bf3d7f2, (q31_t)0xd17ab2b3, - (q31_t)0x6beab4b6, (q31_t)0xd172124d, (q31_t)0x6be18fc9, (q31_t)0xd16973b3, - (q31_t)0x6bd8692b, (q31_t)0xd160d6e5, (q31_t)0x6bcf40dc, (q31_t)0xd1583be2, - (q31_t)0x6bc616dd, (q31_t)0xd14fa2ad, (q31_t)0x6bbceb2d, (q31_t)0xd1470b44, - (q31_t)0x6bb3bdce, (q31_t)0xd13e75a8, (q31_t)0x6baa8ec0, (q31_t)0xd135e1d9, - (q31_t)0x6ba15e03, (q31_t)0xd12d4fd9, (q31_t)0x6b982b97, (q31_t)0xd124bfa6, - (q31_t)0x6b8ef77d, (q31_t)0xd11c3142, (q31_t)0x6b85c1b5, (q31_t)0xd113a4ad, - (q31_t)0x6b7c8a3f, (q31_t)0xd10b19e7, (q31_t)0x6b73511c, (q31_t)0xd10290f0, - (q31_t)0x6b6a164d, (q31_t)0xd0fa09c9, (q31_t)0x6b60d9d0, (q31_t)0xd0f18472, - (q31_t)0x6b579ba8, (q31_t)0xd0e900ec, (q31_t)0x6b4e5bd4, (q31_t)0xd0e07f36, - (q31_t)0x6b451a55, (q31_t)0xd0d7ff51, (q31_t)0x6b3bd72a, (q31_t)0xd0cf813e, - (q31_t)0x6b329255, (q31_t)0xd0c704fd, (q31_t)0x6b294bd5, (q31_t)0xd0be8a8d, - (q31_t)0x6b2003ac, (q31_t)0xd0b611f1, (q31_t)0x6b16b9d9, (q31_t)0xd0ad9b26, - (q31_t)0x6b0d6e5c, (q31_t)0xd0a5262f, (q31_t)0x6b042137, (q31_t)0xd09cb30b, - (q31_t)0x6afad269, (q31_t)0xd09441bb, (q31_t)0x6af181f3, (q31_t)0xd08bd23f, - (q31_t)0x6ae82fd5, (q31_t)0xd0836497, (q31_t)0x6adedc10, (q31_t)0xd07af8c4, - (q31_t)0x6ad586a3, (q31_t)0xd0728ec6, (q31_t)0x6acc2f90, (q31_t)0xd06a269d, - (q31_t)0x6ac2d6d6, (q31_t)0xd061c04a, (q31_t)0x6ab97c77, (q31_t)0xd0595bcd, - (q31_t)0x6ab02071, (q31_t)0xd050f926, (q31_t)0x6aa6c2c6, (q31_t)0xd0489856, - (q31_t)0x6a9d6377, (q31_t)0xd040395d, (q31_t)0x6a940283, (q31_t)0xd037dc3b, - (q31_t)0x6a8a9fea, (q31_t)0xd02f80f1, (q31_t)0x6a813bae, (q31_t)0xd027277e, - (q31_t)0x6a77d5ce, (q31_t)0xd01ecfe4, (q31_t)0x6a6e6e4b, (q31_t)0xd0167a22, - (q31_t)0x6a650525, (q31_t)0xd00e2639, (q31_t)0x6a5b9a5d, (q31_t)0xd005d42a, - (q31_t)0x6a522df3, (q31_t)0xcffd83f4, (q31_t)0x6a48bfe7, (q31_t)0xcff53597, - (q31_t)0x6a3f503a, (q31_t)0xcfece915, (q31_t)0x6a35deeb, (q31_t)0xcfe49e6d, - (q31_t)0x6a2c6bfd, (q31_t)0xcfdc55a1, (q31_t)0x6a22f76e, (q31_t)0xcfd40eaf, - (q31_t)0x6a19813f, (q31_t)0xcfcbc999, (q31_t)0x6a100970, (q31_t)0xcfc3865e, - (q31_t)0x6a069003, (q31_t)0xcfbb4500, (q31_t)0x69fd14f6, (q31_t)0xcfb3057d, - (q31_t)0x69f3984c, (q31_t)0xcfaac7d8, (q31_t)0x69ea1a03, (q31_t)0xcfa28c10, - (q31_t)0x69e09a1c, (q31_t)0xcf9a5225, (q31_t)0x69d71899, (q31_t)0xcf921a17, - (q31_t)0x69cd9578, (q31_t)0xcf89e3e8, (q31_t)0x69c410ba, (q31_t)0xcf81af97, - (q31_t)0x69ba8a61, (q31_t)0xcf797d24, (q31_t)0x69b1026c, (q31_t)0xcf714c91, - (q31_t)0x69a778db, (q31_t)0xcf691ddd, (q31_t)0x699dedaf, (q31_t)0xcf60f108, - (q31_t)0x699460e8, (q31_t)0xcf58c613, (q31_t)0x698ad287, (q31_t)0xcf509cfe, - (q31_t)0x6981428c, (q31_t)0xcf4875ca, (q31_t)0x6977b0f7, (q31_t)0xcf405077, - (q31_t)0x696e1dc9, (q31_t)0xcf382d05, (q31_t)0x69648902, (q31_t)0xcf300b74, - (q31_t)0x695af2a3, (q31_t)0xcf27ebc5, (q31_t)0x69515aab, (q31_t)0xcf1fcdf8, - (q31_t)0x6947c11c, (q31_t)0xcf17b20d, (q31_t)0x693e25f5, (q31_t)0xcf0f9805, - (q31_t)0x69348937, (q31_t)0xcf077fe1, (q31_t)0x692aeae3, (q31_t)0xceff699f, - (q31_t)0x69214af8, (q31_t)0xcef75541, (q31_t)0x6917a977, (q31_t)0xceef42c7, - (q31_t)0x690e0661, (q31_t)0xcee73231, (q31_t)0x690461b5, (q31_t)0xcedf2380, - (q31_t)0x68fabb75, (q31_t)0xced716b4, (q31_t)0x68f113a0, (q31_t)0xcecf0bcd, - (q31_t)0x68e76a37, (q31_t)0xcec702cb, (q31_t)0x68ddbf3b, (q31_t)0xcebefbb0, - (q31_t)0x68d412ab, (q31_t)0xceb6f67a, (q31_t)0x68ca6488, (q31_t)0xceaef32b, - (q31_t)0x68c0b4d2, (q31_t)0xcea6f1c2, (q31_t)0x68b7038b, (q31_t)0xce9ef241, - (q31_t)0x68ad50b1, (q31_t)0xce96f4a7, (q31_t)0x68a39c46, (q31_t)0xce8ef8f4, - (q31_t)0x6899e64a, (q31_t)0xce86ff2a, (q31_t)0x68902ebd, (q31_t)0xce7f0748, - (q31_t)0x688675a0, (q31_t)0xce77114e, (q31_t)0x687cbaf3, (q31_t)0xce6f1d3d, - (q31_t)0x6872feb6, (q31_t)0xce672b16, (q31_t)0x686940ea, (q31_t)0xce5f3ad8, - (q31_t)0x685f8190, (q31_t)0xce574c84, (q31_t)0x6855c0a6, (q31_t)0xce4f6019, - (q31_t)0x684bfe2f, (q31_t)0xce47759a, (q31_t)0x68423a2a, (q31_t)0xce3f8d05, - (q31_t)0x68387498, (q31_t)0xce37a65b, (q31_t)0x682ead78, (q31_t)0xce2fc19c, - (q31_t)0x6824e4cc, (q31_t)0xce27dec9, (q31_t)0x681b1a94, (q31_t)0xce1ffde2, - (q31_t)0x68114ed0, (q31_t)0xce181ee8, (q31_t)0x68078181, (q31_t)0xce1041d9, - (q31_t)0x67fdb2a7, (q31_t)0xce0866b8, (q31_t)0x67f3e241, (q31_t)0xce008d84, - (q31_t)0x67ea1052, (q31_t)0xcdf8b63d, (q31_t)0x67e03cd8, (q31_t)0xcdf0e0e4, - (q31_t)0x67d667d5, (q31_t)0xcde90d79, (q31_t)0x67cc9149, (q31_t)0xcde13bfd, - (q31_t)0x67c2b934, (q31_t)0xcdd96c6f, (q31_t)0x67b8df97, (q31_t)0xcdd19ed0, - (q31_t)0x67af0472, (q31_t)0xcdc9d320, (q31_t)0x67a527c4, (q31_t)0xcdc20960, - (q31_t)0x679b4990, (q31_t)0xcdba4190, (q31_t)0x679169d5, (q31_t)0xcdb27bb0, - (q31_t)0x67878893, (q31_t)0xcdaab7c0, (q31_t)0x677da5cb, (q31_t)0xcda2f5c2, - (q31_t)0x6773c17d, (q31_t)0xcd9b35b4, (q31_t)0x6769dbaa, (q31_t)0xcd937798, - (q31_t)0x675ff452, (q31_t)0xcd8bbb6d, (q31_t)0x67560b76, (q31_t)0xcd840134, - (q31_t)0x674c2115, (q31_t)0xcd7c48ee, (q31_t)0x67423530, (q31_t)0xcd74929a, - (q31_t)0x673847c8, (q31_t)0xcd6cde39, (q31_t)0x672e58dc, (q31_t)0xcd652bcb, - (q31_t)0x6724686e, (q31_t)0xcd5d7b50, (q31_t)0x671a767e, (q31_t)0xcd55ccca, - (q31_t)0x6710830c, (q31_t)0xcd4e2037, (q31_t)0x67068e18, (q31_t)0xcd467599, - (q31_t)0x66fc97a3, (q31_t)0xcd3eccef, (q31_t)0x66f29fad, (q31_t)0xcd37263a, - (q31_t)0x66e8a637, (q31_t)0xcd2f817b, (q31_t)0x66deab41, (q31_t)0xcd27deb0, - (q31_t)0x66d4aecb, (q31_t)0xcd203ddc, (q31_t)0x66cab0d6, (q31_t)0xcd189efe, - (q31_t)0x66c0b162, (q31_t)0xcd110216, (q31_t)0x66b6b070, (q31_t)0xcd096725, - (q31_t)0x66acadff, (q31_t)0xcd01ce2b, (q31_t)0x66a2aa11, (q31_t)0xccfa3729, - (q31_t)0x6698a4a6, (q31_t)0xccf2a21d, (q31_t)0x668e9dbd, (q31_t)0xcceb0f0a, - (q31_t)0x66849558, (q31_t)0xcce37def, (q31_t)0x667a8b77, (q31_t)0xccdbeecc, - (q31_t)0x6670801a, (q31_t)0xccd461a2, (q31_t)0x66667342, (q31_t)0xccccd671, - (q31_t)0x665c64ef, (q31_t)0xccc54d3a, (q31_t)0x66525521, (q31_t)0xccbdc5fc, - (q31_t)0x664843d9, (q31_t)0xccb640b8, (q31_t)0x663e3117, (q31_t)0xccaebd6e, - (q31_t)0x66341cdb, (q31_t)0xcca73c1e, (q31_t)0x662a0727, (q31_t)0xcc9fbcca, - (q31_t)0x661feffa, (q31_t)0xcc983f70, (q31_t)0x6615d754, (q31_t)0xcc90c412, - (q31_t)0x660bbd37, (q31_t)0xcc894aaf, (q31_t)0x6601a1a2, (q31_t)0xcc81d349, - (q31_t)0x65f78497, (q31_t)0xcc7a5dde, (q31_t)0x65ed6614, (q31_t)0xcc72ea70, - (q31_t)0x65e3461b, (q31_t)0xcc6b78ff, (q31_t)0x65d924ac, (q31_t)0xcc64098b, - (q31_t)0x65cf01c8, (q31_t)0xcc5c9c14, (q31_t)0x65c4dd6e, (q31_t)0xcc55309b, - (q31_t)0x65bab7a0, (q31_t)0xcc4dc720, (q31_t)0x65b0905d, (q31_t)0xcc465fa3, - (q31_t)0x65a667a7, (q31_t)0xcc3efa25, (q31_t)0x659c3d7c, (q31_t)0xcc3796a5, - (q31_t)0x659211df, (q31_t)0xcc303524, (q31_t)0x6587e4cf, (q31_t)0xcc28d5a3, - (q31_t)0x657db64c, (q31_t)0xcc217822, (q31_t)0x65738657, (q31_t)0xcc1a1ca0, - (q31_t)0x656954f1, (q31_t)0xcc12c31f, (q31_t)0x655f2219, (q31_t)0xcc0b6b9e, - (q31_t)0x6554edd1, (q31_t)0xcc04161e, (q31_t)0x654ab818, (q31_t)0xcbfcc29f, - (q31_t)0x654080ef, (q31_t)0xcbf57121, (q31_t)0x65364857, (q31_t)0xcbee21a5, - (q31_t)0x652c0e4f, (q31_t)0xcbe6d42b, (q31_t)0x6521d2d8, (q31_t)0xcbdf88b3, - (q31_t)0x651795f3, (q31_t)0xcbd83f3d, (q31_t)0x650d57a0, (q31_t)0xcbd0f7ca, - (q31_t)0x650317df, (q31_t)0xcbc9b25a, (q31_t)0x64f8d6b0, (q31_t)0xcbc26eee, - (q31_t)0x64ee9415, (q31_t)0xcbbb2d85, (q31_t)0x64e4500e, (q31_t)0xcbb3ee20, - (q31_t)0x64da0a9a, (q31_t)0xcbacb0bf, (q31_t)0x64cfc3ba, (q31_t)0xcba57563, - (q31_t)0x64c57b6f, (q31_t)0xcb9e3c0b, (q31_t)0x64bb31ba, (q31_t)0xcb9704b9, - (q31_t)0x64b0e699, (q31_t)0xcb8fcf6b, (q31_t)0x64a69a0f, (q31_t)0xcb889c23, - (q31_t)0x649c4c1b, (q31_t)0xcb816ae1, (q31_t)0x6491fcbe, (q31_t)0xcb7a3ba5, - (q31_t)0x6487abf7, (q31_t)0xcb730e70, (q31_t)0x647d59c8, (q31_t)0xcb6be341, - (q31_t)0x64730631, (q31_t)0xcb64ba19, (q31_t)0x6468b132, (q31_t)0xcb5d92f8, - (q31_t)0x645e5acc, (q31_t)0xcb566ddf, (q31_t)0x645402ff, (q31_t)0xcb4f4acd, - (q31_t)0x6449a9cc, (q31_t)0xcb4829c4, (q31_t)0x643f4f32, (q31_t)0xcb410ac3, - (q31_t)0x6434f332, (q31_t)0xcb39edca, (q31_t)0x642a95ce, (q31_t)0xcb32d2da, - (q31_t)0x64203704, (q31_t)0xcb2bb9f4, (q31_t)0x6415d6d5, (q31_t)0xcb24a316, - (q31_t)0x640b7543, (q31_t)0xcb1d8e43, (q31_t)0x6401124d, (q31_t)0xcb167b79, - (q31_t)0x63f6adf3, (q31_t)0xcb0f6aba, (q31_t)0x63ec4837, (q31_t)0xcb085c05, - (q31_t)0x63e1e117, (q31_t)0xcb014f5b, (q31_t)0x63d77896, (q31_t)0xcafa44bc, - (q31_t)0x63cd0eb3, (q31_t)0xcaf33c28, (q31_t)0x63c2a36f, (q31_t)0xcaec35a0, - (q31_t)0x63b836ca, (q31_t)0xcae53123, (q31_t)0x63adc8c4, (q31_t)0xcade2eb3, - (q31_t)0x63a3595e, (q31_t)0xcad72e4f, (q31_t)0x6398e898, (q31_t)0xcad02ff8, - (q31_t)0x638e7673, (q31_t)0xcac933ae, (q31_t)0x638402ef, (q31_t)0xcac23971, - (q31_t)0x63798e0d, (q31_t)0xcabb4141, (q31_t)0x636f17cc, (q31_t)0xcab44b1f, - (q31_t)0x6364a02e, (q31_t)0xcaad570c, (q31_t)0x635a2733, (q31_t)0xcaa66506, - (q31_t)0x634facda, (q31_t)0xca9f750f, (q31_t)0x63453125, (q31_t)0xca988727, - (q31_t)0x633ab414, (q31_t)0xca919b4e, (q31_t)0x633035a7, (q31_t)0xca8ab184, - (q31_t)0x6325b5df, (q31_t)0xca83c9ca, (q31_t)0x631b34bc, (q31_t)0xca7ce420, - (q31_t)0x6310b23e, (q31_t)0xca760086, (q31_t)0x63062e67, (q31_t)0xca6f1efc, - (q31_t)0x62fba936, (q31_t)0xca683f83, (q31_t)0x62f122ab, (q31_t)0xca61621b, - (q31_t)0x62e69ac8, (q31_t)0xca5a86c4, (q31_t)0x62dc118c, (q31_t)0xca53ad7e, - (q31_t)0x62d186f8, (q31_t)0xca4cd64b, (q31_t)0x62c6fb0c, (q31_t)0xca460129, - (q31_t)0x62bc6dca, (q31_t)0xca3f2e19, (q31_t)0x62b1df30, (q31_t)0xca385d1d, - (q31_t)0x62a74f40, (q31_t)0xca318e32, (q31_t)0x629cbdfa, (q31_t)0xca2ac15b, - (q31_t)0x62922b5e, (q31_t)0xca23f698, (q31_t)0x6287976e, (q31_t)0xca1d2de7, - (q31_t)0x627d0228, (q31_t)0xca16674b, (q31_t)0x62726b8e, (q31_t)0xca0fa2c3, - (q31_t)0x6267d3a0, (q31_t)0xca08e04f, (q31_t)0x625d3a5e, (q31_t)0xca021fef, - (q31_t)0x62529fca, (q31_t)0xc9fb61a5, (q31_t)0x624803e2, (q31_t)0xc9f4a570, - (q31_t)0x623d66a8, (q31_t)0xc9edeb50, (q31_t)0x6232c81c, (q31_t)0xc9e73346, - (q31_t)0x6228283f, (q31_t)0xc9e07d51, (q31_t)0x621d8711, (q31_t)0xc9d9c973, - (q31_t)0x6212e492, (q31_t)0xc9d317ab, (q31_t)0x620840c2, (q31_t)0xc9cc67fa, - (q31_t)0x61fd9ba3, (q31_t)0xc9c5ba60, (q31_t)0x61f2f534, (q31_t)0xc9bf0edd, - (q31_t)0x61e84d76, (q31_t)0xc9b86572, (q31_t)0x61dda46a, (q31_t)0xc9b1be1e, - (q31_t)0x61d2fa0f, (q31_t)0xc9ab18e3, (q31_t)0x61c84e67, (q31_t)0xc9a475bf, - (q31_t)0x61bda171, (q31_t)0xc99dd4b4, (q31_t)0x61b2f32e, (q31_t)0xc99735c2, - (q31_t)0x61a8439e, (q31_t)0xc99098e9, (q31_t)0x619d92c2, (q31_t)0xc989fe29, - (q31_t)0x6192e09b, (q31_t)0xc9836582, (q31_t)0x61882d28, (q31_t)0xc97ccef5, - (q31_t)0x617d786a, (q31_t)0xc9763a83, (q31_t)0x6172c262, (q31_t)0xc96fa82a, - (q31_t)0x61680b0f, (q31_t)0xc96917ec, (q31_t)0x615d5273, (q31_t)0xc96289c9, - (q31_t)0x6152988d, (q31_t)0xc95bfdc1, (q31_t)0x6147dd5f, (q31_t)0xc95573d4, - (q31_t)0x613d20e8, (q31_t)0xc94eec03, (q31_t)0x61326329, (q31_t)0xc948664d, - (q31_t)0x6127a423, (q31_t)0xc941e2b4, (q31_t)0x611ce3d5, (q31_t)0xc93b6137, - (q31_t)0x61122240, (q31_t)0xc934e1d6, (q31_t)0x61075f65, (q31_t)0xc92e6492, - (q31_t)0x60fc9b44, (q31_t)0xc927e96b, (q31_t)0x60f1d5de, (q31_t)0xc9217062, - (q31_t)0x60e70f32, (q31_t)0xc91af976, (q31_t)0x60dc4742, (q31_t)0xc91484a8, - (q31_t)0x60d17e0d, (q31_t)0xc90e11f7, (q31_t)0x60c6b395, (q31_t)0xc907a166, - (q31_t)0x60bbe7d8, (q31_t)0xc90132f2, (q31_t)0x60b11ad9, (q31_t)0xc8fac69e, - (q31_t)0x60a64c97, (q31_t)0xc8f45c68, (q31_t)0x609b7d13, (q31_t)0xc8edf452, - (q31_t)0x6090ac4d, (q31_t)0xc8e78e5b, (q31_t)0x6085da46, (q31_t)0xc8e12a84, - (q31_t)0x607b06fe, (q31_t)0xc8dac8cd, (q31_t)0x60703275, (q31_t)0xc8d46936, - (q31_t)0x60655cac, (q31_t)0xc8ce0bc0, (q31_t)0x605a85a3, (q31_t)0xc8c7b06b, - (q31_t)0x604fad5b, (q31_t)0xc8c15736, (q31_t)0x6044d3d4, (q31_t)0xc8bb0023, - (q31_t)0x6039f90f, (q31_t)0xc8b4ab32, (q31_t)0x602f1d0b, (q31_t)0xc8ae5862, - (q31_t)0x60243fca, (q31_t)0xc8a807b4, (q31_t)0x6019614c, (q31_t)0xc8a1b928, - (q31_t)0x600e8190, (q31_t)0xc89b6cbf, (q31_t)0x6003a099, (q31_t)0xc8952278, - (q31_t)0x5ff8be65, (q31_t)0xc88eda54, (q31_t)0x5feddaf6, (q31_t)0xc8889454, - (q31_t)0x5fe2f64c, (q31_t)0xc8825077, (q31_t)0x5fd81067, (q31_t)0xc87c0ebd, - (q31_t)0x5fcd2948, (q31_t)0xc875cf28, (q31_t)0x5fc240ef, (q31_t)0xc86f91b7, - (q31_t)0x5fb7575c, (q31_t)0xc869566a, (q31_t)0x5fac6c91, (q31_t)0xc8631d42, - (q31_t)0x5fa1808c, (q31_t)0xc85ce63e, (q31_t)0x5f969350, (q31_t)0xc856b160, - (q31_t)0x5f8ba4dc, (q31_t)0xc8507ea7, (q31_t)0x5f80b531, (q31_t)0xc84a4e14, - (q31_t)0x5f75c44e, (q31_t)0xc8441fa6, (q31_t)0x5f6ad235, (q31_t)0xc83df35f, - (q31_t)0x5f5fdee6, (q31_t)0xc837c93e, (q31_t)0x5f54ea62, (q31_t)0xc831a143, - (q31_t)0x5f49f4a8, (q31_t)0xc82b7b70, (q31_t)0x5f3efdb9, (q31_t)0xc82557c3, - (q31_t)0x5f340596, (q31_t)0xc81f363d, (q31_t)0x5f290c3f, (q31_t)0xc81916df, - (q31_t)0x5f1e11b5, (q31_t)0xc812f9a9, (q31_t)0x5f1315f7, (q31_t)0xc80cde9b, - (q31_t)0x5f081907, (q31_t)0xc806c5b5, (q31_t)0x5efd1ae4, (q31_t)0xc800aef7, - (q31_t)0x5ef21b90, (q31_t)0xc7fa9a62, (q31_t)0x5ee71b0a, (q31_t)0xc7f487f6, - (q31_t)0x5edc1953, (q31_t)0xc7ee77b3, (q31_t)0x5ed1166b, (q31_t)0xc7e8699a, - (q31_t)0x5ec61254, (q31_t)0xc7e25daa, (q31_t)0x5ebb0d0d, (q31_t)0xc7dc53e3, - (q31_t)0x5eb00696, (q31_t)0xc7d64c47, (q31_t)0x5ea4fef0, (q31_t)0xc7d046d6, - (q31_t)0x5e99f61d, (q31_t)0xc7ca438f, (q31_t)0x5e8eec1b, (q31_t)0xc7c44272, - (q31_t)0x5e83e0eb, (q31_t)0xc7be4381, (q31_t)0x5e78d48e, (q31_t)0xc7b846ba, - (q31_t)0x5e6dc705, (q31_t)0xc7b24c20, (q31_t)0x5e62b84f, (q31_t)0xc7ac53b1, - (q31_t)0x5e57a86d, (q31_t)0xc7a65d6e, (q31_t)0x5e4c9760, (q31_t)0xc7a06957, - (q31_t)0x5e418528, (q31_t)0xc79a776c, (q31_t)0x5e3671c5, (q31_t)0xc79487ae, - (q31_t)0x5e2b5d38, (q31_t)0xc78e9a1d, (q31_t)0x5e204781, (q31_t)0xc788aeb9, - (q31_t)0x5e1530a1, (q31_t)0xc782c582, (q31_t)0x5e0a1898, (q31_t)0xc77cde79, - (q31_t)0x5dfeff67, (q31_t)0xc776f99d, (q31_t)0x5df3e50d, (q31_t)0xc77116f0, - (q31_t)0x5de8c98c, (q31_t)0xc76b3671, (q31_t)0x5dddace4, (q31_t)0xc7655820, - (q31_t)0x5dd28f15, (q31_t)0xc75f7bfe, (q31_t)0x5dc7701f, (q31_t)0xc759a20a, - (q31_t)0x5dbc5004, (q31_t)0xc753ca46, (q31_t)0x5db12ec3, (q31_t)0xc74df4b1, - (q31_t)0x5da60c5d, (q31_t)0xc748214c, (q31_t)0x5d9ae8d2, (q31_t)0xc7425016, - (q31_t)0x5d8fc424, (q31_t)0xc73c8111, (q31_t)0x5d849e51, (q31_t)0xc736b43c, - (q31_t)0x5d79775c, (q31_t)0xc730e997, (q31_t)0x5d6e4f43, (q31_t)0xc72b2123, - (q31_t)0x5d632608, (q31_t)0xc7255ae0, (q31_t)0x5d57fbaa, (q31_t)0xc71f96ce, - (q31_t)0x5d4cd02c, (q31_t)0xc719d4ed, (q31_t)0x5d41a38c, (q31_t)0xc714153e, - (q31_t)0x5d3675cb, (q31_t)0xc70e57c0, (q31_t)0x5d2b46ea, (q31_t)0xc7089c75, - (q31_t)0x5d2016e9, (q31_t)0xc702e35c, (q31_t)0x5d14e5c9, (q31_t)0xc6fd2c75, - (q31_t)0x5d09b389, (q31_t)0xc6f777c1, (q31_t)0x5cfe802b, (q31_t)0xc6f1c540, - (q31_t)0x5cf34baf, (q31_t)0xc6ec14f2, (q31_t)0x5ce81615, (q31_t)0xc6e666d7, - (q31_t)0x5cdcdf5e, (q31_t)0xc6e0baf0, (q31_t)0x5cd1a78a, (q31_t)0xc6db113d, - (q31_t)0x5cc66e99, (q31_t)0xc6d569be, (q31_t)0x5cbb348d, (q31_t)0xc6cfc472, - (q31_t)0x5caff965, (q31_t)0xc6ca215c, (q31_t)0x5ca4bd21, (q31_t)0xc6c4807a, - (q31_t)0x5c997fc4, (q31_t)0xc6bee1cd, (q31_t)0x5c8e414b, (q31_t)0xc6b94554, - (q31_t)0x5c8301b9, (q31_t)0xc6b3ab12, (q31_t)0x5c77c10e, (q31_t)0xc6ae1304, - (q31_t)0x5c6c7f4a, (q31_t)0xc6a87d2d, (q31_t)0x5c613c6d, (q31_t)0xc6a2e98b, - (q31_t)0x5c55f878, (q31_t)0xc69d5820, (q31_t)0x5c4ab36b, (q31_t)0xc697c8eb, - (q31_t)0x5c3f6d47, (q31_t)0xc6923bec, (q31_t)0x5c34260c, (q31_t)0xc68cb124, - (q31_t)0x5c28ddbb, (q31_t)0xc6872894, (q31_t)0x5c1d9454, (q31_t)0xc681a23a, - (q31_t)0x5c1249d8, (q31_t)0xc67c1e18, (q31_t)0x5c06fe46, (q31_t)0xc6769c2e, - (q31_t)0x5bfbb1a0, (q31_t)0xc6711c7b, (q31_t)0x5bf063e6, (q31_t)0xc66b9f01, - (q31_t)0x5be51518, (q31_t)0xc66623be, (q31_t)0x5bd9c537, (q31_t)0xc660aab5, - (q31_t)0x5bce7442, (q31_t)0xc65b33e4, (q31_t)0x5bc3223c, (q31_t)0xc655bf4c, - (q31_t)0x5bb7cf23, (q31_t)0xc6504ced, (q31_t)0x5bac7af9, (q31_t)0xc64adcc7, - (q31_t)0x5ba125bd, (q31_t)0xc6456edb, (q31_t)0x5b95cf71, (q31_t)0xc6400329, - (q31_t)0x5b8a7815, (q31_t)0xc63a99b1, (q31_t)0x5b7f1fa9, (q31_t)0xc6353273, - (q31_t)0x5b73c62d, (q31_t)0xc62fcd6f, (q31_t)0x5b686ba3, (q31_t)0xc62a6aa6, - (q31_t)0x5b5d100a, (q31_t)0xc6250a18, (q31_t)0x5b51b363, (q31_t)0xc61fabc4, - (q31_t)0x5b4655ae, (q31_t)0xc61a4fac, (q31_t)0x5b3af6ec, (q31_t)0xc614f5cf, - (q31_t)0x5b2f971e, (q31_t)0xc60f9e2e, (q31_t)0x5b243643, (q31_t)0xc60a48c9, - (q31_t)0x5b18d45c, (q31_t)0xc604f5a0, (q31_t)0x5b0d716a, (q31_t)0xc5ffa4b3, - (q31_t)0x5b020d6c, (q31_t)0xc5fa5603, (q31_t)0x5af6a865, (q31_t)0xc5f5098f, - (q31_t)0x5aeb4253, (q31_t)0xc5efbf58, (q31_t)0x5adfdb37, (q31_t)0xc5ea775e, - (q31_t)0x5ad47312, (q31_t)0xc5e531a1, (q31_t)0x5ac909e5, (q31_t)0xc5dfee22, - (q31_t)0x5abd9faf, (q31_t)0xc5daace1, (q31_t)0x5ab23471, (q31_t)0xc5d56ddd, - (q31_t)0x5aa6c82b, (q31_t)0xc5d03118, (q31_t)0x5a9b5adf, (q31_t)0xc5caf690, - (q31_t)0x5a8fec8c, (q31_t)0xc5c5be47, (q31_t)0x5a847d33, (q31_t)0xc5c0883d, - (q31_t)0x5a790cd4, (q31_t)0xc5bb5472, (q31_t)0x5a6d9b70, (q31_t)0xc5b622e6, - (q31_t)0x5a622907, (q31_t)0xc5b0f399, (q31_t)0x5a56b599, (q31_t)0xc5abc68c, - (q31_t)0x5a4b4128, (q31_t)0xc5a69bbe, (q31_t)0x5a3fcbb3, (q31_t)0xc5a17330, - (q31_t)0x5a34553b, (q31_t)0xc59c4ce3, (q31_t)0x5a28ddc0, (q31_t)0xc59728d5, - (q31_t)0x5a1d6544, (q31_t)0xc5920708, (q31_t)0x5a11ebc5, (q31_t)0xc58ce77c, - (q31_t)0x5a067145, (q31_t)0xc587ca31, (q31_t)0x59faf5c5, (q31_t)0xc582af26, - (q31_t)0x59ef7944, (q31_t)0xc57d965d, (q31_t)0x59e3fbc3, (q31_t)0xc5787fd6, - (q31_t)0x59d87d42, (q31_t)0xc5736b90, (q31_t)0x59ccfdc2, (q31_t)0xc56e598c, - (q31_t)0x59c17d44, (q31_t)0xc56949ca, (q31_t)0x59b5fbc8, (q31_t)0xc5643c4a, - (q31_t)0x59aa794d, (q31_t)0xc55f310d, (q31_t)0x599ef5d6, (q31_t)0xc55a2812, - (q31_t)0x59937161, (q31_t)0xc555215a, (q31_t)0x5987ebf0, (q31_t)0xc5501ce5, - (q31_t)0x597c6584, (q31_t)0xc54b1ab4, (q31_t)0x5970de1b, (q31_t)0xc5461ac6, - (q31_t)0x596555b8, (q31_t)0xc5411d1b, (q31_t)0x5959cc5a, (q31_t)0xc53c21b4, - (q31_t)0x594e4201, (q31_t)0xc5372891, (q31_t)0x5942b6af, (q31_t)0xc53231b3, - (q31_t)0x59372a64, (q31_t)0xc52d3d18, (q31_t)0x592b9d1f, (q31_t)0xc5284ac3, - (q31_t)0x59200ee3, (q31_t)0xc5235ab2, (q31_t)0x59147fae, (q31_t)0xc51e6ce6, - (q31_t)0x5908ef82, (q31_t)0xc519815f, (q31_t)0x58fd5e5f, (q31_t)0xc514981d, - (q31_t)0x58f1cc45, (q31_t)0xc50fb121, (q31_t)0x58e63935, (q31_t)0xc50acc6b, - (q31_t)0x58daa52f, (q31_t)0xc505e9fb, (q31_t)0x58cf1034, (q31_t)0xc50109d0, - (q31_t)0x58c37a44, (q31_t)0xc4fc2bec, (q31_t)0x58b7e35f, (q31_t)0xc4f7504e, - (q31_t)0x58ac4b87, (q31_t)0xc4f276f7, (q31_t)0x58a0b2bb, (q31_t)0xc4ed9fe7, - (q31_t)0x589518fc, (q31_t)0xc4e8cb1e, (q31_t)0x58897e4a, (q31_t)0xc4e3f89c, - (q31_t)0x587de2a7, (q31_t)0xc4df2862, (q31_t)0x58724611, (q31_t)0xc4da5a6f, - (q31_t)0x5866a88a, (q31_t)0xc4d58ec3, (q31_t)0x585b0a13, (q31_t)0xc4d0c560, - (q31_t)0x584f6aab, (q31_t)0xc4cbfe45, (q31_t)0x5843ca53, (q31_t)0xc4c73972, - (q31_t)0x5838290c, (q31_t)0xc4c276e8, (q31_t)0x582c86d5, (q31_t)0xc4bdb6a6, - (q31_t)0x5820e3b0, (q31_t)0xc4b8f8ad, (q31_t)0x58153f9d, (q31_t)0xc4b43cfd, - (q31_t)0x58099a9c, (q31_t)0xc4af8397, (q31_t)0x57fdf4ae, (q31_t)0xc4aacc7a, - (q31_t)0x57f24dd3, (q31_t)0xc4a617a6, (q31_t)0x57e6a60c, (q31_t)0xc4a1651c, - (q31_t)0x57dafd59, (q31_t)0xc49cb4dd, (q31_t)0x57cf53bb, (q31_t)0xc49806e7, - (q31_t)0x57c3a931, (q31_t)0xc4935b3c, (q31_t)0x57b7fdbd, (q31_t)0xc48eb1db, - (q31_t)0x57ac515f, (q31_t)0xc48a0ac4, (q31_t)0x57a0a417, (q31_t)0xc48565f9, - (q31_t)0x5794f5e6, (q31_t)0xc480c379, (q31_t)0x578946cc, (q31_t)0xc47c2344, - (q31_t)0x577d96ca, (q31_t)0xc477855a, (q31_t)0x5771e5e0, (q31_t)0xc472e9bc, - (q31_t)0x5766340f, (q31_t)0xc46e5069, (q31_t)0x575a8157, (q31_t)0xc469b963, - (q31_t)0x574ecdb8, (q31_t)0xc46524a9, (q31_t)0x57431933, (q31_t)0xc460923b, - (q31_t)0x573763c9, (q31_t)0xc45c0219, (q31_t)0x572bad7a, (q31_t)0xc4577444, - (q31_t)0x571ff646, (q31_t)0xc452e8bc, (q31_t)0x57143e2d, (q31_t)0xc44e5f80, - (q31_t)0x57088531, (q31_t)0xc449d892, (q31_t)0x56fccb51, (q31_t)0xc44553f2, - (q31_t)0x56f1108f, (q31_t)0xc440d19e, (q31_t)0x56e554ea, (q31_t)0xc43c5199, - (q31_t)0x56d99864, (q31_t)0xc437d3e1, (q31_t)0x56cddafb, (q31_t)0xc4335877, - (q31_t)0x56c21cb2, (q31_t)0xc42edf5c, (q31_t)0x56b65d88, (q31_t)0xc42a688f, - (q31_t)0x56aa9d7e, (q31_t)0xc425f410, (q31_t)0x569edc94, (q31_t)0xc42181e0, - (q31_t)0x56931acb, (q31_t)0xc41d11ff, (q31_t)0x56875823, (q31_t)0xc418a46d, - (q31_t)0x567b949d, (q31_t)0xc414392b, (q31_t)0x566fd039, (q31_t)0xc40fd037, - (q31_t)0x56640af7, (q31_t)0xc40b6994, (q31_t)0x565844d8, (q31_t)0xc4070540, - (q31_t)0x564c7ddd, (q31_t)0xc402a33c, (q31_t)0x5640b606, (q31_t)0xc3fe4388, - (q31_t)0x5634ed53, (q31_t)0xc3f9e624, (q31_t)0x562923c5, (q31_t)0xc3f58b10, - (q31_t)0x561d595d, (q31_t)0xc3f1324e, (q31_t)0x56118e1a, (q31_t)0xc3ecdbdc, - (q31_t)0x5605c1fd, (q31_t)0xc3e887bb, (q31_t)0x55f9f507, (q31_t)0xc3e435ea, - (q31_t)0x55ee2738, (q31_t)0xc3dfe66c, (q31_t)0x55e25890, (q31_t)0xc3db993e, - (q31_t)0x55d68911, (q31_t)0xc3d74e62, (q31_t)0x55cab8ba, (q31_t)0xc3d305d8, - (q31_t)0x55bee78c, (q31_t)0xc3cebfa0, (q31_t)0x55b31587, (q31_t)0xc3ca7bba, - (q31_t)0x55a742ac, (q31_t)0xc3c63a26, (q31_t)0x559b6efb, (q31_t)0xc3c1fae5, - (q31_t)0x558f9a76, (q31_t)0xc3bdbdf6, (q31_t)0x5583c51b, (q31_t)0xc3b9835a, - (q31_t)0x5577eeec, (q31_t)0xc3b54b11, (q31_t)0x556c17e9, (q31_t)0xc3b1151b, - (q31_t)0x55604013, (q31_t)0xc3ace178, (q31_t)0x5554676a, (q31_t)0xc3a8b028, - (q31_t)0x55488dee, (q31_t)0xc3a4812c, (q31_t)0x553cb3a0, (q31_t)0xc3a05484, - (q31_t)0x5530d881, (q31_t)0xc39c2a2f, (q31_t)0x5524fc90, (q31_t)0xc398022f, - (q31_t)0x55191fcf, (q31_t)0xc393dc82, (q31_t)0x550d423d, (q31_t)0xc38fb92a, - (q31_t)0x550163dc, (q31_t)0xc38b9827, (q31_t)0x54f584ac, (q31_t)0xc3877978, - (q31_t)0x54e9a4ac, (q31_t)0xc3835d1e, (q31_t)0x54ddc3de, (q31_t)0xc37f4319, - (q31_t)0x54d1e242, (q31_t)0xc37b2b6a, (q31_t)0x54c5ffd9, (q31_t)0xc377160f, - (q31_t)0x54ba1ca3, (q31_t)0xc373030a, (q31_t)0x54ae38a0, (q31_t)0xc36ef25b, - (q31_t)0x54a253d1, (q31_t)0xc36ae401, (q31_t)0x54966e36, (q31_t)0xc366d7fd, - (q31_t)0x548a87d1, (q31_t)0xc362ce50, (q31_t)0x547ea0a0, (q31_t)0xc35ec6f8, - (q31_t)0x5472b8a5, (q31_t)0xc35ac1f7, (q31_t)0x5466cfe1, (q31_t)0xc356bf4d, - (q31_t)0x545ae653, (q31_t)0xc352bef9, (q31_t)0x544efbfc, (q31_t)0xc34ec0fc, - (q31_t)0x544310dd, (q31_t)0xc34ac556, (q31_t)0x543724f5, (q31_t)0xc346cc07, - (q31_t)0x542b3846, (q31_t)0xc342d510, (q31_t)0x541f4ad1, (q31_t)0xc33ee070, - (q31_t)0x54135c94, (q31_t)0xc33aee27, (q31_t)0x54076d91, (q31_t)0xc336fe37, - (q31_t)0x53fb7dc9, (q31_t)0xc333109e, (q31_t)0x53ef8d3c, (q31_t)0xc32f255e, - (q31_t)0x53e39be9, (q31_t)0xc32b3c75, (q31_t)0x53d7a9d3, (q31_t)0xc32755e5, - (q31_t)0x53cbb6f8, (q31_t)0xc32371ae, (q31_t)0x53bfc35b, (q31_t)0xc31f8fcf, - (q31_t)0x53b3cefa, (q31_t)0xc31bb049, (q31_t)0x53a7d9d7, (q31_t)0xc317d31c, - (q31_t)0x539be3f2, (q31_t)0xc313f848, (q31_t)0x538fed4b, (q31_t)0xc3101fce, - (q31_t)0x5383f5e3, (q31_t)0xc30c49ad, (q31_t)0x5377fdbb, (q31_t)0xc30875e5, - (q31_t)0x536c04d2, (q31_t)0xc304a477, (q31_t)0x53600b2a, (q31_t)0xc300d563, - (q31_t)0x535410c3, (q31_t)0xc2fd08a9, (q31_t)0x5348159d, (q31_t)0xc2f93e4a, - (q31_t)0x533c19b8, (q31_t)0xc2f57644, (q31_t)0x53301d16, (q31_t)0xc2f1b099, - (q31_t)0x53241fb6, (q31_t)0xc2eded49, (q31_t)0x5318219a, (q31_t)0xc2ea2c53, - (q31_t)0x530c22c1, (q31_t)0xc2e66db8, (q31_t)0x5300232c, (q31_t)0xc2e2b178, - (q31_t)0x52f422db, (q31_t)0xc2def794, (q31_t)0x52e821cf, (q31_t)0xc2db400a, - (q31_t)0x52dc2009, (q31_t)0xc2d78add, (q31_t)0x52d01d89, (q31_t)0xc2d3d80a, - (q31_t)0x52c41a4f, (q31_t)0xc2d02794, (q31_t)0x52b8165b, (q31_t)0xc2cc7979, - (q31_t)0x52ac11af, (q31_t)0xc2c8cdbb, (q31_t)0x52a00c4b, (q31_t)0xc2c52459, - (q31_t)0x5294062f, (q31_t)0xc2c17d52, (q31_t)0x5287ff5b, (q31_t)0xc2bdd8a9, - (q31_t)0x527bf7d1, (q31_t)0xc2ba365c, (q31_t)0x526fef90, (q31_t)0xc2b6966c, - (q31_t)0x5263e699, (q31_t)0xc2b2f8d8, (q31_t)0x5257dced, (q31_t)0xc2af5da2, - (q31_t)0x524bd28c, (q31_t)0xc2abc4c9, (q31_t)0x523fc776, (q31_t)0xc2a82e4d, - (q31_t)0x5233bbac, (q31_t)0xc2a49a2e, (q31_t)0x5227af2e, (q31_t)0xc2a1086d, - (q31_t)0x521ba1fd, (q31_t)0xc29d790a, (q31_t)0x520f941a, (q31_t)0xc299ec05, - (q31_t)0x52038584, (q31_t)0xc296615d, (q31_t)0x51f7763c, (q31_t)0xc292d914, - (q31_t)0x51eb6643, (q31_t)0xc28f5329, (q31_t)0x51df5599, (q31_t)0xc28bcf9c, - (q31_t)0x51d3443f, (q31_t)0xc2884e6e, (q31_t)0x51c73235, (q31_t)0xc284cf9f, - (q31_t)0x51bb1f7c, (q31_t)0xc281532e, (q31_t)0x51af0c13, (q31_t)0xc27dd91c, - (q31_t)0x51a2f7fc, (q31_t)0xc27a616a, (q31_t)0x5196e337, (q31_t)0xc276ec16, - (q31_t)0x518acdc4, (q31_t)0xc2737922, (q31_t)0x517eb7a4, (q31_t)0xc270088e, - (q31_t)0x5172a0d7, (q31_t)0xc26c9a58, (q31_t)0x5166895f, (q31_t)0xc2692e83, - (q31_t)0x515a713a, (q31_t)0xc265c50e, (q31_t)0x514e586a, (q31_t)0xc2625df8, - (q31_t)0x51423ef0, (q31_t)0xc25ef943, (q31_t)0x513624cb, (q31_t)0xc25b96ee, - (q31_t)0x512a09fc, (q31_t)0xc25836f9, (q31_t)0x511dee84, (q31_t)0xc254d965, - (q31_t)0x5111d263, (q31_t)0xc2517e31, (q31_t)0x5105b599, (q31_t)0xc24e255e, - (q31_t)0x50f99827, (q31_t)0xc24aceed, (q31_t)0x50ed7a0e, (q31_t)0xc2477adc, - (q31_t)0x50e15b4e, (q31_t)0xc244292c, (q31_t)0x50d53be7, (q31_t)0xc240d9de, - (q31_t)0x50c91bda, (q31_t)0xc23d8cf1, (q31_t)0x50bcfb28, (q31_t)0xc23a4265, - (q31_t)0x50b0d9d0, (q31_t)0xc236fa3b, (q31_t)0x50a4b7d3, (q31_t)0xc233b473, - (q31_t)0x50989532, (q31_t)0xc230710d, (q31_t)0x508c71ee, (q31_t)0xc22d3009, - (q31_t)0x50804e06, (q31_t)0xc229f167, (q31_t)0x5074297b, (q31_t)0xc226b528, - (q31_t)0x5068044e, (q31_t)0xc2237b4b, (q31_t)0x505bde7f, (q31_t)0xc22043d0, - (q31_t)0x504fb80e, (q31_t)0xc21d0eb8, (q31_t)0x504390fd, (q31_t)0xc219dc03, - (q31_t)0x5037694b, (q31_t)0xc216abb1, (q31_t)0x502b40f8, (q31_t)0xc2137dc2, - (q31_t)0x501f1807, (q31_t)0xc2105236, (q31_t)0x5012ee76, (q31_t)0xc20d290d, - (q31_t)0x5006c446, (q31_t)0xc20a0248, (q31_t)0x4ffa9979, (q31_t)0xc206dde6, - (q31_t)0x4fee6e0d, (q31_t)0xc203bbe8, (q31_t)0x4fe24205, (q31_t)0xc2009c4e, - (q31_t)0x4fd6155f, (q31_t)0xc1fd7f17, (q31_t)0x4fc9e81e, (q31_t)0xc1fa6445, - (q31_t)0x4fbdba40, (q31_t)0xc1f74bd6, (q31_t)0x4fb18bc8, (q31_t)0xc1f435cc, - (q31_t)0x4fa55cb4, (q31_t)0xc1f12227, (q31_t)0x4f992d06, (q31_t)0xc1ee10e5, - (q31_t)0x4f8cfcbe, (q31_t)0xc1eb0209, (q31_t)0x4f80cbdc, (q31_t)0xc1e7f591, - (q31_t)0x4f749a61, (q31_t)0xc1e4eb7e, (q31_t)0x4f68684e, (q31_t)0xc1e1e3d0, - (q31_t)0x4f5c35a3, (q31_t)0xc1dede87, (q31_t)0x4f500260, (q31_t)0xc1dbdba3, - (q31_t)0x4f43ce86, (q31_t)0xc1d8db25, (q31_t)0x4f379a16, (q31_t)0xc1d5dd0c, - (q31_t)0x4f2b650f, (q31_t)0xc1d2e158, (q31_t)0x4f1f2f73, (q31_t)0xc1cfe80a, - (q31_t)0x4f12f941, (q31_t)0xc1ccf122, (q31_t)0x4f06c27a, (q31_t)0xc1c9fca0, - (q31_t)0x4efa8b20, (q31_t)0xc1c70a84, (q31_t)0x4eee5331, (q31_t)0xc1c41ace, - (q31_t)0x4ee21aaf, (q31_t)0xc1c12d7e, (q31_t)0x4ed5e19a, (q31_t)0xc1be4294, - (q31_t)0x4ec9a7f3, (q31_t)0xc1bb5a11, (q31_t)0x4ebd6db9, (q31_t)0xc1b873f5, - (q31_t)0x4eb132ef, (q31_t)0xc1b5903f, (q31_t)0x4ea4f793, (q31_t)0xc1b2aef0, - (q31_t)0x4e98bba7, (q31_t)0xc1afd007, (q31_t)0x4e8c7f2a, (q31_t)0xc1acf386, - (q31_t)0x4e80421e, (q31_t)0xc1aa196c, (q31_t)0x4e740483, (q31_t)0xc1a741b9, - (q31_t)0x4e67c65a, (q31_t)0xc1a46c6e, (q31_t)0x4e5b87a2, (q31_t)0xc1a1998a, - (q31_t)0x4e4f485c, (q31_t)0xc19ec90d, (q31_t)0x4e430889, (q31_t)0xc19bfaf9, - (q31_t)0x4e36c82a, (q31_t)0xc1992f4c, (q31_t)0x4e2a873e, (q31_t)0xc1966606, - (q31_t)0x4e1e45c6, (q31_t)0xc1939f29, (q31_t)0x4e1203c3, (q31_t)0xc190dab4, - (q31_t)0x4e05c135, (q31_t)0xc18e18a7, (q31_t)0x4df97e1d, (q31_t)0xc18b5903, - (q31_t)0x4ded3a7b, (q31_t)0xc1889bc6, (q31_t)0x4de0f64f, (q31_t)0xc185e0f3, - (q31_t)0x4dd4b19a, (q31_t)0xc1832888, (q31_t)0x4dc86c5d, (q31_t)0xc1807285, - (q31_t)0x4dbc2698, (q31_t)0xc17dbeec, (q31_t)0x4dafe04b, (q31_t)0xc17b0dbb, - (q31_t)0x4da39978, (q31_t)0xc1785ef4, (q31_t)0x4d97521d, (q31_t)0xc175b296, - (q31_t)0x4d8b0a3d, (q31_t)0xc17308a1, (q31_t)0x4d7ec1d6, (q31_t)0xc1706115, - (q31_t)0x4d7278eb, (q31_t)0xc16dbbf3, (q31_t)0x4d662f7b, (q31_t)0xc16b193a, - (q31_t)0x4d59e586, (q31_t)0xc16878eb, (q31_t)0x4d4d9b0e, (q31_t)0xc165db05, - (q31_t)0x4d415013, (q31_t)0xc1633f8a, (q31_t)0x4d350495, (q31_t)0xc160a678, - (q31_t)0x4d28b894, (q31_t)0xc15e0fd1, (q31_t)0x4d1c6c11, (q31_t)0xc15b7b94, - (q31_t)0x4d101f0e, (q31_t)0xc158e9c1, (q31_t)0x4d03d189, (q31_t)0xc1565a58, - (q31_t)0x4cf78383, (q31_t)0xc153cd5a, (q31_t)0x4ceb34fe, (q31_t)0xc15142c6, - (q31_t)0x4cdee5f9, (q31_t)0xc14eba9d, (q31_t)0x4cd29676, (q31_t)0xc14c34df, - (q31_t)0x4cc64673, (q31_t)0xc149b18b, (q31_t)0x4cb9f5f3, (q31_t)0xc14730a3, - (q31_t)0x4cada4f5, (q31_t)0xc144b225, (q31_t)0x4ca1537a, (q31_t)0xc1423613, - (q31_t)0x4c950182, (q31_t)0xc13fbc6c, (q31_t)0x4c88af0e, (q31_t)0xc13d4530, - (q31_t)0x4c7c5c1e, (q31_t)0xc13ad060, (q31_t)0x4c7008b3, (q31_t)0xc1385dfb, - (q31_t)0x4c63b4ce, (q31_t)0xc135ee02, (q31_t)0x4c57606e, (q31_t)0xc1338075, - (q31_t)0x4c4b0b94, (q31_t)0xc1311553, (q31_t)0x4c3eb641, (q31_t)0xc12eac9d, - (q31_t)0x4c326075, (q31_t)0xc12c4653, (q31_t)0x4c260a31, (q31_t)0xc129e276, - (q31_t)0x4c19b374, (q31_t)0xc1278104, (q31_t)0x4c0d5c41, (q31_t)0xc12521ff, - (q31_t)0x4c010496, (q31_t)0xc122c566, (q31_t)0x4bf4ac75, (q31_t)0xc1206b39, - (q31_t)0x4be853de, (q31_t)0xc11e1379, (q31_t)0x4bdbfad1, (q31_t)0xc11bbe26, - (q31_t)0x4bcfa150, (q31_t)0xc1196b3f, (q31_t)0x4bc34759, (q31_t)0xc1171ac6, - (q31_t)0x4bb6ecef, (q31_t)0xc114ccb9, (q31_t)0x4baa9211, (q31_t)0xc1128119, - (q31_t)0x4b9e36c0, (q31_t)0xc11037e6, (q31_t)0x4b91dafc, (q31_t)0xc10df120, - (q31_t)0x4b857ec7, (q31_t)0xc10bacc8, (q31_t)0x4b79221f, (q31_t)0xc1096add, - (q31_t)0x4b6cc506, (q31_t)0xc1072b5f, (q31_t)0x4b60677c, (q31_t)0xc104ee4f, - (q31_t)0x4b540982, (q31_t)0xc102b3ac, (q31_t)0x4b47ab19, (q31_t)0xc1007b77, - (q31_t)0x4b3b4c40, (q31_t)0xc0fe45b0, (q31_t)0x4b2eecf8, (q31_t)0xc0fc1257, - (q31_t)0x4b228d42, (q31_t)0xc0f9e16b, (q31_t)0x4b162d1d, (q31_t)0xc0f7b2ee, - (q31_t)0x4b09cc8c, (q31_t)0xc0f586df, (q31_t)0x4afd6b8d, (q31_t)0xc0f35d3e, - (q31_t)0x4af10a22, (q31_t)0xc0f1360b, (q31_t)0x4ae4a84b, (q31_t)0xc0ef1147, - (q31_t)0x4ad84609, (q31_t)0xc0eceef1, (q31_t)0x4acbe35b, (q31_t)0xc0eacf09, - (q31_t)0x4abf8043, (q31_t)0xc0e8b190, (q31_t)0x4ab31cc1, (q31_t)0xc0e69686, - (q31_t)0x4aa6b8d5, (q31_t)0xc0e47deb, (q31_t)0x4a9a5480, (q31_t)0xc0e267be, - (q31_t)0x4a8defc3, (q31_t)0xc0e05401, (q31_t)0x4a818a9d, (q31_t)0xc0de42b2, - (q31_t)0x4a752510, (q31_t)0xc0dc33d2, (q31_t)0x4a68bf1b, (q31_t)0xc0da2762, - (q31_t)0x4a5c58c0, (q31_t)0xc0d81d61, (q31_t)0x4a4ff1fe, (q31_t)0xc0d615cf, - (q31_t)0x4a438ad7, (q31_t)0xc0d410ad, (q31_t)0x4a37234a, (q31_t)0xc0d20dfa, - (q31_t)0x4a2abb59, (q31_t)0xc0d00db6, (q31_t)0x4a1e5303, (q31_t)0xc0ce0fe3, - (q31_t)0x4a11ea49, (q31_t)0xc0cc147f, (q31_t)0x4a05812c, (q31_t)0xc0ca1b8a, - (q31_t)0x49f917ac, (q31_t)0xc0c82506, (q31_t)0x49ecadc9, (q31_t)0xc0c630f2, - (q31_t)0x49e04385, (q31_t)0xc0c43f4d, (q31_t)0x49d3d8df, (q31_t)0xc0c25019, - (q31_t)0x49c76dd8, (q31_t)0xc0c06355, (q31_t)0x49bb0271, (q31_t)0xc0be7901, - (q31_t)0x49ae96aa, (q31_t)0xc0bc911d, (q31_t)0x49a22a83, (q31_t)0xc0baabaa, - (q31_t)0x4995bdfd, (q31_t)0xc0b8c8a7, (q31_t)0x49895118, (q31_t)0xc0b6e815, - (q31_t)0x497ce3d5, (q31_t)0xc0b509f3, (q31_t)0x49707635, (q31_t)0xc0b32e42, - (q31_t)0x49640837, (q31_t)0xc0b15502, (q31_t)0x495799dd, (q31_t)0xc0af7e33, - (q31_t)0x494b2b27, (q31_t)0xc0ada9d4, (q31_t)0x493ebc14, (q31_t)0xc0abd7e6, - (q31_t)0x49324ca7, (q31_t)0xc0aa086a, (q31_t)0x4925dcdf, (q31_t)0xc0a83b5e, - (q31_t)0x49196cbc, (q31_t)0xc0a670c4, (q31_t)0x490cfc40, (q31_t)0xc0a4a89b, - (q31_t)0x49008b6a, (q31_t)0xc0a2e2e3, (q31_t)0x48f41a3c, (q31_t)0xc0a11f9d, - (q31_t)0x48e7a8b5, (q31_t)0xc09f5ec8, (q31_t)0x48db36d6, (q31_t)0xc09da065, - (q31_t)0x48cec4a0, (q31_t)0xc09be473, (q31_t)0x48c25213, (q31_t)0xc09a2af3, - (q31_t)0x48b5df30, (q31_t)0xc09873e4, (q31_t)0x48a96bf6, (q31_t)0xc096bf48, - (q31_t)0x489cf867, (q31_t)0xc0950d1d, (q31_t)0x48908483, (q31_t)0xc0935d64, - (q31_t)0x4884104b, (q31_t)0xc091b01d, (q31_t)0x48779bbe, (q31_t)0xc0900548, - (q31_t)0x486b26de, (q31_t)0xc08e5ce5, (q31_t)0x485eb1ab, (q31_t)0xc08cb6f5, - (q31_t)0x48523c25, (q31_t)0xc08b1376, (q31_t)0x4845c64d, (q31_t)0xc089726a, - (q31_t)0x48395024, (q31_t)0xc087d3d0, (q31_t)0x482cd9a9, (q31_t)0xc08637a9, - (q31_t)0x482062de, (q31_t)0xc0849df4, (q31_t)0x4813ebc2, (q31_t)0xc08306b2, - (q31_t)0x48077457, (q31_t)0xc08171e2, (q31_t)0x47fafc9c, (q31_t)0xc07fdf85, - (q31_t)0x47ee8493, (q31_t)0xc07e4f9b, (q31_t)0x47e20c3b, (q31_t)0xc07cc223, - (q31_t)0x47d59396, (q31_t)0xc07b371e, (q31_t)0x47c91aa3, (q31_t)0xc079ae8c, - (q31_t)0x47bca163, (q31_t)0xc078286e, (q31_t)0x47b027d7, (q31_t)0xc076a4c2, - (q31_t)0x47a3adff, (q31_t)0xc0752389, (q31_t)0x479733dc, (q31_t)0xc073a4c3, - (q31_t)0x478ab96e, (q31_t)0xc0722871, (q31_t)0x477e3eb5, (q31_t)0xc070ae92, - (q31_t)0x4771c3b3, (q31_t)0xc06f3726, (q31_t)0x47654867, (q31_t)0xc06dc22e, - (q31_t)0x4758ccd2, (q31_t)0xc06c4fa8, (q31_t)0x474c50f4, (q31_t)0xc06adf97, - (q31_t)0x473fd4cf, (q31_t)0xc06971f9, (q31_t)0x47335862, (q31_t)0xc06806ce, - (q31_t)0x4726dbae, (q31_t)0xc0669e18, (q31_t)0x471a5eb3, (q31_t)0xc06537d4, - (q31_t)0x470de172, (q31_t)0xc063d405, (q31_t)0x470163eb, (q31_t)0xc06272aa, - (q31_t)0x46f4e620, (q31_t)0xc06113c2, (q31_t)0x46e86810, (q31_t)0xc05fb74e, - (q31_t)0x46dbe9bb, (q31_t)0xc05e5d4e, (q31_t)0x46cf6b23, (q31_t)0xc05d05c3, - (q31_t)0x46c2ec48, (q31_t)0xc05bb0ab, (q31_t)0x46b66d29, (q31_t)0xc05a5e07, - (q31_t)0x46a9edc9, (q31_t)0xc0590dd8, (q31_t)0x469d6e27, (q31_t)0xc057c01d, - (q31_t)0x4690ee44, (q31_t)0xc05674d6, (q31_t)0x46846e1f, (q31_t)0xc0552c03, - (q31_t)0x4677edbb, (q31_t)0xc053e5a5, (q31_t)0x466b6d16, (q31_t)0xc052a1bb, - (q31_t)0x465eec33, (q31_t)0xc0516045, (q31_t)0x46526b10, (q31_t)0xc0502145, - (q31_t)0x4645e9af, (q31_t)0xc04ee4b8, (q31_t)0x46396810, (q31_t)0xc04daaa1, - (q31_t)0x462ce634, (q31_t)0xc04c72fe, (q31_t)0x4620641a, (q31_t)0xc04b3dcf, - (q31_t)0x4613e1c5, (q31_t)0xc04a0b16, (q31_t)0x46075f33, (q31_t)0xc048dad1, - (q31_t)0x45fadc66, (q31_t)0xc047ad01, (q31_t)0x45ee595d, (q31_t)0xc04681a6, - (q31_t)0x45e1d61b, (q31_t)0xc04558c0, (q31_t)0x45d5529e, (q31_t)0xc044324f, - (q31_t)0x45c8cee7, (q31_t)0xc0430e53, (q31_t)0x45bc4af8, (q31_t)0xc041eccc, - (q31_t)0x45afc6d0, (q31_t)0xc040cdba, (q31_t)0x45a3426f, (q31_t)0xc03fb11d, - (q31_t)0x4596bdd7, (q31_t)0xc03e96f6, (q31_t)0x458a3908, (q31_t)0xc03d7f44, - (q31_t)0x457db403, (q31_t)0xc03c6a07, (q31_t)0x45712ec7, (q31_t)0xc03b573f, - (q31_t)0x4564a955, (q31_t)0xc03a46ed, (q31_t)0x455823ae, (q31_t)0xc0393910, - (q31_t)0x454b9dd3, (q31_t)0xc0382da8, (q31_t)0x453f17c3, (q31_t)0xc03724b6, - (q31_t)0x4532917f, (q31_t)0xc0361e3a, (q31_t)0x45260b08, (q31_t)0xc0351a33, - (q31_t)0x4519845e, (q31_t)0xc03418a2, (q31_t)0x450cfd82, (q31_t)0xc0331986, - (q31_t)0x45007674, (q31_t)0xc0321ce0, (q31_t)0x44f3ef35, (q31_t)0xc03122b0, - (q31_t)0x44e767c5, (q31_t)0xc0302af5, (q31_t)0x44dae024, (q31_t)0xc02f35b1, - (q31_t)0x44ce5854, (q31_t)0xc02e42e2, (q31_t)0x44c1d054, (q31_t)0xc02d5289, - (q31_t)0x44b54825, (q31_t)0xc02c64a6, (q31_t)0x44a8bfc7, (q31_t)0xc02b7939, - (q31_t)0x449c373c, (q31_t)0xc02a9042, (q31_t)0x448fae83, (q31_t)0xc029a9c1, - (q31_t)0x4483259d, (q31_t)0xc028c5b6, (q31_t)0x44769c8b, (q31_t)0xc027e421, - (q31_t)0x446a134c, (q31_t)0xc0270502, (q31_t)0x445d89e2, (q31_t)0xc0262859, - (q31_t)0x4451004d, (q31_t)0xc0254e27, (q31_t)0x4444768d, (q31_t)0xc024766a, - (q31_t)0x4437eca4, (q31_t)0xc023a124, (q31_t)0x442b6290, (q31_t)0xc022ce54, - (q31_t)0x441ed854, (q31_t)0xc021fdfb, (q31_t)0x44124dee, (q31_t)0xc0213018, - (q31_t)0x4405c361, (q31_t)0xc02064ab, (q31_t)0x43f938ac, (q31_t)0xc01f9bb5, - (q31_t)0x43ecadcf, (q31_t)0xc01ed535, (q31_t)0x43e022cc, (q31_t)0xc01e112b, - (q31_t)0x43d397a3, (q31_t)0xc01d4f99, (q31_t)0x43c70c54, (q31_t)0xc01c907c, - (q31_t)0x43ba80df, (q31_t)0xc01bd3d6, (q31_t)0x43adf546, (q31_t)0xc01b19a7, - (q31_t)0x43a16988, (q31_t)0xc01a61ee, (q31_t)0x4394dda7, (q31_t)0xc019acac, - (q31_t)0x438851a2, (q31_t)0xc018f9e1, (q31_t)0x437bc57b, (q31_t)0xc018498c, - (q31_t)0x436f3931, (q31_t)0xc0179bae, (q31_t)0x4362acc5, (q31_t)0xc016f047, - (q31_t)0x43562038, (q31_t)0xc0164757, (q31_t)0x43499389, (q31_t)0xc015a0dd, - (q31_t)0x433d06bb, (q31_t)0xc014fcda, (q31_t)0x433079cc, (q31_t)0xc0145b4e, - (q31_t)0x4323ecbe, (q31_t)0xc013bc39, (q31_t)0x43175f91, (q31_t)0xc0131f9b, - (q31_t)0x430ad245, (q31_t)0xc0128574, (q31_t)0x42fe44dc, (q31_t)0xc011edc3, - (q31_t)0x42f1b755, (q31_t)0xc011588a, (q31_t)0x42e529b0, (q31_t)0xc010c5c7, - (q31_t)0x42d89bf0, (q31_t)0xc010357c, (q31_t)0x42cc0e13, (q31_t)0xc00fa7a8, - (q31_t)0x42bf801a, (q31_t)0xc00f1c4a, (q31_t)0x42b2f207, (q31_t)0xc00e9364, - (q31_t)0x42a663d8, (q31_t)0xc00e0cf5, (q31_t)0x4299d590, (q31_t)0xc00d88fd, - (q31_t)0x428d472e, (q31_t)0xc00d077c, (q31_t)0x4280b8b3, (q31_t)0xc00c8872, - (q31_t)0x42742a1f, (q31_t)0xc00c0be0, (q31_t)0x42679b73, (q31_t)0xc00b91c4, - (q31_t)0x425b0caf, (q31_t)0xc00b1a20, (q31_t)0x424e7dd4, (q31_t)0xc00aa4f3, - (q31_t)0x4241eee2, (q31_t)0xc00a323d, (q31_t)0x42355fd9, (q31_t)0xc009c1ff, - (q31_t)0x4228d0bb, (q31_t)0xc0095438, (q31_t)0x421c4188, (q31_t)0xc008e8e8, - (q31_t)0x420fb240, (q31_t)0xc008800f, (q31_t)0x420322e3, (q31_t)0xc00819ae, - (q31_t)0x41f69373, (q31_t)0xc007b5c4, (q31_t)0x41ea03ef, (q31_t)0xc0075452, - (q31_t)0x41dd7459, (q31_t)0xc006f556, (q31_t)0x41d0e4b0, (q31_t)0xc00698d3, - (q31_t)0x41c454f5, (q31_t)0xc0063ec6, (q31_t)0x41b7c528, (q31_t)0xc005e731, - (q31_t)0x41ab354b, (q31_t)0xc0059214, (q31_t)0x419ea55d, (q31_t)0xc0053f6e, - (q31_t)0x4192155f, (q31_t)0xc004ef3f, (q31_t)0x41858552, (q31_t)0xc004a188, - (q31_t)0x4178f536, (q31_t)0xc0045648, (q31_t)0x416c650b, (q31_t)0xc0040d80, - (q31_t)0x415fd4d2, (q31_t)0xc003c72f, (q31_t)0x4153448c, (q31_t)0xc0038356, - (q31_t)0x4146b438, (q31_t)0xc00341f4, (q31_t)0x413a23d8, (q31_t)0xc003030a, - (q31_t)0x412d936c, (q31_t)0xc002c697, (q31_t)0x412102f4, (q31_t)0xc0028c9c, - (q31_t)0x41147271, (q31_t)0xc0025519, (q31_t)0x4107e1e3, (q31_t)0xc002200d, - (q31_t)0x40fb514b, (q31_t)0xc001ed78, (q31_t)0x40eec0aa, (q31_t)0xc001bd5c, - (q31_t)0x40e22fff, (q31_t)0xc0018fb6, (q31_t)0x40d59f4c, (q31_t)0xc0016489, - (q31_t)0x40c90e90, (q31_t)0xc0013bd3, (q31_t)0x40bc7dcc, (q31_t)0xc0011594, - (q31_t)0x40afed02, (q31_t)0xc000f1ce, (q31_t)0x40a35c30, (q31_t)0xc000d07e, - (q31_t)0x4096cb58, (q31_t)0xc000b1a7, (q31_t)0x408a3a7b, (q31_t)0xc0009547, - (q31_t)0x407da998, (q31_t)0xc0007b5f, (q31_t)0x407118b0, (q31_t)0xc00063ee, - (q31_t)0x406487c4, (q31_t)0xc0004ef5, (q31_t)0x4057f6d4, (q31_t)0xc0003c74, - (q31_t)0x404b65e1, (q31_t)0xc0002c6a, (q31_t)0x403ed4ea, (q31_t)0xc0001ed8, - (q31_t)0x403243f1, (q31_t)0xc00013bd, (q31_t)0x4025b2f7, (q31_t)0xc0000b1a, - (q31_t)0x401921fb, (q31_t)0xc00004ef, (q31_t)0x400c90fe, (q31_t)0xc000013c, -}; - -/** -* @} end of RealFFT_Table group -*/ - -/** -* @addtogroup RealFFT -* @{ -*/ - -/** -* @brief Initialization function for the Q31 RFFT/RIFFT. -* @param[in, out] *S points to an instance of the Q31 RFFT/RIFFT structure. -* @param[in] fftLenReal length of the FFT. -* @param[in] ifftFlagR flag that selects forward (ifftFlagR=0) or inverse (ifftFlagR=1) transform. -* @param[in] bitReverseFlag flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. -* @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if fftLenReal is not a supported value. -* -* \par Description: -* \par -* The parameter fftLenReal Specifies length of RFFT/RIFFT Process. Supported FFT Lengths are 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192. -* \par -* The parameter ifftFlagR controls whether a forward or inverse transform is computed. -* Set(=1) ifftFlagR to calculate RIFFT, otherwise RFFT is calculated. -* \par -* The parameter bitReverseFlag controls whether output is in normal order or bit reversed order. -* Set(=1) bitReverseFlag for output to be in normal order otherwise output is in bit reversed order. -* \par 7 -* This function also initializes Twiddle factor table. -*/ - -arm_status arm_rfft_init_q31( - arm_rfft_instance_q31 * S, - uint32_t fftLenReal, - uint32_t ifftFlagR, - uint32_t bitReverseFlag) -{ - /* Initialise the default arm status */ - arm_status status = ARM_MATH_SUCCESS; - - /* Initialize the Real FFT length */ - S->fftLenReal = (uint16_t) fftLenReal; - - /* Initialize the Twiddle coefficientA pointer */ - S->pTwiddleAReal = (q31_t *) realCoefAQ31; - - /* Initialize the Twiddle coefficientB pointer */ - S->pTwiddleBReal = (q31_t *) realCoefBQ31; - - /* Initialize the Flag for selection of RFFT or RIFFT */ - S->ifftFlagR = (uint8_t) ifftFlagR; - - /* Initialize the Flag for calculation Bit reversal or not */ - S->bitReverseFlagR = (uint8_t) bitReverseFlag; - - /* Initialization of coef modifier depending on the FFT length */ - switch (S->fftLenReal) - { - case 8192U: - S->twidCoefRModifier = 1U; - S->pCfft = &arm_cfft_sR_q31_len4096; - break; - case 4096U: - S->twidCoefRModifier = 2U; - S->pCfft = &arm_cfft_sR_q31_len2048; - break; - case 2048U: - S->twidCoefRModifier = 4U; - S->pCfft = &arm_cfft_sR_q31_len1024; - break; - case 1024U: - S->twidCoefRModifier = 8U; - S->pCfft = &arm_cfft_sR_q31_len512; - break; - case 512U: - S->twidCoefRModifier = 16U; - S->pCfft = &arm_cfft_sR_q31_len256; - break; - case 256U: - S->twidCoefRModifier = 32U; - S->pCfft = &arm_cfft_sR_q31_len128; - break; - case 128U: - S->twidCoefRModifier = 64U; - S->pCfft = &arm_cfft_sR_q31_len64; - break; - case 64U: - S->twidCoefRModifier = 128U; - S->pCfft = &arm_cfft_sR_q31_len32; - break; - case 32U: - S->twidCoefRModifier = 256U; - S->pCfft = &arm_cfft_sR_q31_len16; - break; - default: - /* Reporting argument error if rfftSize is not valid value */ - status = ARM_MATH_ARGUMENT_ERROR; - break; - } - - /* return the status of RFFT Init function */ - return (status); -} - -/** -* @} end of RealFFT group -*/ diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_rfft_q15.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_rfft_q15.c deleted file mode 100644 index f85cf30..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_rfft_q15.c +++ /dev/null @@ -1,426 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_rfft_q15.c - * Description: RFFT & RIFFT Q15 process function - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/* ---------------------------------------------------------------------- - * Internal functions prototypes - * -------------------------------------------------------------------- */ - -void arm_split_rfft_q15( - q15_t * pSrc, - uint32_t fftLen, - q15_t * pATable, - q15_t * pBTable, - q15_t * pDst, - uint32_t modifier); - -void arm_split_rifft_q15( - q15_t * pSrc, - uint32_t fftLen, - q15_t * pATable, - q15_t * pBTable, - q15_t * pDst, - uint32_t modifier); - -/** -* @addtogroup RealFFT -* @{ -*/ - -/** -* @brief Processing function for the Q15 RFFT/RIFFT. -* @param[in] *S points to an instance of the Q15 RFFT/RIFFT structure. -* @param[in] *pSrc points to the input buffer. -* @param[out] *pDst points to the output buffer. -* @return none. -* -* \par Input an output formats: -* \par -* Internally input is downscaled by 2 for every stage to avoid saturations inside CFFT/CIFFT process. -* Hence the output format is different for different RFFT sizes. -* The input and output formats for different RFFT sizes and number of bits to upscale are mentioned in the tables below for RFFT and RIFFT: -* \par -* \image html RFFTQ15.gif "Input and Output Formats for Q15 RFFT" -* \par -* \image html RIFFTQ15.gif "Input and Output Formats for Q15 RIFFT" -*/ - -void arm_rfft_q15( - const arm_rfft_instance_q15 * S, - q15_t * pSrc, - q15_t * pDst) -{ - const arm_cfft_instance_q15 *S_CFFT = S->pCfft; - uint32_t i; - uint32_t L2 = S->fftLenReal >> 1; - - /* Calculation of RIFFT of input */ - if (S->ifftFlagR == 1U) - { - /* Real IFFT core process */ - arm_split_rifft_q15(pSrc, L2, S->pTwiddleAReal, - S->pTwiddleBReal, pDst, S->twidCoefRModifier); - - /* Complex IFFT process */ - arm_cfft_q15(S_CFFT, pDst, S->ifftFlagR, S->bitReverseFlagR); - - for(i=0;ifftLenReal;i++) - { - pDst[i] = pDst[i] << 1; - } - } - else - { - /* Calculation of RFFT of input */ - - /* Complex FFT process */ - arm_cfft_q15(S_CFFT, pSrc, S->ifftFlagR, S->bitReverseFlagR); - - /* Real FFT core process */ - arm_split_rfft_q15(pSrc, L2, S->pTwiddleAReal, - S->pTwiddleBReal, pDst, S->twidCoefRModifier); - } -} - -/** -* @} end of RealFFT group -*/ - -/** -* @brief Core Real FFT process -* @param *pSrc points to the input buffer. -* @param fftLen length of FFT. -* @param *pATable points to the A twiddle Coef buffer. -* @param *pBTable points to the B twiddle Coef buffer. -* @param *pDst points to the output buffer. -* @param modifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. -* @return none. -* The function implements a Real FFT -*/ - -void arm_split_rfft_q15( - q15_t * pSrc, - uint32_t fftLen, - q15_t * pATable, - q15_t * pBTable, - q15_t * pDst, - uint32_t modifier) -{ - uint32_t i; /* Loop Counter */ - q31_t outR, outI; /* Temporary variables for output */ - q15_t *pCoefA, *pCoefB; /* Temporary pointers for twiddle factors */ - q15_t *pSrc1, *pSrc2; -#if defined (ARM_MATH_DSP) - q15_t *pD1, *pD2; -#endif - - // pSrc[2U * fftLen] = pSrc[0]; - // pSrc[(2U * fftLen) + 1U] = pSrc[1]; - - pCoefA = &pATable[modifier * 2U]; - pCoefB = &pBTable[modifier * 2U]; - - pSrc1 = &pSrc[2]; - pSrc2 = &pSrc[(2U * fftLen) - 2U]; - -#if defined (ARM_MATH_DSP) - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - i = 1U; - pD1 = pDst + 2; - pD2 = pDst + (4U * fftLen) - 2; - - for(i = fftLen - 1; i > 0; i--) - { - /* - outR = (pSrc[2 * i] * pATable[2 * i] - pSrc[2 * i + 1] * pATable[2 * i + 1] - + pSrc[2 * n - 2 * i] * pBTable[2 * i] + - pSrc[2 * n - 2 * i + 1] * pBTable[2 * i + 1]); - */ - - /* outI = (pIn[2 * i + 1] * pATable[2 * i] + pIn[2 * i] * pATable[2 * i + 1] + - pIn[2 * n - 2 * i] * pBTable[2 * i + 1] - - pIn[2 * n - 2 * i + 1] * pBTable[2 * i]); */ - - -#ifndef ARM_MATH_BIG_ENDIAN - - /* pSrc[2 * i] * pATable[2 * i] - pSrc[2 * i + 1] * pATable[2 * i + 1] */ - outR = __SMUSD(*__SIMD32(pSrc1), *__SIMD32(pCoefA)); - -#else - - /* -(pSrc[2 * i + 1] * pATable[2 * i + 1] - pSrc[2 * i] * pATable[2 * i]) */ - outR = -(__SMUSD(*__SIMD32(pSrc1), *__SIMD32(pCoefA))); - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - /* pSrc[2 * n - 2 * i] * pBTable[2 * i] + - pSrc[2 * n - 2 * i + 1] * pBTable[2 * i + 1]) */ - outR = __SMLAD(*__SIMD32(pSrc2), *__SIMD32(pCoefB), outR) >> 16U; - - /* pIn[2 * n - 2 * i] * pBTable[2 * i + 1] - - pIn[2 * n - 2 * i + 1] * pBTable[2 * i] */ - -#ifndef ARM_MATH_BIG_ENDIAN - - outI = __SMUSDX(*__SIMD32(pSrc2)--, *__SIMD32(pCoefB)); - -#else - - outI = __SMUSDX(*__SIMD32(pCoefB), *__SIMD32(pSrc2)--); - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - /* (pIn[2 * i + 1] * pATable[2 * i] + pIn[2 * i] * pATable[2 * i + 1] */ - outI = __SMLADX(*__SIMD32(pSrc1)++, *__SIMD32(pCoefA), outI); - - /* write output */ - *pD1++ = (q15_t) outR; - *pD1++ = outI >> 16U; - - /* write complex conjugate output */ - pD2[0] = (q15_t) outR; - pD2[1] = -(outI >> 16U); - pD2 -= 2; - - /* update coefficient pointer */ - pCoefB = pCoefB + (2U * modifier); - pCoefA = pCoefA + (2U * modifier); - } - - pDst[2U * fftLen] = (pSrc[0] - pSrc[1]) >> 1; - pDst[(2U * fftLen) + 1U] = 0; - - pDst[0] = (pSrc[0] + pSrc[1]) >> 1; - pDst[1] = 0; - -#else - - /* Run the below code for Cortex-M0 */ - i = 1U; - - while (i < fftLen) - { - /* - outR = (pSrc[2 * i] * pATable[2 * i] - pSrc[2 * i + 1] * pATable[2 * i + 1] - + pSrc[2 * n - 2 * i] * pBTable[2 * i] + - pSrc[2 * n - 2 * i + 1] * pBTable[2 * i + 1]); - */ - - outR = *pSrc1 * *pCoefA; - outR = outR - (*(pSrc1 + 1) * *(pCoefA + 1)); - outR = outR + (*pSrc2 * *pCoefB); - outR = (outR + (*(pSrc2 + 1) * *(pCoefB + 1))) >> 16; - - - /* outI = (pIn[2 * i + 1] * pATable[2 * i] + pIn[2 * i] * pATable[2 * i + 1] + - pIn[2 * n - 2 * i] * pBTable[2 * i + 1] - - pIn[2 * n - 2 * i + 1] * pBTable[2 * i]); - */ - - outI = *pSrc2 * *(pCoefB + 1); - outI = outI - (*(pSrc2 + 1) * *pCoefB); - outI = outI + (*(pSrc1 + 1) * *pCoefA); - outI = outI + (*pSrc1 * *(pCoefA + 1)); - - /* update input pointers */ - pSrc1 += 2U; - pSrc2 -= 2U; - - /* write output */ - pDst[2U * i] = (q15_t) outR; - pDst[(2U * i) + 1U] = outI >> 16U; - - /* write complex conjugate output */ - pDst[(4U * fftLen) - (2U * i)] = (q15_t) outR; - pDst[((4U * fftLen) - (2U * i)) + 1U] = -(outI >> 16U); - - /* update coefficient pointer */ - pCoefB = pCoefB + (2U * modifier); - pCoefA = pCoefA + (2U * modifier); - - i++; - } - - pDst[2U * fftLen] = (pSrc[0] - pSrc[1]) >> 1; - pDst[(2U * fftLen) + 1U] = 0; - - pDst[0] = (pSrc[0] + pSrc[1]) >> 1; - pDst[1] = 0; - -#endif /* #if defined (ARM_MATH_DSP) */ -} - - -/** -* @brief Core Real IFFT process -* @param[in] *pSrc points to the input buffer. -* @param[in] fftLen length of FFT. -* @param[in] *pATable points to the twiddle Coef A buffer. -* @param[in] *pBTable points to the twiddle Coef B buffer. -* @param[out] *pDst points to the output buffer. -* @param[in] modifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. -* @return none. -* The function implements a Real IFFT -*/ -void arm_split_rifft_q15( - q15_t * pSrc, - uint32_t fftLen, - q15_t * pATable, - q15_t * pBTable, - q15_t * pDst, - uint32_t modifier) -{ - uint32_t i; /* Loop Counter */ - q31_t outR, outI; /* Temporary variables for output */ - q15_t *pCoefA, *pCoefB; /* Temporary pointers for twiddle factors */ - q15_t *pSrc1, *pSrc2; - q15_t *pDst1 = &pDst[0]; - - pCoefA = &pATable[0]; - pCoefB = &pBTable[0]; - - pSrc1 = &pSrc[0]; - pSrc2 = &pSrc[2U * fftLen]; - -#if defined (ARM_MATH_DSP) - - /* Run the below code for Cortex-M4 and Cortex-M3 */ - i = fftLen; - - while (i > 0U) - { - /* - outR = (pIn[2 * i] * pATable[2 * i] + pIn[2 * i + 1] * pATable[2 * i + 1] + - pIn[2 * n - 2 * i] * pBTable[2 * i] - - pIn[2 * n - 2 * i + 1] * pBTable[2 * i + 1]); - - outI = (pIn[2 * i + 1] * pATable[2 * i] - pIn[2 * i] * pATable[2 * i + 1] - - pIn[2 * n - 2 * i] * pBTable[2 * i + 1] - - pIn[2 * n - 2 * i + 1] * pBTable[2 * i]); - */ - - -#ifndef ARM_MATH_BIG_ENDIAN - - /* pIn[2 * n - 2 * i] * pBTable[2 * i] - - pIn[2 * n - 2 * i + 1] * pBTable[2 * i + 1]) */ - outR = __SMUSD(*__SIMD32(pSrc2), *__SIMD32(pCoefB)); - -#else - - /* -(-pIn[2 * n - 2 * i] * pBTable[2 * i] + - pIn[2 * n - 2 * i + 1] * pBTable[2 * i + 1])) */ - outR = -(__SMUSD(*__SIMD32(pSrc2), *__SIMD32(pCoefB))); - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - /* pIn[2 * i] * pATable[2 * i] + pIn[2 * i + 1] * pATable[2 * i + 1] + - pIn[2 * n - 2 * i] * pBTable[2 * i] */ - outR = __SMLAD(*__SIMD32(pSrc1), *__SIMD32(pCoefA), outR) >> 16U; - - /* - -pIn[2 * n - 2 * i] * pBTable[2 * i + 1] + - pIn[2 * n - 2 * i + 1] * pBTable[2 * i] */ - outI = __SMUADX(*__SIMD32(pSrc2)--, *__SIMD32(pCoefB)); - - /* pIn[2 * i + 1] * pATable[2 * i] - pIn[2 * i] * pATable[2 * i + 1] */ - -#ifndef ARM_MATH_BIG_ENDIAN - - outI = __SMLSDX(*__SIMD32(pCoefA), *__SIMD32(pSrc1)++, -outI); - -#else - - outI = __SMLSDX(*__SIMD32(pSrc1)++, *__SIMD32(pCoefA), -outI); - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - /* write output */ - -#ifndef ARM_MATH_BIG_ENDIAN - - *__SIMD32(pDst1)++ = __PKHBT(outR, (outI >> 16U), 16); - -#else - - *__SIMD32(pDst1)++ = __PKHBT((outI >> 16U), outR, 16); - -#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ - - /* update coefficient pointer */ - pCoefB = pCoefB + (2U * modifier); - pCoefA = pCoefA + (2U * modifier); - - i--; - } -#else - /* Run the below code for Cortex-M0 */ - i = fftLen; - - while (i > 0U) - { - /* - outR = (pIn[2 * i] * pATable[2 * i] + pIn[2 * i + 1] * pATable[2 * i + 1] + - pIn[2 * n - 2 * i] * pBTable[2 * i] - - pIn[2 * n - 2 * i + 1] * pBTable[2 * i + 1]); - */ - - outR = *pSrc2 * *pCoefB; - outR = outR - (*(pSrc2 + 1) * *(pCoefB + 1)); - outR = outR + (*pSrc1 * *pCoefA); - outR = (outR + (*(pSrc1 + 1) * *(pCoefA + 1))) >> 16; - - /* - outI = (pIn[2 * i + 1] * pATable[2 * i] - pIn[2 * i] * pATable[2 * i + 1] - - pIn[2 * n - 2 * i] * pBTable[2 * i + 1] - - pIn[2 * n - 2 * i + 1] * pBTable[2 * i]); - */ - - outI = *(pSrc1 + 1) * *pCoefA; - outI = outI - (*pSrc1 * *(pCoefA + 1)); - outI = outI - (*pSrc2 * *(pCoefB + 1)); - outI = outI - (*(pSrc2 + 1) * *(pCoefB)); - - /* update input pointers */ - pSrc1 += 2U; - pSrc2 -= 2U; - - /* write output */ - *pDst1++ = (q15_t) outR; - *pDst1++ = (q15_t) (outI >> 16); - - /* update coefficient pointer */ - pCoefB = pCoefB + (2U * modifier); - pCoefA = pCoefA + (2U * modifier); - - i--; - } -#endif /* #if defined (ARM_MATH_DSP) */ -} diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_rfft_q31.c b/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_rfft_q31.c deleted file mode 100644 index 5386140..0000000 --- a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_rfft_q31.c +++ /dev/null @@ -1,283 +0,0 @@ -/* ---------------------------------------------------------------------- - * Project: CMSIS DSP Library - * Title: arm_rfft_q31.c - * Description: FFT & RIFFT Q31 process function - * - * $Date: 27. January 2017 - * $Revision: V.1.5.1 - * - * Target Processor: Cortex-M cores - * -------------------------------------------------------------------- */ -/* - * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_math.h" - -/* ---------------------------------------------------------------------- - * Internal functions prototypes - * -------------------------------------------------------------------- */ - -void arm_split_rfft_q31( - q31_t * pSrc, - uint32_t fftLen, - q31_t * pATable, - q31_t * pBTable, - q31_t * pDst, - uint32_t modifier); - -void arm_split_rifft_q31( - q31_t * pSrc, - uint32_t fftLen, - q31_t * pATable, - q31_t * pBTable, - q31_t * pDst, - uint32_t modifier); - -/** -* @addtogroup RealFFT -* @{ -*/ - -/** -* @brief Processing function for the Q31 RFFT/RIFFT. -* @param[in] *S points to an instance of the Q31 RFFT/RIFFT structure. -* @param[in] *pSrc points to the input buffer. -* @param[out] *pDst points to the output buffer. -* @return none. -* -* \par Input an output formats: -* \par -* Internally input is downscaled by 2 for every stage to avoid saturations inside CFFT/CIFFT process. -* Hence the output format is different for different RFFT sizes. -* The input and output formats for different RFFT sizes and number of bits to upscale are mentioned in the tables below for RFFT and RIFFT: -* \par -* \image html RFFTQ31.gif "Input and Output Formats for Q31 RFFT" -* -* \par -* \image html RIFFTQ31.gif "Input and Output Formats for Q31 RIFFT" -*/ -void arm_rfft_q31( - const arm_rfft_instance_q31 * S, - q31_t * pSrc, - q31_t * pDst) -{ - const arm_cfft_instance_q31 *S_CFFT = S->pCfft; - uint32_t i; - uint32_t L2 = S->fftLenReal >> 1; - - /* Calculation of RIFFT of input */ - if (S->ifftFlagR == 1U) - { - /* Real IFFT core process */ - arm_split_rifft_q31(pSrc, L2, S->pTwiddleAReal, - S->pTwiddleBReal, pDst, S->twidCoefRModifier); - - /* Complex IFFT process */ - arm_cfft_q31(S_CFFT, pDst, S->ifftFlagR, S->bitReverseFlagR); - - for(i=0;ifftLenReal;i++) - { - pDst[i] = pDst[i] << 1; - } - } - else - { - /* Calculation of RFFT of input */ - - /* Complex FFT process */ - arm_cfft_q31(S_CFFT, pSrc, S->ifftFlagR, S->bitReverseFlagR); - - /* Real FFT core process */ - arm_split_rfft_q31(pSrc, L2, S->pTwiddleAReal, - S->pTwiddleBReal, pDst, S->twidCoefRModifier); - } -} - -/** -* @} end of RealFFT group -*/ - -/** -* @brief Core Real FFT process -* @param[in] *pSrc points to the input buffer. -* @param[in] fftLen length of FFT. -* @param[in] *pATable points to the twiddle Coef A buffer. -* @param[in] *pBTable points to the twiddle Coef B buffer. -* @param[out] *pDst points to the output buffer. -* @param[in] modifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. -* @return none. -*/ -void arm_split_rfft_q31( - q31_t * pSrc, - uint32_t fftLen, - q31_t * pATable, - q31_t * pBTable, - q31_t * pDst, - uint32_t modifier) -{ - uint32_t i; /* Loop Counter */ - q31_t outR, outI; /* Temporary variables for output */ - q31_t *pCoefA, *pCoefB; /* Temporary pointers for twiddle factors */ - q31_t CoefA1, CoefA2, CoefB1; /* Temporary variables for twiddle coefficients */ - q31_t *pOut1 = &pDst[2], *pOut2 = &pDst[(4U * fftLen) - 1U]; - q31_t *pIn1 = &pSrc[2], *pIn2 = &pSrc[(2U * fftLen) - 1U]; - - /* Init coefficient pointers */ - pCoefA = &pATable[modifier * 2U]; - pCoefB = &pBTable[modifier * 2U]; - - i = fftLen - 1U; - - while (i > 0U) - { - /* - outR = (pSrc[2 * i] * pATable[2 * i] - pSrc[2 * i + 1] * pATable[2 * i + 1] - + pSrc[2 * n - 2 * i] * pBTable[2 * i] + - pSrc[2 * n - 2 * i + 1] * pBTable[2 * i + 1]); - */ - - /* outI = (pIn[2 * i + 1] * pATable[2 * i] + pIn[2 * i] * pATable[2 * i + 1] + - pIn[2 * n - 2 * i] * pBTable[2 * i + 1] - - pIn[2 * n - 2 * i + 1] * pBTable[2 * i]); */ - - CoefA1 = *pCoefA++; - CoefA2 = *pCoefA; - - /* outR = (pSrc[2 * i] * pATable[2 * i] */ - mult_32x32_keep32_R(outR, *pIn1, CoefA1); - - /* outI = pIn[2 * i] * pATable[2 * i + 1] */ - mult_32x32_keep32_R(outI, *pIn1++, CoefA2); - - /* - pSrc[2 * i + 1] * pATable[2 * i + 1] */ - multSub_32x32_keep32_R(outR, *pIn1, CoefA2); - - /* (pIn[2 * i + 1] * pATable[2 * i] */ - multAcc_32x32_keep32_R(outI, *pIn1++, CoefA1); - - /* pSrc[2 * n - 2 * i] * pBTable[2 * i] */ - multSub_32x32_keep32_R(outR, *pIn2, CoefA2); - CoefB1 = *pCoefB; - - /* pIn[2 * n - 2 * i] * pBTable[2 * i + 1] */ - multSub_32x32_keep32_R(outI, *pIn2--, CoefB1); - - /* pSrc[2 * n - 2 * i + 1] * pBTable[2 * i + 1] */ - multAcc_32x32_keep32_R(outR, *pIn2, CoefB1); - - /* pIn[2 * n - 2 * i + 1] * pBTable[2 * i] */ - multSub_32x32_keep32_R(outI, *pIn2--, CoefA2); - - /* write output */ - *pOut1++ = outR; - *pOut1++ = outI; - - /* write complex conjugate output */ - *pOut2-- = -outI; - *pOut2-- = outR; - - /* update coefficient pointer */ - pCoefB = pCoefB + (modifier * 2U); - pCoefA = pCoefA + ((modifier * 2U) - 1U); - - i--; - } - pDst[2U * fftLen] = (pSrc[0] - pSrc[1]) >> 1; - pDst[(2U * fftLen) + 1U] = 0; - - pDst[0] = (pSrc[0] + pSrc[1]) >> 1; - pDst[1] = 0; -} - -/** -* @brief Core Real IFFT process -* @param[in] *pSrc points to the input buffer. -* @param[in] fftLen length of FFT. -* @param[in] *pATable points to the twiddle Coef A buffer. -* @param[in] *pBTable points to the twiddle Coef B buffer. -* @param[out] *pDst points to the output buffer. -* @param[in] modifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. -* @return none. -*/ -void arm_split_rifft_q31( - q31_t * pSrc, - uint32_t fftLen, - q31_t * pATable, - q31_t * pBTable, - q31_t * pDst, - uint32_t modifier) -{ - q31_t outR, outI; /* Temporary variables for output */ - q31_t *pCoefA, *pCoefB; /* Temporary pointers for twiddle factors */ - q31_t CoefA1, CoefA2, CoefB1; /* Temporary variables for twiddle coefficients */ - q31_t *pIn1 = &pSrc[0], *pIn2 = &pSrc[(2U * fftLen) + 1U]; - - pCoefA = &pATable[0]; - pCoefB = &pBTable[0]; - - while (fftLen > 0U) - { - /* - outR = (pIn[2 * i] * pATable[2 * i] + pIn[2 * i + 1] * pATable[2 * i + 1] + - pIn[2 * n - 2 * i] * pBTable[2 * i] - - pIn[2 * n - 2 * i + 1] * pBTable[2 * i + 1]); - - outI = (pIn[2 * i + 1] * pATable[2 * i] - pIn[2 * i] * pATable[2 * i + 1] - - pIn[2 * n - 2 * i] * pBTable[2 * i + 1] - - pIn[2 * n - 2 * i + 1] * pBTable[2 * i]); - */ - CoefA1 = *pCoefA++; - CoefA2 = *pCoefA; - - /* outR = (pIn[2 * i] * pATable[2 * i] */ - mult_32x32_keep32_R(outR, *pIn1, CoefA1); - - /* - pIn[2 * i] * pATable[2 * i + 1] */ - mult_32x32_keep32_R(outI, *pIn1++, -CoefA2); - - /* pIn[2 * i + 1] * pATable[2 * i + 1] */ - multAcc_32x32_keep32_R(outR, *pIn1, CoefA2); - - /* pIn[2 * i + 1] * pATable[2 * i] */ - multAcc_32x32_keep32_R(outI, *pIn1++, CoefA1); - - /* pIn[2 * n - 2 * i] * pBTable[2 * i] */ - multAcc_32x32_keep32_R(outR, *pIn2, CoefA2); - CoefB1 = *pCoefB; - - /* pIn[2 * n - 2 * i] * pBTable[2 * i + 1] */ - multSub_32x32_keep32_R(outI, *pIn2--, CoefB1); - - /* pIn[2 * n - 2 * i + 1] * pBTable[2 * i + 1] */ - multAcc_32x32_keep32_R(outR, *pIn2, CoefB1); - - /* pIn[2 * n - 2 * i + 1] * pBTable[2 * i] */ - multAcc_32x32_keep32_R(outI, *pIn2--, CoefA2); - - /* write output */ - *pDst++ = outR; - *pDst++ = outI; - - /* update coefficient pointer */ - pCoefB = pCoefB + (modifier * 2U); - pCoefA = pCoefA + ((modifier * 2U) - 1U); - - /* Decrement loop count */ - fftLen--; - } -} diff --git a/HAL_N_Middlewares/Drivers/CMSIS/Lib/GCC/libarm_cortexM4lf_math.a b/HAL_N_Middlewares/Drivers/CMSIS/Lib/GCC/libarm_cortexM4lf_math.a deleted file mode 100644 index d8c36583072fbd0ad929fe470a19e31e62a94565..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3097502 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ξ&@jKvF0r@3u6KAEh4^i+3R=iifur%!dGfBbvq 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 z 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

X__tqZI)JzmRHCO*fZPr`_MLY9 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

3D83>ZKZXb!KZYPDTC-ioe<5i67J~l$S3TXY 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

tC|a-?Y2!s}}m4Tnjc>=yz&&aHEC3r?q|Fw$T4{ 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

8S=Cobfv#!rk!`j&V7P=&rhm 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


bsaPw3FeC1y^Rl zm;ip-wTW3@hQYHXwoFba3dRb?fV`H9T^WH#MhjCu9L@xk7_x+UO+c|%Dw&|qeuBN@P?FB?pJ>3t6 zLlYG(ynNxxjj@WCwSC|>3XzJtet7?z*APXIhhFg4M?s3EX`b-MbAF2U-X3sEh^L}~ z&Tjak^$x`Y^E=^v@>>8AIKhf0;)=z! zj<7zNp!ht+0XF)u%-HB_59?OUF^GnCFcq6(&_!(FubvZ(=w2JRT7Q_Kdfgg6g8RTw zOtOMi-t;p3c5Hwjly);_IhOF&6CI46Wed2|^)Z9^(j2zdXkZS?N{q0psJ0;V(Q`mlVSwKGK6f_J=Vdb97?_s2KIk1M-E`||78$LDf%Fz0t2~R%V#0ad_fUR-EEvf=9R%?JM*prLsHVaj$3_(j&&k5K zYX=p?kIBGNDg6qKyQN{DJ+Bp-)=}U~`ke|irWE}8&l81;B?)-(#Uq7+0WwT2tW)S~ z6o*-nRSN!>Nif6qwt@*N28+sFQ}8?}3Xcw7R%qW$glnpD6_O1^;1k$6g|jpQY_$87 z!qhwte#befaQ^)Y6!QyKNPF}b!aq$==(_p`;%6UI@K5~>O$Q%Qu#Q}Y+|5H2LOqtC zYvdq>FB=x2>3&~@+gb~d?sX4^7Rg`GuH)MkxU+Lm^yV!JeeZrkh?0ZC+vZtF@YPB| z>&6f0c%7L-P6h{*@^yp{KmQ^P%a_T)Q=mR3&x{GlJ}^1e=w@9cy4y2W(AhPROVLOwm~RxecZ zh6Pg!*5^(Yd?2A+`J{`U$5l z$m4J*UB%)B1e+hAORegJ3Q7L-&Ftq;MUNM~NA4L^b;X^2htvUGk948;E!aN(I=4gdkebiyH*HaW=v1)dJI(`Gob6Xwm`o2I&{tYW@v$`K|fs41PKON zbo{kPkk~CceYD^qbo{ssopHVq`s_reUr29&Ea)QiAnXAo9QrNKPppU9?##XXHO=Ux#)&r^_GHEQ4;-h4NnN*Px}(Kt5Hi6tcK|TwYSO z1PVJIBj2Zd6*}t}F8`BN4Be&$%lopfKo36dlb2@|K@HdU$SbifLlwt%$%nBDp&VN` zd1>WKP>i&*{2%24$nKr3yoG8$BwAuA->Q}e)km7j7pUh#`!^WMw`yL52xL8Z3r-G{ z^+r?vk4`qEP^cm=t$zW^ILwd_TYVl{G^NTbtvv^M5+vp6>&`;gJBjjs>(4+l*?;AJ zT4zCeK?`#I_L-39>K}4an@>aWOW)+u-A+Lnt)p^2yE32)rw8TY_M}5+_VmjQ?@NOa z&TF~6;8f_~%yYRb5h;-MgC}we$4){L!bfr!lais1?R9dg0wI*BTqW0$A%L{TZpnFE zz@Uc}rE*4vDCClGS#D1m0(Cp)%Dt?FAxG*tx$_SosN#KwT-g%<$&@6^NxbAk0Y_lD z`|p#WYZeJ|_r4@TL&Rfp_#X+7Y*&O_?w=FT+MGjjF!==J92h89Lq86=ukw|%(1?e2 z{Ms!ixjGKAZ`vluvy6p!shj1posU7HyX@t5dK`t`s9MSS?vH^kjIWccj*f<0E7!<* z!%@)U37(v5W+as3pe=X0@W?;1g_<0@JOZlfQRsJ7`ooJNc$oe0)0O{OUuzd1gU%fN6T3k3~kXIqm4TsghIZ5qM<$q zpoHpow1|lP5R&wUb`1`K_)afqtIr2Q5wcHd#Onc&dw&y++qe(n71h(SU-?6eA=Na` zvAs~;+B>xUzx|*izpv4nsD2QuwTKqN^@Zxv^JoDZd?1(I=V{m6_dq?Wr)icU-q4P* zlQdPx3u?K8&|I@UA>Ft{TIU@P2(gK!<+SaFUWrH2ss?vK3NJ%wDhoRy*PI~Q8`+)E ziG6;weqDDcPuG*CZ?^-wJF}hE>9ZYbyuXFkaBLgY06EZ>PrE^t&ek-+4Ob|aYEJWi z;sV9@8_|+KZ-us8)~Buf-U7)T;?PhPYsA#a6n)%lfx>fRkDp30u z!|qW#Y}P|X#^uyK0TxjDav60!Y7T`qU!jJSm_Zv)=2O2sT?a{QyFjh@W(u_{WK!Fu zO`*gODO5uv6Np=kQormnhFU|Cs1xyPA+I%Y)b#~M(9o|)>OU_t$iMM0wSCMGdX4U< zic$B&kgftXxb(_)+*gLy%5}^7eqliceeJRvmHCDkdTHhP41PQwxmEi?t01Yh>(JQ$GXcBiX@?2OBY#Oj|60hcan7xmw@V9 zZDhySlc5bM7P2oR#GxuzV_9-B2~w9ckUiBW2BB}cvVjya=tHi$tiV*An3B0P z{}Z?%N&)P0d2PNGVixd0~xVsnbR3l zz_mS8=FIa+fTSIe8IhO-cijACQ0M=^OPaS#RPuN5wZ~oNcH1|wnC&8CPWlE`_BhGV zoW6o()r~S1!U-_>*+QngZ5;F!8_UFqkAvES1~NkDF>p#xM`k?b3-J9aBFm!T^9@bV~QQDmP4kWy-kyiEW2gNxR(%UcfftEctq+fq|3;I;9N?$Q}3q}VE zq??ZQf{Dx7(gqKEz;Ixe^aQB~^k}C^&u)7I8pkl{Ef-&df-=7JkKtD!=5W09*s52+ zc2%^rUffGSnhKSE(A*7L$`45AQ@TNHl)vD>@DqF`~o!3xl7ZhJHehB7wOfO zo#0!XlXQ0Sa}Z^*QQEEN8JJ$Sklv;73>;`MmM)9v0I!k^q_;M-15+Cv=?#+YAQP`4 zo#6Epj5M>PC9bsr1C%a3Hva@fILJuT9G`$vF|u^(xmNJDjUeql`WXC8{!Ixnc?^^{ z&r`av7GNYfO@Vuxfz9&?3d(H;_UXfvH*rnC#`Oawy5kWrmU&C@SAGQ4y1OZP;ST{J zvxCBIY6Jt@A5&K38o@1EBZYgg0UUc>L&>ju0M?zYpzM==0H$`{pu_~!gG=mJpg;fQ|Qw7 zz$7!8@-?U$xW5afNI$3ocP<{FKyp<;WRE|^_V8Wc#`30YZ>a=X@7*bPSe2kN*M;H} zQvq;3P85&Ma==sGNV&`@2d)Da6mxI~1m_u3*zazG6Fvr%UBRqqYF}tgvEvH+`p{N*m zd38ty;)}ts;$x|9|0`gBUxQTYqayI>LXFfpb`jX&Q6cpoxC|N;Zb+T|TnN~`#Zo72 z3&DwV1yY??E`hF{*;4+Zmw=Ldmej_B1;Fohs#IiqKDd~LNlo$cLDzP^)PsyXuq+!d z^>!u~u)CwAHtxy=R;NOxmTE5och>__c$JG_AH`qF1Ihux&%LCUN3+3!RClS#&Dp?r zvx}5r`32xYc9METzW_|0+DKhGaURfx7E;eYp97N)#!{O$odb`E22yf&&VrLITq%8p zvtTQ%E_EjH3?OY}No^j@0(C3$Qf@9;;6S6aR8e&%kVq7lvRBOnrRxb&Cc@KT!_u;3 z%=9VntaeV4;C%}0h@FxgY{>wxOeQ2H3^KsxpF@&pb~>o99FW{9k`A;YdnE(I(|~Yw zw`6;NDj52&T{6)j6`0&?kpvYf;2)MH`AQ`PwCU7HMx~qtqGRQf`+g;Z^;fS;76c`O z!-2(;das1wjCz5jsErU*4_=ToxGex(`I(X>$^!6tPpV{SDhB>zVv_I@3Vyszk{msR zg6VT{lG*(T_~ITVnd6Lr9%`uM#C;evcI}rG>cQYr`d-PHTnHTB;w4!w1^t^hcS(yR z0GMrCCFQ31U=VebTpz#(`L;Ha6>pNjE}VtrF{dOT+PGHoWL+Y-b7Ga`_f?5thdEa= z?{Wf|oM%hs(Gvhtr6l?FS0t1UM1uUJe2I)tN5Iwf7bLdrIRZ)-PD||TjQ~Z}DH2WFBfy0yR3f4?9AK-H zBto6TLD=_LiQ3jM;8qqX;cgoS^bQ=BuzVN_{%Y)(h_MU>&jA zyS#Qt%vOg0S%s|<2aH2N>njHd?%hKm`joZAI-^5?wbfkWd_^#55ML`{wjnASE`QLR`jq_Y-Ci)~)J!J(?*;0_2jq-VKd|XhH96q0A2^h7hm6kn z0@SRGJQwQ=vVRtltN;3d((*j=W6TGXhn^>^Q+&W(ozvtOXZL{ek(1=7%6mX*Aws5I z^#(aUiRA06yaB2hOU}CI1w!5&A-7q30q4^p&8^UI$6L3}rOQfWm#d3G0w3pXR9>|H=h&xqW4b0_E+ z<&pQB?*xZ0Ym>J=aR*|)YGlaW9pou8$zq>(0R1;Ka)0;^aPO29dHMHtV6jDvd^mMG zs1w7Hc}m;C+U7-Z^RjKAG;vn^yxBIOVE&)@#;0z8|MQEurKcMhy7NgK8+QdZhu?{- z#JhqV&Kq%}ge&;|xl`Oc*9BPQw~06Cy8zg;N&IxT`wiBF4f0T*#a;x2icK}&tE_~Po#VD#8I@!1w*T&l_w6%>qgB-R(9Y ze50uN{vaEm@cS>RdBqyszqde&$h8I@kv~Ww>#V^v?>p)4Yb$_#86|B!Vg=+c50Z>2 zR-j-{KPlw;2B4+znl$CK0bK2VPHGvo1nQ|zNTY})$aZ){^3bpZlDIk&qiH>etGi3$ z_^$__V{Vbq6${|7x|Fo$k_EUrQAk>4Z2|u2Pm*E>&B1QJvm{wy4oVd>NDFLp@bi_B zw7S_0Sf)dy>OeC9oKBEVikg8&{87@)(sf|5KAfbsc^xn~7EJo|-4yIK3?NONG6iX0 z_mEuInu4n0U8Ln+6Y$p0jkIvw1k5WslkC(?0QI#k=|hV#;HF!WT7!*&nUg8$55*Wb z;0;O0-L=5AUYF$MwHE9+s!2**F#efT)jR zzUx*4BmF+HwVw^Z-_e(1o~Z`l$)#sv&rA$JidU;x#-~-lS?-}&Vd^R%+F2`xTek{4 z5LAlY8PW$4HaEp?W#|LdrK@5~7W$z5?j^DFV?1yqEJqBS>Y)o1EDnl&7t;mVv;Jav z_jCZ`mbX~$0UeNaV5iuGf({_FUBv`#T#(T3Bo-CN1>dqZirv!X0*|fh#Z2FGK;u84 zK{}lSG#(m=nObuI9H%38b4D9{T%#ctS*#6Azp=zn4{eZIOcxuI&;|p(GGaN6T0oaU z7R!m!0#V%rv2l(Ts6F{xRPbICEZNSBMxWLMX1}LI?>K0JsOkw(i)9T^7CtO0U!eg$ za6gDz9@GF*pL<2`s%QYSi`}CC@?XF{_YTohsp>!=^;mS)RvnbKHi(uiu|aE6jc92l z8w{?i5M2migZb&}q8BvTfPB4JR4||hn1KbNE$7q#M>$*6%}oug?#UF@BdY=9j8xH` zEvmrO2@~y1R0SqDzUVnKRbY5OPV~mC3ebs)5~bcz0m{5k(bfn|yTPHA`18$QaQqHU|_SEe$^0*<1wZ&@J1+(vZgITmpKVJ^ydX94z& zwW3Q@7Wf&sO0=b02|QNjioQRk1hRVAqPA{Iz$ZgVbU|7PXgbM@{&~R!V=ENVZKs&v zS}jR*){P1FN8&|CWSM}iw@lQ2r3m_leiEzBD1x-yNn+M6MPRjaocNHT2);`V5!b(C zfD5hfiDLN-V3X8CWcxF~sA(55S(5>hr=AjR#uNbeS~Jn{h5~r(|A3emp#XfD_lP#e z3gG9`o7zNqV=4eaYD6_074#@GiE+_ZCIoypRD!;j<#7d>QbC^PfoaVHuz^_(jCaLIxbX@JS?&ECY(& z-idtalLmvNHzHTANdv~CPLVrt(!eFIO+><38UVv4kt(J%s2r~ox%HI-J{4Ap%+*r> z#p||6YB~k1qh1q<+)Dxe?UzNauAu-7$`#QiQb3vcIg#aFDbO*KA)~HdOap4!|Br5>Uqc4f7a1bDr^(><4ywq}Lu61aAt@qjM+P~~ zM3F^hGDtiAmtgcu93&bo5b9ovgV3)tgwr?0fmhKt!abolu=gG%=mm-c1KJ?rKPz#d z(9uW0vBbe|=oMk#FB14{{+vL4Ljo-`tpwQ$5-2WvNbt)b0d(Je!t!Af*vGs}7;`3p z4KHsJG;~OSak7MPQ;YVH$ zQBd%4C!sz<6a<`iC7jqL;Br$I0|MFbu@l?ll)L?9!jK+yFj{(DEs5R`0)AmId=;Kd<=HETr( zV^Tyg^7S{qbyfsiD4NI5yb}SNyr=P@%_86z^()@=x(Fy~AI7_7iGZEZ2Yk(O5r8v) ziw_SJ0XL?*@iALPz^-c@_;wQ!@OSTHe3;t5_KZfnKUoC0bk*Q5&l13_paO67kpM1O z-N4h@31IzvG2W(%06yF*z&BnZ0RH}Ld`c<-uvN0~C9wqX@J%XSHi!WH(lC7cHUju< z$H%|gKma+*ad=%G0hrv4!gnbWKzB$e{;?PVglHVVi_hVK$h*Dx++jS(%k;u0zQO}z zXLtPVCOqiCx!?^d@W8*;5&x$U59T9m@T^QcNa0%Gg%BR74z9)9Md3lk`Biw=Ks>N> z<>E_s;z5t7I)0lY{vU3kgm*Ig*DppMpP`2bn7%Y#Qw0y?M@V>aSv)Ap#pBnD;DMq0 zGOl4B2O1>ia2a25z`1!6cjqGx^u&+jRA1wO|C%A(KpPHx8-I_Rcz^>(3wv-5l{m2C z(S@5X#erm*cHGx|9H6!}OEUPndaRl7Id!B|1#N)u<(^9ws91id|iQ%~a;>yYjANQ{a`d0WVak(oB z0W18tY15U;yuW<6L$CgNC;#Dp8VdWD1@N1H$d~;0Wz-U1x4-yLQRD*OXSdBCSbd(q zvFH8o7JFOD2tI^6b||7-;; zeRuu9_sCRU$`JPPQBLimd*o|==0o>IE2$U!dY`F}S3z%SB|nXNJQBpI5eox=d zX-nllN$!l9DSyxDq}sjdQ>Ko?Np_XGQ%^>FlGeyPnN(W$H0j~7fJt+Ux+LDj-~aTd zZX{J6$o=p4uKc9TsdfKVhG!&^&^O;b%=t-fT9My>R!1aV>!y4^GqN|y?d0`uR;_MH zkgLc6Rc)!iVKlsH;9aV>i(arwK)#F3Km#Aw3Y z_^AWEi5i@&aY}znqP^$p@r6I-iHw}*W8OXaiGAaT#%%VcBtCW`jaBC!OH{a5{N+hX zKqAH1_6uL%HF30QaP&JcPkgsGag>#;m8ka*IaRckNu+kxj!fTPOn8>Jd!+KkaKib- zpTmbPcP8A5$Qst-)+D$@8xGIxEljwZ{9@?imXisr^3b8huaOB&6B0w)Hh3otnUsD0 zVQZUEch>3i=f4Ic|cd{3<3Gw|U!#r6anKJmfr8Rx|IMx_t>8zfJN z%hnBO22LG^V!Z|&HoQK*@N?mP@w0o!uO(-{-zI(Wc&Cxs`#qwG$BSm)zUwRBdpz)2 z?7Kc$+vA(-81EvqwT_>CRMUTJQuO%oj~@M{p=0sp@(X?8m!8H;1!VWpg=O)po|^Sl zXr{#XIrhKZc{C*6>0|s`TEgb|>I|i~f7j{7`+3&)t|}wPpIGnHTiG=px5?~JPtlFG zxE0re9_ogYxOaT(9(fdvqd)uf<{=1(n=pjm=&rSi%dF6Rvp-iQ&dH_q^~w87v5v%p z{}lS(#_>3v3rYQ-M~kXAzp(xD{OE7?WM>z4^{Dxc%+8M1#G{!zO**$W>^izZrT=+o=&GY} zqKVHPUK5YTQ`DbN&Ag9^H)(x_KCO%?PdxNY+2dr4=NHPem-%~R$|5Q|8uCnH-ZMQq zmfa;|xTDMMS6V(rx4tZFfBCIC`um_md%^RR=w6v`PdNwnM%V2-{S>KP8{OSw^0d2! z6um91KEd>NMZM67exlsVjVcOeK5;f*iZpoj zu$8m>d1Tq%1Ff(03nHDVl-A&eh)Bn=yN^Z1H%7kw?ESb^iWa#RPk8*~+0c>G4rMLc z4tI}m?rdvWi9?R)SuHe29&|tQ=EtSxi?W(WygQwmFU0(anC+Zu!p<~By!m;d2@N|P zvDVh6sgkfaV$;3xNBZuoA~tQ$d_>#393CuZ@d)9xhY$W9dYE5!K75#x_K-gw7=F#s zKQSl#g3 zcro;u)w>7TyB~+DHJ}faO-_Z%?O*+%tlKN}gXz0^e_gH6awDuhzFzG2K^g=pX-N@O8U-Yzr1NvW7 z(jp~Sf6`mgr7aXQ8;w}DJ&r4W9{1L=ZCa*SCfe3gq;sPvQ{%Cv@y~Zf^RC3JSqTo?M;kQO{3&(AvLQ&CU7GG9r3$H%!Fh72^x*(7eY_5QFDEPpq zVg7mVazXtE2J@og_WUnfgJyiOl>B2m31&eB5A%bnOw6V>hTi*&+%j`=^nZWL^S7za zdBOKcK!)j$xrMwcEn8E@wZuG{@du`Ak5uvk9?zQ;L>gkLE8hwMyRq+|FV+;o6OR5=Oq(1$JI!80E3--8)^%OH_s-((Po1TVpKn!9#p+l_N58GCQrDrXQ+eCLL8~)& z?fBawmu79X(od;Tcz12{SLD=830`d(AI?;|p}$(JE%PZmd|6r|g6Sy{rlwk1bH*wE z&XBbtzg|l5InkrZzS5g480f8;CKs5jIw-7pbyy~OeQ86ZDg9uwdUu{ib9PNqEYU(k zVTP3S@2p+pr7?F>Fi$W$-B9Unui3{N11FByHi%w++N&C6sO5l^I;rM z7!x#9lUqtm=n*)pHoDIM-KU2;@o=vl?xw^2a=0T7_q^e*w*CM1t>Mlz+NRyRC3P74DeAJyE#p3HLSO&L!NNgu9P$e-Z8=!aYK`3kdi5 z;7%UgtAo37aK8=isKGrmxGM(tz2MFk+`EFiQ*i$Y?l8eUB)Cfi_krL}58TUvyESk> z2JX1PJr%fX0{2DW&IjDvfV&rPe**46z&!@Iivaft;7$Pa`k|W-{d(xgL(d($>d-fb z&N%eGp}P(JYv@oz4;s46&_{+&G4z6=+Y9|%=-5I}7P_v`SB1_g^hTlk3H?pzU_y@) zx{%Okgia##3ZWYa{XXdELC+4la?p2!&Kl~S{m&hP{ugw(poaxrD(FK&rwMvV&@F;~ z5OjQ?rvqIZ=*vLo1$rycJ%RoRbU>iT0bLB}Q$QyIdJWJ`fPMjV1Ypk(yL#BS!_FM` z-mtrd{WI*4VGj(uT-e9LP8If|u-kZy*s=+hxgy`4jbM>!@Fd79}Mqw;k_)pTZQ+d z@QxGSQ^LDOcwY$b{NTMEynBQ9XYdXT-ebYLD0rU)?}XsJ4!oOz_bc#@1m1JNy9#*U z0PhUodp~@4hwtC;9U8s|!*^NuJ__F{;d>!`w}bCz@Er@jC&70e_`U+)IpBK({O%9G zzr*j~@Ow1;E)2iV!tbQ;dnNpC2*2OK?`ZIQ7W}RRzwf~BEbw~={O(}<@AtpU<{lEV zu!l5^?jc9o_x{Zb?jbeddk80H5BVUshbUd!L)Pbak-V~91W(yTl%MV*d>cCmSMClX zY`B9M9N$5F3bv6JwQYp{?-qjd-a@7>Zz0y%o5(ijCX(=B15xGOKy< z(tdai>2p{`7Q0puMwS&s>-947_Qzj@n)xq+ab7}Jix-hMs|(0|)&*qLd>(lhK8H~1 z{va09vxxEWS;UTc2Jse}M#@#EkWJ&?h^*}-lIJ*q+;kjAvaEk0VunAFdBrg#i*FPm zFpVJE)We9}*dU@*K7d&G_9Ol}KaiFi-;wiEeF!G47nwBvidbLhLH=v*M$%ln5R;3Y z2y10Ka!R`mp;~H14tum9S5G%1GBJ&a=hX(}NBk#*pP>#Z^shml{#T9k+k8a4yDJcR z_7BL-z%u0IR0%@ESBzZtDnvxS6DBURVa5PPY&$YYxn z#lu9BFutAm_!&2!)!6Y*pb9Ka3l~b;}i5?Q%j||3!ht40cFqi8a!x zV2SLFnIWQ1CP>1jA#xhgM`Cw%kf(SpWMxhrsW(tXGFz39^v4Rw#}HX$W>E@xBrSpX z#EK&OW`z)64grLfz=zD0@gQ}}oXGpT>_~|YE7JS=AwrXT57FzogEY?FM5GQeA>#~J zktk+H#FC8xQRF_4D081d?AT5r$;>B^C5B^&?xDlT@Z14}+_ewk%-y9Nd9y`X(^;qd zcW;GqV`Y(ITs}vsAk0u6bN;5(&Hkb|#Enw8Wrir1{{Em`3hSeAv-eOO+d3)rMr{IbLl?3GTF_ z@D7+!sD2tzW`F5XRz|fbSAVEcY}=G5-#^GvEK;Q?=e@)zQ&vKhK~a9nUj`n^y;*jO zN9iNV{%7|oNy2w1rvKfbNS9rqsMuYkAeYWl+8gL7!nP+U-;W=qgrreZTm|+~a9!Kv z1pRgL+{9n9q4hj@?e{dfz<7cj+BZs$l^7(q}G$TY=7_ezZ1M`O4{O>u;jE#~3m3(E#yQ-&f)|u7fyuwwXwqQ%j@> zRS<7=77>qV=MwJ>rxD!^l86`jqlwc>p~Uq%KcWch8)8f3bE5waff%UkO6)AQBg!4O zARf^(B<@ewB0gDACcb|xOSE(pBkH9;B?b+05f9O@5-Ygw67%(#h`%Y9hz8MTi5Ch^ z5a}8Y5#@URBeo815WL5h2)<)8gzmv#1f8Bi!mWm00%t)7!85vva22T`Z0nU17`Y1w z?lf712SX_Y#*A2kic=V&lg*zHwD_73lkto&tB)tVJmE|*DYGVc8JG|@{?jGo#i|nW zIOGT$O=1LZji&_jQBH!7ISXNH;x?hk_$s07`vt-g*;9m+vLghq>-z~6uQu^dCYJEj zLNoYF;Xm=ue)r=abM)X@$)E9*>Q8w3y$U=PPZ6HaJ{w;bmx_;SiN)6}hT^%;_~G|h zU*XTmQ1FO>8=l9(9xqBT$0t71$1A$433cS- zR_rryR7aC=)(MfgyN?5LVpVT&A1p|k_;NxeDl60bf^J4+3>d_fL3{Y(`1 z^cOE~UYHHH8*>+Dvvdu|DMF7k^ryv5^&Y}?(eGjDHCM6Kfq$^g4ZpCD*ZQ&B*S}zI zOSfPPZELW}UZvQT04}dQ!JLZCj?91?~TELPA~1e+)I1pE3rE4E?vHrBr3GL{^87Q3Qx9NSAzg}v6d;r7*k!EIS&(v9?Y z(9JQf$E`!O)h%+O#;x;3shjhqTsQZ;RJUD$7`NXoL2d#{o^A)eAa2}>Zf^Zewr+p; zOxzr@wA>8OE4tN^#oa=N`P{zovAOw#GP@N_U2&7;Ip?PF^0?dAmi=yx$2TzdrROo! zFUBz{CH0uHfoxCg%Eim!x%imJrGx*W3!NB~%ece^7fEp%7e2xLF4Y`s&b_y0oyn(1olCa9I=>ihasK(S z%DFeP&{@|p-5Dz!=X{$s*xB~`YiEf#l5?rPlXDe=xwBrkwsWwDg0msJsB`@gxAUi$ z51e&wU3d1WJLjySd(63FVb7`J*|L+y@hK<&;6W$jbKOqeAq`H$Cq6iNz07s$UP*Q; zGmdZ)X!UV2V|nhx?2mEspSE%e5z=?!4N-P_IVSF8f1lTB%ZbJ5UICNS?)-Tt%$?&- z0lNP=Df%os7M1*VtR5P0blTVD*mR}dv5}|D(M}=TvD`4x@x5KBqoSLqV+4Wh=tXdH zyya%*XlJM8XlN+sxFav*D8a+w`1A_1^%D+iiTfNrUR<#s4g76iK{a5n?9^eO^rO~3TcFt9B_Z8@Wjn^6 zT`j<#CH;l{-gx)RxodjjbdX(e~buo$bgoLtBe0Dz-IcVz%=N+_np&cWoOS7;T+4PTDR~_S;JQ zw_@W;p0vTPez#Gv`D}A=;G<2DvBm*1a&q_9L z&x_hj>T}v0OuA!3HOgQ!e38Z`N_o$k(__&(zu>3!$)T^-@&}r%?QfM^JBwynYwE{Y zGr0y>cX_y5n+3aC55|~V^Cf9oKTnpn&Q9R7u8w?Y{lV|5bv#06ZEJhLnn`Wd>J!gz zD@BGMR*kEzR?HohR=DI`t0I>~t0944tJOmuR@<#^R*T-2R=pD1R+)P;R!#-{R(DKT zth!EIv$8Fwv)a-+U`5_ovHTk{X{mSryJclni{)vB3QL0@*_Me$@s0xVCMx?6G& zyIAU~n_1$U)hz?LB`s5uc`V-_y=VEs?viEAXBx{-xA!dSDGL^#x<)N(u70uj_z&^< zkY8j`y7Jbdm_5Rx*um4H^ew@n^1F@2r^9*{oowU8aY=)|hT8 z=bIjHOETpX2{!d9dSSZ71M|Ji8L!BlE;)-dhgXW|Hxi*0XA26k{Jjd!g~23537uHdCie4}_wZkIBf z%y-e7{F*#sa%6MESoiR>@i5&F;~@GLW9+4JW8aGz#$V4x87rRfGTz-sFdkjBGF~6l zG8Su)GH%S^F@EmNZ0ux7ZyYIf#CYS}hEeeE-$v%e-;7+JH5pZiml_EkNi+JdDcoqs z{k0L-6Rc6*A9Ev%Sal;kDRHCVMGm8*VKugDen?-?!^c>F(pXE6kvfME=yd9%pXmwn`a2fZ|uw|6da8{hgP%CZQ;Pk;+ zgNug!29Cuo24{|x8ywP1H;_(_Fc_MCZBY9VYp`K&Zs4A&W}yE|)WDCP-GEMp$zTRY zXTXrW&mg{eL7zA~te<guco% zPW|)5oBBM?XY@aqQR&C2E$NL4jp}*a?bP!*S*5qKkgZqS9;5d+&0FscLeP7mY^C?> znx-+R_^A~jgSPtukUu@USYN^m=am&=bd^t*&RQpC( z(gdsf@;`IkM^UP}a*srG|MgwE{YqDL*TiYrOuWi+4p*{Pby7tN=QEhj<$J(K@anbrG#}V>_)3GaW5%Gbt@KBQCA|+BdbHDxB6jF0@a} zhGkw;k6}=AbYH9H#(1e_YQtO2$>b2tk7Rev`>Kwbk8bO0wynx&?yuv~?DD>?$)j{u zlkYT@=8vugjkCT(8ndFGH4Hb(G+Z*?Y24Hd)o|PYLc=oMQDak9UxVe3j0UwAj|ReY zTO+pYjD~^ievQWddG#KPLG?EaE$Y88rRtMwsp=ta!RphC&(x=_?A1eubkt`Rq}1mt zIo0Fu+)&^3Kc#+jc~`ALbyn?h{&zKnOPjJ)h3BGFJ!#*l`m$hD6=jT7 zyG;~S&*1q~&wDeg_D7ymHAVCm<*D=X7jIF?=W)%;iHi5jeN$?bv(+w;+h-Ur7h&uz z$7+m~Yu7iCbJSFjJEy=aS1Wv5&Xw)7+{0^ovJ1y%WIz1vmG%EtD{Eh#BdZx1B`c44 zC95d!ENgf}Ulv)DlFe%5kev#-Cd*|&BO88eL+0?zFB#vgPMMoF6*677(qw{%gJo<& z5gBbs8yTZ@b(v?W!ZM`_4`q(7(aT_?sb&7-UzASmACR`dHc5-q7D|h~jh8mz@s>_% zc9Y(xVJz)FDkpu*ibs0x&kgAx4z$wKb6Zl^Y$l~Bzq+ON>wJ{TZBLhaDG)04GW(fS z&IMa3s^=O~FDHbh*rXmxolK{fVmL@GrE0h!`LU#5QtNo5F#L6Df( zGm{`(SCWty=94fnxGhnRr;|_(+!1Ge`&(SO^ow|D<41ARo^)~bp%C$aaYUSM+FE>Y zMooNaT2NeR@}Bti$T{)9efz|@KF^9ZSN4fzWYvoOh{zVxc8?IdZ}mb8%C^xvJh=&-eiC_Rg#Xx@UhXiBb_ z=&H>l(X^WvMau@LMehYJi0lgYi?A=%i+qmD6KR%=7P-6NA+i|aC~}2MM+EHLgDrco zR}VJn!R|cRmIwRsU?U#vz=N%Ku;&go+rch7*j@+w>R>}1?4*M&bg*|0HqF6qIoKu# z`{Q6^9PEgLt#Ggh4mQ8Rt~c232K(G#gB$E@gDq{amkl$ zuqO>RqromT*nS54&S1kC>@tzxi83^s?st}xgR z2K&HZ0~qZ5f-PUL*9$gz!R{{D)&={yU?Ugo;DW7NuxAT4Yr!rp*q#OZvS33N?8JgC zSg`jBHeJDPE7)cQ`>SAMwd~)HD%eT|d#GUZ6zrOU?NYE$3N}c=&M4Rt1$&`j6BO)z zf^E;``w?+AHZxU=ug55~44GH!i z!Nw!lag6)7)%bsVjQ=(l!LB0MP6YdiU;`2C9D*%FuvZ8+3Bm3l*cJr)fnXyL>;QtT zKd|QqHv7OXAK2al`+8tQ5A5WDEj+My2R7}%ZXMXB1N(DeV-D=dfvq^O2M0Faz^)tE zZUg&lV1o_ptbr{xu$Kll(ZKE**fsH)ZAbmvhXNZ=VCM;JIf1<fIS?rc>{KBz;+GTrvV!@U}pww$$-5Wun7ZpU%<8t*lz(FEntTQY^{Jj6|k8C zc2U6g3D`FQ8zx|<1ZsnxnE1fG2ev)%>w!@Z z9C~2Q15X~9@xX-#_B-(1f#D9Ec3`msZylKGz)c4>I`GedaSj}FV3h-p9GK(46$f@W z@WFur4xDdbc>}K-nB2hK2DUcvvw@Kf9Bg1+|DR|5&#VS6HL$0FFAWT7;6wup8hFpZ zbOvrSu$h6s42)&qC<7}Qc*wv!2Cgx%i-AuJ3}WC614|fq!N3Ft?k})?f!_;^Uf}Qo zYZrLBz{~|MF0gNbZwm}t;M4+(7I?G3lm%`quwjA!3XE6axB{ycc&xx&1+FTvQ-O~P z3{>Ep0?QP5rNATw?kKQDfgcKtP~d<9>l1jM!0ZGrC$KkxuL%rI;A8>|6L^=vv;=M? zuqlB*35-eLNCGPoc#yz+1g;~n8-dRV3`XEA0!tBiiNHhz?jf)ZfnNxWLf{YrYY=#X zzzhT~Ah7>{?*|M&;Pe5D4|sdP)B|oFukN2iz$^nU8L-EIF9r-T;DiAS40vC_^a5@du(^Q0 z1&l4=XaOq=cv!%^0_PbAXQn3>@Ix0Lun= zHNd0+?hLSHfFA>l7~sGF>jii&z-$373$Ry!uL2Ae;G_Tx1$ZaGGy!f2ut|VF0*n#h zhyW`Dcp$+10ImnHJAlst3=ZII088Wlyo`S)25>KcZ2|lWU{nBy0$3BklK^G}a3O&G z0DK2vH~^;sSPZ~h0Hy+P6M&5X`~zSd0LK7W1;8T!<^XU7fE@sQ0AK)s&L6b=pw|aY zKIra2TMznq(8z-h9<=VDX9vwX=+Z%Z4*GJ?kb_PfwBVrk22D5Uwn3W>`fJcwgN_=s z(x8V1%`@nlLAwn4WY8dk&KR`Bpce*BFz9|k+Y9<#(CC5=7qqsZrv=R{=wd7|1Nt7&@PJMS zv^b!*0Zk3)W{4YE*ZFN4Amu3B0>f9@|J3~8CzXdi(a_>Ej_ezYa@dlIS5Jim2megcX1+uelS#KE~= z$cXCa&2tk!5e4poP44ew$lr@mXixDzZv^@A(_-^*=rD4vNq*DGbqI;i;y^nK!i@n$ z(v519e&q*((V5<8ss4@(33hG3{=!tM53xKRzae|D7x7y1*bx8NgZ%ksi*^~#SGp0m zw@)^bn>vv=-)kGcZ99;on8RqV@$T(sBww_5or$j%nZIATp8vTSaXp)Yb{vO?8xXBY zr}YlQdgMc==6d>I9b#E7fc70>P1Q)cAI*9OXVt$ugypr)_)3Jyw0{kD9~vg*$jFoQ zwbIH`r0iC}+P%{y$T%Gq?Lp*o3lQE}(Y5WB_lU*!duvr(dB}7F9omT?Sy{+t(#R@l zI0JbT*tqIPla4q&%R&2*Iqg(L%Yd}XM@atHnV77`g(M=S0@7$#l29Itgk8I^D%cQ> zTsXbAvivy`**-9_0(+CF)=*?&s$j*ZE*RNA7_|~o9EcD*pQ9bhsIM=QQmU|W+u0jY z&*oflSMo$$k{HoG1;5V&nfIMpKGW@vD81}nu8)0&TqBk(!*0d$773xXe!Z;y6OXVO z+bm5^i1Ws(Xy2O6D(`EU_T`3Xy1c(=B)xIj?WAm}__&(KVM}OeNkx z9y@TLJ^a8&40wNjFwE#OEQZXH(lo!8nGxsFIQ~7FPGU+%{ z-eQOLJLSZKh}R_VLaQMa@?-V-!m8kZNYlZiXx9_Fv_T==`8I#y(<(*mN!5H#z+Xy^ z>|3<=xqtBw#mvQZ{>=9&O3`bb`SU>&l#Cc*v;%Tn8K%5wqMdJuAD~zdug!6beWz@! z4$Z+n$mw}E<@BBGIj##GlmwxWIfjf@%6Az}uPE8wNwa%2|A_W2 zPqbHRH~4o3A+I@W{v1nL#R<$Z#<@`JQf{Fg(@c{MC2ePUhN{nkVt;R7hIhn-vZYlw z1N)}qzjP?JWq~vAhBPS3)3_Pq9u>-gONMCo#P?o?((?S_j823EWwhw*ObkJU(lEU} z4ST2;k9aA2>aEjv4{%Y`{qm=myB||14UuRk^~dNgMT*CA`pWfNlsOlLX_vuk6sufL zw4Zt@Mo$^PLp?3LbcXWVe0J(a6fLDb^~)6Os+9W=QD|=^O(nQeQJ!0PPMtckM{ZAd zM0+b^rd9GGR)Hzu^hNSA=GK(N-9O~o4>V|pRn7Q|d`NoWH+#S^`B_li@AjP^u14SyHDXd>$!l|;KOU*;mvfwGXZ#5L{ z%T}b=$v>M-$M2nBA^&BU9rtNtCLc{?L%XwH{wrh^(*E(PIr@L2g;T%2Mx7xy=yd&p zJ(}mQBV;RqgkN{u50E?aU;kQR*dvMEc0fBdhNsIU-`al2ZQq=V7V+0PZE$^}WZ zck?B^CvC2t|9Ph^lT=6C8~c0VEh%f?p589HB5tl|Q7|lr(njfRHEQX|ui8Z6J zr<)Q}CH1rhjFw2rll~gxM$087Ndj92XlG~0%||j}VHrKZ%t_*JJvTaZ<`GHKa(4vw zcN{}Zq?OdRk%AA5qzLh%5sQ%XB&XjoXqSiOI!5}$Vms2kkD4U(Rb|AiahJGCdawh(9J12U4_l2uEr>2Wkyh31QJrXrI_< z_?ytCDm0LzHA=vS*gqO?RUv4NM$@F#;Tzj3I($7^RPqMfE#Q6k=R{OY$)Ly>s<14q6EQ3c@#Z!Gq~e)Fn; zJKn&$rf)=zfOqjv?_08P#-A$=M7z$z6l471!^V9l+_mvKY|?!e&z124hL6$Slh#=n zU;S}^pOMKEyureB??J`K_+X|ly|4q7xp*C4?U&p;yFrgHZ}9FN`*I2||DP+`hqmGO z;YD$xy>((6xU}N?y(eiFap|jP&~7x-cLe7_9RIo{{tahb-S#zks{=Q3uo&%0H`J?e z)e*10rtK8tZv3+Unirpgd%&uJcBZXgV{s2VZ+{)O3dP;IPWx4M!w1)bS?_`UDd$lV z?#T7#o&s+dTpHnhkI!Kn+)_^@+NCNiYvFwTtb2G(lyJj;lzU#ZN#aK2dC^|=UI-WN z@7d!$-U|=w&OVMn_*uTaa6eFU<%r|K3`eH zD!3_p`F?*2OE=B+CD335>u+!s?Otz|v}4N^7Q6Qi)MKq%zIO|3S75)1*LK4mcI;s$ zc0n|_TT&f8(?bO^~Co+R(VGn?QP%OXTS=u zU+R)wp~c#CALzoD9l}~T|LKGs?g{o4x9*aUo!IFaH(|YZoiZ_FZm$jmpndM+r4Bc5 zO`}eUum(4IYU$2Kj!L)5g2!mLOJkAYmVE9&XZL!7TVu;?2lcCPw}xk5J7CXS81&Lj zZRu?XD;?2oD%-!~lCP7Swha#Ld<8N3Za-$EI`CtvZZkQLJD6l-+=g5(qWy2v32rwV zsz2?YtRA`@ZvWcOT7ARKE9zrA?1D`UPPqy51hn5tJLHBxhHp2V-N8f-8=<}MU5jZ< zxG!6KW$XwBYjLT)zM~f-B0`OJ#O$}~Fe(4_wZ%x6VV;atwGpjzF*WsRXkQ#16OBm< zBD4+W1Y&lHCT$TFuQ75KvS@dVX>q}{h+J-qY_Y;@upesUXfVKBxwG&Y_Q(UdG8nZp zwVx+rg)n9`nV)T6b77nghoGJEZ&@Y`@qqc~kvsGl61Bo-)&EXnh=;k+ez_oV(-nK> z=;t__1y>B?-`2yd6RvJ|23ld)td`T|iiqa4J~3}}^->FOji;}4jk0`(_RhbZ(_Gs_ zlv~>_#JT>>=51v!4|cuQd;{&EJ?1H{QPgWKPA^%x z;n6JuZ>3$6t6#QMFbTSH&Dx>ewCJgOu0c|QEsD>tx@r@dTgGP3x^m^xp*?j}@qexl z7{{Bd&#bygYP2`o+t0WVf=kfO+UQKL%WXQZ<}|}rmlRc(W?Wje%acf5w7)LAo9R-1 zho$+tS%OQd%Z28P(V;Fm)%(ycJ7)uNVKnM#lDdv@@hGfpauT<8IdSwI+G|@rS9S6H zfN$cCka8iOH)#sXcjD=JKuiIkM`he-;KIzFuu-Kqiv8qjqv^C^@cPrt2U(}uD^6(7Uai34 z#Pe44)0JRmr{A^@KV9u+beiC}fOhUDL=HN2w$IdUyKXvujQd*Wmo(?N<5*P(`}dTE zUPre}!F6{|wL0dlkm^((R5=QEnWJ5NyyiPcWB(_0)fUl?Yfd-nyq*0Wf2p59d-+R5 ztYho#vD%+F8^^}epKH~e4IHoRFGf3h9!&|y$#KuxY*AiE&3>2Kw)-rO%wP1-zW&U@ zImg*%)>^*SqmH9Z7i;N~b{)7|sL}4eMR>x2uIGDA&hZ}(;RAIwLfvf+&nL6d9-p9C zzjO%Ixm#0Ejdd`^o~ij}V&f1Wx?2tV zeZg2|2gC2()i2n@9VT}xs>$^{4#T(JpH0*} z2PoU~wAa*hs|r>k+e@b!R^5$vv@c(lM%{qm2O9S0qOVk$+e_P1FCD2`&)~Orm0A7> zJptYGH|)PtH-CI2ao)bmyx?QK^HF>GmRQso;HX@%>x*#ycxvFM-2|21$M>tfb|fbW z)F0rxQfViudg&wcgFHKI^TCe;oXK_^LW`BqB?#vCv{UD9sEl|*vineyS82xPV3*Ak zjd}%|7u4*8#T+Xs2PEyr+qEn0XP?+H=!l_?L00ZnJANWV<(AiJyZa}pE6*Aqw98AK zuYkTmF4e3p@yDkMmi8grPq^F)Qb?C=Dt#2{9=M+=v1K!HsNii+w;emCT~YTU#`b=R zDC!}IjXk%GILlBW;O%N#-gKbi*dq&D5@r4abP^csWNn8RKYh@n7O-{C&HaFhWVLN{ zh(i5@Yena5`PLmi6!RUiwX4?taIJdFM#NhTbrp!^BR0S8T>N0o`o$)1i~0j=O1;g^ zu7z^wEl80wY>vNdD3AUbWAn`DeR-ppzfFQr4C*lC?6}xW9&s+WQ8BlnUD7S5O4YRa zJ@D`R=6^mzD=)uIMmb~o)-x8H(CowIhik9dJWl>w2Hl1lu7fsj!kWu$ZP%@ZLki2* zW2UY1L*h}-A%C&mx;Pe7Hg>kgTK27B*)m6gb@Y1~)Oo0}3b(fCyjDggds4_s>tStI>N}wb0rL5RWO}VFp-Y3m!J+P`o zRy)edtS1BYC5Y2xs~Dr_CAcgHE2}Kq5;JQft9_dqs5?RXL)0od_F+l8H>XwHU-}XX z&mAiVS!&dyD0*|u%H!ZbG5_5i%NC2q;IerdJN>Ou2c!PZlttSIp`tqc4~xs{4~nWA zS}m0RUO;_}a@8CQ6V8RglF)by;er0b;_d*8LmrKV(9I|pbg>W{jw`HoGPS4<@G5MH zQ?pM4N!hTW@b^Zdokg1Xo5&7~T`3vPHMnSY6Wfw~-rU0<44sp%B>m|@JBI3)@g zRm{yv^lYftVR2p3oNnr9!Sw??=89ie^Jo7(e7^cLmJc0|+`wbzLz(6I=_cD|`%~WL z7qR{^yA~gW`W^>r+s#zttn(#aR+(8RsprQF=b2H`g;Dpzry$VmZ8bywb#r&K^3H?# z9cNt3I)5&`haQNXxvJTL)2;6fj)<8tv6Q^GN#ih+kWWUPkhUM^%o0M0?{C^4GV80f zcptH|W_or?1@%L^Xuq3gO5T4T5z=f*O}_A+e5Tygy6^z%iXq27pLt*&XepkLng+j6GizJ$DkZ}?5^2F+22g!}1bQ-xOod9Q*`nCcGS z%Ul1oYeMF|fchkIq+yfY?S)*{+71%~lXLuZka6Y@ zjhw{8?#ABFMNu!s{I`*D^*6?xh;Ak0bDl?Y_DY3}!}!*+p`+qVxMob3-I+~MJ7r93 zU71~bf1fe$-3-)MS?L%tI#>82dpx?+sEO>DO>0_hlp(E$x+@o^;*GZdaAvQi`WxAQ zV#=m7K#b_(Xi<-aszKjqNqai$hl{+?qo;jY3ye>Vl5c!Mot7bUMkD5}*sKz28l$H( zURm7<+lJmlSk!OnYV9}dXjjTA(P=eoY<-$FI$3VG*?JFkU8q+g4Nvz{XYF(IG~60q z$`t*JGraO=I1_p=Nn;v@H&2ykR;fxD9=h``^JX2VA+vA@>cDh`oHcy>%s!KT{eU4u zicV&>#GZdV$>eyTz+SF^*qfcl1Jf-J8 zb1?l~@i)D2(sCN~Z3>?i>vgAfq$wDt>TQZtrpfb#=sg?DK;0Ysl#^a6^Q*LX<%W9V z-7aaoZxr+-DMqM=6LsN%p8W`4npyuvz2LCBX;D!}^)4x1K%E?+6Tfw}+Wx*Ps_oT1 z894eb#HC*Mu4czO=;uVXBd5Ko%1Il)%Nv)` z6=7Cg^niIIo-YgZ^FqwS&4EjfdWKzgyO^EBP0u{LkTWO7GH{Oze8Q zaHCpBCZ_7`WK53EwWw^==izbp*14YG`8I4GuOpv^eQT#>sWVq#hPpj(u8ZmTd=+}z z{+vz6dxqt0z~D8Vebkpx&&S(qS6f+lGqt{dR-48AcPg2=U)#gCHx)WRw&f+-2^0CL zsXM9K<`)uE_4z}z)8zb7|3@?5Q9G&DCN*kOUt4FtcB&!0oOXzqB?^xjDA ziaf8)d*gI!P9?QA2D1GH}ysB)g)%(6E`Z7QKm5N|A}67Hz*k3cdbAEr0cgs5=xac~tA6=CPD? z?sZN1p^aqan-iLw7Qd6BN2Ie{qq*f#pIq6StEtFPm|Rd4tI3|9ggQmWR(Q>VP^ICvL{%m2Si*!(it6N{t@w5%P?g1IIv%=DeU&z<{d~>w z8-1FpLYbxU{c~cf`iyDu(1RMKyQ*4o{B=C_RT|YjPq+9#%$q7(N6q7*6LpZiN9D=| zv3MT#8WpJ&_IOs-92FM!8}ZPO!d!c!^3Z@PzV-}8MQU>?uJ3@c%Js;xIOt00_4BIG zj@86<*4$CKhTK2`l!HRY#Yc4HSpg_Yei=3?iRS(N=ehGL;x zWnFhzd7s3`*lD*FCCdjnv4Xe9l%meZ#X`>tL;0X&utttmyP2l6JZl$A+Z>{#KA{&2 zovX8l?3LVq@y8k`YAeZ2J&5(;mQb4d7Xd;4il}#0$^XP|jNr_1rI_n;F%y^#MdFj8 z80cbsecr8@hxr(Dg{n&NP-ISw-1AIDw(7VT=w+$8zEnKQfW)v&IVu**I>an$>nZZQ zFo=PU7BdH@V*QptOk(VH#SZ>QG5e`bDi*xB8UuZ;7oR2-4qx0ClXA63fnd8B{T^Sf z&{Q)T4c)Ea>yZkZ*xG0-XAgy;Z~4&=tDF=P_>-fd$K|OYtx!YvGWu#Tr^3}2uF)A^ zt}7U>nMOmWD@6+~^p^Xiyrm6iv|7m*d6xNG(a`UjIhQ4Gx&Lr9vv7obf8ctQ zq4i67wwqH?(Df>NuPYy_(GoS-DJh@0S{}7M%Pt=rnHdGWuSb_?2 zQQ89Ia;~!WQP2T%SFe;as#J&y(@U2tBML@k8HLJi^Rq@lA8gprPEMwsE^1dtOHLz( zD(bqbn4FURawK%a2)vAPXD;_f=G{FaH?-9dId^VFHgd2e5_)1UCqB#m%!-U0Y%Y~` zjq-{V%1Du2_a;U{XY7G7Np^ss7g@q%Da((OkCZ>5DjSR!h=l%Fdd@xB8*i>f+7r&p z8idkCiiuFk2EL_=gf7{g&p%{Fdd4F-eHvtT7keW#rSfIYoo0ST3)J%wArbu z@QHgY(gaFgxIiw0bjW;SICRpCvKOTW249BXy)!6vRL3p+VnUOY(11la^wV5l$4fO# zONS4ydP$wf@rApXxJfx3c^D2|wae^sQWD&!!Z{mCMuw&;6m zl7*>eVTbJnB_~}p!ZNe(Nj?yl3WIK2+& z7jq=Ap39*Yj8PJbxQWmqaSsUrn{T1ed3zJ6BVn#r5n7QiE)lPr6Uy4fDzRXY5DNXb zVd}#YW6m!_87}=5f8p*H8p$#wE)ZrJ3SBre`9ksIEwZ77TJhqSr=NyO8+(b%pI{Az zUYxv*q4;5wv!NetWW+;)4~62aIK>5;HbS5y*RFe9e4T$N#722dj2h_-Q5PE%n? z0)4p)Or>Hw+V4UZXp+T3vm!(2SAE5l_xprEch2ymi5O40W5}~Oc`>s~CLzm29e`#Eha#OG9wub9Xy>0Gm)1z4}cNGTT%I$a-hku_D=eXAts zW4XU@+GIu$^z>93OogLA2Ly>pDhONFzX-}`+>l*CUjV>HgJn(RWK^BC~(?zM9{7~Ef6|>;>U^vdky^qi?!ng z?Q+}$)82UsO8n;*2z|eEPxJ-r@^k}35J^FclZt`iwT}fAokaqn`}bJrkl=#o-M|*o zqCk2fW8iF2zd+iZQ-RO}Y`>Z(KxAAG2vCj^P>h=i7<~Rxz@BM106Kx!zH17+c+wC+ zzfVMf{JAV3;no9zYUAtx=m#2E?-RHa6A}>fX6C7!z?%S@l&?=eP7nj2D_GZ){`9r5 zNr2*1@YCT{^#GSG^3zwj(gDyLL@p>lt$Oe{z>10Qsq){O0dx0mJ>{&V4}cC~6UQe1 zoZh~GD_p<$Ke4a)pW$rhpFKI{4}HSE`$_z4UpoEMZus!4eE8%~&*1j&aii29x`m@V zQv8{|3I05@Z2XL`|NYr~W90w!@{K?A3@@cG@?m@({g3$d^9e?n`o}re^BKL<^oP!2 z^}|TM>~2AS#iK9yzRj`wd;PTK(>=-T5B)VovU+6c|TeoPAxW4)QRmTlijbpXWYuOV<~AkKb{%+~>ZC`OYt7atq`= z@$EGa<^CGT;tL%}dRa?uDPwwH><1<8+e#;V)9>(dyNXizLLbt1n}%D5`;U*1$r{%x z_n6P;#u2W4Py2kJ8)@fNz-6sgt8ys|FTdYqKq(C z$)K0d&$xSB$_JnMKxa}}V3%{;)Y?bKXOeR$%D_jwuai^utEvz5CmYO@Ip1gq_~>T( zaB9Z0`+Wa{;f$YQ_JJ zU-ok3QHH(ki>o*)=6bxLW7&K$WfzJZd9uBQK*4Oi?d?%u{Vd07j!raA_^W`ir~EVzl?dzq-5`-F+0)^8f?o*x?=SYs3BJWu@3`E)ZAV(k#<_grVa%gPtlps684Hg!9o>gjl^qMi#^VXT-N7Y`5p3nt-8}jMFKjZpK1jwros8w*d1uxI{e5lfjBk0<6` z97{XRBTwjy61E&zicA4eX#Yg@aX)T zn%1BHkEinvr@D{(c)F!1G9n{nlm;rIou*KVlqf32*?XV!8{dwdQYbW}B`PW@p|VOt z5z>%Vp%7*7_4q#5^Lzd{fAr^l-Ph%u@B8z9zh2go%3t9GkM#c3OzYRY%5cu)k-**g zT{zh$)LLj>7*23Xdk!A34sW?1eyZKUT3m4}{2;o>S|L9noZy$JNY z3#}&1)`mN#t69}Jtq3PLsN8GcE!o$M!~bc&wX~?z34eGp-4dv%g%f<#S&T{bbJ%ED zay8Y`siY??V#i)f6P>m&f}3hP&&)C_>s#1x&`e9=?20heKRru7)8B>>Jk|LRi0>2+SXEue5|cPu*vDm6OYD{$3nRF!l^<>|aXacBR%;Nw#A~W^*e0@c$@Dv$!U$gL z{2}KhzKYAk5*=)oOv|wdLxS~}?B^MW5ggY8%596gy4AwGoGTY^c&ZfkJnY$G+tBe) zg72C!acZ%V<-btJHG;)+lzxY9;`%JkY^n<-xUbAw%f-VFN<**D)?R!y;Z^9S&0~u? zBXdIu9&F*&(nS~Xd!e^VG8c7Yw?YR8t}GgqUkN2Rv45Odi_|VehDLHc7tOyL5_&y$ z<(D z3xQ!meYlLI|Gi)ve_Vv`;(<(cF~1AV>Q_h{n2W3$)WyLI}=nmL+FFPxpn8 zBW7L;M3;OUUrnRpxWL*M`_GGB#JPvJD|Px{~&P zW{WZwgoKrRG25GL6k?m2XSU|*+z^7VOY=Wtw(+WR$iPOCnNRZ6kcGO3&DLa$1QXm{ z=4&f6tE#`j;g_||wsrpwc4Cj28fg3oCV0HLnx&>nz8`}H4UbI?BHjmoPERoHd{z`p zaC+mM8KyN>S;2!^`%Jr;>A^GV)|tM`xD!n9du`}5O>56z z&-uY43xf%6aC_~7`TBeHgCoOL=SL~d3GTM(GcI|i8cgtnRf3C*FRxYz&R>#dY&||4 zw7&eD@yWNnK?G;`?A+tV7wIiQlpGgh*KG|!GY{Grzc;B3BKX7E@e0PKZDm0(SGF3B zekl&RQeJL!?aj*|f=gVec+JQ$D=SF#N|=%JlZQc;E7?YKpQZ*8yy9PnHyX_;zZw+S zy})Q&!^NP!U{#|{L+64Bj`6YNTEokB;X#M(iVQ~%1_rHsnQFKw1Pvni#{3$YVQVud zs4n1`AvT{Lw6Me3@Vjq75Wzj(H?C`_+Uy;)A$W>mmCe2&CFPcR{Gi=I1P^)Z?5ufn zY_|qwMt8Y~h!AV9Z0rsjTmO-aat)I7dqeW2Ybn|(XOp_pjpS*Uo z+hAITPEfy~+8}b3Mo?mVp~3IMnLz|s`B_zz!OUM%f|k2V463k^!1#hA24aK$K!Uft zHp$vxX+T?`bdHX}W{uy0_kzasm%R89NN||@50~f*Y`z4lzJH|uxvMKDD! zAvXdEo^zY!ExkPIg}~<1r}gF@KNtABjj!kEcP5bFJohAT(Obv}4pjVaiC&ci1kO9G zq30JN3nci@WQ`xX1J5{tm#J@b6>I5%H3j!|Tc?l%2`+RX1JhmW?Hl-~z+X4zv{#_t zoL#zYMIM0!FIt|huRFfgCD2lNs%}Zd_P{@0t#kQbHU$zK>6?97b9bSu0p+4pZEC)MuFcd1fhU;j=a#VN2M%SL&E3>s5J+&RH*V|J$@#1qI4k0t zPM)V);LwKxoy1z@K!QhY<9Sx6qkl>uxFFIwdTLbO`OR17zWJb>;8d?WXsJ^h&>`2o zsHKyq+9o&nI;@R8{VgZ>)$wk{+L5O9a?R7}+CS^Q$+KR^YilKbmJ?j-z%?Z8SyrX; zyIfc8FC%Z|3U^j&V`W8hf_J@E`#){}kmqt^mp^lEk+bFYc*UHe-H+u22Ya;f>YT)- zY4ZEpVRO7qZp+U*vgY&}B*_Ur_O#^nb6y!I$YVa4%^6#CLGCqm<{a%+=j8-9``n># zT8)0Ea)PJbpeWK(=tkupR=!$mO{MZ_`?qQBJ0O%3obBZ| zG_{tLGv#;R3~Bz>qRDCPKQx1VNOFR|{nYk>X29rSxvOWK=53Ed^2HKNv-H6MIl<-5 z%h{=!D{_-dzu9Pp|J)@%F{r0$@9r!oc-@kfEgEYbw#aGjWg1br8|C+yPc+_bS|=ws z-WEy08o&3ilpoEbYZNyxm;e2`SK};hB`5ga)0Is$-acI@kDEV3W9?BhIku`pJxXQ1 zoZxbu=o+W?wYLj})I%RqAR}1yy zs!DQ#6TW(=Z?;PQ#EFHrC+22~RWOVGx;WH+@ z#RS)#@DLNeVZtj+@ZJeeFyR9xyuSnop78h*zFxx1OYq?d&o1H9CA_%=H=gj|624o) zYfJFt2~REIqb0nv1ZSS`$P&I-!V63A=Lyd%;d3Rttpt~z@URlTRl=)E@ahRqD&a#V zyr%@mp759wzEZ+VO7QIo&nV#&CA^^o_nz>8624Eu>q+qN2~Q{C<0QPB1Sg;HXcE56 z|Mz14pZ}8ZToOJ@!dppj^$8Cp;hQA9k_2y`@I(?mNW%L_aQF$2BjIZ#yo>~&pYSXa zK1ITtNO1cJ4b-^A}=;`b==yO8*OM*L19ey1!4amxXJPgRZfLsg6u7G?B$e@6n z3CNOwya>pIfZPYjc7Xf_$Y_8Z2FO}~JO#*1fLsK~K7f1!$S{DM0>~nOyaC7*fZPDc z27vp2xbcTOez?_#dwjULhr4>Xorn8)xPgZ|cerJTdv&-;hr4sQEr@6z)mkW)$v1;r0{mJK=^C?lj>R6YeeH zrV{QZ;WiTPAK}Ik?ik@#5$+M;<`C`*;dT)21K|b`?)>1E5AOBgCJ*lJ;ItTl;_T*s~9`@Z~rycgzVK*K2&tb&i6ZSP>ClmHA zVYd?YCt*ht_8?)`5%w8jXA$-iVfPUB3t@*4_5@)U5cd6Grw{h_U^fr;?_kFc_UK?& z4))<-=MDDSV0R7n(_jY;_RL_H4EDufCk*z!V7CkQw_ryL_OM{r3ihdBXA1VBVD}03 zn_!0t_LN{33HFU(rwI0jU^fW%e_+Q4_IO}d2ljDb=LYs_V0Q-gV_*jc_FQ0>1@={7 zCk6ISV7CPJM_@+;_CR3Q1NJ#!X9M;!VD|#{D`1BL_9S2z0`?tXrvdgBU^fBw4`9at z_6T5C0QLdk%^%+N;q4yY=iv<=-r3iv;cXP&KjDoN-Z9~=65b=>%@N)e;q4IK2jLA6-ud7y z58mtGO%C4O;B5`w&)|&=-ofCl3*NKf%?jS7;Oz;B5xp zU*L@e-cjJK1l~j7%>&*w;Ozq5C*TbN-WlL60p1JXO#tTpFx!XuJ=IDBuzH#K}W!?!Vf|H3yee8wuwD`oPdJo%Y7 zJ^_A?P5{r534jhw0FQwQP}@5Jw7VxA;T;p;a@z!GX`TST8Yg{W-zPv%^#oA-GU*K~ zp8#v#PkO^%O@I~o6Cf*l0{nY80lwUw0PLF+Am{P~czkXG_??;nd4Ut4L^=UZaVEeh zY0^3FI{`ZOPCCe(Ccy0t6Cl!N0+?G&0J^~h@Si;a)c%_Q)c$cGY#j$HYRAFV591)O zU>uyu7zeYH#=(}@aj+nC9OQ_`!8mCg^m&eh1jljEYd86C^Kp=^H4emJ$J;#9G<}pCA90T*`j)9X3V<4$*6tF*!g0{R# zui5QUFc38g!la|%jo&E9aUKPSR*ZrNx})In#H8!&_XsF2838RBBjDkM5wH{=0iMT4 zfUVOAD6kv>eZ|^WTQ#A~}KN|)OiNhdPJ`9GB4};l`!{Cd>Fxag;3`Bn>IcD#N zKuzipn0tB%C^Ck?jh#cFYsnDkRvrR3TL!_jH-kX$)*z@090VRm2Z40MAaK_ooa7b_ z0IkXaFn)gkT#6U~%>e`8*QQC{nZW?)?du2A%KO3FJN;l?P(L{0(+}+I`oS~Re$ex) z57g%N0a0upC}8w~=Ue*#Rlg6s>FfnxUiX5ygkCU%*9(^H=mld2y&$l&2V@oXfW!+u zz@E_qaEBfs(d+?czq$d)>ISDzb_16~-5|%Z8+;q<0;wOmfYsG5;K%L)+a0<!(KouKJg2XKGX0oW%xz(&^&kgwMPI)D8Gl@I>`GWHLoIsF6I zwf+I8`oG}X?Z4nI?=SFQ{}+@^`wQAXw1b@ZcCh+rJ0LG=2Tq-BpgOA!7=kvS;n)VA z%xVL(D*u2v7yp2g!+(Ii`5)lc+6v~~Zv_{5t>BG)D@Y!00rq(3fIqE2!MCKJKzigSc(3;plve%# z^2i_Hm*WpGGVvX}$o>x2a=(M)i@$@7KkGs9g?gamRu6iV>Oo9y9cbX!fyTvkAohDL z7&>1IR9$L8<#-KnepCavaaA)yfi(AT0qd#wFlR(R+|XeGg=6@4?@U zcR>BXJMe3`7|;`o!Hvzu;8fFFU>^1suou4t^!IOoF7pi#sl5TA4_*UDx7Q%M^A)Ix zdIcUVe+BHyivXQn1U%G=KzrItV88PvSkd|d)Q7$R>&#yOm%>7za<~v6!v!EQt^jat z3P68pKCq0ESftkmWrDYxX<@cfY5D_w00#IPn0OoqYhjj2-}o zd-uWDb@##iclUsS*FEt1R~j(mr-2ny(m>bgRB%i$6$Ib93l6Nf3u>O<0UAzsz~IN* zAj^W2ou4l!7IQUy#k^p5`ZKy0ccE10EfaZ zg9FN!f#Ru4litQlfERfY*s5Iwx6WJuZ`CeA_+)t5(AaJVqlUl0xe5L!0&<( zoKh45GDiSt(ZX63lk266Yi3u)$ zV1Om|3_!m^2fm7QFojM7`zom5;3_K6yg~uUR0@bClYw6e3DhqqfmyKupncFEU_Sn! zApbacYQV50)=@CRJOYY890tzI4g=X)U*OZ>13Gv60Q>ug zfTijo@R@!PSikcIYZiHf{tz$V-*^B7Z8`wVfm4^af<+x$fOyN~Cw4Pf)UpYj zTDu8cJM92S^&3I`vW;N6d;@5xSPxjH>p?1S9k~2rEm)_y7M$^01ESMcgB=sAz&+Ph z;PqvD5Y=i2X0EaWtAkepoeEo!Y-kHws5YP`a|HkjlYYxx%RycIG7#5b4HT@bfsxn> zv=vwax{4)8@K_4)ge5@p*J9vhwHWLXE&_wkEx=wy3vhVnLNG680XS7<4pNQG0q$=G z6z-aWRUIb4Xr&2wBAE}SKoos@P0Wl&u1+dX>SBWy(N{HUmT_O$P<_O5nP#60qGnZPMYY2$)6x z0qwD=fMquoNSO-2?$#8LR6Bvc)SAF!UB+=;`55k+HHzE*9l_t5j^Nr}!?;G|5S~{! zh#U3~;8sfp@DAU8{CIR9ezK?+KRVEZw=V9%&3(FY^)p@g{rpaRyt4zJFzLWE_Wr}? z2K~jY9<}5B4Q)6_vkkwz`42ATwBj?aw&2dC&G@>J-}v`Mzi~UyU-*WgCcOVaBkot* zfa5b7aMzVT@zNtd@QH};cw=TgF8xu57pT%|HCzSL0C2ZA^jVE=35m$Woi{} zzT_)DFIId{c>U`u7n(GiUO%wgPuJT8`fgDZ{hxe!xLlDL&X!f}84= z;1lcK<+;iZAac>b-o__4Qd@T@A3ai1AM#A16+0aeLT$h9{%W98Xk?L;wIXkO;0KCs zzdrcLsli>Nv=0>!SNgTfaE&9^vpF}^X66jZdM}R`~C{v`8@$o z?757OD_zFb^)KO{EHC2D4i|8)dpz!PJP!XNh{d%+&*M|$&*3*yV(|W~Xnf>N6rS<* zEN;+z2Dk5z#HUV+#N}G2@rNd-@bk+e@I@O=;%t|2oO~b**YFR;nVb+DMT7D6;X(NQ zbAkBBL^*!@&Ix?^V}R50aNP4PhWA#W__i7ZcWjd3L+w)hNS_23kBRZk)5Li0ED`=k zONhVI7vMf7eEgaP50A6r;u~x^c>HQMescp0_uIn6D;yd4Bu)W;y_<&b+DpZQ_fv3| z7a3PMM8ds%18}b+{aVUnSm4DJZA^~O4SkfRN9VT7~hJY?%#sj{@aY7{}q`YO8l_5EiT+;gKuXxj$%U#N3g9b!i)CR12`%i4K=?`q_cs=&xTOH<@S&JQsnzRAZtFhbLzhPCz zRoK&^FW8>S&sbdACoC$Y5?g=xBX-HY0!vjZ$5_8VV2!z@*v!}x>^J>A#@q4^d#GEC z-Te0k+fnoyyK?armdq-e{O@>)mCb#Db+i>=h57lIDk!yz$}dE@dOJo&&1sN9$}@gGO)4OhuHUkbWC9P0DGo*AIq#v!~AZfVg;PLSjEOW zSnRCZ*v#r=%r@l~rY1WR%BrqSE@!V|@7amim$g^0m}v=^Lir`k?9xSS z;P?d$w~EKI`eU)1`RB3C;peazw-_u=HyYdZ<1F?##o&Bm}W8x+&)lVQGDQf!}8f{m>e zW8R}ejFKzB7UO*E%0?bmG|s`UcU zOJ@6HQp@AmM2jD``qoj*-0ukXV%}j)tI7w{Id=#vaXpCH&G5$DUmU=UQBUle-F~d{ zp9l6dWiRG&)E!IIb;GWd@5XkAyJ8O=c42S(U9jkT&X}sd6SiJ|2WD8l9eWtE4I5m$ z73=EQj3p**!p6KDFg4YUSY^R_%tf#c6IiUp+^bh(KTfa0%pB}7-L92b{ta79f1eFz zF>M9boVg4;NV3LG=vZOiua{y?!X=pLg2kBDCkyOJ;6hAw#R5#{yBYTJv?;cEtqFFl z*%(`O-U!RvWQYy68(_aK=wp+HBdn@pE>?F*2aDaVjVW|$VaAs~5SI zcFsW+Th=lY!=qHN6RVXmyC2iBD`84lw)HeDnG;}Jq##8|_emj9?GsjUytuge! z>=E>_&oHW|FodqSHGqyd^`p}EUi8k{9`v+LH){I16QzqgP_o`XROeYcD)DJUBgb0N z{fRAT`Nn2+to|2Tk2j$_qee74_a~a+^8-CRQjg|ctV7FJ)uM5qt5G%nH*~Ff6{>sh z3wqc2Gy3mWCHhPL5sfmeK>uc!q2nGO(87Nu=&FRI_+c; zdf((Fs{FJN)!kcwR=4J%d*r#OSob;V{@^M4eR~c%zcvfi<~>25PtQbkt~^4`Y%zd-b5QhZlL?;UPooOuc97n z64CF)38>M*%c%OFi|7;S1yoHr9@W1Pi&iZ>kGf>WpzN*Ds8hvRwDRy7RI~jw`k(X^ zdV5*~Iwd9?on;h;zPl5GuD1(Dj}`=?Yj(=fqR#-GdK5={TT%2PA3?iDrRZpg1bwO| zMlIuosJpQMU7W&0Gp)I3PbM4vwVs7Wykww_&UEx&85O;^pMo0KkkIW%15l%1$I-jg zV`%H&qi7BH2rBRMMXMz~=XWW$i}Eh?_DL6Xp0YE#Eqn)RJlzq!7qSig_up2uQN9^HHQ|6ZqZ`q_q4j9CXdP7nj{diI89JxL3a#31iSEf?g34AeM!gXAR6lLzxEXqeeaSytgj8s7wcCZ_`F;Ia;WmwI+(( zP)DP5W~1H_s_5sjndmgG3fj^*0|lPb(c-t$&^K!pQAyfVw9Zfg?K?Ap6i$pGn>nKh z|Hm+L&}|6m%^yHEFY8CPB=#cxvwD!jNEae&?LeFl{6k8L+L5U?ZAg1!D{^vX3sNoq zjeKuxLgM!{B2%CJL`)X`KzgI<5oDwm$qcALZj^mPwymi`F5LKnT%Y+F@fB1eCAAeu z=eBa>P1*;h^Q}4M>-?!Bf;%yNQrAI^5*^>L^S(0@{OI0 zbd)6_PnX?9R-e6&Q2$*;_P8b@EvX5Joyujzo^lcS^C}+MYZiyFPMk+J*2N$%)k=vR}kvyNpNLaE3qS(0rv0r137zCOkneXN!Q?-l{ z#Y2Wj&J6>^?2jI@d4(>bCDB1H=FLGW6}6B;7Y*ci)NCZ@vno=gKWoypu7dR4oPij$ zC?Wkzry(Ki|B$yC3P^t6gp9U&T=q^jDyw@wEW0&6C^OkKAaj@Z$?RVA$V#Vn%k;N) z%JhT&$;w`|%T`ZqlkMN!DqDD>S(cXfOZI!TQTAzVgG?m(AuGwOmwoB3mBlWrk*c2U(*^scdlDds!h~EZdm2*H0@>!uJlTLsuI%`hXR<(Pj?6PXOIH6oQ)XcJST@rmLzW(%E>p?7FVpQwlT}-! z%G`YJ$dITM*}2DT-HA$OcuNO*m9OTJN&AGA#d)Tr%DO2X0M3>P%P-PB-WLdEZNj80_zigO) zOm;otsBE<8uuS!@kE~+OA=%FL-ZJU&1F}OA`(@qf99b_}88)WZJt&?rOzedI^UnO(xwv#nzt&}ab zvymSyNbB zuSI%P{9AhYbdxmVdV|#Z$q#ARyLxGCeXZ21yINX4?VEH|_p7vS>1Qc_W2H3DtwNf2 ztW3%mluBzu-b+W~ilrY?-bg*OUrEoseJKs8DwJBbkzbdQIy0Dp6Wk zmLUE7?UM9r;{~bF-#Dpz|9R=!i5O|s^l0f4^|MkN-AHMN@hPdF#Yt(Hb(r+HU5K=I zU66F`7P-{U2}pmrVp10mMC$J)mD>7>rP+Q$X;%PW`kl&^1~J*vS`Jg%%BM@yL{zD{ zlq_{e0;IOsap^nUPdfL+5vi`+S6U`NBwaTtBJv45AhikHFU^&ENXJjOOMAc`X(H|_ z9Y=RcwGd}%on(j9SF~Lk&EG0TIGd&VOb02Ox-kvr78ufSojBudUS4 zb%pfoj%Cuw%~sM)>y}FItXwR8V`U+|v~Ypc)YwdVbgqfiW45t$M9EO6YA@)+xEr|5viPxlMBQYpW#VO|t~a`Xw1kZj@NX z{gmj0e3xYM>mkC4^6Iic zau(r9)DLkaj%!&G8$E`ka)2sX@`Wr}^*BH>9DQ8EWBW<2?>Zt0UhFF|QaU7IHF!z* zd7cvMOZy~=!o8ALZf=t6OLt3bm3B#xAI=i#(;X7a^V=nH%&n44$IX%mV+V=$;Cjja z^0ks(w^vIBfxYD5ft3=TwT)!cwB?eb8Y{`z!=;kHVT&a(z7~?dHVY)<)6FEWYUfL~ zJT#IBL*_|*z4axdmbw!6DLRrvm0A*mWDQA-WVR&FMOAWb-b~5re={VZ`AU+AC`HM3 zzp0YU6;mWN3ghA@6(eG&>qFuw&VcxgL!WqyT8}ubwo_bk_n-KNq+M+7_(#mqY7tX@ z{1VT-*Ccs7})#63BtHk>JFXERQK8a0dd=%S%EE6jvl!^lb-ivdr zi^a(Uuf;9}MdF*`FT@#c1!9SAp1Ak>Gx5Td9I+ZJOPsbcQ#@rPLp-xEU0f1+U%Yi! znwX<;SM2d6McjVrmU#V)OJecz3*uQlvEl=n=fvLPXtDa5 zvtoSswD`ue2r-6+i&Zy-iua8LiTCEp#nUh#X0OM@XGdh>fTt31w?rhiTO|-%_i@Gb z8Eo-34pV&8iY~VOLlHkuCW%Lm`HQ=Zj)|{S9}!Q)`igbk4~d&+dW#vaJ;k?A>=R#J zyH~umcaQkSJy&ryX{R{Y*jcPp zts_27nXm9an5z4O=`5IP;`d)t!ZRM1Rob=v_6kog%iD|Dy*EC;>PCP9T%{`VU3Q&G7 zqNeAF%nxLV;>I3}@^5B{5}ngUD?9Fq>ri`s7B zBKa0n^x>ye^znpP6lp9Jjpy=27Cs!&^kJsxN<3ZEwvsC9s33__S^gr!na4ysQjUl$ zw)%?l>JLs<1H43<+Mc2h4?IL$T--&Brrjb}e3$6=To;ku!yTgaF55*z4O>JkWRvKU z)*ocx6mx(G?T8W;#TOx8lx=3`hZ-MAugqetCY$E#o z$VjB^G*2{AqbIt+o-6u0Ra-O^t0{W6NL^(2OjSg7ohjP$eTL{CM@h7Os-no_oPtQ# zd_oxecvSdy+pzG_rvc%9|32aUo^D}&V5cxlD;IuT^+9;;#e3lb*J9zZudjukenmoswnCx5 zAYX`&Js0i?eJZR{%NFX!X9{NqGg&!9xO!pHW2stba z_|HeURPHUjJ?<&2L-q-a2i=7%;T~ae*Dhfl(?xi@b%$_Cz;Gj3J&3YC>-Dq=R$_!KCUtlb3>z^mQ z#?%+8HO&>;9@G}9mum`dZC4j|KUEd>FPkaMNSYyBsHY^{8~LBmUO_=vAs81dXc-YK zKQtuhDeV_9H}wjxWpoKnnRf`R;@Sma)BgxANty-ztxba8-VK8J@4gE(*47E0-KiEB z>QxEs!#@jV415$s2b2pwR+b7%Hoq5O58euX&wDMH9`RD}qrX7FJDw+aR`yKrd|i$} znDRvMTl2ACHvUl1*>YcS(j!e!lY2+dWRW7c6`dq78o4fT^S>%sQ<@;CvAZN#nHVo{ zREia-vtk4>pU(>3ua6Yu-HZ@WRKf-CI3a?jFM)!r^(O>dZeW7o>4*R@Bm$cXp&-$Y zFDSgo5nLH#3Rd{h1!xgPAh#e1Hbfj3WV9a@)bBnlc$t1k;HT*=c*6G-6n*j#MA*3t zX2k6lZ0z4Du<~>ke9Ckb*lKSR>=bMk7*uW)++49<(0F!@p!To5AadtQLI3R)0$rtL zg6?CMg5dncf-(aO!AG&V;7p~7Kw+7&z$#*%K=YTL;DN(jf#Rh(0?l3xL6z%lfoIAr zLF5z_0p>kjV4k5U2vM0TxN>ZQ&w4t_AJiD;ucZ#~R~Gd0n{~SR9?TBD_+>laL+=m2 zh1JZrD{A7e(`(=lF~9RUFKYSMbgKE`w6FX{d7t=!8Xx)R{LA>hSta}*%J2B|eBSWY z?-%i(PZaV^-1GSkH=gsgdvf?mTeJA>=N|Lh8z1s-**@Uw1f}seeZ0drGfCm+vy=E* zdDr>#XI+ouB-N!mqI*@!!gh^I0#B@=KKu^PAib z@iXJS_#5l@^X29qe3a(KU!LyDztZQzf3enye;sV+uP)lcKRII)KW5hk{=TTS{PN0G ze8stT{4Q@Betg0*et*3sU)5v@zy6p7pOR$GPyJ=WPg!WpKSZ9#FHX_pcQ)(r%Pi*b zDP#@)(_}UNt6wwuC(V`lO2?J>>#qODU-Eql|Kq%I-pYd`yxsAGJd;m-ynE_Byq;a1 zysq%SygNmIc=}UXc-z+f;#r6qcrVkx^K{#4c?%a*^Zp(F%41*n#Jf{b!Anpn<2h|D z;oU=uc_oit^OD+L^6bnCdEj6kFDUvM&*5!0FLOMT*R=8xuauU~V_&<+EB<_!SFduL zm+EkfXCt`5qt_tW!{N7(|MQHDDs$x6?j8|r zTduqLE3U!T7u-a@d~OYR&i!~Lha2?l3HNW+Bd%tDI=55vKKJCZRBp}A+uUaIE$+Rb z8(hn)SGlC83EYF9FLGye#&Ovy=ebel(OkyHGh79)Q(Sj$IQL*g2-omtAotQU!2MW> za$mMdxvc-h+)8}`w`T>HTjIpx9yvni-V;)|k52_~h1ZX9yPh23E-dlk>iqQP7W8>? z%~kesw-~u|^=)=@)3)#A4thCp$LZU-`S=#@nrH_u>*ji{Z{`}V(i?j&waS(o*1DW~ zc-V^Dsj`&2-e3`T%hCnhsq0L+n2Rwt!+Re0Iz^A`BG%#F3(?}fKc~*Ud0mxj_dtak z_=mE7l4R-|$mUv6^>s&8>V)ZgI5HC*NB{Z8N3$^pb`hpp*QO}e+$=e);+i9Y<*(OnU=ns6LiOl^X$eF&V$Pq9N+WioY$vKIIY1( zoVTa}$4{Wk$)sy@ijHY=&Unw}Xt~YecsMF^cCT0B{AcqYM_@69b9LSrJ49ocy-;a@ z9XQ;>zWA?`O>g+i9{l`=y{WjFz4dt$Tj9Y^w(NR6`~JBa_LYz-wxjqnJC*X0{ocEb zo$OM=UcauG9l7*1`=Y^1_R*OI?1tgz?D>Ck*t*}Iu;0IV#9sR(o$a4=kL?t5m)!zV z*jt%NZ102D*-LjMva@V2vnPx%uoY&-vhxR`*{d7Ruo)jtv3+vF+0&Ck*o-rQ>_`b< z(~hBRgWCxV4S_B4RUp6MG|D=CO{=UbUKSY+%PeHNJwK@za_e zTeOsIo3e-Pp`ACM<=q@P%g6~H(p>R%!y@@|3tGo^3SkrVo$M_ z)52M88$(!rT7j(d%{VLY8N#wWD`7<+6S5xJ@mNta*sLWrbQZWrVMT!emaqFU)^F1z ztfjq&SeCE6Sgo=9S;t6wS#kDzSYb-LShioBSP8ebvkC=USl72Yur_M0XT|+k%}Tv* z$3jpW)(n?rtVvxxYk$)smi8o_JO(pmy>~Wd6==_6aewNv>eIAY(zNR9PiJ}SmTdO>t7$3L3iIXW7%(+$5y^#whtCEZFBROcJgP;-fh`T z_KZws%KL}R%V+L0ceF?i-)jEeXB7=L;0jMsX*8NLNBjC9hDNd^5j#@UQb3&nu8M~FV8KT=7j6*JJjPW)V#^K26 z48&TI;aN6?@sB-5-=;oH_e}4nTe$VmGdnuyQ_i;2XIQt=Ka~8U@1-};&nbVWN2k=# zUAI@!UpIWBkAVt$*Srt(n>p|3TApv{4&5*5OU@L~KQ7LtuX>e3KX~*Becea~{afq< z`pV^L^xf}n(--*PqUVfVr_YQ}q#G>1OmBG`Pv`rcr#~NxqQ8iaq=zn!pieIhr8{~B z(YJO0`gjOR7tNE>(=vqgYfe16dp(O@z^Bvy&Y;k%uK3eW*!aPL7)N+)rxs&SNv_KRc(>qi{v~*h~fbqKjiR z^@YQ>C6^gI{Syeb#a_Pd$VG)j$Vr=1OG zuU^fiJ>NWs#>-WwHLq5s=|5Jc&03~JdwypsZK?SL)jM&7x?OjW+8NzTJvg(A8W{YS zN*!yZ&KCWq^8YnZ<4E7B;`$n@u4ffhT>6Q6ep>~V`>d2Y%jO-Gbo(_G7`>!=p3kSY zD?g`h2HDj8y^pDjs1K<*b@!;sd+$Q9^F)avU; zs4?n3RAt~r-Sl@K)$Wixwe_tl)yLk2diJIx^@RFX>I%$(daZRGwQT=tYHs05D$QyI z^~(h-s)FJYY8z`IHTIh+b!@9Kb-{fD>MUJdYKD9cb#9wFb=^Kys&TF|^~C}us`;6z z)b0J_lm&-JD6d`(P|U4*DO=8WQs$4eQ*!-UDSB^zQC30}7a#Mu}$Lruda5 zQM#62r)-Y7LUHT4NHN|QN4fVnhB7?oEM>az6y?*WFv`)D!IacO1cG^G8lZEGNs`N<;_MP%I?cvl-PlNl*=CO6u$?ql;0{Y6ibpL zWkul@N}quPMJifH$t_<+DO|FW5)!ahGqP4h z7TKfb5qYm=I#~ltBS)9sCYKxDB9}3*lh5W}AOUkjm4y9^Vg)| zfET2)v}G+xbN(t)(E(eM{n=$C z+UupH!($dCt(E4a2-(1i= zH?ZLV|A+kn%}w0_OLaQ}mhWr}=*OA^@bt!j*A3qT%IDMuTz0Gqu#kKT5Z);d2&yg# z@R(T~(6sJVfIXuyz&Rl|z^EiA;PFUiz|5r?0cHp92aJW^4Y-h%9MJpgMu6s=tN+8$ zo&Pi8{{a9`$(3@=HusooZiZoIW*g?1-KX7?5FtkwAJHwjN}@wjlp{$xP(&dr5hX-L z5h-Wn`hNd`_v?q(^9><_!coCf%M3bjsL{y$uJJ7KLQCk zQ>+`J(+&=a`UMC{Q&$UNBX)-T;VOpsrELFy5Sb86`?_>=YDMa)vLqEd%t^iJGt#NV zpHfP}cj@7VuhQM0KTFlO3`$cBKS-;+dZopZw^GKjPHAUJn{?}o7U|m9GijY{gA{K3 zNE(Z+mF^c;OP!8ZNS|CQlWuuhB2^eFlJ=}zmhwTDq!o@Aqz&Y3>A9#3sZsiA>4DPY z(yW%F((sWasod&8sT7zXJ!T&(-5n4mRSFH4MjzcR%`X&7Qy=i9Hg7r7D-#UqYZ6XDQ(l0Y>lH*%fBvYD;5)Ig_WF7fSa)&r6 z(H4zM{P%y6ppOqrmhuK9`^x$xcOJi!l)ZW_*)!N7nVNbbv0H1FAe5gB}>cu-+4r{*hFP z{B*M9-`_)$yW0{aW-9w7V(onrp-F@UVizj8;U%qBE)@;g0W+@PEonOnz^ZRLyUS|NUJRE3Ew$f7+ZE@7wlA+$J|I{;D`3ex^Jo z7OISjTh)fdQyL$|?=|0xkAk|zv*0eVv39#yTc=grtJ5S7(rplD>OK-@>(+{yy4B(l zoeHs~PMO$EyF{$4RV2O+x-9;unJ?A^oEI;sWr_1t&Wcx+Pl=&Q$HXe~DdMNwj)?8H z91w@B?HBWx_ldO^BE*+|hl+=OO2l8r1>*8it{5@M6rb#)iVNNbiK9FG#Y!zc;yn#m z@u>%B@!l$=7*L83Ctrh$D=*rLuVz|`X(!FZUCB_fLV|%%A@D@Ha5&_oFdUyId}92cuzTBK;q9*pLf__C;hk$y!k(mXVIz09Fv?Xd{0ig? zbr;w|?RRwHP$gL?ITI+nyPF_<=7krY*T)EL{<#a!_PGe}RyztWrrQazyRC$^p60?y zZDZlL1p{I68y%r(8Aup)R6}@}qaqB1?+}jdkQbuIwh9Fe8v@+@jRC&<#C z5uBQx6yV#(1#MTq2zJE}3$*+P1V15tg8!Df1p}R3g5{!i!BBjw;J9CtU|zpLU^@R$ zpx<_1Fj#O`z>6vu+`yCy?gDNIQhr<&0G|{HqR-|DviLcIc)N1~gRN%-=X#F|o|haI z)W;_Y4tgIHtOMf(_#e>%>chPP)02AyPZ?5yj;T<9TI33hTbY7)IaC2w6eKug>n})H z_ZA>Jy#!D5Jp@X--2^&tXTj{Iy&$8@S}>Cj6KIB*2)5W83hu4x3e4KU0!c1FAmytH zEMUrlx_Nnl{L^g$y;Ga~74j;-Q0FgSW_*rsT{XiuNc_p~M}Oy26~6M%cMtO~=MV71 zgnj%~vv+*z?=F5!T|1wa)XHDOHu1xi8u(YcAM!8e-RCoc@A5wxmh+8&+~PY{6!R5h zuJTKq3i#XqUEo_j&E|trGx+WJ(|okzasH966#jpiNBBOJ1N=Tf93S>!A0K-uf^WnP z<+tfd_zs`>eDO67pDkqYH4Q2Ji(dlyBi9N1Um`re$q>Wmd~xSLE^^_27C7=d^zHbE zhAsKCg=Tyk4wP>PHsG)HY4cCz0{KHEb^hO-yZ9eoDe{v~Zs-5R%JB8Jtn)M*mU-_J z7kF&=AKs0bDPHaEAG~zwH=en{2rqr$6R$S6pLZj$hsTzG!+YP_yf0nlymQA&c{1)dc*yyyJhwXqye*ZhB6C8{987wnC9?Z)55*&{n4rWb% z4BmF>eQ+GUJGgwdGx*Mxw%~n)mf*F8r@=u*PlEUO*98-n?gjrTsto4)-wr;%SQ4Ch zttgm6xEwq*cQM%Na&9mVpBZd4b0)Yg??kX8IyE@-M^dmT^I)(MB0l)e=jh;-<9mZu ztoH;@^-6*>4+(<*LAb$IZH!=(NJ{XyIx#r%5h1vqhY#-FiV3bPbq^*5xCGb#fd@~Y zw+$Y5u?)UBWEyOhVibHBsvn&7QY$zzOfy(bSuOZTm2z+uNg=pwZd-8J`AzPu(<;~V z!xEQyV2-~vgfxwoc{ zao10zaCME2aJM!la;us9xu$bbT*=vR?jF|cTRKH7tUY7FlTY@Bd7lO zdkz8I&AE1`lhf$l#<}t4Ifo>C%6U2am?N9^fTIMs$N5-N!P)0j#(DkX24|jrjq`Q9 zfRi7e#{q56;qcC9aP~q^bFekXINv-|IDT&ra}MzmIWbeQ9Q%V&oF{VO9HsLi9H^m) zBU=^BsdQs;^xLQ$7Bz^&8SM|g7{E@3$8sVI)qPFId$z9Xm4$c{s==x37h@>CXM~dgv3s`>Cc`v_F-F;c(LuF9_+2fuIxgH z6MOxt9ot;bimh8{#vTAe*}^=1_FWBac3YMvyKJW#n|el>{ZdYWy)|tcTVZp9_2JMz zR@BlW>ut;|Yh`+x^(%COb^Gf#mJM%&mGt2g>jJr-mC*T)1;M{&oqyWSdWUFbeW-rM zx&^Cec@)>NinME3ojH}PCZ*e~q|_3Y?7wR)dQ2f}-$WjZBFJHF^kuN(0#38;KR?E* zcS&JoR2^o)j1yVsF2%AMc15vj)52Ks%Tm^sNFj^%h0BVeGg+(-3QG}1WTjOTSZz=| z>wTUlt6b5Y^?#d{RX5|nniSfwzW2abl{gcYM;(NfZ>Gzt&j+z?D{8QWhjy{P{8VIF za<{Y4om*IX$TjARJAawZ+Vjkq(=*J3d5WUh7=G4~)YGp`n3WM18w%M3ek zj=BEzG?N>6oO$eF3Nyj*2-6`wk@jSBZ_KoHhcF*r*I_EigP6v9 z)tO4~b~5Xo6q(KivdqI9n~ZevDnt5miJ@pQ$4Jch#i;%>!KkHXzFG0yy`VD$TxF{VpzFuLTgF%m-y z7{6X#U|5@GGhB|JW$YR|$*A&5V}P$GGl-i98AM(@L#sZTQ3c-1*p(2Cg(v~4(XvsKm*p%_4&yexb zR*!M@G??M}O@mS8uEO|!L5VRrvz_tKM}|QvTBFx4|D}H;&C`d=X6VIRe$pLS~*LYAshbZRJmxHtEh1F;2in6EZSY{gC_f9e$ync{=KPaBAT^vmhScsq#yhG{g z`C|I5NgjPWl1;ZeOQV|(2ho36`_to+z3E+VF!VqADEdg03;ohlINe~EEj^lNLC>f# zp~tU6=rBKBdRab*KL1^vuIRLjK9#CSztk;DSJ&S{XGE;hc0XF8d2OGgO_G1ng0D`{ z3Vwd0-Enh||fsfij-s1GO)sL!&i zsd?SyR9BT!>g~W{>UjDU>aUJ`>T~(?R4G1_`Y!bhRk`UnRee2$`rY*i^>{)eb*?6s zYVkXgYG)Znl?jzni;4x*9iKT=FD(YuheoD?G6Sd&I((=GvREqJ!-L8`;7WznI8t9s z*-~vyEU6)UQ)=i%Ln@+Mm)ffUrn+M^sIdokQRD6@Qn8b=)Dg%QsxNDmlAO6jNqIR- z30j|~Ov5KA^zd(#Gew^%8T|tko^l^$1=CHDBz96RRlKBJ`O-{@1U6EX{2x)`{<}}9 zxL-x7{&AafROcqeAgG9PCbf{#@*t1WK9Nl+)XAW@5l>M{Q_?7-HOZ78V+Seqz<5fq zZ#3oA!3c_6`EJUtArWOvnMXN^Vp0A^QYnsCi4^o30tK{zqcm81QfzogO4M0r%Heu@ z3jL=QWesdjiSdC_?#Js>T5f1jirxVzew!+k=TyiEoIOTXZyX_KO?)B`Y4np9J>HQA!@9^>=iA6?&z_Tola1sgjmP9Ys9G{4 z^e*{k)*bT7%-zqV^zH%D{@M2=3-xYNl|v^{eV1c&rmmO)B{kV(Ih0VHRp4=Etli)5F9B7H4&AxWOYNi{<@ zq<2d&QlqK~>3{`8E_pD>|3ZJzpYnG>As^h?m}F5pNBq6Vt{|5bb^+B~~mSAuh`tAOd#mCvIv) z5ufOW5pgC`;#F$_vCWA?Y(~+EXYeGVQJ_CDo#st!;bMrLVs~P37=q{*?Lcf!uqG-b znG^NXpv3K`^@;W8w1}AV0OG|Ghky%DMRAA@Vw7`4+rvvtUJs9}=OI)D$mwkbe zqv3(lk&r;E&%(ggA#R}cAR{njfE*b0At2DF&nIxU$15n zh6n7g4GCz!Ee!Z|l^ZaY%Lu4AMGn9v1q4*Z_ykOZcm>R}Q32h7E&)jxc)+ToO@O~S zEFeP1I3ReJL4bjbc0kQMAOQ4TB_QCVQULYU_5jO*z14F_>Dgg(BZ#Lw$=ae{8RsyuaEtQ-_`oJH{JC=e)o>Q z`qi8Mv1g0?iw_n0m+Z;&Ph@2K>*CJ(=h&b0AJ9+rpWBh-KeU|apFbY!Z_*R#f9&ZV z|Jpke|GGTB|LIh=zjYMNzl0s+KZW!2-)@KZ|E=xmU$GtO@Ak*Zzu=Rde`l+u|C=gP z|KfZ@f8SJH|E36#zY<;D-^635zq*-%|2vg!{-Wh|zn0NuzrXGCe(TjUe(&=q{gP6~ z{FXyU{P01a{G`r(el)#qKagyvU-{1$eroTU{0I;0{is*!{A|!<@CzoE`c=V; z{oaAE__eKH^gH)8$IrYi!!Nh|l;69|G{4dP$$rn72mKO|aeiz1`~0X|!~K%RrG5w7 z1%AHe9KVSSx*sQ+<9&38HAv+n_;0pG5_y}t8ZZ+w4U z@9=$`(CW+ff9Ctz;EAusLanb=`(0nH%XfSS_TBW|i!Ji)0T%l1_<6w>+?eINoSE)h zE8rh6!-rVZ4oRq$bR_dkpF;U#st{mZs(Vn+)(Rf~feK{8sc$Zj|-C zlfLP5oBhux$!yUFy7=4Y>hqsI)0yKwyLh8M+bjlsx|aHU!dkk01~NN+^nzddIGH#5 z7%tTNj6SRLiA%rd^NCU6qiIy?WBlv7kKCinJ`JfCeY^v6d`dtWKK)-#`V5w*`aFnF z@)4sC_?K6yY*pZ7y5KHrO#d|vO_?sL*+iw|(&pZCGX zi{91Af4m#8Q{IIN-@Sugk9vR19`tr(^m~VBzw-|N-06)ge(60M((D}vYw&(GUFW@c z_n!AcY=w8bQ>l0K@^$ZDPcD0VBwh5DpmV%=G8x`hEhoL-9!vH1_D=H7kw4&lzdhEw z>~y4ejNcw_l^qiA)J~pvM>@-U+@I>*zk}#q*y-!-l#cbj;pgG~L($cHqaE%&b<)PW z!W-u8wcXgevPIu}`lyz-j3>Z*a($O~X}zMi+d*0H>&~0_;rSK(O!Wf(edKR^ro~UZ z!H+R~+Kmx>gWwasQ>PDK_2DgkckV0vJn;pduGEA-`{D^cKji`bAhH^7w{!m86R}c9={cDg+IM&ivNDk5D(s?i-+ig z@aw&5_`9c-@d&g${``Ur{^jj8+*|%%T!qFQPS8G$`*Gw44sZVzcW`_NmwM>~P8isO z1IWC_U9D}yt%p9xIp{Rv+}}LJ=^m}Y^}s7}yziyBr}@RWMZYUJne~gfZ&f+CLSY8Z zT>TU-y(Jab8kdCYF*$&H*dL3FIT?wQaoL00Jt4*w=ksv)eOb7|WeSc}7Kr=F^u=n;%*oo<3tkR{ASQ&gT_RXKy*x1YM*eRbDEONdPE57;& z%O~8&+AmaM2dLq56K+Sv@Or0^7W0+)ux&Lm;uFCM@qdG5z@ zCnK?{IeV~|-6YucuRN@CItz<~Q?anYK{z5Z zHVFX5{(7Q^g^R#gvb+WsSGg0bLRG+4FK@+~UtRY~z%F|gPRw~-%=qOM<}l%<@!_ji z?%`ptNrR7Gpw=EQojtF;mUgszmEC>rWlwGN%36Bp)pn`I>%DuW*Q1eAul=dTUfWHs zcty2c^r{NW@oL?X;Z;+4(kme-)k}T$h}ZF)M6WmSSg+sj_j-Mg5A}Kg6nk+V277&A zGQBL9$zF{7056t{kC**NjMtY$cdsxI!mF*$-fNw1<)yS}>NS&V=ylsc*USAK(Cg+t zHLveGmAy8~<-BGHGF}gUtYWCgmoV){vlz{$DU2)cJI3kXC`SI`Am$#t9|Q01#+=>T ziD^)HiD@lq!rbtz$8d%oU?vi)F+`1WOnTK#Oc9|7b9Sr%6ZGE&%#>CZhF5zAQ${?F zc{TALrX}?d=Dcn^235BY(-;(v0ZvLW_*4NVP=|xDs-anX9WlehHkiZlFwAddV~l%=K1PJp!ti=DF!o`)FvFV)7*XCfOrzC?=j`)k&o$P( z=jhBY&%$F9p0?WGJPYp*dw#}!^jsO}@%$C_+Vj!2cF*Aa=bj&}8a*wWA9^zBHJ;qb z3Qt5*spphxv1ek*WzQkRMNe>Nwx>1!tf%(u3D1$Vqn<~AM?7cC5;h$>Iu+U0$(|jq~KBX9aNcjr-a{fhho^cL3 zy!tE}=zbDi*me}XLOFuA`<#GAhsB`H7b4J;$-B{MiX!wafT4=6H`x ze6$C%Biv&-AjD&Tx4@&F%JEq0r+I9!gFHrt2p*RNI1ihz9v+vat{&gM!#!lfY&275%zs(aju-RV(3FYj?DZmUP^;u=ab;V&wCX%_W8VHySe`yFMF z_yx7??;xrvp&!Lq>PEH2ccRo6U!a`hnov&jPf$B!AE284+(iZKyMwCvRf3v}xQ5#K z^AbvC&w13_@pGs|$!XNeXc~&aPez>`Jb=2w+K)Qf7l{g>>_JVv5u>F3Jk-NBCTa{z zK}|giK)pu#piV!;pbX&dsLU#7)F+rdYNNywwQgXF`cMEtozc`mfwMGGDN3rSmSak& z(GA)EUkGoy-=14>r|(^G9~_@?cNa{$Cw~0qofU|$y1Vgwp*uA^&pr4{mb)h_-F@TDarb_FD-Kl?p?y?bT?%AJrxG$6C+}&Pmac8=$B1z?oNT~iFjvT?i=d6rR( zbZ)zhtVdi#>Xv0Anc%a?s8c79qU98%&7Q-^4e<33O1`&|Vr&wgRl?Sq{zy*0p0gl|AV2xB6GehQ*jga$Cb&)n!ASC{h8WJI= zjNHCo4taNE3(_%Q)$RPFMYngxf7~Xse!2~~PCJ z+TxZm-RLG@K5|ojUgLJbs?zOWUa6a#OtBj?;<8&%U!EHjo$c0JmhL7{KjGGPIK@qA z{E(XkG2YGe;Xb!@gK)Qdr=)J4vwXL5Hrs8!nd%0#Ai4o_eBI_&yxeY!P;RIWgj=PZ zgWJkQD>uVUQ#X^{hHl$m>$o+;fo_}vRkycWcDO-8x4Q+t-gITa|GBzfT5#Rim~p)< zopc4g`sNyG``NYV{72X7l^)kZ{%coBOPi~L`E%FPXB%9<|EY5|px<+KdR*>mu6N6I zDW%A@c&xw`=6k{QTzRJJn_XvIr(=$}j=xWKZ9p7!jVjphy0I4N8ZOx5TGK3c{Q%{; z4jgB?KKem+-A@Q`RVw#({ZAR=+8v2>U4P@`s$gg5`a8?Q_5Q4}D~)2{`mRRH)lviC zD&D`#HKA9*H59(h)iHP7<@4NMm)(>(msj_uU6j;*xR^(Oae=-abXm3Tce#7E+XXZA z%H=NMh0AK`GZ(1b6Bn4Y)@8@@Dwj@!+b*F=H(b7ay5i#ElJBzjLXJz)+*y~1pp!1n z6-Qk@D;#l=h9tPWY>sx3(~oe09tv^M>le5z+H+j)WYAoYlSG$t9Kq%9HLQ!_D$2#2 z;o`FMo`cJq9o8<9yUkpFHW|9$baY(~#{*rm-m1E!!gjcj)3&>83~eG#IsZfa$y`7< zPtG9NUXuuR;Wq?gVHhzN@DY)Ivj?$tqYJ@cv>{GbH6t#{H6V`h>k!1cYQ)mca>S94 zn~2edYY0O?0m3ulJOcIn90H_u8u4~t8Y1Ln5@JC20K#H_EP~y!7qQzQ6hV#`A+$TW zh-L@_flnYIN;~}!KOlI7Tml-gwbK4P3M0;u+yQ5~s$S=$EpMEADDBR2 zH=jF$|28-)5FR@B7u<7Boi2CY>2b?BA+yN2akRksoBajnAE}wn9lihGPB%X042w^8 zE`4#pc`IQIAIw)sP+q#CFYe5*$12gnOIjq@bPbR4zT>WPLZ*>DPHIrw&7g z)A0zB6Xb!PQ{e{AY0(GmWRvacHML5=Wg*bxLgpO=F$MMJ|nq%@X(NSnfa5N0TI<}Od9C6bK$D6hej^AUg z9Oddv9pzUbjz5q(j-|<(jy}yQj&0kN98JAt9e1DFfS-7^3_q?s4-X;!f*WW3fVaN; z0>^3$!Ha4A@UIuT;W8gy!DYZN;9pqJ;6;}n!#zLUhc{_g!6Do-xUjGoesu6M{HV@F zxR{#_H!4hrw|+Vf$7`p+Z?O--C-URqN*|-(%Ahd#Z@L6tbDjsM_cGxh)hKXxQUE;V zoHzVtmnZy=5)z*2>jbBtu!XO-z~HGe#_&lGeYpJ*Fr58Z9WGi@hWo+g;ecov_|uA2 z2j9s>hgy?A4x6H%4pvvk99%zrb}$7FI4qKT9ZE7@JHR{I9B#-ycUV9-IG7%;b8xAv zcCehiAsg2nUt& z5Qn{E0*7)vjzcGd=FpW%bf|3ib%>V1Isn{I4*9VNhmAY-4)|}D4tsS>9pb4F2SK{F zgGCF#q5t152Z@8CLr>T?2gB>@_LPr*?WHPn_Dt_-d&{Kn_M`Vl?Gt}~vi}X~v-f4b zwNK0Fu)o^UVqdt@Xn)A|k-b|;js0Ljg*~tPmVNW~>-KWULVN4z3-(SoGwt<1owlFc zb8`}3)>(~c>)3kr7scNs`t7MNkBx_Hu*s$~Zyle+loww`6 z{IV18|6w;+^2N@%f6y*gzTYm}rQ0q$?3Gq1`rA$`aRZ z)tF&-l1j2$IO=DItH#+SeD<(AqwH#z;s&>4@3FQ6-{&+G^f*EBlvi;_)B0Z|{AvRs1|?YogR|YwX-@D<^(s+mX>~ z8~ymH?aJ6ATdC@O+xy5$+i$x|ZU1IpxBb;nX#3*F1=|$$EL(ll8QW{2$85LeB-{En z9I%b~9&39Nx{B?a4n^D7v)gQ|v^H$^W0q}n!scvBv!-n{AAPsk zJu+%jAU9}p&$`d1g7((t^x+O0zv32~nf6AT_}>q0Ml@?|tlcYYc;Z_&F{g@b_EZ(v zVBep&+4Aq4&2@v*HYWHqn~d-zn~#}^HgXSQY(SqPY?L=cY{sENn<8J14LXu$^E{hq zV_xTL6Z6T-=IVyKO_dSCrr6uw=3uy`jpI2Jo8Ef{Hncu1naArU zb=D^^)z&lOJJxQ;O02_fUbRkonQtBUBgZ;OA;Ve)cG9|raMap0{IGS&nRx5@JNv9n zJHxC|Qxa>J9eit$CCmDgAI17;`2R=QXS}Ts-}bbA)9z-yeZtY&P~O%WVhXdC#Y3&T zBzo2dQbE=V*VU|(p6#&i8{TfMzP4!v*Zyba>at*E#F(-Avwy;>IQy%W>)j!%+OB>p zji23C4Eav0WaAfB>6m9$hxw1K$cOJ+DdksMmDQG7S-iV$mHn&GYFIJPYNu(Im7&)e zD{cNUtG@@6tsY-EU?sd4YctlnoSSjFAhYPHg`W+@q7vb?wS z$8ua{%5vR&+;SB&VmZtiuq@f%Ye_!)+VX2jn^vT1-q`v#{8_WI<6sZy_)_XF+v2Wntx?YB9w-Vv!l0 zV4DdW#RpqVgdgXU?IQN$D&CCV<9v_T8uk8S&)2fEv~a+ z76ai>i>1SQ7At2#7GJNZS=3bRun2v&-C|q!ChXYg3T*n%Jj_jI1{S3@0Xt>*6?V#g z2(}N?4?~i>VKc&4u#?fPF!_|Hu)Ud&V2`fWzusC7_EH*d<#taw0pa+MQrO`)px9zrtYMzoD=zYkDxUA{aKMsSev~qzrp+BL{;bx4>9F|IFj43+4%e z8FN9zgt=YfSM%?wL*~cM^_wdebeqTBd}aQ!y48HM{;9b^+aq(+o*HwF;R^GKAGgeJ z%oUk?uNRoVmA_z)R?jrQsC(MH&os^apIwrc^i0n*&)hLgE$g{}GPT9|oKBh*~;rJi~28<6=*znZ!C$PV+v zKen4+{Jm*b@OQ=R_~yJBLw?3gRb|4g8u-=BMSsYw%%tCJ)2iDH<@m}>f^0R5_Ihd- zLU?3`A=Q{|XI7Y1^KO}8rA20q;RR*}G3U+pB%U+7lyu6hCN0(M{^=uTg_#Lv;TNLK z3=6}}nu?@mKDYR0b>%EG<$Dw}zq$akef8dENll(+u`k@rf?heA0p8k}HT9aC(LWlQ zy&KXsbN&J}OC47=tD96Z>-i;X);GIh+Pt`IdSPYGl)OG|y134Cunx^R8Gj)WNo4zx;Y05CUX4+zQ$rNmnYf87uFg02+jX%5!f6ooT0?Zz3J2Hv$DYxVNGy*?XHQ(|g^-+xxGHzW1!jXZ)1O zN&L8p7JkGe7dK$CgzYuKU|*Xgc(s}2V46+xJ?l+QpdXmCVJMBXrAx?M4O z=W@}+5s__@;*@Uk0Dj!0$NoQ)kG2O*+O7AS6j?@^h+v^6JIq8TSB<$Q+D3GfWP>1+ zE?t7jHf^j46ofLd0w7HE)$C1Hc3PS=Dw&vs%Nv+%k<~Iu*`i@Gv8HU|wjyT|x46Y5 zfA*j8tzQeqmnUb8kBm?+qwy108{>8dbK@pUBjfAFy2g=u zKw~4Is&Vr!C1ZlTtZ~EUIuyM87s~%L3q3b61uY#Nhn9aFf#!D)K=-xxLhYMgLx&!= zL1XSVL;u{WhqA9efL2_%3!ON78>({b1{8Am3REZdB6LewHuS9^9eRp!9BLW(AM`Qy zAk@xnKQzZK5;|-e3f0gPLE#!)sD~mQ>aa+-=mR{L1LnmR6%j3ynru6Az83L-&kiy336&wcIq)d3ep}^qosaU#{dDL9;WA z$j43^g(V&}+8ch@h|P;Pav<$9TJ#DtDt3|>AHF*3D{W>Wx0iLtwkCL{_*IQmwjbni98r-&uPLGwR` z-?V-jeoz`Se6Tuf_}}ygL&xEFhP|&l4f#)B81_{?GjzW8*f1^gzTuPqDh-GCl^RY9 zt{aXA6&k)mUob4N%`~JNoHktBm1cNuTUR*?rC@o=VoXCcQm|ZXk!RgH8)JyFf@ENtz)?GNz)L}p<)PmsAvej zxy^7jXC3k?BqaMj$1|1CSN9UWnUf7i9PJOUQo%O^~#gPaym6 z*Fu7dsvw|@GRUig#gOpbmm!OkJjh;j7UZqv8Hhgk7=$gG3`zNu2+19af#kGDK$2=h zAhaR@1ay`Sd6`Ish$MlK38D{#>xO~Un;;=_YEBT3H5-WNhdCss#|RSHs0(3~0U;K- zs*tH9B}o1rS%^J#!=MheY+!CaXK+G&+Ms)F+(7=vh=Iks0Rz|iUIV9_uMPAv+YDw8 zG#k{2>kWhf4-8hE?i!>R+%}j~xM4t^WfY ziX3Zj&TX%O2Xwc=;0~cd$O7A7aENMvdJ$-lQR!pQaRFm6mxMG>*zIJXM6~_?yD)=3 zJ*dIe?Ro~ZUqFMU_o@cR8L^+Vwd%|apv?LFw^=$=HK;MDx>;AO9T22 z!@c@jTVLxp-D%Sg&u-S=dZ1qa1pk5lGVZQE!}7L%vDyv&!M~UFWj^QW16s560e8;m z%VZtXABs=bzrj7A&%(s&|1;gIe@1z?zTBKZKl%e(zpa6)uUs6ck2>k2&)bX94 zCC*Ozemb`L`deW7qhm(;Ssl9iR#ia#x*Sz~n?xo3T&}GCcl3sysqwNNRbftV-}IDT zV)wXSRPBf!Ie$P8dZbtHtKhZXIc%FA%&b|jTB%;obf#AC^t&p(Pqk%wTKUC#_`{d= z1pGX`P)wFyu<;o^Px)hdYCr$ahIb|ECEbnD1LZ{M6~%?<0ht25L#}MSE*+}g&W!*) zw^46B#&b_SVTqd_>x848#~vF!bw6{xUP~jrw4J(ohQBrSD!Wzm%xV<%GIO`-jmNF) zS}^|V1|w#5lfYBDXII8_Pk;KX8(05PH}G;4(3 z)D3JZ)xA`7UAH%-P%P=y=~{1)b<>9Zb=w;7x+{ffU7f?Ox|STcF3iTOV z*2XC4x{|i)R@$uTsO((Q5l;Qqx!y6U^S1Px&adOcI{zdebQUr1bVdw1bsnv^>ZA-l z)j>Rdq%)LPqZ1QXp|eQ7r4wpfq|>fkpriFOSBKS>p>wk2q)y4vqdL|6!#Wknc%6&j zeLB&LdvsiT#5%K8!8-Zr3>}+2B%S*>KOHkeoKE^WO6T(cLI+Z3uS3qU)QO2Q(K+g8 zpp#;%r4zMPLnq*~vX0ghIi0=>TXa%l{%Pw3E@Zax>y)&wX3A<;?Ag$|jak;p)1K3co1fCcbd76m zl#FOqBn@a07`<8_Y+h^8*i)tT$+Jvr1zfBpKU=6J*Kt8> zu_#mP{ejb3C8RVhsdQ7d3^_+2abXWKL|&6u)n$;^<^_;XPbLU;^EAlhKpJSnFA3D4mk2uXCmIBA2?zCFkb@HR zfw3ed;Jkq>aQE+Z&90|^HI2{BYDV#zYv`1)6J>=QWd#oYS23JEh6eO4Ypg zz5$%EZwCZ#Gy{w}>j9rGJ^-AM-UXQ0-v&HdF9vwLx(s-jmj{4KvH+>JX8?VxX#m~! zBmn(51Gr%o0eHA91w3u#10H9w0Hwhcz$xgFl|BuzNWhZa+q*{6Vw{e zIb#Z7Jb?guk81<)WB}lf?k>Q#33))!eHlPz@~TD)VNv5J;J3#1(FqMe`Bx2K!jQ&J zOuxq89o-u5`#UslU2oBd*xRUKf_SLWBXdtj>FXF0-)-*0eb4RA)xx=4OR6s5lZR+xU72azjZbF z=YQ3rPtU5oCQYe9z~gFrMn0>R-1?~2AK9a}=GdhMUVEViYk8(-bLO!cjC@~B3tXwT z@%fh8$D2iJrF#q1BH-uMO#Wr4^){VUOFVg0O_g|9?J6K%&1f)6t?>FDHN`z*wY@gM zYOM=&HTC)+HO5hb+BqMrTEkA1+DNan+VUkkH94V$nxd((+SX}3wLkYjYVQ-()GARs z)Q)W1uIAaXq5ALKvg&QxoGMX!T6JP%T=l@s5!H?G0o8+cy{bPKyHrW_FI6j2np8LN zPgL3-%{N;5O(S_6|&x{X=jSjGG`w}csTKbLuFdpc9fm(7fjOJufU zc{07exG>|7*)gG1OD1fvmYIlI%?v!N!?eg&V=l2+&iqPS!tA-eh{-7vXKFi%Fo);T znK}1}OqrVBj6+_N3_Y38jE>>A43%9k8QVghFn%fCXSlxWXY6U~WsJpMWT7Aj1_f!1^749=hD|PWslQBXp|HetOKrZu*V(2D*I0HhO|)6}{_oG5zPE zT)I|VIz32@O)vQfzEZX=ntnMdl>R`;pZ?;l2mMux3w=1ujy|x=l78lu34PaY1A0b~ z4&8N$8hy!gMfzx?9DT3vBD$}%I9>R$Fuh|tjqc__q<^0Oo0fI&8%=1-Ct8KeTN+dB zB`u@>G3{g7J(`PMKdqh7OQZK*pm`MZ(3&hdX(Qw#G?@$gXik~CX&mDQS`%g)?aZl4 z+C6qL?Ui0G?c+Bt?bFdT+FMov?Xh|^?dr!6THAgYxJ*ZKoaorSY(&BQojysaH^%e7IckF~|8yPg(z*PdxI`5ajNwaSPO9-C? za!!v5JcC~d=&X7ykTp3daP8-rU^X0!V>7pi4v$<8zK;d^%GD#MU?r z$5tTxi@AX0L1TeSk*fqE6}1IuBPs$rb}SRn@{tudy--rX?A}~~3sph_Ya9dw4l)P= zi?05pX6AgQzAzc1uEC5_D^5PAK23f^U8Xfi4IjHn-M#NBbtv>al`h{+)qZxIy0P{U zHOZ}&S~7PRwfg*(dfHIcB+RL!w~eUvrTSD`D=q3bvI=$ESq17!WHI%Y-a=}?gcx<~Ad{LB zNu_>Qz*Cc+|De3Do1l2Rf23TU`-Y-+YnW1A^pNt-{4T|WaFbHeeTDKU^&CY``xGT$ z>=>o4^&sVTa0`VX+eA@$R7-KL-a<)mDyNh(3n@)kvMB9Y2<5b43gyCg@O7g{BPeHL zgD4#p zOTM+Zi){SxD0$!J1LQdld&!CPo#g%t+sVtho5_fN8TtBnK3U>GCfO?tCfCa)lZPI~ zlIK*1lh-*0k`o2J$qg4>$rrc|S zvK@Us+46!Yc@0O9tfEIIFZhBXQhR<9l z?O|Ucg=wE5DSSLZdb+2b1ioQ}v`%sl>B~SPX?tl6$=GreX&7Hh;&kPa#FH{e`&1#4 z!J9<>$l=FzpJ#^}`~+A>{I>@zh||F-2M zHRmOy0)`an=|yppCRc=%p+_fO|4bx_?fXsK7&J+&mikN_7<@})l)ogJtbamGAlxVJ z=;|l-CiW7)s9Yq@d)-6SY3w9Ax*s8i&)HAp^zJ5>XEzY**K8y1{Z>glbg-D%9+pcy zDw|F`Jd{Rktx6y^+C&qp$f3ln9zSAiiU-k6-G#Vj)Rwq-rv(w~X+nG`WA+0`aW%F9MtNjiBB=MtG4lN~ltOK`?&( zi14;ykWk@vi=ZQVjWBriJRvc&n;>k^LD(~Xh_HHpE8!;i#v~u9dcwQA)r6$d3c@e* zB0@Sghd}7$5YppP3BMFsgrwm}!uxH(1Yaj#!Y#Tx!RWjbp%t*zb)9k9X-4 z4864ob@NmR-)|@ooN^ZvS_~Hwet#1q*dJsP>O-l7cQSZ_&ix;FqfKI!d{Zrcv*#9k zr&u}ues2N(TUHi+&T0g&Jduny+aHH_4~oD?FABnQ2E6el#T)T8W{&vgUsm{oN6qlZ zqYUv~@_P85M;iFko0RZ9HcRncBpH0isrmRriF5FKlo|NCmt=fJEf$~Y@*T%wjN|+- zyvNzXuW)+W&v1+1KfqCU-NAkEyn(wVb{Ti1_YAHw>m)AT0Q~2p@iv^|zCAcX;11l- z!tJ<2w>RN(3QKWrYx8l-e`MgkABJ$3!;^5EWMgrD55jQED*|v|EWL0iaIQE`r#)_M z+1teVwJvU*y*iFSU4iTFS%OPVmcnVMO5jFEL~sptblipwBpi*2!JWD= ziH(LoW2Lp~A?c?4}_L?D9$zY|nZFtP@@bJJP9&O^s8;(iP>f+n-8em8<7rPuU4$ttm9@gKh#g zH0c*+Lirmeq9jrb9V)X>Rp5>o|}Uaxz53C&Pv71H(+6EzeHkWT7xl7{=S%{ z3*0e#Z#iLB8$!vxS(GKgBQx?M%$6 z2r6cc93JCG#9(k3)Df^IAV9x_$6$1^yqJGIa9Gl75RESZ51gbvNW)<%M^OPsbO#c? z0gYPjgg$X(XhX!cHiy9hKOVF)MqB9V3%WF?&BD^qCe(Y#&!R?}%$&^|fE7lmjBz&xRw zR|-yc4%)wHO=Q4>LPs@wC`upl+Z95e^wH$xD_gwpz=9Mw2&|mWZGb`=Oxj` zjH0P%Yp@r1vK%N;2yG7bq9od!wZIE&fNa<+lIVO6K;>%i!1hX_-Gr`EVYGqRTReFb z$Rg;h-T>CSDAo?g0#665swmbGtA@5q6WE%A_RK<%TkJZ}#AD{5lK`EvJoz_fZWRb) z4GqAP2-Lx_pvpWgbg9lmbN$9+<_ZDE`Um`@W;~;o`bUk4ncE2j?8}0G)Iw*}8vdxQ z!HBcbR=&m^{ztELM(+{`@al$O#LuCP|0Qz&AGPB%Y9B#hx^h^I_-53cj3^HD1HTcE zXY|BD+_WAUBaSY2>`qa|fAq*8$ZM?OA3Z6I_#nuQ-7V(ukDdw$N?@@WAOZD+GZYL~ z7`ucaO2ac2Fq}!kpyP!|U|PvxXtdQJ67=<444$D!)2CU8f(-n43aB9gO9OErg@^?y zBn6npV;RcW zHFRDTh)d}fqQY1atRZQ$F&!G{+b5J$_o`_nNor4Bv3US~SVg_PB9+Yf=NAsZUG98VQ7e5;1km+cY(DG4j zK!2Pr2w^dfD4`|c(L!ez={T!hj(>8209q#;ri{nahRbFr&!iJ(x&`Qh>H3dT2SFT0 zwGL%e2a9q3M^&}%A4LoX-C3kT)qtz3ApB1}ll%Xy`TvLQg`f}|ub_Wgjds&)H(SmF z8w?JkhCZ?18G;xra6lJ$tg^BS_~#g%5a%DL;uPl_6(1BG7ipFd<v_b) zMF+?EMoI^TMg+!7DY!0@B_B7IpQK;m^Sk=N1q zi~3mnB5AxI_^m@rNqmyDtgJ$|jFb%CTNJR z$*a(`4bpf;X|SDQ{X$s|fr)`}@quO$zQGQd4S}J-A*^_N4K;5qHFZpkNp!rKuRkj~ z4ig#_#6op2p!VJ@jE!H4I>yMs+S}U5$=ut~!e*Vbm5~Fl!tpF$Rzf@`J|sGhC5_%g z<3m#e(H8!(;eeSg*D5e7m=%JF0)y-u0hBP{yZg+{oG{+r2_T<_Iw)s4sHP2qXlM9? zT6o9#281S~eF;j6@()D&lW&k;*BE17vz&bWB2b$Ss7?Rqc<&%yQ+TaYSJl+T0ArvE zvqxu^#h{32Ulu0DDJe7{0GNr0jtZ9MJfO<~r1VksGO-hK04-JkA43PE@@s0btWoqiWyxbDQ>waFYeSN#)pETQwj>=?;}d_U?kA}1jGgSvV3RDK`~1H(NU~8Fi{MmgM#>z_+PE&Pj7U9 z&@TSd!!t9*$RW@-0>c}bKQs1UQ*~x)&suA`YAeW_1iYng1BFGPPL;Hk;{UW-0O3 z@=W&||F;h0^)CjjJw0g!biO+AP783jNCV^2ru-8_8mv4517{CO!*SjKvtC_Yz<9cml^D2og=E*MYSrh9pR~rs4!h zB7`|uG3-3NI938XAG-j%5W5J6zO(#?n;l2MjQyUifJe`rSq{%XyJw>C)3=Wq5l94# z*dGZE5P0o~`4jigsgFkCF{FRB6I`}23ubh|>4gRIY=_5ycZAsyKt|g??XWgfPvPB~c!@%&eQ@2M~@!FcmY&AR`vYvmGA8 zm@R_*pi^c!JVtnygxUu$6SExtuhGV1=FLh)^(A=q|HtZ|(dFsk{~2w*JpZr!l9=5f z2Azeaz>9$S)Gt<~Pyk$O1M)%GCcJ9wo;q4u>WOT#%E6abe z!Yk-MYWZKbGK?N*n*ey}i2;lQQ-OuDBnFd=GI&2>qYQ?GgEHvqOq9Vq$VC|pWg*I- z3(-}BlbPOAaPr`F5tRX>YZGM&l;tp(B`AXj`ksZxtMM6qvp{82K3np61D`$k9Lnb? zKBw_HozHoE-puD3KBHrb+CRkSE`0UN+C_Y1cF68qzKJz~91m$${<@|lDSYPgIg8Jwe6HkkEuS0tyob;G_}tECbnis#)5GU;e7?r#K0e>& z^8-GQ^7#XwC-^+YXFNLZfn746h50PTXE{DA@L845ntWc%XLCOD)+Mm##Fqp39Kz=q zKC}3o#%F}jydRf<{1tq8E6QMAHKGjW6K@@Zd2|Ss!Tdo#UqM zil1HbU#9+-Quq}E?FF%i-JvqfL<;u##s@26>v z|BQ)1KM~?v1Rae5Jr)@m2wsnQy*r&N2z&wsl)$@#vM&p~XZj_ufZ6}o4!tpf;r??I z*8D3cm@+&k1D>cJ*iw1!Z#^^(bxVN>>fArA1#=rG|Bm^S)ZpL0Y zkpHD80wn1ft$*z8|65NT=o$W}-i5#Q;(*>vVIXZL`0#JNM4*Ru1mDf*p?4XO@~11# z!9e2hl>p7?iGyfVZ^oSin@tedQ)b*u+8hv=JsxtRIE*2f6zF(>t&C?6tp>U$&*VXE zC=zfO>sb*qLG8cvlEBA`>t+TK3pC!yS;Q!KeS)a`k{NuOncG0EtnoLfATYN81()!tfxVWQL?F)uQJytDFowWhABd0!@#sAXEf=i^TDRHuguuRW6~xWB8G9-^ zsv6R>oSLSt)=Et^4IN!+X;ohQ^ixe$Ra;wIT3SbArH(o;-bVm2wKALjfx)y@EJoo^ zJ<*tJ=&vY%k58ueN(GDzW)ViW{qQ&jp__Gm6SC`?oFioHOYp^WOgUVRT%Y(okQUAC z15fYyH$^N&EV({sd@xHS%%sh*vY5rczyA8IV5Zw8Xu;s8jE!)X6K~Qi=zRJ0i0#MU zS}#Ya7F2%BlMzfeT8aP7{YJoNL&(VQ-^g{~+kvkEJ_GnL;O&9e0e%ti#NWS=x4(WN z{lIqu-|*`vk_&tk@Xo(}Agh3v1zzCScVz76cVzJA6mkmqrk|5YA@K1(zaehG8~yx> zC;-p=If0D-m_UYpj3Z}%d_ndCU-siOlKkTn;tjmnk1=G$kB^Axj}OSy_xH$C;4giD zhqQfvi){Knia_7rAOYWBBbMJ^A!^@85b^IXk>67k>06c>_Zk$ z-ax36*O8Ckt|527T}4iPyNon_yMz>cyMV-fJCAJqb`~-Gb_QActp{Oz>qf@Eb|FJw zPaei zCIp(;fdou6AnPaU5cP@eh{VJ;1T#^MjErwaddI7fBjXjww(&9~eY^w-9WO%c#tRUg z@jPVFcn(4w&qCgQNk{s>aFEU~Fw*dajpTkwL88ATAueAM5Q8sqh}@SLg!Uy0`Sdv) zx%W8~>G>Rt?EV~p6o2+Z5&!S;gdD8@6&pu z@{>7|_Q@3S`(%Pxd@@8-KN%qNKItRB#&nSvV_L|yF?HndmCSAfq3}ky{_dkdBWcNc~49lJk*{M17it!i{r(c{|Nb0o`TjJl_Pz@if8PoJes>fed3PAT{;myff7b%nylaLt-tC0L z-ZjAX@3zCb@2X+xcU3U?T{-;zZ83c3Z9aVRZ8p5)Z3dkG7J=j5rokKECc%bp^o`;n~$!CRYuprb4N|!pKsQ{FW%_G z*WT#Bhu^5fTi+j}v4^%%7D^*f01`V}N)iA)nn+~tNT#Ps{yFu)lDe%RWIcG>Jnt} z>MW%CsvDa3suTJ((hj{GIRN#Jv_eNlc0)BIjZntOb|`FQ3*<0T39TF{fuu+BA<9S= z^x-838hDuooqCxFHNA|5ie5%Qte3%%`%6E_;e(4BJzOaFwys&^Sy)c2= zUaW>Ty;upsFEpXR7b=kTi)E1J3pr@v3n>WyLIQg8d=7N$ITPx5PK6qt6QJDZzu7U* zC)pdGe_^kA{+=!W{56~Le3(5x{D?g?Jjgyb+|O(tc0EYERP-eEQ9U*3}UZ(mc*8O7R#nRi(r3# z8pM9^)Q5fMsT+ImQzv%WQyX^5Q**Y@Q)9OI(^YKMr`qg!PgU8!pDbgKJdtHze_RIgc{aq8`C% zE{~GZRzHeOlYbPJCiuudZTz8U+QWw~Y3Co>rnNpaPpf=roW_2rpBC^?GtKIuQkup? z`LqQOrPA;ZCDKNRMAG_)XlW;g2x*N&KU4FECQ{>uKBT%0y-GD6dYY;@bU#&Os6Tb` z!L`(<56-7ve$bVA@WIj4>IZG9+y~96p${5T?H_DSUHPCqRpvoKD)m8T>eziKb?|;d zYR~*$`J;BtNd&E@Nd%sc)?@gpA-20Fsd~YOWa`17=)4{=%%Y%I>2L~^uR1fx~a0fe5 zLI)3~*bnYWSvlB{A~RT>A~0B<^674V%Kf|PDQE7crtG~Nmr{N=EG6}>UyA=-@CS$P zI;3dawMHe*gNoQ{zNou*( zl2m!CF^PSvIw|m0X_ED=oFwgAaMGe%2}$Hz5lJ6z`X>$EbW1vY(>`g>&2>rTH&-X6 z-qcF+zqul5{Y}{<&71R+ByS2O5pR-{-uL}VyxTXP*xfgp*xdIlv8?Z2VoKkQM8CcZ ziR=5i5;gh`Cob&Un@H@dPkeV{bK<~_;>7M7nTfk^q$QT#h)qnn5t8V4!zrd_+9^!u>Sg+1kLMD5+tt= zB#^FOOZd=xHes;0BcZ3aEn!b@Q$l&~wuH3avV?%%oCND$C_%e7K0&HCG=b9VoiKLI zIpO}b^$BOM86~t{(@Chhrj!6*lT8S|CXrxwjhV3W8X;lvwJ8?u+DF!xt1np(uRdU1 zxO$V-cJ(4_%hfIx_v#^5*wtp1OC0FxUjH@u~+Z7h;>6I|nl`Gz?!&jVH zHCHTISyv2MQCGBBu2+_`jIKzt6t9S}M6b|TKQ3cfFE3BT-?%&)fBf>3_=d{^@dcN! z##Cu+Dk2kyA60dr>K3?K-RXpx;e*D`@Nc^2k3Gt^cg~c~t@{TXN+0wp@G=mwvG?F8t#8IOmI< zajP%3#VK6e5hr|cOWf3jqPXW5(&MgQNQ^snAv~_(f=^uj1?M={1&cV(3#;SSUC@YA zy|6TH{)L5c_zS{u@6HqB?w+5D?K%HGcJKM&*vj*FW1;icVuR23#M+;4kJUTBCsyu! zZ7kz_dF%rt<9780c(wOz_#mG4^M7$LOEk7PI7RNeuIBM$F`y zq?q9|;W52uykm}?ag3=yvo0q8jD8I3j7p5x8QB=~Gjn6q&j`dUJo77>bmmj^$I~yP z@1MROeeQH`^#0SQqqm%HkIp!~Cpz+UP4tG-rO`&GGozQEPKp*g9UlF=$29&)r@&-W<(p7&8pdY(lwd+tO{c3+Mf?miiHy}K>y zc=wK|#_ml~McsK(N!?JCZ+A@8`fmRy?d}ax(%qI(0^J5t)R9vH zQMIRjM&_OR7#V+RIMVCXK&1JpE0OA_x*{b{9f%~K+7bDwYg6PuIR{` zF2Bg^F6YSDF7rtDF1<*zE~QA-F6qbxU80esE>h&jlamn-PQHyefAUepfs;2Qww*i| zk#+J|M9j%O5$-2zB1}(~M5vzRMl3kViXfg0j`(w33Au>u z6LTYCPEaGMg z9p>9{ILxY}DNLthbJ*gJyfDFzw6Jf-Bg38__YS*p+&--HxJg*kajme@<4eQRj!T3E z9jApk9RC?=aQs84!ttk}qR0C~e;qp)`sUct&^yPPLwk;G4Q)AA7`piw6qZ}r$I!LM)`qGa(+-_~Od*tXOd@pbC@u8i(Vrogj=m2$eDq03-O-yN`A5%&Bpz)K z@jbdL#Omml5Z$ABA+kr)LYPM*LZ;fiLSDAphTLp74C!iD4{2_f4XJDw3qjgRA>r*` zgEzFl24AavKUlf_YOq9mS1_@CfAH9my5ONBrNNhuqz4~45+7W5Bp|rph;wk#5wl>w zBRau0N0tTa9ho02e}on+eB?*a&%^J6ULSrGbm#DmpwowYf?5wB4BB$IF(~tJMNrJ) z%pi}$2|?zEgMu^M2VVsk9lRHybntS3#KF!0;=#QEV+XbcJUUPiaOFT+z|jK{0gVSd0!j{8 z2c#V^2nar)6yS7VQGnqAM!<>#zx*W*eDEh8cyY`>) zE8l;}582-c{vvO=pX>f~KhyoOe(L*u{TA)F_oMAM^82<=&F}d>8NZwRg#AwK!}_)C z8}r?~?}=~bzCPdBeLcQj`wsZ7-&g0Wv#-QgZXe<+yf51KSF4xrXseCyVC!n%^Q}t0 zhgv0lYg+|<3tE5pB)7ix32c4fpU*AHK2KUge0p0p z_?&22=hNJx?Nikv?~~pl<`dmQ@bPH*;%(6~?5*9>?=9DI##^}Mp!cu6_1>d*Za)*V?;y?<()Kz018r_RjZq-Yej3vUk!;b?+-L$-Q^IXnQYsecRLS z^>WWnul_w1UOju#z4q^k_1d<_$187-omb+XHC_RGl)UWsEc9Blhvv0n&y?rtnn=g6}Hy`!vYi{y9)m-V>(wyO0-5l$g)9mBPYPR+CYhLYX*R14e(7eENd9#40 zMDwHvx%rjHm)!#%&vu{p=-Yk7+{l$G^*RcEZT{qot?doyw*|pz&|E}%sHM-M_of!p1t%WmhJj=3FfYI19As&p%DN_T^s zV%#E{yxiQItlcb{^xbrtmbooyn&&pBiRgxF`n>Vu&Ziq6@9f*yyYtk>6FXZs?%la{ zNjkOyNHWqHEZ%o-x(ipq}YINQZ(P+HEy-{_8WuxSVm5sCw3XPL4 z^BP~ekQ#5hj5nNidEU_G(%(?ya=IbkG{OMOG2OG$%+3*2Dn64{{S;?XeQWqkw1 zMXzDpd0E4-vv@`DOhU=R5UT&gbgmoDbLgI5*Z?JD1n%Idkh3oMY<6 zoPFwX&bIX*oL1KlIVsg&agwY*=0vaG>GY$n%xSa^cDi2|?sTQj)v2S-)M-zhhSQch zX{X#eL8qj;DaYWt5l5H0+m2>+ryaHG_B$@A+vYf@F4vJzm*Duh*3WUc*2b~FR^RbV zt%BpBS~17QTAX89?FR>L?T|xk?PUkw+I9!K+C~S%+7buVTDF69ZKwmY*4g3rc4LPR z+f^JMZ(rzeV>`v6d;7S3+xBPnb=$Aomux>_4{vX_kJ?^o@3oz4Z?iqhe)V=Yd*$ux z>=$j#=>dt<|=FTea=kZCSR5x5e7-+~#Fl zxy{lxYn!%h!nVb>f!mn2F5A9?KLaviqqD8wX6d$W8}V(eHq>ofY$ms6+Pv8sV{?D2 zht1Wk<~Ap`YTC4Jm9g2rRnVqr>!dZj^@Vlx)|=KoTf407w(hYu+FE6;zLje&yEW2U zbn8ZI!d6r3@oF{em(`NicdMz^7pupuj#odm+EabaYHRgztAgsCR_y9htH^4$l~;9$ zm2I_?m0|T7E4Aw7R*S3WS&3HTtq9d0){k$wzy9Tx3+wN0Ikf)rmfH25Tk_VoY)M#O zv&DCP(H5)q@D|l&&SuB)h`tjntUY?f5@$Skz#vYC6;5i{$mI31)It zK4x>P)|*kPw9Td}Wz61H(#;-Mel@*W`ONfeWv}Vc%HyWZl{-wgRu-8SRVJGvmHwu& zl{TgUl`BnMD&2*+9MT9*6ywlT3cQ5-K4PMg$Yv8XA)a+!X%)g$z(%Csfk5Jn#rn)KogY;JCnr~ z`X+NKmY9$$giNN&r;Oi~zc7AM-e=rj-f4WHyvg`@d5LjLd8%=3d4O?Qxvg<#`AXxY zayjF$a)z;I`J|Cu`LK~m`E?`h^5aH|<&8#?Mv&`JkzD(V4ZJDH@P8r#7 zdD+;SMP(1xh?JdQLo7S6X0mkanzyByYo3%wt?4gyU30P2WKCzO(whCH^VT$!V%Joa zj;_uty|bEK+PylabkFL5(u&m^N}<*3OG8$#DRo$_QMziie5w5E`K3au8KqMOxYFka z6D8LT-jp0Scv#YCaI>V);CxAI5d6-()-7E|@3ia+W36%XlcD88V#zPL@#u((=J zvp7RMP-*g)8HWNGn5%KInQD4eHt#ozXQbYSGm%s?t?0f_0Y^h3L*N zve#u6>FW}TFC5YKDeTjBF6`7^U${ftu&_{Dt1v-ZvCvyvy3kx(tWZr`pm4r6 zrjVdLUhqz9v|vE%NkO;Poq}eqs|Dp+Jq2l6M+*Y9S_-VS8Va8#pb4h`$=KKP>rclAS2C3kY#*h4q z8e{nfG)D5PH6G@tYxL)bYh2EE(&)}N&}h$>*J#OSYBc13Q{SBbRJ|zwih4%=VfB>! z8ujS>EcL+rD0TPz4eIv!hU)9`71Ry#h1E6lr_>blht;I>uc^(=Z&#z|*Q(+3v(+Z^ zqSZd+xvIU$Gg2GMQ&hW^C!%&K@4ISu-gDLVyk6DTyrZg(d9|ur@^Vy5@?uo8@;0in z^NdvE@)T7=^F&pB^1iFM%iL?q4|CgGO({4xQ^_kgLdiMTS;;EbKxu8Rypnz{LrFdN>xyN$k5@?N zURp6P_rMBf?v@p#T<(gWIiV}Qj)ArQX>Wmu|>zTWXuVdFi@rWT|0x@KW7u+oh`6I!hI@rIyNMlb1?l ze~=f>9+Vfz?vcl3H_Ly|DwY47l`KD+XE-LGyTu@edc=S%IuXS$vk4 z?2k-S+3`#z+4q@ZvLl&47eCE>vG{&w@8bTX2jy-nNEujX6i5A zn<=|^M<#9Y_RP;Rn=rCw)PN)2bIOFhhxkh+_JmFmlQz356t-=cFF#}}Q-s9$tE zBWKZ}jOazJ87_-NO_*bG0( zhztwKpbRxhpA2zHw+xJ=bH=NMwi!1TT4WqsxHhA9;p&X+g}ND$3pFyF7b<0}TBwjA zw{UR=ZJ}hwrv>ve?k^C@IK6&`!xErlw z(z_&T)0-r!(+edk)8i#d(%mKU(~Tvv(iJ5*>B16e>EFZ?)1QdPre73~NZ&6WlD897s(@4*rr;;8yPchwj zo_zYMc{1s;^A@HH%o9)lG*>kJ-dtvS&s>4@=DDQwlDXLQ#JNAYo^vO;rgOh=SIqs$ z6`lK*J0&*4eI_={y)5>adqC_yceB_47ZJO~4HCP~wHCX~)f79=T_ARvix=zSzM0d( zy*a0ydwkA8Zrz-H+?+XkxKVSOxXyDLxU1%D=gQ8h=F;X=aX*Qcaqo#1aeGAbxVuHO zxW%GeZlWl}^%PCzt`$w>E*FjCiik#WCq=@!Peg*bmqh%zZ6e;>O(Gs#NW_&JAmYqj zFJjMC7qR9_fFHtQMa;ObgiW|Ngx7G73a{dB7uMxw3Ttu0h1IwY!phv0!ppfb!b`an zVL9#xAsOy~kR-PYe0AVXp?TZ_AyICekPvsHkRaDkNPxRkh|FaO;kn~X4EG`PC+8e< ziqpdU$|+}l;iNFfI6lnxoOR4mjxzHVM~wM`^Mmn>Gt79*xxyIY9Aw<%Y+(#=5Jo>I zh;fr+&A86dWL)JeU|izh80R^!1C1y_qvW-^J;o@8ImDH*gB*wVXJ54QC_0nqx@c%vnmW;xOptoN-zyXNXqJ zIZG?x?4{*#%4j*9WLhT2o0iToqj5M&G?+7omd5!mkivN;ki@wxkia=05YO2x5X*rD zqB(&AksK?5aE^vRC`Updn1c}r;T8pMU1 z`NRbrEO9>P6+wb?gCNd1N|?u~A6dmd=ZY!VFB-sBXNv@SHKZD zOyDQ51kOX?&jH_p#dFGmPX^u_i{qF9uLS%Y;J;(AoM*sa2EGmWO~6CI2LQhwcy-_< zfd7q5As>;a$aSP0*^DG0)`$%95$=Q$cnv%S9f15GCUlJL#{QO8o(BFNN2+n^r4-AQ zi^+z`N0MZdiW9#iI42xp(OBN`ZE;hvMzI+&r=!0|sYdxlmPCNhF2jC?N`$J1m<4YL z@(+v%i1m;4i}nri@$$CwTJ5>aL&*K}#@nt3HsrhbIBPiJ9IxANw)3);v3Y7$yWZ83 zX>oQPc>gf%Gf6d;F*?5{WHs5KN#9U!P&ZnKpuI^`UZY*jNcEbsv(nIVU&R*+!AoB) z36^`Y*jHvq%4N}wh3gh{Noa^S&s`u^EQ%G06B=eX3ZA8D2sBcJ$O!Qr-W_)t{O$va zU&s&SJ2HuUMZO@PkoU+aGJ*^vkCFSx0MdtCMb0DL$Z_N#vKQHbY(pxL0wf(tL1K_# z#1nBu%n<`b9a)MjK$r*~nSfuzL+}mwG<+D|30J|{a1tC0Z-CdqIV$Sfl@JGtfLtLHNClFB2+(`>Ao~ovg%c zl4ecBUyZMiPl&gOmy92aJ0G_tE9D*o z`!I>Hr=iWE(V^O*KSR!j#z z0oDPGfE)g${`UUD{@m%0J;8EtW-h<@P+>M4Czqz)#2D>hDy|bZkgYkw* zmo}F`m-#Mz&RNcS&L5n1I=MOtI-Pa|U%&4-@aTMZ0}}Ix9_%#v0H3++cwKq z+jhiei;cO>r1c)_jn-7_<5nS7^Q$a{l zTld+l&TPHeSJNG)Hl|Z+o7UQ`{ch4^VrMdC++=KPJZaQuWMwpASZ8Q%IJRc%8k04n zt1DKoTK(Lh&_KiB!K#c^imPtwC+kb;U(k!t6V>Zj>AjM)vPIWk_p45gj&cA>VK z_JCHJmXy{x%@9qx<^c^Sjc@8T>W1pWYT0UvYQ3s4s-mjxDy}NumA5OeQGTYBsU)v- zX+`J?+KPS4ZI*vfEK^ih>|e%OCbq0y!9`(W>E@+6O9$nX<;CTXFL7P+Rc^DKj@*E3 zqO6$gk;P7nKg*QMsLAw6M@b7xw@O(`y7YP?WeR9w3eruba1O-o3erb4BMK5VID0Gbd+`?3^A^Pti${O(Nm;$@@zcC4Rui5y9%*I!+v;Bh!WH!c;fA9tDe>3=u{DV(mSDeNe@((_OlVchm zkQuxOyXQ3CAv1W3Ok))6tJ8RcOye~&jaSGFM!?RC;w2w1kZC+erZEimiCdmk<;edANXF0H+9wb3B|y&LU@cIE|b}dU)str%X3; z3ZRRJlgLTr1P`4^C(;3MoQGq`G2|!@?cmft0&tjzL&za;Mjb>B0JQP2AK8!W18C); z1!(~%*j{80Kr_H@fL%N^Ax+3mfE@sh01W{30CfPh0NVj-c-RKczpVh(09yby18f4Q z0;mM2K*|Bi07?N$0Ez*M015#L0P+Fy0CJHWfNX#)fJ}f4fOLclzyUxVxP~AQ!UjkK zNCij%NJf$X5&;qbSV%lT96&5Mkz2-pK;|P70OH6zWG;XhG6xX_5J7|y zApj=AKm-Bk2n`WHr~nj%jF13`2m#z)Z~#~YgZzen!@uC4@DKPqz!W?Qe}lgQOu*yt z7x**4CwL702!8;055I%o!lM9hz}@E+JOaN2cmY3$hv8=cPvIxihEZvotd`@pT~I@}9i1GoxbfiJ_C;EV7Dfb;M<_$+(|+^KrtZh%v8 z7km;v0q&_C@Ns}+@KLxOJ_2rBhv0+o0k{odKfDiag4=?TLS%!bq8R5%4r1~%l8wU2wzHhP7Z#SOZpv)nHXv1y+WY;N`F) zybM-=mxBA}5?BtFg%`szurw?MFM=iE1@L@W0v3no!E<3Ta6c7=MPOlA2xh>7Fde4B z0x%V(z+{*N6JY|3gRw9M{tf+tenLN>@6Z(V4f+aAK;zIC=ri;Q8iPJS@1b|lTWAz| z1HFb`K`)^f&~s=QdImj(oW6MYH=#c0I=B^IgRVkX zpv%xj=mK;eItQJF&Okj-H*^Z>f=)swpbqFbbPPHQwL^!YL(oC+hSCP@hgzW)XfLz} zYKC?}P0&tg2h<4FLv>Isv>mE}wnEj=7HBh61@7AwP&rfvl|aQ%5mX4}LwQgxlmlf$ znNS9l4sjs_f*}ZEL#a>-l>Gm&beC;ytX%_!ad&rjcXtmCfe;8uh`W1cGE;YV+jVz$ zccZ($>#n%9)cfA#eLh^r`Ufy;VAiQq=@dG-PNtLU#5$2qs1xXTI#({;U4yP(SF5YhRqHBs7+r;~Tvw_q0Z;mcx&mFk zE>D-E%hqM-GIZ&>G+l}=S(l_s1Y1CyE>;(2EJ zuqC+b+;pxwXPuMI5$tAmI$NE!&Pr#gGuN5vOm)UOBb}k{FZ>7o4gZ9Hz~A9f_$xdD z55q(70NfAv!98#{{2BfPe}vz|@8GxaYxouX0)7rZgP*{U!T#|OegNNt@4|QBf8ks3 zP51_U9li=*fiJ-q;S2CN_$+)HJ_VnIkHg2{Bk*DP5PSgM5ATKdz`Nj`V0YODZ-qC* zo8S%bdUzeY23`%Xf>*-J;brhrcrn;)7Qpl2x$qo#7CaN40Z)Uc!js`i@C0}~_%V;b zFbu&OSPiRS1uTc9uml#tLYNQpU=GX%I}rn>!Bn^dCc{Ly9d3hLVLXh3n_(>62-m}P za1C4ySHc*$94>=P;9|HC&WH2h95@@!gfqZCl?o@rNpJ!j568kWa1;rqlp0Eet#9d)$*a>!k?O|Kk8n%KhU~{mGnZQP{A^aEm4gG?CK;NNJ=qoe= z4MT%aKhy{HK;6)1=o9n-dI!CQUPG^-7tk~4DfAe61U-ZvK=+_K&~4}z)Ct{yu0dC! z%g`n00(1^K3!R2eK_|eLcN97d9fA%(`=GthZfGa81KI{{g*HPQp$*VFXbrR)S_Q3y zmP1RSCD0c*cEkzLIPl9-2SJb)QbS5e0m&cn=Yu{?$XkTexXrF1HY9DL=(>~DN z*WT6M*51-~YHw(-X|I5t_oDW^_N?}__LTO7_L%mF_K^0VcE5J7cDHt?c87MGc8hkC zc7t}kcCB``c9nL8cDZ(`cCmJ$cD{C=c8+$Ic7}GEcB*!=cA|DXc%0B_VXaoH)+)7f ztyC+~inIbPPs`D=v`j5sOVxI0N!oTTLEEZr(Kc(b+6HZ%wpLrMt<+X%%d{onZAhUu zUz@AV)@EwcwW-<^ZIU)Y8>fxYMrk9oVcJk_ur^TZul3b>Ydy8@S~snW)=BH2wbR;Y zt+WLtNE?@srjxM)qK$mYX&s~nm$dBrc3il^Fi}Y^G5SZ^Fs4X^F;Gl z^PlE{=APz`=3h;x=7#2)=8EQ$=7Q#&=8Wc)=A`Dh=BVbd=AdT3X0K+qW~XMmW~*ki zW}{}kX02wmW|d}zW|?M*W|3xrX1->wX0~RgX1ZpoX0m3YW;}SX(rF-#Mx)XwG%}4u zBhm;oJPk*~(l9hM4MjuN5H$o%tENTMtifs;Gfl=Xq+?-8as`R#!6$MG1Hi6j5G$C zKk8rVAL?)Fuj&!?ka|GftL|2RR)18#SHD%iR=-p~S3gxhR{y7dpuVTRqrRoSslKkh zs=lngs6MYgt3IthsXnegsy?JXpx&q6qu!<7q28w6qTZz5pkAw9tzM;Gpn%d_3B!6wHl)?SC^`b)rIPOb&fhqouN)sr>K+E3F=sNv^r89t`1cPs{_=2Y9FiOl_hzQX8oMsD7%xt438{RKuzPRiCOy)usBRdart`daZh? zdain+dZc=&y05yc`d8Jdx}mzJx~#gWIkfny4BN9-DP4txBy@s^lt(N~98~cq+Dv zsiLc>Dzb{GBB)wbI8~FXQB|j^QB|ohsxnoHsz{Zu%2j2nGF54+6jhQcUKOi~Rz<49 zR3WM$mA}eY<*o8mxv5-KPAYqqt;$+up)ymMs0>wqmA{ogl;4zJl_SbQWxujl*`@rX z{GfcRe64(`e5QP&e58D!yr;aQyrsOUyso^WyrjIKJgYpdJgGdUJfb|P+^^iL+@;*1 z+@{>D+^AfyT%-I)xl*}IxkR~8IbS(fIZHW1IZZiPIZ-)Yi6~*EMyXONlv1TwDNyp1 z93@jpS5lQ^B~jU?#4B-1tg=B_tE^U5D$A9n$|7ZfGEbSU%v7c+Q8f;6Iw)eD6 zSAJXGDZe4VD!(khAU`WVEk7YYCO<4cDBmaFE#E2MCf_38C|@UEBVQ$7AzvzAEMFj> zE1xZ&A)h9nET14BC)dd#xmvD}%j9CYK+co1|fbU*>%|!*+tno*%{eM*)iD> z*+JPp*&f+W**4i0*+$tq*&5j@*>c$u*&^9|*&Nv{*>u?y*(BL`86tzgJw2sNCX>j7 z;2&_=GNz0s>yVLT1Q}k|EW^s`Wi_%&S%s`rRwOHs<;t>T>9SN=k}O^pBa4!S%R*#< zGJlzm%v0tjbCEg9>}1w5OPQI>7@Vm4BmF7;CjBBEmJUdJrCrib()ZFg(wEX_(kIgY zr1zzFr2k59O0P*TOD{;zNl!~pNRLVnNe@W(N_R=OOSeilN!Lr)NLNW$NS8_%N#{%F zNM}i>OQ%RDO2Lj(7+DI*>=28=>q4baBr{tUDi)2_b zAnBEKNj^&6NnT4{N}fp`OCCz@Np4FzCD$caC6^@UC1)fjCC4O(B?lyXCA%d%BwHn$ zBB&#ILB}*iWB=aS6Br_$`B$Fi*B&Y zQ1VCoQ~XW*RXi*n5ci6^#2>})#IMCK#81VK#1F)G#s7+Lim!<;i!X@Jicg7;i;sv8 ziuZ|ki+6~(iZ_YZi`R%(iISjlej@#E3Oh(h)cyq;(T$AI8&S^P8KJKW5rS8aB+w@Q0yo67JG- zv5nYLY$i4q8;F04euzdz!=eFEuc%A(QS?sqTJ%EnRP;#nKy+91ujr=en&`6Vg6OR1 zr0AIFu;_qjuV|NOyJ(AOqiCIIwP>YinP{U&NospUt1apTeKWAIFFJ8orV*<%{@yKAX?rQ~4x5fsf}m z@f-NH{7QZ~zl2}F&*f+G)A-5!czz5&k{`+s;`{Tx`5t^%z9Zj`Z^bv~oA3?zzj;4+ zUwOm4eqImnGw(g`4eurIDen>QKJO0i7VkRm3hx5%EbkQW81FD|KW`6jCvPin6K@@F zHE$(vDQ^*P9&a{p25$;)B6$4<^E5mKPs$VWcsw?b&ZF>%yfz+=hvn7ts(Bb*DX)l^ z$IIqr@KSh*yjWfoFN_z=3*hC!QV8nrF^4;TiINbANEZa)-J7+#c>H?tAWQ z?hEcy?tk3-+}qqv?ltaZ?s@JR?g{Qu?m_N8?r!dO?iTI_?pp3D?sD#8?gH){?o94f z?j-Iwu8ynWD!Edwh|A-$xpXdtOXRk3aa=67j$6&G;FfX=xp~|yZaO!ao4}3XMsh>B zL0mtsH`kr(!gb)tl_NUEaNQZ%;(JJ%-~GnOa!kdVUC)k;7B+E4i_BC zq;bgLJS?8m#A)Eva4I=voMKKsC!3SON#P`NVmVO&FAn1PbG$ho92brQ$ChKsG2<9< z{;+?tN7*Cn0d^1jGy6UJ4f_TA3Hv|xJ@#$(P4-pxCH6V?Y4&mUVfF#`9`;W5R`y2r zI`%*8) zWy`W;nX(L7f0#d*Uzx+qer7lGBl8{e74sSM5%U4_4zrVajd_`Qo_U&ioOy(KfVqdc zgSnNtk-3(+in*M*m^q(0n>m9yg*kzVFd?Rj2`&LMc}zBw&g@{eGh3O>%m!u+vyxfH zEMn#{vzY13WM(`wnix`5rX$mqX~{HY8ZrMcelWf=h8X>fZpKH(TgFSq zGsYvvea3CZO~y6GCB`|%DaJ9zA;x~jZpL=TX2yEP8pcY-QpQ5YT*gesG{z*xI0np6 zGvo{jL%`rL7z_%7$Y^8W7>$ftMkS++QOw9^WHZtk$&7eL3?qUO!U$maFgzG83`d47 z!;)djFl79uf2V(?57GPRUGxw1H}n_ur}Y2m_vru9Z_uyMFVN4>PtuRl57PJ2cha}g zH`3SASJ9W#7t`m{XVa(CC)3B%b#x6~Nte=vbS|Aqr_xFEHad=urPtA`=;iccdOkgy zo=#7u$J3+f5%dsx0Nsb~L3g1$&~4}zbQ8J({TJ;!?F(&?)=T?Ldrx~!dro^ydqBHG z>!e+yU80?%ou(b99j5K4?WS#~ZKkcKt){J@Euk%-&7sYpO`%PoAv7&bMU&A)G#-sb zqtVDT0QCw@ zb(lIp?V*06zN5aPKBGRO-lyKC-lSfoUZkF-o}?b79;EK2?xb#|ZltcIuA(lZE~3t( z&Z17EPNI&Z!c;X?Mio(cR2G#+B~uC17AlrnN3EikQ;Vtj)NE=xHJKVuji!cEgQ@;h zZ>l@hnQBk9rkYcYsedUyDWjBON*|?*@`3V(@`Cb&@{n?ua*J}Ea+z|Ta+-3Sa+tE8 zvYWDWie$wWj19xWin+vMMu$46chJ^$ zpyW`}Dan+0N;D;$5=`-@cvIXd&J=r!6~&BVMETS4qvLDGP)A=!SI38r*B#G09(O$G zxYN= zAkQJsAWtTbC+o->vVtro^T}*7o!mhtkXy)DaviyfTt+S;=aI9>Y2-w5EIE=KN)9CZ zkUhvQWCyYh*_>=l{!98v8YK;p`bb@*52QDw=cLD^2c$cso209xi=?xplcXc01Ef8q z9i+{q^`zCL6{N+a`J~yT>7>b|aU__eCdo-65|6|p(MTjx8wp2hB-M~Gq*78LDTkCn zN+BhXqDkSTV3I${i{wUfBH58FNv0%2(r@B7;s|ko*iHOMd`o;ud_sIkyi2@Ayhgl4 zJV!i9JW4!B+)La++(O(yTuod-TtZwxoK2igoJ<@?go$dRoG2plh%6$NNFufon~4p? z8X|^RLM$NW5Yvgt#CT#9F^m{Q^dou_U5SoF8=?i#g!s4pXZvXTPeH6W$YE5uOnq5$+NGCEOrfCY&dnA{-+eBJ3sXBy1&YAgm#*AS@v)Aj~FA zCrl!YBfta|K}HY~xCADFLLd_GgeF2gp^8vWC?ez$vIwb!L_!Q9f)GORCwLRw2u=h$ zf+YcXHH2Snqiw@&{cT-sAKG5GJ#Tx|cE9a*+l{s>ZRgugw;gLc)V8l}XWQ1c4Q*@M zRILR)lO zcw11LUz=x}YnwxxO`Ca}aogY4AFW?o2U~kvKefJVecAf7^nR&}eqRn*FBWwugViLI@zO|A8@ze2>@Z<0hUWJ$9g?J90j_<$|@Gba8 zd@UY>FU1$&bMWc-Bzzn`5+8~W!296c@y>WVyd~ZgZ-D>RGTJiS(%162<$cSmmS-*h zwcKmD)pD)nQp?$vlPyPD4z%oU+19eDWo^rCA%fPC8;H@C9)-?C7{K-#l6L;#kR$=#iZpg?kDamZV1%?8fUBsQi9mgHU?ZfTFZN+WCt--CpEym5q&B9H^O~fHM4Nid* zhzT14O`C9YE=CjQwnh!VcZ{F3swRvOnn&uVFOPc35&jSCBKCu~T z)-)@c#m&5CRx`Dk*xcIO)LhqG)m+wG*qqy((VW~I-yGE(+8ogA)9l{t)NI#m*=*8m z(EPLMYtv9uZ_}ryw@ojbo-{pZy3=&C=}Oc2rqfNwnhrMYZQ9YaxoLgVKTXS;7Bp$XU2&{We@(Nx@&*Ob+i+LX`~-4xyw)a2Xb(d5!( z-(=Nf)@0c93pBwLD3*?;59HCC=J90d;_+jwgJ;n(vaVf-H_Ih*bvhY-VoH_ z+u+&Y(qP|U)nM9S(D1W$z=f4Tl#{mJ?x_5160)o-ic zSih!zMg8LXdG#~vr_@iV*VU`*W%a^(PCdPzT;EoYt8b{Ut}m}Is?V*@s86nstBtGcIk59{vK-K@J(cfRg)-LblZb$jZz z*KMj>Teq@qN!|RqS#?wECe$HynmT!%sE%95sOzXB)ZywH>Zx$}f>oV(7>f-C7 z>O$)R>b&dR>KyBA>dfnm>VDULs~xWGtNmR2zV=n^)7po%cWQ6eUa37_d#d(m?Sb0e zwcBbp)~=~tQM~ro5)8CbuS|Cb=fA zCbA}^#=pj^#bKP|svlS1ul~3CdiAC1v(+c64_EK2 z-dVk+dVTdj)yt|ER?n%PRz0yAsn%4>t3}n^YDRTOHK7_;-B4X!U0z*Oom-tzom?GP z9a$Yx?O*Lx?NV)DZB=brZBYHQ>TA_tRZrE&sy9{7s~%O|tGZQnt?FXc>8fK@2dnl} zZLiu?wYF+y)sm|DRkNz5R!ykVRjI0^Re~yZ6|IU?)mqh5RaaG6Ra#Y0m0guul~5I3 z6;>5k$(Gl`kuwR6eM@U3sJOQsvpo6P1T6_f_t! z+)}x|@}J73l?y6oS5B*(Scz0>D&>`;N^T{+l3dwV*<4v)Syfq9Sy-7}nO2!t8B-Zv z8C2<8=~3xaXBoG=yu-Z2Ji$D`+{WC%T*jQmoWLB$?8EHDY{9I@ ztimkCEWpghOv6mXAQ&}9h7n>o7&?ZGX~Q&O>M)g9U)>f>nSX?o$ zVrIpZit!b2g|b3Y!LMLdP%GLiS}GbVYAPx!iYsy}GAfcQ;wmC5f-C$gJS$u(>?JNqJs*W_e0^e0gMfNV$KxSGjAseYsV+X}Ll9 zkFqai17+Q1AIe^pJuQ1!cBkw{+2yixWhcuHm+dRtS+=EYUD>L#rDY4sW|vJZn^2}J zQz6s zzqG6LUFplxC#4Tc|1G^G9G-rF%=amu@OuTe`Azap}C$nWa-o$CW~*%2IJD zuasFzDJ7KRN*hY6O3O+MOLI!oN)t?+w(vcBY>lBFdJN@kZ#E16KDD^Zt7O9UnC5^4#t z1YgovQd3e7VC=D#j;{SF}s*nOf1G1V~cBw zD~gMYbBi;IlZ#`EBZ`BIeTzMcor`UYEsBkbe;0i#8Y=27`c(9$=y}njqPs<%MOTZ? z7o93PQnbHlSJ9TD^+o>_EiGD5G`nbO(S#znNL3^);uo=ss738XEkzAQ)kWn+g+)0< z=|zb}F-2iTfki$=ZbgnoHbrJdhDARMzZMP_b{Bpqd{y|g@L}QY!W)H`3(ppwC_GfS zw{S<{roy#_D+(7E&MTZzIJpol)D|iVMTOi#dLg;6t+1)Et`JjLQkY+uS(s87R~T6s zQs`IcS?FA7S7=daT==KpTfuNaZ^5U6w*}7&9u?dz=q$KeaK7MF!I6Uf1v?A26s#{; zRj{;Re!;AQDFx#T-~wfVq<~kzEa)g86yOT#3#tlA3knLd3Q`La3Ze=^3;YYb3S0{8 z3oHvv3jXGQ&mYO}%m1AJHvdKbqx^gMxAL#%U&ud|e>8u8{;vEj`Rnul$zPhkAb(c= z)co=JaK18MlF!R$=2P+s`MCW0{HpxY{DS>K@;>Fg&3m5rDDQ4wXWo^(^LeN8j^ypn+nKi|Z(ZK1yd`<_^JeBv$s3mk% zpXNTyy`6g__fqcJ+~c{2a`)tJ&)t~2CU<%6qTD&T({m^0BDv~ZS*{?LolDIn=C=ep)Plum-9L2ZO)6FM>+R$I&-e( zoX{Z!Iv*%~e%AS%vE*r{LWQ()8*^F#*c3XB+c5OB$yEr>9J0m+eJ2pE!J1E;H z+dbPc+a}vA+aUXA)|ae-tgftgSue95XWh@bm31xaLe{CQqgng2c4ckJTA#HlYf0Ap zteII;vc_d;vlLmPEN&J(imwJ%FRm8O3I4K3d;)2^3HP0a>%mIGR^v% z`6F{AvoG^==G)8{nU6B>W_D&?$vmHVGV^fezRVq&n={vDuE<=RIX81g=A=v{Qddmt!p!W<)Xap;sLYT||4h$JmrT1%i%jFp-x;GBLm538A2VKO zJk5BRaXaIB#-)ri8OJjYX6(+`ma!q@pNwT03o>S9OwAad0cR*P#2LH{Mg}>fEu$%; zHUpDUoROQ6k&%=Un-QK7nBkM*mf?_Lone~sH~mNYNP1uT=k&Mf&(j~J-%Y=nekJ`} z`pNXe>3h?6q;E=JlfEK-QTm+p>FE>Gb?NGKX*xfhl}>%_+?$ z%`D9@?Puzj)PdBl)OV>bQy-_^OYKa(ntDFa*mU6Hydb#ChP)QPD` zsybDg%1>pbQc?-2xYYX8%G8q7{M5|U#nZ}P|F*U8V4A12>UzMgz3 z`AqV$@?>E$Cz+N^Om0bTOs-BYOD;&xPEJjZ zPmW9uN%l+jNOnrLNj6V5O#YelC21h3E9qU*i=@X%_mVo3t|XmLI+=7hX>Zc@q)ka{ zl9neeOq!E4Eonj$oTN;WB=M3MN#vxqq^6|Wq>7~Cq}-(Rq{O7?q_CubB(EfwB)cTb zB;%ytiKB@_i9LxQ5?>`gNqms_Z{oGY3yG%^k0$O<+?lvJab4od#Knno6Q?ImN<tV^s+EJ@5u%t%a1j7(HI^k%-frMQNTN2hKtV~#vFfU<7!lVQwL6aa$5G1e?C<%lFTta<9 zWkN|pUP5L8PHvodB$%)FQxF_U7D7p~Mhknq%r>Ffqk3xiRT6 zi80YJVKD(QUNJ5)b}<$)MlrvlzeW#4cSpaEei{8Z`d)Nr^p)sy(I=u0MemK?9=$Po zb@a061<|vjr$mp7)<(;tMbVsSS~M}bCAuNHD!Mc}KRPoyIXX5vB04DAC)zFAA=)b1 zB>GR(x2U10o~RE|ucMwuJ&5`@>RQx=s8dl#qV`4Yh}smjCTe-qqNq7h)1oFs!BNU6 zaTGU-9z}}6M>R%ON0mnvMrB8(M#V=(Mg>RtM!82hMp;LhM*WTa9yuJ@7x^jjP2{u4 zhmp4aaKiR48xBFT}hk=V$Z$nwa- z$n40}$oR;}$lyrdNRLRTNSjErNQ1~95hD?O5uYO7L_CXl7;!t|dc?(u(-B7__DAfD z*c`DoVnxK_h`ABdBPK@ZB2*EQ2wnsuf*jErfsLq%D32(N$c{*jh>wVj2#)ZLaF1|| zu#PZ|_#6H`d^o%>{8RXw@MqxKVjd(hQfNnK8C#x zdm8p2?BB3!VHd(qg&hgo7q%m8Q`nlY@47nY0J>+7@>5!u#`$KkyYz|o)vLa+r$efUAArnI2 z5M_usgd0K+A%);W8bhi>%0dc4vO-cq;zA-qf0e1#yCCLBybzpoXBzppu}xpp2lTpqQYrpnxE+AeSJ! zAd4WQpkIMs0|x@T0^bEb5Bx9iPT-BeOMzzsj|CnG+!eSba9!Zaz{P=c1E&X041@!f zf#N`JAU%*2h!1QGtPU&-EC|dBObLt&j0g-2^bT|lv=6ilG!Fb7Fd8rz&>iqT;AOz$ zfO`Qq11<-g4LBZfFkpAU)`0Z^s{)n;%nO(iFev~DPz6W=cma$6azJYUHlQY;JfJWj zJ0LY6E+8TxD8MJcEx;kbD!?S*kN-FSA^#r#_x>;aAN$|)@ASXof6o7e{~`Z9{@eUF z_^ID{X6_y{jvTv{^kCK{@MPi{_*~i{=xpf{%-yb{#O1b z{(tRlZAn=lRa?o#d-1NEZbJpj$&jFuZK3ja&`K@(MAy3a%(*hlFj_Tl=_eMmldp9Y^QpHiQEpG==*pID!8p8y{(9~U1x9}6ENpI_cz zz5BgCd%yL5?){(l9q$|77rjq=ANAhvz0-TM_ge22-V42Fdr$Qq?+tk?yhYw@Z>o2@ zH_p4>yVASFJJ&niJJCDZJJj3X+tb_G+s50>+rayW*N9i2*C(&nUQfLqc>U{j&Fg~K zDX+s`d%d=MZS-30wajb2*G#X;UZ|JGOXel;VtRFWwRtsp)p}KU6?tWQrFzACMS2B$ z`Fgo~Ie1xlnRxy2{N_32+3oq>^QGrw&wHMoo>x52dLH*Y=(*c-tLJ*pm7a?|=Xy@} zoam|ZRC$U$xt?@Sk|*A?(X-04)HB~R(=*vK)-%jAz|+gq#naBy!qd?6r^gqMevi){ zZ#|xQJoLEjaoyvh$7zqF9{W6Ycx>`mtK~p$E%@;z96e_Neoy z@F?=g@ksMX@QCsV_VD#^_i*&E_AvGM?mp37=dN-WyK~*??j(1-d!u`md#QWAd!~D`dyIRSdw{!_yNkP> zyScle`%kwoZvAeb+}^l7b9?A^+wHpB1-DafN8I+g?Qq-Zw%To(+XA;)Zd1VLJ{mWf zo4}3b*5TIX*5p>}R^e9UmhG167Vj467VPHZ=H}+$X60t$_S<#Tbs(j3E^?jYI?Z*0E99zh6}fU;X|C4<(A7;mvb&BTn@SHaoOgw-er}` z5|?={Gh8OR=v-7T5*MBe-G$_WcWHE~b}4nqcgb`~c8PTfa|v+qa&d97b1`=@bouH0 z#kt@4lk*$rXU-3uZ#!RezTkYy`H1sA=k3lLomV?AbDr-!(|I!Zyh-CMb>=%WojaV{ zoUzU|&gIU9&e_f>&T-BW&Oy%J&aTe(&X&%`&cB?#It@5=IlXgw?)0D29j6;k7oAQ! z9d+98w9{#m(;BDcP79r8J56yK=cIL#I|-avP827CQ?pa8Q-xEJQ;t)rQ@m58Q?Qe- zlbe%+la-T+({IO7$3e$#$M=pe93MH}b-d|#$?=TiF~-?1}a``+ECI`x5&+`*iz6`)K=6dp~;*dnbDvdsF+r zcHixW?RxA!*uAoQVt3E3)9#AhIlJR_2kmy-ZM9oxx6*F0-CVorb`$JiJEfi2j$=o& zBigmt)!S9tmDuIkrQ0RiMcaki`Pq5cIoa9RncDre{cbyK+hhB|_Lc1u+k3X1wpVP= z*&eq&XuI2XtL-}5m9~p*=h{xQonQ;wDs4r!99x<#(H3W0Z(C_wVw-E5ZkuQuZ5v|i zXX|0>WNU3}YWvsbyUmbIkIe_0S2mAr?%8zOT(LQ8bKK^j&2F15HtTFw+AOx2V>8WW zf(>k=uo2mCY-l#^HaMGln@XEvn_Qc8n?#!^n-Cj68xI>t8*3X=o4?lItcR?7tUp-4 zw0>-T&$`q4vh`W(uJ{Gts!fLwaA)nO|@>f##z@{W2}p< zbFI^?6Re}GL#%zR-K`z1t*uS0|5$yq8nWuPdT;g8>XFr5tD9Drtzi_O|=?t1zE|hgjQ@TsujVi*{aT}!m7wB$12S#-YU{6*vi++&C0>b%F4v* zx8KuQo3=&o|FBPd1M+4>J!i_cC`jw>396H!%NUHe%Li_R;LM z*;BIzX1C0)nw>X0VRp!DkJ&b}^=7NgmYB^mn{GDIOlPJv6Pt0(=w?K-7PAJkO0yEP zJhKe5M6+nKP&0os4>Kn-8#7b0zoy?!hfRA-KbXEUePVjgwA1v8=~>g`rUy-Tn{F{( zXS&jKk?9=MX{HlQAyb8^$dqGBHElP=nbw(NOp8r(P18&hOruPLO?^$>O&v|GOifJx zn0zxCH0d^ZZ}P(Ak;z??nAGbWV6XyljSB0O=g=+H5q53HIbVLOjsrq z6M{*TNv%nRNuf!$NvcV_NrXv|iI0h^iM@%XiLuEq{0VkI^=x4MzVMEisyBG{b13 zkIkP$PdMPa`KI8zUf<8GSb#HtaS0VED@L ziQ#?2PQxpP=M0Y<9yHu-xYcl-;Y!2BhI0(38BQ>S4HbqWLyjTUu-y=6SZ|0iEH=zF zOgBt0j4}){^fh!hbTqU!G%@^R@XcV*pxfZR!ApZj26qi^8eB3s1KiF720INl8>}^0 z4ouS722%~j8EAoUDKKCePz(qLO$N2Vh$=M5Hb^yy2Tn_nfe-L1?ST_x48H##^G|*N z-(&>T2O6_bUW1;39)QMNl&hfgpc9}mBV`Y08)!Xf%u87UnhTl^8naV$ASFl)8go== zAR?#*G-j$)f=WPnpfO)15flvy1&vuN9v~->HE7IT`3t<2@1P;jn8ES^^b+(KH0H5% zf-Zy3g2rr?1E5`?EueLv6~Jg&1eyaHGh4=kAdmty=C`mxR8Tvp8B_yB3(zCb9ncNXrT>{QN5R|=+6meO zS_4`RTKGRJW(t_&KpKz?Bml8M9l!tIkZA(522>6z1Z9I#Kym-GWdgzU2DyUlK^7pR z-(S&Rz?&H}XZk^(L2p50{>($rZO}E)1<)zb5zyZMxilNWTn$^M4oI$oAbKu+&rnB@70BerQ}oaGr|2kX@cWqa^8|eldI5T* zH-8?ZH^96E?4L7w|K}099~eM8L7PEi7SM9gLeOl`lg}LAXzKSnXgnxF?+D#SeZX`Bo{&Ar5@ZZqp+ zZ)4WbP4qVKhOUDy>fNF1=#g*N(S4vDdV}a1x*E)7z#>`zn)&StIvIq5Gby?t~H-7tC#{RgyE?;ssTX8;Rn z5(v?oNQY6$=wXxxY$S%>M>>e&M-QTnplZF9bO6mC-H&F1lJ#!VJ~Rx>0N^Ki=?$el zsO{(;)Ern!26|6vH#+il7upBKp%i^>7AwR=y_l*odg}yn@d~KZC|&d z>w&$rO7AaiM(2Iqj7|p*(?q?+v=LQ(-H3{T$;8#WOdC+r*YzkkN{u$?jiz;I$=9`L z9wHX=^xbT>nhX+WTtnVR-)g(tU!lBymi^2;o=1Q=1ddM9cIn)qb~8V$Ut5WN{S4fXgk4Rr!`l(pWEnu7ivnSy>F znT!sBdPXLpA4VpkuRxFWuG9pyb7VYv8FY4J%$OR79vnf@UBH^!qW7kB=*kftx(K*a zbM*EUgiaU%pCFHDQH9>2(x99XHA)4w>rE;ZT0f#hF~FuO*85a)G<`&lCXC3?D7{rB zMg2x3s5{6}?^cOX(-9H+XIO}S0}Txe&>qnHVLtj&?^*HCyTe@cCg`%>wqm2lhS}%= zU|j9eJ6B9}?Jxsf0a~OtujuI1VH!Ff*jJF=zoMYR;SQ7yqUtRyGTJ;$LhFEuh0(iM z?P$(00ZjuX=#8v4Gys0rxL(3qXoj1CSpq20jHdarl18qr5X z4d`9aO}(jAhn^X#LyryBq6hT8Rt>s&s2W`hoUIjlYpW8SJ%mB0g2wCJt#VX8RE`RV z%24*un88(w5{639=AmM=4uly3H%5jE(Hv0P(3s7Yk4A!mhw@Ngz0;M8It=BYR>12r z(VJaa=;&Z3Itc34`(5eii@`MX5$NvVnB|p%UIv{ROh%9CU9Ti`*I**Lc`yN8t2e&l z(M5xC=xktpO$Ch~j6tEnXjBf|FQMN4ibSb{5hwxFJUHfng`t?iP_zh?qc_2V(S*TZ zG;%Nq4IUix!2(cski(!qYNfZre9=DxzUa3BA9QeF%nkEG--BKbc%qN=hL}5gbHE+F zJm7|&85r}#T+jocT?5YOX1y)uh^`oLL>CP>ptJSPm>oKPzz&55Y*B^Y9J5B*1J)>Y zzzS{G`(qYp-GBv(88AnS^%j{anl@m9CV-*_##}NZ)OWxTbq6^Pj2UHr5tD&G$e;e- z$T!eX|1YGw|0nXk{|E9?ZX?)HB}ZuXBNm-UX>7vxy~7vwcMJ??R}0_v|x*>;Ht*_kTn%dIRk}lH30dNe3n9 zJ+wDSNdIfZum2U|p|{aqBG&yc5YztW$lty(C+#UR)b|AG0e#S$X^)V{eg7f%`W_;k zdOz&}a<=b2a=h;za!_xn-9fhW-A2{{Q*EW*Rl9}E?dwFQ_1#1!=#91Oh_de*A_8&r z-r5y}*moIe>AQr~>+Q7*NJ-xXB(Lv0lCF2y&LYu$XOPgo(}=&`WIKsC^_@U$KxTTM z?HKaC_b4*ldj#p#TWyDsSG@<3C!qU!w{1UirFS24u6HkTLT|Y3M)vgXLbmqqMAqv) zw;jlm-tEZT-fhTqz3sLI(e-XdRK1%JvEF&xfY5u_BP8Ix;q~U*TBNFX4N}^>8p+rD zZ>x}`-jzs9?+PSLZ^11?JbRZS&b>Y}%8FBNGPd)RH*FAHQ zr+P1LHu7)JEaY0xOys=Yj+>4g?wN+{?U{;f*E@2Pk$-w7AxlB?^`_heWKz#~1nC)v zsP(=ag7A8D2%`r^$a-r|i(q>+NOg}IDbu@iN+hdCfu!`vkyyP!Cq)8#B#3v97;)8m zbV9_UM}Qdh@R48LV>TTZ>F?$spS#(}TfI}qL>_iCklWpKqm+?8YF$-4%$B-oYzF9J)&ptL_rSL~r61A){S|$Y56i(yjOL z@{ku@xyYlg9OSOv%F9A7cV!}Hx-yVsdN(f>+0~VTZ0Sly*6IztL}XD{0y3v79+{^1 z^kNaHD+W>gA4m7#-*&=)0erS?d+Tnv^=8#}QzU6)+v;$$?_#G(Y9qC6+wMB^=Iwp= z`!}A?^E}^Y2g4|Ut+zi6@oZlh_}Shtf56$>9p?OOSD5Xy9bxAHb8lPN(Pvx34nErw zwj1#GHifNwwlQqQvkhU30E=&3*srOzVPB@!guS2o?eeV*o19t^HaxXFtOqdqmWDM< zEeWfdS{zmaczp}QEK>`@lBVW`#Q=8SoG{JQ>@eBXtgt75<2NJh#?a)mo>XXPGu>L-ZPEWlT9iMt9vI5+{H=^xRuSFZDUWrx# z2H*?Pys2lR8BU=sZYI-^(ssWt90a3xzeo@xb zK2a)Q26l@go_2}!Pdi0Qzz=K}J$TwCy7jb0bQQ1!n?%f~jUw{X1`!5u1?xn?PisVe zPpd^9fH7Dpy8N_4boObv$QtklOGF2r7K?U1EfQ@8?7@7|@~3&Cg->%uvjK-NTl9G{ zOZ09sL-YbL3DZSGlWC&v$y8A*;1ec^Dkl>~#ghr5T)--f6D3am|I24GT4V&=!bp*9 zGD7rt(j>Y&`P(oI7l|efBF>~ArzGXMj~I7HNg|5PH;qVfS1S;=_i;X9bajFx z;scH%K}4Rwi?9<|5ezUD(IUSIl*nTOA#wtIMVRQ^M5xGm0xCKJSc_oMu8APgmWe>o zI>227i55=yiDpmuihhm%HW#&?T$0N&$H(dzN-qNU^8MDqdrakJ>h z*e21Zv5lg)W4|59b)vDcwW5Ks)uJxIgj^}A8(S`_7+WSP1boQFqO`F^qJ*)9qA0+M zoF`I`%@s+;W{VyHZsbhS^|9$9;n*}08!#k)2=Qazg^00lLI~hVeinL-{U>x8`zW*< z`)y0U6P_G(OE1 z)aama6tF1!gdL;3!luz4VGZC?b_xqd+l5)9ZNgN*sB9KSj5Z1Nqm4o(;8oTMACA@t zZ;w_BuK{*tg^)Q~E+mhZ3bBA=Su6yP77G1G3xuA4X_+gu8O;`+8_g2_1^AX0;la^# z;qK8?;a0%9Oct&fO%yH~O%Toj+{;+u*O6%9hmk1ZtC8OZrdc>VViNX_gbUjN4^tN8Gz{XSxlSkyj*b$k~3^l@L>>?x$I|(tvzYR}&VbHLh(0ABI z=niLpA%XGw&!W#f#Flaox^_#Hv`V+pTgzC$At@rj|yi4=I3GImmw?R z`=Nuvmw^AdPdGHRN7ys8Ti6CzpgV+BL)(NULtBM;fD5`wm^`#W7(29HXabDTHA4B& zD&apvD}?s}FLbH!%Fq%aZ)lN_0obAQg_xmvLfFt8VG!Vm&J?;2O&2;2O%q-QOwk_# z>!ELgBST*W2LNC6Kf#uvkAk&B?*+>NYxIp^_Rwp=ufdmsFN43`(Px5}gHHvMgOh?` zz#ttHv=5F58U}|1Re(p@FUTA06J!kb2$BJtv{PUnY!~PT+XM>0DQy-!7;F^W8mt#w z0nE}G0b{UQKpLzRU;w|gOb|R+BJdk57I+N)woLN{HiLPBbAvg8zW~=XQ*dC=BG@&U zF4zJXr^$j9gGqu#g9(B;fOi@z_&N|R_%IM9cs20bJ~atO28@E<0fV4@;J1US6;uzX z1*HQjK|Wxj$^bH6g2mP1hs(0>MJPh_ZDRLdkInjm(@)W z+3zYa^g9bwfYIt8c+_tvxYKVVxDI%&7X|G8^8#xBSpgofTTcm~{eKAp`mF`tfa7{h zVBddKaIyan!70FWJt(m1KOorKzfZ6o@LhKcR`>4|EbZSem=9R5TLeG)HVHoUZ4kWe z`|ZB26^!?-77X^S6m$ay>@q=p-x5J(-y%UV;K9xpSo-D)68q)|q5&IrhCtIdO(5(0 z#eV`gvETSN`o8eP`abiyfEoLNPwacgNB6zuhXQ`=OTKU4bH01uGrl8W$xiUk_Koqa z`$qXk09SU9zpJmGzooB_zYZ{FyZDRxI{0(?+WEhFe|xjd{P(?${FlA;{7Jx`t>O3f zR`J_=EBK9oLtDx(?Jef#_ZIRq0h2b5AJ?11kLbj9tE!WZ|Z@gMf4@NWZFZ317= z8_#F;#_}n>zunqMKBCvmhxD5GAi%KI^Idwie7jyX|3a_o|DLUaf4o=5x9XMf_X4)< zKm3iokNK;6AM%$1&h1_P%--AlA3eADpL%|qx7Yd4dam-vdcybvJtBTrkAUCO!{gWW zaQGE~h0EaQ^w9a~Jyd=o;NlYb#vVLh(}U&903#R0zt@A{-{^ty!+Jva+#U#@-UH?n zdxH4rp5Jz^KR>9)m+#x-&36YJT@U`{9yk8k9v8kfVCp*X5A@jaclFrtw*bEGMgEGO z^ZZ3UXZdpgYxgAoYqvH3L-z^(tM1?K?os|o_aFSeZYzFA_iuxDKfk7XFTbpN55EBL zcz5tqySMS0Qac-o2bJ>|V-e17`0+KE8WCAK5*Z z4+Z?*S$yyA8GP67X?%OY^8L;`-TjsKXZL5`VZinMz}wONj<>1%4R0-A{J!KZ?0(Lh z-95$o)%Dx^9p}C88s)w08s<#`_HRG0x2u=e-qp=(1RUTFUTIewFTbmWm)Z5(1a9EP zb=C1Ax@vg(uHQaz1y9^n#(UUR!n+Mv!38`)S00bmmCK_5Zg3_K(PiO5y3%+czz|O2 zxpXD)?7HH37XVKOU+x__1hVi^JaBPc|SYFyw9D# z&EY4!7oCrI6P*uuLx4Yghu7A5i`US3gI5Ju#8-KFongF;P9ZNDaEZA*b0?dp>tym2 zfKg24J?JF!ZgmoQR{^gW%VTz;dE`zc4-44Ep*%<@ln3er^Sl7ZIDlu@>Cd~+>B~C> zn8uzwt4?>`-cDEEcEC4w9p`zUI?nRmcKmjaPx8h)ta(En zfAV?&1NjKAq2n;Gs^bu^1n`je@iIF0@RB=r@nQiRc^gmHv4yAT*u?u6aFW;ZZgs5Y zUF}%O;{#^$QXZvaF%Q?VkcR;L7jqv1R&zf0T6->6(4Ng@0d8|T z7uTN3MYbn%p@88W&-HGP<+`>n>)hV9tK9asFm4lILG!p}Z5(bv8;hF- zxX?6id>e%u*+$|T03#a9m9(L`kK2&kyMPxR$`!RixtumImj>9;ATFxSj~mkF!wm!+ zX%DV@n;X}$&6#@{Fs1Fe)@`=jBW;(t2LNCCJaTre48~Ze7MT zwl3jn0jGKa_n+3e-21Jwxi{YvnJpQd6u`$$;Y73~aSSa992Ho;71QW6dbe z0AO*4a$1_9oVsQ(rvh-fL7d!XKaQo@hm!;t-R>Myvnxm2?95RBUbh|RL9-3#R`Vs! zRlx2(%V9R3=1`hXa&Um-eVhYnKFR?#ALe)gruPAkee+(<#pd0d(}3^2opZQ(3uj;R zCeBX4`u=}0ta&wOdGkunLcslA!ui#-i1W2+0p~;0Zv%Wb=V{YS&PdZVP9NZbe`hy0 zePP!&ePWjbHuyVscGDYndebX*BH)Biv5ifWY)#V`TLzfnL+txa{p_1fz3eN1AKt-c zG_|qGO)YFJV2RhW!A-Sn|E4OoC*X>gvF)0Q*%z7$*{1+wJcn)7l*QiHl)>Hsc;hMT zHBCwEWlizy1%N#s&HmLG!T!={V!v~g>- zzt7HYyvt5&yv0rctn%w@W8)RJrcuO}0d6^$eXo(tzS+oNUjYnr3Y*bLWRn{4Yz*L; zquAg^1lzwclfcz9hA%8o z!+$I%vxDbWGx09cnoVsJ(Bgk4$k_o?zagK zVLh)4VvW}Yum%Ai-iOsz=gDfQb7xfnR=g7{zs{bOS!c^i0o?cttjM~vEJNLCmI^TB zPp}@>9b?_C`-Am2;K?6gaqIT6=ykhUM8KBc#)8#tVFlN1WcdNk{2G>X-71!C-E!7> zz?@&iI$k%QWmPwqwHNT`XRtQa{bH`E`@viWSoEKnv+F)Gf7QNYeyRQK(!XTBs(sFU zTKkka0vPq9%+A_jW^?TTvlj5`yO~9`9n75CHl_uz>l>LdwRKEWZ8cK|IQC`Ce``ya z4{8gUw*k{WhbgGdWU^{4Oe)~pCo_??3Cxh%IA$PV-A6FpYE4YXS_AVk;NGj5*0l=e z(OMbvV6B+ByY?UEw%SL`4Yl`~t7`8um(<>3&ab_}oLPH~`J*O``ME~Od{@I`zNq0a zCu*3?;TjsVw}!%OuOTv_Ri0UE+q&lAgs?KG2S7$L?t1S%s>NLis>SV^5>IBA#>Nv)c>S)G+>IlZJ zY7=8?wSlp|TFY2jt!6B#RxsvOOBpk&|7HBBdcycr^^ozl>K@}o)g8t})lJ4w)pbU1 z)fGm2m59+;#b?x1aTsM)EJi^UosnHdVWd?N83|Q*MsyX1VXQ(jG*xhhyefq8PZgMP zzbcS%s|v)pTII{&S9vj5RUQmVl`8{R<-|Z%*)yP3wv2$POAMc?^9;ADGYp5SQ;f@1 z){L`N#~IdDM;J$|4l@o`9c1jT+Q-;dwTH2xYA0h=)i%b`s?Ch~RT~*ItJX1oR<34z zu3W)*U%8C&vT`wFvT^}qq;f8!uW~k{qjCnLx$+miw(>i@yz&dZsPYp%r}6_mz49$R zsqz&)rt$^dR5?Z0RZh?qm7{cVpO>{zKJsnk9 zLl3R2q6bx$)BP$-=pL1Ybf?NZx@~0+{d{F6{bXf2{di>x-KsK)zOOQ#zN0dRzNs>j zzP8dtUtSqbUs$Q5??r&TKGUn`{aj}>D2>xw7zXB7|WV-@%40~NRF-4!?Ktrgel z4HZ}DRTV;dNd=FdU%{qlRxs%)6*PK$1(_aML7<0MVCm`#G+kPOpg*YyrQfT7&~H=( z(XUj1=)4L)IZtvFA2s5nEvRB@7iw!)fj zU2&X#q~ZwuV1*TZcf|qvwu-&<4HdiSt15QTmsV`0&#%}-pINb<{7C^>=*{K7Xm#a3XcgsOX+`CqXu0JdXqNJ~wB+(vwAk|J zG;{eBOOMg)NO21M&N%nGxct11NHCHTB@kDipni5r_xJHsHDA%!frH`pg zOCM0@m)@n$D!oPhS@JjaOUYI0`w|iLRSBQ^w1h()En!moOK8-t5;C==gg~t?!BQ(r zP}GtVI5n>%gqm3brlynxQsYYesgWfY|dLlsP5eDAP+mQ@#~{r2JR>j`F7X zHRXBn3(9!$6lJJ*g3?nwN@*`1qBIuwQ)-HPC}qVRl)~axN_KG*CB3+wl2}|ri7Bq6 zn2O6Ny5eGrqPTz}F3zPqEY70bDYj7lE>5M0ijyeZ;&=+ZIEF$hj-X(QjTCsXo&qk` zP(Z~>idV6W;#w@G*cU&cTq=G@Ia7R(VqJWja-{eMtvZfe|j#IQnM=0_lE6Tq`2PhAU_EK&a?W9~Q z+C~u;ZKiOFHc)6qYbnH{RTOm5atf?y2_?8_A;rIFF2%EG7R9A#I>oN&C;4L0H}aXH z&*T$DAIV3G-jWX#y&~@}dQRS2^pw1zXq>#NXoS49Xpp?1sE<6WsEhoou$}y+u!a1g zu#x<#u#P-cSWO-+tRN2*mXNy(3(2j8dE|z|Y;sj$2D!8_jhtVYM9wOVC#Mz0kP`|c z$GEWAp_6pF~O zLOvN>$R_(2GRR(qRI*DUiELkpCtoVWkk1q%$kv6SKd0OE`^4EfMMlLJZOfD?gK+Y~$OHMCXMNTYOMvf_1Og0xRAnOX|l9dIs$l`)&N@P|6fvP{$o;e{sU57{#{aK{!LPG{&iAb{uNSY zzL1oX&n3m@vq+KobW(Ueg`~+RkYxE-(m(kq(t~_B=~h0JbS*!aB+L&WvGe^%w0tiT zA>W;Z&UYcf@*PRR`L-ng{7WRS{PQH2{L>`+{J%&S^Zz8B$v;Z6&bJ~R$v;3kn7@~_ zCx0htTmClE#{A8sHTfGz%ktNd7Ur)c&B0{m;(wn@Qr003Rh~s(R zi9>l`h`o6qiS2psh)sE~iM4qzh~;@tiA8zi#N50Qq9t#Dn4H&3jLYjHM&z{-4SCH( zbzTEenpZ=7l2=K*pI1h_nO97_nwL)$9#S$URC_=N=}?at{!nOf-1)@d+}T9`+!;i#++PHj+;0T?+|PtdxgQB< za^DiHb6*jT<~}1F%AF+a$sHqX&mAIc%Iznt$?YaA&+Q;A%55dg$!#P|&#fbTMS z$|)zj%_$+g$SEL9=HwEFbN+8+=A;ukb5aN`ISGWioLE9-P86Xe$3)1>F%U9yG=$U~ zB_Sb4Mu^J!mtf3!Owi`sC&+W|5dO`%NqCrZjc_L?jBq`NPY~sB2;7|iUz6uh38Wkn z0h@y(Aac+INDiD3kP|}i$pI7Ga{>sCIerA2952H89CyO09B0Du90$VT99zQvoQs5= zIp+vla!wJ}=U5X~g-XxEPDw5B)boPKf4=$E4v+kExQFT$Zo*1vup9R>?%Aly9|%cF2=*M^YP&996TsH z1MiichIh?Q!aHQg<1c4N;pb&v$Ir~Zg8!K%z<iPZN?L`*5lDxYw)nF6?kyg5KP{F5We37TzIi8vb(D z58Sz|FSwIg|KW~hy~9~$y~gd!dXC$f^%S=yYYew8YZ$jOs~@){s|Pnfs{=PHs}=V% zvk~_tvljOuvkLb*vkdnvvlus)nU5RH%)#|!X5iX0({N3hNw}KKcwBjAG_EK!0+*W^ zj?2i@;!-kIxVTIiE;3V$3(tIv(_}ut$usZZ{>i+FdyshzcRN#ryPnC%i89$ZZYBdq z&!pf;nM52m6N^J+B5}}67%m_ag7e7?!ntSqmaJHEqxC@ysxKo*qxIZ&(aeri9 z!X3ywhufWb8n-Re8n+?y7;bguAGl?i2XPBC_u=Mb?!rya+>ZN}u^IPY#(Lb_j5W9y z87pv;8B1{^84Gd!8FO)+8MAOL8Pjm}89%U98DFra86U9)8Sk)J8LzNu8PBna8I#zU zj8UvPV+gCy=)sl#uMz}jEC5L8F#TeGj3tG zWL(Ft&j`b=$`D|eW^k|zG8ov|8C2{q3laO(g2jHcps;T&Fzj;+6gy!F!VX*fv3(XF zY=^}I+iY>c)>#~}l@?oUiRB_T-*OI{WjTdSvz)*tT8?3(Er+ot%R#KpvKOng?8Hhe z+pv!##R1tFc!s%dvdRVl2zD086#Z!4fPpuxQIK49xNk1Gap^fGi&{-j+8Q zSIY~GgJlYH*)onfXBozvvy`NX%rq2{W9o$MmJEF`elOOiQ{1Q=k3>QcWlbwDYlb#-iNlNEqV$<0eb2&{49gBIAj>Ozg55?R{hhVOy z2V#Wjei%-=7lxkhjv=KxW3cJ=7p?fAb)ak0TG170jp*XET6A7o z6*@Dm44slzgpN8ii_>D!kJ2L1chijM8)-W9l{7V)pC(7M z(!^+L+G8{!?LHcvb_WehyMYF$T}6Y^glO+H9@;I9g?3D%p>5Jg=<{iK^rR%-C~@i(>QU-A>Tc>V>PBim>Pl)4il5qnVx_jAsHqJo zLTU{Pomz>4rIw<=sf8#|YA(t# zOsPk1NvTGzPbo*PN-0JzP02?tNXbFYPRT${OG!n3OHM@ommG_Hn;eOJk!(ahP1Yet zlhw$9WI3`sS&VE;evE8PzK^U)zKtwT{u^18d|{G6E%_3Xn0yY2Nj`;yC!at< zlaC?;ldX`x$@`HW$$OB_$vcpC$y<;YlQ$sGB(FhQC$B&rO zmgJv^^~qlmtCBw1N;%QPVVl=4{ zF_2V?=uWCcv?Y}y8k33;HA#7h@}w+8aZ)-WFDV(3nG}ymO^QY&B$*M>Nd|-|NrTWO zDG5rile`d@lH3sIlAI7Hlk5=3lP)0+C!Is=PdbIzm2?8JHR&i~ zW0DnOP11hE@}%8}MM>KcbCWhBW+bgg{777l_?);L@gZ?B;&tMD#IwZNi1Ebfh@r$E z@ZQ8P@Q%cf@Rr1P@cP78@T$aT@Y2KyctPR_JUej!o}SnPPfqNB$0fGFBNH3o;fXbH zO=1OHo>&6^H?aWzC@}|qH!%Z#BQX_zB{31sPmG1L5+mWXL?fJ-sDon?Rd9Hs3=T>B z7aoxK2=1GB5AKn83+|kF9d4Hx2EUldho4Dg!T(C6!H*@9;8uw^_`XCGd}ksIz9kU? z-;fvxU!CX&UzX?vUzq3ypOfeWpPpz3|B-MB{yE_s{C&bH_^X5y@Tr8O@Ua9d_)x-r zcyGdPct^r^cyq#LcwNGJcvZq`cxl3NctOHqcy_{kczVKYcv8Z2cwE8{SY*N%Sa`xm zm?q&ZOrG!pCQf(?dz3H+yPGfsyOGcbyOPia6C||3*a=NAT0$L+m{0}7B$UAr2}Lky zLLMwIAq(c4kPh=mNQSv2#KY_pqG6X3Ot7;Fde~nHYS{4vIqYzP7`8v*F>F`Dec0B7 z+pvuZf5X-!T!Af55Wp5CaA5Ni7_gZM6xh#r0_;mX8ulR`4to<1g*}fCf=$Hx!-nI% zVg2#$u&#J#SZlmJtRem~tUCTYtUUfStSJ5jEI0lrEF<0umKwhwmJq)i79GDGW{Teo z)5Wicsp40|r18sPPvRHD?#IuA-Hx9HyB?gJsO`AdMG|4bYFaG z=+5}W&@J(?q3h!#Ls!QeLzl(tLKns>L+8XxLubVQ6Z#|WVd&?$yP@ynZic>&yB7K^ zP82#G#|<5dV}|y{QA0c9h@mZU*wFeoWN39n46KaaP5UPti9jc784wc3o3w;uIIP`wpfzaD=dqS_r?FbdcZ4Twetq*0!tq!Hc zEf2-VEe=J;%@2je%?bs_O$!CZeGl=8`yApP_aVe7?oEhY+>4Nlag!lu;zmQP;|4>H z#r1|*#dU`4i)#(p71t25HLfOPLtI73nz)jX<#7cei{f%Z=Ehk8Z>5qL9(iQt4q%HP#NMr2ZAvLjALMmbfA;qzrki1xW zNLDO4BrO&nk{F8)iH(JaM8rZv46%VBnpnROd8}8+zp-v1k7Aud?#9}N+=#sxawYa` zh#>Z42s`%A5L)aXA*9%YA=ucxA&A(WAtA9_LxN&Ag!sj-3Gs?u5#k!VB*YAz>iF%{6yF(uFsF$K`qG1<^(F&5}VObT>3CIQ+P69esvF+*Ep4A6!c4YVdk z0WFUaLyKY_L-S(pLo;J;L(^ieLla}dpfNFgXhaMfYKWmh)iETfJO&5-HwFcL7!wM; z8v};khzWpRjq!yFVmzVj7#Ao##sNx-v4LV^EtDx2~%b-VN7D5lj%!TfYnF-w)^9!;i<||}F%zu#8G4CMD zV_rcP#Y{ow#*9N|#tcJ#M)yI!Mt4CzMz=xUL^nZRMAt$lqbnh!(WQ`q=t4+$bPl9F zIs?)aoeHUoPJmQK$3RM=BOnFQ;gIZT4a5?yfFwstAaT);AyLuyA;#$25MA`&5M^{2 zL=w%1Jc(vQ?nl!gx1&jr>(MxfC>jOfMTbI|(O?KQIsih5_JLrcJs|LC7YHQU9ugRR z8R8p#9^x5&8sZXt0^$&T6mmJ*3UV%bALLZ@F36wJ+aO1xH$o0ZuZ8T5UJ2O|y#%s3 zdI4m8^c={l=;@GU(LcZoqrZUXMt=m)h<*e95%mK6CF&{oL)0kvP1GRxc~mcWGO7bS z64e48h-v_LM^%H{qRPQdQN`fes623GR2H}-Dji%9l?2X?iUV7sqQJ>fMsQq|4jdJw z0vn^GU|rNdU}e-pur%rp_({|a@PnwU;M-9G@ZV7!a99)r%!?v}Sy6Z}H3|(TM!~?C zCZ3J(PS_|F~wGzB0Y6*CG)B^D0s5#(yQPaV*qJ9Mbiu@A%E%HO~f01v3 z-$gzTei=C#JQX<_JQg_+JQUdz+#A^u+!@&%+!9$I+z?q6Tpd{!Tpn2zTojr6{|F{C zI5RReI4v?UI59FdI5sjOI3hAUI6P7ttcg?vDgFrk0b8~-;2B*d@J&L@U_UW zU{NG5m>bCoW=7J2DUrlrLL@dA9f=5rM}`DLB7=hiBmIMYBfWz?Bi({sBAtRABJF}N zM_vp*A9*(TRODa5CnAprABp@U_)z45;JuN1f_Fx458fKNIe0_l`rtK@tAdwDE(=~9 zxiENM7s57D? zs5PP`s3D?0s3xL1s63)Ps5qi1C@&%}C@Uf}C@mr_C@CT_C^jNCC^8}<$QThGq>a!9 zDI*j?k_buAlZeMb_ap8H-Hx~wbUosF(Em~BAbtcdh!w#KqD4@Hh!MmfYy>6<5rGH_ ziGT(LM+61=NB9SMM|cIfMYshyMK}i8M%V^jjJObVCgM!cUlG-vja2D zmcTS~a$ur4J}}lC6&PVQ1%{h-fm*XFP+^t^O3eQRJ~lrHyl=h}c-#DU;C1trz%VmE zkY{EGvdsTy)Xbznq8S^AH6sHN=8(V;b8uj=`TxiHX7506vs<9M*(uP;Y#V52z8HAX zd?xU$`LDo}=3{}!&4&a3Fz*jMVBQ_L$Gk0Yhj~-rX7k#>_2!jRG9JuN=#V+`KI)MY*SKz#S|BiY>EtsHyHz>P1*pHNg1FwNdi=+Cjm0k z{eXW>w*wxUt_R#Ti2`n#cmY>U%mAT@8o)IX0vIMt0L26kAef*5Xj5PS+~gMkHF*XE znp^_>Ob!8Frpp1Yrt<-grc(j7rV{}dOh*FFm<|Q}W!f8X%(NrmuxU%c0n_?`-KNz6 z+fB;?Hk%d&tTW9GSY?_Su*~!mw9xbgG}rVIG}H73^vn1H^wl`||C#V8=$&x@^wQW3 znliS7#*Iy&A!8k=&sYiSGM0i`jRl}aV>YPPXaQ9ilR+iMcu;{c3Y23sfh;%0f~%o5YGq&v5bKr zn$ZtLGa}Fe$PKS{HA|=_*MVtaG}3Boa1i@XZWkb$^PY-akpJ~?Z~w4xH-BEZlRqom)}I!B(VrB4#vdDQ?T-vU<{uhv%s^8R)u%_Eemh=TNvKtH#fZ2Z)SL<-!DUn-#0_P-+zW|zjuao zzgLDNzh{OxzX?O6->@Ovuiv2c>ozF-+6`jAX2WB@I>SA`D#J~`GQ%~$B7@K`&%p7^ zG|>Ih3}n9~1I{nbfb@$pg!&l`!G1b}zn{wB?I$z1`Tc8f^m}Bm^}B1h;CIt-+V7gd z+D~LS>c=x2@?#qI`B4o!{fLGwepthLKcr!`U#MZ3U$9}JAILD*&&M#s&%^M;*TwL~ z*WU2K_p;%&?|H*B-_wQ(Uu(m#?=eH4ua%+8cfX<4cekOzce|m+ceA0~cfFy=cacbdWM`(3a1{iIj8@)d!>h=mXck@qy}}`vmDHef;$!KHmC%A9sD1kF&nb$6nv)b4g$0b539Gb4p+A zb3&izb5x({W2H~^*{@IZ*{zT9*{(PHY|`s}*6GzgtMoFTW%_@77U>`O%+ufTnWg{R zXPQ3D=ev&Q^I6C8d9S1Tyw(wXp6k#)lRCK1s1D*Ys0;Av)%o~z>fC)=b+`1RI=xA{7H^!c-W#Q>_J--o zydkwIvvS-l@8~Fq zuf6R3T6@m>x%Q;@r1nqmQSBezgW3b$z1rR0o!V{Qt=diAjoP)|wb~WlmDQukH6zYrDMU+Ey>Iw!!PMw%Y5y zw%qHMw#e(cHrFdmo8iURrg*Wn@m_Rov=>=x^1^F%UTCe-3$B%TLA8&)g0%O&{I$2d zytUW7+_ge4XD!FeUQ747tR;J$*W$cRYmr{o+7Pc}+90pPT0gG?T2HS%T34?fS_iK! z+RI)WwCB9mXis{r&>r_%qCM=jP#>vxDW9#Xv zx!~!jIpb-ovG%;EIqG>%bI9|QX0PW7%?{6_n$4b8nsuK0H7h-LYnFO$*DUbdteNe( zUNg;ewdR}0a?O7pi#2aO=4)Pf%+XAG%+QQ@{8aaQd{uXQ{HJd7c&Bdkc%`oKc&0A* zm{1pajHq)x2GkiIJ?a#XPIbITt2)Y~QEl|7RqH$|)k=?2wZx-P{n#T{ea|CPebXaN zebpmLE%1m}vpu5KG!L_y=wVP}JTz*!he8eYkf;Mao~V629;iJ$?x>wTZmR7(uBk72 zh}361cxr18minj%O?}9Nq~7a+Q}6IVsW*GT)$2T<>Qx>=>ZKn3>IEL&>e(Ld>S-R% z>TmA$>i^tr)NkD{s9(6BQBS)6r5TWxfouGYH$P$}HMsKo9cRgc`?s_weKRNZiYrn=%j zq2jxbs95d;Dyn;ris0U%Lc6!BVD617uzRfv2Kcd2TH`#-A1?hjS--0!Joy5Ca$bi1zl z;ufa*;KoYCe5mC$XgisQCX zMR!}PBDt+pVcnLg5N?Z9P`7!iK(|>cU$<#054RsmXSXj(JGYO@i*9d~XWU*Yt=*m} zkGf4L54nvf_qq)zcewQ^H@kHz*SWPSSGqMSm$=m`=et!ZXStOrf4LSZzq;lrKe}cq z-?&UCuWN*|!_}y4cGW5CTvf_SSDCWJRjkZ+eXPuKy{}Ajy{$}i zy`hY8y{a_33YB_Su2SX7Qc7KE$|tTQ<$YJ2@|G(~dCe8B6uLr{9M>Qv-PK=7a`jPS zT|JZtR~IGJ)j=8PYOC~hy{PnXJ*#wbJ*l*HJ)ykddQ^GZ)k=B7^?>q->mKDn*B#0| zu3MDbT{kK>xvo{NbzP}k;ks10*maR|p6fj2OxIb;pDxpsUtE4DKDc~QymtAhm~wfi z7;|~07<752=y91)w7ZNdnp_4IwJyDi3YShru}hmG&!tI`=~Aaib*WY)xRfiRU5XVZ zmwbiJB}buf$xw)0QWcL}k`#Ac;uJSrq7+wLObWh>LBVp-D5x$91;ItCK)d{-fVn(W zfL-n>{9SG-yj-p;TwTHx4lV-4WfzX(oC`y7(uJxx?m|=?cEKw4yPy=iTwsc=E)d0f zmmtL|7k|Z47jMM^7k9;M7Z=4e7YD^RXB)+T&KDJLozE&>IG7oL|eYIX{;RoS(|s&SP?#^N^hA+%LyCcgx|{@_r|dyvvCpZ*ii^>z#=5 zDkrSG)CnaoaDvIRogngbryzNvlfOL1$wzK>@{sGDT;wVzN4eC=R{q54lKh_2Ir&Ye zQ}U}$)^dT`^0pq%KmSB`etC5Jg}lY^Z$%Rx@-<=#%K~DZm z%Fj8?m7jE)DL?KsO@7$vyKKMH7uimykFqUJZ)NM9UddKDJ(DeUnv^YY8kNm<8kGHV z?2~(SY?r-pY?eKDY>-Vj*2sn&D`dTnrLqpkLRqt8o~+I>OIGP*=8*(S#evNeupWy>8;$`(1Ekj-^GDx2YGCHwAhK=#RDkL;bpPT5O` zt+J;Mn`9#n>ty{7t7Tmd%Vn(&OJofW3uILeb7iFtGi3!1(`4BW-=*meU!;i+AEhx4 z@1$mjS5m#hGpWj9QYvv6l|FVDlHPOZliqabmR@yem+~E2q%4O9Db=A?N^q!@q8!Sk zp$V! z4r1wAhsV+t4iBV@9qvfyIoy=aaJVM@VIL;_Y|odzx93P-+B2n3?WxjHdy;g(9w+Ux zM@w7n;nD{C5NWl2u(ZrRKw4n$E6uj|lBV0cNt5iIr7`yQQnS5{RBwMls6~x4SG^Wp`e()b5OAzTIDvS$2O)e%T(Ce6_Wbe6T$r zd2PE_^2~OpWXyJ(WYBh#q{nu>q|J7Xq|tVTq{eosq}+C)q|kPrB*%8P#9}*Ll4Sc+ z9Bcbc9AW!OthfCjR@uH4OKo3@pV&SV-?N<%-?SYSU$q?)^KJXYEZc4|)wV;7w`~!l zY#YU)wsqnl+bXf2ZMoRfwpi?9TOhWx%@tp?%@m)pO&6cAO%WflO%NZnjTP^L76;#?b~*kS_{C)+^8aW+BX2pf>tVB;fJ+jxqlHg4i4 zHcsOEHumD1Ha6m`HW$PKo3mn;%_%X}##&6UIVMKg{2>mtIV29Y*(dh1*)8_8*&%lM zA6f4K)>P8|f75#pE!0p$CxH+`fRIo`1XKhRP>?1F(tFLR={@$f*R}VqYj2CXvg_(v z*WSBpukQ@cKF{y^UoW{n;mkR68caE7=Dxpon$OIPG|!p*H20Z_Y0fj_(i~?p((Go2 zr&-SoN;98HOEa12nPxcCCGDHuA?>r?I_-nrH0`b4Anld@bLw;byVNK8SEPg3vd z@2B3<-%7oqznXeQe=+rvemM1lekk?4{zU3o{o&MK_4`s!>UX9d)o)Hcq+geMK))(= zkA6w&PW?}*+w`+jH|sU2>-F-~HF`32l^#i5uJ21-tnWx&pl?o{r>{?)t*=hi>8GZu z^(CnaeL<>JKQ5KjXQg8L^i-ifCAD9lklL+hrFQ6}Q(N_+sZIL8)Ox*7YOS7{TCI0Z ztJUtiK@O>VFfk z^``}~`eOoy{ue={evcqbzg-Zl-zW&suMyDn%LU&0MFOgRp1@VF7f|#nfrDNuu+`%N zOZ}k0Oy4aq*0%`^^o@eAx>~^}U8Uf?Zi?U^-6X*)-2}liU5?rM8ClK7#B?)fn z*n;airr?S$LU2hJEV!Wa6AbG-1!r}xf?suxf|ELH!7-hg;IPg>a6tEkzgPF3zf1Ru zzg_o~zeRVSzfpIKzgBmZzgl;Zzd|?6U#c78FVdah&(|H|&(ZDU&(!VYYjvCXD&0E1 zT(^=h)-B-^y7_!mH;X^0)A0LrGJdy?_d3N#_bkOz_aMbxcRR&JcP+(9cPYhQH=JUvJCkCe zJCS0lJDg&q+n@47yEEmhc1y}9?YfkA+EpoUv`bQ6YJW<3rk$1YSgT2Spp~WE)siW< zv`ESgZEwmIZAZ!_ZBxnxZC%Q+wkqYEwk%~xTaz}el>y@%f>z1-i>zJ}wYm>4-YnC!kYnU=y`-P|1zUOJQ zuX#%CQ=UxwfG5`8;t|?wJVbkuH=rHn^=gNBUD^}8cI_cvi*_HcQM-dzuieb6)vo1L zYgh6rw2OIV+WEZ6+L^pbS~aggE9K>B3Eo)kATL|n!yBz_=VfRcd8yjzycBIEFG*X< zOVCc@v9%L;vDzFSLz~Hq)CzcE+9Y1Emdy*$GI=y@IL})f%=6IFcy3xxp0n14=csky z*=enK)>>1Zh4x3XsrGZSk@ju!56#QuubRinpEUQ9-)sI({zr2q`IY8E@^j5^$xk$= zlOJl1CEwNjl6*_EC;5hETk=)S#^k>=KPUgGS)Tm6W?}Mgnz_kmG`i%|8fEecjX3$J z21`Dq=}$hO=}O+KX-VFtnUTC*Gc9?GraXD0rX+ctrZD+u&A8;1nylnyn)Kww8eZ}O zO+xZKO>FXPO;oa86Oyda1SBgp-pMkJd$L&LluT%BlTnR%@}R~jxli*osax|QsYCNR zsa5kVsY&x7X@=%@(sa$Wq-mNlE!N`C*^9^ zCXLaoOv=+0KTN!faOp zQlCxyQ++b=clF`K-_-jP&!~4Mo>p&3JfU8fcvQVA@sN5+;xFp?iTl*E5_hZBi96J? z#I0%~ag$n@xL)0pxJKQcxJuoaxLjSExI|rS*qFRVeq1DviaqH^D;DBPDS zTkdm}1^0={i2G3WE#aQ(L&9y<>x92m&l0Yy9wb~*-AcHmx|VQ3bunRBHJorxHIy)< zI-YP^btvJ4YHz|()sBQis!a(8RBICUs#YZIRxL`{p_-SlRi#hZq*5lVS4k4qs<4FB zs)2+Rs;-2ks+NRBsu>ACsiq~&Q%y~nttv^-s|pe{s&NTQRaSyrm6jk;@e)WCCjnE% zBnVZJ3H>U1La)j{p-bhJ(5`Y#Xi+&PG^(r$Pr8>Y#SMBBqR9iVb)p|~%YBh(WTFPOo z7I0!!vpEcvh7+lhbHY_5CqyOW1gUyC{;GD4ud0#bt(wm9P*rl=RHYne)g+FSDvx8Y z%Hi0kMsX}ve2%#)kz=BY;~1)t{zoC2(e^q%a{<88~{6*!(_&=2ALNw2W_28pk&&zq4m3KeDGQ->|1CpR=o!5836)+w4;1b@pWC zC3cZ=m|dtm!_HTpV2@WGV&^LNv9pys*rS!3*cr;T>@?*HHeb1jovfV4<|_4Uj#9~v zQ;OL!N{r1=_Om0Eo$N4W3p+$v&kj;nv;CD**)(M_+gq8>_E3&xyDLYtU6iS8CuK6* zK^f1sRWjLD%5b)YGMH_uq_K^Z9&7`p3;UbGp8Z*2$^NJ?VZT#+kNZdQG47S(pSb6W z=W$OJ591ywZpYnMT#vh}xD=+Q zqgWAlTCphZq+)K|F@-+vutFJkP$7=nuR!DWDEi}eDLUh}E1KiBD(d4lDXQbvE6U>5 zDvIJ(EAr!3DstnNDKg_0D^lYYDw5*nE7);!6pXl8itsp{A}CIy@QqU{JmO>u=QxSN zE{;@K#Ni6#I7IP{HK6#w>QlU7bt|5+Iu#FCZHim0X2msDqv9f~UU8l^T`|O(rZ~>3 zR2*cLEB3HT728>p6&qPail149ie;>P#X{D2#T?dHg_f1AP_VKTBGxDc!b(&0vIL3_ z7EjT{N>WT`B`7Lc@rqIwOEHPXROGRu71^u^#VA&og3qEWxU3*W9Lrx3&GJ=*vb+@m zEDwbb%U$8la#1+3C<+^vgTkC;r!Zt$E55{9DBi`IDPF}IE1tv}D(=O8m;W96RemM* zll(&L2l=_!xAIf5ujNN$U&;@}K9lc?eInly`%u0<_P%^o>>c@%*jw`Xu{Y$iVz0^7 zv6to2*h_Le_JVvc_IG)A>~Hec*fa7OvA@b|Vo%D;V~@*AVvooRVh_p3#U7An#qN`* z#qO3T$L^GKVzGO#YpADF(Ua;3?V-rgUS!Z2<3ZY`sLeWdgU8q zy5wtOI^@e^TICC4n&oq18syrTdbuK|RxXN}CP!i_<-IZG@{X8Nc~i_}`Sh4#d1cH* zd1*|6d{RuFJTGRPJUb>wo)I%f&X38Ib7L~(te8}JR19Ap5|bJYG z3`=ek!<3uFM9U3gBIKW$Ve+?3y8Id<(HYB@;{hV`B|o`{3O#^ zewgVf-_Nv{?_}D@H#4o|YnkTq6--n4Vy3Zt9@9XsXMUF{nO|gL<|i4(d@t)~zLj+{ z-^iMoFJ*Pi=dx<%6ImJak*tV$Up9exSC+%PEz4y7EfX-W%MzJaWO2;DWYNrvvM}Z! zvOwmr%!heS=FU7Lb7G#B*)mVc%$dh!hRh?fFN{O7cZ>tFSB!nKCyYI^dyJj3zZu(Q zml<1R7Z{sl=NKDgrxb}^RAwlJ2;)-e{zRx%dI7Bl9_<}>EVW-?~U zR1BR=!qCVthDz4YkjuIlQdtW_B&%l-vT6nd(pYFzoW;!RaiE2Cp& zi=&ycdC^faeRPCO6&)s%MAKzhbdan+IzZMLO_Mc8`^f5}y=2wVR9RWHo2)3>MK&SY zNtP4sAj^!llL?}&Wr@+2vbbn-S#-3CEHv6k78q?H^NIc@b&vicb&CEZwTXT&HH&^L zHH>~E{Sx&``Y!6Z^kvjj>Eo!!(z{U)q&K4ONiRp;k^T{NQ+hV)hV*3AHR<7~E7E;Y zm!vzR{*-Qx`a`-l>b!JC)H&&*s58>JQKzN4sFPA<)N!de>ZlZrIwb9j`bF9iwO`s4 zwO0yE^`%u&JEWyi+oY4CHcRuOHcGRj)=M*@)=E>NR!g~2E2XTc<HEBz6vl75O*NdJkHNuNhbqz@xW>77VidOZ@AUWyb- zha>x?Ly^7GWTHIY?Pd1Sei zj4YE1Bd17vB1@!gkwwym$UmqEVD0NM*JzUj`%}j8gX9o zBmA7?Q}`LlKjFVhUWA{LJPJP{xf6a=ay|U8(EcrQnqhwk5ddY(DwUXK4KT9;>DLmBVY9)V%O_N*>tCIW?Rv|eX zRwg+aHbrtctVFUetVpsWY@%dSSb=0s*aXS)uiM0!e#Vili|tSyCI8D5(fbkW3DXmlTG@Nydf6O0vS3lJu}B2`?-{!U+qL#Ds-N zBEmp$#IQgKEzDoy5k`|ZhxthC!n`CFVIC5rFn7t!NRq2I)tL%)dEhJF&S2>l>l6#7m)H}oH| zF7&ln5&BXr4t*|0L!XNKLLZAeLLZ8oLhp&Ehu#rahTalS3H@6WQGW4j}IP|diTgXB2 zhmZr}*CG4FPeb;I?}zLX-wfFyz7n!cd?93u_*}>)@u`pv;v*sJ#QQ_mhEnEuchaTSJ1P?i|AS6x%5o2j-DY_(9^{tda4+q^ToY%p17T!ByOa0 z#kF*fxPs0WPo}fPh4dKlI66a|MUN7v(Idpk^e}NeJw(i;)5YQRAaM{qK1{ zC-|wTE%=G3A^4G~CisD0Y~Ao!MOZ1CTr(ZSb6sliu8Nx@e{?BKsdjNpr+ zu;2@#z~J9SKEdZj?!o6oPQhnHHo-$8v*6PrgW!{*&q2pUZ-b7CUIZN$JqkJ~x)bz^ z=z7q8(WRihqT!(3qM@LjqT@l^MF)eniuMF;5p4_FB-#+PL9{w(ooH#$8qrTdt3|Vd zR*KX?D@4+uWgDzNkKEo~Sx#j;JhXmZ&I5FPadf73Bn}MWcdL zB7TrU#0`>(SV0m|RFFs%5=4mngK&{o5GryF5{m4D21J%YeInzaUeUL}ZqbLpPSNYY zcG1(oR?+>yX3@>SCef9^2GNDUdeOPS>7rACHKHSd(?t6Nt3*2kD@2SS42ot>x2ob#q2o^mG2o&832oPNl@Dp7M@D&XQc#DPtyhO(XJVXZr+(ml=Tt(Xg zTtpiJD5BK?j-sUj_M)Ex>_oEyY((k+E0Hw7LWBpHiv|KrMO^{LqLu(dQGI}cs5;;~ zSr+h>EDHEcP6+r!W(RyAGXma`DFJWEgn&0>Y``lrGT;SC4|q=c1w17^10Itu0S`(0 zfCr>yz&+A9;12oC|2Fx-|0em`{|5Qg{~CGU|0;RY|1x>S{}Oq@{~~$L{{nf+|9A4R z|9Nts|8L|D|Fh&K{~>aX|F7h7|5M~b{}bdK|Kp_A|0pTKz z-u}x;H~*!iqyJ*k+J6yg>c4>e;WwZBjQ6V|nSK>yxL-LL zDABp+CABdU0?+BIeTSDUdhQNGZ z6aBs~iB8`aM6>TRqR#gTQRVxXDD{0vO!R#~jQ71qjPboor2F0`c)qs?j_=<@jPDI1 z!uJ{x?0c1<`CcZdzJC!E-;0E;?*+o#_YcC*cbNF%bDntTbB=iFbC!7QGeq3=`IWfg zbBeg+bCMYLIZh1u93zhV93c++947Yo93-~+{6cK-*-xzY*+(q(*+b0t*-gy!*-5B; zb`TPuZ3O1CmFV}`OmzBeBAR_R5OqH5iAtZf#1x-3#6+Lf#CV@o#2B9yM7qy%g6Ff8 z;P@;dVtf`65k3ovAfKNIU!VB|)n_h2@tH%|`phECeP$AdK6>Jdx0ZP4ts!1`tB6P5 zO5%>UoVe~SBQAMMh+%IrG2~4W$Gr*Spf^VB_C|@V-a=x%_aL##dw^Kt-ABy#?j>e= zcM~e_E<)nnL7?94M4xvn(c#@fGDdFoqg>d&SA)LI62^;Ss!pwUjVc=azeD=yG-g-?SUU-cs z9(j!;ZhMU-u6gAU7rnBH^IloRuU?~xV_uoWFJ2kMZm)D=i&rYK&Pzb7^hzNXd+~^Q zUde>sE0IuoaS5>(hd{jIiC!-@(eA|}8ogqPS}!J1;l&^(dqoq4UXjFDuLxqaS2&UC z6-p#|g%E77V1nTlM1*+-5`kX+gtwO;;pXK_IC}XI)?VI(sh215!_$NK(~0=g(}DQS)1El(X-6FKv?2C;S`#}xt%%K@7Q|Xlb7F<3DY3}Y zgqY)LOlUm~3Av{ML3;kcg`VH=9?!3Mo97q2!SfS7&GREZ)$;>h?D-DQ_k4@zdj5lF zdcMX5p09AO=S!UB`5ce(e1?a3KE?e#ALCx0k8oGdhq%4xecaOX9&YS;7yssQ8~@;O z3xDl#6MyP)1Hb2S9sk?o8h+X13jT-3W&EtiU-(Ini}+!WKk>aD7x3*KzvCM{hVh?0 z&g08Ge!~}doW*B*oWa!|L%7uAG>&_m!UsG~;$0rcaUfBH*Lxhrt2~b2r5=ayNgfCB zJda=SY>)kThQ~gf=dl;(c284 z*HeGOS5fEVOQ`ekdDJ<$o;n*>QfJ{}>P#G^>hM0Q7H_9&@J6Z{uca#S3aSF1OqJt> zR2e>&D#1rn#ds=JgeOr+oK3}X1{K4@s3;ylMR0Gb5O<>v;EvRO+?v{ln^Jr6@9y3B zNB1uLje95l%)JAD;NFJca&N`2xVPXJ+?(-p?oIe9_Xhlk`wV=)dp*9xy$;{xJ{@1< zUV|@ppN21Vug2%NSK%7>3S8!1juY-v@j>@8yxYALZ*`xH*SnYC)$YZ3nR^jl3c=f9IBtzjRB(AG-95SfSVWY?dFNQxq0A@ZdBaL%^f#!bHl&8 zy5b*Qo$)uW6#SX16Mo;-5x?o`fM0R7$1k|r;pbd!@sqCB_+eKoe4nc&zQff5-{fkJ zuW>cQm${na3tUa`*{;U8#?=s)xfkn+e^*h$(`VDJw{fgDQe!;3;KVzk?pRh@; zAF({w_gJ>;J1oQXEyi>G2jjTD!D3urV-c>euwd7hn6K*#jOzLvqqsi9Y+avV=B|%1 zL)S;xXP1ZATbBpe3zz%YBbR&F9hbYs+p2D_t&Qi(LM~=DJ+MbS@V$h0C9q$mIftxcq_jxcrW_xeQ|sF6Xftm*22* zmvdOL%ULYnlq_W2>DvVN0AhV)LChU^AW9V=Cu$n8bN4hB~jo`ka5pI-FNyP0p*Z z>CP*$3g;ErWas4=Fm=bqIWNVsoR?s!&Wo`m=S3LXc_GGdUVw!;|AYlN&&Rx-=V5Nn zb1_HfIheKcY|O-Y7WSPo6Z=TfV{a%r>?uWy-KS`K08%iT) zMrpu)I5l9OoMvGEIMrj%o$9cMPSdelPPN!oryA@}r)k)4PSx0Hrz-4-Qzf?FsRG;S zRE}+Snu@IfEO#oy7CMz;bDXANTBpgF%&7z;oQknQry{J|X%g1zG!d(JD#WS*WljZH zkyAdF=QIJ!cFMytoW^4*PUElyr?FU!Q!WX?ij0PJ#1!nQajVrw0_ z*b2u4Y>^`eo9h^l=>T#^Hby$eVM0e1*5eq9wK~RNGaQ-NG{96x23G7CjZJWj!g3rV zu~Ci@7~e4*O8~?=hGCJ8p%~pU1oLyGV;+vdm@~l6F$lA848#l_1F$a+{@6PQKkOyo zkpm68>P|S3xJV>5%$&I5PN5DfW5T;fj$P@wf~OZu>Xc$vj2(> z1BUFspvUb$qrcdHLU-GLM7ILg+kZe;+P_B^+rLBS0rd87QHA|KsL1{eiU4};U!(2z zuh0hjmuL;3-2MexV*eb?w||D_0y6ENq5}ITDA)cm$^t~$KSD$7AEJKt4^U5li~W7n z-u@nHVSg7j0(`Z*gTA-BjlQzGg+2z{wY!Plu=^YR%kBm`3>dPzjvlwWh8_g$w!4aM zwY!3@x4Vq40xY)s3!P_o3DpCXb{A2R-Jd98cLD7MwA=lGHrV}+)&R=whS3tc^Ju=^ zZ)h$c)9xH9use%#0W7;SXq4R$8UpaQ`xW)HJB_;7okHyamUbsmBfAsmSKAZld)wpa zE8An}W58Y8qv#FWBj{g%VcWy#knJJ#IN+e|L3Fq6FX&dldfNl&D%<_&V!%AxeW>1c zFRBEHZ1F6ZopQX<>-2wW#~%4VwP2397JJjEVq=%_6kdW+B=JXs}s;)&RMHd6+T1!wJKw&LL zMb;uz2$Sug61wrWCK0W+)`(P@A(s|K_PFu`gDnghtNsz*}*308Gz zEFi*aIvNb1S=FLc0L7{XwFQ`4O+yU;pDnA=w}2OxRp>*&ZOcmZ8sMU31^OG{v}HMZ z6mY^ z&}=|DfM+=ocA`krs@Z4fN`T%gtVjOxE z@F(D$#aQ$d;D|*ox*xE^A_v_BSOZvYk&P|@%(fVVY5-D;EEER}0J}bX0dUql89fO&4A^I$gl-3HG*3i-1}p{qWX?rr0n`AAc>;<7`T?Eh9JC2A z-8>$x1WX1LnzPYyfGj|&c^sMqU;`NDEHo4lU>=Kl16%04@QBP5sd!z;VDYrhe#dz*fLIz)DjZx)?AIpaUpOeNhnr0rZ&qplyH#z%;;A zQ*X2wkPpZKj575?`G5pKEFjX<6Qu)a01tq(sRwEcFb5a{zL-$aw}2ObM}Rvf?&vkZ zMZkH$X%jc}DBu8K7htoAE4mi202aYkDK^?+(X8DNqL15W0S^GT09TFe(LVv_0H**) z0Q-#X&>etHfHi<+fCYfr#V7K3E(c^2H-EiFklF99B>e@+t3)@3Rn+V30Mr62hal)01*HI^Z?ob4S*U$ zBXlaD7?2Oh1&jjl0bD>VAQC_a_yIfs&Hy`rIlvI`#lR4K2Y3N^1h@mZ2Dk_~5BL>u z6mS5r3$Pim7O(=a2rvhr1;_yeU=Yv^Xa&>*ssUwyNq{^+HXsAQ18@K_fN($%z!yLT zI00+`W`G}vfx!=C;g26k{EzR*1rYbXX(XmSj7tw=%ftBaFvdHK(+*>;!+7cUkq0Aj z%VF&C%gEl57~n9DH;l!76rq1SfE*i%YrP5iJQ81e2@>;uE^=-pR++qBXJ1F4&EAx2N*c$b>Dt)??`Mt7$5K4z|4_2bxQ}%kHm{>9k9MrGO%tW z_FCw`!;u(hANvDu-RwU)5>ISHzrjs?|B{i|T&4XtMq*?I_j}&3?%zKWZwkhY+SNCI zBz6;wzXW3_rS`dB4eZ-95|0SR6oPSq*7hb`miJyAiLo=L*YmHi-UB1?Y994`ABh{Y zx`%&}?72M>gN5G{_@{Tz$&q*_e|1}4*wMXyBsK_)?~&Q9ABnT^z3Z=$co*BdyoS|X zhel#Y2)azqdv>iEiNgS6DXi+$kHj=6?7TV>Tfn5#|LnDnlOsC)P-`FRZwCbbf{|%waKBrIMfJ-I^R&M8|rOC&1|T94YjMG{xsB(hC0wt z%Ngo1LrrCbXKqR;a5A zwNatIDby&1I-^i46zY9K%}%Jh3AHn!{w36~ggTT^OA_iqLQO}g%Lug|r)WCx}c2J8B>d8S(IH>Cewb`J)8q`RGI%iO;4C;+R%`m9@ z1+}}N{ub2Gf;w1G%L?jIK}{*B3k9{Epgt4SSb{o9Q0oZl6+z7*s2c>ef1rL3)Zl?S zI#3G->e)a|8mKD+wPB#X3)E}!#Q&}?+xd!;ruh4Lx%Ifa4r|l z$HF;PI4=t4HsSmvoMVLZgmA78&ey>?H#lzw=f2?l6`X^D^GI+m2+rrgIT<*w0_R5H z{05w(fb$G+t^khr!!dg}?heP!;rKTk!-nI~a4Z>)2g5O4I4%pvR^j+49OH!JlyIyO zju*l)KR9j&$KK%h85{$H<5+Mk3XUhiF(Ejv1IK3I_zD~&f#V!-tOAZVz%c{(-Vfj1 z;rlmyhlcOL@Ld+ZkHU9K_+AL#?cnxpZ($UJA4L*&(ZK% z7(UO!XHxiF37-w&^BsIfgU?y;SqVPxz-Jct+yS2*VE+&MeAv&!z8&`Gun+$kne!g@ z)v$kteKPEaVc)w*$axO?SlF+^z7+PK34_A>u%DC-G~R*z;fel=o3P(|*;jHM_HU+r zMOR=yX4zYM3HDbo<`(Riu5|Sd!~O^MIk2CBeGBYQU>^ee4cJ$}{sHz0upfYJKWy(| z8xPxc*p|cg8@Ac7orY~QY>#0Z4BK7U*24C6MB@*%qp+1LfHPnHV?LQ zux*3w8EnH~y9L`S*gnBF3ARJ9?SbtLY-3=%0^1VUe!wm{sQe12kRNETd+RCIt1$ttShj7z&Ziz0WABlyu&gM%QY;^ zu>8U@3(F}io3K2>G6>5ZENifQ!7>HQ5iC2fyudO7%LOb8Kal_b=R5MB&o|^hpRdSQ zN8W+YTjU?`d4s%0UV+a`VaE2os4y!jTXp2nj%Fh&SSaxFODnBVvbGBNm7WVu*Yfei42Yz7xI{ zz7ReYJ`&y&-WL8Xyej-l_@{7Kcux4M@TBmV@Q`r7aF1|@aI0{maGh|qaJg`aaDi~H zaF$RjR0^d+Qiur$g}uT~VXLrFSSOq&tPqw8i-m>4JYlXdOPC=P2$O{gLY9yrj1Yzh z1BJdqPobO8NoXgu5}FDPgEMFFIfJ@E<)CB`9~2Ju4t5MS57rM(8!R6z87v$eKbSo@YEUqkG{_!g z4n_>p2mJ=U2Hgf72W+$qx}c^clK}YU(>(5e?kB3es#aJAM5Yy@91yr zukA1IFYcevpVObw&+CuxXZDBn2lRXOyY$=joA(>^f9iYF_q6X`-;KUYedqg5_Z{im z*SEcIL*L52MSXMnG<}jjw6C|Xt*^eXs&7hPL0@iPMjx+_-51?Q@1ym(_c``i_8Ikk z?tRnywD)fBwcbB_&-NbgJ$%?ZXV00QV?FzOw)L#*S>7|hN7p0mL3_G;ntN(` z%6bZWa(mKy5_@8M!g~CAs67rn<~={U-*-RnzSn)N`$G3n_mS>B-J82tcQ5Lm)vf5p zyL-D^x@)`3x(mB=y3@M3-OO%!w@APfINLN=^LswN-ao6~+QC&%0v0b5EzFn?eHeE(tpE_T5-tWBD`FrQ-&V!vhI@fhB z?VQu8?8G~JI-5GHJ4-spcaG{z>Wt|O>GbJz?zHUu(ebY1X~*r3OC4uBj&|(s*x0e6 zV_t{4gY4+-Xzr-)DCrp2k5+n00(P+MC;}+l$-BwWqfyv`4iEw7a+4wi~s7XnWRnyX|7zP}`xl9c^pd7Prl8le7)A zwYJr?m9&j(OK;<}MYj33xwcui{b+sL`ndH*>mRKrTlcqaZe7tjuT|NKwRX1FwU)I` zXdTs>*c#m$(CXG|(`wNAw&hXF^_JgTPPFW8+1RqIWp<0KWw52SWm-#dOKyvxC9Wm3 z#k<9!#iZq9^Rwn#%@>+aHScfU+`PPbPP4puu(`E)T60lzPIF3gY%{&tquH+6u=!on zqo(Uk=bMf;?P^-vw6ICrL^O3Z)i;$kjc-bCif;;Q@@{fyGHLqI_@wbh<8b4##$AnT z8y7Ze8u7-?#_5fd8^<;Z8d;6>Mvq3D#vcuD8tyk-ZWwC#rD03MiiX(@(uV$q#)k5S z{DzDMPD5COcY}R{QNz0#4`*DNadyVR8Cz$pm@#LDbVlEd#u-y*+jZItUq19uYN=Q;(Bd8Uf)q)Q(sg+raq}Ys-9NwRBuxMzV1=o)w(lvztnB6 zTUIx-PE^-bH@&W;F1s$dF1pUI&Z*9%?%ni<)2~b)ntovV#_3C@Yp3JW+ow;PK5_c! z=?T-rr+ZDeo&KZtRqgHC3$@2(pTUtA|Hl>zP>sRYkYh3%b=6=nk zn$tCVYu42)s8Q4m)HK$V)r_m**D!1RYbZ6wHE*ZgpLS{5scE~Xt(i7|ntWQ{v>DT; zOv{;;JS}pX&oujKKdN6<->Uw-`bhP*>gClltBLB4>gwu(>Wu2R>fmbEYP0GORS&EF zsybD*r)o{ryeer`PgPx2aaC4TLRDxLwaT*UQ{|J&tCd5Q`zqH}{!}Ti?5nJ+EUwI| zOsEX4q*hv1eyVs>ak=7j#h!{a6>}>j72Opz6%#8)Rm4>URk&1`RJ<*}SAL=VSoyZ{ z<>k6^th}YXynI}FN_kYdce!o(*Qw8@UYj~Jb>GyrQ|C>UOzoapGqrGP`c&4`fT>PX z4X3^;yIFR=>|oi(vV~=evc9sqvZAugGIm)|nRA(O*_+barNgC%N;j4+ELD{DmDZIO zm5wTnD-A5Alp2=4nsRf>Z&MCTSwH2cDbgw3Q);FZOi7!IS-hfHSBw-l7EdnDDvmD>Dy9@07QZaIQFNwgPtoe4S-_y9rKqeZyC|WE zUgT0_T=Z(v-;>Tx+B@mzNwX&rlUgQ~P0F5>Fo{0Nd6LnjmlJPH9GbWXh)B+yh)!&p zIC)~$ME1nMiH;M$7d|VzQh2IxN8z$UP2oUcUE##S^g?E#PoZ_;r-BCs7YYs+Y%KVx zKw8jQP+2gpAgLgl6F3usCOA#_k@qz3a^8u&t$B;{6nWiw)p_IdlJmmyT=R_cUXH&$ z{`B~ryx%6C0 z?vI?OIhS&d=4{IODMy^smQ$9Kl@piamt&jrDf?dbaQ1=hHQ6(>k?a}S6SGsZqq3>l zrrEE@Tpx3K%#JZj#wf;gjj0@yJ0@XF;24K7U$P!%{gHJrYi-u-EHtYjYf@HfR#X-> z%QWlN=xd`-jovnT(P-)Dj?q&`j~UG#?Kj$H^oPtlnZIT3&0LwO$?VIVmYJ8Clu6HY z%KSF!(Wncf4vtzoYSt)ZRQ;&JQT$Qiqg+QBj(V2ySH{tdjT!SYh>WI;;*9i+s0?a` zNyf|ctLZ1wH>dxUE=q4nFG-e+yLVg`TpP$U9^PTu#Qy!!Yr|eHzm7+=MO{q%BP2r^Yr`V*t=iTBB@pkYQ^Q63X zUMVk=$K-kPOnEPpuOuH!-k3Z$8B3m#T$s#D4oP-O{+je4X*g+L(#j-tQg>2CQg%{Y zl5dh_(woHVi6;}cB+gGH5*rgICGr!)5}gyjb02bl=kDjOT?_{_P-Img+}S;~=f+Bv11QJiQFm1D$t7Jo7RVEmeR zU3_1Bb$o6-JDwJA8UKcToqdA6i9L^vvFq9S>|}N@+n)U~?snXnxE*ne;>2;yaYb>d zap7^!ao<=ESm#-LSj$)nRtKw;HHsC@a%UN`p2S{=JrKJpRvp_NTOOMg8x!jpYZCiB z=2Fa|m^CrlnBJJmnCuuf)tY+pgt;! zKckwF%V0Bn80L&u(U+r-M6Zk1NB2ipN9RPxMf*gXMZb)?9CbKqZImvmFRCgkJBk(M z6=fRrJn~ZH!N{K@HIY4$<&jyD%t((&qsXTb7a|Tstc*}abVig#jEabgaEtg6{wRDn zd{6kYa9Mb3cu9C_cz8G^{7cxqu(M%1!WM>!!WzR0!+2rAVRm8fLvMzj3f&w!Hxvz> z9y&gh6G{uU41FDPCFDrR+7Nw6Ur1%hn2?wdj}W7fr}PW-{qz-d1-+dN4c-yFFqjN(2rdXt3Jwgm34R-NJ?MDQhM-wN13}e6IYF!-uOQ=~r-2s&_Xn;B zR0OsMP7X{93=gCPeh#=3Fch#Y;HLmQpgv$iKth0DfMvjI|1187{nz+w{d@e&{WJZe z{oVY3_&xOd&2N|AVn4B8qhFz4vR{y&jo(|^b=oo7dfH4{AFYx$h89Dk(hO;jeTRMb z_%894_%{1a^yT>m``Y@x^SR-3+-HN&OrL(AN}n-4F+NluL!U?9!`{2Smv~FOo4hA_ zCwm8Z+jzhAy5@DvYn_+gtJkZ-YqS@`%gyVD=L65*Ja>97@+3VQJo7!dp8lSep07PF zdmQ%o*+cEo;#eYv~Lz16+Q zJ;j~wZs-2a?S|WNxAks%w?4NDx6y74H#fKMuJ>Kfx$baX;EKD}yXLuaTzy^5U0=9d zbUEO%(naCY=2Gk;a0zj-cX{u8!})~s2Ira1ea;omS1aQp_mNo&I#%@3h=W=G5v`}2co*72I-QOC88I>#Qzsg9!@BORR`zc}1+ z_|;*H!#oGXp~fNCf#u-oVC3-Fe%OAu{bGBOeS>|zJ=fmP-opNs-CuSG?N-?-?b_{1 z>;!fpcJ_AfZEx5fw_R_mx9znpx6QPTvURcjYIE0S$Y!g}JR8KO#wOQ>W#egMWb@d1 z*m}41Vr!9ggLS?&*P3Q+ZvDdQqSXPb6;^VqR;wbb6suq>TdTL0*DQ}(uC>%!c3YNN zrdx(vI$3_QxMgw5Vw1&eivf!&i!l~V3wMj}=J(Cdnr}D%$s9AEZVqOI&ArV{%%7P3 zZnnp4iJ91}(X7BM(ahh>((I+_CDUI_SDGqJ+f0j1`KEMJThq5D*G!I@tToY^beoi! zWSD>%MUzj)w~S92Z!(^3JYZaDoMp@~b~FBNbl>Q#(RQQxMyOG((O9E6BQGOkqbG*L zhPw?H8;T4Y4D$`ShJJ?ThA#{*8XPcKVIVhXHJD_;GYB%UF{m^(FfcNJKPH9)V8JHB z#K2&T;mDf*=gY{@EEH@v-UYT9c_)HxMurxaa7`dw4$Xz%My3XCz+*n>kDnV3X^ZKj5yV3SF^p+88N z%>cU^m?K~_VtyKY3(Y@*JqFFo!SaB40@&DZz631y8CYb)-TDomfL|7|a9L!y8vL>} zi2?_*G}#K4tsG1qn(qZkYX|UU^4J`%Gzu`V_JsMLm@gPf8d-vax;%x4!&0X=h-u7jAxKJ__Upr=MYA4esba zr*E|Q@99TQ&@{5?eX2&oYbu+@^^&NEw(c|2JuB?FRNRS@CaX3+o1W;VUiv zbJsT3f5X4Ys(+IX*6ZQc)gxyy3UCG&wHjWDANaCxgD3sjA`&cvD=D!I0a4b9|0a_%OL#}{_DB92Q!W2q>c4`c=U>qgBk_=dmWXQ zQQ#c^xsLVVw3a6DpKRd@FS*KcH&|n5C;@8>+Z{%V6*!{7EcgX}49!3;`+Nh#4hOhI z1FIY?Vct#$c;PuPy#?m$a)2kP2aEP&4Gg;-;LSXRTjAXp_Kc(h!Hy2_b_{zR;O(RX z9Q(j-h64_;JXgc?Rq$nqIM{%*X`5L${hc{bfGvWX8MT14Eq2ULx0b;V&0-Vq=$c|!dZ0BiL zXyyq1@D666SOpqbTl2t5@V9m~Ft+1bCt7Dwzz+Yew*XgYVrUK4fi0$nV2fD@$mRvA zm-)zoEi8)v+0hj4XlV})2p6mGYUMtuWCLLM-Ptr+-8-lxKg8lwK*1iKi zit77!LqhMpL+DLHLJ!H_Lx)g95_%w{($YvHed!1YiXb2$RS*QEsR(560R#a-KoKbl z3J6G7y0pCSS@vS&_y52Dd!P5_Anuj$h8j#jmU! ztb8qeeKY)o3eL~rg!5sCijM8La+UHN58EqySg4q9vFYtgy!ukyJz3B(5m}B_9yq*~ z-u`-Ni&ride`z`++${H9{Flos*%@!(-`9)dF|qWM=GD7FuiwH8$3tidkVcM{&k|ow zT0-QPqt+=WFU^+(IKHGiwzyaVq>*ou&qzDy)n;i%AY`+&V-VO|npZz1z8qe@UfSW6 zizQGR`6gHS(!5_8nCEu|zWx+m$T{V+%yqP{4m>yS+va^Yb6K#jTizX7IzI2YTw2-3 z#nS(uT|JlQ-L*Yd+;M7Hmd|th?^^Te|9MY2kXhQ}#sBN$)U=T&BEB z-u0Pymh)M>xY$HX zc)Q^Egt(Cjp)u}JqoX4e-5aL1ZQUq%WNfl~Qe0egqI+mUjC*8ESY$**WJGW)kCyJu zJ-u3wYY~j?O=II?fp>+5jSe0i8y=k;5g8m48a`@tY~=s%!zQLBT3-DUzgJ&mvEchd zBEpkehK!CKofI<8tCdH%{NRv?$f(fd=%kROwD`zGk5O_RLlToBki209w_iRN6Ph#% zYmSSX-*KT`|8{qAt>Nw(=HXgxP<7Yw?se)koK~x5E!Plt*Ou;MT%$c?WvIJreRtOs zch^#m)j)Sw5BJ)xslM{wKzG;1?)ji!atRxq6cCvbnUEOSH9B-;fF-_DTw>SI@T9l| z%jl@6B-v;Q!D%OXwGK(L^a)FAZo%o}Wru*?A-y{Ubq@*j>(i}&uMPo@lTAztO-fF* zB#w$pNOG4PbYSG@k)x6l`{6Tfy}X-S5=W;;%CCKW^Z?7NQ|J{LJ2GjM;~?SqVtgfz z6&oHYSIZKMZV(!ck6HplI(6+Dgi}h!(OWdfiG;@`hD15e*zql`yqY`Tb)0dY@Aqon z*7;q|9~j@!@#BL+!=mND0din`HO|Cw8VUb#8d1@4p-Gnbpz)(4BJh#uxY&{Ij(_Br zc4`;gZFExiU!Ujq$uEC(`T>!l(UzoFXX&4mV2KaF_E$%Y zh)b4VD;>-E`(AZOOLA=D=#jCJ5$@rmLK7Sx?i3dp70^2_VszB#$OPQDf8PD)hrj-m zoayUZ@*i6rx8k23)4x-vE`foTZhiW@ck=Rb$AjwO<#<#*y}i8M8zw|XM}{UwHgX?| zk2EvSbJJE$!!RU-k8)3lOc|Ys0l~d_OV5_xt%tccjR}uWwuYn6MW!~5X^HiuQOPl3 zXrr(_Dn6xU)5Q3u5nioji`>Je7zV8Poe}O$M@HZ_MKx{i-n4HE_oh*?aZMAG5=Mt( zm*~-efzZ&IUe@~wdef;`#bv}S*y!mGo z=@8JZfA21Rft&fR8{>#OX;tYXd0 zQvUUtyl`{;j-=Py{+abTQ3dE~lz7FP>uggooW$t_LHI!@IE z>v@P6LK)l&G4{R>R zSkJq-T2Kb%SzIlWkN>l{T1x-3f>*8<6cc$C*EjCAtEFO|cV+*|j`RQLsITv?V?Wn_ z?zVHi${U}rZutaTq!-FFPzL>JXP!MA$NjGclDbKjx)FJ&yH^9_zbAhg3Emh#WmbG+ zlVb|aGeo|*E+5JB_J46u$9Mn7S^gKZs>K(-t;kyzi##v+%2_O_(&83mN{jw6LE7pT zM<2+COZB#_qszP_EiV0g(&CoNQbK)Ia_~c8{%wZoo$x0eaG1@akig2 z+g;9906F=d3(oeovwiMtYvUP}_uDwzuFh6~R@olmY!jXBBxgI<*=}^U$DHkXXM4-p zK6AE3kp0W?Dm&X&&bFho?ISJ9`~YV=K-$_C%V=jCD=j{s=3LKquFr6;FLbs`o!dWg zu5Wa%?{Kc?IM)w4*N-~aPdnFtajsu;uHTXt=hYNrv3$R`wCLAC&h-(}qF-k?*QZO1 z=U|m{eY3Q9P7XWQf07o@!(Yzzm(t>SsEqHB;+DFo&-@TMp#$S0Z(a%aqi~dz!TI^TZ*}6-M{ToV){XM0{ z{%xhj{srW^y8qMPu5t0!y*L$1zJ`GBobOva64PRmLc`D|CA?}!nOCTGk}Mul zh*&(r5&=4(aPp9i9{)Ktc_hTijvjgDHOC}ow!bk&%AEJ#yd|^afAf}OA~o;j`KJGF zd)`Ck+5La><<4`)?~I5HOCE`;Cn^q?!0|dXEDV+5tE=#8OLSa#-qlc)k0T?U*Xh+B z|G6bv5FzIgaiJ|9;c+oBk*IDRSNGMYqJThQCzK8zp-HF~!;+J5*#F~2GA7*a*O_q3 zH$I6j<5+6pU)c{ss$+R`KY34<1_*TJ|8YN0?DOXL&c`;hNMDpiatFzZ+aqN8t*ncs zJKCBE*+)XYPqxYN%=sR|Ym2-5^J+228-dk-?dR^?fJPRxpX3_<+OJlgH}kw)@aBH? zu%SJ|xtQZgF7mJAMPkDQ=T2zMev+g7YriYlAV1K#nEftd{a^dt#s>4_@zU%kxy--z zlR>r=!nv6JDq$zt&n$;fsYPK-F^hSx9A4zT9}TggJvxQl4-7Sq@0HV)G1+`Zj^UBt z#nL;^2J^D@8~bGxaItjD^E=Fb&G91d_l^Q_I05^~_hLwU{k>h@INrWOE*5vZZx(aB z4sRUqkIF8N%Ob~7HltYT34x zcT2ApZQ8oKdpfqi`q#_Tvvup%?(SYK+IqLdd+zQdirBjJ>iUW>cy&}4OT*XaDO;Ax zgbeuP)mYikQp-}q692`dEycQSe`v9l?rMKh$$i3Ymm+SV9YS3vbevHCM3u96C$97f z{2Nm3`!c=D_Lw?i-v~=Rm-bi}Z{B9%51skRizej6RUpH00kW>d>!*<{<5O-?PM0U-1g5cwExExs=GXeZjDNzs?Aeq`_p9FzAu@o%}l1- z{>jv!Vlo~6C5cY0Od`LiBx=w&iDGXjQq3)i%Rry)PY(O0wLXmaN`+Vwn^hJ7AOF=J!t zX02E{bvlNc&W@pb9b%~Nqi8y?KAL_Ejwb(-(d4stEPaqLmWJ0sdvXl7e&O`sC;U$`>+#&i>h--kQ{( zo|WlO-Bt%t$reG>e_tR~>K90Ze+{5YF##0xv>%n4-j8~e?MJT5{mG}XKRx)oFEydQ z^!uScR4t$nojTW>N`?2PBR6_cp@d#^@JUZ9Z0ku!-Fi~lnLX&25LzcxSlgS9ENn}iinXO46WY+P_gjce%g$NR%%A6Q$48By`~g5yeav8`xfnN^%n7pCN#8Y z6PlCUmEccu*43mdMQT$0m>N{zcy*fMS)EqRtwtgDs?zR&s`S;i zD%8JB6`DV;G9{j9T z(bDuu{nGTygi`d?xsv45vLr>$EIi~duruPE5Kh(3USJe^Q6;-0r?`r?%OX^P7i)!}yU)8F_3(BMLdF8e2 zXSJ#MIkozmGpg*6)9S^oQ!2vtqv~Gzr22H#_iAQ~6Y9p-$JDoh->J7QA5o->5_D_N&gVzE<7$?p3FH?NK*RYc(s(uD-mrTg9gAQrmLBQd8dEp{|zt zQvI~(b2Z3)yBhn+R#nPli}L&YGgZFbCN-WnsJPCbs+Wh>sd~LXQCCi^Q55vCYH@m% z+BbNmy7TjL_0_Ot%Kg`+s=ez1|stTctl;z?AHG9MdihrG_<_~{gl{){PYCiN` z_593i6+7S^HS^?5ZwAfG*z?5Hdg%t8mLWe z>#8+1YN@tvHPqPaRh0EuMYU~PIdybFX*Daogt|YhsLJ1=klI%#zw#)MPrZNQh4roZ zkF6d9|FSNweAAlp^Y7OEOD|Yw3_D{zRQ(6*wDU)--z+^~ojsJT=PU2D?moTE+T??c zR?mR7*5f5sSc@F_(0Xm!JnNW_v#s-AOtVIRHNkrQN|H5f$S7;CV?(W*JM^{A{k)^~ zdHvSbM~fO+-!4+!`c+0L>wC9ct#9qRdOIlk3~toCi|J<~V0S(tCW+s%AE z1E2ZqJ+i>(RLR5bkU5g%2hWfLoGt0MOY#A1-}NKfpN~}7y%p^@CH;0!MY}#QW4GiA z`0VZyXxH7|yn8?LhPO)|-W`v2gx96rl1Je9yEnW*9?-5xjyKvtM=IoK7oC%L@bnnl} zIg*>;x8xjqXruIr@8w*5V52V&FUWatA2~lkcXDHU}Kfk$eZ&EhqdB8_mD;b58zi z_@2g>az46(-;wY~j^skPwmF+GAxCm~nA7N@jduAx%lYtE8|^$~u}hwW>u(SK#YSPJ z3fecHvr)5_MeI+`*yz!~;&#cQaF6WKr)-qGysUlUNgVI%3ih4f zh3{4=Sv^s8h4<*Ao{2M!+AF9mo?VD75|6Bwku-odbW+qe?87FIU@S7efM-5Z7-B+-!R2S zNlh~Bb0;Ft?2~Pm{1N@!-af-d+HaD*P^yiJ{5;uyFv*5|YpPvxOFRqq`mr|pVb0t3 zgJbZ%`%HVtNE`WXon@E26VHo1ZUlbk$vO7x!8ZCl;ywG|!8SVaaIRf)Qan@kssT3o zyW$7-m_9bjzkY%J%N{sRyG3@%SMl808+F3=;3f7T!hW}w+LL|oxvXV&$z}0u+84J# zzgfQ0{!ugJx1Ou*3!B&|bnnM@$#e1i+GFaVe_Z;+?pG82BXPaGT2&jRxNWdY4vc5q zzPb#aw|bx12bHkVgfBPSU5nVLR=2Ho$&WD(*nM4)myi0~e)xGdoqO_yz4w!B3YoFP zF1a(t3VWNo*%b8YF8fC}vgzw~IrhJ=WYb$m>~_hkF`n2z_$8aJ-rQsV@pLwMXYR8X zKABCEi|w~d&W$n0-v4kmVdVgz|d>rGFJ?)EZS{?J9ee{-W z+VSF;-G4(i?Vo+ZF1b3!F1uxAHXYb>(tdbJHtn>YvcJ6`o7Q~ylU?$7jBobqv$84T z_F4O^Y1z~!>t}nNiTJ+a=k1c?V+^#nO39|Iw|=v4iO(jFoQw8aW3%a}o|o;C|6`oA zUkS;kVq>q`+YZU5#ZRx4SIe zQa50{wa0j6Q|8rs_Jk(cv?uw2J*HkZJ#%|xmzn}&vb}3%T)#Sh+v}Firo?Se?T?FP z)ASC{?NV=G+_q1$WYheRTzlK6S=42`MPIp(Izzc=sYNih>sr^cXvuf^^w!_9DBlOJ zy7jp%iVSwsQm0`2*LAvz7%qS$Q(^i9U+(+X;-VK7JNncK3cd!fSm=!Pts zcD%55U6Vz;poo_G2J?sxT9`$(>J`(m?`2VsTg7ztj4X=TUR+DLv4L%M<%sOsH3HR!#u0kf09Y=xpno-<(c%(fqFV@VJ6+1 zRbNYOhq+ikoR&$SR%)oXWM|Uz3k`K>N+xw*(@0C*hxuBsjm)H@UQKknVVUIiq>0`i zlu51iTUu&D%;|b}r%amK!$UXp$)r`Kn(0~1Gim2f&9u~unD=$dTAB1in3qnklu17} zY_4~d%%tOYnro>gksIhTFEeOcdQ0u~FoPDgZ>784%AnK&t+mvd$RBk7a~V|o{WiMy z_Zf6+U|a2TD1)|C_tsK_BFE6rzsR6k>)Yw?HfGTASReht>I_P0>8qtaMINFH&ds1r zY}MPQXONnzbYOM{9qd6`YFFecI(2LY?LXCCKM&2IHcL9_ltCG^dPGMpbuIE4-KR?i zMcnM9H~3`G&MlqwOD}9s>7u3PMb4w&u8~2rEZwv&mqGgubkjGBWYAwTyKAY3kr(NP zkJG7b`5wB>?R4sUu7|c>PN$INJ+;)z$enc4<7gZ8))fw<(}+90^}}81f22`l$>CaRdgO$9=?`giX<>-|=wKR^4IZIC z$Vnq#_fReMKJrFAYHb=NtqaqgmH-2Y4%g-If9aj!8KDIWKyIlQr=?N)SCP6;Y#PDt ztp5&6qweiTYQYJRf9mGF(&+xdQF>4NG}<+5wC>z0jnev#(Sji$N7bG+fGhkoRxc`( zMz+P#`cVO#=kORU_yY1+{lVQ-YH=l2|8zN(wylfPCC;Q$!{~S|*aLE1Jz@_qhkN66 z#^7DEtO8ZpQZ)RKwhmIHA|(ON*Vh5+Nt#M&lx(dLMlyKmZ=5nK<=&I zeKDTg>t^dxe~qV$SF`oozmKOy>up+a5aj1N_{exlS~x-P(Bo;(lL@-;w((SG$V4p| z337P--lFmJcC|_Rz%0C4G$R!|FQ53ljW^``2Ib;r}OX;by13ghYQwW(Tg7t{;-!{;gV>-uSW=-m`LS7f>_ ze<_7djGe9plR-_P#~w_fO-F(QF@EX(|`s2ANRDbIXU3E$d zJuW>{znzjoUnk7eg5{t#(Ork8P|udL^updLRPcjY`U0hp{oyPvI1lO;7X{c z^o)+lbWOjntG7(1RyF78we^xI%QjC7=7gF{e^e-$p3!_=^l1`#t(dRlZYEKfN9ISgb#N zo=Af&OSIr$s1tR=3yE}xm*}&{5@~bIrFtSK(iq!PE!Y@pN&WeXL^`fM(lj@bQkQ+C z_fAZtsxLp%f}5e<)a$|$sjq#RE)keWzgAnW$9BT!GnZ?@)b9MeToYG0%(DX{H^z;1*^xODVTCh0OwwSLI$kuwb zelkCS4t%g$|2`#w@;_Xy1*b#(t5-xMP{Q_)b$n0)Eibc1x9N=i#;wtU;h{#>>*^$+ z&RMGi$|g{mch~9%`4Xt+owZu<$|bZLKhev-A4fHduG3Zbj-xVT)@i~1P;2YQ z%g51`2J7{}cgNBGY3uc8+2iP=E9|F8+ExS@s#@WMlEUv%Jr+C`9Xp?q15Kq33H|gu!fiw31 zObgbC+Fvi38&3zyY}Qc|;;G%Z&AMS+JgqyvSqlycd_d3b6;I>d*`nL{!~-AOqJL}@ zPc{6uYQZRhA?SMr;%Q6%Z94H`9Ni7yrf*)3qXzr7X~8dnGicruN0YL*>#CdMXw5I% zb?irRw71>oTCh!E5&B7599?(zlg%X~9x~jp!%lE!soA@`wcxD4Pjq6* zSZduPN8fuMLz_Rz(W7p}P_6uSEf_2?7VUi?2L0Qv=WUCj9@Vw}eR&KmOV?WPS>P}_ zIz5IwTd`g_GKS*bXMHRvhSuC=E!Zuv8eObe482&tM^~>FLp2KS)%6O;P@9OoT5w(9 zIl9W_XbP;cPZvB9P5m?W=^HuG)bGqbEtoGbAH85fGn#$k(TGxn=rh7g2 zYr%to3u*iv0$Py&fUes*nu5a)Xs#ViRr!DxtQgplKKpDeO-lVn5Bg&)H9GZ;KKA2S z`qt~9791J)l3uZCEZx6xP(S-{EM;~(q!EPYY_TP^rAa4MZvax8@(`&Pg6Yz%$Y_=x`C+8Fw48d_k}z_Ro^JcdTlQJt}2 z49!|{RF7CVhBiMwss*%jiC#hztd-jjG-GvkLkr-$IzXT$FyMDz{Ipm4ZL6T zxc;Ot_Rl!3J3SmtpPfFg1@8uKro)bors40N(7*2(O^t7!(8E@braN7~*MfxuThlGl z@&3#2_1wtORCve_`l|nE+VsT_T5xjUZ#t>LX!<$&r2eeTXc~Fwr2h5AD7sPSM=cmS zFgjiT$5C|p+>hFqM^T5?r?lUvqv+$gr?lYf!0~jq38ScQ_n)-)*irQ1>YsF-0i)>L z%b&Dh@4))>xhA84pPtt1DvYABrOxOWmr*op>=`Y%Jn%q${-=?&t=3sReeX!xnR!+> z+BlMSoIa}svj=9V`%N54OJ<+bXU2}C34ff^{RfPsVV!=~g69KQ)UBJ0q!&+q)*qG! z&L8-TzMmUKnV!Uh~()4-lx;~1^RKB2v2LL{)`)5T_<6{@} zxRFt`zTvNWO1~(oIr&#D904#){cgP|y4U76{dUPH>ihn0di>v!wEEU>TKEItoZ9ER zNb+2HQJ2~gNn@T})W58Vq$T|?Y2g-th3X+mk#xE6WnFZ5Bs~qktUvD-Nrm)fExZHp zQhl>ZBo#^cU8lK4(#s>i>zB79=z6^?S~v+{s`}2J2>ST!6+QUV2uf~oRqvh`LB6xE zYT+w@yXwfO2-@2In%>wqf`%==rf;^5AeRT%v~U@~W_6#U5#;g7A3E_tIPI`p*K^K? zQ=1{zweTFkZ}o=F;Z&{o4ZU$uI8BVYq1Q|dr}KP63kL#>S7!udMJ!iX57}ood7G=sUL>XM4vml)TA&< zn}0{I7!yV#Z{N|vs{l{dANzz+!{v8%mAYZ{?D1VatymZx@c&Z_=K{=GcR3$QzWM&r ziw=a+jUj*Oi=pSo48?bY}#Gj(?zq#{s^rujmo0U5zGx?(;)7#d7lJLcnN-Gk{tOgdGp8C=ER5%EG6C*WlQ$ zLn*tu8>hWBlxB2yD@#(7OoB42amikgk~RhWB>g_XvzaO_WE=PCD+W)!oz_d z;j_s@s7G>sUNLkCy|p4ghjbVMTrEEfM+Xjt_ZJ&NU$__GG4}@3q@D%1;F-bHGo=6v ze+Qn08?7Ep-yJEyo8BHw(;i_xb}+T8Rgi_-0~f=Eya&_!DFt~me}x>dC(3kL~~iF<4vKwaaD@|6z; z(AdRAIW>I%&Dvj-g`Wfu#Zx*Bpk0-U@yiAS=y1nk9A9hzos2HV!d-%^;&!Ld?kUFe zcJ`+eH;VD)kNVSra>ZGAP4HP99o3&c8daP>?$MtnzF(Yw^yp6^ImKBxPjFsb<#7-d zD^-HMeh#8@-X*v_2hpnV5-fZucrorWJ&5Y;D8W8sgXrhqN^s-8K{TgGNfxdY+!^1l z5JZ=TmE^CV2GW%2CHcJzfmCa2NfsUz{2G^88%Ta`rTE~CKswd56eq<5($ImWSU6U2 zaQsEfKpOaIDfX)rNZ*|-#iyPHko83=7XB4H9iQ44K*jt^v)|eP8k<&{Kc5jm2UeA4 z;by_*aiV_!jeJ;|ziAObTWXZy(iH>fez!6#ye;@Xe)oJo8nw6#@7vRl7JpraZ?Eo0 z2XB>O;dH?Xa^o@ms3etTYwv#4cvM;L=Gl+h&n?Ts_kuU%&X4?Q=;gB9=Bz)36f4KI za{Os{t8y${Ft|lNKhd9hPA|usBmBvGOF2&K=1;ZGmSf?G!9Vh&V*d17r2Z&tiThm_Mr~@DzI?R;5u1t=tC)GEAo4@`%ppOihM4v56z3H$ihp559I+Z`_Q5< zD)Nj9eW=WZioE?vZ<=195({Sy&XoVm=}p51R^oiid($3UB`!X(H&tI(iG|MwugXQb z^rrn!D)Ec@y{Tla%KS&6-qhc(G7HxY?v>Xb?M2^xSees4>qVA*mAT7%y~yK6WfmSB z{4DPe>_y|-RpHcDy=Y!o6|PgU7pD!&|PpHYF0RYF%-@fQZGmh8f z$P3-*$fKJ4x9&y-YPhrL1HglGp$Xk+Otd?$LpPc?&z+yP??zwla%a&FfGg*tF5T#Q zp<3MdQdj!BSuLKhuPeC@ti_@$0H4m~CwC>cHMKY>yemCBQj2GG>Poln)nd^cfOF@| zuFxN}ug$K%ccBkQ*5+#ayU@5fwORBC;N`i^lrB`_m)h(d(S=UttHUiiccJ$i)nU;p zfV=0?Ze8d_N*#W9xihW*s1ASsb!Y0kzYdFz0sKBEOzuq6OV{N#;hm{U+q(R)V`o}B zye^Bz0U7`vlCLvu+)$S-mpW0sAL{aoy`5;$le#SW2j~R&(1cDjwo5(kH=+|A8C#Ek zpiWfx{dz3g2xtjdzwAi+FVy2k7dldr{Pp=Adq?Wgq&|yo0(t}X&4hMhe0`oVv?E>q zs6HQShyC`~XVFwZlfWJS?m(SNHQ@L&9cV!72E1rT2MP;rz@oQ+Zh=oEqg~g4F9vm> z&|?kwMvD#<^q>KY76aM_zV=sps^7jLpF7c>@<%n~1Do5^g;@<*bQ;h<@U)orlzF-# z2lr}E9bPo##!cFjrA{Lj4F@z5y!j8J(XowqJ$lLfrMp66$! zYeU}RuNqjXP-@^<8EZN?vGwxczn&Dd*5JECdL zSadJYt8lCG?P$dDX1wv9H(kBojH{pUrpQX3ESeZ-TKL*bZ}JcIH1_Zt`N``YtzsM6bE`RvJ_kA+-hQGrEo#|{07EvA^av5jS+q$0-yp--^rozO=ZeTC3x7=4G(hZuc{(5G0mQ0QZfzDDSCjJ`+cgN(jN=#wlu zDfCfBUnTTeM&Bj$VMbpj^l26i75X@%uM_$_qwf=*0midHcqUl%Rd_}i&kEt0VLUs8 zXNd7E5uPa)?G>Ie#|7TOL&GE&obeeX3=cn z8D~7}glC@d>=VWS##lfY6Ik?I7$X>C1!2r!j2(nAgfW&7#uOH<7seRISVI_d7-J7% z3}TE$gfWRl2Zk|R2FR+##qK!OBiz*V=rM0W{kyzF_|$oi(ZZ~Rujf-#@J05 z!x>{aVN7Syq+yI_jP-;upE33m<^aZAK$sI)^lF$R7;^<-&OlyWpD>3o<`Tl3!lGrv z9K)Dv2y+f&?jg)UjJb#~C$Z?FPX!ko>Ry9skRV=gDm=`5N%%<+u5o-pS#=6*sBz{mv%IRT3v4>$TbK#2P5|&)zFPQ{`PM2^MCwFo&EBljZY zV2oUhkdrZTGtpZzay3HE#>m|WIUFOGBjj`}nnL7wj9ib9^D%NiLJr8t1qnGJi{219 zA|qEMj>*V12{|Vt_ax+?j9iqEld|X(k)twlRYK0n$Xy9J zEF+i2b?C{WVMLD0$aM)hFC+IQz9MQe!~gHdY`Y7R#2L8w6(wFsdmVbNit zMq$({gqnp>yAWy^MlD0AX;?IxsBsvz4x#2@)INk7h*1j>Y9bc>CTb)`twgAq7_}3j zhGNuGgqn&)+ld;BQEO3JH-AR$MX13TwHTo$W6^!0Mq|`!gqn>}yAf(QMlDCE=~y(O zsPP!J9--!A)P95-kWmW~YC;yhC~8DTtw^XD8MPy!hGf)|gqo5?ONttkQEL)vPDbrX zs6iRED4`~0(V3z~Wz?#Knw3$z5^7jREla3rSv07qaT&EPq2^`OzJwZ>Q414lVitWW zYGg*OOsJU|wKJiHX4KMznwmwsiW-|yYZGd2M(s_g!5OtUp(bb1wW3C6)arzqol(0J zYIsI1PpIixG_R=f8MQv4=4aIY1Pp+I1rRU+7CkI50tQwM^69I!_U{M52ibW?3jEaF(5ilzTc16Ij7+4ko(_+yO z1LI;~T?EXFfqfA$Fa{Pzz{FVe#lXlISQ!B`V_;_l42^-M5im6t?J+Pm2G&Nv+!)v! z0fS>;aRf|`MVAbWj)Bz?FgpfzN5JqHSRMh>W6>-F<6~fb1k8_t{Sh!g1{O%b1X=XV zzz7*wAptXFV21<@k%1)=Fhv%vGcZO5)=0n{8Q3EMgJfWl1Wb}e2MvspfmISPO9pmH zz%UtDCIQoA(MSX1WMG{H%#(qA5-?B(7D~WGS@hGuNEuiu0W)P_rvwa@fu#~KRTgbE zFjfZEs(`sNuvY~PmVw18V6rT_YhbhttX2WDWni}o7%l_LRlsyvG}*v-8Cb6Z=F7l- z6)<217Oa2?v*@*f5i_u21{sG+L8Q8Z12F}336)!0r_=dPJ%_p4vvDsRVZ*44DLdK!(eb33Y-Ru#vL37gX>V>JQ&=E0tdq2 zLKHX=7X3Ro5(ZbIz?m?(69o>1!KEm0DlFP~a4Zb2MS*i+a4!lR41zVyG6l|z!JR2^Xbdh*fm37A{)1y@lEsGrj*`JuDsYwz z?oxS=9mU`>6*x^6j{-PO2G^;;c`~?91rC(Kg(`5OEdB*>qztZ9fiq=rrwSY@gG*K5 zR9UCG!I)AUg*)q6W1rC?NzX}{Mg9}#RgjxI&;D{Mqu>xnz;EokIWCoY4z$vqMDZnu^xMl^;nZZ3PaL^1c zT7i>h@mYYQW^mOCoHc{HR^YH1T($zI&EmlT$Ialn6*zAO_pQKzGq`XCPMpP`0gjx( zl`C-O4DMWkLuYX53Y8U%(GK|zzi;v<1ZfuU7U&@3>t3kn(rhL%A=)4<{}fyRNMbx_be zFtiT}8VH6KLO~P3;y-~#f}xdA&`dD26ABs%hL%D>Q^Dd*fyRQNwNTJpFtis68VrUO zLqU_l;#+}6gQ3+>&}=ZY8wwf@hL%G?)4}3tfyRTO^-$1!Fti^E8W4sSL_rh6;&*{Y zgrOBt(2Ov&BMKT4%r{>uXi8YTFwmGVv?dCg6NdIgL4(53q9|xmSbQ?js4%oD3Yry$ zc11zM!qBoPXj)i2G|;#(v@Qyo7l!slK?B3k!eAVaXYtoSBg4?jC}?JYw{KC<&@i+# z3Yr=g?+r9I46TiV=7yoYQPAKpv^WZy92Q>=G&&5ej)G=~q1{o?@G!JI3Ys1k&ki&` z46ToX=7*vEQP2P}v_J})AQnFlG(rrmkb-82p&e4t5HYkw3YsDouMadv46TuZ=7^y^ zQqUkVv`7k?Bo-eKG)fGul7eQ5pH+^G*S$$l!9i8p`B9DP%*Sr3YsbwZxJ+B46T)d=8B=cQqW*Av{(w7EEeApG+GR; zmV#!Bq1{r@a51!83Ysn!PZBg<46T=f=8K{IQqX`gv|tLFForfvK_kY{iYaKu7}_xf z4H-jArl2X~ui#~Z#*CpgQ_!3-v}Xz$G=>&UL6gSfbE>%opSLYl(5x}EYYG}R^zS7K znl=^>6f|xOt($`8jiG&0(7-XYa0;3@7Jn2paty7Uf@Y4Pom0@zF|>3FnmQKm6f|}W zt(}7Aj-kC%(BLt&cnX?47GD)KdJL_ef@Y7Q-BZx;F|>RNnm!iK6*PVft)GJCkD>ij z&;T;DfC`#G7C#m=f()&of@YAR9aPm@CNs2z3YtO|uNE|h46UJp=8&O1RL~$Yw1^6t zL>3QzZqJn0TpU&RM0>&w2%s#NQO32K_kh~ zN-Ah38QMt&4JAWMsi3K3@rFTT$-C6Xl!}WdYgjgmZ7~> z(BLw(xC)wF7GE4Rx(uzZf@YVY-Br-=GPJx3nqC&q95lWRt*?USm!bVt&;T>EzzUjR z7C#*{!VImjf@YYZ9ahi~Gql7Cnqn5O9W=%at+9gUn4vvZ&>%Ck$O@Wd79Soo$_%Zt zf@YbaT~^RAGqlVKnr0S{9yHDjt+RsWnW24F&_FY^&Q#fr1Bt;YCpJB(V4>;Zb1FvI?FBR#TONhk@Z` zQ1CRccr4*@V0axAJP!=-gMtTw;e}A}M6mcT;gMi?B@{dp4DW=3hl1gyQ1Dc+cr)R# zV0bMQJQob_g@Olz;l)t!WU%-);n84tH55D>4DW`5hlAneQ1EoHcsk+nV0b+gJRc12 zhk^%$;RR9fgs}KM;SphYMHDJTDCIi-HG+;e}D~#4x-u3LY7T zS4P1z!|={1cxV`28U;@ci}w^B8-~{g^;9Oqd!yjNVR&&AJUJ}BRCsh4UL6I`4#T^n z;Nf9-c@#W7ES^<(d>CFI19PQw;Bvf`^LXrBd)zv3P6Yv0`|w6g*c9@0EfF zi{Zsm@MN+0ZsE~lc(oKfTMX}(f`^OehvZt}>0#per; z8pEq*g=dZ7U9+|wlFjh4S>b78@c_f)#_+mX;dx_t->mS!F}!eAc;Z<6!SKj2ymD4} z<`~{ND?D@zFP#;hIu`FRJa!DPofV!thWE}24<5sdXN4z^#a9fE9>c3=g=df9-Lt~O z$MEu5;pt=X9NTtfGrWG*49;eF|E%x;GQ5CRcmi4c$nXdjA;WuUg$I%0MYO_`$l_y$N0H%Gw8FE<@Ge^6VPtq2t-dZc7LPML zjtsA(6`n_i_t6RuB*P17g(s55{|t{L!z*d6R@KJvPFmriWOym9@KmyRqo+5pF}#*m zcrF>3@@e?o=g_sG(4JoEo+%I*~iB4Zd&2tWOzBP@N@!K`_KxHC&TM$h3Avu z{j|aZ%J70(s|Mh6@LO|#8^bGVg=duE9kpH$wlTbUf}Haw~fuc{TERfc!fS}4`V@UmLrX=U+n!{f^Ex?1N>v@yJ|R(N0;URdky z={6RBH$1WoudG$iwlTc3)~)Z^7+zW{Jhd#|@6-i2k2aCk-XGe)|AkpAEwwScxK?;_ zS$yH}=rX*zR(N(9-d!s^ybLd|6`o!e&v@~THip;NI`1=F&u87O@BlNsz*cyIS^VVi z2y>gcWQAv#;T^Uv+lBM);cbPdn8j<}m~9NNu@#H4xY=tM8;Z3$4J!oTi zm94)VwlTcR)=Nih3@@`4o@N%0Iy}w{ud@}NXNLFLy6~ip;f1!s6V2jZhew*>m9{=P zV`F%yt?*DYywujjEJ&o;xm z?F$b#!^`a({)dgl6AzC!!|Uw}&o{&S?c3>=jo}6NO}}kp@yma5$HwrA`@%EM@Q(Y! zL(cG$`@&Ps;-!bjoZ&V1eQ@8#@Sgi#eSq(o_?|C3=`22bc+?qQbzgYa8Qyi@9#3ox zFS~Eizip^=Tdx+;yo1qpLp=Z z2Pa-M@q>vcOMFq{O%i{Qcyz=kBVHBpi->0fH9LuSLHq-v;TIjfXxT+iE}Cx9Rg1P+ z^u?m_6`ieUT}5vynorSPiuO_ThoS)#9iC|6M2{w#Fwtd+HcIqKq7f3Ej%Z~>uOgZe z(QP=j6QbV`4T{dV}RrD7)T$JzgK`U#qoCu%-eeyYaajKfCd*8-F_HaEA|Fo(1un z8(%qc2Zw*$_{5DL-1xqYzuWk@jbGdNvW@@R_^gee+W4l8Kic@9jo;b$nvH+i_>_$w z+4zo)zu5SQjbGUKf|2_>{J+NMYy7;%w`=^l#)oVCw#HX${IkXZ;> zs>YXU{HMleYW$?Ac^$q{;}11HP~-PBzE0!cG(Jt^$27i6LVra|J1H2z29 zb2NTN<6AWTMB_s=enaCcH2y*36EuE6Qhw*C|Uxx8t z7@vjlQyAZb@kbaRgz-BVUxV>47@vaiBN*R-@fR2$f$<9%Ux3m78=b$=^Bdj1(dQc- zzR}woUA@uI8=bt-!yDbZ(YG5NyV0u~UAobq8=bk)lN;T*(T5uyxY2tXUANJ18=bb% zV;kMI(N`NCwb4r(U9{0Z8=bS!GaKEq(I*=nve6qGU9r&*8=bJx0~_5hv~3Q3uhH=u zy)HC$4qdL%-x{5*(bF2;tkK6B9jwv28eOZ=uNs}I(W4sOsnM4j9jVca8eOQ-e;S>q z(Q_KzrqO2_9j4J+8eOH)Pa2)1(L);DqtQ1S9i!1J8eO8%9~zyZ(GwcopwR~!9iY+s z8C{>z?-`w*(c>B2ozd4B9i7q38C{&wzZspI(X$!dn$f2j9h%Xb8C{vtj~Shq(SsS? zm(h0_9hcE-8C{mqUm2a1(Nh`Sl+i~S9hA{K8C{dnFBzSZ(IXk%k#eq3|?e#A^hpb_PM#a z^b+wL@f7hGaUXFPaRc!?;sW9{;soLlf)QULHX>Fb79eIJvJvAD5r_eZZiqIB28fD? z{D=oHbLk@D7-APyWevacI zK10k#L?e128X(*d7oX))4q_o<9HJ+pF5<=0Tsno=h?tBRjPO9XB2NFEOB)c`2!BLv z#Qi6^@I~g*JVZFc3z7Rcm%c+RMnoaJ5YHdw(m}*~h{1^3h#L=cX)7WXp%AW!Ll1K4 z9fUukEaKFCoFifoq7vfFJ**=JAj%=W|0|c~AbKDQAol)=>xO8BxN{fR5-}W69&z+e zE=@wTLEO5XODhmThysY6w{mF=qAKF(&0NYvG(nuZkxSDNtq_;4vh~NLfYeZYb z#cR1V1L1`@b2XQ2h~-{n#*#HypXr-)TYu#Q;%E#5~gIgI@g^A6=wNyLnU=zoZ;Z*u9;0bC!% z)&03N4DsXFxQ__lmrE@X>-OS)Am;4JB?|(o7`mi$DG;&Gj&nz>$iaCbGIrfr z5xg^(8YAX^h2Oga*AQ|1OWb$FvM=!ch%ujI+je{pV$n8S&#mYuh&@~II}npM=hEfR za;Xzy)h2vDV)({f+Pwk&5RvpLKEEE{gP5`obTKt|hxnxDm{}_FIbuJNN z{wkc`%3Sh6%vq63zb!|9K}=efOFw+{zZg2p@GOok03(Is4#g=}+@;V0Z*eP9xJ3#S zcPOP4cP&udiX;#tAqENYgt)uAyLems2Y z_@0#izam3m=UwsH9jSY_C12pTf26ItB|6*`dVys(gx__kkJqI9uQoG5VDFV?3@!`K zrDoa*%)KaOaY5?O`DRkjNqrNTcUJ1x8R30e-pNzqFM&xX#bIczrwzTsC9cIZp@V&GLGn?r%L*BvZ zQopB(tf^8KQ^bzRa-Ag46D56utWPtmdW*k$H8Z}a_@#%G zX?H2>uA+Ar;n7*>J2hk0QR-<2@n?IfGwqsL{=o$UD_qeAPCk$PiVCsvnoB8DkZN% z&y;dK?aTD!mgsRU*7Kl9&z?fzS)iv&zMi~XJO%Fnh3L5wtY>kMo{oWn zALBBJ>RL(39;Z&#rp5x=6mWo)kwt&m8ou{j8^xy`JDt zdaiyHJ#6(fSnIK|5*sY_4EUfY&RleVuV=2A$TrbqZmegskV)fBRxFSQ+8kE-qSPhUrE2C=izNV-~Xd0>!zNYH}s6V zt|#WIl*<)8{Vq#6T-3AUf}U3A#ph?m-ZOd%PYLcxJtO|sODsPG^G|l<9AJu5H%Sdy^iE z4SHt(s+ZVPQdaBql&_UKutv&ewVwZe7MUyc*e@4fER%Y$M9=>gi|z~c99W>I_9wwb zbe*T?&Ky16e$?|~w$!UxdW>i48976bftoUt=9=lO` zCVnUWAE9T=aJ}rc65oC+b#btsK7;f;8X&s#7k&HcWq+KWzk2H_=_%#hLu~A(XL(og zS!dzZN&MA8&o}Kwm#+o4jh@3_=}B*;XGKe?Kg~Ku>vcTW>S(3WaZII?eRn#RD0J90 z=;&Xs<9e-*ifSGItJ3kMLdWoO9d}A~R2NHHkq*}a9Ru@qT+Y>zm#t$_mQG^4>1dm- zV_&L{pky5*lY~!#j@&pM^I~cKN4qp!)z1=060Gd`aYAkoBpb)vzB(56(XqXk*w91j zM>oOgq9de}lwk)Qs&-NaUkhFvDbLnA*0YbmeQ z%6?2O9jmnTtI#sKOv}s?EengZtSQj4B~Qz~94*JQw4Be-ax+cKgA^?uBeE&$x*aun$ z-qX_gt`^-tS}Jd9$+)g1{HhkW%UUchYI$~E%ayZQ4xiSt;iQ)NC$x+^uBF#8p*f16myRX?e9r%cWgfcJI)#>~}5Ww`%G7o0i&*TH=4z;<#SR^Ix=_T%+aJRa&O6 z)Y4LqC8vapgSgp{|yFo)*tp=lN4SOp!j49VpQKI2fk%qqtG)&9W z(2%XcDO1DAbPdx}HPk0*uusrPpIyVa7!Add8cf4A{2r>IU$BO_01fy2G%WJbp!L+? z=%L}Tn}(q-8j>6}{QFtMPjVy5A!iH1Q&8X^rfTzI2l>?;i^ zFEreIrjdAw8ZsYhxN~3h`d996iygN#OuivFS2bL@tYOqep*^SJ#2F2JPigQxp^@*5 zhOdr^tRothAJS01U-a9nVf=0l5j#Y;-!-(~D*2l=EZ(S*{puPntrJ_;itek#Pb)Q) zEYomxiH81*G<=>fe9(|HN5iQfME6{Y7eA6Ct=dNuVmYED(DQI)GXU#do1q~>CQ8hx%@v*kHM($geAS@04CKThakgg#RE zgbTkA;TxnT&R@+6Up0PSYJT{l#?DR6cP?rS9MyFDtmft?HA)*bhpp7|&!J|`do{i$ zYKd8^#@J9z_cv-Tzf@E8T+NoJYC;~Vnf^eH(Z6as-Vxci)Z|=Ov;3->&zIEnzo6#Y zSv94ngxB9{oQ_M{F*TQtsL4C1X7PSCANHu}uuIL6?P?;os+sVcn)@5o5@%F&T_^c# z)U;WpmN;i>yp{_6Vl^ihsHH!wX7pS&SAS5G_Pv^^Gt}IfD)J|(nK?ntzhmWol;}57 z&Fx`o(uWA|L85!4^WcftE9k7Nx6rTI#(r1 zCndViN?O?|X=|&bgO!rb7D~FADd}OXq~}{Dz1|4Cl>6tB_C!hdhf2EKQ%c=d((aa$ zudXX;zAXA(P||Q#N#!XeMJJSG|EVPDsFJ8dN&@yPao?ll(@rI3zbkpUMajKQN-qDZ zE&GnE8SQ{pgL$=eA^?u=D(Vw94t zBa|#2s${}oCA|kI(SD;Oua}aL?n-RCD0$LR$*FcqHn&kqtVtzMH6#No9JKEL{nZ9@!3s$%4p(lY7={snwS^g#5XZb)I>B9657POpe9cF zH}SJi6T>`(#;u8PXGwQx;)Goji){tps)*@xY#7|2%0E9B|4lCIe&_7N1JGUsEN>hP0|-@V%?4=`fO_= zb#oI28=Cliz0j;}BIoBOjFt=EB~1)o*hD5xyqVL)rrAyOn%P9mRFN^MiKXM4XgNl7 z8`;F)!$PkIHlY6YfE3f4C$ zXkDwop;E!FG6mg=6?o+EBPR0YS96!edm`)CD6BNX%rRp1?{V4t6YF5U|H zE-LuVRY40U1!ndNmVZ=GVWp71u!5;(3gV3voHSI>`?Uh67YcrTs-WSaf+zPBOunNa z@}`1=*A%q5tib5Jf*;Q)Nc>ym9#_cudy;lY!L0oXqIWCUyF-CytAfXy6^z`Vz-^s^ zRcjRFtW@yVG6i2PR`7hjg74-jaQ;ET;_nsmE-NJVse+pE3NDUO(BV4;FNP@?Iz)l> z00lGqiaos)5^q;QOlJj~Iw;6)EB3WkP~P0gacv_CWuyFyH=?U;?bzTYnM>JsU`KYhbK%17|-s5d5)$-qsE5vS{F=X#?ta4J+_!W}BqydWs4HV34;M*S?*z&#TH?4u#Ney%uFE)*C;KGOo9KUU# zd|(5^`ZchrcLNW)H{jp70cHCJ#uFTf^Id&C8>;KMRbG!%aXkh3 z_4LT8hm3j|cd6%PLOlU7^;AdH(=W81g@KapThDXPdOY3gDRio*)8~4oeynGcRXrEY z>oGQ|C-7}OrLQILzj`JKXTUJf_;jyWnR=?KM{}++5s-ES`>)Elmo|E(I`FCzTMzia2oKa8klzP%8 z)KfX89{tFAx(%!6+rjlr?qAPOed<}$qn>SD>N(t@o-=LhxzVbgNBTMp)OA=W>aee? z!@a5w|FSwFit0$nt0O(Dj=Z!wN|NfRjH{zAs*a|xI@CdR=>6(w;ax{7k2=0`5pbxZ z%_q59*U{QS(oH4*T^+jDg8!lp#S@`_AbjrD$+=8*I?NS}_=jsSQRfpeSb-4Xe zhuxt%-tVj9&8|8g{$9uR-|9HMp^k&=>e#xvj#Vq_n75=(`UG_hnO8@bA4JBCI?AWi zkusr^CDRL6;ab^PADj-}n}nB2LJzU@V?Hljm|I+;hR#Zg(ytA<)G z)zq@9qLw8kwTvmKrDIMlmFcxaC)e^RzLtm4wHyntWp!|^taGiUgLf^(?zIFs*JAX! zR$^w?N}SVLrkD$@Ni7A2wS0M1%d_XT9C=*J!uz%KyHiW`4WYSG%gYOrex?@wuBFGH zf`7Oc=l!+(vs?IVuVvJhS`-^<30zmp)77=?Tv5x!CAAV`sFt9)wLG3(%hnmSd^bgS zj<3aabS+m#)Uxc`TDlIbCFz@540;M(SHbC6OIh1mKDMgmxW0yI>KYmwYb0K64W}z> zm{nRsQ$dZ4LDq0GqlT#|HPpn{U=v-#f$$ne1lN%5SHml>8rHkl(8;-mK>Hdl+SV}L zvW9ZA8cd98*k~YmFKh69DtsQ+F#6vb(r?vp|5^>=U~10RV0^NMUyj$%;%E(@4%D!1 zPYoS*)Zn_MhCLf==(fHFkJUBoTOs#LYGe$$hTU^(=s3Fuhv_x^Ho1nD<7==ORm0E2 zYp5MuBV)le%o5TRn6tHY6cZmwX_P|c{AYB}$&n%{z}srReqU$1J0yI14xRLxrZYKm;Cx$vP{`fSyhy{l%{ zn`**eRI}|#HP!d4xq7FX?l-G3zEaJU3)T3Xu4eU#YBK()=HQ`f6nm?=wzHZp+p2lB zNqGOS8rwD1%v@P5Yvik0x}chLR&jhn6^Ww-Z$uRaL#k-*U&YQoRrqzUVtD5&ZnUeCSY=f#Y_7yuT}g9e zCEIE%aj&SPPe~^xD)$3H639IRyN zUZLMnN!FH1#%!$Q#JWnptg58V@=8`Os^mG9Wd2ae@R^kyoKnfB@s%`;s$|yiN-hkp z#JgXmoPSg)u}CYq*|CzKww1JPRml=v1vixy1k_j1s=5NoD!5Qsfoo0$4e1q3O0M8g zTm@#46=a4~&?lfmqH0xe%e?|mC&96+V606AJ1i=AZc;(0VFkLE6-<6s!LElDJiA*# z(9H^(u2eAULIoR73+-POI32AZ|3C%Z_Ea!;yU6%W=zp!icWnjbD=X-|RCHNT!GXCI zJeno?OsgP!Vg+r-Rxo~K1;2b-!Knciyy;VcclQeNI#tl7oycfi!7_b02UX?VZ79dG zx}4Cma*7MfX_H&d@QiYPN-k$>TsdbV%Xt=3&PV@pLcGe!b1O&VSWYjya>iMgv(UVp z&Bo<2e^AcN|H^s&q?}Lp%kjTmPSW*qN-qii*>XCcENAea>U z4rSz9B-*3yLY=o{) z8OytuF||_}1HKkrT9r|zEhVO@6z9593@S^xT2jj1{8E-@l`=lHl&%S-)JByOA6klI zKq=3>OZnTql=V)fOtmYen{_Ew?@I|cD&@nQQf|B`W&7h&ez;dkuYV-(YAL}NN_ls> zl+%BevgT+h-yJALyQ`GAZKYUjD&@lZQr506W%%+^6bnlUoma~1*`*wrUdo(FrF0%! zO2&v%tcR3xu74>@dzaF?TPb-RO8MBPl(Q{LS*$6ctD;0=kd~eZn5hB9GGA9LaS)4{;8;xJ$6_v67Bk$en9#Sy9D7wvuV=-$ zJ}74Eono4=7h`g%m_=ucWsE@h{ZY*5gT;jGE@uDl#kAdA%=`7lELdGEXJ`qpg~jxp zSB&GVV%AJ6rgTCv*GCsKaCk9JgNj+zx0u2ng4em2p6!aUY*oxWT@mq3MeMIDLQ_%1 zgW@8F<`vXuey-?VCk(zf#1jbHeXr5g(2fG4W85>;Wob_VyyYHW#tre?StwP*p z7xL|N;We?4%F%_aA6|&-ph5=qE#zvCLJB(-vh3?ZtXdY*Nn5~CMFCMY1u`~Oz=Og9 zDzgh%nO1;RLIGb#7qBO^03ZJX26`1p{OkhaJ{K_Fwt!m}1!Nl+@V!9+4__2e{HQ?Y zSPOV|vw*V81#qr_r+*hv@<#zb9u(fY3*@Z%0;X;%;KsTF5`QjW~G0-Ou?%*yPI?Sw5?b^SS>%G14I*c49vfHWacWT>&*$agFe{JPsd>`3&!gk0JVp-{nFI3V zUnY;UUGsR_J`da0c?9Wl$!f|)QJYKWid;q%x=lNXzIGM}YW4YWsn9HNx zxxC(%i`m9pY=6ncX=N^6i*pGimx$T9#7`5x6GWF$x#SPcrFcLt<-K#M>Y7V!`&{Z< z=hCRlLD3{oD^M;_m?LvOIn<}-P#d2^Rb&q3!8sKB=8)%+LzYtxDW7tPv&dS{A&*1ugPJ|@*Mgv z%%Q{F9Mm&&D4m=`^4J`LM&#fyI0vJ?Io$7&!`V(b>}i|Bnie_CR%bK3A)8KB*)$es zlbM@MV0tz-iP^GNESs~T+5GOG%|g#?M!96u(LS4Mt88M;vT=Ny&GVPpoO+VY#(UX( ze=D1Bu4JP)n@z%rY(5{&=F$Faj_k~4`Ic-({+dmTHQA&u%f@LzHV@`xvwvnbKTXc2 z?^xkGJe#0F*%*G4&57>WEbExfpf=gm>az$`X7REvi^COJ%q_~IOHLNqsae>?XK^Jm zi#5Sn4ED{U!aWOj$1HAt%;J9^vKVS2X>YP{d7j0!hgtl5CyPGUv&g!Tg~h2Xj{TX% z%tKk|c4y(gEsHxFvsnF07Cl#Hk-R92H}kUieU|Wr`Oh!G-B>i?K53gmi;6f&iCo{1)mdU1rnY7=XiQCpp4sOVlGfguI zUY^ORg_#VWn@P;fOfF8&WX#x15{GAUWl$z#zsZ!f5Sd)+Abh{dBwClj>81<@*Jcn{ zmcikI47z7!;GCSnme>rM!!j@p$Y6T+_leOymbbVW*HoPn?dK78Q46|VCBCV zl-wZ{sqk z8Ii%Q!5Iwbn}J>T3>J0FAmuC3N1u+aDV;~P=?pDT=W{_i3$xORPfll7Y&x}J>0Ay- zr?Xc&uU*m^WuK0NRXUiZ6K0ssum7c!{V1J-chjl6p3b?8>9jhX&fP!L>3%4k|8}P{ zXj?j_8-#XkIyTGGnY>VV%t>eF%ye8Qr89d>Iv&H)`Ej6Jd&{+JI_~Y#nbj&CXH6Q@ z8`H3_N@GGv8kV_fj7U%8T|yfDqtbX9oJMEgG;X@5p>s&%q-`1%=4tFUN+b1E8mphC z;eRiUS+~-#xtzw3vuQl}D~&cs(m1_0jgsHf*t{uCe3!=Tm1%rfl*Tvngx~jR)J;xf z$JjI?h70|mG|c*>(Y0F|XWOTd-ztq&+EknyQyE;H%B_-ADsxl$UwSI;38{P=mCDWF zRLXo(S?!+6XNOdJ+op2HJe9O}smytmis6$~bpNKZ?Pe;Tmr@ycCY5u?Q%O0L%8Wg! zJlQ6HwHs1du{KrCTTP|K!c?}*NtH3VRJu$`W#8yjyoRRIXFw`Pd!-W4IhFojr*f=? z+^bUPSD(VsiWGbbQ|OtU!rqh=Tw+sbAD+T*0V!B{rl59CVYyujFD+9jGD%^&K?+x& zrx5udh5omN=4uLd=Tgv|NMZ5O6dvqLA$fZW-)>Ifz`7JZtxQ3&D22K6Qn>bgip(9S zNFO_eUxugfd|(PGy;B&_HHB^MQh3)gg&cJ z9FR;;uVmJ^B=fIbGC`Kfv@lKP2ZLmJSCg@MkW9fp$qc-j%>T|MbN56tzDJT}3?!NH z+mqR`DOuJoBoneC8O_3ECeD?#naMnvl#KuAWa@_|Gh#q8>w6`0t#dN=ZAFLXBs!^* zm|d5|-tr_K7bM}CnIvPAN%V+GVos=}`z7(fBME26B(iLiXk(EiXHq4x?o|?Jo+M%T zZxVhtk|?^EMElc{_h%Ao4kmGYR}xRRB;okKBobC7(Xb?mUOy!A6Yl(~RJHjhhW_Xy!LD3Mcrgjd%@ZnsP1Var7RQz!7YJ^{0e1gr`Z z_>`4^V{!tnF$sJLO^|iS39@b~LC&{Mkh9$r2r^F~_?^H@fyeTESMshW;C~@O&Qwpp z^N$4F_b14hbOQF96R=sAfW^uLj29*FdTs(wXC}yeSAzUAByfIc0)O>S;6Tp=e(#jP z`ZftN9uUvmrg)~*#51Bao^SHvX`dc1^VIQFM8uOB7*C{EJf1G`*x1GM#xkBeCh?qp z6VIM!@%(aM=x@a{=5jo}&cxIFXFR0`*wAt8=`BIDQ>6vra( zIEK2$p|^`8%`y&WlQ^EdiR0+AIF{a*yjyXoFU1jmIu4sZjxD?5^@h#B$prmUTw4(r=5U;BhQAcVlJ#J(eFY#M1I) zEFni@xxY_vw#V|#rdZO~#`11?EV~xOGV;e*il@c$VSFqHN5(RCa4cngVzKHf&+TFv z)iRbsRSc$eG3+RhVNgK~sTnamON?PnR16)0V+in$;gV|%-`mGfZ5e}wNetWH#L(wi z3=#KYxOOv!S(jpDjygu>cw*RaAcpokWB9T;hGXku7`ifsxP>uXpA*CM88H-0h~epX zF)SDoL+v*)yz3Uj&+TJSwT!`B9nHG>XmsV#d?<)!eWu(eMq?foEq$A4l-|)8xkj_p zKAI}aXc+^G=EpbDB3Maw#?Xk7M3vw4TC;Mf$+n_r@tvm%;| z1<{=UF`E9uC12h^B=qiZ``UvS%WSsJtllr$^Bu zA&Qp~QA`SqBFHm}ZO&2De~gkcijwt3QG9+G#gfNSq~3|*$h9b%&qYaSfhdL_iIRWX zC>CvtBH`C4_N*4VB~e@@imtPwFq|C4*fCMK42@!8f05TCip?FPC}0B#*Nq>6aXdQFJ7uLL#yCiDar_`?)jl_FwBtH(1#Cbp@Q+h>W-6@ih zZ6bNAi{KkY1P`ks__{cPOW6@LCP#2MCW73M2sZde5bhQMpChC{62U0b2wuI3pwlzK zy%!;KArb7j7$N6%MDWue5!mgEVDR<`S%VXSW=#YKmPL^GQv?fUM_@Z8f_`HoxG^k( zs{Rpd>KTDw#|XxK6~R+&IGToVc2|bW-jr}AXNAl9z;Lut;p_|!C&)XTv996Vw+pA{ zLpbY=!*O~Q&NolOIdeChlxyM4J|E7@6X7%+4rjxja2&UW)8p50j;#tOVsSX5=Y?}) zX1I)jhV#RyaGnhbr|O$$EUh#LInn7?%EF z=sd#s#W76QqlTd{3uBpK7_Xj($(rXde!LaNzn8*DI~B&5V_}@xA4bsjFnVnYW9Qm1 zi9HjB>ZdRk&kp0!lrYlAgfVhh7{~gD;o2jNmL0=b-a1UyScb~KYbZl1LS=nWDApOF z)Fgy5BQlh;fuVSMhSI`0RQ7*_a??DN;J2Z)|1Xpk4@0^8PbguR<@rpg%twau&w)?^ zcZAYvb13{0%7x{jxXuryVRk5!riOBGY$&F~LdonON}rygtm!B;twZtFgrKMoVM0X+ zy9+{il@UTzLI|xRL-;;0gu|X8vR@^HSlbZ3G7n+q+Yt7@2;t>}5JGN+pu7~q=+hx= zJQl*u{UJDP4QJ;6NN8qDYa1rz;qFy)JaX*V~R;WL6^LNJ?02J`ozVD9%0#-ejD zK5c}LE{K}OAQ?jlVsKFqGqQqMnG_^v3j}d8D2TgWLA-Si!v13rf#yLZzYU`FMG%?? zL3H{jh(VWwm~c9XxyOR|d4CXFwg+)=V-Tm;1aWg|5RVc1?}M=0Iwi0#Q~6(xN0#V(|phB_)tvF@f|831o;*AR}A@8EqHH_z!_hG74ns z%Rr_-3S{Q(KxSPDWcC?>KLrj5?2xoglDAfHmI>}pLNiNfCkv0!!s}b%**B2>-9$z^ zk<~(EDg$Uy6M(8XfZFT;N|FP}jt(FxIDiQ60DN5naQ+m4wM78$-UaaVzW{DM4B+fP z0UW*@z_!x?tUeY1`vaJ?J%Aw_1L(RY0R55xD&_@{HZy>bi2*o$7l85L0Pgn@+Aaa| z45omIKTkdVIp^fh4qJZ~zxQXXp+8-p`%{0< zpQIc9xL@$c;BS8}9}%2A{>oF@{{v`{5a$0#~OP-zO(d0XXHoxOFuq5 z^5f!dKh|B5^fP{_kNFX~-;a0O{rGF69}Cy`$-Imoh4cJyp6SP}iGKY0ogX6x`%&N9 z58uvyJZR&`7M(An8+~c0@WrRVmwz*S*^uDNw-LT_CblmQ9==>~@MV#;FP%(%NqFtc znD!lopz?&Hv-sH!7^Elj_dH&v%xqI{Cvo{N@ys0$y=H)B7 zf9y@gZEv1m5u7vL6dm*C!G3RMZucg0gE!Y#3(qCqM9=l+?-}0oo8XP-2yb={^yaHx z-dJ?>W<_gn%GF-nuk(_#F};Y+_2O8n7hPh#unqB&^=n>~xp;B=lNaAvc;Wxni|sGG z(A@Xp#Z51!T=XL1Z!h*8@uI~ZFJ5i&V(NM?!d7@mpUn%^Y%gi^y%;sd3(s%8Sl8E! z;;vp?_}YtZ&7PPkJZ0~vr+oW7*_!D|Re~p1B0OckgeS%xo=kD@#MjD`wI-fqzw+eh zV^1`!Upg4f0@~mj@0`9*nZ};EkCFT@5_A_SA!h zyB_Sj=0VC?50)SI!2N&+V|RG)dZP#J*9gBQ9u&>>;D0kb@Eh;Jq!At%4Dg^`PY?d? z;6Zjv4_2t$ajbD?aEUv&v)!ppa%XdtJHCPLjPZ2mk)u0J*6wUGb;tj;q&;!x!5w$% zuDG+|j63ef+!?groh!e)llQATi&nW~zQ~=nbKKcK&7I(}?u;7d&aHm#6m)ZEVLNw> zo88bW+}Kj(hD)IvJu}@nmf%KMxEmw=-MH-TMykCVQ!U;2*T{|h|J>x9IX9l(a--~` z8}m=P@!t_QDtEiFV2j+ZbEAB@8_XA+S#A_fa%0vgp&jf-MsGJJc6Q^^S8haWTp3dD z${%H}c;>p&Db`J4TD+`=md0^{Gnwcx#8Mt!%sVg3LU1@vGl{IHwdG)6& zx%*uiyWN$)Hn`%p%9R$2U0FKEmHX3Ni684q-(jw7>*tDbH&+V3c4bVn3r7?#e5!Pz zw!np{87}-C?}Ag93yr=m%y5%uI~N=+T&R2N!sHh&vc}8>>l-eVoOfa52^V%Aa=~Dy z3(1>Y=&{y?pO?CDYn}_on>F5GaEVx-3QjoD_OKJ9cR8_QvlEBcI&p8Q6E^dl zh?wC-`FJNfjBsMi04J9AaAI$JC$6<{;$4#?9#xJc7dldx;YjBMM@EM`vcS)gt!|E- zv~%Qvg(DVk9r1qdNYXt=Dz7{8)p$l(0uJkFTDdJ8y%Ql;lQGN2iB)KurtR&jOYLM)Lfhq(6}S zn}T;i@J|TcA)(*-nIATNX6BmDOkMJs33ER)YWin}jr+`iVV~*U?=xMxeWvZ#pV8~= zQ8d_7S#D23o;_))_Qb^46BuldyO%wmoa`~RvFATid+xrr=i*~~{=99^uFLkUKV{FN zqxLe6XwP?B?CHJEUe=S?(||qsGwq3;V2}3*du#^S^QwnEH{08DyoEj6n(SCsWyiEa zI|gOg@pZf%wV`&T`Pkv_Vu$rdJD$F`fT{|XTwUae1cBuZaBXh4Eep~G@ zUvI~q6?Pn%Z^xQhc1)QhIN#aPIM9xyo_08Qu;WEbJ5DJ-$r{N|OfUK*?awEftNBE9 z*e7g!KXKdj6MH{>V!rt&1{!{%>FFop?n>U(Pux25iS5TeF>Bu^x^MeL>H1G{Cgvwz z&i}-*S)W)u=@SFK6Mh3f5!CY&Z#qbN%TFv+exy(JM@kDn@+IRV58^+vBkUtnd_U64 z^&{~gKVtg+BPR?#vf$}Qy5Ids_LYy=p8m-BKR&W-??-xX{YdUQNn8GrGe3P~;rAcu zGVvoRBR?zb9>3b;On~yKRZyY|Epywya%hOSgIQJl&QD<81kPm@OUp z*%H##mYZ#DS)j9_x!wkkG8<0i+At->hKeW~%mZ!M@x_Mz4mQMF+HlXvhDHC`puKN{ z!wnk_ows4=Up6Eku;Ko88y0M^q3LHEtQQL14>t6iVngsK8_o{4VSH~JvO3!Eu$2w- zRo2v2TVqmW&ALo$S|(Uy7iP_NUu!zMTFbsSYYx7*rjLO&eow49cE_6jSF8y-WzF%U z)(qGq_rFQ{FV^&1COGq~IW)tX9^X3eLz*8HlolKm4_yeqR}QLYuG z$yVHtvSMql zr4>!{t#~%eO6sK*Q6sH5G|-B+J*_ZqZ^fJzRwOGdIbLZ=#{x^t(kx}qizSJ{mK^o6 zq>Ym$2G*8LGqEJ>r6oHaTGDvalDiiy8FIoB$AgwE+hIxi221`}Wl76LmOTBzl95v^ zaTz6fgDpwzWy!&gmNE`y$sOef`c{9yyzqncD?iBC+y~Z%ejwBP1BaYHps@MCHPa7t ze*J-$k3KN`pAXnx{J{5rf57L^2bS;rK-|U;{I>c7d5b=9@W&6-O!>g+(I3za{=oI# zA86O<1NU2fpohwW7u6QBPr?Gj3=6)Ex4_su>;stYR|1xLKL32{J zo3mnrIi5e8Gijl@tVcGd$7FM^eP>SnKy!BYG$+2jISX2tW3PD6kjnSm&wr05^*sk- z-jf*gp81~dv2}P)KdblLFnUk*i}!54{~rJA@0oD!Jum)zPxHR_?BDjD==JaUe#Lv< z{`8(U-@oU`g!jY^m$d%xG3fT5mS4YTpU#Z1dNU@JnejNsjD{pLHbk1?>TgDWcQel0 znUP^`#vDU444#^yy<^6fD`vQ#GNa#7GfwX|BXP4CQ`egDaETe^bIe#a%?#5qW;72m zjeSw<)nsri`{R<&udh2`^0<^HA<@ zni7BBlu>_~a{hoRQNNqYxuvH3z0#DR`KI)pWy+z6rg)4nrQ-lowstp_ym7e3yu&E$9nn7T&^f|2}@-jW{nmKMHm8R7DlrM7Q5Z2Fc5uij$!@U6rqc}v6jxAghzE#Dt_%f{c| za^`<;dAZ^(Ej%lc>Tfv z%XKo2Szu{Wo8}4|#;nDv&x(cW&o;M02AOeyiVIiO>B7%SdZ@&v7 zB48n)APv&p&7-?JENn5buuz_;porawjopgzv+zIX|IV4SyR$R%c4xlt?c14q@3+4h zb=#YU6Y2t*Q10G@LWd?~*)$;qO^7jSLWoWieASz|7&$ooK{|1C4mHqY*dPH=?Je5l4#}(VEeS=J-aGgf=40rx9V!jc{Mu zh{X#UVP@Kh8M7OqJe9REz7b#LSbgzET>jgDj-du@f8BtpM-527)qtSB1~_&#fQ~e< z=R*VJHaFmRLjwlO8rXb)0}drOU~Oarvi%zn?A8GL6%ClXr~wnG0V50>@NzmUH>m;p z$2Oo=vH^+04RHHW54^93`d~do`s?xhay`zSt;dez^(fp|kDzV!uvuHr-gE0Qs-PY( z)9TR^Q;#h{^~mz9ho@6Lcy{$rv8cy4<9b}1S&uza>QSIv58pBMppo@Z{#A!BAM4Qf zypF*Y>X3G=4o>IlpnI|oq6h16e@7h-uCGH;O&z?7>R_Bv2g&$4JPxTtyEn^URR@nH zb&~@Ux3m@k3s_y#TKv(gMYmQh%G7GH zO0E`@#cT2EPYw2csX@Z48qmWUh~BJ0UvCX61vOaJUW4(wYVc%Z4Yt+^& zoKS;9VXTgC4NP2W@OxA3p^k-J1I-wd%!m1(eTa7N~Y9ueMX7R#V zS(9pP)~klARyE|+s?jT3jSR7B82_olyU$hF^s)-89#lcTm9V^4iH|*%XgW~|s{@tzw4Lp*t7P*VAsk{n?y{^FGs0zIEuRw`g1$0)h^VSs%|6T#H zIThHV&FW9AVED!gq)1d?+`n=h{92A>Z_4rJQ8{vNm1A;WIgXzyhvVULeArcv{1%p1 zUyh?Ck8Qg`+@akJBV&0bG@8eSB-!6sR#ZokP zm9pnmDR%EJh0&%`hPf++RcR?MW|hJru@v{hO5x>O$~34-5xTS#pDjxfZ&He1vr56& zEQN?_De`1WS!{(;l>RD#%%>7mJ}-g7KnZHEmO!be1oa&yP~KmHhHY%SmK|5J{Csvk zwFHXMC8!E0fvkH8N>`LXa#0ELxe|<=Q-Tcb68xD^f&_&Ud>K`Ou;F678Y+g*>tfu0 zSPZ9|#kkyC3~NC#1c!<-ueBI$8;UWlwixS+iZM2$n7y|ZLpY=u30}o`=Tr=DyJFln zFNU2ltD{p41NCBTQ!0jvR540~i`o2J5hC9eF`cF&INT}1*^5OmI$eaVM~a}drwF;5 zitw$z2y04(IcG>V|0QiSv|MR+Yz z1jnC+==@NKY0nB#*Pm{sqW)Ex@zo1+Z9HfOTdC_&K|PtvM86 zzghvLAMr2pab+MM+Sl@t*^`fZ9r-ZWpO2z#`FPr#50lD#ROIF3 zMM^%nsC-oW=i`-YKFFT!FU-eFvwZOMS(&N%7*xy0Tsc-(EFTYk=P|5y9*Z-dhZ_TV z(7cw%*3k0M(~$?I{dox3mWRX5c@V42gHv7}wxs0YOJp9*{qs=fnuq(#^Vl4I9^%dN zaC&wgWTxi9RV@$OWb^P@G!MMrxyb*Ni)+tw+53Mk{I2F=Z+9+!9M5I?A-PQ3Di>Fq za-m$23(wqKY)j6?`-of^`sE^dbuI+Uav^G!3tQ7%lE(x zp!G2afzNW#+MmPT_j90oHU|;Ma zb)&O!{a+TuzGcDWO%~HX$YPkjEL`u+f~X)1a}Q-9aAy{p)@PxwItzaavM@6}3vMx4 zC<)BM3HL0#U6BRVMOj$HWg)>J3tOkL`s1@8B%cLc@hrIf$wc1gOdNQT$=*LRA#p7e zhCP|^?8rpXzDyk2%JQ2sAzqOQ{oG8fPR>MDL?(8v$;1tpO#E7!i75**VPles$XS`F z)5ydLFGqAWN1L1WUs3^|B zfs72?jLX2c;0!2vWx&`e11oJ=U1XrnFazz=+4+eX7*fc9yhH{(|M1cLf{)u*`H=14 z!*(kl+2wqkNaEwGFCRKf`S6*?N5d38E=ln*;zv4+pQIzWFCFXJ({W`(I)sbTVGx@R zACGj#QA)>YgLHfvpN@&*=~(-IcZoP&hnkpuxWl8F3e2B zXQebK3#WnJro#7DDhdRt*t0VgSF2Mol$Hvmz*NjzkqQ@HDw3zBqDeLt$9|>Y?z0qp zznlWaV=2(zoPs5#DF{kPL5_C{HrS=$m{AI@PfEdCi4=%@O@`XTWEh-J#-ans@K~FS zn7m{ZL?&bH>SVMnNXF?|$+)SUjOQbg@%>#A#P1|QsVfOuyOLm7n}qrNB!;(3f}2AU zd#)xiZHXkL%O$b*nM71QPsG|QiP&;15xX}h;$UeajwdAIly@R}>=Myul!z;n64_ir zB5n^Q;O>J2+&hNg zXB=d0;vh694j;$I;h|U@E`Ex|@q4k@el`|0dt;H&5Q~tkSgZ_igz_K+0(lrsdlNN!E0TBqakHBoR2>j4w@t(#+Am_hu z*gg%1%*AlrXb(sIhH$JdWO1Nk!tuzB#Vuj6OT1@?V~T1xo{EH{<$V}D?}TAOR~QCb z!_ZI@2FLU;$OeY7SVCdQGYf;cRv3Pc3B!T^LJ{&blxebt;$C|wDmH{-VPPo#M2BL( zTPXY%hC*d_C@!jmf-e#Z{r4ewdOHNwr$VrxH3UP|A=sQ20{egv{97J^J*FX8tr-Hb zF(EkcBN*;af-$Nu7zYjo!)<*qL<@qkCn^|DuEF@bAeiZ;1;a);7$1d$QS&wkCbxp{ zpfd;=JA$B56@>1TAOx@&SEH7(I9Kz6uxLsUUP%Ta|63rm9tGme`9OFb2*lrJ7AGY) z5QY(fxZ)g$p!tCinHh++V*_FIF94Tb1;Fom0RD6YplWLXw95m~nHT^Ep8&kH3t;c; z0T?qWfMJgUVDQBsX9xV@*zJ$!d;JmD;E$16{-_S|XLC#b*h~H})Anb2Ev(FMKRkNo zhv3V8_p94FxT4WQ_5~`yXC#dE$k$7rdZ%$cw#8 zcwuC|7s4XFaNETTWa))%Grb_KeXTog<+@{LggdgG-O+F14m}-rC9@lIFVsd9xzsw=|%Tyb=% zD@M$7g`K)9YDT*}uTl z>4I^CE^xl+g2r|i^sje;N`VVpqFhkF+6A{QU7(=r0(&JFl>T$Zg;&lHz3vS24rion zaYlQoGd{*UL)*(4UN+8XFmT3IHD`#6I)nSL3Nd$9Vdtq;c(`*F_-7 zOIhCBRghI*1&h(E5IwXKo9?f~_3o7rZd=JT8CSw1b0tcGSK^q%N<8PSgxu7X;AB=J z@INP1KXJmz3r=`(&tNTmZ$?heprD~cUM5YYXwYNS73Sd3IwLEK)T-w)GS?r*10Pnn7o2L z!&czc7kkE4wa1uld#LZV$DDe5EXc5jQ;z6T3*D@@L zTm}c1WpJLq3~oBh;H9_>YyK`pz>B41m#{U=C0OFQ1lEg|z(RisOjVa)j>r<|yjzSZw-!UCb1`JM zFNRpfV*E*5jL+VS@!WPX?#)?@OXC+atlVN8{9uQzckEDq$_@oP?T}PuhoBTYxU8|m zq9t~iYitLtNp_5TY6qduws_xf%lyw4-MehDuf`V5X|~Aqw?)J_`i}2Qro!4B%@O_Jr``sGekE}uGt)a5t8s8eNaW%^tts&OPakPdz zXAR@2))*sWjTb)_qVw@W)b=h!$bp5hXkLhMIScVFbRoK&SUxR8;IxI{$u7j0pH_JC z#0m#4SRv=26&%-EK`Yk^U&E|$cBK`nVFhn(E9l8tF&*Ls=zY2Xb$tuqb7%o(ty_Sf zxeIV6d;!DHF2E}D1(-a20ba{3!2VyBNE)<+`9({Jw_D=!I!lHRv4l&6B_=vs;;FeM zwoSK0u)HO7f6vFq!TAibJ0CIa^I^DtKECD6M|;G4#5vE0k;QxrO=suj=OgmB1$3WT z;LSw~Y;U)K?|KVN%(p;)gavAxEwI$W0;6VFpiABY$-m8E@XVZ*HAhRkIh@yA+lh;KeUO z%^+d^MZ(8J#O8?!EOa}*h7&fdBG{U^ z@NgxE9B`Pf&Ec{vhnSx{##7)iJy9M!4)P$hmWRzbJjSo#;e`_q`NYGtX*`^h;UVBZ zGl)Gg!pZ?83(5pFka&-<| zj?KZZALDKGVwAM@zFlWODS88mf<1j{0!q^l?f{A39_7 zQTKf|gdWXC@VVKz(KZ{rhS}JfF&olBvk_-M8~06S!*a@Ow2qz)*&#i|59ndwj2_H) z>tRcc9!90MXX-I13?fb#d;7E;LT)vj0lDxL2YJ!#G{GE}@IpR=Su!OP6VJ=(3m_ zGqL#POl-L_6TgqlWIU0X*jX@>ab{-1(PbuDE!h6_nQ)MwiS561@cXF_miFnebv+#n zHS54CM~C6XbXXtgz=YF5p_UH%rFEeFeFhR9&OlGk3@EnEfKUAl?BmbC-+&pgSv~`` z^Jd`5Ui6Vt+n51P=p zqX}n$CQ7zzLQt-WFA18^@?v?5G*L8L6CKK$crT=h39mJ<^qL0Jk7-~}iv}JPYCtMl z1E#Arm=?GO>Sk!*jJyUu{hGowvZuhNZwg`$PQk|JDd@|df^Q*HFv*eS^QItLa|)WJ zrr_*Xb-cT;4#jSDro*ldpIUVkrm3UNPaU_GsN=VhI@A18#{w~R1bvu{(%X}}RPcMI3WUb0VB}wAjC!sN$xF%@)24EFi1$huzNv(tCzSAYixNJTDB*Ri5(eFr@L+)wZqHQ06-6bS`!g1TXJZ+bdMx%H z8jEdf$6{^HSX70MMS5OiWc|dOwO7 zu~-pb=P2U2nj&tCD5B@B0*>5Jz_tzr)NNKkZm|MlV-(=ys(|H|3LqT?=qM;a`L{eo z2jv;xSRM}!$fLJO9*45zu_0I6O-CxcCGGRUr%fiGVM^8;isWtj|w=gQ#GL>Y97$zbh=F-W>S2CF*9 zz;N3b$d--4`?xVU?>+`wtj2(^I|i%Aj)Bo%X~;a6#_NmHIDJSO&1CduoPRH zl|<4tNi04liHR+e_*5W?u1HB#IZMLVToQA%B_Sd!$uv|(W7DJ2h&neK=53=frhYW; zr;kRf|7avG9Stkv(U6-s8V^NT-g^ne-I8E<83{;jmB5`63ADsYAjC}qMhhe`tRsPQ z3KFRJJqpf)qu6@XD7-o_3j3NyAt7rNxZqJ3xndM9n2ciD?xWx&F$$`m#qsE_I5wXW zN8k=|=v0W~V}dvic#0#=S{!rr#PL%}938`ANP8g$x-5o&?P3tD6GKL>7|g@iv7;C| zdF;HV7QE1tU;)%W})~bkNm9Qw}UysDa zt0R$rbR^6-j>ND0kvJGJ5}~U`LK7qLVCqQJj2Vf=-$fwuPz1-jMG&<|gsta@;6bVg zs@I5M(P9z&og;z+Y9dS%R0OJTN8s}H5y(6~0*0GLus9MU&=fTSi(N)w*n9-qv`4^8 zb_C@96UOOB!iYX6j45rxxLzlW%yePQ_7}#ZCBi5(5(aOAFkX)oM*TY>EVwCz&mBTo zzgY;j#X|TVErgcULRd0i2>(qN!X`N(G=2F;AG-dLMdd%L@%l$E_5RVkf5TLGd6@34 z8>Sgy!<57urt^}+q%`oCd|Ut0zNEkOXVG6;r2LnvU;d#7hyT#DygwA_^oNdW{vn~S zziH8#-&9uhn{ImlCRP340?{rGC+;fuA&c*H4N}{z?06 ze$q$fpQQWhKMFbWAMMEdkDfXGN0YVwBiFA#sP4=Ux?1&vM*IAr`T9R7Md$||xbmIe ztp84v!@tu??mHDreWz0c-{@=WH_}f2My@vBs8snI30{7sPlvyfdfr#Eclt^hnqR4H zXow!19wN!AA)4nsL~CXbQN_P6bmH>c$%cI)Q{ETymHa}*_de6XouBDm;%5?G z^qHoO`%H^pe4?oKPgIxliHT>L;! znm^FL;14w3^aGhle4v$g-&54~_f!)9p0-=Pr!K|!bZ_t-4IOw#l3DLa!~PwaPJT!B zAK#LH=UYlGeM^;YZ)vN}TRQgZ4PESgLk}C?(5HYmG-B=>QV@GX8n<54oGq_ue#~pK zpZ}UXtYMx%B;BZ*{|Y}mf?GZKF} zNMeTvX=Lso2|Etb@RULN_4z4%KlPM8mp`R<9#83o?o)dF=Lz-qJ)vt&PpCKO33bhT zLPy1)(B9jRY0K8f)EN7i$}AsKmi%Lid-8|^_dOz4{v%ql^byg7N2K@eAx-XhNU}u_ z>7VmM`Y`Pw-T(f8E_6SjBQ+0bi|+%fFnB;I!Vk#*>V2}`aG%V=?~^8XpQNSk)AxG= z^kC-zbtewcZtDT6QW~Jd=l96{&^@xqzDHA6+#?C~d-U#OKV9kUr~Re%?^4N)I~26(4p~LrA$9XR^k>W+y7S;R?caTyic@aW z8r$2%sobWquWr%%!?);c?k#F|yhTwOx0pQWO;YQ+NuSDZ(pit2)S!ElLjK$!uI~oP zG~J*lfj8*D+#8f7c7s;jx=vHJT&K^`*GXV;ol0e|lk1~vq`mhVeNDYar|hm#vFbHi z`T8oUAH7O%^RCh%r>m5vd6le&u8{QUD|D;k3a$0LLO!#ukoMop^uF&h9ca2t2|<_1 zY~E!W7Q0Mcw=PlkmP=$6bBV;~U!wD}m#E;;MOw7?B8^JBNayS>Qm*PnvV7e~!bkh4 zGp~=5o%+aFvyZ-fxj=imE>J+l1yc9CKm)oLsOC>EE$Qne(WYKH5!g$yb9-rqST8-k zd7kPvpC`NM^CV<(o({>Jr@)8jNNvwKx}0*3GHuV1fyz00_Ogd+5BHE&ZV!EP=%KAs zddT5(H;p*eP5a8a$-}*yBxiQhkzZ%YxA!c`G@Pa5{%6V0i0zL&OUJICA)l5rBpG>z z4$>KNl|Dlv_fJ!6>uFk^beg_fpQdJ|(`50yi=H3sqQa~$(zWlRtCPAY=EEr(d-4<= zDLzHct54BS?NikBLqH}y0_v|3P@=DZ#u*5xT}VJHu5{AJb)8fa+DY1Gope^Blf3Sp zq+i=kQf=Hx(pzwn&dZ-9?~Wkbb&r$ApJUX1;TSD!JVti{j!~fTG5T-hG0MMjl*Vm3N?Rk3 z(i|M6F6pDR?EVqD-+F`slaA0=>m!t*bc7_IAEvs4hiP)wVQO7|nC476OefyAlhuiK zx>VFojxOzVe_A{Fd_P35&mN+P>O=I^`w%6~K19RA2Px~)K@wYgkP3qjl9b6oDic3Q zvbPUV)s_RK5OaWPEDn&OEZaWZPYQeXQ&q}-lC#}U<;wd>`sF?0c?Jg2k*+p?LTj@o6 zE3M3FrS282WT@Usn?LR(xz3%$FWE`&R_`R2={u?C#||>+*+J`Tc94Yc4vN*^L681z zC!5RL>EPP!G(KcI<(h1#58~TtjCko5*~8M}e@53Z+C2iB8U#(FxkbUjH=SWmuh*U_qw?x9j#fpjy<>6 zk@V17^6FYkhsxKIxW`&rJ##JX{?$yw=bLGHeKWQAHPe?l%`|^RGgV)0qNnSd$RMnV zGR>OkibNAlyxT~j+ZyRuY$J(THj;x}BW--tK=1Z6(A?Ap%C>Ew%gPO;{IZ^W+Usd| zc0GN!uO|jNqJj@~boE3XDHqp~mrEUOpH@d7zSWY^*;-1es--TkS`yQ%CA+^hRMA&M zw;F3mC9sCvjB9A)$Ql~FUQJpp)f5;}O|4uty_Kw{nfIzFY)2LCjjy5)3#w?A0y}1|pi%~)JXfvT0X^;HE89RlWPh=g3Y$u)E3lOQGcF}P(NgleQ9{ivC3G#Kgv6IgNSL z7LZ2+MtLMUGLL3o&!yEHb15f0m-g~<>CWg}66(*P>DzP2J}!rnEOTh1Tn?RoluaM^ zWRp^AHt}q;$wxVx3SMNf})A{kqBz!E1Oq`M^@^d0>FHNKe(-TR)CxNVe5-4Rjp4yt? z>8Wu%Dc*>qg%NR-AQ?wHw#U+4%UBYB97D#bG32KlLsf^ONw7Sc-o1+=<-#bk)QY0; zu1IQdkEGK-Bj{~y1SuLs5btt0`38qmkytqG+Z0B(D2#sJ3#Ca3p=7BLO8#vjRA?7M zyIuy&Ox;FYaoSH1XA(LK-zgefO^&h&{LrR8eZ#9swVzqbjy#H zMfp*Xv>#>dTtm%PYv|w;U+PQqrKc*s^k2IVjalJCnjgH$q{y3=O!X%3(_R$o;YIns zJgKqHlXe++vj3+ZbTQb2?u&WQyG`!&o7_oaz>UTwxRIuU8|k;X5@+X1HZNC`WAnO6!5dC=B*KY0B%P>p zyCZd3I?~xk4%Cz4KYquCN_ytA09Vir@8%wo#gWk<=@b`&*eO96aaa#ypZ6-R8y z+QEi+9~aT=;zgt}Z4oJ*u_g&mYx@0bA-%6#NDmDb(&fum)ER6=d&R71-KGW1yB1LL zJxdCVwu@pl%|2Z=!jB zIhxeSk*Ereu|9O4^F1G_;WJ2h^bESbbvkXbm`>3Tv}t~lHpz|ErpNoH z(cZ<=DD~A;vdNiBN|UG3V22j9tLcA$tOin>2y$9Uo8Y zSB@v|FKVPwrbaKOtI_suRSNP}r5S%!=xu`v?J`uMkgLk16RJ#a#Fc61=5Z9jl+vaS zDA8cN61B)Hk;mS#q-Hyo?mSnd>P$siHbId_A5)-iM+M@4k|)y=dHOm{p7xxPBY#gh zn)F+i?$*h&|NpXNeOZS71wn@TRU=L(^u#H&PmIO~h|$Fn zVwAF8l%|`C(%oAlDKBay8A^|&Cp$!_Y=H=wJsv@?QbthCxDjN2P?+8>6{h+(LNq^5 zh~B9Sk#5RAF7v=JckA_EZkqaEF4_4H*H`|V8-MN>7dHHpJ7M&blM4HfTfOB6w`1Tt z_g(%wH{bRfSDyKmyLWVm)B5yeExz=Ts~P!`yKnY^(};P`1+~88 z+Mc}SzAC@vOqRdl((+$(U7fGEk>6i(3w2*|1#4b#z0J?L(KnuPwxgeMMHYixZ{kyK z)V?R&!k3S^?1_)LQ%;Y#za!1NnqvamwcDJ9amFed$ExgN# zrr+Us?YFs@cel8m8n?Jdt8a3ORX4arz1O)^q3hhfx!1VC@T;8CwkzDC2bZ}d#mii) z-6d`y>mnz4ypJ>ce1QwrzQ8qj_HyUy&U0Tco#WI+&v8q6JzR23H@B_zEO+h68Sanr z8E)$G)7E-tzA6u0@Cfa{wn;D&rVIko1K-2Ce&xIl>$T)BA%cPQaFcW>`8Zut38 zPGiDR&f4(^7hHUpD?Q!L?fZF%yFU96_ch=kH+I7T&iM9zZk6-RXXV=rp1^(U1N+tza051Khnv6)+8*Te;6 zHF7D(8o2UL_1vau^<2A09e2LAmb-VchI=Pc!ws8Ob28CY+~l2=-0a5{ocXv4Zu!!3 z&MUW!i#Sorr4N;GB{NF6ChuZyM?(>J_(~ynMy!y#!WD4$WAnLJyYjfNPjk6{D!H7b zeGWIaAe);k$l_*v&*ThsGdWt5!Ic^Fxs6-Wxc%~}-06&D?)ryB?x|Y>_vu0$_itV- zC%rwIQym+{P0fzr3_gc(?9i zgR9)-#?`C1a%=NlxQ*Xdaa(*>a@(&ta;x9`VdZl9kWx9^4x z*JiPZ+uOE~+daXGYc00qcKo#9wg#AUEw_kUXUTDm`^~tTNv2#`={&CRw=tI$WW=T3 znZw0d8E|0-XLEk)dYpT?F6a1HhqDWr!CCZcb91eyaWmVsxG5T%oKoc!PV(Pm?qBF6 z?#sOi+>1ryxx0r|xjs!5?qt1 zW?rm&1CKMQ<%x~0;$8Vv#;dmo(E8eY5;JL3h;XRX^!wc!1$@`Kqm6tegGH>{!3NL57 z0#CwInpdVI&Xd0^#M71hW@eQ9%8d7Vz|7M5ikZ#1(`L(z51Tn|-D&2cxX#QyyTZ)p zOSW0x>2R~_8=cJh(|Kl(+%(Ldn~pZSssGgU;rlkzYYr)<&-#>12V`tagoH96#6EJr z`KTCUbHef+ANxl4o~XaUXYovwPRi`(WA^VwCwJxW5v!AOGK^tYMR(SnbRNS;#^JV; zVP_e3_2l`J`y$hshRc(anhNQNIq>V`#a(I0yCTuK+cXW?=1QHt410Qb*OX3evs7%7 z)$6>pI|Wz5%{n_3Q*gT5x^qNKGK+)Y*tzap5)|CLIveDZ7_U0C^FN0~T)dLl*Y7rT~^T9^Dqumn#wvQf5kE_gqqF=lCj9!*wksQ7=!0c8#`AhL_@xOTjwZ= zDBMil-5K*O0v~-3bgsV}ju{J%c2*wsw@U=$Ldum+ zo*)nw#6#Q%m`EvOiEsc{_kT2BQ`9-DZaAczYaU}j8GHEU$enA{se*FLu>SX zpCk}@W`)LpDFUIVme9JcDTuslftAM71OZHfYHZDP!Oy)MY~Sh#%*xI1&}^1qexM0D za%T%POxfE0c>}@FNF%T$VEbTs0(K6pjDVG8dLd>4Ru`-d0c#7aO#y2g>^lVPyTHCv zz`h&o8U*ZGz^+Nau8ncqYy|9D!LC`rt{v@RAM!cJE+) zAYgp~)+YkiH(-4vV0{JFX9CuDV0|cHeF@g50@k<0`dGmFnpmF;Sl<&H0|6TgVq+p; zV?%6=1Z=E`jhTRr9kDSKu(2dIrUEv$#Ku^_#+ule3)t8bvjG9K1!6WKV75WbMg+`O zh}n#Q*$y!q5-?jLW>W%YTf}Tkz-*0}%?X(85wk%7vqfSyDPXoq%ti&wR*BiHfY~lF z8x}BICT7zDX4}MUT)=Fdn9U2A?Gy6>0rLf7J|SSf!RE741&^EHn7oPhZr$9z!0e34^5DPX?IF&`B$U*(w33YhP5%!dWcmpSIs0_NL1 z=Hmk9>pbT3f`9+`_{P!`md>)YmZcDuX0!BWnBmx2vSjJ;Up``3`pdBGX)JwVzZV`X zb^YQ)g{6R>eC+;@&u~qAjAMzu^Wpl9kMOU2Bn+|ig^$qBd^msN!}KE`@*h~6?6+pi zTh`7SK4f0=S)46CRxsTB^JlEyAfIXSGMxNlJ}y7xL+=3}`2&31>Sy0~mk)>A3{!uT zkDb@~=wUef{>$thF0wW+urlY_b@lME=`0^fr}?lx#fM}kAKe{%#2w>9?Fb)74l!K* z0Y0v`@nOG*wb9Cl{tiCF)bjCq6CZOo@{zobk3&s-JgetpbS)oKtN1WsIDU%~KFkaG zFwEm)QZ}E(z2W0-Dj!>u_y~&UV@eEbH-eAEP(Boc_}K2puHT1`y&mkGE1%)8_>7;- zht+aEsuwe!z#_&Iuwrdm@Zrz#k!8Y1jS(N~^x1gmvft(De57dc;ik^Ma{?d2D(qeq z`QXd4cBR<;it`aA!pF#e=_vV?4$1H7$oQO&x9=EN;8i-d45s7D!*m$kOGm`5bZoqu zjvmG}80<-B`Z?(sK9P>UM_8Ey=}aFt9jA7rGhLE&_^nUJ^u}~Nt4>EvSvt%L({VRD z9UF`*Uj?MP09lLbMEM(6H^K>|vrX#>G9Z|Db z(q{WpSRUgt7%QgYSr(q`JJ_PPaLvu?S&NijtX>}U@D@lV$UK&R7880G%wGo+y%Ry<_>633idgqK+QGI45J((qx>oOvWse zWE3;b$3u-|XsaY6a7;4RizK7(za)HkpM+6^Nl?C z0yc&u;E+cGI_(o6Sdf6ja}%&-Mgj^ZB*0fT0fr(8`28&&$6m!Fd>|ewm*W{HG#)Ds z#^dqUc=$EM<4I9G9Ma;^5fKknpLj$#vi*he7@il8xjOOipAe4{#zomF9FG%2ap-=| z(w#V_-5iIV9dRhx69@kdahO{fhv6)i9~*~A|2U{Qvwg--aWsp=;LJD#PGnn|I5-K% zq4P^D)AEf)%&k}mdSaQ5PAtrJGOkKfEUJoQ(UuyEGhwl~Zcq<3>V;Oge z)nVKftC6vg{uYCa&ts5vI|j4P#o*eJ7zFQ#!LNoG7XK^;!;Hrg9UO!Et7AZRF{m|* z!84s0XpfJ<8mSo6{fUO)T{IrvkH)u)(GWfv4beT(__vnvT1ujECp8-Fq0uOGW1N@8 zjMKu4#uc4tq^m_kQ!<)8gQDQbI4%$Squ|*ah1*A?uz>MgcGO2Pe18;H#z$cT3N@Zm@V7H*3`O-%&)vm!7yDguiJLS7PbgdthB94G#*HZng&>LL`G-QsArv+XGg&^Wc2rh39fmTHbqEka~I4}gC9YdgL5rQSUAqZ0mL5^q$DnAFK?m;lB zdV`VM9*ppoU@R*QW;!6j__ih($Cn2qfftM!+QGP`5RCYLK^VjMGV5;#LGyGFTJ{7% zsWAwdIYAhV2mEPCj5l*A5EnNDqOT|rr{eH>(k=kP#sLVL z9DsA912Ey6KY|}IeoU`FULW*_+IoL1DDcOcXn&--`J-r|KPqPXqg2%&86*7>`oRxN z@A_fdX+QQm=EpSB7=MQE2g4vgrZwez*58mbKkf#UavcgndXkc z_3mhAJQ;qdJ1iXB@yo;=t&`ocLfjo+-n*gjrW?j}xM5w38;gJ7hVpPX{Bd-Hmzf(n z)ZH*|KsVr}DyO$Lyl~gK)CQ*dabf35O-a|us@2T}^{od#Mc>Ma~^LRge z;=ZqOuIoD2InU?oghR4cI7Gb;gYlQcz;$03m==Y>r}QwuSz(ao9R@CTVerm44A%Y) z1*fN>aP>?mOsfusH~FD3PaXo1k{Zo(EM-+KxqiX=Y+t< z=nyy-7y=KRLg2Gm2>j6ufo89Q;pc^5c)L3oZmbQ4{mNj-n-UCDJc7ZxUogCG7Ytjz z1i`r5LGS~EpkPZ749pG!oEHQm{es|#eGoWy34)S8fzbMKAib{z(wbU<&}w-gjExV3 zMdZA2mq2)79tdr<0-@K-0B|}V03&Mxz#~5ZT$2O9mRuJT*8uoy834C*0$}?ae~7>2 z5B9bG@NSJi6wCd=W0F5SAMOvSR{qegwLh$VI}VI4kE5K+aqxG|IG8CP2PYC=^@Ba(esGle!I|!Ua7xn;@VPHkp7Dj1mA(+O z+!s9Je4$g2FEl#(!n&@$;QPl1{ygx3tw()ec&QKE$o7HhbA90TSRa@@$OrCsAfM%n zH|)OQ4IK`8!>mGY*sJn}UlHEmG{PIAdwRo$mfmoje3i#%$HIS=W9it81^w8upcgO} zw1$j@rp{xb@rM^2Z1jRW?gbGWyr6fQ7d)Th1sg_sfwz?xd~N9kt6z?RfoI1+eZ?5? zST+VuMU4ShzcH|D@EGXYaSSNFjE3tCqoLRS(GXKG8g|RbPYE9lW|Gk`+H^ET{`G|H z2cDFv;0dLhJz;wW)oGrv&dn3DtUO_EOHUZ}VicI19tE$;M?v*sa!=-t0!yz^aJAnk zNG9LJ=$!{tU+@5^@_>`M9+b`P0f&4&z{bV{*0uM5Umx8mx62*M$S?V{!X516+#%ZE z9k$xK!zBZEX!`61?XS6kRjnJXcj*R06fVTb!h<`U68qW_W zCV4olTrwOU&m9i^#tet~*27_2tKsC=xq{XySLnUX72L91A#}Pc%oynk^DJB`tHTv0 zKO6?WhlYXUhGAf=8U~-n52H24hQYEf!@%zcK--(7x$Om@I2Py-4^TZ0z{3WpPYW>d z9fN!1egyAeaC#8~+gS`~S_?i|GH`Ff$P1Iet$GP`E|!3|LISEV32bwez$rrsJZf@* zrYq!j)VP3Vt_w6Hx8v(*7kJX!1X)*u;7R@1a5Q&GnF$u3U`L$q0TU_vori{ za)Od8PB4-jj>e@<#Fjh3mr+iTWaR{(S~$V5ARt9p}< zq2)kcEx8xuLufCU#Kt!xnB|w}p1QY+=|kTbMP+mY#jKP||~_ zmp_By`0c@PmVAmcD+bf{42Ig#gQ3`JFr+sh43qBJfc-%m&|GZ;=VEMN=~x>W)yD>Y zYT7{AgF)b}9z^$(L68+U2#kCN!Dj10V5L0>wmuvPUHCv)ymlabjvEMpJ_DiJdLU?# z7vcYK0A;}pfZJ;ZK*zWN;Nd+0;`$7L0!{KI?)QgF2m8ar{QmGJx<7mv(;wbi^@k_T z`opz5{b&u5e&ieU14U#%@Eg?+%q{xCi{E`=`^~;EjT{H#WqskqtiBLAqA%!~_JwWV zt-<-KHJq%phOyb!aDIw4xJ#^Ie`jm3{L}{)og;Ulv=0oU3C_ImK5*B*4|H$W2PVDh z4Qr0|hEv78;ghsC82Xd5(7!i~Y1tdXANGRjb-iGAelN;I>je`$d%;+XUf}TC3cB2| zf^XGUaAC0(6i>5)Sfecvfcy>sOh<=twj8>}Ce5P0e8NH&Zx$(G)_eB4aV@i z(imzojUi!zG1%H0!|S%jQ1rwIJk>_#M&En zf|YMO!cJoBkFM_sS7JND9nX&Nz`P@^$!7o!7YyKZi2>|Y7(kJ~0i;+PKzK6)%KYpA z&8s@V`OFTmVtfY}XWIeV5;K4JL3`?d6F0xCJ*cO(hcM^%@VR|^$b8Wb4C>p#y8L#~ zZC*Pl7~T%r8MlM9_xkYmxIXw7>O*a;KInVu!*nx!*z-jXG|uUP+h#q;lFIATT`AYvFrC*K}u~aFj?FR z_DpI8qwHHjL+e&B@qrGFFX+Ie938kBp+i|aI&h$k4)l1~60-KTgeN&IDR;LetQgV~ z9<*r*)(^E|{$6dU%+ZGD5!%pgh&Fh&(T2na#E$RL0`+1oxG_l!-q>lu?^asS>b@rE z*J?uhMVg>HQIoQQH0k-R36JlzfU`9%U}shf$O&%&(+0Hw2dx&MeY-ha+SwddWi$u> zkmjJ*zd0Oj)*Rv+nt|DlW^g>E8O#i5Mr-yogLS_(p#K#OI9RFyBjg%z!bbz#EHyy+ z@h_XX?k{s6@t1Xb^M}1y^@mugKWxgg->iM^Z?@OrH}iY&i#^Kz#b(?5V$W~=WZ~&Q z*$L~P%7Dz*JmY_`}&n#-)XZFYSGh6WT6Vu51#Nr%3 zvAg#_GReY^Y}J5|?9ufP%u4xzO}6~NR-S#&)Uoebqw#z8@z6W=XXZQBT>l;WwdXB+ zH~uYaXz`Zq+5U#*5HlU}{Wa^h;WcY;d(E=nykdh^zG9b#zG5>Tykt#TFPXGI)vGVq z4A~2I$@~SgIr*GrM?Pma44yNSgU?u4#51-``x!e>@su@=d&<6if5NmjJRxT532XcM zF>9Xpn0*-Xm|ef~h}EP&VhegdV%`@XvUc&rGaEl-vib+C$Mgs6aO(#wnAqi~f%n;* zpZD1FjrUl%`#pB@^<8G2cb6>~a+ftU-eG2GcUXkg9k%vtBRdt{$UbyxWcqctSUV=VU2b4s5*paHE)8s4{dM+v z>UFkM=Q=a1yvEA>uCYE}ud>a=5gWi&rg(gX-C1~r+4Z}^GA~_b=i@IkUE|BljbCC3 zlP|F%txJrT6C*tKB76Fg*x-EnZ|DW~^zM0fJ?%Whp66Nd>2oYG@*MMMe~#(zIm<4E zoMnrConcNJ&#)&W&alkqryv0e@P=?^5ImWggI?C#%9%W~>kFsm!N7!|*BkaQa!|c$C z!)%BBVYck%AvQ;Th%wVctj*zic8M6=TZScmFK#~@(P=-6-nWmf3Eju` z{@lwh6zydXU@v?1a1VQ%v4_3vxrg05S73}i69jx2(9c;4A4z}UScGeKLowe+=o!RUyXMw@xEcSaDTU1cS3Y^N= zmd0(YRI!b1G1aSwORV!Jj z&q}8Meg&&vwt~$bu!8AcAciwCkGbjQv0D|(*-WqH?8EC^7MGLDK3M0nS!b59#@Wl5 zN2_J5s%$B1KWZt9e7=Mo&sxF^t(LH<$8*^BX*uk5iyYQ#%VIWh_+qyF;UcC^UBn)n zEn=GW*{u7-Y~sQeGS9+=EXa8wn{YdeMI>jj2}W5ga9<|#2+CykUluTvRSTGg?E-fH zat7NUoxzsqXRz>{>8$72boT0X8r!}&jdJ2!)vNUc;R8I{7)GgVA|M9JR% zRj`f{1+$UKncF@Y^Jz+EJ~qkBeZG|0?nq*tUnH`RmWk}}R zEc3{VVfW8Rv-z!~S(AGdi_VzO9@j@Q?_cv+mE%07oiLXL*34n+-_B+?`^;u-X3Szk zHqT@s_hzt|E;CqK&~%o)Vj5d`VJcI!p2}vsPhn%zC$l~n!G8Ui#7@{xVhdv?vSF1I z*vA*+S%Kwv<`@yqF0Kz_6K{mFCmllB6z>prV^J_0c|3@fYXmWEmp~Sl6u?S%`LkDV z$1$ru<5<``Bg8_Tq#Wd(zB{-E~$J3b9LtIRFfI&H^7YL%rs?B zHkz;@x4W?ngKq4MS69|Ls|$0hH)hG-jaZqD5xYF6Gi%yn$lBlS#QGR^V$MDtnMbw( z8+*6|^Zu_r^R#Wx*t~XZK#4vxx~Io}8|tw;KDumgc3YNnxD5;YuQju@ZOvZHZN;{2 z)nSwGwq%BeE!lBzZ5Fjqi*-Dt$!fp1pf=WmJ)Pa0C2nrUnl);$Yy%C}aqS<8UaQ}d zKgmBOPhb6z90~s}$v^j1GD-49Vz%?Mq`~x)BqR5Oq_@U<$tCEE<1NLnm-BnfVMAlW?azU0ZZyAo5kI})EgwVLQqs`CYb2PA@8veEYsdVm52DWY~?3l5qD8lIT4}k`&8AN%qQhlAPuR zlI)l@l9UJek{F*=k_os%GNON;#G)`)@~8DO$+hGqlC3WmOXdeJlGvSCC~30Gl2mP3 zAer7FLt>bgCds&;BDt(qNII=cmiQzkN>T&jBxN?yk`sE7lE&AwCC^XIki06HDtVe7 zA-OSWg5;1(m}HZ2uq64bzhv}PUrC4Rv63rGMoV&Ldq`Z|M@pXdaFs0lE0OfL<0RR$ z-$CMCCG2V39k$AWGFVmWqBUfr%aykUE(IkkUBV_TbusL;(B<5@ zRF_{m2`)j>SuUl|!(HA7`M3-`G2CUA{ScRRTl=^iH!yK|mEO*!^`{mto=4s}Cv3d# zT%b}r?-{?v`K;4o=L0rVoG-r}=zP-ur_-aetDSD^pZ01KNhVI;!VXE_F3jPw0ErZKHZI-u&@v8YaP3$(v=W>g23l-KD|Eqhy4 z_xn!@bRV*}PB0C0OzLh@ZGZAe-7%`!`lsuvss0VVSSNS~I&O7YRA0Yntc#`^Ve_ai zjOz8|7j=S#pkrItmnv`lrOtrrApf6r|NW-@IyHUsrgsv&0$)m^FPzBg9?Cbojkqxv4zpAP0~q&jH4g}RvP^i(Ug zk}92RbvV@vr~0XfQf>ZrpxThCeS2HA;4-K^s4q}m7dlkEo$5KIi+TaoKbt@;m(EA|I!oPt|Kfpn4?LK!Fo{JQ@{O@ z0$1BiQXi)JciTy-0&+YilGHxe6i^+}9cFe223)pDwq z{iW*BRLA(q)kaif6I5!!k5D^T@1}ZxV!Aq&>ZcDGYA>pq8JTLqme94JenfmpuWi}t z3aXAn7poJfdY;Wu3+{xj7qvFkIq#RLFMJ`6BW<}lpXwrm6>7nx&^4v*PIa3@zWP~H z3hX_-TD_g>vGBEO!K=`9r?#PbKV`kT>2nIaXjs*l|c_5T={6BX*-^z-D9o$ALQ zh#7fRr7or#qo`4bP^J5Tx;@pDjkW4C?^9^baj!a^>XKvo)J|0CUZMU-{LJbX2i4oC zu9vCR6R2)zi)z8u(EUVx;w_!0L5I~cs^v$HsQXjh5pYZ`m>at1s8>*}lAip>`!x}V zQ(bsQEqENdFRA@SJ#=2(oNCp$i|QI;bSj@*QVUjx?p^9ORLga)srM7NQ@ZZDdK%Tu z{cflQ$3yow^??_3oPBSrr&3+@s8Ov;H8=jQS};Cz4^&T}n!fgdT8pa8`jNWg8SzEx z$7;d<(0x+<{V5%v2hY?+R6}B4s9mXgYrawoHi+(}>TIfxz2B<)Qtfx}o%%fSLgro{ z)PftL`>k4^s&@2eb=9L3_}=V`+MDXjm0#6@DWZF_I*00+eLvKFs2=qEsXp<5_NVce zTJT16-&X&*p8}bG|Ede99yq1J?Wk7eHRBiV5$6-uoX@1X-l7H9pt}4`3%>R){r(^Tk)#fbUoU&=EJFW|J|Bj zzeU@Bq79!(RV%kG|9&$Cz6R^^MO2@g>v3bM^sM1!H&Wo#E`9Dmb-%nFKi)w1xsmO; z;G*bx#2;LzcGJ*-&!d{K!GM3imI6~}b>taT>6yj#sKS4p`2TaB-LIyA(UQ(w@Kp3% zwt2e(!t=^dDf(BdB)zX3hnpMbA(^h3b>+9{kZ+x}W=5@X1tnb+P1v-=gO%pGZ|z z(UadfodVMmtavC@Pu7bIwu_#{+>dI9OTGEIlXQI6_Te5>Z%?-7g8QQ9HFu)A;d5WU z>o~PDbw6%Rby{YBE|@TSrgLMeR-Fg(+@mS92IfGnN%eWzATD?@dhYXghpAmV4d#=n zX11{9*ACI~J7>!UOGbSIexN=D%qH4%YpTDjhVb=B&&l^gxZupF|G;IOuG2I}{!&fc z+vuS@n5u_?6F*)@_x(Fgd@$8tTb+6FL3*x4y71OicMg$o!KYC_gx}wv0+UWL?n%`l z5BRQqDWDfNj0<*+`YJqQZwl1CcIB`3(D&31=YCXYDo1d^wNZbDn^0}1@5a-2({aAx z#-Ht?cCyi(3+9dbJiM|d1ttt0^^fn3sV1)Mm?sxJ9QBL1E!8c7WBAIQbX}Ty@lTa> z-97i>f|aAb6R)Zu-cIVxb*Wal`tUhBQb5t#mkW-L`d7R=Rl`C*t}Lhi!nASxMj7p2 ze}66*JL-e+#oMTT)Ccg#rL$CSne!G~CNoOcRJYHc#>W=W{m5ZDFIbxb zeKclp!2(j>k`JI-k~fn}SJU+!Hj5w5r}khmn+r~m`k#E3UPnC2qlGiM!``E_${7Y^Me3%u*hf<|}ELSWeF7m%~uR2ox zJ&W4^WhocTBK4VhbSCvPrpW$r-On=U_%zA6;2Ei3%|p}a`pZ=Eyfl$ltm3Cr>9`uE zaKSoK-ridon8Al8QG0|1T=0|B&*y6sX!~_C`N?=(1TR?31+Pi(9o%Uaoe!@ZK4~UhPc=C_V+P&l zIxXRX<)n8Ler6h-?|V!5o2j&)!f&ry>9DZ&B9XE~T{N;H1yJ^e0Hr1b}mh&Frbe;950kyCcSe%!~Lqk*G(w96Q z7edE7Yy}tWD7`E3(ja=?_E^d51F1b`t>iZX=sEa$B^O*Ny-#s1s(W^?;$6qlb<;VY z+xXFbDDt^rPU)SChxw$yk&&za@%*V{>HegNbE?8B1cjM1Is6Eao;7#uI?`I2m3#y|BuH%AZrT05-GLqf{zOCbZM$q$Q{CaLb zJOzdyTF(XJO7DPt^e{U9*@Zj+X#3t2@(GOEvtJRPAxQyxPvrAmh$l8K<_XTUf68L6 zaH8kqqhc=DSbCS_*^ViYzkLH=;y~{mdK-D(kQC5~+sFksOYfU}jUDx)oHy}xw$zW= zu!$EAPJtIKHuEAII&ZT!^Ws4%5O|J$9!UMFL0fpy06HG4ws67Q(t9gk*N=|pgspr{ zU+RY(-pW^5)A#i(;ey4bcU!)sH$BJRmhgqWsDD1Ll&4$K^I>l(7o0A=|MCP&+JDtH z9%(`Sk4M}1^d5Bo@F?Sg;iY$E?r%=#SHGNlno<8FuAGA@-FI%3b2}5_n_af^-rcDE zY~0Sfbxnap%^h673$@ExJGfwf>0O(D?o91$Pz8TtNY`h61;5^j+V77Fe!L^K`w5l2 z)`0G}hb#G(4)k2=xs&I$Pk|PTck+~W^gMpIlh4zq-yc`?&*K=WOZ}fN)m-qz^j^=6 z+oZsMkE(f#)^yxGYWN!++MXRXT(HLU?$5b4?PuIBzEz8!LpOHu98G%PbKcDbhfL!G zJh(aCPc>_~OEc=X&8p?*8q_~HSIY&XOk)WA`EM2MU$uvy{-uK3-}mqxKUMH+{9Z2j zWg2JTkv~+xdhX+6zpG%m_z|zq6cQe4?Ut36Tqyn#M-B^pOe@z9ILb-1ep6_1x?M zan|+qTyWMje!`F5Rl((jhj{)S6+C-=h)-{%{qs4@1%pjvEL`iB3VIqH;n!}cV5s5< z-`qf~_Jbo_@YysD!(FZsD_wS!x4No=jJC)4waaweqK|RGZqrx|pL0l} z7ar%o n6;{+F6H;w1;WoL-dK6Qczo>oEg{wI02Q}n%gC%It0Y0QV09an*M=&67H zj?GaO@p7lR;K6BJi0?n7f{>S|xxAh-=*OPn5>&ywnloIm;xu-|>+4jYN4vIW9PI8eigddsR@_>O4>0Lu_~Cc|N381?88|bHSL?7!==Gqk`Q97x?UI zV#j}9;FeV?sGEF|3;vwOsrZ@-%DnG$iTmzQ!Lg;6xXyOk&ySb5VAE+VizjYV!Knk6 zdH+(XCRg~QtyI&laKWw9co+BDOuy%Om1}HL!STwgeD?-A&+V^q!L-wu81G!90)Fcn zKfPWB2PD^d@;Vjl*>s%?-krwH_^mZ6%CBqS*{fAha=w8N$)|Q_bAt;Op2pUA-U=1u z{kXv;c`8^m;U<5XtAez{H@V>CY5a}DQWeZ!bc?^tQNgsgxA=<1DhTtt%>_eGV|4uS zLKTcKZsa*x)J~O+d~l`;`aW#rg0H7>Jg!Qo^HqL_TcpwX)4j`2rl{a^^j$94dm8KG zdP)^sbG*lETyXg`9?0{PRIvQieQuwq0%gAk{CYgCFR=Up7tB75 z8S)OX^!*_Z|9M+uqv*OZf5ZjPPveR_bDj#`K7Yi!&!u)X<}t6EP3NWRF&C^qjXm=B zGgOe9^n_@l<7ajnOPjc_cD(Kbn8GkxS1#Ra(aM*Tl|uD@F!2{WSUT>?*Ial9G+xT*j#kmyCvW(-Q7X_af5S68RPdth zTP~ag8dK#3BWbOLYj3&52-<$fcf8V-&P(AtE_?+Vcjd@b@OSEa?k-Wmjg#;Bd1n=6 zlz-sDWuUQHe#=n>p`SnSi4Nqw1%Kp^?dd$#edNM(pz&M&YB06;^iMp}hW6{(C;on* z3cN>u=E8xXF<$GiyBpK} z&*BHi&UD=`{K18DL1WImvZIQ!wg3C)>lL)8`;g&JE_@6cm*yFIbe!(~?T zKDUhu#+3Zx!quR$YwoK<_qTb!`4MeepW@PQZmUJ#WA}#(kAudyxj}O}&p-e0bPaMx zCjI3f{wQJG(Z5_c9yA7y=YA?-rke&j{-*@DBn>S2t^~_+4HW(djgzDNixTd)ZH7-j zD?!bgq0c8JtsUJAg&RU+>1h6*KJQvH%zmqc0ou*+{c9z(c5IHq8=>)bRKHNdq4mwN z`*ZR`&Ns)br{t3SZH~ezp)q;%ex!sxQ(Iuo10^)iZ-EB)mC$&i1q$DU#_h48Q3*?} zHF3yoB}^Z$iK}mtd$LRug^NOC`xtOt39mnD;;ySoIAWoN?XJ-F1!|%2RA~GkPhX(@ zI-rG?=ata)wHBtFRnqz$+9(_rnj=8lQ{j@J=)2Sg)>8Q7O1FH!oH$b`2U_}m+eaO0a~N*X=q*p_m(Q* z)3nyuqC^Sxt6QVb7CIiMTBC4nXzl}_ZBRn5er<42u@XK{XoIps`n}vXC_EgRAHlW- z(&;9qeF8j*k^?jQV+Jp`OB3s`b}Hhy-W!Prn)Hn9hzrB z=Nww!Buy7piz4;6Z-nL_({ zPY*{Zm2gjAAJgSZ*y^f}^~p+@9jA}N38Fb29GXb`*PxH_@pK$?+F^C9lE!JI>bc~zHfxWwpH6$UmCU0o^AkVOeem6b=&2F=0ih654+5fcJuFtrklIY!{@2ML`BA z{3M!(!kBU7Fda0&jlN1a{MrC7dMiO?(h-HbL~~WxZ;TSYrFO(nPbKWy)e$p2s2x4& zh{9{4`7FFMLJ3biI$_JjO$iUejqzs}C9GI# zjKaU7c{;T3O#Ao282viY=k@4kqr4aJpzt5GQIVVUSxljQgX2dx_m};V*Kv z%DSQOy=dMLE5DQX)y4!5eI++bVuF{O$kU24LE(bY+#-JdK>z=W3AT7oYv^d2Vu!c% z`}U?NJTaPo#DOmrU{_#@F3%Nk_lzleJ|*w#mnjN|jOHkD@hQcqSc}!e%O97Eq=D6a90t`aTaUHGSvwx8}3ipiWIxmaYLx?cI`=Uv>0`mIwL*WO~JUBiIqU~PN503>9Lg6ve{60>$P=K$E4cc|5b~nWaTbe1rf0Ydi$B`HS+}=e20pDy; zW<)>t9*m<6>F2P)DEvp_1n@~7w=zNO&O_QPc^|&0&eTL%y+|SgZIO{NZ zn>9nxyj~9T9uK7%7dhPS=!C)xB_0Fa_sgL+$q9e$kwf=#C#=~mho!fjP&lK+Y+#ov zIZTr{|I1-W-7bfr8=X=3q{MaLlM*@Tws67xEpkY-b3wOFa=16$1%+!$><4Zwr2RYP zg8u8|(CI%HY_?VoioOyQ9xCx67`{>tqn1gqWu6==>m~GjmqUk-5)_UqF(jz7n6}rS z;jV>pV3`cVGv%;pFGJz45@&)HspPjB1Ny7vaB?)@e{wlcQ$yjl5{rUvNpg5~5AapI z96Z|%!`xUol)DZ?;k^>Cf(?=M_gjadbgmqZT_1*BX483S>59UMC8h<(PowiU+ZBIJ zmV?83S6n|y4lB>O()B0@;$HAp7=7-*;g}dg$0K4m8U)GVciwOmE-kS!NOP7@)ifNR zd&{Av)d)=UlEb9n5hy%c;%9J=haB_{jzDiWI?k_0;IrX!$`v1p!oelR20JopM=2w5 zhcm6GRy`7j4W;A#Xe0_hmpB}pV@Kz2q#ORRq0dir!xaPN5W39`g}Y0v4(_#?BE zII1_T&*toow|dH(S6Sq=%S zJpScxjOjqz`^^J|4@_JTPS&OCBy<$MZY_t8i$`ICjvSoTqfofQ#13Ir3u>pPo~YMM z4o1G7xcZL_CZ~C#@Q8^o!p%Qq@Zqs1_WmXV$4;ZMlGce+xsOKS7!!kpweMxnx_mS` zyp@5^?a_Gfl?+z38H2(4CYq=~=6p5^3CxADa_r7|#<_@d5M+RypEC>&~HwD4uI4Ahr= zF|<$yADj8%sRFS-eklBE;<#|@Dj6)x_rne=WRzv#hpJo|G=1|!;a(H#g+YsD5E3?y z`o%I>lrs+dX3F58dK?Nbn|Lt%lOlsIX8t%sDWi25{PBWJ2GTTt6wWp=V_29#Yw|tz z|ChTmGn%|@_W%?=H*sY+XfADMSpcq@C4-t<0r+jY4DPfJMB#c9dxmupG8h;ch}|aA zb`%GqGF%2}7Xwjv;KZk)OOOmM+XUfye;ItA5`;f|Wnj802!$g~3>(&tk-?m=LDs!-suk&|+jL4(UVZIUy7mThZT_hN5uNiK#=I?lO?;gy8~H z8LSx^h7Db1P&+3Kg|ANB9VQ#naXc4>rwwGF^(PFC+snXgU^ohwo!C6w+eQX{dEuzp ziuU73IF8e%{r?<}!gD8n4_|4>pgM3o4*8P|C$h$4+RtRTvu`{K2c8%|?DRDmw7N{d ziJ!@VA2R_WYbN2{i^=f*)Fc$nJu!zk z@k}!4^o{tJw{zzh`S?pCQ26-7C1OZ@GObr0f%)oWa50~ZR}LhDo8M#=BU+5Hk}+ z76GxH7#Efd{jSc$b-~HdLvt1$4oHU1_Onpr6cGQ3x<1M9cl9hB?3E0kPtL+1&t!P| zeHMxg17bw6Xhbrc4x5dKh9$$noZ0wDk_)jtbPkTRr#u9oIXG=_ zGR#b!gChHYSX128kJin6GzaVZB*Q?1xp>Da8M=;~iy{|+cvS4vo!VK+TpVOd?XF=i zj_H~V$6L-rk(ofuDyDQwhBdS2{mWUZ)~C-uI}b&k0&%T)zZI>`**_A$YE%217>R8) zX@8bQqR3hx_LbVT6i$AK#L+*cu%r8YocLV|%f`(|k;6cIEM|O?!noS`nEzf1wom6{ z=^H6@G>k%#(Lf9>o_t1Yb|yt(!(%DzDvQFW52Q5y6@?JQg{MsBJv1ER@0vmv~%NAcX^wR4HeI_+ebRQVPKr<1ueJ zeXd3V<}RiE9+ZG0gMt`iT)dEu*NOzpS|Ek6qY0RvM!(mTfFhrQIAlzcOQ9|>5o4rM z$jnN_ISEqm-j|3XyMkC{43DDYV3dU8=1HN{GYLIsOCeI0gd*31cxJSpDy22flF&Lr z3fNYPrW2%)E|H?hyddTowSuM4YJ>D&zSb*W+8&K$6nPlLMdP{AQfN0N8Py(AxU?b} zD@M}!Ihu?jD}&f+T+F1P+f#-~&a?(=pbV!w(tc;jP~>P3UyYK%QfT%3(X5|~@6 zF#11Q^EE()BGZGIaI|Skg28)L*zRKzJbb3Y_ivLRw{r@Lybt2WamVu{cr8uA>?cXE zwmb!=KTLv=w^LALfe>4c-5P2ASd&!zb|VRT3`xby*ODN~I~7Gv2=V8bae=-!B^Ae? zO@jC}sc3g92~Jj}qR0>-Mjam>PJ;OlQgI(ruG#lgTw0d|2JO>OQjB`XsznI}Pq4VftNTF5&< z=#m6$E@t9aLs~cZc_vmG(0S9yLXqV{ZUP$VCPDF_EIikW_GeTUrfMgF+2kw~IWOcd z;IqH9hHzdM7W_(t`{h|U`bQ$&kFro?z>wpB6`vBJ@KY9szfXkQtrudOH;G_mu@FT* z40#YZ^C{)r`7gvyj}qb1+=Y1fULxo&ScoD!hFl3WzL^MFwF~jswM004ZXrfpPK4i2 z=>Jo$jN|Wxc;rkX#CFQYxhE5$vVS%j97}}fZrLa@XUMt0$vhFl60`s1=~eDcgmb0Y zDDr5?%fN3{iL}0JHm<8kg!uQ_$Y_1!ik6E|WYv(nff<`A!^UwDT5d=LU*AP|d_8T? ztVJktY{>6Gt^7pzxONe4%}WHUnngHbSt5j=UW6j!h8z%7Elh-CKNexv1&Q#j{bJmg znh1TZ7o*6(Ax{L~B_~2&*ka61r1hC&7h{jOMEJ6JF^X&)a!D{?ULu6nEyg#q5@GSx z#h5XjvT|N8Mvk;Wa^NUf-U?KDYGjF*Njbs zmial@XLKUiSLUF|+aYfS$Bv-wyqkmffYyfol7sVI65*BZ68uA1Jmj|EQu{<0&X!=; z!Ib9{v;@lsB*MD+OHkzWkpF^5dnLmA;w9*7Nm)MomSCfKB8n_MfMN5HaOr< z0yG?2io5?yfL}M4qT@HpL;ScDMJ^EeI7o}7L1g!3c;rn2tQfisN4`vey?)D3WCoG5 zgYJ(K;7{7Je>sZojS1kki~gPRgvjf`k=GI+=Mnw=r39$_k3Nsqy}sBX7e&?(xj*Q5 zA_3Zu$i>}963G9|#R2sR;2)QZB8Q0lAndW9zIRJ57S<-fuDV?8Sd##kujZo2C?bal zHMb{#p5}6tmnJ~JZp-oG<^&jRw;V-&5qU<~xIO_EOk0k=YZG9TVmTgLl>mIzaunG{ zhARqx!+*jaR-vn4SaRmmBO@Qr*D^TPtkw1kN?g_NM+6r7WJOQ5L3VhEJ z;Ag`M6d6q9Sm6N&I$teUqKRDs*qg1y)IoIK99E*pXCe;^-TEZJ+?gw}v}Xb+Q&wWj z9tp5)%}Ny6P2_6f$u0>{b#f*4>P+8veUBI!(a6UW z&*NdfQ9g>SD00Uz?m;|cjLOH;cj94bL_V6{iib5)`u~(8MSdBcyc`eP%kr_y1&IjfZEmR^!I% zczBb#8sAmK!>6^YQDjq*%ZAw{@$l=^YP`NF9yA`VM)Tr$(EPC)MQ#=OZn$@KJhbVv z1~pd3gP!Xe^vsQi_MvM~WLl9Ehqo8TL#IV+u*ZUU=)7qS&Q6U7qXTPDx?1gg!}VoD5E!_Mm!i!UW++X;-O>mS`;~153sB^8kq?NM zOygm1?{(O+YdlmATZfX)@vt>y9g55@at5(nKOUB6ultvq+Ce8Cepk??Krr9V?BzDFmf1i=ao39Z&`@9F2q5VSs`kkje}x`LKOL7 z7GhdGWr?K}(tRZkLe>U_k85{rQy$@`{8xLYZENE@@-MGJQgZVx6u4`ETjzCg3UI?f}i&m6q$15$l>@X|WKydn@Kg!~#3J6-9;}Il`z6q0jqo zD@F&z!iEkdIMp{6W?Pq_$hRYp7~Mz3!mrR0bQnq77gK`0hQ-3NMI|V*@5nVqEyq|e zJy3#8wz2T^QVBj97z-6IN>JqDk&le(Ua>ILs1(aAV#&`b#g%5UaLl6=MP?p3%Q(Ap zEO;lC{>w>r(T|0O(oz(8dgL`@+m^8~zM&MGn#Y3KyHdRUCk7sBZ9|c@NA5G0ex(dO z`)#=7Qw+UNY{TexG4O2KHWWF07%*#7hAHP`;7*S+6#0GRS)=4Q<@Sv$!>)&8pu?Op{GpD43u$F2vi-=# z#$C0P@mEuZ%c^7Gw;T@eEZ9+aWT{Ucu+O}EBCzjo#LZ9@z^?NyGK*2h2*l%vQ5 zB&QowSH^&DR5=Fc#=x6nTN>UUtFRSa0(*nuL~kbHLRXBq=a?F#&C90Pq!EAT)k z%E7j;K#_S!&O46OjREWF760O;|RUvDRh{6+HganSx~uw*;&q6<>{c zUeOSa}v#`;51kgnQ|!RjbzvwAm*j7-XKz|7rIU~+sncCCtnk~_PxW_uL$Z`zF_Ka+AE z@b;!CaJHz$`9)E1*r^tq7es-_xLOq1nv?~BR?DMcTv{#e&xwMDwYBKEFbcw}Yw5a; z0?LcP*{Ud*a=#Y8Cr824ueG=^Aqr;d?Lm>rNtqJ3WnL7_mF&Smv!dWlz#ddjje^K| zdr;(cQtkv^4Wpme@4<;d^zZ-2(^`$?_Xem%yXp7U*LIr0p+}*vnyF2ebAKrfGFC}y5-a9k*p0oElljr&KAGy^-x8M7Z z7?!89DdbIbKNP#(qmYN~`kketc7|y5iE2L?sen{`NTIPB7!|C$X($2LX z62`3-!vIyrg}AiuhnRm>%gWaMuxkW* zl{Z_;k-cuM7*?sWJLKkC-OsJHlJR#r{`|OBj{Z@OHci%v;g~AlLpCff$A^e@;`U29 zN;B5UFF%&+{jg39<5U?SGVWV_-hy@VYDzg;ZdfOUUzKCh(RE_@r^*SD=rQHUs<2+x zd{K_QP1lRvkaBpruNT8cRhEcU=wFU1S?i^&q#Wg+t(P1I=oCY3je;j}9ML>gF? z6Cb*tCpd__fNJk+HqY zkaC)GFtH4a9#Wdd>+!2@7Q?nx7L6>ARPL?MW_c1?h7)m{#V<(rm%CXE_f~l|veT;! ze^1{mmTqNuzihMgaMahoWwRJ2t}<=pZ0jwJp-8Nf~lmZV|)FRql;k zt6hf2aa*K)jWTq~-6Hvw_5B~VMGQ+<**J3jO)07@-y-c^lp=b|7Rh;Bimy*^5yRP4 zevVwcS&I7Awu<%DQY5t8D#;g1mFd1!41-r0J96N-dM9$XO0~nKNE)_PLid$o=Jc&% z_`J&Dkw3STqQRD}a%W>HdYs;>c}giJKin#Y-K(q~neuxns<+%GJC>Cq+-IA-Sy+lu zaofajeU;}UIde<#V(2#c?z>WWOy4GZrj??2*)}oEUuFJ?%Y;%~IJNCR|HYIMrRZ99 zyM9ly6v_pXhXYHo(R;hJ>|cr}vD+oCq*T8*uw4u*SlL0cq;Dx^OxrHU(@U{?>2|S5 zQJyfji{S_>Ur3U>l_KZCb{Q38Si(DGdAM%ZVuu*Uuri3`oxd`NV|Pfqj-^P?-XU=w zrTAvZ4l(>;InvP0Om6wSFquGy3#=Hw1BY+_{@iHlV!7FFIU@pVgawE0dM zP_q;tJ$H)X7Ax;a)>xG4y1-63^R@(IKHn*?UzFgtDLch5jg^Tce)mgYAv-1IRtX$V z?3B;0mZ0aoonm;$%1x3#&y?U7>s@m2cnS7;?2q*8A zE zN?uj= zP=Yt9dnMDh1ob}MD|s!I4LxzM7!I`Zsbqjv3A(S@D?{p*Am`v-8CkOgpIzT8h7qj{ zE16(Xf*%_0ldsGUY`v7`jgkKUz6gGUHw`F8A9fGjA5-@wk2R-IZck%+sIB zmR1&)ejmFSE%)o=$BN;6b)S5Duo(Vt_KD$6D=$l?Y%fMahyC(3i_r)BW#al`lqByL z!=zTGmW*0itc>aXGVIr4d^LB!3|d@_nSbsV!>d;AmK6L@j3t-$OP^WA_~Ye%Nts@Z z)pZVN9a#)zb4lccVr&mQAc6l=UrfRQ@fe}!U3@_2Ddk#^J|N8p7US&f15&qNF)sdb zKq?j&!Ah#klqCfPT-Y7x(eS>#%G%SAatLMgssg;;d`298E5MplXXNl=<<>tqBZghCtU_t=LjfK) zKPy|lE5HiRvywlp0L3w9#c=JFXDGjqE5N1C&PtEb1(^HIS$R6F07(naiecU>^H4f{ zQh?n@&i?1O`aHh?z8}wu;o&P6QP!jtV2SfNNlGq2M%X!d8egFA^EolBd}Sw!Yh(ew z7=KRoh7`bK-Z{w+D8Ti<&xzsaD_>E5a4$gYm2=Y3sQ~X^os+}u3-CwX^I{nL%3zcV z%?nUJ=)BBnRDdlB=f$I50s0r87sKCIPNQU2DZs&5=jG`~W$yoeUM9TBhr^EZV%Yr3 za+FmM^D*Yhd5O4_57!zOZmWT2&dgui) zOn+rUO3?Ov99?oj_Dep7$OTDTmygybE@q-BLMK67QrT@y<9{K7R z`d6yO|Zfn0_9;!J*Rx6wz(uz z+Us_mE=ir%>MiJYNsO~VnVC|vQND6RF8${pVPhUHT)Qmw*5v8?aaqQ$Qg=fAEBgJhJSgW=iWlpC za7E7ll!v)VSESqAJlK_95#v@+7O1#S&4d4(EArE%JZ%5tiq!ow4{>GJqP9MqD z@&CFQuY~ecW%|xsxNW;G4>spw;hF2wWkW8SJ-RN&Iibu|`S?dJD%#xm&u91N!d%>p zxgo|!pHluZZ{2f|@%>GC zACrq+D{qSNUnnP5ehALRoC`PQu5T_XJi94=Ub_F9x5T(HlqD<2?Q_ww(=BP!HWxp1 zy(MKW^!4Q4664KK-mFxvujfDYmUOF?3)dyLWOkKY<@w(d`g7G;RzwC}I8l8g+ydzhJ<-qIY9Wm|?W$jAu z{y8{b@vh7)*6o|!l|#8X80&Udj2A?Cyb{(s2OZMy%CLkS4E^-3{M|JN`zG8K;|x(| zuh@3ZLFqqt|MM75?U;j_SMG}Oi73}s-a6)BQJs6@);>oW(f1^$RSpnvPmF6s*}wX| zSUpa`J$Y9<2W>{&6W8iFDEaoD7!Qf^fo00OY<$>!Pyc=@8&Rk3$-_t4m~#J~7)OaR zgr)2CY}i=emtp^ABgg%|EIpHrWs&#A_)C;CEENuB!*jrWaoL@%>q++|WvhBi=HD0N zHc=L_tXQ3m;QjaI)XHp(x^iDEe$B>~SNFwuPn1_I@$<9Mx%~tAd`>n-2RxAZGqSO{ z#{)4=6lEIA-SOE79PvQvjmgH4Zy$)y@N7Nr2V#6F$~~6h{j=eG>Vf=JoQ;C}4`gd@ zHh!-3P>f4O*~n6*cQ<ABtTtZuj7@(i#bbsmZFvnYpIN*m~Q{*PpwrFvZA zAIVQuv+*MTkr;Q2vYO@So4!b%@ks7G>x(a!J(7wK`{Hjt661AIp0l`J?Tfni9!bQ7 zz6h-NSkg}QMPbv&`aPk(Q0B9Y-Pcz=RgeGkSN_Vru=?b&7$1ysq2=&jeUbm;W4XMd zul^m`V|lWquX55Ji*dy$J6an4px&4lkEQK*ec@pFL_DVUMfbK(#CT+sFD+fi_QkAj zPb6(bUv&yRk%G_r;^NRJVjMHdpq7!PeU*RrL?-3;McAe%x<1wyxyPP}@y{ryT9zjE z#lnwIWL3Am*xKl+tdH)C%T7oA!mAe=5dlqfBghWZ4&wsz1|wyf3P?dM3{-`l6N3Gcmp! z>GVtT{z0tmS^YtVBR`?{>eUAb?BKqJlqG{u0Ipw z$x;5c+}_>?H|sx_>(U3W?4Qe}wS7=M__-K|jxxIC#BY6ISNvQKE!N|WdM>+v>Z4q< z=VJUi%JG(U-}XWJ*5|Tvavv0)elANU^iiM2b2086Wqr%H!~0;O^$VH!Ss%=Bf1&ks zAN&ycLX4M3dEkw}$pU;O7SZ4lB2 zhhDr8Pz`w zUH!TEr5F#;xs5L+wNf9PIr>t<-)G^}t(W5ZG7HB)yp*Pov!D!fsc<(72OM9??Q2=s z9r8+!T+G6@RP+ z5HRVr*#9pJEyC@Zs`n`MEd?4_>~O5xH5oQ2ULfWoALy z?9wSE3v2z}NQ0hPSk(QE+>gz|^t?A>JV##)dn3Of3q{l3$S}VwBrJI&iC$R<+Vn<@ z14$Y0QrSLBotJO)dtq64`QeTHX`O|Ct=`H6t1Ku7UNY)r;kS^t;#FPuoBUR)Rm{TR z(zp6|Y?)A2y!`$=6PW#0MnB9%+uz?x;_XaS+5T3HS4nyD^74Ep_B?zmyH93fd6joE z`*0>EHGe0@xunc_>9jo)(NXXI^VJ?(qt74kPJUjM3FXpD`LCJaym#WiC=+x4ekWDu zXX3NH@5H#8lwB`BPS1qXi+57+btWoXz88;inYhsAy}TKjsqVY?vTaDFIzQgaR|7JU zm-Ai{$}$l!ZjlQQt-QlCuRSomHRr)FZq`u9?rn29NebwAxQp`3hq9+e57ckg9g zXeO#P_#j^dWa5nd2Z4{io}dp>(Jd206F$hc4w>ju^g+ICn~7#4KS)H2Ox*hRgH&m( z=dt{Q?5LZG|84#tV{2q0{^SQSPAO&bONI9txK-h!$cqg8+2o@Pdz67MTt15NO)0lu zo?gvB-QFMNj|&;Pe)Ca^PGw;J*pFgdR0ZFElnZ+^;Ii_g%-WuTr#n7Mcgeuob05Wc zs+9jPT$Q2og#|zRH3MVnSkPrr26CHO@ant_;|SpF*%`2NvtZZh8K~-S!3tkz;6}Iw zjo(T=0xTMtp?|Mr!RA9U@MWF_4}Pl8?{C48r5VOGK#%+kv>9i?%UK!tIMssFdS~Fm zTnid6mih?zC@urDR#|XfWCjLqv|wCF272tWpmAoYvw%yyGEn1!1^?eu{LwB0d}2Z4 z(^9VildLl^sCor{Y?y)W4J&Y2?F?Nhe;K9WLG){%&fqHThbBp zQw17-mwFbs?(cN{K3)Z;{hp4!n=A0$l61`9SAoXur7i{r%}q!29?&_P4Rh=uc zZ(2IWbgf9^3sdg{XLd_RyPS%2i%!S0GTkmT9os*z$UXt-#tp%j-s#AhT#=Jq)8RR% zBHMRJM}>tIX*^@@*Xcc>zbgG?P0{JBE9@=z<%`)wNL zKh*s{OGD|KiZp&Q^-%E6%`{Z1SBXO}r{SP=CDuBZhB@sk(YVXhRY8Y?X>bjw#I?K9 z@G7DbBe$esYkVadubKKR*!S-=B<5G*{S|4j`J@tuEJ?%lVU=i{XX?D*)bGc!ydQE8aAu@ZxarlHraO58a>_j9xojVn#v89bh!hNU+vF||(` z%AQo>rQT`qd|!#iqo#fh-ib@Y`UaI*9+{@xg35f1G=z4jOygKn2M1qzreRl5We#yp z!^G&yeA7Nnzn@f@#=oYX4!&)wue(tH-5?E92I%9p(hxsFw^uitx;*&uLn@BUsLVmH zQZa2_Wj=YFiuh%fX}oRf`{3PcsW>Q=S#U8G-|VT(E2mNsd%QA@(@mWqJh?X&J8xHJ z{Pt9geO8%!HmU3FV`UoOn|edIZe=RgTUDXQ@>C3JRfS6zq{73o3XKa+-6H(m|9$gX9lIB%b+TZ>z9g3qpHw2#B6Enu;Q)s+|3?w{fPh z!t35R6jJp+FZt2Cz2TEwmBweMUKRd)u{Y+FRAsf(y%GCaRhAv;jd!D}(zx!_y+YsZ zy^;A{RsOK4H|qRcl@@DygTGd#@!+YSg}avZM$0W#>9C+T4(zMSuYTx_VJEB7IP%ot z!md+#_Q*QOfB7xcyrr)o5A zJ$1n_B(*n!LaXtIgxub}#Lc&8`@qc>NlS569A@2k$? z=_%le>NL(lb?(rzdkWs)ss5jjeokl#d@X9w_z2a@!}i`O7|^H&i(OJsuXPRnVV8p6 z9Ba_H3f0}ij?GeV4K+BVK?+88slko4Qed4_gT`a1ejnmPFLW=i!BH=J;r759-14ZG z{=H@m8pol{q#6vl+6$|{t-+D!d!gI>8r*cE7j7=ALE}GEPY``~_d*la;GiwN)WcbW ztJe2I#PJ$5ZbWqnvBQd97;w7=a~AhPjb}CZMi2Vv|h+BtjV{D zz3}SOnsn>d3zNR6N#kNvw-INC^ulk`YjT%gF9iKqldnB{;lPrbG@eHFA2F@HdK@>_ zlIT=IjYSFkK)wRSgjwNGiKrJrWpNtlfwRm_(GM2>GqVYnikBM#9 zCSzk>Ep}OzjL81A`04Uw93EPW#u=&3Ch~`5T$xgf*JmcH>$etbPD#eIg|%pWlInG0 z;^<^lT3?Hw4^75b+iP*|fMhf{R7)51la2d{m-3R)>RK&U%u?UvgIcsrNruzwS~MO? z^+PeYOEP@wSaNJwGS)Y>mx zFV$DYw&(Tn)t2->p^tC2WRHVMNZw~jU6L?*dTp)> zOTz0PYSZ{R)x*WzKI-XQRh!3MlaRHsHZR)i>)u(L#@(r|EgKdMdR^;Dl18-7T{tSWVA{W1}j_3E(AqeP6du0!MeROc6+uOyU7h~k)MEw0*9Y%~#gzXxA-l#-O-%^LhF{%zS;?qQwpRB`xl0=-l zRENH~iHN>ihsHmuo-(>6C!(!IT{?D8#N?WF*)BQ}Z>;LlxJlJz#wPxWIP6fDb-fZ1 z;9Zy1ofEMrxGs&iRDEZBVUvg<33YkDaU!l{)aBK>iHI$%OXDT=tg z1dJVDmusFT;NG;lG`>^yrt!z?30gcu zZB4-1vvnD(Y2q)xXAeD-v-1bzL@CoPe0h^=L6a0W0d%qj9LJqmAdLCSZVV zJ?@&AfDObn>modFoeHj~gcrOu(DCdK_4mfV5uqn3(Mw{)fvaU zRtf08rygUPCg8xadUUCu0Edh9Xnd~fmE+Tj3Ap^E9#6dOiJXYYS|Vu@XS`kn5H3Lf=oJh1AgrYF{a ztWV>lRi_@G`1eGnRRiwy>WP&t8}NH)J%5J=G`?E(?h!3}VnI*?)^DP(H>!bNKRprF zvjL6ER^5CYTcIbebqUofX0EVjz7NG)dStuHQ?6GJ@Eau2AsUE2W}i_K;y?%4>fytX-MPTRp%gwB=*3yjD`&As$Sm0hO~(6f&QO1r19~pmyqK+^}yS44H@O$ z10mBIvW7zsd^xuvjjLDPg`8yF1GQH+WS53L5Wij@x9ou#+Z)n&eAREraqr{N>`X(3 zzlcZL)rPG2FdjeLZ%E_#RRLE zw%HhuOdl(r{X1U2zimb123D6MV;9H6I?;-i=Eox?(~9e7#bain6^%DoeT%f87>~MN zSnc*Ksk;`E{M7(dO5#wn~$M!qYF$A?8${3ACWek-k*lM#=B>#b;f!|HA1?r!n8 zb~*o8}V-2cm!BBqVW`~|B=yF z@#>~-#21$OdK?>ZL6vyr12m#>7^@?a?_PArn3zUf`mj6JBs5~et?sy&(TK)xtR6`& zJ<}aYpEhF8qunuKcq6{u+Z`LnHKK7Jt80>R8+E(6jri>E?nqqJh;vtT$GATl(Rh*7 zN6B0By5sh?M*L=0cQiZLh+b2>qs!?=G|psoR&x00?&@}K#8yMQufY*Ke@acE5AT2}WZzmDvV=E05WgzkunZp?k1y6Y|3 zn8w4beoR((=&pR|#$42unCVX=!UsAO=z6Z>h$EhZ@b~DM-xu{rW>jS zHlgh}eO_b}8eg<}KN&q(ebK2+c(z|R%*buRlEQBIr(B=cr<-wu^6TE+@M=sGw&>Xn zO}}ZvU%PaJ->fDyo@w=ma(6&C4EePQlfAoP_CHN{&AA)aunCQWS{Fab>GJ zl~aqmB6DX`*30RN0f(D%N?KP;INOxQqpf~bejV2ps~$9E&4{kp{;DY_1nK@OHluND ztAmxJUArpBu^HdnseijoGY)Ch6>XfF(fGI3)5`LCdj4p}Th+TFDW(~-D|A&ydovn0 zx4K-J@FWgn3z~7?oj82^Ni&9Bjl+Ur&1k&c>U*X8@i^sCHsj*`aX2ui8C&d#!`TJR zXq?{agk_c0ad@^ykNbNZEVee|{l#&x+~17G_pRPo9-9>h+e^(DF*OdZcbakaggE#< zYewS&SGO!@4~auub!%4tG!97(toeCy95P#2(|E$wKg;B_IP`P3=Jtd*4EDFCXIvac zgj>@%#MM#DT0wF6Iz^x76Neeu*1YNxhdHIzG=6dQ*m7Ms2h){%K9O$FbP3(VE6fu0CA8zZ{Frhpm}&HWpjYT653Q zSZuqd+wF@r&Rove7K;g`*Sa~!{;1D$Y|a}q zbwA$CXdHStDl$lg|S%Gzd66`6N?o?oAYW) zES8OJPUA>dhcD;F#A4p;=6n+xi#fkEXR?1RX8hKi#-Fa9U)FYt#kkGQSzsHBk$anS zOY>L^KHi+ht*$O$4z!F#!L8=pUpW?8Pnxsc`z}a+*PO$RZcjV|!D zZoyF(yTG+w3mPZ8I)!x}?t-SiEjUu)VwRnCdv<|ETnidsyLyK?bY&OZ%xb{{OS|A~ zQ46;ExeN9WXhGw0S2r=YPV0h|<6E%dq%QbnS_|fk>4F(^ThMsk)nCkt1G-?~A1&CU zqziJ^wcz}mE=btcg2n-_j$`^Kc7eyK791bf1+6aY@x!~I_FX+rP#5DtW{FQ1-1^Xh zt6kJ1U)_clc3rTgfenp2UR}wY(YOod*xB%Woh}&bZo~G~x}cxG4UJb`eaig%Wemc* z+3@Yd7`Ud`u=A}LG|9H1an7rAnFmhC;PxOJHaHT4BO`6tYflW;O|+r$(W{r4|E^O% z{f{H zV(`~JeSBaHX1%asVQCD8S+t~a+^Ykc*V1DUV%3sul48)dWlLsujX~uOE%|*!jPXSC zWKaxt1+--Sjxksg(UNhldOqD-a-3a^aY=J?%NRuEwB(z{F|aFZNw2yws4}=EORB{f z-!vC|jK-EpEqV53H0FP+`*{?N;qzKD`c|}YQgg(mXmtFuCI31djRqTA^7i3qt?OIT zW>2*7Rt%w29Xc5?oN^@Ic*uR4Xp^j>fJ@t$55i+PJp)zMbxWUMt$$L?d)* zE5i))Wt`o_jVQdm*NS-; zqpN5D?Lti)TfldiU1cHAS~eY0X>XqcA_aHLH(`LUCzpcKAFBKA*K_bpI&h5NCd2 z6!uPRt>Z%!X3S{K1u0QT|FJbU$442@I4?v;;law*d=nCd)$3ccv0oHMY;R2uk0|3J zXPiS6EKj#)L7ONXz1*6kn?+&H-PZiRew6W*^RF6FX!o%-_g9F*?dolK?R6wpG-$(j zk0XuKoDJ_p!pE)+9j`>f0bH!P1t7{@#W@10s!Moe?FG2;SO;i8+yYyRQwi(;~6u-`h=h9BIU+U^?zh|UtFTDi zd(wup10u2HT^la+iZrfvu5^k-i+XLj!8Q`7nziN5=8>3c+m?qLMjD?x&(?}W#ZGN` zwNfNDgtXx)y;s1#MaLd<5b@Y0LV@Ba9cGP4-7% z( zeD`c(8G#;Uwya+{0`EVwWvzGNSUSp zIpMJOZAbgGaBK=~$0iBk=o8zHRb#_ZDXATwch>XBY{#qq;fOA5$0MHMxbsOnieosw z8rF`#w$=T9*^aZU!?AyIJN~ahILc$azX?N^f7;RYNf>U6 z9_LON#_w)Niz{Jhf3zKMp9#}EN%wyw3|ZIPaowIUynE1&KWz!a>{snLeq9*6E4F9Z zsxTa?)t(8g=t~%^=!}U6T)ybpgnhw3PVXmd;a=) z7%Fvd&u{vNVQxx$_A3m7S9W{$=o5y0CGF{%5{B$S?b#qc46jDC=hLV#OrFr5M-hg0 z)7x`Zr!cIW+n!V1!q9C|dzRaW;p*@08P_TdgV(mFLz6Jn+S;B~>xN<8zV^IQH4Gjn z+EYGs#`cTt`TdK|NWRsc10Qt8t;g-z{YGaDd8^O6*cmme*s?z1~jOef0dc+i{*}XG}j}$8yKcus&tSpthay%OyM3vhEDW zJ9a!S=h76?oedJ*z*uWajB<0XRirGcDgj*{c*>sn;h{*otj7rq#pyftyyF#$#Ao*W)hQH*-`lg) zHWabdI?%a!D0bHCzSaN+F` z%!}#3zL!JLIH3buo(aL^^bS0GI0RMlJ8)1frYID&$kUhxw8W&TZiC+j|0&l1YO|3M>RsQHrheglS9zHrvrPu2BxJs z(Bd)hA=iO_+yaWq9hi9uI5F6PmZyP`(GFaH2+9$2&^#Py^sNJ}2#omAftyzYw-!6F z^mpjrYdf&XVqo1m2X6fl$|rYV*-T*Ke*OJ7z@rno{aB#azYZ)`ytdqOV1t1`yC=H; z65Z~t1G960hm{>!BTX?0bsV{}C$P4OBa^!TE!sHpT_`Zh(UHIS0av{o8RY>)208L> z2ViNWBd4?mYQ{U#t0_?0+mR>h0td1k`FSU?M}DzA812{S^EU=#%w|Wf`zsh1_c*fG zufYg7=E!Hi1mnB&j-2*=FrHj@q|0>O??XrKnHY>EuN;{>Iv5ozI`QM@!APs+#5w(g z@sE`gy$XX-r==4QWCbJN-ii6Wf+6ls{Ln2Jjs2bYU1TuI!kp+D9E|O8PTb)WjONKs zOm_*!Cs|H>(k>V~3!ONjh5r6iC!NoN(SMi||Ev{^9b=ssSt(faQ74{#6NJ)PPAq>C z1peft>uN!0u-u6=E(am^FDI%38ml)tan0c%RNv{u=-ol+eaMMt7=-1gomjLc2yZSs z@%8UP=yF$&w>SuMo;k6}ydd0q@5IG3gV3p(GrhkF!k6`&xn*n+jx}>;x8Xr(ZR^Z) z1Ah;48o5+oH-*V2scxmHMb9fXRb4s_y%Ek znKRwpgRtW>XRfsmLfui$3~3dFUK5?UyKxYHn(oZ*b@V*uI`d?eAoch>$j0}->=nf=cNV#+aRK06wS#p57gnAUi2HW>?{R@}b=Sv71frjx z3&#u!#LCVttWXw+N3kv(nHvbVBp1F*)5kMiI3ytuD+*lrqDvs|^>^W?ode-G)P)cH z0#Wck7Z!U2V&T^=yw)KQmuI>#t92l3=DYArlR)i9T-dX2AZD&|;l8SYIK1A4;U5BY z+;`!|=K%;m;6m^F0T^-8g}+`4z}kOZbbTuTk8Zhe_OSpsJaJ*2eF5nER?mBD0OnM7 z=KD|gQdz%ox)222US#Q;~X7#Dzs5w2`C zA^=g{Tsd`60EYE))z=%K9CKHGnj3)2MXtP(767XOuI!NzfXLyl+|nfgpMU8}x6Zo1 z$*!E|7l5;~Tv^K_0JVO0<&X{m2w3jQ>#YJ%@|P=nHVMG@8(k@N0FGTy|yAJ%5b4$>Us zus_n8y79tVe~fG6#_*N?Sn24-7=#lCVjC13R9{$Li;>PFE{+Kk| zjmaVY_~U0cuIc2DW6Ryx#LXWs|8nDCJAYVja^p!Ge+2DxqfaA$^f~0lZ!P^X=Cm81 zRPx8d%Wmxc)(<=Gxbe3qez@_}jWzE0q3U}#=3VxKT~&8(IqiqYy6&_&?1#Lj?i{?! z4`bW7^QidY7e{wGulB=cFL!>q!Veb%-TCiAKfH}_XQv-SIm&~2mc-^ouoIqtmN)(^uEy3@% z?El1rzkcD1b3;A&Y@jc0|IdR#rM`IawFk%L_@eT69z2-pi~95Rc|CnK-}GQcj4vEk zd2nHfp2vC*-s$9vkZm4xck@N;eh+?T=c|A3@4*c=zR0@h!H-tHD7@*xFiT&2^2meZ zEBRvRYY*;y(+OiLdb0MDPMB27lkvAZVVadEr(f!X**2a$cB&KR*?H3HP$w*M^JLP_ zPFU{i$(frvsYlh5C;sk)zq{z;zjeae1WzU`=!A{wo;nY8!sa|r9-7t(+sbwS6FXtY zU{7`#)d{;sd2;;VPUw_nk zz3Yg-t9kL?rycP}Juf!8+Y!r~d9lltj#$*zizCl;#C#_&{&lz`W_x?_=B|#I7UV^1 zcEqGeFLqts5o5aRb}Kq!Xo?sAT-Xtx^!4J^xgAkh>_w{?9g#J_ixHDLB5Al62aWEi z>jqw2^m#{wO!nf5ejVX6%Zrr@I>O;6FM4Kngv~N9_DSl9dVhLxa$HAL+Tg_vVIA>e zn-_2Scf_szx?j(ZID5j2Ar2j}@1hq=TX)39n_isNq$5^5^5T{{9r5F9FW#-v5nosI zW~28$7*@-h!Owh9Y~{^@yFN&<@#fSkK8UpQ=Grqp@OJa&zlVL$#@Cxwcl)4rs5f2c zgV!pi_WWQ7k7r+IVULLdD;yf?Sa^}(VtZ{D2lgDIbRv(_XZ3>oQ7x6wYx zp5V=%pZg$onl}ga^MTj*-kg>1gXRmoxh}&86@T;Q*+d`Q{@a^xV|{RFlQ&z0`QV?O z-VF5j!Q4aM`g!_b)M;-H>)?aD%ijFHl@DU>==nDGfy+~Go~-SIdhfjXw6YKMKkENO ze@A@`x(#((=yP;D@`mn%x-aNHsr!Z=gL*9JF{#Ifo&)tT8F-2h{gM*X4Yu?+x@lqP|zq_l)}9LEl5_dkK9{sqZcH zJ*K|b(D$7B-a|hF>SqD{OsJm?^fRJ>och^A zuL0_{0KF!t*9P<&pa_^HCaKpZ z^ctmJtI%tfdhP1p1$Lxf%g}3@dTm3maq6`Wz2>RcKJ*@--V4xsf_iU2?-A;~0=;Lb z_YU+PqTWl;dy0B*LGLl@y#~GKsP`W99;Duj(0h`4Z$j@;ts6X{_bm0^h2F!|dl`C9 zQ}1o)Jx;yX_4DjRz4xJG0Cg;YjtSJU0Xjxd#|r3}K^;4wV+eIDfsQHEu|>xpecnV* z=$Jztd!SR1OI^QdDVbPS}9 zh0rmPIyOSbNa|P#9W$w8Cv*&@j-}8sl{&UU$5`rE3mtQ*V=r_JrjEtXF_}6xL&s?9 zSPdPssbe>E45yCe&@r7lwnN8w>R7LRt}k`$ht2`ixd1vRQ0E5d96_BcpmPRw?tsoA z)VTyYr%>k>=o~|xYoK!ub?$-ALDabjIww)*Cg>bRovZZwJHFJp3p$5U=Q8M=MxEQB za~yT9gU)%>xeq!AQs+YGoJgG;p>rg4u7u8+)VUKnhf?QK=$uNOTcL9-b*_cZxzxEA zItNqdV(6SqotvR^GvKMxfRT(3*i-J3wm)YApe+DX6stw8o&;8qk`9T6;ii5Na&~tx2f03A9F`)+*4N zg<88nYZz)R1FdPOwT+HPdOq*npfwM*_JP(w)LIBy6H#j;XpKazm7p~fwRVEmQ2Ko& zH)u^ot*xLn7PZ!b)?C!u3tEFwYcXg|My<`DH5#>6gVt=++6`L6QENG9O-HTmpfw(~ z)`Ql3)Y=bP15#^2XiZ414WTt6wN`}IjMUl@T0>H6NoY+;tu3K7Cbiat)|}MZ6Iz2( zYf)%TO07+yH7d1Mh1RUp+7(*EQfpagO-rq9p*1eG)>Ut{zK(;g&>EOp3qxySYHbXy zk*T#Zv}UH(&d?f~T1!J~YHDo_t+6$CaD~>~)Y=xKYoF9YpqsJ)HyYXYgg4z%Z? z_CC-ah}sK5dm?IY1nrTiy%Mx%qV`VE9*WvaL3=8#TV0?%7PZ&X?{@`KdoO4YM(xF* zJsGt()7KkF?bVkLNW3%zikd}1Gbw5|14g+Vhh zYBmPV$f#KvG&7@SXV46dnx$cV38>i`G-IP?ZOVlOHG6|*aMUagn#obKIh4%=HLHVW zcGT<+n&DBiJZPpz&Gw)fA2sXKZ&QJq{XsK8Y8Hs~hd|8+bzM!rDn8gjzb6iAb_mT7 zsaYa4Q>12#(2S9qH9|8-YW4`tAgNg-G?S!elhBNknpG;#GlZI5LNiQimI=)?so5qp z&3RBDzA%~Yw`Dl}uIX0198hfuRu z%^gChSu8Y@rDn6xjFy_!LNi-xb_>mLsaY;G)1_v+(2SRw^+GdWYW54wfT>w9G!v#~ z!_bUazn{GG{dH5+0aaznr%ZfZfe#I&Ah4EH#7sMX5r9GoSKb8GjeKH4$aJ|*}1;%P->PA z&D5#cIy7UaX6?|-U0;{IdXz({Sv)k8r)KlejGmg+Lo<77b`Q<)saZZW)7L)N9-8q} zvwmpiPtE?JYXH=>0O*iG^lGE&@~R~S_gE^L%&~b2VDc9 zu7yC?M5t>c|3}eThFL*yT@)1)u>*q;6>LC3L1Z5T2|)#EP=*pgru&98NOyNjw=`_h z7R12DR!m;I#N0~oNZe~~C&3NH+){#@in*->Hx_ei!3Te@ zxxEB87;}pWZZhUJ6WnObttPnHnA=To!(o?IEx75J+fH!fF}I%J=3{O@aIg28TTpNl zGPfaiw)dJ_QE)Rdx1->OWNt~pP08Grf*X^$H3c^(b9)MIQ05jD+@#EHD!5UZTUBtg zGPkSXhGlM9aHRK{+g5PnGPkba=4EbQ!41sZ!h)Naxs3%kGIJ{nZf53o7TnOxEiJgI zncG@$V>7q5;O1s-Z@~@D+~R_poVm^M=kik zxBK9RZ*KX)P2b%1gB!oO^#?b9bNde%0K)C!y*Jsf?*Q^M!~QO0kdG(g@9o&EJMIF7`7o`91QCaFb{@(2p9;% zLeLX!WY~y+kua=8z)To+B48*COA#;?hOGz~3&UCj%!Oeu0tUmd7y*-E*o=VDFsw$v zY#4SUU^ooRfxoqp``&j|z<3zeBVaxZ`w=i8h6M?j5W|K9jEG@H0%pXpBLPEVSdxG# zF>Fb|m>AY1U``Bs5-=#-)v5$cieXa%M#Zoy0kdM*m4IO}EK9(&7`7!~Tny_HFfWFE z2^bi|!mu}LY}lB9kuj`Hz|0tSCSYg`OA|0PhOG%08^hWJ%#C4h0tUyhI02Jm*qngT zF|1C&>=d5MV3rKK6fjJNWeS)k!!`wslZ(1n z4wxsyJ_QVvVW9#h%0J&;X)RsnNm*sFlSGAvfW zWEnOqV6+UY6);=o?0rO?puYdtFELgyV@$ZpJ0V8Huv49yf z>{!5%8I~+y$_!f;FlL4|qrcwNux9~-W>~ae|SU?dGI88DNEoeUUC!%_xJrC}=r#?r8s0dr~C%YeZ& zEM~xD8a6XvG!3g6Fq?+m3>Z$sat2JNVLJoH)3BZa^J&=6fB`iuXuyOTHZ)*F4J#Tj zqwLZ6`7e1~=kfC2KVaC>fH5_!X~3Ks_B3En4T~BusfJAr7*)fn2F$8qR|AICu&e>o zYS`9*aW$-Kz`PpvHDF*33k#pn%&@TmBWqaMfSEPyEWbZAGc0Yu)Ec%nU~CO*8!)$q zy$u*#!{P=^u3>WnM%S>q0kdn^-GJdWEN{T{8n!oJd=2XxFu#WV4H#g<0tZa6VS@uk z*s#I@Gi=!5fFU+4aljNCwm4vn4Qm`Q$A&!)7-YjD2TZbIli7baH>`5NEE{$?V3-Zd z95Bs>Z4MY`!#W4dvtgeD2HLRD0TXT5=zx(ntaQLk8+JNis0~XUFx7^w4j600S_jOv zVXp%Q+pyRHlWo}SfYCOrcED^Kb~|9W4a*%c-G=QB7;nRR2h6u&zXJx`u;2j`ZrE@< zQOyl29x&sE9S<0C!;%L~xnau##@w*x0dsEHbNubi4T~Ny>4r@Y72sRXEOA%}; z%(f!fSeUIvu(>eXi(rFcwiv-C!)!BxjfUB31e*=B-3T@uX3G(5I?T2s*m#(&N3i)Y z+mB!aVzwZ`Cd6z*f{lpTiUgYxvmFUGBxXy(-z#{%6PE-V6SFmm)SidT_9WP#c+1C^ z1e+AIO$jzCW~&lxR?K!K*sz!_OR#A%+m>MCVzw^9=EZDZ@PUe z2{t`u+Y@Yj%+`ml+QVl16KsIkJzgAag3LB3*a(@eP_P*?+o51XWVS@XrpRoIf{l^c z8U>ppvpotnNM?%^Y?912DcC5Ptx~XAGTWtK!(_Hh!KTSOr+HY(UinXOc?nKIj{U_*tM#B1g3XoLUIiO0v&9NFS!SCRY_!Z) zE7)wA?N%fjw=i3-VAEx`UBSl7Y`ucbm)U*=8!)p43pQcg~VrDBAY{txXEZC5l zEm^QBGuyIYV`jEy!RE|t&w>q_*`fuTG_y?$Hfm<87Hrncc8$M>w=i3_VAE!{ZNbLP zY~6y*o7uhv8#uFt3pR0P8y9Tk%vLVg%$e<6u%RH5kB|ZECPl zHCxqSvud`h!G_grS%Xb0-yc0c*tnXlYp{7W+t*+NYqqe#Cf00YgN>}&%F@l_@w7NU z*wC6SZLp~|+uC4bYqqw*=GJU)gAK0P;s%>sv&{`Qx@M~zYtHQU}` z;|uqCUawX|NGCTj5|cY_`L}hS+S0gH5s776%(+vo#Jj$7XvR zY>=HUJ}=lLn{9G5&S+(}%E4yYY?p%#v)M8Sn`X0Zjyb7TX6qbmp3U|-*g%^tbg+pw z+i3WcR%R<5Y^Ke2I@nN~Ep@P|Hrwi8V{Nw9!RFd*uY(P?*G<$+v(9Dr*vf3ZgUz?ueg_+Hvjq<};bt2iY{bo0oUfnO{JZ$vU_%by zb#AaJH{0@HV{W$Q!RFj-&w~xR*`f!VbavI}@_qZ(W~&}-*3EW3*sz-|d$4IY+xB4N zZno~h=G|=HgAKgd!UvmpvyBfn@@6X^Z05~&KG@KkEq$=5H{1GPV{f+h!RFpDgtMPaaRNm3*)i~oEFAy!5*!xaa{z?3*){B92mxh5jZi78zXRJ7*|H% z%rNeZz@cGW8i7;8xHSUDhH-5K&JE+<2pk;7#Su6;jGH5HbQo7h;OsE&j=ClaKso_OyG<$?wG(KV_Y(U zQ^vSu0>_MT%>>RFZ+#tRmREpV(E*IM9QGwwBhzwc;VY=M)_xY+_nn{l-T z&Nkz23mk67X`z~#NMd4V&}xbp&so^j~~PCfSDW!b@ZGOoSAxo6yafrHPu z_yQ-Naq|U^KI7^OoPEaK7dZTk%P(;H8Mj~H_%p7*!1?C}vrdW2Cv`F|z`zM;+<<{2 z(6|BvXP|Kh1`a{v5)7Pz#w{2)290Zwo>C{{9*ix|cQP)*z)5J_gn^^bxC#Sjp>Y=m z4nyNI44j6>Z5TKXjq5OQ9vb&y;6OAkMDEFt8aHC#NHng*z?o>=iGf4WxD*4YqH!y- z%X-wf76a#^aWCRsf7G}b11F<#GX{=E<7y0?jmF&=I2?`3F>pE>w`1UVG_J?M`Doma zfdkUGAOk0)aYF`@298YQ$_$*D#+?~B zG>uC$aB3R2X5iQ~uFb%?Y22HEgVVS;11G0(a|Vu1QJ18h2>m5H&8*z$wb#qs!n)d(5~-1Lvr5 zj|L7><01{5q{dAeI7*GHG;o$0cWK}-H7?V@X=>c2f#cM;P6Owuai0bbRO3PooT$c) z8aPsoD>ZPY8h2{oP&F>qz^Uq|emo%@tKRbd3E^Dz&j(Hj2di&hdqOx_{lttD!qIA6 zt-{&rcd}0ihpTb93a6_Z-FHGbUj5X~Cxr9W>n}Ya9I(a(E1a-=KK~PrSmTNn&RFA) z6%JYBk`+!_u`&&ROH06%JbCq7_bBBuyF|sr?7Dg3&*f=4GZV6aSsazv2hU#C$Vu8>;1nw8&|P#78`f5 zZaX8xxQzAKIT^-ntYH^r_@j&d*80mc@Ob{E_p4+W7qZG$&oFLe-E?z?aV4wuZ5iBY z|5B=6hH)utL1g%;)L+7}Y+TFwzFCHGFYAIwGK`B^IGK%`S)Dp(_`~vlsc(-A<8Idc zCo_!8S^IJ`jN4gX6lb{7rayJsQyIqntm=a@j0;+ghi4c!w4NB7VO-G~Iyu9*qqTTu zhH*)2-~0^Yme$A5WEj`9{#}(}+|#;jV}@~2tIoCz2-5JJJEu7WHU9F+7WEhvV z=Dwccotb}V%R3pyb*;lkGmQIMIIxWiTPJ;+VcgiN@MDH?W$TvTGmJZ14gbwBE^Xn| zHg0X<*fy?h;oLUvZQ_%^O@;r#Z? zAOEJS8g(%)aNz_uZgAlUH?DBu3^(p@;Se`2ap4pl9Zd~ZXiSA2V|0*2m#+5Fd z>BgNd9O}lUE}ZJdtu7qv#&Cq<9PIr0@QZM=8#lXfv>R8uaJCzFyKuN0m%DJf z8@Ib~yc^fMaK0P&yKul87rb!78#lag#2Z(Z*2!f|h0_riH^-1owPZ(R7oiErHa z!jW%W`NEkG5C4-o_3dh0`ogJi-1@??Z(RGrxo_P2!ohD`{KCm^-2B4PZ(RMt*>Bwa z!r^aR{=(^R-2TGxZ(RSv`R{K!{-|jOx|$Y%XablvfM^7mR)A;*n0A0@2$+_DXbPCN zfM^Vu)_`aZnD&5Z5SSK$XcCwHW`t=+h=zn| zNr@Um6w^WxO%&5c5sehnN)gQz(@qf$71L4?O%>Bt5sekoS`p0^ z(_Rq`7Sm!8O%~H;5senpY7xyA({2$B7t?YPO&8O45seqqdJ)YR(|!>R7}J6gO&IP_ z$3!CrPt-Bdj4|yP(U37M8PSw6Z5h#+F|8TVoH6Yg(V#Ic8quUNZ5q+2fwMR!nl+|f zBN{fQWh0t4rfnk{H>PzXnm49>BN{lSg(I3cri~*SIi{5(nmMMOBN{rUr6Za;rmZ6y zJEpZGnmeYwBN{xW#RJUB>uuxbhxIV69?|SE?H%X$^_ykZBKz29aqIi6)V0 z6NyHVX%&fPk!cr+hLLF*iKdZh8;Qmdcc#xp^T_|b{JCf#nHG|0BAGUlXe60dl4vHG zc9Li)nU<1hDw(#DXe{Af|6DYeOnXT*m`saFG?`4BNi>>Ft4TDQOuI=moJ`9}G@VS_ zNi?2J>q#`9O#4YRpiB!&G@(ozN;INOD@rt@Ogl<6q)banG^I>iN;IZSYf3byOnXW+ zs7#AWG^tFRN;IlWt4cJhOuI@ntoW|_r=n?P+E$`*Wm;FFd1cyHqJd>vSfYt#+E}8I zWm;LHnPu8pqM>D4TB50iN8%IF*fOmx(cCiaEz#gIEiTdI@{5;!A{t$$)g_u;rrjkP zUZ&+GnqH>uB^qC*^(C5Let5#i8g_0^(*hGsFw+JTjWE*+6U{Kw4igPAcf9Ij(G)Xn zG0_-v^`%`uPu@FUS6^H0xxB${MyxAr5^DD(E|ABkp}D-ZfeG|W6O^CQtT^A~MC z5{)xAj*mq1%(Tx$1I@J1L=%nYY$H`96(%{SA26Ad`if>VS2 zyua}uibkAi#i`Pvo~9iq8giy3Cz^7mEhidtrZp#;bEZ8f8g!;bCz^DoO{a>#_B5?J z(X2D=I?=E*Ej!V)Gi^K3xHGLg(Y!P5JJG;1Ej-c0Gi^N4$TO`x(aiI|f4namdZwi( zntGwE0A%&$RkPv(Jy+_r7TOnUOXxf0H5olV0q8Vt~fubR3T7se}Xxf6JF=$$YqB&^VgQ7ub zT7;rWXxfCLQD|C)qFHF#g`#0-T85%&XxfINacEkHqIqcAhoXUKT8N^FXxfOPk!V_p zqM2ygiK3xsT8g5nXxfURv1nS0qPb|=i=x43T8yH}XxfaT(P&zYqSo1(#KTAZTEY1*8k(P>(p zqSRHL`_Rn zG(}BYR5V8U{r^qT95wAx(I7P~Qqd$eZBo%FHLX(7EH&*?(J(bFQ_(avZBx-WHLX+8 zJT>i8(LgmVRMA8=ZB)@nHLX<9Of~IP(NN{I@`h-tnzpKFteV!UXs(*}s%Ws97OQBo zI{n$}qS0zvt)kg#+O4ADYFe&3zin^Rb`_0R(|Q%nSJQqK4Or8H)wU;ln>MUy#F|#D zXvUg$tZ2xZmaIDV<8i)rSTtrmZR=stoHgxP(V+E?k%vW-*0gCwqt>))MYERQpAU8oZ{(E1JBf%_|zcrqwH&y{6qO8os9GE1JHh?JF9;ru8eDzkVroNY9-4 zq-g<*Ca`G(i$<_%1&d~|X$OmjuxSa4rm$%Xi^i~N4U6WmX%CAAv1t*DCb4M~i$*c~ zn1iBOY}&=5VQgB)qG@c}#-ed-TF0V!Y}&`7foxjHqKRzU$fA*KTFIiB%>UP~iiR>B zgjYpV*|e2KW7)KpMRVD-mqmlww3tPc*|eEOquI2YMYGwon?=Lfw4C+CtS3#|Su~za z>sd6PP5W6ipiK)}G@(r!S~Q|fD_S(8O*>jNq)kg&G^I^jS~R9jYg#m?O?z52s9oum zmqnA>w5dg-+O(=gv)Z()MZ?;(tTpjF9(VhfMdRAEu0`|Ow68@2+qAGn6Wg@0MI+m^ zvPCo7w6jG++qASrQ`>jWdr365O>0{;w|!pzOQOMTTHK<^ZQ9(T(QR7YqSm zz3N5L^fqm8(fBs4Z_)gAtF15U>}GvT3tT52?qk~Eq7iOd;i4IC+To%hZd&4^DQ?>0 zqA_k-M>>w3}ADXttYnyJ)zZmb+-Wo3^`Xyqng$Xug~FyJ*0h7QE_x-^aA!MI+v{;zcvw zwBtoX-n8UJQ{J@YMPuG4ZhcNP=S_QFH0Vu>UNq@Vn_e{PO{-os>rJ~}H0({wUNr5! zbKC*ZxHqkP(Y*Jg-45uQ+j+aq4(OjdGyT_X2lPf{`h_bGXnDg-PdW8~`ZvvV_aFAF z?L(Qa`SyO@*ecWic)!ZD=jE2}*PD-KdgA!~dZufpJ16%m*)!AEb>FY%eKP%1v;C@+ zo9P|3_v?6JriWByyf-rjwmYRt=Y|K|Jj*P=`}tg}xCmSy^kO8Yc+bte9red@3w z(_@bBRn;w-Zu!n$eX}Fe7wp-q^?Ne?=CZv?K9}jq6ZYz!mowcawO6OV#^dO*SFgUA z>9?Bi)r5C5J*m!KwLO~YR+aYZ^3O7T{^@&l^s7uCJibTszRUEeclN0JkC|?=XOFJ= zEz_qi-=i=7%Jl9Dd$i<4rqiiC>RC3+cl6k!YtPK`kInb!^YU3t?x1kKL-*AdAPlTR+{CsuYk8wAtI}?DZItEwa4$xOK2~mfOE$4epTT za(k?LowN9T*!sR(mUAXp^Pk}DrK~oYS$?g%bw*y6L0Gk|D9bhLSeeNze_YY3*e}at zPqSVfl;sA;cj>8NS^oBI((j|QJZ<+by+1z7_b=O}5mR{o<9F$fnOUBb+@;UwX1Qti zT^heA%fB|;r3TBgJh%2P9b1*<2P*E;#PwPJ`BZ*>bCzfSuv1@c=i`5Sr^fBh@(?Im(m@o zeOk6Bcio{k&&u}g5A0CEx!HdE)*ZUwqHLEi)?8a58*lgyJybEvDP>NPUkm9}ryA7itDhj_aH|%~&UWTwTUBF0w*R|-tF|x6 z_PATNs_}|!Uv=qLy}pLmJF!KNZOrz4$F}IJE!lqKwJplqneA>{x9G1u+5U0<77ctZ z+x$cFApH+^=KZoW3h z2WM~6((7~FYUn0ib4w2Qn@yT?YmOgnw@DT5$nnRqNfYYlxchaRbk^ND{_?y{8q_ey zz5aYwe>KVRH=jJKya#jew?3<5Epzgl2!fAQN!{gKFVw~sceci$WzeSV|f9hl=z zYd5Ot(>XpeZKJk~%<&@wHmcgV9KYIoqb5ztapOle>g4G;-gDlEy?lCziiOD~Tfe^{p$<#Ijd$U3b)H`o8}TBmXs<+{%^>-0p0T)#7Ro%UUs z>-$UBsq$61Uf*S%lGo~s*uk0oq222vwyBFjd(Sez4j^{Je=#5 z(^l#HBe_0(z$&$VkH^(}l_np}^^TUS^!BH@zWB~ny7a4D=Tu##_TT3E`LkAO>hWAx z`FW*|{G993_gCtoKXQF&-%365Pp+%4T&b~T^8D1Km3pOYp5IKb)EQ^y`G&_=s$uy& z_j_=q`kl|u*IB8p7w2(DUa6liw2`iC5^&8}j_p zGb>cCMxL)6w?g;amgnr!6)L_X&+f89E9>X^yrwJkapbvctrfbcVV>7rwnB}Y=Lu9YqFJookGI@&tV-)~#4b35d@{=(&o$MQUUC-`FEKHCiCd{EYs?~dH(9vW&D4e=USVV zsqE8vPR&`STSn%2|IlS>H#X1ZbC#+9#5}iYw@gc?@_MmMug%Q!7uA>P_qln#>AYpC zv?$N{e=JqQrFq`^@ly3(ndkprSgJ8=^XMWi)%uM*&gn~aWJ{h84p^!`cjWnkCztAq zJ$Y{X$Wk>pkmu=lE>*^hdH6h+s^6=5u3T=Z<{svG`S}_7tvoM${}~;9H_xB%dq)3! znCEL(KBLP&&2!I5&*+XX^SmVej9Pz_=P!Faqud|(^#`BPsGsuOqs}v0@*A&T@fq#; zE6<;t`i$QDkGKEB68&;=z8^iZL}#C#@9Ddi=$dl*{5^Mx?m9Q$7mQt^M=s3wLnTYp z`_g<5&sd_qSLAzt<0YC{Io~I0EYZ@d^IfmP678s-?}9Q*bm+!>uROL`pVr9t7q2bW zFSq5p($>W~wQj!K&R?uc?#lO=;fq!M?tCA}TdX@8=KG%xi`A$}zHhsCv069Jckde( zt9y%l&%I!=a$D#7&A%4usrLCk^Rq=7{%F4S@*?hI`Oe?4Nb`E+d&$g2TG1=t?+#j| zXEXDCcIG1O%FTDQUZm#>^PP9sA{{Et_rhxy>FqRc@9af7+CQJ2#zK8QIN!H_xKQ5= z%g2+mP{&8*d&;VX`ehuCZ}LL@F)81_Jhf2&Ow0GxJs0Z4tbDh8XrWG;pYMLRFVrcE z^S!FlLX};X@Apnys8d(v`?TW=bm}@jp0^jM?6djq>;*byYraQ3vp^^9%=fcn7wE+9 ze1BZBK>zH|_gP&Q=+77OUAxHw{rU$;6X3SIL ziwb=Dpn0lWp}^PonWyWnEPzj%rwUaHoK=6GPQRwWW3Ha3->MgQb-8)^{Kf(w{CTbp z*C_B0@6Xk)+X{Tn{<&IyM}co%IaibG7r6PPx#}MUcwy(N&wT|R)?=<(H!kqv=5wWH z1>RSCuBts;;E%4Ht8-cv_@AN2{3@9WK0jOXJUI$ISd7kE+jZ2dK@z}wo+*4wiR zd`PpkabAHxt2SF>7Zv!Ab7t$wr3F6w_gT7sWr3@FG)tA&^7fyfr9U6Yht{CCV!*_R8vrt&Pkd$7PheU?_g&igw) zQv;9iyu3YAZQtYh^-NuNw7~y9GgE(mQs8pqX6ltM3Vd1VOwIYaz}36VRQC4;d|l0y zek|}kHD{{)uLXXv!c2YeM}a$(nW^Rf6!`IDGgMlp(7CV8(EVi#o!T-(7o1V(q4Q?w z!*YclH*AKMom=P`xieI7VWAhbpP>eq7JAj)Gj#eDh2C`C482yV(7Vo?p=nhM{oEhZ z)umdY4}Lsd)o&>DTQ5x4_cs^%gSFGOp;nJmEI)(na|8%Kdp?~N#T_-mv^e-)@ z>%iTG{vSLpMW zP18A@3Vp%&X?nGDp)X2I)5vaxzNG6kHSJmGOPfy9X-^iqLak}qmsRM?E}N!)dHnaJ zX}YtB|9(AHzn1df!&9{;&C6|_s^0y1z4=pBb#S3C9zIp?JzeMv^QLOT$U>jrVXB&r zE%Z6}OjVhQg)VpfRBf74=rhirsy;IcUG~o@sxqh0Wj>jrx8@i6pBJWR*y2L`7E@Gz zS)qTLHbp0eg*Q-oXHy8TlGp6YL zeTCllzsX2)3cdZE$;x`E&>MD7*5wBay?p6pJ%6~+^T$nA!CQr%S~^*k-YxX#E|c}* z2ZbKggrEPo(21IpRq^veXIGf4=e{a*w=$EJ^KGHq9h;;}j~BYxYm>C=r$TGXBt8CH zp=-^Xq;h{1`kG;rwDw<~kK9RWb5fDdY(GhVl`Zn$F-fz}DDrpJC+VKEi~Qlall0lS zMLziZL=CyH$o^=es$W{w|7ZE`M;ma(foRofg9j}~zMZUlMc>Oo9$T$8vPNRnw`MeLu>B z*>NhnyvYCicC1FND)Qks#_FPVMRfDVYSzXgPgppX@23>GVB}bSUnz2{g0Z^AMez7z zwPA0O&%bZ1>ORNo-!N7?UM%vV3&tv5E%K_r#%S+rMIQO-7&Uye$h}?~qXTdAajYMs zM(^{y&lscUju!d90sQ#WBER38U;m=Wn_BYnU-N$J@%rBtIqRx1ivRI>J9CV7{LJh9 zI9hdoFY-U{jMj#~ihN}EXx;K3Uk6J^YuQP~9yV^Ys-9ZxuBD?j>x^R8>oQswon7qn zn~c_|bBq0TjnOK5VX=2#I$Fs~iaqtjDE)X@v9rD!rJfaw-SE&TxUgbhzIl{dTvP1h zb4F=j^uWqrwDL+ctcNKf* zuOoFdiaqYbk$UjHVs}3OoMQhvVuY#|6w_53p<%_v9^Y|ZxMic*6*7?qAFuc!aJPT=rGC z>zcX6zO3$W4O&p_&nges$BT=-^7P@-vSJq=AEp^Ai+$JI!}R-_Vwd$WJ+h(LuPhk` zuTt!ZV}|MUZN=_bJWO487W=Bs!?bO8vA?>1m@eF3>{T}pQ=jLHoqzE#?R}}(b^m=@ zmmMtjzn?!1Csgb`uRN{&Z}NCH^7HQ$yXmZ_mHmFP%MX59dyW?SwLVYl;!k-$t)A8s zUlhA-{in6{Sg|Wy{j|z`SM2xBdRm>17kk!EL$&g!Vn6oYQ2qUDu`BN#st5io_D9Qx zYWhFLo;QA|zC2OvE{UP4eM*TdcO9z!r4;-tZH!xA4!4OW>ZB_7*-ukp9=T#Ledq(v6Ro_~hY()Uy|_mpe%F`jj}U{UE)U zUE->D57LGCC4Rg5AT=v0@u+hLX;5j2@BV$Dwxvq^%h7@Qv2Tf&J~vR+2bQ?g>VbN6 zNQuvxGEn1(m3a4419f0zi3=Vds6WS)@b8I%x@iJ$ul7K7o?L>5exSxpD{;ND1GQ&n ziNE=FfPR`&;u&uYP}Kz`eqj3mwOm}{zZMKo|D`-1BL-;oiV}CoAD|Cbm-vj119ay4 z5^uU^fa*M3;>WKapsrg=eBt>6Gal=%5I{Z;#g z5*JSGuSZ`lag~1kHRxc8U+LLjD-M^q5)!2Vaob&TjT2-dhJN7=Mmrg15nG>GUSErS77kCPe zqSOm&KBda#Oa1+cwC+5w)O8P~)#k!d51f-$&LyROIV-JUmzDaW25HT|veb{Boz~XM zrC#)YN{6eK`rG9x9lN&FwUR0QcU`GVnx=HoO}xJfDP3Qq)F&NFs==+LzJGI4E$fte z*wCaNuglwQlT=ClQkTCrsSzsm!@ndn^PW}YrEZj6stY>uxEqwJ(qpCGb#|$4=u+xG-!D;} z?xntMMG0YpQfDPg)UIYQFVNV< zrJkQC(5R)QKG>u{!&a2~uS*Lwcr|bLt9eP^Y6>To{;@0`f-p0#c zov$Z$miqUf^3-K_DZd}(@%Q&qHy)p-ho38Tc9%Te|6-{p)yPx*S4zF@zg*Qi#PjfK zuByFW>aw$Qb@^MRzAiIY=e$$uX7zJ*()+yLS-JZ8Lq0$6=ID!$OTB(+j*fg*>NiSq z^!%56+>LUy`D?yTF3Hi7?|8ny$kycJrG8{%wg&xF>fAxu%KMe)>yd1A{-e|@uFBQ} zf0z3C|7Gd+|4RLtvvk!-37;5~rL)T>e0k?A{dQUcZ(Wu?Iy2#i{>jt}XD9r`%b8kx zZo>U$WNO+42~X{vseTtHyryoZ9Z3oe zPWXz3ee^-K1mD-~BVV8Jy`Mg*`8Or-&OE6>HF*2|pHz=q6HYw*q#D*qctoWqbxqxb zXMW#Xr_@h)#g5+kv_Zn#M)ub3yAyt~V{gsAFX4Bt@2zB`gunQsm)bT>_~++)>DK0a zJX3n9{KE;C>)A_RwM^g#=%qca6Rujemu9p}_@+0WP(jCpZ(s0)nmv|qyrt*+`;ZzH96rSv%9NwTEc@eyX(H03HPtxUFGK_ zoIb0&-kz6m>AT%DZ(+iPOS`Gpl7w?gx~b-}gnKvY20xZ?_lvt}=jwzX{k*FNt>by$ z&{a)0Cj8*Qt}4Gd;rm;5)$3amzN<=CP2Q34ZO6N)y%WBER~KErH{nX7yXb@c319eV z7tMY?;WKXRqRuZR{Lh~ms`P5Y$6v_MhldjWbZUlXy`J!!Ju}qtt%RSelc5UlB)qw7 zhTeKF;iYeM*7y$-p0=Q~9{iY(FR!!C_>AZ8?#|l#MZ%At+ga&j3AZ}>m~Q_z;k#Eo zrXRjf_~!IuTJk@>KASzJ&Oax7>gA8=;@|i>JNBqv{)4Z(&5vrp-@Lz}kMeb$@Y*(y z>YFl2Prv3-%{e9M0Y7)rBc~<(CSI=(9x@tzI#ar zji{D%)uIl%{raR&Y1l!Z+?e#|7j)3bTaw=YNqg0mnT|1?f^xxassp>sRzdgL2p1&{Y4ei@0vr*DxtGCm6P5C%}YpadT zl5TjQt=c`5bfrmc^=FHu|LE3MGg~EnxK>-;)i&v6W!mb)_I&(@+UTiHNw=TVMpt%D zx<*zTZSRuwX?L|zhwe##a8?`r{&>>s-fgW(y^xtZ? zPrA6ZPA*9L&CgnCR#DPR*0)lf(xgiVw9>(3(oI{mQqQN7zPxfP{nwA@@%u+Kd0^7p zc08gRha~yF>?7LqG>@a>BWgP$>1x+MqHjhe{mbty)pu;td!B2l3nnBzW^zj{n#B9> z(NcFz<>hW`sTZav{o_e3)nQiBJ6>y{ujlYM=eAH{e$o$Tx6m1jlD@1#3r$^;^e5$7 z=-Op`{O>)i^(&IjTlTPGHJ|U&hxPK>q)#+@SZy~XeciEReg!)q2q&E z`byGIT>qeMK9uxze>B&+!$}`|uDNQzne@`h&9(Umzuu#{?tJ(EKc42=@jkDAQgbyp zn)HI#nrY|9NoUM$rUsuSePuR3{vzpj?rNsHjwL;*Tr+L^hL7{T2Xx2xNuRas0c||a z*Hy^_s`XRSeH%TXRlo4@UHpKq`#tIZeb!V9{^a9d-&9xrlXTYsO*Q4eq${*&s&h_C z`B0^%8hT2~L%wgK|4vQ0{*ERpIwR#DM>Ns5XQjNPLlbo^pK{0Rn&`;6DWCIuV>P=V z<-G?QYu8077foucTQ5z)4K&uG%Tj)?R%2ayWy&MVG}f?6Dc^Odk^baJ{r&7l>V0*} zvojm%-D^{Ruzn*oxh~~@&TOPjH>AAco%?mo%_(+@qNpDc>>k9{tlb#lL&+(W5<5?pOC7ZSR@l z`w{o(^4=-$f9r0Q_DQ+tqPuk@E9El^?$)ijDKER{ZjH_7?VfkHz9~%ko1>xoOHv-b zDl{*V^7ZM^U#XOze<0MVFRy=DXl4JD%N~=;4oZ3cCaKd9j{ZZW^-uGBx022nk#ccW zsq?6mFZi*6HjGJml^f{v@hN)m4b*93%AY>kK&vOGoW8MvPMVhT#edzURx?sw{lZ;Z zG%MvsQ}5ERb5cI~_+7exK5wt~U7Ea*=lhhq^!Z|*kHhtK>(Z3#&8x5e%lW#=uCG^D z@;o=Fuglk@{AaoP>bWlE(eK@IAf@pvz~Q}66Z zIrFo6s^XOYTUSrL_M|+ve?6_)mvWVd>*==xDX*zmy4<13AEbO| zjXU(#(UcGTd%G_BB;^*b+^$xi@%fu^yT*ON*HQ1=b?~c{kKb{-%6*e^>1nsC@pmbo z^i~}W{DIHU!aCadzm(6a-Nqfhowbk$BwD11%Hf=1M_Wq5x>Fd+dZZhaLRXQ{6ms{SZmgUlZ zu*z*3Tt4kXKisO#=ce6q=dC(+e%f!0yj7Q9ly>Wmx9WjQ(th*0Ta~Q9kAJVF<(Kp0 z1GV(-m1(z{R7V zT2trVl=j|wHC6AHv>TjJQ{8H&z4b^9jl4DO+KX#wL+!Lz7u3-Ex2JvGy)|@ly|fpc zS3}p;Py33GZqY*x(%heKQ9-0#K7EU(-jnu_2X4{!`_lfW!Yw*_f7%6K-K>+Er2Wma zH|y#L((XF=W;JY{_K`*EQ`<-EY*W?rFbL>qaekoR6o> zjq(#b{)0E@o!-2i**ECNK538cbA!&vPW#__H>h%M+I`NrLAU3p{oax5)x40;%i`ejS?jMPF6dsl(Im`)qYxG&1dDgR1N5(R^MXsjgaM)81C4x->rRs>iFT*~GL* z?5w7ClhgibWHoi0ns$ed)s!_o?cLW^Q|ZjKtNnhh2Fy--)PZX?VlFQ?@mfuspLV-$ z*J|cMzRqf1s|AbGu5#iUEqf;I!LMGUHOtceYUVZCxFYRlPhO*~tI}Ro_Zsb7llFP1 zU!y(i($0VDYVF^^*V)3W_1v>**U7(HFKkYG^4(YK#jR=ocFxs$X?xmjKdh>kcJjQe zsHzv8_QlDndSOr6g-xpJxqW=yT~by152Ri5i>tKz`7}GStF-gQw7(s2mA1Uh^V;Gn zZG1KD#g(qo>O*Ot^nDdAJ)HKV+pB2)8)i>QkKY3*pf0%Y^d}U>R#Pgm}SzSL#`=(netIcP8-ThNZO}|L{!b zzD|4O6P0w;w`qS`r;;xCKJB_?E9sQuJigZ}>gWHZ{rS9#`t+x?>*Z9`;a~Xq1{K*) z@$%&=YSkZnJ-&D4|B?45@KF?BzjycaB$@092@pbnVNuy3Yyz1Y1B4*Rny?8G2qchT zfRF?T%gi7kpvsyoiI-*J4NN^maxW0pKKHNjbU1MTdd;2fd3zjtltrC^tguU*@DJk%xczYy=-8SavAz8de` z6zP&73*w!NqFwUdf$`1>F)sO3gLvnF>Mr@~kF}ibYr152S<6|gmP;;wsFw43yi1-P zUd#D;f=jk&TFWWxqMXV&=SI6r?%f;boZY}BqgTc`M>TTE`^LmM@46lK662h88oT7R zziK+KH*raEq^9$eW-hsKT}|gJEnM=$@im<#tx&&CHJy2hE;%Nsrn5&|mwfJc4QKuK zF8R~u8qVt-T+&fc!+ESD+M8U%`CMn0JQz{KInROeKCkW^?sUna&sKLPCcET@>D8S< zU0w3)9@U+vySZeO8r7XIc6Z5%U&lJ<_i)MW+hd*g_C)(;$2yzeobp_*^T(W1|Xy=h!mt3GnJ6GNBlJ9;HTr%!V zgwyJA$+YJpobSzc$p>ddIOoqnId?}mQ|7tw9>)l$vA`wUe-n;*u}e;PDctE^?2?Z^ z5bjKR&?Qgz3wKs7b;+2z;kdrLWUueToD-M1vQ&U2+M{2#V3=em_H zS^u^$=fFo@a`3fKXV@B)w>#ANZkY@3qYQPEF z{{OnoS@DKTW_}*zT(#4M_fZEqyS(j^JEsRZE2K+a=n>>xvD+nU)Ch8lcU-dT*MZJ& z-i04+4|Fcw>yl-&1D$R6yX1R)1D&58aLFGN0-c_NE?K)Gz}e_9&YRZ*oCl7$O67EC10*IoKrq`$y0j`XUrEaX<2DFUpx!H9%DHBo^#>;nBlzml}k?f%i>({jZ3aQ zY;o5A&LwxPwK#X4cgb&ZEzZFg;cp!+&L1k^FM$^4qD%0HW4hD+gG)}`q&r{x5%tU0 zo&Bz&{Z8Ha%{7<&B20JA{26|DN^?g2isSIK=6t*o?V6@JJO1vHT5StCR9N6xLXdB>`%a8sk_5`}+hk1XB z{x-La2>w%?33khS9{)q!AL^D1yZj-34RgzPKEE#JM!4mT>DNVMlv{SHab2v5cFV%; zzl%mOZuwl_-^KH>Zu!l{-$aKRZdqsHZ{qEmD5v3XBDI!VJ}4{2;dr;)GrUryC%EOW zzy2ydt>c!>SNtkQ)N{+s*1w9c>~6X8&@W}T=A z?QS_z{46FncH{onPvUA5x7;=5CsEMMEq{!L+}they>LxTZt0eNdtDPhv~tT?-(D3H z65aCYIakHSHg0*M?o~0aom*Poydu78@0KlxToEJgbjy3M{U|=|=$3OI`B9{IcFX6R z{U{D6x#h`yKZsP}mVb@;LA>pB%f{LdqC>J<_FH#ZJm1AFr*^z78g_Hb^~WxWH7V$) z{7WJ-)h*A5T@rJ9xMld$--}=GcFV->-;4Wux#gfQE5w<5+_KnJA^P`m%d%P(Vs~G+ z-1*8y(Wbv!o*8gaY#xAqzH~uUOGkT_To7{xx~22>3*yH?Zh7CH^J2shv}?q9ad0T| z|NfomILwXzqx_xNG91Ub&37W|KJ>?tZ^g_JZW(s}x8j?TZh1%0x1w*RTXx<2jd*pm zTV~w#jj(5-{-?eci?ZGFk!fFxAI7@nlQCb5K{;+Iw|*tw%te3Q^OdN7zgu4V?wpvP z=a$C2bK>Fzx2$D9C;Ci6|Ly!zY|D4cZbQEm)e78l$WLcQQK4IoUv^d;FLFy)^RuG; zR2;AUUx<~{+;UUa7viU4w|q(aLZr`d%XinE5iia}y*r)}5iYm<`q<~9WgKjx-@u%XhhtTi%Cp0S_cFPBLe99*Yji1dlUTnn~%h!o52S@ z66dynbv_a;o&aC}P)vOidV@X`yPk5(y;qJ3+cW5&hmMN=&*Hpka#TF}9FEI-ABZ#0 zyXBjiABaX)@| zi<#0bhh8`!UfboCedZq!KktSg)juE--*L+hZ|xTo-gV2S_wE-@y@&Ju=Y8Ul5dt&?tZu!Kq zcg4n|7zgs-6~{ir`55-D2>#eDCqMO$a2&(=pYo2Fblfd_pWP!ioxnIWYmYc~(k*X` z+am%#MY%8U7VSTC%Rl<<7TKrV^4p4CV&!R!Zwq&ccRqLH|E}y3SI@ZR7AZx&vu^ni zUSZVxOSJpfw?*+eoL{AHi!EQdW%pKZix0lW_;m0s@!L0US#8`~qTzRLS!sDo^gfUC zbi+u&j36{DSaAd8D!A1yK_1k)Pi7g4kTmBVXA4ym&drBj?`tym&7b`oBFVj#u}{W-Ff) zU)S)+8?B!c*J^s?hlidOdM%IKlJl&HjQ7Z?)@MaRZPaJuGoo>VN7iyYBihyR$crbR z7I)S4$Ttd~7Cq~Esxx{($-)rj~sMpli1MOBkSdC66+H^^1QK0tZUXz#&&ppBxWgGYW4u~96&6XiWqE*5q4;Q8ZnF{cyy z{oDpItFuRb=h`5qBzfd>wKj-}4v)-#WxW_HJhJ_O_2NFKNB;KxIx+ArkKDOvo#>V9 zk)B5DL~<98?7C~MXx|mbJ7cYA(hcqZwM^7W@yJD`Wg@D(NA_w}CX7@M-mkVs`~)5x zyGDH5!y_NGtPv;f_Q-oStQLEFBE9o!v7?tqzJL5t@%TN+KlxEn+S?<0gg+`~_ksPV zSBVLI(H|+R#ISxS|LjW9y}w5~W~~&715m%3D@E-zk9_5&6(S(rBPaJ;AufZ>D@w)5 zfoR`?QXvO<F5i!Oi$9H{5d=J(;vsApF<&npxFBMN_qn*{4in(Laju#&kBgc8< zkG&rhopa!q=a-1sT=?(2CE_v|VqYTmjYt2#xmawx-y+}yEAmPgij-~sUoxI5tivDt-wdu_Iu;6{HBoGtG3pq^iN zgf`nFPuB2=17NehZc*}pN4n>`#JzKHe(szl>dp1Y20zUd--1QWW{PL$dE|SeXNdgy z9$CF?x@fn+BeOm%7M0*jwqo(-LexKbns6`j$bQqNisZ!}x$cE2LSN#M7rrSHd%*T} zio~1;F`f)86kV3WA0I3b+C#AS&Sdd6IO6wwG3#LuzQ5*+PLJSt?c6fZ7= z-<_Nw@=82%Z^Q&~`*M#AOU)B!!2z!O#hOx&T=nvJk+#AkPgUfKkd-*z4RghAaP+Vo zQM}3{A1@gvT0RPY+&@-)4K~rniZ!dzZ+B*kK5IPknTc6KFT=R=_!#jr*!1(!V%%B} z{{P=-5x34GpS&kiybpdeXOx(+9{uyiNYQkIM~=KQLVO0UZ9GCOE=RwPyieS@(Icxp znjyXhdmkAtN*?pb1p&i_bCXBzatsp}z~2h*6)QG-Wa6_!#a&xa&bcAt0{B?1A!7OC z9{EZC!6NAikBnF}NPGq2KM#o|PkQ9^U(!Y5Qy6bsq>Gc_xvVtddK$-l-2hSl8JzbY z_ZNG?St0$!_-ElyUHXae=RESu;=W=lSZ!M$G2nTeXW#V}SHZ%%y+!E@@W(;-h_+kd z&r5rWk3jw1o?`MgjGx!<7LhN)AKTn5o(CVy?IC(?hd*vi72kqipX@H?yyTHlk=;d| zmvKI&rifR;ajtG+z$-XEU+yX{f^SxI5p#E-{~B}=wO>WMh9!&b;GHFRiJq^aANM=O z7vRFbgqZR=+SfsdkT*Q?_ymX80RFKhNwj$r{eHT$cn|Cm(^(AJ3IFcZNn8L+9_T1$ zyoGV-wL3-V+qf?M&_S#P|G2$_Xe!|kBif7C!7eM?i5|OfeK^!s90TVYZAIp8k9?wY z8*v%jJ2_EI-vd8+ssUTZu=&+iSKGwcho}?tNQ|O<>mi7NY5U9yw=cbFm#P zzt&82-s_QXHEkw#gP&zK6+QNO_H^DM?mYlIQ*IZh zLHBdFi4pI6DL_(mf0AkLEk4aGU|>qQO3=tH=U$@=0;u==ldG3qd`$1UyR z449H#Ph=dy^<`aM@hMpFaUC(}1B`Pab;O6@`Ys8g_fed$#kIv=aR1hLk^G@Ye*SGO z@j7^=PA$>qBaHWh;>6Qn+|rt&{>K={->D%U1@HR3x`;T2^DVKum;-4I14OIOaa>=qiq+trY|k50JZ7=0G=pHqK0_JVKpyzXf7C9aRJ{^ocP{Oq<$$0hJW=`W7H=P>`!e|BsI z1M{yrBELfY&s=d#1ns?lbQ}hozj4{o>}!l;jW0PCf!$VBIKBba|7VWZ!3}SJ;)uL}>uvLsjx6wrvg3}|z^84;9HAFI^4X~$IYxlbe|^;PBDgi} z1Bayo^O#+S9qGiDha6jo>)v<#L<~9L==MGIiuXB|gU^5ap5rX|?7(*&EiS?Co;{8k z;1jKPJNAN`H%Ldd%Qzpx-gevvuAQ;d@g%tF{2PudV9DUu9i4x`yz1Ro9dp11ZFV@` z2R$2Kc0~V(c~rzpj-lY>SuZ*^fVmg9I=%ukhrZxwd(=BM{P$CHa3=fE1(7dmSG>XFvD^Bujxt3S?l z%m%+0F~{)|c<9h<$G2d?6t^R;67#eHGabFaMlFgRGr>P>QykBMAAddBaSD89*F;C? zZ@8|myWi0X99*2^7zZ{RnC(~r{?%%kG5=t##U@QLq+J8J!o>&QDp9VuY%@KFmuchS1QI10Jr4iwdN5Gk#Lmbb7-D(6m z_JSc-4aZsV!^4{6cd&K(^`w{^7?(qSPHG1B+;cgp8+d&B`J`dssKj$g`C!HQQ%MWJ zDI1R`tp)!Y@z;JJgVI{!@R=`%Z5f}ckA?0g;k>R^q|e}bPy9_aKJ zcq+1ICrz6z|FUYDMWfBC7a$OJ!O*ncx{A5!!(z3zLbOE>jE0)=Jca9Yg^ESDT_M2| zFb$G%kfNFmr%y{zKNz!E1ImzY?4qbHMf7P68U`B{TY!@?+JfppvRVUjCl*nfAp4o9 zml1a-w2c8IH|kHpb`)%#OEzrQ{gl}nR6>$&TSP_KtS5i~y*1*jg?bn?0vF>$3v$4o zC&+_OcaVgRE2s{_vx0^qab{31!ZS2meabddKL*$~Bb#-F-UQ)bYaE1N>n4OlVy*pc z+aZQhoHflxk(P#9s6k@7?NKFKLR-M1bs&pIXnRT>WNQRi8d^htfR=Tzt*H`ip}DA# zbqJdZ3q41vLs^UnrB+z)wNZJNhEbaB7|FwIt${F#42iQIwRK0≷A~AK9MgD)l5g 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%0DObM1Eg-nDkv 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

-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%0AdcSR>vOn&-C*%%37-<^5W$eLlrMvdh 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 8); - pbuf[2] = (uint8_t)(linecoding.bitrate >> 16); - pbuf[3] = (uint8_t)(linecoding.bitrate >> 24); - pbuf[4] = linecoding.format; - pbuf[5] = linecoding.paritytype; - pbuf[6] = linecoding.datatype; - - /* Add your code here */ - break; - - case CDC_SET_CONTROL_LINE_STATE: - /* Add your code here */ - break; - - case CDC_SEND_BREAK: - /* Add your code here */ - break; - - default: - break; - } - - return (0); -} - -/** - * @brief TEMPLATE_Receive - * Data received over USB OUT endpoint are sent over CDC interface - * through this function. - * - * @note - * This function will issue a NAK packet on any OUT packet received on - * USB endpoint until exiting this function. If you exit this function - * before transfer is complete on CDC interface (ie. using DMA controller) - * it will result in receiving more data while previous ones are still - * not sent. - * - * @param Buf: Buffer of data to be received - * @param Len: Number of data received (in bytes) - * @retval Result of the operation: USBD_OK if all operations are OK else USBD_FAIL - */ -static int8_t TEMPLATE_Receive(uint8_t *Buf, uint32_t *Len) -{ - UNUSED(Buf); - UNUSED(Len); - - return (0); -} - -/** - * @brief TEMPLATE_TransmitCplt - * Data transmitted callback - * - * @note - * This function is IN transfer complete callback used to inform user that - * the submitted Data is successfully sent over USB. - * - * @param Buf: Buffer of data to be received - * @param Len: Number of data received (in bytes) - * @retval Result of the operation: USBD_OK if all operations are OK else USBD_FAIL - */ -static int8_t TEMPLATE_TransmitCplt(uint8_t *Buf, uint32_t *Len, uint8_t epnum) -{ - UNUSED(Buf); - UNUSED(Len); - UNUSED(epnum); - - return (0); -} - -/** - * @} - */ - -/** - * @} - */ - -/** - * @} - */ - diff --git a/HAL_N_Middlewares/Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_conf_template.h b/HAL_N_Middlewares/Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_conf_template.h deleted file mode 100644 index fe5d6be..0000000 --- a/HAL_N_Middlewares/Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_conf_template.h +++ /dev/null @@ -1,222 +0,0 @@ -/** - ****************************************************************************** - * @file usbd_conf_template.h - * @author MCD Application Team - * @brief Header file for the usbd_conf_template.c file - ****************************************************************************** - * @attention - * - * Copyright (c) 2015 STMicroelectronics. - * All rights reserved. - * - * This software is licensed under terms that can be found in the LICENSE file - * in the root directory of this software component. - * If no LICENSE file comes with this software, it is provided AS-IS. - * - ****************************************************************************** - */ - -/* Define to prevent recursive inclusion -------------------------------------*/ -#ifndef __USBD_CONF_TEMPLATE_H -#define __USBD_CONF_TEMPLATE_H - -#ifdef __cplusplus -extern "C" { -#endif - -/* Includes ------------------------------------------------------------------*/ -#include "stm32fxxx.h" /* replace 'stm32xxx' with your HAL driver header filename, ex: stm32f4xx.h */ -#include -#include -#include - -/** @addtogroup STM32_USB_DEVICE_LIBRARY - * @{ - */ - -/** @defgroup USBD_CONF - * @brief USB device low level driver configuration file - * @{ - */ - -/** @defgroup USBD_CONF_Exported_Defines - * @{ - */ - -#define USBD_MAX_NUM_INTERFACES 1U -#define USBD_MAX_NUM_CONFIGURATION 1U -#define USBD_MAX_STR_DESC_SIZ 0x100U -#define USBD_SELF_POWERED 1U -#define USBD_DEBUG_LEVEL 2U - -/* ECM, RNDIS, DFU Class Config */ -#define USBD_SUPPORT_USER_STRING_DESC 1U - -/* BillBoard Class Config */ -#define USBD_CLASS_USER_STRING_DESC 1U -#define USBD_CLASS_BOS_ENABLED 1U -#define USB_BB_MAX_NUM_ALT_MODE 0x2U - -/* MSC Class Config */ -#define MSC_MEDIA_PACKET 8192U - -/* CDC Class Config */ -#define USBD_CDC_INTERVAL 2000U - -/* DFU Class Config */ -#define USBD_DFU_MAX_ITF_NUM 1U -#define USBD_DFU_XFERS_IZE 1024U - -/* AUDIO Class Config */ -#define USBD_AUDIO_FREQ 22100U - -/* CustomHID Class Config */ -#define CUSTOM_HID_HS_BINTERVAL 0x05U -#define CUSTOM_HID_FS_BINTERVAL 0x05U -#define USBD_CUSTOMHID_OUTREPORT_BUF_SIZE 0x02U -#define USBD_CUSTOM_HID_REPORT_DESC_SIZE 163U - -/* VIDEO Class Config */ -#define UVC_1_1 /* #define UVC_1_0 */ - -/* To be used only with YUY2 and NV12 Video format, shouldn't be defined for MJPEG format */ -#define USBD_UVC_FORMAT_UNCOMPRESSED - -#ifdef USBD_UVC_FORMAT_UNCOMPRESSED -#define UVC_BITS_PER_PIXEL 12U -#define UVC_UNCOMPRESSED_GUID UVC_GUID_NV12 /* UVC_GUID_YUY2 */ - -/* refer to Table 3-18 Color Matching Descriptor video class v1.1 */ -#define UVC_COLOR_PRIMARIE 0x01U -#define UVC_TFR_CHARACTERISTICS 0x01U -#define UVC_MATRIX_COEFFICIENTS 0x04U -#endif /* USBD_UVC_FORMAT_UNCOMPRESSED */ - -/* Video Stream frame width and height */ -#define UVC_WIDTH 176U -#define UVC_HEIGHT 144U - -/* bEndpointAddress in Endpoint Descriptor */ -#define UVC_IN_EP 0x81U - -#define UVC_CAM_FPS_FS 10U -#define UVC_CAM_FPS_HS 5U - -#define UVC_ISO_FS_MPS 512U -#define UVC_ISO_HS_MPS 512U - -#define UVC_PACKET_SIZE UVC_ISO_FS_MPS -/* To be used with Device Only IP supporting double buffer mode */ -/* #define UVC_HEADER_PACKET_CNT 0x02U */ -/* #define UVC_PACKET_SIZE (UVC_ISO_FS_MPS * UVC_HEADER_PACKET_CNT) */ - -#define UVC_MAX_FRAME_SIZE (UVC_WIDTH * UVC_HEIGHT * 16U / 8U) - -/** @defgroup USBD_Exported_Macros - * @{ - */ - -/* Memory management macros make sure to use static memory allocation */ -/** Alias for memory allocation. */ -#define USBD_malloc (void *)USBD_static_malloc - -/** Alias for memory release. */ -#define USBD_free USBD_static_free - -/** Alias for memory set. */ -#define USBD_memset memset - -/** Alias for memory copy. */ -#define USBD_memcpy memcpy - -/** Alias for delay. */ -#define USBD_Delay HAL_Delay - -/* DEBUG macros */ -#if (USBD_DEBUG_LEVEL > 0U) -#define USBD_UsrLog(...) do { \ - printf(__VA_ARGS__); \ - printf("\n"); \ - } while (0) -#else -#define USBD_UsrLog(...) do {} while (0) -#endif /* (USBD_DEBUG_LEVEL > 0U) */ - -#if (USBD_DEBUG_LEVEL > 1U) - -#define USBD_ErrLog(...) do { \ - printf("ERROR: ") ; \ - printf(__VA_ARGS__); \ - printf("\n"); \ - } while (0) -#else -#define USBD_ErrLog(...) do {} while (0) -#endif /* (USBD_DEBUG_LEVEL > 1U) */ - -#if (USBD_DEBUG_LEVEL > 2U) -#define USBD_DbgLog(...) do { \ - printf("DEBUG : ") ; \ - printf(__VA_ARGS__); \ - printf("\n"); \ - } while (0) -#else -#define USBD_DbgLog(...) do {} while (0) -#endif /* (USBD_DEBUG_LEVEL > 2U) */ - -/** - * @} - */ - - - -/** - * @} - */ - - -/** @defgroup USBD_CONF_Exported_Types - * @{ - */ -/** - * @} - */ - - -/** @defgroup USBD_CONF_Exported_Macros - * @{ - */ -/** - * @} - */ - -/** @defgroup USBD_CONF_Exported_Variables - * @{ - */ -/** - * @} - */ - -/** @defgroup USBD_CONF_Exported_FunctionsPrototype - * @{ - */ -/* Exported functions -------------------------------------------------------*/ -void *USBD_static_malloc(uint32_t size); -void USBD_static_free(void *p); -/** - * @} - */ - -#ifdef __cplusplus -} -#endif - -#endif /* __USBD_CONF_TEMPLATE_H */ - - -/** - * @} - */ - -/** - * @} - */ diff --git a/HAL_N_Middlewares/Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_desc_template.h b/HAL_N_Middlewares/Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_desc_template.h deleted file mode 100644 index e392305..0000000 --- a/HAL_N_Middlewares/Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_desc_template.h +++ /dev/null @@ -1,61 +0,0 @@ -/** - ****************************************************************************** - * @file usbd_desc_template.h - * @author MCD Application Team - * @brief Header for usbd_desc_template.c module - ****************************************************************************** - * @attention - * - * Copyright (c) 2015 STMicroelectronics. - * All rights reserved. - * - * This software is licensed under terms that can be found in the LICENSE file - * in the root directory of this software component. - * If no LICENSE file comes with this software, it is provided AS-IS. - * - ****************************************************************************** - */ - -/* Define to prevent recursive inclusion -------------------------------------*/ -#ifndef __USBD_DESC_TEMPLATE_H -#define __USBD_DESC_TEMPLATE_H - -/* Includes ------------------------------------------------------------------*/ -#include "usbd_def.h" - -/* Exported types ------------------------------------------------------------*/ -/* Exported constants --------------------------------------------------------*/ -#define DEVICE_ID1 (UID_BASE) -#define DEVICE_ID2 (UID_BASE + 0x4U) -#define DEVICE_ID3 (UID_BASE + 0x8U) - -/* - * USB Billboard Class USER string desc Defines Template - * index should start form 0x10 to avoid using the reserved device string desc indexes - */ -#if (USBD_CLASS_USER_STRING_DESC == 1) -#define USBD_BB_IF_STRING_INDEX 0x10U -#define USBD_BB_URL_STRING_INDEX 0x11U -#define USBD_BB_ALTMODE0_STRING_INDEX 0x12U -#define USBD_BB_ALTMODE1_STRING_INDEX 0x13U -/* Add Specific USER string Desc */ -#define USBD_BB_IF_STR_DESC (uint8_t *)"STM32 BillBoard Interface" -#define USBD_BB_URL_STR_DESC (uint8_t *)"www.st.com" -#define USBD_BB_ALTMODE0_STR_DESC (uint8_t *)"STM32 Alternate0 Mode" -#define USBD_BB_ALTMODE1_STR_DESC (uint8_t *)"STM32 Alternate1 Mode" -#endif /* USBD_CLASS_USER_STRING_DESC */ - -#define USB_SIZ_STRING_SERIAL 0x1AU - -#if (USBD_LPM_ENABLED == 1) -#define USB_SIZ_BOS_DESC 0x0CU -#elif (USBD_CLASS_BOS_ENABLED == 1) -#define USB_SIZ_BOS_DESC 0x5DU -#endif /* USBD_LPM_ENABLED */ - -/* Exported macro ------------------------------------------------------------*/ -/* Exported functions ------------------------------------------------------- */ -extern USBD_DescriptorsTypeDef XXX_Desc; /* Replace 'XXX_Desc' with your active USB device class, ex: HID_Desc */ - -#endif /* __USBD_DESC_TEMPLATE_H*/ - diff --git a/HAL_N_Middlewares/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_conf_template.c b/HAL_N_Middlewares/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_conf_template.c deleted file mode 100644 index c99b528..0000000 --- a/HAL_N_Middlewares/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_conf_template.c +++ /dev/null @@ -1,282 +0,0 @@ -/** - ****************************************************************************** - * @file usbd_conf_template.c - * @author MCD Application Team - * @brief USB Device configuration and interface file - * This template should be copied to the user folder, - * renamed and customized following user needs. - ****************************************************************************** - * @attention - * - * Copyright (c) 2015 STMicroelectronics. - * All rights reserved. - * - * This software is licensed under terms that can be found in the LICENSE file - * in the root directory of this software component. - * If no LICENSE file comes with this software, it is provided AS-IS. - * - ****************************************************************************** - */ - -/* Includes ------------------------------------------------------------------*/ -#include "usbd_core.h" -#include "usbd_hid.h" /* Include class header file */ -/* Private typedef -----------------------------------------------------------*/ -/* Private define ------------------------------------------------------------*/ -/* Private macro -------------------------------------------------------------*/ -/* Private variables ---------------------------------------------------------*/ -/* Private function prototypes -----------------------------------------------*/ -/* Private functions ---------------------------------------------------------*/ -/** - * @brief Initializes the Low Level portion of the Device driver. - * @param pdev: Device handle - * @retval USBD Status - */ -USBD_StatusTypeDef USBD_LL_Init(USBD_HandleTypeDef *pdev) -{ - UNUSED(pdev); - - return USBD_OK; -} - -/** - * @brief De-Initializes the Low Level portion of the Device driver. - * @param pdev: Device handle - * @retval USBD Status - */ -USBD_StatusTypeDef USBD_LL_DeInit(USBD_HandleTypeDef *pdev) -{ - UNUSED(pdev); - - return USBD_OK; -} - -/** - * @brief Starts the Low Level portion of the Device driver. - * @param pdev: Device handle - * @retval USBD Status - */ -USBD_StatusTypeDef USBD_LL_Start(USBD_HandleTypeDef *pdev) -{ - UNUSED(pdev); - - return USBD_OK; -} - -/** - * @brief Stops the Low Level portion of the Device driver. - * @param pdev: Device handle - * @retval USBD Status - */ -USBD_StatusTypeDef USBD_LL_Stop(USBD_HandleTypeDef *pdev) -{ - UNUSED(pdev); - - return USBD_OK; -} - -/** - * @brief Opens an endpoint of the Low Level Driver. - * @param pdev: Device handle - * @param ep_addr: Endpoint Number - * @param ep_type: Endpoint Type - * @param ep_mps: Endpoint Max Packet Size - * @retval USBD Status - */ -USBD_StatusTypeDef USBD_LL_OpenEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr, - uint8_t ep_type, uint16_t ep_mps) -{ - UNUSED(pdev); - UNUSED(ep_addr); - UNUSED(ep_type); - UNUSED(ep_mps); - - return USBD_OK; -} - -/** - * @brief Closes an endpoint of the Low Level Driver. - * @param pdev: Device handle - * @param ep_addr: Endpoint Number - * @retval USBD Status - */ -USBD_StatusTypeDef USBD_LL_CloseEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr) -{ - UNUSED(pdev); - UNUSED(ep_addr); - - return USBD_OK; -} - -/** - * @brief Flushes an endpoint of the Low Level Driver. - * @param pdev: Device handle - * @param ep_addr: Endpoint Number - * @retval USBD Status - */ -USBD_StatusTypeDef USBD_LL_FlushEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr) -{ - UNUSED(pdev); - UNUSED(ep_addr); - - return USBD_OK; -} - -/** - * @brief Sets a Stall condition on an endpoint of the Low Level Driver. - * @param pdev: Device handle - * @param ep_addr: Endpoint Number - * @retval USBD Status - */ -USBD_StatusTypeDef USBD_LL_StallEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr) -{ - UNUSED(pdev); - UNUSED(ep_addr); - - return USBD_OK; -} - -/** - * @brief Clears a Stall condition on an endpoint of the Low Level Driver. - * @param pdev: Device handle - * @param ep_addr: Endpoint Number - * @retval USBD Status - */ -USBD_StatusTypeDef USBD_LL_ClearStallEP(USBD_HandleTypeDef *pdev, - uint8_t ep_addr) -{ - UNUSED(pdev); - UNUSED(ep_addr); - - return USBD_OK; -} - -/** - * @brief Returns Stall condition. - * @param pdev: Device handle - * @param ep_addr: Endpoint Number - * @retval Stall (1: Yes, 0: No) - */ -uint8_t USBD_LL_IsStallEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr) -{ - UNUSED(pdev); - UNUSED(ep_addr); - - return 0U; -} - -/** - * @brief Assigns a USB address to the device. - * @param pdev: Device handle - * @param dev_addr: Endpoint Number - * @retval USBD Status - */ -USBD_StatusTypeDef USBD_LL_SetUSBAddress(USBD_HandleTypeDef *pdev, - uint8_t dev_addr) -{ - UNUSED(pdev); - UNUSED(dev_addr); - - return USBD_OK; -} - -/** - * @brief Transmits data over an endpoint. - * @param pdev: Device handle - * @param ep_addr: Endpoint Number - * @param pbuf: Pointer to data to be sent - * @param size: Data size - * @retval USBD Status - */ -USBD_StatusTypeDef USBD_LL_Transmit(USBD_HandleTypeDef *pdev, uint8_t ep_addr, - uint8_t *pbuf, uint32_t size) -{ - UNUSED(pdev); - UNUSED(ep_addr); - UNUSED(pbuf); - UNUSED(size); - - return USBD_OK; -} - -/** - * @brief Prepares an endpoint for reception. - * @param pdev: Device handle - * @param ep_addr: Endpoint Number - * @param pbuf: Pointer to data to be received - * @param size: Data size - * @retval USBD Status - */ -USBD_StatusTypeDef USBD_LL_PrepareReceive(USBD_HandleTypeDef *pdev, - uint8_t ep_addr, uint8_t *pbuf, - uint32_t size) -{ - UNUSED(pdev); - UNUSED(ep_addr); - UNUSED(pbuf); - UNUSED(size); - - return USBD_OK; -} - -/** - * @brief Returns the last transferred packet size. - * @param pdev: Device handle - * @param ep_addr: Endpoint Number - * @retval Received Data Size - */ -uint32_t USBD_LL_GetRxDataSize(USBD_HandleTypeDef *pdev, uint8_t ep_addr) -{ - UNUSED(pdev); - UNUSED(ep_addr); - - return 0U; -} - -#ifdef USBD_HS_TESTMODE_ENABLE -/** - * @brief Set High speed Test mode. - * @param pdev: Device handle - * @param testmode: test mode - * @retval USBD Status - */ -USBD_StatusTypeDef USBD_LL_SetTestMode(USBD_HandleTypeDef *pdev, uint8_t testmode) -{ - UNUSED(pdev); - UNUSED(testmode); - - return USBD_OK; -} -#endif /* USBD_HS_TESTMODE_ENABLE */ - -/** - * @brief Static single allocation. - * @param size: Size of allocated memory - * @retval None - */ -void *USBD_static_malloc(uint32_t size) -{ - static uint32_t mem[(sizeof(USBD_HID_HandleTypeDef) / 4) + 1]; /* On 32-bit boundary */ - return mem; -} - -/** - * @brief Dummy memory free - * @param p: Pointer to allocated memory address - * @retval None - */ -void USBD_static_free(void *p) -{ - -} - -/** - * @brief Delays routine for the USB Device Library. - * @param Delay: Delay in ms - * @retval None - */ -void USBD_LL_Delay(uint32_t Delay) -{ - UNUSED(Delay); -} - diff --git a/HAL_N_Middlewares/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_desc_template.c b/HAL_N_Middlewares/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_desc_template.c deleted file mode 100644 index b80f511..0000000 --- a/HAL_N_Middlewares/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_desc_template.c +++ /dev/null @@ -1,452 +0,0 @@ -/** - ****************************************************************************** - * @file usbd_desc_template.c - * @author MCD Application Team - * @brief This file provides the USBD descriptors and string formatting method. - * This template should be copied to the user folder, - * renamed and customized following user needs. - ****************************************************************************** - * @attention - * - * Copyright (c) 2015 STMicroelectronics. - * All rights reserved. - * - * This software is licensed under terms that can be found in the LICENSE file - * in the root directory of this software component. - * If no LICENSE file comes with this software, it is provided AS-IS. - * - ****************************************************************************** - */ - -/* Includes ------------------------------------------------------------------*/ -#include "usbd_core.h" -#include "usbd_desc.h" -#include "usbd_conf.h" - -/* Private typedef -----------------------------------------------------------*/ -/* Private define ------------------------------------------------------------*/ -#define USBD_VID 0x0483 -#define USBD_PID 0xaaaa /* Replace '0xaaaa' with your device product ID */ -#define USBD_LANGID_STRING 0xbbb /* Replace '0xbbb' with your device language ID */ -#define USBD_MANUFACTURER_STRING "xxxxx" /* Add your manufacturer string */ -#define USBD_PRODUCT_HS_STRING "xxxxx" /* Add your product High Speed string */ -#define USBD_PRODUCT_FS_STRING "xxxxx" /* Add your product Full Speed string */ -#define USBD_CONFIGURATION_HS_STRING "xxxxx" /* Add your configuration High Speed string */ -#define USBD_INTERFACE_HS_STRING "xxxxx" /* Add your Interface High Speed string */ -#define USBD_CONFIGURATION_FS_STRING "xxxxx" /* Add your configuration Full Speed string */ -#define USBD_INTERFACE_FS_STRING "xxxxx" /* Add your Interface Full Speed string */ - -/* Private macro -------------------------------------------------------------*/ -/* Private function prototypes -----------------------------------------------*/ -uint8_t *USBD_Class_DeviceDescriptor(USBD_SpeedTypeDef speed, uint16_t *length); -uint8_t *USBD_Class_LangIDStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length); -uint8_t *USBD_Class_ManufacturerStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length); -uint8_t *USBD_Class_ProductStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length); -uint8_t *USBD_Class_SerialStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length); -uint8_t *USBD_Class_ConfigStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length); -uint8_t *USBD_Class_InterfaceStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length); - -#if (USBD_CLASS_USER_STRING_DESC == 1) -uint8_t *USBD_Class_UserStrDescriptor(USBD_SpeedTypeDef speed, uint8_t idx, uint16_t *length); -#endif /* USB_CLASS_USER_STRING_DESC */ - -#if ((USBD_LPM_ENABLED == 1) || (USBD_CLASS_BOS_ENABLED == 1)) -uint8_t *USBD_USR_BOSDescriptor(USBD_SpeedTypeDef speed, uint16_t *length); -#endif /* (USBD_LPM_ENABLED == 1) || (USBD_CLASS_BOS_ENABLED == 1) */ - -/* Private variables ---------------------------------------------------------*/ -USBD_DescriptorsTypeDef Class_Desc = -{ - USBD_Class_DeviceDescriptor, - USBD_Class_LangIDStrDescriptor, - USBD_Class_ManufacturerStrDescriptor, - USBD_Class_ProductStrDescriptor, - USBD_Class_SerialStrDescriptor, - USBD_Class_ConfigStrDescriptor, - USBD_Class_InterfaceStrDescriptor, -#if (USBD_CLASS_USER_STRING_DESC == 1) - USBD_CLASS_UserStrDescriptor, -#endif /* USB_CLASS_USER_STRING_DESC */ - -#if ((USBD_LPM_ENABLED == 1) || (USBD_CLASS_BOS_ENABLED == 1)) - USBD_USR_BOSDescriptor, -#endif /* (USBD_LPM_ENABLED == 1) || (USBD_CLASS_BOS_ENABLED == 1) */ -}; - -/* USB Standard Device Descriptor */ -#if defined ( __ICCARM__ ) /*!< IAR Compiler */ -#pragma data_alignment=4 -#endif /* __ICCARM__ */ -__ALIGN_BEGIN uint8_t USBD_DeviceDesc[USB_LEN_DEV_DESC] __ALIGN_END = -{ - 0x12, /* bLength */ - USB_DESC_TYPE_DEVICE, /* bDescriptorType */ -#if ((USBD_LPM_ENABLED == 1) || (USBD_CLASS_BOS_ENABLED == 1)) - 0x01, /*bcdUSB */ /* changed to USB version 2.01 - in order to support BOS Desc */ -#else - 0x00, /* bcdUSB */ -#endif /* (USBD_LPM_ENABLED == 1) || (USBD_CLASS_BOS_ENABLED == 1) */ - 0x02, - 0x00, /* bDeviceClass */ - 0x00, /* bDeviceSubClass */ - 0x00, /* bDeviceProtocol */ - USB_MAX_EP0_SIZE, /* bMaxPacketSize */ - LOBYTE(USBD_VID), /* idVendor */ - HIBYTE(USBD_VID), /* idVendor */ - LOBYTE(USBD_PID), /* idVendor */ - HIBYTE(USBD_PID), /* idVendor */ - 0x00, /* bcdDevice rel. 2.00 */ - 0x02, - USBD_IDX_MFC_STR, /* Index of manufacturer string */ - USBD_IDX_PRODUCT_STR, /* Index of product string */ - USBD_IDX_SERIAL_STR, /* Index of serial number string */ - USBD_MAX_NUM_CONFIGURATION /* bNumConfigurations */ -}; /* USB_DeviceDescriptor */ - - -/* USB Device LPM BOS descriptor */ -#if (USBD_LPM_ENABLED == 1) -#if defined ( __ICCARM__ ) /*!< IAR Compiler */ -#pragma data_alignment=4 -#endif /* __ICCARM__ */ -__ALIGN_BEGIN uint8_t USBD_BOSDesc[USB_SIZ_BOS_DESC] __ALIGN_END = -{ - 0x5, - USB_DESC_TYPE_BOS, - 0xC, - 0x0, - 0x1, /* 1 device capability */ - /* device capability */ - 0x7, - USB_DEVICE_CAPABITY_TYPE, - 0x2, - 0x6, /*LPM capability bit set */ - 0x0, - 0x0, - 0x0 -}; -#endif /* USBD_LPM_ENABLED */ - -/* USB Device Billboard BOS descriptor Template */ -#if (USBD_CLASS_BOS_ENABLED == 1) -#if defined ( __ICCARM__ ) /*!< IAR Compiler */ -#pragma data_alignment=4 -#endif /* __ICCARM__ */ -__ALIGN_BEGIN uint8_t USBD_BOSDesc[USB_SIZ_BOS_DESC] __ALIGN_END = -{ - 0x05, /* bLength */ - USB_DESC_TYPE_BOS, /* Device Descriptor Type */ - USB_SIZ_BOS_DESC, /* Total length of BOS descriptor and all of its sub descs */ - 0x00, - 0x04, /* The number of separate device capability descriptors in the BOS */ - - /* ----------- Device Capability Descriptor: CONTAINER_ID ---------- */ - 0x14, /* bLength */ - 0x10, /* bDescriptorType: DEVICE CAPABILITY Type */ - 0x04, /* bDevCapabilityType: CONTAINER_ID */ - 0x00, /* bReserved */ - 0xa7, 0xd6, 0x1b, 0xfa, /* ContainerID: This is a Unique 128-bit number GUID */ - 0x91, 0xa6, 0xa8, 0x4e, - 0xa8, 0x21, 0x9f, 0x2b, - 0xaf, 0xf7, 0x94, 0xd4, - - /* ----------- Device Capability Descriptor: BillBoard ---------- */ - 0x34, /* bLength */ - 0x10, /* bDescriptorType: DEVICE CAPABILITY Type */ - 0x0D, /* bDevCapabilityType: BILLBOARD_CAPABILITY */ - USBD_BB_URL_STRING_INDEX, /* iAddtionalInfoURL: Index of string descriptor providing a URL where the user - can go to get more detailed information about the product and the various - Alternate Modes it supports */ - - 0x02, /* bNumberOfAlternateModes: Number of Alternate modes supported. The - maximum value that this field can be set to is MAX_NUM_ALT_MODE. */ - - 0x00, /* bPreferredAlternateMode: Index of the preferred Alternate Mode. System - software may use this information to provide the user with a better - user experience. */ - - 0x00, 0x00, /* VCONN Power needed by the adapter for full functionality 000b = 1W */ - - 0x01, 0x00, 0x00, 0x00, /* bmConfigured. 01b: Alternate Mode configuration not attempted or exited */ - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x21, 0x01, /* bcdVersion = 0x0121 */ - 0x00, /* bAdditionalFailureInfo */ - 0x00, /* bReserved */ - LOBYTE(USBD_VID), - HIBYTE(USBD_VID), /* wSVID[0]: Standard or Vendor ID. This shall match one of the SVIDs - returned in response to a USB PD Discover SVIDs command */ - - 0x00, /* bAlternateMode[0] Index of the Alternate Mode within the SVID as - returned in response to a Discover Modes command. Example: - 0 first Mode entry - 1 second mode entry */ - - USBD_BB_ALTMODE0_STRING_INDEX, /* iAlternateModeString[0]: Index of string descriptor describing protocol. - It is optional to support this string. */ - LOBYTE(USBD_VID), - HIBYTE(USBD_VID), /* wSVID[1]: Standard or Vendor ID. This shall match one of the SVIDs - returned in response to a USB PD Discover SVIDs command */ - - 0x01, /* bAlternateMode[1] Index of the Alternate Mode within the SVID as - returned in response to a Discover Modes command. Example: - 0 first Mode entry - 1 second Mode entry */ - - USBD_BB_ALTMODE1_STRING_INDEX, /* iAlternateModeString[1]: Index of string descriptor describing protocol. - It is optional to support this string. */ - /* Alternate Mode Desc */ - /* ----------- Device Capability Descriptor: BillBoard Alternate Mode Desc ---------- */ - 0x08, /* bLength */ - 0x10, /* bDescriptorType: Device Descriptor Type */ - 0x0F, /* bDevCapabilityType: BILLBOARD ALTERNATE MODE CAPABILITY */ - 0x00, /* bIndex: Index of Alternate Mode described in the Billboard Capability Desc */ - 0x10, 0x00, 0x00, 0x00, /* dwAlternateModeVdo: contents of the Mode VDO for the alternate mode - identified by bIndex */ - - 0x08, /* bLength */ - 0x10, /* bDescriptorType: Device Descriptor Type */ - 0x0F, /* bDevCapabilityType: BILLBOARD ALTERNATE MODE CAPABILITY */ - 0x01, /* bIndex: Index of Alternate Mode described in the Billboard Capability Desc */ - 0x20, 0x00, 0x00, 0x00, /* dwAlternateModeVdo: contents of the Mode VDO for the alternate mode - identified by bIndex */ -}; -#endif /* USBD_CLASS_BOS_ENABLED */ - - -/* USB Standard Device Descriptor */ -#if defined ( __ICCARM__ ) /*!< IAR Compiler */ -#pragma data_alignment=4 -#endif /* __ICCARM__ */ -__ALIGN_BEGIN uint8_t USBD_LangIDDesc[USB_LEN_LANGID_STR_DESC] __ALIGN_END = -{ - USB_LEN_LANGID_STR_DESC, - USB_DESC_TYPE_STRING, - LOBYTE(USBD_LANGID_STRING), - HIBYTE(USBD_LANGID_STRING), -}; - -#if defined ( __ICCARM__ ) /*!< IAR Compiler */ -#pragma data_alignment=4 -#endif /* __ICCARM__ */ -__ALIGN_BEGIN uint8_t USBD_StringSerial[USB_SIZ_STRING_SERIAL] = -{ - USB_SIZ_STRING_SERIAL, - USB_DESC_TYPE_STRING, -}; - -#if defined ( __ICCARM__ ) /*!< IAR Compiler */ -#pragma data_alignment=4 -#endif /* __ICCARM__ */ -__ALIGN_BEGIN uint8_t USBD_StrDesc[USBD_MAX_STR_DESC_SIZ] __ALIGN_END; - -/* Private functions ---------------------------------------------------------*/ -static void IntToUnicode(uint32_t value, uint8_t *pbuf, uint8_t len); -static void Get_SerialNum(void); - -/** - * @brief Returns the device descriptor. - * @param speed: Current device speed - * @param length: Pointer to data length variable - * @retval Pointer to descriptor buffer - */ -uint8_t *USBD_Class_DeviceDescriptor(USBD_SpeedTypeDef speed, uint16_t *length) -{ - UNUSED(speed); - - *length = sizeof(USBD_DeviceDesc); - return (uint8_t *)USBD_DeviceDesc; -} - -/** - * @brief Returns the LangID string descriptor. - * @param speed: Current device speed - * @param length: Pointer to data length variable - * @retval Pointer to descriptor buffer - */ -uint8_t *USBD_Class_LangIDStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length) -{ - UNUSED(speed); - - *length = sizeof(USBD_LangIDDesc); - return (uint8_t *)USBD_LangIDDesc; -} - -/** - * @brief Returns the product string descriptor. - * @param speed: Current device speed - * @param length: Pointer to data length variable - * @retval Pointer to descriptor buffer - */ -uint8_t *USBD_Class_ProductStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length) -{ - if (speed == USBD_SPEED_HIGH) - { - USBD_GetString((uint8_t *)USBD_PRODUCT_HS_STRING, USBD_StrDesc, length); - } - else - { - USBD_GetString((uint8_t *)USBD_PRODUCT_FS_STRING, USBD_StrDesc, length); - } - return USBD_StrDesc; -} - -/** - * @brief Returns the manufacturer string descriptor. - * @param speed: Current device speed - * @param length: Pointer to data length variable - * @retval Pointer to descriptor buffer - */ -uint8_t *USBD_Class_ManufacturerStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length) -{ - UNUSED(speed); - - USBD_GetString((uint8_t *)USBD_MANUFACTURER_STRING, USBD_StrDesc, length); - return USBD_StrDesc; -} - -/** - * @brief Returns the serial number string descriptor. - * @param speed: Current device speed - * @param length: Pointer to data length variable - * @retval Pointer to descriptor buffer - */ -uint8_t *USBD_Class_SerialStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length) -{ - UNUSED(speed); - - *length = USB_SIZ_STRING_SERIAL; - - /* Update the serial number string descriptor with the data from the unique ID*/ - Get_SerialNum(); - - return (uint8_t *)USBD_StringSerial; -} - -/** - * @brief Returns the configuration string descriptor. - * @param speed: Current device speed - * @param length: Pointer to data length variable - * @retval Pointer to descriptor buffer - */ -uint8_t *USBD_Class_ConfigStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length) -{ - if (speed == USBD_SPEED_HIGH) - { - USBD_GetString((uint8_t *)USBD_CONFIGURATION_HS_STRING, USBD_StrDesc, length); - } - else - { - USBD_GetString((uint8_t *)USBD_CONFIGURATION_FS_STRING, USBD_StrDesc, length); - } - return USBD_StrDesc; -} - -/** - * @brief Returns the interface string descriptor. - * @param speed: Current device speed - * @param length: Pointer to data length variable - * @retval Pointer to descriptor buffer - */ -uint8_t *USBD_Class_InterfaceStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length) -{ - if (speed == USBD_SPEED_HIGH) - { - USBD_GetString((uint8_t *)USBD_INTERFACE_HS_STRING, USBD_StrDesc, length); - } - else - { - USBD_GetString((uint8_t *)USBD_INTERFACE_FS_STRING, USBD_StrDesc, length); - } - return USBD_StrDesc; -} - -/** - * @brief Create the serial number string descriptor - * @param None - * @retval None - */ -static void Get_SerialNum(void) -{ - uint32_t deviceserial0, deviceserial1, deviceserial2; - - deviceserial0 = *(uint32_t *)DEVICE_ID1; - deviceserial1 = *(uint32_t *)DEVICE_ID2; - deviceserial2 = *(uint32_t *)DEVICE_ID3; - - deviceserial0 += deviceserial2; - - if (deviceserial0 != 0U) - { - IntToUnicode(deviceserial0, &USBD_StringSerial[2], 8U); - IntToUnicode(deviceserial1, &USBD_StringSerial[18], 4U); - } -} - - -#if ((USBD_LPM_ENABLED == 1) || (USBD_CLASS_BOS_ENABLED == 1)) -/** - * @brief USBD_USR_BOSDescriptor - * return the BOS descriptor - * @param speed : current device speed - * @param length : pointer to data length variable - * @retval pointer to descriptor buffer - */ -uint8_t *USBD_USR_BOSDescriptor(USBD_SpeedTypeDef speed, uint16_t *length) -{ - *length = sizeof(USBD_BOSDesc); - return (uint8_t *)USBD_BOSDesc; -} -#endif /* (USBD_LPM_ENABLED == 1) || (USBD_CLASS_BOS_ENABLED == 1) */ - - -#if (USBD_CLASS_USER_STRING_DESC == 1) -/** - * @brief Returns the Class User string descriptor. - * @param speed: Current device speed - * @param idx: index of string descriptor - * @param length: Pointer to data length variable - * @retval Pointer to descriptor buffer - */ -uint8_t *USBD_Class_UserStrDescriptor(USBD_SpeedTypeDef speed, uint8_t idx, uint16_t *length) -{ - static uint8_t USBD_StrDesc[255]; - - return USBD_StrDesc; -} -#endif /* USBD_CLASS_USER_STRING_DESC */ - - -/** - * @brief Convert Hex 32Bits value into char - * @param value: value to convert - * @param pbuf: pointer to the buffer - * @param len: buffer length - * @retval None - */ -static void IntToUnicode(uint32_t value, uint8_t *pbuf, uint8_t len) -{ - uint8_t idx = 0U; - - for (idx = 0U ; idx < len ; idx ++) - { - if (((value >> 28)) < 0xAU) - { - pbuf[ 2U * idx] = (value >> 28) + '0'; - } - else - { - pbuf[2U * idx] = (value >> 28) + 'A' - 10U; - } - - value = value << 4; - - pbuf[2U * idx + 1] = 0U; - } -} diff --git a/HAL_N_Middlewares/Src/main.c b/HAL_N_Middlewares/Src/main.c deleted file mode 100644 index df310d0..0000000 --- a/HAL_N_Middlewares/Src/main.c +++ /dev/null @@ -1,243 +0,0 @@ -/* USER CODE BEGIN Header */ -/** - ****************************************************************************** - * @file : main.c - * @brief : Main program body - ****************************************************************************** - * @attention - * - * Copyright (c) 2023 STMicroelectronics. - * All rights reserved. - * - * This software is licensed under terms that can be found in the LICENSE file - * in the root directory of this software component. - * If no LICENSE file comes with this software, it is provided AS-IS. - * - ****************************************************************************** - */ -/* USER CODE END Header */ -/* Includes ------------------------------------------------------------------*/ -#include "main.h" -#include "cmsis_os.h" -#include "adc.h" -#include "can.h" -#include "crc.h" -#include "dac.h" -#include "dma.h" -#include "i2c.h" -#include "rng.h" -#include "rtc.h" -#include "spi.h" -#include "tim.h" -#include "usart.h" -#include "usb_device.h" -#include "gpio.h" - -/* Private includes ----------------------------------------------------------*/ -/* USER CODE BEGIN Includes */ -#include "robot.h" -/* USER CODE END Includes */ - -/* Private typedef -----------------------------------------------------------*/ -/* USER CODE BEGIN PTD */ - -/* USER CODE END PTD */ - -/* Private define ------------------------------------------------------------*/ -/* USER CODE BEGIN PD */ -/* USER CODE END PD */ - -/* Private macro -------------------------------------------------------------*/ -/* USER CODE BEGIN PM */ - -/* USER CODE END PM */ - -/* Private variables ---------------------------------------------------------*/ - -/* USER CODE BEGIN PV */ - -/* USER CODE END PV */ - -/* Private function prototypes -----------------------------------------------*/ -void SystemClock_Config(void); -void MX_FREERTOS_Init(void); -/* USER CODE BEGIN PFP */ - -/* USER CODE END PFP */ - -/* Private user code ---------------------------------------------------------*/ -/* USER CODE BEGIN 0 */ - -/* USER CODE END 0 */ - -/** - * @brief The application entry point. - * @retval int - */ -int main(void) -{ - /* USER CODE BEGIN 1 */ - - /* USER CODE END 1 */ - - /* MCU Configuration--------------------------------------------------------*/ - - /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ - HAL_Init(); - - /* USER CODE BEGIN Init */ - - /* USER CODE END Init */ - - /* Configure the system clock */ - SystemClock_Config(); - - /* USER CODE BEGIN SysInit */ - - /* USER CODE END SysInit */ - - /* Initialize all configured peripherals */ - MX_GPIO_Init(); - MX_DMA_Init(); - MX_ADC1_Init(); - MX_CAN1_Init(); - MX_CAN2_Init(); - MX_SPI1_Init(); - MX_TIM4_Init(); - MX_TIM5_Init(); - MX_USART3_UART_Init(); - MX_RNG_Init(); - MX_RTC_Init(); - MX_TIM1_Init(); - MX_TIM10_Init(); - MX_USART1_UART_Init(); - MX_USART6_UART_Init(); - MX_TIM8_Init(); - MX_I2C2_Init(); - MX_I2C3_Init(); - MX_SPI2_Init(); - MX_CRC_Init(); - MX_DAC_Init(); - /* USER CODE BEGIN 2 */ - RobotInit(); - /* USER CODE END 2 */ - - /* Call init function for freertos objects (in freertos.c) */ - MX_FREERTOS_Init(); - - /* Start scheduler */ - osKernelStart(); - - /* We should never get here as control is now taken by the scheduler */ - /* Infinite loop */ - /* USER CODE BEGIN WHILE */ - while (1) - { - /* USER CODE END WHILE */ - - /* USER CODE BEGIN 3 */ - } - /* USER CODE END 3 */ -} - -/** - * @brief System Clock Configuration - * @retval None - */ -void SystemClock_Config(void) -{ - RCC_OscInitTypeDef RCC_OscInitStruct = {0}; - RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; - - /** Configure the main internal regulator output voltage - */ - __HAL_RCC_PWR_CLK_ENABLE(); - __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1); - - /** Initializes the RCC Oscillators according to the specified parameters - * in the RCC_OscInitTypeDef structure. - */ - RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; - RCC_OscInitStruct.HSEState = RCC_HSE_ON; - RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; - RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; - RCC_OscInitStruct.PLL.PLLM = 6; - RCC_OscInitStruct.PLL.PLLN = 168; - RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; - RCC_OscInitStruct.PLL.PLLQ = 7; - if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) - { - Error_Handler(); - } - - /** Initializes the CPU, AHB and APB buses clocks - */ - RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2; - RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; - RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; - RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4; - RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2; - - if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_5) != HAL_OK) - { - Error_Handler(); - } -} - -/* USER CODE BEGIN 4 */ - -/* USER CODE END 4 */ - -/** - * @brief Period elapsed callback in non blocking mode - * @note This function is called when TIM14 interrupt took place, inside - * HAL_TIM_IRQHandler(). It makes a direct call to HAL_IncTick() to increment - * a global variable "uwTick" used as application time base. - * @param htim : TIM handle - * @retval None - */ -void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) -{ - /* USER CODE BEGIN Callback 0 */ - - /* USER CODE END Callback 0 */ - if (htim->Instance == TIM14) - { - HAL_IncTick(); - } - /* USER CODE BEGIN Callback 1 */ - - /* USER CODE END Callback 1 */ -} - -/** - * @brief This function is executed in case of error occurrence. - * @retval None - */ -void Error_Handler(void) -{ - /* USER CODE BEGIN Error_Handler_Debug */ - /* User can add his own implementation to report the HAL error return state */ - __disable_irq(); - while (1) - { - } - /* USER CODE END Error_Handler_Debug */ -} - -#ifdef USE_FULL_ASSERT -/** - * @brief Reports the name of the source file and the source line number - * where the assert_param error has occurred. - * @param file: pointer to the source file name - * @param line: assert_param error line source number - * @retval None - */ -void assert_failed(uint8_t *file, uint32_t line) -{ - /* USER CODE BEGIN 6 */ - /* User can add his own implementation to report the file name and line number, - ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ - /* USER CODE END 6 */ -} -#endif /* USE_FULL_ASSERT */ diff --git a/HAL_N_Middlewares/Src/usbd_cdc_if.c b/HAL_N_Middlewares/Src/usbd_cdc_if.c deleted file mode 100644 index 69e68fd..0000000 --- a/HAL_N_Middlewares/Src/usbd_cdc_if.c +++ /dev/null @@ -1,344 +0,0 @@ -/* USER CODE BEGIN Header */ -/** - ****************************************************************************** - * @file : usbd_cdc_if.c - * @version : v1.0_Cube - * @brief : Usb device for Virtual Com Port. - ****************************************************************************** - * @attention - * - * Copyright (c) 2023 STMicroelectronics. - * All rights reserved. - * - * This software is licensed under terms that can be found in the LICENSE file - * in the root directory of this software component. - * If no LICENSE file comes with this software, it is provided AS-IS. - * - ****************************************************************************** - */ -/* USER CODE END Header */ - -/* Includes ------------------------------------------------------------------*/ -#include "usbd_cdc_if.h" - -/* USER CODE BEGIN INCLUDE */ - -/* USER CODE END INCLUDE */ - -/* Private typedef -----------------------------------------------------------*/ -/* Private define ------------------------------------------------------------*/ -/* Private macro -------------------------------------------------------------*/ - -/* USER CODE BEGIN PV */ -/* Private variables ---------------------------------------------------------*/ - -/* USER CODE END PV */ - -/** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY - * @brief Usb device library. - * @{ - */ - -/** @addtogroup USBD_CDC_IF - * @{ - */ - -/** @defgroup USBD_CDC_IF_Private_TypesDefinitions USBD_CDC_IF_Private_TypesDefinitions - * @brief Private types. - * @{ - */ - -/* USER CODE BEGIN PRIVATE_TYPES */ -void (*transmitcpltcallback)(uint32_t); - -void (*receivecpltcallback)(uint32_t); -/* USER CODE END PRIVATE_TYPES */ - -/** - * @} - */ - -/** @defgroup USBD_CDC_IF_Private_Defines USBD_CDC_IF_Private_Defines - * @brief Private defines. - * @{ - */ - -/* USER CODE BEGIN PRIVATE_DEFINES */ -/* USER CODE END PRIVATE_DEFINES */ - -/** - * @} - */ - -/** @defgroup USBD_CDC_IF_Private_Macros USBD_CDC_IF_Private_Macros - * @brief Private macros. - * @{ - */ - -/* USER CODE BEGIN PRIVATE_MACRO */ - -/* USER CODE END PRIVATE_MACRO */ - -/** - * @} - */ - -/** @defgroup USBD_CDC_IF_Private_Variables USBD_CDC_IF_Private_Variables - * @brief Private variables. - * @{ - */ -/* Create buffer for reception and transmission */ -/* It's up to user to redefine and/or remove those define */ - -/* USER CODE BEGIN PRIVATE_VARIABLES */ -/** Received data over USB are stored in this buffer */ -uint8_t UserRxBufferFS[APP_RX_DATA_SIZE]; - -/** Data to send over USB CDC are stored in this buffer */ -uint8_t UserTxBufferFS[APP_TX_DATA_SIZE]; -/* USER CODE END PRIVATE_VARIABLES */ - -/** - * @} - */ - -/** @defgroup USBD_CDC_IF_Exported_Variables USBD_CDC_IF_Exported_Variables - * @brief Public variables. - * @{ - */ - -extern USBD_HandleTypeDef hUsbDeviceFS; - -/* USER CODE BEGIN EXPORTED_VARIABLES */ - -/* USER CODE END EXPORTED_VARIABLES */ - -/** - * @} - */ - -/** @defgroup USBD_CDC_IF_Private_FunctionPrototypes USBD_CDC_IF_Private_FunctionPrototypes - * @brief Private functions declaration. - * @{ - */ - -static int8_t CDC_Init_FS(void); -static int8_t CDC_DeInit_FS(void); -static int8_t CDC_Control_FS(uint8_t cmd, uint8_t *pbuf, uint16_t length); -static int8_t CDC_Receive_FS(uint8_t *pbuf, uint32_t *Len); -static int8_t CDC_TransmitCplt_FS(uint8_t *pbuf, uint32_t *Len, uint8_t epnum); - -/* USER CODE BEGIN PRIVATE_FUNCTIONS_DECLARATION */ - -/* USER CODE END PRIVATE_FUNCTIONS_DECLARATION */ - -/** - * @} - */ - -USBD_CDC_ItfTypeDef USBD_Interface_fops_FS = - { - CDC_Init_FS, - CDC_DeInit_FS, - CDC_Control_FS, - CDC_Receive_FS, - CDC_TransmitCplt_FS}; - -/* Private functions ---------------------------------------------------------*/ -/** - * @brief Initializes the CDC media low layer over the FS USB IP - * @retval USBD_OK if all operations are OK else USBD_FAIL - */ -static int8_t CDC_Init_FS(void) -{ - /* USER CODE BEGIN 3 */ - /* Set Application Buffers */ - USBD_CDC_SetTxBuffer(&hUsbDeviceFS, UserTxBufferFS, 0); - USBD_CDC_SetRxBuffer(&hUsbDeviceFS, UserRxBufferFS); - return (USBD_OK); - /* USER CODE END 3 */ -} - -/** - * @brief DeInitializes the CDC media low layer - * @retval USBD_OK if all operations are OK else USBD_FAIL - */ -static int8_t CDC_DeInit_FS(void) -{ - /* USER CODE BEGIN 4 */ - return (USBD_OK); - /* USER CODE END 4 */ -} - -/** - * @brief Manage the CDC class requests - * @param cmd: Command code - * @param pbuf: Buffer containing command data (request parameters) - * @param length: Number of data to be sent (in bytes) - * @retval Result of the operation: USBD_OK if all operations are OK else USBD_FAIL - */ -static int8_t CDC_Control_FS(uint8_t cmd, uint8_t *pbuf, uint16_t length) -{ - /* USER CODE BEGIN 5 */ - switch (cmd) - { - case CDC_SEND_ENCAPSULATED_COMMAND: - - break; - - case CDC_GET_ENCAPSULATED_RESPONSE: - - break; - - case CDC_SET_COMM_FEATURE: - - break; - - case CDC_GET_COMM_FEATURE: - - break; - - case CDC_CLEAR_COMM_FEATURE: - - break; - - /*******************************************************************************/ - /* Line Coding Structure */ - /*-----------------------------------------------------------------------------*/ - /* Offset | Field | Size | Value | Description */ - /* 0 | dwDTERate | 4 | Number |Data terminal rate, in bits per second*/ - /* 4 | bCharFormat | 1 | Number | Stop bits */ - /* 0 - 1 Stop bit */ - /* 1 - 1.5 Stop bits */ - /* 2 - 2 Stop bits */ - /* 5 | bParityType | 1 | Number | Parity */ - /* 0 - None */ - /* 1 - Odd */ - /* 2 - Even */ - /* 3 - Mark */ - /* 4 - Space */ - /* 6 | bDataBits | 1 | Number Data bits (5, 6, 7, 8 or 16). */ - /*******************************************************************************/ - case CDC_SET_LINE_CODING: - - break; - - case CDC_GET_LINE_CODING: - - break; - - case CDC_SET_CONTROL_LINE_STATE: - - break; - - case CDC_SEND_BREAK: - - break; - - default: - break; - } - - return (USBD_OK); - /* USER CODE END 5 */ -} - -/** - * @brief Data received over USB OUT endpoint are sent over CDC interface - * through this function. - * - * @note - * This function will issue a NAK packet on any OUT packet received on - * USB endpoint until exiting this function. If you exit this function - * before transfer is complete on CDC interface (ie. using DMA controller) - * it will result in receiving more data while previous ones are still - * not sent. - * - * @param Buf: Buffer of data to be received - * @param Len: Number of data received (in bytes) - * @retval Result of the operation: USBD_OK if all operations are OK else USBD_FAIL - */ -static int8_t CDC_Receive_FS(uint8_t *Buf, uint32_t *Len) -{ - /* USER CODE BEGIN 6 */ - USBD_CDC_SetRxBuffer(&hUsbDeviceFS, &Buf[0]); - USBD_CDC_ReceivePacket(&hUsbDeviceFS); - if(receivecpltcallback != NULL) - { - receivecpltcallback(*Len); - } - return (USBD_OK); - /* USER CODE END 6 */ -} - -/** - * @brief CDC_Transmit_FS - * Data to send over USB IN endpoint are sent over CDC interface - * through this function. - * @note - * - * - * @param Buf: Buffer of data to be sent - * @param Len: Number of data to be sent (in bytes) - * @retval USBD_OK if all operations are OK else USBD_FAIL or USBD_BUSY - */ -uint8_t CDC_Transmit_FS(uint8_t *Buf, uint16_t Len) -{ - uint8_t result = USBD_OK; - /* USER CODE BEGIN 7 */ - USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef *)hUsbDeviceFS.pClassData; - if (hcdc->TxState != 0) - { - return USBD_BUSY; - } - USBD_CDC_SetTxBuffer(&hUsbDeviceFS, Buf, Len); - result = USBD_CDC_TransmitPacket(&hUsbDeviceFS); - /* USER CODE END 7 */ - return result; -} - -uint8_t *CDCInitRxbufferNcallback(void (*callback)(uint32_t),void (*callback2)(uint32_t)) -{ - transmitcpltcallback=callback; - receivecpltcallback=callback2; - return (uint8_t *)UserRxBufferFS; -} - -/** - * @brief CDC_TransmitCplt_FS - * Data transmitted callback - * - * @note - * This function is IN transfer complete callback used to inform user that - * the submitted Data is successfully sent over USB. - * - * @param Buf: Buffer of data to be received - * @param Len: Number of data received (in bytes) - * @retval Result of the operation: USBD_OK if all operations are OK else USBD_FAIL - */ -static int8_t CDC_TransmitCplt_FS(uint8_t *Buf, uint32_t *Len, uint8_t epnum) -{ - uint8_t result = USBD_OK; - /* USER CODE BEGIN 13 */ - UNUSED(Buf); - UNUSED(Len); - UNUSED(epnum); - if(transmitcpltcallback!=NULL) - { - transmitcpltcallback(*Len); - } - /* USER CODE END 13 */ - return result; -} - -/* USER CODE BEGIN PRIVATE_FUNCTIONS_IMPLEMENTATION */ - -/* USER CODE END PRIVATE_FUNCTIONS_IMPLEMENTATION */ - -/** - * @} - */ - -/** - * @} - */ diff --git a/HAL_N_Middlewares/Inc/FreeRTOSConfig.h b/Inc/FreeRTOSConfig.h similarity index 100% rename from HAL_N_Middlewares/Inc/FreeRTOSConfig.h rename to Inc/FreeRTOSConfig.h diff --git a/HAL_N_Middlewares/Inc/adc.h b/Inc/adc.h similarity index 100% rename from HAL_N_Middlewares/Inc/adc.h rename to Inc/adc.h diff --git a/HAL_N_Middlewares/Inc/can.h b/Inc/can.h similarity index 100% rename from HAL_N_Middlewares/Inc/can.h rename to Inc/can.h diff --git a/HAL_N_Middlewares/Inc/crc.h b/Inc/crc.h similarity index 100% rename from HAL_N_Middlewares/Inc/crc.h rename to Inc/crc.h diff --git a/HAL_N_Middlewares/Inc/dac.h b/Inc/dac.h similarity index 100% rename from HAL_N_Middlewares/Inc/dac.h rename to Inc/dac.h diff --git a/HAL_N_Middlewares/Inc/dma.h b/Inc/dma.h similarity index 100% rename from HAL_N_Middlewares/Inc/dma.h rename to Inc/dma.h diff --git a/HAL_N_Middlewares/Inc/gpio.h b/Inc/gpio.h similarity index 100% rename from HAL_N_Middlewares/Inc/gpio.h rename to Inc/gpio.h diff --git a/HAL_N_Middlewares/Inc/i2c.h b/Inc/i2c.h similarity index 100% rename from HAL_N_Middlewares/Inc/i2c.h rename to Inc/i2c.h diff --git a/HAL_N_Middlewares/Inc/main.h b/Inc/main.h similarity index 100% rename from HAL_N_Middlewares/Inc/main.h rename to Inc/main.h diff --git a/HAL_N_Middlewares/Inc/rng.h b/Inc/rng.h similarity index 100% rename from HAL_N_Middlewares/Inc/rng.h rename to Inc/rng.h diff --git a/HAL_N_Middlewares/Inc/rtc.h b/Inc/rtc.h similarity index 100% rename from HAL_N_Middlewares/Inc/rtc.h rename to Inc/rtc.h diff --git a/HAL_N_Middlewares/Inc/spi.h b/Inc/spi.h similarity index 100% rename from HAL_N_Middlewares/Inc/spi.h rename to Inc/spi.h diff --git a/HAL_N_Middlewares/Inc/stm32f4xx_hal_conf.h b/Inc/stm32f4xx_hal_conf.h similarity index 100% rename from HAL_N_Middlewares/Inc/stm32f4xx_hal_conf.h rename to Inc/stm32f4xx_hal_conf.h diff --git a/HAL_N_Middlewares/Inc/stm32f4xx_it.h b/Inc/stm32f4xx_it.h similarity index 100% rename from HAL_N_Middlewares/Inc/stm32f4xx_it.h rename to Inc/stm32f4xx_it.h diff --git a/HAL_N_Middlewares/Inc/tim.h b/Inc/tim.h similarity index 100% rename from HAL_N_Middlewares/Inc/tim.h rename to Inc/tim.h diff --git a/HAL_N_Middlewares/Inc/usart.h b/Inc/usart.h similarity index 100% rename from HAL_N_Middlewares/Inc/usart.h rename to Inc/usart.h diff --git a/HAL_N_Middlewares/Inc/usb_device.h b/Inc/usb_device.h similarity index 100% rename from HAL_N_Middlewares/Inc/usb_device.h rename to Inc/usb_device.h diff --git a/Inc/usbd_cdc_if.h b/Inc/usbd_cdc_if.h new file mode 100644 index 0000000..a9f47c1 --- /dev/null +++ b/Inc/usbd_cdc_if.h @@ -0,0 +1,131 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file : usbd_cdc_if.h + * @version : v1.0_Cube + * @brief : Header for usbd_cdc_if.c file. + ****************************************************************************** + * @attention + * + * Copyright (c) 2023 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __USBD_CDC_IF_H__ +#define __USBD_CDC_IF_H__ + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "usbd_cdc.h" + +/* USER CODE BEGIN INCLUDE */ + +/* USER CODE END INCLUDE */ + +/** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY + * @brief For Usb device. + * @{ + */ + +/** @defgroup USBD_CDC_IF USBD_CDC_IF + * @brief Usb VCP device module + * @{ + */ + +/** @defgroup USBD_CDC_IF_Exported_Defines USBD_CDC_IF_Exported_Defines + * @brief Defines. + * @{ + */ +/* Define size for the receive and transmit buffer over CDC */ +#define APP_RX_DATA_SIZE 2048 +#define APP_TX_DATA_SIZE 2048 +/* USER CODE BEGIN EXPORTED_DEFINES */ + +/* USER CODE END EXPORTED_DEFINES */ + +/** + * @} + */ + +/** @defgroup USBD_CDC_IF_Exported_Types USBD_CDC_IF_Exported_Types + * @brief Types. + * @{ + */ + +/* USER CODE BEGIN EXPORTED_TYPES */ + +/* USER CODE END EXPORTED_TYPES */ + +/** + * @} + */ + +/** @defgroup USBD_CDC_IF_Exported_Macros USBD_CDC_IF_Exported_Macros + * @brief Aliases. + * @{ + */ + +/* USER CODE BEGIN EXPORTED_MACRO */ + +/* USER CODE END EXPORTED_MACRO */ + +/** + * @} + */ + +/** @defgroup USBD_CDC_IF_Exported_Variables USBD_CDC_IF_Exported_Variables + * @brief Public variables. + * @{ + */ + +/** CDC Interface callback. */ +extern USBD_CDC_ItfTypeDef USBD_Interface_fops_FS; + +/* USER CODE BEGIN EXPORTED_VARIABLES */ + +/* USER CODE END EXPORTED_VARIABLES */ + +/** + * @} + */ + +/** @defgroup USBD_CDC_IF_Exported_FunctionsPrototype USBD_CDC_IF_Exported_FunctionsPrototype + * @brief Public functions declaration. + * @{ + */ + +uint8_t CDC_Transmit_FS(uint8_t* Buf, uint16_t Len); + +/* USER CODE BEGIN EXPORTED_FUNCTIONS */ + +/* USER CODE END EXPORTED_FUNCTIONS */ + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __USBD_CDC_IF_H__ */ + diff --git a/HAL_N_Middlewares/Inc/usbd_conf.h b/Inc/usbd_conf.h similarity index 100% rename from HAL_N_Middlewares/Inc/usbd_conf.h rename to Inc/usbd_conf.h diff --git a/HAL_N_Middlewares/Inc/usbd_desc.h b/Inc/usbd_desc.h similarity index 100% rename from HAL_N_Middlewares/Inc/usbd_desc.h rename to Inc/usbd_desc.h diff --git a/Makefile b/Makefile index 7f97471..c6f243c 100644 --- a/Makefile +++ b/Makefile @@ -1,9 +1,20 @@ +########################################################################################################################## +# File automatically-generated by tool: [projectgenerator] version: [3.18.0-B7] date: [Thu Apr 13 11:28:19 CST 2023] +########################################################################################################################## + +# ------------------------------------------------ +# Generic Makefile (based on gcc) +# +# ChangeLog : +# 2017-02-10 - Several enhancements + project update mode +# 2015-07-22 - first version +# ------------------------------------------------ + ###################################### # target ###################################### TARGET = basic_framework -SHELL = cmd.exe ###################################### @@ -12,8 +23,7 @@ SHELL = cmd.exe # debug build? DEBUG = 1 # optimization -OPT = -O0 # O0避免没有使用到的变量被优化,如果没有特殊的调试需求请修改成-Og. - # 为了更高的性能,正式上车不需要调试时修改成-O3/-Ofast +OPT = -Og ####################################### @@ -27,75 +37,76 @@ BUILD_DIR = build ###################################### # C sources C_SOURCES = \ -HAL_N_Middlewares/Src/main.c \ -HAL_N_Middlewares/Src/gpio.c \ -HAL_N_Middlewares/Src/freertos.c \ -HAL_N_Middlewares/Src/adc.c \ -HAL_N_Middlewares/Src/can.c \ -HAL_N_Middlewares/Src/crc.c \ -HAL_N_Middlewares/Src/dac.c \ -HAL_N_Middlewares/Src/dma.c \ -HAL_N_Middlewares/Src/i2c.c \ -HAL_N_Middlewares/Src/rng.c \ -HAL_N_Middlewares/Src/rtc.c \ -HAL_N_Middlewares/Src/spi.c \ -HAL_N_Middlewares/Src/tim.c \ -HAL_N_Middlewares/Src/usart.c \ -HAL_N_Middlewares/Src/usb_device.c \ -HAL_N_Middlewares/Src/usbd_conf.c \ -HAL_N_Middlewares/Src/usbd_desc.c \ -HAL_N_Middlewares/Src/usbd_cdc_if.c \ -HAL_N_Middlewares/Src/stm32f4xx_it.c \ -HAL_N_Middlewares/Src/stm32f4xx_hal_msp.c \ -HAL_N_Middlewares/Src/stm32f4xx_hal_timebase_tim.c \ -HAL_N_Middlewares/Src/system_stm32f4xx.c \ -HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dac.c \ -HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_crc.c \ -HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.c \ -HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.c \ -HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.c \ -HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.c \ -HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.c \ -HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c \ -HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ex.c \ -HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ramfunc.c \ -HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.c \ -HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c_ex.c \ -HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c.c \ -HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma_ex.c \ -HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.c \ -HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.c \ -HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr_ex.c \ -HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.c \ -HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.c \ -HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_exti.c \ -HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc.c \ -HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc_ex.c \ -HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_adc.c \ -HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_can.c \ -HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rng.c \ -HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rtc.c \ -HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rtc_ex.c \ -HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.c \ -HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.c \ -HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.c \ -HAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.c \ -HAL_N_Middlewares/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c \ -HAL_N_Middlewares/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c \ -HAL_N_Middlewares/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.c \ -HAL_N_Middlewares/Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.c \ -HAL_N_Middlewares/Middlewares/Third_Party/FreeRTOS/Source/croutine.c \ -HAL_N_Middlewares/Middlewares/Third_Party/FreeRTOS/Source/event_groups.c \ -HAL_N_Middlewares/Middlewares/Third_Party/FreeRTOS/Source/list.c \ -HAL_N_Middlewares/Middlewares/Third_Party/FreeRTOS/Source/queue.c \ -HAL_N_Middlewares/Middlewares/Third_Party/FreeRTOS/Source/stream_buffer.c \ -HAL_N_Middlewares/Middlewares/Third_Party/FreeRTOS/Source/tasks.c \ -HAL_N_Middlewares/Middlewares/Third_Party/FreeRTOS/Source/timers.c \ -HAL_N_Middlewares/Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.c \ -HAL_N_Middlewares/Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.c \ -HAL_N_Middlewares/Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.c \ -HAL_N_Middlewares/Middlewares/Third_Party/SEGGER/RTT/SEGGER_RTT_printf.c \ -HAL_N_Middlewares/Middlewares/Third_Party/SEGGER/RTT/SEGGER_RTT.c \ +Src/main.c \ +Src/gpio.c \ +Src/freertos.c \ +Src/adc.c \ +Src/can.c \ +Src/crc.c \ +Src/dac.c \ +Src/dma.c \ +Src/i2c.c \ +Src/rng.c \ +Src/rtc.c \ +Src/spi.c \ +Src/tim.c \ +Src/usart.c \ +Src/usb_device.c \ +Src/usbd_conf.c \ +Src/usbd_desc.c \ +Src/usbd_cdc_if.c \ +Src/stm32f4xx_it.c \ +Src/stm32f4xx_hal_msp.c \ +Src/stm32f4xx_hal_timebase_tim.c \ +Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.c \ +Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.c \ +Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.c \ +Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.c \ +Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.c \ +Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c \ +Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ex.c \ +Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ramfunc.c \ +Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.c \ +Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma_ex.c \ +Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.c \ +Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.c \ +Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr_ex.c \ +Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.c \ +Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.c \ +Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_exti.c \ +Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc.c \ +Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc_ex.c \ +Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_adc.c \ +Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_can.c \ +Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_crc.c \ +Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dac.c \ +Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dac_ex.c \ +Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c.c \ +Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c_ex.c \ +Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rng.c \ +Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rtc.c \ +Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rtc_ex.c \ +Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.c \ +Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.c \ +Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.c \ +Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.c \ +Src/system_stm32f4xx.c \ +Middlewares/Third_Party/FreeRTOS/Source/croutine.c \ +Middlewares/Third_Party/FreeRTOS/Source/event_groups.c \ +Middlewares/Third_Party/FreeRTOS/Source/list.c \ +Middlewares/Third_Party/FreeRTOS/Source/queue.c \ +Middlewares/Third_Party/FreeRTOS/Source/stream_buffer.c \ +Middlewares/Third_Party/FreeRTOS/Source/tasks.c \ +Middlewares/Third_Party/FreeRTOS/Source/timers.c \ +Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.c \ +Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.c \ +Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.c \ +Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c \ +Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c \ +Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.c \ +Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.c \ +Middlewares/Third_Party/SEGGER/RTT/SEGGER_RTT_printf.c \ +Middlewares/Third_Party/SEGGER/RTT/SEGGER_RTT.c \ bsp/dwt/bsp_dwt.c \ bsp/pwm/bsp_pwm.c \ bsp/bsp_legacy_support/bsp_temperature.c \ @@ -147,19 +158,18 @@ application/shoot/shoot.c \ application/referee/referee.c \ application/cmd/robot_cmd.c \ application/balance_chassis/balance.c \ -application/robot.c - +application/robot.c # ASM sources -ASM_SOURCES += \ +ASM_SOURCES = \ startup_stm32f407xx.s \ -HAL_N_Middlewares/Middlewares/Third_Party/SEGGER/RTT/SEGGER_RTT_ASM_ARMv7M.s +Middlewares/Third_Party/SEGGER/RTT/SEGGER_RTT_ASM_ARMv7M.s + ####################################### # binaries ####################################### PREFIX = arm-none-eabi- -# PREFIX = ccache arm-none-eabi- 可以通过安装ccache来缓存makefile内容加速编译 # The gcc compiler bin path can be either defined in make command via GCC_PATH variable (> make GCC_PATH=xxx) # either it can be added to the PATH environment variable. ifdef GCC_PATH @@ -201,28 +211,27 @@ C_DEFS = \ -DSTM32F407xx \ -DARM_MATH_CM4 \ -DARM_MATH_MATRIX_CHECK \ --DARM_MATH_ROUNDING +-DARM_MATH_ROUNDING # AS includes -AS_INCLUDES = -IHAL_N_Middlewares/Inc +AS_INCLUDES = \ +-IInc # C includes C_INCLUDES = \ --IHAL_N_Middlewares/Inc \ --IHAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc \ --IHAL_N_Middlewares/Drivers/STM32F4xx_HAL_Driver/Inc/Legacy \ --IHAL_N_Middlewares/Drivers/CMSIS/Device/ST/STM32F4xx/Include \ --IHAL_N_Middlewares/Drivers/CMSIS/Include \ --IHAL_N_Middlewares/Drivers/CMSIS/DSP/Include \ --IHAL_N_Middlewares/Middlewares/ST/STM32_USB_Device_Library/Core/Inc \ --IHAL_N_Middlewares/Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc \ --IHAL_N_Middlewares/Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS \ --IHAL_N_Middlewares/Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F \ --IHAL_N_Middlewares/Middlewares/Third_Party/FreeRTOS/Source/include \ --IHAL_N_Middlewares/Middlewares/Third_Party/FreeRTOS/Source/include \ --IHAL_N_Middlewares/Middlewares/Third_Party/SEGGER/RTT \ --IHAL_N_Middlewares/Middlewares/Third_Party/SEGGER/Config \ --IHAL_N_Middlewares/Middlewares/ST/ARM/DSP/Inc \ +-IInc \ +-IDrivers/STM32F4xx_HAL_Driver/Inc \ +-IDrivers/STM32F4xx_HAL_Driver/Inc/Legacy \ +-IMiddlewares/Third_Party/FreeRTOS/Source/include \ +-IMiddlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS \ +-IMiddlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F \ +-IMiddlewares/ST/STM32_USB_Device_Library/Core/Inc \ +-IMiddlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc \ +-IDrivers/CMSIS/Device/ST/STM32F4xx/Include \ +-IDrivers/CMSIS/Include \ +-IMiddlewares/ST/ARM/DSP/Inc \ +-IMiddlewares/Third_Party/SEGGER/RTT \ +-IMiddlewares/Third_Party/SEGGER/Config \ -Iapplication/chassis \ -Iapplication/shoot \ -Iapplication/gimbal \ @@ -262,12 +271,13 @@ C_INCLUDES = \ -Imodules/message_center \ -Imodules/daemon \ -Imodules/vofa \ --Imodules +-Imodules + # compile gcc flags -ASFLAGS = $(MCU) $(AS_DEFS) $(AS_INCLUDES) $(OPT) -Wall -fdata-sections -ffunction-sections +ASFLAGS = $(MCU) $(AS_DEFS) $(AS_INCLUDES) $(OPT) -fdata-sections -ffunction-sections -CFLAGS += $(MCU) $(C_DEFS) $(C_INCLUDES) $(OPT) -Wall -fdata-sections -ffunction-sections +CFLAGS += $(MCU) $(C_DEFS) $(C_INCLUDES) $(OPT) -fdata-sections -ffunction-sections ifeq ($(DEBUG), 1) CFLAGS += -g -gdwarf-2 @@ -286,9 +296,9 @@ LDSCRIPT = STM32F407IGHx_FLASH.ld # libraries LIBS = -lc -lm -lnosys \ --larm_cortexM4lf_math +-l:libarm_cortexM4lf_math.a LIBDIR = \ --LHAL_N_Middlewares/Drivers/CMSIS/Lib/GCC +-LMiddlewares/ST/ARM/DSP/Lib LDFLAGS = $(MCU) -specs=nano.specs -T$(LDSCRIPT) $(LIBDIR) $(LIBS) -Wl,-Map=$(BUILD_DIR)/$(TARGET).map,--cref -Wl,--gc-sections # default action: build all @@ -305,8 +315,6 @@ vpath %.c $(sort $(dir $(C_SOURCES))) OBJECTS += $(addprefix $(BUILD_DIR)/,$(notdir $(ASM_SOURCES:.s=.o))) vpath %.s $(sort $(dir $(ASM_SOURCES))) -# 以下是编译命令,命令之前被粉色高亮的@就是静默输出的指令.删除前面的@会将输出显示到命令行. -# 如@$(CC) -c $(CFLAGS) ...... 去掉第一个@即可. $(BUILD_DIR)/%.o: %.c Makefile | $(BUILD_DIR) @$(CC) -c $(CFLAGS) -Wa,-a,-ad,-alms=$(BUILD_DIR)/$(notdir $(<:.c=.lst)) $< -o $@ @@ -324,28 +332,28 @@ $(BUILD_DIR)/%.bin: $(BUILD_DIR)/%.elf | $(BUILD_DIR) $(BIN) $< $@ $(BUILD_DIR): - @mkdir $@ + @mkdir $@ + ####################################### # clean up ####################################### clean: rd /s/q $(BUILD_DIR) -# linux: rm -rf $(BUILD_DIR) -####################################### -# download directl without debugging -####################################### -OPENOCD_FLASH_START = 0x08000000 # 如果切换芯片可能需要修改此值 -download_dap: - openocd -f openocd_dap.cfg -c init -c halt -c "flash write_image erase $(BUILD_DIR)/$(TARGET).bin $(OPENOCD_FLASH_START)" -c reset -c shutdown - -download_jlink: - JFlash -openprj'stm32.jflash' -open'$(BUILD_DIR)/$(TARGET).hex',0x8000000 -auto -startapp -exit ####################################### # dependencies ####################################### -include $(wildcard $(BUILD_DIR)/*.d) + +####################################### +# download directl without debugging +####################################### +download_dap: + openocd -f openocd_dap.cfg -c init -c halt -c "flash write_image erase $(BUILD_DIR)/$(TARGET).bin 0x08000000" -c reset -c shutdown +download_jlink: + JFlash -openprj'stm32.jflash' -open'$(BUILD_DIR)/$(TARGET).hex',0x8000000 -auto -startapp -exit + # *** EOF *** diff --git a/HAL_N_Middlewares/Drivers/CMSIS/DSP/Include/arm_math.h b/Middlewares/ST/ARM/DSP/Inc/arm_math.h similarity index 100% rename from HAL_N_Middlewares/Drivers/CMSIS/DSP/Include/arm_math.h rename to Middlewares/ST/ARM/DSP/Inc/arm_math.h diff --git a/Middlewares/ST/ARM/DSP/Lib/libarm_cortexM4lf_math.a b/Middlewares/ST/ARM/DSP/Lib/libarm_cortexM4lf_math.a new file mode 100644 index 0000000000000000000000000000000000000000..66efc87f62cf9d9ef826342e3463df2d6705da20 GIT binary patch literal 5359640 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
  • 9k^%%7p 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

    -?W-Sgfz&Cu?R<%YUwsHEQro|x?y@(r>Z=#A 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�UgT%yZf!h;IM{wcU!s` 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

    FT;pc5 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%0DP9vaViWz#a^|h!T@~Nzr<7+faVjk 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 z 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

    RpbWCxCRgH8UjT7xh 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

    -7vZf(qbDjPa*LnB)q!v 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∈(zQ*|_@use2C;^Y8tT@Lk#7tv-&Q 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%0Dt{XT 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

    gh5 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.nu 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�w%APk(j7D>y)9g&6zN-%t&d9(Mpw-*jnc*u}y4xEPgDJ z`L^xjo|DOUP%;~>9o})@WMC4T5;ax&_FWJ!3j;o6JUHtPe*4%+9rNr#ctx;#emtWz zyO~`SypAuz$qvLco-g>o5cFz}3O8LTT_@-wjV4{^SRKZ9Y%a^tb|QMh|~(jFCd@GT!OLeQrZGuAt|B zBOpFKJK=C9jVpL26nLMDtQ%Lb-`wFniTDVPyT-DRprPqGFY z*#yp5W>+gy*4Wq{GjJ!N@y)^Q9cC_RJ`%EzhLLzM%<~z+L^dCR*l-%1^tq|fdeNMu zi{$jP5||arHjabj2IJrG!^)lT&^gwkMGY}RO{}mqR#;(#=BOst38F8YNlp*HRf0u} zm}>MZ{0;O}xI%mbJ!@SdxnU85@?Kgw5F9bv)1{m+uLSUGyB{(v%{t@F{E#Z#Usk7kK@Z7SRp8MfAs8$C1XEjiG zB%;75qwp3Shs#QO_8DP$Y6Cr=!`aphA`e~QSj+tl^i;V*d;>kaGe<~r13i4I10l76 zo-iCn7>eGoel_MX<$71QeRYufjt!Lg`bNaN-P3Vay}>IoYbHTwIw?k|X^0V)#tJKp zkZ0!GM1uRKNlwo&qd%RPVf5$w8|dL11+X08jNsvG1Rx|g+zAhF(_zn*_{iut99lt- zD`4cs2sN?7(pX`I5ehK{G4hBRW?CXSJ+q8{CUL&eW8~4Z(G}tw==r@XBsV++&m(Xc zB!m_T)Cz)@>>pOftOJKuc+(xd{KLwadA?;e2Bsd2IsZA-yk{X?<_cT=Jas#qKxRI zT;)zmTF!H`YwcH#4y%CKbjl;Z8~Veg<9izCVe zbVM$4-D{SeQ2VT24J{EN3l27a2`)_7&Bp`h8}Agtz0BC~=}LO&5QVD^#|ASYxun?E zncjjzHT{zn#cLSqIcYgX>FH3KO3vjC|=g-Wwp^ z3>UCgSp}UM=-mm2Ga-^qw3!6k*s)gFX4xMAfhl^oZlHG}95!KMG8`@qY_kh2boB%; z^a9wE^7A6sd_F6`!Rr8Am+-W>tmF1E+Wz^G_D2k_`B6D<35Rzd((tWTXy*4;(!;eG z`bz<>zsS#9by*_&jQxe^Z>^xG8yuG7w^ju6vl=LH2}OTQ2Y4NW3E^GAFg<&351bl| zUUnv`N3cIl&h(5mT{wkc9~(VA=fJ7;=&gc7c?91cgiBl7ERE}3J;95WfK|iR^R8Q1 z7Y>d?Ce}>iOXHn}elrK!MMDMG4)RmytrghHZh**L7+!A==0J-!^f|MTg7cp0n7!)3 z)m-)17HGQHR2s@45}E07O0zMjix*G`jkh)n3yf!&_DdF}c`&Yv5c3<_?AJaJDs_;F1yv^Gc7T zR@pI_1^*g2Og(~^eOLhrwh`)pD+-(+&l*v9s?0RDu@UXK2iti)98QVgh%xuIRaO>T zopQY!OlVKIW%WK3@u4Yg3c+Czo6H*)$kpo!(@<>rL^$XPj*{49-l##a*C-|#N4%zqx`Lj6!Qm;NpDR+>EJKrs8OD1C;Vw>R5xix?Vo%&>yi`Y4pGL82Pg4dU*#-7O2C{&!=1JB1hL)$*?IkEO;4PApmj6jcD(P_k; zrtm2Q|8;~Y_pPGGt>3g0*Duel)Q7N;=GG9)gxA1mDKwS(;JEcd1G61R!@;{YQs95k zAm(3VR^%BWlAyMcBiasB;Q`DEdN{hDoZ;PmqwT}UZLX=y8N^cKokCn}yk`=0XrFy6 z>4|B#r%aUT#6IIahu9BiV$;KyC}Ok|S!gaS4}_ZV>zF1yD{?|V_vj|_e)RrBa2V|b zN3SU-W*F~-j^C*{&^V2IX5T=%M3d z^5YynbNKlX=WO4~D*k^WmSW;iI#>Us;mwA~2a?w#UiRWX^!n_FS}xJ)2`V6|}#VD6FW=g3Bo zw=}px{j%-qA=rhA0i0xxR=+d1xaRkNFORQHSOGKAoShb|snVi6?0O$#QC{}sD`-!?ne53|(4Ks=kZVuAA_NbE z@cB#j|?R(iH448UZe(Y)s4#HrC{KTQ$eECO@%7pc%4Cf)#TZR|a5K z9&}(g`Z&hqomcFL_1dO2v@eZTNiTJ2%aRH-~nNQS+WKV_Zrb#-5@} zcA#frVW26E7_*spHna{6gTAm=43oq>o;~$m6kEnd>1GDA z-Okl@W_UYS)lD|o$5LnPwaaL`G0GlHp?ZLu48z+^1N+TXk9F1E=#Pd~8%yHsMH5h< z%AJokWkgsLH~L^^Brh*_&n|rPkTgs36bB~3O(Jt*9hptXW3w%C6+zh1Q|by+NhiS| zhl$$pBS(3j7p;(cs^+|VFp9CYY>I(paVmnQV7Fl?H+S=JTSs-{2r(Jay0zOTP2Hw& zYXH0EOzNZ=xK*K|W3)adRgo)4&(~C`52G5NQ>}LDWU^BkXd$E9x zIr;^I4~aVly20SQ$tBnk(<0a$Cy^EC)|sk&g!Y2iD<^AUXkZ|9u4jQhfth*McpP7po>iHPv-K1Kchwz-vrf5t)v}!Lzr{tR18Ie)VUM{AcEvk5hpjy97|xY2^_~WS z%Vp2>^vH6V?plIhi?~=O*V@l%KPn6)4ZGb*pN?e`mcf&pMP|dB{~Wf$q+n_wr7Peh zj&6>MbfH!Hfq|awW_Am7=@sZ1n$g2BZ^nR*T+DmAjfh3R+Rnq_v^IGyDU3C8-;)b& zmpoW04{#g6?txMxI|EJLcflFRf;wAE!^| z&FmlOoC6ufEiMdn#?~K5VM=f3&nsk8XVk>({5kFhk0gt77?T^_Qf_<-C=8^`#-&Bf z&VN+sTrc21-us7g?>{ZF_ZLxo3fq_6*}dX&Hms06d$Tfdlb1bvjMh+K5azzw_>XHO zKFRsc7lMg+p7t%iP@ePZ%8>JsZLH02gW-5un@^?G;ke1;o!2oolbv^Am>$;UuXe4= z`}hz)VtMy}oMrhK)71Y1jm-b|SeN&#%KtZ-llKhC|LkQc-tE%AX<{Bf_3PV*ri*EX zn?~ao_wDV8|JQUp447B{*G$L%&odV9-fvH-tgR|7>lt3Ku%@hPLB+f|r`R6L)ohf;qxKLa!UMOB8ZW4Eh zw~G&nkBKjfZ;F2tzYvXWKa`(_hGKpB%Pul3o-WQ7mx}zd593`eZWA9ApB4F!e8x-U ze-6M5v9oxx$ZrfYe2O?*Tr92;`9=c9YY^`c`OhutcZu(bKZ;3sM9uKlVpp-hI8Uq* z`O`ecH@4?M{``_MfALEin{Z$#n*LHw;~Y&IeOiEPL}rFbuke-nQc6YvW#AI3t8m`36pGf3py zQF3RoyY!w7`2o@!TTF;QTJm^tisGLmdA2xD`YOriix)_LspKofYoxE2e7$(1^mj_W zSA0PFCnOu2OgOI>q<=&Dcfm_dzw@QDLKIBjV%I?~=Snd|mqe;%Cwu z+fAtdx6<={i>5uqL=vur5Z)>q&K#jz(R!=i4(*r;%srQXlykhow3yfUM~HW zB6`S-Uo4x3sHS16m?@h7e`B0?lH66y7f%-X1t`u3vrmKkb_nHSajtl-SR*bK`O^i) zzev16yji?MyhnUctEAJ2v_zjjI)|CTi5uMa4< z6V3h)`Bce6L~}g={W!^!#2Ml_;ym#@k-t-5{^oiCyh5_MZh(A)k5#+9H;!b_)qbO$X}5&JX7o-b`tYMenFk_JR81)BwsCV6zfI4AcyhI^#^#5 zWPTrr`ag@$iZ6)#nh3+q^$GZQ$p=L9Jr(G`m29qGAoC|GOqVD&5nG6@#A9vw=1QM0 z4iE>5zhuj|MDfbRh2kRdSX;gqOMkiO+3?*g`3CW3(X-+E2g&>fl4(Ej8S#1XZE>&o zk@$)DmB?3LF`u7A{_LJ|x|kt`M1J{(;e4F{`LOtu_?-B%__}DW*ASmyF=M)e;um70 zXs+WB?!Yl#oR}&$7u$&K#V%qG@nrE7aflce$BC1~8R9u&nYci#63-XS+t1*?Q1TVx z)#7#HHt`1WX7LX39`ToK`M#)luZVApd&Q5$PsC$w`^NJ+6Jg1sxo(BrN^(b$-%4k^ zT#;`DqdY(yD2@=vh*L#=bDi-^#4@o~Tqdp)uM&SP{zkk-yj}dG_$ToR@fne?0AjhX zitma0M84{V;hs%jzKVvjXVdp5$quiZp-&c5#a5zc)3>waZeqUZ+4LPKnLkEieq%(> zrtfsgGsQA-fmkK-cS=mZQsg_UC|@C7Ep8UKist?R@otuUm&jL7F+G23NbVG$6<-iv z6WMfzBK{=u-6E!*;udkc_*?N-@m}$M@t17(zO8tB#b2`B`-9@)>x!mc z38H7ax25FPVzzja_)E5X`7$7$?`ZKqYrA*3(s?#~FOj@X+$dfvHi$QhzZdTm9}piF zpAw%FUlv~%-xv3b2gJ|BZ$-W#i0A3>J_w8xJsZB6k~@iA#sA&5dzUC*bDxKL9BaGx z8im)1|5@9;k1O5N;)|kZ!}nduABZ1|pNf2M4%_ED(Z~BE$U*U_`$p(nOW#iHBz6@G zM05X$_?`{lq0)~PCyKMgIbylESX?Wb`$gpE+2sAB^pA);#lMKV#n;5Q#1F*3iJyp{ zi{FUfi9X&Ju|32TF->eOwi7#vo-N-3$$iB^;!ts{I8o#~j9A`<;x(dYn|Hh99pdlA z+r;}sb6<#j9+Ui}_`LX{_@?--XzmY@j^7VvJ-!gX5*^-`LGRi0O_khSJl2+Pf%JVv zzK@CNtHle%)#9b%72*bQv$$Q{A>Jz9A>JoGDDD)W5?>Hs5&mKOGJ1+iDH`ALTo2?6uXMK;>qGEVv#sZJk}QQ>C$^Pfjt|&4@v*D_!n`H_?q~x z_<{Jb_^J3$@rdZd3q*N-LD93(n=aY2(c4aPS20&SSv*B75{HRn#0laV;#uNsajsY{ zE*6)HE5u90b>ez)lekT65Pv7$Cf+ALC_XLzMcgC4CcZ0vApS!Td}j)O*~mVMJy6M8^GfvPZFn#GsSu0d1AG=L|i4V6+N53cS!bZ{yr%A zG4V<91@R^E4e=duzxa{(h4__7gBENbzv$TnZYnub%o4N3lf>R)KauZlV}56gb41Su zaINHJ;$`Bm#Es&$;*H|(#6OCE5_gJEi7$(@4;c`-#We z2A&}O6p`Ul6Tg5xXV{HR} zEd8hASE6S#_+OHJ&E5JXiA}`}v5nYK>@4Pr`C@;uP#h|b5XXy?#WTgT#W~`9u~MuS zmy4^!OT={|Uqi@tzE6Ba+$sJ=+$|n!oA|HN|6Tl4JS2W6{wU%{7N$JUHgQwQcq51r;Ej6sd%g{<67yLiEG4*#b1fnhWF+sHZ6cM*Gvy~P3IKyidPMw~33E*@)J`CREM zM80d1_1h-iAl@wACH_HtNc^+-toVZXiui`OSNyB^iTJtb*<}7sGRz8@`uN2ZF->eO zwi8bhyNi5LCeLS*I9;469&5{ak@Pj<1>$P)Qt=A0PP|UsA>Jh3F5WGAHlSaX{Eqm( z_z&@*_@(%*_><`1A16GoM6rq3Qfw`D5Ic!{B`DL47AK3Ri)V`^;sUW;tPz)re4i-u zyGy)Zd`Ns;d|KQk?h)S<-xc?ZABmrdhs8$m2hnNemLDfJ5u1rwVn{qm>@M~bPZfuV zVG)n({zKc3-v1@A-2Lyi4H)^hON_0)1r>8EJ$rutzp)V525p0X|CsOW07uzKql|y8 zn4<$e84v#=Fh?KJ1H*Wn1c%3LzZkCv;v8FU78B~gzXHrL5uaY(R7^yijkrJb4lish z6nHFU6)9lHNcU|vSlaRC68;X@t=CM@O9QX99})PzNbm5%DxmQE4CCCLfpO;@Uf8)% z#Fje}72eqz|I>w@r{k5&ADeq=;I$UzTULl39bVWn$g%mwpNIcHLdX2@7%7t9dicFG z@LKDUALDt47j`8SvH4}j>(?vh zd~ul^so$&cV=ONM%#k|c=&{c-d5|%~!y1NoAt*#G2E^oZC8?0tOufG79udrDsu{g>?nKKQmN@Mrb`uerNP z*aw?Ut?mgP{%L@7Fwx&W9IQ(^XgfC!$^3O-J>J9e$rEbl46~_+$)TcjP~af9M^w68zT|eRak~Q-)h# z)~#{2#1ET3EUR_SCm&Wjd5PhKI_t}8F0#57eYJH>!eP8(bc28Ely-54eaT6OeL<_M zb!f;%*478U!!yh8Fzjyv6{V--l?%o$m(9U_bls=@o{yqaTO2iX#b14_W+ElO5gwQojWth zkPt!wh=>q+O(29WLTC{X5CRA)8bS(*k_3`aR0Kp+Tv0(-ML>fc*M^FUE-JFv8`!(7 zf}rTGhy?}p|2*eDcjhMO?tb_C`?rBJpYy)wJ-ytTIlHmn)P|1^TPp_c?3Xhtr)!SY zCb?wSVQWL$k!D%rO0d`8J@Gx_`%$t79NhKHf#H>L2e!vW4m=ZT@{JQ{yz^m{=uza2 zGG*EQ>q8Dewp_V$2r|nMXx{pWot1bn5cnW<$ncEAfs?{$p&2OWD;GZ;zdC2zt}Z!a za^BkKti9y`+t0an%0B0Y+2jC5x?;ue*U$Sy(;_L z(2~g7)$#SPi{GnDmSGpa>`Ldr_Q2n)U{-L&ZtRT^Ie;If?ty)@4ySFxE?kRk>{a&4 z;hq~3R;H@-im4r`ec;a+V)>znRN z0&D86TY_EN96NqZ=vq5#`+*?~tOG+6-nLF{vGHJh;FT}p{}g}V<;1v^kpshm*XFFr z3Edc69d|Guzs_Q{>5hHl9ylDo`{iXRN0PF-9}Ytb?oK%pgg-dC`{6*>M$nI5W}l2b z5iRO(J{WI*wkz(2;QGgpzxjd3&f1DLOU4MhbRc2tF6?3Wr|`Of*-On@oA>3~#K3`}an?7VU+iE{wd_M{7vGT+ zcVKkbSKxX; z*++Negbxf&oS4%(XXXRh*c-A9_V&#DDR5Tzp91H%I}+F0KIz9@Lk_*xBhb5;v$6}z zx__6I*1+t%X0MA|i}Al9b=VC#v03)i4`c4L*2S+H_xT>KDcM$+LEoKpU*upA>(;6k zeNRj{=-AjS_M7h(TQ^~4$bRG}E6r+$GUf(vY?Slx1CKz56=Gc5Bcay88}0N)If*;5 zLQH++r(ia9ucyw)xeKE^DQ9WU9eekr!f*13+-I*pvxS9KF?cW#8QYxe;#-TYnoU1h zOs~7uuFa9)1iN4JoWVPpFX}iI>1ElSn&X`YpHXrH}qPiphUR_8(A-FL6Ms!wQv6)OKthQL8hu8y?vCAsfPip|ybFAg9?Tq9cuBbt1g4Co<&)Jr`6|IA_ zkDTLjj@!Ept%IW*df=8(+e z1lI7@Zri+`T5s|GJ{fyH-PH!^dq?MV`Mi~Bi;nlU#(s!_lj2NVyZwcTZJF4|Bh|!%LBtM5 z0`2WqHTxPaPTm_|bNAkXIoE&guKNi&fkEr{a3{ZeKTl}sovQ@xhjG%9cpOf+cAz!3 z`Oi2YV;{c)1YrxhyKxQWyoi&hV4tQ#84?Ixg41Q}>9-ID4&TTNj%mt2)WDv8S0TjV z%NN1Zj^~LJ_UaoC3H$g}A_eT@_cG32V*B__hlz7HRH3xgKJ;G#<51Vs@$`?TzI&rW zCKDf=#*}B`D_mh@l{FTNZHyfex(S7{lw2xn76eUjk_`QY{ zL{)Z*&w;}@rW{P+fY+%fz3y@lp=_wlPic%+GGoa7!zwrNEB z_$@=Cky`usMPmE-@xAd#Y#+bBq12JsK7NOhPNdd8evyB>k6#W_Y#Y%&ev_GZY#+b* zOfR;NA9wDF#P;!fA9abu_VJs{vc&fB`+{O@A3y%~W+b+c-!x`admq2ZG5h#Mw2vS6 zp^C)z@w<|3;M>QKJ6=V6`}loI`CskhcOi8_ zB-ZEab&%&fu?c>L-oFcJ({9a%oWBd5=Ewe~$ zAHO?Uqu4%v?=z$SY9BxTRYk{OWSaKzyMpQZ_VJs@#_;XqcZA`-ef;?AkdUMM_?^p2 z`1bM3r0m%8GZZs-AdWFk6%;DzJ2^SuOj|^{P@>A5&u4Zd#Ld5YB zj@{(#Z6BmRB-DiMzJu?@(w#b+p$ zyCGjaZy&!yuwRsRCmP*KgR|_kB=m^(@vB#NA3yv~io1{B3fi{hpXDuTc{4g_VauzK zkGGE>|LpF+;??Y;cYMK$dHDR;x@7P!@LZQ9Z9BxA=@&0nY+i!XbCvFit2H@G&} zqa60hW-q_RkQY!lpSpp@jss-_bs?rV$msY}|2yE?{(>)iu-R$vD|q))$Dhg6{(jBi zO@wPZfV!b(FTYRVy$H_TeQ#KUPjM^wTO`dl&f8YgZdfDgCSyPjhiiMj(KVy)Ey#bP zj+XYGo`vty%cWtuZ{QCudiRbVy!?g{w zMcw@Zf51bR4RB_wyb-3rnRq_!Iv#?yOB<~3a2-E~@H0I7DZB^a$F@if zt`nnlwosmHJK)b7;qaiPJq+AU2M$BD-)q_y_uo7AgLZI7yc-JFi2@2l+3)o|i_sEbG#dsLjK-x8_W-KZU_=Mq_{}_EAVb zyU|$e3=?gNiPo3ff}3JDMC&ww>%;(4>@Ji{n{{QeyF-s3&c=676SYABqq6APFd7JF zsxS$j2^3g`bKxn0OZTE>uo@^nyKxkg!5#zn{;I)kOpM)lG0ZQ5>%wj{-FG*n8n{k0 z&0zOo^_YmzY|Of_wUG(*w39w$3NxT?&>8Iu*NGvWtD$KNsWqJ9UpG2c8Rw@2H_BbYMV zc>t{XGd^t?YT9f(G^fSlQ}3A2a>hT+PG084FNReiKzk0mnl!OQwHG4mT9xk zVYLU&qbene?qDLfAdx5F`6~sc_&Pj0;nEqK@w^l{E+{+Zdl^&Ax09za zMUIPoh_jdRXv0v`ufIZb6i(xcddGw=XZ%7td4m@}H670c;nHctP!qp1G#%m8dsj1- z*_`)U`bzASZ@n4~g4M~iW{oDolS_d$DurhTTsmVjo>wEbI%UUvU&j>Bvr~rQz-!uQ zA>u4xB1~}=JS!3R;($BTyMXYZaZ?&ELofj`91LGI26GKeA zPLMjlsZE(*vMJ3L`0O=yN)Db!n-&-ZtCQi}Hiajbf@xEDX27L0Hsg6Mz&54qnD4Dj z@di6(jhEs=#96>ZOq;^9l7eYdc)ruI5K zJ1H==eemps>%=(zl(w6c(wNdZJEbe0M4Oua0^1{u%#>2Pp+(?KN*&;72iJ*lyp(ua z{37I_)t4##&5q1wO7B2@GHg#`V~AOqobE7zLp-)Vjwk;5Skg;UA7|Fq-IkfK1-H7o&3ekLrYFdpZHDS0)dN;e)$-o(Uvo+T&> z^xf%|{0dlH&Ug$lCBGHY%_g2%0h=OTz~Z<075t(=gVs2wH9fusR*%4$9)AU%mnd-T zd4CItvn!-MH_%`vQ{(x|Pq6=<3Gn=-O(xm|&YZ`rgy&MYPPeoQ{y`EJ?sy`rF)@f-q!1ZTc>bnORh7F z35yfqIx)n=>j|lciD&XK*gF zp7H-;rz~WAp3lsMRW+Px(<|Y*f&$xg13Wjur873;nbGkuG!MaPC8FLjp&OX;-FC{m zUdk`R>UlVm@+a_oM1d)P2hX=~>5R>ICgn&LhB}-^F!k6}fNgb;ozfYv7@6|6fJJjS zlWG<`nG~4n2zYYfIx&t(@f=7~;Z)W;Op5&e3!HtgowC$RwF*|V;Y_N_;JJ(fQ@s(M zb#UokJd^T+&}@QJzjC*cfHi_;ebjEam8o(}JO_(s;5sqH^vlPPJ~Z*nSl@(rNC@AX zS)#w%DM@%g&D8TdSbYm;N)+jdrhzjhY5`AkxO6X`#(H;-b*AH(?=4JmtDQ29DRR7L zAx%=%-N}NyT z5AUt{OzC1fxhJl3O}ih2?LTSH5Yz7AURV<0FcR2Gd;sWvzsfpYYNuSrxNN0Xuxbfs zTB$cYJt?r2PK9SATsmVjp4UoDk+NgH%_c&ZVIFuXPD7k?m3zl8yu${;oA3f*h&$OJM z?Fa?j0{bV>i)T>IUc0$XrPCgnxCwmjCg8@|uQ zXU%qVt)H_Kn75nu3!e32v_#;QxR&4KrqSGFal8sEv6<>B z@dST-th~&T>7LlrZ3C0;phPxW3;b$-(!c~ZB}%IJEjz-ld40=DGal5s6?S5%W7Ims z9+c>H4r|oVPO-DY*AFpSwF&u}I}m=98z#0@_NFtXYX@Dl*`#alw_`CnoM>mJ=Gt3^ zgeHZjB%F~j*|ZXVN+dH?Q932q`~|npJ!2|N3jWbl*JxapFBUsJ0b?%(13H6oa8Qie znLI*n9^Io_#g;xZs`spM@{@t4bQ`flVwx#pmRi9yI3}VhE3ub9!pKxN3huz029Zr4 zwS~mKb)#@5;)5xTqxnUKXb1Y+lC8NiSQqU!p7szJK=RhR34qb>d~hVfYB`P=V!Ts{ zClM)V9kR#O(6=29HiVnn%FT;l^ameIW>}9W+!RkI)}RBhW!9EO^ze>65+u@0xuIuS znVB)7hgo48sbg~)W-`bnymIE6a=I~ckBvbMRzD;+fpCj8nNao{{n>9^6w7`xY-)Yn zrd?@yO&hRQ)(WQ}o1o8z-B#-(n|PlM*1FioD;)cpHY^hTu@4Sd(GRUV2TbE_Ui2|S zmLWsOn!m7yKl9^O5&{#N<+kzWMciJLZv>#hH!q@xzg%eI(8K&ph?j?h{m6LXX4&jK z?k)=p6iFXy-H+>&Os$E=*o^1KHVGjl77JlGGd256vPoCK|1Dg^y3opOyArP=)lfVP zmk?F83Dnd>2KNn28VlI3v1}%NQ0hu(0C^ikHf{AB)EAcrRU+o)*Q1PB(I;p zG7WitVhufEo<~?`YyqBxbFA|NHS}hx42&7c{pQF4;@U1S3P}Oi~|1jjxnOACmc2&C3?ffib-h%oWGcq z$JWvXYbfW|(uHd%pHoX0tf4#|4msDWp{K+Zf@Z(mbQ1<=96H1JuIvN^N%a0pg+h+n8=9>txk4kG1wgZk^ zjgs%v)*4T6I>1YOXS}(b3w$a>V?NX|4_K@T#4tE4e*8_`V%JN|b-jeVE8yjPVG=_y zp2xz`Px1%OkOucu4)0v!9ZzuITpE+hj5?QC?|O-wT<>3iM_e!QF&yKOUm5iT;#b#8gw61t zz#rbqfTJm^+8M548;<=o=%XFQUNJmPVQ|BKWZBj$s@-_XG2Fyp^$EOUI| z#K@$1tYl3hmcU_<5nGIR67jC@)7!AnMHiH}{cmphIkUhc5?z1(@T z5r=)kJY}$Q3Er@UmU!RwGWQK8@zV)j%fo;$7rEBygqwTx9D>Ii_aBXaFZW85_+*0j z;<2wMvEB6&uex65&YLbUAhx<*!dwtrlLmC7a|-vaPcS^K8nRNbr#n_H>W0p=To; zjyMD#d*Fr1Rd<>n?-u6D_l@RPl+omsG*0y z4-T`1HS{ciLw3Y+S3kdoo~w;Mm$=F3D+4w3+~*3x8hSRnLb!$=o*2bj^YCYat=oia zwnO465sLOPU{3k0$%N}2Pc(tUX7Irpdfa2ic%la!_LwDxz&X}}Kn*>)t`MxD=NwlE z*Ob7+d4Q~l`;2!Su>%e@4cE}~ywOkOWcbv0Clg1F_jJNC2Y~Se4>~B=!kXC8XFSiy zS{RelM*}>kV#kvU;Ji^u|B9#_tfBw5s2r}Lp9dty-2}cUKe-#uONV~GOXSMI8v5gL zAn-;v{XBIhaoQ=`gz{y%HbOC9FpnqywN?9U1XKR z&m$T2u|wHK=8(oSHddVEDI11?cjiWO?}O%ZS0G$}n7cacaIR$d@Y@8UfiSx~I}_vz z7#_S6|4&TZp4=UCtIP z^ety7(|rix3WhRWP~)vw<{FrNMTaRuG=;+~T2MoeyJn5!LPdvGB-}Nta-na{s$5{! ztTPdccSJ6Tu307ru3BqM^r<@l_i#PcTd0f)mn!!naSE5JAV)LG!!-d8)5HENkF#FC`a*&84J! z^@w)hDK^(3MD~`WTK7@>WyCD?f3y@qWqgbs%i6-|vc}|U zFKS$zP}^}NTR+ZPdD|kMhEi~wdya>hW&J*`1T`%K4Y2xNG?z^tn zM8KDA)yHk1b78u~m{0P~=L1-(xz;ldx-MoP=fs7>I1ws`y?eQPx-X7-tAeMrh;Pnt z86W=O^B{*>9B%oo+=`P1FU0_ow|Qwth54R_lzHeyxAUNTlk4>|!R5zlq~o4FPb4;( zWUH-uzx~#%h63}9SQpG)9WW|pO^28SpEt)@GN-^|!TbW5dj-RoH52G4ItDEeTRozU zf#R~jjuS)?&BdrlKTptTz{vE#{gIW)(ZqM{Oqy;SqjgiMt2MFA7uT8{aJc)uX%RiU z;cz8K?12mMHfu%=z2CwGtjy@GY2HDphm?8Vh5H|bdlPOV(Hjoeev4}883uLotcKpxO-L>=1r8?;i)!d`Z`|b)ydDi%l`MvLY06^o?%j28$eLJVyc2jn=H5*> zhgi#YvlcF@q31R@++H4w7Ut^+h)67EgIja#nlm5+3YBsdj<-ez!&LGo@r zWAL;o8xApuu|}O~?!)s(@lD&%<6f3!)+~gdXGKisI*{i<^kXuZ4+oeN#IV7!AAW>! zRjTztco2?u3^&sqlav44k9S>!%x!Z)6oy@p|G5VBDKwu5&eg5&)N-o)TAM=l%D=grNScSqZqAEV41akh2l9}hhD zp20+(1Z2bEyvsZ8n=$1b`J=U_f3E6}YItWfp?2N5@jdwn5YReww zNiTYo@b{>D@{7^#o&2)ryz^Z8S0IAdqp|b7?lt#8&tq=1MZ5#B$X`)5Cr@Q4ilf?f*!`A zJsZ#a=;yj<4xI70*ru=v4z|SW{xAw@XzX}vWiY&w*6hx{aM9=#*s(DaN~}ZFgaT)C z%!CprU(|#`4>%NpVE1_irk|(aQCshPJeC|!qu5eW6AJ8|n2Fa{UaDvX{|AHFT{2+S!e=J$!Wk2Kc>4)a*{EziZ;5j!L@tpH2Mb~doXM0P z_hN8D?7VaWX9m|hRufnPXY!%Py)s1Y=;5@15pf-yIcn3xsbtcpXCoZ)CD=zMC9iAH zdT258K|}q)=W6J=G-5({DbD z$W;U}y~PA+vjsWzX~CjCZY(AcJo~1)Zds8RKDlsw@WSTjB)bWYesTj`80RmuFeB;b z@Id3uM5$)MnUf@X7Q>-9EUkMT8(Ri&3dr+Co~`@7rLk<@INPq=c?0czIJEE{fG2J6 z7NhEO;aDc#7FhNhKSu3a(O6AoKss&PcwS+1l zl~-9`T3)4nX?c~8ppz8QYXhjf9KE)H%F7W&G9Pp)T9F+a^~L0vuC_%?@3Up)x5CxK zeciCiLYe)GjwI;(!R+$4;Sw38jaPGO+<`ETO~n<;H3%wIYTV(GOVHIeU~|rb^XEmG z0|~uN(D{Se+>7CA7lj&k#7$)5uZbFXMWMzWhZETqZ^HRgrOdI3K}gW~gV|Mk;A&?| zjXQ`Zvg3Y;8hDvf!_!l=Du?#faQ;*&bGW0X1f4&aGvFq;+L==0&WmxJ7n`C6UZ&LW z1Qr*l1YPY$=N$S5&Yu@$&MOp!pz{ZFs^NH8rzq686L1_SU`o`$D+)F4T#T;8$l+i7 z^Tr+;i~~!nj5l_CBLZG_w-y<8tlPP{UhknJ*)>{Y*a>b&Oz>J7DXQ!A%IsZt`-;y1&y9j-EL;Tdm1%LI=w928XFA+>5~1GO zMA1!pJd-YWL%o4XaV{MC*sD(1&JMVDxNvX6Q(AUTR2dz@j#2V{mbrw8*-}O4OVtT@ zk8kR>sTG(8Q#xN41Z^q`jWYUjlwTQbKHpy~$4+$c7n{-OzT#5p-g=9^x#1W~R~b#y zF*&=+XuDW86?K%3QS!zdPA6gwK!vM}7T&R`;O#h^g#@D4w3ba39j@fO1blx{9J>kb z7|Tjy87rwz8O_SFY2{i*@1f&d5z4tHdTe4COIPVjGiDhrl7+t_`<>`i^6uX;ooahe z<$Rs$*fe$TVETF`ri>LK_UFY`v|5hMsF%U{$CXd%iypI#*1)kDbr~EwAn5A=s_3xR zMmxZ!g12X38}`{!MdvGl@6UW=on_ls!|GaN87-Dy8Otj6H@&gd!@&;>dNHqiKetO5O?fK9TyKsd+%W%&sF-OdrE&*9b@*QiSL^h zjO!|W@ja!#_CaIzF3gj$A`fcMTiJ8L?6$3=tw~YOkK4o;|@VLuI>tl`W1n*|B zulPJJdX5j``@=uq8z@N%Q*<~EMG<+!2VQJ$ik+c@TSx*O^px@uYi(|Xlkt+RJh96xQ~k| zed~s&^bd`QO)Z~C)mk?!n<_eAUXD?&H%i|UPb*g$D?sdTcw;NHWz)*Fj8@9`H@Uup zsj=K(GK!_?Q$|OGWz)*Fj4ee*afgZSTVQDADt&2sN`ISJHqGkBH;TWQM189ctz4xq z(U{WrM2l8+q6fnFK}mJ*B_$fiNF1()mtKLQ$o; z-RXb!={}5n)!0Xes%5_jg{zF_=U4hhC9PgJ(PP8Pjwz$j9iP(I){OeLiS8SKF{Lkh zOzDfxs2`f>zQ&3vebGJTF)d)5M_=){c&xKv9Ywl9sBxdhTZ$;s5-M-~i4Ho%XAH{( z&-Ru|if)YA-umdpXbumKeE2Y$`{7?>d7lU2q1y_#9gg>Byn8gfXx=0D5Aa(!-e>Xd zweW@tZ=%pGh2u3e@0ob_O?V;ATO{6X5?)dB{s-NDI9^iob_dw@kUI9_4%P6gd&I9_J+76hGl+ky8N=z_Z7=IsQ!CUCs+_CDSPG}!{q`*?clTK|ro zI$jHVANsv3;0&MMuj7TR_u=IyT`nB2IeEcJHyw^wnY_fLtAyiqrT583C(;dpf9($(N_A_d9y(l6-ply)&OCKD}Sp)Ti$OKb?23!9%}yvN0C^TsiN2!YeP2 z!*o0%-2&%*D0?~{SiH}D@Y8X*eA1_72{o>p0cO=(5F8NKb^NYc=?k4 z`TR~J9=;}_6sj!CE2t=+n>Q=J zvbr>XW}ds5R%Wk^0vtrFg0ia8syvh|ql61Qt;_POOCaHCZC+tfasHf{)p^zD&nl{d z4kIV8s=BbWycz!0c?65sxRH&%8ZZ`?v@&gq^5?PRD8ihZ{tvE*baq_Nm?k3UkM1|yIw{pK5S13C1!@=Pobh| zT59M_7|v-GI*^2s9*EE`sQ{TjLl5K`Ij((+@L=tQ_HJBftF(6dm zi3|uu!mEOTP)lcZk{xmyH456H24QFaY#U0)S(7v+d~z7CUcz?YY#YXHLiNMW1@w*i z*U`Eu+Md~VX03RczZ-9W^2-Rj5hG#eOJo?=B-8?>ZI~8{3umS_ZX607-zb!T+ps85 zy|hq*Gj0?@oK6{yo4~C8D5}n9rJRJcpc88D9JNuc#*I=NA-H+CndfI2!p?3q2`z zF=x$M%`8BTeclaiL^v}bH* zo0Snd5y{1~Wk-j)z+0bFb6n$43Ja4KNYii763w8ohCO-!F(>-IUuep1-kyO0CHan{*s;qGQ+!}<%OZ0@XZEu;D` zUE{E`nr|&5lW!Jggp!=wRte>9O|5lz+`43|F_o-SOovHKuR&{s-l|!B?M8|CN2jB)P82 zv|~mn(TQ+f>)*&M6d2@wWUvzWhM(zy3%pT@0tG$dCOEYIl*g3`3_Nc8L zVK?S*aUN!I8Z~m4S6Dyi7S-8YNB_L^54n0S?mt)AT-q;7v~_er^cQ6IU@bFaRthYu_uDs_wQ4{pp{J8Fz$qU9i)PhRu$Iin zfg7>UE@ zFr3LehLQNE=L2SpINKJc)tb-kOn*e@ z^JKSyTN`b3KA-7oTh_Kc+pOl!t#zjDdzz28)X~2${msYDQ*Vx;8Xw4NL!H=@v?mT7<~sk%4jn&GZ28NXXI z)~ovenR@*<4T8a-ig86j#ad*zb!)>*wP@X(w*wjGaE9JZst&d4HwvAd*#HI&+VpD^ z^TT%*(ust7m=(%9sFaw)&7V=nS!?Z{mW^Mz}VIM|7OVlA0Ha14=&;!!ZqR`c$0bM_PZB^ z2t*HKrCX8_}Fd)yXWw zOViDbagbWPgB?S$KHe9|aQ0x09POOO6PHXJDV=*3@s5(S7x!}Nh3x>IHQRZ4#f7*V zSC%)wVpdVPl~+-oS2Vx0IxoL+MwK-|swxYHjAk-br8CNLcWwHdVrx!0g`&bV+$Xd0W==1z zD!l;a#WVAfLtY-VSv~R)QdC)4UJ=W3!la=?hfkPb6_gYeoM+{gP4}`v87NlHEGk#l zL;FviR8>@2HML-7ep!BH_sprq6_w{@O&vOB!pI4Ey9DVh(aHo>fuB5)|Wp?H}GCv~b_B;=EFnd`RgGQA91jREe@{t)$%1Y5xrDe0`R2JpUs;=}^e&m_M^Tv#vfW{v> z!pbWznqOUPA@$7OEN5kYc_A8GxhnU(^Kk#Md`6o2s@>-KRk#^lR%Ci3FRvWt0*q6Dyp{d>#uWA{i3p>${9uF1?O9{PDATO z$H>It6DH>63?4apQZABb^{R>rT+jKYm2hhswJk5S@(T*O^DC2IJ@}R7*3ooxWp%~8 zf+}^bZ^V^i#O1kVIA!dlw4s@O(##EGb2~hC@3t z1tn>fMRQB5a5p}!NAEt}`}90JExoK@)|`_IDk`gs=BJnSgj`)Rr))Y{41MvexjoaX zW~CQq_NIp2m5y8MCzs?`7DAC3thDsv z@{07T>dMjr#F|-}Uxmj3P!{WnKsp-5JQ;wlFuywAFBi{B$Gz$5%KU=rlhNi@-mG4} zIXHUw*i$eShv(*=mdm+Ug@(ec@TOnc^w@+bKvCV6FEcHV37E$Mn0dqI^&(;7VzPI) zW=*I>M_^9k4mNun$(Nw7DyCOi)2W+)DVrJd_K11Wa|JUisxU6{stQYSFT51d%}sGD zZ$^GuS-x2c;N#jbm}^69l)AHM!kE#6hfT5arlaRj1l%H@Sz3ie$~dL+@+OVOs0Ou6 zRn0BM^q*H?D(_W;PfcJFoggSuQGWTHSzfffxmX=A0L=K}YK1zwlaUqAw94m{jjKRx zPEw59(yBrfVAlA|UZ!CNo9`jM)h{;a2j`wLY0U7k6TNOJ(K6;vZ{%odTUap%y<_E# zK5gi!c@t6m%2KYFZtGiBB^Zcibu`9o6=R^47UMoT$0m#%d&;EIgLCmvL2F7Ch6&eK zJe|O3Liy2i)6w)ZE2d-p^{p+YMCTWofuXi6Eh<7O(7*XJW9!45@;OySXyWpsdFa}? z)fiQ1w*2{AFY;#g?wRi{BhzP|XV&rAS(#?QRF|2QvzaE6D6Fc;E5X`^rkXX3Lx5$&+K*DyI*@31$Cld}Mb)T%5!)WET8Pr; zRWSydfh(3bcA}#ougVR;G_9^UFK=eP8E?~lGvnVp*6a3%hY37Ka$6Mn7MGi&s1AQB zwHfX_WZ+4Vy1rIxA(nZ*#BRlL(i=Kh57^G-rdnu1At-III>FRaI3~R;Be#ul01Y(|@~0^ARlH!T${(+|65%lvv;D zN~J!0JUb+*?b67l@t4J29$pr@BKRlg%D~n3;G}8J)q#3RZHFWb&Vq41AB$Qxw!*SP zeTJuxvBLG^#zX@3!YRQT9s-3&i|-rQ~x@V}hkX5@QY0MGjl{-*2=qQ504 zC2o29gYnD|PYrz^2PxnO)_os5LG*nbK1B3=9R3A|?}IH|d=ei?*Q+D5#bO`F;;$0N zJ`Uan^?w{I#V;bghIQmdRvI*H1GaYxpLqVOk>9rZkAsm09)MZ_RDq=o;ODQI8`)UI zZWUGlFQT?1VZ{DsIJ=STE9Qt}#9VQjSR_`77l;>&*NCgd4dOlGr;D@2#o{$0 ze~h2$ao2H@ud0wQiyw-=hzS_Z3~wfO68nlX#A@*p@dk0H_=(8fe3@P%h84-pY{|}I zKXHV(R9q!KAZ`<16F(Ne7Ws+?)9sDvMGhAyiACZZ@lx^6;_c$Y;xpn~;$HE4F@%B6 zd>V_~W1Vs@ak$7|cBj5roF^_5Zx9Dy?$K_fI9Z$_az9swuNH3+`3J1jZx_E7e-Z0r zE;5|^W|QgS$>JFCY_UwdNW4nCNxWa&ChihH6%UEQh?`$yF<+c5-XlIHz9Y85a>sJ^ z5QmDR#M8v-Vu@HTR*M&kH;6Uj?c&|y1LC9N6XFhWm-w0Zix|Ng7Qk4jFE%7mhZ9JY zzrEznB6n$^zQ5#w;!x?wO3oE0OFvz5v3Q>Jb0uFOE|UIFlCKt5Nq>{%Tf{r1e^Bxx z;$NkIR`QGDYtp|j`D5`P;6Tc;q?qP+;<8+1Xk|;JL5wDr#7Gft7@wzE|kn}^v5z=#02BtSj zoJJyEvBEEuev!CLTrRF8k^frBH;H$VNaucqKPCO&#OI~oCHXCJH;H(kEBpuPe-?j} zKE46$*bd@xB;uVYwh}WH-b)-P4iQfkPZKASNN0*zB9@b==Ry+sE)iFVtHm2g*xg04 z{*t#Te24gg^sh^PTl_nTc>5H7So)))jnh-6UynpNlEmXl#A_+G5qm1UuXwWbgT+zO zj}_05K2IzVs}(+9yjZ+cyjr|gyq-jP)`_=CzfpWh`p3j4#8(ymy7+HSt~PKNR;#|Fw8f4B&Ex?GhFnh^b<8F->eoBA-rT z59xc0gQY)3JXM^k@M&U^^rd2@^mE0FrN3OfQe3a_4dPwmz2YO{qk zBk><3+TmOAi1?crpX!DuiVaDm+gNNTb`iUY*(A~(CUUDP+4OMka`zqn1|JH%JSUE=%V$Kq!s%DYeeQT#>3>un}Hg+x7@h%Lo7 zVpp-d*o#EE{lt;tY2pO2kVLvAVwv=_#S5fgC|)7`H6+$W?rG2Xw~2R2|DfbY#HUG= z=Q)MHEB%M!-=+Uj@;}6%NW}Y1bZ}u#xe(pYeDMiZ&LUz;@#r?;udkM_%w-po)KS_{&n#q=|3aU zp5IA-SmYL7Y@d*rB&LYRk%*TjxvkiZM83Vme&Q&Fj}<42XNiSkiC9J=o!R0A(k~RR zkp3DH<=7zoZQ@;uqrA;t%4_;%_9l{nJOMHo+xIJ zXvZGnN#Y=Jgg9CpPa?fZVv%^BSRpPZk?vCQDsiQ_R=i2Pl|;ICijRs9> z_<{I|xL^EAJV+v*jlUOVx^X1rrXtQ6;w zNasTFN^zz5XYmda<@$^Gkoc&$P23^AKqB2&#E-6IU=TrO~eyO zq}x*LCiWuHemNxKj}j+{lf`Lbp;$^H-uWcbT_kzA!dHklh&PINh<_39Cy~xp689`# z65kbn5)-lOBEvg~{l!UQiFk?lg!qzZw{+v<@q#HYZeJVX_K_hj0}ZiE8=_ea+ligT zOtF_ZPMj#7CFY66;<;kAIA2^OULxKi-XY#AJ|J!pw~Eh*FNizEH^q;{zl&dr{}AzG z)5kC_Ti2oFS6$5;ZgLG5HO#R=kMu|PD>nULQs$>w=6NB~A1!&DI9WVPoGzN@iLfu1Tq#~4E)*{nuMk&?e-_t^8^k-syTu2^N5m(@ zr$zG{?I_2~lHU~H6?cn!!~^0##UI3>>6OPZo!Z z<~b|!87Fz7c$Sza7K`VKmEv6SBJpDJ3h^q@Jg-GQ+-isQsu6D$?-uVD9}yoHpBA4H zUlw4sbVv+h1g!~EM|(m#L41WVu3hA zEEg-q^F{N#8Tl`jyiB}CTqUj*>s3-!Azsag(@Nd`o;!{JXeU{7U>r{82n2@*I@y z5*F)=4aKHnbFq!sLCg?)h!e!gVxCwao-3A%bHww-#o|)&O7R-;I&rOdvv|8`p1Y$y zn#I`mUzB+k$9PCp2MSl*Gj%lyivSa zyi2@S+$?SppA!EjzAWw(-w{6$KNUY0|0y04kBWRji~SWRn&0+s9p4%gQuH*~EOT^1X^V}YGt0mte-XY#A zJ|J!pw~BugpA&bAZ;Bs?pNOA}Uy6ssA4QALwNaj+SYK=?n&)9Vpp-d*hf4`93tk3r->6p^Iibj&%74^dhY|2Dcrmd0R07$FA=@>0#-;~ zEv^%5#Es%T;=|%&;&$;_@iozVPvCvYAB%g%FGTac0Lu4+Wb?iNWJk}(&HDn7lO?B# zZN<9p3-pzKfH+hdQ8e!hp#6GEK1m!T=7^(2@4bP^lFt#Ri|2~v;vDgO z@nZ2(@hWkp_=EVfSWnNvlf=g2@nUPSy_ha$ii5@B;%IT4c!qekSSXf=6{2|$0PS?4 zD+ zE1LHYP@Xc$v&H$MdH(?6mq@-`H18ikZ{9xu@09*-@j>ws@kw#JSoeK{&!zuT{8s!y z{8bF-`MY`l0Qs8t55Qj1_Yh zua$0HnYdhBC0;MyB;F$4E#5Dh_W_X4|;*;XD;)|kruK?}vw&ah*zl-Mm0)(6Q3&2Ct z|0w<{2KbyE;q}Fa;_>2%Vmq;u*j?-?)_w2bROwF>CyQr^)5T)ZyoZ2tnD-Ds@BM>C z3cp+TD;z!~haliPTcvuXjx%G>P$B8G1 z9mTFiwDKS;!&|n8@K(siG9SA z#35piI7S>Vo*|ws7K$Zeg;*tCC@vB&6aOTx6#p#VDBdh?6z>rq5+4?~%8+2SzqRPi)1Un~-5inGMU;!^QS@fxv4yj6Tyd`#RX?hxM=-xvQb z?iGI&kBA8!R9~@)*i7s!W{BD1F!5CJG%;T+60a4n6K@o67B`Cbh!2U6icgB$#TUd^ z#5cuv#ZSb~#4p8vh~JApiB?Cq{y{N8Y#=rfn~AN&c4AktyEs@JE{-PSEbA=EdE#tw zj<|q?-IbEB5pNc67atY>D!wA_5I`K~NZgH!)P245EC4Me`DIO7j6O+5T^=Krv6FZ6h#ew2*674)u z@)WUDEE5-sOT<;;_2NeH9`OnBY4LUOZE>G?K>Sq$L*qznB6bqf#X;gwaiTayEEUVdh2j!% zm3Y0lQM^ZdLVQ|$U3^>ICms-g5wT-}xsFT`n}{96F5=1JU@>1T5@(VaR~JfNB-V(x zihm(t_n71-#2wPVA^9Eg3-N35I}-7o?ryo`#N)*i#cpDjI9wblo++Lq7LiD|TJn7H z3h^p&H3_?0CEqD-5x0u3h`Yp3#m~i`#9zc@D^e2aChSiQ*J7Pb?5C z#kt~2@z3II;zsd)@gZ@$_^kMfxJ%qE?h(Hie-i8UaO;;OwiMflJ;lD_C~>TqFBXY& z#S6qM#cRY3;%(x?;$z~A;;Z5(;%DM_;$bn8<(9v`*g|YAW{G{o5#ng^9C5l>CC(F< ziOaF#Fxa6#ZSfW#KU5wr^+w35L=5`VjppYI9fbg%oi)gx#H#GmEwAF zgZO~>u=uR_qWFRMiFi=_UJUng%U@4yCAJfLi~Yq@#nZ%TVxc%kJYW2ic(qs~-YRYu zw}>x@uZSOupNfaXAI13IZut|%Hev^{zc^4FBaRnminGK;;w56(Li$*jlF1Oh#Gn{2 zCW@Y2BguFyX5!&?wqcrx%TpucwAK)ZZ9^+ixIw&4+$3%mw}@NC=f#)Bo#LC~ZgG#eU;Ik^M*L1ZEFKl{gP&&n z2E}+WQEVzU7t_SHVt28pXnqG0?J+>|2ywJHPMj!C6AQ%>ai%z5Tp%tMmx?RI)#4g) zy|_`lN8BWC7PpBz#6q=8BhL3E{GGNp?=z~-FRRXA++;r>dm{Q1+T<5$Z4q5S<_pK(5Zw|7Pn(vQVIRx^`3 zekw&2(8?&NC@bUd4EtggW1CSJ;U}dt@~iPP<BiaA>gGbC3rl-YYAwNA`M8DC5 z=F-2%Tqy|)VSz85EsK3>>Okp1ax#X*?$WO|rl(e&XiLpY|#^qHrx`K{fT;P*eF^FCgB zjN`X^6XpBNGXg!kZdqBGJ=0>J%wD~Fbnn%@d#|jtwC+ajerI;?{(rIeCh%2N=idL` zXPRhdR``T8q{? zPgPO0))}Q%tAM1SwoOIb|L?cWAoPn$$n zwawb*-&CK~GU}^MJM4EJ8f1O-`npF4**6B?4M%;^eo?z_??F2}x~*@QukN8iuRXb~ zwbj0DblFg6(}1t**4f(@9ZE~OYKVW^*hAN*lni<7nAK!`bimg?TX*-M%ZH>LvlFbZ zYS(?;D(BE2D+9H+M6JAw_9Y!oNPar{MCjuql`E{Hx32XaOSkVimhSY4Ha+5B@w+4b z{!NcK^J+e`` zE7E%JjTa6FD^m_T8NS287U83g-Fjc`5o^WUN340B>pQKm&sJs*CIpSL}0XZ`qHTD_BLl1swuShxOPr3Dt(BZ2>_O|;D+m6-kwkJ`;G`Q33V{1p< z^Q7*B_(=N|$38EO zwuoN!d0^Z6P;jGl^zfx)57j1(J(SeiIqEpc$3nJ$)A?;f$I=rlJNcO3AKJ9{VDhzS zb^GPRNy`&9?vD1$3hhk2e(%A==TiJy48>TfIRTYts8>ycOI`t~a->wnV! zjQZe;NPXvNz3X%P_o?q#G_(E=q;to#H;*`7XV$K8{iXe@ z>o1?yq26B6zP`ge`%LzSiu&9l=C%yE^{wwbFFktK8^Oa^6}$VOeedB|pl>kMc{A%f zqojANn1!BIg%UIM>iR29oY3K*GyS3Sah!gKUgY1=0bvlf|Lpq9`>5;N?hPV(M^{^x&tIB^+|bDL;JH05wYIQiH=`%jC84qxuSI=UlT zd}QGYfqxXVn@fL?{N-khW^Jn zWV~sAUr{r(Dd&*#`diWde#{*|n>QPC$Qc;r<@Eu~AsFdrVlMJw4w>f8Ax|B)%p4Lt zY^66p>iAmk!;xIE5j)4Njed5=w5Izephg?98(mlG687ywt{K>=qsBh_H-kR?(w-JP z<`3TXh81b@z;C`ddY!ZF=EG^hV=bLcGg_VhS=!+wf1lR5hd#wjIsdcLXhHP3&xb@W z`~3F9X?|Dx%x6oZ{?ErA{b#{PpIc9wZvxHq?zex26Bp0%))AvP@yBNeKgLC$&kmIm zzQ8zK75ID!UqN#2L|EVGtn&zefa@waiy3NcOI#K}m0*@e2nA;1^ydpDa6x;&KR`<- z@cSu(IA<}Lyo{lAUjT2XAag3ChWy=`+L`$AcWC(wr~>{y_zg}(1lwti%ez2c8Z&nC z5G}C8xD!r;Z?Mb`uZ2g*AGqD&8vTh}U?Xs6%G*#TUV{_^cV$p-CGl#aIb6wW;c%>! zP~g@?t{RiN96y1dCGaZCmt&>ggcb_?JirsMFUM~=uQ0*89Y%G&!)ZEjf9u=fm*x-n zFN6+_#kE43(Cu7-un8?pgQO3HA}gUs=mRkI3M87)GlOpA(G-T95_%~|f9fAm%!FRa zZUI86ml`qC6;o1ujM}TUE2cLsuCWq&C;!1Dl!=C_hAWAy*c`)d>V}ICu3C|sa7KvP zrcPo4XC`{}+k|il{U!QS`Jf@;EQz7imr<95LWwDhN%+wK#d#=Q+ z)EUfZfW++7FWDFaB}S}fQM6jfPACfT-Zu3e9KD2*N#;Hmtv;CIs6>iR&RRQ_>pvun zF%^UCOTC!#d6F;pSxJ+SH*bnfmD^d(hNEa3?Su(X!AdS| zN;fk~V=*jt)U;ScpVE^Xk|gkCMUB1sp2!bQFiTPMuvCt;>fg|fm!*ch{Y$6-E|wX<8TMP;(MI8I7JjvZQr5MeWSceI;Qz!(pAfNw%4TRp@dPG$>t zw$(#I$dMHf_?djxbEraE!nt;c3%Z0W@slvXZe~_@K~ifOb)Y8)!(62&VUXSI9Fz`2 z-b$k5Wkgc3TkcC(>q|&OGlsh`sdc`rwI-+)ewa}&^EGpiqaRmKkT3V8Gq5iw6n>J& z;3vK?PZPeJ-0(0#qdA%+T`JjKIycqeOdy{CBG4&T8jwVvWRJKUP(*zAr+bXVI- z;+dMIGHu$@m02hwC%E!Co*cGX9!=QhOPC8q_&03Roxau-*b{DIo89EgGK;h1)L2QJ z)hU>y+E__zQ6ml{$*qnitoAwgLD8DCPQneoWFFksud$4~e96q!&Ho86QkE6G96{`W zpQ>z|(}3yS=wL6y9q{v-BHON~Uc=@aqyGfIN$i73ct&Ij;IrCnXASb5FlRp7ZnK#g z_i)-|8PVtWUkZO*k7XiS+Z`xkz&;H{3a#@6X>g_8g9x`KaxEI&itw~#N3w84knXRc z3SHyN>5EXd-QJCsSYtc1vl4j}L9KQUBe&axCR*L@cI30F-9)HYwkw7Hl6L1Jp%s`3 z;gPu34lG8zgexg*vzvB-&}0vOa9wDApT}akF#&hT_=gHQxu1 zaZp6D=S-t+e6w1(@4|iqb>CAr!G!CHygFmgSq2Y#q6xPOawTQi<}V{X4(O+- zE1+(&3HJr$PpSKa=}j@Z6x1h#JvRYA_Jx@&OMf`?sH3Mn!{}~?vz9t~+Qpg7qYK*T zuMj&{)L8aKCK&Aajg4_?8>rA8Tl#J;Hd+uM6ggrBxxxNMY zCF~t5s~1>yX$G6{T-*b+!`^A0WzRC@?RYU<&DlC-sqn*|`!>^^l|>!RPPE0I+nTkW z)sDJwI*tzZ+?Uy6vpQ3^8S+Z%nlf%#(<`Cl(gWvX&&@WvHq`wJ@~zZ$HoDWO8{7=b ziDU0vjpJySXY#PF$z8%`nQIDt6+BmC&s}D8Em@H-A@f`J+?7VxjykSQKMH&9rAF70 zx|bk7hP@+RNU`Uc9}O%SWGqpVHsj%gXmPFm} z=G{DC(rVEd5=Cd3!phs!glT0p=B5xWRal9wR9A_uO`o_HIyZ%l*4B@D zoRiF^L`fCDT^EGo8axr>K&{*R?UMs_$hXghop85)tWi_DnLQwQBW(}m1mYUc7yQ*A z9MxQ9ZVsh%9ieM%H0e6U>(IaBqp?h8!#Kc1y2?B}M%r}el2>3bIM%8I#&Hz{dXSv$ zjE9N-gP(k8Y-=3BKT+7$c;YEU@>^fqjuj_bIS2wNk2y%)o8#>#XK)4C;brG-Zx0$l5V7IM_73{o|Q*sZ_Cd)fKK5Ns- zL5v^t{EBuE(|}5^J$LR@KTn zIyfYtXFJ`7ot=c_L5iyk#e1+LB*CUce#B$g8HwbOiHqcoAcXW9oFTmp#!TG}3bcNs z8)~21=nNU4o(^gqY_6BBqoZgD;q%g9(WFMSm=^7XYV(Nk(4gCG2VOAB#Z`55yyglu zb#%P#3M=dA_z*j$8R9EfUr|R#gV9eWQcwoRTI#Q(BjO67IywqmA*F5x9G7E9-o(|$ zIf38{F}5{>aGeu~JFz>~>X7LWFPI<`UIO;HPQvXbGuSuchFf2>4$4wfM+YzEAgrvT zV>))*noP_z`ik^AI?9cHJaLQBFY(vW@q{ac>gf2BE2PxXk%IPgtR?AnbnwLsOj*Qy z>_MvrevrHi?52t6V84Y>RYymb>8O(l?vAy%qK*ze?|@KMN5?2vsHvl4 zqARSdqr+THTjvqwuD+s<4ql_8w!~_q$Kj!a>k1?9P#qn&xk5@^Y{X1{4mw`sA~KPL zj*Yrj)zQJb6$mwTbhL7Xm34GPu;bVgwET%c6?JqJ8vQt8oY7bK>*$!}3ZXhWs$3x@ zZd6Y8Mj{f8jljtqY8+6|qTiVf6690$dUOnoCLe}`8`6vuYGN_`ac+(^pO+F2%qh}j zUfem7)?yEtIj;hTo8yXu%C@Ex+#Rbjy^aodpjD>C4YbNo+(4`Jn}PPJi9Ufiaz5gxFX@M~ICjbOdhz#rkOM^fjI1i07!7Cna}eO-JW58;Xt% z2T2=c?kljb#U6{y-tV5+r^ik7Jh5x)j-AV=pEO^4mq%>3%TWeQJ3lP>Ni)EYmAr9I zKyk3SCFdw`PZcKXxNfYhhs3g;9?NL@DH;SRxrxF-H+OGiX5J(aw05zb%q+kW?6WqG zCD}xDd!x|{#{tPPNIy0ho5=HHw`M2yWV-iYXIS<#_AAfN>tpa6>2)!WXEE7a-G~>D|qR$F5J`=bWwr{l1;#A()GqKu8vV2*XNX>;mKB7k3C>5vwC%` zqm#2F4m|O$aZV%-V8_LpZ7w(d3V|_tx2mHvX!1UfNWzX2rEMm~wyvItU=LV}t)BUf zGo;VzS?4uAE|$HC5SKS>cDI+9OX&AaGLs1&3>B4A9N+Uqc*1XHB4o^WFgZ`*649HX zm=h1xWbDX^n1S7~D(t!%I940|H18zL;5?eIVGmf^KkGW{#NY>WNv{1J)9@3!OaqGJ78MpJPXU1SboX1kG(Wb3lDQ zbpxC#sg+DWZ(hKiB9Cz|(}q)sLhO#UY)#zRX^MAt@>vCSvFTxoH$70z0m}Z5X?@Qc zc6v5Z0&i}EJ+n=FEj0z6M6AW`Sk<<2a5C@6^+XM|q@Z@L;%+l|}?gqs1p%6k1&`rEN z8AlsaIn~w|$|~$QBM@t`2XWa^g^Lcl$C;w6wl;-u<3)jO8Nz*S&}h7tO+XZ*VDT?U zlf;5t1?d*-$bevbHHN0ZTb)>FN_(&)G{K5AhW2U|3ylJvv`vJ(1iNibBi0({M1p+= zT0WFuws0~prWt=^5aSE0;Siw~;0T{BT&gCn7)Gr^-z^jEc))40GTtj@-tQ=B0XT<0$4f&()8L z%ZLsW|VriON&$u)busM$Z9HjHIo90kfS!oXS(o{OJWKB9=vOcRa zmLxh5HdNfZ_V?j6-SWmXmzcDfP+Xe44Gy@s#dI>=6Vo&)Ldhaxk8N?eY#hW~u3!*c z(U5Fzq?1nm+|`dE-2+{jLcZqe$C7_C?#d9EY09v15XnFCAkDGlAmd(cI8}O*<@Vtb z7I}rMA49rzSh)nXvYnsb1OF#1 zs$NoB)+0K1epT6$xeI4Us~475&0Vyx(kksgy<*9t+4#aBQa*QnS!JY4O~1aUO`pB6 zI#RW0(frB?zKe*IEtpw0YgXB;>HQ+T3VQbIzPL~K1ts$qEtw9_?h6+!EbCrYGIQ?q zxeH6@SI;V&zM!OZ4nJ%7uSmOc`G2&`^XJZ-KD)H^q_X$R@0H)vtHFOo$u0LtjBwk? zvVQozN$+0yr5qT=v&za#s^?b~S1qq7tIVInu25WAH4E?FK|puGcP1CRuErqHA_O8r zk3O@c44;s=K^Bx$&4CNOhdD|Lq9@@sx`63q&O4SJv+Kt|AM zYQyDJU zQO`hXH)wi7)BF_9)Sy#kN1PP2ORy)>NOczH7c$k1A}0}I(56og(+i}Q=9rWaXNCQ* zwB;sfLW@935ao78L;_8mf(TOX8Aw7}3BexCn+KAEPSlRDnP0+aA@`XSPc&UUOgb~&XsC$m)6*#V(^#ZrTN$}QIXdiK zN*{%AlU{UU(kG>A@?-b6O{Oi}*rw+rsWf_=eu_+}M{}M~Xhn6BO+ytZdvu_onQO0nudL)CkAJh3-7%EJtN740a4;1?`a|M-J-| zXwn@;=>a+86i(EBg&paG5S*Txa6Uj2vf&%3$q zygM@&X=5S}vh5Os|EBh&d3QMH-JYkIcZagN=kgqRdc-|ZIbU5;7^r49E#wa?e{SGh zR5hKGElyWF7htMRjo|duym>}Twu$pQ{GlV&xy2WWIFGF{4feBD=#ucm1bxalA!i@r zq&Npw=kt{O4=0~z1pZOtUtQt#_>l{Z;^OjIxD;AYT(hX6Y@t=WXkl?#&D^Tuk|nb% zEqrQPJbK{7;l*PHju|l~Y85Xlty;8TCaywCs>-b5C4Kr?l}kzojbg;gxw99R%rBl< zU2at`q);|1!p{Woa&UR&+!Y93KEDKM7US#Ls@}bd;ZwF`$-+gkOeRbkJb37Y30CQx zveJvK;srCkY|2VzQCu>=Y@xCq+<*F{%CaSu(@W=p zPj@+e$b@mz$1PbjudKAHa{92rgU#jBqH5$^Ua_c>B`C+GZ*l3OMHkOS`3B9MZ3C(5%Y6mqn1?S z!hJ!RY3}0U%IJtuLveIwRazAz7WU*%FOQVzwq$nM!qVkd z#aJ{+W5Fg4oiMRDI&j3ON#l_u>rh!%>N=L2M#1Ghs zc1x-jEi0|`x=QiVlKItT*03>?B7=LL5iyt9<|d+Nub#alUGQmiSxIHtX^{(XN#4C* z_nByj(m4@)SUtBA_a~8Fea|R3qtAtr?h8sQs?RQ6v;^O3cVEy4a@Cyb1v9~N=*ugX z_UT?((S26WzSQt|bjJg&k%z~n1N$H%kF$|WTQPzDyxAKZe_t~?Sl`JXm-Ye35 zZ0|_-@`a1KC>kf1ErJyLfxgSl6NjvtN3%jFf_OBXGyT2fM4bvD}9 zDy}#^Zt#p6I%XKg(9rSY$ByR^szlSEb9+s*U}mgem!ha{TQ4wejd4`W0+{a42K6Fg z{9%+9SQQhNpy@HRa4*0PjpXOx=q#F9Y0ac=0!CiXn6p>RiDOkde^Dj+eR1WixwxyC zi|FR|!YZC!vS2}p8PRZYh!5ltkM%_}OlIPMA!poU%%59{xC=N`ii;)p(*2p*#dzEb0%JB`o%I-1ua`XcS&W{h=sGtYAh(+8EaPMqT)H2g3u}z zLwHPCDon-5|Acv6-842Y&MvD$z026lXuw%0cX1_SpaC%I8#_be0WPj|J-8ObqKk{? zmzWMTGrotL_CVb7h2~VGGm4wDxv$j`I-#ZrZSIzNFmTH8jxfd~2ggEFB)4VFRC~(1 zZ>tzdR+N>_EuUL9%RMY*?urlY84Sa1Ze?+44UTeU84nRBZ8L$p?Nu_L9hZJ+ISeS% zCJPso%twuoHp^h)WYj;>g|p#A^K=DgugE|=VHv6?ED@ZxO3NxM7cHrb^y_}Y!C#uYk;TE~Yj{bN%^z(cNNC(kMH8 zAQHDZ`13>j=HPD?@tb2-W{7F#8i%1F(6)U786YPrYFgnR$FM;3OpXo z_!Q?yuH15~tX!Og@iYhLo~6YVB}=O2Vy-Fg-HQ+U@eDA@J>EXN;LTh}zROIuB=L@F zM>5TQ3y^vqUb4S9P>hQFdkg)~7iWtL#cJ^~k$;Y5_|4)i;vFJCA)x=0;w$1i;t}!h zVmmYp!{>|Vh(+Q>;yiJwc$v6cykF!?1x)WN5d*`>Y3MK1w-Nbwe#&QwMdJA)KM$in zUtuS&6mJl36CW0z6F(Eb7Jca6jNep@h-1a+;>F^nB0u9{ycfmK#BW4=C2stiiS5M# zalUwoxJ|rM{FV5E_;vngb9cj4FlYX-FC6dd;dD2%)Hg=@pUM>9w z>8}xu9ch%)*pG(pX6bJyp?^^FFU99Xe)z+B8avUTu@em*pdRrKlh}=&Xz&~9|0%tL z(-!?R#IV>y>@D^qk=|g*!^Bb2Pmz3qc#-rMOI{>aNxw$&W#W42YbD<(?v(xx$#;tn zNdFu0CFx%k-;n-8$p^&Gq(3V88}aYb8#~Wvj}Xp@Y!`gkVu%k^47-Z?;@RRrahy0& zEEQ*qIDNV6wTZ~q$mt@lVc5UTU;Mz1l1~$Ril>Ww&x7I3`53%Fa?}_F*7Vb|ae<2XPsQuREuy*afd9>sed`)~)d{5jj z{z*I}el7k@#2cHYJ^W&_*hI_{v&9^-v)DuIEf$IcL~~z-_8cvFvN%mF6=#bJ#Uli{G)hCtQY?(ekz2dv#hvKK=7vi7Auf=c0e~5U^$kZoMOcyi7 zc4Cg$Rm>O95YG|^iBWNkI9@zoyihC`=ZTBOYH^i#sd%-xQM^&yA>Jb1F5WLbBt9WN zBmP$0E50qhFaAONOgt)nBYr1Zc=p16ksv0ET)2h$LE;E;v^Y_mDwc?4;(W0}tPxj= zmx))3*NL^_PI0$*ulS(2M|@m-Ui_`NPkc+M#pYs;*jdaMdx__YgT+#DwzyDSA}$wKiIe7_c-5nm90FTN)p z5I+@&w#PpAf--%X+s}G4OVy2iSM#Nk(Pb?7oiG?E9PGWvD z#ChUEajCdMTqj;3UMpTNZWninw~Id)xh@m)dsTc_{80Q<{6ah`ej|P-TA6AOF-6Q2 zvqUcX#Qge-=ZJ&EB5{m3S)3-$6w5`f7{&Ci6t5F&#T{auc!zkm_=xzJ$mOP(9@p6? z|0sSg{#pE5{DK+AOFXg4l(ak;8C@C zuK+l~egb7Y#x+}e{4yLKTbiwp=z)IRI%CJJ`o9d9hcGAS`x5%8xAFLK8;RXZn=+rD zEx@&?w|RcUpg=dU2FN1|j*WPRg6?MC1YvqC7Z<1U;=pOm#eCGqt7M$t+&DMGaoh|< zpYt{^jWQ_W^Su)VSsQlqWqw}1{QHa-hiQD&&9WkNX!HE4AjhZI1%LQq-)22<%h{OT zPvQ3Bz-j#h=`ozQd45+y5uaYaxb$$#(wH7ho}7?g8V(Sj5qO)I-Zm)W(;JTTSWlJ@ zm$r@R-32$}6kz9;+!udq!13@l`f-0)^uqn>>{Htgd0OEBvlU>a)d6x7UVr%w-0|fb z7gt}LiW|%K8ru(rifXN+ z8!pRe6Rh2P&^LR|j!5nPhC83KbGp@9x!q{Nz{%OyK59iiY_JA2pA(EWi9UBcFxx(> zFdE+1VPnpX`ww=QJ-)#|>ca;AIJ?{P$NjSlqe=TZZR~vG_=Zs7hYcZX|G`epo;_|g z%Zx_0ciYi%+bqlOJ*dGya@(ND_1$WN+lTHeK2)1#9UXsJS6E3%YnI+S9CZ%+Qi9v9 z-1Poddwa9BY5zei8QPFOJ#+3_=5KF6iQYWu%k*uW(2$ZcG&%-aYqGOt|3Tm62@Ro9 z(!+oW9*TEn~=>+5ul(dFj|4+d`8!Sx3KG*KKQ`o$Er+9QIZEVYg(|_08Lfw3CO7glqK1^xmh}cHJ>$Q%di=+S_3NU_fo& zj{ObRA5iAJ4%efcd6DZ;#t_Pw_qzt`0pIo8qoa0otbIBFLhF6X|&6;ff=%AgAG>1NQJYhr9mb5Lcw!Giq zzo^5OPMca^pRzf9bLQsk&3g|9H|#%{RQfp;Lwl}}wh2uWE zjX63A+f%P^v9a04tc`6q?mw7f`?l|G7_#iiy`te8>|MSaTW;Fhuo7vsurs!F+O_{+7D6~SazY*2=Dc`3 znA0x0|6sG67mg?AAl;$au$_T&_UVYW^>4J#+Iz5*ec!S4v`}auEI=dJd}F+20N?uho?VV&P`XUjR(=DVUDZaOP^3sSdc?~6WtJaBj9 zCTk-&`|PN%?rF5s*y!%)HuzW@21Q3Q*PMad&yU`RW3V-9bsfL2|K`5i&${7kjEepo z71_R<3O6(U_^o-{`)xjF^V!iHq+U2XVduK3dmBD|;M~pD*2vEN2m7IA&bj-km!|KgB`6wT|vxdwT8eKaDlka+YCKbltwc zVc%1`tT{XIS@hvxn$@>bma2PajRxnbPY=5zocqtt7ziBjHs3W-WzA24E{?p+EDkGH@fby zcJ&_8wYCUlSha6&L*&5zhAw|7KC~-k`M$0@_BMo`LP@PYJFJed4q{`(++fxEIc9Rk zHKfl^oqP41;O6JicLLD)`;5Z~d~MFShR}5Mt3I43a-zYV<2kn=ynlMpoNOHD3DIZJ zim+^Q*1o8P)H_CRM%upG*Wc)~^+#jq3aIka7uPtSbNFcXLa(;K?@Yz zg^~H}ao+~JaCEfgzJe`#8=ga*3pOD2Y|NDr8}+s~jE*Mn>jl48;n%AVX3KPxi9UTg zMngLmSc4n<7lbf}JON8a4y*}vt^LUx#l|{GS+vhq&eYF-J_Sc(&ZZ2^VUu_4uqM}z z<*beQbjRAsnB}@{w|m=%FH4+*Hi~QJ9K+kBf-Pa=ctS%CL9y3X5^!^9OZ9Wh4 z%{Y4o=FG}Db`P{M^ojc>Zk`1FMEe(WX5hTzYUk`o+U~aDoZ8Tiol$@95a#9DL7U&$ z62-X&GgRb&b9fzEm3`^mKe0WFKi}W5`wxHqoPB-GH&@*^%*bAUd*M%2QHJ{b({K5# z*qnm>c1Ji;!nks{Iqo9BbHcvMF#f&M4!wfQUf6ee8<#n-@4`RkI+X|&v+r^MK92cg zbfbNjm5Afq#Tc`*mN9TBz{?fbdYOT%41c4om&x#RZe?KEdT9c0*?Mtaq`P0n#U{T0 zA?ETVeqi_IWvBxFefSM>r4!q^45jkyz8s*Z?7r-TFYUfu4V|(3(gtZJ^2H0-eW`~s zkuMv-?hEzqO8?#AN@jT3eW5vsRK9QyyDvY1+6U7ee1jKuUyd6Qc3rCLx zL^lB|wSZ!OiT+f+Fa^6Wu5T!n@4vwAiz}w2?q*remYAN(w=-b(#r4fh{T@|>-4|EP zO8tmQ4Um|fx|VSVN{m>|@Fdo?`|>4A#TN@;_l0h@`rS-JuI~`qR2g<(xL%d9`@)ql-S(c*jBciWge5Bux&`&8e!+5=B#tq@ zp;Q(Oc3;?7virh>lem@*cjXZ9&w>EEFMmZ*Y4_!Nh^c9;CAKHB>H#w)LmNM|;>cv^9M<_mP zT8VaFuA%sRo1de2wEOZRlX|hu?~Ryi48Fkb%eO}ClFEgmVE3gtZmWDbjdow$j2i8} zxD{x$`{I_lFqQ97!0roeHPP;j8hx6^5lp);k1(Up)Y)kFg^4n1bMwRA z(tHtrsK;?R9bQf7)nWo-x^`dKI^k7J7j|D54o5Wn2^#};U#>A#@Q2@}KkUA^awtrz zB9Pmc%$7HjuB(`rG^UF zeF@?@g0cIO$tuC_%WyQAL%S~rnFj2>G&3Q-q}>+|1@|D)@J-x7G9n9yKr2zEfd2sm z$h1F!h8;96C{^C^{J;caJa*eyAjIbvI>ycmd!ZT3viowDC!=)R*o?6I!uR;H__2Vo z`*I~hgw5OyyDt>jBW{2%?Y=NGSOyE<#rnhUi+TidWW@u1CZ9D5=^DE)Z!)PDP)gc; zp}?ftvSDEN#g&6$zSZ>uyDy(0u!`;4ed&Zl8Q#dGVE2V*GbWWy`7&QK_c;2)JRi~S z3j@>c3tyb0-4~uFX!qqHOAWg(ZY_p~UuAsQeOYbN8yCiNAB%QhYE4n6hWQ~0?Y_7J zZcdn1*J$^}l`Fz+7#?TKH44~$;VW&l`@#|!yDzm2 z0lP0u!q|P`OP93!;woVGB?X12-4|B@yDxk_k#=8P1?;}?eNWnbaTT!paw9{)?u(nt ztFZf0jpSJ>)26WdLYaj!GVH!kp6tn<-Iq(D2oHr1?Y>Z8oAc!{+I`t%WY~S-q)5Re z1-maiI2=flUAr$YK+&4B4(-11;I=-CEdjeP%+<~RZ7&k+zPy8=u=_%l?7MK@LI3_t@M8});f}$%pSoYMhC`a(iS({SR=keLxeh;eG@W@o z3g<)AZKiIR(R~LeXY-tAs2iTnxR0U(UWPrF7FkA^U^k%zVeGlI$Wmlfi}B>r!Jbpa z(v38_A<1}|346{8qswBh{HWtf?77Aw%P7-Qd?Ds>hT|7z_NYuY)fsp&%?}K6{$_No zs7uCE(Z5i~V%no3)ZGf*4cK$IM!P+#6Ll?db@O-Va%u2nw8`QtsNTh%OM@q)GZ^Yl z+)Hi2o=bx#qr+5n#UsU5*mG-O@MLsrs&0mOBUPnLs~uHAJp4QaRSsWpw#S%8{|$7% z#Gb>Kob54fdBA9-F{zKe~LKp zj@vN4kOE&>Q0@~M{}xOTNbH+cbXwW_ zkorlRsWfzG%wGUp0T>B1tfZqab}k&=C$|!-pi&x+9U%#|RKrR(3>REC(c;>nVWn3I z#9*~q4-?3%5cFPY^eMV$H^UT&Sv78Eu}RF-Cv2Egt#R1dGP^<606833MaLsXShBK? z4(>Qu2UZ39WE%y)VKPDK;C%u50>NrAIo4_>cBqMU*r|R3dzF+#3uSJCml5wI{k9p(a$J}e-GKN(*rIM{e>O+1(ww_0Hj zqAbB2tU(WVTkI$%k%yhdB+oJG83d1tiS8X9hT+lSk)Ych|kb({Uem^s0@kgZ;AWC_LP#z)_^YPt{QJjjQS4bsbE*q}S2$C+t`^ndpR8fZkt6 z$2?aE)zQIqQQ?zf>@sBI>~5mdaSrw*ll7*pYp|R&WnNK3cjuZQi-dKHA@iFj=*#QY$aqd*f5MJ@i6pnHuU}1vD^ye%D-04`^Cl8%;(b;c;UdJtL`zhd zv=DtY9G4sYbYi>Fquf(f| zc%dd#E&@jf>?k0?nIB~$ zILM*(#=1Gu-YE$|ym4>z7#U{s$HqD$H;zd9VH&{Ajyp4ZHdk<*5Xv3(m>tl^;^H)p z@0iYu$B@{(F^ygk8`0xqBN~%-Y(&F^O>9KNxDBUrcSPef6&v0#@e?P+5Bw#ecptwJ zx|q>7p5S>6eKNgn2pn-IIF5F-QNzmE&|U2gUEW1tIr@}3I^6LJ>qoKiy4r8XYZ{xy znnAcj7t#3%CU+#fXEhz>ww(g!eF`68$D9HM<`fED(Ach`Fxy;(X!t&`IyQV^DJC{% zVJRjyX5qsz>kd=+#Kz|I*nmVJjzXTHP_PH$hTh`zxB<4h>Jjuh6frh^j*24vic zeEn)K8|Y(+V750G9-3_)Xbknk!o(uM)p)XO)M8L#%()^UmvPL4b~__k=MlTGBl+)E z(Xksls<#K=VB%u9YtwaNeAasw1jtT850#Z8*0k!hmGs%{k#I;+`u^A9D$@J<0x{Sb67_r zeu16syONH-V#f`XpKF=(jE&&Lc;lQxa0;-k3kaUR5rDYII42Uc6o5JroE^~U1W)q_ zOZZIVP9oBca|*#(1jRVONA_kzNjQbm?bQ%hbEm2kOTUUG=EG|v(BT$z5^+0r6p7#` z*a-6KYC7EVP5SZjb#e>!&1yPWLQI#YaQH!dG?k9QDa(ZhW~l~Yhm&Tc|7C-?dGP&1 zvmr;5kHlCzP=V{+Q?&+KnYnUCN85XsVmgpBTrE*yoD+zZ#(6%$9qseQDmvoY?Qs)i zD)Fvy&LG~$ZbH-Xh0#wS_;(77A3{xd`I=Z0a=D5h+uU=upVz9tz>cv_u=kpL;<_=f zQKN3({bCgz_h82)KzwVQ6NqfDh;*D|ifFoYTuZF>g3$4yD;!uwhdSjKE9v0QClIID zXb27$A-te|96L%)a2Y9-`oJnWrkNs5;UMGkPbetysd0`cREh(u;!5$wO0N{m*ek>j z=XZyN#^!$p*|Loggm?kzvfWnFameH~h45;;l8&9&aXm^fH|FH!ie$V@6JyutUISnb zrxT-+HwlNZ`(Q8SoD-A0Pf3#QBru*}vZqMWBpr8??PUe}W5<4+cT<8v-3is@ZA196G;%_`a&qQDDG6yCeeZ1m&#oR1=K%^m+#iQ(oO^`@O` z;5M6Sd_M}oc8}W_m=i-|q7-;rg`Ti}4IR7|X!MP{uv)){XSR>bd20sYUM0ZZk#`cq z{Ks?u0Jkjb*U-UB_r}z`>v)sb3AOPaEHwu8ifrn^TX-~yD&ja?^1{#g9~&O67`>VP z;zOGhOgzSQZ^I`;i7c*O9fXx63iGj}sfmTyaieUTi}&@ep5Wzs0Dp#n6)W#bo>r`Q zmGQW|V4I0fUUZ-hVqI|pry=$t=c&1G6Eq#x34WB_G0ZH6heyr!mw;VLf&nJc1=L zIkG5outV6nhK_mI(H#gD(db#m6zpzlI2shXVn@vhmcP+&fQA@yVik(8BN)L-u-hVm z*hoXR-m^?(>s5%ek~_9g25s{ZJ${Rq@4_Fg9IFeW{6AYV|I+@=|1?`N2wuKw2TJ$s{^$B1Si>&`HAz`mK;bVx$np7=F2?2)?ga`OcDjr>R+Gza31Az|H_| zvE&4D5waW1LM+aKmisYqljxjBYb($MkY7@;MIe;TRsUh61?CopaW(&(<}Fwv)?@iDTt`x5OA`ankZ#-(D)-QZx-C!H$Ru-2kIInlHilaU7;zVCX!gX-u?D@j3z9|ynlXtE-y@h6@Kh^ctffnCCzEyC zK#yGJo8oYEU`Ff`wEG}t_MklE56eG2kbj>Oih{DCj{l-4IY=n0LkElzj8r6oera5Z z!2*nI7AD)|Y-)}MLY}6fFf=-J&Fhty+ZD!s^4c<+%uHoy>Iy4aG-cDSefL0<_Ge+b z>XE@Ye#08*oWEK5Jup?SUsDK6E)eK#g2R-SYk()&`N!&f=Xtvb=aQgv`)V3w`NUoq z=rRUbbw{By0;y4&?#h)3neI85>xac_I^_hqVpOsU=a&K zDVxekj*TtVwvM=JH z=D8y>9j6zbL#Fo&!jf^2|WvvgGF)yJLyY=m<=b^=6)Dn=|DI8vS?t z9Cwe?q7Wys#B~S)TSln!>~&~`#9&$=nTFb&q#{^w3UuNmcut^uTU5MLL7;nNTApG4 zwEi6esYOsAtT~>Qu$q&f?_{zS`nx93Xt1q2&xD+(A=Y4jib$y1f4^x z=)cP@%y-Z#NzS#ac^aQsg;w%m$$Y!fz{07F_`np!$wqq`7mfEW6#o;<`25ed*K?wg z9@h@YNv3)J`)%;R4oBZUv>oAD-C5kXwfcqtk zmj6uqJpcDv=5cNE@D~PAPHm5;_y=}(jPWni$N%>%@W8Chf3u+-+*NBx{;!$a`Twtt zo&Q_S>7?M%S-dTsg1AR%e3JGfwsdwo&N0`R4#E%Yji3Kv_H?*LM{J8dEu`*$qP?6f zlnW1E&7Vh3w3ib%t;1N(4=;N7*BlEUNZ?s4iP!J(>boJ^fO1O`PeMDA2$Uy14;%ga zivz`|I8i)boGs25SBRI2*NL0O-QqpsW8#zI8{#|SAH_e5FzW2qM?6D}ihOv@^3N1& z#C77e;tp|-$nSg^?`<)O&xaw0MgA?0^6BCbae_EgTr92?uM_LUd&S4aSH%y-@5N;N zVTJj%5>FHRiL=Ej@iK9n$ZsPV|6}ocF$LY8`qpAs@l0{Jc)3_BJ}5pVzAl>e)RCT9 zKOOu|`o8$P3G*2$P7=*}=FnG5{)xzs)foO~;xEPL#ovpciGL9T=;(~sTGE)EqZ ziRI!l(X8){_+~wCun_Yb(;Fd95oe2LU2FJnmVAr&3-KB8i1@vjim}La+lbx8v>k zh2jEnm3WP~OT1rvN_<27L^SJ0BR{iFG}s(pSuy_-aj|%h_^9}fn3Lp&?5Ma+P?Ac$K(QH0u!~{1cRMET0iyAW;UhE;0Pyk^F&pfQ0_AD*JpDXgSD5f)3@&s|J^rez#i%Z27qOp&I z@)-L#ps|mG^o)HR$i_YnXzb%aZ|vhhHtQ9G&nunZim#Cf_nzea;wRD{k$g-v>lP!t zS+5xB;fbSZpCl6c=8{{AUBo=`EYYlIjQC?Dj~7eCGSS$@LAV;pt4QQy?BYOwwe*{$ zH+FHL-!1*mq&IePpnq6;V-E-NKFPmVIAae7`cI`lD7~?V13eb+G4;i1#Pl~zQ-)9* zri(o1vOk)?DuNv)pCO!F>5yHu+=rXgbROG_jZ1R~#%36UT}CeuL?jh-Kn@ zu|niWjSTlwu~zi#(bP%4RpbYc4F4PP1@UF^cj7zZcOw5J%ycGlOgAK^h1jP63)KtoU znYdQGT=eYH+#q?Ec#C+q=-H+Dwd5zo7ev03$$Gvi@~tMy|H>ZCUls0Kk*{ttUQpy$ zvy^WZe=go9{!)BYd`5ghG}lRp|2xU%JzK~JBy-6DrvG1Mf97hiABp-uiATg^qFGA? z{{N7i!0T1W$zrCMCAJfD#5}P;JVWFM{Y+dJ}JH=zAFA+^z6!*`vH{0vn%sw`FnO{zLoqBF#*>~=J<=v z#1>*Z(X%U)C%Hg8Q#@Pbf)z}!NSq)}5od@q#f!y7VvV>`+#p^fZWnincZ>In|Jn9q z{-$(~i+`A^~@@oVvKqQ(0Y zg!hZ7VpGxBHHCj$$>x3yvbkRa&3zd-T>j?%46?aD1E))Wk!bGEpubphl~^O1`!o1& zlDu8qCEg+4EqZogzLNZR@q01I`wpaM?z6zAlFj`V7T&(4goV+#2f z3ipU;?3qIUwB+B4dqs2q2LJaYoBKG(<~|NQEd8HFa~}u&cak04Q?h+MyE9yZgz{P9 zU~!l@MjS7mFJ35?i}S=K;!<&yc&WHvyjrXkZxnZlw}^L%_lggTd&DQjXT_Jr*Tmn8 z?}-OQ&yEe3TVeg1h+(m{m@9S>dy1!vh2j8lm^f0LC{7iN#Zu9;OS4e2XP0KV=Oue~X!c2dOZ-6mSp1WCNaQjz%&(2uQ9Mm75c`N{iRX$@ zu}C~moFq;cFA`^q7mHP*XP0J;WX~?mRg$k2ZxFYMw}`ik|EuXXDYvANh%>>zd$yNf-=eqy0GR2(6W6DNunh{fU@alTkBE*IB{SBP8?h~>UV^z799 zO7c^pXRqcJ$*+r^-J16$|3UmrtQWr$kBk2l6Yz%>=ASHbH6qHM-I~)SpD7L!qvB}s zJaL*hLo5^Lii^c+aizFc zAB&%hhefW1#`a1PGsP@1BIb&DVu5(3c(yoH93hSuCyQKXjrm<6)`~ZZyTn_>yT$v( zJ>uiyv*L^5KJhK_58`Lym*P?Jd(jTNbqN3gbr<<-(tw|>3xU{*sqx$9uG98w;paU4xCn6z8j8iZl2%e zaL1?jWn6k}Mz4I^xa+w{4&664IYB~9Q5eJdho+%fx+^HN>lBJ)01TR zUWFfHxe73!6|ff^(|%s0qd3H7#EV0T;b4A0#C+L5%+sG6@LKN<#q%?I^zrTC6!MUG zc_`lpek9P3hrNFK42Y*b|8B3J-hKM_=wYJ&`@McTKVULEVy~ayW3Qi3BD~tZrr8bQ zH``#ppYYYkB-$tJYwWt{J`4N(oMYKVue5S@yXk3HJ+{wIyJw$cyV%d>?B(HGHvM3Y ze)I=4Mu&C>!$ZP}S8|U&;IwkOJJ(u!^OyHaFl^Hg&S->=c=QJcerrm*gOM?>(Z}o=<(y%K==VjanXejmpdd^Mj6}kFND}@cB7MrTYHNx-n`FgGAN@jeULk1S7gLVyWC-q@3YfiJz$M~ z^+2dcY+qU|V_#avhHbH%oEy*B^<3uE;m+0A@#nJejW=0qhNs=w1Us8pdyl`^zA?Pk z?sZ+7y?a=cdxxOiuD)kqnvEV=Vh>E;{dzWbthvnHJv?;At`{?$tJWs2PB?3A>>iS4 z^+B8Tz}_Yg9Y|ZYbybstX}x+Jh(HQ0Yl2?ufnAz<9B{hkK|gAheY}Mf)c*n2|F$i( z)?SynJHxsAp+N^Sa-Kr_<)9}Y-)A+-tUuv^lR0J;>eGn2Q2kY_PQcC}jSo8L>0{8- ze;Dy3dfJITz74zoTo%45?Z)C=H)NuxqiIhcpO{!5-90M&RN^G;>XEtZNmx9wesE%L zq8z17pHY9nTHXF&i(VtKQ%q=GT2WemO7;o+wr$-#syco5vrhKzt(h2y7=us#fcu7+ zA@PHeUiN@2$d1+X2WPgCj|oE#<@Ed^)U_Q-mc7r({vh}M5gkyz=)Pb2O{zcX;WKt! zpUM26-d36zo7kUt>x<2a1&Q!YEbVc_k4oILtxaMx!gK3KV~z|8fn@4?Uu2+P^0xf>b7x&UlgFBRXZ5RJ z9EF`@=6+#4y`ZhX*5gkwvFK;=9kVxMt>pXjgCFd{as!TK*gm8+;GTwqK&W5yVTgkL zSones?8ovjLn@&Po!0zZhJ?Zm2yyub|DiKl@WA7QqHB=@_F(xtGQb`zeE)lD50Vjd$4c^iP#Z)u_Gh(SdSYnSh;mdj)?#5GX#UArV0{38v zZI+alHG{?cQ*0RE6l7+d#H=2dnBBN|YPl7AqOtjLPC-sqF(aq;VEKw-Y7ds*QcUf^ z@>iNl?ZLta`?1s>EPPFR?9e?}Vy`PBZx5E(8>)b}2TQD8Wge6@mZnmBu>6hfap)c_ zv3F!@c-B&OdTI}rE$pS#9xRO+n%aZq8j7hsSeCIysXbU4G2j2AJyw5--$`Pc@@(?YG0a?d`+T4KjZYU9cWs+J|Kvyr)rjJ9XYZESJH%jJo%z^Y&rM#UOkG zqPKI(DUEKzeXZRn)>gB%JnPVFuqp+-+259~P>* z3O2BFPB)EyBW@~P4X3?X+Oi|wg}j}*$4$IrsmsR=rGG%z!R*6A&5zK057)u$$3o3) z-1uq^SJ0X1&S*~E3f%Xc4Oeh4S`+)RP&W`a@mj(i-4_=^gP}lQ@cXtb{vxDfF|^Ha z-zy!i<5&ol@RU**0U?T;qhCSj#3Y?(L(>7bL7T(D;MEw8AHic=JSVeXZMK>QZ-=%D z5$3>kVnF9j&|C&-m6vRql0~g$CRyK?m}~*G>k;7=CSyS770^5mX|tECLCLbrUkuo< zX62xxj%kG=b3FRMN*hO~EV&C%hh;=QTvAhwUdnnNIGw?hO*M+H>&RBjM zn(c6~%r>UpHQz7Oa&J5PNm^z*??$Yzn4WPMYTAr{lJn10dg?Lg@Vynz?q_HJTQ#sb);&nzZ#yKhVxO6AOuHvmuCeBAlt&nedFKz?z*8&rG;3OwDwr zX3L;i0w>GVyC!ryEgx^^Jm_1#7O}2@GnVgx=PnAg{4_j&hU>!AOlK@_hvrQlW#dUCNn2vE6YWnp)XzqnW9hshb*L?G>z4jjat8qU&R7X7Sk~fLronohGr?8)+y>;Z@+~_c6JXO8ol;Kj5TnbPDVLRx_cqreQ3IvHHEdf z$j+YOr+Wr5o@P3Rm~`(#dfTKkqlEe8n9}giuI!8LoX45gv?*eJ4d=D#Q3!?e+7zB< za9x<1>HHR8n^JbocWYW)Zs%m;VD7ak)6j@%Q+NhbFl`FY1h_6t&2+NZjTR}p)%=s^C7#vtkJ3WcU9@zc9sP`!hC%%`;_hPNz7TTa7!Por7_IYYrh?QN4g;D- z5~eu(9tmgPZ%5nX)a4i&G6qgZ)KPF<{3u;%1S5qfGE;dLWo=;zMmo(VA)z@Xn1T4^ zaGe-pP6?JnS_X%7T&b8YYBt?Ly1rL49apIv5aT+yPVX|^3TQS#dJqoj*b7XT<;}d2 zPSy?b;`}gc<$g%t!l~r5Vac`9Smo24W_dVcGbN9;L&4xW zF~pR-08%?Rm7IT2?^+MoA~@ukbqmw7 z^wSZm49@iYVt5u&V9#F#&y{dp{B(Zr^Q?3=?O6R;lJlIbFKLaZrFS9z1{&b`%$xAM zNP*`wgWKb|E?g(3@y};y$>Hg}#Xm)~mpfTKal&UTZ9v>x;f$px;CYM!E$xBlE4WTf z<6Gj&)5BO=1+9IVojr?|xH7jXz#9eNIx)no06ih~fJ3V?-9V&^S?if@wVi#dpY9~Y z7{PQ5G3m~OH2KhUuCL@29IljJZt55R+~dq?IO}=?&)B$mDtgOMH!;)0<~~ z?2TIxYaN{FjfdfRhyr`#Wq4kM>%!DbXU5fs(0l-=;{)}s2^~tyYwVmWe9PY=)?PSc zIobgiuW-h4Yj|41bzy3zGnR{>=?RA7Oo3Z zGo3$^xvEii&42qYJ7<$`?LEYQhX!b^0iLfZ(3;y38N+pAGT##C(HvNE%pddGv+V3$ zw8VCAfw=jM-yHExyB9+03Ws)QD^($#_gxF0J;%-&gp)x zPZeAjre-?7m1vPNcjCjJ_`}(im;d8(b&GmldnWKWO56yOr&p2ZKd?9g6!8JJSd++Yk=enY^#jbAHKe z%l*-gQNUfRyMSIuVY#2#t!*k@9#1_3pL+(pG+!!BFa9aI`&U0Ud)tfsb};t4e(Vh_ z$%}q$*4B&tlAXc4J=?GNvGF4W%XtkOhx6Wt%l_+KSye<;Pii3Gm9?)$2TSNh;dBap z&O;@gH=>yotiBr}kY4cZcs5>$7Nu;w5Ir$vDp(YUA8a8TJGWw9dU#s$&?8bK7KE?#G)- z-6aE~stJZ_SEj*4PR28NguOfplUk*gzI#&d$HvJ^A$BPC_9yO?88=156K!903i9ZQ zEq}SaFLp4d*ejUelw2=KZzKuC>7!kOm89?CNjS&w!DPiMf8>V19XRK$i{7>9>C7pO z4S@~A3NXo!_`;15od5ApZ>&+qJD%XK8{Q7V^!)^f{VNFGS^w8t2lKWSHf$iUjKDjN zIM&k=UE%)4*1=fMkzg#rMA$LnNpo51=Xm7S!MFlo7KE4E1o#g5cgbte^b?3hMt{|V zOX*o|gsM;-J!{~w0UNQ&=n;vYEk>w{)X~HGp{m3QrhU#M5^&gWaY-FLQ$0O#i_yal zJ-l+n#%aV@IM=!`R7cM&Pfu(xdc<#!#^Sws*Sf%|qo*$%_7EdpHs0|BA8q6GVo4o6 zpLlxWbK@ODwDv|U5r;Fe>1prjIWATh?>WR3o|aexhdzIBX+1pKjWE}#qvw4%jP1_> z_N9rG>eSKxWar zMDG!cjd#ptzzuMWL2fYW@dUdS)0lX~c*n3qKZ0Xq-r)bQ|E&4sTuj<^gCme&CrJumU3=OyIb4llcvCLFYQHXH^a zk>`2u05-uf2FX5yW%d-iiE7lue9Y#j2xR%a9^l~QjdR8#c|#gaN$fPmEvuJI466-0Mx2XA!(-f(?oY-mHR`=I zaK@YH{?t!K_vgP9*d`iLpG~EY)KTCfVAA`m0Sn!2~IFxcIaJuoHMR3`~R#$}Q9Yc8c9_NPY=<$}&F~n*(*dW%!xz=K*j-CfS zAyh{XS5$;V>UjA41P=E10z5mx93vbvh0OM(5#t?0aIrNq-qGjgoa zjwWWnp{XNv^vp8)@tlta4knO6LjW;hMp~+5ZtDG z^bY7g@gvdmDIAwi;B#M3PlFLK&FJ|S4y{HUah8YWlAn-a2p>enc1HLCNCti02d9C? z!_xUW%nRR-G>q-b7G!>~!Jp?r=E;Qsg&hnnXFkTzlE4yx(KQ8H&U!@hC%=i5n)sNN z{=_%q(Vz54u>lFUz?l^EJZpq`82%E_2K0JUeFEWm#}MDbq4O8l(c_@R=zJm*&b8(_ zb@Xt$;{chO_4AgPS*(3x3AJ_fcx!)P`eIjW z&SP)-&c(U~!JEFA5vl2m<%iRE7aYn;G{B(_X?2{l-t;{$HGOgJnwq{#7T0n5wui%6 z?V>}^)}kp)AOJwEH<-ovnMPv7YN@P0apw3 zc$07vkq(Em+}aLyL|~eRxpQ zXDBis4Tr-$vBh}LBe-Iill*_ZbhI})PGA{W0IV&<6`t150nLvO^I_3Z6h{Bt^ZrT! zaa2WAoW7!rJS9VSex4i{V`#!V2OE>B{TRmQ$3G(9g#_Mt)mR=w+M)>P8>XFV@*T^x zOFXZak`c1-+8Exw+X;s;n}<{!jt;J>1|lxgprupsqi!@3u_ET@0^X_HnSnIsIm1|_ zL3*=PGClmEIUt)LVqIWeH9XSZH^{w}&82|XJLcP;EEo@*9Y2|pB@cQy6tZBa!@;B%Dh;3-HteUC5692@YB)k{_ND4TM7sf-5qv)KB)qk%{?4_>Hzk z;2|F-KO%E4$BD#L7=XROBrjKzg-nh5i5&Hxz+nOqd*PDNC^YvhSCX>eU#K>c5yyJFq5Smk0ZiI}2 znGcgva!^}O3*szIE+Q&036Qyme$eZnDUP&B5+}A z0rvo z-GG-M<2J#|lPipVw6pm*{z$_7MvapnPBsoa=11~GgndgsYy7>ER~3%cyN-Q4 z35^NU1kd%^<+EUO5gZCdtb{X#;taV1j&XQ&Xpo=eWI=qwTOv}I_pr)ONc5z@H>Z9% z9CoWdIf8A3>1R>U&csktl1YSjlWLJ|O2|jtCJDwF{kNES;|VS#evrQqU?i~oYgj;J zL|zAnG8104t~%MT7V>7T_L>;u3D%5b6uHrBRs`7bR|eSetHe`Io}Y$L<-t&TGc`Cn z54k^-nvnnMrqB_FVcs_!Ly^`vgF6iFn4JAkIZ|;k;N%a)^0R{~q*(r0X&~VSB;qO% zNC?S%&?RU#_79pN<&!iRs*!LR=Au~{P{CF}s}gjFginE@{BR`|-r4mSq8bhdI&&p1 zvsAHmFiX%K7K4>t4R=UxRItiOMy!K7EE!d70mLBgNyYG+j4HMdVi0t);m3f+`|ylM z|NP1$6|3ac&fFkWHCP_6Xy&G%R|a!aP?^c5Wk_P630#MYy>N#Y&~kPu1gA{!nU7;L>bG!+ zen|Nu$q?MB_98PQM)i(Gfq9owrefMDWimIfJ9ve}qY_Hp8t{%s~tZ2gRY7H{TB+YRTghs2iw;nOue84_%pOq=m%!~HAmT))H6e2hmIY)6L* z-UmOtfR-~yA%U6X*o?{>b%&QPk_-tPlkC(FbyF*vZ8N=hEtfoc1(nH>!{h#X#N7yo zGW(Zjf#P#c`ffF1-2fLj2d3y<0-i}bcX^@y!JMLJ`b?VUtwf|1xL84D#H`YCl_4JXwo6#{(=ytg?KE^xTD?36NDfS@wjQh^@{2OFC9 zCL5c{brJI8OYsN1}pDG<{&Ly;H)T| zR33hZIq+NG)REP)*_gG)Ml!pgGB79^YoUpm8dY{mnN02ml!2yZ(#0luVEm<&f#fM= zAUTsRH^~ESl~M+h`^v)`pf$z}j(hmPj6S@fit|6Wz)!axj@NAdhyJ_dHU{+m*&a`j+IkIclK6U__;d{D z8PAW)F#kipAD5>*{)c|Lp>RA6@<0CR2ssVT|M+_9X8ektI-XhhANu|CiQ0fZsN-pY z|KZ`4&Od_lfJ)~dvv~-m^N-SgItRm$&OadfdLGew!ttoaLyrFm>VkUzu*9`|cpyGy zU&qzg|M=@G*OaLNJ!M}vBcS(J8P2OE0X=13w>+R{KEZkAo-(x0E zpEECBTUj}~CXT&u<7E|7%ce~$n>M+Byl0Q1{@v#G?p9GUtFn4B0=vzroKx1VtYqrU z$uqqiCRdb{&X_r;%=*8>cFhGf|3ka8XHK0wy|nbOviC3SSy<%P;D4CIueOSH_^!f5 zeXxf-y0NsPW@b$>N>n(53oQ2@t|+OU0STkNcv@L`$-LRM#kChymDNCpky2b!I}Lk; zL%{MoyR!6r&zFn>En*-c^by>jEi3aQ%Wf3oCv01M3kJs4^SEbeha+yIL1EjS8xOmY z?z!PuZrF}A3dbTn!)|UaWqi5$;RvFpyBUKJe_kBE>^OYYOystU=Z3Q*6XO()ceCxL zP2Eg8oFBn34M!tx=Ae)hKFYl{+YY;Vc_BNT6>;C6YeVU}cVthDN4iIF_na|z%*78! znuXJmRqJ@TQ9PXQRuqOCxw-LhI8u)1pSUG;Z%)eg0K$&AKZbsX1tUXFz5ij%`&TWy0K4lkHl!r~EaHOay z8XYYj=>TSjV*}U+8S#)CZtY&?ptqXl<>s+3A}xJC8#3bV%<#GregE59+s%oG9QTWi zK${;#_tMHL&q_OtF?&$Nt>Jj{t+hw52dyPX!9OtyG9vB*J3a_ybF&MZDp@B>&e|&ff8I_ZHz3kxlP>|=AY?;)4Vz&LgPX1fI|1Aa(BQ+_Q&R>i-~qL!kV(A6XvL zs1e=`up>v5?d?F>F8dGi+8-#}Z~lY${|J=rXX}U#Kca1a3AF8xN5)T<-_*ukwiH9$ zYi@6Jd9#rk_h%d?{@qBqxF$7He*E9Xj~bJg)R`-yB%5JR<0>nGcF5lO}Pr& z6&}?+oZ)`Dq!8h*yUPxwL%B_&msy);dEJpJJ>our+C(EKVNK%Niy_CQ_W}EHvn&k? z$9fNPn+zHhPM=aci0egZVbf-4%nbK}csO=qIHL{QDLsxuyM5|W@OP)Ld$%Kf?xJ|S zH`H7Vv)l!RICyY{MmHe=^abKf&|O5$iPQ|>qFR*HnOGk3tD>$H`@Ml7D zkEPtMsVU>wLaw-z?N=?A373kcI`a>aF`zG^y}vxc{u!U zq+;88hr|CY5e|oGk*49+UC@eW;Y`jwhD9&J;A(^(2}gRc(NDLr(+`#b2A$Zn8ISQ^ zqi1v~H0PD2gg8Qmx7J)gx44s zc zt&yJ1%mR3Hsx0PoCDxQD6$?#~u!Loz3j#~pc3H)bm=Do^DE%FW>ED+A_Cv}VSnA^5 z+Il6*l^H=##3H@Ca_u-|mA%ERvcZyld|1hDS59vqR)RaE|L`zfZgW zn(ES_qnNB_=JYuwvx}$BE4Sv&p-?t0j!Q|ac=putnwg6by?k~FEEX3-+pA|WLdvSE z=Tut76;pkC$c$q3?6Nt^W7xpS6Kcw;YbKY@E~zM~?ol+kyt4ZIUXzENHtv*h#eFcQiFM@Tv(i(L{U?9xIKq&TdJL&WZ@nJ>%;^r2I zxq(yEv#3|Rb9LG5vXYvzW8&xF=0mss-KL^7N@v8Y%jVClnOQj}-m`DN9{qZs8}C+8 zS~c(Z(#q=EvW49$dPAkQX`TfeeRdgw@ig%knZ9z$OdAFYNZfEq0cPpP$*{!CwdS)q7&7N6OGZPKpt-O5R z95i(0oNj0ovIe?oCAB3%xxA`dY2}>S>XOph?9}4%C|vbSE>T{qS~W8;#LRMJBD2mWf|fQjqHEC4T(@vz z48sA%LGw>V`^~PLighhG)0y!FWu{-%AT!I#kQq9uWOiy2&zm!^rVQ;gr)&ZGXMQaP z1?pb1kdwN2cHiD5-dvwL`+T!L&h1rXdcC&7Skg*y$RdHL!?>i*F@s_Os(}>v_LkFW zHI>CPu0s)n=kSfKMw)?AhU%`M&TM~rOTLrmtbVVqhZrok08Gf*%JYk7mzdEtH8=xI^C4~d9CPT=F+@3=0m_9McO2E7$-=Qa zk;>f1WFO*S;|~YSUN-6+Q#7wb%*t#PBXw0->CEz(Wz)QlE5pz&$Kl8vrZ60F=d^So z#z9RPJCVz|S>nBBEt$>X%P=%BW}0b+ITa)b`}mq1LK{!M22x+dPg+aY(qkNH1cQ7!JB^$R|@NL`$rnPpz^z><%kp zm!_?Z{wA_2{M*oF?(du{>>=3`-9}D&c88%ELwX@%3GcaE_A&5=`;F*!nia{4o)&Y` zBTYhic2hgwZEm-)TjE7Kt?jl>`@j<>=3*WocpiL*tbM;E1$gk+c|j4fxmBFhd9QOw ziU<#xJ-kwyLmz0kyi*f~79@UKbTo-bU8QHYFQ8#Hr$3ahZ6fSSQ{mJ}GV$cZffW z8F;e7{91~~i2cRsBA;I}-X-E%v0nUG{8`MzFk<{x;<4fYk0xWMVZ%=WUI8r=AoGQ)`=ZLl9 zh2mx6I`L8QDH478toR~{GSn;l1IZtYpGyCY>-{g4im?UXNqOwOmU&OSiG1-K9@^g zEnX}AddVBayQP0b@@DZx@h{@L;tuh@NaXXi7Y~R(lPGs28^m}>7n_o>(~3lR7wNl;y`?{1@(^(piF9KXK2`d1@qFoP zB`*{&A(8I4;_th(s2t7@_O+ug>MuelKzk4 zQ_?>xz9#)!;ydD(3jbRCyZD31-}11XB4P%Kax@Z~OW#`TBz-rrNF1v0gm{KHPMj=G z5z9#AGgGXVe!h6I^uG~*C$3ZYdhvGY?-n;n|ETzk^e>68iaQj(Q~XT&uf%Vq|6a6l zLe26<#SF1EiS~<&$B5m;zT!afL=tv}iKC<+EuJHNiC8AiSNJ0F67e_UYH^LYmP9@` zi+4zWkN8LFpAerG>lMCTd{6oh#m}YRCH`IdgW@k@4lZ}tE_q@bv7LCVSSa=)QQm&y zN#beZ7;!2IyX9h~SR*bLmx-5>u=`tatym}CCO$&K?q>1N(mx~qMf%sp_oV+={F}I6 z;RnQ@rRVD}S&noP`DBYNq(4e55PK`Uzc@r3A)YRd70)7J{~YmrajrN|TuCDT%fxHM z>&5lr2JvnZcJCAaEIuc`B)&_+?hf(4r2kB8kp5foXX)KMq{F(KMt+JN!Yoagq?dOKdJC7;w$27;+rJWeIWT`aTf_Yd&T`CH(_G^vc+5y@$$t^VmA_Y zPaqM0sCbg}qa}|Qi%HliQ}}%87l})yUnTi+@p=;JZdUli(my6{5uX=dAyKY3CBH5H z7YRFGDExr*KZ$m}moA-T{lyj}(jBGn9@6&~2S`6uazY$KBHdZyIpS=ESBV#h7l|vy z%fu^5*ttf$O}v{#Js&4g-lxQu#8<`b;=AI9B+~66VfQ=9q2`{QG_kSRRBS7@7dw%# z(~pFm<0YT2@Uh}q(oc~*O{^r5Zl1zdO3z)oSf4AUzd`ak@lF!y?o;?v(myM{Bt19d zqMhyH$0X8yCVnMyM=r+urx?WzI?5Shp4eP$L&8ow@mT2##R1ZvC=L_HE1Y|B(SC_o zCe9J7#RVktxlrWJTuir0yheI%(#3wbNBaB4$HXVZ=f#)B*GQy$Tk`wjXC(67Eq)_f zExr6hVwTugY$>)C3rN`MB=(TLw|JuTBS@6vOz9_y#nR7^JX>5q!tO=l#p2ZpzfPcN=5)rzF~)`-+kK#J`LG6di02!0;%EbQxkRv7LCd*q227 zfg<+~qkNJ$S{yH)O~UTEB6k#{TtlM$R**=)O1w(su3^;QBHk+ANg~~2B<%cI^6LtJ zQ+!AIosvHlzaf$C@8S<)I{p}l`DKgwVk@zO*jemG!cLLM{lF-nB%UfxCSiAq$eqC` zSBUe)MdDHtb}kXQ6By;S;?3gyByOx#VPJr9sb_mddL zW&xCAViS@3e^K9xM7qu-?hW)4hl^$6Lh%~$4)GaryZDWGOk3F#D@5GRH|59eVnf`X zF~sGSA(lZy6yNY@@ffj4>?4jA$BXBP#bUWQORNbc3Jt8+wW_jKa-w{6$KM_9{_lWz%1L9Aj z%jbdcN5yQhiP%DHBX$rwi`=xC=}!~Q^GC>MOP(T56VDeb#rYz)QKy}Y#Y@G@#ns~V z;!WbM;vFJ4jHaDe#ka(F#E-;JL~b9?_+qe#f!v?#Z}_v;Av&1~Hx!6uTTI?$J5C@3IiwSY0I7XZx zzAnBgz9)Vt^1XuW?_J_|;y=WHiu^4V<7J4A#O7ja@o4cF(L85Iy55qH7l()=#nZ(J z;@RR9ahiC(SSgz4@vv{6$Agzh{~OUfkB5GZjjLQFSZgph@HjmVlQ!!I9NPMJXIVoP83VT zGI5SrEnX-t70q*el+!%N2d|O-dhr(VR`G7}KJiiUaq&6vC9z)IE`BKfm-walwfLR* z50O7dWIKk$46%{eOl&E(6OR_Viao@B;&I|6@jS6ioGDg`=J`L$agpSU#Z}_v;x*#+ z;w|E>;@#qX;8e2Y~YYQ?kS7;E-dY`5ge{Jju<)?qV--pm>5f zLOewrEshswiWOq5xKLast`Kh){~(&*1E5^y_W<`Jxi;)X z#cZ*O*g|Y0b`U#@-NjzwU~#y3mUxahRV){4#0BDw;w|F6;sc_2o{#cAF4=#s|AORq zMe|%A@%|?H3o&2MrCW)e#jav6v7dPOb9(c99(Kno+<#7AEV*2qB`y#z6qk!D#Vf^Y z#P#9^@m}!(@lo+{@fq<2@lEk<(SKh5Uy^?m|0#y`TskJs7OTXCqIsTE}G~0upiZP>kP5A7#BNlsSS4O8UMgNE-Y9Mq9~7SvUl89G-xt3Y_lh}jul#vpD-z@CSjmOr>Ec-N zY!dNiNS-a$NWWb2O7RA9op>9G^qV9iHpT$;+5hx;s)_9@d@#1@pbV{agVr9v;=|%&;>+Sz@k8;y#Bas##b^hw{25|vF)kK~eZ+(~ zQand27OTWsaiw^fc#~KsJ}5pSz97CLzAt_xej|P-MvnH%pDwl*<6@E6M@)z##dE}B zu}Z8JFBN|)-YDK8J|I3UJ}qu+QT&Vef%vhwSKKd#J9*`gi7mypVt28Z7_ksP%55pUbbxoBBH}Tk zk#Sqz(2s}9TO;Fi+7PD)hH(+Y!N{G(u3`_dx7c4CBn}pbizkbt#L?n-aiTa`oFUE@ ztHfGynYcn+C0;JxAg&YFiyOoT#Ye==;*;Xb;#RR<+%E1EKNY_ezZUn3`^5v|Poiae z?HUr(M85x<=QVu)H_7*ZlX0fs=#8lf_ZuXmPwaMf87PHbe4k(fr*# z>@AkOOk5$Z7T1V3i0j0=#Es&E;v?b~@pQxI^42ek$%2_lpO_pTsoBYmZDZ zN8~%sO?!$R#Li+@vA;M-94rnOPZmdsqecJsZWAR>7N>~Q#452?TqrIUSBaO4tHm|q zdU1nzm$*^fEIui25uX?9#qHv|;tugk@oRCfxL>qfuN^~TnwTjz7h8*Qv4hw{>@Ax2 zB5?dlK3N1-WkF~z4;aRpv%ms9ljY4 zO=>=e$72{jIHZ`jrTn{iT@ml_d_(9%{}YnuWYD)wRe!{}5Z6Ke#}6A01%94k4OT#h z^YMEIbTn=`S~N?0X>jA={50@dJXdS$7d8-99`G~XHXK_|V&(MlZA^t6%=h_Aa6kHJ zFJI>8=Q|I6KMhSZKi#t8^yuS<&4nDaH~wz#xXgOsXA((!tKj$3z-#q~J^r54|M+1m zpa|NV27C1=6zyfg`Q^J2em@Po*6K0d-vQIlj~{j&{6TxY@Aul3_As@Q_U=%c9w0y0 zm7sh$$M8S2NB5BE$7`73?ZI()yr&e;*H4?7>TBv)4}Knp3zlyX%9jHj%ZJB7$@0Al zKborwFrN*u7aY@meMx@~Fygz27l#tJgw1<(m@n-!&p`8A2WH`V7CQgq+iMI(Fy1JX z?*l&)=*LT~G`)HjR(6jU_37KQN1q-&`V__EJ>vX$-$gxo^zGX>9`D(!XaIoEl=P(| zMkTy$7(Bza)j4UGnjL2veb}pSXRL?$R=2PAp7FZ}*AC6QIs9fMk(tOzv`F+!6eQez z%TBe6UTK-J@0a7w*!8;%`>M0sI=eHX*4_onKi>1eB4=MHc28ni!tRi_*NwEQzj}|g z=-oZmtWFIb7uhE)X!y;d#`R71*wERYu8_KD{SAAZMPv6kMn{d^`?jIGzP1;QObo0q z-nAy%+B<5wwJ*mxV^?k#QcUk7u^9n?{9m3clMIl?(8PZhR0Bc zx-Z-==MEqI?N`g}n{G^VuEuWR%g@-gChd$}X}L}85bEY$ecQgA^xO7jI%&s+t`1)l z+4swU*S<=ta&NTuwa$F)tH_X1i4VUDt$ulT+LAl><+#z^*=@tSos6RrIeqH(l+9|r zC)#rIo=D5qd&0*)*pQgCw;?eSZqmR+X<|s?%{`%6xqCwCSMPBby@|GYbB~?guHlY> zQyV%CENSR?Z0;VnWqHH0S?wBrGqR?k!^mC@mriQm5FI#fkJGZc;r3(uHmsaA1#+hb zdr_~34g>o&L>ARHv_E!AL#L7L;c6N#9hkevKDJ#$r%BTr{(!JcMzY;|H?$u)r6E44 zT|<0epN0Z({i1lo@>%wPThaRS8dgkVZv7gjr@kZ+!l;tdpG>&R&K0}JK5qXL9`t}K{%Z_cudvcAg zeH&``Z|gDKI_B*9-=`JtX)$SHJ;yOeMAyVv^zvKY=taw!(Th4dBQZl}U4zkE-f$c8 z2w~LTK5IHgZ$IQ$-Vny<#S9tbzz)XmB#cA%y=^b-4%b9?ySdixaMQ+nU8hw&T5Hj@ zaIA|xknPmCejI9ZEu7IEOI@`7uc%Ef9CgHS&+o@DI{S+{S?c<|3(?!EH3L^!ei z3+JW}F}`oIoNHY8B17Ea=O%7R*f-_wbu;JHJ2zo|q+@1;LRcHzeKzJwdhTmqIaPnz zoqmC}dsQ0h>@-iDlZft)wfJ2ky!-OZc8UB%>qPOM;zijAJ1%i%g7aA|f)?=RGh2l7 znJx0ao6q(MYLP`=i>w^J?V+`(KgMOUr!Ie}1#171`qS>}_2(_9{n=Dr5b=2@z8-KJGp^-8>zZSZ*Q1}ja4?HoRM1=3k)o@ebT*PvscODnv!1Ju|!l zq-AYIhS8pRo|u_+F_ZRe<%v0six*naUKy_#LwRVZbKy%LgRl4COxN6u%&%W3iUTEvvceRPlbDuOz#0san3*+|WjS7AP8R zKHXFdvXgZM2Y(|GmewfA{V=x3ku&3Mt`h}Q(6 ztiQ6{B{BA!Q;?R$f<>pcWn;MotFUuVh=$V(5lp8X!XaL-<=QzfqNr)nd1>6bE2|z~ z(fN((XGRGYbAg``EOFH3T!8FnME{uf0m|68xXOw?+C&K&7gt-+$NZ7dxOjmT-7G0B ztCZ#XQ>-806l7*)ust7_nBBN|YPl7CqH$l7b57PIMt)Lhn`gaG@j25z{)0S*J7dCz(Zveqn#<@88$9jh^}d7hk>znK|NciMV#X8ty05}oO!d1Ean|9;A|oV4q3hV2yOSz{KL1E3 zI>%{dUS?O&JO6U#SLKKI&u`3DsCLqyGU*59?`Qt=94#e-^G~Jy`F{N2`G3dIjV|!R zPtJdv_7*yM&ztn4@;kB_FZAP&&cBB8VkgGNaSF!gx1(I=M9oX~3MS@rUPW(naygaU zf|s5A1PyL*nsAP|1zVl`ZdBamWWJ3Y+=3n9{7-4(J}0L+n#?WO8P0!+HXd-&`G*Q_ z!PjB5Kc|A%Np)y|Kqnbdox~e>;m|Tf$g?-0-W;HTs8sp=d9R7YbR4#+NJw7~g<1VM z3e9B3^1*qDs{nt+jPjmd^eDUK3{y=I;Z=9Z-zmE2P<8&=I_D1LT2BWK-mZhes6Z0E0{%@UT z-h`Wx{{!t^=F3(29U1?3zPvD>FVT!%?&L&FpD(lXhcLqLot$PyvC7VWgfXu0O5hf( zxAT`V#+9B4w_t;v-;a5&_7xlL{J*nOSNV!Z?EIe?<7!{=B;G(m#WlX-c{~4Xj=eSB ze8h0It#lr#St`?}Ej*cpGIG?DJNk0I)nadStrHysMgAaWzs_kzfo;BpZFaNM+`O2w zV4;=HRh@z{)y7I^=WrrPZn-zQ#BsS2wBo80z1GQK=eBCWmbk^qV6I;Ncle2#Tah~v z)eeWKYHf2FFrym-Y!m$95YH)E+njvOh*8gD=?tvIY&cKmuK zu-ddjK-%w}g0_fd+tD`A#@5=6`IkkF&c;_bL!<#Ntuv2H?vsH}MX@`z3Y1VWp-wJsc8C=2cjBO)i_I7_J{& z0XG4)YfUXK$Uv@e1(inEmMw4>u`S1FpluUQikP(;*g9RZ3e0jP*3c+u=~w#`e+KxfyPDtLzDp#`ah{2R-0)ure}E zfD*@=W|o^hFypw40U4*{;^IOfSU$sz5Q#ecw%W}eghq-gZrF>PmTzZdcu8$Ui)9^R zDc!bD$)!G{opnks-@lrfdq{k|nlqJie-t{K8DcVYM0}hP=Gty{(0*gYPxDL4_)ScV zaH<5kO|4ESW?oafQ>K@9)3CACEEy9;XPNNlMJ8`k6WVH?%uO*`sIU@Ss;(08XGy8_ zSX-DQ?Y8M1(4UyeMr(`x#j;PxU{j)`N`F*m#A}^}CBk@6>vo0qiJ5+TbjoaOH?apt zt{(~m?Zci;(?d?=v7wwo$|tDn09~?u6z}Muj>7>TOf)P<7a777{ru}@vyH85T~wdk z&z1rFJAE!cCIFER`*4V1^J;=u2)1=5!2}`eJ9~5;gd;wA&|tT3!b`*7j9P6yEfI%v zt+`8oB{gr!+W(8aHvz1wy4J_fx#!-S+$1*y61a>S3@9iG1W-{ynT(1|GKm%qAtaCr zNle0|2-LX_6~z(MU>$3n>O5=Jszt3ct;0|G{K5A zmB5@KI)gaXN-#An0oh^hX!lIsQ`35VXxQ$c{?l=yN^t~B(GMpC2BjNg8g$uVp8JC!f@D0y;xP;c|GI-+ za4b$X(i)&E@R5Wwa0cFSE87{!vr-*N;3f0DnJge*LJ=ek#Tj@@qU{Wfb$kLJ%8k#! zWXC5&aCLld4k3;+@K&yDXCT+{dGXl%5Mdvng9T(1`dKiA5!AYiHNZ>)n+DPZwg;p$ z&2l7aU=eZD(MOBMREDL*PXtTH4wfc+C;Z+ZlMr5i8pn_$^L! z2Ld});I%Zj^I0aVm-FJWI}>@L-RIjNj!)Rvf-?yGS=y2^;QHD$4&{2B$ck_tPGr^A&cJ#{EN^Gv`;J)I&cJmz zkuTvv$8T&RdRASX8MqfG3P^a|@tfNjc+&Vs6J9a?s%Sd{A2=enodFJ`z*~g^ zVxaK#%lBpzx?AvQ0w-ED8G#cGN=k48D?RH))1!$UPX~ff&QXAogNw^u%y=MAaKVQ% zA1&m#HbT-PCc_I;Q4&XH1Wg+Y(v6^LnGw{oGHV32EYBK2xYV4#IEsAl2m;T*TUwMg zvX&NPjjW})StDy{wEZ2(e`v{P5&jw`M@>AAE?kB+0G_yTMK(;hfCfZCI|E!D10uJb z0XKlq*BR)B6Uhl2H=gn7nawX&Uo^Bl3foq>BD(PsBdH<}J7aIgg4vXwS~ z+^AW$yqy8g(}-zn=eXhNdxvMn4N`EhxV!J+94tIB*o)dTBd4_>Yvi=%W{sTIsEwRk zOzm{Soni9K$eErQIjt+RMo#PUtdY~&)}9#_$UQSGkb7oWAot9$K<*qCkKn|NL~z3b z$vGC>us9+!ELN<{8Wt;-XAO%LZS5QY?sjr`rq>^yxt*l%vgisp*lM|!@zl(1YidSG zdc1HjxLMH63WsN8vNJNJ_=8~)1`V?*Dhlbb2%m*B;;o%RWCxFXm!m{3%pS`)c33z6 zubsjfn9mgChn*%&!w$sW!8jsk(lCy_gS{c7!=3@zL>*;Ys0)ituDks5juGJ|epV z<%w)JhQo#n^)3RR*FB^e=3SmT!iOM+!;2EivCceP+wc)=5KeUB)$I(hsqhq>xvGbO zkv=%fPzn+R_XK|K?W;q9u)$FZ94L{^OC2&``yx4kO^jRZMB?92Rj>(s$gxM?u*%@G zJMgAJ@yzUN#bhBM(V+-@4guFnfrwm|#Z8^AWQen(N=|7ljcbA`uwq`DH>_tngR^kr zC4#^wB}|UKO{a~HPiV#&^Oky*73sM(;#Ibv1@>BtYV(HnZ)cFb4|CTVl%NYrh_Vy7 z(~s49E&`m&d~ZfLiBVD52Qhfr{Wx18WoFW9U1gJ&yQxoSFPw!l<{isy8DvMqGaun9 z3(g?0yWxqzx10APAeaKRX7G8On0yH@;l$+Y+l;i?@d><}$GjHSn!&%~WMO&by5K~9 z1YSLrgx&N`iT(UT#w12w?IsE9)~NvcvA_pYJ9)9!5hP zEly%5oM=A+3uS7*|}_;51YYHmv+|qF{5VA*?;`x3&P`we1bxFJdtP2JI-6_?UGR##BoF-QN9Mv8jkk zh*CH{R464Goh!D}nS&z;qK(k=JEwCzt1q47L!Hu-QEPfawGnju4hO1@ABaOOqj#W% zZ)Gvhv@l3b+iBs2i;#^ob3{)D`#M+BNklej1W&p|{A_{n+Q~$=4EP1a4;_CBk+lOq zmpH=0YsU~Ly6_ZYy@gj99w$DLC5?EiRuZpw{K-UD`c=!rV)jM=Y#iufloDs@hsQVEKr>2F_W~xTLhrwvxmO z!_qo!BROY;ZM<84>~L&}`|YNdIfyK8Y-+44=Pr(Ou-WgTCG+d%EUu|t$R)}D9lBdr zV0+yERGF~>^&D&!yj|ICTj8(<|H&M7*eco-^$^!a*&8)tDxUZ6GlDagS9ON{fJtEkThGeDoFDv($+!u4!9{5PA*Qh>D7%2gR`R!a7&* zp66rd?jSyH~RB0?P$RCN&5{3%NYq4GJ`<52R z3gZ>n`8$Xo5fu7eyW$V_1oulP#Y%$fR%37R;1}51eo-lQpbwr$2s_&6$NdWICteoA zj`Fem+A{7f4rXv1w-*1q+aU>R^w0W;;tNvp#k6=+EZp{`lFU6Ta)z6!fSMYoE4b2j*rpD9() z@-^8MQ)s(-*wwMdEL9!KR$CFCdAO&&;*@Ow@$HcWw9itiVk!=$yiP|Wmt(p91j*U@1RG85%bw3(2D{k`^54G zGOANWM|qYxOCIBT2u2xF1o6IIi&GYi#Vfl7eQYYhh^%Ir`(h@@iO=~*XA>5!)h`WD zr*JlDt{BN#qw9p8oHfYr=cdGY{V2l}D_EJo%S}&-sORmNQ9UGX@-bT}k9YbJwbtQsoL%v`rFqo!EWT|X0tu$b;5vp?g0 zkmm02Qr}{8=yRx54lWfm<_9;dM%{1;&t{$M8jiv>L?9k~zLK^7vtLmfyzZ59j^4C# z0yqOI@Pz35>D}7X8;UP)YUVcTO^wxc%NyFNZKrVT)ZW&#cwV>>ear9>+~8Ht#uCe0Jq15rX}2>yt%2B zyN1^{VgvZvrlw;Wkk8nL1-5@VHmS7=q{i3EC z{dHTvQ(|!gs++w{eIu;iupv8lE=P+YaKR3XJCa@4v(WK zW#fFWrWUIj@TZc0hVsua?9)!mJv4eNHi=(W+ZtZc>ZLW@Ri0a^kE`7KpWPe1w0v=G z^O8}uO)anoEMGhvblbuui{}CB!LM&#I=sBKxqN=*UgWTe%kcm`YGF;wd@yQSY8Q^e zQ`^$L>&h4JQQurzzF_{cnwI+Vp{3oiP?00b9rr3V_Qp2ZQCfcq*vX%CmyHmLZfH1DbOHcQ!JjB>5sK2nrqv| z*0!w;3#yr+bz3%Im->iK4UG**j>lW}wgokd7uVPjLx^K;498rif3aipK^N6qT3tU3{bybcHPz#h zcu_+uFEx95b@j}NO^pkH_4Dx}fIhRd0b_4jtyMj&1mA=pQoE?GrV-05u zy@n$fwQHWE*g3(<8-S*dS$fg7A%X}m|E>2O(bc~DF_-CViAt9%sR}b>V=u*klbobB~W z*QP_YAZ;&gZ29Bryzts$h_QN&RwUPqHb;8ZNZnjl+fd(7H{UgPowEyew+Qs5hSuuZ zXNRE|i$)(`w=r#-BS!3*Y>IPfgJvald&KR|?EE%?P^Y+=8X z6Q|^!nsZwG^w@W!X9QJP=8qW$=^B1b@N7wBZ0`fhCwcK?&ZI;n zFWx0u;&=5^L3h80-_!5q_x5*+?1DGvjz=~l>V5QOc5J{G?W`lvcb1UlJ~D z1>2P_FzeOqcr5+PIs&i6Y*N_@ydGWn)nL0Rq+grY4>!&1$rPWN@og#3U0?b?rdA^D zWr=Vp=W$P{{zNPZ93(z3C*$`Oju9R#oFx2~aGtP1xJ++ScO&uMz!<@I4_{xKfT^T8Je=`$h+P zsOT}msY2Vk2=Ps#PY~K?WAHB(eS`2B;j6;U!oLXl^Aq#u5^v&o;dEhxaHH^M;WNV5 zgtj*i(r*==K)0d3?!pJp27o#Glg}+CBjpL z7YMHw-XZ*n@E5{&g`Wyz=-`&Wu)lCG;X%UL!UkahhBMRI9wxxuMDHy;NH|~EB0N!e zp6~(TGs4$}e-wTpOk%oVetm@H!coFW!lQ(?7YXE7i(V_dLTG!6Al~*60lp~yyTVF* zS!RA?ge!&L6<#a+Sjaho^2NfQLfhj4{Gp<`UY2tE3&#r&6&@*EA^Z*z*Xk7EcZpc? zdXD1Pi@scVrT90AzEyaa_>YKwT=YO^ns?UgP2oGj_leN^iRdlDFT~HqZHws&gq?|y?=8Ai*k63x+XC{ow*_z? z@yAQrEpK-MB!B7;X=FbA^kkj^};p6lZ9sr&kT4Hg%1fI z6>bv#O!y1ouY_+3Z50*r`KG-HV|)&PTtZkRED>(M7vTW$2MLD>?YRVc_7^=?c!+S4 zkc(oN-;u%^VV!W1uvxfFc)XC0xlGR$(L@^g5<3aI3401*k#6z33Aw0)^23Frgkyvg zgp-Ab3%@0tFI*^W5{7#Qt`xmSc$)A`;X2_(!i_>MAY{326#htfuaIkY82^OuDdCGk zF6Ci7E!2o_3;!VeQ24oUn~>fJD4#3rEbJ=Wes92m;+G3)w#fAR3daZ!6w(Tr@zaFg zw0GdKl3OBNDO@9@ks9@#DLh|zvG59^JvSnJljvK8_Xr;lJ}%rO{JGGcFA;u2^lyZ} z7ye1OMfi1l37Ul!WJ>s)3G5}@Ss3miI7sxK!hM7^@L@U{$`hvu>EwYl4aSK_3l|8F z5w-}I3ReqH5^le@;3eW;CcH{`o$zMiZNhtn4+?)Gq+L79MLR!Ym2i^qFd=}+$Q`|n9JvH=qV6(74{I83i}D|Jpl5RqDKfv3J(+>BK(i;Ww=b~ju)ORJY5*> zVR(V)a1X;hDm9!i$9MLVJ&co|{GACcIDhkkH=WAor~3SB1Y8z9;;>(B9u5 z|GDTdg#q3LSZ*4T5<3Y~LVJ$`zfAOQ!ePR_h2w+=38x6B3%@0-7Saxx`JEsQ8^ZU5zZd>l_?d9~y$KV14?_B+u$!=_u&>bG-yl~m zx>7hoNb6PVp^Y@r-ot>Giry%^R`^5V?ZUf-4+$R?{!IA1@D<@3!f?;PKZ*|b4BR66 zOJRU-mMj-ORT~xwVcctUxOZTg=-q@B!lA-_grkI2!U@8|gfoS6h4Y2S2%CgUg~tg` z5}qbJPk5p5GT{}%>xDN7?-1T2d`$SHaQnRjUlsq?!p*`Dgr5rkBIGw;wqsnF6m}N& z5cUz$KA!TUg$D~K3TFss3+D>w3l|HI6&@#CB|KGlhH(460%?oS{C^^RUigymb>UmW z&B70a;huooMDyE*)nC|2SS&0R_7mxJJJUL(9oc&qSU;e*1*g`0%W3ttkxA^eSyJ`1e=!f;Q(ZlZS*?jqb>SRvd?xUX=m zuu3>tI8At@@Mt0ZBQXCHh2ImNCtNSQTzHM}df~0YJB1Gl9}#X6{!I9i@D<@!;opRL z_<@AwDHL`S_7v_S+*Md194g#bxWBMUI6*i~I7>*!56rJkxKg-Ac)IW`;rYUgg&T!e z3F$S0`og^epAr3Y;je_@o`LU*eqZ>BaEp*GC#bK7u&=Pcuv}Ov94QUsC76RB38_C{SS(Bl zcNUfj_Ye*i?k(I;I8GSuDL6%RxThdqo4g2~-O&9kUw|QA*A4CWCX|OB6Cw}_zhAlEf;XTQG!R!V;y94v3e&!jD4FtVh^uIC&bcFhFJLn)6orP~Dp%5^X8$4{-h#{q! zLOFRuOe7f>_B&IO@gJSZ% zJl3WwLiuYDkWW{-dQ3J_=hZnYz=or?7X_;ht-=+pHrQ$(MxOAyLyz@LwBTHTQMDCA9_uBQT%@1QjB>FN}C$s1Ud zeMLr-#YhI9u3_fC#Q26!*D!M~v4BrkWuE*D`ry;mktNAG7VQ9$-IKK2g-=%(+dFw7 zRgDo@>UH5FC-dq0B1^?ZCh+OXFk2mE^x)H#WI&&;FR_%9tzw`f$*B}SOf>8+^Jap< zA9}3H@aZ}SnVV17AqcqkKDrCT)IN~fs^hL?QRnfsCb5^r<|bJ%_;h7s$)_t7=T#w^ zr*eozCxU=aS1u=^PuJssN!WG3rDkV_nGvUB_;gi9xIFB2McWWdpROOH81m_=1oG)B zdHHm8RBrMR>b@s24l3x=bvX(JpRSHf`*fxKb)>8)$zhXozj|@^I1w$y<2go=SXSWZI{z%P8&B)m0$v)76!E zWRkzN!l!GH!;D5JS5eiAor{f3`*d}x#wQn3_!X6TVzL-jflt>5t-e!}gIS|Dx|ojv z_;h`XW&TY88-+ey1D5%nLXKeibbXJp@2a!Wrz;D@q+RU~drQ~D`G5Ec5 zSqu1dy$N@h2zU^#aPt9i|z^AK=ACcON@$l(Nr;U-ak*UX+ zAAGvHsbq9&7-{%)b@Jm=&$Gqh)78ZvoI0EO;M0|k9wTKFQ%6%CK3$#s)YJ*AAAGv9 zap=?aUdqF#t9{IcPgjmB`gG+`GM}#BrvmtNkt`g9<|AD!dNBk_{7vAngJy}66<*IrO^E5( zZ8Jhh|2r^j_Gd4&!HnsH}eqlacn;?<0xf?!RNnnhpRFQcAntGc_;nP(;0y(ncu_)Dd=ktpBbiJ3V_{%AMx{{!(J4nN)tE1y7^RWq^t`m^T ze7Z8Q3BoG2^XXcMW=u^-8FS#%b&ZL7sUK6-Ns%t@I!04>v6S%XN?|yzPF;akpifuc zCg{_ZKmOCFtEp`pRQD4K3#u-82WT| z4ES{A$_M&%bqx4)-IEgV>FOBp={lYa_;hs)_;h`UR|h^_T`n++&N~W9SSo8%_;e-B zLKzL8uB7)5>CmTZ0~jgZ0O-?|1TSA6Y4~(qVKjWYa#AE=s^HUg4NAj-B-;6Oy$Ot7 zoOS5al^3_y$!tsbbY-qC{|CcF@acLVnDFUJmVCEz-a-fC?;`MyjNcBUD_u;{rz<_2m`~T!PyzUK<;sSg-VP7OV71{DofrWKEy0dqE05UHQu@eY*0Ol}>bJ8jHHWs}Sx{khr!me-lFH zfj9Ak!s64Y1r2%|vQJ!J*zF`l(t-B<)bqo_ZnjdcEEmI!0yh-KxMZ%c&q>^WFwWxG z!#vSH98bHuO!xeUhA`9*tWun1d}8+>?#!GH#yOTes`r1~mD*1Ly@Wg#!GEMHOK>mf zJ8|~oAU+Dp`ukIZkNxTW{lk1b#Nq-#Xjk8#h+-^7GEo2aGKv?fe_=19^j*3O{ETkz zKeTKIzDN6g_e3ApyAnzIpK&6L1@g`v%MMZD(c$T7qYIrEQ}i7knEh~`VA#!t`Oe+p z;L{^qyb&k@*EAiXjo=G9{O}O?9vXqqAR^`IYV@#n1io^hSV%ODK;;pynQI$E1-aP@ zzUn)av2X&EEi^ryOK($$KlT<)%nU_Gb)@;Q5O@dT@4vk~G%ac^g@wY`d#3nbp)+9Y1B+6aslj3kQ}F+c=ZBH=mNYDCD{pAr-+C8b?fFiQ zKJ|zXW9O2XA1{g(_Ky|yfdOqVMFQW?w%2k7Pif1~j9F%N zHO;g}n0Xhh5Wiw$x4pUHKWXuru>kC7kQLhZ$!s)jf}3SN6^h8t7xuT=c3?D)qd{pV z16t#CFb6Y3E7=)RT!ynW!0Tu<92(%t{LEBRTWAoRHuiG1j$y%^ZDMFw7aEnp0*?k> z|A<}SH}t%(TEBL%K@LseoDs2IPG1{RKma{r-bSJxHE3~c@EvR;U1z`8xSX<}JRAo9% z<%?-sDg)4L6IhuM!psumx1q6maou9tKs(dyEDP5Tw(05iFw@0m6qx3vX2Tg8q-Kmv zv#h3NKxy`wp$)by)j5_!W9^Lbdd4&{+h7j=`nt~%ydZC>%Zopl5r-WRiuz;pxKj zh2IxmE4)YeknkztFNJ>;{zYhZK+s=-MrA(x3(ejK^jy(q=L6d8dw?g2zfpLz@Im39 zh5TWMdilwi*he@>xS!DMY7lRBG{A-8FB6_7yg+!B@OB|T5mW!W!jFX!e4`+r+cObM zh1{u-G(Ytcj}d-Hc(?Eg;k&|5g!~lGbo9JR>?<^T6VQu9A1}N_c%ASr;p4(z2>ELo z_0h{H(d;gOqeM><9wl5XJVD4$kW6=(@J8VS!e@l93;!tmLYPEHXZk+Ea^Wc9WMQ?i zS@<1czZ{poQh0!Him+O^QfTY>k>7gJ*9(6kv~~B0|5S7gW02*ub@jmhqW2WqdU^0? zimnqb5uPf%NO+y_9^odTty_m4Tc-~ELi|H8}Y{| zh&DS~(A>|6@e_nog|mcngtjglaxJ3GUKaHAqVE;jI%@ELCHgHQuIanN_lYRuUxl2i zNymstS0uVb*hBn&q6Y}e#UCMhq;L!o`OQ_l*}Fn75AxBi4SBC5&AFP`PdGq0SU600 zuyCSqx-hiEtQK7>)`}Z&UwX$HfbP1GgDFcEeu`RXkg` zW4JJcP!8X+Ee)?H56bacg$J)E58lTyOuW%Jd7O{mHmTozdvyJpH0^;y-3WT@ug734 zghv?1ew(fDQs^6j{z82$3-hJE1vtYr2zs;+;OdI-2;)|O5r!G}49486p-@&FpChvK zeQ{^(iUJ<c4-l8F@3GR%b>mZLsE^M})W`n7qXrLl zZ-t!#G~;+aCJg1qqO&XoFFZoIpM$}0c-#%S0U-fozC516nO(l8OEdMw$Mtmi-ar_A zxfx)`o6witr^CF6S;^gx}!Oo7j5Rp!ffXP)8MK+qeH{x^jI9icv^$(DPq6uY;C zLcmaN@UY?Vg_b$KX}wqFUc-mG^}{QVyOsI(whn_M@fWlzhNHI>t@JNlvn?olY+Fv* zrfspZpKgnnJ-N*<3oh|53%2?n?Xorh&z;9j+)~s#vi|5T1rtx(7AgD5wkTvh$U^So zCy^r9>U~DZZsQ^sPuxWUP38dHr-KO_a zr#Jdpbc56E?>BKvbP;xFFD&?|s35wo{pYa_Me84{Djxs(mho$1>rSn@zN*s(Z;$%t zVjChC@4V38a2o3M@V3ITT$CcOEP=oAvZqnzf=i(BLzLo^`_Rs#H%GnM4~;`zlN)9~ zlsoRpEx3An98N8lys#y@(ce&T=^4=UW7Hz|k{?4~0)IVdV!flELPwP8qn|)4bd1>? z^JhQQcbvb+lUt%iBcR8>^o1?CZ$>sy%VR9hrEKj4{`%13l@(l!l%JsuSst%yb2L5& z`mmrDWyzfz-;lF@9Io!T_aik$!{Y1mH^kQEZ73P)@0W94-n!MFd~#FqEf4(e!*eRD z{#+HWda&xZ@4Zx2h^y;Yz4hMfTL!IZd(V4lI3^=E&fxYHfdV?_x!w9{$3IvOcq|49 z)(AEr0;>$`FslUPG1X(0;RIvl+Cz9G#*Lh@Tl{hgoXVI<-H#zeV{aiQFcah{Jysbj zhX&EX)l9LV`?+N0#(sw)XxU-F_ZF--%Fk{kSiU6R~Q~qe2S%x z-po9>-UI6pe*+d4kKk|o2_*IduAsm=L>4Fbn2{|O&e@1qu0!N>XzLL7gwDhb$Qw6$V`IOf>L@tC%G8*d;F9sXGg(r7Ki((xj*XP;Z^0czYIz%Q7 zuB7std%Xlvu0uSVGJfs>;C5m-uti1PteJ{(!QeW?eCSK^#}ceVWEgp99iq!In*0_j zg1zM(nVb9*GQ>JWM;0V6gC49ybY!>=v9l@SI>f6Hop%ZT^aac6hDnwd>|BRkwVZqRDNnWKE*pVsn!$7}g=O zv9u16iu1U%fTwbZMOT8rIz*b)a~xhTm80jxuGX}iOXKgdU| zmADRZBV&Kk=MfZ->kuEMswevV(a3(uT)a$R9by+iq-;R)Vby$n-iyrwZ#3dC^}{nI|S6VVPge<1Ic?HZ}Pv z3;9Nuu@J%nx#V{!{F{Om5aK#SKCEFKB1bUSA->3r-c@JgIz$$TNxRw~_Li=v@eld9 zE|U<|iBa8-MM}30k*$+jOTAc!=qlu;Y;i5tAzp1&h^Btec&tNoG}a-q!dQps=z`QX zWWsfbE`3pI6KSkNd;?ECT!(lc3yO7!E`CUACTXlg`Jq(pZP+kys%)D)dg za2+BWhwBjOJcH{H@3HdCPH|ju9U_O4twUVT46qK7W5m`W@^cl}A?}16Y#riIRtf76 z=b~wB9U|_@whnQ3ldyG&9189ty$9*6i)17Vhl_MR$`p$}34s!SD>&?+S)ycx*Yjf& zVmfx)j1baur+1tE*$ZtjWBQl?$>|}D(%ryj#5%-VP?_#@m|^P>+aZy%xdiJFNnnhp zE@2B{9inT&XzEthAL|g+BakC29*a_acdps8b%>j(>JL!Nb%-RWY5*Gs>ku6sPX&y} zI>gy1ovlM;U@L@GY_|@P%hgghQ55SCc{ih~eMw^-qPvdK6rBxn9U_If4zZl2#yUja zCb$mqS1dKwA-Y-|occ4FCW8OU{rKeVFGP7S3z)*-q9w=i`O<*^RY(aovR zl*c+mM=wv+GC!zb=*gC{BnJ3mE zItJDuvQu*%qGMnk;&?V7)*(6u)*<#~60AdX46H+3M+vM$bh&UH;@MEoQdyf~9U^HK z%4n=ZB;6R&;X1@iz;J7lu?~?0+q@gvhU*Z2U^Lbta#AE=s;~}`7l#8$v|ESx1{l3K z>u?<+FK(}qYzeGGWUem%55h!PhscGsScgbfZ=chE^=@=9F6)g&*(UI1N2w8nIlqTo;(WjO zQE*~WvSLyC*XvP~SRBhw<)d}KPm!ir$z2d(>wbpDOf<*3JPa`|N_+=7CXS7DdEDsS zRBu!~(Gn|eH~9iDrwoBaYb^FO1UgY=Uq6X*`TMz*id;X;!>`2iGgm5(9Kg^7u&QvD zy++wlovHp<(8rMX2peYq&Md-}pqW+KcPV#37Z&pgoUBnlcpdlrF-1(v%=q-${}%}O zV~d#fV+3hB(w}wm#~E)ain9o3f7Z(%Z)sl#{d1iC;AY(O59~yb71c;Wk5>KW4e|Uc zYt3OO!5%pK&BIRZRmE&ge&gqpYQK5dsl6&i7Tq`9NmdP|dXe>4ke?WfQah8y4?jb3 z_L~jo>Ha~ce;Mc+$AjEKC6p^dDd~8q-w`I)gS=b8yA&sQl-r5ClhNZEaYCQxA8hJU zx#$2m`~M8-{X?wfR)D5onEpN4A`^^v9_a6pcOT^rHQpnjZy^sY3SLjP`eEqz{082? zkS#aa^0)}}IppOUuN#ZHt|Bns z7;X(y%c2ab;@7Q?kM7-0VmwZ?1Q;WGx09HdW(@D$&emXEodl9Vg&mkrgTP&ApEb>7 zlgl7aq`6^re0=YA60_0_C?PQ~%|N~+_`${{8PU6)L|dAHf*{=SU&jN&Vz6_oMAj|n8s$&ybwIYc!ueZGvE6(GVpls^C6!P+_jw-h-WCo za30#GgAgwq&rm45kR62Bs_aD_m?&?uT%6Vexen<;@M=&N+gB6VgMIHvf=Y2qR_enc(c$2A{2orsSOk~) zh^*ANXQiGRCWUewOuH5*b}A*zvz%uW*ek&W(~da*VwW5ZLdUe^=OK(4gYcRKr+xz9 zst;@@OK=66O1Qn4rD{UO6ZuaO^>V&}P9S39eYYV0M6mgR1N>iho!y z*P=%f?!<}GYyu3od}m||HZxPOBQpg%I#aO2GX*=61>@r$%1Cf!JTjanP~5P$pgzdV z4h&@;Q5*yeCmt-}J2{$fY z)Q5#-gm9){{I=HdP$ORoZlPs(_$~nT#5M%)cU(f$GC7jKy#H?ZW1bKQGt0HR5c?#i zic8ZsD?Y7;lQzZ>=V#Y%`P;4?C?DGnx)8F$hCMcpd&zX{NX%}_P71{vS2Hl%N<5vw zdKjO9Mx2%i`v$Wq|B92_2xE_D23>Pjrf;)~3L7uX&J_!t$cp8P&-*sAxqCGOvvA_} zarf$YC2lYv*m3ZjLQn(Too)bbP|Sa~LhXZA&1r7}c+0@_mxp5UZh_zk0B;molOpt4 zI<6mseuC-8;Ee)RcY!kyWaDqRqDlNy(cNZYq4}P-> z+n~mG;SQ^|zbdu?ErzoE;6xuO3W7^lj|B0KXFEE62YaRlU1PDXvD~=7|KL5aQD0vK zyY3N743Fgo$8qPrzEIbF@L(juZi2bNF^&g$#&sZS2RD^6%}Z?pa|8s?GPb#fNjaTbD3+lvRDu1 zInvq;7i%Od!VM-nl?KbOiDGH26ZWBmYVL@M?CM=jxvOiaqS934LsOry@EsHd%ho~< zHl;;DZO7S;%21FF%B&4`RGwI;2ht_MM!DFEb1>@0JvobkL%VXD!~}O*4faA;o``FA z*vMGtpn#h{E-OWU>CEad>_Yj$hSe2V{p$NLT3L{_r`C>kN9?%HY(7lgDq#oG+QxB9 z1F-G4PRy*hw;jv=q0JMau+6RacUB%WV)|FvM$y%m#wgiVEB|GiCuZ3t{f9PBM2qe< z+>Co*azdN8WA_>slG|;i_%+)m!pg2~`oe~K8VLR0+dy%Vs=mERBf92xJ1G8BMtk9H zFJtir#T{%F)7EZjo4l+|7t@A9|KQ$=9St5s!?AfCcT?;*(rcYvs}(dfwE8dJXwim_ zv+hanBDsUD6{|TtSZB_*#QVlg7P()ev-C8x%>TYU6f;J#|KM(lm^n2RzjjZ>j+-f_ zr^l>K6yKa{4VE;zTIQ*_rz0m$H!f5~h*LI6(>#%>Z zZ5PcoLALD}*Bgfi--W(r-^J#j-2Y#@@8V8j1q?IqdL;ih?yJ}r<-+@_y%4AORs4z# zSvZ@2o%NWTMES+-pRp4g#&q~abYI~C!b!pzLVk;&++1O!uvPdS;iPi}~iDp@@Bi1BFwBM+^CVgL20S`2mUadf_!f`wbiX=S2Tn_*x$KMaCkW3LUM9Rz_<-;k;p@Ub3cnD3lfBp^3<&1OC5ObtLORJKeU5OW z@JGTK_!*n=H9~Vl270yVbA&et&6^nFH;H~l_@A{GI|aXgvm6%)uNK}Zd_wrL@O|M{ zq3vIS^tN9KupD0*sc(hwyFzn?2ma4R|4FzXeoLo(Xeah9(R58k{sQ4~!ZpHEg=Y!Z z3BNDAUHD6(?Xv-Wwyy>-2S3_Ve|O;?!tM9V*pGaab+T}pkbbC`exB%hA#GyFUn=@I z;cD@1-wf#cp7@swzc0L2a<_`UQ+S{FkBiG!*9x-8w zu)A?8hN0Fb%$sZ{^P-w0^!JjI6hL8^UC|@J|w$SdQ;2$q~ zweT#V-B%IMmFi4?h46aeO~U(x4+)+2K}Pwmxc7@Nx44?|03iXdGZVSd;m0ib)Y?W0QVMuf1y2x zfInIEG~u^|)k3a$qrTNby3-|nhVVk+df}Bq`i-VsxWC~eqV2f`{AWaOzt15pVVLe+ zAy?Cp=Ff1%9AUnY&K}9{Cgkc#(p>vYbXgHt8n{$3Lg{yN#V1?7lf|}!~F{175%=DO9q+G*X={N ztKxSTRtm%Y2uF$@E##78>N`|8O*l(v&v%Hg5xr2jNZ2Y|CbZ{2$e$?syTY@DT;9n1 z?i4;C{IQS=(;5G?kTwXUUl#sa__lDf@B<-!6*c*&(EJu4{Q%MX3ilTtC_F^?En&5g zOD~!K=|X!x1-(x6dg0~5YlPPex8JAme(@g`J|TQc_=514!Z(D!5xy_{qwo{q79rP# zvb?>7y9jp`e$&2$<0N;GaI!GmpYRCLwx2ojnJ;>wkZVwx{|Q2_KP7#k@G_z8cMd++ zqB8z*VYt8GOQOU51>Y9ES@?nQbKy2&4xW9eFWg_So9LdxU4**|Z9jF$?F{1kk>j{^5G!hi;ldCY z$745~=ziZQHwZG@=es7%3~{*i*}(-gp>8s6hs+2(pNB^nHwg@M3vaX{UfdmvI?zG7 zf<{*{eJmHPM8Y%(dVheSeAlde!?>pHy2=j7yFplTF z!cgw40Xz0N@Py<5c0>net~D89e|Z$)?DCzQRbO1fbopLH7=5`JV8?jq%kI-G8xLYu z_wbfOt`y8};CIH!eA({IGaMTTdKaVrjbuPasE=u~<<3X>-U)?(p&Wb;4F8Y#92h!e z#Lyx5iM+J*n|%(P&%uIW;p&_5IdJAJ2QFOumx6~Q7n}k_IWL$4uLFMY%=^(ueBDN` zxGI3Jfli5>^K;kw=O)$_eAKxhxGb_^(87faf3Wa{E#58PT3E1Wa6!&xM^>$`^2!^Z zdwomEn%B2P-#mItbdP@9B3oxweV*FC>fvoqUGw8@k6shsTJYKKTN7KWHs{4Jx;6fB zr}&+>R&5T(9ke-J1Ap|8Y|gOWF2YciwvH)!32NQ!CRuoOs`s3_4v>I4Y`-?F+Opbzb?LEkK6nWxBbN%(r;Vv$$OUnBUL}% zwyA2vtt>&mt%*;@ZH|nECA}Zn;D6l7Kj+qiHs>8Qa832xo^x}DMbj|fvB1yW1rS-xn7zACfn!Tb#GuyG-lsDhag3CN{^Ms z%6S^Xkr$YLLHBdW%8k*ne}u1~(S{!1H&zbKxI-iQXpVh$*c+@^Nf-2LFS4BB(&BLp z!-x__@x`1jBNgNiDdAX&9@+St>QEAOZHa~QI)x?xhe4J!I2 z_Rjq+^DbiE`y|5p&7r=1MMjfciI~_=WNz{r)Fm-eWI>V^wuw<9i;}ZgwEabvBzrUM z0V2C6cVSi{TAf5)=wOjyO!Fmy^rp~Ft2F^OI96sO%P3f zf|4X^5*J!*ZjuE{%-e~LB^!Gx&SO*XR1UEy-8aC-ejQ4ln^=)f~JqeC!+So5( zR`-f@Huj18I^SeD7bWW{e819mPhtx85|3Id(Z>D~l0WG~Lt5I{e?(PJ^y!1r!rnH? zm#f64g&FoIE=Gmu1*w~L|>>FKL0JO2co8)f_egGlb*so=c z-YMh=rj7jx%;;TpHrm+pS~F=^`@`PS^)CJ)AJ^psM0H|Rw=d8p1EPt!kzBS;Y7L?j zu(8*0N%?Fl*w~xHJz9D)9ya!l&Q0CLjA3K%=z`Qhb~V`8yYxk=Eyy$h8++S$95(jz zDGwWa7e6HR7BWr1#@;p_hmHLQY<$?*yZ8~QWy~Ko_S{8-Huk$xA8hR1R5Chs4r$of zJNfacWlRqndl!FjYADmg#(t!wpO`v>%?KNNCqFgSlljBOo{d8r`%@SX8~gVY*3K!8 zs|0N9Ih4%C{-?|UHufANW@CQ~8L+XRj2z6yp1)BgU}L`)RSme;&z{tYy?%}~3A3^1 zP;eJ11*xoyWF!lRi$r6ZSab{2mH4|O%nq6*N>+G1%Mj)CvD;>Zkp5sWY;Pa-LL1E5 z>*u79#-#otbR}S8|0XKaohHTwi84R;SxDG!N(tE5lfW2H@sm;lHukOsqp7!8f7sZo zM<7R5JQk(;?rWg8FmZsN+Y?W^sSChLz{Z{gRgGlh!p7dw@f2O$Bw%Ad3)MFpdj@ug zu!`N|xx|`C4o$IBhf@`7?0Gk%s>hiWHumm1MpL)2La?!?Fm3D`S!&qW^EN>n`&?!X z8+%uagHs!*4>tDSH+@r62LltZv40hOjJMSJtR-yh-GEz|dV%@D#@^A*DgH2@fQ`MQ zm#5Ym*=f&x_lOlTiXT_RQ7gPm_5|1RHyP3WJS3S-pKu1J=9I!RWFg7Ue+i?Q`&j zV_}Bzx$j6G`{1_`FkP^Pw?`z{*mLHCjlItb!Nz{MkwG*%3k*DujYG1X_>*(Y-;+gx zjr}9gvh!TXtuCE_CiO}?;g4U+ora+IJ7DF(#{NP`!N&eza?fxU^__kWUe1k38G+UP zvq+WGgMAPN_wRv-MHwH9zJb3ziX!u3`7`j-qq!!D%#WF!HJiFWGKkd0x_kjK8r+|a z5=QE=BAvfeqI+{KP-H1Kg3uYq2yAWW?MhOSPz4I zkSrR~Pbg->UxIuAXMYybKh(tdv(2aEoxnOA+Jka4!8;UZe|}T;Cz{-P&>ZRgPcvRO z%5lPf6sI%%pVa9?@cst+&y?eJ@h4lomLgb>vp=tmKgH_LpCLXZkN%1LshxTGXQOHP zAlaWEj{L){?OH(}Lmo$fe^^hp=L4YmAltu~a?>nr3_&^~*>yPt>XL|j91{L%Nh;>8 ztUJ#Bk0M9$_}#u7r?)E~7%obu_@SkkgP0@JDIAYq;+rhRlSuK?bc)|vipvp0w*oE? z$GZbG?|I&CZ=nl~KmaX`!#_Na-!%q&0`8lLe*@=0M(oZlg|>p?txd@$A`rFDjQ-rB zy~AXk(3DA>1Nr^Yk_`m48&3SB%G~z1Wc)iCr+;ML(l9B%%#Xx5D2%k^v%#5V$*r(V z6m?0D%DXX4x)=h-;2g+kOLiJ4K7u3f+mI^@oA1rWU%$5VJ52UCxR*kJ-|+`BV)qxo zxf9gwmdpyvQRM8*<}uV-P=-mwnunk5e~NPuMHp$hz6;LVF8NbvG4iAKx1PzDCYzZ2 zJ+>u;_~m}UDyN=@P%M0rZ?{t3AKz~M)Hv|A^T-)6}EHUs??$-AMed?aE9aI5lt zAh|cr0lR?UxBH1W2Qd-FD_X#nBGQ3z+Ys`PPbP|xjEZWJq=q`Ekl*o-Cqae$n7>m47d`+{RrGk9h9f!?hk))I+3}3beoCodkp42@MD~VC{Ic24=;nm{WH~4 zn;G)>_d}fi%gKkK%UY_Om(MEnM~MHPibApM7Gko%5`RJkuOt&Fu(ePm4-A|cMZH1w z#5stGC@w{V*)sg{5qNKci;an5`-4-?rm-d&hD3vL4rFu%n*?7;nTQ`7VtBhoqA2X3 z(g~^|%q39+8Knfc+1B9JRJki=&d6teFF&{u8isP;zsTo)ff44Oev4ng`F|J;AH2v` zKS2VCc@G;t2*Jp^es7=5fHRR(@LQ+ArTLxG44)Z+^e;kbb|@$PQnvKVp)_k1`~n`Y zK4xGIr1xxUt|V(H?+YM?k{E3Sz0rV}Oxe92L>+R2U*;q@K=)oY4012$6jH<9%l3lT zjbG&yQqCK;Xi*FNJm$pcb;Qe~A`U%!O7gwoeV`_I00m$~z^>*B@IZC}9&iO1aXPQp zLpcSM_4eVqg5ZuYsY`Z8cCtINlij6cU*rCzo9DKR+b5sp4ElNb`TOSwm~NvA=HhyE z0+-S8Vn~lHz~hyY#ay!7l%JpPJd5zQgN01lO7ndGkYe)l`+A2I4@SQzDDEJi%$6U4 zi(SYJG0W}>c?|zzKPb%B-x>1ho$@H(#Ux^x5)@;X3KX-XtG`=;%e!mLbp6}?O9%Ha zyXN~dYy8P*=@M4kOEekR$V zeC$uiZ>;4^k4b@PFsr1+EsvPXW5`#ym^UhL#c?&!y>=@owW18wPKfGp!{pyaW={r7~r&+h==~9D6wM+=qMT35I;MqE8$mAGhHX z=Q#`T(Vr3EcQ{Hw!2q8?ksbTT8DT<)5kjG_I>d28(?X$$ckXz|cQ|^3f*m*^)YH)) z4&z~Lj_G75f?3(}2?_S=x33N#mGDHxCmo*V@P>g`aDx8^fVT#ixZe)9Hj(z>AV%Oc z1&Fi*v}G1VGg+DUkWJ)!vk5%mFJ@&s15W#FIzgcJz*`dGySp6`q~O6)+>aAB@GJ%I zz4=y(^CP4Cjo!7LjL$57I)QpR#DixC43&Xs39j5GIy#3BcFo2)vJJ2tX8}Bpuk`vI z=dJMi_ibMT&Z#)zih^*u3!V?yXu%^1SK%!1mND5{M{cX)nErtez@XQ$lA;^;*F+^F{dJA2b1wpo64ar zlPs;+9$+X72}-h0_};e&yZ~r?!cC6*GeE>tO(U?$AscpyEN2Bp;3E>*Q|DQhdiq+x z(=JFw&$}SODLOKvXgZj71n3)qJ>jkd4eucv0oPe@7TfV}7My{|5_$}ly@JxBB6GK;u3 z!_tS@g*2kcr0`C=~w=#mPo8j}i>K*KA=5C|1e>=mEALm?}pTOL4+A(P+BmV3=RM(M$vm9EuTLxzgRu&6AEfN16dy!#`y5r84XyUpsAt z!frx%7-UxGqlS$*|LzQecz5J*ZeRz}Fp(nS=@=k?_LCy+1!&5VDC8US*zH z(@8YJtIQMP_hpOcq+>Al5pPG-bc{y$tJ=xsiCZK7+7XS621@&Og&C`utcvCreO+M+ z(=oWXNN9&2VLzIOlZC;fX6A^H%QI`Tiuz>Ke?4;sqTJzA%1Is>@;v|B2y*(!YL9GY zy4IPu{BTkUbp$@svp;23Bb%9?uOt3iNS$wz)9}}hY-UzrDdi-y3VSh_oXa{CHp9#+ z?DjLBWraV1AI5YjY=)UGY+yIShmocLo_F%T{Icg#Z*)JnWzrG&w<5#`0$ixKvoBQa z8&Z1yJ4og3hUx2`^(vpW$+b@@-8T_(hrb#4ADJt z95S4h(^nPY(Ksm+#v^D)b{fVpO}d96+@|wH;HfynVkh)@k=;g z!5JQGPM-X*z{xE<_^d)6+l%gy*k)|wux&#*#%Iff?HR@sIg_W4IBzDiB4}NITOoYN zyL%rb{BLkRpdEz|X{=qeWPY6}q#4)LQa3o{*6ur}xut1AOU>d^ZpPbMI$-&Ty#~%% z(72?ut?3(`3&CqZd1F&!U3p#2yoNd0A(lDKSzJ@Qu%WTe`|r@*x}xrNl~iiS-;5>(w{bbC+1J zL2#+lyEIl3yy=xVd!$(B zIQ=UPfe)l;1TL5U7Qrs$T}wul#QDt*etN!G>087$7tuEzvE~F9u|*N_&OuSd$av5S z-%T#*Ns{=~Nff7(o~now1IsKE@wb(JH@Nhn;vo2aq!eC)pejE&zFY1;$vN^S1eVxuEWBJ zOON%tb}fk|(SAd)N4xW{R2(3EGH5G})1eZS7x=N_crpA=<-`Z~u&KvcGft>>u87_9dmrzOh2tcSB3`3Z7s~bSps%?Gz7gI{_sMI-x{61uYc}!rfHx zqtzAGmS+d0@pQvH4AIW<;+;|UzCGwc>H5_^#S+2yf{F@v?S2Ls`nZDYrEZy4d^WAN2)73Z?E9bxMpY&S5frc(^s)4^$I?6{9-?@+MT%y zg7K2l(vj@qZ597m`uIrej32MWH}GJKUojFx)Ay^Zr%#$VX5x77A8^^!QdcvdbIS6e z)$?n1=%XoX2lcd<5c86ZoZPdPF7fw)6xffHkU{7@HH63m- z@38t9=V4|C``UNdm_FQLotuFFqaK}{&!y_R#dR$U>KbcTc+FGr3pvX3pY-eG9Ko29 ztd7!9^LK7e-oJf8(GAu&`-1A|{H(fuNn^eQ}yB{i|EB`=ESDP1;G0GcmRS|u%!+2St*om@jN_8z~dCgJ)QvF zuy@@a1*)rQT+$pSOYc=5P5|NP`a6D{(t~i!w1eO?&PH1krjUQquhU_bd!nWtojX|@ z&GweHG_=)e>O+r)E2DZeT*CrnHovBgjAgY8=XsnSGNWikT}=yO)G7^ib!Y%QO4TgN zY&O57aY<_(8tb2S@U*CF%O+oOc@=n&!27%TO+~C;mD=P5(9Sp1$E7 zVer@a{j!JBYPyGVvpyH-{1c9%IyjqZZ9{K6rg~9LD>~%jd2LP0YQvsqP0k+JSktng z)#FvGn_pVHkQc|ETfNqWO)YJu9U87<*|WV9qLVg!XafgiB}$bDM|DAJw5vf@WFhiYzFA;v^e1(uXl_A9{TB(Z7v3VgQ+U7dQQ`B#cZ44aOYk|J`nWk1 zaky~2aHepfu$hRy(I#9@L|x7lo+CV;2z~9MuM}P<{%xYUpE}duFa8svpAx<*{I&2M zBJ}=A^vA*oZno4D7j_f&6b=-Y3%P)a@}q@QgwutyiO8o`^a9}`@t27{Ubsg5Gew^x zJYW2F(N_v@6W%4fpNRaP5dDLiI8&l~2}{M_ zL-b&w?XQfs9i{k##h)lVO#C^b=L+kINY|wJ$B1_7K01aDey~!lA;kimwt*5l$D*CPMEVVV(F5!Zz`b6Rr}j zQ~X83jl!#hKOjQyjlu_nj|!g<{*s96`>OCA;qQbW2|pEXB|`7tgoQ?&y3BC8+>MMOi$ z0ui#9ghgaiajjYe+(5;;S8b)%y=rY;tDv-6we9CpmnybUts51W|MQ&t+?kswqE`Q3 zzwhJxa`T+`J^Q)m-nnzCo6r0@J!*k!XFV)?|R`i!k-9#D!iYF z{{33`gzzch^TIz1Um>F2*M;v3KPFQY>^&T!9DV(bG z8NxDQg>XI*UmWcZDAaKN0e4FUv)RF(H2kc~&xCZwXL`1&&^mqpi{|Iy)q|X=j6b=@W1cT*A z2*(KNJV^a)Asq)Pd;Ei^OFm0@fpDF0lW?=peBVa=*OGrLG~d4w|D$B{Jsk1ZCBG$n zM@aq(_Ja5oX+;}LAl8%U2trq2=58ATKJ0ab>ZKL_>N9*MCSiYNXJ9US;7N}IOu*zeWB3f|D$U@_2Y;*=x0cIwvaA` zlur^aCE}oCA@x5L(ua`pRl*yHIOs`8{k=ku=g&ChL;sxe(PfbNb_mV;2gsjErgI?E zvxIaDq+B4R;~(YW!q&Wfbn0XJJfX+WcdF#pJbgDvf3uKodo2H;kPds4&3g=>d5;0~ z`1w3OzR#79?sm+dEi~^nAQwrd(;d@C3F%Qsd8Uv~b(EJ1R}nEcbgiR)osb@Mly4K# ziH`DPLb}gU{x2bY<0!u?q|+Pa6d_&SD945LWTQMpcsLRL7$x~gA^qB^rz0ElR|x6U zPJO-PCZTyR13i|pN%x+cAe!>HJsHGw8uXs8T0d9Cm7XUo5cU!F6Al!X2uBOY3ccs9 znUZG<=Ljo>^MwnAONGmYtA%TXYlRzxmkKWz-YC39xJ7uo@NVIK!pDVMh1-SC3SSYv zE__S)ci}t2_l3KKp9pCZ$n!^2L1Kom_4A!E0!Mm*()$Rj^gNNx`tTjOgX;b6_!#kH z!hSwR%qpJQ%zwNi2S#wiv(j{8APom$S}(5tS_zJ7iYeEv3SnH{lW`g9SflF zx4U`-zE?oOcG(`sL0pN$D}$&tBGGIleR+a{KGMbfP;x)`v?hQQxg9 z(+|jSMK3)6;U4P+w#DOKp_gw#|F6f#_&V|p^C|;+>*XQD{r$TN{qyDzU#}DWdlqrW zwc$t1vf=~WHE0C<^X7tx+ejiDgM4u)4}hi}4z|ns*(T~sgl4QifB(GtSjL}k3;OqZ zqExb7@G%Y<98ZSgL4*7E8`KYf@wm&o=>9M6*KhD(WISYumwn%SjAIWr4JP;)JL1lm zaYwN93b^uLJ*V58R6E{eb?Z?2`A469K4(tG{boN1QzU5L!TT{M@*-cSy=Z`j+<^qw zp!uF%g~UMb4r2kJz2i@7;2I=h6}SfP=MDNbOkp6wHFyqd2vDEk8r%R0{DOm#;zYt* zQBjgpuz@-A&?iTng5(5uI%IL`10*1E#3{(VUL2QG5L`7QkP_f|2p-(=Rb&kX-@^Zt zYmvzgG(aB`ci^MYgv1>ffj$M?ftMm{BpABh8H651KSmEiH>PvsQU0JA`bie`Rw_q4 z2C+2eCwE}znrJO#!*Lh7F3c-90Q$ES^f+`=C<{r3JMaKDd9%Z!fh<;dYbV;#lRNNy z=rD@Hh5M_;V2u3o;r?lE2O_Z; zGKKqRyJC8bzcz;ZcXCC;9T*;v*3MK!?!fENZYqf#yFq2fh6`W;;(6gAkvoC0LL`O{ ziF)Jv6I(k}VlXzFsfS67#6G}1COk}Hdh8g?ad^1Ij2M5(4IeHsJH{_+;Ugq=i0x)- ziNwyan^@HdiQo?8>zari9v|WF!?6$8?u1mvIqR5FD?Bku(E-y`tPQI^$_xy0AjT1f zkCwa!k%!5^5-kii{zJmPEZ@bQs3h`958LMG#^eKN;fmf}u9F!m`cE00#2)JTjS z3(xJ!$r5)UD^BHW1|Di56eRx*xC8mMKN4OPxd~!y2FosP$2c2G=P;Id4dL`~)n#-; ziTU9>BDok8xdX#@W~umG8h3=j9q8ttlJh9X2kt;l4!HwgVSaE2njg`@ z8OQ4?4DLW)N`^adJ1YQpAg>X_9rz0>z#T|(Gs7KtDysx{;2cbuL+-$8D!?7s%j7WJ zfxHyllk_G!>^n(DWan^_HlSQ6$ZZg^?T?}10`+C3$~&L$nM^FlWt+@|@*SWscYm%z zb1~!g!RvCGC!=?5InCe>f1LL$f9yTKi3%q2i$b_>S~?m%}2gE>(a z1$UrU1X|?4LqS&G;Q}PK34=S3#uPahGi!;RX)G&H)lSOb4s_*|99o`)TXP5U^@qCM zaeH`m05@P%brQ3JJCL7dxbx)Dh$Rf}K=(WbbKYPt!5zrVBv<20r7*Yy`7uH6z&=a| zcc428mt!&v?!a?ReN%Gy(kTq?z?;!JxdVr@esBl67u@`u7nlz2Kv!~X!5w%$Dq*k8oPs-$GCO5t za0gPZ^JH=dhQS?p85B8_SQoehDR9pDB0CK3Kx2543+_PP)hU>&z#Yhw!wX6Bf$xOD z9rzLyop{#?gFBEXw-aCdg~1)jR^9e@d4<3oxCcsb2U6A9=54^NZY;2mp$P?fp~FUz zdX5nq(vXINnfRZ|HFzi@rUT&kBl&a~+=0CFfje*pN?nIS z>2e1~z#T~An1lGnc2)dFq=GvT|Lyo|h@#&0NQi(tuo}6*9asi!6ik740o(o120iMt1%W?t@u4&Q=&I*cm+oYQP905bJ-Kle1- z3Zz~*66zjB7W;NqNgFpi783)OGL97nxt0-+Q11^^zxZ5aD=MR3FZ0(LU8vnns zTk!Ycmb>5O_e&h1TRC9w&78ZYuBN#R+kzKWV0nDe(HEyU>FA4Fq8xn@OE~%>o^bTV z^6?yfp_ZdB?xsHPV%$H6&0SQpu(`0N?r^ifLJ23}C-JfAWQXjOjCiQc=un2UjJ~_M zDIF5g_9^j{Bj~Rgvb)96Ik+eKTvc3ei*M<5;+qMd>zlV@dSc&u*PEx6?^0|3tWk%~ zp59c|*fhIhVR>zNW543r)%A@F2FxBcY1+7HWrJLtJ$l-d*;5+pPpqnFZkm1Ms8K$j zsur#$2@fGS!__Q>i;(9k>A8x~#VXXO!akTRZFp6jGIhZMScB(8fI#mw{TIFTP17rJUHdD;;tWLYvKGg zcj1B-t})s|ru4MI!i4vz zm2lT=>B6=b4+n1{(D|nvu2%_%OHPN?>dY9gF1AA-r80~Hoph(7Wk%P#&2_e7FI^A4 zFYzlXgEJiFxS#7iR=%*zoQ@Vgot`HsUCOMoiIYc7C_BdU;Np^4kaQa|ZfWj$G|px| z7tp%e@`cFkcGmMys;gSs4Bw=Lqnz6rD4Hs3;O<|8G0KSv{lZ0DQ&(17Rm(GmIWKSR zG~)M)8UX*hYTO(a*3bcKNrlh#&+|G<%$RY#@>~jy=iB@;c>xryTQAZoCl_K8Wbs zmpf?HmM^7mtsKQXXI)%m^xDHULTBGH_pJDqX;l?YQcZ2cqQIInU^d1G~9|9Ii#0rA4>y81%QZA}GAEvzYTs;Qd?B|U1J(T76ZK8a1x@w31$ zS2q+^)YmmPmRB?n$7Rye(+_6@)8sm=f_@If8XsnHoshwK|`i;ssK4B`Vnwshxo8m(YIn{+H4a6jzSl`(5 z+s;2fw)x`J@6VS_r2?N7N3@Bo3BVERKhbwD*XyXkIcC3;I}9Q@MQ9TLAIb6)AYSDHw5e>?jc z4|jWa=u3Ru>H0?9JeR5X3W8@fD}XO6JlC|tZ71Y!m6SUYG5mZYGWC*vsLf()$Vz7fuq+7V_61<}>?D1C6~X@KWi`zS5BI zlKhD9S>fx#_l11d&iZnN{e|XNJm{xLHv2(CK2P!{;m?I{2|p6H$ECx1^MnJ0BZWr` z=Ljzs^0!2mGy5w8Uy%H!@IxWlN14yqF9MH}e7vw$xI)O+z|4Pz@TbE2h1-NL3U>-W z6~?gOS-y*~P&iyTNqD@lR=865BjHs-?oYt_j^Qg=V7ahfxJvjV;VnXAZ-@L(NdA*B zglm!Yv=`=LrjheT4&rrNZ&TqlMFjwZfBxONGmYYlLSD`QDW6UM>8I@TWp7>#wx) zo5uSN%JXyNTicD{S+MA<_VP`9Zv788Aj2GW!hw&7#FNKB#Qg!&X+k&rXFlA1O=z8u zX$(DZ;F8^EKD_k)Lc9L=d|ZzVeQ;oTTO~M5K!;gBZFrc62jy8fygndm=n(J4TK9sN zHUkQOeG$|*AM1tnacz0^RU__|LDWjch0(*C3||`8vp*mG6Mw}53SL?>WPiI2am(5Q z9owbeYxgX~y)uYe@1VXoBMM&H>5%>P#k;xJEbHU2z54hYgjWVp<4?$I+Y4UW#ZdU` z>*uSFw+XL4KKFQKSO>R-;?Klh@X~IC!e3tr>hsPUpGv*@`255&Tn`NN6Z@PeLV;;K z9uj)_Ztn2qwr1Ov4`4zb9ux~a0myb4w&L*jZ!G%9dExx=so3iu{hF}m8vrIuM1B6X z&%QAbebZpAM!tSf@~t<9Wa?x6Y}31j5Vf`(XjzjOQSjpNgj zadA8u_GxQ2wBJBC_r7h-Di1ad?# zqOIAZ(0aCJ;~3wkt=S6JnY1~l6RTeJ1JV!mi=MxP$n)+`I7^=!@Psg|%c zdmCByYHK#1iAh^CZvE!7HCx0wzoD(!5DYwFYsTg5vo-rATT9xS<*~KB+M1CL#Aj>v z4(j#Unk{43lD1}lVdlNtnhiipNn5jr*zVqK&G@~*Z);Z0>|bSTMu)Vdt(lqcq^;Rd zjyY*-_9QDy+M2Or-@w-FZ)hoDYi7(L_GN39isrwCt=TO0>z*jD%K-MNZRF(NE79Gj z)@N&W8_#mm)@%gJCT-35k?ONG+d(mDYjzQ*=ew~rqd)1_wl!PH%t>3b%PA&p&G-oH zvo)h9q|eqYlYLIwn*D{T-^$jk0Tuad&2DAAK3lUIcFJdKHiZrOY|Z}WrYCI8_yyT- zYlhFA7Pe-_?9pdyW^8zTwq{Mdh~hxUvo)K^{61SV z+H?7B&FFaPw>9H+)xy^7a#rBCHCsi6-_~p#tMuEN6;bh@ZEI%iWIbE6HMsdCZOzQR z#Aj=^l;ic;nsL9zz1o`L6`Rl2jGGSoZOvY%?6Wm97Phc8n~PGoA4Yd-)Z%W_x%}e70ttSpF+)&AK!FD{RfK=PdYa&8}wu{I+J-u|s}avxAw# zZ)H>0(OnS4U%>(ZtVN8 zJll#7(SP6aEMfhTq)vB@lZ^Gn{|?JBoDjp$ZHVX1KWP3tEy!G6eb0dDJGCRD-Hl5| z{!I+Y{8mrog8n~eMfPtQV7lDj|E?X{-b~H@H<*}xm!@T3X#&Z`yWimKf0V&l!t&M6 zG5^2H@+=+Cru*&A@J0MT-tKH4MDp(M_qfM=|8{3n_}vCSpnCRZRgxD9PZF*Yo+&(E zxJh`Gkl*!LAAdI`J}lgCcjnH=e!DYw9`@Uvx%05!?#!Ks|7~_>d^buvuZhBG!XF6B zgcU-*H)Vcvp9PxxEbv_E*9mC{!+hpG3)~|4E+JofGaWy;|EJiY{m&;d!(4X4!Pobk zR|db04Q0HOF`*m&Gap{dn9w>O(-^*QJG69kID&R)FNC-I345V$YloJN`o3#Bv~B2@ z7rc3CZHKlzZdnf^6URZ@B#wpSYHf%1+1Io~8-^1^J15rnRd#4yVFbo}Uhw+I>(6hO zHPKfe9(NM`4z1tUv_q@(jrXhU z&}M#3JGAq@rXAXSU(*h)8U5SI30LsW0qoEQek0Da!NvW*t{vL7XcM889olJg>^Z^G zRJ%i|)y-o&vwk%Xi_X1Q1nmj9Pp6N^9py`H&}>7N;pC%c*qsd{*pXSduLJ_26$Zk` zpr$}DRDwY|_uwCR%_^BM81BuKNQg5LXklxHv@p_~L(n$t%laXMLoR37l+84mgD)`o z68wWr*=^Uf- z*^K`ri+U@SqiK&=+G<3^Up5?aESGg&7d{zkaA?HH77d%S*Nhmnoa@;9%?^t?+$jn+ zW!EE({AI^O!~~IIs4e5pWr)G1tP<%NG!3Io88K#lLN3l?9Bqid%xy6kYr|6g(_AqU zdl;EuQ|5~4vG+}CCs*|N%ZwRdF8RwAA$KYbU*5%G#)h^@I7geZGl8+!(Hq#5xfNKk za@KdK#9%CotsN#Y65EEQ0sb&W%cd~<(UQquHXRB& z)|erKzwCX)jZIlU^unF*6EYcR?Ju!sWhrjYg0b6KS$TA@NsYwVG1!!GvczA;ic?FG z%tI}Nf)gQtzwAN)ZOTZW9*eQ;;&z5g9Sx;(7)!i{aC*4vGPWQmZOX`mB>plL5Pz9E zCjK&4io}d<&OOmlsDd_S!_g_&l(}NUrtB!x9mvgy@v?zUnOn9)tRMUJkeMa&m;ICC zBVE?vl#svdc2@ORm-~&F7dwoT{Y30lBNoK2=ZSkV`l%5U{AF%K3H~y7015swx7}ee z`f$Of%n7rhl30IM^=!K=BPRIE+^R;$YMJ>@>hr|d85IAV`hXellvrPm=%vg|+%?Ew zX6V~qP3NSLzwB;|8#ZOUg2`WY3rF;Z7907?*dZ2eZ~k$$wEqGBQIGS|1xan0bO8AY zU7Iq_PR?}B1#HUP0a-aSQHVBWi_8#$Ii1)LY|30YlJkt4-qn@U4FwNv%G~l9Ii5|~ z&+rLO{<06)Z`hQ%>HTtEqYRre)rvQJn)Y|7m9p*gf*q)pj#ru?uR+WOL_%)OPA zgE^P7 zDEP~?BG4iS9tyJh4w-1j@R!kvET;<>7x>GJM;WR*kuq$`Tsb9&I}?zjj*Opw2fn;g=n z%pJwpoL_SkuqkUa^-an7Df5HB>=d+4{<5u1hfSG#!OhRPm+9aybLEB{-W+LD=E_TR zxM=}x%DS3!4*oJyo6@GN$SA;H_G9)KHf8LAL;kWW*(KPNu?oXq_6MZUrp#4Z? zOifh>VEZ+K&BCUPcRui!{fZ)N%D5ASZ3luuv!zHRxR_J)GbD!Wo~V-iWpoNW==V^q zikBhPia&~f37fJgDxgi-VB`XSSqTOdz07V`0I}^!_!kPg|5qa3F+I98ltw4P9D2$| zmxZ#|qb^S9e9T|;l+XdEBa!@Nx3Qk(p##n_a>NR^VTKi<(2t<#W_M(_#aG5JR}A(K z@U-jll`)nFRUAhyn*v|iS%{b77)c$gx5u?-?e&o7QO7RW8-0FFKnp&M)PU`SX(`tPLB)>FJLA zct%N3hADqLOnI=cbRk5Y4_ErycGn;f_Zrklcrmp`hMq^1nvV0#OS@(VO zk#Vhl86O#+9>GUOV3sf8Bf}Dc`e*`k?9D37tVLv;iu2~u1y~IcR*P@&Xt_B;^eXrw zI~h~KPUg?_)$C-f${+ml8eDk$*~#YBEs8fAMiBhQAFmP{$QLZQ7S_z24X%||mRyFH zWj6S57A~r+vc3n-wr^r1Rz0Bqe*`<(6A2r!P@DWvMi)|(wFg<5vlO;t1$d8=QoIjl zvj3U(VfzWiz-ach2*v*InR*!-t*=EG*3#0*XCsHp8wM(0$|knoitB3M7UXK!&lk3+3G8u(xXjSL{W}Jg?x*L!%{}H)0{%BLj`3k~ zZ+2gN`rFSp<~|R9mwaQK*Kf=><}SE>@Qv{@PuhL)+r_ux8|#B|w7)7A9wFrSZR#fp zj}aa#ZD!+{3~*gzpIhco)I+cEY%DvT(L=f$&rzU#YX)V?t8@Q+{9Q;5`Rrx^ok|3Hu2b z3QrO8*D&V0QFxc|QQ;qi^sHsRu6Uh8EEEnGP7)q3tQD>ho-e#Y_*3Ei!fnDAg*%0x z3S)Q;#CE#~3x&glM+wV>4Z>4}d11GFvG54tWMP?bx$s=!M&V7uKM3Ctejp6t^$`2l zUYIW&Bpf50F02wR5}ql%M0lg{9^n(hKMVgZ{8Ts&ZxY%5vBC|)9}9maOvBp-<~vZ> zTi9P{_PIp*c*#?QGla8+W`9fMYm~fEc$4s6;giBY3jadHIekO8gNVL;BBb#JV$|Okh5k<|G2wCj&pXaamX;I2e}WH%r#f=MCoJL3tJquMdbCJHrK7 z`(E(UW0>W+<$Weevq6M%*idsC5_WIsl(xUhvYELgB@kwhhBD zyZ0UR_3XGd;(;grCH0-&sy^C<@fzkhIBahm8xi;S?_Si$d|vRf`n4l|j^c0`+l^2QPSOH$vgB@A7!^ytPG|S08O@ScdC?VJcqiKJP6G$V}t$kkHH5 z6N_arbYAfCZHIz!FIRAyi4_kXIK(yN z+BcurrTifpA4%?b3vhkrScN;@nf&CI&5`Xp?5f}?*8Bl$op&7P$o2MN!`D}I9%_fy zhu+P0hOO(rJ}^4v-3+Jnl5uMbE*!hA=laR-SZVz?m0mh+cXpp?yE87IwmZ1hUN>!r zb7RjF%sRbK*tPQ-IVGrAAU6|3op)|1WsnXw-zFPWl zsdI(3aog?=TTpMQ)#Ir>p?Tp;rtS#Ne{n}jrhUb>-SI60OCQ-2%xw3rHG1T`RxrBZ z#T}8%;N{zP7i{^hPoD;TYUb8GRwC!N9kB_hb%b^BBYPs5+jjTc(std8JJK_|U;M-# zC-cP}ZN{L^QQbFf+g-BdsXfk^oYHQkN4{%0Y-tQyYKIy##yFd|?H-Gk!ehFXdMTmJ zSsMbE|FUHC?u=nC?#LXo6{UNXTIlVREpD#qyCV~~?VhuxM=ATfZAbeF!Apjf+MByy z5xR2Q?)e-o`t=z4pMySSXFh>`=dk{g7k3**;$6ou2;Ujsp{;wyv-@Pv0G!y=`~H7Ps9lnt{hq_8_#>87(=iWmHb-i#xhz1~)ku zVeD+pjN6pjy?RSGv=|@r+dUEAsJHDtdrR&H_J8e`7k3;y<`*R#cXC$pQ6_H;MlvQF z;((l~Ax?r=taoGHAyKm%dl~~;#-V?BUUl>3uy~a3~ZQH#CXT@e) zBhf~n5Tom3b6woM<%vB(I|KR=(D#MD$bNiJn}nu#-L~BiVg&tc^xtShms*>UH@K#x z^PJ(Etlri;m#jVoEpOj)2+moMYkrK?{jojHj6oN_xMSdq0M^V4TOQgIozWhxlw$6N ztbcLG;2929@+)XPkkB6j{m>bY?+GR}hppeX`z^G7=!~s<+8FKdjn);cX!GzHLDX&i{I|)v10&Ws7rwZoBr|a7w%w7RKe#6~Gg8{F)EoCG zjC*9}<2bi|?Y7++KOcjX(O5IVL<+{g5#w*u=40!#-|UXO(sQG8=}26={Wp!=osphB z0Cxf01A49>wy9wKfK9!2y{cpYVBWGi9U0|cLuBr6;(wE=7 zvJ~fjle0d!F1PfBH*w9c%YM`P)j!j{duz~Mh?{IWHz~Wx+?!hd3)m^g;j_aj#0PrP zM)YM$fzU5;3l0RrbFU^7bc!U*p8MV&AAULp6%!s7VMLCH1*^#gB@w5iKE}n(5xk8q{Ft90Q=bRn*2b)sH!{;FNi#&z2-}871`DHc1Q^=e581%qw59i+#w>OkNp2AA> z%*Rvc&|*|Ph0YDEyyc#_uqoxnsfMS}$w6M&lycHCKEuBRPoc3x+S{JEqcIR4Pa!G2 zeLRJip?lwyr?3h&CU^?t7?6*r@CeqI>5#$x}EDXVu43csJ+3wf2@$RtnUx$LHYPh76Lj0-VO--4%b5&M<2DILb9 zzF<@8?TNdPnUg$)A5u*66!LM_$5VIvA*>46q19h1y5lC zhveree1>)W_wp3-Ivj;lrOiQ&O({1FH8OhlHmA|!DQt%UBzX$Wy~M{;cp7KO$5VJG z$G^8dagRg2$vtst6zk_HY{!Z5@f3!b-rA=0W3QV5%eN=)wan_<6Sp5_*p!kYj^=o4 zI3OQS;Q{QmZ%^D8*=rw9AuVtHJcUPbo%{C0tzmv2Pa$8p`uD^wVSXP^;Y7CQ=P8`V z41S)%-OSm#cWpTSquQk^!amF$9!F>dkVTcaiBiSo?xnL#0A0)!t)Qo;O&Wq6>rD=b34h*;{kYO z`5AQ>2y_Q>ZhsHmRvcI^e96DxT$iT5|5wa)v72$ipjrD4=WB;!W8^Gd_ZIoE22H^F z#iQg3^Ntbgk?}ktZ&Hr6Vtas*DL9xwJY!012kN1h1l`DQ_ZYAYi)z_X!gQ3%9Ri zgpM33n2MB=&YKx0*STXg&)Lj~AzWr+B;I*5>8JUlwJFNT!MK}*Sx-uCa5II=lZwb@ z3SBWJ%8|aA0_PItuUf?jZ!eCuB)FN8g+@3jvY8Q0!1k4<`}h|KnP8(%1oor@qCADf zi*cASpdXAMh$>t;vYBzV?8bJQwbfq}38m|XD zYNAuJF;}HHxJEIEJRC54-vD^rM5obFhI3?FC$QNQO!OE+rHM`>a0LXcMfl$`a2W2d zR#ORFy(yXm##szwxP1j9TtQwU(o8@f5m?KaIBe@!0@o6HLtq(bq4Wh#6>GPxnS_f? z_SpnC`%EvdTYED5Y-YdIWS>QFv(NUj8{|3Wxn^+7Tg)&A2i6CHm0%oZburF~#vt!o z!3Zx;2oJ7c#2v_V@7ge#yo&?E-7CB+!<6tY3zN+|6($=`2KU7<*?d!Jx_}-egS$e_ zt;SPUBSN1u^q!FH{jkoAm%6=wa0MgmG-j2+ewy}t9lp=s;k#G(I{e@Yufw>hvb#F- zcbhX`XU^hOf))XKKCClZHvtVZaNdI^xHA5;?`v>iH4wP}Anxp(=eee*QwZ!W&d1#= zP-Sw~r+BlDvfdD|@Vyzw<-qQ<*I#Sld$W$r=tzs;F!(elBA#k`I*oJ6VWBkwuS2(| zC7l`1bg#f<_fAN5?-+Kkz;tgKfjtdajmwFAyNQkv+{<;EH{}>%vZws=W&(PV3`St< zTAeo``XCMzCGZAe79ArcZU+gxTbT902z?cCq6uBm3Fz-jEC5rO{Yk7?ukDDrU2z2< z&%-M`wdM#FBJlQVB9_H@bXV(p_O$-_n;GZ%Md7V08R2%3xaDqLnNr+&GX-}<#}N2o zn1WA)X#);4pM&mwZyI4E4%Bh&Dn|7Ac zm`izfQ7D>na8}643PrO_Ks8~fM-j3)#}$P_?L!f0(wv-lDB{$_`xf^Kg;Kg@L7Rn0 z-}WeO52K2azJ+cgqKG(YMcJXW6np&Icqp7woRSkt?Gy?Z^ga&NwS~$#spyE_OD6TM zS?{zdavEnk?TVcGxU;0liN;O52>)|?JN3XgQc#7{#-22(H_F#HqkMK8gKLaKT*emQ z(-dRxQwFq0NNEdwbSAPbi?c*@7@}>85Nj+#Y)QNr(nyH)>`FG3XDc-&S!=G_ODqFaff^T~u-C*g8y!94 z)==85U((6JzD^d0LOJbCkBbk%B=k+Ov5uXShlLz0x=`EBAtx`?whL3RjbBj~Tt2S~K0PfR$Lj0Ks+PjTqr7omQ>zWD zecnL0_N}rd70vavb3y-J-i&&t}$tT{h~&6x1xR#hGBd?tfu)j)u@fBwKa8CSxs%y|3{42 zjpcQfoDa9kvIXG9ubUS)|60yVc@ws&udOmOR#w(jI&R_^Ol)P7Rkx^i8c$G@d@!e> z9~D)7OKTQ3S2bd<`%-Om-_&<6emcH;bXl2OuXn039W_g>vij=krYa01NrT@o8PkPX z89b2F#Q`=|Rahqt9^i>5n~8$QDMnp~)5PJLbJy5hzoeo`=L_{WPtznVE?>B)%HqcN zql$-o+nwy=g|!t8i-uR!H)5;V!rFn5o98d8oeQjnzPe%Yz`~}6!ph>o)GVwoZ!RpK zTQhuqd1ECM<&72dhhvr&52-4w?OojvFPvAoq`a}Zuz$R8@_=|@bzOa7Q*&cY1xhWf zDR08;LRqZ|F2ocx*VNZFLC3uT{Bm_eVMTpib7Of$^Ki_jRn{;FD-08X>A-^aE{)o` z$+cX8PHF9!xx^Jy#-_}Y=OlWCa8cnp?8hrcUX7@DKIXlCZd20ts$yY%6Bct>Q)LY{ zVW`2$FuO5WW%J5wYs<~`h?sBram_biW$}`oTh6l8ja5|(Ynpf-x%|t@rccCT1?tAo zw73RmdP#*Dlh?cInuTn(VqsNz-J%9BbJ=2CrI;(TB-n-xQ=;Uy0@juruwq^xWV8I zG?mvj02)T~^s(y;OxNZvsX~of9&n@4=pRl|VC%3GLB`{04R1@btaW2c6+yq=B z&Gie)7UJQLC)mGO&7`4hb)EU#;2Ef@jJqvkdEwN!r!3JabGEAMnon-P9S&y<9}V6q z$A!d+^HZZ6k8G<9r5ma$YN~6hD&5mmg+)`14-fO90{_&Srm~8qbc znwshxo8m(Y`}_Bx>G^GMa)yw>?>pDe_f3jlq(-*MTN6Daa%T9fl(R$U1kZJT7`VV5 z(Pn$V$ql5o$s5UEE=CN%zw#>F{VcmDqM;#U3MW}9vGAm5AT=d3m~FSWb6_3S(LT`b zWOuf^2FP;OGWZoi>)p@&sgCzGS4u};0lhp9zT)|VgD;1CVWA- zL-?^U4Gsw`-&t5FG_+yRlOc@hh5``yJIVhL9)?>X(>=er<0O-ki~4!OWy00MGlk~~ z*9)%}-Y$Gz_@?k9VHo!)*55(cTR4D-b3a6Q7!iFvN;p;c10u@Lm0T^P&k*&CB`*`M zlKx!D7YMHuUM;+Vi1N2dzEk*1=^vH+gz#zU|0MY(;V$7ng*NWR#y?P)E$kp1C>$z0 zQaC|)oUlw-FKiN?E<8(kiExwfCgIP7zaV0q4@mxv@GC2+fOLoY#EGJ%#3T3Hm{j#|vrB#dR=U$lt*z@5?`NgYsP}E)JDc&>20@DkxwLhg{u`e?~Rd`$SX@EM``JVZJv8=3DP!uN!q3mtxL zAw6A~A?z%S3uz_9d?SPtg;Rvb3(JLdLjJzba@<6kc)IXh;RQlk95MY4;e*15g})R2 zLHMfhuR`O;j`AN#4)SvoaztqS+98|IXW*gIA1*8vju##+oGzR#oFkkkH2(0YuTk=1 zp<%v;{#40l3(e;}^y?*GBBV7d`+K$UUf~16M}*wIoB94A{G;$y;a`P(G-bY^FiqH2 z$e+lW&Y$Fnw96uz=L+DVk`EVhn{uX)6Y|$E%KQ?<4~JXCnNko51&XLt>O(j+bZGgUyWYYFB-w@$p!jZyK;UwYFLRuuU++yJh;iS$ts?WTv1o1+Ue;4lw69lr`?(7+#U|hp#e^RCkJE(rFK!qp z^uWv42MWe{E*Y4QpF>{oqBEfI$}sIlBz(vRTm>(U?@sU)#VV2h{od~ViSJ~vw9MNo z_G>Nf}qTr>ig6yxa`7qb#o%P{sTcW;;5%f=U=Pdc!|E{ zVV#G3aVQUfp6~rwALpHIdTSn0>lUoPQbrWK`dFq#KJ;&gmkH?Q>pNgDegsQ~eQ^@> z?>BJZP?LS%oCNWSrok_85}dPTc4Y0p(jN?N05icE&O5fV_Fw4H+R*x|tgKRJbl@Uq zUCP?<`mOJ_O%H5*VYhYF3%i3`f>-3spD};K{Pg})N{<7#fK~W|?Jw?5Uwc963A=-7 zJ@#1db>EXZAa76FfKeZ(zjxYg&UuzI?@~6l8y(&lx+4Fc$9Ln5?+*4m;FX{M z%gX4n$Ns4M9&1V79;bQq$La5%b6fDew!!Oe8}qg^YQ)=CN%m^yWf^;ueOTn(NW@<6 zYQKX!VCauX3G|0PIJx6;qYD24mz)y`@tc7Y z37?KO1?Hez;hP;6 z4g8puxAc?7gf>8H{G8w11l0 zfkCz47tQLNw_o&7WkVNk8dD7)x}RGN;E#pB5c1F(WpQT}%2&^G*;wLa7~M+?FI- zBC&I90n2{DPdYk2!tc_tt8s3l6H?9hYRo#{<3@dc(jPGSC^Im#_YR+XqhIAGeLq@T zYe$cd%wg?jzLS2^z1Xv|6n6@OvA^NeM9ZVq$cb$!V*Ff)&h5&{(%w7SNJ-^aZysh+ z55iP0hk(6z_!T7*T@>L;i|xU`Xwpxb9>>uy_(|V@d72-+Ba(|ja_^n!otZ3*)yBPd zqIY>KfqU;n@0JvaRkL6BM0t&J?;RTCNAH#B?!6QJWxJK8qKp`?s%X+r`W=c%Kk2m; zAL;TNbT5FtckX0WNk3_Rd59+cr0?XITKY*xpHf5a-aFB!H2`<-o#=M;d06ZmR`pD~ z0e}GZ-pQoc(oZ`2ys8=Cmo>d z^OMeJe(b&DuEl;i8_{Ug=O=wX+w=KJm-19$@0}DpSp{;3<hqK4d_;YI(vw); z=O;}^{;1DSdK0J7=O^8n?fd+sFJ`*WPny?N6npRRvNC(`T*?Oge$xEuDT=*!x}t|> z@0}&A((flt-|Xmrwx9G%oJP-2nlB&Hqq%luGfq~HxtI9-r1>f&>hqH(Ge>l9e$pqR z-Zs%A?8w`!Y6ed}_THg@t3QWt(V{*-X}%SS!cUstD9qkFjI{8Rj;;=Xr~*}WU{yXp z=~XOxdeTptKX68Ue$uPhYoDL=^X#?HPkJ`%!`?gRnx?1Z@CV?i&riC7`F(!Ue8CdM z-aGsV4dgcD6f?iiPx@xI=l7Ey%?y4&>EW!w?Kj}fdn6UQ_8+CHA z_f8K^px;k=DvS92q*pV?zvm|%y(|#EjC0PH?@^zh^lHx8H}aE?t_(OYp{h>2>qN2l z4o_~U3piJM^^=~5EZ>!%^kj}8=_h>*8&3F1JHg64IuRlFmn)bo>m0|l_B4~_OyvG-0j?g7|)$NZ{suHR4k0hA2DbDAEoE&Zeeb3D(NSE6gm~CPWnk7gT)Y-=jDf=^b6>4V15ffY0~1_!}u_W z&usG_a&LUeqM!8e0>*|T=@1;bd?jojZv3R@LZ%Z-ZU(Bfk1&4HXF)!ly2Z>_lKBwg zH{rM*hwCRj()c>_1L8>>`7!j*9%X!@C!y&haO87L@TaElG>3aVbsQJ`sUL;zAQWkf z!}XIcZTk!8XgP2mbuj<5k2I>cAihc!El%N1&20Ioxg!p_Q&ZIhkz1+d%{6||RPkqm z3#p<9_4q8R_#|>Yj(j>>z`vQgXCc#xC4VxB&GxbwEBOJU({bdlLn-O%Ad?uy z>V7umZi$ObiS~cxVpbWew8J9T#jYX z4-t$QJ(!w$CQ29F3S}CG#i8|NLa+Ov$%mASL#4(e66}C~_Hh~ad8PQSo7-uTyU;Cl z45X=UsXA1`QfWh3>V$UxWT{i3tU)^26M8bC*9Fj=4vFuzv9l98#G%?X)`|RgER5Zo|#(hm3$28{L38`7`!N`8nudJxlz><7(De3|INW+FNz)67NtKzLM8Id#ZmA!gp(0jLg7US z7a+pd-F>`by@IIs8fbouL-n#chyN;Z*h^xYy?Xh=`%WCD-ff6HNrCmgipVQC`gp}m zy&pkCvSieoiDs4}65zk(IP42zZ?oS1NJz(-RwH7sjg8DeX%2k?@{Ge_x;O`s6DY8YWL<8;(T8PO%yjWwX!ssn^-}Nf-x?hD zy4Xgq-p$B!1rAd$UxeRAf%X0t5n7t`@rs#xUxMbpaNwFKMkaoYJ6GYKeOdTL);S5v z_mKWBj)D>hS@;BOhodKR^_m3@%~5*eP!)F~;yj3d_CG=y?U2kWOwq~6G=W8#TEwC% zaxWszEBI%>6B^Z`$SKIaghiODB4&9$4A~f-Jr1-Vid}$WW_ezR+}GeR%ky4D?#9uF z*_qQU&!?f;hC_2ny~BUz9pG9c8i)V3XOWoIm#qUhX?_3vnI+K@mSC99}pB>l=!xDy9ZPe+oxP7(ihXg+Yzz zw)0pxoq{#sRgB2F->ZlB9=D$R!~K)>+#fDU7X6iq4(8{abB9;dEp~^$*d6|2cd3~5 z<-6>)+*;2`Zn_uTzssJxXJAKd35Xp9xq;t-+EGwqC+!fZ{RTU8Uq5E+B9aWFKO&u5 z6Lt;SPMgEixM3mo1628g3b1iuXMCi_O(YE$Op$#=y3@wpGO$N_J3G@ZNx5XCsrBFx z9(KL`1x3AqcQjt^aaq#kwV>ljxoad=?U&Maq}kI`*xepo?BcAc_T3}Xrl-tIJ2veH zW~>DvtJtfuC$r*SGBBy?ohZakCX4k+!&>9}QrHj_qw*q_!F}ROvg0wP2(#kON00Ql zX%;32o{Cf}{WTa(@c@5;aanGWftncQ8RVaR+;LhL;U$QGYY^WBzQ|7!kavwX+=q5Lxs=}2b`)2UM3$UNsCNVy-We?!qF`24+lVi!#TmL zrxha!>T+!3m~Qn#F7q5@9qm2rz_XkWD?A))i0O$t^=2Z>#33sYt>JGf zfo-!kY8hPe5B$d{=RmGBx@m;@Zge$ZjT8u@aV= z=q$pSCOVaHE{=3-nN^b4V5NTk`GMUw-vo`jG^ZpRm;$8<8TgM=gI}B61~?}eIicA^ zk7ENjy3u4+)3}y73F*kjc1}Ty-F%nQG^8o?1G)oettMphKVQWmUHak%*o+{`%pLGlByKctoMhUwLZEGD?51MbTI5E@V&+_#Dm z7Qmpraz@WPg4=7~P<+e8)QEpU9F;h@lvA+(#&WCsX2zKnb>hE*Z!vi)mR*B`3*IZs zIJ5f8hQDOVu`Jikvp7<464)-|%!;*y|0XyAPXFOJQmlVIg%99l2vExdE7sEnqdXZr zko{hN_HZHv>(9%cma(_&Z4xQIfdoyHC2sAlIzufF+nRy@CIkZ|Ky{{7_K`~Q4b={C z)Vws%_jUfhTLEf$`1&5Ssc_eOVnBXnVp1%dx!jzI6Y3bn98+gfX>z*CSx7R$@hKBy zv+OxY2g6XUP=%PL#XXEo&|c?{3rjBB2W$^F8Rx%e&-< zJ{eIr*bf8UPmIKahwlq;@}jhC=5li;&X!{o{EYNnzK+T1Dt+gGiZA4(f;SL1;V*5iFhJ&{lFHkoa$7md-IK0~jq9!oyP#pd==J7%a zA}rgwTqSh8>z;^%cU~{7L4?NzI4<^-ic{u-xgN(B9Jk@{!kvilME+IB+d!U3FL)=J z>0X*YozwL!j^}Xv35P%MQ^gDS;)SPU9fzs>#>6--an3mH0PRZnKdQd5s;{U09`=Ra zPoC3QTUb|LS5-()+r$psU+pMbJP3}WIPEkJtu1e!Uo@XrPepALyq2-IH$*(&l~q<% zm%|Oe%y>pa7lh8Z^fyDmLZOeh8%tz?7CBH5`V_b+(BIn4qGtFCG?ZY^dC+p%b9xR7 z^>XHtIj3t;sFQOXW4o-P(1FgzRYl~?`76j+IyviBjSt!27$NBmsBn_pIa#50DRB_t zfORAr)H%UGsIzmrgH5*EXQwzB!-6EzIc-G|^p3MD5Krj_E*U66m9u-fZE~-6b0-t_ zDB;t9sis@XK~6@zD8*?)kKLl5DaXfdj;utTr>=18Jj<;!negdy+Ys}Rcc#QN`-WS# zuUj^p;#`cfPUs-#H*L^tb~XrB&=~Z;JjvB>Z>9gK^iQ?YZ#l^h#cUgdLs?EbqE2%> zrO5EiP|QlniWj2Vz8y_tx3(($lq$WWmHu(*f6+?+q}v#(bu#TxS5gCIk@6=7>YXAr zdjQ7U$$63EJs=xnLf%_eF!MyEi7u!^WVui%WcZ72?_6+v(m{q)77VNRbXNtT45hR`XWw5 ziu2DH2$+1+{-Z{B+CPc4JRPS>|8Xn*nnrKhGeMbTSdujU_8c*$KJzeeLM`G7aMI#g z9Sxt3zrPc_<<+XcS(p$kS4>AJWvn6BNpn702`VDnIoFO4!{uv#9U7fRP}-E8R6J;D zf3Q-JO5?lZ%`v1oU_nSQZjf`P9Ha;T2?RPIc^E1V43|d-b716e#-@X6iU+ftSarnH z^PQ0Ee5Iv+@gT5ad=+($OK#JeKqo<*VYCvGIpFrn(CeQ(MO>5$uvT2j1 zj~J~_+y7q#I*GOYT~O&HuD20Wj|4xLN3HYC2z8Fes&AOq*n(BZ%*;&7knre6hE?i5 zZhlK*D)Th-J@WN@Tb7=(vZ-UHxr{3GEUbN3W@U+#eXuD2KNp0R;dZSwYW_O$WM z7QYK;w30Jh$@nGT7yO((oa=pa_L!T`zBqfZ%=w}S-^wHI`6cH9TPD&zo!F6xH%a+K zEP`Ir4;9j6llevqrwWf1o*-N(JW04pc&6}t;U?i#!drxQ3m+E#UiiFlhwvZ5J;ME* zJ?{D0&)MV7!+y>lcOLe0_Fx|H!{h%J&Yt$TH*-84g$2Ss!o!3|2#*p@75;#T`}kbR z)xrhRFP6MaxJvqSC0`(1Fa4F0uNK}Q{cV!(6#kNk&zFal{*mzE0RA{c_2x zg+C;s+*+kyCH=L+pGbe3LW7k)%Uxle?2KBk;O#QMk< zc9g!0u)FlVgoC6%l!)<;m;NZ>H0ftco+Dg9M0*XwX5kv8pDjFJ`U{2Ji=O?vQuq_; ze`aJsNc={3Se;bP$`;pxJ&iD>6M;YHG4CcIYqp9p^{ykF_R7Cs?-O85*B z^*%3rMf%r;|B(KD;cj6BkFK1jbYXj8N8!Q3?!w+gw9{8ORQh4UBc-1x7Pi? z2WQSph=_9SiO6@LW6pOyXv;cL>rCH%W^x6(fmrs69N``<>GMMS+h!npK#!u~|u zvqlJy64nb(6J8|jMuQ!M=C@z;H(zp3 zAw73EjuFDK!imDU!fIiy@Fd|`!XFCP3HduM>%B?%GvOV=dxU=$zAXH!kiXBe{JX*r zgr5m%>BID>Fec0v(v6?#9#>qhWREMZpJaL!G2hX`nZnt^3gJ9qgRoh6ig1sosnU#Jm@A|gH}yqA zv%L%CLnRy2bI9W*&k)WMdR%ft8N3oUM>Amwb)TaJWMMGs(9J?-AZF z^tk38m;AKw86n-c*xuiTtvTmX@Ea}DQ-yT#qTEy1PdHF`nD7W;sc^h-UmSGw7i0ZP zgvPZT@@bM=bIj3mjQM{iyhC`8kX~d=e?j=N@HOGv!d=1-g#QxKJC^15#xX~aG^QUS zED??tP7qEO&JfNLmJ6$dON6Hg>D|Wq*9z&`M)~JLx<*s}weWG_R^cCne-yqU+#!5d z_<_*lma|bO>!sHmv74}$ut+#ac!+SMuvAFLI+j09NT)i=jlz|}(}Z-ZWBMh+)*N!Q z9bvlh6%74LrCv5%K1Y2rBOaqNdGg+9yc3Z&?r|5>4ir5WFh^} zC|@9?pBd$AgsnN(=xxUIZ9@8)QGQiOpEAlH3F%fwIY-!)h_TVRjQV0BeaI+J6V4(c zUzy|z;fd1IfsFZA3D1=NhmwCJyjXg=k1_vGg!CYz{D6?YW0ao}(npN)TS9t>QT|j& z-!RIVLi&MG?jfWX80BF?`hQVAT8L%pu1`IG08Bb=I|ea*2EFI6*3VsWrRNC?gnfkO z{WIH_Tp}DT94qvm%VtWREu15)6gCK(g-eCYg=Y)T6Rs6*5MCv`R(PZE7U34*?ZO9z z4+|d`ZWV49(!P%K`ik&%;akGL3*QmGFQg$B%hCOX$lnc!=|b;$kGqpnf1;iTvRNMA ziM{jj9diTXH;4V)fS6(vF!d(%!2bviJc5`oQ0Re|uMZTA^V(uyKAu-E1QnS9^r@|3 z5YE8&A1`=mQ=!1+Zj~q@djL54(%s*Fuq0@jXZkf4=#^pCUt^K9^*ZZIYxc#NZ+i~D z$K!tB1+R_f?7TuMDEr6x3JXQ+QE+C-c|09Q9p=MAnDtNz`{E;$9g>s{fC;InC#Btgi046L&eO!ZH@Wx9FcuL?c$QOt50L0tjV7siJZTgmx zwYC4(;|3gv{_Q|nFL>>O8*or@JQ?=I4Ol#I$RYhr_I+~$Mh2VKT5|&)2}ZyfliyyS z?!4o)nf!Ko$MF2X-=e8)-u--N_TY>`2kZ=uKVWCD*NmM`uLE`l4xO>nK6Lud;H>sL z9UOsW(|6j-?t9m2YrXUAYWv*`EAVcHQ(2m^GkD_MUHRiHccq+o@UAmvE#7tQi50uT z;}`Eb%9XM)daM_fd4)W(Ay$8}yMgFs94c_%*q~{$t zWLF6J&pdI+uKZ;cyKY$K>~xl8>&LU^?g|~aXxEv*YsW9zb^WZ| zU1u#@guM2!QRwHCo%XD}UHPcB$BBdgAA4^CUsZLk5AS{UK4aQnb*k5@rPc{h z3QCm{tN-U&>)pvtoO*k2@9=%@Usj&=zUy7{aQ4|}t!E$TccFo@jzn%2$~*GF0O%Z~ z8eDwqZzmSbh&_TDox1zC9~qPSBMwT{a}G+5cu3W`aKwQD$n~d-N1%2ik=|t=85eFx zjM2N-AQzN(arproG48lybO8#WbtLFgL%q$w0saPAA~d>@k58wLcv4H!LG68hX?=s zS05bw(ZK_!F5Y^e{M@YvVv7$RC_DF^_qQIH3*Y#24??pQn%}>l8oTa&R=XOLp>XQ|X1@mOGtzriKY9^c=~_d>pJ+8?4Ug!G0`Y# z&~~BU`d9dz?y3=zKZa4dGt}i%p74JBbMjNw6CbkIU1T@~lA|4tq9RT~f-Zm?CiS{g zkfz1NFrOwl1--PWcnqCk2~R_*c?{2oFP=}b{vA%$4GYtWNHNPf&L#VQ_yq(w$H#f~ zJC5QBBHH0@6i*b<4fkLT3Pnr|_hMO25-~aa4#ks2ObZ`H6`fN=Ob_$9l`~qzjPT!> z)EE(?Mhcf=*K{ViJ6I|cz3QA6Pd^yF!WC?T$#E2|%oS#sJm}68RWZnc@CwRjhj*ojHBj zSi)n-gyVA&OeZ-6Z9XpokKuL{)ph2(b0CKK-T-GoSNfUJC>C>}ml4J>M_uwNWMApr z=l&jLB#)tUe~LsPkD>E`HxkHW=xi6s4RbCz55^q_AdlgT%<3T#HIJe5aMzJ4=j8BI z8t;&}>EV48cd1qiWM+hGDL&qNF^U%ekKrix_!%V*3ZKi2o{dvq z+cSrB#p~7#=LN|~^B6k6kqT%YLua?-TNvKOq+aT}UnMm zq>91??DW?q?&R?O?4{qw->K?5E&Lb@`Bn-^S_7G9hDX!*?ZkW-1;Ari!5Y1j#2FmO zoE2WgjNX;OR%WD`>}y8trv7oXbUTIrs7Jr>Jxg5})SYChgKP&phHRZkG1CQ)p-h)Z zH5&swhUeoZ2J1oO6^4VyP|I$F4?`gL(Q;zskI2LUkD-pA93hjI10F;5B{wrIQcQdB z80zr6$X{74@EC5vokSpWc%+2+fyYpXkBaaipaUL5^(7cQhWs+*fX7fTC8HI$ngbp~ zZC?~QgrVzz$54k)h}_Kh;4xG$D9W51NoRiGG1T_cB78xD10F**4w^Z_7cw~DF}zrn zXJ&-+$^nldr;_3^EM$V9Dt zawh8!9zz)s$dMHf+Dtxu2GUJ(z+-qDlj2(y9Pk)YU{XJ2RPY#TITZONlLn6=PvR*a zLwbGzV<~oz-Oh@D^C`YyM5Z$-@EG#bj7h!4sNgZw{b)y)utMN5q%p`^BcHPmz+=dd zi9lvngb%G9@EGb^Oo-gb^uS|Sq0*bCcnKZw7?!G{&Wt#;2alniaFr3h(82+ap_c0+ znTY3r$56|QA|UNB9Pk*1RG+UfBfR-^z+>25DXuajchUkphAe@Vxyg*orv-QnnS_;j zyBW!0p5QUmiY;d35Gw^9L#+Uh;VxQ$$51PFn2}F8{J~?W6_1&b6xJI&hB_Dg)Dk}) ziLg|vO?zmWg;KJkh}Ia-YYc44TKFNG^B``2w@P2VlQE%HJzI9>bq9g3mv11{Xrng-P@?dBW2?1&7ao#!>YjinX}6C0F5Sa}d2*2#dmHUWWwCF=jWW zI1!5RR9?dBk2Sk7+d3#Nq|&A3I5UN1yBTghoaQSWZ>BN&8&L2zGn+SKX3R`u^nZoF z87`YuF;CUXJPgYIaM`SnIYCFi4T{xpnzL}CnaUO#fLJ}@6dU0rty=_{e9D@R(2UTI zsq+;^S#t^ubCTJMx^0lRQl~fy&A!y})8l2OQ+AoueGd5ubu()~W_X&;Bp0>KfP)g2 zrf$jaajL@~RRO+#{ox0L0)Zx-2$9548=c`d@)07nrN*yLAj=`VsJv$o zm@FxDI$b)=8U8fe$&nPR4#|BGDL^#MApQE{QzhQ*ga3wb4V-1vHMY>RLko*q=-H=* zB`x%P0f(9r_$VAP>RRaO1Ba9d)0F;VyM>;WT5wzFxkn3$Ej!`)`g(HT0f?9E7J5F_ zg4;rmZhVwXmp#o&qf_X`$yamHpWS zjysiB`v5!}7VQ_-SYBQe2aMH|y%vUls@K5qPhk>lK-v%wYX4LsdpCgY(W&u2%gf5c zdP2Ka*Fo)gF;*9Og@R3y--b0>tK*LM*^Kwwu%a8ZP0VK#^V^JsaGSO{)n{|6&n6(3 zs7?TGffZr>WSXWWM0Uo z<7KO>O*a<4+u>k4WgBph_=&ug!Wd{ICTV{eQQB>auiYm5$~)Cp-oI;%`N}&5*><=< z&|+ae%f-R41P-O0dO2{r_=)c*e?uMdWL4VLQ(3|~?VsW+;bdP4r?N%g5*wnl=u}^e zPWF|M&sRELGUH}JyA=*)n|uJs^$z~i`UB6@{)xmZwSN+k<)97AAo+e}bV;wajV_pC z2>?R`Zj@2 z6!_c7QZOVuvJ|L=ECmz5$IueOc*4z8Pz^O}7k;fU!HhCslJ%@&N?8YT6f0yc0uM^6 zj~fL>Ve2Xrv=$-j=(0&*M+v&n1;Lf_?U)Zf6>azR2!anqW-7Uu=yVe5qQgS~-W zbAy9(gOS|eak;^)++a~|Fh3VWAIZ5O`luuGMSgH_$O3al7pp-LVZ37nfD!7gr1`P*YnSjIRJc2KhiLY8s5< z(%RaKs>+Sxu~l<%Dqpi6EG#Rzgh$&Oz@%i%Z#%3{LWIiN`SmdJGmunN*Otg}enpu; zHkGP*b@S`Xi|ZO;T!UA7R~!^cA zhul~>f8HEm1@skl3x?-3)a8`nrGwD0A#=cpby8(XeHj!b^`(_3p+^@SSDrKP*owMn z&fKzvCG{0K1<{xq z6?HkKwKa|PC8dog)mET)>PBEJEG%uP|L-RbQS@B@U4$W}=(d{qbr`}GWz|)4iWijE zv%lKrqQ|#W)lk;ZXw2a!;Ebxpm>-qJGHL$~T9AK~*+YFW7nfkDR5cn6l^8Tp&dH8+ zA{}SAk61#@@!|$_W<%9n)JVNmw-}vTIR~vMc>H+Qe4(hTU=REQ&wGWG?dJ%1Jo6v z)r(n#i?B2;Xk-c6ctlDuEfCngAk8grL?z4FGe&Vq84CGN<^1?Yu8;5OJUT3TxaY%j z{SJH{QOMrKuN7mHqL;f@I9G;#6uin_WnCS(&NTiv@_6*|3azmHs}e;^f7xrZu=w!Y zcUfw;VY|Xoy9NC+TdDoB)NVb$oZK$JXQ|zC?J7&{cJs?=Mn8!B7RNUJRvr(v)O-tt z2ksYm@BSa*?ifP*FwQ&+@;Q$>b0^40RFqE_JWp_rV3puPLG@Gt_E(GiW5HVme=7J( zLGD{*`rHOU{G*_QwxHZyaDZTe-~_?xf)@y0BzTqJO@em{zApH_pn58ReE4OD`K1Y} zvtE!3L>?nJO|V$7R&c4{HG=A_7UFLa`FX+L3+@yAtDuW7W6b|J!6LyKf>nZ>1b;60 zyx<#x`vs2*#$os~-E_e-1xp1l6;x-7V8=IR(Vj2CC91PUKy{V~7{XUY>iHHeVz!_< z0|a@z$Y%+b3(gn3LhuH`I|T0&d|dDq!FL7!A{fK~SNRKO3yu^#RdA-DI-7%XC1RR0 zUJt>6g2xG-DyYuBz^-0o{*1Z}X!S0bx3Es)<7`6I!<35K~%0O7p_a|BNkJYDd7 z!5YEkf~y5@738arnBFeImj&My%*VqdhK~_kBDhNMr-Gjd2I94Ss$fsSzJdjU>P!dH zJz3-;!P5lK6f9)krxRr75yrauN6eg ztA4^Vpb%<>{B&dgWeE-v94e?jM-Vz#LBqj;+F)!sFg1rUR=MVIQMONG9AoHEx zv{z5cfn!BJO^`3TWcWjgWXiB_LyNaq>}=e`K0d#@mWYNO0w*@$Yp z8t_SxcMHBO_@>|=1@{Ra5d4eaUj_Nxnd#bse5oYmu7cc>L3y}fq2Or2iGrsKc0Lnb zD*CyCb%Kq8KNMUp$lV^y?@qzaXP_Sz{jUYRv(MaR$9S&@{=4AYg6|3bS1S{6M`=Yz9{&* z;9G+43Gycsrt`7jr-EMyGK?->FiEhxU{AsRf&&D(%ZKr%3!W=@fnbH;g@WGM=mjEk z>ptVJ6uesSI>8$SHwfM)c&Fe!g1-=aNbnKCCj_4nd{OXK!OsQx1%u^q1rr6+1k(kh zf?0w?1oH$(2^I<#2~H54Cg`2Do+a{Z!AikuL3QRDRhLTE;J%jekRW2fR-3g>mbXKfS~e zx_&GlnzAjupG%xPAg`bIMq7J>3^MbgQ#*Hop53CXuRjC&q}T)0br5#`G3XU_7ef8z zOGEj*_Dew+?bshL!(lAf0o0Y1-7!6{Er`D1Va$YG6iV)Z__i~ki!lBQb<*m;mmcGI zbBF<1DBnBELjUvZa0YZ#ezg7a&VUX-J{rwaYW+VyFK^_?kZ{`58l+o=t!J zP}In2n$hQ&rswxY4d+mrHK55p6tyx|AG@~u>g=YU#RfFbIFdFbW$lb3$wOuwaWiHd zu@h4vB@W4MP6I}VbYs{xGmfMq+}@J4X2xFY*}=`3tKGH6vBtrFxvc+&K23J)@knyP z^Lvf);kAje=OcqQ^j`Pok-9z4A4y;R{NBL$A5a^!=#wg8u-lKFeYZSnhS43n#UIv$G(j8+HWL`fo<}J(E48cEsOE2 zqk)f|qvpZPqe)*lvF;m_$Bo{X6ky3SkJ^Xrwf{0YX+v_;z;Sl-Sd{XtBZ-Mq_x))Z z^8PHjS(O5%cN5*!_J;JPqS$S%w)yj&WrQh)8-kzH? z*7dk)OKaTt#MZ#a&+m;NA8L*3AK4#oPu=(af)%lDEvf5LZoaD3Fj@1*TP>3{PiT&` zu=c4%2~Fq5;+ubp+B>ar+hh9!fvohg`_0hUSo(g;O=zCF@9p}rs98_Qw#)F)Eq7v+ z1dfJ2caItepEwjnI|haiI%*!8yw6CSyw6N@kA@CK*0}2vTkX#x8`(>%Vxd-R;i}f4 z+4siVTdnctEq1fj8fs0y<=$B8El;$9_v@CQw1zgI{2NxrGS*!hOIw%J8hYekVmn*o zHV4*iLHQG6Cl)2NEG&9{uWcsW6j^Vz1e?rO=N!A)Tz^vRgUFZZ!JCtt$Kz`@QW|fy znls+q8-F%h!Wq3k!9W`?KCj25{h|0j^a$P3y?GM9j-#9dk6MTAHG_^?NBWKX#ptAs zWB0j%B8+C#(XuxbVT3zJtxtN63pd+qQC9a#mMV;);D_hO+u*kI6-`W~jWwZtsPKb>{Es|Hc>$|Q_N9(6; zcmg(7tFb-(mdN_iv7f~@#U5=9twIlF_Pr&s)%s#fYXJQkIFP(y>b^ZoR;C;4PK`Yk zyR{YDE7zH=#+_Z)Pu_1P?(Q+aX!3qH@sr5N9^=tx1?iz%y0wIF9=AU+G4W{VVE5+U zxAaGC(07L{j7l>xx-JBbarmz&InEk8NjHaY8h^wtgx^YPg54**H@LS%nv&PPdF1jv zeOjjOdvB3>%H(}^;)s|PON_;0eQsKQc=$b-v%`mM=->P%=I@)Bt#4wszNuzz-JVp` zHOcJXl+zsFbZj%%fb%Zx-<-9fSLG{_zOl3z#>d5pt-(*wuj2!)=CHd^*W@**aSBpR zu{H$PWo``L)Uzn1*;?zi8fT1(t!T9}yRCC#sq3;aKAg<=BG2y)Wnwis+r2r^Y++V} z=H3%ayZQ0fq`7Fr@d%xpc}r;Hv*}a!{qbUqZWF6ZU3_csa~_9y1ixP!SzLm!*5 z_>Jk~a*qZ-={hcb+?#uo&JL~aH#@xXnDw`zcJKT!>1f;+sLN*K7~|kySG>8`-rWCY zqc!1BO=Z%Jk4LiBMQ*sK)yOnjgI(=dXkE&NO|AC$a8XigLViN*waAsNfz0qNzf|)i zA+tHwtr@M>yf(J0)!Cff9EYC9@tqj!nc4jOUU##*;jUI|v)dZnwkrK6vHr2RjcDCZ zNAI_7jLV8>YzyY!h@zLUcG&@rk~7kKZ^*c%`^I>T6V8daqvp}TC(~m6j@lnj+GoY1 zmaY9T5|Y*@k3;({s+=8;9kbp%hGDUoaqz|!SsVJVPuaMtGI`DB*1#gvbP?*f$XXxY z>VCqOPH1(z23n20yAe8?^LJ5jb<(=zX7=D^t#&5+FmqjKBU%Bm-9_d)yTxub4zG(n z6-jG;x<@1y-mptjHd`VaGMjhA;#!hg6PE>Buv+gq73B`JTpxS7ht--`WVQ5+g_^1R z30iJpEE7E#U=KEqLmTwo&}YAyRD{qZ)DpG*y!*!4vB~?a#Ej-#%#B>sno|762p}*sfU>2ujH;>!vri|MgI(r;G<;LL?ZX7<}qQkPA1~m`Z(7$P5b6SCU z;()aSo0cE0+A?%2&h7trSM2TB!5HSo&Nts@8m}?MvtN#dW1mpFseA0V?{{nN5qmx2 zHusLb6&Zw?f;pqcfBAc_;|5IMtJr2PJc(tv;kpMs#Rn?>E8sd8<3_`>gZ$MW$MH)M ziY;?I@@4aO**Z3zH{Lkcem^7}_E(QCZ~~47D-dFxo?Z{Y!T+0aM`b_8I8%FEp;XRn zNOlSI*4*@URJlPO7qhS6zx34cP}wVJGbFWw{tT4G&P%(5e*V^Fk4n7;ew;zOh>4S0 zF4(`v+fW7V5AZ*<36V|vS13$qND|9oe?)b?@;f}q1-gL<&rG{^=uV5zJL4`v=ApY1 zL-ap@6hl8tr5@+z@ozkQ3A86CKV_NPvyftzdz^be^M0EN93SV^Zyd!FM6|=%6i*b<4fD4>w@}2y@JyEFBoULtJVWT7 zEMi(Xo^ekRF+F^U;%E^w!hG!JjuEkq6TqG1+Q=i!AI03$;^}9rU&S_<97oY2C%{h` zJVjLuav*$!@);tN6W|JDmIiB8WpD!U;oEA{J>Q+p)Kz<5kU~FG=X7z4L%Ip<@L$k> zZb_VaewnE`0o*x#*jT~|z=Y#@4v$W92--^^fD_;&7S)~alG-u+4F0(by3)^#_~^!6 z=w*cN;iyZ#0cEXp?{hN|lbitV{V5WGoB-|v-bf%PfV*8JH_VCRJ{UI>Ku&-l+w&n2 zH79`ka92e@nVB4}qwx-jo37{@++C`b$O*84p^x`|6vZPaz;Y(_WbcoZm=)%OANQGX z3LuaqT&assfg8MT}G$I;U5NBl=U`sH*4bzxBVNr*Yfc4r4%woZgU>bT$p z&|}4jw6HP232=w1f*pC6;ot<&vKtx93WF0s%ZZUzWa5GoK*vvxJVP0r0B_;jDp))s zzhgnc382ICBDs{o32<1250CJnxeHDJ9X=|Oz*Yb!K!`s&f)gN(>46hKFD0WR{E@~5 zCxEsuigaUqa02M?36b5D!3mJ4;!lorL7iQ20%-eb5k7o%!3n^|AtyjQWpDyKsLC@l z!g=L_6M$1maRSU`g5U(;98sJA{F%T7Cjid_D^37%Si0Z@n2n~f$O&*K(*P&HU}d2= z0XP+OC%q4AUneP%g+nJ@k1_>qKJH92k3z!%>NBOv>(5V=5#w>#wi_WnPw1=FpQBJs zW-K3^mwaw1E2guB%?M5a9;!`0jKU?l-~?!aMMSM7-~^z6IUeETZx@^Zx&`gXa@HT5 z05T$wBP$-XnS6RN(oJ%~39yezx%lUfHd81tsn;15oB&!5Mc!c2-~=c}=@cgbJx5_I z#qP1&1t-AC=$Z)m5pY&JT{DIlkyOgy1knA6 z1)Km=kUv-S$T>(D$HtQ{PzrDYkQ&tmCjd*JH~}`%0-OL$LU97jWS-yz&GNa4nK&sZ^VS6M!-crDSjdP_FT0 zass&E1XvG6gg=zJ-~^z+?kixMffGQHSZ0C~fU7zMl@vGu*g2d?BKJJ#f)n5^D0*?# zalr||&h2%CWdtVxbJh7D@FIZ|fZIaA2|!hb$z?!|ZVa%a(13aZZIWSf@_BP13;v*; zg8%UxgD1eF3V^fwWHoTX3BZ*PoB)q7V{igYP$D=1NEn3svHMZFK1ZPpnmp7N2TlNP zp6E*^kL6MR4(D+K{E`uj-rW!o2TlN<`3EP!R74H@*i79F!!EZ%=a5(m5(0Ty1S4~U}aJY14$5Ipe}*Sl2X)m4UFgvj^xWd z`$Qzj4IK{84+gGC3O)y+OK-&OXCA}q{hYUiIA@7ec$xR&E}EB%PJlKWRdJpnF)Tx8~52;2aNAPDT znm)(>P#Rm6zX7rL^fCU2RooYl^h0p^6#v6%Opkkb7Q-p>fgLKjG7P6#aEg0iM=Dbz zQO)g2h2#G_B2@8n>O;5zWFFYji>d)74DCy=;sp4WN^UyD;c(gH<1ruUx*4sJh8ics zWna%0{k3YnX^=-zhj8e6vPB&{vbNx|->2P9mEKUu$58i2rR&b@_;#0>)cusYe^cpI zhH=6YE}Ps6=A%l-x0zf6H}C;;bsv_8nHlDRr1PL1^jl~L@eLi?V5~BjK!Za`mwN`s z(15Q!*$QV2W=iSkIMY}`!>(r1Jsm7}LwcdjlJx7Q!7nvtnwi8fU#2Rp6Hr=PJ#scj z;Jc+~p>jO{i7!mixzf@#7O{|{%%lvKy}be|t+!ZngWD?1bIhceXQ9%HhvdTPw77nn z#vqpNTr;WCv($~D(&CTNmNA|!J&OiaaBv{b`ND#W;O#6Xb?pxzNPA>o9C6BCY4Fku!KhM5)_E8a9G zrc$5K&zP7x6eUhf?O-4F+jH|-5;MdqGXVA&*r}$K|HN?+NUUsV0#HtyBPyf z%(QOiz(k#Qx1dU^dz&SS&N4+LZ&eefmEM+{Sp3fsLZCUnfe->A6H_}8LilwaA%tJ& z5kmNN1BUxr60@|onV&k{+&(sVR%m9z4-(E%O#~LAe6$o6`+P6Y!5s~Q+VI$~XfZf* z(Rt_?G$y+uif+vb>P%IWb7bPe2*$_VQiT|n^k)&d71J`7?lI}P5{>~xe%z=47pv9i7oafuG{4 z5cKfF2BCK?4`tdd6e>`3QMfG>rl1Ezk=Q~(cj21RL~gHbi%#M0b_LihAm~m;2B@*R zOgu4DR}i7NqHxj`EFCwboJpufDK-ku0j zRTuiLjXEO=O?%ERy>w{Y?aM<&87&mfZBrm03YBdN3?T}2Z3<*e;qo>G1`7ONxy(So zQlBkeh-wEB;9b*@+Q>UE5PS9Ap;?3MEWb0e1Vdmf}dZqy~yqf{px5+-Q z$)-OIQvr$XTt?3TxR8OAP|pJRxi!m^?}YzuCF_#V{~{dc|1x^MfJ??M-p`IhV{b*n z0{gU3n}IRxB}4xpC8LbU#v2~!YtsycNI624`bW<-a9rXrdiA`az;z4x9$rSz6x|#< zm(jx}P$BfN3J_jiM$g%BAz7a2KNk*^J_MEtoHX7l1iA;#@J(7v;Oc{fUR&lZLv5u& zVZM6l6zdo`={P#xz1tv;;mk2pqSFqE>nO zrQ$1=(^KiS0zF*)P$7ae$j)WH205%6gtbI; zBbR2W`V0J*@%}*5TskL^T}J zA+)D6I>VRFhn>I`YlV1D!Tj|0_3MQ(j;*5VFkJ#cUsZ5Phw6od|87HF17~#c(sq;Ps|x0 zwPEAR%CSzZ9NdqM)YdHzwV-;BCC9p?x?^waUpfkS-4BX9wuzK+OTP{G%h zg+^!4pNCi&HvIS*t-S;mKwA}N(9a)@&{~9(RYNj?Q5p2J2LiY!C(hFTCB&=YbP`1w z-fgSRl_oSBZG0shJ{Jgj0c1d?Z$VVD>n(^nqPL7AA}h}e1yT+CU1N&2Q{c4SG;i#o zPi}AT28;J@bpBP0F?pF5pWe{7~Vm0!6@u=9P=%$-6iwUW0ob?g-o$aA;_C^t30C&$8(H!}04Cj{*&b8wFPg z=UrcCQ-JW{V#`*F!A*dxg!8Ve;lB=UBit=;cfxIh+X43o+)lU`;a-M&18xu8J8#Q`|}+Aew3KoqVUVQPe ze9d`A_7q_%L+^ft0S$AlodFFKNf^-JYhyrzzl{M6L)2qHgIdzX*z$3n{Sx0s&0v-l zUl=s41t2;LofPZ|;x01^Ca#Pqlt0LY?D@;5^D9c63jN*H1}6_Aea}j_FHC-Z3g45 z8<*r#14T60GdGx*n=^Ex1QdetYZz(LU@*dZ*NQ@)U^Ooxb=fJ@({s8Q6k30<3YEdF zOB8h(BK5IevrvNWC`O(cEX<7p`UMO72J>`Mw=bEb@_qw(7v`$Sx2wpfsK~FV$S7^9 z3VKaSdKaum-0VfTd&wjafsx>id~O9+TtyJAm|!i8s-%CX3Kg|}fpnon5yDm?!yBXE zXp5s!PwNF$wXk)csv4}i;gWjww4Sn5v*;o}sLGd(K&zLjTMp&XVLO+wrShzuR`k+- zCl1XG7Iswye?$uYs1-%+FAa{+RfT$hwK$sDTT0*U*tTk*I;sWkYiqvLz9$6>bI?7( z!bvL8Cw&d|3*As7&;W&Kn?kQ`o>{^!^m-`I+Ged*ai3Fht5hAWg{IZ5P?fvIisl4+ z_ERQ*lrlrtNzUy%RB7Ik&f93sRPy^vW~x-yTe^VnOA70)!qt6;_C=Y{?WjA8$ZF{S z+IGLP9bw&IP4dcq0A(+*Dx&i(^iUx76%8cZ7q;SvtV{O-Xt zGy?`Mx=^*@8film5{!EXR3G)RuIr#Zv;-p?(bB9$PR&Np@>yNz12diH%e7LY);v9` zR$CRS&IeUPW^%Z6M`l7RNK?mxsqXi~Qn+h;<{v8apdL~x^VLh)A(%U1_KI3*IO_^RjFl;cX_nXO~Hb>4k5wNh;|CZ(}jcZd{h?Q@CaHcFE@AM&~jDwT}$;;g<8pvN~=NE z?F|Ez<>a(9)mFchwoRpc1X{m zD9$-5y{Dzs5hyZ;GX{9un)S0llxuT>^|a~`=H17-S9b^&LoT44Mmn$8mgZUwY{==F zk`aAj#Z3wpgp#Ua7J{wL_W=||7%crh;hyHk4<_g+Rx4_d<9NpSp!?DQLc4_0M#AJKG>mb&v zf9HlBaUzx_mB6!0Cs}xV7@AVraW0#9q}Rmwn3*IWGr5y6L@y%YXCDsMIZ?E2KaP26 z+o;uBO~Q`Ns#MafzmjHs1Pzmr9gOd#ivDN-x1u@y)Ms*zUU45=y0TCIA#4?Cyu6OX zm7lJCPg8BE7jZo{$`s?L|R`1-XRZ3u|$(Z+M1(qXtb8|UaURYKbaPSDRp|NBxIQ2Y+y+yTk z<)G%PttlqQUvWwOTt&M`(nZ{Ng3As(nZrkQx|dZ9p87tvs-}VWvYO%#e10AH@f3e& z^_+?ZMOau-UBbkR+vq$0d8DJfW&UR{i#AkNRR|^Ny#IBqqG(rqv5?|5l$RP8j~wQS zmnZ_&s+v+Tq1Gtw#6>WiH;43^Ala0z1`TWD45{M(|JX*WrRx6;q@!ev9L2sVt*&k0 zY-}j2Dyymi$)^6Y_rHjIbRH;o)l^3*!O!{KG^A>RtASWu3;I{g!#Uv5ES@}d+-b#U zg3`6Vii^s3aEhWu{#mr4imp>N{AX2y61>G< zajzn7MUDDsAdzc%SyU6Bek1+pKS($0e=_ntgK0+wQ#}9cz+ajN*}M3laBNc6<#AWw z2a+F!t_rTQueSaL45nj}_L$ZqR(w*{SnNmpU&&{h}=W3qP;V{(KK6+Br`@v}icOXQ0L7YnWuaP)O7Q9!GKe#abGeI7XpqwQ*OmM8=8G^F~`Qk&`^B^ekX~EY7 z-xpN;UkK-K>a;5@;lg4YV(Ecma2zY=_2@J+#w1pg)&#(-yjy#;dwPZB&` z@O;5}g3APdEVxPVUcoalCz)=EV6EVC!5<555#*T$+CL-sx?m8y4XE!Xm@PO$aJ=AI zg5`qq1+NgiLGTX2`vspAd`)n#;8DQ@9FJiB8G<>2mk4^ir|LDmu=}m(|15YS_9`+y zU&Bc}PjHUlT*1YHD+I3;yhgA|(BnJZCbHr+MY`{c{F$JG4;kj?@s;L_d^{0-f0E!B zBFg$rJf)QqUM+Yr5$P@wd4=E=qF*iY^@6tx-X-|2M8w}N@(#g&6a8}{?-qPT^m{~p zNAR%V5kVIp%B+XSXPO~$R4`9)xL}ds1i^Cz&l9{*utrevmm>X3MZQz;Zo!`uQLl$Y zenfDW=wA@|MZw>R{%w)p6WlNQPenc|_@(IMkq7IUB$!Hs>mzc1!GWSL5P78FDMa-D zcp}Yh=}z5BKW0*2a|OE{fH>f zK#@-(!hVe4X%c>hgwGSXLF83L*k3DnlZ4+a;oFJGlNa;Ba;p%{sW4eET~KY}fL*r8 z#|Y*Ng8E6tn7JkKNH+4xJ~e3!Cwo$B&a^` zk^WmEzb(i!Ys^1GFjH`#V4fg1jnHn4;CR6)g3|@h6XY3K+E)wK2`&}9RFIoZXvYmF zM8%H|OKbgr$qL6Vt*&{?*;b? zek6EQ(Bp;m_+Y#6z69xI2u1~Y?vVPJ;2DBv3C5t8+*nEd+kyuKJ^s}%M5YZLH^~rF1p5f~7d%#QsNji$rwE=Vs7}wqf1b$2f)@$a z3N8{{B6yYHHG`nV`Y@NyxS!U$9QOi(q%bo`M4e2MZ1pR6PEOH(KN(!P5k%3i6l@ z)1M_+E?6a4FStN(so=FO2Jye2EpZmmkC}YxLS~>ty!L}f)5Bj zEcm40vw|-Rz9y(BL=gXo$X^Qb>=V=NBA61e7kpQ6ui!yJ^}Ys_r&Z)H z1$i2s^-UM-E0`(Blj#gs-*bSoMJ^Lm?_q#meZK*!_b>ogO86?lYX#Q}-YlrT=fGZl z&jD@~{Wig!f{zKR?>Vqj-*bS!7yTauL29VV`)5I(qG$ON1k(i51$m;L;ll*g`x+ph zEb@54iGnAotm`rZRs zeeVGt5dFu3>U$6LUx=)}_dr(Pdw}WkJt9LeQ&4^HLHIC{j}sgxc&gwTf@cYmX@Kof zE!ZHqP>`$x48LBmS+GTrWC9GoUy!r_lwTI)v46@R3-ahb8wFPgUM_f*;5CA)1+N!eC%92?li=-wcL{D0+$y+DaJ%3R!JUGS z2|gwGoZxQ3mjz!Fd_(X9!4Cxw3LX|bBKWx=A7rz=Z9!KsQ7~CBO)x5$B{)cMh+yaM zcRWPE^a}+?3l<4Z5S%PHP4G;?nS!$fXA71IRti=NE)rZKxI*x9!K(zX5nL^Jz2G{* zje?s5Zx_5vaEstp!EJ)u1$PMU6nso@x8TcyuL-^(xJU3E!4CvK6g((+Sn!D8=YocO zU$X^WK^`$?KO_sL38o8X2o4e)BA6#QTyT_Nq2Or2BEboQJYd26rU{-YI9ssu_u6XF z*9kTXE)rZKxI*x9!K(zX5nL^Jy`XxIk8*4jd6VGnf_DjS5!@=cO>n#54#Ay*j|n~{ z_?+Nw!IuSJ6MRE(kKj9k9|(RZcu?@L;1R*k1zq``n<$tp$b%wm?{vY=-^;T^KS*$h zV4mP`!BK*Rf};hC1Sbei7F54yAm1}Zo+&s>aJFEXV5MNSV4Yy2;3B~#f-3|&KNq-0 z^s5E07hET}QE-#s?Sgj+ZV}urxI@r;9+SrP5ubtS-a47vaLK&Jk~w%E1b!%2Sn2uj zYScy}SH0OZcTPitkxNDHx9%PIKmH~N@QtBeu;lP8jJk#kdVt}ou73DWJ2bDlI@>Xf z*FZQI?z`-Uz@~G){2kW2Z1KzhdTCR21U7G>KfTKfn+gTK;uxbP;HokBjt|>zkTI;) zb6b|H7|x3WukmVkyj#Mnq%VxmU;TEqJuo-ECf|9m^XEHzqG9Yz)cG<$)`PeL&Y#{c zG*lEi@AATyK;cg>dN%nAbb9!z(w1Hm{9YV*jXxp1r@Th@h5ZVlL8Rv&(<~D& zqHlN@S)+}=>s=5*`4ORp=^^L3Lk2<3YZI`8uAh7LOpF9vVFzUy5O$B!DRUj-5U z?sq|K?5}cbdly6xtd7a|*|D3CxW;X>`_)Y{qYXyC^w^i5eevb&*~!1!#qW?RifulP z$&|>4rssJj_95t`6HoyQW5);_n_fsT-DRjR=%jB|;8Y_e>kT9jIGue1a-85a#`!J& z1*Z03hk%@V9IgJ1{<-Ow5!~S46gX=Eb{mOxU)nu@GFj=V9BS4A&<2HLdI?$T!MEvYoHE*CiqK=?HtqA)68CTOj~aw ze() ziQzh?Ss=lD3Ue*ePUP7u)!^M@qoL=oL^9M%M< zP{hP=7Ao(YBw}*-C8P_AQ=L>=cs`4Eiiqjq%`_e@Vn+B8bg?r=#Hf+NGtI8)2*)&U z+?{rgX%^e@aZEc*+Q%_Ho9183G0iH2V>$`Gxa7=UGjnmFC%@x{N=w$?QJ&wBMml31VY3G=BI&e%o4|pSi z9MjHrk=*bPnD&El(hq8}jdIaNxV_JugigaPPk7N2)=I`T}PNocwX>DH=;fZI*$1!~Y)AMmm z^M_Ig9Mjr!qF)gP2eMoou*Kj_KtX z9Epy{F|F1TAIJ20tS>mGbqm@Ne#LRViDNn)`6M|W$MmV}OdrSedz5_~)5%=*z%f0E zh0IJe;^{f+6*FM;*zI^6)1@>8$F!;s7pymX>y@E;F#96 zm=JlFwE)NT)hg?0kw4Jh$1#17;XaOOp0;;<9Mk*)>i9UOf6emwIi~qU!SQoU_of9n zrda~TF?|n<oO%r(a} zcP}oF)*{r1@{Zk%{tW+-?iC0Cfw;#pJqFptb>Nuhy?$I9$Fydbjsv@NSKP}+-b6db z`PilT5F!rj(hMZKG#~oKfn8et=md7@FVS9cUuBoJ7!B;wks z%wHl!5=+O1(3b^O6fTnmFi-8;0{;ZKvD7hBbAlq4{vqV~)UjaZ#I7vY7RYzOWw9{k zBo#NX#>h^G?m>hPFsI?@{)_?U876LogEk4J2b$(Ale=%ATA+UgGxT`VN8}e}#%F z4|=U%u6atLM@IaQlIeo4wvEm>fX>fewbH}@ASv#Et5<@PG=9xks0Zd6EZdJpCuwsG zCSDkxa7z_(EW^()`5i7Qz}7^d2}r^^1S^5F5ZqFP2wVXCX++wS{)ir)%Jj|f{%&F?q}^Pglk z>Bwk;!+q8B%gVoJW9h*2BCTR{WWnilp0%{3tlW1dg9q{230l5F$%5|Ir}P?gEBRbT zC|TfZqhx`WL`;qUjD3#+WL!z z%^G+5jEOUfM`)Z?G-KMVY4x=imX|g*%sO@4IJ8mC+^G6DzediG;UHZ5ku;nR@ z`Sm;_hogoa4?vgJ)?QS_6Lb22oJvxaSI#h3H58XFDrq~c=^da+{!`tO0C{lfS1CDXxtzkUFX>{s>g{75qR8`c8X_OX)(XH6g zu%fCOO;S@;I|l_qDT*uR<2-RgWo><9w4SHS_1q;2CxlqGn!6HH>v(z2>gL4=@#-CU}R* zEeF<_;JjKir5r^?XSW@~MOUc-rzT}pP4T?)dF(ngdI`!`f%#lr#j}zNOMP?2>!G%` zP^Tp8P*@&#RfkP0i}jgz-Ds-6RK3*cY&ol`+qXD2aq@U|LYvW5VH!H9(5aZrNLC-@ zZXZCHI^HR7J$2B^rPbvnHS_C?VwA0}ytJyKs=SQNTvA;Q^NLzzRI+Gc8Jbj|>6BBg z4dvw+JjJE8^VM8c{o)&l<>lz6s(E$u>&uJl8ZibdFpXJMT}gdNR5dfs%74d4;n0ph znSJw$?BfsM(PTC(TcE=c)?$5lz5NVnNg3;L)?};jD4H*h($@vXvM0Ntk0h^9BU8s7}f84g%J8j#sf*nSr{}MAb(hNP<=T%w4wZ%=y`KXOLIo$%t0|qE2H)03p$({ zjpocNt($*RDQ0N-qMUidAvadepEn0s0ewZ?g5fz0bvb4EBdOuw&MBEwby8(XeHj!b z^`(_3q0|eGE6n7C=sn40~G1|Ut$Z>fxQeg7v z4~UNEmFq?{7=9W9PIC5%flr|mqJ!9=XV%tMH$?HV6&+JQFFJnSobs|VoN31ARcU!c zLv4LSbW{$TI_KiyXoL%E>yP|yrA`?c}Dra*t*WOlgx3fnmJ zr9aT({iyG<)O~up0;JIG0(=&3e)+Y!{c67%rp{{n^;cV1>KDCsYfJs2=9lp;#dleF zsiOa~j4pl=>38iU<6DUDvT*v=e_8l7aR?NwCEJx}bEo(WlIia_1;2TX`L+YQ-p!%6 z5FlChX*`O9+c-R!(0$JHKdb?fzjG4tbFe!9lug9IV0o#}7sStrN{$JhE;wCqwqUtn zgWw{;D+R9=Y!=)kxJ7Wg;A4U>3jR)Tui*FRcy)h#e~wqT!}sTSbvyij{QRV$rMf zywIzC@4)Ls@9lS2=XQ~<+Sd-`#q#iziHIdtA=i4!S%QNEhYIqemf;fwCkxIHJV&rt zuvCzbSQ&4*pjvMsUoG-l!5anDdW-O_B0nJbu%P<9zz-*0d7)P6d-eGNzRWW}e!l#} z`_XW#_#J!F+CI_#uWwB2g?8fSKiiepa1Cw$(VXh)hyS$m?sz)eF^tzhI6kWUF1tL~ zbk5iRfRO#kYX}^MwJ{owS0M__^t;2+hK}+qIIj%wDt7xPF&Dhc3!4drKfNNP$DJ5V zk8R+kR|&rt2VNtBi89b@3||=eK>T(mLd zYb4+nFG`PGUf30o{pmIK({qC9vD#jG8{zljz-t_f^f-6C%L`ivg+IN^ed%%8@Y1^n zelHHwI1%ab46S#0VRu8}Pw#r9=k*(+w59hD{EWl#!0UP30H$Jodl$p#9vAfN_N0IP z{x#m0(cZge;s$b%CjeOwUN6A;%eS##d;9UO*{km#;Kx|51E^~S(({jfFE6668H{bP z%Y%}S%Xv@B^w{pq)0-Rc8t?QpjI-#G%S(@O{B~RV8OEPIBcNx8{c9sewQpaGe%JoB z{9y%odIQ^c?_b+JRAtz-O2gJp=iK46txz_&Nz}h zYxzyk&Qtdl+2g1=lxzl2Vhbg{^S4v?O-W7MpOlea)VHYTK`Z{a z-ESPh8@DP~>hfCW87IyjSNYH(Gk#^Om1%v_$C|otob|)mnXt2?mwR^RMB~BPyJ*)% z>;hBwjSU=~-34}T)UNWSS27NgPU}45hb6!I;NXuw$J(ODj%^+fPvQ#n?vK#+T!j1= z_Wh}Iz@~c>mMrY`TYzB|2si_5MtdytEoN8l*-}O7;7S9%uQcN zl^ay-Ij%!eq4vFgg$T16X*?u#JpF&+zq~Xqoz}ZB#s0pF;K%RDGnh*;{$YRLGf)NX z-S`hSEeud=DoTa@eJqgm1Ow}p-I<>!#d#&P@Vzgs_-vKD&HXudp@1x#` z=Zxn@lLXq!{=Tyyhg0zn`}?kdn*00m(Q??|*Q!L@uzE6)%@(6t+%1p&eUBh4$qw4{ zp~HsBanN?5-+Bc;?C&c>c=GS@kNf+$&o8WY;pC^%k372KX)yNp=^X8FS5yT1`?TnW zuS15|->1dI@DC9O`}?%$?eF`mN+=BtbuE1Hm*O9p4^-WdH(#s3{e8DU7ygI|93Q6> zFv9&Po*<$f=37ayzfXs{;R&okp@@m$(JaeJA|{7VYwc6juGZ$gLXde6f=x3|*96a{-QMB;J@$m5so}wxSIS{^@@);su zjtx5VkQw(|s48QBUk!3o`} zc@=*Bv6*l@cSg}k4ndn|DN@bkM^RMn?^_Eo{A>Kf{yzGd(O4F9p_dU-;;2h*Kv}uJ zF99*T7S|cr-zO2e7S|it-zNo={e4<;!+iFD{e8y)u-PX}ss-%t(_-8HK1Jw|nH-)- z;~kPxdiW)ZyHqO$GBd&r6d&)+S7Zb-qv5&inkRd|qQtE5JuLMzVQvizWDW|iVn)x# zb;HMJAah99;`wt7?C;YVQ5zfXscitrPk`}_C``9Nl2=7mfyhNn5c~T$N36`}0+H!dV1HjIo{Beukv&WT`}-!K$*jyh!N@A6 zf&G1at-Y1`VG!-lsh~UQH)sG~Cn@m?R1!u@P^O^GJ)&vm+t6@;`b??v`t$e7i19dV z+l>$(d$#oI&rzr*GnNm|%M(2rrQ>cM?(gGvuynO)p8NZL1dE7TyRpBI0!KsztB3u4 z%#6E_E@S<%zfVR4a%9DWHj__33F)f+eI#m#tVJogzfZ9?AgSLlD)#qjITRs_8~69| zhiFWBBc7hO5mSn-_xF+0ATo7|bfo;BnZHE1QYm~gmi07(KK_!L#ee4`gB$4(0 zz9*pQ#Z`y<``Ed?K4%%RzmK`<{9pAVVSnFGV2b^HRArc42Gr=r0DBw$pv{S%VRG_$ zb0HD_pnVjf@f?HwA*upkAKqZr0Q>v6@|kAuTbVKT_vI-O?>+8?aNLhgK$d+-Dbv2c zkA!u7{{Z{t(Kk^`BMN7j(OryS^d{{O_xDYKm1#Od5S9D;nqbpq6?D$0u;c!|&CmpG zs)F{7_}|Zb1W`@A83F;und(2}{>QOIBfD}VU=aeMaQ$DU<#9?EgCV~b_2+kKb5z&6 zVD~=cSEzIG&pbY*1#!v{d;wf$G1EIy>28C(8ZHaJjGBe2c>PhMo^aXBX9!#!zWZjL z$~dQWVx}GkVOarpw9Wc#WqlJYNzSCx);c4*4wg&c1|@oFU!bgc-16==YppY~SHki- zxU<`=io-o;J%$Wyx8(x6M-P zjDh&(ZM@cIdAYK*(Y#-@S!$gzXcR1Ui(R3tNWz%|r*qain0&usG8OkTso1ob5NzMD z81Zj-9EEw3t}J{zBzvTq2|n?EY{Mj`Zij7j*woE%ol!Z-0yBxY~Jj z)#Zy$FKMid$#$au>{}qQ^~3k}$M5$_tBp;a-ii4wd!QY2R1x2xoCD9n;SYk;;qsB!4##pe| zU}B4!Xe^0}D8>?SP4YkI-g9T(EQ?@CV)End=k2-Q@9p>9_vV%FxnEk8&i!{=N8=g5 z*+cK|M+@P1GMs`*boc}abZF(%w^A5>+tSn?Z?zQ_bR*f$c$tjCuUiw}p8+H35q`8W zU9EMgtLUYaUF$|{m$K)#loIYN!^c!an}pk?W5d)mwi!<%XnSG!aMP)-OXw61o-eoS z&iFugTC>$G5dNl`U`#4v6@d~vGG+mNXXcH^w_iZ4U$$Njaz`AGCZQ01P_mYmyXbMs zm@xkjI+UXM@?>7#XfbLnYh_mKEM@a-PpvhxF*Bv%e%6pXXXTzXH#X+Pc~;idG8v|M zYM%XVeHU0`fm{E1UM*{6X9z26eP_^~V-sYJGTE1}=Ynb=uQXLOu9g+={}mfpTCT#N zoZJBT<#Mcsd2pWOr~v_kYGY=cwZSKYAn3HmTC~IdKFboYcJ|h^{A>A~s&%^B@X0_&~4(ZVKm*4WsTf1Z)E!GY~`z~`;R#U4(811L3{lyH^iI+ z&g_3@{-tspj<4fdik74GoEzT4u{Bf2;0F<{k|DV<60d8w>@1tV+~ZW1ITCOx#R|+R z;b;-nV+M__hn)e^$v_(ETY83=6gV9%XC%l6620Q9JC^znIg`p+@f#+SJKmyb1TDv9 zjK4#UgJYCr**k{b5TH>wN(A`?hTH%WmthGwq6t1jEyWYUcf^)F?e43Ayv-g^oL&<@ zz2J=4+US{)v%+V8SMADSrWDw6k0?}r7kxgpLc91B!!geKe5&VaP%+h$<#;`j$RET0 zb?n1?Fdqz;`U?9C2MhTi%Xnio0h}qBFFUATAzUrIK*;wWjK4~_UU;|gKH;;%7lm&M zKNRBT+?3NuxSxxI@oXIT-(hi zQ%AYKlzcA{$8v*^YgN$B`zgg6|4)!#k^Xh*H%b0bXx2?fxn{j|qz~gW63dAbp)Zxp zWhba_A$X8Z|u#1W}S8Dot?Q^Umf*d zq;fJuq`OwQUiv$UNcStDvqOJc>7Et7Ohox_E8V-o52UXpqWpgfjUOqbFHP9;X`gGx zg9!cJM5OO5>@9tNBHCltSqF0MMW#Pe>5N|~U-AzW|0Cfw z(*KNzbazQMex^{bS$7@yl=Qz>x<5*Omx%byLbKjF+R2Um!sW>zq79Y^tAs;@qlA1d z%6t=qlZ3N{^MuQU=JyZjPm{b>$hWsF$NUZgeq5UK{hLB#hluoBB>zoVD~$1e0r5pbS`1Kb zFYGMrCN%dYi0>zPppa|(Fdq#Hh%|8_(qw?RNJygq%4Z1q*`KoUR|({Yeag2A`RSfA z&Ao{HI8S_8$WQQ;KNRvqJLR~L%g9kK71HXJaw{P}xl`Uxc#v>_(AWbbeuQM)K6oMg z*1PKoM3W!U2Jv%j&|P<$Nj9HPP)=HMTVY3GCt)99KVhY?O6aaz!zGUvn)`K>KVGuC zj?I!hS9q|Fdl}_od>@h?>rj7<^{DH6Ci!n?{NSD$V}i?udA0)N@fj#%2+h_S|CtU` z&ul$~4j9L+19r}fou%U(s9SIFQy1qLw~^Rg*_6+upx-{qE^ZjY_=)r?v2*)z8_ZkG zU2=ypRm^WB+jTT{mj^-bOw5bDT_*!^oI}BMx8Wq<+O}?Uah!9(dhgiV^Clr3>t%h+ zLOc<>%Y&eoM1nK}+Fac6kb~uwRoL^7<>9t4Ti*EyyF3VbosnQU1KM2N*^qx!M*)!@K9$qR}$ z#&PF8K``Cibp2eOhm;OrwztyxbCvaSyB~Y7eXpW@ICQ3cje)Lxd?rWt76Q!HtaW~Q zY!f$PV0w7NkuD7-jS(7QXL&52bq0pZn~V9^8#=eS@|Y)>?tQfHPc9MAr306zPp@=t z+bNf4zx}%RG|6|)gspEs@D_mj<~&1-vq7X7$k^sUmHZ;yQ3F!JNuN4@u6-_J^mK5keP z`?z6j(0fILs@{uLJ+;*v{nXY-8( z%tU4JNAcoAC)A?;3+KgH$CpBtJ+kRZV88bZMF2b9bBfD<*#gM??;i9ggc)?7}pgR1W z5mcp1_hUhKBXLA)b^jBJh+V52_M%6!|@prbO#Mln`JF#mEdADs=sE+0MJEa(`Sb)D1Vq&ReJ`p2y#b=lDBEq9gGfe~0VA#&i6gixCnK;Ma`2)oqe}_NM@f?4L%e2OG{GDxVb&kJ7)8lwP ze_8->G4J0shYWlmq;ozp?%Rf9F`1AK>qVm_ESYxq)(kzcY%% z7~t>lMQ}X8-x)?Zz~A9{6%X=vMzFvjf2SuELH-VDpz$Do=PxYdyUpLZjKk>oI}Oo+ zMBMRr%(W!I-&xNQ3h;NPv;RBd@9-C+pBt0samN6Y;wI9Z)=S{GHF3BFNvNnPxo5-#LhN2KhVhu~R|*&eKd0*nK7bP8{oV8~zTjI&sI}8NiX)A%EusB>lGd zJAK)M9Dj$tNa8{M&c2Ap{n*8*vK2o8S^iET*5@|-opxyGDQQwXyfk*tPn-9NUdzv* zD$MbB%v;a1gZ!Nu}`xa?*5H$LOcoCow1kmTNpSz)XjiA277?R^AW_&Og0qpe*cC) z#3OGhxstj&JA6$%*x=OdI|RnG5EZr;V;T z+f{~QO0bu=GrHE)^@n^Q_V!)T*5P>OE!d(gHte+@f)sS>YI}0BN%1nuc_~|#)p_kZB4t;kwCy@2P?imQ?Pnpy(b=+A znG_$Q9DaPYJ+L~jJwI!on@xFB3yxnLL&;Z~cKoc4w6kv5z4k95$GzDc>rIXyAcjv& zHiy+c2AMa%UWbwr$A^IAAC~w8xjXI!C4W!pXMJzzy?r`CQwfQl)s>4z4iUa#^bb$a zF|5hOFSKKsixDQ*0!Z^ru6CU*y(onw$G zd?RztiT)5dJAVje$2air=SXxL_PrTf@dY$k?uA**(E*DR&GVFUZqJpET z)N>GsY{5T&eqy0Z-4!V-n3@r$j$x2U&_ynGigl3m@A;=juZ5f&hiW7`mRT9A&UA5E z_P&Z)PK)M}pMa$N8g62g-0OM;ref$bEE^dvLQA`~p!hdGVT50zh|pF)!85%(mQD3S zpZkRraD^qIu}2h_v(WQcagxfg&HRGRY}3D_^xkgjTPfbF{r6Je$WCkXO~`NgjJNiV z@z$XwTnLQu?;6lxTx@)UqZ%C9!0_OrUN=Xj+uL&D_UV~Z?VHU+LR~IfC(E$IIl}xn zCzuDH{<6tk9k^~+fQ4u|h#eAXQzJw#otUNR znQyM%No^HH$P&G_C+G2vEy#HUUI#(*9PAL{83uSEfRM;Aun{|Q5MDOH z(S&!fgFhF_Fo1XpmN>@G#Smf{2HIO8o?)P;6^ep1yFAibJdU5DxMS6^;2^7x&GfyA zguAhay^|vu25f6jUKwcZM7H(??BLW9zQ7I^UMRyr8`F$MkqiU;WkpPkzk+V#NOtG| zX?qTx9mz3-iP%B%BbZA%sd)_8=75^Vzy|E#=_N7@*pZw-_%n8J@d#V7gWwp-FhI%^ zgoxoNwz5Jj!$5Z{#4`+3TA?VzzyK@cjUCP;nM zTkLgjmtoL$_$b0HCgFI3?bdQX!@jV5<^c1K!S}JFR>J4l!`@=w413ztFqXi9XAUs$ z7-R?PFzGwp6j@ZHGdeq2BuPU#!#Mv9>O<&-J&0gct5wp>|9=TfvbcM&s8iX(CB{jdi{3wPHhG5cDC zPiU3xnW0sN@-UM$(9FJ29AuQ){_~bDjh)RY$#46??G3S)nF6i1-y1bth|)F&s1b6i zrsj09M3}lOGUV}j!i0QN8BZ0S3#gZ1XUJi$U>^UFxnR8mRbzaix+KIgN6+!U z721uA##y-(0 zfjko2dA@Qm-R5-nLc!f_Oyh<&s9y#Bso2+GKNEZ1e8ISL>xsVvy34R%j{VAd;)8M5 z)DwRTbhp=|59&4`-fb@5s#hxsw)3C+uk+js)Mhn+ufJokCh^89a%ofiO}sFm1* zTX0@*&8e@=JmI|F|iAGKCkCYFuK7#?_Hf zv_*JL819;ylpR_Y^CP6&hCf~Dn~2kFM3-#D-xRUhMwDhFYFGNvPT=lFW35X|N&PJY zv9~A|UgAf~yF`mBxP|vf3VW;0&O^aVYnjJ#dQQ)lk^;$G^^jDe!LSh zJx67^K3;f|?fhSCTo;tzDHgu;B=jep>r7!qn^s+;t-GN|i_!XUaYeMOc~`2scERu- zQehf%d$^)vSVb&68C|eLdyz{2vn@S0g5NvI$1&QI;}PiZmj%mA*FIrEP0LDM1!tHF znukAj`U+d|<>&zT)IUE3$z$PXz4{2+U85~5-@MEmNlMJKJRNP(F-9J`(U()Vlqno9 z+vI~sFH*B}Sz~Do#B%>@zzK#Fob&$VTtnr18(TQg5v+MEs?qP|-K%HA zm)UN*HN15F57Di&)AB14uNNNHt(RBr*w^(EpOFA(9XZ+g)aSxgW9>uD*? zXtQ^G&1^X5%FfHLxo&~EN3gE_tiwF|phAPKv%C77eBnx9{LAg8bUTk_&i!G&bG3Yb zTXHdn-vPMln=yZK&CJF5J{PS+x%#{W&X{lR)aWH}#dPmG!0X162HiaT>&|~Y_^;=8 zhU?un@La>kngPXa*A$)}KciqRRwzF!a(4I}vc0|Uq#rTb=;t=vTnD!AGT)oyykow% zxx(y-?~N-YUtQo;MV#*mf%p(h+i7AGAxz5a^#|5N@qL7Yg(HM~ZNPFS38xDe3s(qN z3oj7zk)HXk60R5CExb?otnfwQo5Bx;yZPRB9B1PFF2{2>-`kD@jeR&CyZPRB9RAz+ z-W!W-KVBiiUhp;HThcq8_s7z2mEQ5Z3-AGz`4U9T3&-@TCR!KfrX!zgIUnBWuBHDSI@R!mX{x{M&-uFw= zzfFYx1IgQn$p3dC+r+&g5$T#qZY%62eP79gh{!)wI8yp!h{!)p@&dA}|mG|6j) z=Mj`s;*0mHro!|DW(dB3=_dMnwLXq<>ZTC+Xjl{DE*A5&8b1_~K&7=ucx| ziiq;klG_Tq5RtE^u#a$v;)e?llYX3VqV!XQ^Q5mKqMo(VpCeo+{Z&NNcb)Jj!h4Bm z?*`$c(myGDMff@qP({U^e0(uZK$M14%yh=}@{5|OXH^!o_ANPjR9>8d0juK4l7 zW2K)Vd5&-?5&2dq{sQSQ7G5U(jYOooS@OM#-ynQc`sau^hHnbD2pg4HeOidyBvT&m zbXhK@y+K49>?=G-I7m2DI9hnP@L1tw;T++7;qgLpG+7@%?GVopo+rFec)5_Db(ro3 z;Z4Fjgm(!a5I!t?M)+Idr^0PQzME&c5n%&iLm};I8PBC-iS2}Y3%MvT_57qmJV1D` zaEOpg%`)DtcW{(s8t_t2n>peILb9MJUoN~-c!TgJ;T=L6Y%=`=!iR-V3CUGr{ENa@ zgf#Z2{vF{*!cT?&5Qgy8g6ZfPh}clrOxQw5<738~b&h~_*EOIaGUMk6mkLi1t`e>h zo+C8tAR*snlCKcnAiPO| zpTEj zNZ%8b|0JX(HDwyG6KO?FY$i18IYF+FOp9v94-$?O9wnqvHRIPv+wVJl%9Aq|w7?f~IfAvuWDFAy#k z(qx(X9|?afyixcw;m?IMXJ-1Rgl`Go5%R&B@ev_yn_&tYY^CHXA+4F2?kM3T zBGS>Onfk>-+AdQz>reqNP&!&KQ-6(+M#_}$6y8fjd9*^N{#oHm($m(M`c1;WN>7Vp z>Z3wh7gOF-*qVr)cEr^86wy9)94%;YogF_4aC60E;cSS76cdpBPC3BpOjX~KoV zCBo&xmBLlRHNthmON5sRuMplSTra#;=za(9m;8|MG2v6fmxQkhUl+b5+#>u$xK;Rt zFs|PN8dh<9Xx2b16W0B`>?nOFVcp-$KGOFS4iUQF%h8e#7mgRY^@3(eo-14^Tq0a9 zTq!(Lc&>1r@Dkxw!XFE76s{NECA>#?zwja9W5TC|F9}~2zAmi$yZgTMTZEqow+g=y z)?H`lU%c)L-VN?vcLh`5Y&ZmF>wy2f&fq81Y(0ezT)IwBFwAQfH>MlnA`y;IiESkI zfZF3+J)p!ynSU;B7$iKBm}?Rv9zz9Nq2N1OoPwr2w(Dr@E)RmSu-^M&cSa|3te5q%A4J~MyF3VbEn9eAngMMtj?VzW@)jOQ zlTlk9Udv?5J0D?}2SM*Zl*ju`x4F2pp$L|@3gz+Ouzd;au6=H|=& zkb~_zvobe+jS=VC$9LlxhJ^sL^+S2Vx$62$3=FHc5b4rT(ku~E$CSt8!#drZN6=e` z`9~8(x4H6|Cz$TC${nq{(x+SZ+_Eb>_o3XaYu7%zxb8|NPg0x~w!a;*9#zW2nk$Jd zcMRVMU&JwZPmYE@N=If6K4NoZPLs{?6&*fkzrsH_g3!3l1uJHLaQ%uH(p4dR#O4B| zh?x{oL2y*cYPd$vUfoQlxK&A!R80oW4pKH@_*e&16O+PFEa`0$D(;zNj! znD|qH8#hN48(p#Go`r{)cb;Z=BK~m9|HRu6CK^TlzmOk01P2xCrjW#mwNlLLu%QC8 zcw8jP-_Wq(T#edeJaUF2@J0xTNB3v0c)|Ce%&m`d9OA+wF*)JWcsP^CBV3g>%q8RC z$Cyw0(a2T!A2W2zFqeFTALBvLgl8ig{1`J_5Qd(9jF&(#evCIGP{;>1_%Xhh;pGhf zq?CH=x$^G_G+=u9G3HZz@?e&EUBNu4LvTgQClvTGe$t5WV@wVz{1`K9xG4+#S#w^H z=*M^vyXVK3BS%Aq!@ocXevCN?CG@aIKgRU*mpqpd-AawuzpNi)TVo{2XD#?Kwqo4+ z;O$;!#YECL9_`-Tiq4PmC#OTMEVwir6Z(u7&nvOvZC9h!e!zAOSK+%Cv zaM5GaW%w~3gvyN{V-oi5cu#E1FiZcOEvt^%hDMUS%E6DZd1fz&k1-1_ zsz4_0sv#QTf)DUxd^3Q4jHdvTe18K!#tgF}{>;FSu`0sh;cr68Q;4M><5$or`7u@o z`7u^{`7yRqJo!DAo%3USHCw%%ALHJp=91*ESo1xa#m$nucYq&bjuQPCAH=*5w_Jfk z5`rINjtl%4UuVR&NiIVKKgLfOv14*N58RW5q?iW$7~6`nevEAgvVM$hoBJilvfke{ zGLMVpmB}6~>bXX>rl_nRV_Q^J^8YdM%WCuRNaFl)9(0Z z{TOp}Qi~wckFo8Lm*N8e{TP$cO0Tu2a3rw~ik0K3y{z2I%8AscYzWptvH43<fSV;kQmRlxLE2jyOqAAXEkAJ##! zmy*g<6=kf0V$)Zp&ft7P;C0qDPBqF$Jo56gdgK` zm>%n(n1!9;zn13}{TOq~7(d2OvH+}u!gIvTZ!(FPkJC1n z2>CZcVf+?z7Mhb;evBKSeY#>6+|6!c9Tcuy(5x9IM}mHgxoUUHT)VLjidn)N-fQ`) zk$#Nr2u4zOFe}zU(TqTi>^NLC<9{>WhZ#S{*RUwAj!r+u6mYpnok1DvpjbJU;#;xp z{1|gda5dZdG5!oU*{Ls>6ziby*NjD7L>cR#*y9*Uz0Ou*9TX-G!H===D2{bd_%jiL zALA~J$2uss7ei8fK}bKwGfa7-Q*$v`^kZyZ$Y374!+5NNVo$hPsS_EGbx^FlFtvd3 zSO>+*%Ts*eMnA?ebIjq#m@CQBk8x9@fFI*uv&C2kg)K0CjJe7Q{TQ7`>yPAJu(w%+!r@BzIHY?5 z^4-+Y$-O_kF`qp9qVV3>%O7Iikw&)w@-f)WvL~ZT*_O{Ceuf=s8u{&tOB;lXn-`CZ zHS)*!cq;HhZM_B!4uTR>v8iVW*v4rpZc!D3^D5d9iO9l^l_E(${P-6rt=QS|l=Tpc ztmKau%B8GID)RlIrPMcQ?F}uZB|$;xzzp_`ksl0Gt8l%?#P{IPk^;D8eP2o^kBd z2R8D(eW)$s|Mt9ZJ}-koPvHCwdrK!}80ct)X&DCkSz%U&fgx6yn_*zM6^3URm}G^~ z83yKB;c(*;cBK`@XBars3KKHdAg~@g>L=W7^dQ?a@RSwe83taqLc;h%ecuWt83y>O z7o7Yu!!eJbs}O=-T3zQ|$C2E;A^?4!UFK;FN2^OR4DhuDglQQDCRkxshJoc)m}^>m zBLrk8JZAJD+%xcw72;;$0Na#BLF&3|f;|{WtcHxq4a1oA(Ar@DQ$9BgHNj!12@XR| za2RTW!%!0(2G-^rr;fcIK~9!@+B~k7+&Ep>KQnC@q+Yan2JL*AKxm5{>n9K{!H#tm zd^12SU$l7!e~BHmdBP*u4Q-y|^=GRmaOgyvXOM$emo~pA^c<*=w{8SS$);JypHQ>4 zz<+avG!3>ob~3mH<)!%X_}X;E-2}zX(!Klcq;?Vh1=PsQ# zy?(mlj2_)BU2!{tBIZMmporrwf+9j$f+E6Mf+D83BPc>Gf+Bva12o7Orc*TQD)lMc z>KI?C;nsc`h-NQ^Q!te>hqK!L1-vtyvxJaFWU{@sxr~<({ zvBPqC8O+6|SzMjiZsfhqHuSmXOTtB@#^t#;1^2JMMzIu=wGL(OD<|H*Jy~j8&{v*e zCOBSKju;YPU>RCTz)4>n*N1ieIetyD+m5__I;Vqj$mw`^&KY39pPfr-y{~>fQjML- zWbXx?O_D-K4qC2_Wbu%6Gksdxx~w!_^W;I2$qnPql5-Z!ub#eq_L6Et9DzU71;@<> z4Xb+b%(+Xa=Qu%dWH}kc61aw}p1K?~9z*LzGWlGzUMJD(JSK@e99BCwrEoK88XoYi zS(9_F>BuWUdS+dUPFRYdr4MC2X`*W563~$gXHK3sZ?bV#i;yEYX5F;bN1wtlqJky! zynN5Cq9!>;BU+Ef*&)bJXx(XAM~|$ydIo%Cd-XAFCNJUG!Vf6>AYZ!Gc^+a#h%~$? zuUbAd+slvX|V{^5D*+k4{@NQZJr18w~8(U`JYqjq-Jy^CNov zRQfx`5k;2Vh}d~!++{i@n(ZLxR)FnTy_gOetF2>Gd8rM$6O{v8sVqga+7TlI2S3M} z6rl;edFM`_Jb&pzuX>06BBx_AlZ?Qzv}CkMRZ=DcD~p2k|o4PP*SrdK_4 z`Vw4`rn5{ab$Vp^T=mi3^4ykMKc(`cY5K+n9dC%G=8ROCIp3{W&zN(2_nchKgAw4+ z{$Fw38+1bInHipA7t5QinN~|?&zo+>2$O5UVqE8HKo`yta&cu1URaGoU^5{&{{JDT zqY2zm{1cn+g;o|Pl3qG+!^->BfyE_jBBzJX2(9%)s~&yi;fL^$-@gYEP39e#=kJYR zbiYBJM|iPh!HB|8QLJ&K%x~hS!p;0W{5`QKVGF-is7;+aVcwDFwutx9KXVfAi-WP0 z?VYtt6NVlc_Jg5lVgH!!o=AdzmcgR7rKgc`apz&u$Pvdd>&7QW){EkfIcX#5> zIB0#9uD@`IkPkM@e~fU7aJJCcBqN>=)J%7_@B-o0!W)D?7dj5w^OFB0EWkLhoTkF| zLM{b#_Y2hov_k`PoaZF*Bv!Bq|xB8>`uM_@4_^|MK;oHJbg;6~6nEHk7guR7_2*(R&3ln&m%Y1tXI|%m^9wMA3tP!3n zyh!+K;nTuD2*0VX(fK%M*}hYR>x5SeZx=o&d`|ebup3@fGk<^KO5s_;8-yPVLwLi< z^rgZ*g?kB|&r!Y!Wx9ieRl-AsM+;97t|sDGoi5}G)#QL&p!mxrUn#s+`dcL5F1%BE zGk)IifqlNsYPno6_#2Lal!o|Ylg{y>X zgy#qyhvPEIv|(U**9m_jO!We%ykdGDvL|i_<)K>gp5tpon!vY)-{<;Q~H=F)Y7l3^Z0ZcNAfOSkbF$c@*yfZFQ^fm~jF*VY3zk=f^4LGN4?~nKZ#}{+k9Jbr zqDXL=JJ^sJ$Nf&BOZOu@94&*+Z7$tIP%!MaGW-Yz=a!o<_ai~DeZvF&rOk%x@3RP_ zdkX<(8&an{R~HeNk?gh->C#a0qYj41l*e&roq^%42 z>ALjj(_{a1ZriEP!X90Fb~VX&?z6CK7gJ%L?QG|Fw~ShQ>luSDgR_)#2Zt|;t~+UC z+2HcQ#UG{p#7F5+y2qGz!Zry#azdTijk@nvJ)jUi7N@-*AUJTc^nAWs5$N_H_%1bITp6G5K%4)QE3 zVe4Gm{5}KU4K0IxaL7mh!XKr>7d#vNVfgZ6{5`9#th%Bqd{N|w^m;gIJx>bga@DotM zunYfVJ(1ZD_d%;*Bg_VcA7NyT2^Z8NJ#B=~h0fRrw?vtRd_aYb@CQ&9lE4TXVd|}w zSZ9Qc+bP)ylc}35#Xr~xpN>Q{^V~!+;46{Fh_Df6)-X**VIxcfWZDQXg${%GcU&B- zufz)w4;$fWh%b2s|7au3BawU#|6n7`FzRSjeH@H}RbwRiGc*%6!nOhNB;7?9d=OxOs!%0uiy&R3$bV9fbST+F8B zd?migyg6Tq_p{`juf*3_)ONlS3*;;D6C7LE2)~aOa@5Ny27D#9!9jc_zc^f?<)~D!W=Bw2(#d# zi71G>YKTUrL4b|$O=v1@gfC)6{C$LtFvIM|zHH`pz7iLsdfEs#Ku*~RD}!u=Pe+4b zfGQhdE5(z1rVH2z8(YNfY=mc+noE*HnK!OE#`r$qE0JzhX(PM<<-im>bq$9(;46{m z6>WrhS{WPRb}TUHD=|Su&{yK)EHdaTaR|%!Zu?4H#bI>55^qNbjE(SG9Q2gAb_aYV ze!|`ad?g;p{_n_FB8}6Hjqq<-lrgM@jW7jVE>dSPYrt3H^&C0)N<0V$IaHqTiWqnU ziOn@A(>Ic#;nSK?`?7EO5ROdDWqfFb{6?%Q;p%^p$unl73sh68B*ba=sELvErbw#O8>{{TNp)XmuBk zPtHbo1)e ziC@b1hS3P$x<(`4$N$zo-{Lr5iT5HEH^0q$C{TV9`6_dN>}|GCXZ> zK8@%a>;MCvk-FTmb*vgh|Rt?Ph-li1r%fu=DV z_c|o@sV(lw`x!Tf*P#GAX<9y~WZ`V=rTLz| zS=OdmDfW;_w8TASQ7y4~Fu&)upj|V|Z7IKArrd)QG|g@mforXU8qi?dI@n^my*k2h zy9M64r%eDaj9ORt2Pd4pcZUQ$c~!XN%xxo zr#B;@&u&>;Eh7&yWTvoZ`!vBKO817}-dVTOV4 zTVY9t0p7}>faS(P)e}}&nPK1y?6BD-l$Z`Inv`Ln8FqNyBD6Jnc-~@wUpe81E1qFs zq7@Pu2F|uZNrnO5;2~LAhJm}RkZ*Pimu0ZJHhVaX1UT%rDFoa132X=}h0iTQN9^#d z70EDQ>xR!Q2Bz4UM1}!d_sSAew}fCrR_>r7kq8b98X%u$EWSN(5AME(J}b!VwlZFv4qjsVSIc_h5Do*~mJ^$Ecvbjni}pb~vOWaH591MUyy3S6VfJvlQxCoS?T_HGy*#>V=%0 zf3|7@I|KD{PK3eOF=+{Gf5rHSBf#Zu5CCG0!h{#<3&W86kaYqu= z@M&!L9IGa%;d9yWE3KNKhA&~m`4J2j-~=^%B^%xoI|hZIhDSJkml^eF0>>S#O|TO` zHtNF(>O>jJGaHUJlI3=*wK6+Vi5*9gU^`J`Mt_M_6Kp4H%;?`})dbs#8Z-K@S~cMl z>>;mac}KK`FXb`A2(}X|&HP_s)ME&?6D#BF#EnKhnqWJzGJ7OwEyF)VnLX^Y>Gqxd zIF9-GCSn}Nd4mmdY$d@#F-?lt&R}Yk~h9L;G6S z1k4#`L)*(=;4UF-{4t08S~&6LWgMwk=uWL#y?=oT_-@ZV^?L5f_n2gC)B}EeY;aMJ zZvP?6`2A%VpP~<+6a0QKe=khKI{x@H9l9_WqjMc-;c}(|M(6FK1+lWuooV7;T3Qx8 zIOcb$h_>q-t?IH@v|X2IRYkPhUR|O|ChZzbTKaED+9e8m{%)P=DrZtfG#O6Qy1!e@ z9|py-73@%lQ|U$sCieZ*l_s5RSI|`Yp6Swr&16Rou83B3j;WFX-S*uoS$zGjrK%Qq!Y|JZzw$J%?)XrMo8JGV%yw=ci9qul2#=l?N zVNJly*4Z4(wmNG=95gnTf%d=JMNM^%8Uah~-aTpG%=VBVu&8$rC+?c7n%ypGU=sho zKuuph zV)Bw%gTWtJGJC=N#a(t(G=8SpA)5DRuc0C=u#OJacD zkZ%I-$Qb|Sj%B_hw)-6e_tbodt=ET4|KiHf%f)TKi#GgxRLE_71C-moi#Ggwp?Q2Z z;aJya!=F8KaeB2~vcr31ypzBqQvBPq;UCQM@Sg5)p|L=KJX7*q;R@kup|jn;MDkU_ z^}@S_&W8V4$uA1u6n-cKQ`NM?*p{OH{Uq~^0^4_lkPnlTmkUo7@=XKvKNOl*Bak1J z{DQCuH;zn~61Eri5^~ue#*Yp0 zd?NinrFZ^h;`pS%@hByt9OqA_h4dYycm8Ddmwce`P~j-yvBJqh<2MH7E|!eTl(Bg> z-x~1Yi7$5f^^C91h|adzyuyOqPWrut{E)_UlZCT{=K2c#V#&s+3-T(-YlPl0zTl<)J>f?}+L2NJ4`GPcRmcs54Ta5w zErjiadkeb@dkgDw1ExtoOK40aP!G*{SRY?%5>FPIZ=sMKN8l3aFB4uZbR2v99OO8d`DqVVIQIS-9i2#k`EV-7xH5&%U>cq zQFw~b{0<@hTFE~ZauGS^yHn^m0gp=Ns&kD0t?&imYr;2$hLeVLA4oRbG|1+64am>9 zEN5R~ccEF55c-284-gI&ju6t+hxwh~hDnlX_eK3&;X>i@!V`t33D*kG7aChHTmrG0%Ckm$s>-vpYD*XvUeo|+?p9r}^9%bh@;vUKO3m+9eDg2%A zMWOR2@rLC0gk0H-<$fyMCiJ1BJ}OKION3l1knt^qv{9toK}g#J$~}aAg$D^~Ai(%( z!sCPsgv*30gsX+83(pm<6J9F(q3~Ma4Z>T5G+$!9cMI2h;MT&cRK$cfc%H#LA%_EC%455Z z!S3=P=*`3ZPJLXNd3DmwZ3w?3EJ&LxV>aYqz0Y9)D$yy{%lg<4;!5l;4}#wQNRVbg zn~PfxIapp9J{EF*vpn3cWy|BUqRWGzcN7w2KRE{C&Ota>UfV!2uL2ouI zbO#|2_alUZ<@H2)>>rck6w8)(Gs0|NSM1zo?}6)}JJ^sJ$DQ|5!E`Ot^>bw&Ryu&$ zE=k*E=_F>G`T!Kc_Vo+&w=v>ee|e9FxxCQj-Zzv7Hr2|){_kQWzmgUOyNvAC*#{S3h^1XZaPN%zd->-L1lYHk~ znHH!M+jd+TtTi9^wya*|VGVh#H;=XEOCpa9?zOG>p5EJvSN7UgvcC7Wk}C>o8+=hz zTkyA2$_i_XJ|Feo+~I|_4YobCY0mJ1O|yr#-CFWg+pWb{^x9U0Tt�K(542b0v_g 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℞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

    &m(>) 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

    gJ%MKyIb4Q1ss=PhYCrvJ=Q6Q&(B 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 literal 0 HcmV?d00001 diff --git a/HAL_N_Middlewares/Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc/usbd_cdc.h b/Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc/usbd_cdc.h similarity index 100% rename from HAL_N_Middlewares/Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc/usbd_cdc.h rename to Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc/usbd_cdc.h diff --git a/HAL_N_Middlewares/Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.c b/Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.c similarity index 100% rename from HAL_N_Middlewares/Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.c rename to Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.c diff --git a/HAL_N_Middlewares/Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_core.h b/Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_core.h similarity index 100% rename from HAL_N_Middlewares/Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_core.h rename to Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_core.h diff --git a/HAL_N_Middlewares/Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ctlreq.h b/Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ctlreq.h similarity index 100% rename from HAL_N_Middlewares/Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ctlreq.h rename to Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ctlreq.h diff --git a/HAL_N_Middlewares/Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h b/Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h similarity index 100% rename from HAL_N_Middlewares/Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h rename to Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h diff --git a/HAL_N_Middlewares/Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h b/Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h similarity index 100% rename from HAL_N_Middlewares/Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h rename to Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h diff --git a/HAL_N_Middlewares/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c b/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c similarity index 100% rename from HAL_N_Middlewares/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c rename to Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c diff --git a/HAL_N_Middlewares/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c b/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c similarity index 100% rename from HAL_N_Middlewares/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c rename to Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c diff --git a/HAL_N_Middlewares/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.c b/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.c similarity index 100% rename from HAL_N_Middlewares/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.c rename to Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.c diff --git a/HAL_N_Middlewares/Middlewares/ST/STM32_USB_Device_Library/LICENSE.txt b/Middlewares/ST/STM32_USB_Device_Library/LICENSE.txt similarity index 100% rename from HAL_N_Middlewares/Middlewares/ST/STM32_USB_Device_Library/LICENSE.txt rename to Middlewares/ST/STM32_USB_Device_Library/LICENSE.txt diff --git a/HAL_N_Middlewares/Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.c b/Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.c similarity index 100% rename from HAL_N_Middlewares/Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.c rename to Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.c diff --git a/HAL_N_Middlewares/Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.h b/Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.h similarity index 100% rename from HAL_N_Middlewares/Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.h rename to Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.h diff --git a/Middlewares/Third_Party/FreeRTOS/Source/LICENSE b/Middlewares/Third_Party/FreeRTOS/Source/LICENSE new file mode 100644 index 0000000..2ce4711 --- /dev/null +++ b/Middlewares/Third_Party/FreeRTOS/Source/LICENSE @@ -0,0 +1,18 @@ +Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + diff --git a/HAL_N_Middlewares/Middlewares/Third_Party/FreeRTOS/Source/croutine.c b/Middlewares/Third_Party/FreeRTOS/Source/croutine.c similarity index 100% rename from HAL_N_Middlewares/Middlewares/Third_Party/FreeRTOS/Source/croutine.c rename to Middlewares/Third_Party/FreeRTOS/Source/croutine.c diff --git a/HAL_N_Middlewares/Middlewares/Third_Party/FreeRTOS/Source/event_groups.c b/Middlewares/Third_Party/FreeRTOS/Source/event_groups.c similarity index 100% rename from HAL_N_Middlewares/Middlewares/Third_Party/FreeRTOS/Source/event_groups.c rename to Middlewares/Third_Party/FreeRTOS/Source/event_groups.c diff --git a/HAL_N_Middlewares/Middlewares/Third_Party/FreeRTOS/Source/include/FreeRTOS.h b/Middlewares/Third_Party/FreeRTOS/Source/include/FreeRTOS.h similarity index 100% rename from HAL_N_Middlewares/Middlewares/Third_Party/FreeRTOS/Source/include/FreeRTOS.h rename to Middlewares/Third_Party/FreeRTOS/Source/include/FreeRTOS.h diff --git a/HAL_N_Middlewares/Middlewares/Third_Party/FreeRTOS/Source/include/StackMacros.h b/Middlewares/Third_Party/FreeRTOS/Source/include/StackMacros.h similarity index 100% rename from HAL_N_Middlewares/Middlewares/Third_Party/FreeRTOS/Source/include/StackMacros.h rename to Middlewares/Third_Party/FreeRTOS/Source/include/StackMacros.h diff --git a/HAL_N_Middlewares/Middlewares/Third_Party/FreeRTOS/Source/include/atomic.h b/Middlewares/Third_Party/FreeRTOS/Source/include/atomic.h similarity index 100% rename from HAL_N_Middlewares/Middlewares/Third_Party/FreeRTOS/Source/include/atomic.h rename to Middlewares/Third_Party/FreeRTOS/Source/include/atomic.h diff --git a/HAL_N_Middlewares/Middlewares/Third_Party/FreeRTOS/Source/include/croutine.h b/Middlewares/Third_Party/FreeRTOS/Source/include/croutine.h similarity index 100% rename from HAL_N_Middlewares/Middlewares/Third_Party/FreeRTOS/Source/include/croutine.h rename to Middlewares/Third_Party/FreeRTOS/Source/include/croutine.h diff --git a/HAL_N_Middlewares/Middlewares/Third_Party/FreeRTOS/Source/include/deprecated_definitions.h b/Middlewares/Third_Party/FreeRTOS/Source/include/deprecated_definitions.h similarity index 100% rename from HAL_N_Middlewares/Middlewares/Third_Party/FreeRTOS/Source/include/deprecated_definitions.h rename to Middlewares/Third_Party/FreeRTOS/Source/include/deprecated_definitions.h diff --git a/HAL_N_Middlewares/Middlewares/Third_Party/FreeRTOS/Source/include/event_groups.h b/Middlewares/Third_Party/FreeRTOS/Source/include/event_groups.h similarity index 100% rename from HAL_N_Middlewares/Middlewares/Third_Party/FreeRTOS/Source/include/event_groups.h rename to Middlewares/Third_Party/FreeRTOS/Source/include/event_groups.h diff --git a/HAL_N_Middlewares/Middlewares/Third_Party/FreeRTOS/Source/include/list.h b/Middlewares/Third_Party/FreeRTOS/Source/include/list.h similarity index 100% rename from HAL_N_Middlewares/Middlewares/Third_Party/FreeRTOS/Source/include/list.h rename to Middlewares/Third_Party/FreeRTOS/Source/include/list.h diff --git a/HAL_N_Middlewares/Middlewares/Third_Party/FreeRTOS/Source/include/message_buffer.h b/Middlewares/Third_Party/FreeRTOS/Source/include/message_buffer.h similarity index 100% rename from HAL_N_Middlewares/Middlewares/Third_Party/FreeRTOS/Source/include/message_buffer.h rename to Middlewares/Third_Party/FreeRTOS/Source/include/message_buffer.h diff --git a/HAL_N_Middlewares/Middlewares/Third_Party/FreeRTOS/Source/include/mpu_prototypes.h b/Middlewares/Third_Party/FreeRTOS/Source/include/mpu_prototypes.h similarity index 100% rename from HAL_N_Middlewares/Middlewares/Third_Party/FreeRTOS/Source/include/mpu_prototypes.h rename to Middlewares/Third_Party/FreeRTOS/Source/include/mpu_prototypes.h diff --git a/HAL_N_Middlewares/Middlewares/Third_Party/FreeRTOS/Source/include/mpu_wrappers.h b/Middlewares/Third_Party/FreeRTOS/Source/include/mpu_wrappers.h similarity index 100% rename from HAL_N_Middlewares/Middlewares/Third_Party/FreeRTOS/Source/include/mpu_wrappers.h rename to Middlewares/Third_Party/FreeRTOS/Source/include/mpu_wrappers.h diff --git a/HAL_N_Middlewares/Middlewares/Third_Party/FreeRTOS/Source/include/portable.h b/Middlewares/Third_Party/FreeRTOS/Source/include/portable.h similarity index 100% rename from HAL_N_Middlewares/Middlewares/Third_Party/FreeRTOS/Source/include/portable.h rename to Middlewares/Third_Party/FreeRTOS/Source/include/portable.h diff --git a/HAL_N_Middlewares/Middlewares/Third_Party/FreeRTOS/Source/include/projdefs.h b/Middlewares/Third_Party/FreeRTOS/Source/include/projdefs.h similarity index 100% rename from HAL_N_Middlewares/Middlewares/Third_Party/FreeRTOS/Source/include/projdefs.h rename to Middlewares/Third_Party/FreeRTOS/Source/include/projdefs.h diff --git a/HAL_N_Middlewares/Middlewares/Third_Party/FreeRTOS/Source/include/queue.h b/Middlewares/Third_Party/FreeRTOS/Source/include/queue.h similarity index 100% rename from HAL_N_Middlewares/Middlewares/Third_Party/FreeRTOS/Source/include/queue.h rename to Middlewares/Third_Party/FreeRTOS/Source/include/queue.h diff --git a/HAL_N_Middlewares/Middlewares/Third_Party/FreeRTOS/Source/include/semphr.h b/Middlewares/Third_Party/FreeRTOS/Source/include/semphr.h similarity index 100% rename from HAL_N_Middlewares/Middlewares/Third_Party/FreeRTOS/Source/include/semphr.h rename to Middlewares/Third_Party/FreeRTOS/Source/include/semphr.h diff --git a/HAL_N_Middlewares/Middlewares/Third_Party/FreeRTOS/Source/include/stack_macros.h b/Middlewares/Third_Party/FreeRTOS/Source/include/stack_macros.h similarity index 100% rename from HAL_N_Middlewares/Middlewares/Third_Party/FreeRTOS/Source/include/stack_macros.h rename to Middlewares/Third_Party/FreeRTOS/Source/include/stack_macros.h diff --git a/HAL_N_Middlewares/Middlewares/Third_Party/FreeRTOS/Source/include/stream_buffer.h b/Middlewares/Third_Party/FreeRTOS/Source/include/stream_buffer.h similarity index 100% rename from HAL_N_Middlewares/Middlewares/Third_Party/FreeRTOS/Source/include/stream_buffer.h rename to Middlewares/Third_Party/FreeRTOS/Source/include/stream_buffer.h diff --git a/HAL_N_Middlewares/Middlewares/Third_Party/FreeRTOS/Source/include/task.h b/Middlewares/Third_Party/FreeRTOS/Source/include/task.h similarity index 100% rename from HAL_N_Middlewares/Middlewares/Third_Party/FreeRTOS/Source/include/task.h rename to Middlewares/Third_Party/FreeRTOS/Source/include/task.h diff --git a/HAL_N_Middlewares/Middlewares/Third_Party/FreeRTOS/Source/include/timers.h b/Middlewares/Third_Party/FreeRTOS/Source/include/timers.h similarity index 100% rename from HAL_N_Middlewares/Middlewares/Third_Party/FreeRTOS/Source/include/timers.h rename to Middlewares/Third_Party/FreeRTOS/Source/include/timers.h diff --git a/HAL_N_Middlewares/Middlewares/Third_Party/FreeRTOS/Source/list.c b/Middlewares/Third_Party/FreeRTOS/Source/list.c similarity index 100% rename from HAL_N_Middlewares/Middlewares/Third_Party/FreeRTOS/Source/list.c rename to Middlewares/Third_Party/FreeRTOS/Source/list.c diff --git a/HAL_N_Middlewares/Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.c b/Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.c similarity index 100% rename from HAL_N_Middlewares/Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.c rename to Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.c diff --git a/HAL_N_Middlewares/Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/portmacro.h b/Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/portmacro.h similarity index 100% rename from HAL_N_Middlewares/Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/portmacro.h rename to Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/portmacro.h diff --git a/HAL_N_Middlewares/Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.c b/Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.c similarity index 100% rename from HAL_N_Middlewares/Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.c rename to Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.c diff --git a/HAL_N_Middlewares/Middlewares/Third_Party/FreeRTOS/Source/queue.c b/Middlewares/Third_Party/FreeRTOS/Source/queue.c similarity index 100% rename from HAL_N_Middlewares/Middlewares/Third_Party/FreeRTOS/Source/queue.c rename to Middlewares/Third_Party/FreeRTOS/Source/queue.c diff --git a/HAL_N_Middlewares/Middlewares/Third_Party/FreeRTOS/Source/stream_buffer.c b/Middlewares/Third_Party/FreeRTOS/Source/stream_buffer.c similarity index 100% rename from HAL_N_Middlewares/Middlewares/Third_Party/FreeRTOS/Source/stream_buffer.c rename to Middlewares/Third_Party/FreeRTOS/Source/stream_buffer.c diff --git a/HAL_N_Middlewares/Middlewares/Third_Party/FreeRTOS/Source/tasks.c b/Middlewares/Third_Party/FreeRTOS/Source/tasks.c similarity index 100% rename from HAL_N_Middlewares/Middlewares/Third_Party/FreeRTOS/Source/tasks.c rename to Middlewares/Third_Party/FreeRTOS/Source/tasks.c diff --git a/HAL_N_Middlewares/Middlewares/Third_Party/FreeRTOS/Source/timers.c b/Middlewares/Third_Party/FreeRTOS/Source/timers.c similarity index 100% rename from HAL_N_Middlewares/Middlewares/Third_Party/FreeRTOS/Source/timers.c rename to Middlewares/Third_Party/FreeRTOS/Source/timers.c diff --git a/HAL_N_Middlewares/Middlewares/Third_Party/SEGGER/Config/SEGGER_RTT_Conf.h b/Middlewares/Third_Party/SEGGER/Config/SEGGER_RTT_Conf.h similarity index 100% rename from HAL_N_Middlewares/Middlewares/Third_Party/SEGGER/Config/SEGGER_RTT_Conf.h rename to Middlewares/Third_Party/SEGGER/Config/SEGGER_RTT_Conf.h diff --git a/HAL_N_Middlewares/Middlewares/Third_Party/SEGGER/RTT/SEGGER_RTT.c b/Middlewares/Third_Party/SEGGER/RTT/SEGGER_RTT.c similarity index 100% rename from HAL_N_Middlewares/Middlewares/Third_Party/SEGGER/RTT/SEGGER_RTT.c rename to Middlewares/Third_Party/SEGGER/RTT/SEGGER_RTT.c diff --git a/HAL_N_Middlewares/Middlewares/Third_Party/SEGGER/RTT/SEGGER_RTT.h b/Middlewares/Third_Party/SEGGER/RTT/SEGGER_RTT.h similarity index 100% rename from HAL_N_Middlewares/Middlewares/Third_Party/SEGGER/RTT/SEGGER_RTT.h rename to Middlewares/Third_Party/SEGGER/RTT/SEGGER_RTT.h diff --git a/HAL_N_Middlewares/Middlewares/Third_Party/SEGGER/RTT/SEGGER_RTT_ASM_ARMv7M.s b/Middlewares/Third_Party/SEGGER/RTT/SEGGER_RTT_ASM_ARMv7M.s similarity index 100% rename from HAL_N_Middlewares/Middlewares/Third_Party/SEGGER/RTT/SEGGER_RTT_ASM_ARMv7M.s rename to Middlewares/Third_Party/SEGGER/RTT/SEGGER_RTT_ASM_ARMv7M.s diff --git a/HAL_N_Middlewares/Middlewares/Third_Party/SEGGER/RTT/SEGGER_RTT_printf.c b/Middlewares/Third_Party/SEGGER/RTT/SEGGER_RTT_printf.c similarity index 100% rename from HAL_N_Middlewares/Middlewares/Third_Party/SEGGER/RTT/SEGGER_RTT_printf.c rename to Middlewares/Third_Party/SEGGER/RTT/SEGGER_RTT_printf.c diff --git a/HAL_N_Middlewares/Src/adc.c b/Src/adc.c similarity index 100% rename from HAL_N_Middlewares/Src/adc.c rename to Src/adc.c diff --git a/HAL_N_Middlewares/Src/can.c b/Src/can.c similarity index 99% rename from HAL_N_Middlewares/Src/can.c rename to Src/can.c index fe60482..19e132b 100644 --- a/HAL_N_Middlewares/Src/can.c +++ b/Src/can.c @@ -81,7 +81,7 @@ void MX_CAN2_Init(void) hcan2.Init.AutoWakeUp = DISABLE; hcan2.Init.AutoRetransmission = DISABLE; hcan2.Init.ReceiveFifoLocked = DISABLE; - hcan2.Init.TransmitFifoPriority = ENABLE; + hcan2.Init.TransmitFifoPriority = DISABLE; if (HAL_CAN_Init(&hcan2) != HAL_OK) { Error_Handler(); diff --git a/HAL_N_Middlewares/Src/crc.c b/Src/crc.c similarity index 100% rename from HAL_N_Middlewares/Src/crc.c rename to Src/crc.c diff --git a/HAL_N_Middlewares/Src/dac.c b/Src/dac.c similarity index 100% rename from HAL_N_Middlewares/Src/dac.c rename to Src/dac.c diff --git a/HAL_N_Middlewares/Src/dma.c b/Src/dma.c similarity index 100% rename from HAL_N_Middlewares/Src/dma.c rename to Src/dma.c diff --git a/HAL_N_Middlewares/Src/freertos.c b/Src/freertos.c similarity index 97% rename from HAL_N_Middlewares/Src/freertos.c rename to Src/freertos.c index 6229414..d4c2165 100644 --- a/HAL_N_Middlewares/Src/freertos.c +++ b/Src/freertos.c @@ -30,7 +30,6 @@ #include "led_task.h" #include "daemon.h" #include "robot.h" - /* USER CODE END Includes */ /* Private typedef -----------------------------------------------------------*/ @@ -63,8 +62,6 @@ void StartMOTORTASK(void const * argument); void StartDAEMONTASK(void const* argument); void StartROBOTTASK(void const* argument); - - /* USER CODE END FunctionPrototypes */ void StartDefaultTask(void const * argument); @@ -118,6 +115,9 @@ void MX_FREERTOS_Init(void) { /* definition and creation of defaultTask */ osThreadDef(defaultTask, StartDefaultTask, osPriorityNormal, 0, 128); defaultTaskHandle = osThreadCreate(osThread(defaultTask), NULL); + + /* USER CODE BEGIN RTOS_THREADS */ + /* add threads, ... */ osThreadDef(instask, StartINSTASK, osPriorityNormal, 0, 1024); defaultTaskHandle = osThreadCreate(osThread(instask), NULL); @@ -129,10 +129,8 @@ void MX_FREERTOS_Init(void) { osThreadDef(robottask, StartROBOTTASK, osPriorityNormal, 0, 1024); defaultTaskHandle = osThreadCreate(osThread(robottask), NULL); - /* USER CODE BEGIN RTOS_THREADS */ - /* add threads, ... */ /* USER CODE END RTOS_THREADS */ - + } /* USER CODE BEGIN Header_StartDefaultTask */ @@ -145,7 +143,6 @@ void MX_FREERTOS_Init(void) { void StartDefaultTask(void const * argument) { /* init code for USB_DEVICE */ - USB_ResetPort(USB_OTG_FS); MX_USB_DEVICE_Init(); /* USER CODE BEGIN StartDefaultTask */ /* Infinite loop */ @@ -158,7 +155,6 @@ void StartDefaultTask(void const * argument) /* Private application code --------------------------------------------------*/ /* USER CODE BEGIN Application */ - void StartINSTASK(void const * argument) { while (1) @@ -167,7 +163,6 @@ void StartINSTASK(void const * argument) INS_Task(); osDelay(1); } - } void StartMOTORTASK(void const * argument) @@ -196,8 +191,7 @@ void StartROBOTTASK(void const * argument) { // 200Hz RobotTask(); - osDelay(10);//syh此处暂时将时间改为10ms,原因在于未使用缓冲区发送,发送时延时5ms + osDelay(10);//syh此处暂时将时间改?10ms,原因在于未使用缓冲区发送,发?时延时5ms } - } /* USER CODE END Application */ diff --git a/HAL_N_Middlewares/Src/gpio.c b/Src/gpio.c similarity index 100% rename from HAL_N_Middlewares/Src/gpio.c rename to Src/gpio.c diff --git a/HAL_N_Middlewares/Src/i2c.c b/Src/i2c.c similarity index 100% rename from HAL_N_Middlewares/Src/i2c.c rename to Src/i2c.c diff --git a/Src/main.c b/Src/main.c new file mode 100644 index 0000000..a8c16fa --- /dev/null +++ b/Src/main.c @@ -0,0 +1,243 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file : main.c + * @brief : Main program body + ****************************************************************************** + * @attention + * + * Copyright (c) 2023 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ +/* Includes ------------------------------------------------------------------*/ +#include "main.h" +#include "cmsis_os.h" +#include "adc.h" +#include "can.h" +#include "crc.h" +#include "dac.h" +#include "dma.h" +#include "i2c.h" +#include "rng.h" +#include "rtc.h" +#include "spi.h" +#include "tim.h" +#include "usart.h" +#include "usb_device.h" +#include "gpio.h" + +/* Private includes ----------------------------------------------------------*/ +/* USER CODE BEGIN Includes */ +#include "robot.h" +/* USER CODE END Includes */ + +/* Private typedef -----------------------------------------------------------*/ +/* USER CODE BEGIN PTD */ + +/* USER CODE END PTD */ + +/* Private define ------------------------------------------------------------*/ +/* USER CODE BEGIN PD */ +/* USER CODE END PD */ + +/* Private macro -------------------------------------------------------------*/ +/* USER CODE BEGIN PM */ + +/* USER CODE END PM */ + +/* Private variables ---------------------------------------------------------*/ + +/* USER CODE BEGIN PV */ + +/* USER CODE END PV */ + +/* Private function prototypes -----------------------------------------------*/ +void SystemClock_Config(void); +void MX_FREERTOS_Init(void); +/* USER CODE BEGIN PFP */ + +/* USER CODE END PFP */ + +/* Private user code ---------------------------------------------------------*/ +/* USER CODE BEGIN 0 */ + +/* USER CODE END 0 */ + +/** + * @brief The application entry point. + * @retval int + */ +int main(void) +{ + /* USER CODE BEGIN 1 */ + + /* USER CODE END 1 */ + + /* MCU Configuration--------------------------------------------------------*/ + + /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ + HAL_Init(); + + /* USER CODE BEGIN Init */ + + /* USER CODE END Init */ + + /* Configure the system clock */ + SystemClock_Config(); + + /* USER CODE BEGIN SysInit */ + + /* USER CODE END SysInit */ + + /* Initialize all configured peripherals */ + MX_GPIO_Init(); + MX_DMA_Init(); + MX_ADC1_Init(); + MX_CAN1_Init(); + MX_CAN2_Init(); + MX_SPI1_Init(); + MX_TIM4_Init(); + MX_TIM5_Init(); + MX_USART3_UART_Init(); + MX_RNG_Init(); + MX_RTC_Init(); + MX_TIM1_Init(); + MX_TIM10_Init(); + MX_USART1_UART_Init(); + MX_USART6_UART_Init(); + MX_TIM8_Init(); + MX_I2C2_Init(); + MX_I2C3_Init(); + MX_SPI2_Init(); + MX_CRC_Init(); + MX_DAC_Init(); + /* USER CODE BEGIN 2 */ + RobotInit(); + /* USER CODE END 2 */ + + /* Call init function for freertos objects (in freertos.c) */ + MX_FREERTOS_Init(); + + /* Start scheduler */ + osKernelStart(); + + /* We should never get here as control is now taken by the scheduler */ + /* Infinite loop */ + /* USER CODE BEGIN WHILE */ + while (1) + { + /* USER CODE END WHILE */ + + /* USER CODE BEGIN 3 */ + } + /* USER CODE END 3 */ +} + +/** + * @brief System Clock Configuration + * @retval None + */ +void SystemClock_Config(void) +{ + RCC_OscInitTypeDef RCC_OscInitStruct = {0}; + RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; + + /** Configure the main internal regulator output voltage + */ + __HAL_RCC_PWR_CLK_ENABLE(); + __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1); + + /** Initializes the RCC Oscillators according to the specified parameters + * in the RCC_OscInitTypeDef structure. + */ + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; + RCC_OscInitStruct.HSEState = RCC_HSE_ON; + RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; + RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; + RCC_OscInitStruct.PLL.PLLM = 6; + RCC_OscInitStruct.PLL.PLLN = 168; + RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; + RCC_OscInitStruct.PLL.PLLQ = 7; + if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) + { + Error_Handler(); + } + + /** Initializes the CPU, AHB and APB buses clocks + */ + RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK + |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; + RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; + RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; + RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4; + RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2; + + if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_5) != HAL_OK) + { + Error_Handler(); + } +} + +/* USER CODE BEGIN 4 */ + +/* USER CODE END 4 */ + +/** + * @brief Period elapsed callback in non blocking mode + * @note This function is called when TIM14 interrupt took place, inside + * HAL_TIM_IRQHandler(). It makes a direct call to HAL_IncTick() to increment + * a global variable "uwTick" used as application time base. + * @param htim : TIM handle + * @retval None + */ +void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) +{ + /* USER CODE BEGIN Callback 0 */ + + /* USER CODE END Callback 0 */ + if (htim->Instance == TIM14) { + HAL_IncTick(); + } + /* USER CODE BEGIN Callback 1 */ + + /* USER CODE END Callback 1 */ +} + +/** + * @brief This function is executed in case of error occurrence. + * @retval None + */ +void Error_Handler(void) +{ + /* USER CODE BEGIN Error_Handler_Debug */ + /* User can add his own implementation to report the HAL error return state */ + __disable_irq(); + while (1) + { + } + /* USER CODE END Error_Handler_Debug */ +} + +#ifdef USE_FULL_ASSERT +/** + * @brief Reports the name of the source file and the source line number + * where the assert_param error has occurred. + * @param file: pointer to the source file name + * @param line: assert_param error line source number + * @retval None + */ +void assert_failed(uint8_t *file, uint32_t line) +{ + /* USER CODE BEGIN 6 */ + /* User can add his own implementation to report the file name and line number, + ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ + /* USER CODE END 6 */ +} +#endif /* USE_FULL_ASSERT */ diff --git a/HAL_N_Middlewares/Src/rng.c b/Src/rng.c similarity index 100% rename from HAL_N_Middlewares/Src/rng.c rename to Src/rng.c diff --git a/HAL_N_Middlewares/Src/rtc.c b/Src/rtc.c similarity index 100% rename from HAL_N_Middlewares/Src/rtc.c rename to Src/rtc.c diff --git a/HAL_N_Middlewares/Src/spi.c b/Src/spi.c similarity index 100% rename from HAL_N_Middlewares/Src/spi.c rename to Src/spi.c diff --git a/HAL_N_Middlewares/Src/stm32f4xx_hal_msp.c b/Src/stm32f4xx_hal_msp.c similarity index 100% rename from HAL_N_Middlewares/Src/stm32f4xx_hal_msp.c rename to Src/stm32f4xx_hal_msp.c diff --git a/HAL_N_Middlewares/Src/stm32f4xx_hal_timebase_tim.c b/Src/stm32f4xx_hal_timebase_tim.c similarity index 100% rename from HAL_N_Middlewares/Src/stm32f4xx_hal_timebase_tim.c rename to Src/stm32f4xx_hal_timebase_tim.c diff --git a/HAL_N_Middlewares/Src/stm32f4xx_it.c b/Src/stm32f4xx_it.c similarity index 79% rename from HAL_N_Middlewares/Src/stm32f4xx_it.c rename to Src/stm32f4xx_it.c index be8484d..06a3db6 100644 --- a/HAL_N_Middlewares/Src/stm32f4xx_it.c +++ b/Src/stm32f4xx_it.c @@ -1,20 +1,20 @@ /* USER CODE BEGIN Header */ /** - ****************************************************************************** - * @file stm32f4xx_it.c - * @brief Interrupt Service Routines. - ****************************************************************************** - * @attention - * - * Copyright (c) 2023 STMicroelectronics. - * All rights reserved. - * - * This software is licensed under terms that can be found in the LICENSE file - * in the root directory of this software component. - * If no LICENSE file comes with this software, it is provided AS-IS. - * - ****************************************************************************** - */ + ****************************************************************************** + * @file stm32f4xx_it.c + * @brief Interrupt Service Routines. + ****************************************************************************** + * @attention + * + * Copyright (c) 2023 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ /* USER CODE END Header */ /* Includes ------------------------------------------------------------------*/ @@ -88,8 +88,8 @@ extern TIM_HandleTypeDef htim14; /* Cortex-M4 Processor Interruption and Exception Handlers */ /******************************************************************************/ /** - * @brief This function handles Non maskable interrupt. - */ + * @brief This function handles Non maskable interrupt. + */ void NMI_Handler(void) { /* USER CODE BEGIN NonMaskableInt_IRQn 0 */ @@ -103,24 +103,23 @@ void NMI_Handler(void) } /** - * @brief This function handles Hard fault interrupt. - */ + * @brief This function handles Hard fault interrupt. + */ void HardFault_Handler(void) { /* USER CODE BEGIN HardFault_IRQn 0 */ - asm("bx lr"); + /* USER CODE END HardFault_IRQn 0 */ while (1) { - asm("bx lr"); /* USER CODE BEGIN W1_HardFault_IRQn 0 */ /* USER CODE END W1_HardFault_IRQn 0 */ } } /** - * @brief This function handles Memory management fault. - */ + * @brief This function handles Memory management fault. + */ void MemManage_Handler(void) { /* USER CODE BEGIN MemoryManagement_IRQn 0 */ @@ -134,8 +133,8 @@ void MemManage_Handler(void) } /** - * @brief This function handles Pre-fetch fault, memory access fault. - */ + * @brief This function handles Pre-fetch fault, memory access fault. + */ void BusFault_Handler(void) { /* USER CODE BEGIN BusFault_IRQn 0 */ @@ -149,8 +148,8 @@ void BusFault_Handler(void) } /** - * @brief This function handles Undefined instruction or illegal state. - */ + * @brief This function handles Undefined instruction or illegal state. + */ void UsageFault_Handler(void) { /* USER CODE BEGIN UsageFault_IRQn 0 */ @@ -164,8 +163,8 @@ void UsageFault_Handler(void) } /** - * @brief This function handles Debug monitor. - */ + * @brief This function handles Debug monitor. + */ void DebugMon_Handler(void) { /* USER CODE BEGIN DebugMonitor_IRQn 0 */ @@ -184,8 +183,8 @@ void DebugMon_Handler(void) /******************************************************************************/ /** - * @brief This function handles EXTI line3 interrupt. - */ + * @brief This function handles EXTI line3 interrupt. + */ void EXTI3_IRQHandler(void) { /* USER CODE BEGIN EXTI3_IRQn 0 */ @@ -198,8 +197,8 @@ void EXTI3_IRQHandler(void) } /** - * @brief This function handles EXTI line4 interrupt. - */ + * @brief This function handles EXTI line4 interrupt. + */ void EXTI4_IRQHandler(void) { /* USER CODE BEGIN EXTI4_IRQn 0 */ @@ -212,8 +211,8 @@ void EXTI4_IRQHandler(void) } /** - * @brief This function handles DMA1 stream1 global interrupt. - */ + * @brief This function handles DMA1 stream1 global interrupt. + */ void DMA1_Stream1_IRQHandler(void) { /* USER CODE BEGIN DMA1_Stream1_IRQn 0 */ @@ -226,8 +225,8 @@ void DMA1_Stream1_IRQHandler(void) } /** - * @brief This function handles DMA1 stream2 global interrupt. - */ + * @brief This function handles DMA1 stream2 global interrupt. + */ void DMA1_Stream2_IRQHandler(void) { /* USER CODE BEGIN DMA1_Stream2_IRQn 0 */ @@ -240,8 +239,8 @@ void DMA1_Stream2_IRQHandler(void) } /** - * @brief This function handles DMA1 stream3 global interrupt. - */ + * @brief This function handles DMA1 stream3 global interrupt. + */ void DMA1_Stream3_IRQHandler(void) { /* USER CODE BEGIN DMA1_Stream3_IRQn 0 */ @@ -254,8 +253,8 @@ void DMA1_Stream3_IRQHandler(void) } /** - * @brief This function handles DMA1 stream4 global interrupt. - */ + * @brief This function handles DMA1 stream4 global interrupt. + */ void DMA1_Stream4_IRQHandler(void) { /* USER CODE BEGIN DMA1_Stream4_IRQn 0 */ @@ -268,8 +267,8 @@ void DMA1_Stream4_IRQHandler(void) } /** - * @brief This function handles CAN1 RX0 interrupts. - */ + * @brief This function handles CAN1 RX0 interrupts. + */ void CAN1_RX0_IRQHandler(void) { /* USER CODE BEGIN CAN1_RX0_IRQn 0 */ @@ -282,8 +281,8 @@ void CAN1_RX0_IRQHandler(void) } /** - * @brief This function handles CAN1 RX1 interrupt. - */ + * @brief This function handles CAN1 RX1 interrupt. + */ void CAN1_RX1_IRQHandler(void) { /* USER CODE BEGIN CAN1_RX1_IRQn 0 */ @@ -296,8 +295,8 @@ void CAN1_RX1_IRQHandler(void) } /** - * @brief This function handles EXTI line[9:5] interrupts. - */ + * @brief This function handles EXTI line[9:5] interrupts. + */ void EXTI9_5_IRQHandler(void) { /* USER CODE BEGIN EXTI9_5_IRQn 0 */ @@ -310,8 +309,8 @@ void EXTI9_5_IRQHandler(void) } /** - * @brief This function handles I2C2 event interrupt. - */ + * @brief This function handles I2C2 event interrupt. + */ void I2C2_EV_IRQHandler(void) { /* USER CODE BEGIN I2C2_EV_IRQn 0 */ @@ -324,8 +323,8 @@ void I2C2_EV_IRQHandler(void) } /** - * @brief This function handles I2C2 error interrupt. - */ + * @brief This function handles I2C2 error interrupt. + */ void I2C2_ER_IRQHandler(void) { /* USER CODE BEGIN I2C2_ER_IRQn 0 */ @@ -338,8 +337,8 @@ void I2C2_ER_IRQHandler(void) } /** - * @brief This function handles SPI1 global interrupt. - */ + * @brief This function handles SPI1 global interrupt. + */ void SPI1_IRQHandler(void) { /* USER CODE BEGIN SPI1_IRQn 0 */ @@ -352,8 +351,8 @@ void SPI1_IRQHandler(void) } /** - * @brief This function handles SPI2 global interrupt. - */ + * @brief This function handles SPI2 global interrupt. + */ void SPI2_IRQHandler(void) { /* USER CODE BEGIN SPI2_IRQn 0 */ @@ -366,8 +365,8 @@ void SPI2_IRQHandler(void) } /** - * @brief This function handles USART1 global interrupt. - */ + * @brief This function handles USART1 global interrupt. + */ void USART1_IRQHandler(void) { /* USER CODE BEGIN USART1_IRQn 0 */ @@ -380,8 +379,8 @@ void USART1_IRQHandler(void) } /** - * @brief This function handles USART3 global interrupt. - */ + * @brief This function handles USART3 global interrupt. + */ void USART3_IRQHandler(void) { /* USER CODE BEGIN USART3_IRQn 0 */ @@ -394,8 +393,8 @@ void USART3_IRQHandler(void) } /** - * @brief This function handles TIM8 trigger and commutation interrupts and TIM14 global interrupt. - */ + * @brief This function handles TIM8 trigger and commutation interrupts and TIM14 global interrupt. + */ void TIM8_TRG_COM_TIM14_IRQHandler(void) { /* USER CODE BEGIN TIM8_TRG_COM_TIM14_IRQn 0 */ @@ -409,8 +408,8 @@ void TIM8_TRG_COM_TIM14_IRQHandler(void) } /** - * @brief This function handles DMA1 stream7 global interrupt. - */ + * @brief This function handles DMA1 stream7 global interrupt. + */ void DMA1_Stream7_IRQHandler(void) { /* USER CODE BEGIN DMA1_Stream7_IRQn 0 */ @@ -423,8 +422,8 @@ void DMA1_Stream7_IRQHandler(void) } /** - * @brief This function handles DMA2 stream0 global interrupt. - */ + * @brief This function handles DMA2 stream0 global interrupt. + */ void DMA2_Stream0_IRQHandler(void) { /* USER CODE BEGIN DMA2_Stream0_IRQn 0 */ @@ -437,8 +436,8 @@ void DMA2_Stream0_IRQHandler(void) } /** - * @brief This function handles DMA2 stream2 global interrupt. - */ + * @brief This function handles DMA2 stream2 global interrupt. + */ void DMA2_Stream2_IRQHandler(void) { /* USER CODE BEGIN DMA2_Stream2_IRQn 0 */ @@ -451,8 +450,8 @@ void DMA2_Stream2_IRQHandler(void) } /** - * @brief This function handles DMA2 stream3 global interrupt. - */ + * @brief This function handles DMA2 stream3 global interrupt. + */ void DMA2_Stream3_IRQHandler(void) { /* USER CODE BEGIN DMA2_Stream3_IRQn 0 */ @@ -465,8 +464,8 @@ void DMA2_Stream3_IRQHandler(void) } /** - * @brief This function handles DMA2 stream4 global interrupt. - */ + * @brief This function handles DMA2 stream4 global interrupt. + */ void DMA2_Stream4_IRQHandler(void) { /* USER CODE BEGIN DMA2_Stream4_IRQn 0 */ @@ -479,8 +478,8 @@ void DMA2_Stream4_IRQHandler(void) } /** - * @brief This function handles CAN2 RX0 interrupts. - */ + * @brief This function handles CAN2 RX0 interrupts. + */ void CAN2_RX0_IRQHandler(void) { /* USER CODE BEGIN CAN2_RX0_IRQn 0 */ @@ -493,8 +492,8 @@ void CAN2_RX0_IRQHandler(void) } /** - * @brief This function handles CAN2 RX1 interrupt. - */ + * @brief This function handles CAN2 RX1 interrupt. + */ void CAN2_RX1_IRQHandler(void) { /* USER CODE BEGIN CAN2_RX1_IRQn 0 */ @@ -507,8 +506,8 @@ void CAN2_RX1_IRQHandler(void) } /** - * @brief This function handles USB On The Go FS global interrupt. - */ + * @brief This function handles USB On The Go FS global interrupt. + */ void OTG_FS_IRQHandler(void) { /* USER CODE BEGIN OTG_FS_IRQn 0 */ @@ -521,8 +520,8 @@ void OTG_FS_IRQHandler(void) } /** - * @brief This function handles DMA2 stream5 global interrupt. - */ + * @brief This function handles DMA2 stream5 global interrupt. + */ void DMA2_Stream5_IRQHandler(void) { /* USER CODE BEGIN DMA2_Stream5_IRQn 0 */ @@ -535,8 +534,8 @@ void DMA2_Stream5_IRQHandler(void) } /** - * @brief This function handles DMA2 stream6 global interrupt. - */ + * @brief This function handles DMA2 stream6 global interrupt. + */ void DMA2_Stream6_IRQHandler(void) { /* USER CODE BEGIN DMA2_Stream6_IRQn 0 */ @@ -549,8 +548,8 @@ void DMA2_Stream6_IRQHandler(void) } /** - * @brief This function handles DMA2 stream7 global interrupt. - */ + * @brief This function handles DMA2 stream7 global interrupt. + */ void DMA2_Stream7_IRQHandler(void) { /* USER CODE BEGIN DMA2_Stream7_IRQn 0 */ @@ -563,8 +562,8 @@ void DMA2_Stream7_IRQHandler(void) } /** - * @brief This function handles USART6 global interrupt. - */ + * @brief This function handles USART6 global interrupt. + */ void USART6_IRQHandler(void) { /* USER CODE BEGIN USART6_IRQn 0 */ @@ -577,8 +576,8 @@ void USART6_IRQHandler(void) } /** - * @brief This function handles I2C3 event interrupt. - */ + * @brief This function handles I2C3 event interrupt. + */ void I2C3_EV_IRQHandler(void) { /* USER CODE BEGIN I2C3_EV_IRQn 0 */ @@ -591,8 +590,8 @@ void I2C3_EV_IRQHandler(void) } /** - * @brief This function handles I2C3 error interrupt. - */ + * @brief This function handles I2C3 error interrupt. + */ void I2C3_ER_IRQHandler(void) { /* USER CODE BEGIN I2C3_ER_IRQn 0 */ diff --git a/HAL_N_Middlewares/Src/system_stm32f4xx.c b/Src/system_stm32f4xx.c similarity index 100% rename from HAL_N_Middlewares/Src/system_stm32f4xx.c rename to Src/system_stm32f4xx.c diff --git a/HAL_N_Middlewares/Src/tim.c b/Src/tim.c similarity index 100% rename from HAL_N_Middlewares/Src/tim.c rename to Src/tim.c diff --git a/HAL_N_Middlewares/Src/usart.c b/Src/usart.c similarity index 99% rename from HAL_N_Middlewares/Src/usart.c rename to Src/usart.c index 5d513a2..8595e32 100644 --- a/HAL_N_Middlewares/Src/usart.c +++ b/Src/usart.c @@ -46,7 +46,7 @@ void MX_USART1_UART_Init(void) /* USER CODE END USART1_Init 1 */ huart1.Instance = USART1; - huart1.Init.BaudRate = 921600; + huart1.Init.BaudRate = 115200; huart1.Init.WordLength = UART_WORDLENGTH_8B; huart1.Init.StopBits = UART_STOPBITS_1; huart1.Init.Parity = UART_PARITY_NONE; diff --git a/HAL_N_Middlewares/Src/usb_device.c b/Src/usb_device.c similarity index 100% rename from HAL_N_Middlewares/Src/usb_device.c rename to Src/usb_device.c diff --git a/Src/usbd_cdc_if.c b/Src/usbd_cdc_if.c new file mode 100644 index 0000000..2cb391e --- /dev/null +++ b/Src/usbd_cdc_if.c @@ -0,0 +1,328 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file : usbd_cdc_if.c + * @version : v1.0_Cube + * @brief : Usb device for Virtual Com Port. + ****************************************************************************** + * @attention + * + * Copyright (c) 2023 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ + +/* Includes ------------------------------------------------------------------*/ +#include "usbd_cdc_if.h" + +/* USER CODE BEGIN INCLUDE */ + +/* USER CODE END INCLUDE */ + +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ +/* Private macro -------------------------------------------------------------*/ + +/* USER CODE BEGIN PV */ +/* Private variables ---------------------------------------------------------*/ + +/* USER CODE END PV */ + +/** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY + * @brief Usb device library. + * @{ + */ + +/** @addtogroup USBD_CDC_IF + * @{ + */ + +/** @defgroup USBD_CDC_IF_Private_TypesDefinitions USBD_CDC_IF_Private_TypesDefinitions + * @brief Private types. + * @{ + */ + +/* USER CODE BEGIN PRIVATE_TYPES */ + +/* USER CODE END PRIVATE_TYPES */ + +/** + * @} + */ + +/** @defgroup USBD_CDC_IF_Private_Defines USBD_CDC_IF_Private_Defines + * @brief Private defines. + * @{ + */ + +/* USER CODE BEGIN PRIVATE_DEFINES */ +/* USER CODE END PRIVATE_DEFINES */ + +/** + * @} + */ + +/** @defgroup USBD_CDC_IF_Private_Macros USBD_CDC_IF_Private_Macros + * @brief Private macros. + * @{ + */ + +/* USER CODE BEGIN PRIVATE_MACRO */ + +/* USER CODE END PRIVATE_MACRO */ + +/** + * @} + */ + +/** @defgroup USBD_CDC_IF_Private_Variables USBD_CDC_IF_Private_Variables + * @brief Private variables. + * @{ + */ +/* Create buffer for reception and transmission */ +/* It's up to user to redefine and/or remove those define */ +/** Received data over USB are stored in this buffer */ +uint8_t UserRxBufferFS[APP_RX_DATA_SIZE]; + +/** Data to send over USB CDC are stored in this buffer */ +uint8_t UserTxBufferFS[APP_TX_DATA_SIZE]; + +/* USER CODE BEGIN PRIVATE_VARIABLES */ + +/* USER CODE END PRIVATE_VARIABLES */ + +/** + * @} + */ + +/** @defgroup USBD_CDC_IF_Exported_Variables USBD_CDC_IF_Exported_Variables + * @brief Public variables. + * @{ + */ + +extern USBD_HandleTypeDef hUsbDeviceFS; + +/* USER CODE BEGIN EXPORTED_VARIABLES */ + +/* USER CODE END EXPORTED_VARIABLES */ + +/** + * @} + */ + +/** @defgroup USBD_CDC_IF_Private_FunctionPrototypes USBD_CDC_IF_Private_FunctionPrototypes + * @brief Private functions declaration. + * @{ + */ + +static int8_t CDC_Init_FS(void); +static int8_t CDC_DeInit_FS(void); +static int8_t CDC_Control_FS(uint8_t cmd, uint8_t* pbuf, uint16_t length); +static int8_t CDC_Receive_FS(uint8_t* pbuf, uint32_t *Len); +static int8_t CDC_TransmitCplt_FS(uint8_t *pbuf, uint32_t *Len, uint8_t epnum); + +/* USER CODE BEGIN PRIVATE_FUNCTIONS_DECLARATION */ + +/* USER CODE END PRIVATE_FUNCTIONS_DECLARATION */ + +/** + * @} + */ + +USBD_CDC_ItfTypeDef USBD_Interface_fops_FS = +{ + CDC_Init_FS, + CDC_DeInit_FS, + CDC_Control_FS, + CDC_Receive_FS, + CDC_TransmitCplt_FS +}; + +/* Private functions ---------------------------------------------------------*/ +/** + * @brief Initializes the CDC media low layer over the FS USB IP + * @retval USBD_OK if all operations are OK else USBD_FAIL + */ +static int8_t CDC_Init_FS(void) +{ + /* USER CODE BEGIN 3 */ + /* Set Application Buffers */ + USBD_CDC_SetTxBuffer(&hUsbDeviceFS, UserTxBufferFS, 0); + USBD_CDC_SetRxBuffer(&hUsbDeviceFS, UserRxBufferFS); + return (USBD_OK); + /* USER CODE END 3 */ +} + +/** + * @brief DeInitializes the CDC media low layer + * @retval USBD_OK if all operations are OK else USBD_FAIL + */ +static int8_t CDC_DeInit_FS(void) +{ + /* USER CODE BEGIN 4 */ + return (USBD_OK); + /* USER CODE END 4 */ +} + +/** + * @brief Manage the CDC class requests + * @param cmd: Command code + * @param pbuf: Buffer containing command data (request parameters) + * @param length: Number of data to be sent (in bytes) + * @retval Result of the operation: USBD_OK if all operations are OK else USBD_FAIL + */ +static int8_t CDC_Control_FS(uint8_t cmd, uint8_t* pbuf, uint16_t length) +{ + /* USER CODE BEGIN 5 */ + switch(cmd) + { + case CDC_SEND_ENCAPSULATED_COMMAND: + + break; + + case CDC_GET_ENCAPSULATED_RESPONSE: + + break; + + case CDC_SET_COMM_FEATURE: + + break; + + case CDC_GET_COMM_FEATURE: + + break; + + case CDC_CLEAR_COMM_FEATURE: + + break; + + /*******************************************************************************/ + /* Line Coding Structure */ + /*-----------------------------------------------------------------------------*/ + /* Offset | Field | Size | Value | Description */ + /* 0 | dwDTERate | 4 | Number |Data terminal rate, in bits per second*/ + /* 4 | bCharFormat | 1 | Number | Stop bits */ + /* 0 - 1 Stop bit */ + /* 1 - 1.5 Stop bits */ + /* 2 - 2 Stop bits */ + /* 5 | bParityType | 1 | Number | Parity */ + /* 0 - None */ + /* 1 - Odd */ + /* 2 - Even */ + /* 3 - Mark */ + /* 4 - Space */ + /* 6 | bDataBits | 1 | Number Data bits (5, 6, 7, 8 or 16). */ + /*******************************************************************************/ + case CDC_SET_LINE_CODING: + + break; + + case CDC_GET_LINE_CODING: + + break; + + case CDC_SET_CONTROL_LINE_STATE: + + break; + + case CDC_SEND_BREAK: + + break; + + default: + break; + } + + return (USBD_OK); + /* USER CODE END 5 */ +} + +/** + * @brief Data received over USB OUT endpoint are sent over CDC interface + * through this function. + * + * @note + * This function will issue a NAK packet on any OUT packet received on + * USB endpoint until exiting this function. If you exit this function + * before transfer is complete on CDC interface (ie. using DMA controller) + * it will result in receiving more data while previous ones are still + * not sent. + * + * @param Buf: Buffer of data to be received + * @param Len: Number of data received (in bytes) + * @retval Result of the operation: USBD_OK if all operations are OK else USBD_FAIL + */ +static int8_t CDC_Receive_FS(uint8_t* Buf, uint32_t *Len) +{ + /* USER CODE BEGIN 6 */ + USBD_CDC_SetRxBuffer(&hUsbDeviceFS, &Buf[0]); + USBD_CDC_ReceivePacket(&hUsbDeviceFS); + return (USBD_OK); + /* USER CODE END 6 */ +} + +/** + * @brief CDC_Transmit_FS + * Data to send over USB IN endpoint are sent over CDC interface + * through this function. + * @note + * + * + * @param Buf: Buffer of data to be sent + * @param Len: Number of data to be sent (in bytes) + * @retval USBD_OK if all operations are OK else USBD_FAIL or USBD_BUSY + */ +uint8_t CDC_Transmit_FS(uint8_t* Buf, uint16_t Len) +{ + uint8_t result = USBD_OK; + /* USER CODE BEGIN 7 */ + USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef*)hUsbDeviceFS.pClassData; + if (hcdc->TxState != 0){ + return USBD_BUSY; + } + USBD_CDC_SetTxBuffer(&hUsbDeviceFS, Buf, Len); + result = USBD_CDC_TransmitPacket(&hUsbDeviceFS); + /* USER CODE END 7 */ + return result; +} + +/** + * @brief CDC_TransmitCplt_FS + * Data transmitted callback + * + * @note + * This function is IN transfer complete callback used to inform user that + * the submitted Data is successfully sent over USB. + * + * @param Buf: Buffer of data to be received + * @param Len: Number of data received (in bytes) + * @retval Result of the operation: USBD_OK if all operations are OK else USBD_FAIL + */ +static int8_t CDC_TransmitCplt_FS(uint8_t *Buf, uint32_t *Len, uint8_t epnum) +{ + uint8_t result = USBD_OK; + /* USER CODE BEGIN 13 */ + UNUSED(Buf); + UNUSED(Len); + UNUSED(epnum); + /* USER CODE END 13 */ + return result; +} + +/* USER CODE BEGIN PRIVATE_FUNCTIONS_IMPLEMENTATION */ + +/* USER CODE END PRIVATE_FUNCTIONS_IMPLEMENTATION */ + +/** + * @} + */ + +/** + * @} + */ diff --git a/HAL_N_Middlewares/Src/usbd_conf.c b/Src/usbd_conf.c similarity index 100% rename from HAL_N_Middlewares/Src/usbd_conf.c rename to Src/usbd_conf.c diff --git a/HAL_N_Middlewares/Src/usbd_desc.c b/Src/usbd_desc.c similarity index 100% rename from HAL_N_Middlewares/Src/usbd_desc.c rename to Src/usbd_desc.c diff --git a/basic_framework.ioc b/basic_framework.ioc index 28060eb..48dd651 100644 --- a/basic_framework.ioc +++ b/basic_framework.ioc @@ -13,8 +13,9 @@ CAN1.BS1=CAN_BS1_10TQ CAN1.BS2=CAN_BS2_3TQ CAN1.CalculateBaudRate=1000000 CAN1.CalculateTimeQuantum=71.42857142857143 -CAN1.IPParameters=CalculateTimeQuantum,BS1,BS2,Prescaler,CalculateBaudRate +CAN1.IPParameters=CalculateTimeQuantum,BS1,BS2,Prescaler,CalculateBaudRate,TXFP CAN1.Prescaler=3 +CAN1.TXFP=ENABLE CAN2.BS1=CAN_BS1_10TQ CAN2.BS2=CAN_BS2_3TQ CAN2.CalculateBaudRate=1000000 diff --git a/bsp/bsp_init.c b/bsp/bsp_init.c index 61887d3..6d33f25 100644 --- a/bsp/bsp_init.c +++ b/bsp/bsp_init.c @@ -11,7 +11,7 @@ void BSPInit() { DWT_Init(168); BSPLogInit(); - USBInit(); // 务必在进入操作系统之前执行USBInit + // USBInit(); // 务必在进入操作系统之前执行USBInit // legacy support,待删除,将在实现了led/tempctrl/buzzer的module之后移动到app层进行XXXRegister() diff --git a/modules/can_comm/can_comm.c b/modules/can_comm/can_comm.c index 29c83fa..39baec4 100644 --- a/modules/can_comm/can_comm.c +++ b/modules/can_comm/can_comm.c @@ -103,9 +103,6 @@ void CANCommSend(CANCommInstance *instance, uint8_t *data) CANSetDLC(instance->can_ins, send_len); memcpy(instance->can_ins->tx_buff, instance->raw_sendbuf + i, send_len); CANTransmit(instance->can_ins, 1); - if(instance->send_buf_len - i > 8) - DWT_Delay(0.001*0.005); // delay 5ns以保证CAN发送的顺序,如果是最后一包,不需要延时 - // CAN的邮箱不保证发送顺序,当存在空闲时便放入对应邮箱,因此需要延时保证发送顺序 } } diff --git a/modules/referee/referee_communication.c b/modules/referee/referee_communication.c index d714605..3896700 100644 --- a/modules/referee/referee_communication.c +++ b/modules/referee/referee_communication.c @@ -9,7 +9,7 @@ */ #include "referee_communication.h" -#include "crc.h" +#include "crc_ref.h" #include "stdio.h" #include "rm_referee.h" diff --git a/修改HAL配置时文件目录的更改.md b/修改HAL配置时文件目录的更改.md deleted file mode 100644 index 6c1a83a..0000000 --- a/修改HAL配置时文件目录的更改.md +++ /dev/null @@ -1,14 +0,0 @@ -# 修改STM HAL配置时文件目录的更改 - -> 仅修改引脚位置和外设配置时 - -1. 在generate code之前,保存Makefile的副本 (因为修改了makefile的内容,添加了注释和伪构建目标,HAL无法正确识别格式导致直接其将整个文件清空) -2. 生成之后,将原makefile的内容替换到新的makefile中,注意保留新添加的src code和include path. -3. 将原main.c和freertos.c以及stm32f4xx_it.c替换到新的Src文件夹下 (Src的内容不用修改,**除非你新增了功能,那么需要将新增的初始化头文件`xxx.h`包含到main函数中,然后调用其对应的`MX_xxx_Init()`函数对硬件进行初始化**)如果在cubemx中配置了新的硬件,则main.c将会包含新的头文件并添加MX_xxx_Init()以供外设初始化.freertos中会新增任务的声明和定义. 对于这两个文件将之前的内容覆写到新的文件中即可(注意不要把新生成的东西覆盖). -4. 将新生成的Src,Inc,Driver/STM32F4xx_HAL_Driver放入HAL_N_Middlewares下的对应位置(第三个目录只有新增了功能的时候才需要添加).Middlewares在大部分时候不需要更新,直接删除根目录下的Middlewares文件夹.(内部包含ST的usb库和segger的rtt viewer支持,如果新增了usb功能则需要将st的部分复制到HAL_N_Middlewares/Middletowns/ST下) -5. 删除根目录下的Drivers & Src & Inc & Middlewares文件夹. -6. 一切搞定之后,重新编译你的代码 - -> Q:为什么这么做? - -> A:CubeMX生成的依赖库和文件有很大的冗余,占用空间较多.为了方便pull&push并精简仓库,已经将Driver和Middlewares中不需要的文件全部删除. 修改HAL的配置(在没有新增其他库和依赖的情况下,大部分我们的更改都属于这种情况)大多是对初始化配置,即放在Inc和Src下的文件进行修改;若新增了功能,可能还会新增Driver/STM32F4xx_HAL_Driver的内容(比如新添加了flash或iic,原来没有这两个功能). 实际上最节省空间的方式是生成软链接(快捷方式),将你需要的依赖文件在必要的时候链接到你的可执行文件中(你在cubemx内部已经下载了f4开发包,应该放在"用户名/STM32Cubemx/"下) \ No newline at end of file

  • dsarHLO) z@Kl2_>c%Ln^5X3fKx2q7%h3)to6h~t?McVmq_^RU>#rci+&ujda9nerazijPi4GvT zi2IN$?swjOS`UC-=jUd=43RN&?ce4%8 zBD`%_|1lN&#}+=u&Bs(0+mETR;fE12m9TtivOcrI*cTCSiXqsm!!t3K-8igX+qX>g zEtwxxiMMEn3x^1|V8E$dN`C0c%SmsoDl2SW{ByIX7en51;@G&qio!)^Ta6=hHo3ow z0v_w4^Ts!L2E?FKSrwzeO@(;7ZB0GgUbP$$NBtJGQ7F0GHelm?eYejtd~0o^{3Yw-mdCf@ z(`eK@@~A)4+bDlg8|UjThxtykqJ_3=Hp*Yp#vOh%*isxOJRiyDxj%Y{87lDs)e9=m zh)GTbeX&zyVc#&J%G+jsq69f8a>$|E1W#H@v90idMy46!@hjao$i)+^?GHre@(qkO z$iPhAzhxts>vSxZuL6W@>~yvj3ax%%6sxdFG&CS%kl7urp83=^H$PU-oH-`DJhE8JahR zp?Q<=psu~bC*Wn@ZD~2Z_C`KW?M=2vZ*r>|8OE;B>0u_$3Ez~(?@ncZTM-y2A&u8b0-E*j07j< z1iMFqQ(!0l^QuAcz@9!RIDBHKww>t9{i0F9Z!2?xZ3p3k?7DQn4oh16_Hq`LlrNrF z;rM*9FI-%aD?4$By&U}XrVTD#vwN4iQk2o`6s`!q$TihppDF%7V zgYvD#vEmf*dXabS%$MjZ_+G|i*gT^2KTGHBF7v-6{Wa--lWzWeBAx%+SpG|;ySx#D z&W9N+pDEqgpF?jiy|dDDr1zF?e37I4>54B@{5jI6N;f`%k*`Yemnr@l>DAJIDg8I% zL*ipf-zMGI0iu6@mHwvEcT3+V{d4I-oM*V6Sz>#!huDimeS@SAmVUbQLh0v7pDKN> z^aawFO234}t4!;g_XfqU6OA1p`m;g#Hj10YC&ZUXI~VyUQ3q#)r@tuqICNLhHCYC7QTyZgpxe=8l z#>LM`@dfyj4<;*A|T@;xZs_{@d=6m{f#QSrtO9r5o;{|5>EQ{^*ufN0m) z{~?|eSlEx2B=WQsk5_yiiG2N}50-B1(~*BRb?{Q9|4cOY=&0A&>w#RD51ZMLPiCm| z+)rkU<_{(GH^TfVlR2(JpX(Q|5^AFOTpTTL;XN%{HoCm~wmxx!0SBur6Id3E1 zI_bBFcZzq5_lpmToLI#ApAq>OpZY7}TjIOor=mHZBOjmWGk<{RQ;<`U$Yx?&v4hCD zNlfo6o+1twM~P>O^b)}Qlf+r#9FY@in9jLTBxjwFRpRC1mEvmg29eK|nBQD)z)jL0 z5cyz;>3oJm^5F>iiuktpp14o^r^u(J%+F`)WTG#6bG<=)Q=X^6wqghIM6tWb2NKNJ zUmPr&@17ujv~+VFf_}DiGno&1iF9*4f?g)QLcCZs-$6k-r-!k<8$@$`g8m=U?-2PV zKIZ$KXs%n(w@BYAz99ZZd|iB7+#{On7s`Jk{R{CwMOWv0J_KdE>0%SHg%}Y#i`~SY zVn30ui&&4j?t#Okj~31K5AoLieUjp5iF3pY#KmHzxKg}IwD$2gO0Ni(R|kh@$;mYiO2FqZ?3B-cf0aGAU-TUB|ax6+R^_|U-XIB(*bCk>tny`!Woj( zCyG-=>x?cZzq5)<^xr(*G#_S>%*WmVZ@z zNBo<(PyDC&rFc-}K7^A`lwH|yT4NDoS4RbCfeOwd;2?-Ztd;wlm3{vMSMzpPJC5-Q~aB_NBl(mLJVQ{ zEBj&X?HfsNBDNCSiHW}H`zd~)$l0{4Z=86pI9;40&J!!drQ#*xPsQs*YhV9M>DIpf zF6sA(4~vh9e-@t-Ulv~zKNLR}zZPl4!}Vw&HWWEMnDG(u1hJdgOYA3}CJq%xiD!z| ze*SFfGsIGHp;#_17gvZs6RnT>>!q&|W8$yG4dO=e_u?ZWCp>fgwu^rit&jR$(yfpB zM7#QLl+Jrwv;D+|Vso*T*g-r_%n^Hu1H@BAPQhlqh2lhUvY2Q`|3iJ#uT?$26cc^Z zZ&dvKA}4*bKikCZ;!ENi;ydDQaj%%@o1U}A&2|&B#Af0T^-a%d=d5p(I8HoEJXf49 z&JpK{Kh!rpC$_V_{}2=H>hD*)wXc6%y0x$8RCtzuMSM$qSNuTyhxnOTCvx&U%cqMS zMC+seWa+1gQE`+wO`IiKd-#i`b2>ijkBPU7zY*^fe=j~MJ|q4`{HwTAw07|Or2kW_ z6TcRN_=CsxQ^ZWMsn}X;d)>k~O1gQT*q#*!xK1wBN4?s2%X%;~J1ku{tkC1Nd?I%f3 zw7ch2f0kbSOR`$SI1XZlughxoGirnpn&)O+Ut zQsmTo>ZxKgv89OHivL!-{}K8>KUy@;lhHrE(PuxWiL=D%`d{0WI{Iv%k2pEy%jQ>1 zp8-}Z@;Jvz6(vhyi#}_5#dIfUM!AgH8JUytaNTdP{y)=9-f4~Pf=v{E6VeB=f5G2b zvvj~O^WkrpSrYRxjmrrLxFtAdzFg!l0e_Fo(jC9JbUOJ)!}H%x-m|V2(3yvU z?TtdPeSm1bs$avwsl}#6q5JC_jrvw$+^{}oxAk!rk1Yey>5A(O$C6#FI0q3{X4+La zZ=Z;9W*3__3laWy-#iiR;-MYeWxQ>731nLaqH|v>$B9tTV$;f@`|Fzr<83|zWPRvD zyuK?T+cFTHzo5P{3R-O1<!L}w@l&}2JEd}(VS`|C>| z=p6|HK=YBt!&pT>O|Tb zEB2KA&QSN{_BE3n`m~3yaVKwkX76MBvtJ+gXJ7k&$)EjI#@hXgA7t&GX{_Cwz}mer ztleK-ky#U7QyosPe#2=Q&8QB191OOKrd1EkZdhH^u2FS+1=J~0$ceQj+PQK3bY~Q}7@!HI&v+s|A_SdCGv)10{1P%t9WK}mY9_~-y zj{QdK`iwDquYqNKxB)Ee)1RwzHq*!bv#_vV4o~+5s~&@megExYpQrnZ@9pWnT{KYJ z44&?T&h%)aulokId(+(0hU|?F3GWYtx#oA)IgzymTX!^*zx%N9cmLiI{oRMx^xo4h z8pLrGIJsK^kGn3>tm=gyyTS0y4XVSd`bINXH;NA09oiobIQY841<_sy!scrcy$&Rs zuSN7SUylea?`6Ikf$vldz_%9y_*MhH7BOWv%XEms2igF9+oC(ZYk?3#2y|zTPj{5> zb{;q1MK-60kXwM0Q950E{}d6gn#lT}KsW_^%z;TP0{d~6>)Z7yR%NiQ&KK7R(AX#t@Wz7+_vrQq4Wz;7U&w1f&@9t0B`3&?W8@KeYd2Z?X zRe^Bejby$cN?p>smlJr?=a&90zgzmZlcyn*lg?|}uOKzt1;KSva9iU9wyEKC*0-=M zk1@;$8FflF4R7-|{B$y1o_h^H<7@a?f5Xoua~gw_;hu)d-QkqE(q?gMaXZ!M0?6)& z&Pa(uYBZVZNH)KM>K3Y_nEDLWK@i;2nc5VRxruT|Gj#-2-od+PQ02R|%yn#X4Aq@f z`JH07km@u@nc27&yJNGVzD%`kT;+TI%#LxDuLm+uh^x0jHU8(vv8I!-0kderUz84Q zw9#O~Z#2Gt&RPl+exvcLvsw7?K(X1fSn~l`|m}b z|70p}DBQDHwkz&sv-mB532c%N`?8jyNuxajEtBt$+==X6Biz1Z@^!6yHq|R|gPH}$ z_mes1&crQX798IjWhIox92XZMtVD3fxgVjLCUkuN01})05yI0Heg}bHntBT&p;*(vzRB2KSxtOK6cjr>z{=b&R z*$T5Z&?0D>k+uPb6rkhFr9aCV{3}H zgwTS;`R~y2clrTD@)fIlfy)^Trqidf7&~1|ft|hxLQ|X7cAD$VqE8^W% z#rf#L6z4OBrZ%gJH)ru}2<(!3nal4To8oWV;$PU}ZEz~eW;PXV$&(h}ue3UyW$!j7 z^`{_HtFP^k#2a#)fJlEe%uG^8z>zk)P4Bctd3qL%ET!PS+=KgIxbN{xUxqmy3 z^E*u%%>5A=H}`Mvx|?vgF~HnE;=0>V6T?x={p&6KgMQ2Z|GK$<3pbdNmPWgHn$V{< z^bGft_*sE8ne7`T-E~JcVU~s+oRLlV#m|hRejEVvYK+r)ng3_Xd|zr-{nr3!&EGij zdjL)B_W+vO?*TOPz6a1e(dT^&&*y!%=kva${aiq+Lq8XQPxYAInAK=wzYD-sY3uu7 zKs%d&zjnUQ19%?{i1=c-kFenQ#D663g8?|_QSMC6z)1_=1*kJZDHJAg>4mbeW8X09VhuePzaHlL*! zio=^G%a0?DM}V!<9aR);kH*C)-HKq6DA+z7`b7c!ZAV2#1k0m)EXWR^MPEOV7GFw{ zif$TrrmU5+f8nVMaUpUJjuzO6-ddI1zfEj2l#dXYNEVxBCK6K+V47JOqcF{jXFFw{ zNU&ote_U!-P3>}*nuX^nZv_g8l?X7lxeM6piHB{E2TaYy#A9B~7sV)S^_1l?3eS5= zWsJg`2-xVvE-${`!7|(D`kKwX2*OST*tinAO+4HxQ~216x0}M`=VXjiP32>WA*OQp zRc4o?*_Pj{J#}6tInYU7+mf9L)gkzfzZEjuXWD1r*OI>hk2m|}V#BVG zlbzz~(D>>QWp)|hRtp4*FjTK#0 zMS<5jQ(0kkXgg%CfJwA#U=*$b=Li{vLX>^gI#A|1m_$32en^LSzhE8P@+RUAqr(;I zIn^OvpV=pyZo6f5_Kb~N{a1 z6vJ5XZICrp-_;=uVI6lk!PwnafXHhQU_H%SB32I3Rs+#yi@?wdv5RAPz zx@49xI+JSpX1)tRu{i>^Gr_LnOkPNGKw;QztfH_UA^u$eDi0%|5V0A-WTdba!CLiG zj+(wqAV!gzaylWJcbmGL^3 zC)UAhB!@b$#PvhIkVD=Z{xVhoJ=Hc&M()-|efx<0@9dT>b`w-aw z2IhjlIzPE%j4HPruABCZ1d*HXc(cv$X#)!0se4fP~AihaN;R{b$9;5J;r&Pu$1VZdW5y9J(Lq0jv6x%Ukw&ggYqY;Y;Zd&Y)(PSys z6I*nB6$P41pgQ6Tgk+qzF2rXsDBog|#uIlLaU8K3!IY+;`>oOBG;|L4B=xI(w(mGv zU&S*`jma{OSZBl{LU&uE(M_{(7;_lXLp@pJ$ss!c;GrIOd>jCsumKJ$6Y!NuK0=vf zTZZ}U%}iq4kq@E7T)wLjEAn5+ZC1wfqVwGq+FaNZwjc}Lh=6Uqswy$^yK7_7BVOce zHQb`>5bUj6Vmzup!oi=I%h%akQP~})LhrW4X0`F(UEu>L`4|FLbxnL#ZRB^as?Fu= z3u}79^ab~bxUI8&vGL#C7n{phAus#>+ag<`jsNZnZLXu~x% z_E68KzfASn`}6SKV50bJ%`7~E?=ew)Qf-!rIM}?SbexTfD(d_CvFEXBm-W~#w;945KaE?%E+eqcqY!xUFGS!!L~a`Ya>#n3Y`{4OYxKXL6`;}ZqD3Y1rdO1B-xkR0 zn}esqj`MH&xWIGxxIp_+!Re7;`-#EEIl(p+bAyd11{dT&3Gb1^`c~d|1Tu}o`VDYc z-_LVce_5Iw)~_%Q>;GvS*57Cx*6%fL=xvJUJ2Y1GxmVZA5c z4Ttrg!(n}H@S>dHRrsR70T}e5Zx=<5Kh$Y`lR;M?OYV8?kTcRTcSLUY&fRl^Pr+~f zpWSc{9M+fq;q;N+@}uXOj}WAlwhK;<1UpCY^@Nzb-?iR@eZYL4prE`W?zvlEBH+ggrdQ0IV?3)Hci~6>6oKbc+?bC4NZrbt zPY%d3+o+X70|SE#A5~H&F{!QVKg4?y9GI@liw}ii>rU-y9InrK>OX^;y`h* z7!~=ag89x7r;78$3&cwCQgM}dgLu2RN&JJz_f)L^FXB#dkNA=JxybcpewX)D;Q#Ob z?4RWwCbq*XB;Jtk58$5B;{7Dvz&8~?#5ceB#hiyKAbM;LE5 zpHO~d|A_p5rH=R`eop}DA@rU7YbYAO_K=%XM@Y1PG~W|I{-MgxSsN^G{MthvPaWZq z?+KuNWA})BE0zB$k#mFDznjHhlNc8pmHs>Fo273hk^cq7zpi*=*NAc-D*bb%q?@uE3zLZ2!9JaK`zLcC18O1xIQ zQLGXFL;SUPw|KAkp!lfxjL5lV?AI&e>*C);bKXVze(C1C3;i4E0iJiEHx)VMhTZxC-5`J{pEC4RT&e#Jj1J}&-A zd{*R>2$tU|?h+HfEAWNlzY<-Ze^JhUUm!zzW3i>!Ryj5gNSLF^*-5Y2T9>8D7y-wPNi{cQ1EajrODTqa&Da^4)CNkg2qPfmNE|fk&oFvW=OGVCKWO-}vze4(DqPhM-zE=8;VvWcdk1T(WXuhKZ z`AO+-iaW(UqP6D_^SXmL^W7XUTY4MuM6tWrTjUHgmK!2Q#WO^69Yp#$(x-?e;#{#p zTq;(H=KDJ+Z|(K3Q~X--m!h@TH`h_*e^~L>UjNV1t-byZ=`V}cUVo=_Yp=ggdZOL_ zw~7y9z9`o}Rm>2Zi7my5*jeN(RF)ec7KkInF=CN8Nt`Ms+VL+_{KevB;uYd*@dnY_ z@Bdo*263bKkoX7j32~eFg7_D4m-xQOd9++V7Zb(EL_7Xwif<`$qAl~~h<(KY;t(+^ zjuDH*bHpj)Z1H??k$9n)Xt)1s#osA%axeSyg7|^>50SHdnchTfEm}YI$4l=j=81j9 zL1Mm`=&wG}uD(S1=88YmuD({~V&Wa*2Jv^|L*f>3tN5I_Lwr?yQ~bO5f%vibnfRZg zo9b=1u$V4d`}&sBBVuQr?*^S>u@_Br*hL{37d9uYa; zocdsq^UbMS`}RbC^qf!5^q-2HIZl0z$T{NFeyv*N4bo8oN!kK??Uf0rG7 z;-g)k`}hBm*7QFnTl#PaJ4%ZcyFVNAp&-Hd>Mp<-|+y` zV$()L_t*C(>dVD3$@-Yx*2iPOmVxN($2EmEId-w)0z_DuY1gOYxeShPyV$hz5aDk( zy(?yMARpUhylwYl$hHhb=REA72n8)RZ5ecbeb4r<-!8Zu#OvcTd|QT9T#5SLr=Z2A zT@Bq|-seKy((h!3+@m|F?@xTZagLeckbLg8PZ}(Mry)?>&%N zCKrKAbG(r0j{nhiVH(3jqRls?zjoLU$>nC)b}@=3AFjhfG<9`lee9-5!V=j{bN7aH-CLA zIy=rt#M#Bx$JbHw=9f>spm$!*!k(~|Kb9?hZf^hn-_w@<4)hI6+?GDuY3B6!;NvmZ zZcK`%uX3(PTa^+$ac-#E&E32|5=^abS^MFfm+L|sU#<)93}4@1RbX}SI;WfS@xn_| z_OB>#2aVZ#6Fh^bH@U@0+ZPOn29_6`Q;>vG?sXHR&(-zWnDTKj)v5k8ni?HPpX1lL zHSj%tntL6+hC3fOf<=91C~beHI~#VsPNz$v#dVpJ$JS-07uSX7Z9bUPskkmZeQaI& z21JlZ}wB04PkFzQd=J~rA5e%!~` zg?@rk=eq;89!%-<THD)M%@rq1xcup>?5dp=#89a&UD`t8neg zgTdL^wT%6&QFe8~-r*r?eoY_^KUmVO`(CIw$=y-)!X$+s}$V&#izh5bD-tj;+^K zz3-ZO2dLh6RquePd+M;dQ0rZ&FMGv)Sf;xthxdoVPIcP$5z#=+p55n0U)aMjF*%wP z%CUKo|%3@ym1b-`{EP$CdW;gj^> z5Xf=+^5>a{55VL0Oo=MR&D*rP@&!`;FB4kt!qjB>E z^iaxlB%@oLfrrSuQ8z5f`8FV_59KS}+fXQJ5|ghr?%+K?@hMFMO)@7VNBA}-HOs6; zwm>H*Y##78&ou8JI)%c2U}_7g;Rf>;JAv%Xy(VvZ_-AaPWu|!-(katP8oI6P=Y5Cx!yZl_SI~YIS>}}HJwB&|Gjyr@x6fqfmcpsu2l4K3b}bE3Bd(S^lBwOOa;4o-Oyz^}MqEqx zbf&gI+l_iq9ZfYKY9?0NJ%j7PkIQD3Ep^;8O;%h7GRt5MJ%-wLXpP1|a0^*&8{Drn z;>#CLhCq009u?pbW{QmDK-!K#~TVD*S59Fh#@G1EhQ^luEX9h0ygk+(46v37?hyo$)z znXu)gLle@`6TV+@w{lLVS5-6C&zB*kOnAwQ#7vEO$kCkR>)&l0+r+ImeGS9(HG}4! zBb)S3#r3$}5|%1FVSA}3q>pS8Nu%{>8mwIDmCw#Ai2a`qR|2hHd7L$96j&=DOUISa`2N(>oI5gmPyx6WbT2 zsXL9(6bci_RyF~d;tOtgad%Tllp1k7;T2n5Xp1G-n07Zg#}YXRnEHK36^qTY%4OK) zob_u`?tt*1RgfdTc-4#}cw>mn8%#AB7#v2S&=>)>G(=MyPl3h|FsxY~qrmoHc(S1? z8HOjm#y3>47d57FWTl{TMGX$2XR#tAjPvC1|MBaP)THm^qD)b!9sHpUzAOq-C( zhP=%U!zW)m&he-RrW}S*vj(V~0xO5XljE!thA!#Zco`LyY6aP-ER* zOc_d1Q$(aA7)wwJ z+;=|1lG&k6>>P)#Y-+` z#SfUA#Wt1wWM6#lMs3%z(b!Y(tT%yROU9uw=v6s^ReGDXzD4f8i3k`31UrS(Zh`Hb zZ*aFkGAh6lGQa#`|NVGLC{bLW+m zM^0SYzh9ThvllFmR4iOLuRMas50R4jGfHO7Dw#F8Z%&^`uiU(T7xbQt_#O)uE-2|y zGJVF}$@p{-tD8K3`ph|V7yR3+EnilS5489mgcy?)M$DgHF(+pZx82lPC8g8hwsC63 zva*tL#9{MIEw7k`Iq*=-X5};=9BofJ?x0+{f?N~{W<)v!GX@3cMB3!$(gFifZF9o^ z5zMG~tPr*yd1nmhGdy@U1Q)CfHpXvhu*pPJ zwS$v+ScA-5SW@bIpV{^H@zP9Kn4qw+5-A(DXpuAg%<++-d3h1+ z_nbVl=W_?-4Tziw1EG@X}r(jL7cJ;wBg;lqN3J@84~xigVv-rVWsbK(CG))0#q7|RI1g~YKeCOmhV zc&rAyiMYjtv6hgF&5G$|^t5RVQ{owDQgH-#j=sU^lr1c;@b*MmQ3VXCysc_>iDzM9 zJU7aO!e^MX*eirTdQ)N3v!HzL>;)yWB5crf;qZR^7yW&*Z$lR^LjAV)a~G6XUBM3@n1);GTP+FaTwo>9xZvN_X@-%`hc2h)L(6FFXs&1tK2 z;i3q}W@MO7T@m;?omo;|zHm`_m;dr`{!V)jo~Dmz?=d)I8Xje&W^^8sHn=~|L(_TY zble<>NkhFOJA}8U#|48;6>@&D<8jY`3M`%5CkoaoYtt;(UMD;*Y~4$#4A` za8mHAI3;=)85TeGZesjP5dWzBOVGRlsE-Na^6g)OX3N#b z1f7g}1yT@C#`zS2&&R#RJd>~r(i8Qpcp8Nu%&?n*Tx;$J+Iz$YHy@z;tvGbnW4UC6 z0A60ClXw}zT1nPL(gud}r;j6%i5GUp_ZE3CPJOUALOeq}N1Q6o6E6^tW|zU6a@Kph zxJk5j8Ba^!A-*cUBkmUWiC>ERtIB#ih`Hh!;<@5n(LAa{{%fdX2wW%LNa97t9in-F zh!O|yq<^aPI_WThH0`92$e$&>x%7zil)T3kaS{TAuBOW!2&4*|EsAEiGdo&RlF?se(!NZ(Il zJKFiRsTix&jr|AMNjkp)$@oEHzBpdA^JTGHO+Fs2%x}gq$m585wrFlMp&uu`i zrN1ri5zV+q`X|!)^pySLNsM!$VbSmhwoF#3F6WG?_Hqu z#o|iwa`9S`-(_We>qT1PQ|B{k@*(k$qVemB_~)g+D84PeC+-zL62BA=ihStJ`WuNY z#MUC8f-~J5XJ9|+1I5AOFmbe4C{7T~iv^UQA)SwbS?@xzT)arE6n`onZC-q>(qkh3 zoUz^w;_t+V#4X}h@j20aBp2n(@e97Kcs}-LefBu6lm4|B((xG<`Cfqeja?VmQTp*> z4>3=)$9aMDv&3`6IU=8vv)+ruO7UuOm3W7^LHxb=h{#tHtmidxr)cNFe<=N9u}=J2 z4C2JY@+o2qv9)OJyzKn=o{H}+axMqU=Zho7GsI%i*nuIRwf`zne4;>Hpi z)@SU?K)w&69uZFvyNP|o{^Dt(u{VR9I1k^>zn`jncK-c&(k~G0e0<~27I7;TZ~WRq z{)O~4qOnJV{443Vi^eVu^8L~i=jA`Ic;n|5vawGC-&Xu?aj*D=_?74;d)p^TY$#@l ziSzjR5`^2+&gbtb-OlG9Dt)*(L7XJc7OlU%CDMN){!F||{FQjS__+8dkuUMspLfJP z;?d^a|EJPj+o>1P`Z^Ka|IT@ld|1r-nlc~$kl6c|ALJh=?iJcj$%pF)wg)zi`M&}< zefZ;BaQQJy2mCT0PS0jZ%*Qk?Cm`T&&oT4y|4w4N{6d{wa2hkq5d7M@8NoNb{7R!; zY}%=a!0ob=uY?m@IOdB-&7otro2PZ`*O>^m3`A!O1`elC*u{#|5MgDe(SPFI2zIe) zyl?fl`#%2I(FY;hWqVu?av_2(1JSt?V=zKNi%mNpy1%|P9ld*Q*2jOow!W2+Z5fEp zQ>d^0KW=>*{|EZ(yTex>@9AxQ*F*N#_ZsTse<8crv{i`k*Y_am;b~qP(|?2D&-VciP;M)`Fpc3s(Z)~2AL)FnfNYn`{Rsa4ZT77%|LNQQ z{TVWbQ5j&CHK_0V%+cG9`d+q$K=zFb88DLf^AhUge_#wl^Mrxza{sVzzTxYHkf8(O z>|*P)&(AKv*OI>19KBw-z57MD9NXVbK{wOdVRQ6;fjN3oR{jt8}C1mp5Nexw^0O8BR{|_Hb|Z?*3@+1K~F4*=Y1C-94DJKeX@NJbGy9SQl>7`#>_%LZcb) z#N(3@A3}T}A%6(*fi{oscTGI=)7J>=;(BzfOKr1lN79<2=%DDrdy%u-#sf}f;9$}x z?jU#Hd%fsEC4zqM-@*B8srxaBqdL63JUV92#OUAmoE^=( zaYrzkjNXKMI~|&Qkma~}zZen#*;DrNvmFg;|KW5i$SG)0-2yY*Qnoj!37m>`ZGC)Q zz|3)LXy&*zsO9SDY!_>31WSj>x2H+(iCL#H5bpvwgQ29kb{ zLpAgWi*%c7Vp8}#Dm0w(Y35NwD2bNKq34)q@Glr2O5uO&(7lW~JI0uB(lyL84?n@k zXvBnGpxAi|#TobscIWvew3D&9D=G2{670{DEhfi(f_PMG{(8FMyQzgk=D}7d#OG#7 z!`a|Zy%}>wl&>^1=8~$AHFT}}BC1LDe6KVO?QB$u9AQ2$3cc6JJm$dcx!b7ztr6d5 z2QYi?)&IlZl>k;%TXS_c3<;YE2x0Mo2pTp;q!^a4i4Y+`L}U}u zT2vIQENZ9=wrUj-TeU9KT6bHh)>?nHv@WO!f}lmQ`hVZtZ{E8JL4u`=)q%-3=giER zx%bYUckj99%#eIrq_Lh0zmv(iE7Uwa@)Nf3ZsybM9Ifa0N*&&wNlitndltBE48qJ*mQuz~ zSn6C>TEkL?oCeaV#mCp)I3mB?BP_=qe*JQWqywT;i$A|p;^iJ=xi8}744KKNidy~g z=el^g%`8WcK3|?8XP9zD$apwj?g^Ho2cBQfkbh*k?DgpHorr$_e$R5#(`-3I(y@)h z_kBpK&7pgE!#r(ZfpZ!TZeWol!WhwEAI~&n>XvduhIu{HeIvQ!(rdZdZb9-5z0-sC zdD?a&y`te=&44u>hDb($#7Ur8p0&dRS=lVl?lh5Ycc`dc4J$ipyI^Jas>8%EL|WMq zc~6=Qo>Uw7dXxg>JUO_MC5NWt$u6?CO$<(*9iM9 zpNXbMB6`Dwdb4Rka>d?kTEN~sX^S$Uo@}B{IUbrK1@jET2Z-p&gA170ZTLe7>ePb^ zY^Sg|^!##mON~ERx$y_%jpJ1Kx$J;{)xbd2c*sBoP3?#@A2Gt2pm1ZX7dS8$OdJ<_ zVZ|~d7&u743lnwO`ABL)F8&rF!t9E`PdPXP1WLmy?gU;saP1WYcN;i4zSx0XfW4I_ zo`DFX8Manrl7$3*9KqqtEoY*{C+3wiQRWl#%b8e;h{^>1z@kQ3ITP%6z$TR4=1(n5 zt_UoFBP>jmA6XHzZbHNfsoKeCmM3|M%Eob63pO{z9#0H<3 zU(UoY5OD(#p78l)N}o?yg$TQ` zP&pGDeLg?8Z8pi#1Pua+Hi2z#K}4Sje%rVYncxQ$@YxtYGMkIYL=T^sTh4^>KfqoK z6LggG?F zW0Lm(PB(#HDvUWE6C5Pq+p)qs4jc}8oGZd&M2v(5nyJm<0iZB1GQO zM9vK~zawr!w8nc(KZb}Z1fDh)BX058gg3=zd)JvZhZ1r_8p#*<4|uh?kHPFEkAWW>+ak zTP`#!XZCzwj(7<<@j@)XI}Qgw+wVXXg;?OqLljc2X65TqfOigVVZuF#wVavpmT}52 z#O!LXiybsD#0|1SM!;|auPLwd?|^SAZHw}@C_==IPvEe?sO@Wq2iV}6UcoeDQI@dw{oRybud;0RHnM)OMD`ld~p9 zs%0J7;BAa*7;*^liPFrRhJ`;I+#F5sB6398z_HT`u{C06L>nxxH+UQmHuON6ypf0# z0(@RQ^7tdRG{9#)&fqq@j=az}Gw}WPnDqL#sn!%ZVW?%-oIl8<7bhrT((C!AU9tc+ zmov$nLGQ^52EM0wnccl{Sg*Zx3t9L!&5aE5G8TJjH=ll59{zbVb7=%TV*t#7z4Y9C zW8fQ|+@vE+d>gfF)3eQSFwC9QF0bvS`R2b@mJ5bA=V8jLk()oRdApdm3Jb@-=uF7> z9$JtKGu^$;-OVDKyo`@W_V+%9jqd*W1Bzg^>&+SfHQ+&}y4AMQHK)c{=^CTSO7^+| zJ#^fB^MBfg7YcV+?;cf4UadBtFyb9!%uLOh{ukKr8YAt0p&@U6CyoRSmLaDOb&kZG zSN6;QQY+q)p)B0rVWkPFTcmru@)z=cCaW;0mz>O+L#e%VK6>aQz zkJZ?`L~JwndtjPKPdVM(NBvu_J3&a717(2|BmRrM5xA%-5=y9 zbpiY_LCK40ZZ#W!|;;9n~G zDwSKIayN>|oRy+ing5U)5!ZbWG2 z1C*~Tx`D8z@C0GLu#>QdkQzMpbBORP;b`Gl;SAwy;U&UFLNk9r&N9))4*>KHqHh-7 zA~f>}^37La-~-}6B;@x{_UpI87ld1ce-i$m@NMCH!ac%IgyvH@jJq zA+@t?ca_lE9a}r&d&ReQ#&$jL--!RT@OQ#L2oGm(Y}fPtOy$`J#$=(jGp;4Np|Gj2 zrSJrywKMK6+S(cS6K&V~9wxf7z40XRrwV5Z=Li=H54G-hWqV_5XMC6HZ4~}O_-o;B zg)a!V2>&d6L-@AvJ>f^fy+Uhu{H5p=Jb?0irU_}1K)R{0rSJq{zOa+<6k#u6<#oeH zh(Ag=UN}iOT{u%{?U3#I;Y-E8Qb-#K_Rs9U0lY`_Mxk9Voc5M1_nPocp|wl?NHonX z%<&6r3+oG;3Y!T}5S}QcT?Xs-680Ak6jomMd%pOKg|`at5I!Y*PPjw(kuW3Tx0fyK zAUsKUme8)JeX-~T!ga#igufL&E8HS{SxCzg9^c=EG%X>WDy$`}D{LY>R(QB|v-_*u zKq0MADE~Ym%}_|s5H1y7DWo+D^KTN`^{_XH{=M)eA+1tao<^=jnxznH3)>6r`qXy4 z>2c!IJcZ?F3$GWh7Sc+E`F5RXnyHZfvv9xg3tI7 zK?minJOQRx;87mL#^o(W+SWnRxf=4WU_!y>Q6CeOcN^qw0FUx`uiE~tMB3It(y50V zWm|w@lgp78lsBxke|(gefoSEeLz;E+5E(wLi#f5~6Vk!{jY9wI`O8*0UXR}*qB|u36E;C!b?oP-Lf#*3B_R98K*Z3Dhux5u z2j=1I=c5>>$Hr?VA zG^zITR`b?P&b(p#q}t`#E8Wg_Pl~KeU-9AOtRFuGdwQ&Gd#Za%trf?tO}p-?`gb}> zu@~QW&f>baA1t~umc2UMmFwPKkrP>yx}2-ux>)=6rJR~8U`y|%pjM3)SI3&g{u)bN z{n~yf59_D)bk?R`i%pVNgsy$#{m@y94}_X8&*`(nb4PN`+3VZH8a14-!wrM)hH{ct z_S)fkZ@eFN7v`MP>-qZ5weE_C%zC-EEsCr?bGMU*n2xnf-3+YCdPZzyY+MYh&vM<| zfmlg)-ji4l7pu@B9U1i`R=mXuu>+G=VtrX~!X`KQMz;r7bY(7Ab^XiMnyXgCZjAMf zrK}xyUjrkNE9Rp7x$eooJ&=r5bD5vDw$_@o)#+F>w+$@z8}>;ztK+7dHFMLjW^PkM zH(lYZ^*&ixnz7btd(Pxn9v|0x)8|X}-v9Zfd);o~&%G~R*qc-|eYbP^;Qdi&*#T$b zp3Gh!^mBi`BQ5Q&1J0?xuAg?m9lkEJ;DgJYU)R5H$L$NeE$`J|xZ5e%+y|vk{VPhJ z>Y{#ZcEk0id@{<88F~fAufj?eu-SkAL3ZSr}Q1 z6>hijeDk~y;`y$6wcj+Y_B)TO{eEax`+cN3tNp6pyYsl(udP>&)qW4#UZvH3QQoZf zJ8zs_?YH+MX0_i?DChBdRjl@#v#sWu7{*1D*h}}FwLhFzd(y%KVc1&N-{Dc#g}rvX zH4i;5>DHIm=#d?7VTE5je?0C%7S`15_BOl`Mq`xw>-*MNv0z{6J=tsP#EyXn1lB=X zk+Jp%lWMQcSmUf(K87p$zC7lbE!k_6;02M@!K~>!5NrAl#G1aqbYKJ+0fvF_>Ikgq zo4uxk+puqwzS-AtUEh=~*{fS0gR!56a+zG&x32Meh^(0%yJ34|RcXxLNlV_%zNuU6 z(d}4WQ*&I{rHx%WCpenS+ezNeWAJA%`uA|kIFx`R17}|EE&ge88vbH^U9-+WC<(uo zj>l&zDEb49JpPr@Ugp>Fwz~grZuh&w;NqL;vpOJIUDsm!8KLglhf4R_H zIEN1eUJ05Hx1b%RcN4j7Co_2^3+GWo>dj%Y%T@Rb*M*&ga7ssl8(D=4U>b#YID8|R z^rhtrz>hFJi`f-?7^0!FEUF13wRq5TwT!P5d7ZT`&dMQIJ`ACGBK;MBFTvW;%uJ7r z!`TeY&sxta&9fqZXCn(#woas&?1d_vQ==@;2`v)U*h!*oNoa9aQ$Xr3SrV%SQ?Bgt$yg1 z8)L(~G_@{5!tF=$S(2CGkK3Q*0K{4sQ{-tR?01;iYzKg=Ay$=Ak(@u^!# z;exwoGw(%E*(=zaPOas!>+d*R?cu)OG4)cCLyyHjE+asLt0y!FvA78&Bv-~}bX9>MM;%hZqUk{U$dB}yEvnnp! zj9b;N#T>%84X(z_VH|K60a+*EPJ)5M6`6;)!;?p(onuyN#=gM$wJD@N9Z7J)JBn@) zD2e+9de?ls+B6ET=uFR+#z6*$2m-DaexLlcoiXN_Zb5{P8J_ho*>4i5AeceqWMnc> zC?5D01Di`iLz5gvXm66k39JPJ%>pFj!GEnBOyDnt>x?8U#$fTBx%0}ISjUm$jAXk_ zO}pSTL2&^~LyF{Y7wq{6qcOmYHwhDC5mA&d-tw84YX~gW%mmwlmj)b2u%t2xwrE5! zk%bt~CE=d~6lcRWI_65#Xnpnsg!5K{` zKo@Y{)-7QB>kz@`axv!94XP41Bcjix46WI3_i0If)d4QQR8w1#ekzuw-V5RPD$j&w$I*ZT{(ZkPiIX{YbH~hf_ z{{XN^v%Pva101Xzi8!T%*AQ_L7L+r=kqAEFV??dW%p}Jp#;qBq=s5=Wg7Od&Jc;0& zKI2bcM4nBs2s}_6WSGb^g|T|Kxrvq-0y3Cb?#m{uGkg@X7su4#325dwM5ufhvr)E? z>J61GXUsJv>Nr$k_Fs zndTKpcFtW99xtL3y%cX?;m56nmYnLxbro%}vmy;WN8EhSm zo4}#spXj`D8aI52h#^Vf_{YHFs`xx`N)c(tRM6!lD9Fz7A#4#~e`PS!n%@%s&`d={ zUfJQ~RF%(bb2lP7Nf>2B&7EhDF@)bquubTTzdSZLFA%OX$srs{E6t!8Lg0u-0ozo- z(IFYfpNfc<2pJ^dF_Yh-#5uF&vE`%(Ag0l^$1?4Ss=!3MCVZ-siu;J=G7tlcVl%fj zaA~u@{lIA#b(79trl&be&PW5j71hk3YX) z%2*!%k!=k@-4Su+37U@jTk)Nd=wh;m5|lmAX7kDHX4Cp$0>_L$_e0O_2bLf^+4=Y; z44`-*pS{BXC$I?mYqM8@+-O*Zgr^W|VV|eq z{40>>cPRcN!aJuuqVdEV%5~`c&=>$VLY!sJu3_QNY=|mDwCB(A?df2j*;Fv_>ez58 zgrl1%@!eZEe%f>_81JtFjN_-T#5Y+z{yE3>>JISEkG4AIST8-=+$)JT_8LUJiBYds z6hvFEUbOMCoxF>>lO7fI>PA~Of(uGysh2UrUvhqRhsg1toPJ`vb|>a_Yj-wn@~E8JY~C-b|v^6p=d>t#h7dFPJ^aiw~HjdOqPb$=c3;KJUCwZgG<__)a> z!^VuATI|fUi;rX1f!-ILI<0ud#ETrQ(Vkd=Jg}a6v0o&x<~lqfj0?x)Y2%B_d{2m3 z;F;ydi)YN3K4Sz_V7@nr)__l}yv|i>Dlc#D`$za|sK=Kpk1zU8(Oux4Vshfkz1u#- z7kD?`6?RedM0@dkHe6l*puiBXP@i4#S6Sy;?AA@ll&-Mm`~SAHQ0ES~8fIgI3TJ?e z-D~ZAb1iVL%!sIBnSbrDV6IYy6RgW?7qL(HW!XVs{Cs94MssQL1tn*Vnd&z!mHsuoGs?WL z{`>uF;*T)qfC4|Qp#L4~<5SO^WlyHB(2i5pSs&k5^ZCzg75r-gb4Nud8=JwW6+AaU zDZ}ea|AtyZm^&D{0TEj2mP8b4D}D!IS7A@#Kp`KCC~t(2UlT}A5%R+o>3PB*3a=Kf z72YA-C_LJJHhlSIKTZ{AAJ7M3;#+cJ0W&T=X*K|5)@|(fkZaxp#`*B-+@oqyBG1KcoCV zh~6gLB{Y68kmKT!p8Ya@Frc$UHza~SMzpa@2c0Xri}Lw#jOB(2#|Wnh=LxSAUPDBC zt3}@|+N^sGImQkh`DWc~(8dlOw6Q}6ZdJWkRBxMTW0#J6+F-Fi#vUE?m!eZ}`}6vw z5i#x?5>c+Xu&pp(`Nr-X`F+G6C>$;vEu2V%-1CW$yFm1%!t02TW9`S+iT{A`Az@`Z z@$KU85aO-Ov=bKMw()79xzCZu`G)4E{~j|hg0}uW z8&&QX!pDS92%iVK-qSM&rS z7ZIc!DiMiGh5Y7Ex?E`d0YTp>`hKC^A7HcSCxtHx&3uV^uZn(Mc%*(j5zRyC!rDUX z&qH-5`%8^D@dV+CLRu}5Um)x!JY86M-+=SPA19n5oF=sU1uPP6_X}7idZp0%@7yZ- z4x#nmxnDF5C)mH|gw|i@716Y$VE+5U-NJpse+XTaVY!G9OB))xuCReHDr_ON`vbHS zeK^0JAu4y4@CU*%Lc2e}G|@EuV80d#uMjR1t`u5-ou7!lU3ibs`s+L-`cdIi!smo9 z3I8Ot`vd$}m7G?;ug_ZqujuXF)(C!CtlIX+j3vj;5S$~|$emFl; z{x!n2!g3+)v)SKY3I8bkvyk>P%>P7Kc^`mCil3h@wEj1ZM7I*Q7SaTV@_GpEegFeR z4-uXv94nk4oF<$hwEj3tMOWSjfOb7>Z@rLfw3EJ1_>k~XAuWHHzg76E@O9x^!tKIc z!jFZY3I8Fa=@8{*3F`|R3EK$U2@8aMg|szd{V~Ex!l}Z_enMA>zf3q7&upweTu757 z(yfHFNg{o+ut3;XI7m2HNTVf|pCG(Ic%hJ1Ow7MbxJ31;aXw2kk(hszhC%-@F^i~uYalk&nbF7qAua+_~*pm(ZBUhI*o8naC(fc0q`H) z<0AOw1V63O4Uj&_Q|QA+HcT%H#W{?cZvoZ5f8d|c3yzI*QzMT@`2Ok zWHqgxk4^!`X`3qK!AGa_5&7tJ%ExxT42Sp88F-RuunHfYYc|||aRfd(HJAT(Pi9i9 zSV}B;MbV^mP*E=$OIy)k?QN5O@mYG&hR^D3a97s&@rKXpIjPr&uT8p+{y7(#-7ehj z>8rWd#Z@`j_hOBA{a&Yg?Dsh@<%D;8sVR^US}`=!v}! zx_Q?+2b|q^?bw#*9q{&suXA?1)s1^$G+*SxCxLq|bc{Js=h&acxDy8Uop^yeVPKDm zQO_J$=5i+t>?`rY?+#psbO`*A;k(_rF9W&Uqv5YxQ*Im-8-o2XxiNZIiPiZBLTd zXrt5SmB&Z*hJVdI_}T2M)&16jMjL;#Hz~Sxf7Z4dt3wCek9&NUmE|39cW}v% zh2|V&L^^DW_4q8(7Du1X-8Di7!XG=@{Q`SPwC(X(GV;RdM*d^qZSQqTLfs)lVVCLV3G$~{;H_{bEn9oAq z31i6#B^}Q)v&m`0-w$}O+=W)c?JyyEJ(rRbPNMQFJf3BGv1$02a9NWuZ4SJ1?j$FY zbUz?`GHQi$PGypclyLNHCaF6Qx0uZ2t>m_)5-_}yfAX#}1^A~+IsU?7#c0&RDLqKJ z5u?|EYYXay!r}E`!s;C9%X}}EGa(utEq@??D$88szK3*jxE?Z6azgiHZAKzuv~C-+ zo@Pz#%2AuO?#trIphwGb=yhnLNZ+I7{wxZhM@tzqH^~_$BSM4B&;u%)6``wV=oczn z$9S~-QdB)B>4)smgINU-m1-17(?jkXsNqo?W}H?^LTtx(TDdU94jHS<&YmPA9$q%jsymP* zbz#|GvhX01^iMEOD`$}U)KG9*G1P7N?W{wml{3xxzqW5SFP&S+Mp~iI+5E2L4kpPJ zNV4yalUz_Eo0r2K(hOBz1nK*%49#ULB;m6%jAEDIeWx~jRt&)xQu?e6XHEk=X4Ik2 zilN-0#$)9y=A4O~?3*Zl1j$=S_KTC7NphsP=P>srlD$ZdWMAGRnZ?5Al3a*qEIuZP zTtV_Fp4m|x#*cxl%db4{4@ict9mw(SaDUBgDm~qeWWUEs{UOXJ4}f&)Q@7g%kve_% zQLapr^9jgScvQ^c`fVpO@g@?3k!ZkD4P8hq1J$r55<8e^fCN9hG;E1PjEQzgOh5u& z3>+S75Fd^A=4tlkBINqLG2}89uGa;Bj9-!I^(!oQU%Z?lpETt-GjX*V|L9(2xjJ~t z^W_=xI6m~%n}k1|;^kgrxjFH2hP=|0TZjy5xqNxAv)pU(a)#W=a*aFUu&AB(%e~KX zmuK2`4Y>v+=MqjKhj)@m_{ALc-BJF#on!)=tkg~T%!Du`>)B0K>Ia-+jQb2;uYC8J z2EO}DL+d`%$ls2|xX9R@S$Gx9Lp80QG4jmI0Mf=e<~3YG_`qy4JNmu}f*C}9fixMW zy8iIW%Q>dCNz(t{>FRR{=DTGj=a}v$doY2&O0cTjuz(GU@QLSxHkqNyR!0VdP|f0GmvY}begbimJL2mG^KX$zIMkOKpHhscKnG)ibM zHnB4z436iQGr?x;&MLM^*0(L%Jli1if`R403lnt#IZRBz+#7e6;dL+%IdCc=-h+rO zAPBon@*D!MB)EK>Fss3#Fuw-9fQUv4iTwHl>uk2iD}d63&rPzB0FyWz9(Gz`f-c4& z=9M$S4?!U2mopJXgdD>0KEJG-2^|EdMiY1t9T9OIZi^2v9?by6n$8?r=5S*ay2Fq) z5V3~YR>iPLj`mqF-Zm_fMTnIulf^Sr(WjeUU#GiQR|MycOM z4do|wsK)7n;}*ZLI%GMV;Uy#C)n&0W5*G$0B<)w5pk;*Z0N!y z?>bB)gjW!84i=O%!7Bm29a*T%+mH7ae9;Jv5zU4!Oz;E*d=S)LV#D$Sx8{XfOS7v zygWhg8PZ{#?PRBLMR@RvFw?1s+3*j6R}MTx;DZC-9PaMIDZdag1sbTo=Yheex2qBB z!>f)vJ6z~*ztW@BY23;b;QY$N2)2j@P2lMAPf%WYTL>A6i2H`X%WoWX+BfEjpcIjI zzy6}S=+Bam0O z#8fIIlp%(k8TE*_Ao>$kJv+KYTA8SCP7TGOah?X8kwoJ|g1Oh3-1yCEuZ6kUY&lL2 zk03VC1uC`s}|dr@e*?4g*X#^Sf!l! z#w5(9jR^W9UP4a1&=)8W#_2rxxZ)d&FgqO)a>Pr>i5FslI({MTbW=qk7RWh7q4@qd z9Z`TY4{l@v=lEKImbvFiV1FEYmjy03Sy4pHCIk*V4sv_(g9Dz!Z5SfvCIUwfW|{tp zQ8e6Me|yJPY9|#9WK_Jt%d@~^@j%gGAUUi8o}rcnpBx&9!~^-WP0^tQ)=G6QPU56c z>a?ID#sn4{jmV=RPD8{26KEG%)0yei_>_)1`7P!<&B$8pmmpB+@d=@n9VomqL`I3z zl%78OT2*LrJZiE@;v~crC-tiZC2;T|!N$|cn29rj>(tn6SH`1g;&TsbWTsz?Md)YK zfyLs-%3f3;4ytb2V8wZerYkei6%stk`Ugo{7LUe^Xq(8wywMafaH81af7fJbJIk4} zhv_V}a3&ntJlYs_P#+=wdS)Ja42xVGIw!Vl#CnJ}P^ndj$cGKyS4$B&4sGDr+JyKZ zB8Q$0mbV2wju#s^P{?}^kr&wpUS0CoN&buk10T+8;A0@}B9#2Dy4>0QoW7~c-Lp^% zXAkhEMO$HaCU1IfOL)v3>t!=ZA3OXX4L`iBTv}k<#F~|0VpW7o|_f~MWgA?7u^9HmB<5{nJ$DSAV1mm80 zBS8Pb%SC$AJP2RD(PrMvXghSvOO4#@Wpan8%i$-t zo_=z-!A~v|esW9Q0bc3|ZWuLlfVX{qX~1hPvHO$nIp^gl4psQkRk2xBd^|x*frkO8X?cD5`HVI_#JWP5CROQ2$8QcS*Gm`^9xea5 zb&~gU;YQ)3!e@jp3EvdHFZ@*a4eB(!gdd8m) z`HPjmO!>xt1o_6F4*BbpZ~W;%-z(bq(}8|WwDG3{Z9ey-{+}f89pPSK62=(&%{8Uj z&pM);if%6YMA7X%whF==2q5&ig?^6wG-pyx@h*bgc)iPT*YM+u9B6NTps z59jx{Lgj7{t`puSd_YLsOSZRJ_@wYf;Z`9(1+ko&&w$%S?-1@6ej!ZaJcDv}UoXCX zl5QxZ{R?R`uK_!Y?kc3A4fFd6&kzm~o+~_0Xy!qbpDOwy;Uz-8;!>Vb(g1G|y;gX) zkgvWh$5&tCBf{SZx!@`JzZbqF zR^G2`iuluni-ea6x#SY%|3t{8^GI(Hn)w{`3!=?@4*LH@(+rE{&HN2?IiCTOgj_R> zbhgmU=b(=feZ0{4M}yx%^hv@3VPB#3=Q~q0ZSE<5l+gO~nfV@k>(4hs`DWe+-}?70 z75_>ht)D3GdLa$VNdHt=*{|;r@iz<2?*Pg_FZyNStHQqut-s$c(H{%B^e)@`N|=l^ z=~Q8Dq4|A4+Wam6TZ^ABq{S2K*?qYRME4gC6jt7kYl8UJzpwIsT$TO$R;c_9!ga#i zgmxdUdqqDed_?%7aI5fD;p@V8gzpP?3-<}X5_))$Hs?ub{rl>RZX|3bY$ZHVX!qgj zBD%ZqRN-mD%KLAP6Mv%6`uo}ax8{kzQ20aPRl=3RRl=VLZx>eHkLw}v9~IJGk;lDN z_^R-A;akG(LK-x({O7{d6rauzHWb=@x;l%t{(=2OpDvsvoGPS^B;{WrTrONGTq`UW z-YL9CcsRemKdamu!uN$cg`Wtmzh4sGt=OL$LRxB)ZX#?cJVBTz>?rIe>?x!@C+iOt z+I_)Bi!K&U7G5ZvC0r<6BD_YpLP!Hq%3m-1x$r(AEk>FDq>v_~r2izO%_!*)g=u)k zBb_PC6Lu616`n0D6V4N^6_yJ(3!fCeCEPBIr26fp3r`g03x^2L68=CqMo1%9_IHVp zR<5LP5Z)}jMR=$19wE(OS^f#(vqIyq2>u^M+x^365XDEHp#*#ioX#5p125Blw{&3+aVUdu=v&^3-Tq3+eSlMrJz4&(u?-M>Cqzx|ReI)$5 z@PIIa2YKeF3!4g?2~QQCCR{9BDqJDFLAXiyppfqrl%FiDDXb-o3R?(iANLyjj%Y`%%CjEerHo~Nz5pEam5Ykkb`8h(`3X^Ul93VVHNRwga zUo51}FzKs>KNsF7r0Fp8-xShznDicD7Hot`*AaFSo-76)Hw$kU z{!EDJ{iyn_9_h zHwyn%ezgA!o8A34`O)U#eZdAi;+oJ8fAP8)593khDvTK$Y+fHQ@H68SC?l&m?tciW z2b#qx4?lYc`O)qHbDkA~e48u|q>*&!Gye?k9~*4BF<=DSU3Z*6udrRVXWQl2wRMnm zIyJ<5E)xnik7GS3ZxWOx)UQw;x)7IlInuTclFo3*`zaF&Ht$l%j=h8`0T6PRhgd6_)r3An#;L0NFPN>f8g}c1j?R zdLSEYIbz^+Ih!DlAM^SBz_!bNux~+mZ#O%nA8nT-@uTgO-=zz^XrtBeqaDSL;I`;! z;CPtO)pJgKe|N8xn-&)(nO*E^_6^6}g?BnRG3VH0V#zn(v_HD=tG|Ew6_(gJeaZf; zg%gY3EgCoGmN9=D^XPlK7g5Z)IC%f~!)|ZT=~ONqK&%|#LP$M`IR~L8-H;8BJfjH< zB~fASO-H3r8}r)`N;w^bXMRt5PGHe+5|u1iP!{Q4WrmY-GKol%(b7j!sD#q4SMVvM ziptx|KRJ0Q?X6_(7N;>u%M-8dxlG>9WZnf77YRQC0yPT=ZseDQNO&&W2#1dWB(=n! z@Rja;D4rbt0Dn{X2aD;JWwBp1mZ3^`uJ)^PYK$Ryan`4l-aK66CX(|+MpEII7QQ5l z0^k@}g9dTo`B`fXnN?#M$ptD~r$#>5;e{%klZu^>!iz* z3P@^k2Iaab`GDH4ON}Pu;XS2}Y&)S=&S|xA$!fc4XX6qh!odvf8%J|`8*R6$pesC_Xgqcw&_1fMLhpTj2ZMItL zSoEYFp2GwC2K7wuj+wc3uEWIT1sNXaRR;c+Sa+oYKb-@J2NE#mBXl>(VT1z2u(Q`K zj9b!yp>2EyW0v>T^svKjiF5%X3lFYPxE{E$CL>UI$SH{sSs~<*9|`1hrZ=H6{$fZWB&rk`I`Jn+ zoBQ1vh@p4H)>z}Zjw+cked3HU7epsao?1LJdVE=z&L@nTIBiz6bo%tEGovtRh!$Tk zws`#b;_;(8<#vp=&&%(8VTV!RpEwPxR-afrX6)oqlc$ZFI%|CKs0+r7n>2Y^v2&Eg z&b(-*mWw{kZ^&QjJZ{i1dD`UC#470LjW3=sX4cfw^GYu&DV~`-iRbdXnWf`ltN{XZ zIn6Y*Ogc_5sd3XUxM2FU^GdlWH*1*lo@B0p_k`o-wruW|4QSTNE9*YQ%gk-!&57nW zN5K1l>-uYPb5U$cI;cQ%;gMOB`e6H*DpsdX z*r{Ale8J4(QYWzVd3^nG+AtXtoxoz$M`UCZ7(nqpLZ)xRb8tWH0@(kQ?U(Iyd<}Th zj`_o;6U)DA@%2ihYi8+~Y2%8`ve=2W<*ngY!lpx4$8hGsy@_N}pXoD7i_1Gq27(66jDEQw$7K=2Nt`ShO%9;|nc0m-vafJmDlypqKOSA~BOzAM}zH1yqM6e=mC1XXqtsH{~Fe*aqvGE{S^^(4g6YCeg+Zk^(KOUmXO}Fq#2mcJAr7fBamZ>bX3?v*hbh+*jdTx}w}V(dN2>{)K3BeL??P^fSU2 zgy#Ap|1Htx`hxyQG$$PP!{d1bn(GeC6wOx@@|z3W2-^wG{eWr1o&%}`Dhy6za?Fe|(Y<& zSAMMtcz{KrUPA`ujwvmjF?sB)Qi!c~XoQkDP4U^dW2KrHx+WZpzbt3;0l>=Tn8$D& zB4_f$mCHk!%Iy|_X9KSx1LrVIc}@W$Llid+uQ&BIEW^n53K4A|kTmY9v@5Z}=JB2h z%FBbi&B&xYjwdURbD^z+r1KJF@s-^Mo16xQO*8Lh9C*(F!zQO7FWByG%+H0$WV__s zc6o2wI!HRS6^JsSVDoq{2jvyu=g*!O{!&_b%aOKqD53-8v78MyZy6Xtd4&Oa{H3+> zZb91Cp^QF|H$T9z$(xZElvf0KyiPn`B;)e#L7H{)5E*`ri|}%#>&E_qCIf$q?U*NB z26=BWpiy?9%Dvj`J*LU8Mgm7KQFIy=g!e+r~H$pt~~rYensraA@z^WsqQJh{&9-YKQ@g$`dLm%LIaru z4P?f`2}O4-YCh(c#eZ9DG?0%|U{D9iXOnaqy3y^eaRJw{mgiRX{&?mO(K#+2YxJ^_713o4)Rq{9&O&FgQU{Si}r>@ zJbL3#i(yRC2)MEi(x^1u$c4y)4)RjA5ynF}PF)86gfDZ~qh?SCnG?Rp*Fi2smGB0w zFy_>tmYl5 z0E&+QHH(`JMJZXzi`XC)7E&Y<3SJXjXh=PpY z>mYFs%=~3_ki4o$bBc)v64F8PwE#}O1eW|-9VCC=p-MDA^R{rcbdahTA=-)+b&$+~ z4wB&a=q%f#Ds+&{q7Kp);h_eD^234ra25HHKt6w+OlXY17+(m9D(rGF1nKW}kVXe- z-9nGD4)Qk@bdW_Abdbq-B&*`F9N+sBn#qKJrIe5V(<(>bd(>AvRys3QYlgEESM((` zVR04}aNkTB`3=;LX3Y54sobll=GsmgTx4}QU?h>LJLIdAPaz@qo{-I zLwV4N6$*z7#|kG4`F_oE-|HZ89`LUCy$%xR0Xm28b&$|E@&f~I(||VcdmSX^3%)|| zY2NBj4yCKiLm9p>Qt!vWa-3&vu)h{LBT-6s2GV+g4>AWZ!@e?dx=qCsk7iIV>RW>vWL) zs;Pq<4|&zmLH@RyI>^-+6w~cV0rI>sR@On%pMqn}20N~v03$fArUs7J>H^u{$~s6I zI#ovpIS=yQvW)`mbt7UZ#X~9N6@hs;9puZ0)ouMBk-?+Fayk}uw><7{}309D|7%k+6T?JP*jrlf^(~2(J>0Q}+%#<;Yei-^u z$)m5~82#f8yL_%mPXXg$o{dTYdPiF6!K{$C5j2d)f$}b5y3J`Qi;WV_BN0xb;>!CG z)4j$rBb+jb1U$i6Kaz4QsDy@*A11w%S)~OP4;~G7y}YwoF%lld8sU_`v%VY2G4;bs zNMWTI2hgtk{cPp{;IBen545FGn(Tt#6$82S}xHVn8ui zD&s^RI5e0u0E|al?H9B;j8wEaqzPic<}me;Hiu~yZ4POIm;pP+DohY@2Oi1<@nHKx zoFxpeOUzj2Zx_;8#Lj*?hsaAoJ|G@wL31zS`|D1FBt>CkEFguGy--Qm#67fpM{4W7PLg8S@=hZ)T3ioSVQ}V(iTk znCu-&Q&#C@O2^5O_8+$6J3cTKaVF}Ok+mdznYR=+d{Cz)6(%PQP8yM1m^?Tm>sw{h z7dWhMmHv#^pep@Y6_(5XGHy96H{CT1eEo}jaP?s5OK*Y1N z`E^5~w&HgXb`|y%4ipX*jt~|LrwV5Z7YUaNuNB@byj^&=@P6UL!pDWL3Evm)7uLm3 z29KwMut3<4nB+L83(q9tg~t5a0w<_kiTJZbFA!}WZXp+Dt)||M!k?(zy+p|Wqv$^i z(X9%0Ug@Iwu*32>Li3aWn$P;=^PVJfED*a3`w069&k~Llju93MFA!cR;#oJ3m$=M$JHivT$c;K%JeTDTO=Tk#%;ub6f0cHK6&f%SM*&I&MmfT}!9T+SO`G%Uzex zoxQ8o++Xc+)0{n7&YWGx%?(4|t6SgLAK6eEJNv#av3(!9Q+|c^TcNDmWe)y+vh^*{ z8xiO1nmD(^u4Z$`Lgss*m+rcJBztuQd*yUQuPB)kDSg<^$lSu6k&#(DQ_!nq^fqa3 zFAPu$?J}o(*0B(!+Kpi)MZ@XumvrS%CDGt)W$WW8Gut-FE2y(r$O= zZv$uVR_;QZu_v67yeFLeIXDaU4ZFA2+Ba~XBRejQcxy*Z3a|CnoYVB`$YNZtCm^%Q z7W6iRtKsFvhVIWA)f;i>{&ZkEFanGK!@%$;w~L2zA(VfAYX`S+-&K8U?e@InEzM#h z_J1nZe_5?^Cr^>yDO?a61YSM_*y_Y0cO07w)wNG-vI4Wfw zcY|LwmN|3Q1&(_ksX55Z#I~n~_&o`1duoVGJRoLb+tZCKb|wjEeSPX0Qrra9YwBFb_R1D1Xe>b zUImGe$sIyqVYAmD6VLd3_NzUj;WOcj7!nlmB?#zb3BHJ#e#2(?Iztm8z^4eV?}_pR zN~3moXn9cJXb`l{Bxaj_j3D^J%Y5OF`22)$@F|>!={h6q(Nat>usnESqD~^Oj|o}$ zI|>oi2~U|8M!pQ#<~K%o4-q@am6kI>YYMZa9uxb0VqQ5D$)+1a3H&O7LM7$dNU&YV zC-^-bX?qH;=>`7eAr>O0JG1HA>9ucBh8?BIVZSo5kz{i7Kn9sSRTVPkq6V2f3hbwt zsB!JE?&92 z6XVO7DDsI(1zLBwPp3iw3MF5EZJ zP9U~EikZM`$(zaYS%+tt_1QbtW7=L(Th6cTe{Txb{}LITaj{?EJfh$JjI!$1=WXzm z-~NC=`vVSDzXjTx!Zy)Io>tZg_Lphf*AgVk{IX{dO<(a_V$V$oXn*lc>2S zhNVBeMmGG_^f`}zznkCDeBCgP|C@e7yTf(6cWl(5bw2h!YUgF-db6=_&7?2cq51&Df@>xix3v^VddIq6xV%{M*JOGKM* zdZ1T`zDeb85q-Dl`$Ydr^k&g!4CG9G{^i>q49$Ny+HI8!ezo0!W)F^g?9??6Fwk(O!$QGS>cO9zQM44Gmd~} z907NV&leZwn{fqnd3}IM!gOJluz|3N&^(2sJYRHJ&nPf~Jw(TZ1B8Qx!-b=TV}+B2 z7YJty=L#1IFB4ubTrK>G@OI$?!iR)re4>9(ihf@Bd*Lg>*Mx5gw+nX*_X+-uJiykH%A-q6n#yiR_6@8`f7U6o~eZmKXFABE` zsmf&g9|=DdelGN&++===FiU9myaK<8=wpRuhivfMitZ#lSy&*nd!-B#Jy>Y=#6ta1 zqQ?m*3QL5g!b^mUgjWi$7TzEz%_nX4 z(gMCC`hDSU;XWZ1z~=l3EAPe9K>Q}cmckQ+)EKjVcVQo4KVhM8n6OwlSy&=071}*l z7Ky$>xJ+pGTv;vpPT@Vm2ZRp^pAbGJd{Joj;6lIco-415Z}(hzU-WL_KB3)n#Y0^l zx7~Ba?8yb1z6|6y652giaz)!cS56jPAnYp~BpfU>dvqZ^O7u9P*`o_-YT?=5#lp*l zKN42nd!=0bTZNVPUiqc?zYqmcbQKcY3F4qhLM&ye4C6Bwrv&IwLW1zQx5@qj7bgk$lS z$!p?K{W`XO4`r01bSt8J$Od3}(sfmndZ5XQyk?<~Ks zVkntsJK8kx**qw(E;4t4XM@cv2E(SA=V6d>ZypyKIlgK`ceI zb&zyEz(Zz~2?d+SXThMn7n=Cvn)3LlYUN#yw5@|A*GR6?w&haf1?9aSkjLj-D{nQ@ zL3s@!kI&;a*yQzK1m%4Qc|1P$50Bn)dAB3YI(di;Um^3ZO4p6~8xVu#?yOa{ZOfx7 z2QZ;=cH&x-VaE$?WrF?N7dT#2iTCe0q%oFxx=k2`%<9;-gqv1x&G}XA9}bM~*R>JZ zzbr)d&E7*uIR7dHOUF)~^Ze3>w{3Y3*A}6Izt#Q+ zQf^H6TBXE&t(suPd3st!)?QNdWl^^=`yX{4{|KG*FJ;(m20`f;f$6H@DA)dm?J?iVN2^IZN7CrxLWF)ZKf0>eo$?-P-vRumOU;ag?G zlwm6C4`&tMl!4FEUfV)c^d>NwH?=MUwb3gO%jh zBApz58GlpigllK3d$~WKjS;ulR}+ZlLw& zvoI5}aKo&3k)7&dsKbj2CH#+2ME9>CX~)o$i6}VfY~3wj<2^{SIk(p~B+n;_2zRP& z_WCNM;mVzOQ7#@oE`f@mpva5OB-FyopD{xLX#;%*0agS%IbCYkj>RR%@QgN^2}}-ov*w0<&G`Z2XM} zK55`vKH(U|kTb_1OCIcRRmT(_LZCSMTM<<;LbMet`dcvv-|B6FfX`P|-+m|~7=pC9 zA0rcv({De&b=+veeX6tEr<&t4tn12o%B)so++?iM+cy1O_yF^7 zS}MK5mze5)DY4f9L*QTW@g{M(?K(|ZE*~FJe3z-ieS|SzU%qBdqW}6Ohz|O$!r93N z&O*I1axP6?l5|;ksdxE*`#R{Hr4zwEefpe#$C^WYuH^HiANYis2-R8lydjG7hn?r0 z-%Wzgphj+DupVNGb9=K`PbuGm;$P`2W%THHb{&mA(^qMnutYdVIA6F-c&+e8;T^(F z!e0rW5I!s1BK)Ipx9}?=Z8q5tKEo2Z#}AQDOhogbi}%Z+q=7WM<@Y9|zXncIxiaxD z5q-JnWukv9`lq6QA+-AG4@B=0qI(teAACq;`@F8isIY~Q*Pi@#LOy4b?kzk`I7n!} zW1J(J527qjp9JD;;auTj;Zot%!s~>5a%H`r3hx!(FH9!l9l`b=q$$t4j`b?&cQU`B ze&--xr}+5(UdO`|j)381!g2V^cYgaG+tFvo|JrhS;4sbW$G~!JP0IgcXHD{OJ2(YC z+bK)+<#Uc>8Ai5uI--@0q*H{*Z-qA4WIr&1@)kngLS#}N`(ovtjkK+Uq*Zg>qIlc|0!+)ENc) zw?A;aRwu*${tgkBv;<%R{idp;3&N5i#$VIcvwb244$q9PSSLiq%;9xHzUt?M-snO__0TZGNijdIN2(JlN7J5B1VvAR z7^#O&W3t*hA*zFt_(PACy_W;xI-zZu37yd2GN~?#>xACQ+-6AWgx(hE>xACPeA#45 zC-iRSdP7>B(DuxCL08ZT*`aVqoenmVCYkY{y5bAmdd{1!X`-|K{Mei%5vSf>$Q zq{=#>D0t8b5ttn?9S3E0{DDrW8Imm#LwH;wvgE-!p{C$sw?9G@kvbuwDw;KTY{iN? zA(qe@JboX}2E&A^bV4i=3_*H0?u5{HS|{`kSG~prVtxfY=!DD`d)<%6QaVkCoZCD< zxRy?0@#>1NTv+t+e|jaI;4;>6ZH-ZKRLc(c$ac;n$&fI(`Wn%)MtL1^g%rD)zAl3vD~!(zKkKPm2>@l>I6%msG|Cw*94F+1Jo$5k^M%WV-|K^L zev%UUlqk;&XguW^Y$I$Z>>)Hy=_to1X_g-({4VK({s)#~{*T%GA#CDqgiaSyBN=z|KYsSgTcZrg%B)<@*=@pv&U8c#l+ z7aOvX5w!%+=9MBHJTEUpUKV(i_jUT9_K?SNHduL;^+9h3MuD%b{9UW+*i z8X>O1>@I8?^H*f1KFD8**aK$5t@pEFv@AkDxsvN zpgiMxVr_)ZVn#TL?i}7?rhAQr6j<~0B@s#DdLS?iS_4QJ23-Zp%VQPaFz5^>?HVUV zAW+|YFmWTsza$do3M{Y&st-t_t4YOmn6ttgGV3BMay+v(W?sfFSZkpBGoLeLIMM_~ z!ka|;nx6+UA2XThP7>FJ4*w#PlR&E50Y%-D@h746bMFO7^PjFv@VO_Q&AHv!+F2wi z-|f!UE+vVGb(u*%f@qdn?!ngR%2AWApKj0PNZO^AA3*IxEVayI!&1xqHpTeuwD_?r zFXP7f=a*XM6hhSwk&nelX940Nic|$P51)hLp&3#Y)I9!D%M^5kYMxm~qUPZsiHDX* z!EL;N=pW7U!o<;h{Zh;9XfOon@4QOL_bbG0@=eWzdiskjLnBlc&1-u6xy{=JRYL#M zdY>aw#rP-MUvxQc;4*FI3rf#s38b(*m)GN&Z2 z#`@21MuvHXzg$5d>*E7+4X2u_)>0n+Em%wWyQK&6Z_kSU)kY7*8}X>?fx2Q`P_NTd zI8ZoLI6_z~oGP3tTqIm7w0fYMMc*#GTX?_lVd3LKK3uUM?+f<}>){81{N}>e#3XD* zFKkc5v%h(41)ipIL&YB<+W5I5f1>CMm0x*H+8+5TsZ_~tqw zf4%5Cg?zMSz0Ja>h0hDk^+5icqTdyMApBVPsW6#{mlAtEKpOe>eEkdUiFjXpZ%@P% zj)386!g2VESM0bgL{KNh0=66;pSzbSewurcWoB~7!?tMi0)I+cgBk9u- zt!yNnNr=A=Fl@3P_(6HpM@>Q|<*_eT-q}doI!HPv;QfnZ(FU7084R0dUMBQMT&>Cm zn=A$+*zVg<@W|)QVw#WZkLeL6-({h*JdAad2V;HY z(-6ydo+x^^m!0acAUl<>FVjIyde$t07~h;VD=V88z>~ zYRD&HrQuJu-U|9-#5ud3p37B`$AQbCO_SOeKz%N3B1{>sNmX655TtOC7Z`!M_+jg^m|@z*^z zww3-E4!eyoMAE;+XuQIX$oP=OK#%(ja!Q0gFdx;teoR|^U`G<+q$$kcJo5kSeF=P3 z#r6Na@7^R25|Ti|9`Ff>tRaE0M+gv}fXEg=1pX{SLO_I=gtd_%qN24LmRbe$;l81Q zTdj4W)~zlTlve6iTq+fmAGijw_5b~zd*;2H0D`r@{%Y%dGWnh}bLPx)=gz%v?wOhB zd|)dw!MHyQB=EHoFnTGz4^fDOl{@^b#>q$na~cFAqqnDc?dnbyn)vJvb%kQ`wMr?bxh!TG>DN#r9Wi4*1Ce#1-1 za+g4F!(qN9CG9|R`|jsK(sqrDkuCckvI7y3^f6;)li}+?)nifZt&DvPR5FWd-$&M- zSnp}Z-A^Wr9AsPL2gqTX0^B*4E!-AxvaRuhk29_+T#v0`KU4+oR18b?np4d$$rh7M zkFv8dW_ueMKg^`u0)ZPD3zLF}DmO9~W)c}}Wc(|NapwS7qK!r-^*Ler1DvJwZBdNM ze5W0Y>$kOr@;O7tG2hsru~9(F#>KK0z`CFpQKq*MPGpaQOfRN2j-474n1nt;jw5^p zY3_VVWGdfsLd04lL~=A?DI{bEV-oA&G2h9&m{P)HDn>J@al1gksEy#MD6NQ);Mp(; zrwVSJBik91@JcbpBq#2Khj|;pQ-N)ZNvwoNcuWPtV=4-m)VN_FP*01v8yQVj4F4KFrkuMd zGlcDi&5~ov8G%g2u`d+Cqi+({z{?iHB=~C*%;E@%8$G5XLgG$%Y+*}y$O|utJPcwR zJoe!w{2m_r@K!`fybq6X!e>H`qQ9L}l(J=#_hevJ%uaem4m^Dj9 zeo#X23XI*7S>TEAHIy)*7#;;8l)%eI$GknRhUeDBT~CRS^zN4Ngh$|!E#WD6+4q>l zPA{CW3tsmzQEuJ`1x5ax|l z(Q9Bjs@ZIqP0CJ+uQDS{XXVDermun?&aTQWpxI}s z*Yw?hwYVatYjK4ss!0QJakX{rMCdMfZh}nQ?a_-*G(GdL^2$FlmVedAZ%dCGAI_Ek zLU{p4L#}tnD}pft|;g1V$PMhDm+Ql#Rhl={44evZh(AJHFt03EXp8% z#>Si@Cw%((bg@^)a4XOF8hZ_Uy|m_MFoZF6Jp6z19>b0J08Z9#Uce6I@nb$yu`97I zepe{UH!sM^H!pR+z$7b}02^6QkpUiq7p-=g@4hCiqH zN5#Kt{3ptDE`<5W9<9hX9{rSjDiQoiikxpDPfIQ$XGe&1tT%f#kw2=5>~F*-ihRK$ z-$s$YxyWZJ<|yVX4pAJb$aho9PgI+_avh9Kj4eXzpD6};@gVvD(+MKAH`}#{!XJl+V&CaC`vyCFMDJIWur6T$r?{H zLdr}31$I-ur=s*@gv;L9K(m+dWR0JvSgN>Eah2jG#hVrHRlHyE1;v*Y-%R~27V+^zV&;>U^y6~9vayJ7+cBIcKKKm3W%s0L7t-XDXV#geNG^>0PFqt5~MENO8I1O2yiH2yfExn-%X? z+^YDn;-iXBEB;RLb;Y+8YwscaiH3inXrrtwZ=7P1Vya^8J%rn6css=|irp0ZDGpQ| zs%Z8S9kTv!}4xOZZ+5|E1!u6@RPvtRev4 zd}7aQu%Zv$MX;BSyXoZdP&d!>e|!&Nz99bKO+o(8))IBXb-*Q&_iKRIf$;Z|alCGH z1K}xWTrbFQA%Srwt{(#YwhUSL(86~_enCUGlJ`1v4{HRxNdwZl3K<=3jnK4Oa=ee< zU?)>&bW8^C&$mfK>!|w&({90}p^B+^!3>d5XX4HU@7K2rFPwY_Wj*+s%64HrR=}Gy zAgxO1qnvRjZW#jn`u^(Eha^#b>p+_{)NvIe`R;9;A*&GJ*H;aFEDy_v*X^jjO`w@3 z3!ZK$B7a`%x-tGPc)#4+sKn81JRVj#fVffhEh|rHg6S_0fcBTqf;|J(T4m#o{dL#*Y3T0h~)A2j4AId86IKdan+W%)$wZv6bDu%R3)u(RyPUPTZ@h5 z4)ndSpym2taE*i0k{j3=;W}&6TD;ICu=XY^aZTN|ZdJmyao6vt4(@g~jIVYl;k4y5 z;;vp4ZW2DL+CA4sL~KSNyB+z`cV4E55qr(@PFJvpz`~xcBrx%kZBYulQ=^ zXL;4`@Vdn-4+riFZj1|K5l$71zz%%9yhAwoV7ir_o!a%*@W$|%>eMSnRi_SLb=aNt zY099zr#lyYwfWPPhn>M6q=felj=$uqRbPyT4958u|{d#nD5GjH$j;eMm##Fnx z7adMO4oP>#WN!VMxfX@rPs!gq*!{Bc%C9c^6qYZ;al&-&;|J|z+KN1N*tv@*QQHSo z?KL|RueI0X1n=cT!omCt!>RZ`BWzdIS>N^kx2oN3&x8ku)5GJc-HvC&c4oz4Yu3S( z0eerkFZ}AJPnREd>}@G|dk0u-%jI9K_+&E9u^s_gJNGwe&-ZrN>+4=ijdsb={Nl0|(u}>H8An-b)FriC;fx?_dWd?(1%d zUt{-m*H(U(cyGdndg~_@JNs6+N$al;w%m^Mv~8ZhoyBW2c>p}x9GC`VJ)U z$EV9T1E)U+1lXoLNSS*nGhl^;ByeKHoym~1Iab0yBBc)j>}D1>|nQ4c0EeMy87lKe+X<+3(KWH}9KpGNj&vhx|+Z!5?I1f_5-lby%r$tBBw z9?Q>$DW_3bV);Wl_0wo<{pmBXPw;>*kd8lbQ!*GckXpYXOA~O9<)Jk7OBQEa_8=A^ zj0+03tFrrqJy*F0QG@y=3zf6up@>(?&ZpkRWO=3R!Blh)Sw3OyFxj#MJfC<0_##7R z&uWOA)7S@pinw%6jN#n^PqJTwg78GZTo76C_Utf)7b9pZgwwcr*DeqZ8QEy1Bxp?S zo54TA1QkCq+V?R5wbw`Cniv7ir7?410^Vx&GX4sdT)IG3aw%sbBcM4+Jvfmxgo!SH z%j9$^WW9PY!k+^#Up0lVXn+Ql9PWm&|>629v`~$a-~Pg#TLb#;l_7ov)Z2E;l)B z1<{a^{%dh357Vq8qJalu#y)W=ruY5F(L~W+x{0N$eYEgTWqpvN1bE zdZ7q)GHs7NHEC#CD3KC4-A7Jw7bS^mJ|#?2rrkfu+t&Tmr22LPJ1_nh1CyAho^SVe z+$a9s-+9~Aw87%J@VammofwSo%=iW^?Ci8L_PF>7iDye`(&DV_v;dT(lR%p#A`-2Z zBV1#Ovm{2mNuo{GvYPr8pcE=|<&1r*eT@Xa$F;ROTcDr1i7!Qf?Xg#lh6Xf--R4cXeQ-aEDgl6 zK`|6X9m|GI(<0wVm#HHYMm2#j%FY4J-(#?jA+Ubf5U%2O;ENJGfv{bIOG|bGImF>e zf>b~cj~ob?CS(Dj7@oErw*sG+;4y?(BzQr^(MrV9usQ2m*W-To9Qh=)LcBF`tvhM0 zOPVvy@z&V2?zpwC={+Xiq~kBD5IkCsK-IXw1noLor0ayBN^EpU$bxvQfWR!!zqV8w z{lb_+`??Ct$Lk)XMOtOWAH$3F{z^QFatj-m$GQ1dh`TmL&McpE$gXDC`ke zlUGizCW%cbf@7gekl?M1vTTk%RCwn|S0#}Lk6Vi{M8eTKNsRKC#Ss#`i==mwD1t}1 z3G=-0k_c}nwk|Z8Mwa|pA=UyVMzO@PX_y=CyhqtQCVVD{x$x;YtLw|GFWWDa|1C#; z*}mFF5;aL;R1YSlPFVp*#>4w;BH*fltRPArpGJ)Yea_E$|pc2uy%WjsN1v zJ`QinSTl3RJO|&V;3{A1w9!cT-Zt!U!ed{4rgs+w>jZ(rl?10C>eM!u`Lr)P17|AXe27Iqmr zZ^qmOGYhR5eI}Qb&Yx8}{k%}o?74+yp>~UV^=LnN*1QFw^7-@UmW5zi7AidNoWhwi z3ujL5o|zNE-b+2s?=~6Xo#)M;SJ=65`Z=>F&-T1xZClv!T+O}Q!^77d;3a8>&9q-_x8RwPFE}J@Q#*EBjc9A1&L-AvJYFYVAOmIN}y@!g< zn_gZF4!`&Cn@yVA>1XHCEOcq8`6+GNIVr(hH{kraUdXkb8%jf6!Mq{NEv1=4XCmUZ z(ooA*ouW~Z(%g1n{!}mIEFOmFt)&ydzFd!@_m^g7RJhB-ruuv70N3t6BQra+gLvCxN-Sm?{jGP^j7Gf#DvWICzk*&X*f zD=N#Kzgr<-$oZ*V-fg9ryry11e2DWWn7rP(EEm5Nv8U3!@*X);%Pl?ssU*Lw+=?9n zrM8Iw(R;pl8@L?p=%?eEycW$XTwHE>#~#(#k+*2Zg3?l}WZ|Isg+)bWUVBO_Pn}B3 zPuWEGM667Yyoo#ovT=%c#Re@X#dL7VxtdjtVjN>*VC+wWVh`#w`SjW4Ll&GfdBB)6 zJD1HbDql3cv~cR6GYf_mOzobTUodK3;iAdHP6ji1RO$RVg)_>_CZ9fNkX2e(wqS0# zHB0I_b?WGXaRZM$Eb9Co-O#aOh2XsPIdkXFIJW@DNm;e_2!@gY`T16~d5$uMNaTs_ z86yU>^A?;}P(FQDVc8J_Qq&d~R~?`E2My{IYR5i4R)*E0`K2MWNocSRtszu>Mqydm z{L-@aAq=yb*)q^(_0H}cYKNm)3a6J9whv80k}hU6?%cieIi=I*%_t6)7A~A!HhccO zP}iKSoZdbDABV9dc&V;&+Zd z*G-s%_g=qqFlO_cV9dqd02ubKu%m5;d{UzY;7^H|I}tltd;*nP^EyQBXpg)PWA?PQ z;+Pxe-0{h9pA|n)+^6`ZVgqy&%AKs3rPyC_q#{4oP)_V* zfoqh1RFUtSjNd`T1OE?-eBQa;@yWP$)YF6rUhECQpQ=26 zWiehp`yig{g2@lo_+iRVReq-O{6$B7Wy)Wm{1u8D6z@>{rQ)MR=zm6eu{Q+&2jySa z`1h6nn27oxB%+`2He$+?MuPFbn#($vrIT7(<2MBa9Jg|Jm9Z?A}Fm&kQjXvJ}gGF~8jj`HU#E>PsJE2dka_*2EJ6lMHC{3hk^P`q355k>yiryhRNB)+Qn zy5if4dldI6exk?^mrTcRpu|K)8E3#ZQoeo~%nP1ILUvA!Zd8#DYA#m%@6mu2x6*&dQ_>qbQijx#& z+(bNQ!6-LJ@qEPvikw$w{BlLkC6kx&6u4ITUnoWtZ&JKpQN~%wKdZd4=YCCjey671 zJ&OAj`8Ay3j*d?5 z#S0Y8IJ`>v)rvn?yh-sk#d{R*Q><;r{ep(StoTR8*A?GU{EOm##ZMFuDgI5dj*fTr z6l>dYpRD1hD0WiJQlz~B+jp2^fufA-2$yjkI8(#VRh+N5Sg}I!V#Ui8*C@((4?Wi@ z&kx?rSH^wdJ<30*D9-_eZ&Us$#g`O!DDF~xQ;`M})cZe*wVw;dp1TfYC}-@s@wrxb zc}{>nNqJ+>-AQ>GkuY6v#es@p#gU2yipHLMit@7*&s8i{T&Q?~;)RNrD_*JibH!^F zZ&bWhktQN6->($6DL$oW?7Lr9{*Q{UE54_=M{&R6CyF#Wq5e3inZ;&uhQ_fit81xSEQK?)8D7~E5*kY zpHX~X@m0mw6n87WuXs@LbH%?aaz8=lQ%A9$Vk5<7imeq-Rm@V%QS7VOUvY@yaK!?} zvlOQ(&Qzow5X-Shk+whNuTrFW5BUcbY2`!yO+{MskpCY=8ugHGsFbR3Rf_8ruTiZ1 z-g>i!Z&7?e@nOYB6`xalQL#|puhPk<#Mi7HC#+Xl8Mz;y?Q&UN^+$ zC>k(woe)5p{hN+*8}V*uoU6nzph?4^?T{IOerKGC3nKuxl9i_sH)r4;f)d&qgjm zg-EC~ahw&xxv{kEh&W^eRe4%(yvX*~&jyGW=rahHJi>l+Szoa>>!BzU8b_nS!r z(prxj<{{tpFmb#;{rW0!Az4rAONKZ4ZU@aY9AD^0VUm$+GL2&#{r!qYZVV;^=Nlo7 zque&70pgy5T%OVd=1a$Mz+b+VC|@eVSU%1yn)1B_8pSCAh;y-t;EAlaSOn&cfGQtUK*JixX#9BMU3a+WMHc%CJ zt-ax@;%)hA2I+)S(P<*F4hXV(0+P7OJ0-w~`_papB021+?F1v5Q z-oSu2tFgv9+#&p%!`s&MIOHOoo7Ce_V7PtQ`uwJSf6=s!$KHnmiT2^Z7dP$uAX)=kYY;eW9ca^J@V?y(?EdYl z10CPrQRmvr^M9KE$RR6q7uHWWhXbGD!*>TZYx-F<=hPTR3!!nuB6&J);Zyme|*T>U5kfAqiZgj<2=|>HiakxN)>qa5+pl1AZnU3GY#c zlex~>wC%xij4c3{(;m*G_9Qve?1qMuyoAZyOd-kn61Niz?Upb!YX!-l^IxxZ{LhIm zH}_VMSehZTXKunsa(3{r7x+0;V7voO zkX3K)+)^v>Qv7p>u#%}S5gDg^1;U2W2q$^$zKpZBAe_$5LI5f>NjT zfmjh)&h*&*$i7Urkcs+J^+^ay`x<)e)A{+0HYRBk7%S{SvMZzPnUG84B&HYp0ojY0 zb_iSfXL#JCacazCUnZN!e1|fl`gk!(mvtY*G9i31*t9#S`3%N(M7h)0M?984NYiEA z$8eUJhhTxlx({Ku35#_f!d-|bayr+22=@}WG+t%s$?vOR)|ZXwIZmpzi~ z0=#6T&tFh(*`rv2>&QaUXtu=j!eHe|0izBGhXM%aCVJn>tcRgF?KuNR@j$BmU554=SF3( zr0njftgxSo>{E!?4$n;nJiXUawr7$lgRsNET8%09Cj7dn>_*DYkID+Wg0fBcaqL|X zA$a@Q=aHf*zmq+K$fjFBybYq+%^;dnB7c~829NRNn0d;D}tHy?$6o>Y60x+N;*@efl9qh1eaJBcISzti%Q##o*bTf73h zg4oiOdb)B%mZl`z_Ruu0L`gXrd-irgFHSw?VigQ4HI|%!HRqV23DRP#Q)Jmm&Gjj= z{Dk>n0g6e5E8?v>VR#e&x)TO8H49jpc?(#Ydka`Hyag;ReB!b`r={vet(g5uC$MgX z&n_%a*=3O^f#-oNW6<~;;mch znh_zx>_n6Vjf11HWHh5=u3LE>8j$+oN)m6w!}O9s%@R)HfEP|seJ8S>WiztpdKMy+ z`4%bUq9UwWJz3AvHDg^MuT5Uth^cHH7^Z3vtGqBOnPVhZA&5gTOiZ5wya=BLo7W{4 z^_0s0mi^miL^wp!f)jEab9l3Zya({4N18_S*{T*H&DHP-Viwd5@@oJ!F`M%xgOXS_ z9Q&vra`OPk)(s`mH7=~$Jop4Wbfo%ZSl2q%!ev_h^~s=_%u~hW}*GOarVS>A@S34jgc0w0 zX_xxanrL33RQNP)NJ;Bm$5yh+g3X3}wcpi<&O}sKN$Vw$NUw2QMHrFirPYg8BbpD4 zt0k@1m^BnL;(AHD%%9d2i%}23`>dh)D*Qe?jQk1B5X&`S#DO9?iXdO0t%Vgt_D6`6 zLs}famLGtJQbMj5y_6V+hhlhO z68vn7a1Kh#gglFIwUDC;o8YmRdS!$J`>1av0|yM=^Zu1suk}u5)_X0Fq)9DxCZzi zf=4w8EHnl^!n@Ff;dDzS34U;wW+CwrJmd)+Uq#617slMJzTuNK=Li*B9z|}vXqrG^ z)v=_*Sz!%6{1`C4VF*!QO`Crqe-aakK{5RGUR#CL)sw zUePO-MM&^sV)clr1+*X+ao=A2Qpg~mWimz`tN4$4LW?6LcmpBD(g=xW$X4n?BG+S< zMM#`LUA!_+cpcK-rT~rw-bwwfHjWo(+lmP-m6`U*o`EQFCAbc4Ahro}39}Cano%g?S z?}GR%yy=Q2JP+BL=L{R%I9BWtcozP7_!r?>f4}qR-y3E5aU~sA03NY$<^1gK|J0Rq zIO^MJn(35>oU)LE#c)ZX)?825CZkPui&iaLJBxDLb(vk9<q6h6R~t zWH0Q|W%fdR$hcpYpS@AWRcp5heYk9xNG;5qy|BluYzpm9FUGMycE2pDqSvdd3t-_5BL ze8fo&Ho!Wz53r8y!pbVAP6%t;obq9?v9|50Qwz=NZJ-Hj73Y{nl3I_D#Kc(@+BpOmbciee0s^C8q1h`3$kMC zjm)~J=xQdj%5Lh^F@p=dBPFmD>RhU-xjyQ9t;&)mRsLmRqMNnACy&BeQx|xd>7qVw z8CZ0|m?WM$b-nSAdgS6nTp+rkmH7d3?HccaOFoUFY7lD zKTUaAw*j8J5;FY~mFKT#^0Hn7@jp{u)@gvJ?H%K9Rr$M==f;!F{}JV%QvOxNT^jzb z^0Hn7dJZa&jw6!{UJ`Z_9R5g{+@Fc2>L?1LYw@gp=|)?XlA)?Wb2HGYL+m7=V( zz~`~+HQntRez)?n?hWnz7nfmctj3?M@-vh->*UTOk9-zt{Bn(#^%O|YeWaP+ zwJIm;D9|pOHC)zBApQyR2!BE4Xre&9vQ7ee-c|WMMDPcd|5D`+E4oO-cx;U)`C?x? z;ae!*nh1ZYVipndeTXPWf8}MLd+@c_MNHQCB9)i*5J0nB-7U=B43_0OTEoB{3PW&D39Sr z%7JDRHt{92Je_8Fd_NP8#pZ4}!nc2Sh)1>*ZC-%pYDNlYit z3*gzx|35{u&QI1!BVN`=125EgPO>un8pYb{`S@s;mue6a>XkZZ&SQWQO0|ue_r|b6!$0wbUce! zJV}xJdNKcgiUSoVDNa>fs<=#%7GO-bTJajijf&=clG~NPSMh$uUn|Nu4LxRjepSP3 zpHuRIhVNCB@fztqSN?B`Ho{mg+Mp2|DrP8#6wNv|8Ltu6Q^Wfz<|__StUYc|)Nr$& ztx);dinZ6X(Fl&^xlGZlTf0vAI}~YkL^-o=?J?zlr}&cMpA_Fx{8I6-Vj9O~&}JPP zt?tNoQKZ!n`96vR6bCDgP#mK;Nzt4;Ql$JG#WKZ3ipv#OD$>l4`Taui7R5Uhw(sU>|CHiOiaQivSA1J>kD^(} z_KEUeD1M{Jy^7h6Ns6h8O%+=xwpHw)Xx6#)RKB0$K*ci@M=Fk2oTxZmu~2cIVyPlc zL0PVg6|YdNQv8MD2E`i{Z&kck@qWce6dzZlaVhohP~4^Xrs8{wdldI8exi6-@f*b; z-le1+6&orxRcxi$R}X?0BgGez1RlMgDUDyA#a{+RLY6lpq1zMCTLj>(4=X?RTjY{gQ=g^H^cf38Sd zWXeCTNMmI3I}~YuO#XdE8X%MZQZW@j0LZ5+(gvA)Uqu=rlOLf-yJPZYiZnbXe~Ds5 z@g~J*6rWe52{Ps1Riu?MdF-1mNHb&d%@t``Og>MMrp4q76z3|IDAKx^@xM@{c`^Ar z6=_jS{xLYxLfh>id;)dIXp(c*ZSO${@!V$*iNyNBCV*IPp)E~V!q-iMSk<6 z+yuqRiqjNlDwZggEB-I8kHrMykLzR6%;NB~PTZ;Zk4GJ+#l+<(8ZdIa{-oKz=qTs^ z-ip_Fal`Q6q+!7O_+7<45{xr(VFcijVdZJW@K#upiT=_EJRrI*ay)30hN2-P;vA-N zhAc*ap&55S#^aN5PZ($7*zf%LZbSp{UT3~+2iAkQ2;QUtY3;;@YatTqOk5dwzrMMc z2;tlb^`Qt+eV2naX+T<^LEmx`>P*}v;Qjh4pl=Jps1HMAR3GO-Od60@IVR^hH*1`U zy9NP%eVuxE^`kxv9Z`L^gJzm6c)G0_mc=tgjbj}B{fb8JZzrAD`q;Ul*tLcV$(Q&j zyuW-oD4%IReqk`z<0a52P6Je3HmALyo@vY zus*g|x9_k%Hm7@zE~h>Id1O1$KjEV5W1FHklsp)BoqPR?X>Pb)zP{3RHFHl>HW=i`5x1YRST)Fx4{raI4AuHt%v(oCg+mvQGtb4vOU_)O18(i3#_hfSW8we#kS7}&>w%TkpFxdH+F8#KXg>h zF;1T`C)VJ!8?Kp2tht~EJJ*?&I#@n!)w^tkjWc3+mQ3>Hn8gg#T|E%NDVbLPq}-%S z^O7A7Lv&~s_zMKt@}N^0Zd^JD*pv|%?b~{u5**NA^hLnXip1rDlyt36?a>hsQOA)5 zwsr)n!zm*{q9zOyO~NrX5;6vcU4DUrr~rmcDLivDj%xhQ&&#(us~0Y7;Jfbj{U5Wh z_w0GI%VV2+AF-P^`b2CuZ;b!G-MpoZM95CQA2x}zP<#a z_sDJ&9W0M-BxCMNOK(Q~9fG3ZIgPg|?_Gr7gZWNKY^ca58ow8xLPQ7Yq~YBZ`zZET z9IiN8af;#$#S%sSj$%H`6t7TRt+-L~HpK@Nf35hW;_no{`EiP8EAlmzdgm)HR9vdKLh%yCD;3u$ z-mG}L;=PLZD@uRDZvs<(1WSIVe&+kOyk6nf;TXg6e5ZZRurYonHl;7mJl2iy!=KP; zjwV4@iH=q|p#4tXZxC=YJmt(!^4fBYqr-HDjC9A7%Yt0(d_xE`j@OZn;{a|CD-WJ- zGTz-WjL1Gxl%XeI0B_0wQf&Tr`2q|%5^;WgGof!eA{!%|eah&Y3fiOrDF=SNMnav5 zJ0HBE8O87SPpb^U#GMD)pD*XXw#ryu<%~0NS0TW!?Ht+Kn>ac_HC@|)I zrjv8s&mbMg$shM(y9yAU_sR6;eKtYb&5EA%4GGK5PT39MZc$}W;&xRw7z~r`rYz=t zWYQ={=Y4{RJpQ~7^Rv5i28vJQL}uWd_hANhPv(9zJh~v*Uc2$1^FB1CI)Qng>^7{W z&ijl+8u}mSeSVzx!Gfdzob%kgUn*uP+W*qL&ws({Az5nX&HhB^NMsq-(O;SI4fKR2 zg#HP$ICJ2pnm;xv^eF8 zRw*{wvlg7gQ`^+YN45dXlGlWwyAcOS=p zSoY+nG(u>QE4|!s%Ec^#vFtfL<#}P zwmiJc{$;j2{D#lDo(YPDigOjq6faa1+Y!hcTb}DR{1(N{iuWr%qWFa3>xv&LRx8Sj zDfF7XZrb4Wh~?@?jKf-JMfoU+={%Wp0Ln`& zHiy%zZp;RReVHES4@b4#;TE9A8FC~7a2r{98j%NmC5UVc{@ZMK8sTTrYnp~&^wqZA z`51CfA4Tpwg!%K`a)P!yJi|J46n(XAcb4OZ=Do~%e4FjgE6_(d<4iqj&*4=0^kGo^u{q? zI$k6H^|;+v-*214;TgFnV!QJ&^qq+9&I8bwhYB9gcIPt`mSeAR<{H3ur$^84Fo)Bt zXV0!DI)}5erQ{Y}v(*Haww*sbF!ItZTX5#y_G)*xD`y$LzdR9V(ya-P+`A!gO*koR zudR>uO>b4FZh5IXeR*JY@;A-9BSKcKQ^2YKq3;8h&gKTeSb3rLFd_?9gL>n>j`MZ=2J4f84}H z`=4CuK=;D^x6J9jKVj)u=pKYTTJOJPPMiIw4(qW$0kXHu$=TluarQ*#V|(dB#GShT zl%;mRIFz;L{-nl&0-O zyYHg?PcLQu)YBHa|AN?_`{S2>xWl2*FLu9y!f%Tbk_b`m;U;oo!E2#rAw0! zy2*78x^?bEdsTim^WL}6ii3;Y4RQM}a`$dUIc%OTm>MpqPMtddzMwh@m;?+0gFqMP z&b527tY~BV!yOImhWY9F4za!NXge_TOU+hG=LAHpy-_YmYULskYM*kR2D=Uhm-<0!@l5>6-M z#@)b(siX(YW`vv2olG#UJJSaf_%$jvHMbF*GlNOm42HCG4aux2Oc-=&?1%K72zF4m zX9~KUHjAT;7UtyIgRVU%_bj8rDOXU%k#llYa;BgnOFY zLd30N++T!4oN$N0B`@rzT=K#krIM~-4K8DXdU!-9aXT&haD_e{_Z9%~T^xk8R5g7`|=nk<1FgW8ETw z#+5j5gC(FaNWx!*97AAoma^so#%7|SfIxYktP#tr0HNY|V{d^ESXKEs5E~_;ReS*y zHxvIi!XthNal1#KLEI^H+2U46ljo%yPRtj&yaLhUnC?+{=om(PQRuP~;w~?IIB~bo zW#z>8g|0f2NXyUwPSPOCFGs6t1TkLnDXSo+d-U8~pw@vuy2Rz<|77@h>w1>~q<6!k zJR^vn{;J`EqNnQ20FVt&8PoD6J(7s4i~qh>&IQX>CQd_A9BD(~Z&Anki7j2oyMU99 zav@l#ui$YG34!_J91>d&&dCyO1%x3IUS>zwJ-HPiIwav92`{OX({dj7!ubGtUdRcA zSK!eVDwIJh2RZqV+rfv z(TwF05*s~cafAfBk~A=h``~fm36Fc>C30>S3#V7r%QD(vY)oc=W!7@1u^cnu*TM7d zC-MphtOX^+hrRIVoyyT@lNUCec(c$r6ILDL*^to1w*_&&u+#lv99*1DYkVa1E1p*XW|SBr+KDx zcBYe(>71YGoXr0nvz-Pw#3IvaDE~nt2LB=6Ftej1YY7eKO434!s*{Fg}YbW(?9b#lJIArzO}nLSQ-4uZPQF6vf{11APM zsa3;=407IDmg~&P#2jUG-MTI({xA5B^I0GUt@YlM@ZLk5~ zzw?^+#=g4niNZI{k5DJi#hx(a9Sgq-ea^8Gd>rF3f#!3LyiLRc9Pfu}G~j>pObA|= zqn-)j-R?*KM8Wp-4y#M4p8Jv1mpR0 zh&WMks^VP5GR38es}z5xc#YyMiklVhSA0ZKzK0>7*OmWJv072Shaq0RhXLE5tyr$3 zeh`~^c(OqG@Nr-j5llYFHrtMMd?R~ze4%7ikv=Tx=o7m9t{32G0mUyB4=Zw(jp^$vHc`w_l>UkMcFJ=aj`DpKY3@c| zCNqJYmm@z(QTiwNS<25>lvz=P|3vvp#Y+``s<=T>`YGgZQ=U6}F(2u#z+Wo=gyL@% zUr>Bm@ioOa6yHEBfTJ;gnW2NXY3JgoSQVi2>b%s)vnO|h|JOGUFcznt9y`7RpH$yuf!s3>Q* zfIn0D@rn}_rz;jJ&QmN^T%ve^;!4F;imMgntQX|7QTa`ZoE>I)?pJ(7@o~jx6<<)? zsklq=9Yu5Y%YNlQQ9PvhH$`(+KwS)Q%(wO#Fc}&iQf#j%XTd-|NBLfg0~7}<%2_aw zo1nZoYe3F~LHHaEpQpG;@h6Ha6faTa3^~hb&W72fyg7^DF6GTx1P>|yh~jS*pH=+5 z;wy@ra;N^kD1M}PK=B(z2Qrl7oIJ6SqMR86`efzXDVnngx+~vXaiC&Y@pxwt%u+cy zLk9GBJ%ivDO>fR3*sA=4iu`cE`k1o_b}0V`MSeQBb2h;Y}a*e>F`^o$of6VOx^5D9fAj=vlH`sTLq`Zo39bv3H*a?mCXNQ--~^BvVV z6L$#${Q4?<`j8~5k8`Ug4RuUJB;QetGvqZ0@aww*`dB}f53kixeYb;Vnk;y_vk|$Y z)^%e%fA9F^I^YM|d?rxGIQngh0C5{3m!~wr^cTL@`pdV@S6{P-3(NZwJRXT90C8_Z z--+0t+zfqhnM6RAjgIK6p49}Iqg=^~?!{ym0S-c2-u89z8;#>>fGYx{BoS*ASKDN`^<+pIo=a4L7J-UVPhS zb*tjSZNnSGZ8wBw?}R-{n^nQ8&c(^=N>-(=IVm4Tj0YaLuvvIe#+%JYSG(tqs18kw z41Dp4CgD)n?(^x61{>P0pRhc*VflT{iYwB*Cw5siO1B<5@2eT$MPpk@sgIODz)vdA)=3JP( zKF}w5jdft<^7`u=*wAP-tV+FRMU(V3ZP%~Zns!}!cpB>#%A?+HuQ$IPb(bE|$>^!6hBHl&3D=7kqa}WoMjcfCo+Pw!MjxE6!39f#2$4eh3%{n=p z5=r0K@cKF%T7=KoIv(W>6|XpKw{F(NJ`HWr@$(&t*Ves;?bBdG;_6Y=Zu3d2>Q=SA zrg^gsxSH23PhM}MB`(_G)jKsT*EA2;^bEV(o6YZxUenfLyBF%cfj#Ex-}=zCmq%NIvGIsaK%L@ept~9JUGLE{DBN zFr(Q%+cGV|&{YU^Gnydu@q>1+l5!}IW!YN$2IvQIl5TmnL2YnAXnJ5o2KeXDo05Nn{m`P25KZY&B9*wc2s-V^Kl=35;qKRf>(t96~V z_1FITgTDE{`=Ac;{mb^$jrZ*dZfIWo+h%)qzEnMY+sAwAU-uZ&PY+-FL7nxf*S@sp zdOVlBamTf%V7y7n$LMk+?(Ye{L4_nNf3gwp=+4`AJU@}4kMMgf%!&ADbBE%e)A1}u z1QNnf>(+rbr~hn*xN&z!d8?j7v zIU5<+-6%+j>7?J0@We7qhzH(nBq>)j<$IodJIcJ@Xe%ITwiWn5sCshL+#ZoY#cjwZ zQ+plx8Ctio?a=zmD?wsoQ-Y+%Qi2)OUQa^35+qA_;!J${2&8!7e6QnIwhreqC;suyB;8;L}{KgVb+V@ySr?Vk9DueWG%I(q}IW-83MdXWetq<(iq z*}Zu!*oErzOgy^}+250$hjQ6{$*7ZpqPtm9HL?PKilpQ?J)v<` zp0Hk0t=>{e;&yl#Vi7!T2!~A6dFe)*bl$N8v4o>d!XwWk@KTO3DIII|?Y##V zh8Ha)*ly8sn?{saR7%_`{J$O^jZC-`UhJz#JmfKpBP5>mn2HFAo$$D(gg3qLlE?=j zTxpikUjT3=ATpj1fEP2dWDp#$5YFLlv5?Xof+#48K&T53v$l#zBM@vTgcIfpIi3^S zY!8H*wg7oMLU{Q>B5QHHsQ=^+XBrDFczY%5`x!j!$(EwNE8x*`B@q(qJjOFqyVYYB zM@T&5F%=OKAHbs-32ZV+PQq)Wv8IhAJ2qAYyac}>a zN^vMkhCf=PFVv37c#c%fF=UByf1?{A)6+R7wSq_YUsX8Pags6qK|;65_7YO65o)&F8Uh4LWJOxtn#FFfx6#()2z&D6=6sx z30>$5WeDG4VFt|ny@$|QvG;|uctbN62tZUE^|ysb2{uJDornMq&GEP@WmZOn^jvrh zO?-&*cRI*+s6F4H;~`TDDbjiHh>DFg1uV%jcuFlo(Mfakfz*`%uaE`TgWLpfawN^h zffVu;$DG^2qwzLX#&^w#kjavwj3MwENG(Woh4%!rGa_Vq!DFEVfh7__-?+D_(swB~ zRkD$ENiLt_<{3Is8<2n*1OL(a*FQvTc zkeE;+dlqxajW11R#t?_+Y-g}^?)m+2R!VBqf+Adddc7J&>RBr8lZ&>+yikHy z*yydyY;xe^twkmA*=-`E`Cfp|M_}vWos_NSy$?k1tWKz94m=u!z@g6nX3l6YEIR^H zTrA1xAqZeJD&WO=LlZUOJu)D#7AYy`3VuDj*f>T5t{!x%mNZw*Z)`Ts|s$2r^Sm#$pNW2e^&Jxo$hIc3L z112?^Nwe#3f%kQ-X-Mp~Q9(>Wfk}iOfOv5%0&g>nWDitQl)Xflm~ix$h=glGSyaWL z7dMLu;!~ARJ=SL$@Emv<;7NG0V{6NzEEJsw4{|PYXK{Qb?17;nPX>(16961~ak-5e z6U!_aJrQ0W5F|X=Xz`3Jlv8vHyf2>&s6+^yEC2bALx*u~L9~PCoi+lVYFP}nAe-8_ zX&_7(yAG>U0dKAY+m%<$@BI1Ph(ZLcu4s?%ybi@P=^r|8#@q!n3x7a+){EhL(d^Qx zWhK)~%j9%6Z}&1<0iZHEWi$G_$RI%hd0=qC|Xv_Hm#gRq1HLhqG3+j zuzoFDb?N9_WQUv^vGQefCbaJDlsgi&c|_{`jMVwvF}Y4jrgKWB^LH!L*|uy#wzL47 z=J#VJw1CNxZJ*yQduq8A+r2BgBtln)l#VPa;<1FWbNv>T&Mq(1P~RqJzGWX+5YZzC zT1!Uav%wAe(l@?B)sr{v-U`FZm@)^ZL=UKAr9@gcQ7Y>~_vv9G6CX>ZA_}0fh z!0Rw$cIk`-bElV{#U3Xc<}u52rk53ZSD|Kp^B0^mx6mrVMapN^7E=$D&S#Yj;*~C| zJv_~xXU-MqmW^{aO$k_DuT1AnU+n2x6fHjsj5S2~ASnr?pP$GIteSlaqoTipW00e_ zAz(hfGyb2SYmnu8r16P%jP*X(*v`GSx8le8w_fwp$X6f#TLFXr6>EI>VKX&ah6YiJ z#F6J()~^+xj+rjL;COE_(KS9tbg0-8pPEs8S;jj^kdrDve5Yg%M3~_T%KDzfBhRkv zqwxb2hbW$@$axd$nX1UQC-UbjE>pZnu}bk5iW?PgQ@l^{F~#Qs{IlW*iu)A5 zRBXw2E|jCQVy@yDiW3!QD=ty2v5y_n-=X0TD!!!nCq-Ge06AHo0F?DNKv|CflywL| zS#JQ8bq2s$d@}^fIs+gLKgi2E0^m)`-$}%$-Fp=8BjVHeQ;K5v0r^*z-$ew^$wSJ? zdI9hUmFJIh#-r0od>j#cit_2ow^Y89VjsmJif0m$?kwet6wlT01dH(2UKHHRkTKSiie@pQLBHC#$5&c-~`Jpd>S4rwkR7_WFq1aZj zi=x==BmHU0hZRQ?p?@3^@iR62JjI2Im5QqrS1Ybpyh(Ah;#MN`i5))5DR%h47d8Gh zBJzDh@$VYm7-0-=uGof%be$DX)9?X`(=>dE@)syxqTyF5qGyO+WFsi!1>!h%F+YAL zCCV=>;3>+tSIk!It{7J2+y&E(Rvf1|S#g@;EX8vb@hFsZixn#s|37Q~lIT6F^Y+{Qs=ar|0{=b$54lbx(D@)#r#S#Z@AQD_G8T;_t-` z;=SU7;tS%7;%g%3t}-9fzkoZW?-sujli3d-yt0@s))1{dS44VCF-tsF>@4;ady6ND z1tR}>v%C_qR4f4~glb=_ldePYMoWV!`O`_?4p+7Hui}wozke!yxA?92gP5Xz()9Pp$MpALZTUA6n~9lXw%A!T z{Xf#>N$(@>b00wXDEW^Se?NKg7KkIoQ^gW-vUrAgmbgf~K;#@v)+Z)z z5bqYB6rUAe6kitK65ka+567{YD00>(_3C0oY$~=A+lU>+E@D*dCk_%%7K_Bu z;$*Q@JY76fTqrIQSBRI3oR-S^-Xh*3-Y-5ZJ}$l>z9_yU{!QE=ekOh+ekX=1d*y}2 zbg_oWd9kcdOR3($ekEeLI9r@Ao+B<5mx))1YsBlto5c;{ z-QpwS6XNsY7V&lQZSg~Kr}(+}wfLhL#4|Pbqq0~bH8;i}wHex%mi+FFQ1H6qtxX8E^^e-!^Da;iDQpAlacUl-pMKM?s1b;jQ%aymNoApX;m zmBlI|XQ|V_vB=5l)H{gBi`_*|U1xZqc#1eiF#M{KX z#Cye!;-lg-;tL{Y$TOe!#E->KMb43DIE^656fsq-Ce{)gij751t!KIp;t668v7dO7 z$cguiKUSP1P7%w+*&^rXGya9*3h{FBD)AceX7P5Bv-z2Rqxb}gd;PQ0|02FD|2L$+ zBW{;JjRBa?H{uUs0CWH8Ur9Vdq|E^RBjV9wE3vKEL8MgyY#ovn?L>f#m z{$t{^;$K8OzM6Ih)x-k~@mOz&$1Ov2KZZ75b?Ftyby~7c_7VGw z!$dpY(@o<8rhJ?uTmCOwZ=k|x_y72E1NCsMaCpp^Jzyp(k=9|zz_>>EWjy@#HIC=T z?-)jRG&Y|9L&f8{u2`;rHUrxdU0-ZAZ|a{Q<7?42t+Qdh;DN_jCszTVG{vk7WWskb zjL!U6FOCJ;G!UJOk%)6hth3@ocvzWX|G=}}+ib{kHf$Vpf4S9Ghk!%Gns%l$wV;`uFsY|}t=zD0f|6y$8!dC>j&y@~v;h9C3e z^=a!zBRQJ}qBFL>x1JDXIvd7!DgONC9(Uli25wRsUdwdhqp+@*Z4}U%A2+^(A#J=h zjSsxmz(&Obj7w{R@e-?m+z+}3u=(qEF6w8GUk1YL{yqm8)hPvx%SV2ltpeKp#i@+9 zWd^TAes5Bcv++oKtuSaQ^5eAGT99qItOx6ca^vp7rdS6lt|iKC)3$Anw|0P8Kp=9+ zwFZvuc-U(V+~w`)erpXRN0+Q`9}TX&Ymc*SLCM`qs>QbAyB5K z@r&Qu(`Q@CisSQ6-|%2`Z2iY~2EsXe18bV^slMzotT#|SniqX=x0|+mOK^4Jf@|)4 zV~-Pgy50qK`)n+z6WrN5?cOMMch?zb*N=ACn^Cpto7+>-sj|puX;v1&iO< z6LL1}4dl94zF04HcervWC!_9PqZdS--3`tTTp8#bj?UVQeB5Mw=_8!}{GJewO`mPg z@2R>VY58l>MbXXC^Eccdt;4-@8tnLF$om;i-!f4Lk@Pk};04oi2P5mx})flR#dG8FKdiNYytuBwt6KtV-r7@pebOp-^@?c0hU2iWTrq%g1K))*uo^<@61Mz!DhV%5;P$K0(4)Izg@v7m9Rbn#&m4v@gXc>6*Vyxj!O!`E^kn@7kCT)ru@YXy955PTN11dd;x&+op4OE)U($?C=11gDvGk)@?Iu_}z`V`7I=vb6%I1wqcbM*{p@7tOjM<}B03m5uJfNpBu1`II zb;$D!`j=Af<(c1`#RHM7OS0VikXRZpv=Th{gTDb@Z>WomwRcqvYInJ*;Hp% zygIYJ>SQv;874-R<}AsRv0?yU9=UvTh`Rue2c3HhP9s+g=t3b1pLD*u@zw<3oi+XU zRJ-!PEvL#CUGDKz*HfK|ANPbXRG#W|*2wL~Zty(GOaCyrDoX^nn z8QClgz_(}_Jk@S5=FBA`%<=+JYJ8<{78K}B?J3;-&0+(6sPQjO23vvKmq#-~^-5&s zn$KHs5swTuH}^!gHm<#vkn{%1TNSN~3xZ&%%uxMxf7AjnJ9 zaR+i|pMr|@1n^;)A#C#{cqD*|FT)shG1Th3-0Cs~oI7#>s$Jt_c>NJ!HQs{o1cfaS zUZ?Q5^|=qi9{T(NLeI8| zyg2q+V={yl6h>R0LI^j~rw@etDDb7JiIWZC75X%X@OKJzA#lDy9h-lxbKz41KD91} z(4WF;2qh3ylYXceAIIHWN>P)#tVvzgqAqJtm!+GM??8&WEV(XAt;-VYva~ujy(#Ho zThb>G>air1!l+%ax!Yg(iRfzeuiJ6a>h4GjzO`gYKh|9~<)4M{)dv3H-zT90{A@;lq zv6nM;P5y20>X~cud@LTz(_djMbkppB5501Nf4PKEVi|>lteoI2Y!I&IrlxWk1TK(J z=?KTJe83MNR?c!g)h?jGH51}1BjA-`VgUvFfg!Vi0zWSlkM`fUa)Mnlp{}=tf?YX* zD=zRLG)UB*Ycw?UqBF!ebO?BA@K#emZ$h~#$qovOCOl;XS|l-mWS4CMOmh9OPl6Q& z(b9;81f#+#A`fERb$|pb5rV<{FNokpD6kQbzA&B`0xwILOc0}#esGKuU;QJ1uo(~L zjX3VuEzw4UycQcwmxw#C!Q!PnM&W)>nH{6>gr~r$9Kze!P;cTR&%ZQAVVChQBtAF( z<)Ih_L`Jsd;TQ$pBcOzg75gHil$9FeYffwl!e%-~;YLsKOxo}9l({hqoW}x_6XI3R zzcfbSTjQV49_S?YLe40n02_?*N@EmG^OW)!g*l!wJ4V4g**W+E4u#d&U_3`~@}5af zVVmba7KhcdiWx=l2qQN4(>kw>EDzZ>fuz}md*9G-?Dk8{l0Ee6cAqfEt_rHZ*5ck z5etFKvEfRX6Qgjgr_7B}xYJYS#V9<34fP|uwm5yZX^Y;jjqHLw^xEQJVgfcSd@v_Q zVV0-NjZxs7CWOq3QMeo%Y}p8}`JFyHM&WhiKiD2Gd_s%I#cO_X3o@Q6@7Vv`et{_u z-Y^-;R*F)IhUO@o88V;XiWp_iT(fS8SNKT6yCR1ZJo!QAjJf8-XP6xso;cUT6X)9O z6VEk13l@s^SuDLRwj)ggl=V0bv+2o)CR~6#E~VIf*P=ZbxI%JmzepL0j2ngD(b$qP z*_p=Rl=)PZ3~eTIr(A}uGQy#s=_J>WHO1cKV?!4dK*5|9$LOUFkWIni_ay|QalWhxl!O}W+Upw(Z9PsjvYCgeB2b~+ir_7)O<7NsqJ%5($ zT|uMlF8hj61x&}k5=s)x+hG+>@mg%S>- zA@*Q1W|I`y+v5V^!zV8*9Q-~c`*D1$kKi=LpfhK_`Fa*FBKQ+;8-H{z6yEdvi5Ng8$J~0n$9%W_zx%g82>X|(|@vMV>bv|F3W(Kr-KK8t=sGNhbQhI!*H;SW1CGg zyPF>Y-ZZr+OLm->(A{G{gRYmtv4VlwP>*aBEB0c_%WD z-`NvhOkfLKuc(=qNf{my$o{nJpkCnO_o2$pWHi~TH@dw9qLDM#WXcOl9>>9m(d1wj5$=FP{ zLcxnV!lq6{Enw8y*wC9NZbv+G#<6?xI`qLEAbR!oFNv^!#G#DX2^((b^J5hHW5YqS z*M-kYJ&}DuBKv|w#CSbELl(PCHu2NW>u3kIWL!td-I~WJGa8x!!Ar*m*-Cy5zi&;H zeKP*si(1ZHC^H%k2ccX{kj;f1U|n+|#_JM>nt=@k&Sfr?84YzIcD}C5y?()|k;bsh4%UnWi(#c5fo=7oEZSCo zJt)#V2cJTO$3eS=|yQ>30@%z2?N$Cr&&kIHw;|wGUSA z+O2mEE!lhLGzs=+`R}$~mXk>F_kyfzPHdBTVs_?2tN;eWbAI9gWWCbU74HjlK30~r61*;6hqpj=G z&bO`O*_KbwIrg7pVZNWmEOLewEzi{P<}w=RaJl^tf%eZ8kq)lWtqsL2c97663b% z6>VP)qJ*xBx zUhkQlckhG@#uSekJIQggASU(1r#Opew;s^mNj@TFK&3$CTaXpC_aCeFKl6ZajjL7*1EdMp>Z%gN+ zE8~4C{Tu23ke-Zo#PC!S>5W|@bp9Ej-c;e{y*~W;C`U30KMA*bgF~Tc!U|d{BH` zG~ancJY#1LZj=89B$70JI?tY{awR{nRB z*zOY_k^i&eD70AQu(ivew}n&(I#IURzuTYqMWMIYm4SDCj6U8 zKSs`9 zE%z@ZTD$urrCYoE`qG<;_Is&qrJMU9^09XJ-R0j;JV`X`uOQxV>7zxn9t-@fz^Ti9r72@S$OuSAs_fMq1LwZH~drn{D{+sn$Kx=nz*KK)M;r4#|iFEtj zRHo&YEFK}^b0Nk*BAWGGAh(jhak4l=JYAe8E)saF!seH?ln>Born`>EzW zj_^+MH}`SqeWaWFIrPEOM~I_Db3aG;bm+A}sTJPW-F*iujKBH*tsfnfQ%p*LmQxG4o3nj})tkb;X9_ z(V|`Vp{;bg?!yVvdx(9-0is>^VYqb8%jk>UG3M zVly#Q%oaO~$BUe(%=Gyp=POg6EY1*57ta?j6jz9si=4g8^maW3&QqrTxcHp7S+wgX zye0h;ahLdw_?^fxF6L*~PvAUe>URBvh;+MtLM!QZ{RF#SLJ#@d^%4e1A0qO5#LRb$ zSS)fPH2r6b^Tl(-3&e}Xit8e9Vl>m=C2kTQ6Q33TB67Mk<9{e}x-|7~#bo>^r*79j zNS9ti}pb4LTXjq)$3aqUG58;@;)GTRy*WvcT8d;cfNsi(9>-QAu zR~3G&Uj{Z?zvm#MI_x@(D@1;stpc)6bbR;YtG4qh@_W;Sct18C={sD`GUUhUtF_>7 z%Vj-SH-CPc&`u9xuidV_XR2*}4{5L6v2FWKCg!2P4S#hvR05ZUcWt)7`V}>t)*tU0 zxCGyZ_pG(ggRS=FJ>m7R*S_s~+vG&@uyT0V?XX>Qyb)QY%6WZjq ze|%>s?FQIfkB=_z@rAM1etnMs5q-3AXwGhmHfT~^u|dxMhG`e(p0+w%`Yc8!&`r_)M1w2zhcVi#80 z0e3}Z*lD{v1C>zYRvECtdoBLwD%CLFPsCz*)bvK^>ch@pj+LJf; z%?m9L?p*9zJMBK(l9s<5oo{Tj*K>c2Wp-kJJj-lr&Ai=MX4h#@we2I(bYpkz*=5(0 zU3U83U|Ln#Wv3fE>~L3v8M|!MHg1>g`Oz*L--VW4cJivX_Ef*xUG3})r1slTb+22G zM}1hYbl5%jGv9d+u7*`H?6T|Zb!C^mc0uUMzP)0w%kHzSPITgi1Mh*`?Q>aUUruZ6 zl;fif8$1@Rxi_>Hw%GM$i=A1=*jrbvUvqB|{-OHNjV*S~y#ekM?6kv~HTSxiw8hSl zWp(oIP_k!>?XDiUV{sC!t82D`HFmPIV#8IntKs~(CAalpY*?1J`r6cD4DGN}7?UZw zMpI(2!LCmm?7}^vv_e?2Kb`(!y8A_n8~7q6@bsM-flcXwFX#7gzDRN2NbkPG86Es0 zC0H+1wP*0l`N3dM+GY2KwKZ+AUxOWXtGotLcg;O{gEzE-JvQyI-$-YQq&@C&m-YBM zZi7AM!`e|Cx2t=>3Y#t3X*2)Jm3KIe-4)BCuWfIcw|zU#MavI2mqxGrkZ0oBx;wV6 zjehoF9oTE%zdhwDcg+j1)BZE=VP1a`a%o+eHW|Ibd$=l}GS_C}C%{SDLD+NQ*G<05 zAk68W!9Y?qXn`U0GIrX*K*|+}9B78DJUeZC3H}B8oX9xFPCFP%;jnQqoV1mG;S}Ed zWT%ZVGvsgX3tV`_32?~Yv(pZ6G}^P%4)7-6*=YyEA-*+6$_C8N4L@Wu$J8)-hBm=7 z>1adJFT3B6J`ZWa=6&-`={LfYUv@Xc(fUDUlYr*H;t^lY7BoPCqAU9QX? zGjOx_&Gd^X-{M(48{_O-YnhbqAbH?6FTQ!Db-S^F=9k^?@a&?^LbZP|F<}3gg7{T- zAhSwWGsi8m)AnlcV!Q@_^>UoXqqx`kv`tr_Dj6XOW;I?9t_r_Gm9F3&M06XVd(x%Z>-(oVY@g(!T|uSSsf zId(<5o~VRQ8-vN`NC@sQ%{C)J%!QMhbGjU>C*?oUJ6}poNNgE3tY1~gklPu z_I)vgTFkrlxzPRut@gzb8sOov_G$=GK1E_^0b&PKY8W>6j`L890~v3dQqMz*1DRFV zv*}Gqt5^U_dK5x^mZVa?MG3W`y1V&4{-C9Na!cj{P@W z2*GXQvR#!Uyx}PBoTr};-DyyQAHK!+Vm37~*)qJCo_@cH$<|$rm`9jAo12(kEKh#R z#JU-=E{W&Y%*0~T@?v`WSBzP&Dq1|}vv?)9H!+XK1FIL))48r3{;`GFIUmGu+i$HM zl(jYvTOJ>-fKGPg`tjylsuS>oX>rg|*^txUUsA&xZL!V@q&B-cx4BD6r>8$lMqOJ~v@M3EF|fzcgkI!eLDI5&S+e{;>3>@U5qW z&8K4jVM9*C{?IrFmdB+r3JX1@+*pTS>?yNj6xMml+!%#>u)#)!*yQ<_#wf5Cg5e!I zvXM7+h3PU_)c8tPUPnjE|Fbf+jNr`!$e`#zn1kS2s6TxB4G)H&@ z&q6LX9!s*1@g8N*2Y7QnKRuOg^$dU8BXjn{xIpJ;2oyn%#HhFOg$-ZuVCs)^fCU(hXVHn z{>fGyeI+>&72nGN$mJ z=bvargL#yCV8gdz&x%nf@RWIGS%FcWGCxM444dl=Ar^Z6b4|lpX8Z>eYmNVm`7sJ! zgBqNx1MRz(A+ohhHb;Cg_S(2?{B|%E{HOH>%#!^P&H}+2p#c_>ob(BcH6rZQgWzov z7Y9K*EL>Y|j6!42zXiYs!c54Y=-XH{+b=F!q68bP_Clt~^1~}QZG^YOBM9&0j3U^W zVg5YVG-U76AC+jkqu5;gV?!RS1&^i48)X>BvfE-ipiw!W*077*l@gN&hfIyLCjfhw zYkOeI_L88isLm(|qp`vK4aSq6f%#fWB38%U9f<&{X8dyWiHu5tE2`^>^wnTDnYp7lB9#-;{?2p)H9m~IcH zFSX5>*Z)#%GAgI&-B^YZyw=fk5RYLqJq-n3>+mPu!zQD0io9>2-hBAw)eZ|&Vx193 z5d2?mj65l9^8AUXj6ZD06PNHXUc&6yVUkNsz-CN!DX?RQKfynYD03a~wGoFA-(oXX z-<5GF)6C%`Zi?5wGhXhJ7@S%_?Aa zA-^VYrzyOU=ike>knr-#Czuy*v_y#!jWxKJY5dW_wpHAOcn-N&Xr6{%zcY$>&g@-z zd5i+5-C=!}*)a+qdCJ@vg&(k?M1qF_kxF9}s+;0R5ngYAD>Bg=jIz7Hg1HYo5U7tm z9`xo;cs1t*V;mm_=3&cl&UE@T?bE#6{5C8rO>P`tIVK$g*S@eBSg~OdlCb};hP%Q_ zw?ZHvBUT?E&)LY6{%lg|`3zomlFdaj`rm)xWG}<}O>8*#eD2^~Bf~kvU*VbD z89s)bge`sFuu>FEZ{BDsCM!p>A@CnzlI?R0%8-oSqfD}Wf@X3z+4N5{$;$jSnT}-i zo{FuSGi&}nhmL`(5U?H_c80CZJ6Z7_h3zKIoYq11{IT_H^%7VwwxJ!yD}FO$_v>~4 zLv1YUxH*fRk-(-ZCoU=!>P>1_+Cc;LO93lh~Surbk`k-KrM3hxoP57-_HB1;;A4PqjV zc`V~)0AHnc3UH;HQJTbx1nhCWJN!_F4#8$_RusIbBW&tK)B;8wiw#xFL=o&UeYN}+ zAwQVV!PQY&ufl_DUy3Ikn`0v4P)4kY&8$d3fiuI=P7|r(%{`H-Ad$Vfb)B?tJ$S{x zXtIfyco)QE_$nQq18;_B740{lpKa2;$I)-h+ zwiVmU*j~r>Ha6=R#=PmrBlbQv9xlK0@7HArLobE)7I44A_f1?l#AW+CgpI1>h2tC0 zlV^@EcE)unDlMBfv24tg$b?Cgi)Tby%eWY!6PKW93is0XR>a?lFt!X1#G|9`ZXv&yzC6lK9)3cp%#tf(8*QKX-{B?^A zJm$E;x?RmG168wv6CzF8!GeFgSz%x;78IDp^#wjN>kGu7&dh3v*zkHSD>5Lzad76a zUSc??~;QMVBmm4_8d@26CHd(>cu1$ke%i(p!pswfbv(&)py_>W$YX)>{(4alP ze7`B{Wh^sbiC@Zrm zYZw+BuxT$Z$U@remM6AriS)tKZQ|;YYdSOGk&)o^b;0yVo9xz^jgD&5HnVYN>n5#o zf@cgnHh4zAV0yn1Wx*I08MqY74h+o-uAkozMeNCnw8MVfFvx!Eeiy!Vzt#KJ{kP_5 zT{;Mh6Wr`(1z^j&&&mWa>+bZ=S(@M=s}RrZU2(RwcgUTleo`(ajNx-}9ftMuc$ehfpov?R~X%n0dKVus#V)~!4*=;N8){bM-p$e?YHg+DtwqYMm$ZNA6eP@NaTO5!Z*nOe(_P!*iNE;FG+t}G~X(Qzp<4B_sahV66K{JZ?j)w9nsoK za_%zAKT-bUrCXcF>GGc=UZC)c#SQX*M*0h)S%U!e*{1MMNYuyJF5>*NqhY;_?IQH5 z(rc24cN7VKE-}w|ZKQXRo=YNLU-|QeH{*|1_ymP>nhpKu$bY`{3#3=HRlHK+*DL%M z>32y-&CT(`;Wb1TXvjXB$C3RvY5vfH&7>bA=7?r`6vCs@O+N{pfA*Q4FGEPvUxK5h zmx|@0={FHRU-}a9B5|e2_XEuDR`Cw;Zt*_xVexVCIdQYNO?+S6DgIr=)Lm1~_hN|s z9?A`i8DdSbf!Ii_xE6u6so+;Bm`^|PB$3}Gp#Mm5yjUVm7iWrd#RVci4#4ymi7Ulb z;x*z8B8Q_H|4z~L_s};==Zg`B^OYz0lK7hVp1587yZD93@gb(;5ERMDdt|DZA##+7 z{td)NBFC%f&jE3=qj;Q{C-xBsiFQqbBI%>WL#<6PU-8ZnFBC5kFBeyf*N8WWzZW-% z9DrfHInY8rEB-~~>`?mKwF)>PkGfr>;A`m|(V~CFwFx)?MgQ7jBaw4i>CX{CGF$8{ z9xs~rP6#(6qM%u82RvEfd>hF0qs2+$6tP^S4GQCNdLem{xKdmtUL$g*Bjep6(#C=M z1L8)}tjPoaXQcmCd_{a)d{5jd{$2c9{8kL|K7#yGM00Yx*Exb3X-(3*V=6(!*FMo4ChMtOz@iIhA-ZFYbwD;$VYZ-8k zDbv|C4EjsAYZwfZZq^clJWl#VajIA*o*|wkE)wm1e!29^#H++>#GA$2MNWEU{WghD ziqDE$#aG35#J`C<#LvWvYaMVt8}m;Vj}X(v+G2gNiFmYV*F5MdeUNCLACPa6bn_em z-8?^lGvt4!Xr3eBf4=k!#fobk+$R4&i1&z`(aimLSbSXEBEBTPDQ*)#6k)<((tjg< zC)za+k}+eL`P(%Q(xo>L?V1O6jf3{`?VQt@>0Oz~WCv3QAisklb8YZ%-p-L7HqN9lhOIdz=-|BSdrd`Wy$+$Me~?i4>4 zzZSn2T|A>R->{e_a&9{Pj}n`UEyap!7aTAD?qWajByp%XQXDVZH4LUnpCQf_7l`MJ z7m5|vGKk6lI`KB~58^%I{o*5{UE_eW@43IPiMz$G#I(v@xLwoW80oFWUSeNyv^ZXz zD=rYP5Z8#;igt~HhonCuz9zmUekJY|tKvTu>t9{W6tl(N;)&vT(XK5pO}brMV4?Iy zB4?R1|0_k#5~qHx(~k%>WuJF#Tw8 zqWC+J<_Zj-C!QxR5toT8MOrm5{>@^=H3J@$|0a<(4~)N6d_#Ok+%E1AX&S-!--{vq z_oa@x?uJK-)x^4DL(#4!kR!bli9Yst>D|RX@*g05kT^{Kw8LPzlf+W7Ts%{pFVb9t z@mGjfidTu(i#Llj=wSQ@#7D&^#TUdEMY{&UJJPp{JH*e$uf^|0w~ALzCGiN6b|fsn zk=R1a6x)d%MVgy1em`-Lc(Pa|jut11zZ1*ESt5;5nBNkSW+&9wir0xZiR;C?L|UgX z{*&Sh;)~*I;#(rkQW$@i_>K6T$n_2wo-EQpg?b$^A~qFUi#cK^v8zbC7N#F44iQI) zW5i;Sb}o!RTcn)}^$W!-#5Llz;*BD$T^Ro%@p18Kk#;T&e^;b63-!HX2m?UW!{U)* zHIX(h3~wdU#)bL`Vn6XD5s!2K(zP+NH9pf`>?C#-`-uI;e33J=Snpw?9iJ+ZK3Oak z?KstJ>2t-!;!<&$SaG~+t^98mZx`2#cZv6k4~kET&xt2!Jf%8yoU_{Ucd}-jF{OOW zSg^dzV~LfpPIkGIHGWL_7$?v5OvGUtf4QYL5&ZF&*|V@0 zYct1u9k(WQG+C1$>s5%&rh#bIfjZacVZ{j*;(d%~jImXj!gDs>Sg8JTzif$lcX)Nj za#|E&n z{3av6Tm&+|G;Fqht0CJo5S^Y4@SJ8(zAx-@$o~9p$4fu%AM?ZQAfDfikeOdLHo7;D z!uYfA{4$K&2GPb_)a1Zxb3CMYfN^^eFIO_b{h+%ao4NJ^|w{Udwn5*}sZR@$< zR;Nz1Q}oAge)w_X=skZ<#*TXX8gjcMqqK(Dd%ocwKiDI8@_eDs}T@WFXZ(iCUL z3AU%0nNN|!(827n%p)8!W6z*UO=m3T;mKxw+Ung`)`Zg093ZKu&%cO>RfjFV%ikuea zJn_(q^z9}xKI6_Aj-gA_KLIMa^%3ZDW-A7y`2&ZgKXCQK82)$)5%{FCHtq?m40k(~ z<+2A4Q5zRUao=V;UijrKcI{%Zhqi& z{0?%ntGETBnNC}@=j0F%#F4Ih1;Fhf2D%BG+@Rl9_tzTec1trKM@~IDE#1v)mELrHf=`fzfE?%(Ebpn-__kj12Sx&dKu4(7z zRtb97295@g2tHR#@;pH1b3@$Wc;MpCCm0OVjd&1*#>Q(9!59H_G$iki_#U4jQ|)iS z8i6k+>=H^C_9YB61DmiQK8+WirgOvmT=sEZeK_mFINTY`Ua&ap7{%}WdJ)cS!0E`} zpF1!0e`hA@zB6bmPUD+2byE4M_%svd%iu7aI=*Ts;$tEsyB7>- zV<-H!KDPDPvN2P~l|;&lXHA+hY1-6C+xFS*J9juG(t66c(wWDP^S%l*r9JfWl9^M+ zf)n6Bp>$UJ)-y_5kI(5qpUKn4l()t_;p0ojl#P$Ho;d#WF=Z24w~e$O*e=p~!qjQ4 z@#s8h9HLB~G-k%6sT1KjVdm6vA?w@tfE=9d3mG_xBwg_jT z^^9o~%5k8IPwhEiaNohF9-EanIDcyK=|x5@f>M-UHtjSVo*6~Gd-gn7J50=7oHVDH ztI{b-X6NF$89_VmKa37) z*d@|}&9BhRE1xi}EP|bk^wQk&2=--M@r)VM%4Qt%t6Qh{eCq%H5j!&L*kN_AQv00b zbCb>sEef6=xY%{NcY^1C>GzK6*@_z`I%2B9_`e`8QqVk6d$JeK`+33z9sC*bxuAmq zE1wI(=+^HzSFj;Gs>VHW`}4UVtkV2$|G9=WoJNR%uF%|DIJdB~FM-K-zrHKpgC20k zp}lVHWyhObWmE%qa6FlL=bm$S(y475Ui2 zeCCNu#pU8!@h0&u@d5D>@o90h_>%awn8e#E%HbkGWD~Ki*j==95cycjcw9?}V=wkQ z8&jyGS}@5bs*)w<~;ubTfAa>CE>tz&GfRa$MZPm>+LtBpv